Lawrence A. Crowl, " A Terminal Oriented Master/Slave Operating System", Undergraduate Honors Thesis, Denison University, Granville, Ohio, 43023, May 1981
TOMSOS is a small, single user, microcomputer operating system. The system can be operated as a stand-alone unit or in conjunction with a host computer. The system is interactive and thus supports interrupted input and output, keyboard editing of input lines, and keyboard program and output control. The system also supports minimal sequential file processing.
TOMSOS is an open operating system. The system is table driven and relies on the integrity of its data structures and not on the exclusive use of system routines. Almost all routines have been written to be user-callable utility and support procedures. The system is divided into five parts: the main program, the I/O interrupt procedures, the I/O request procedures, the support procedures, and the utility procedures. The main program binds the data structures to the support procedures to run the system. The I/O request procedures are the logical program interface to the I/O data structures. The I/O interrupt procedures perform the physical I/O asynchronously to the user program. The support procedures are general routines used to support the actions of the other parts of the system. The utility procedures are never used explicitly by the operating system but are present for the user to control and use the system.
TOMSOS is written in PL/M, an intermediate level language. The command structure of the system was chosen to be that of a PL/M procedure CALL statement. Only one command decoding scheme need be implemented. All utilities, system procedures, and user procedures can be called from a compiled program or interactively from the terminal.
TOMSOS I/O is completely device independent. This allows the system to accept commands from, receive input from, send output to, and send error messages to, either the console or the host computer. The system can interact with the host computer as would any interactive user. Thus the system can use a host computer as a computation and storage resource, or be driven by the host computer as a slave processor.