[ijsf] recently came across a very old synthesizer from a defunct West German company. This was one of the first wavetable synths available, and it’s exceptionally rare. Being so rare, there isn’t much documentation on the machine. In an attempt at reverse engineering, [ijsf] decided to dump the EPROMs and take a peek at what made this synth work. There wasn’t an EPROM programmer around to dump the data, but [ijsf] did have a few ARM boards around. It turns out building a 27-series PROM dumper is pretty easy, giving [ijsf] an easy way to dig into the code on this machine.
The old EPROMs in this machine have 5v logic, so [ijsf] needed to find a board that had a ton of IOs and 5v tolerant inputs. He found the LPC2148, which has a nice USB system that can be programmed to dump the contents of a PROM over serial. Interfacing the PROM is as simple as connecting the power and ground, the address lines, data, and the signal lines. After that, it’s just a matter of stepping through every address according to the timing requirements of the PROM. All the data was dumped over a serial interface, and in just a few seconds, [ijsf] had 32768 bytes of ancient data that made this old synth tick.
I’ve done essentially the same sort of thing for dumping the ROMs from old Midland commercial radios so they can be reprogrammed to amateur radio frequencies. This is a great sort of task for an Arduino to accomplish.
https://trmm.net/PROMdate if you’ve got a Teensy++ and big ZIF socket lying around.
dont even need the zif. I have used header sockets on a perf board. Luckily I do this enough that buying a usb eeprom/prom programmer is cheap and trivial.
Made money with it by copying a performance chip for a 1980’s Grand National for a friend.
I’ve done this numerous times myself using an arduino — they are cheap, 5v ready, and the dump routine takes a dozen lines of code. I’ve had the situation where there aren’t enough I/Os to drive all the address pins and read all the data pins in one go, so I’ve used a 595 shift register to turn two arduino I/Os into 8 or 16 address bits. The only tricky part is that older ROMs and EPROMs often require multiple voltage supplies.
The trickiest ROM dump I did was getting the contents of a soldered down character generator PROM from a compucolor II. I didn’t want to risk damaging things by unsoldering it. Instead I attached an old HP logic analyzer to the character and row inputs and the row (dot) outputs. A BASIC program running on the Compucolor displayed all the characters on screen at once. An HP87 (!) was used to for its HPIB interface to repeatedly trigger the logic analyzer, collect the data, and repeat until I had captured all locations (doing it that way was a bit easier than reprogramming it to trigger on each specific character). The HP-87 then sent the collected data over an rs-232 port to a PC. That data is now part of an emulator that I have online:
http://compucolor.org/emu/ccemu.html
MiniPRO works good, not to minimize his accomplishment
Yup, amazing and very cheap programmer that can read and program almost anything you put in it, my recommendation for all makers/hackers.
I also like this guy’s hack, making your own dumper/programmer is usualy a lot quicker than waiting for an ebay package.
what, he didnt even:
http://www.youtube.com/watch?v=jSZwtrnKxf4
??
everyone knows you need to desolder eprom _socket_ before pulling eprom from the socket! and read every byte out loud while it sits in the eprom programmer!
Advancing the address with a TRS-80 and reading out the data with LEDs that aren’t available for another 15 years.
The above clip from the ludicrous show halt and catch fire is an example why I stopped watching the dumb show after 2 episodes. They said 1101 is “B”, NOT “D”, they unsoldered an IC but show the BIOS IC being removed from a socket.
The show had a character of a punk hacker chick, when there isn’t even one notable female hacker of that era that I can think of.
PC over Reality doesn’t enhance HCF reputation.
At 2:06 see them say 1101 is “B”, NOT “D”,
Actually 1011 is B, so maybe they just got the endianness wrong…
Be careful or that mighty fedora could fall off and hurt someone. It’s a fictional TV show, relax.
>even one notable female hacker
not cool man, not cool. Conway, Wilson, Borg, at least one is a woman.
ssh, its more dramatic to the newbies.
Wow. I’m glad I haven’t wasted an entire hour on that show.
That’s not even a PC. It’s a PC/XT. The PC only had five slots which were spaced farther apart than on the PX/XT – which set the standard that all PC clones use to this day.
All addresses are sequential. If you use a counter IC, you only need 2 outputs and 8 inputs on the controller. And if you only want to read one EPROM you could reduce the number of outputs to one and use the reset line to reset the counter.
+1 for this. I was just about to write the same.
In fact, this was used even in commercial products. Namely in Psion 2 Organizer (in Datapaks).
I did something similar with wide shift register in CPLD. It’s four pins – DataOut, DataIn, Clock, Load.
There are some local versions.
Here’s my take on an EPROM/FLASH reader / programmer (I haven’t finished the code).
https://hackaday.io/project/6275-quick-and-dirty-parallel-flash-programmer
https://cdn.hackaday.io/images/4701811434191185720.jpg
Another I have seen (Code completed) –
https://hackaday.io/project/5233-z80-computer/log/17312-flash-programmer
damnit, this is just proof that the longer you wait to finish a project, the higher the odds are of someone finishing it first.
I don’t know if these are really a project. Usually they’re just a problem to be solved along the way. I made two. The first used an Arduino Uno buscause it was handy and also a CPLD chip as the Uno didn’t have enough pins. The second used a Mega and did away with the CPLD.
Also – I love your CMS (Apache?) much.
Same as my “82s129 Arduino rom reader”, here on Hackaday
Link, or it didn’t happen!
More seriously, I did look but couldn’t find it. A link would be appreciated.
The (digital) Wersi devices (they built electric/electronic organs since the late 1960s, which were analog devices in the beginning) used quite complex hardware – the MK1, like many of Wersi’s electronic organs, used a pair of 6809 CPUs running on alternate clock phases as main CPU. This exploited a specific feature of the 68xx (and 65xx) CPUs which only accessed the external bus in the second half of a clock cycle. Wersi used a regular 6809 combined with a 6809E (with external clock input) running on the inverted clock of the first 6809. This way, both CPUs did not interfere when accessing shared memory or peripheral ICs (but you needed some quite fast memories). Each voice usually used a Z8 microcontroller – reading the Z8’s ROM will prove to be a more complex task. Btw., later Wersi systems (such as the Pegasus synthesizer) used multiple Transputers, they even developed their own distributed real-time OS.
Interesting and glad you shared. I always enjoy reading about the clever ways the engineers got around limitations of the time. I am also not familiar with Wersi so I learned a lot today :) Now to dive back into the internet rabbithole of tabs… Thanks again :)
The clock scheme was also used by Motorola in one of their app notes to do DMA interleaved with normal CPU operation.
Hey there, I’d be interested in reading that appnote if you happen to read this and remember which one it was.
Hello! Here is the link:
http://hackaday.com/2011/05/18/arduino-arcade-rom-dumper/
Thanks Enzo.
It hurts me to see the chip with the window uncovered. They tend to selferase under just office fluorescent lights (though it takes few weeks, but why take chance at corruption?) or sun outside.
I was thinking the same thing. anyone that has dealt with a PROM should know better then to uncover the window unless you plan on erasing the chip.
I was under the impression that EPROM bits rot over time (like 30 years) even with the window covered.
Inreresting factoid: this can also be used to resurrect old pinball machines and desktop games from their grisly fate.
The chips go bad due to entropy and radiation in the glass over time.
I have been known to “fix” these by cloning the bad chip (don’t ask, NDA) and then hand-tweaking the bad bits until it works.
Hint: Checksum !