This range of cartridges works on the following PCBs and with the following models of Spectrum:
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. Click here to view the list of known incompatible ZX80 programs. The emulator is included with permission on the ZX Spectrum Next (issue 1).
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 and 16K, with 16K being the maximum RAM supported by the ZX80. 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 programs with .O file extensions.
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 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.
|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|
|Click here to download the ZX File Transfer utility.|
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.|