Note the raspberry pi I’m using to control the emulator over WiFi.Įmulator used to develop a “Monitor” firmware for my Z80 project.Īnother Z80 “computer” development process eased with the use of EPROM Emulator. Replacing EPROM inside a “test cartridge” for a Commodore 64, turns it into a “universal” cartridge that programs / utilities can be uploaded to. Let’s take a look at some examples of how I use the emulator. It was a good starting point for my implementation, but there is loads of scope for future “improvements”. I’m not strong in “C” programming, in fact the Arduino firmware was based on another project by fellow geek Natasza ( check out her memory loader project).
The “brain” of the emulator is Arduino Nano module, the sketch provided in the GitHub repository has most of the features I could think of already implemented.
The software that controls the emulator is written in Python (3.8) and so far, I have tested it on both Windows and Linux (raspbian) platform, but should also be compatible with MacOS, all basic features are already implemented, but since it’s all open source you can add any other feature you can think of. On the “other end” of we have a USB (mini in this case) socket allowing connection to host computer that will control the emulator.
The probe cable also has two “clips” carrying “reset” signals so you can restart the target platform once new code is uploaded to the emulator. On one end the Emulator has a IDC34 connector J1, where you can plug a DIP28 “probe”, this probe replaces your EPROM device. Let’s first have a look at the final result:
So I was motivated to create something similar to ERMAX 100, but based on modern microcontroller platform, open source, cross platform control software and free of annoying limitations of my old device (more on that later). I have been using it extensively recently and only just discovered a few really annoying “features” of that emulator. Those who follow my blog know that I already have a commercial EPROM emulator (see the ERMAX100 EPROM Emulator Revival post). Once you finish testing you can replace the emulator with EPROM chip programmed with the final version of your code. This is where the EPROM emulator comes handy, a device that can temporary “replace” your EPROM chip, it is controlled by a computer and can be reprogrammed in seconds. The entire process is extremely slow and has to be repeated every time you want to make even a small one bit change! And yes, there are modern EPROM alternatives based on Flash technology, that could save you the 20-30 min erase time, but the rest of the process is still the same and still annoyingly slow if you’re writing code and trying to “debug” it. That means, remove the EPROM from its host computer, subject it to 20-30min of UV light exposure, program it with EPROM programmer, re-install in host computer. Imagine you are developing software (well, firmware more likely) and you need to change the “program” in your EPROM memory. By its nature, this type of memory is “read only” and to change its content you need to erase it with UV light. So, what is the issue and why would one need an EPROM emulator. See below: Example of EPROM chip used in Commodore 64 “test” cartridge. Those EPROMS typically come as ICs in DIP28 package with a “window” in the middle used to “erase” the memory using UV light.
And when I say “computers” I refer to the 80s eight bit machines (Commodore, Amiga ZX Spectrum, Tandy etc.), but also other computer like devices, controllers etc. EPROM or Erasable Programmable Read- Only Memory is a type of programmable read-only memory that is used to store program in “computers”. Well, before I explain what an EPROM Emulator is, I should first explain what an EPROM is. I recently posted an article that shows how people ended up using the emulator, check it out there: EPROM emulator NG use cases.
As always, all source code and design documents are on my github page: EPROM-EMU-NG on GitHub