ROM cartridge available:
ROM cartridge released: 14th December 2012


The ZXC3 extends upon the functionality introduced by the ZXC2 by allowing a 128K FLASH ROM to be programmed, erased and re-programmed directly from a Spectrum - an EPROM programmer is not required. The cartridge utilises the programmable software bank paging ROM Cartridge configuration, but also supports the standard and a reduced version of the software bank paging ROM cartridge configuration. The cartridge can be used with 8K (27C64), 16K (27C128), 32K (27C256), 64K (27C512) and 128K (27C010/1001) EPROMs, and is therefore backwards compatible with programs designed for the ZXC2 that are up to 128K in size. With a slight modification, the ZXC3 can also be used with 256K (27C020/2001) EPROMs. The ZXC3 PCB can be seen below:

ZXC3 ROM Cartridge PCB - Front ZXC3 ROM Cartridge PCB - Back

When the cartridge is used in the software bank paging configuration, the top 64 bytes of the ROM address space is used for memory mapped control of the bank paging mechanism and so cannot be used to store program code or data. When the cartridge used in the standard bank paging configuration, the full address space is available to store program code or data. In order to write to a FLASH ROM using the Spectrum, the software bank paging configuration must be used.

I've produced a number of new ROM cartridge programs that work with the ZXC3, and also the ZX ROM Cartridge Creator utility (for Microsoft Windows) that allows cassette games in PC emulator snapshot files (.Z80, .SNA, .SZX) to be converted into ROM cartridges, as well as binary files (.ROM, .BIN). The utility can transmit the resultant compilation via RS232 to the Spectrum at a baud rate of 19200, and the Spectrum can then writes it into a FLASH ROM. The utility can also output a binary file suitable for programming the compilation into an EPROM using an EPROM programmer. I have also produced a Microdrive Emulator ROM for use with the ZXC3, which provides up to 90K online storage accessible via the standard Interface 1 BASIC commands. Since the emulator includes a patched version of the Interface 1 ROM, it will also operate with the majority of machine code programs that utilise the Microdrives.

Assembled ZXC3 ROM Cartridge Cased ZXC3 ROM Cartridge

Although the edge connector of the ZXC3 is gold plated, it might still tarnish over time. This can be minimised by occasional application of a small amount of electrical lubricant or polish.

The ZXC3 is no longer available, but if you are interested in obtaining a ZXC4 ready assembled cartridge then please contact me for details.

Paging Control

The following information will be useful should you wish to write your own assembly language programs to control the ZXC3.

At power on the ZXC3 intercepts accesses to the top 64 ROM locations ($3FC0-$3FFF) and interprets them as follows:

ZXC3 PCB Memory Mapped Control
Bank Selects between the 8 banks available.
Write Set to 1 to assert the /WR line to the FLASH ROM. Set 0 to return to read mode.
Page Out Set to 1 to page out the ROM cartridge, thereby allowing access to the Spectrum ROM (or Interface 1 ROM if paged in). Set to 0 to page the ROM cartridge back in.
Lock Set to 1 to prevent further paging. This can therefore be used to permanently make a bank of the ROM cartridge visible to the Spectrum, or to permanently page out the ROM cartridge.

Note that to use the paging control mechanism from your own assembly language programs, care should be taken to ensure the I and R registers do not contain values that would inadvertently invoke the paging mechanism. Setting the I register to a value between $80 and $BF ensures maximum compatibility on 48K and 128K Spectrums.

ZXC2 Compatibility

The software bank paging mechanism on the ZXC3 is a reduced version of that implemented on the ZXC2. This is due to the additional circuitry used to generate the /WE line for FLASH programming, and prevents the generation of address line A17. This limits the largest capacity PROM that the ZXC3 can directly support to 128K. However, it is possible to make the ZXC3 support 256K EPROMs by cutting two of its tracks and soldering three wire links on the board (download the PCB configuration details document above for more information).

SPECTRA Compatibility

The ZXC3 is fully compatible with the ROM cartridge socket of the SPECTRA SCART interface.


Full details on the supported PROM configurations can be found in the following document:

Click here to download configuration details about the ZXC3 ROM cartridge PCB.

I have also produced a set of reference design routines for programming and erasing the 29F010 FLASH ROM, and these can be downloaded for use in your own ROM cartridge programs.

Click here to download the reference design FLASH programming routines for the ZXC3 ROM cartridge.
Click here to download the 29F010B FLASH ROM datasheet.

I've created a program to allow a ZXC3 fitted with a 29F010 FLASH ROM to be tested. The program must run from the first 16K bank of a 29F010 ROM. The ZX ROM Cartridge Creator can be used to download the program to the Spectrum for programming into the ZXC3 (note that the Flash Programmer must not be included in the compilation and the paging setting for the test program should be set to 'none'). When the Spectrum is powered on, the test program will automatically run and will execute a sequence of tests. At the end of the test sequence, the ZXC3 locks its paging mechanism. Resetting the Spectrum (using a reset button) should cause the ZXC3 to unlock its paging mechanism and so allow the tests to run again. If the tests run successfully for two consecutive passes then the ZXC3 is working correctly.

ZXC3 Unit Test

NOTE: Running the tests will erase the contents of the ROM, including the Flash Programmer if present. The Flash Programmer will need to be re-instated from a backup afterwards before the cartridge can be re-programmed, so make sure you have a means available to restore it (ZX Interface 1 RS232 or Cassette). The test utility should only be used if you suspect there is a problem with the ZXC3.

Click here to download the ZXC3 Unit Test.