Paradigm(s) | structured, imperative |
---|---|
Appeared in | 1972 |
Designed by | Imperial Chemical Industries |
Developer | J.G.P. Barnes |
Dialects | none |
Influenced by | Algol 68 |
OS | Cross-platform (multi-platform) |
RTL/2 was a high-level programming language developed at Imperial Chemical Industries Ltd by J.G.P. Barnes. It was originally used internally within ICI but was distributed by SPL International in 1974[1] It was designed for use in real-time computing (hence the acronym RTL = real-time language). Based on concepts from Algol 68, it was intended to be a small, simple language.[2][3] RTL/2 was standardised in 1980 by the British Standards Institution[4].
RTL/2 was a weakly typed language with separate compilation. The compilation units contained one or more items known as "bricks", i.e.:
A procedure brick was a procedure, which may or may not return a (scalar) value, have (scalar) parameters, or have local (scalar) variables. The entry mechanism and implementation of local variables was re-entrant. Non-scalar data could only be accessed via reference (so-called REF variables were considered scalar).
A data brick was a named static collection of scalars, arrays and records. Programmers had to implement memory management themselves (there was no heap or garbage collection).
A stack brick was an area of storage reserved for running all the procedures of a single process and contained the call stack, local variables and other housekeeping items. The extent to which stack bricks were actually used varied depending upon the host environment in which RTL/2 programs actually ran.
Access to the host environment of an RTL/2 program was provided via special procedure and data bricks called SVC procedures and SVC data. These were accessible in RTL/2 but implemented in some other language in the host environment.
Contents |
TITLE Hello World;
LET NL=10;
EXT PROC(REF ARRAY BYTE) TWRT;
ENT PROC INT RRJOB();
TWRT("Hello World#NL#");
RETURN(1);
ENDPROC;
RTL/2 compiles to assembly lanaguage and provides the CODE statement to permit assembly language to be inserted directly into RTL/2 programs. This is only available when compiled with a systems programming option (CN:F)
The Code statement takes two operands: the number of bytes used by the code insert and the number of bytes of stack used.
Within code statements two trip characters are used to access RTL/2 variables. These vary from operating system to operating system. On PDP-11 and VAX/VMS the trip characters are '*' and '/'
While the specifics varied by operating system the following is an example of a code insert on VAX/VMS:
This code insert moves the value of a variable passed into the RTL/2 procedure into a variable called COUNTER in a data brick called MYDATA.
ABS AND ARRAY BIN BLOCK BY BYTE CODE DATA DO ELSE ELSEIF |
END ENDBLOCK ENDDATA ENDPROC ENT EXT FOR FRAC GOTO HEX IF INT |
LABEL LAND LENGTH LET LOR MOD NEV NOT OCT OF OPTION OR |
PROC REAL REF REP RETURN RTL SHA SHL SLA SLL SRA SRL |
STACK SVC SWITCH THEN TITLE TO VAL WHILE |
SPL published a range of documentation for RTL/2. Each of these documents had a reference number assigned. The following is an incomplete list.
RTL/2 Ref 1 - Language Specification RTL/2 Ref 2 - Introduction to RTL/2 RTL/2 Ref 3 - RTL/2 Training Manual RTL/2 Ref 4 - System Standards RTL/2 Ref 5 - Stream I/O RTL/2 Ref 18 - Hints on writing RTL/2 Programs RTL/2 Ref 26 - Language Reference Card RTL/2 Ref 39 - Run time environment on the PDP-11 RTL/2 Ref 63 - User Manual for the PDP-11 under RSX-11M RTL/2 Ref 107- VAX/VMS RTL/2 User Manual RTL/2 REF 130- The RTL/2 32 bit run time environment on the VAX