|
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.
Various manuals are available at
Technical Publications.
Various compilers and the consolidator are available from
ICL 1900 Software Tapes.
| 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.
It has also been possible to run #XALH - the GEORGE 4
version under a very modified version of GEORGE 3.
|
| 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 - seems to have been 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.
#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. It is
known to have embedded copies of bootstraps required to boot
all of the West Gorton CPUs, from the 1904 to the 1906S.
DASS - This is an assembler that ran on the 'bare metal' of
the 1900. It was loaded from paper tape (maybe cards) and
assembled the source from paper tape building the program
image in core above the assembler itself. On completion it
was possible to punch the program just assembled to paper
tape or cards or for it to be relocated and entered directly
for test runs.
We have two binary instances of DASS on some exec test
images, and if started at the correct address, it will
happily work as expected.
Other known, but not located assemblers
UNIDASS - 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. It is
strongly suspected that UNIDASS was an enhanced variant of
DASS (see above).
Executive Assemblers/Generators
Related closely to the assemblers and
sharing a fairly common syntax were a set of programs used in West Gorton
(Stevenage used #APDB) to build the executives for the large 1900 machines.
A magtape held a set of subfiles, known as 'packages' which were
selectively used 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)
|
| BASIC |
|
An implementation of Dartmouth BASIC by ICL-CES was available,
as an educational language for schools for teaching programming.
Current status: The interpreter which runs under GEORGE 3 and
Maximop is available in binary format. The BASIC this is
available is the ICL basic and not the Southampton #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 now
been recovered, and an initial, partial compiler source
has been worked up to a full installation, including
compiler source, runtime library source and a set of build
macros to rebuild and test the compiler. (Thanks to John
Hughes for his sterling efforts here).
|
| CESIL |
|
CESIL was provided as an educational language for schools
by ICL-CES for teaching basic programming.
Current status: The original batch interpreter has been
recovered/restored and a new compiler has been written, they are
available from the software library. Additional
information
is available.
|
| 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.
Unfortunately, the compiler is written in Coral
66.
(Update: Nov 2025)
Some sources for a CORAL 66 compiler have been located, but
contrary to previous information they are in BCPL, however
there are a number of missing files, the BCPL 'header files'
that describe the various imports to each source segment
being absent. I could be possible to recreate the headers, I
imaging that attempting to compile the currently available
sources will provide a list of the missing filenames. Dummy
files could be created and then populated to provide the
requisite function and procedure declarations. - However
sorting out commons could be fun. Also there does not appear
to be a Code Generator module.
|
| EMA |
|
EMA (Extended Mercury Autocode) was provided as an
early scientific programming language.
Current status: This appears to be lost.
|
| 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.
Similar to #XALH, it has also been possible to run the
GEORGE 4 #XFIH optimising FORTRAN IV compiler under a
modified GEORGE 3.
|
| FORTRAN II |
|
(Update: Nov 2025)
It is now apparent that the early 1900s, had a number of
FORTRAN II compilers, some or all of which derived from the
FP6000.
Current status: None of these are
available. |
| 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.
(Update: Nov 2025)
GIN 524 was successfully 'cleaned' by a joint effort between
Brian and myself quite a while back, allowing us to run a
full GEORGE 3 compilation including all of fixed core some
time ago.
GIN 524 was also found in a clean condition on a magtape
presented to us maybe a decade ago.
|
| 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 Language 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 (#PASQ) was available, written by
Queens University, Belfast.
The QUB 1900 Pascal compilers had three versions:
- Version 1A, the initial port from the CDC machine at ETH
Zürich
- Version 1B, a full implementation of Pascal still using a
Zürich based source
- Version 2A, a completely rewritten compiler, along with
runtime diagnostics and trace packages.
Current status: A working binary of version 2B has
been recreated from the source.
|
| Pascal Plus |
|
This enhanced superset of 1900 PASCAL (initially written
in Pascal 2A) called Pascal Plus
(#PASP) was created by Dave Bustard at Q.U.B.
Later version of Pascal Plus were available on VAX/VMS and
the ICL 2900 series.
Current status: No known copies of this are
available in either binary or source format. |
| PLAN |
|
PLAN - Programming LAnguage 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,
PLASYD and
FORTRAN IV programs.
Current status: A large proportion of the PLAN 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 (Mildly similar to Niklaus Wirth's PL/360 for the
IBM 360 series) used internally by ICT/ICL for several software
development projects (mostly by the languages group). (In essence PL/1900, but that name was
not allowed.) It has a good number 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 run under both GEORGE 3
and MAXIMOP. The subroutine library is missing, but has been
partly reconstructed using S-RS.
A number of excellent documents are available on the
language, using the compiler and on the compiler itself.
|
| RATFOR |
|
A pre-processor that translated programs written in
Kernihan & Plauger's Rationalised Fortran (RATFOR) to ICL
FORTRAN IV that can then be compiled by the standard FORTRAN
IV compilers.
This is another task completed by John Hughes. He has
created a set of source tapes to allow this important
software tool to be used on the 1900 range. - See
Ratfor |
| 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.
|
|