OS Calls

Operating System calls

Unlike most manufacturers, the spectrum rom doesn't have many standard rom entry points with most of them undocumented. This meant that the addresses changed between the different machines.

For example, all 48K Spectrum's had the same ROM, so you were almost guaranteed to be able to use the same routine on different machines. However, the 128K introduced 2 roms so there had to be differences. With the +2A/+3 came 4 roms and to complicate things there exists an English and Spanish version of these roms with different addresses.

Unless otherwise specified, the entry points in this section will be for the 48K Spectrum as that has more documentation available.

The only common entry points (known so far) are the RST entry points, as these are also used by the processor's RST instruction.

Restart RST

Calculator Enter the floating point calculator
Collect Character restarts Collect Character and Collect Next Character restarts
ERROR Error restart
Make BC Spaces Creates BC free locations in the workspace
Maskable Interrupt The Maskable Interrupt Handler
PRINT_A Write A to current output channel
START Restart the machine

Issues with RST instructions

Even this isn't standardised in documentation, with some calls referenced by different numbers.

For example, the calculator is referenced as RST 5, RST 40 and RST $28 in different places even though they are identical instructions.

Address OP Code RST Instruction Action
48K 128K +2 +2A/+3
0000 C7 RST 0 Reset machine
0008 CF RST 1 RST 8 Error handler Unavailable Error handler
0010 D7 RST 2 RST $10 RST 16 Print A
0018 DF RST 3 RST $18 RST 24 Get Character
0020 E7 RST 4 RST $20 RST 32
0028 EF RST 5 RST $28 RST 40 Calculator Call ROM1 Call ROM3
0030 F7 RST 6 RST $30 RST 48 Reserve Workspace Unavailable as used by RST 5
0038 FF RST 7 RST $38 RST 56 Maskable Interrupt Handler

A 128K machine running in 48K mode will have the RST instructions as the 48K machine.

Screen

Clear the screen Clear the whole display area

OS Vector Table

On the 128K and +2 Spectrum's there is a vector table at 0x0100 to common routines.

Previously the ROM was just a single program and not an Operating System.

This table is not present on the 48K nor is it on the +2A and +3 Spectrum's
Routine Vector Table
Address Routine
128K +2
0100 BASIC interpreter parser
0103 Line Run entry point
0106 Transfer bytes to logical RAM bank 4
0109 Transfer bytes from logical RAM bank 4
010C 128K error routine
010F Error routine
0112 Return statement
0115 Next statement
0118 Scan Keyboard
011B Play music strings
011E MIDI byte output
0121 RS232 byte input
0124 RS232 text output
0127 RS232 byte output
012A COPY screen dump
012D RST 5 keypad scan routine in ROM 1