Restoring the Commodore 64 – Part 2
TLDR: Broken trace Under a ram chip, Bad Kernel Rom & oscillator IC, random jumper
Dead Test Cartridge
The dead test cartridge is exactly what it sounds like. You have a dead commodore 64 computer, plug in the cartridge, it runs a rom and program and tells you what the issue is. Remade versions of the originals are all over e-bay for a few dollars. I was excited to get this thing in the mail.
Plugged it into the computer, switched everything on, and…. nothing! Just static.
Bad Clock Chip
So, I started working my way through the C-64 Basic Troubleshooting Guide. When I got to section 3.1 – System Clocks, I found the first issue. The IC U31 is supposed to generate 14.3 MHZ on pin 13. The oscilloscope said it was generating about 4.5 MHz. Way below the required values. I ordered a new 74LS629 or voltage controlled oscillator and replaced the IC.
Random Jumper
In the mean-time I was tracing circuits. Why would someone have put a jumper on the U20 reset line chip? U20 a LM556 timer. There was a soldered on wire from pin 9 (output 2) to 13 (discharge 2). Pin 13 and 12 are connected together and are connected to +5V via 47K resistor and a 10uF cap to ground. This setup acts like a charge-up circuit. It takes about 0.5 seconds to charge-up the capacitor and reach the +5V. Pin 9 is an “‘high” active output, when it reaches the voltage that it is compared to, That is connected to U8. The output of U8 goes “low” when active. So, on a reset or power-up, this initializes the processor logic and causes it to load the operating KERNAL operating system program after a delay.
There isn’t a jumper in the circuit diagram. So, I removed it and replaced the IC just in case. Didn’t seem to fix the blank screen.
Screen Flash! Bad RAM Chips?
With a newly socketed U31 and a new U20, the DeadTest Cartridge started working. The screen started flashing! Not exactly the results I wanted. But, according to the manual, the number of flashes was calling out which ram chip is bad. Six Flashes for Rev A/B is a bad U22 ram chip.
So… onto replacing the ram chip. I needed to order more sockets and ram chips. These are 4164 200 ns ram chips. Then desolder them, then put in sockets, then re-solder everything and test again. No Luck!
Same thing, however, this time the error moved from U22 to U10. These were all new RAM chips, new sockets. The suggestions online and in the service guide went to the addressing chips.
The ram chips are all tied together on a common bus. You can see that in the photo, the light yellow lines tie the ram chips together. U13 and U25 sit to the right of the ram modules. These chips take the address from the processor and convey it the ram chip. Each RAM module takes 8 address inputs and provides 1 output. To form an 8 bit output, two banks of 4 are used. The outputs from the 8 chips form the D0 to D7 output bus.
Even with the new RAM chips… it still wasn’t working.
I started tracing the lines…. And found a broken trace under U11 – This was the ram error. A random trace that broke, the actual chips were good, the trace had somehow gone bad.
I added a little jumper and presto! I got a display image. No more flashing! You can almost make out the image. However still mostly non-sensical characters in a pattern.
ROM Chips
The middle ROM chip was toasty and hot! The overall system voltage was being pulled down too. There are three ROM chips, from left to right: BASIC, KERNEL, CHARACTER. Turns out when I pulled out the Kernel rom, things worked better.
More sockets, more new chips. I ordered all three new chips from DIY Chris and went on vacation.
After replacing the Kernel ROM chip, the system worked! WAHOO!!!
Other Chips to be Safe
Just to be safe…. I also replaced the PLA, SID, Basic and Character ROM chips.
These original ones work good. I just didn’t want them in there.
Everyone says the PLA goes bad, and the SID chip gets damaged too. These are both good chips. So, I put in modern replacements and preserved the old ones.
Yay! Working Commodore 64 Computer!
Summary: Broken Trace Under a ram chip, Bad Kernel Rom, bad oscillator IC, random jumper.