RTL/1(ID:563/rtl001)Implementation ofRTL/IReal Time Language. Barnes, ICI 1971. A real-time language, the predecessor of RTL/2. Barnes describes the RTL Project Team: H. R. A. Brown, M. H. Lloyd, R. J. Long, R. N. Magee, C. Miles, T. Mullett, and K. G. Whitehead the ICI Application Team (led by W. M. Law) Related languages
References: 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 opxating 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/l, whose description now follows, is the result of the first stage. Extract: Criteria for RTL/1 Criteria for RTL/1 The following were seen as the main criteria for the design of RTL/ 1 : 1. Algorithmic features available in high level languages such as FORTRAN and ALGOL should be available and should be implemented as efficiently as is usual in these languages. 2. The dynamic creation and synchronisation of threads should be simple. 3. Subroutines should be re-entrant so that multi-thread programming is simplified. 4. It should be practicable to write large parts of a conventional executive in the language. 5. It should be possible to change, in a modular fashion, parts of a program complex while it is actually running. 6. No unpredictable timing problems should arise as might happen if a conventional garbage collector were used for storage control. 7. An RTL program should be secure. Extract: Experiences Experiences The use of RTL/l to date has indicated that it has all the advantages normally associated with a high level language as compared with an assembly language. Features of RTL/l which have proved of great value are: 1. Char type. 2. Re-entrant code. 3. Modular recompilation. On the other hand some aspects of RTL/l have not proved to be wholly satisfactory; 1. The concept of a section as a type and the dynamic intersection linkage has caused the language to encroach on the system. 2. The ALGOL block structure has imposed rather more overhead than is really desirable. 3. The unpredictable stack size associated with dynamic storage caused difficulties for the system designer. 4. The fixed point variables have not been useful. In the light of experiences with SML and RTL/1 a successor language (RTL/2) is being designed and is intended to be the final version of RTL. It differs significantly from RTL/I and is jud.ged to possess the correct balance of features needed for real time programming. It is planned to publish and implement RTL/2 during 1971. in The Computer Journal 15(1) February 1972 view details |