What do you do if you want to dump the ROM in some equipment that is owned by someone else, who is happy to have their ROMs dumped, but who live in another country? they are probably not too happy sending things through the postal system as loss and damage is common these days.
To solve this problem (and also allow me to dump some of my own ROMs) i made a little gadget that can dump a ROM that is plugged into it. Plug in the ROM, power up the gadget and wait for an LED to flash and you are done. The gadget can be posted to whoever has the ROM, they plug the ROM in and turn the unit on. After the light flashes, the unit is sent back to the person who needs the ROM dump.
Here it is:
From the title of this post and the photo, it's obvious that this is based on the RP Pico. In fact, 'based on' is a bit of a loose term to describe this gadget, it is, in fact, almost only a Pico. there's a few resistors, and a socket for the ROM but that's it. The Pico does everything else.
This is designed to dump 24 pin ROMs. I did this as the Pico doesn't have many GPIOs and the ROMs I wanted to dump right now are all 24 pin. They are also a weird pinout (2332 and 2364 devices) and my device readers don't support them. Hence the gadget. There are also ROMs I'd like dumped elsewhere in the world so I added the remote dumping features to the code.
What is also obvious is that there are no level shifters on this circuit. The ROM is indeed a 5V device and is wired to the USB 5V supply. A while ago I read, somewhere on the internet, that the Pico GPIOs are actually, probably, 5V tolerant. This seemed like a good project to test that out on. If you have a gadget that is designed to run, well if not once, then a few times, and you are posting it around the world and maybe not even getting it back (deliberately or due to postal service), then why not see if the Pico is 5V tolerant? If it instantly isn't then I'll see that and design a new gadget with level shifters.
So, the address and control lines of the ROM are connected to the Pico, which drives them at 3V3 through small (15R) resistor. the data lines, however, are connected through 28K resistors to the Pico directly. The resistors are a trifle cowardly, but I did want a working ROM reader at least for a few minutes. The protection diodes in the Pico may clamp the signal as well, so this isn't a strong test of 5V tolerance, but it's a start. So far, the Pico I am using is fine.
The dumped ROM data is sent to the USB serial port and can be captured by a terminal emulator. For less technically minded ROM dumping, and to avoid terminal emulator setup woes, the gadget can be configured (using non-volatile storage) to dump and store the data in the flash of the Pico. The Pico can write to its own flash chip and use it as storage for things other than firmware. You have to run the code from RAM when doing this to avoid various problems.
the code sets up several slots, each 16K in flash that the ROM dumps are sent to. You plug the ROM in, turn the gadget on and the LED illuminates when the dump is running, then flashes when it is done. unplug USB and plug a second ROM in, attach USB again and a second dump will be performed and the data stored in the next flash slot. And so on. Then the gadget can be returned.
the device does not overwrite slots, but does dump ROM data to USB when in slot dumping mode. The USB data can be captured if needed, once the slots are full.
I've used this to dump some ROMs I wanted images for and it has worked well. There's more information in this video:
The code and PCB files are here:
https://github.com/blackjetrock/postal-pico-rom-reader