ZX Cesil 2(ID:7792/)


?Improved version of Cesil by John Miller


Related languages
ZX Cesil => ZX Cesil 2   Extension of

References:
  • Miller, John "ZX-CESIL 2" ZX Computing Apr/May&Jun/Jul.1983 view details Abstract: 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

    ArchiveZip file with TAP prepared by Jim Grimwood