picoram-ultimate
A Raspberry Pi Pico (RP2040)-based SRAM Emulator and SD Card Interface for vintage Single Board Computers (SBCs).
About
PicoRAM Ultimate replaces some (or all) of the RAM chips of these systems by emulating them in software with a Raspberry Pi Pico (RP2040) microcontroller, slightly overclocked at 250 MHz. PicoRAM is equipped with an SD card to store and load whole memory dumps to and from SD card. These memory dump .RAM files are similar to Intel HEX ASCII format and can be edited easily by hand on the PC. The utilized FAT file system facilitates data / file exchange with the PC or Mac.
Currently supported SBCs / host machines are:
- Stock Heathkit ET-3400: MC6800 CPU, either 2x 2112 (512 Bytes) or 4x 2112 (1 KB)
- Stock Heathkit ET-3400A: MC6808 CPU, 2x 2114 (512 Bytes only!)
- Heathkit ET-3400 memory expansion mode: MC6800 CPU, 2 KBs via expansion header and additional GAL16V8 address decoder
- Heathkit ET-3400A memory expansion mode: MC6808 (or MC6802) CPU, 2 KBs via expansion header and additional GAL16V8 address decoder
- Multitech Microprofessor MPF-1, MPF-1B and MPF-1P: Z80 CPU, 1x 6116, 2 KBs
- Lab-Volt 6502: 6502 CPU, 2x 2114, 1 KB
- Philips MC6400 MasterLab: INS8070 SC/MP III CPU, 2x 2114, 1 KB
The development logs are on Hackaday.
This project is a follow-up to PicoRAM 2090 for the Busch Microtronic Computer System and PicoRAM 6116 for the Microprofessor MPF-1.
Video
This YouTube video shows most currently suported machines (with the exception of the MPF-1P):
Latest News
January 2026
- The Heathkit ET-3400A with expansion header is supported by now - firmware version 1.7 has been uploaded. This gives you 2 KBs of RAM.
Here is a YT video.
- The stock Heathkit ET-3400A is supported by now - firmware version 1.6 has been uploaded.
Here is a YT video.
- Unfortunately, the current version of PicoRAM Ultimate has a PCB bug: the position of the RE signal on the header is incorrect. Apologies for that.
You can see that in the schematics here:
When I wired up the IO header on my ET-3400, I flipped left and right and put it on pins 30 and 29 instead of 12 and 11, where they should have been.
I only noticed now, with my new ET-3400A, which already came with the RE signal wired up on the IO header (I only had to install the data lines), that the position didn't match. And indeed, the ET-3400A schematics lists the RE pin positions as follows - you see the difference:
There is an easy fix for this - don't use JP9, but a DuPont wire that runs directly into the breadboard RE signal, as shown in these pictures:
Eventually, I will create a new PCB version with this bug fix. But for now, the workaround is sufficient.
October 2025
During my RetroChallenge 2025/10 contribution, I encountered a pretty nasty issue which took me quite a while to debug and resolve. Mostly chasing red herrings.
My rotating 3D Cube was glitching, and it took me a long time to realize that this was caused by noisy ADC button decoding and inappropriate ADC level thresholds. The problem was that this happened without visual feedback in the UI, so I was unware of it. Now, for each detected button press, the SRAM emulation is halted; and also for spurious button presses that don't cause an UI action (the CANCEL2 button was responsible). Now, halting the SRAM emulation can only work properly if the Z80 WAIT signal is connected to PicoRAM, which I had not in this case. Sometimes, I simply hold the RESET button manually on the Microprofessor instead whilst operating PicoRAM. Obviously, you can't just halt SRAM emulation and not halt the CPU and expect it to run properly.
So, this problem was fixed by adjusting the ADC threshold levels in the ULTIMATE.INI file. However, I didn't like that the spurious button presses weren't reported and happened "silently", leaving me unaware of what was happening....
Michael Wessel




wilco2009
J.B. Langston
Erik Piehl
My issue is time I dont have.. I still have a day job. This is still my passion though and love to work in my shop every chance I get. I have a really awesome project I am working on involving both arduino atmega 2560 and the NUCLEO-H723ZG for an In Circuit Tester for 8 bit arcade pcbs to help diagnose and repair more quickly. It has been in my list of to-do for a very long time but each time I get started on it some better technology comes along to make it better and add more features.