Close
0%
0%

PicoRAM Ultimate

SRAM Emulator and SD Card Interface for Vintage Single Board Computers (such as the Heathkit ET-3400, Lab-Volt 6502, and Microprofessor)

Similar projects worth following
PicoRAM Ultimate is the ultimate storage solution for single board computers (SBCs) / CPU trainers from the 70s and 80s. It emulates: - up to 4 2112 SRAM chips: it replaces the 512 bytes of stock SRAM in the Heathkit ET-3400; alternatively, - a 2 KB memory expansion for the Heathkit ET-3400 (with expansion header installed), - a single 6116 2 KB SRAM (e.g., for the Multitech Microprofessor MPF-1 / 1B / 1P), - up to 4 2114 SRAM chips (e.g., for the Lab-Volt 6502 and Philips MasterLab MC6400 CPU trainers). Using the built-in SD card interface, PicoRAM Ultimate allows you to save and load full memory dumps (including programs and data) to and from SD card, hence, rendering the cassette interfaces of these SBCs obsolete (if they even came with one; i.e., the ET-3400 required an extra memory expansion + IO box for the cassette interface, and the Lab-Volt 6502 doesn't come with one either).

Supported 

Supported machines (as of June 2025):



  • Multitech Microprofessor MPF-1, -1B, -1P (Z80) 
  • Heathkit ET-3400 (MC6800) 
  • Lab-Volt 6502 Trainer (6502) 
  • Philips MasterLab MC6400 (SC/MP III = INS8070) 
  • Busch Microtronic (well, kind of - this is really a bigger beast, see PicoRAM 2090)

2112 Emulation for the stock, unexpanded Heathkit ET-3400 (4x 2112 SRAMs = 512 bytes): 


Heathkit ET-3400 Memory Expansion Mode (2 KBs of 2112 memory; requires extra GAL 16V8 as an address decoder): 


6116 Emulation (Microprofessor MPF-1B with 2 KBs of 6116 SRAMs; also see PicoRAM 6116): 


2114 Emulation (Lab-Volt 6502 CPU Trainer with 2x 2114 SRAMs, 1 KB): 


Last supported machine - the Philips MasterLab MC6400 (2x 2114 SRAM, 1 KB), a SC/MP III (INS8070) trainer from ~1985:



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.

PicoRAM Heathkit

Currently supported SBCs / host machines are:

  • Stock Heathkit ET-3400 (not ET-3400a): MC6800 CPU, either 2x 2112 (512 Bytes) or 4x 2112 (1 KB)
  • Heathkit ET-3400 memory expansion mode: MC6800 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.

Overview

PicoRAM Ultimate is powered directly from the host machine; i.e., via the 5V and GND SRAM socket power pins.

To emulate SRAM, PicoRAM needs memory addresses, the 8bit data bus, as well as chip select and write enable signals. These are provided from either the 2112 sockets, the 2114 sockets, the 6116 socket, or the Heathkit expansion header.

The pinouts of these vintage SRAM chips can be found here:

2112 Chip

2114 Chip

6116 Pinout

The specs of these vintage SRAM chips are:

  • 2112: 256 x 4 bits
  • 2114: 1024 x 4 bits
  • 6116: 2048 x 8 bits

Whereas the primary mode of operation is to simply use ribbon cables connecting PicoRAM to the host machine's SRAM sockets, there is also an extension header option on the PicoRAM PCB that allows to neatly and directly connect PicoRAM to the Heathkit ET-3400. In this case, the address and data bus as well as the control signals are not supplied via the SRAM chip sockets, but over the expansion header. A dedicated address decoder is used in this case (GAL16V8).

PicoRAM generates a READY/BUSY/HALT signal for the CPU in order to suspend CPU operation while it cannot serve the RAM content (i.e., during file or UI operations). Power (VCC = 5V and GND) is fed in from the sockets and connectors as well (i.e., whatever socket / connector is being used to connect to the host machine supplies power to PicoRAM).

PicoRAM has a convenient OLED-based UI. The hexadecimal ASCII-based file representation of the memory content and FAT32 file system facilitates editing and exchange of memory dumps (programs and data) with a PC or Mac.

PicoRAM also offers an auto-load function - programs can be loaded automatically into the host machine when it powers up (as if these were EPROM-based programs).

A number of jumpers must be set to match the host machine. These jumper settings can be found on the PCB as well:

Jumper Settings

Features

  • Supports multiple host machines: ET-3400, Lab-Volt 6502, Microprofessor MPF-1 series, and Philips MasterLab MC6400.

  • Convenient PicoRAM configuration: PicoRAM has one...

Read more »

picoram_ultimate.uf2

PicoRAM Ultimate Firmware Version 1.2

uf2 - 152.50 kB - 06/22/2025 at 19:49

Download

et3400_decoder_16v8_gal.jed

GAL 16V8 JED File

jed - 618.00 bytes - 06/22/2025 at 19:49

Download

  • My first MC6800 program - Towers of Hanoi on the Heathkit!

    Michael Wessel06/28/2025 at 13:38 0 comments

    Well, that was a bit of work to get that running... getting to know the side effects of the built-in firmware / monitor routines for driving the keyboard and display are always a bit of work! I almost went insane yesterday when sequences of `PSHA`, `PSHB` and ` PULB` and `PULA` op-codes consistently "transmuted" into `PSHA`, `PSHA` and `PULB`, `PULB`, and only when actually *running* the code... turns out there was still something slightly off with PicoRAM's timing, that oddly only showed up when accessing the stack. At first I suspected that there was something wrong with the assembler, ASM80.org, or that push/pull are only supported for the `A` accumulator, and that the MC6800 "would correct" these op-code "on the flx". I then replaced PicoRAM with the original 2112 SRAMs, and saw that the problem went away too - ops! After 2 hours of PicoRAM debugging I found that I needed to remove a few `NOP`s... and, problem fxed! There is a new firmware version, 1.3: https://github.com/lambdamikel/picoram-ultimate/blob/main/firmware/v1.3/picoram_ultimate.uf2 

    Anyhow, after I understood how indexed addressing from the stack using `TSX` and `LDAA <offset>, X` works, I got it running - my first MC6800 assembly program. Thanks again to ASM80.org for hosting a very useful tool online. Here is the code, which might be instructive for anyhow trying to learn how utilize the ET-3400's built-in monitor / firmware ROM routines for their own programs:

    https://github.com/lambdamikel/picoram-ultimate/blob/main/software/et-3400/HANOI.A68

    I also uploaded the programs to the ET-3400 Google IO group here: 
    https://groups.io/g/ET-3400/files/9.%20Sample%20Programs/Towers%20of%20Hanoi%20Assembly%20and%20Hex

    And, a video too - enjoy! 

  • New programs for the Lab-Volt 6502 CPU Trainer - Towers of Hanoi!

    Michael Wessel06/23/2025 at 23:41 0 comments

    I ported the 6502-version of the Towers of Hanoi from 
    https://rosettacode.org/wiki/Towers_of_Hanoi
    to the Lab-Volt trainer. 

    It was fun to study the manual and learn how to use the firmware routines for input & output! My HANOI.RAM program can be found on the PicoRAM Ultimate GitHub, as well as the ".a65" assembly source code:
    https://github.com/lambdamikel/picoram-ultimate 

    I am also briefly showing two other programs that I found in the Lab-Volt course book; one IO LED PIA test, and a program that adds two numbers and displays the result. These programs are also in the GitHub repo. Enjoy!

  • New Firmware v1.2 Passes LabVolt RAM Test!

    Michael Wessel06/22/2025 at 19:48 0 comments

    I just learned (from reading the manual) that the LabVolt trainer comes with a built-in RAM test in ROM. So I tried it - and PicoRAM failed :-( Only "pages" `0x02` and `0x03` are user RAM on the LabVolt; page `0x00` is obviously the infamous 6502 Zero Page, and `0x04` is memory-mapped IO / hardware, specifically, the PIA sits there. As you know, in 6502 speak, a page corresponds to the high nibble of the 16 bit address, and hence, each page has 256 bytes. 

    To start the RAM test, you write the start page (`0x02`) into memory cell `0x0000`, and the end page (`0x03`) to `0x0001`. Then you start the program from the ROM address `0xF6B1`. The program then goes through all the test patterns (bytes  `0x00` to `0xFF`) and writes and reads back every memory cell in all pages (inclusive and) between start- and end-page; here, from `0x0200`  to ` 0x03FF`, 512 bytes of user RAM. 

    This test *failed* at first, and it failed quickly! It is surprising that the machine was working at all with the LabVOLT... I hence tweaked the firmware a bit by introducing two more `NOP`s when reading the address from the latches, and played with some GPIO settings. After a bit of back and forth, the RAM test finally succeeded! 

    The firmware version 1.2 has been uploaded to the GitHub repo.

  • Firmware Update and PicoRAM Ultimate Galore!

    Michael Wessel06/21/2025 at 16:10 0 comments

    I fixed a slight firmware stability problem with the Microprofessor. The `CLOCK.RAM` program is a good stability test. It runs for hours now without any glitch / crash, so I am assuming that this problem has been fixed. At first I though it was due to noise or requiring 74F373 instead of the 74LS373, but these were red herrings. In the end, the GPIO slew rate and drive strength, as well as the hysteresis config were causing the problem. Fixed in Version 1.1 of the firmware now. And here is video showing all the machines with the new firmware:

  • GitHub repo online!

    Michael Wessel06/15/2025 at 18:47 0 comments
  • PicoRAM Ultimate 2nd PCB Revision Working!

    Michael Wessel06/11/2025 at 15:25 0 comments

    It just arrived yesterday evening, and I got up early this morning to check it out. It takes about one hour to assemble. A good stability test is the clock program for the microprofessor; if this runs stable for minutes, then everything is good wrt. timing and such. Passed! 


  • Another Game on the Philips MC6400 - Guess the Number!

    Michael Wessel06/11/2025 at 15:23 0 comments

    Surprisingly interesting: 

  • Load the NIM Game from SD Card

    Michael Wessel06/07/2025 at 13:34 0 comments

    I own the MC6400 for a while by now, but never did anything serious with it. Yesterday I typed in the NIM Game from the manual; given that that takes 20+ minutes I never dared to do that before given the lack of reliable storage. This has changed with PicoRAM now. The program is also on the program audio cassette that came with the machine, but I wasn’t able to load any of the programs from the 40+ year cassette. Really enjoying it now.

  • PicoRAM Ultimate and the Philips MasterLab MC6400

    Michael Wessel06/05/2025 at 14:57 0 comments

    PicoRAM Ultimate replaces the 1 KB (2x 2114) of SRAM in this SC/MP III (INS8070)-based machine from ~1985. PicoRAM facilitates dump and restore of full memory dumps to and from SD card. We are loading - and running - a simple 1digit hex counter demo program from the manual here.

  • Final PCB in production...

    Michael Wessel06/04/2025 at 03:22 0 comments

View all 16 project logs

Enjoy this project?

Share

Discussions

dmilholen wrote 06/24/2025 at 13:20 point

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. 

  Are you sure? yes | no

dmilholen wrote 06/18/2025 at 19:04 point

Jetzt sprichst du meine Sprache!

I love these old 8bit microprocessors and all the modern integration that can be done. I have been working with electronics and computers since 1980. I have degrees in industrial automation and tons of certs for telecom and networking but this is one of my favorite hobbies working in the shop repairing 80's arcade PCBs watching them come to life. I learned how to write machine code on the ET3400 back in the 90's :) I joined this just to be able to post and let you know how impressive you did on this project. When I get the time I want to build this and give it a try on my trainer. I also want to expand on this further using arduino and nucleo products. 

Dave

  Are you sure? yes | no

Michael Wessel wrote 06/19/2025 at 01:25 point

Thanks Dave, that means a lot to me from someone like you who worked in the field since its infancy! Happy to collaborate on any further developments on that  - let me know how it goes when you get to it. Until then, cheers, Michael 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates