CESIL
CESIL, or Computer Education in Schools Instruction Language,[1] is a programming language designed to introduce pupils in British secondary schools to elementary computer programming. It is a simple language containing a total of fourteen instructions.
Background
Computer Education in Schools (CES) was a project that commenced in 1968 under the stewardship of the John Hoskyns Group.[2] CESIL was developed by Hoskyns as part of the CES project, and introduced in April 1969.[3] The project was taken over by International Computers Limited (ICL) in September 1969 to become ICL-CES.[2] In those days, very few if any schools had computers, so pupils would write programs on coding sheets, which would then be transferred to punched cards or paper tape.[4] Typically, this would be sent to run on a mainframe computer, with the output from a line printer being returned later.[5]
Structure
Because CESIL was not designed as an interactive language, there is no facility to input data in real time. Instead, numeric data is included as a separate section at the end of the program.[6]
The fundamental principle of CESIL is the use of a single accumulator, which handles mathematical operations.[4] Numeric values are stored in variables, which in CESIL are referred to as store locations.[7] CESIL only works with integers, and results from DIVIDE operations are rounded if necessary.[8] There is no facility for data structures such as arrays, nor for string handling, though string constants can be output by means of the PRINT instruction.[4]
Jumps and loops can be conditional or non-conditional, and transfer operation of the program to a line with a specific label, which is identified in the first column of a coding sheet.[9] The instruction or operation is stated in the second column, and the operand in the third column.[10] On some coding sheets, comments and the text of the PRINT instruction would be written in a fourth column.[11]
Instructions
Instructions, or operations, are written in upper case and may have a single operand, which can be a store location, constant integer value or line label. Store locations and line labels are alphanumeric, up to six characters, and begin with a letter.[12] Numeric integer constants must be signed + or −, with zero being denoted as +0.[13][lower-alpha 1]
Input and output
IN– reads the next value from the data, and stores it in the accumulator.[4] The error message*** PROGRAM REQUIRES MORE DATA ***is printed if the program tries to read beyond the end of the data provided.[14]OUT– prints the current value of the accumulator. No carriage return is printed.[15]PRINT "text in quotes"– prints the given text. No carriage return is printed.[15]LINE– prints a carriage return, thus starting a new line.[16]
Memory storage
LOAD locationorLOAD constant– copies the value of the given location or constant to the accumulator.[17]STORE location– copies the contents of the accumulator to the given location.[10]
Mathematical instructions
ADD locationorADD constant– adds the value of the given location or constant to the accumulator.[18]SUBTRACT locationorSUBTRACT constant– subtracts the value of the given location or constant from the accumulator.[19]MULTIPLY locationorMULTIPLY constant– multiplies the accumulator by the value of the given location or constant.[20]DIVIDE locationorDIVIDE constant– divides the accumulator by the value of the given location or constant.[21] The result is rounded down if the result is positive, and up if the result is negative.[8] A*** DIVISION BY ZERO ***error message is printed if the divisor is zero.[22]
In each case, the result of the operation is stored in the accumulator, replacing the previous value.
Program control
JUMP label– unconditionally transfers control to location labelled.[23]JINEG label(Jump If NEGative) – transfers control to location labelled if the accumulator contains a negative value.[24]JIZERO label(Jump If ZERO) – transfers control to location labelled if the accumulator contains zero.[9]HALT– terminates the program.[15]
Other symbols
Three special symbols are used in CESIL at the beginnings of lines.
%is used to mark the end of the program and the start of data.[11]*is used to mark the end of the data.[25](is used at the start of a line to indicate a comment.[26][lower-alpha 2]
CESIL programming tools
An emulator for CESIL, designed to run on Windows and called Visual CESIL, is available as freeware.[27]
An interpreter for CESIL, designed to run on the Android platform and called Wyrm CESIL, is available as free to install.[28]
Example
The following totals the integers in the runtime data section until it encounters a negative value and prints the total.
LOAD +0
LOOP STORE TOTAL
IN
JINEG DONE
ADD TOTAL
JUMP LOOP
DONE PRINT "The total is: "
LOAD TOTAL
OUT
LINE
HALT
%
1
2
3
-1
*
The output of the above program would be:
The total is: 6
See also
- Computer literacy
- Computers in the classroom
- History of computer science
- HAGGIS - language invented to standardise marking of programming work in Scottish schools
Bibliography
Monson, Colin C; Sewell, Ian R; Frances P, Vickers (1978). Computer Studies. Book 1. ICL Computer Education in Schools. ISBN 0-903885-17-4.
Notes
References
- ↑ Computer Studies, page 71
- ↑ 2.0 2.1 "CES enters second decade". ICL-CES Newsletter: pp. 1. January 1980. https://drive.google.com/file/d/1Dlfi4pzwxK3AIMETYjPO6MeUnAcWac44/view.
- ↑ "ICL_CES_Newletter_11_73_Electronics Weekly April 1969_CyrilCESIL.png". https://drive.google.com/file/d/18zxaDbSS-CHhBsz8lpjCPE1aPHS274YS/view?usp=sharing.
- ↑ 4.0 4.1 4.2 4.3 Computer Studies, page 72
- ↑ "My First Program". https://iclces.uk/articles/first_cesil_program.html.
- ↑ Computer Studies, page 82
- ↑ Computer Studies, page 76
- ↑ 8.0 8.1 Computer Studies, pages 93–94
- ↑ 9.0 9.1 Computer Studies, page 148
- ↑ 10.0 10.1 Computer Studies, page 77
- ↑ 11.0 11.1 Computer Studies, page 74
- ↑ Computer Studies, pages 96, 148
- ↑ Computer Studies, pages 97–99
- ↑ Computer Studies, page 201
- ↑ 15.0 15.1 15.2 Computer Studies, page 73
- ↑ Computer Studies, pages 199–200
- ↑ Computer Studies, pages 80, 97–98
- ↑ Computer Studies, pages 84, 97–98
- ↑ Computer Studies, pages 86, 97–98
- ↑ Computer Studies, pages 90, 97–98
- ↑ Computer Studies, pages 92, 97–98
- ↑ Computer Studies, page 145
- ↑ Computer Studies, page 198
- ↑ Computer Studies, page 154
- ↑ Computer Studies, page 83
- ↑ Computer Studies, page 164
- ↑ Andrew John Jacobs (20 June 2010). "Visual CESIL". http://www.obelisk.me.uk/cesil/.
- ↑ Wyrm Software (13 October 2019). "Wyrm CESIL". https://play.google.com/store/apps/details?id=com.WyrmSoftware.WyrmCESIL.
