ICL 1900 Series Computers

Programming Languages

The ICL 1900 series computer was a general purpose machine and had a variety of programming languages available for both commercial and scientific types of work. The compilers produced an output format known as semi-compiled, which could then be consolidated (i.e. linked) with standard libraries and other semi-compiled modules (not necessarily in the same language) to form a complete binary program. This binary program would be stored on disc (or magnetic tape, punch cards or paper tape) and then loaded from that medium when it was required to be run. Mixed language programming between Algol, Cobol, Fortran and PLAN was possible.

Algol   The standard Algol compiler provided was Algol 60, the first programming language that I was taught when at school and have never used since.

Current status: Various compilers are available in binary format, together with associated subroutine libraries. There appears to be a source file for one of the compilers.
#XALT, #XALE & #XALV are definitely working.

ALGOL68   An implementation of the Algol 68 standard was also available later.

Current status: A working system is available, and some utilities thought to be lost have just been unearthed. This possibly includes source.

ASSEMBLER   The 1900 had a number of assemblers, whilst PLAN and GIN worked with instruction mnemonics they were not assemblers in ICL parlance. ICL's assemblers were only used internally and only rarely were customers given copies. Initially all executives were coded in one of the various assembly languages, although GIN was used for the later GEORGE3/GEORGE4 executives and the later emulation executives (EXG3).

We have a number of these assemblers:-

#APDB - A Stevenage tool very similar to that used to create executives for the smaller machines (1901 .. 1903S). The name is an acronym - Assembler Program Double Buffered. It has proven possible to assemble E1HS and E3NG executives with #APDB.

#NSBL - Documented in the West Gorton documents and includes facilities to emit bootstraps for all of the West Gorton systems (1904 through 1906S) and omits any mention of the Stevenage machines.

Other known, but not located assemblers

DASS - Another West Gorton assembler, ran in exec mode on the bare machine and assembled source on paper tape, either leaving the program ready to run in store or punched on paper tape or cards.

Executive Assemblers/Generators

Related closely to the assemblers and sharing a fairly common syntax were a set of programs used in West Gorton (what did Stevenage use?) to build the executives for the large 1900 machines. A magtape held a set of subfiles, 'packages' which were used selectively to create executives tailored for each customer site. The specifications for the machine was help on another magtape, or on paper tape or cards. These programs (#GRT4, #GRT5, #GRTM and #GRT7) could then compile executives for either a single machine or any number of machines, writing the executive images to magnetic tapes. Known collectively a GERT, the versions had the following purposes:-

#GRT4 - EXECUTIVE GENERATOR (E4BM & E4G3)
#GRT5 - EXECUTIVE GENERATOR (E6RM on 1904/5)
#GRT7 - EXECUTIVE GENERATOR (E6RM on suffixed)
#GRTM - EXECUTIVE GENERATOR (E6BM & E6G3)


We have versions of #APDB (2), #NSBL(1), GRT5(1), #GRT7(1)

Autocode   A recent (Nov 2025) discovery is that the FP6000 had an Autocode available.

Current status: A copy of the FP6000 Autocode manual has been located, and should become available early 2026.
BASIC   An implementation of Dartmouth BASIC was available, although I never came across it, and was (I believe) used by schools for teaching programming. This is an interpreter rather than a compiler.

There was also a BASIC written by Southampton, #SOBN

Current status: The George 3 and Maximop interpreters are available in binary format. Currently there is no known copy of #SOBN.

BCPL   Basic CPL, designed by Martin Richards in 1967, was originally developed as a compiler writing tool and is closely related to CPL (Combined Programming Language, jointly developed at London and Cambridge Universities). It was ported to several different machines, including the 1900. A modified version led to another programming language B, on which the C programming language was based.

Current status: A binary version has been recovered, along with the subroutine library and a (partial) compiler source.

Update: Thanks to the great work of John Hughes, the BCPL sources have been compiled, and a number of missing RTL routines recovered, so BCPL is now fully rebuildable.

COBOL   COBOL was provided as the main commercial programming language, along with PLAN, and many thousands of lines of code were written.

Current status: Some compilers are available in binary format, together with associated subroutine libraries.
#XEKB is definitely working.

CORAL 66   An implementation of Coral 66 was available, although I never came across it working on systems and commercial applications. See manual CORAL 66.

Current status: A source listing has been unearthed, and might (with some effort) be rekeyed. Previously it was thought that the sources were in CORAL 66 itself, but the CORAL source found is in BCPL (see above) However the BCPL headers are not in the source, although they theoretically could be recreated. There is no 1900 Code Generator however.

EMA   EMA (Extended Mercury Autocode) was provided as an early scientific programming language.

Current status: This appears to be lost.

FORTRAN II   The early 1900s inherited some FORTRAN II compilers, initially created in Toronto on the FP6000.

Current status: No known copies exist.
FORTRAN IV   FORTRAN 1900 was provided as the main scientific programming language.

Current status: Various compilers are available in binary format, together with associated subroutine libraries.
#XFAT, #XFEV & #XFIV are definitely working.

FORTRAN 77   An implementation of Fortran 77 was available later, possibly written by a university.

Current status: Uncertain, parts of the system still exist. More investigation required.

GIN   GIN - George INput was a powerful macro assembler language used for writing the Operating Systems and Executives (GINX). Syntactically it was similar to PLAN, but had many more features. Unlike PLAN, it was not a compiler but an assembler that was complete in itself and could not be mixed with other languages.
Current status: Various copies of 'used' compilers (502, 512, 522X & 524) are available, but so far no 'clean' version has been found (required to compile a new program). A version of GIN524 has been partially reverse engineered and cleaned, enabling us to compile new programs.

JEAN   JEAN is a conversational language, a dialect of JOSS, designed for small numerical applications. This is an interpreter rather than a compiler.

Current status: The George 3 (English and French) interpreters are available in binary format. The free-standing versions appear to be lost.

Sample JEAN Program - Lunar Lander

NICOL   NICOL - NIneteen-hundred COmmercial Languange was and designed to assist existing punched card accounting (Tabulator) users to convert rapidly to computer operation on small 1900 configurations.
(There is also an American language called NICOL which is a small subset of PL/I, whether there is any relationship beyond the name, I have not been able to find out.)

Current status: Some compilers and utilities are available in binary format, but the associated subroutine library is missing. It might be possible to recreate the subroutine library with some compiling/reverse engineering.
#XGCR is definitely working.

PASCAL   An implementation of PASCAL was available, written by Queens University, Belfast.

Current status: A working binary version 2B has been recreated from the source.

PLAN   PLAN - Programming LAnguange Nineteen-hundred was the normal assembler language, which was used for a variety of programming purposes. Subroutines, written in PLAN, could be incorporated into ALGOL 60, COBOL and FORTRAN IV programs.

Current status: Some compilers and utilities are available in binary format, together with the subroutine libraries.
#XPLF and #XPLT are definitely working.

Sample PLAN Programs:-
Transfer Cards to Magnetic Tape (from PLAN Manual)
GEORGE 3 Directory & Tree Listing

PLASYD   PLASYD - Programming LAnguage for SYstem Development was a development tool (similar to Niklaus Wirth�s PL/360 for the IBM 360 series) used intenally by ICT/ICL for several software development projects. (In essence PL/1900, but that name was not allowed.) It has most of the attributes of a high-level language, similar to Algol 60, but the programmer also has direct access to the machine structure.

Current status: A later version of the compiler is available in binary format and has been rununder both GEORGE 3 and MAXIMOP. The subroutine library is missing, but has been partly reconstructed using S-RS.

RATFOR   Not an ICL product, but a language implemented as a source pre-processor, accepting RATFOR source and emitting FORTRAN IV, which would then be compiled by #XFAT. XFIV etc.

Current status: This pre-processor and its required runtime library have been recovered and now exist in full.
RPG2   RPG2 - was a commercial language, favoured on IBM small systems. ICL also had a compiler (introduced with the 2903?).

Current status: Some binary and source of the system has been recovered, needs further work to see what is available.