
NYC Resistor member Adam Mayer just posted this fantastic guide to reading the data off of old EPROM chips. To grab the data, you’ll need an Arduino Mega (or a microcontroller with 24 I/O pins), jumper cables, breadboard, and of course an EPROM to read. Adam also suggests having a fair bit of wits, though he says “unless you’re exceptionally addled you should be fine.”
But what kind of data can you expect to find in these digital time capsules? “The bulk of the ROM probably contains binary instructions, but anything could be in there—images, fonts, screed, mysteries,” he says. Adam also offers plenty of suggestions for how to interpret the data you might find and shows how he uncovered Hebrew and English glyphs inside one of the chips. So if you’re interested in uncovering some of the data that could be stored in your old electronics devices, check out his detailed writeup and let us know what you find!
26 thoughts on “How-To: Read a ROM”
Comments are closed.
Please change the title, it’s a big difference between ROM and EEPROM…
Thanks.
And there’s a big difference between an EPROM (like the one in the picture) and an EEPROM.
I had cause to do this the other day, in an endeavor to resurrect some late 70’s electronics I found on the street (serendipitously I had read Adam’s previous article a few days prior). My Arduino Mega being otherwise engaged, I ended up using two Arduinos – the first ‘requesting’ addresses from the EEPROMs and the second reading them (in addition, an output pin from the first was connected to an input pin on the second to signal that the EEPROM address had been set and that now might be a good time to read its output value).
I note that some EEPROMs have output hold functionality (which will hold the output pins for reading for a period after the address pins have changed). Leveraging this with a liberal sprinkling of pinMode() would presumably allow EEPROM reading with yer bog standard Arduino. I suppose it wouldn’t be rocket science to achieve the same effect with some latches. First person to make a prom dumping shield with some kind of ZIF socket gets all the points. And some of my money.
The found electronics are still dead, but watching long forgotten strings from the 70s clocking into the serial monitor window of the Arduino IDE was mesmerising.
I had been working on one a while back, I’ll have to get it polished off and sent out for prototyping, then ;)
This could also be utilized to read older automotive EPROMS and possibly play with the engine control maps. Very cool hack and thanks for sharing it!
“But what kind of data can you expect to find in these digital time capsules?”
I used a programmer to read the contents of some EPROMS in SMPTE timecode clocks (TV stations use them extensively). The clocks are driven from a master clock and have hands like an analog clock. Each hand had a stepper motor. The motors started going bad and the manufacturer said we had to send the bulky, fragile clocks back for repair. By comparing different clock’s memory contents I found the calibration values for the hands. By altering the values and measuring the results I was able to repair the clocks myself. The manufacturer’s techs said that my method was a lot easier than the complicated calibration setup which the factory used.
If you want to try this on a microcontroller board with fewer I/O pins, a good way to do it would be to use some shift registers. Something like a pair of 74HC595 chips could be used to generate addresses, while a parallel-in-serial-out chip like the 74HC165 could be used to serialise the output byte.
[…] the piece How-To: Read a ROM, Chris Whittington says: “But what kind of data can you expect to find in these digital time […]
[…] uncovered a series of photos stored in the ROM of an old Macintosh SE. We’ve previously covered the ROM dumping that’s been going on the Brooklyn-based hackerspace and it looks like they’ve uncovered quite an easter egg. While […]
[…] blog posts on the hackerspace’s site — most recently he delved into the topic of ROM dumping. This installment he covers another retro topic, hacking vector displays like oscilloscopes. Vector […]
[…] and lengthy blog posts on the hackerspace’s site — most recently he delved into the topic of ROM dumping. This installment he covers another retro topic, hacking vector displays like […]
[…] and lengthy blog posts on the hackerspace’s site — most recently he delved into the topic of ROM dumping. This installment he covers another retro topic, hacking vector displays like oscilloscopes. Vector […]
I read the article the person wrote.. Only minor OOPS, was assigning the address byte, as A0.. (note, A0 in Arduino code refers to Analog 0′) I simply did a quick global change to AD0..) Also, the project is for the older, Multi-line address chips.. Hence the requirement of the MEGA. (not sure if the 1620(##?) would handle it, but it definitely works on a 2560!) I imagine, wiring for the various chips (from 2708 up to 27512) are easy to find on the net. Note, ANY line listed with a line above the function, (I.E. CE (Chip Enable) OE (Output Enable) PGM (Program)) need to be Logic-0’ed (pulled low to GND) to function. I imagine, with a few extra components, (a 27V supply, a relay (sorry, I would not trust a solid-state.. too much change of frying things!), additional digital pins on the MEGA) a EPROM burner is possible.. You already have the base program the person wrote, Adding in “HOT” (setting the burn supply on), near the beginning, pulling PGM down for a certain time in ‘ms’, then reading to confirm. I wonder, if a UV LED would be strong enough for erasing? (consider, the regular erasers use a non-filtered (no purple) mercury vapor tube..)