Under construction

Atlas Autocode on KDF9


Atlas autocode (AA) was ported onto KDF9 by people at Edinburgh University, and then extended to become their IMP language, which was eventually used as the implementation language for EMAS.


We do not have a binary program, but we do have a grammar, and the source text of the compiler.

Paper tapes have been archived at:

The source text is in:
               http://history.dcs.ed.ac.uk/archive/languages/imp-kdf9/IMP9 compiler tape 1 imp.asc
               http://history.dcs.ed.ac.uk/archive/languages/imp-kdf9/IMP9 compiler tape 2 imp.asc
               http://history.dcs.ed.ac.uk/archive/languages/imp-kdf9/IMP9 compiler tape 3 imp.asc


The compiler is written in AA, with copious patches in KDF9 machine code in the form of a sort of Usercode.

We are looking at translation into a combination of C and KDF9 machine code, and then integration with DH's KDF9 emulator. to produce a Leviathon that can compile the true source to get a true KDF9 binary program.

The parser is a yaccification of the grammar in:
               http://history.dcs.ed.ac.uk/archive/staging-area/McKendrick/More/Atlas Autocode ABC Phrase Structure.bin
It can be seen here and here. The analysis output by yacc (well bison actually) is here. The translation of the original from KDF9 paper tape code can be seen here.

A Question

The grammar for the KDF9 machine code sections (which are voluminous) is not given in the original grammar, as there is no expansion given for machine_instrn. It has been deduced from reading the code, and our grammar successfully parses the whole of the source text. There seem to be two syntactic forms concerned with putting the address of an Atlas Autocode variable into the KDF9 nesting store. To find the relevant production in our grammar, do a search for “why is it different”, very near the end of the file. Answers on a postcard please, or by e-mail.

In the source code there are 4 references of the form *@ and 6 of the form *`.

Some Documentation

The Atlas version of the compiler is documented in: