|
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.
|
|