H89/H19 RunCPM modification

I purchased a non-functional but cosmetically good condition Heathkit H89 computer in 2022. The seller said that the unit produced sparks when powered on. During opening and inspection, several failed/blown Tantalum capacitors were found on the Terminal Logic Board, and the CPU Logic board had burned power traces. I chose to focus on repairing the Terminal Logic board first, as it can be used as an H19 Terminal without the CPU Logic board installed. After removing the CPU logic board and 5.25" disk drive, access to the Terminal Logic board was much easier.

After replacing the failed Tantalum capacitors, the terminal began functioning normally. However, repairs to the burned power traces and tantalums on the CPU Logic board did not yield a functional machine. I decided to look at a replacement "brain" for the computer. One of my goals for this project was to have a machine with solid-state storage, low power consumption compared to the original hardware, and the ability to run CP/M software. Instead of designing my own Z80-based computer board to go in the machine, I found the RunCPM project by Mockba the Borg, based on work from Marcelo Dantas and Krzysztof Klis. RunCPM runs on many modern inexpensive hardware platforms like Arduino, ESP32, and Teensy. After many difficulties getting it to work well with the ESP32, I selected the Adafruit Grand Central M4 Express board with its integrated micro SD card slot.

I found a 3D model from JJ Dasher on Thingiverse titled “Full Height 5.25" to single, dual 3.5" floppy & HDD adapters” and modified it to suit the project. I added a platform to hold the boards, along with some retro-styled impressions on the front panel and a slot for the SD card. Modifications were made to the model to conform to the dimensional requirements of the H89's drive bay.

Because this system will live inside of the H89 in the drive bay, a Molex to micro USB cable was made to source 5V power from the H89's power supply, and a pin-header to DE-9 cable was made to interface the RS-232 from the RunCPM board to the Terminal Logic Board. Note that the TTL serial signals from the Grand Central M4 Express could have been provided to the Terminal Logic board directly, but this likely would have required the removal of some original IC chips from the Terminal board, and I preferred to not remove any OEM parts from that board that might be needed again in the future.

The Grand Central board was secured in place by drilling holes in the plastic shelf of the drive bay insert and installing brass standoffs. The other boards like the SD extension were held in place with double sided tape pads, hot glue, or both. Wiring was accomplished using Dupont jumpers.

Materials used in the project:

I had a spare internal pin-header serial cable so I built a pin-header to DE-9 cable. The following pinout was used by testing for continuity:

DB9 Pin     H19/H89 Internal Serial Connection Wire Color
1 Grey
2 Red
3 Brown
4 Purple
5 Blue
6 Green
7 Orange
8 Yellow
9 No Connection

After downloading RunCPM, you can open the .ino file using the Arduino IDE. You must install the board support libraries and libraries for SdFat and other dependencies. You will have the change the board specified in the RunCPM.ino file to the hardware/arduino/gc.h setting. And although it is not required, I modified the drive activity pin to be pin 12 in the gc.h file so that the on-board LED would not drain extra power from the GPIO output pin, allowing more power to drive the external LED on the face of the drive bay insert.

Note that you also might have to comment out the clear screen function in arduino_abstraction.h at the end of the file. It seems that the H89/H19 does not like ANSI/VT52 codes because the ESC [ prefix will put the terminal in Scroll Hold mode where it will beep at you after a page of text has passed, and its very annoying.