|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 23040 (0x5a00) Types: TextFile Names: »comalsyntax«
└─⟦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«
; *********************************************************** ; * * ; * ******* ******* ** ** ******* * * ; * * * * * * * * * * * * * ; * * * * * * * * * * * * ; * * * * * * * ********* * * ; * * * * * * * * * * ; * * * * * * * * * * * * ; * ******* ******* * * * * ********* * ; * * ; *********************************************************** ; ; ; 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◀