Why aren’t many ZX Spectrum interfaces compatible?

“Can I use a Spectranet and DivMMC together?”
“Can I use the PlusDlite and the ZX Spectrum +3 disk drive at the same time?”

I get questions like these a lot!
And yes, they are totally valid questions.

So let’s finally put the anwser in this post, will try to keep it in a nutshell!

ZX Spectrum architecture

The ZX Spectrum was developed to be an affordable machine back in the days.
One way of making that possible was by leaving out many components that other much more expensive systems had.

If you add external hardware to the ZX Spectrum, it’s usually accessed by I/O (input/output) ports.
The proper way of designing external hardware would be by ‘decoding its address bus’ using ALL 16 address lines from the ZX Spectrum.

However Sinclair themselves (the development team of the ZX Spectrum itself) already made an exception of this by claiming one address line for ULA (that big chip) purposes.
So it wasn’t already possible anymore to do proper address decoding.

And the way Sinclair did it, became kind of a standard with many hardware add-ons.
Many producers used just one or two address lines to decode for their hardware.

Doing it that way resulted in many devices becoming incompatible, especially more complex devices like Floppy Disk interfaces and these days the SD storage interfaces and now the Spectranet ethernet interface.

As a comparison: at the time when the ZX Spectrum was sold, many other machines had several expansion slots, but interfaces developed for those had more complete ‘address decoders’ to avoid conflicts.
Hence though those machines and add-ons were a lot more expensive.


So what about interfaces on the ZX Spectrum then?

The basic rule is: every two interfaces with ROMs and NMI circuits will collide by default.
All storage interfaces have at least their own ROM, and many have an NMI circuit.

Now some interfaces like Disciple have an inhibit switch that adds some kind of compatibility, but not much.

And there is no magic / standard way of working around this.
One ‘very difficult’ solution (it IS possible) is disabling the ROM and NMI on one interface but leaving it’s hardware available, so it can be accessed by commands from the other interface.
For example someone could write %-commands on Spectranet to add support to the +3 disk drive or DivMMC SD card and so on.

But there is another catch: with complex interfaces like Spectranet, DivMMC and others, there are often I/O conflicts as well.
That means that when the software tries to access the hardware on one interface, it accidentally may activate hardware on the other device.
To solve that, one of the interfaces needs to be changed on a hardware level.

Hence I keep saying: there is almost no way of doing this.

So you have to pick the setup you like the most.
Or two setups, or three… Mancave anyone??


Sega gamepad (replica) tested on ZX Spectrum joystick interfaces

Tested cheap gamepads today that are available on several websites (including ZXSpectrum.shop) on a couple of joystick interfaces.
Works great!

The remark at the end of the video about potentially shorting 5V to ground does not apply: the gamepad works well on all interfaces I tested, including DivMMC EnJOY! interfaces with integrated joystick port that have 5V on joystick pin 7.


Sam Coupe drive capacitors

I’ve made some photos with details of the SMD capacitors used on the Sam Coupe disk drives.
I hope to be able to add the package specifications as well.

I’ve seen two revisions of the circuit boards inside the drives.
One has 3 capacitors and the other four, hence here you have 2 photos with the specs.

And underneath the photos you will find part numbers at Farnell or Mouser (not tested myself yet when writing this post, parts are on their way).

Farnell part numbers:

22uF 16V 5mm – Farnell: 2611359
1uF 50V 4mm BIPOLAR! – Mouser: 647-UWP1H010MCL
2.2uF 35V 4mm BIPOLAR! – Farnell: 2326177 / Mouser: 667-EEE-1VA2R2NR
10uF 16V 4mm – Farnell: 2901318