| Inacete's faulty Spectrum. Flashing blocks, but not because of ULA, CPU, or low memory malfunction. |
| Domingo, 25 de Mayo de 2008 14:48 |
|
Received on May, 24. The machine does not boot. Flashing blocks. Machine is a issue 3B PCB. I first did a visual inspection. No aparent damage. Hooked a Sinclair Interface II and tried different ROM's. When I tried Jet Pac, I realized that a reset failure was happening: this game LDIR's a screen from the ROM cartridge. The screen is the same loading screen as in the tape version. I did a manual reset, shorting C27, and voila! JetPac loaded. Then, I tried the Sinclair test cartridge, showing me 16K ok. Something in upper memory was buggy as well. Removed C27, that had subtle visual damage. After replacing it with a 2,2uF capacitor, the reset function was working again. The Sinclair test cartridge showed me that the first 16K RAM was ok, so I could boot up the machine and run some BASIC test to POKE/PEEK to the upper 32K block to see which IC's were malfunctioning, but the Spectrum didn't boot. It started the memory test but didn't finish with the Sinclair copyright message. Back to the test cartridge. I ran the RAM test several times. One of these runs led me to the following message:
Strange enough: Upper RAM has an intermitent failure, that sometimes happens, and sometimes not. Or a failure that doesn't affect all memory cells. That would explain why the computer keeps rebooting instead of finishing the memory test. Indeed, the machine did finish the test, but the initial setup put some important registers and system variables pointing to upper memory. A memory cell in this area may fail, and the machine crashes. So I needed a Spectrum ROM which ignores upper memory even for initial tests. I grabbed a ready-to-assemble copy of the Spectrum ROM and changed the value that gets loaded into DE at the very first stages of Spectrum boot up. The original value is FFFFh, which means that the test routine has to check from FFFFh downwards. I changed it into 7FFFh, so it would only check from that address down to address 4000h, the begining of phisycal RAM. I assembled the new ROM and programmed a Flash EPROM I use with the Interface II with this new file. The Spectrum now booted normally, as a 16K machine. A little BASIC program showed me that there was a failure in bit 2 of nearly all addresses beginning 8000h. If I ran the program again, the set of misworking addresses changed. Bit 2 is stored in IC17. Replacing this memory chip with a working unit solved the problem. |


A very good post!
;)