System software on Leo III was written in Intercode. This is a machine-level language for a fictitious machine which resembles a Leo III, but which has a more extensive order code. Some Leo III systems software has been rescued from line-printer listings. It can be browsed on-line and also executed in emulation.
The sofware that we have so far rescued is all written in Intercode and consists of:
When the ZIP file is unzipped, it produces a directory LeoIIIdemo2 which includes the source text of the emulator program, leo3.c. A binary program for MS Windows (leo3.exe) is included in the this distribution. It was developed using gcc, but this is compiled using Microsoft software courtesy of Bill Gallagher. There is a BAT file for Windows. To run the demo on a Windows system, just do a double click on go.bat. Alternatively, open a command window, cd to the LeoIIIdemo2 directory, and type go.
To run the demo on UNIX-like systems, your first need to compile leo3.c, and then execute it as shown in go.bat. This demo has run successfully on a variety of UNIX-like systems, including GNU/Linux on Intel (ubuntu), FreeBSD on Intel, GNU/Linux on ARM (Raspberry Pi), Solaris on SPARC (where the cc compiler produces a crop of warnings, but the binary program executes OK), and 64-bit OSX on a MacBook.
The source text of the emulator starts with 100+ lines of comment describing its action.
The demonstration consists of the running of all the software under the Leo III Master Routine. It is driven by input to the emulator from the file cct.txt.
Several files are produced including t.htm which shows the Leo III typewriter output interspersed with output from the emulator. Anything including lower case characters is output from the emulator. The green text is keyboard input. Leo III key settings are shown as 3 numbers separated by slashes. Output on the Leo III typewriter is marked by T/W.
The only way to turn off the emulator is by typing in the operator abort command, so the demonstration ends successfully with the message “Illegal: Operator abort”, which is oddly reminiscent of the way that the Intercode Translator announces a successful translation with an ALARM *06.