The Central Instrument Research Laboratory of Imperial Chemical Industries installed a Ferranti Argus 400 in 1966 for the control of multiple laboratory experiments. An operating system was devised and implemented by Cobb, Magee, and Williams (1967); the main purpose of this system was to provide each of several users with a pseudo multi-processor capability with storage protection from other users (see also Magee, 1970). The technique evolved by Cobb to provide storage protection by software in the absence of any assistance from the hardware involved the effective interpretation of all dynamic store and branch instructions in the users programs; these instructions were then costly in space and time. It is against the background of this operating system that the development of SML (Barnes, 1969), the laboratory's first attempt at a real time high level language, must be seen. SML (Small Machine Language) was a simple variant of ALGOL but with static storage allocation. It included a scaled fixed point facility in addition to the normal ALGOL types. Multi-tasking was provided via a set of standard procedures (activate, delay, waitfor, etc.) essentially as proposed by Benson, Cunningham, Currie, Griffiths, Kingslake, Long, and Southgate (1967). Normal ALGOL parameter mechanism was provided; this parameter mechanism was re-entrant but coding was otherwise not re-entrant except inasmuch that individual procedures could be executed in parallel. A compiler to translate SML text into Ferranti Argus Initial Orders Mk 3 was written in KDF9 ALGOL and programs were originally thus compiled off-line. The compiler was later rewritten in itself and bootstrapped to provide an on-line compiler. Experiences with SML on experimental plant in the author's laboratory were entirely successful (Brisk, Davies, and Jones, 1969); subsequently the language was also used for programming the control software of production plant (Garside, Gow, and Perkins, 1969). In the latter case, however, the operating system itself needed considerable modification and being written in an assembly language this was a non-trivial exercise. This earlier work provided the background to a new project whose objectives are to develop a language/compiler/package system for general use in process control and similar on-line applications. It was decided to undertake this project in stages, the language RTL/1, whose description now follows, is the result of the first stage.
Read full abstract