DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦85de56f2e⟧ TextFile

    Length: 23040 (0x5a00)
    Types: TextFile
    Names: »comalsyntax«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »comalsyntax« 
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »comalsyntax« 

TextFile

;       ***********************************************************
;       *                                                         *
;       *   *******    *******   **     **   *******   *          *
;       *  *       *  *       *  * *   * *  *       *  *          *
;       *  *          *       *  *  * *  *  *       *  *          *
;       *  *          *       *  *   *   *  *********  *          *
;       *  *          *       *  *       *  *       *  *          *
;       *  *       *  *       *  *       *  *       *  *       *  *
;       *   *******    *******   *       *  *       *  *********  *
;       *                                                         *
;       ***********************************************************
;
;
;                       s y n t a x   t a b l e
\f


; actions used by the syntaxtable
;
; a1   : store statement number
; a2   : store program byte
; a3   : store byte 544 (print)
; a4   : line delete
; a5   : store 1040 (eos), exit
; a6   : syntax error
; a7   : store program statement number
; a8   : store 1033 (then)
; a9   : output 556 (goto) then a7
; a10  : look up variable name then a2
; a11  : store variable name as dummyargument
; a12  : a16, then output null byte
; a13  : batch without filename
; a14  : output integer or real number
; a15  : check for statement number store byte 
;        and scan remark string
; a16  : check for statement number then a2
; a17  : statement number:=0, then a7
; a18  : stack monadic -
; a19  : scan and store string literal
; a20  : convert letter to user function
; a21  : store <get addr> stack := (numeric)
; a22  : output (.
; a23  : pop stack match:=true
; a24  : pop stack match:=false
; a25  : a14 then a23
; a26  : a20 then a50
; a27  : output subscripts comma
; a28  : output .), then a23
; a29  : scannerbackup:=true, then a23
; a30  : save console command
; a31  : execute saved console command
\f


; a32  : suply linenumber 0 then a35
; a33  : linenumber:= if linenumber1=0 then 9999
;                                      else linenumber1,
;        then a36
; a34  : suply linenumber 10, then a35
; a35  : linenumber1:=linenumber
; a36  : linenumber2:=linenumber
; a37  : bump linenumber count then a7
; a38  : replace with <exit subs>
; a39  : replace load with get addr, store exit addr
; a40  : read real number
; a41  : not used
; a42  : a19 then a23
; a43  : output 539 (let)
; a44  : output 556 (goto) then a37
; a45  : a2, then a23
; a46  : store ) (arithmetic)
; a47  : linenumber1:=9999
; a48  : delete lines
; a49  : store scratch, scan scratch string
; a50  : stack operator
; a51  : a52 then a23
; a52  : unstack operator
; a53  : stack string rel op
; a54  : stack := (numeric)
; a55  : stack := (string)
; a56  : replace load with get addr
; a57  : store = (not operator)
; a58  : stack , (string concat)
; a59  : a14 then a52
; a60  : store <load>
; a61  : store <load1>
; a62  : store <load2>
; a63  : store <exit subs>
; a64  : a61 then a23
; a65  : a60 then a29
; a66  : a62 then a23
; a67  : a62 then a29
; a68  : a46 then a51
; a69  : a46 then a45
\f


; syntax table for comal.
;
; each element in the table is 3 integers:
; word 1: if left halfword=0 then right
;            halfword is the next expected
;            value from scanner.
;         if left halfword=1 then right halfword
;            is the index of a subtree 'subroutine'.
;         if left halfword=2 then right halfword
;            is the number of a routine in the parser.
;
; word 2: left halfword: new node if match
;         right halfword: action
;
; word 3: same as word 2, but for no match.
;
;
        @1         ; statement number.
        st1+a1
        0

        1040       ; eos (end of statement)
        a4
        0

        11         ; run
        run+a30
        0

        12         ; runl
        run+a30
        0

        2          ; batch
        btch+a30
        0

        6          ; list
        list+a30
        0

        1          ; auto
        auto1+a30
        0
\f


        10         ; renumber
        auto1+a30
        0

        13         ; scratch
        cend+a49
        0

        7          ; load
        load+a30
        0


        9          ; punch
        list+a30
        0

        15         ; time
        time+a30
        0
 
        8          ; message
        mess+a30
        0
 
        17         ; kill
        kill+a30
        0

        @2         ; look for console command
        cend+a30
        0

\f


st1.
        520        ; endproc
        a15
        0

        514        ; proc
        exec+a16
        0

        517        ; case
        case+a16
        0

        525        ; when
        when+a16
        0

        521        ; endcase
        a15
        0

        516        ; while
        while+a16
        0

        518        ; repeat
        a15
        0

        524        ; until
        until+a16
        0

        1039       ; ,
        dp         ; line delete
        0
\f


        526        ; else
        a15
        0

        519        ; endif
        a15
        0

        529        ; end
        a15
        0

        522        ; endwhile
        a15
        0

        557        ; on
        on+a12
        0

        552        ; def
        def+a16
        0

        515        ; for
        for+a16
        0

        523        ; next
        exec+a16
        0

        551        ; data
        data+a16
        0

        527        ; rem
        a15
        0
\f


st2.
        547        ; rename
        renam+a2
        0

        550        ; tab
        tab+a2
        0

        543        ; page
        tab+a2
        0

        535        ; delete
        save+a2
        0

        554        ; exec
        exec+a16
        0

        541        ; new
        end+a2
        0

        549        ; save
        save+a2
        0

        537        ; enter
        save+a2
        0

        533        ; chain
        chain+a2
        0

        542        ; open
        open+a2
        0

        534        ; close
        close+a2
        0
\f


        545        ; randomize
        end+a2
        0

        556        ; goto
        goto+a16
        0

        555        ; gosub
        goto+a16
        0

        513        ; if
        if+a2
        0

        528        ; stop
        a15
        0

        530        ; return
        a15
        0

        539        ; let
        let+a2
        0

        540        ; mat
        mat+a2
        0

        536        ; dim
        dim+a2
        0

        548        ; restore
        rest+a2
        0

        538        ; input
        input+a2
        0
\f


        544        ; print
        print+a2
        0

        558        ; write
        write+a2
        0

        1038       ; ';'
        print+a3
        0

        546        ; read
        read+a2
        0

        531        ; bye
        end+a2
        0

        559        ; lowbound
        delay+a2
        0

        560        ; lookup
        save+a2
        0

        553        ; delay
        delay+a2
        0

        572        ; kitoff
        until+a2
        0

        573        ; kiton
        until+a2
        0

        574        ; alfalock
        alfa+a2
        0
\f


        561        ; create
        create+a2
        0

        562        ; changesize
        changesize+a2
        0

        563        ; copy
        rename+a2
        0

        564        ; claim
        end+a2
        0

        565        ; search
        search+a2
        0

        566        ; scope
        scope+a2
        0

        567        ; newclaim
        newclaim+a2
        0

        568        ; scancat
        search+a2
        0

        569        ; digits
        tab+a2
        0

        571        ; printeps
        tab+a2
        0

        570        ; printdate
        prdate+a2
        0
\f


        1040       ; eos
        a4
        let+a43

dp.     @1         ; statement number
        a35
        a47

        1040       ; eos
        a48
        a6         ; syntax error

btch.   1537       ; "
        cend+a19
        cend+a13

run.    @1         ; statement number
        cend+a35
        a32

        1537       ; "
        cend+a19
        cend+a13

list.   @1         ; statement number
        a35
        a32

        1034       ; to
        list2+0
        0

        1039       ; ,
        0
        list1+a33

list2.  @1         ; statement number
        a36
        a6

list1.  1537       ; "
        cend+a19
        cend+a13
\f


auto1.  @1         ; statement number
        a35
        a34

        1032       ; step
        auto2
        0

        1039       ; ,
        0
        cend+a33

auto2.  @1         ; statement number
        cend+a36
        a6

until.  expr       ; expression
        end
        a6

renam.  fn         ; filename
        0
        a6

rena1.
        1039       ; ,
        a2
        a6
\f


save.   fn         ; filename
        end
        a6

load.   1537       ; "
        cend+a19
        a6

time.   3599       ; =
        0
        a6

numbe.  0          ; number
        cend+a40
        a6

end.    1040       ; end of statement
        a5
        a6

cend.   1040       ; end of statement
        a31
        a6

goto.   @1         ; statement number
        end+a7
        a6
\f


chain.  fn         ; filename
        0
        a6

        1040       ; end of statement
        a5
        0

        1033       ; then
        a2
        a8

        556        ; goto
        0
        0

        @1         ; statement number
        end+a9
        a6

rest.   @1         ; statement number
        end+a7
        end+a17

open.   fld        ; filedesignator
        save
        a6

close.  fld        ; filedesignator
        end
        end
\f


if.     expr       ; expression
        0
        a6

        1033       ; then
        a2
        a8

        @1         ; statement number
        end+a9
        0

        1025       ; do, don't store !
        0
        0

        1040       ; eos
        a5
        st2

alfa.   3599       ; =
        a57
        a6

        expr       ; expression
        end+0
        a6
\f


on.     1027       ; esc
        on4+a2
        0

        1026       ; err
        on4+a2
        0

        expr       ; expression
        0
        a6

        1033       ; then
        a2
        on1+a8

        @1         ; statement number
        on2+a44
        0

on1.    556        ; goto
        on3+a2
        0

        555        ; gosub
        a2
        a6

on3.    @1         ; statement number
        a37
        a6

on2.    1039       ; ,
        on3
        end

on4.    1033       ; then
        st2+a2
        st2+a8
\f


def.    2560       ; fn<array name>
        a20
        a6

        1044       ; (
        0
        a6

        2048       ; simple variable name
        a11
        a6

        1045       ; )
        0
        a6

        3599       ; =
        until+a57
        a6
\f


for.    2048       ; simple variable name
        a10
        a6

        3599       ; =
        a21
        a6

        expr       ; expression
        52
        a6

        1034       ; to
        a2
        a6

        expr       ; expression
        0
        a6

        1032       ; step
        until+a2
        end

exec.   2048       ; simple variable name
        end+a10
        a6
\f


data.   1537       ; "
        data2+a19
        0

        3594       ; +
        data1
        0

        3595       ; -
        a18
        data1

        0          ; number
        data2+a59
        a6

data1.  0          ; number
        a14
        a6

data2.  1039       ; ,
        data+a2
        end

delay.  3599       ; =
        until+a57
        a6
\f


let.    nv         ; numeric variable
        a56
        let1+0

        3599       ; =
        a54
        a6

        expr       ; numeric expression
        let3+a52
        a6

let1.   sv         ; string variable
        a56
        a6

        3599       ; =
        a55
        a6

        sex        ; string expression
        0
        a6

let2.   1039       ; ,
        a58
        let3+a52

        sex        ; string expression
        let2+a52
        a6

let3.   1038       ; ';'
        let+a2
        end+0
\f


mat.    2048       ; variable name
        a10
        mat1+0

        3599       ; =
        a2
        a6

        1044       ; (
        a2
        mat2+0

        expr       ; numeric expression
        0
        a6

        1045       ; )
        a2
        a6

        3590       ; *
        mat4+a2
        a6

mat2.   2048       ; variable name
        a10
        mat3+0

        3594       ; +
        mat4+a2
        0

        3595       ; -
        mat4+a2
        0

        3590       ; *
        a2
        end+0

mat4.   2048       ; variable name
        end+a10
        a6
\f


mat3.   1030       ; inv
        mat5+a2
        0

        1035       ; trn
        a2
        mat6+0

mat5.   1044       ; (
        a2
        a6

        2048       ; variable name
        a10
        a6

        1045       ; )
        end+a2
        a6

mat6.   1037       ; zer
        end+a2
        0

        3          ; con
        end+a2
        0

        1029       ; idn
        end+a2
        a6
\f


mat1.   538        ; input
        mat8+a2
        0

        546        ; read
        a2
        mat9

mat8.   fld        ; file designator
        0
        0

        2048       ; variable name
        a10
        a6

mat8a.  2048       ; variable name
        a10
        0

        1039       ; ,
        mat8a+a2
        end+0

mat9.   544        ; print
        a2
        mat10+0

        fld        ; file designator
        mat12+0
        mat12+0

mat10.  558        ; write
        a2
        mat13+0

        fld        ; file designator
        0
        a6
\f


mat12.  2048       ; variable name
        a10
        a6

mat11.  1039       ; ,
        mat12+a2
        0

        1038       ; ';'
        a2
        end+0

        2048       ; variable name
        mat11+a10
        end+0

mat13.  1043       ; solve
        a2
        a6

        2048       ; variable name
        a10
        a6

        3590       ; *
        a2
        a6

        2048       ; variable name
        a10
        a6

        3599       ; =
        a2
        a6

        2048       ; variable name
        end+a10
        a6
\f


dim.    2048       ; variable name
        dim1+a10
        0

        2049       ; string name
        a10
        a6

dim1.   sbl        ; subscript list
        a63
        a6

        1039       ; ,
        dim+a2
        end+0

tab.    fld        ; file designator
        0
        0

        3599       ; =
        until+a57
        a6
\f


input.  fld        ; file designator
        0
        0

inpt1.  1537       ; "
        a19
        inpt2+0

        1039       ; ,
        a2
        a6

inpt2.  nv         ; numeric variable
        inpt3+a39
        0

        sv         ; string variable
        a39
        a6

inpt3.  1039       ; ,
        inpt1+a2
        0

        1038       ; ';'
        end+a2
        end+0
\f


read.   fld        ; file designator
        0
        0

read1.  nv         ; numeric variable
        read2+a39
        0

        sv         ; string variable
        a39
        a6

read2.  1039       ; ,
        read1+a2
        end+0

write.  fld        ; file designator
        0
        a6

writ1.  snex       ; string or numeric expression
        0
        a6

        1039       ; ,
        writ1+a2
        end+0
\f


print.  fld        ; file designator
        0
        0

        1036       ; using
        a16
        pr0+0

        sex        ; string expression
        pr5+0
        a6

        1039       ; ,
        a2
        a6

        snex       ; string or numeric expression
        pr5+0
        a6
\f


pr0.    550        ; tab
        a2
        pr1+0

        1044       ; (
        0
        a6

        expr       ; numeric expression
        0
        a6

        1045       ; )
        pr5+a46
        a6

pr1.    snex       ; string or numeric expression
        0
        0

pr5.    1039       ; ,
        pr0+a2
        0

        1038       ; ';'
        pr0+a2
        end+0
\f


when.   snex       ; string or numeric expression
        0
        a6

        1039       ; ,
        when+a2
        end+0

case.   snex       ; string or numeric expression
        0
        a6

        1031       ; of
        end+a2
        a6

snex:   sex        ; string expression
        0
        snex1

        @3         ; relational operator
        a53
        a29

        sex        ; string expression
        a52
        a6

        3609       ; or
        exp01+a50
        0

        exr1       ;
        exp0+0
        a29

snex1.  expr       ; expression
        a23
        a24
\f


expr:
        expr1
        0
        a24

exp0.   3609       ; or
        a50
        a29

exp01.  expr1
        exp0+a52
        a6

expr1:
        expr2
        0
        a24

exr1:
exp1.   3608       ; and
        a50
        a29

        expr2
        exp1+a52
        a6

expr2:
        3586       ; not
        a50
        exp2

        expr3
        a51
        a6

exp2.   expr3
        a23
        a24
\f


expr3:
        simple     ; simple expression
        0
        exp3+0

        @3         ; relational operator
        a50
        a29

        simple     ; simple expression
        a51
        a6

exp3.   sex        ; string expression
        0
        a24

        @3         ; relational operator
        a53
        a24

        sex        ; string expression
        a51
        a6
\f


simple:
        3594       ; +
        si0+0
        0

        3595       ; -
        si2+a18
        0

si0.    term       ; term
        0
        a24

si1.    @4         ; adding operator
        a50
        a29

si2.    term
        si1+a52
        a6

term:
        factor     ; factor
        0
        a24

te0.    @5         ; multiplying operator
        a50
        a29

        factor
        te0+a52
        a6

factor: primary    ; primary
        0
        a24

fac1.   3589       ; ^
        a50
        a29

        primary
        fac1+a52
        a6
\f


primary:
        nv         ; numeric variable
        a23
        0

        0          ; number
        a25
        0

        1540       ; false
        a45
        0

        1541       ; true
        a45
        0

        @6         ; function
        prim0+a50
        0

        2560       ; user function
        prim3+a26
        0

        3102       ; ord
        prim4+a50
        0

        3103       ; len
        prim4+a50
        0

        prim5
        a23
        a24
\f


prim0.  1044       ; (
        a22
        a6

        expr       ; expression
        0
        a6

prim1.  1039       ; ,
        a27
        prim2

        expr       ; expression
        prim1+a52
        a6

prim2.  1045       ; )
        a68
        a6
\f


prim3.  prim5      ; ( expr )
        a51
        a6

prim4.  1044       ; (
        a22
        a6

        sex        ; string expression
        0
        a6

        1045       ; )
        a68
        a6

prim5:  1044       ; (
        0
        a24

        expr       ; expression
        0
        a6

        1045       ; )
        a69
        a6
\f


while.  expr       ; expression
        0
        a6

        1033       ; then (don't store)
        0
        0

        1025        ; do
        end+a2
        a6
\f


sbl:
        1044       ; (
        a22
        a24

        expr       ; expression
        0
        a6

sbl1.   1039       ; ,
        a27
        sbl2

        expr
        sbl1+a52
        a6

sbl2.   1045       ; )
        a28
        a6
\f


nv:
        2048       ; variabel name
        a10
        a24

        sbl        ; subscript list
        a64
        a65

sv:
        2049       ; string name
        a10
        a24

        sbl        ; subscript list
        a66
        a67

sex:
fn:
        3101       ; chr
        a50
        sex1

        1044       ; (
        a22
        a6

        expr       ; expression
        0
        a6

        1045       ; )
        a68
        a6

sex1.   sv         ; string variable
        a23
        0

        1537       ; "
        a42
        a24
\f


fld:
        1028        ; file
        a2
        a24

        sbl        ; subscript list
        a63
        a6

        1039       ; ,
        a23
        a29

create.
        fn         ; filename
        0
        a6

        1039       ; ','
        a2
        a6

        fn         ; filename (kitname)
        0
        crea1+0

        1039       ; ','
        a2
        a6

crea1.
        expr       ; expression
        0
        a6

        1039       ; ','
        a2
        end+0

        expr       ; expression
        end+0
        a6
\f


changesize.
        fn         ; filename
        0
        a6

chaz1.
        1039       ; ','
        a2
        a6

        expr       ; expression
        end+0
        a6
\f


search.
        fn         ; filename
        end+0
        end+0

scope.
        1041       ; mater
        rename+a2
        0

        1042       ; user
        rename+a2
        a6

prdate. fld        ; file designator
        0
        0

        prd1       ; expression ,
        0
        0

        prd1
        0
        0

        expr
        0
        a6

        1038      ; ';'
        end+a2
        0

        1039      ; ','
        end+a2
        end+0

prd1:   expr       ; expression
        0
        a6

        1039       ; ','
        a45
        a6
\f


newclaim.
        sex        ; string expression
        0
        a6

        1039       ; ','
        a2
        a6

        fn         ; filename (kitname)
        0
        newc1

        1039       ; ','
        a2
        a6

newc1.
        expr       ; expression
        chaz1+0
        a6
 
mess.
        sex        ; string expression
        0
        a6
 
        1039       ; ','
        a2
        cend+0

        expr       ; expression
        0
        a6

        1039       ; ','
        a2
        a6

        sex        ; string expression
        cend+0
        a6
\f


kill.
        sex        ; string expression
        0
        a6
 
        1039       ; ','
        a2
        a6
 
        expr       ; expression
        cend+0
        a6
\f


;
;
;
;
;      *********************************************
;      *                                           *
;      *   end of comal syntax table               *
;      *                                           *
;      *********************************************
;
;
;
;
▶EOF◀