Introduction The 16K monitor program of the Spectrum is a complex Z80 machine code program. Its overall structure is very clear in that it is divided into three major parts: a. Input/Output routines b. BASIC interpreter c. Expression handling However these blocks are too large to be managed easily and in this book the monitor program is discussed in ten parts. Each of these parts will now be ‘outlined’. The restart routines and tables. At the start of the monitor program are the various ‘restart’ routines that are called with the single byte ‘RST’ instructions. All of the restarts are used. For example ‘restart 0008’ is used for the reporting of syntax or run-time errors. The tables in this part of the monitor program hold the expanded forms of the tokens and the ‘key-codes’. The keyboard routine. The keyboard is scanned every 1/50 th. of a second (U.K. model) and the keyboard routine returns the required character code. All of the keys of the keyboard 'repeat' if they are held down and the keyboard routine takes this into consideration. The loudspeaker routines. The spectrum has a single on-board loudspeaker and a note is produced by repeatedly using the appropriate 'OUT' instruction. In the controller routine great care has been taken to ensure that the note is held at a given 'pitch' throughout its 'duration'. The cassette handling routines. It was a very unfortunate feature of the ZX 81 that so little of the monitor program for that machine was devoted to the cassette handling. However in the Spectrum there is an extensive block of code and now the high standard of cassette handling is one of the most successful features of the machine. BASIC programs or blocks of data are both dealt with in the same manner of having a 'header' block (seventeen bytes) that is SAVEd first. This 'header' describes the 'data block' that is SAVEd after it. One disadvantage of this system is that it is not possible to produce programs with any 'security' whatsoever. The screen and printer handling routines. All of the remaining input/output routines of the Spectrum are 'vectored' through the 'channel & stream information areas'. In the standard Spectrum 'input' is only possible from the keyboard but 'output' can be directed to the printer, the upper part of the T.V. display or the lower part of the T.V. display. The major 'input' routine in this part of the monitor program is the EDITOR that allows the user to enter characters into the lower part of the T.V. display. The PRINT-OUT routine is a rather slow routine as the same routine is used for 'all possibilities'. For example, the adding of a single byte to the 'display area' involves considering the present status of OVER and INVERSE on every occasion. The executive routines In this part of the monitor program are to be found the INITIALISATION procedure and the 'main execution loop' of the BASIC interpreter. In the Spectrum the BASIC line returned by the EDITOR is checked for the correctness of its syntax and then saved in the program area, if it was a line starting with a line number, or 'executed' otherwise. This execution can in turn lead to further statements being considered. (Most clearly seen as in the case of - RUN.)