In this tool-assisted education video I show how to program an Arduino Atmega2560 board in C++11 to dump a ROM chip, such as a 386sx BIOS or a Famicom cartridge ROM. I also make a ZMODEM sender and a LED blinker in this video.
Sorry about the bad dub / lipsync in the beginning. I recorded that part in a very noisy room, using a bad microphone (internal to the camera), and in another language, so I had to dub it over in postprocess — which turned out to be considerably more difficult than I thought. Some year soon I might get a boom microphone for use in this kind of occasions.
Please feel free to post comments & ask any questions / clarifications in the video comments. I try to reply to everyone when applicable. Please exercise clarity, politeness and good grammar, if you expect those values in the replies.
The EPROM chip pinout reference I used: http://bisqwit.iki.fi/jutut/kuvat/pro…
In particular, the 27C512 diagram here is applicable. For the NES ROM, I changed the OE/Vpp pin into address bit 16 and the CE/PGM pin into address bit 17.
I bought my Arduino board (which is a clone actually) from DealExtreme:
Presently it costs only about 15 EUR including shipping.
The breadboard, the jumper wires and the resistors (for LED) are also from that shop. This pack includes all of those:
It also includes another Arduino board, but a smaller one (also clone) that does not have enough GPIO pins for ROM dumping, unless you use an external shifter microchip (such as 74LS595).
The three-color LED is:
The operating system where I run the compiler and uploaded the program is Debian GNU/Linux, and I installed “arduino-mk” (which automatically installs the dependent avr-libc, gcc-avr, binutils-avr and arduino-core packages).
I edited the /usr/share/arduino/Arduino.mk file, changing the = into += on the lines that contain “CFLAGS=” and “CXXFLAGS=”. Without this change, the C++11 option in my Makefile would be ignored.
The desktop environment shown in this video does not exist. It was created in postprocess to facilitate multi-file editing, which I have not previously used in my videos.