Parts list for the ROM and Diags board.

This parts list is for the PCB as I built it. There are some subsitutions you can use - these will be discussed also. But for now:

U174HC138 3-to-8 line decoder - decodes the I/O port when IORQ is low, WR is low and M1 is high.
U274HC32 Quad 2-input OR gate - chip enables the flash memory when MREQ is low, A14 and A15 is low, and Q6 from the memory page select register is low (when J1 is set to pin 1 and 2, high if set to pin 2 and 3).
U3Am29F010 or Am29F040NOR flash memory. The AMD Am29F* parts have been tested, but any flash memory from 128kbyte to 512kbyte should work so long as it complies to the JEDEC standard.
U4, U574HC273Octal D-type flip flops used as LED and memory page registers.
C10.22uF cap.Ceramic disc decoupling capacitor. 0.1uF should work too.
Q1, Q3Infineon BSS84PP-channel MOSFET. Q1 is used to pull the Spectrum's ROMCS high, disabling the Spectrum's ROM. Q3 is part of the inverter that allows the jumper selection of flash on boot or Spectrum ROM on boot.
Q2Infineon BSS138NN-channel MOSFET. The other part of the inverter for the jumper selection.
D1-D85 volt LEDThe PCB as designed uses green LEDs with a built-in resistor for 5v operation (reducing component count)
CN12x28 edge connectorSurpringly hard to find in this size, it's easiest to either desolder an ISA slot off an old, dead PC motherboard and saw the excess off, or buy a slightly larger than needed connector and saw the excess off.
J1, J23 pin jumperSimple cheap and cheerful block of jumper pins.

Other useful parts are a pack of track pins for constructing the vias (although small bits of wire also work - although it takes a bit longer to do it that way). The PCB itself should be at least 100mm x 90mm, double sided. This can also be cut from a 'Eurocard' sized piece of PCB.


Much of the component selection was decided by what I had in the parts bin already. They are all common parts, and are available at the usual suspects (Farnell and RS sell all the parts listed, Maplin sell all but the flash memory).

The 74HC parts can all be substituted by 74HCT (TTL-compatible) parts. I've tested the board built with 74HC parts on an Issue 2 and Issue 4 Spectrum, and it works fine (the old NMOS Z80 signals are all compatible with CMOS levels in my experience.)

The three MOSFET transistors used as the PCB is laid out are all SOT-23 surface mount types. This is a bit of self-indulgence on my part; until this board, I hadn't used surface mount parts and three small transistors seemed to be a good way to try my hand at it. It turned out to be quite easy. (See the PCB page for more information if you've never done it before). Any small signal MOSFET of the right type should work here, given that the timings aren't particularly fast on a 3.5MHz Spectrum. Any MOSFET that fully turns on at 5v Vgs (for NMOS) or -5v Vgs (for PMOS) in less than 100ns, and has an Rds(on) of less than 10 ohms should work entirely satisfactorily. With a few minutes work in the PCB program, it should be possible to subsitute Q1 for a PNP bipolar transistor (plus a resistor between pin 2 of J1 and the base to limit current).

Q2 and Q3 form a single inverter gate (NOT gate) from discretes. This was done to save space over putting the typical 74HC04 or similar hex inverter chip (with 5 unused gates!) It's formed as a CMOS inverter gate with one P-channel MOSFET and one N-channel MOSFET, with the gates joined together to form the input, and the drains joined together to form the output. They can be formed from any small signal NMOS and PMOS transistor, with the same caveats as for Q1. With a little rework in the PCB program, you could also form this inverter from a single N-channel MOSFET and 1K resistor, or alternately with an NPN bipolar transistor and 1K resistor (plus suitable resistor from pin 9 of the '273 to the transistor's base to limit current). If you don't need to be able to use the jumper to be able to select between booting off the flash ROM or the Spectrum's ROM, you can omit Q2, Q3 and J1, and bridge pins 1 and 2 of where the jumper would be with a small piece of wire and solder.

The LEDs D1-D8 are 5v types (i.e. have a built-in resistor). A while back, I bought a good sized pack of these, and they've been incredibly useful when breadboarding circuits since you can plug them in without worrying about a resistor to go with it. You can use traditional LEDs with an appropriate resistor too, although this will need much more re-jigging if you're using my PCB layout. The easiest way to rejig the board is either to use SMD resistors (and move the LEDs and solder side cathode power supply out a few mm towards the edge of the board, and reshape the two clock lines for the flip flops to make room) - or use normal resistors, but instead of using the standard 300 mil axial component footprint, use a 100 mil footprint and when putting the resistors in, mount them 'standing up'.

The biggie - the flash chip itself. I've tested this with both the AMD Am29F010 and Am29F040 - but any 1 megabit, 2 megabit or 4 megabit flash chip should work so long as it's comaptible with the JEDEC pin-out specifications for these 32-pin DIP devices. I think the programming method is also a JEDEC standard (however, I have a 2 megabit chip salvaged from an old PC motherboard that fails at the sector erase stage when I try and program it - and I can't find a data sheet for the device so I don't know why!) The Am29F010 and Am29F040 is available from both RS and Farnell.