ZX-CESIL 2 by John Miller from ZX Computing Apr/May&Jun/Jul.1983 John Miller has taken a quick break from his A-levels to prepare us a splendid implementation of the educational computer language for your ZX Spectrum Those people studying for 'O' level or 'CSE' Computer Studies at school, more than likely have to learn the language CESIL (Computer Education in Schools Interactive Language) which supports 14 program statements as standard and a handful of commands. The language I chose to implement CESIL in was ZX Spectrum BASIC - with 48K RAM. (The use of a ZX Printer is optional.) Type in the program (carefully!) and then enter the command: RUN 1 Two pages of introduction will be displayed, then you will see the prompt: Which mode (1 or 2)? In reply, enter 1 or 2. Mode 1 means output to screen only and mode 2 means output to both screen and printer. The Spectrum's screen BORDER state depends upon the current mode: Green for Mode 1 Yellow for Mode 2 When the message 'C?' is output, you are required to enter a CESIL command: COMMAND NOTES beg - Execute the CESIL program. cha - Change a CESIL line. del - Delete a CESIL line. lis - List the CESIL program. new - Re-initiate program - same as stopping the program and entering RUN 1. ter - Stop the interpreter - terminate. * - Start CESIL entry. When using 'cha' or 'del', the first parameter is the line to be edited (del followed by Enter followed by 5 followed by Enter, will delete the fifth line). When '?' is output, you are required to enter a CESIL line. Labelled lines are l1 to l99 and store locations are designated a1 to a99 (positive constants do not require '+'). Please note that 'l' means 'label'. Types of argument a - The argument required is: (i) Space, any whole number between -32768 and +32768. or (ii) Space, a ; any integer between 1 and 99. eg. (i) loa -2 (ii) add a5 b - The argument required is: Space, 'l' , any integer 1 to 99. eg. jiz l10 c - The argument required is: Space, quote, any alpha-numeric text of length 1 to 22, close quote. eg. pri "Hello there!" d - The argument required is: Space, a, any number 1 to 99 (integer). eg. sto a86 e - The argument required is: Any alpha numeric text of length 1 to 23. eg. ; This is a comment n - No argument required. All instructions are standard, except 'kin', which is the same as BASIC's INPUT number. The instruction 'in' is the same as BASIC's READ. All arithmetic is calculated solely using the accumulator. In order to exit from CESIL 2 entry, enter: % As a line, you will then be asked to enter the data string in the form: n1,n2,n3,...nx, * n1=item 1 n2=item2... nx=last item eg. 1,2,3,5,7,9, * (Note the comma before the *) For no data, just enter an asterisk. (Also, only the first 20 items will be accepted.) To change the data for another RUN of the same program: PROMPT ENTER C? * ? % Data? data string Also, if after entering and executing a CESIL program, entry mode is again initiated and the lines will be added to the end of the previous lines. The number of program lines available is 100 (that's my limit - not the Spectrum's). To change the maximum number of lines, make the following changes to the BASIC program (!! = the number instead of 100 - maximum value 255). 20 ...: DIM p$ (!!,25): ... 1380 FOR x=1 TO !! 2030 FOR z=VAL i$ + 1 TO !! 3710 IF lastln<(!!+1) THEN GO TO 3750 4180 FOR c=1 TO !! During CESIL2 execution or CESIL2 listing (lis), command mode may be achieved by pressing the space key - as long as it is unshifted! Labelled lines (i) Labels - l1 to l9 The format is l, n, Space, Space, instruction + argument. eg. l1 lin [Presumably there should have been a section (ii) here,] [with the syntax for labels l10 -l99, but it's missing ] [from the magazine article. JimG.] Also, arguments should be preceded by a single space, in turn preceded by the instruction. To SAVE the ZX-CESIL 2 program, type in the following: SAVE "cesil" LINE 4450 The program, with all variables, uses approximately 18K. With the screen, printer buffer, etc, this expands to 25.9K. Errors ZX-CESIL2 generates error messages for various user errors. The possible error/report messages are: (i) Data all used. (ii) List complete. (iii) Illegal label error. (iv) Instruction does not exist. (v) Command as statement error. (vi) Illegal use of argument error. (vii) Space missing error. (viii) Label missing error. (ix) Illegal operand. (x) Number out of range error. (xi) Location missing. (xii) Invalid location. (xiii) Missing quote error. (xiv) Invalid text error. (xv) What? (xvi) Statement as command error. (xvii) No more program room. (xviii) Data invalid. (xix) First 20 items of data only accepted. (xx) No hal instruction. (xxi) Last line reached or hal executed. (xxii) Called label does not exist. (xxiii) Arithmetic overflow. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = INSTRUCTION PURPOSE ARGUMENT TYPE add addition a div division a hal halt execution n in input from data n jin jump if negative b jiz jump if zero b jum jump b kin input from keyboard n lin start new line n loa load a number a mul multiplication a out output n pri print c sto store d sub subtraction a ; comments e = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -- Another Fine Product transcribed by: Jim Grimwood (jimg@globalnet.co.uk), Weardale, England --