Sunday 1 July 2018

Spectrum +2 Repair - locks up after an hour

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

This was a bit of a frustrating repair. A Spectrum +2 which appears to run fine. Then after a while, it locks up. Sometimes after only a few minutes, other times it wouldn't fail for hours.
Running Brendan Alford's ZX Diagnostics in soak test mode, it passes all the tests fine at first.
Then just fails all 8 bits at once. Which is unusual, and suggests it's not the RAM chips, but other times, it's single bits that fail, which does suggest faulty RAM chips.
Testing this was a bit tricky, because every time I changed anything, I would need to leave it for an hour or two to see if it failed again. I sometimes ran games with music in them, and would leave them playing as I went about other jobs, waiting for it to stop.
At first it appeared that the RAM chips were a little suspect. The +2 has two pairs of 4464 RAM chips, each 4 bits by 64K, giving 8x128K in total. To narrow things down, I tested them two at a time in a Commodore 64C (which uses 2x 4464), and found that both pairs were a little flaky. I replaced them with four new RAM chips, both pairs of which passed a long test in the C64C, and tried again.
Nope, failed again. (the screen alternates, I may as well use a different screenshot each time to add variety). I didn't see any single bit failures, or quick failures after replacing the RAM, so I think there are two issues here. The single bit failures were down to faulty RAM, but there is another problem that is causing all 8 bits to fail, and this is only happening after an hour or two.
To narrow things, down, I removed the ROM chips, fitted a new Z80 chip, and used an external ROM module to load the diagnostics. None of them had been getting warm, which would normally have pointed to the problem. Nothing was getting warm, it was running nicely, apart from the fact it locked up after a few hours.
OK, so there's not much left. The RAM sockets were a little loose, so I replaced those, and it seems more stable now, it will run for an hour or two, but still locks up.
Running out of options, I had a closer look at the ULA, a slightly unusual arrangement on these boards, it is soldered on from the back of the board, and pokes up through a cutout in the PCB.
There was some vintage flux hanging around, and a few slightly crusty joints, so I thought it would be worth cleaning that up, so I removed the old flux residue, and reflowed all the connections.
Another two hour run, and it was still going.
I left it another hour or so, and yes, still stable.
So far, so good, I put back the ROM chips and the original Z80, and a divMMC future and repeated the tests.
Yes, I think it's now sorted. Loading from tape just took a head clean and a new belt and it's away.
N.B. remember this is a +2A, so if you want to load Jet Pac or other Ultimate play the game title, switch to 48K BASIC and type LOAD "", don't use the tape loader.
I think there were a number of problems there. There were 3 bad RAM chips (one did pass, but I wouldn't trust it). The flaky ULA soldering has probably been that way since new, it could have been that, or the sockets that led to the RAM chips failing?