If the ROM in your 48K Spectrum has failed, or you simply want to try an alternative ROM image, then you’ll need to make some minor modifications to your machine in order for it to take an EPROM, since the Spectrum ROM pinout (a 23128 device) doesn’t exactly match that of the most readily available replacement, the 27C256 EPROM.
- Soldering iron
- Desoldering pump
- 2 x BAT85 (preferred) or 1N4148 diodes
- 1 x 3.3K resistor
- 1 x DIL28 socket
- Insulated wire
- 27C256 EPROM (and a means to program it)
If you’re interested in the technical details of this modification, skip to the end – the rest of the article deals purely with performing the modification itself.
Preparing the PCB
Firstly, disassemble the machine and remove the heatsink. Then you’ll need to desolder the orignal ROM and replace it with a socket. Take your time during this step and dont apply excessive force to the IC to remove it, even when all pins look to be free.
I find applying a little hot air after the solder has been removed from all the pins makes this process much easier and less risky.
Now locate the ROM links on the PCB (marked H-N). On Issue 2 boards these are underneath the heatsink, on issue 3 and up they are immediately northeast of the speaker. Desolder these and clean out the through holes, and also remove the solder from the through hole marked in yellow, we’ll be using this as our ground point for the diode-resistor circuit.
Now the PCB is prepared, we can go ahead and install the modifications required for the Spectrum to take an EPROM.
Installing some Modifications
Once the links are removed, and the area has been cleaned, insert the two diodes as shown. Add the 3.3K resistor from the ground point to the southwest point on the circuit (where the diodes are both inserted into the through hole). Lastly, add a piece of insulated wire from the ground point and run it to the northeast point on the ROM select links as shown.
Finally, turn the board upside down and install a piece of wire between pins 1 and 28 of the ROM socket.
Blowing the EPROM
If you don’t have an EPROM programmer, then you may need to find someone who can blow an EPROM with your desired image for you. Alternatively, you may find that now is the time to invest in one – I highly recommend the MiniPro TL866-CS which can be had for a very reasonable amount on eBay.
Insert the 27C256 EPROM into the programmer, and write your desired image to the device:
Now insert the EPROM into the ROM socket on the Spectrum, and apply a sticker over the EPROM window (this’ll ensure no stray UV light can inadvertantly affect the EPROM’s contents). Also, reinstall the heatsink.
You can now power on and test your new ROM image, and if all is well reassemble the machine.
Stretch goal: Switchable ROMs
You may have noticed that the 23128 that we replaced can contain 16K of code, whereas the 27C256 can contain 32K. Therefore it’s quite simple to extend this modification to make the ROM switchable between two images.
The green wire in the image with installed diodes is essentially tying pin 27 of the EPROM (A14) to ground, ensuring that only the first 16K of the EPROM is selected at any time.
If this wire is removed, and a switch installed so that the northeast pin of the ROM select links is either switched to ground or +5v, then both the lower and upper 16K of the EPROM can be used. This is useful if you want to run the standard 48K ROM alongside SEBasic or some other image.
Under Windows, to prepare your extended ROM image, open a command prompt and type:
copy /b rom_a.bin + rom_b.bin bothroms.bin
– and then burn the ‘bothroms.bin’ image to EPROM. Install the switch as outlined above, and you will be all set with a dual boot Spectrum.
The H-N links on the Spectrum PCB exist because when the Spectrum was designed, there were two main suppliers of the PROM containing the Spectrum firmware – Hitachi and NEC.
The PROMs supplied by these companies were almost identical save for the Chip Select (/CS) and Output Enable (/OE) signals which were swapped between pins 20 and 27. The H-N lines allow the signals to be correctly routed to each type of device.
When we install the diodes and resistor in the positions we do, we essentially form a simple OR gate with pulldown that enables the EPROM output (active low) when both /MREQ and /ROMCS signals (routed to /OE and /CS respectively) are low (i.e. we’re performing a memory read and we’re requesting that read operation in the ROM address space).
The northeast pin that we tie to ground is connected to pin 27, which can either be /OE or /CS on a 23128, but routes to A14 (the highest address bit) on a 27C256 device. Hence, if we attach this to a switch between 0v and 5v we can switch the 16K that the Spectrum sees between the lower and higher part of the EPROM.
BAT85 (Schottky) diodes are preferred in this application due to their lower voltage drop than standard silicon diodes, but using 1N4148’s doesn’t seem to cause issues.