Programming Arduino in C++11 — ROM dumping

Summary of Programming Arduino in C++11 — ROM dumping


This video tutorial demonstrates programming an Arduino Atmega2560 in C++11 to dump ROM chips like 386sx BIOS or Famicom cartridge ROM, including creating a ZMODEM sender and LED blinker. The author discusses using specific EPROM pinouts and adapting pins for NES ROMs. The Arduino clone and accessories were purchased via Adafruit. The development environment runs on Debian GNU/Linux with arduino-mk and modified Makefile settings for C++11 support. A custom desktop environment overlay was used in video editing for clarity.

Parts used in the Arduino Atmega2560 ROM Dumper Project:

  • Arduino Atmega2560 board (clone)
  • Breadboard
  • Jumper wires
  • Resistors (for LED)
  • Three-color LED
  • EPROM chip (e.g., 27C512 or NES ROM cartridge)
  • Optional external shift register microchip (74LS595) for smaller Arduino boards

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:
http://www.adafruit.com/category/17
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:
http://www.adafruit.com/category/17
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:
http://bisqwit.iki.fi/dx/p/135046

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.


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top