The first Imp compiler at Edinburgh was the KDF-9 compiler (written by P.Bratley, D.J.Rees, P.D.Schofield & H.Whitfield), based on [wiki:Self:AtlasAutocode Atlas Autocode]. [http://history.dcs.ed.ac.uk/archive/languages/atlas-autocode/imp9.imp.txt The source of this compiler] was recently recovered from paper tape by Ian Young and Chris Whitfield (that was in interesting saga in itself). If you examine the [http://history.dcs.ed.ac.uk/archive/languages/atlas-autocode/imp9.imp.txt source] you'll see a significant part of it is embedded assembler. The next major development was [http://history.dcs.ed.ac.uk/archive/languages/imp/allimpc1.txt the first truly portable version which was written entirely in Imp] in 1970 for the ICL 4/75 - the first of a long series of bootstrapping operations [wiki:Self:AndysIntelPort which continues to this day]. The [wiki:Self:Imp80 ERCC dialect of Imp] (see [http://history.dcs.ed.ac.uk/archive/docs/Edinburgh_IMP_Language_Manual/ the Imp Language Manual]) is really the canonical Imp; and the final version of that dialect, which attempted to define a common subset of the language that would behave the same if it were compiled under the [wiki:Self:Imp77 Computer Science department's Imp77 compiler], is fully documented in the [http://history.dcs.ed.ac.uk/archive/os/emas/emas2/compilers/imp80/doc/manual/imp80.html online help information for Imp80] extracted from the EMAS help system. The first published article on [wiki:Self:ImpLanguageAndCompiler the IMP language and Compiler] by PeterStephens, appeared in [http://history.dcs.ed.ac.uk/archive/docs/EMAS_IMP/document.html The Computer Journal, Vol 17 Issue 3 pp 216-223]. Peter Schofield has written some helpful [http://history.dcs.ed.ac.uk/archive/docs/Notes_on_IMP_Programming Notes on IMP programming] for newcomers to the language. Other references: * IMP is a descendant of the ATLAS Autocode, developed during 1966-1969 at the Edinburgh University. IMP is a language which the developers describe as being "of the ALGOL type" [Barritt, 1970]. However, it contains many of the facilities which are in PL/I, and follows the syntax of neither. For example, IMP contains a simple form of data structure, significant control over the storage mapping of data, commands for moving parts of words, statements for character handling, string operations, input/output commands, compiler generated checks at object time. Machine language instructions can be inserted inline. IMP compilers exist for the ICL System 4 machines, IBM 360, PDP-9 and 15, and UNIVAC 1108. ''-- Sammet, Jean E. "Brief survey of languages used for systems implementation" § SIGPLAN Notices 6(10) October 1971 Proceedings of the SIGPLAN symposium on Languages for system implementation 1971, Lafayette, Indiana, United States; October, 1971''