Compatibility

This cartridge works on the following PCBs and with the following models of Spectrum:

PCB16K48K/+128/+2
Latest Version: 1.12
PROM Size: 32K - 48K (depending on build)
Click here to jump to the downloads section.


Description

This 32K ROM cartridge is primarily intended for use with the 48K Spectrum and Spectrum+, and accurately provides it with the new software functionality found on the Spectrum 128. Two branches of the emulator exist. The first is a basic port of the Spectrum 128 ROMs, including all bugs within the new Editor ROM. The second version fixes all bugs within the Editor ROM, thereby overcoming some serious shortcomings regarding the new BASIC editor and the additional commands. The bugs within the 48K BASIC ROM have not been fixed to maintain compatibility with 16K/48K Spectrum software. The bug free version can also be used on the Spectrum 128 or Spectrum +2, thereby effectively upgrading them to bug free versions. All of the facilities of the machines are still available, including access to its additonal hardware. The emulator utilises the paging facilities found on the ZXC2 and ZXC3 PCBs to support the two ROMs of the Spectrum 128.

At power up, the Spectrum will present the standard Spectrum 128 menu consisting of Tape Loader, 128 BASIC, Calculator, 48 BASIC and Tape Tester. The bug free version can be distinguished by the title bar text displaying as 128+.

Spectrum 128 Emulator ROM Cartridge Screenshot Bug Free Spectrum 128 Emulator ROM Cartridge Screenshot

When used on a 48K Spectrum or Spectrum+, 128 BASIC mode differs only in the amount of RAM available since the ZXC2/3/4 PCB is not capable of adding extra RAM. The additional 80K of RAM found on the Spectrum 128 was accessible via the new RAM disk commands, but on the emulator cartridge the RAM disk is limited to only 11K (10K for program data and 1K for the catalogue which is enough for 50 entries). The RAM disk resides within the last 16K bank of RAM, with the remaining 5K of it holding the new system variables used by the 128 BASIC interpreter. As a result, only 32K of RAM is available for user programs when in 128 BASIC mode. On the real Spectrum 128 (and when the cartridge is used on a Spectrum 128/+2), the RAM disk and new BASIC interpreter system variables are split across two of the additional RAM banks.

The 128 BASIC keywords SPECTRUM and PLAY are supported by the emulator, as are the renumber, print and screen toggle facilities.

Spectrum 128 Emulator 128 BASIC Screenshot

The SPECTRUM keyword and the 48 BASIC option from the main menu will completely disable the ROM cartridge, causing the Spectrum to revert back to using its internal ROM. When the cartridge is used on a 48K Spectrum, this ensures full compatibility will all 48K software (unlike the 48 BASIC mode of a real Spectrum 128). If an external AY-3-8912 sound chip circuit is added to a 48K Spectrum and constructed using the same I/O ports as the Spectrum 128 then the PLAY command should successfully control it. If RS232 line driver and receiver circuitry is also implemented then the COPY, LPRINT and LLIST commands should operate the RS232 port and 128 BASIC mode should support the KEYPAD port. Although the Spectrum 128 Keypad was never released in the UK, the Spanish version could be used or you can build your own compatible Spectrum 128 keypad.

The Tape Loader, Calculator and Tape Tester modes operate identically to those found on a real Spectrum 128. However, the Tape Loader option assumes 128 BASIC mode and so when used on a 48K Spectrum the differences in use of the last 16K RAM bank may cause some 48K programs to fail. If such issues are encountered, then simply load the program from 48 BASIC mode instead. Any program that attempts to utilise the additional RAM found on the Spectrum 128 will obviously fail when the cartridge is used on a 48K Spectrum.

Spectrum 128 Emulator Tape Loader Screenshot Spectrum 128 Emulator Calculator Screenshot Spectrum 128 Emulator Tape Tester Screenshot

The test screen accessed on the Spectrum 128 by holding the BREAK key during power up is also reproduced in the emulator.

Spectrum 128 Emulator Test Screen Screenshot

Since 48 BASIC mode completely disables the ROM cartridge, this mode allows the Spectrum to be used as if the ROM cartridge were not connected. It is therefore possible to leave the cartridge plugged into a 48K Spectrum at all times so that the new facilities are always be available at power up if required.


Downloads

There are a number of variants of the Spectrum 128 emulator ROM cartridge, which might be useful in specific circumstances. The different permutations can be selected using the following drop down lists.

ROM 0 (Editor) Include bug fixes to the resolve all errors present in the Spectrum 128 Editor ROM.
ROM 1 (48 BASIC mode) Use the Spectrum's internal ROM for 48 BASIC mode or the ROM cartridge's version.
ZX Interface 1 support Include a version of the Interface 1 ROM.

Click here to download the selected Spectrum 128 Emulator ROM cartridge. 32K

A number of serious bugs exist within the Editor ROM of the Spectrum 128 that can cause corruption to the program being edited. It is therefore recommended to use the bug-fixed version of the emulator. I've compiled a list of all fixed bugs within the Spectrum 128 emulator.

Click here to download the Spectrum 128 Bug List.

When the Spectrum 128 emulator ROM cartridge is in use, it is not possible to access the ROM of the ZX Interface 1 and hence the hardware facilites it provides cannot be used. To overcome this, a copy of the Interface 1 ROM can also be included within the emulator. Either edition of the Interface 1 ROM can be selected, although for most purposes the Edition 2 ROM is to be preferred. If a real ZX Interface 1 with Edition 1 ROM is connected then including the Edition 2 version ROM within the emulator effectively upgrades it. Even if a real ZX Interface 1 is not connected, the Interface 1 ROM can still be included within the emulator and will allow the non-hardware specific commands to be run, e.g. CLS # and MOVE.

When 48 BASIC mode is selected, the emulator can disable the ROM cartridge and revert to using the Spectrum's internal 48 BASIC ROM. This has the advantage of providing maximum compatibility with games. This stems from the ZXC2/3/4 PCB using the last 64 bytes of ROM space for memory mapped I/O control of the bank paging mechanism and therefore the necessity to relocate the character set 64 bytes lower within the BASIC ROM. This change causes programs that attempt to directly access the character set memory to fail. Worse still, if such a program were to access the last 8 characters of the character set, i.e. the last 64 bytes of the ROM, then they would invoke the bank paging mechanism of the ROM cartridge and almost certainly cause a crash. Note that programs that access the character set indirectly via system variable CHARS would not suffer this problem. The situation where it would be desirable to continue to use the modified version of the BASIC ROM is when a ZX Interface 1 fitted with an Edition 1 ROM is connected. This would then allow the effective software upgrade to an Edition 2 ROM to continue even when in 48 BASIC mode.