I use a Sinclair ZX Spectrum Issue 2 with a DivMMC EnJOY! Pro One and the boot process shows no error and I'm even able to enter the file browser but if I choose any game/demo/program I get always garbage:

YouTube Link: https://www.youtube.com/watch?v=9bGBzDCBbKk

Here my CPU (NEC D780C-1) with modification: https://i.sstatic.net/syNPq.jpg

Any idea what's wrong here?


2 Answers 2


Does your divmmc work in another machine?

Anyway, there is a single common problem in 48k spectrums: on the edge connector, +12v and /M1 signals are neighbouring. When some device is inserted too much unaligned, chances are that +12v would shortcircuit to /M1.

Since 48k "chipset" does not use /M1, with enough luck this could pass unnoticed to the user -- the machine still works, but /M1 output is burned out. And DivMMC needs /M1 anyway.

The only way to fix that is to replace Z80.

  • Ok,thank you! Which Z80 do you suggest and is the existent modification (see picture) also needed with the replacement?
    – leon22
    Commented Apr 8, 2019 at 5:55
  • First, you obviously have to be sure the problem indeed in burned out /M1 signal. If it is the case, just swap it to any Z80 NMOS cpu around, the only restriction is maximum frequency, that have to be greater than 3.5 MHz (4MHz or more).
    – lvd
    Commented Apr 8, 2019 at 9:50
  • Once I'd swapped burned CPU to CMOS type, and everything worked just fine. However, CMOS Z80 do execute the undocumented command "OUT (C),0" in the 'wrong' way, as "OUT (C),#FF". So two or three thoughtlessly written software titles might break with CMOS Z80.
    – lvd
    Commented Apr 8, 2019 at 9:53
  • And the final note: you just keep wires soldered where they were before the CPU swap. They have nothing to do with CPU, rather they fix some bugs in the board layout.
    – lvd
    Commented Apr 8, 2019 at 9:54
  • 1
    The best way is to use oscilloscope or logic analyzer.
    – lvd
    Commented Apr 8, 2019 at 11:48

So the real issue was a problem with memory!

based on the ZX Spectrum Service Manual I did a RAM test:

Execute the command PRINT PEEK 23732+PEEK 23733*256 and the result should be 65535! (for a 48k machine)

I got 49344 -> error in 49345: (shows always the last working address)

  1. key in: POKE 49345,85: PRINT PEEK 49345 (=A)
  2. key in: POKE 49345,170: PRINT PEEK 49345 (=B)

If answer A is anything other than 85 or answer B other than 170 look into this table to find the faulty RAM IC: (mine was IC16)

enter image description here

So I have replaced the faulty IC16 and now I'm able to work with DivMMC!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .