CSIRAC - The First Australian Digital Computer - Emulation

Introduction

John Spencer wrote a number of emulators for CSIRAC around the turn of the century (2000). These were written in Turbo Pascal for Windows 98. I have used the source code to resolve some of the details of how various functions behave, but have completely re-written my emulator in Java. The code has been tested, to some extent, on Windows and MacOSX, and appears to work provided you have the Java 8 JRE, or later, installed. I have only been able to test it more fully on Linux, as I only have Linux available.

Installation

The emulator can be downloaded here.

Installation depends on which Operating System you are running, but in general the procedure is:

I make use of a simple script to invoke the emulator, the File Jem.bat is a suggestion for Windows. It can be improved by including the name of the folder, so that it can be invoked from other folders, but I leave the details to you.

The Assembler, Casm.jar, is included and can be invoked in a similar manner, but expects the name of the file to be assembler to be appended to the command line. I name my assembler files with .casm as the qualfier, the assembler will, by default, replace the qualifier by .cvt, which is the usual designation of a CSIRAC loadable file, to use for the output file, plus a further file, replacing the qualifier by .lst gives an assembler listing, which I find useful when debugging a program.

Emulator Overview

When invoked, the emulator displays four separate windows:

These windows can be re-arranged on screen to suit your preference. The Displays window is fixed size, but the others can be re-sized in the normal way.

The Displays Window

The six monitors displays the content of registers and store. From left to right we have:

I also display the current value in text form below each of the monitors. This is also not authentic, but quite useful.

The Tape Reader Window

This window make use of a Java Tabbed Pane to display either of the tape readers. Click on the tab at the top to select which one is visible. Use of the the Tape Reader 5/12 switch on the control panel will also switch the readers. Note that the machine decides which one to read based on the switch, not on which one is visible.

There are two buttons for each reader, Load Tape, and Step. Click on the Load Tape button to pop up a file selection dialog, which should focus on the folder most recently used to load a tape from, but you can navigate around the file store in the usual manner. Loading a tape displays the tape with the first row between the two horizontal lines which represent the read head.

The Step button will advance the reader by one row each time it is pressed. This is important for the loading process as the loading procedure will start loading with the order under the read head. It is normal to advance the tape to the first non-blank row before starting to load a program. Some tapes have holes punched in a diagonal line to 'point' to the first real row, these should also be skipped over.

For 5-hole tapes, I found it convenient to add a translation of the characters alongside the tape. This is important when you start writing Interprogram tapes, as the error diagnostics simply report an error and pause. On the original machine, the operator would mark the tape with a pencil at this point so the error could be traced back to that point in the program.


The Printer/Punch Window

This window also uses a Tabbed Pane to display the Printer and the two tape punches, although the punch displays are more along the lines of printers - showing the actual text rather than the punched tape holes.

The three devices each have two buttons, Clear and Save, which are fairly self-explanatory. The SAVE button pops up a dialog in the same manner as the reader Load Tape button, to specify a file name for the displayed data to be saved.

The Control Panel

The main control panel was the central operating unit. Apart from loading and removing tapes and printouts, and the main power switch, everything else was controlled from here.

The panel is arranged as seven rows of elements; from top to bottom:

  1. Various control switches,
  2. A row of six switches, a single switch, then a row of ten switches labelled Halt,
  3. A row of twenty yellow switches, labelled NA
  4. A row of twenty green switches, labelled NB
  5. A row of twenty red switches, labelled IP
  6. Eleven push-buttons, and three switches,
  7. Two buttons with a lamp between them, a switch and a push button.

Dealing with these from top to bottm, and left to right, we have:

Bill Purvis, April, 2021