User`s guide
The prev: field contains the address of the preceding RSX in memory or location 5
if the RSX is the first RSX in the chain.
The remove: field controls whether the RSX is removed from memory by the next
call to the LOADER module via BDOS function 59. If the remove: flag is OFFH, the
LOADER removes the RSX from memory. Note that the CCP always calls the
LOADER module during a warm start operation. An RSX that remains in memory
past warm start because its remove: flag is zero, must set the flag at its termination
to ensure its removal from memory at the following warm start.
The nonbank: field controls when the RSX is loaded. If the field is OFFH, the
LOADER only loads the module into memory on nonbanked CP/M 3 systems.
Otherwise, the RSX is loaded into memory under both banked and nonbanked ver-
sions of CP/M 3.
The loader: flag identifies the LOADER RSX. When the LOADER module loads
an RSX into memory, it sets this prefix flag of the loaded RSX to zero. However, the
loader: flag in the LOADER's prefix contains OFFH. Thus, this flag identifies the last
RSX in the chain, which is always the LOADER.
4.4.2 Example of RSX Use
These two sample programs illustrate the use of an RSX program. The first
program, CALLVERS, prints a message to the console and then makes a BDOS
Function 12 call to obtain the CP/M 3 version number. CALLVERS repeats this
sequence five times before terminating. The second program, ECHOVERS, is an RSX
that intercepts the BDOS Function 12 call made by CALLVERS, prints a second
message, and returns the version 0031H to CALLVERS. Although this example is
simple, it illustrates BDOS function interception, stack swapping, and BDOS function
calls within an RSX.
4-22
4.4 Construction of an RSX Program CP/M 3 Programmer's Guide