This range of cartridges works on the following PCBs and with the following models of Spectrum:
|Description (Spectrum 128 Version)|
The operation of the ZX80 is very similar to the ZX81 and this allows the principles employed to produce the 'ZX81' ROM cartridge to be used to create a 'ZX80' ROM cartridge. Therefore this cartridge can also only be used with a ZX Spectrum 128. As with the 'ZX81' ROM cartridge, the display and cassette handling routines are patched and this makes it possible to save and load ZX80 programs to and from cassette directly from the Spectrum 128. When saving, the border colour toggles between white and black and simulates how the real ZX80 display would appear. When loading, the display remains black (unlike the ZX81) but this replicates what a real ZX80 does. Support for high resolution displays has not been implemented, although flicker-free games are supported by mimicing calls to 01ADh in the ZX80 ROM. The majority of ZX80 programs should run correctly on the emulator, but please report any that do not.
At start up, a Spectrum 128 style menu allows selection of the memory configuration and also provides a tape loader option. The memory configuration options are 1K, 4K, 16K and 32K, with 32K being the maximum RAM supported by the ROM cartridge. The tape loader option defaults to a 16K configuration and provides a quick method to load a program from cassette. The cursor keys are used to move through the menu options and ENTER is used to select the highlighted option. The RAM menu is shown below:
To simplify using the emulator on a Spectrum 128, the ZX80 keyboard layout is remapped to match as closely as possible the layout on the Spectrum 128. This has involved moving the majority of ZX80 keywords, symbols and graphic characters.
It is possible to revert to the true ZX80 keyboard mapping by typing PRINT USR(4156). The remapped keyboard layout can be switched back to by typing PRINT USR(4153). The default key mapping is determined by bit 0 of the byte at 103Fh (4159d), and so this bit can be set as desired before programming the emulator image into an EPROM. If the bit is reset to 0 then the remapped Spectrum 128 keyboard layout is used; if set to 1 then the true ZX80 keyboard layout is used.
In addition to loading/saving programs via cassette, it is also possible to load and save via a serial link. When a LOAD or SAVE command is executed, another Spectrum 128 style menu is displayed. These menus provide options to load/save from cassette, the Spectrum 128's RS232 socket, the Spectrum 128's Keypad socket and the ZX Interface 1's RS232 socket. The LOAD and SAVE menus are shown below:
When loading or saving via a serial connection a single byte is initially transmitted to indicate the type of transfer required. This single prefixed byte has the value of A0h when save is requested and a value of 82h when load is requested. Communications via a serial link occurs at 9600 baud with 8 data bits, no parity and 2 stop bits. The lead wiring for the different types of serial connections are as detailed for the 'ZX81' ROM cartridge. The ZX File Transfer utility supports the 'ZX80' ROM cartridge, and file extensions .O, .80 and .P80. The difference between the formats is minor - the .P80 format is guaranteed not to include any surplus bytes at the end of the ZX80 program bytes.
Once an option has been selected from the LOAD or SAVE menus, this becomes the default option for that action until a reset occurs. However, it is possible to re-select the menus by typing PRINT USR(4144) and PRINT USR(4147) for the LOAD and SAVE menus respectively. Alternatively, the default options can be altered by poking the following memory locations:
|Load||65534||Menu||Cassette||ZX Interface 1||128 RS232||128 Keypad|
|Save||65535||Menu||Cassette||ZX Interface 1||128 RS232||128 Keypad|
Loading and saving via a serial connection occurs at 9600 baud with 8 data bits, no parity and 2 stop bits. The lead wiring required to a PC is identical to that shown for the Spectrum RS232 ROM cartridge.
To simplify the process of converting programs between cassette and PC format I have incorporated a menu within the ROM to perform such transfers. It is invoked either by holding down the BREAK key when resetting the Spectrum 128 or by typing PRINT USR(4150).
The ROM cartridge image can also be used with an emulator. To load a .O, .80 or .P80 file into an emulator, perform the following:
- Type LOAD to bring up the load menu.
- Access the emulator menus and select to load a block of memory.
- Enter the start address as 16384 and enter the length of the file to load.
- Load the block and exit from the emulator menu.
- Select EXIT from the load menu.
I've also produced a version of the cartridge that fixes the bugs in the ZX80 ROM, which I have named ZX80+. There is a bug in the REM routine which causes the line after an empty REM line to also be treated as a REM. See Geoff Wearmouth's website for full details of this bug and its fix.
When Sinclair Research created the ZX81, they designed its ROM such that it could be retro fitted to the ZX80 and offered it as an upgrade kit to ZX80 owners. This kit comprised of an edition 1 ZX81 ROM, ZX81 keyboard overlay and ZX81 instruction manual. The ZX80 was still unable to display a continuous TV picture but otherwise operated exactly like a ZX81 that was permanently in FAST mode. I've produced a modified version of my ZX81 emulator that mimics how the ROM would operate when fitted in a ZX80.
|Downloads (Spectrum 128 Version)|
|Click here to download the ZX80 ROM cartridge.||16K|
|Click here to download the ZX80 Bug Free ROM cartridge.||16K|
|Click here to download the ZX80 with 8K ROM upgrade ROM cartridge.||16K|
To aid identifying where all of the graphics characters have moved to, I've produced a diagram showing the mapping of the ZX80 keys on the Spectrum 128 keyboard.
|Click here to download the Spectrum 128 ZX80 Emulator Keyboard Layout.|
|Description (48K Spectrum Version)|
A modified version of the 'ZX80' ROM cartridge can also be used with the 48K Spectrum. This requires the additional circuitry described for the modified 'ZX81' ROM cartridge for the 48K Spectrum. To allow a different I/O port to be used by the circuit I have also coded the 'ZX80' ROM such that it uses the values stored at memory locations 1040h and 1041h.
In addition to the RAM direction control, there are a few other differences between the 48K Spectrum version of the 'ZX80' ROM cartridge and the Spectrum 128 version. These all relate to the removal of support for the Spectrum 128's RS232 and KEYPAD sockets, and hence the LOAD, SAVE and TRANSFER menus only provide additional support for the ZX Interface 1. The memory locations used to hold the default values have also changed as follows:
|Load||49150||Menu||Cassette||ZX Interface 1|
|Save||49151||Menu||Cassette||ZX Interface 1|
To simplify using the emulator on a 48K Spectrum, the ZX80 keyboard layout is remapped to match as closely as possible the layout on the Spectrum. This has involved moving the majority of ZX80 keywords, symbols and graphic characters. It is possible to revert to the true ZX80 keyboard mapping by typing PRINT USR(4156). The remapped keyboard layout can be switched back to by typing PRINT USR(4153). The default key mapping is determined by bit 0 of the byte at 103Fh (4159d), and so this bit can be set as desired before programming the emulator image into an EPROM. If the bit is reset to 0 then the remapped Spectrum 128 keyboard layout is used; if set to 1 then the true ZX80 keyboard layout is used.
|Downloads (48K Spectrum Version)|
|Click here to download the ZX80 ROM cartridge for the 48K Spectrum.||16K|
|Click here to download the ZX80 Bug Free ROM cartridge for the 48K Spectrum.||16K|
|Click here to download the ZX80 with 8K ROM upgrade ROM cartridge for the 48K Spectrum.||16K|
To aid identifying where all of the graphics characters have moved to, I've produced a diagram showing the mapping of the ZX80 keys on the 48K Spectrum and also Spectrum+ keyboards.
|Click here to download the 48K Spectrum ZX80 Emulator Keyboard Layout.|
|Click here to download the Spectrum+ ZX80 Emulator Keyboard Layout.|