Commodore 64 C RAM strange issue

Some days ago I’ve found a Commodore 64 C I didn’t even remember I had. After some cleaning, I did some testing and I realized that there was something wrong with RAMs. But it was a strange issue.

The Commodore 64 C uses two 61464 chips (my model has a 250469 board). Some Commodore 64 C may have older boards instead.

The computer seemed to work fine at the beginning, but it would crash on a particular situation. While running the game “Ping Pong” by Konami, if I turned off then back on again the machine, it would just not boot. One time I had the title screen still being showed even if I turned off then back on the machine.

I just had to wait about 3 or 4 minutes before the machine could boot properly.

Still, the RAM test with the dead test cartridge would show no problems. So, the chip seemed to be OK.

I nevertheless was likely to find a solution, and I tried to replace those RAM chips with some others I had.

wp_20161028_0031
RAM chips desoldered. I used a 30 W solder iron and the usual desoldering pump.

Commodore 64 250469 boards are a bit difficult to desolder. The solder here requires a higher temperature to melt than older boards. So, I used a 30 W solder iron. Furthermore, there are big copper areas that “steal” heat. On some pins I had to use the solder wick with extreme care, working on both sides of the board. It took me some effort, but I was eventually able to desolder the RAM chips intact. Of course, I installed sockets for the new RAM chips.

wp_20161028_0091
Sockets for RAM chips installed.

 

After replacing the chips, the problem disappeared.

Some RAM chips seem to be keeping their values for some seconds even if you turn the computer off. This fact prevents the system to boot when turned back on if a program has previously changed some system vectors before turning the machine off.

To my surprise, the desoldered “faulty” chips worked fine on a 250466 Commodore 64, showing no issue with the same Ping Pong game.

I had the very same problem with a Philps VG8020-40 MSX machine. It wasn’t able to boot for some minutes after turning off, then back on. The game Rambo was previously running. Again, those chips worked fine on the 250466 Commodore 64 board. I fixed the problem by replacing the 41464 RAM chips.

This issue sounds a bit strange to me. I think these machines were actually not damaged. My humble opinion is that on some boards, some 41464 chips may keep their content for many seconds after the computer is turned off. And higher locations keep their content for more time.

When I was a kid, I remember I was doing some experiments with graphics. I had coded a BASIC program that would change the character font. I set character RAM base at the location 12288 decimal. If I turned off than back on the machine quickly, if I entered the command to point to RAM for character shapes, I could still see my font intact. If I waited more before turning back on the machine, my custom font would show a bit corrupted. If waiting even more, my font was not viewable any more. I then realized my computer was able to preserve its data for some time even with no power.

And I remember sometimes my computer would not boot when turned back on after running some games.

My speculations are as follows: since system vectors are on high-ram, these may require some time to be canceled when the computer is turned off. As a result, if the RAM chips retain their values for too much time without power, the computer will not boot properly when turned back on.

I think the problem is more on software than hardware. Maybe the OS doesn’t reset all vectors properly and assumes some RAM locations are 0 or 255.

And I have also made the conclusion that this ability of preserving RAM values when power is off may vary depending on both RAM chips specifications and board revisions.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert