The Microtronic Phoenix Computer System - A Microtronic Emulator Running the Original Firmware from 1981

Jason T. Jacques: TMS1xxx emulator, prototype hardware design and breadboarding, refined Microtronic firmware dumping, authentic Microtronic firmware emulator running the original Microtronic firmware ROM with a TMS1600 emulator

Decle: TMS1xxx firmware ROM dumping technology, TMS1xxx disassembler, expert technical advisor

Michael A. Wessel: Arduino-based re-implementation of the Microtronic, first round of Microtronic firmware dumping, PCB design, software integration

About

The Microtronic Phoenix represents a quantum leap in Microtronic emulation.

The Microtronic was an educational 4bit single-board computer system, which was released in 1981 by the company Busch Modellbau in West Germany:

Microtronic

Unlike previous hardware emulators of the 1981 Busch 2090 Microtronic Computer System, the Phoenix emulator is the first emulator that is not only a re-implementation of the Microtronic, but actually runs the original TMS1600 firmware from 1981.

This breakthrough was made possible by a collaboration of Decle, Jason T. Jacques and Michael Wessel, referred to as "the team" in the following.

Phoenix

This project is shared with the community to enable others to relive and experience the original 1981 Busch Microtronic Computer System in an as-authentic-as-possible way.

Latest News

Background & Genesis

The Microtronic is powered by a mask-programmed Texas Instruments 4bit microcontroller, the TMS1600.

Until now, an authentic Microtronic emulator was impossible as the official firmware had been lost to history, and there was no documented procedure for reading out ("dumping") a TMS1600 firmware ROM. Firmware ROMs of related TMS1xxx devices (e.g., the SIMON game, TI calculators, and the Science Fair Microcomputer Trainer) had been retrieved in the past, but the process usually involved destructive die-decapping.

More recently, an alternative to destructive chip decapping was discovered for dumping the ROM of the 1985 Radio Shack Science Fair Microcomputer Trainer. This process utilizes an Arduino for putting the TMS1xxx into the so-called test mode, which then allows download of the firmware ROM over a serial interface.

After a lot of trial-and-error, the team finally succeeded in April 2024 in retrieving the Microtronic firmware ROM, hence opening up the avenue of re-creating the original Microtronic on modern hardware. The process is described here and, much more detailed and technically accurate, here.

After Decle and Michael had succeeded in enabling the TMS1600 test mode (this process was nowhere documented on the Internet back then), and succeeded in downloading a first version of the Microtronic ROM, Jason then took the lead and analyzed and double checked it, corrected some errors by hand (despite all our efforts, the retrieved firmware still contained some ambiguity!), and, for the first time in history, created an ATmega-based breadboard Microtronic running the original firmware on his TMS1xxx emulator!

Jason's work of curating the firmware and his TMS1xxx Microtronic breadboard hardware emulator opened the avenue of recreating a retro-authentic new version of the Microtronic on modern hardware, running the original 1981 firmware ROM on a TMS1600 emulator on an Arduino / ATmega. We are hence calling this new Microtronic hardware emulator the Phoenix.

Phoenix Overview

The Phoenix board uses an ATmega 644P-20U clocked at 20 MHz, a 24LC256 EEPROM, and an 74LS244 in an abundance of pre-caution for connecting the ATmega's GPIOs to the external world of Microtronic INPUT / OUTPUT ports.

Phoenix Overview

The three different Phoenix firmwares are provided as Arduino folders / "sketches". See below for descriptions of these three different variants. The Arduino Legacy IDE IDE 1.8.19 in combination with MightyCore are used for firmware compilation and uploading onto the Phoenix board over the ISP header (see below).

One can either use an original 6digit 7segment (or really 8segment if we include the individual decimal dots for each digit) TIL 393-6 retro-authentic bubble LED display from Texas Instruments, or the NSA 1166 from National Semiconductors as shown in the above picture. As these are hard to come by, it is also possible to use a CL3061AG or SH3661AS modern LED display and an adapter (provided here as well):

Prototype with Display Adapter

Original Microtronic Firmware

The original Microtronic firmware can be found here.

The files are provided for reference and interest only, and are not required for programming the Phoenix firmware. The Phoenix firmware sketches are self-contained, and the Microtronic firmware ROM image is embedded on the code-level (instead of on the file level) in them.

Emulation Modes - NEO vs. PHOENIX

The Phoenix offers two Microtronic emulation modes:

The Phoenix is offered with three different firmwares:

Common Hardware Features

The Phoenix board offers a number of additional hardware features, in particular, an on-board buzzer, and 4 additional push buttons DIN1 to DIN4.

DIN Buttons

The original Microtronic came with a buzzer as well as two push button ("G" and "H") which, in many experiments, where connected to the digital inputs (DIN), and the buzzer was usually connected to either DOT Output 1 or 4, as shown in this picture:

Microtronic Console

The Phoenix board hence offers these on-board, for convenience (plus two extra-buttons, DIN3 and DIN4). The on-board buzzer can also be disconnected via the BUZZ DIP switch.

Moreover, both the Neo and Phoenix mode support the CPU speed buttons: emulation speed can be decreased (CPU-) and increased ( CPU+). The RESET button works in both firmwares as well:

CPU and Reset Buttons

Neo Mode

In Neo Mode, the hardware emulator has access to the additional hardware features on the board:

The Neo firmware contains the following PGM programs; these are:

Note that, on the original Microtronic and hence in Phoenix mode, PGM 0 performs a self-test, and PGM 1 and PGM 2 are used to access the 2095 Cassette Interface, which is currently not supported by the Phoenix board. Instead, PGM 1 and PGM 2 are used to access the EEPROM.

Moreover, there are no PGM demo programs 8 to F in Phoenix mode.

Phoenix Mode

In this mode the system behaves identical to the original Busch Microtronic, executing the original Microtronic firmware using Jason's TMS1600 emulator! Hence, the original Busch manuals are the best documentation. It is currently only available in German, but contemporary GenAI technology will likely have little problems translating it to English.

Note that the Phoenix runs ~ 30 to 40 % faster than the original Microtronic, but still significantly slower than in Neo mode at max speed.

The digital inputs and outputs are fully functional, and even the original PGM 1 and PGM 2 firmware ROM programs are working. They can be used for accessing the 2095 cassette interface emulator. Here is a video demonstrating operation of the original 2095 cassette interface, and a 2095 emulator tutorial by "Mein Elektronic Hobby" (in German) for first steps with PGM 1 and PGM 2.

Moreover, unlike the Neo version, the self-check PGM 0 firmware ROM program is functional, and can be used for checking proper operation of the system, see User Manual Vol. 1, pp. 5 - 6 (note that a test harness is required for PGM 0 operation).

Please note that the RESET button is supported, but the CPU-, CPU+, and BEEP buttons are non-functional in this mode. They only work in Neo mode.

Combined Mode

This should be considered the default firmware - it combines the features of the Neo and the original firmware.

In addition to the individual features of the Phoenix and Neo modes as just described, the combined mode realizes one more essential synergistic feature making this mode more than the sum of its individual modes: shared Microtronic program memory! In this way, the Phoenix mode can take advantage of the additional features of the Neo mode, like EEPROM access or additional PGM demo programs.

For example, to load a program from EEPROM into Phoenix, we would

  1. start in Neo mode, load a Microtronic program from EEPROM via PGM 1.
  2. switch to Phoenix mode: push RESET, enter 2.
  3. the same program is now available in Phoenix mode.

In general, all changes made to the current Microtronic program in memory will always be available to the other mode as well.

You can also load one of the additional demo PGMs easily into Phoenix mode.

  1. start in Neo mode, load a PGM ROM program, for example, "17Add4 Blackjack": HALT-PGM-F.
  2. switch to Phoenix mode: push RESET, enter 2.
  3. play Blackjack in Phoenix mode: HALT-NEXT-0-0-RUN.

The Phoenix Board

In principle, the Phoenix is a one-chip design - everything is driven by the ATmega 644P-20U, even the display. The 24LC256 EEPROM is optional; the machine will also work without it. The 74LS244 is used to electrically decouple the Microtronic inputs and outputs from the ATmega and make it more robust for experimentation in case an experiment goes awry. It is cheaper and easier to replace the 74LS244 than the ATmega.

Phoenix Power Supply Options

There are four options of powering the Phoenix board:

Power Supply Options

  1. With a 9V block battery. The power switch must be in ON position.

  2. With an external 9V to 15V DC power supply over the standard center-positive 2.5 mm power jack. A 0.5A supply is sufficient. The power switch must be in ON position.

  3. Over the VIN and GND rivet sockets. The power switch must be in ON position.

  4. Over the AVR ISP header. In this case, the power switch should be in OFF position!

ISP Power

For options 1 to 3, a 7805 voltage regulator is used to down-regulate the input voltage to the required 5V level.

Note that it is not necessary to remove the 9V battery from the Phoenix if another power supply option is used - a standard 1N4001 rectifier diode prevents all current flow (and hence "charging" attempts) into the 9V battery from the external power supply.

Phoenix VCC, VIN, and GND Outputs

For powering electronics experiments with Busch electronics kits and/or breadboards, the Phoenix board can supply 5V via VCC as well as 9V from the battery (or any voltage that the external power supply provides) via VIN. The power switch must be in ON position to access these voltages. Both VCC and VIN are available from rivet sockets as well as pin headers.

Power Output Options

Display & Flags

The 6digit 7segment LED display is the primary visual output channel of the Microtronic. It should be fitted with a red (or green) lens filter to enhance the contrast.

Left of the display are the CARRY and ZERO flags. Note that the CARRY LED will only function if the PROTect DIP switch is on ON position. However, the NEO mode can utilize the decimal dot of the third display digit from the right to visualize the CARRY flag as well.

Display

Inputs & Outputs

The Microtronic input and output ports are available in two form form factors: as pin headers for DuPont cables (breadboard friendly), and via classical Busch metal rivet sockets for the little yellow connector pegs:

Busch Experiments, Yellow Pegs

These are the Microtronic outputs (they are controlled via the DOT = Data Out op-code); note that GND is available via a rivet socket, and the 1 Hz clock signal from the pin header:

Microtronic Outputs

There are LEDs for the 4 Microtronic outputs, as well as an LED for the 1 Hz clock output.

The Microtronic inputs (they can be read with the DIN = Data In op-code) are available as pin headers and rivet sockets as well; also note the 1 Hz clock rivet and corresponding LED, as well as the power supply socket rivets for external circuits / experiments:

Microtronic Inputs

Additional Hardware Features

The additional hardware features of the board have already been discussed: the buzzer, the speaker, and the DIN1 to DIN4 buttons. The buzzer can be switched off with the BUZZ DIP switch.

Speaker and Buzzer

Phoenix and the 2095 SD Card-Based Cassette Interface Emulator

The hardware emulation of the Phoenix is faithful enough to allow interfacing with the 2095 cassette interface emulator. Despite the availability of the much more comfortable EEPROM for program storage, this is of some practical utility, as .MIC programs can be loaded from and stored to SD card, and the FAT32 file system facilitates convenient data exchange with the PC or Mac. Programs in .MIC format can be found here, and loaded into the machine with the 2095 emulator, and then stored to EEPROM as well, saving the user from having to type these in.

Phoenix and 2095 emulator

Unfortunately, it is not possible to use the real 2095 interface and cassette recorder, as Phoenix does not generate the required 32.768 kHz clock signal that is the basis for the tone generation that encode the 0 and 1 bits via Frequency Key Shifting on the 2095. The 2095 schematics - reconstructed by Frank de Jaeger - can be found here; there we can see that the 32.678 kHz signal generated by the Microtronic provides the Phi1 clock signal to a CD4060 14-Stage Ripple-Carry Binary Counter/Oscillator.

Bill of Material - BOM

Gerbers

The Gerbers for the Phoenix board

Phoenix Board

and for the display adapter

Phoenix Board

are available:

Phoenix Firmwares

The firmware requires the Arduino IDE and a proper installation of MightyCore.

Firmware uploading / programming is done "in system" via the ATmega ISP header and, for example, USBasp:

ISP Header

Note that you will need to burn the bootloader with the correct MightyCore settings first before you can compile and upload the .ino Arduino sketch for the firmware variant of your choice (Combined, Neo Only, or Phoenix Only, as described above):

Arduino Settings 1

Arduino Settings 2

Please note that you will need to install the NewTone library from Tim Eckel.; a copy is included here for convenience.

The 7segment LED glyphs / fonts are Ricardo Batista's TM16xxFonts.h; a copy is included here for convenience.

Microtronic Software

A great new fun Microtronic software project is the "Monarch" rotary slot machine by rab-berlin:

https://github.com/rab-berlin/Monarch2090

Moreover, most of the historical Microtronic programs from the Microtronic manuals can be found here, in .MIC format.

Michael has some Microtronic programming videos online; the highlight is an implementation of a recursive version of the infamous "Towers of Hanoi" (yes, recursion on the Microtronic is possible!).

Acknowledgements

This project benefitted tremendously from the following individuals; we are very grateful for your contributions to this project! In particular,

Thank you all!