PlasMa is a simulator machine built as a simple homage to mainframe computers from my early 1970's career at International Computers Ltd (ICL) in the UK.
Page updated: 9-Aug-2020
A mini-mainframe simulator machine
It makes no pretence to simulate any specific machine, 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 computer from scratch.
It simulates a complete mini/mainframe system in a self-contained desktop-sized box containing real lights and switches. The processing unit simulates a mini computer with a small amount of main memory running a relatively simple instruction set, and the simulated mainframe-like peripherals include a paper tape reader and punch, mag tapes, exchangeable disks and an operators console.
The project is currently a work-in-progress, as documented in this series of videos. A few still pictures during construction are here.
A simulator program is also available for assessing its capabilities or for developing PlasMa programs. Details and download links are in the construction section below.
OverviewThe 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 2These 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.
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: Booksite, Coursera course
Microcode 3This 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 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:-
If you are interested in supporting the project, buying both 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 pricing on the following items:-
*Some downloadable files are held on the pCloud.com storage site due to website restrictions, so don't be alarmed if you 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.