Tom's return - retro C64 repair

Background

Last time, I started restoring two Commodore 64C units I had found in the attic, which I named Tom and Jerry. During the restoration, I managed to bring Jerry back to life, but unfortunately Tom remained non-functional. The issue was traced back to an electronics-related fault, most likely involving the cheap leaf-spring IC sockets that had been installed during a previous major repair.

At the time, I didn’t have a desoldering station, and I definitely wanted to avoid the more aggressive traditional desoldering methods in order to protect the PCB, so I set Tom aside.

However, a desoldering station, specifically a YIHUA 948, has since arrived, so I immediately got to work on the “life-saving operation.”

Warning! The experiments and repair methods described in this article are based on personal experience. If you choose to try them yourself, you do so entirely at your own risk. The author assumes no responsibility for any damage or malfunction that may occur.

Replacing the IC sockets

There were six leaf-spring IC sockets soldered into Tom’s board. These included the sockets for the U1 CIA, the two ROMs, the two DRAM chips, and the clock generator IC. All of these were the lower-quality type, so I definitely wanted to replace them with more reliable precision sockets.

The desoldering station did its job well - overall, the old sockets could be removed from the PCB quite easily, with only a tolerable amount of struggle in the case of one or two stubborn pins. But there was no mercy, the old sockets had to go.

After desoldering
Re-socketed with new precision ones

After desoldering, I used plenty of flux and desoldering braid to completely clean up the solder joints. After a final wipe with isopropyl alcohol, the PCB traces looked beautiful, almost factory-like. Soldering in the new sockets was then very easy with a bit of flux, and of course this was followed by another IPA cleaning, so the solder joints could really shine.

R101

During the desoldering process, I noticed that one leg of resistor R101 had an unusually large blob of solder on the solder side. It looked like a factory joint, so I initially assumed it was just accidental. Still, it didn’t look right, this could definitely be soldered more cleanly, so I started removing the excess solder using the desoldering gun.

At that moment, the resistor leg suddenly moved far more than it should have, almost as if it wanted to fall out. That shouldn’t have been possible, since the other leg was still soldered in place. That’s when I realized the resistor was actually broken at its base.

In the C64, most passive components are mounted vertically, including most resistors, among them the 100-ohm R101.

The broken R101 resistor

I quickly checked the schematic to see what role resistor R101 plays, and that’s when it hit me. This resistor connects the CAS (Column Address Strobe) control signal of the DRAM chips to the CASRAM line of the U8 PLA chip. If this connection is broken, as it was in this case, it means the computer cannot address the memory at all, making it completely non-functional. At that moment, I was almost certain I had found the reason why Tom hadn’t started during my earlier attempts.

Replacing the missing ICs

As I mentioned in the previous article, Tom was most likely used as a donor machine, since several integrated circuits were missing, among them the two ROMs, the DRAM chips, and the SID chip. From my own stock, I was able to replace the two DRAMs with a pair of HY53C464LS-10 chips manufactured by Hyundai, and I also installed a SID chip from my collection.

Burned KERNAL/BASIC ROM

The KERNAL/BASIC ROM was replaced using a NEC D27128 EPROM. I dumped the contents of Jerry’s KERNAL ROM - which, in fact, was also a previously programmed EPROM - and then burned that image into the D27128.

For the missing character ROM, I temporarily “borrowed” one from Jerry so as not to delay progress. The C64 character ROM is a 2332-type IC, whose pinout is unfortunately not fully compatible with EPROMs of the same capacity. This means it’s not something that can be quickly reproduced for immediate use. I plan to write a separate post about this.

Naturally, Tom’s revival followed the same gradual approach as Jerry’s. First, I tested the clock generator and the RESET circuit without any other ICs installed. Then I inserted the MPU, VIC chip, the two CIA chips, the DRAMs, and the ROMs - all at once, but without the keyboard. After powering it on, to my great joy, Tom finally came to life.

Without the character ROM, a C64 displays a garbled or unreadable screen

Repairing the keyboard

I knew this wasn’t a complete victory yet. Without a working keyboard, success is only partial. As mentioned earlier, Tom’s keyboard was not functioning, some keys were completely unresponsive, some springs were missing, and it was clear that the keyboard had already been repaired or at least someone had attempted to fix it before.

By connecting Jerry’s keyboard, I was able to confirm that the CIA chip responsible for keyboard handling was working properly. At first, I thought a simple disassembly and thorough contact cleaning would solve everything. As it turned out, I was very wrong. Repairing Tom’s keyboard presented challenges I hadn’t even imagined.

The replacement springs for the missing keys arrived from China, so that issue was quickly resolved. I disassembled the keyboard, which involved removing a large number of screws and desoldering two wires from the SHIFT LOCK switch. After that, the keyboard could be fully taken apart.

The PCB is made of a phenolic (bakelite) material with gold-plated contact pads. These are electrically bridged by graphite-coated rubber pads attached to the spring-loaded key plungers. When a key is pressed, the resistance between the contacts is typically in the range of about 80–180 ohms; when released, it is effectively infinite (open circuit).

The keyboard PCB
Graphite-coated rubber contact

Over time, the electrical contact points can oxidize, which increases the resistance when a key is pressed. As a result, certain keys may stop working properly or require more force to actuate. The fix is relatively simple: the PCB should be cleaned with isopropyl alcohol, and the graphite rubber pads should be gently polished - for example, by rubbing them one by one on a sheet of A4 paper to remove surface oxidation.

I performed this cleaning on Tom’s keyboard, but some keys still didn’t work. Specifically: 5, 6, N, M, J, <, >, and I also noticed that the right SHIFT key behaved intermittently. This didn’t make much sense, since looking at the keyboard matrix, these keys are not directly related - you couldn’t say that an entire row or column had failed. There was no obvious pattern.

Keyboard matrix

The behavior was inconsistent and illogical. Sometimes the 5 and 6 keys worked, then they didn’t. The right SHIFT key also worked intermittently. At one point I noticed that the right SHIFT worked after every power-on, but after pressing keys for a while, it stopped working. That’s abnormal, it shouldn’t happen, so my suspicion immediately shifted to the CIA chip. I replaced the CIA, and the right SHIFT anomaly (and likely a few other issues) disappeared permanently. However, not all keyboard problems were resolved; for example, the 5 and 6 keys still didn’t work.

The new CIA chip

Using a multimeter, I measured the entire keyboard matrix, trying to identify which keys had open circuits and which had increased resistance. I found a few keys where the measured resistance when pressed was in the hundreds of kilo-ohms or even mega-ohms. There were four such keys. I removed them, polished their rubber pads again, and as a last attempt - after yet another IPA cleaning - I took out a small polishing tool and polished all the gold-plated contacts on the keyboard PCB.

Polishing the contact pads

And then success. After partially reassembling the keyboard, all keys worked. By “partially” I mean I only installed five screws instead of all of them. This detail would soon become important.

Phenolic (bakelite) PCB, lots of screws

After a lot of struggle and trial and error, I happily screwed everything back together, installed Tom’s PCB and keyboard into the case, and powered it on - now believing it to be fully functional - when the unexpected disappointment came: the 5 and 6 keys stopped working again.

By this point, I had lost count of how many times I had disassembled and reassembled the keyboard. So I took it apart yet again. With only the bare PCB in front of me, I used a wire to short the contacts - there you go, 0 ohms! And then came the surprise: the 5 and 6 keys still didn’t work even when I directly shorted their contacts.

That’s when it clicked: there must be a broken trace somewhere, one that sometimes makes contact and sometimes doesn’t. The multimeter confirmed it: the trace for column C was not properly connected to the contact points for the 5 and 6 keys.

Location of the hairline crack

I grabbed the microscope and started following that rather winding trace from the column connection point to the keys. I examined it for a long time but saw nothing, no visible damage, no obvious issue. I could even see slight under-etching from the manufacturing process along the edges of the traces. Still, measurements don’t lie.

So I began carefully scraping away the solder mask section by section with a screwdriver, measuring along the way to find the fault. The signal disappeared near a trace that runs around a mounting hole for one of the screws. Visually, there was still no sign of damage, but at that point it was clear that the copper trace underneath the solder mask was broken.

I scraped away the mask over a larger section and re-tinned the trace with solder. At that moment, everything became clear: the intermittent behavior of the 5 and 6 keys depended on whether the nearby mounting screw was tightened, and how tightly.

Phew....

In summary, the keyboard issues were caused by multiple overlapping problems:

  • Unstable operation / failure of the CIA chip responsible for keyboard handling
  • Heavily oxidized contacts
  • A mysterious, hard-to-detect, intermittently failing broken trace on the keyboard PCB

Conclusion

It feels great that just a few weeks after unexpectedly coming across Tom and Jerry in the attic, I can now welcome two fully restored and perfectly working Commodore 64C machines. It would have been a shame to lose them.

Tom’s repair required the following:

  • All IC sockets were replaced with precision ones, which also helps prevent future oxidation-related issues as part of the restoration.
  • There was a broken resistor that was visually almost impossible to detect because it was mounted vertically and supported itself, making the fault hard to notice. Previously, I made the mistake of not checking the CAS signal directly on pin 16 of the DRAMs with an oscilloscope, only on pin 22 of the PLA chip. It will probably never be known when or why the resistor broke, but it was certainly a rare case.
  • The CIA chip responsible for keyboard handling was also faulty and had to be replaced.
  • The keyboard repair was by far the most challenging part, involving multiple difficult-to-diagnose issues.
In the meantime, I also figured out how to load programs - such as diagnostic tools - from external sources into both C64s using a completely custom (and creative) solution. I’ll write about that in detail in a future post.

So now the boys are here, alive and kicking once again.
Let the games begin! 🎮

Pac-Man 1982
Invaders - 1980

Comments

Popular Posts