Fixing a poorly ZX-Spectrum (Part 5)
Now is the time to take the plunge and start cutting tracks. I suspect IC7 and IC16 (two RAM chips on D1) but first, taking a tip from “The Lil Old ZX Spectrum 48k Service Manual” I decided to start by eliminating the top 32K of RAM.
The tools I used to perform this operation were a sharp modelling knife, a multimeter with continuity checker and my oscilloscope.
Using the knife, I carefully cut the track connecting pin 16 of IC25 (taking care not to cut the fine tracks above and below) then tested with a multimeter (on continuity test) to ensure that the cut was good.
I then checked line D1 on the multimeter and the fault had not gone away. Plugging the Spectrum into a TV confirmed this.
I assumed at this point that the fault was with the bottom 16K of RAM.
Using the knife again, I carefully cut the 12V track which connects pin 8 of IC7 to the thick 12V track running below all the 4116 chips. Assuming that this would correct the fault I immediately plugged the Spectrum into a telly and noticed that there was no change in the situation.
Scoping out line D1 showed the line was still exhibiting the fault. At this point I decided to isolate the ROM.
This is easy to do on my Spectrum as the ROM is socketed; a thin screwdriver slid under the ROM did the trick. Unfortunately removing the ROM had no effect; still a poor signal on line D1. At this point, the fault must either lie with the ULA or the top 32K of RAM. Not having a spare ULA to hand, I decided to put the ROM back in (being careful not to bend the pins) and went back to the drawing board.
I’d stopped the Spectrum addressing the top 32K of RAM by cutting pin 16 of IC25, but hadn’t isolated the RAM from the data bus. A faulty chip could still be pulling D1 low. Cutting Pin 8 of IC16 (power to the other suspected RAM chip) would sort that out.
Upon powering up the Spectrum I was now getting a reasonable trace on all data lines, including D1. It appeared I’d found my culprit and it wasn’t the chip I originally suspected!
Plugging it into the TV and powering it up clearly showed the Spectrum getting into the RAM test (screen going black) but it wasn’t getting to the copyright message. Not surprising really as I’d disabled one of the 4116 chips in the lower 16K.
A blob of solder on the track I’d broken on IC7 sorted that out. Double checking D1 on the scope indicated all was still well with the world.
I then plugged it into the TV and powered it up and was greeted by this glorious message!
OK, it’s now a 16K Spectrum, but it’s a result. I’ll hit eBay later for 4532 chips.
I noticed whilst trying the keyboard out that some buttons were unresponsive; the ribbon connector to the motherboard is a bit cracked, presumably gone brittle due to age. I’ll get one of those as well whilst I’m at it.
Footnote
I quickly bodged the keyboard ribbon cables up; cutting off the damaged ends and fixing three adjacent broken tracks with sticky-tape & tin foil off a Kit-Kat wrapper this morning so that I could double check the 16K of RAM is working correctly.
The system variable RAMTOP is a word that contains the last byte of valid memory. If you type in the following instruction
PRINT PEEK 23732 + PEEK 23733 * 256
you should see either 32767 (for a 16K Spectrum) or 65535 (for a 48K Spectrum). If you don’t, then you have a further memory problem. If the value is less than 32767 then the fault lies in the bottom 16K of RAM, otherwise it’s the top 32K.
My Spectrum currently thinks it’s a 16K Spectrum and thankfully it’s reporting the correct value.