Home   Gallery
Page updated: 13-Jan-2021


Mini-mainframe simulator project

The PlasMa machine is a simple homage to mainframe computers from my early 1970's career at International Computers Ltd (ICL) in the UK. It makes no pretence to simulate any specific computer, either in design or performance; its aim is purely to rekindle the hands-on ‘lights and switches magic’ from that era, and explore the challenges of programming a machine from scratch.

It simulates a complete mini/mainframe system in a self-contained desktop-sized box containing real lights and switches. The system comprises a 'mini-like' processor with a small amount of main memory running a relatively simple instruction set, and assorted 'mainframe-like' peripherals such as a paper tape reader and punch, mag tapes, exchangeable disks and an operators console.

The machine is currently a ‘work in progress’ so some functions are not yet implemented. Progress is being documented here and in a series of YouTube videos. A few still pictures during construction are in the gallery.

The project is just a personal indulgence re-exploring the 'good old days', but if you are interested in building a similar machine for developing programs and ideas, details are in the construction section below, along with a simulator program for assessing its capabilities and developing PlasMa programs.

The design caters for novices and experts alike; just skip any parts you are already familiar with.


The machine is programmed using toggle switches to load binary values into registers and memory. The program can then be run or single-stepped, and break-points set for debugging. The internal workings are visible at all times in binary format, and include the program counter, instruction register, accumulator and work registers.

PlasMa simulates a microcoded computer so, by loading different microcodes, is able to execute different instruction sets. Three microcodes are provided, so there are 3 instruction sets, all emulating fictitious computer architectures using the same lights and switches on the front panel.

Microcodes 1 and 2

These two are for educational purposes and emulate variants of the ‘Toy’ computer used as a teaching aid at Princeton university, USA.

There are 16 functions and 16 registers, all represented as 4-bit nibbles within a 16-bit instruction, making it very easy to mentally translate to and from binary.

The university uses variants of the 16 functions to demonstrate different programming techniques, so PlasMa simulates two of the most common, which I've named Toy‑A and Toy‑B. In both emulations, Princeton’s terminology is retained where possible so that examples and tutorials on the internet can be followed; existing programs should run with little or no change.

Toy-B has been enhanced with several I/O functions taken from the Advanced emulation (microcode 3), including an emulated paper-tape reader and punch.

The Toy instruction set is included by kind permission of Robert Sedgewick and Kevin Wayne at Princeton university, and is described in their book 'Computer Science'. More information can be found in the following links: BooksiteCoursera course

Microcode 3

This is for the more adventurous, and emulates an advanced computer. It builds on the 16 bit, 16 register Toy architecture by adding a 32-bit accumulator and many more instructions, including I/O for accessing emulated peripherals based on removable sd‑cards (TBA), such as a paper tape reader and punch, magnetic tape decks and exchangeable disk drives.
The first few words of memory are non-volatile to simulate a small ‘fixed/core store’; this can be programmed with a bootstrap routine for loading larger programs from the peripherals.


The physical design is fairly simple; the hardware is just a set of lights and switches driven by a standard micro-controller unit (MCU). The MCU software handles all the complexity.

The printed circuit boards (PCBs) use standard interface chips so they are not tied to any particular MCU. The current software assumes a single MCU executing the opcodes and driving the lights and switches, but future versions may split this over multiple MCUs for performance.

The following items may be useful if you want to experiment or build one yourself:-
  • PlasMaSim simulator program for evaluation or developing programs. The free version supports microcode 1 only (see Downloads); other versions are available supporting either 2 or all 3 microcodes.

  • Machine Manual and Instruction Set manuals as .pdf files.These contain full operating instructions, opcode tables and I/O function tables for each microcode.

  • Plasm assembler program for assembling source code offline. As with the simulator, different versions are available for handling 1, 2 or all 3 microcodes (see Downloads).

If you are interested in supporting the project, purchasing any of the above items entitles you to free future updates plus a discount from the other items below should you choose to buy them later. Contact me for details.

As a further bonus, if you would like to see your PlasMa programs running on the real machine, send them in and I will load and run them live in the next available video.

The following items may also be available:-

  • Blank PCBs, etched and drilled. The current design uses 8 unique boards types, 20 boards in total. You don’t need to use all of these if you want to simplify the mechanical layout. The boards use standard interface chips so may be useful for other projects.

  • MCU software in compiled .hex format. This is for the current design using 20 boards, but customised versions may be available by negotiation. The source code will not be made available.

  • Front and rear panel hole positions in .dxf or .svg format (to be confirmed) corresponding to the lights and switches on the PCBs.

  • (To be confirmed) Aluminium panels, cut and drilled.


PlasMaSim1 + Plasm1 are free. They are fully functional with no time limits, but can only handle microcode 1 (Toy-A). Click the links below to download them.

PlasMaSim2 + Plasm2 are GBP 5 for the pair. They can handle both microcodes 1 and 2 (Toy-A and Toy-B). The package includes both Instruction Set manuals.

PlasMaSim3 + Plasm3 are not yet finalised, but will be available for  GBP 10 for the pair (or GBP 5 if you've already purchased variant 2). They can handle microcodes 1, 2 and 3 (Toy-A, Toy-B and Advanced). The package includes all 3 Instruction Set manuals.

Please include a message to say what the payment is for. There should be an option in Paypal to include a message or note, but if not, just send me a separate email; contact address is at the bottom of this page.

  Machine Manual - updated 23-Sep-2020

Simulator v3.45* - updated 30-Dec-2020
These are all 32-bit programs which should be compatible with both 32 & 64-bit platforms; let me know if there are any problems.
  PlasMaSim1.exe (Windows)
  plasmasim1 (linux) - updated 13-Jan-2021
  plasmasim1 (macOS)

  PlasMaSim Manual - updated 31-Dec-2020
  Instruction Set Manual - Toy-A - updated 23-Sep-2020
  Mods History - updated 30-Dec-2020

Assembler v2.41* - updated 26-Dec-2020
These are all 32-bit programs which should be compatible with both 32 & 64-bit platforms; let me know if there are any problems.
  Plasm1.exe (Windows)
  plasm1 (linux) - updated 13-Jan-2021
  plasm1 (macOS)

  Plasm Manual - updated 26-Dec-2020
  Mods History - updated 26-Dec-2020

Princeton Toy links:   Overview (incl. opcode table)    Examples

* Some downloadable files are held on the pCloud.com storage site due to website restrictions, so you may see a prompt from pCloud. If there are problems downloading, check your computer is not blocking access to pCloud, or contact me via the email address below.