ee9, the GNU Ada emulator of the English Electric KDF9 Computer
The ee9 program is free software; you can redistribute it and/or
modify it under terms of the GNU General Public License as published
by the Free Software Foundation;
either version 3,
or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should receive a copy of the GNU General Public License distributed with this program;
see file COPYING.
If not,
look here.
ee9
is a substantial program:
more than 25,000 lines of source code,
the most recent version being in Ada 2012.
The build of
ee9
for macOS,
when running on my 2017-model iMac,
is between 400 and 700 times faster than the original KDF9 hardware,
depending on the mix of instructions in the KDF9 program.
ee9
is a command-line program.
It does not have a graphical user interface,
but runs in your system’s terminal emulator under a bash-compatible shell.
When running
ee9
you are placed somewhat in the role of a KDF9 operator,
monitoring and controlling the computer by means of messages
on its Flexowriter console typewriter.
There are executable binaries available:
- for Apple Macintosh x86_64 processors,
under Lion (10.7)/Mountain Lion (10.8),
under Mavericks (10.9)/Yosemite (10.10),
and under El Capitan (10.11)/Sierra (10.12)/High Sierra
(10.13)/Mojave (10.14)/Catalina (10.15)/Big Sur (macOS 11.0);
- for Microsoft Windows;
- for Linux on Intel x86_64 and on Intel x86_32 processors;
- for Raspbian Linux on the ARM11 Raspberry Pi processor;
- and for PowerPC G5 processors under OS X Leopard.
Thanks to Bill Gallagher for Windows,
Linux and Raspberry Pi builds;
and to Mike Hore for the PowerPC build.
If you have a Mac with a PowerPC G3 or G4 processor,
I would be very interested to hear whether the G5 version runs on it.
If you have a Mavericks or Yosemite system,
I would be very interested to hear whether the current macOS version runs on it.
If you have a Windows 10 system,
you can also use the x86_64 Linux build.
You can find
a full release of ee9 here.
It is provided in the form of a zip-compressed archive,
and will have a name of the form
Vvprx_for_system.zip,
where v represents a major version number number,
r represents the point-release number
and x represents a letter identifying a minor revision.
If there is more than one version offered for your system,
take the most recent.
When you unzip the download,
you will see a directory called emulation.
The rest of the package is held in the following subdirectories of emulation.
You should find:
In the Documents directory:
Documentation is provided as some UNIX-style text files,
with NL/LF line terminators,
and as a set of PDFs (mostly).
These include (with V5):
- Users’ Guide for ee9
—
the manual for ee9,
containing comprehensive documentation of ee9,
the Time Sharing Director,
and both the Whetstone and Kidsgrove Algol 60 compilers.
-
The English Electric KDF9,
The Hardware of the KDF9,
The Software of the KDF9,
The KDF9: a Bibliography,
Benchmarking and the KDF9
Buying a KDF9 in 1964
—
six papers, documenting the hardware,
software and history of the KDF9 in some detail
- ee9 Implementation Overview
—
a synopsis of the working of ee9
- ee9 Release History
—
the amendment log of all ee9 releases to date
- Kidsgrove Compilation Errors
—
a list of all the compilation
error numbers generated by Kidsgrove Algol
- Kidsgrove Runtime Errors
—
a list of all the execution
error numbers generated by Kidsgrove Algol
- Whetstone Compilation Errors
—
a list of all the compilation
error numbers generated by Whetstone Algol
- Whetstone Runtime Errors
—
a list of all the execution
error numbers generated by Whetstone Algol
- WAlgol Translator-listing,
WAlgol Controller-listing
—
plain text file assembly listings of
the Whetstone Algol Translator and Controller
- README
—
a brief description of the procedures to be followed
in order to to build and test your own executable programs from the provided source code
In the Testing directory:
- An Assembly subdirectory, containing Usercode assembly-language source files
- A Binary subdirectory,
containing KDF9 machine code programs to run,
including the Kidsgrove and Whetstone Algol compilers and the Time Sharing Director
- A Data subdirectory,
containing data files for KDF9 programs to read
- A Kidsgrove subdirectory,
containing Kidsgrove Algol source files
- A Whetstone subdirectory,
containing Whetstone Algol source files
- A collection of files to represent the KDF9’s I/O devices;
for example: ‘LP0’, ‘TR1’, and so on
- Binaries of my KDF9 emulator: ee9,
and of its asscociated utility programs:
a2b,
kidopt,
mkchan and mtp
- A binary of David Holdsworth’s new Usercode compiler: kal3
- Unix shell scripts to facilitate running kal3,
KDF9 object programs,
both Algol systems,
and the Time Sharing Director
- Unix shell scripts to implement a comprehensive regression-testing process
for ee9 itself:
ee9_reg_test,
cr_regr_tests,
etc.
In the Source directory:
- Complete Ada 2012 source code is provided.
It should compile without errors and without warning messages.
(Versions older than V3.1 are in Ada 2005.)
In the Build directory:
- A shell command file to build ee9: mk9,
which may need to be adapted to your system and preferences;
it repays careful study,
if you intend to compile ee9 yourself (see the README file)
- GNAT option files for testing and/or optimised builds of ee9: adc-*.adc; the
currently distributed binary is both optimised and testing;
except on PowerPC, which is unoptimised due to a bug in the old compiler used
- The option file used to generate the distributed binary of ee9: ‘gnat.adc’
- The compilation listing of that build: ‘komlog.ada’
If you are a Windows user and want to build your own version of ee9,
or if you want to use the Unix shell scripts I provide,
then you may need to install the Cygwin POSIX subsystem.
For information on how to do that, see the ‘HOWTO’ file.
If you are using Windows 10 then Cygwin is not necessary,
because the Linux version of ee9 works on Windows 10 without it.
N.B. the HOWTO file in version 2.0 gives an outdated command,
in the section called ‘DIRECTING DIRECTOR’,
for setting up labelled magnetic tape files.
Instead of:
./nine RLT Assembly/RLT_data.txt
it should say:
./nine_test RLT RLT_data
Thanks to Roberto Sancho Villa for bringing this to my attention.