The PSM$REPLACE routine must be called each time a user service
routine replaces a symbiont routine or is added to a set of
symbiont routines.
The code argument specifies the symbiont routine to be replaced.
The routine codes that can be specified in the code argument
are of two types: those that identify existing print symbiont
routines and those that do not. All the routine codes are
similar, however, in the sense that each supplies a location
within the print symbiont execution stream where your routine can
execute.
By selecting a routine code that identifies an existing symbiont
routine, you effectively disable that symbiont routine. The
service routine that you specify might or might not perform
the function that the disabled symbiont routine performs. If
it does not, the net effect of the replacement is to eliminate
that function from the list of functions performed by the print
symbiont. Exactly what your service routine does is up to you.
By selecting a routine code that does not identify an existing
symbiont routine (those that identify the input-filter and
output-filter routines), your service routine has a chance to
execute at the location signified by the routine code. Because
the service routine you specify to execute at this location does
not replace another symbiont routine, your service routine is an
addition to the set of symbiont routines.
As mentioned, each routine code identifies a location in the
symbiont execution stream, whether or not it identifies a
symbiont routine.