Cheap and cheerful DRAM tester

While working on my Commodore PET 4032 I had a strange problem where it started chirping like it normally does in the boot up sequence and then crashed with some extra characters on the screen. There it sat, and when I rebooted it would make some terrible sorrowful beeping not at all like it was supposed to make and it hung. The issue was very quickly found with the Commodore PET RAM/ROM board. I installed it, switched to using all possible resources from that board and it booted well. Systematically turning things off I found the issue to be in the first 16k of RAM. According to the (almost my board) schematics that meant every odd numbered ram chip.

Given that each chip is supplying one of the bits to the entire 16k bank I didn’t know which chip it was. I removed the one socketed low RAM chip to prove to myself that I had the right bank and sure enough the computer started up fine with the RAM bank replaced with the red board, but failed to boot otherwise. It is important to note that if I had removed a chip from the wrong bank the commodore would also have booted, but it would only show 16k of RAM because one of the bits from the high bank would be missing. I did things in the wrong order and while I waited for some parts for my DRAM tester I removed and socketed all the low ram chips. This did not go smoothly. On my board the chips that had been soldered down had their legs clipped so they do not insert well into machine pin sockets, but interestingly enough they work fine in double wipe sockets. I had just ensured that I would be replacing the entire bank with new ram chips and saving the working 4116s for repairs elsewhere.

Now on to the actual tester. My full BoM is an arduino pro mini, a 5v-to-12v step up converter, a 5v-to-negative5v converter, some LEDs, sockets, jumpers, and wire. With the two voltage modules selected and tweaked in (they come with potentiometers, be careful as the output seems related to the input so it’s scaling not regulating). I followed (mostly) the schematic laid out here for a 41256 ram tester. It also has a jumper that allows you to test 4164 chips (which I need) so I decided to start there. The code I wrote is pulled from him as well, but I made a few modifications for my needs. I changed the LEDs to be active high because I had already soldered them that way before I looked at the code. I moved the LEDs down one and added a second mode bit so I can now test for 4116 chips as well. I also bumped the baud rate up because I usually run 115,200 on my stuff. That’s it, the code seems to wok really well and scaled down to 4116s without complaining one bit. The hardware configuration was a bit trickier.

I had first found this nice site explaining pinouts of various 16 pin DRAM chips and how to substitute newer ones for older ones. It seems that the 41256 and the 4164 are identical except pin 1 is not used on the maller module and is another address line on the larger one. That is why the creator of the code I borrowed opted to do both, they’re very compatible. The 4116 is a little different. In addition to dropping another address line it adds two new voltages on the pins that are not used. We need to inject negative 5v on pin 1 (instead of an address line on the 256 and nothing on the 64) and put 12v on pin 8 which is where the other two draw their 5v from. The 4116 still uses 5v but it gets it from pin 9 which is where that last address line just disappeared from. This means we need a jumper at pin 1 to go between negative 5v and a data line, a jumper at pin 8 to go between 12v and 5v, and a jumper at pin 9 to go between a data line and 5v. That last one I went back and forth on. I could just output a high signal from the arduino and power the device under test from that logic signal directly, but looking at the datasheets for 4116 chips and knowing how power hungry old hardware can be I didn’t want to chance it.

I used colored 0.1″ header to remind me which lines were voltage and which were data. That will help in the future if I want to look at this device again without having to reference my documentation (which you are reading right now). Coincidentally I got a free power jack because my 5v to 12v converter has a micro usb port on it so I can run this without needing a bench supply or barrel jack.

Working once again (used but clipped 4116 chips seen to the left)

I elected not to cut or severely bend any pins on my 4164 chips because I didn’t need to. If I ever have spare 4116 chips and need to reclaim some 4164s from this PET I can do that with in the future.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: