RSXes

A RSX (Resident System eXpansion) allows among other things the expansion of BDOS functions. It will be used also if parts of programs reside in the upper part of the memory. The CP/M+ tools GET und PUT are such programs using a RSX.
The article „RSX-system expansions for CP/M-Plus " („Systemerweiterungen unter CP/M-Plus" only in German) is an excellent essay about the function of a RSX.
To combine a normal .COM file with a .RSX file the CP/M program GENCOM is available. At first two utilities working on RSXes:

GENRSX.MAC GENCOM allows appending or deleting a RSX to or from a .COM file. In the latter case the .RSX file will be lost. GENRSX extracts an existing RSX.
RSXCOM.MAC A .RSX file is actually a .PRL file (Page ReLative) holding two parts:
  • The program code, which does not start at the usual address 0100 but at 0000.
  • The correction code. This is actually a bitmap for those addresses where the page has to be relocated.
RSXCOM creates a normal .COM file from the .RSX file.
Both tools may be meaningful in the „reverse engineering" environment.
Often it is interesting to get an overview of the memory layout as well of installed RSXes. The following tool displays a lot of information about that.
RSXSHOW.MAC RSXSHOW.MAC bases upon the PD tool RSXMAP.C. RSXMAP.C is erroneous if an application, eg. a debugger (such as SID) resides in memory and did change the vectors of BIOS or BDOS. RSXSHOW.MAC displays the usual addresses as well as the „real ones" stored in the SCB.


Over the years I collected a lot of programs containing RSXes. Here an overview of these tools:

ANSI RSX The project ANSI is a filter changing standard ANSI ESCape sequences into the internal sequences of the Joyce.
VIDEO DUMP The RSX VIDDUMP filters control characters printed on console und displays them. It may be useful analyzing unknown terminal types. The display will be done in the following way:
00H-1AH:Dump as hex byte <xx>
1BH:ESCape-follower dumped as <xx>
1CH-1FH:Dump as hex byte <xx>
20H-7EH:Normal output
7FH:Dump as hex byte <xx>
80H-FFH:Dump as hex byte <xx> with inverse video on
Interrupts Working with Kermit I had the idea running the serial line interrupt driven. Look here for the source file which indeed never leaved experimental stage.
WHM [WHM is a tool distributed at that time by the British company HiSoft. The package included source files but not for the main file; I disassembled the file.].
WHM (Write Hand Man) is a collection of small useful tools.

In the Public Domain I found some interesting RSX applications I disassembled.

HISTORY This RSX allows recalling previously typed in commands by control keys.
CP/M 2 This RSX allows running programs designed for a „pure" CPM 2.x environment running on a CP/M 3.x machine without a crash. (Ther are well known incompatibilities between these systems, described in the article „CP/M-Plus: Is it useful?".)
SPOOLER As known CP/M is a polled system. The programmer must take care of a device whether it is ready for I/O or not. The function of this RSX is to check if a character may be printed whenever a system call is waiting for keyboard input.
An article describing simultaneous I/O in a polled system will be found here.

Over the years I wrote a lot of RSX utilities for analyzing request on the operating system. If you like to experiment, too, look at the tools:

BDOSALL.MAC BDOSALL.RSX displays the activities of all BDOS calls including parameters.
BDOSREP.MAC BDOSREP.RSX is less verbose and displays BDOS calls referring to files only.
FCBREP.MAC FCBREP.RSX is similar to BDOSREP.RSX but more verbose.
FBREAK.MAC FBREAK.RSX allows the abort of a program during a BDOS function call.