--- /dev/null
+// $Id: CGHDR,v 1.3 2004/12/21 09:37:53 rn Exp $
+
+// CGHDR
+
+
+GET "LIBHDR"
+
+MANIFEST $( // OCODE OPERATORS
+S.TRUE=4; S.FALSE=5
+S.RV=8; S.FNAP=10
+S.MULT=11; S.DIV=12; S.REM=13; S.PLUS=14; S.MINUS=15
+S.QUERY:16; S.NEG=17
+S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
+S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34
+S.EQV=35; S.NEQV=36; S.COND=37
+S.LP=40; S.LG=41; S.LN=42; S.LSTR=43; S.LL=44
+S.LLP=45; S.LLG=46; S.LLL=47
+
+S.RTAP=51; S.GOTO=52
+S.RETURN=67; S.FINISH=68
+S.SWITCHON=70
+S.GLOBAL=76
+$)
+
+MANIFEST $(
+S.SP=80; S.SG=81; S.SL=82; S.STIND=83
+S.JUMP=85; S.JT=86; S.JF=87
+S.LAB=90; S.STACK=91; S.STORE=92; S.RSTACK=93; S.ENTRY=94
+S.SAVE=95; S.FNRN=96; S.RTRN=97; S.RES=98; S.RESLAB=99
+S.DATALAB=100; S.ITEML=101; S.ITEMN=102; S.ENDPROC=103; S.END=104
+S.CHAR=105; ERROR:108; S.DEBUG:109
+$)
+
+
+
+
+GLOBAL $(
+CH:100; WORDV:102
+INTCODE:105; SYSPRINT:106; SYSIN:107
+SSP:110; STATE:111; AD.A:113; AD.K:114
+OPTION:128
+DATAV:152; DATAP:153; DATAT:154
+PROGLENGTH:155; LINEP:156; PARAM:157
+OP:171 $)
+
+GLOBAL $(
+READOP:210; RDN:211; RDL:212
+$)
+
+GLOBAL $(
+GENCODE:230
+$)
+
+GLOBAL $(
+FORCE.NIL:240; FORCE.AD:241; FORCE.AC:242; FORCE.ACAD:243
+LOAD:244
+STOREIN:246
+CGSTRING:250; DATA:251; NEXTPARAM:252
+$)
+
+GLOBAL $(
+CODE:260; COMPLAB:261; OPCODE:262; WR:263; WRN:264
+WRDATA:265
+$)
+
+MANIFEST $(
+M.N=0; M.I=1; M.P=2; M.IP=3; M.L=4; M.IL=5; M.G=6; M.IG=7
+F.L='L'; F.S='S'; F.A='A'; F.J='J'; F.T='T'; F.F='F'; F.K='K'; F.X='X'
+F.D='D'; F.C='C'
+NIL=0; AD=1; AC=2; ACAD=3
+$)
--- /dev/null
+// $Id: LIBHDR,v 1.6 2004/12/21 13:03:39 rn Exp $
+
+// LIBHDR
+GLOBAL $(
+START:1
+SELECTINPUT:11; SELECTOUTPUT:12
+RDCH:13; WRCH:14; UNRDCH:15
+INPUT:16; OUTPUT:17
+STOP:30
+LEVEL:31; LONGJUMP:32
+REWIND:35; APTOVEC:40
+FINDOUTPUT:41; FINDINPUT:42
+ENDREAD:46; ENDWRITE:47
+STACKBASE:54; STACKEND:55
+WRITES:60; WRITEN:62; NEWLINE:63; NEWPAGE:64
+PACKSTRING:66; UNPACKSTRING:67; WRITED:68
+READN:70; TERMINATOR:71
+WRITEHEX:75; WRITEF:76; WRITEOCT:77
+MAPSTORE:78
+GETBYTE:85; PUTBYTE:86
+RESULT2:91
+$)
+
+
+MANIFEST $(
+ENDSTREAMCH=-1; BYTESPERWORD=4; BITSPERWORD=32
+MAXINT=#X7FFFFFFF; MININT=#X80000000
+FIRSTFREEGLOBAL=150
+$)
--- /dev/null
+// $Id: SYNHDR,v 1.2 2004/12/11 11:55:14 rn Exp $
+
+// SYNHDR
+
+
+GET "LIBHDR"
+
+MANIFEST $( // AE OPERATORS AND SYMBOLS
+S.NUMBER=1; S.NAME=2; S.STRING=3; S.TRUE=4; S.FALSE=5
+S.VALOF=6; S.LV=7; S.RV=8; S.VECAP=9; S.FNAP=10
+S.MULT=11; S.DIV=12; S.REM=13
+S.PLUS=14; S.MINUS=15; S.QUERY=16; S.NEG=17
+S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
+S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34
+S.EQV=35; S.NEQV=36; S.COND=37; S.COMMA=38; S.TABLE=39
+
+S.AND=40; S.VALDEF=41; S.VECDEF=42; S.CONSTDEF=43
+S.FNDEF=44; S.RTDEF=45
+
+S.ASS=50; S.RTAP=51; S.GOTO=52; S.RESULTIS=53
+S.COLON=54
+S.TEST=55; S.FOR=56; S.IF=57; S.UNLESS=58
+S.WHILE=59; S.UNTIL=60; S.REPEAT=61; S.REPEATWHILE=62
+S.REPEATUNTIL=63; S.LOOP=65; S.BREAK=66; S.RETURN=67; S.FINISH=68
+S.ENDCASE=69; S.SWITCHON=70; S.CASE=71; S.DEFAULT=72
+S.SEQ=73; S.LET=74; S.MANIFEST=75; S.GLOBAL=76; S.STATIC=79
+$)
+
+MANIFEST $( // OTHER CANONICAL SYMBOLS
+S.BE=89; S.END=90; S.LSECT=91; S.RSECT=92; S.GET=93
+S.SEMICOLON=97; S.INTO=98; S.TO=99; S.BY=100; S.DO=101; S.OR=102
+S.VEC=103; S.LPAREN=105; S.RPAREN=106
+$)
+
+GLOBAL $( // GLOBALS USED IN LEX
+CHBUF:100; DECVAL:101
+GETV=103; GETP=104; GETT=105
+WORDV:106; WORDSIZE:107; CHARV:108; CHARP:109
+PRSOURCE:110; PRLINE:111
+SYMB:115; WORDNODE:116; CH:117; RDTAG:118
+NEXTSYMB:120; DECLSYSWORDS:121; NLPENDING:122
+LOOKUPWORD:125; RCH:126; PPTRACE:127; OPTION:128
+WRCHBUF:131; CHCOUNT:132; LINECOUNT:133
+NULLTAG:134; REC.P:135; REC.L:136
+$)
+
+GLOBAL $( // GLOBALS USED IN CAE
+RDBLOCKBODY:140; RDSECT:141
+RNAMELIST:142; RNAME:143
+REXP:144; RDEF:145; RCOM:146
+RDCDEFS:147; NAMETABLE:148; NAMETABLESIZE:149
+FORMTREE:150; CAEREPORT:151; PLIST:152
+CHECKFOR:153; IGNORE:154; PERFORMGET:155; REXPLIST:156
+RDSEQ:157
+LIST1:161; LIST2:162; LIST3:163; LIST4:164; LIST5:165
+NEWVEC:166; TREEP:167; TREEVEC:168; LIST6:169
+CHARCODE:190; REPORTCOUNT:191; REPORTMAX:192
+SOURCESTREAM:193; SYSPRINT:194; OCODE:195; SYSIN:196
+$)
+
+MANIFEST $( // SELECTORS
+H1=0; H2=1; H3=2; H4=3; H5=4; H6=5
+$)
--- /dev/null
+// $Id: TRNHDR,v 1.1 2004/12/09 20:29:36 rn Exp $
+
+// TRNHDR
+
+
+GET "LIBHDR"
+
+MANIFEST $( // AE OPERATORS AND SYMBOLS
+S.NUMBER=1; S.NAME=2; S.STRING=3; S.TRUE=4; S.FALSE=5
+S.VALOF=6; S.LV=7; S.RV=8; S.VECAP=9; S.FNAP=10
+S.MULT=11; S.DIV=12; S.REM=13; S.PLUS=14; S.MINUS=15; S.QUERY=16
+S.NEG=17
+S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
+S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34
+S.EQV=35; S.NEQV=36; S.COND=37; S.COMMA=38; S.TABLE=39
+
+S.AND=40; S.VALDEF=41; S.VECDEF=42; S.CONSTDEF=43
+S.FNDEF=44; S.RTDEF=45
+
+S.ASS=50; S.RTAP=51; S.GOTO=52; S.RESULTIS=53
+S.COLON=54
+S.TEST=55; S.FOR=56; S.IF=57; S.UNLESS=58
+S.WHILE=59; S.UNTIL=60; S.REPEAT=61; S.REPEATWHILE=62
+S.REPEATUNTIL=63; S.LOOP=65; S.BREAK=66; S.RETURN=67; S.FINISH=68
+S.ENDCASE=69; S.SWITCHON=70; S.CASE=71; S.DEFAULT=72
+S.SEQ=73; S.LET=74; S.MANIFEST=75; S.GLOBAL=76
+S.LOCAL=77; S.LABEL=78; S.STATIC=79
+$)
+
+
+MANIFEST $( // SELECTORS
+H1=0; H2=1; H3=2; H4=3; H5=4; H6=5
+$)
+
+MANIFEST $(
+S.LP=40; S.LG=41; S.LN=42; S.LSTR=43; S.LL=44
+S.LLP=45; S.LLG=46; S.LLL=47
+
+S.SP=80; S.SG=81; S.SL=82; S.STIND=83
+S.JUMP=85; S.JT=86; S.JF=87
+S.LAB=90; S.STACK=91; S.STORE=92; S.RSTACK=93; S.ENTRY=94
+S.SAVE=95; S.FNRN=96; S.RTRN=97; S.RES=98; S.RESLAB=99
+S.DATALAB=100; S.ITEML=101; S.ITEMN=102
+S.ENDPROC=103
+$)
+
+
+GLOBAL $(
+OPTION:128
+PLIST:152
+
+CHARCODE:190; REPORTCOUNT:191; REPORTMAX:192
+SYSPRINT:194; OCODE:195
+
+TRANS:200; DECLNAMES:201; DECLDYN:202; DECLSTAT:203
+CHECKDISTINCT:204; ADDNAME:205; CELLWITHNAME:206
+TRANSDEF:207; SCANLABEL:208; DECLLABELS:209
+TRANSREPORT:210
+JUMPCOND:220; TRANSSWITCH:221; TRANSFOR:222
+ASSIGN:230; LOAD:231; LOADLV:232; LOADLIST:233; COMPDATALAB:234
+EVALCONST:235; LOADZERO:236; TRANSNAME:237
+COMPLAB:240; COMPJUMP:241; COMPENTRY:242
+NEXTPARAM:243; PARAMNUMBER:244; COMPILEAE:245
+
+WRC:250; OCOUNT:251; ENDOCODE:252; WRN:253; WRPN:254
+DVEC:260; DVECS:261; DVECE:262; DVECP:263; DVECT:264
+CASEK:265; CASEL:266; CASEP:267; CASET:268; CASEB:269
+CURRENTBRANCH:270
+BREAKLABEL:271; RESULTLABEL:272; DEFAULTLABEL:273; ENDCASELABEL:274
+LOOPLABEL:275
+SSP:280; VECSSP:281; SAVESPACESIZE:282
+GLOBDECL:285; GLOBDECLS:286; GLOBDECLT:287
+COMCOUNT:288 $)
+
+GLOBAL $(
+OUT1:290; OUT2:291; OUT2P:292
+OUT3:293; OUT3P:294
+OUTN:295; OUTL:296; OUTC:297
+WRITEOP:298 $)
--- /dev/null
+// $Id: cg.bcpl,v 1.4 2004/12/21 09:37:53 rn Exp $
+
+// CG1
+
+GET "CGHDR"
+
+STATIC $( WP=0; STRSIZE=0 $)
+
+LET T(S) = VALOF
+ $( FOR I = 0 TO STRSIZE DO UNLESS S!I=WORDV!I RESULTIS FALSE
+ RESULTIS TRUE $)
+
+LET READOP() = VALOF
+ $(1 LET S = VEC 20
+
+ CH := RDCH() REPEATWHILE CH='*N' \/ CH='*S'
+ WP := 0
+
+ WHILE 'A'<=CH<='Z' DO
+ $( WP := WP + 1
+ S!WP := CH
+ CH := RDCH() $)
+
+ S!0 := WP
+ STRSIZE := PACKSTRING(S, WORDV)
+
+ SWITCHON S!1 INTO
+ $( DEFAULT: IF CH=ENDSTREAMCH RESULTIS S.END
+ RESULTIS ERROR
+
+ CASE 'D':
+ RESULTIS T("DATALAB") -> S.DATALAB,
+ T("DIV") -> S.DIV,
+ T("DEBUG") -> S.DEBUG, ERROR
+
+ CASE 'E':
+ RESULTIS T("EQ") -> S.EQ,
+ T("ENTRY") -> S.ENTRY,
+ T("EQV") -> S.EQV,
+ T("ENDPROC") -> S.ENDPROC,
+ T("END") -> S.END, ERROR
+
+ CASE 'F':
+ RESULTIS T("FNAP") -> S.FNAP,
+ T("FNRN") -> S.FNRN,
+ T("FALSE") -> S.FALSE,
+ T("FINISH") -> S.FINISH, ERROR
+
+
+ CASE 'G':
+ RESULTIS T("GOTO") -> S.GOTO,
+ T("GE") -> S.GE,
+ T("GR") -> S.GR,
+ T("GLOBAL") -> S.GLOBAL, ERROR
+
+ CASE 'I':
+ RESULTIS T("ITEMN") -> S.ITEMN,
+ T("ITEML") -> S.ITEML, ERROR
+
+ CASE 'J':
+ RESULTIS T("JUMP") -> S.JUMP,
+ T("JF") -> S.JF,
+ T("JT") -> S.JT, ERROR
+
+ CASE 'L':
+ IF WP=2 DO
+ SWITCHON S!2 INTO
+ $( DEFAULT: RESULTIS ERROR
+ CASE 'E': RESULTIS S.LE
+ CASE 'N': RESULTIS S.LN
+ CASE 'G': RESULTIS S.LG
+ CASE 'P': RESULTIS S.LP
+ CASE 'L': RESULTIS S.LL
+ CASE 'S': RESULTIS S.LS $)
+
+ RESULTIS T("LAB") -> S.LAB,
+ T("LLG") -> S.LLG,
+ T("LLL") -> S.LLL,
+ T("LLP") -> S.LLP,
+ T("LOGAND") -> S.LOGAND,
+ T("LOGOR") -> S.LOGOR,
+ T("LSHIFT") -> S.LSHIFT,
+ T("LSTR") -> S.LSTR, ERROR
+
+ CASE 'M':
+ RESULTIS T("MINUS") -> S.MINUS,
+ T("MULT") -> S.MULT, ERROR
+
+ CASE 'N':
+ RESULTIS T("NE") -> S.NE,
+ T("NEG") -> S.NEG,
+ T("NEQV") -> S.NEQV,
+ T("NOT") -> S.NOT, ERROR
+
+ CASE 'P':
+ RESULTIS T("PLUS") -> S.PLUS, ERROR
+
+ CASE 'Q':
+ RESULTIS T("QUERY") -> S.QUERY, ERROR
+
+ CASE 'R':
+ RESULTIS T("RES") -> S.RES,
+ T("REM") -> S.REM,
+ T("RTAP") -> S.RTAP,
+ T("RTRN") -> S.RTRN,
+ T("RSHIFT") -> S.RSHIFT,
+ T("RSTACK") -> S.RSTACK,
+ T("RV") -> S.RV, ERROR
+
+ CASE 'S':
+ RESULTIS T("SG") -> S.SG,
+ T("SP") -> S.SP,
+ T("SL") -> S.SL,
+ T("STIND") -> S.STIND,
+ T("STACK") -> S.STACK,
+ T("SAVE") -> S.SAVE,
+ T("SWITCHON") -> S.SWITCHON,
+ T("STORE") -> S.STORE, ERROR
+
+ CASE 'T':
+ RESULTIS T("TRUE") -> S.TRUE, ERROR $)1
+
+
+AND RDN() = VALOF
+ $(1 LET A, NEG = 0, FALSE
+
+ CH := RDCH() REPEATWHILE CH='*N' \/ CH='*S'
+ IF CH='-' DO $( NEG := TRUE; CH := RDCH() $)
+
+ WHILE '0' LE CH LE '9' DO
+ $( A := A*10 +CH - '0'
+ CH := RDCH() $)
+
+ RESULTIS NEG -> -A, A $)1
+
+
+AND RDL() = VALOF
+ $(1 LET A = 0
+
+ CH := RDCH() REPEATWHILE CH='*N' \/ CH='*S'
+
+ IF CH='L' DO CH := RDCH()
+
+ WHILE '0' LE CH LE '9' DO
+ $( A := A*10 + CH - '0'
+ CH := RDCH() $)
+
+ RESULTIS A $)1
+
+
+.
+
+// CG2
+
+
+GET "CGHDR"
+
+LET START(PARM) BE
+ $(1 LET V = VEC 4000
+ DATAV, DATAT := V, 4000
+ $( LET V = VEC 50
+ WORDV := V
+
+ SYSIN := INPUT()
+ SYSPRINT := OUTPUT()
+ INTCODE := FINDOUTPUT("INTCODE")
+ IF INTCODE=0 DO INTCODE := SYSPRINT
+
+ PROGLENGTH := 0
+
+ SELECTINPUT(SYSIN)
+ SELECTOUTPUT(INTCODE)
+
+ $( SSP, STATE := 2, NIL
+ DATAP, LINEP, PARAM := 0, 0, 500
+ GENCODE() $) REPEATWHILE OP=S.GLOBAL
+
+ SELECTOUTPUT(SYSPRINT)
+ WRITEF("*NPROGRAM LENGTH = %N*N", PROGLENGTH)
+ FINISH $)1
+
+.
+
+// CG3
+
+
+GET "CGHDR"
+
+LET GENCODE() BE
+ $(1
+
+NEXT: OP := READOP()
+
+ SWITCHON OP INTO
+
+ $( DEFAULT: SELECTOUTPUT(SYSPRINT)
+ WRITEF("*NUNKNOWN KEY WORD: %S*N", WORDV)
+ SELECTOUTPUT(INTCODE)
+ GOTO NEXT
+
+ CASE S.END: RETURN
+
+ CASE S.DEBUG:
+ SELECTOUTPUT(SYSPRINT)
+ WRITEF("*NSTATE=%N, SSP=%N, AD.A=%N, AD.K=%N*N",
+ STATE, SSP, AD.A, AD.K)
+ SELECTOUTPUT(INTCODE)
+ GOTO NEXT
+
+ CASE S.LP: LOAD(RDN(), M.IP); GOTO NEXT
+ CASE S.LG: LOAD(RDN(), M.IG); GOTO NEXT
+ CASE S.LL: LOAD(RDL(), M.IL); GOTO NEXT
+ CASE S.LN: LOAD(RDN(), M.N); GOTO NEXT
+
+ CASE S.LSTR: CGSTRING(RDN()); GOTO NEXT
+
+ CASE S.TRUE: LOAD(-1, M.N); GOTO NEXT
+ CASE S.FALSE: LOAD(0, M.N); GOTO NEXT
+
+
+ CASE S.LLP: LOAD(RDN(), M.P); GOTO NEXT
+ CASE S.LLG: LOAD(RDN(), M.G); GOTO NEXT
+ CASE S.LLL: LOAD(RDL(), M.L); GOTO NEXT
+
+ CASE S.SP: STOREIN(RDN(), M.P); GOTO NEXT
+ CASE S.SG: STOREIN(RDN(), M.G); GOTO NEXT
+ CASE S.SL: STOREIN(RDL(), M.L); GOTO NEXT
+
+ CASE S.STIND: FORCE.ACAD()
+ CODE(F.S, AD.A, AD.K)
+ SSP, STATE := SSP-2, NIL
+ GOTO NEXT
+
+ CASE S.MULT:CASE S.DIV:CASE S.REM:
+ CASE S.MINUS:CASE S.EQ:CASE S.NE:
+ CASE S.LS:CASE S.GR:CASE S.LE:CASE S.GE:
+ CASE S.LSHIFT:CASE S.RSHIFT:
+ CASE S.LOGAND:CASE S.LOGOR:CASE S.NEQV:CASE S.EQV:
+ FORCE.ACAD()
+ CODE(F.L, AD.A, AD.K)
+ CODE(F.X, OPCODE(OP), M.N)
+ STATE, SSP := AC, SSP-1
+ GOTO NEXT
+
+ CASE S.RV:CASE S.NEG:CASE S.NOT:
+ FORCE.AC()
+ CODE(F.X, OPCODE(OP), M.N)
+ GOTO NEXT
+
+ CASE S.PLUS: FORCE.ACAD()
+ CODE(F.A, AD.A, AD.K)
+ STATE, SSP := AC, SSP-1
+ GOTO NEXT
+
+ CASE S.JUMP: FORCE.NIL()
+ CODE(F.J, RDL(), M.L)
+ GOTO NEXT
+
+ CASE S.JT:CASE S.JF:
+ FORCE.AC()
+ CODE(OP=S.JT->F.T,F.F, RDL(), M.L)
+ SSP, STATE := SSP-1, NIL
+ GOTO NEXT
+
+ CASE S.GOTO: FORCE.AD()
+ CODE(F.J, AD.A, AD.K)
+ SSP, STATE := SSP-1, NIL
+ GOTO NEXT
+
+ CASE S.LAB: FORCE.NIL()
+ COMPLAB(RDL())
+ GOTO NEXT
+
+ CASE S.QUERY: FORCE.NIL(); SSP := SSP + 1; GOTO NEXT
+
+ CASE S.STACK: FORCE.NIL(); SSP := RDN(); GOTO NEXT
+
+ CASE S.STORE: FORCE.NIL(); GOTO NEXT
+
+ CASE S.ENTRY: $( LET N = RDN()
+ LET L = RDL()
+ WR('*N'); WR('$')
+ FOR I = 1 TO N DO RDN()
+ WR(' ')
+ COMPLAB(L)
+ GOTO NEXT $)
+
+ CASE S.SAVE: SSP := RDN(); GOTO NEXT
+
+ CASE S.ENDPROC: RDN(); GOTO NEXT
+ CASE S.RTAP:
+ CASE S.FNAP: $( LET K = RDN()
+ FORCE.AC()
+ CODE(F.K, K, M.N)
+ TEST OP=S.FNAP
+ THEN SSP, STATE := K+1, AC
+ OR SSP, STATE := K, NIL
+ GOTO NEXT $)
+
+ CASE S.FNRN: FORCE.AC()
+ SSP := SSP - 1
+ CASE S.RTRN: CODE(F.X, OPCODE(S.RTRN), M.N)
+ STATE := NIL
+ GOTO NEXT
+
+ CASE S.RES: FORCE.AC()
+ CODE(F.J, RDL(), M.L)
+ SSP, STATE := SSP-1, NIL
+ GOTO NEXT
+
+ CASE S.RSTACK: FORCE.NIL()
+ SSP, STATE := RDN()+1, AC
+ GOTO NEXT
+
+ CASE S.FINISH: CODE(F.X, OPCODE(OP), M.N); GOTO NEXT
+
+ CASE S.SWITCHON:
+ $( LET N = RDN()
+ LET D = RDL()
+ FORCE.AC()
+ CODE(F.X, OPCODE(OP), M.N)
+ CODE(F.D, N, M.N)
+ CODE(F.D, D, M.L)
+ SSP, STATE := SSP-1, NIL
+ FOR I = 1 TO N DO
+ $( CODE(F.D, RDN(), M.N)
+ CODE(F.D, RDL(), M.L) $)
+ GOTO NEXT $)
+
+
+ CASE S.GLOBAL:
+ WR('*N')
+ FOR I = 0 TO DATAP-2 BY 2 DO WRDATA(DATAV!I, DATAV!(I+1))
+ WR('*N')
+ FOR I = 1 TO RDN() DO
+ $( WR('G'); WRN(RDN())
+ WR('L'); WRN(RDL()); WR('*S') $)
+ WR('*N'); WR('Z'); WR('*N')
+ RETURN
+
+ CASE S.DATALAB:
+ CASE S.ITEML: DATA(OP, RDL())
+ GOTO NEXT
+
+ CASE S.ITEMN: DATA(OP, RDN())
+ GOTO NEXT $)1
+
+.
+
+// CG4
+
+
+GET "CGHDR"
+
+LET FORCE.NIL() BE
+ SWITCHON STATE INTO
+ $( CASE ACAD: CODE(F.S, SSP-2, M.P)
+
+ CASE AD: CODE(F.L, AD.A, AD.K)
+
+ CASE AC: CODE(F.S, SSP-1, M.P)
+ STATE := NIL
+
+ CASE NIL: $)
+
+AND FORCE.AD() BE
+ SWITCHON STATE INTO
+ $( CASE ACAD: CODE(F.S, SSP-2, M.P)
+ GOTO L
+
+ CASE AC: CODE(F.S, SSP-1, M.P)
+
+ CASE NIL: AD.A, AD.K := SSP-1, M.IP
+ L: STATE := AD
+
+ CASE AD: $)
+
+AND FORCE.AC() BE
+ SWITCHON STATE INTO
+ $( CASE NIL: CODE(F.L, SSP-1, M.IP)
+ GOTO L
+
+ CASE ACAD: CODE(F.S, SSP-2, M.P)
+
+ CASE AD: CODE(F.L, AD.A, AD.K)
+ L: STATE := AC
+
+ CASE AC: $)
+
+AND FORCE.ACAD() BE
+ SWITCHON STATE INTO
+ $( CASE AD: CODE(F.L, SSP-2, M.IP)
+ GOTO L
+
+ CASE AC: CODE(F.S, SSP-1, M.P)
+
+ CASE NIL: CODE(F.L, SSP-2, M.IP)
+ AD.A, AD.K := SSP-1, M.IP
+ L: STATE := ACAD
+
+ CASE ACAD: $)
+
+AND LOAD(A, K) BE
+ SWITCHON STATE INTO
+ $( CASE NIL: STATE := AD
+ GOTO M
+
+ CASE ACAD:
+ CASE AD: FORCE.AC()
+ CASE AC: STATE := ACAD
+ M: AD.A, AD.K := A, K
+ SSP := SSP + 1 $)
+
+
+AND STOREIN(A, K) BE
+ $( FORCE.AC()
+ CODE(F.S, A, K)
+ SSP, STATE := SSP-1, NIL $)
+
+AND CGSTRING(N) BE
+ $(1 LET L = NEXTPARAM()
+ DATA(S.DATALAB, L)
+ DATA(S.CHAR, N)
+ FOR I = 1 TO N DO DATA(S.CHAR, RDN())
+ LOAD(L, M.L)
+ RETURN $)1
+
+AND DATA(K, V) BE
+ $( LET P = DATAP
+ DATAV!P, DATAV!(P+1) := K, V
+ DATAP := DATAP + 2
+ IF DATAP>DATAT DO
+ $( SELECTOUTPUT(SYSPRINT)
+ WRITES("*NTOO MANY CONSTANTS*N")
+ SELECTOUTPUT(INTCODE)
+ DATAP := 0 $) $)
+
+AND NEXTPARAM() = VALOF $( PARAM := PARAM - 1
+ RESULTIS PARAM $)
+
+.
+
+// CG5
+
+
+GET "CGHDR"
+
+LET CODE(F, A, K) BE
+ $( WR(F)
+ SWITCHON K INTO
+ $( CASE M.I: WR('I')
+ CASE M.N: ENDCASE
+
+ CASE M.IG: WR('I')
+ CASE M.G: WR('G')
+ ENDCASE
+
+ CASE M.IP: WR('I')
+ CASE M.P: WR('P'); ENDCASE
+
+ CASE M.IL: WR('I')
+ CASE M.L: WR('L'); ENDCASE $)
+
+ WRN(A)
+ WR(' ')
+ PROGLENGTH := PROGLENGTH + 1 $)
+
+AND COMPLAB(N) BE $( WRN(N); WR(' ') $)
+
+AND WRDATA(K, N) BE SWITCHON K INTO
+ $( CASE S.DATALAB: COMPLAB(N); RETURN
+
+ CASE S.ITEMN: CODE(F.D, N, M.N); RETURN
+
+ CASE S.ITEML: CODE(F.D, N, M.L); RETURN
+
+ CASE S.CHAR: CODE(F.C, N, M.N); RETURN $)
+
+
+AND OPCODE(OP) = VALOF SWITCHON OP INTO
+ $( CASE S.RV: RESULTIS 1
+ CASE S.NEG:RESULTIS 2
+ CASE S.NOT:RESULTIS 3
+ CASE S.RTRN:RESULTIS 4
+ CASE S.MULT: RESULTIS 5
+ CASE S.DIV: RESULTIS 6
+ CASE S.REM: RESULTIS 7
+ CASE S.PLUS: RESULTIS 8
+ CASE S.MINUS: RESULTIS 9
+ CASE S.EQ: RESULTIS 10
+ CASE S.NE: RESULTIS 11
+ CASE S.LS: RESULTIS 12
+ CASE S.GE: RESULTIS 13
+ CASE S.GR: RESULTIS 14
+ CASE S.LE: RESULTIS 15
+ CASE S.LSHIFT:RESULTIS 16
+ CASE S.RSHIFT:RESULTIS 17
+ CASE S.LOGAND:RESULTIS 18
+ CASE S.LOGOR: RESULTIS 19
+ CASE S.NEQV: RESULTIS 20
+ CASE S.EQV: RESULTIS 21
+ CASE S.FINISH:RESULTIS 22
+ CASE S.SWITCHON:RESULTIS 23
+
+ DEFAULT: SELECTOUTPUT(SYSPRINT)
+ WRITEF("*NUNKNOWN OP %N*N", OP)
+ SELECTOUTPUT(INTCODE)
+ RESULTIS 0 $)
+
+
+AND WR(CH) BE
+ $( IF CH='*N' DO $( WRCH('*N')
+ LINEP := 0
+ RETURN $)
+
+ IF LINEP=71 DO
+ $( WRCH('/')
+ WRCH('*N')
+ LINEP := 0 $)
+ LINEP := LINEP + 1
+ WRCH(CH) $)
+
+AND WRN(N) BE
+ $( TEST N<0 DO WR('-') OR N := -N
+ IF N<-9 DO WRN(-N/10)
+ WR('0' - N REM 10) $)
--- /dev/null
+JL5
+$ 3 L0 SP3 LIL2 SP4 JL7 8 LIP3 AIP2 X1 SP5 LIP3 AIG102 X1 SP6 LIP5 LIP6/
+ X10 TL9 L0 JL6 9 LIP3 A1 SP3 7 LIP3 LIP4 X15 TL8 L-1 JL6 6 X4 5 JL13
+$ 10 LP3 SP2 15 LIG13 K24 SG100 L10 LIG100 X10 TL15 L32 LIG100 X10 TL15/
+ L0 SL1 JL17 16 L1 AIL1 SL1 LIG100 SP24 LIL1 AIP2 SP25 LIP24 SIP25 LIG1/
+3 K24 SG100 17 L65 LIG100 X15 FL18 LIG100 L90 X15 TL16 18 LIL1 SP24 L0 /
+AIP2 SP25 LIP24 SIP25 LIP2 SP26 LIG102 SP27 LIG66 K24 SL2 JL19 21 L-1 L/
+IG100 X10 FL22 L104 JL14 22 L108 JL14 23 LL499 SP26 LIL4 K24 FL25 L100 /
+SP24 JL24 25 LL498 SP26 LIL4 K24 FL27 L12 SP24 JL26 27 LL497 SP26 LIL4 /
+K24 FL29 L109 SP24 JL28 29 L108 SP24 28 26 24 LIP24 JL14 30 LL496 SP26 /
+LIL4 K24 FL32 L20 SP24 JL31 32 LL495 SP26 LIL4 K24 FL34 L94 SP24 JL33 3/
+4 LL494 SP26 LIL4 K24 FL36 L35 SP24 JL35 36 LL493 SP26 LIL4 K24 FL38 L1/
+03 SP24 JL37 38 LL492 SP26 LIL4 K24 FL40 L104 SP24 JL39 40 L108 SP24 39/
+ 37 35 33 31 LIP24 JL14 41 LL491 SP26 LIL4 K24 FL43 L10 SP24 JL42 43 LL/
+490 SP26 LIL4 K24 FL45 L96 SP24 JL44 45 LL489 SP26 LIL4 K24 FL47 L5 SP2/
+4 JL46 47 LL488 SP26 LIL4 K24 FL49 L68 SP24 JL48 49 L108 SP24 48 46 44 /
+42 LIP24 JL14 50 LL487 SP26 LIL4 K24 FL52 L52 SP24 JL51 52 LL486 SP26 L/
+IL4 K24 FL54 L25 SP24 JL53 54 LL485 SP26 LIL4 K24 FL56 L23 SP24 JL55 56/
+ LL484 SP26 LIL4 K24 FL58 L76 SP24 JL57 58 L108 SP24 57 55 53 51 LIP24 /
+JL14 59 LL483 SP26 LIL4 K24 FL61 L102 SP24 JL60 61 LL482 SP26 LIL4 K24 /
+FL63 L101 SP24 JL62 63 L108 SP24 62 60 LIP24 JL14 64 LL481 SP26 LIL4 K2/
+4 FL66 L85 SP24 JL65 66 LL480 SP26 LIL4 K24 FL68 L87 SP24 JL67 68 LL479/
+ SP26 LIL4 K24 FL70 L86 SP24 JL69 70 L108 SP24 69 67 65 LIP24 JL14 71 L/
+2 LIL1 X10 FL72 JL73 75 L108 JL14 76 L24 JL14 77 L42 JL14 78 L41 JL14 7/
+9 L40 JL14 80 L44 JL14 81 L22 JL14 JL74 73 L2 AIP2 X1 X23 D6 DL75 D69 D/
+L76 D78 DL77 D71 DL78 D80 DL79 D76 DL80 D83 DL81 74 72 LL478 SP26 LIL4 /
+K24 FL83 L90 SP24 JL82 83 LL477 SP26 LIL4 K24 FL85 L46 SP24 JL84 85 LL4/
+76 SP26 LIL4 K24 FL87 L47 SP24 JL86 87 LL475 SP26 LIL4 K24 FL89 L45 SP2/
+4 JL88 89 LL474 SP26 LIL4 K24 FL91 L33 SP24 JL90 91 LL473 SP26 LIL4 K24/
+ FL93 L34 SP24 JL92 93 LL472 SP26 LIL4 K24 FL95 L31 SP24 JL94 95 LL471 /
+SP26 LIL4 K24 FL97 L43 SP24 JL96 97 L108 SP24 96 94 92 90 88 86 84 82 L/
+IP24 JL14 98 LL470 SP26 LIL4 K24 FL100 L15 SP24 JL99 100 LL469 SP26 LIL/
+4 K24 FL102 L11 SP24 JL101 102 L108 SP24 101 99 LIP24 JL14 103 LL468 SP/
+26 LIL4 K24 FL105 L21 SP24 JL104 105 LL467 SP26 LIL4 K24 FL107 L17 SP24/
+ JL106 107 LL466 SP26 LIL4 K24 FL109 L36 SP24 JL108 109 LL465 SP26 LIL4/
+ K24 FL111 L30 SP24 JL110 111 L108 SP24 110 108 106 104 LIP24 JL14 112 /
+LL464 SP26 LIL4 K24 FL114 L14 SP24 JL113 114 L108 SP24 113 LIP24 JL14 1/
+15 LL463 SP26 LIL4 K24 FL117 L16 SP24 JL116 117 L108 SP24 116 LIP24 JL1/
+4 118 LL462 SP26 LIL4 K24 FL120 L98 SP24 JL119 120 LL461 SP26 LIL4 K24 /
+FL122 L13 SP24 JL121 122 LL460 SP26 LIL4 K24 FL124 L51 SP24 JL123 124 L/
+L459 SP26 LIL4 K24 FL126 L97 SP24 JL125 126 LL458 SP26 LIL4 K24 FL128 L/
+32 SP24 JL127 128 LL457 SP26 LIL4 K24 FL130 L93 SP24 JL129 130 LL456 SP/
+26 LIL4 K24 FL132 L8 SP24 JL131 132 L108 SP24 131 129 127 125 123 121 1/
+19 LIP24 JL14 133 LL455 SP26 LIL4 K24 FL135 L81 SP24 JL134 135 LL454 SP/
+26 LIL4 K24 FL137 L80 SP24 JL136 137 LL453 SP26 LIL4 K24 FL139 L82 SP24/
+ JL138 139 LL452 SP26 LIL4 K24 FL141 L83 SP24 JL140 141 LL451 SP26 LIL4/
+ K24 FL143 L91 SP24 JL142 143 LL450 SP26 LIL4 K24 FL145 L95 SP24 JL144 /
+145 LL449 SP26 LIL4 K24 FL147 L70 SP24 JL146 147 LL448 SP26 LIL4 K24 FL/
+149 L92 SP24 JL148 149 L108 SP24 148 146 144 142 140 138 136 134 LIP24 /
+JL14 150 LL447 SP26 LIL4 K24 FL152 L4 SP24 JL151 152 L108 SP24 151 LIP2/
+4 JL14 JL20 19 L1 AIP2 X1 X23 D14 DL21 D68 DL23 D69 DL30 D70 DL41 D71 D/
+L50 D73 DL59 D74 DL64 D76 DL71 D77 DL98 D78 DL103 D80 DL112 D81 DL115 D/
+82 DL118 D83 DL133 D84 DL150 20 14 X4
+$ 11 L0 SP2 L0 SP3 154 LIG13 K4 SG100 L10 LIG100 X10 TL154 L32 LIG100 X/
+10 TL154 L45 LIG100 X10 FL155 L-1 SP3 LIG13 K4 SG100 155 JL157 156 L10 /
+LIP2 X5 AIG100 L48 X9 SP2 LIG13 K4 SG100 157 L48 LIG100 X15 FL158 LIG10/
+0 L57 X15 TL156 158 LIP3 FL160 LIP2 X2 SP4 JL159 160 LIP2 SP4 159 LIP4 /
+JL153 153 X4
+$ 12 L0 SP2 162 LIG13 K3 SG100 L10 LIG100 X10 TL162 L32 LIG100 X10 TL16/
+2 L76 LIG100 X10 FL163 LIG13 K3 SG100 163 JL165 164 L10 LIP2 X5 AIG100 /
+L48 X9 SP2 LIG13 K3 SG100 165 L48 LIG100 X15 FL166 LIG100 L57 X15 TL164/
+ 166 LIP2 JL161 161 X4 13
+1 D0 2 D0 4 DL3 499 C7 C68 C65 C84 C65 C76 C65 C66 498 C3 C68 C73 C86 4/
+97 C5 C68 C69 C66 C85 C71 496 C2 C69 C81 495 C5 C69 C78 C84 C82 C89 494/
+ C3 C69 C81 C86 493 C7 C69 C78 C68 C80 C82 C79 C67 492 C3 C69 C78 C68 4/
+91 C4 C70 C78 C65 C80 490 C4 C70 C78 C82 C78 489 C5 C70 C65 C76 C83 C69/
+ 488 C6 C70 C73 C78 C73 C83 C72 487 C4 C71 C79 C84 C79 486 C2 C71 C69 4/
+85 C2 C71 C82 484 C6 C71 C76 C79 C66 C65 C76 483 C5 C73 C84 C69 C77 C78/
+ 482 C5 C73 C84 C69 C77 C76 481 C4 C74 C85 C77 C80 480 C2 C74 C70 479 C/
+2 C74 C84 478 C3 C76 C65 C66 477 C3 C76 C76 C71 476 C3 C76 C76 C76 475 /
+C3 C76 C76 C80 474 C6 C76 C79 C71 C65 C78 C68 473 C5 C76 C79 C71 C79 C8/
+2 472 C6 C76 C83 C72 C73 C70 C84 471 C4 C76 C83 C84 C82 470 C5 C77 C73 /
+C78 C85 C83 469 C4 C77 C85 C76 C84 468 C2 C78 C69 467 C3 C78 C69 C71 46/
+6 C4 C78 C69 C81 C86 465 C3 C78 C79 C84 464 C4 C80 C76 C85 C83 463 C5 C/
+81 C85 C69 C82 C89 462 C3 C82 C69 C83 461 C3 C82 C69 C77 460 C4 C82 C84/
+ C65 C80 459 C4 C82 C84 C82 C78 458 C6 C82 C83 C72 C73 C70 C84 457 C6 C/
+82 C83 C84 C65 C67 C75 456 C2 C82 C86 455 C2 C83 C71 454 C2 C83 C80 453/
+ C2 C83 C76 452 C5 C83 C84 C73 C78 C68 451 C5 C83 C84 C65 C67 C75 450 C/
+4 C83 C65 C86 C69 449 C8 C83 C87 C73 C84 C67 C72 C79 C78 448 C5 C83 C84/
+ C79 C82 C69 447 C4 C84 C82 C85 C69
+G210L10 G211L11 G212L12
+Z
+JL2
+$ 1 LP4 SP3 LIP3 SG152 L4000 SG154 LP4006 SP4005 LIP4005 SG102 LIG16 K4/
+057 SG107 LIG17 K4057 SG106 LL499 SP4059 LIG41 K4057 SG105 L0 LIG105 X1/
+0 FL3 LIG106 SG105 3 L0 SG155 LIG107 SP4059 LIG11 K4057 LIG105 SP4059 L/
+IG12 K4057 4 L2 SG110 L0 SG111 L0 SG153 L0 SG156 L500 SG157 LIG230 K405/
+7 L76 LIG171 X10 TL4 LIG106 SP4059 LIG12 K4057 LL498 SP4059 LIG155 SP40/
+60 LIG76 K4057 X22 X4 2
+499 C7 C73 C78 C84 C67 C79 C68 C69 498 C21 C10 C80 C82 C79 C71 C82 C65 /
+C77 C32 C76 C69 C78 C71 C84 C72 C32 C61 C32 C37 C78 C10
+G1L1
+Z
+JL2
+$ 1 3 LIG210 K2 SG171 JL5 7 LIG106 SP4 LIG12 K2 LL499 SP4 LIG102 SP5 LI/
+G76 K2 LIG105 SP4 LIG12 K2 JIL4 8 X4 9 LIG106 SP4 LIG12 K2 LL498 SP4 LI/
+G111 SP5 LIG110 SP6 LIG113 SP7 LIG114 SP8 LIG76 K2 LIG105 SP4 LIG12 K2 /
+JIL4 10 LIG211 K4 SP4 L3 SP5 LIG244 K2 JIL4 11 LIG211 K4 SP4 L7 SP5 LIG/
+244 K2 JIL4 12 LIG212 K4 SP4 L5 SP5 LIG244 K2 JIL4 13 LIG211 K4 SP4 L0 /
+SP5 LIG244 K2 JIL4 14 LIG211 K4 SP4 LIG250 K2 JIL4 15 L-1 SP4 L0 SP5 LI/
+G244 K2 JIL4 16 L0 SP4 L0 SP5 LIG244 K2 JIL4 17 LIG211 K4 SP4 L2 SP5 LI/
+G244 K2 JIL4 18 LIG211 K4 SP4 L6 SP5 LIG244 K2 JIL4 19 LIG212 K4 SP4 L4/
+ SP5 LIG244 K2 JIL4 20 LIG211 K4 SP4 L2 SP5 LIG246 K2 JIL4 21 LIG211 K4/
+ SP4 L6 SP5 LIG246 K2 JIL4 22 LIG212 K4 SP4 L4 SP5 LIG246 K2 JIL4 23 LI/
+G243 K2 L83 SP4 LIG113 SP5 LIG114 SP6 LIG260 K2 LIG110 L2 X9 SG110 L0 S/
+G111 JIL4 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 LIG243 K2 L76/
+ SP4 LIG113 SP5 LIG114 SP6 LIG260 K2 L88 SP4 LIG171 SP7 LIG262 K5 SP5 L/
+0 SP6 LIG260 K2 L2 SG111 LIG110 L1 X9 SG110 JIL4 40 41 42 LIG242 K2 L88/
+ SP4 LIG171 SP7 LIG262 K5 SP5 L0 SP6 LIG260 K2 JIL4 43 LIG243 K2 L65 SP/
+4 LIG113 SP5 LIG114 SP6 LIG260 K2 L2 SG111 LIG110 L1 X9 SG110 JIL4 44 L/
+IG240 K2 L74 SP4 LIG212 K5 SP5 L4 SP6 LIG260 K2 JIL4 45 46 LIG242 K2 L8/
+6 LIG171 X10 FL48 L84 SP4 JL47 48 L70 SP4 47 LIG212 K5 SP5 L4 SP6 LIG26/
+0 K2 LIG110 L1 X9 SG110 L0 SG111 JIL4 49 LIG241 K2 L74 SP4 LIG113 SP5 L/
+IG114 SP6 LIG260 K2 LIG110 L1 X9 SG110 L0 SG111 JIL4 50 LIG240 K2 LIG21/
+2 K4 SP4 LIG261 K2 JIL4 51 LIG240 K2 L1 AIG110 SG110 JIL4 52 LIG240 K2 /
+LIG211 K2 SG110 JIL4 53 LIG240 K2 JIL4 54 LIG211 K2 SP2 LIG212 K3 SP3 L/
+10 SP6 LIG263 K4 L36 SP6 LIG263 K4 L1 SP4 LIP2 SP5 JL55 56 LIG211 K6 LI/
+P4 A1 SP4 55 LIP4 LIP5 X15 TL56 L32 SP6 LIG263 K4 LIP3 SP6 LIG261 K4 JI/
+L4 57 LIG211 K2 SG110 JIL4 58 LIG211 K2 JIL4 59 60 LIG211 K2 SP2 LIG242/
+ K3 L75 SP5 LIP2 SP6 L0 SP7 LIG260 K3 L10 LIG171 X10 FL61 L1 AIP2 SG110/
+ L2 SG111 JL62 61 LIP2 SG110 L0 SG111 62 JIL4 63 LIG242 K2 LIG110 L1 X9/
+ SG110 64 L88 SP4 L97 SP7 LIG262 K5 SP5 L0 SP6 LIG260 K2 L0 SG111 JIL4 /
+65 LIG242 K2 L74 SP4 LIG212 K5 SP5 L4 SP6 LIG260 K2 LIG110 L1 X9 SG110 /
+L0 SG111 JIL4 66 LIG240 K2 LIG211 K2 A1 SG110 L2 SG111 JIL4 67 L88 SP4 /
+LIG171 SP7 LIG262 K5 SP5 L0 SP6 LIG260 K2 JIL4 68 LIG211 K2 SP2 LIG212 /
+K3 SP3 LIG242 K4 L88 SP6 LIG171 SP9 LIG262 K7 SP7 L0 SP8 LIG260 K4 L68 /
+SP6 LIP2 SP7 L0 SP8 LIG260 K4 L68 SP6 LIP3 SP7 L4 SP8 LIG260 K4 LIG110 /
+L1 X9 SG110 L0 SG111 L1 SP4 LIP2 SP5 JL69 70 L68 SP8 LIG211 K9 SP9 L0 S/
+P10 LIG260 K6 L68 SP8 LIG212 K9 SP9 L4 SP10 LIG260 K6 LIP4 A1 SP4 69 LI/
+P4 LIP5 X15 TL70 JIL4 71 L10 SP4 LIG263 K2 L0 SP2 LIG153 L2 X9 SP3 JL72/
+ 73 LIP2 AIG152 X1 SP6 L1 AIP2 AIG152 X1 SP7 LIG265 K4 LIP2 A2 SP2 72 L/
+IP2 LIP3 X15 TL73 L10 SP4 LIG263 K2 L1 SP2 LIG211 K3 SP3 JL74 75 L71 SP/
+6 LIG263 K4 LIG211 K6 SP6 LIG264 K4 L76 SP6 LIG263 K4 LIG212 K6 SP6 LIG/
+264 K4 L32 SP6 LIG263 K4 LIP2 A1 SP2 74 LIP2 LIP3 X15 TL75 L10 SP4 LIG2/
+63 K2 L90 SP4 LIG263 K2 L10 SP4 LIG263 K2 X4 76 77 LIG171 SP4 LIG212 K5/
+ SP5 LIG251 K2 JIL4 78 LIG171 SP4 LIG211 K5 SP5 LIG251 K2 JIL4 JL6 5 LI/
+G171 X23 D59 DL7 D104 DL8 D109 DL9 D40 DL10 D41 DL11 D44 DL12 D42 DL13 /
+D43 DL14 D4 DL15 D5 DL16 D45 DL17 D46 DL18 D47 DL19 D80 DL20 D81 DL21 D/
+82 DL22 D83 DL23 D11 DL24 D12 DL25 D13 DL26 D15 DL27 D20 DL28 D21 DL29 /
+D22 DL30 D23 DL31 D24 DL32 D25 DL33 D31 DL34 D32 DL35 D33 DL36 D34 DL37/
+ D36 DL38 D35 DL39 D8 DL40 D17 DL41 D30 DL42 D14 DL43 D85 DL44 D86 DL45/
+ D87 DL46 D52 DL49 D90 DL50 D16 DL51 D91 DL52 D92 DL53 D94 DL54 D95 DL5/
+7 D103 DL58 D51 DL59 D10 DL60 D96 DL63 D97 DL64 D98 DL65 D93 DL66 D68 D/
+L67 D70 DL68 D76 DL71 D100 DL76 D101 DL77 D102 DL78 6 X4 2
+4 DL3 499 C23 C10 C85 C78 C75 C78 C79 C87 C78 C32 C75 C69 C89 C32 C87 C/
+79 C82 C68 C58 C32 C32 C37 C83 C10 498 C36 C10 C83 C84 C65 C84 C69 C61 /
+C37 C78 C44 C32 C83 C83 C80 C61 C37 C78 C44 C32 C65 C68 C46 C65 C61 C37/
+ C78 C44 C32 C65 C68 C46 C75 C61 C37 C78 C10
+G230L1
+Z
+JL10
+$ 1 JL11 13 L83 SP4 LIG110 L2 X9 SP5 L2 SP6 LIG260 K2 14 L76 SP4 LIG113/
+ SP5 LIG114 SP6 LIG260 K2 15 L83 SP4 LIG110 L1 X9 SP5 L2 SP6 LIG260 K2 /
+L0 SG111 16 JL12 11 LIG111 X23 D4 DL12 D3 DL13 D1 DL14 D2 DL15 D0 DL16 /
+12 X4
+$ 2 JL19 21 L83 SP4 LIG110 L2 X9 SP5 L2 SP6 LIG260 K2 JIL18 22 L83 SP4 /
+LIG110 L1 X9 SP5 L2 SP6 LIG260 K2 23 LIG110 L1 X9 SG113 L3 SG114 17 L1 /
+SG111 24 JL20 19 LIG111 X23 D4 DL20 D3 DL21 D2 DL22 D0 DL23 D1 DL24 20 /
+X4
+$ 3 JL27 29 L76 SP4 LIG110 L1 X9 SP5 L3 SP6 LIG260 K2 JIL26 30 L83 SP4 /
+LIG110 L2 X9 SP5 L2 SP6 LIG260 K2 31 L76 SP4 LIG113 SP5 LIG114 SP6 LIG2/
+60 K2 25 L2 SG111 32 JL28 27 LIG111 X23 D4 DL28 D0 DL29 D3 DL30 D1 DL31/
+ D2 DL32 28 X4
+$ 4 JL35 37 L76 SP4 LIG110 L2 X9 SP5 L3 SP6 LIG260 K2 JIL34 38 L83 SP4 /
+LIG110 L1 X9 SP5 L2 SP6 LIG260 K2 39 L76 SP4 LIG110 L2 X9 SP5 L3 SP6 LI/
+G260 K2 LIG110 L1 X9 SG113 L3 SG114 33 L3 SG111 40 JL36 35 LIG111 X23 D/
+4 DL36 D1 DL37 D2 DL38 D0 DL39 D3 DL40 36 X4
+$ 5 JL43 45 L1 SG111 JIL42 46 47 LIG242 K4 48 L3 SG111 41 LIP2 SG113 LI/
+P3 SG114 L1 AIG110 SG110 JL44 43 LIG111 X23 D4 DL44 D0 DL45 D3 DL46 D1 /
+DL47 D2 DL48 44 X4
+$ 6 LIG242 K4 L83 SP6 LIP2 SP7 LIP3 SP8 LIG260 K4 LIG110 L1 X9 SG110 L0/
+ SG111 X4
+$ 7 LIG252 K3 SP3 L100 SP6 LIP3 SP7 LIG251 K4 L105 SP6 LIP2 SP7 LIG251 /
+K4 L1 SP4 LIP2 SP5 JL49 50 L105 SP8 LIG211 K9 SP9 LIG251 K6 LIP4 A1 SP4/
+ 49 LIP4 LIP5 X15 TL50 LIP3 SP6 L4 SP7 LIG244 K4 X4 X4
+$ 8 LIG153 SP4 LIP2 SP5 LIP4 AIG152 SP6 LIP5 SIP6 LIP3 SP5 L1 AIP4 AIG1/
+52 SP6 LIP5 SIP6 L2 AIG153 SG153 LIG153 LIG154 X14 FL51 LIG106 SP7 LIG1/
+2 K5 LL499 SP7 LIG60 K5 LIG105 SP7 LIG12 K5 L0 SG153 51 X4
+$ 9 LIG157 L1 X9 SG157 LIG157 JL52 52 X4 10
+18 DL17 26 DL25 34 DL33 42 DL41 499 C20 C10 C84 C79 C79 C32 C77 C65 C78/
+ C89 C32 C67 C79 C78 C83 C84 C65 C78 C84 C83 C10
+G240L1 G241L2 G242L3 G243L4 G244L5 G246L6 G250L7 G251L8 G252L9
+Z
+JL7
+$ 1 LIP2 SP7 LIG263 K5 JL8 10 L73 SP7 LIG263 K5 11 JL9 12 L73 SP7 LIG26/
+3 K5 13 L71 SP7 LIG263 K5 JL9 14 L73 SP7 LIG263 K5 15 L80 SP7 LIG263 K5/
+ JL9 16 L73 SP7 LIG263 K5 17 L76 SP7 LIG263 K5 JL9 JL9 8 LIP4 X23 D8 DL/
+9 D1 DL10 D0 DL11 D7 DL12 D6 DL13 D3 DL14 D2 DL15 D5 DL16 D4 DL17 9 LIP/
+3 SP7 LIG264 K5 L32 SP7 LIG263 K5 L1 AIG155 SG155 X4
+$ 2 LIP2 SP5 LIG264 K3 L32 SP5 LIG263 K3 X4
+$ 3 JL18 20 LIP3 SP6 LIG261 K4 X4 21 L68 SP6 LIP3 SP7 L0 SP8 LIG260 K4 /
+X4 22 L68 SP6 LIP3 SP7 L4 SP8 LIG260 K4 X4 23 L67 SP6 LIP3 SP7 L0 SP8 L/
+IG260 K4 X4 JL19 18 LIP2 X23 D4 DL19 D100 DL20 D102 DL21 D101 DL22 D105/
+ DL23 19 X4
+$ 4 JL25 27 L1 JL24 28 L2 JL24 29 L3 JL24 30 L4 JL24 31 L5 JL24 32 L6 J/
+L24 33 L7 JL24 34 L8 JL24 35 L9 JL24 36 L10 JL24 37 L11 JL24 38 L12 JL2/
+4 39 L13 JL24 40 L14 JL24 41 L15 JL24 42 L16 JL24 43 L17 JL24 44 L18 JL/
+24 45 L19 JL24 46 L20 JL24 47 L21 JL24 48 L22 JL24 49 L23 JL24 50 LIG10/
+6 SP5 LIG12 K3 LL499 SP5 LIP2 SP6 LIG76 K3 LIG105 SP5 LIG12 K3 L0 JL24 /
+JL26 25 LIP2 X23 D23 DL50 D8 DL27 D17 DL28 D30 DL29 D97 DL30 D11 DL31 D/
+12 DL32 D13 DL33 D14 DL34 D15 DL35 D20 DL36 D21 DL37 D22 DL38 D25 DL39 /
+D23 DL40 D24 DL41 D31 DL42 D32 DL43 D33 DL44 D34 DL45 D36 DL46 D35 DL47/
+ D68 DL48 D70 DL49 26 24 X4
+$ 5 L10 LIP2 X10 FL51 L10 SP5 LIG14 K3 L0 SG156 X4 51 L71 LIG156 X10 FL/
+52 L47 SP5 LIG14 K3 L10 SP5 LIG14 K3 L0 SG156 52 L1 AIG156 SG156 LIP2 S/
+P5 LIG14 K3 X4
+$ 6 LIP2 L0 X12 FL53 L45 SP5 LIG263 K3 JL54 53 LIP2 X2 SP2 54 LIP2 L-9 /
+X12 FL55 LIP2 L10 X6 X2 SP5 LIG264 K3 55 L48 SP5 LIP2 L10 X7 SP6 LIP5 L/
+IP6 X9 SP5 LIG263 K3 X4 7
+499 C15 C10 C85 C78 C75 C78 C79 C87 C78 C32 C79 C80 C32 C37 C78 C10
+G260L1 G261L2 G265L3 G262L4 G263L5 G264L6
+Z
--- /dev/null
+GET "LIBHDR"
+
+// THIS IS A UNIVERSAL CODE-GENERATOR TEST PROGRAM
+// WRITTEN BY M. RICHARDS ORIGINALLY TO TEST THE
+// CII 10070 CODE-GENERATOR.
+
+GLOBAL $( F:100; G:101; H:102
+ TESTNO:103; FAILCOUNT:104
+ V:105; TESTCOUNT:106; QUIET:107; T:108 $)
+
+STATIC $( A=10; B=11; C=12; W=0 $)
+
+MANIFEST $( K0=0; K1=1; K2=2 $)
+
+LET T(X, Y) = VALOF
+ $( TESTNO := TESTNO + 1
+ TESTCOUNT := TESTCOUNT + 1
+ IF X=Y & QUIET RESULTIS Y
+ WRITEF("%I3 %I5 ", TESTNO, Y)
+ TEST X=Y
+ THEN WRITES("OK*N")
+ ELSE $( WRITEF("FAILED %X8(%N) %X8(%N)*N", X, X, Y, Y)
+ FAILCOUNT := FAILCOUNT + 1 $)
+ RESULTIS Y $)
+
+
+LET T1(A,B,C,D,E,F,G) = T(A+B+C+D+E+F, G)
+
+LET START(PARM) BE
+$(1 LET V1 = VEC 200
+ AND V2 = VEC 200
+ TESTER(0, 1, 2, V1, V2)
+$)1
+
+AND TIMEOFDAY() = "Now"
+
+AND DATE() = "Today"
+
+AND TESTER(X, Y, Z, V1, V2) BE
+$(1 WRITEF("*NCGTESTER ENTERED %S %S*N*N",
+ TIMEOFDAY(), DATE())
+
+// FIRST INITIALIZE CERTAIN VARIABLES
+
+ F, G, H := 100, 101, 102
+ TESTNO, TESTCOUNT, FAILCOUNT := 0, 0, 0
+ V, W := V1, V2
+
+ FOR I = 0 TO 200 DO V!I, W!I := 1000+I, 10000+I
+
+
+ QUIET := FALSE
+// QUIET := GETBYTE(PARM,0)>0 & GETBYTE(PARM,1)='Q' -> TRUE, FALSE
+
+// TEST SIMPLE VARIABLES AND EXPRESSIONS
+
+ T(A+B+C, 33)
+ T(F+G+H, 303)
+ T(X+Y+Z, 3)
+
+ T(123+321-400, 44)
+ T(X=0, TRUE)
+ T(Y=0, FALSE)
+ T(!(@Y+X), 1)
+ T(!(@B+X), 11)
+ T(!(@G+X), 101)
+
+ X, A, F := 5, 15, 105
+ T(X, 5)
+ T(A, 15)
+ T(F, 105)
+
+ V!1, V!2 := 1234, 5678
+ T(V!1, 1234)
+ T(V!Z, 5678)
+
+ T(X*A, 75)
+ T(1*X+2*Y+3*Z+F*4,433)
+ T(X*A+A*X, 150)
+
+ T(100/2, 50)
+ T(A/X, 3)
+ T(A/-X, -3)
+ T((-A)/X, -3)
+ T((-A)/(-X), 3)
+ T((A+A)/A, 2)
+ T((A*X)/(X*A), 1)
+ T((A+B)*(X+Y)*123/(6*123), 26)
+
+ T(7 REM 2, 1)
+ T(F REM 100, 5)
+ T(A REM X, 0)
+
+ T(-F, -105)
+ T(F=105, TRUE)
+ T(F NE 105, FALSE)
+ T(F<105, FALSE)
+ T(F>=105, TRUE)
+ T(F>105, FALSE)
+ T(F<=105, TRUE)
+
+ T(#1775<<3, #17750)
+ T(#1775>>3, #177)
+ T(#1775<<Z+1, #17750)
+ T(#1775>>Z+1, #177)
+
+ T(#B1100&#B1010, #B1000)
+ T(#B1100 \/ #B1010, #B1110)
+ T((#B1100 EQV #B1010) & #B11111, #B11001)
+ T(#B1100 NEQV #B1010, #B0110)
+
+ T(NOT TRUE, FALSE)
+ T(NOT FALSE, TRUE)
+ T(NOT(1234 EQV -4321), 1234 NEQV -4321)
+
+ T(-F, -105)
+
+ T(!V, 1000)
+ T(V!0, 1000)
+ T(V!1, 1234)
+ T(V!(!V-998), 5678)
+ T(!W, 10000)
+ T(W!0, 10000)
+ T(0!W, 10000)
+ T(1!W, 10001)
+ T(W!1, 10001)
+ T(!(W+200), 10200)
+
+ A := TRUE
+ B := FALSE
+
+ IF A DO X := 16
+ T(X, 16)
+ X := 16
+
+ IF B DO X := 15
+ T(X, 16)
+ X := 15
+
+ $( LET W = VEC 20
+ GOTO L1
+ L2: WRITES("GOTO ERROR*N")
+ FAILCOUNT := FAILCOUNT+1 $)
+
+L1: A := VALOF RESULTIS 11
+ T(A, 11)
+
+ TESTNO := 100 // TEST SIMULATED STACK ROUTINES
+
+ $( LET V1 = VEC 1
+ V1!0, V1!1 := -1, -2
+ $( LET V2 = VEC 10
+ FOR I = 0 TO 10 DO V2!I := -I
+ T(V2!5, -5) $)
+ T(V1!1, -2) $)
+
+ X := X + T(X,15, T(F, 105), T(A, 11)) - 15
+ T(X, 15)
+
+ X := X+1
+ T(X, 16)
+ X := X-1
+ T(X, 15)
+ X := X+7
+ T(X,22)
+ X := X-22
+ T(X, 0)
+ X := X+15
+ T(X, 15)
+ X := X + F
+ T(X, 120)
+ X := 1
+
+ TESTNO := 200 // TEST SWITCHON COMMANDS
+
+$(SW LET S1, S1F = 0, 0
+ AND S2, S2F = 0, 0
+
+ FOR I = -200 TO 200 DO
+ $( SWITCHON I INTO
+ $( DEFAULT: S1 := S1+1000; ENDCASE
+ CASE -1000: S1F := S1F + I; ENDCASE
+ CASE -200: S1 := S1 + 1
+ CASE -190: S1 := S1 + 1
+ CASE -180: S1 := S1 + 1
+ CASE -5: S1 := S1 + 1
+ CASE 0: S1 := S1 + 1
+ CASE -145: S1 := S1 + 1
+ CASE 7: S1 := S1 + 1
+ CASE 8: S1 := S1 + 1
+ CASE 200: S1 := S1 + 1
+ CASE 190: S1 := S1 + 1
+ CASE 100: S1 := S1 + 1
+ CASE 90: S1 := S1 + 1
+ CASE 199: S1 := S1 + 1
+ CASE 95: S1 := S1 + 1
+ CASE 76: S1 := S1 + 1
+ CASE 88: S1 := S1 + 1
+ CASE 99: S1 := S1 + 1
+ CASE -98: S1 := S1 + 1
+ CASE 11: S1 := S1 + 1
+ CASE 12: S1 := S1 + 1
+ CASE 13: S1 := S1 + 1
+ CASE 41: S1 := S1 + 1
+ CASE 91: S1 := S1 + 1
+ CASE 92: S1 := S1 + 1
+ CASE 71: S1 := S1 + 1
+ CASE 73: S1 := S1 + 1
+ CASE 74: S1 := S1 + 1
+ CASE 81: S1 := S1 + 1
+ CASE 82: S1 := S1 + 1
+ CASE 61: S1 := S1 + 1
+ CASE -171: S1 := S1 + 1
+ CASE -162: S1 := S1 + 1 $)
+
+ SWITCHON I+10000 INTO
+ $( DEFAULT: S2 := S2+1000; ENDCASE
+ CASE 10020: S2 := S2 + 1
+ CASE 10021: S2 := S2 + 1
+ CASE 10022: S2 := S2 + 1
+ CASE 10023: S2 := S2 + 1
+ CASE 10024: S2 := S2 + 1
+ CASE 10025: S2 := S2 + 1
+ CASE 10026: S2 := S2 + 1
+ CASE 10027: S2 := S2 + 1
+ CASE 10028: S2 := S2 + 1
+ CASE 10029: S2 := S2 + 1
+ CASE 10010: S2 := S2 + 1
+ CASE 10011: S2 := S2 + 1
+ CASE 10012: S2 := S2 + 1
+ CASE 10013: S2 := S2 + 1
+ CASE 10014: S2 := S2 + 1
+ CASE 10015: S2 := S2 + 1 $)
+
+ $)
+ T(S1F, 0)
+ T(S2F, 0)
+ T(S1, (401-32)*1000 + 32*(32+1)/2)
+ T(S2, (401-16)*1000 + 16*(16+1)/2)
+$)SW
+
+
+ TESTNO := 250 // TEST FUNCTION CALLING
+
+ T1(1,2,3,4,5,6, 21)
+ T1(T(1,1), T(2,2), T(3,3), T(4,4), T(5,5), T(6,6),
+ T(21,21))
+ T1(VALOF RESULTIS 1,
+ VALOF RESULTIS 2,
+ VALOF RESULTIS 3,
+ VALOF RESULTIS 4,
+ VALOF RESULTIS 5,
+ VALOF RESULTIS 6,
+ 21)
+ T1(VALOF RESULTIS 1,
+ T(2,2),
+ VALOF RESULTIS 3,
+ T(4,4),
+ VALOF RESULTIS 5,
+ T(6,6),
+ 21)
+ T1( 1, T(2,2), VALOF RESULTIS 3,
+ 4, T(5,5), VALOF RESULTIS 6,
+ 21)
+ T1(!V,V!0,V!200,!W,W!0,W!200, 2*1000+1200+2*10000+10200)
+ (T1+(X+X)/X-2)(1,1,1,1,1,1,6)
+ (!@T1)(1,2,3,4,5,6,21)
+
+ TESTNO := 300 // TEST EXPRESSION OPERATORS
+
+ T((2+3)+F+6,116)
+ T(F+2+3+6,116)
+ T(6+3+2+F, 116)
+ T(F-104, 1)
+ T((X+2)=(X+2)->99,98, 99)
+ T(F<F+1->21,22, 21)
+ T(F>F+1->31,32, 32)
+ T(F<=105->41,42, 41)
+ T(F>=105->51,52, 51)
+
+ TESTNO := 400 // TEST REGISTER ALLOCATION ETC.
+
+ X := 0
+ Y := 1
+ Z := 2
+ T(X, 0)
+ T(Y, 1)
+ T(Z, 2)
+ F,G,H := 101,102,103
+ A,B,C := 11,12,13
+ T(X+1,1)
+ T(F+1, 102)
+ T(A+1, 12)
+ T(!(@A*2/2+F-101),11)
+ A := @F
+ T(!A, 101)
+ B := @G
+ A := @B
+ T(!!A, 102)
+ W!0 := @W!1
+ W!1 := @H
+ T(Z*Y+(W!0)!0!0-2, 103)
+ T(Z*Y+W!1!0-2, 103)
+ T(T(123,123),T(123,123))
+
+ WRITEF("*N%N TESTS COMPLETED, %N FAILURE(S)*N",
+ TESTCOUNT, FAILCOUNT)
+$)1
+
+
--- /dev/null
+11 LIP2 X24 X4 G11L11 /SELECTINPUT
+12 LIP2 X25 X4 G12L12 /SELECTOUTPUT
+13 X26 X4 G13L13 /RDCH
+14 LIP2 X27 X4 G14L14 /WRCH
+42 LIP2 X28 X4 G42L42 /FINDINPUT
+41 LIP2 X29 X4 G41L41 /FINDOUTPUT
+30 LIP2 X30 X4 G30L30 /STOP
+31 X31 X4 G31L31 /LEVEL
+32 LIP3 LIP2 X32 G32L32 /LONGJUMP
+46 X33 X4 G46L46 /ENDREAD
+47 X34 X4 G47L47 /ENDWRITE
+40 LIP3 LIP2 X35 G40L40 /APTOVEC
+85 LIP3 LIP2 X36 X4 G85L85 / GETBYTE
+86 LIP3 LIP2 X37 X4 G86L86 / PUTBYTE
+16 X38 X4 G16L16 /INPUT
+17 X39 X4 G17L17 /OUTPUT
+15 LIP2 X40 X4 G15L15 /UNRDCH
+35 X41 X4 G35L35 /REWIND
+Z
--- /dev/null
+// $Id: syn.bcpl,v 1.5 2004/12/21 10:32:12 rn Exp $
+
+// MASTER
+
+GET "LIBHDR"
+
+GLOBAL $(
+CHBUF:100; PRSOURCE:110
+PPTRACE:127; OPTION:128
+FORMTREE:150; PLIST:152
+TREEP:167; TREEVEC:168
+CHARCODE:190; REPORTCOUNT:191; REPORTMAX:192
+SOURCESTREAM:193; SYSPRINT:194; OCODE:195; SYSIN:196
+COMPILEAE:245
+SAVESPACESIZE:282
+$)
+
+LET CHARCODE(CH) = CH // THE DEFAULT SETTING OF CHARCODE
+
+AND EBCDICTOASCII(CH) = CH!TABLE
+ 0, 0, 0, 0, 0, #11, 0, 0,
+ 0, 0, 0, #13, #14, #15, 0, 0,
+ 0, 0, 0, 0, 0, #12, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, #12, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ #40, 0,#133,#135, 0, 0, 0, 0,
+ 0, 0, 0, #56, #74, #50, #53,#174,
+ #46, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, #41, #44, #52, #51, #73,#176,
+ #55, #57,#134, 0, 0,#136,#137, 0,
+ 0, 0, 0, #54, #45,#140, #76, #77,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, #72, #43,#100, #47, #75, #42,
+ 0,#141,#142,#143,#144,#145,#146,#147,
+ #150,#151, 0, 0, 0, 0, 0, 0,
+ 0,#152,#153,#154,#155,#156,#157,#160,
+ #161,#162, 0, 0, 0, 0, 0, 0,
+ 0, 0,#163,#164,#165,#166,#167,#170,
+ #171,#172, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,#101,#102,#103,#104,#105,#106,#107,
+ #110,#111, 0, 0, 0, 0, 0, 0,
+ 0,#112,#113,#114,#115,#116,#117,#120,
+ #121,#122, 0, 0, 0, 0, 0, 0,
+ 0, 0,#123,#124,#125,#126,#127,#130,
+ #131,#132, 0, 0, 0, 0, 0, 0,
+ #60, #61, #62, #63, #64, #65, #66, #67,
+ #70, #71, 0, 0, 0, 0, 0, 0
+LET START(PARM) BE
+$(1
+SYSIN := INPUT()
+SYSPRINT := OUTPUT()
+SELECTOUTPUT(SYSPRINT)
+
+WRITEF("*NBCPL %N*N", @START)
+
+$( LET OPT = VEC 20
+ AND TREESIZE = 5500
+ OPTION := OPT
+ SAVESPACESIZE := 2
+ PPTRACE := FALSE
+ PRSOURCE := FALSE
+ FOR I = 0 TO 20 DO OPT!I := FALSE
+
+SOURCESTREAM := FINDINPUT("OPTIONS")
+
+UNLESS SOURCESTREAM=0 DO
+$(P LET CH = 0
+ AND N = 0
+ SELECTINPUT(SOURCESTREAM)
+ WRITES("OPTIONS ")
+
+ $( CH := RDCH()
+ L: IF CH='*N' \/ CH=ENDSTREAMCH BREAK
+ WRCH(CH)
+ IF CH='P' DO N := 1
+ IF CH='T' DO N := 2
+ IF CH='C' DO N := 3
+ IF CH='M' DO N := 4
+ IF CH='N' DO N := 5
+ IF CH='A' DO CHARCODE := EBCDICTOASCII
+ IF CH='S' DO PRSOURCE := TRUE
+ IF CH='E' DO PPTRACE := TRUE
+ IF CH='L' DO $( TREESIZE := READN()
+ WRITEN(TREESIZE)
+ CH := TERMINATOR
+ GOTO L $)
+ IF CH='3' DO SAVESPACESIZE := 3
+ OPTION!N := TRUE
+ $) REPEAT
+
+ NEWLINE()
+ ENDREAD() $)P
+
+ REPORTMAX := 20
+ REPORTCOUNT := 0
+
+
+
+SOURCESTREAM := SYSIN
+SELECTINPUT(SOURCESTREAM)
+
+OCODE := FINDOUTPUT("OCODE")
+IF OCODE=0 DO OCODE := SYSPRINT
+
+$(2 LET COMP(V, TREEMAX) BE
+ $(C LET B = VEC 63
+ CHBUF := B
+
+ $(3 TREEP, TREEVEC := V+TREEMAX, V
+
+ $( LET A = FORMTREE()
+ IF A=0 BREAK
+
+ WRITEF("*NTREE SIZE %N*N", TREEMAX+TREEVEC-TREEP)
+
+ IF OPTION!2 DO $( WRITES('AE TREE*N')
+ PLIST(A, 0, 20)
+ NEWLINE() $)
+
+
+ UNLESS REPORTCOUNT=0 DO STOP(8)
+
+ UNLESS OPTION!3 DO
+ $( SELECTOUTPUT(OCODE)
+ COMPILEAE(A)
+ SELECTOUTPUT(SYSPRINT) $)
+
+ $)3 REPEAT
+ $)C
+
+ APTOVEC(COMP, TREESIZE)
+
+ ENDREAD()
+ IF OPTION!4 DO MAPSTORE()
+ WRITES('*NPHASE 1 COMPLETE*N')
+ UNLESS REPORTCOUNT=0 DO STOP(8)
+ FINISH $)1
+.
+
+// LEX1
+
+
+GET "SYNHDR"
+
+LET NEXTSYMB() BE
+$(1 NLPENDING := FALSE
+
+NEXT: IF PPTRACE DO WRCH(CH)
+
+ SWITCHON CH INTO
+
+ $( CASE '*P':
+ CASE '*N': LINECOUNT := LINECOUNT + 1
+ NLPENDING := TRUE // IGNORABLE CHARACTERS
+ CASE '*T':
+ CASE '*S': RCH() REPEATWHILE CH='*S'
+ GOTO NEXT
+
+ CASE '0':CASE '1':CASE '2':CASE '3':CASE '4':
+ CASE '5':CASE '6':CASE '7':CASE '8':CASE '9':
+ SYMB := S.NUMBER
+ READNUMBER(10)
+ RETURN
+
+ CASE 'A':CASE 'B':CASE 'C':CASE 'D':CASE 'E':
+ CASE 'F':CASE 'G':CASE 'H':CASE 'I':CASE 'J':
+ CASE 'K':CASE 'L':CASE 'M':CASE 'N':CASE 'O':
+ CASE 'P':CASE 'Q':CASE 'R':CASE 'S':CASE 'T':
+ CASE 'U':CASE 'V':CASE 'W':CASE 'X':CASE 'Y':
+ CASE 'Z':
+ RDTAG(CH)
+ SYMB := LOOKUPWORD()
+ IF SYMB=S.GET DO $( PERFORMGET(); GOTO NEXT $)
+ RETURN
+
+ CASE '$': RCH()
+ UNLESS CH='(' \/ CH=')' DO CAEREPORT(91)
+ SYMB := CH='(' -> S.LSECT, S.RSECT
+ RDTAG('$')
+ LOOKUPWORD()
+ RETURN
+
+ CASE '[':
+ CASE '(': SYMB := S.LPAREN; GOTO L
+ CASE ']':
+ CASE ')': SYMB := S.RPAREN; GOTO L
+
+ CASE '#': SYMB := S.NUMBER
+ RCH()
+ IF '0'<=CH<='7' DO $( READNUMBER(8); RETURN $)
+ IF CH='B' DO $( RCH(); READNUMBER(2); RETURN $)
+ IF CH='O' DO $( RCH(); READNUMBER(8); RETURN $)
+ IF CH='X' DO $( RCH(); READNUMBER(16); RETURN $)
+ CAEREPORT(33)
+
+ CASE '?': SYMB := S.QUERY; GOTO L
+ CASE '+': SYMB := S.PLUS; GOTO L
+ CASE ',': SYMB := S.COMMA; GOTO L
+ CASE ';': SYMB := S.SEMICOLON; GOTO L
+ CASE '@': SYMB := S.LV; GOTO L
+ CASE '&': SYMB := S.LOGAND; GOTO L
+ CASE '=': SYMB := S.EQ; GOTO L
+ CASE '!': SYMB := S.VECAP; GOTO L
+ CASE '_': SYMB := S.ASS; GOTO L
+ CASE '**': SYMB := S.MULT; GOTO L
+
+ CASE '/': RCH()
+ IF CH='\' DO $( SYMB := S.LOGAND; GOTO L $)
+ IF CH='/' GOTO COMMENT
+ UNLESS CH='**' DO $( SYMB := S.DIV; RETURN $)
+
+ RCH()
+
+ UNTIL CH=ENDSTREAMCH DO TEST CH='**'
+
+ THEN $( RCH()
+ UNLESS CH='/' LOOP
+ RCH()
+ GOTO NEXT $)
+
+ OR $( IF CH='*N' DO LINECOUNT := LINECOUNT+1
+ RCH() $)
+
+ CAEREPORT(63)
+
+
+ COMMENT: RCH() REPEATUNTIL CH='*N' \/ CH=ENDSTREAMCH
+ GOTO NEXT
+
+ CASE '|': RCH()
+ IF CH='|' GOTO COMMENT
+ SYMB := S.LOGOR
+ RETURN
+
+ CASE '\': RCH()
+ IF CH='/' DO $( SYMB := S.LOGOR; GOTO L $)
+ IF CH='=' DO $( SYMB := S.NE; GOTO L $)
+ SYMB := S.NOT
+ RETURN
+
+ CASE '<': RCH()
+ IF CH='=' DO $( SYMB := S.LE; GOTO L $)
+ IF CH='<' DO $( SYMB := S.LSHIFT; GOTO L $)
+ SYMB := S.LS
+ RETURN
+
+ CASE '>': RCH()
+ IF CH='=' DO $( SYMB := S.GE; GOTO L $)
+ IF CH='>' DO $( SYMB := S.RSHIFT; GOTO L $)
+ SYMB := S.GR
+ RETURN
+
+ CASE '-': RCH()
+ IF CH='>' DO $( SYMB := S.COND; GOTO L $)
+ SYMB := S.MINUS
+ RETURN
+
+ CASE ':': RCH()
+ IF CH='=' DO $( SYMB := S.ASS; GOTO L $)
+ SYMB := S.COLON
+ RETURN
+
+ CASE '*'':CASE '*"':
+ $(1 LET QUOTE = CH
+ CHARP := 0
+
+ $( RCH()
+ IF CH=QUOTE \/ CHARP=255 DO
+ $( UNLESS CH=QUOTE DO CAEREPORT(95)
+ IF CHARP=1 & CH='*'' DO
+ $( SYMB := S.NUMBER
+ DECVAL := CHARCODE(DECVAL)
+ GOTO L $)
+ CHARV!0 := CHARP
+ WORDSIZE := PACKSTRING(CHARV, WORDV)
+ SYMB := S.STRING
+ GOTO L $)
+
+
+ IF CH='*N' DO LINECOUNT := LINECOUNT + 1
+
+ IF CH='**' DO
+ $( RCH()
+ IF CH='*N' DO
+ $( LINECOUNT := LINECOUNT+1
+ RCH() REPEATWHILE CH='*S' \/ CH='*T'
+ UNLESS CH='**' DO CAEREPORT(34)
+ LOOP $)
+ IF CH='T' DO CH := '*T'
+ IF CH='S' DO CH := '*S'
+ IF CH='N' DO CH := '*N'
+ IF CH='B' DO CH := '*B'
+ IF CH='P' DO CH := '*P' $)
+
+ DECVAL, CHARP := CH, CHARP+1
+ CHARV!CHARP := CH $) REPEAT $)1
+
+
+
+ DEFAULT: IF CH=ENDSTREAMCH DO
+ CASE '.': $( IF GETP=0 DO
+ $( SYMB := S.END
+ RETURN $)
+
+ ENDREAD()
+ GETP := GETP - 3
+ SOURCESTREAM := GETV!GETP
+ SELECTINPUT(SOURCESTREAM)
+ LINECOUNT := GETV!(GETP+1)
+ CH := GETV!(GETP+2)
+ GOTO NEXT $)
+
+ CH := '*S'
+ CAEREPORT(94)
+ RCH()
+ GOTO NEXT
+
+ L: RCH() $)1
+
+AND READNUMBER(RADIX) BE
+ $( LET D = VALUE(CH)
+ DECVAL := D
+ IF D>=RADIX DO CAEREPORT(33)
+
+ $( RCH()
+ D := VALUE(CH)
+ IF D>=RADIX RETURN
+ DECVAL := RADIX*DECVAL + D $) REPEAT
+ $)
+
+
+AND VALUE(CH) = '0'<=CH<='9' -> CH-'0',
+ 'A'<=CH<='F' -> CH-'A'+10,
+ 100
+
+.
+
+// LEX2
+
+
+GET "SYNHDR"
+
+LET D(S, ITEM) BE $( UNPACKSTRING(S, CHARV)
+ WORDSIZE := PACKSTRING(CHARV, WORDV)
+ LOOKUPWORD()
+ WORDNODE!0 := ITEM $)
+
+AND DECLSYSWORDS() BE
+ $( D("AND", S.AND)
+
+ D("BE", S.BE)
+ D("BREAK", S.BREAK)
+ D("BY", S.BY)
+
+ D("CASE", S.CASE)
+
+ D("DO", S.DO)
+ D("DEFAULT", S.DEFAULT)
+
+ D("EQ", S.EQ)
+ D("EQV", S.EQV)
+ D("ELSE", S.OR)
+ D("ENDCASE", S.ENDCASE)
+
+ D("FALSE", S.FALSE)
+ D("FOR", S.FOR)
+ D("FINISH", S.FINISH)
+
+ D("GOTO", S.GOTO)
+ D("GE", S.GE)
+ D("GR", S.GR)
+ D("GLOBAL", S.GLOBAL)
+ D("GET", S.GET)
+
+ D("IF", S.IF)
+ D("INTO", S.INTO)
+
+ D("LET", S.LET)
+ D("LV", S.LV)
+ D("LE", S.LE)
+ D("LS", S.LS)
+ D("LOGOR", S.LOGOR)
+ D("LOGAND", S.LOGAND)
+ D("LOOP", S.LOOP)
+ D("LSHIFT", S.LSHIFT)
+
+ D("MANIFEST", S.MANIFEST)
+
+ D("NE", S.NE)
+ D("NOT", S.NOT)
+ D("NEQV", S.NEQV)
+
+ D("OR", S.OR)
+
+ D("RESULTIS", S.RESULTIS)
+ D("RETURN", S.RETURN)
+ D("REM", S.REM)
+ D("RSHIFT", S.RSHIFT)
+ D("RV", S.RV)
+ D("REPEAT", S.REPEAT)
+ D("REPEATWHILE", S.REPEATWHILE)
+ D("REPEATUNTIL", S.REPEATUNTIL)
+
+ D("SWITCHON", S.SWITCHON)
+ D("STATIC", S.STATIC)
+
+ D("TO", S.TO)
+ D("TEST", S.TEST)
+ D("TRUE", S.TRUE)
+ D("THEN", S.DO)
+ D("TABLE", S.TABLE)
+
+ D("UNTIL", S.UNTIL)
+ D("UNLESS", S.UNLESS)
+
+ D("VEC", S.VEC)
+ D("VALOF", S.VALOF)
+
+ D("WHILE", S.WHILE)
+
+ D("$", 0); NULLTAG := WORDNODE $)
+
+AND LOOKUPWORD() = VALOF
+
+$(1 LET HASHVAL = (WORDV!0+WORDV!WORDSIZE >> 1) REM NAMETABLESIZE
+ LET M = @NAMETABLE!HASHVAL
+
+ NEXT: WORDNODE := !M
+ UNLESS WORDNODE=0 DO
+ $(2 FOR I = 0 TO WORDSIZE DO
+ IF WORDNODE!(I+2) NE WORDV!I DO
+ $( M := WORDNODE+1
+ GOTO NEXT $)
+ RESULTIS WORDNODE!0 $)2
+
+ WORDNODE := NEWVEC(WORDSIZE+2)
+ WORDNODE!0, WORDNODE!1 := S.NAME, NAMETABLE!HASHVAL
+ FOR I = 0 TO WORDSIZE DO WORDNODE!(I+2) := WORDV!I
+ NAMETABLE!HASHVAL := WORDNODE
+ RESULTIS S.NAME
+$)1
+
+.
+
+// LEX3
+
+
+GET "SYNHDR"
+
+LET RCH() BE
+ $( CH := RDCH()
+
+ IF PRSOURCE DO IF GETP=0 /\ CH NE ENDSTREAMCH DO
+ $( UNLESS LINECOUNT=PRLINE DO $( WRITEF("%I4 ", LINECOUNT)
+ PRLINE := LINECOUNT $)
+ WRCH(CH) $)
+
+ CHCOUNT := CHCOUNT + 1
+ CHBUF!(CHCOUNT&63) := CH $)
+
+AND WRCHBUF() BE
+ $( WRITES("*N...")
+ FOR P = CHCOUNT-63 TO CHCOUNT DO
+ $( LET K = CHBUF!(P&63)
+ UNLESS K=0 DO WRCH(K) $)
+ NEWLINE() $)
+
+
+AND RDTAG(X) BE
+ $( CHARP, CHARV!1 := 1, X
+
+ $( RCH()
+ UNLESS 'A'<=CH<='Z' \/
+ '0'<=CH<='9' \/
+ CH='.' BREAK
+ CHARP := CHARP+1
+ CHARV!CHARP := CH $) REPEAT
+
+ CHARV!0 := CHARP
+ WORDSIZE := PACKSTRING(CHARV, WORDV) $)
+
+
+AND PERFORMGET() BE
+ $( NEXTSYMB()
+ UNLESS SYMB=S.STRING THEN CAEREPORT(97)
+
+ IF OPTION!5 RETURN
+
+ GETV!GETP := SOURCESTREAM
+ GETV!(GETP+1) := LINECOUNT
+ GETV!(GETP+2) := CH
+ GETP := GETP + 3
+ LINECOUNT := 1
+ SOURCESTREAM := FINDINPUT(WORDV)
+ IF SOURCESTREAM=0 THEN
+ SOURCESTREAM := FINDLIBINPUT(WORDV)
+ IF SOURCESTREAM=0 THEN CAEREPORT(96,WORDV)
+ SELECTINPUT(SOURCESTREAM)
+ RCH() $)
+
+AND APPEND(D, S) BE
+ $( LET ND = GETBYTE(D, 0)
+ AND NS = GETBYTE(S, 0)
+ FOR I = 1 TO NS DO $(
+ ND := ND + 1
+ PUTBYTE(D, ND, GETBYTE(S, I)) $)
+ PUTBYTE(D, 0, ND) $)
+
+AND FINDLIBINPUT(NAME) = VALOF
+ $( LET PATH = VEC 64
+ AND DIR = "/usr/local/lib/bcplkit/"
+ TEST GETBYTE(DIR, 0) + GETBYTE(NAME, 0) > 255
+ THEN RESULTIS 0
+ OR $( PUTBYTE(PATH, 0, 0)
+ APPEND(PATH, DIR)
+ APPEND(PATH, NAME)
+ RESULTIS FINDINPUT(PATH) $)
+ $)
+
+
+.
+
+// CAE0
+
+
+GET "SYNHDR"
+
+LET NEWVEC(N) = VALOF
+ $( TREEP := TREEP - N - 1
+ IF TREEP<=TREEVEC DO
+ $( REPORTMAX := 0
+ CAEREPORT(98) $)
+ RESULTIS TREEP $)
+
+AND LIST1(X) = VALOF
+ $( LET P = NEWVEC(0)
+ P!0 := X
+ RESULTIS P $)
+
+AND LIST2(X, Y) = VALOF
+ $( LET P = NEWVEC(1)
+ P!0, P!1 := X, Y
+ RESULTIS P $)
+
+AND LIST3(X, Y, Z) = VALOF
+ $( LET P = NEWVEC(2)
+ P!0, P!1, P!2 := X, Y, Z
+ RESULTIS P $)
+
+AND LIST4(X, Y, Z, T) = VALOF
+ $( LET P = NEWVEC(3)
+ P!0, P!1, P!2, P!3 := X, Y, Z, T
+ RESULTIS P $)
+
+AND LIST5(X, Y, Z, T, U) = VALOF
+ $( LET P = NEWVEC(4)
+ P!0, P!1, P!2, P!3, P!4 := X, Y, Z, T, U
+ RESULTIS P $)
+
+AND LIST6(X, Y, Z, T, U, V) = VALOF
+ $( LET P = NEWVEC(5)
+ P!0, P!1, P!2, P!3, P!4, P!5 := X, Y, Z, T, U, V
+ RESULTIS P $)
+
+AND CAEREPORT(N, A) BE
+ $( REPORTCOUNT := REPORTCOUNT + 1
+ WRITEF("*NSYNTAX ERROR NEAR LINE %N: ", LINECOUNT)
+ CAEMESSAGE(N, A)
+ WRCHBUF()
+ IF REPORTCOUNT GR REPORTMAX DO
+ $( WRITES('*NCOMPILATION ABORTED*N')
+ STOP(8) $)
+ NLPENDING := FALSE
+
+ UNTIL SYMB=S.LSECT \/ SYMB=S.RSECT \/
+ SYMB=S.LET \/ SYMB=S.AND \/
+ SYMB=S.END \/ NLPENDING DO NEXTSYMB()
+ LONGJUMP(REC.P, REC.L) $)
+
+AND FORMTREE() = VALOF
+ $(1 CHCOUNT := 0
+ FOR I = 0 TO 63 DO CHBUF!I := 0
+
+ $( LET V = VEC 10 // FOR 'GET' STREAMS
+ GETV, GETP, GETT := V, 0, 10
+
+ $( LET V = VEC 100
+ WORDV := V
+
+ $( LET V = VEC 256
+ CHARV, CHARP := V, 0
+
+ $( LET V = VEC 100
+ NAMETABLE, NAMETABLESIZE := V, 100
+ FOR I = 0 TO 100 DO NAMETABLE!I := 0
+
+ REC.P, REC.L := LEVEL(), L
+
+ LINECOUNT, PRLINE := 1, 0
+ RCH()
+
+ IF CH=ENDSTREAMCH RESULTIS 0
+ DECLSYSWORDS()
+
+ L: NEXTSYMB()
+
+ IF OPTION!1 DO // PP DEBUGGING OPTION
+ $( WRITEF("%N %S*N", SYMB, WORDV)
+ IF SYMB=S.END RESULTIS 0
+ GOTO L $)
+
+ $( LET A = RDBLOCKBODY()
+ UNLESS SYMB=S.END DO $( CAEREPORT(99); GOTO L $)
+
+ RESULTIS A $)1
+
+
+
+AND CAEMESSAGE(N, A) BE
+ $( LET S = VALOF
+
+ SWITCHON N INTO
+
+ $( DEFAULT: WRITEN(N); RETURN
+
+ CASE 91: RESULTIS "'8' '(' OR ')' EXPECTED"
+ CASE 94: RESULTIS "ILLEGAL CHARACTER"
+ CASE 95: RESULTIS "STRING TOO LONG"
+ CASE 96: RESULTIS "NO INPUT %S"
+ CASE 97: RESULTIS "STRING OR NUMBER EXPECTED"
+ CASE 98: RESULTIS "PROGRAM TOO LARGE"
+ CASE 99: RESULTIS "INCORRECT TERMINATION"
+
+ CASE 8:CASE 40:CASE 43:
+ RESULTIS "NAME EXPECTED"
+ CASE 6: RESULTIS "'$(' EXPECTED"
+ CASE 7: RESULTIS "'$)' EXPECTED"
+ CASE 9: RESULTIS "UNTAGGED '$)' MISMATCH"
+ CASE 32: RESULTIS "ERROR IN EXPRESSION"
+ CASE 33: RESULTIS "ERROR IN NUMBER"
+ CASE 34: RESULTIS "BAD STRING"
+ CASE 15:CASE 19:CASE 41: RESULTIS "')' MISSING"
+ CASE 30: RESULTIS "',' MISSING"
+ CASE 42: RESULTIS "'=' OR 'BE' EXPECTED"
+ CASE 44: RESULTIS "'=' OR '(' EXPECTED"
+ CASE 50: RESULTIS "ERROR IN LABEL"
+ CASE 51: RESULTIS "ERROR IN COMMAND"
+ CASE 54: RESULTIS "'OR' EXPECTED"
+ CASE 57: RESULTIS "'=' EXPECTED"
+ CASE 58: RESULTIS "'TO' EXPECTED"
+ CASE 60: RESULTIS "'INTO' EXPECTED"
+ CASE 61:CASE 62: RESULTIS "':' EXPECTED"
+ CASE 63: RESULTIS "'**/' MISSING"
+ $)
+
+ WRITEF(S, A) $)
+
+
+.
+
+// CAE1
+
+
+GET "SYNHDR"
+
+LET RDBLOCKBODY() = VALOF
+ $(1 LET P, L = REC.P, REC.L
+ LET A = 0
+
+ REC.P, REC.L := LEVEL(), RECOVER
+
+ IGNORE(S.SEMICOLON)
+
+ SWITCHON SYMB INTO
+ $( CASE S.MANIFEST:
+ CASE S.STATIC:
+ CASE S.GLOBAL:
+ $( LET OP = SYMB
+ NEXTSYMB()
+ A := RDSECT(RDCDEFS)
+ A := LIST3(OP, A, RDBLOCKBODY())
+ GOTO RET $)
+
+
+ CASE S.LET: NEXTSYMB()
+ A := RDEF()
+ RECOVER: WHILE SYMB=S.AND DO
+ $( NEXTSYMB()
+ A := LIST3(S.AND, A, RDEF()) $)
+ A := LIST3(S.LET, A, RDBLOCKBODY())
+ GOTO RET
+
+ DEFAULT: A := RDSEQ()
+
+ UNLESS SYMB=S.RSECT \/ SYMB=S.END DO
+ CAEREPORT(51)
+
+ CASE S.RSECT: CASE S.END:
+ RET: REC.P, REC.L := P, L
+ RESULTIS A $)1
+
+AND RDSEQ() = VALOF
+ $( LET A = 0
+ IGNORE(S.SEMICOLON)
+ A := RCOM()
+ IF SYMB=S.RSECT \/ SYMB=S.END RESULTIS A
+ RESULTIS LIST3(S.SEQ, A, RDSEQ()) $)
+
+
+AND RDCDEFS() = VALOF
+ $(1 LET A, B = 0, 0
+ LET PTR = @A
+ LET P, L = REC.P, REC.L
+ REC.P, REC.L := LEVEL(), RECOVER
+
+ $( B := RNAME()
+ TEST SYMB=S.EQ \/ SYMB=S.COLON THEN NEXTSYMB()
+ OR CAEREPORT(45)
+ !PTR := LIST4(S.CONSTDEF, 0, B, REXP(0))
+ PTR := @H2!(!PTR)
+ RECOVER: IGNORE(S.SEMICOLON) $) REPEATWHILE SYMB=S.NAME
+
+ REC.P, REC.L := P, L
+ RESULTIS A $)1
+
+AND RDSECT(R) = VALOF
+ $( LET TAG, A = WORDNODE, 0
+ CHECKFOR(S.LSECT, 6)
+ A := R()
+ UNLESS SYMB=S.RSECT DO CAEREPORT(7)
+ TEST TAG=WORDNODE
+ THEN NEXTSYMB()
+ OR IF WORDNODE=NULLTAG DO
+ $( SYMB := 0
+ CAEREPORT(9) $)
+ RESULTIS A $)
+
+
+AND RNAMELIST() = VALOF
+ $( LET A = RNAME()
+ UNLESS SYMB=S.COMMA RESULTIS A
+ NEXTSYMB()
+ RESULTIS LIST3(S.COMMA, A, RNAMELIST()) $)
+
+
+AND RNAME() = VALOF
+ $( LET A = WORDNODE
+ CHECKFOR(S.NAME, 8)
+ RESULTIS A $)
+
+AND IGNORE(ITEM) BE IF SYMB=ITEM DO NEXTSYMB()
+
+AND CHECKFOR(ITEM, N) BE
+ $( UNLESS SYMB=ITEM DO CAEREPORT(N)
+ NEXTSYMB() $)
+
+.
+
+// CAE2
+
+
+GET "SYNHDR"
+LET RBEXP() = VALOF
+ $(1 LET A, OP = 0, SYMB
+
+ SWITCHON SYMB INTO
+
+ $( DEFAULT:
+ CAEREPORT(32)
+
+ CASE S.QUERY:
+ NEXTSYMB(); RESULTIS LIST1(S.QUERY)
+
+ CASE S.TRUE:
+ CASE S.FALSE:
+ CASE S.NAME:
+ A := WORDNODE
+ NEXTSYMB()
+ RESULTIS A
+
+ CASE S.STRING:
+ A := NEWVEC(WORDSIZE+1)
+ A!0 := S.STRING
+ FOR I = 0 TO WORDSIZE DO A!(I+1) := WORDV!I
+ NEXTSYMB()
+ RESULTIS A
+
+ CASE S.NUMBER:
+ A := LIST2(S.NUMBER, DECVAL)
+ NEXTSYMB()
+ RESULTIS A
+
+ CASE S.LPAREN:
+ NEXTSYMB()
+ A := REXP(0)
+ CHECKFOR(S.RPAREN, 15)
+ RESULTIS A
+
+ CASE S.VALOF:
+ NEXTSYMB()
+ RESULTIS LIST2(S.VALOF, RCOM())
+
+ CASE S.VECAP: OP := S.RV
+ CASE S.LV:
+ CASE S.RV: NEXTSYMB(); RESULTIS LIST2(OP, REXP(35))
+
+ CASE S.PLUS: NEXTSYMB(); RESULTIS REXP(34)
+
+ CASE S.MINUS: NEXTSYMB()
+ A := REXP(34)
+ TEST H1!A=S.NUMBER
+ THEN H2!A := - H2!A
+ OR A := LIST2(S.NEG, A)
+ RESULTIS A
+
+ CASE S.NOT: NEXTSYMB(); RESULTIS LIST2(S.NOT, REXP(24))
+
+ CASE S.TABLE: NEXTSYMB()
+ RESULTIS LIST2(S.TABLE, REXPLIST()) $)1
+
+
+
+AND REXP(N) = VALOF
+ $(1 LET A = RBEXP()
+
+ LET B, C, P, Q = 0, 0, 0, 0
+
+ L: $( LET OP = SYMB
+
+ IF NLPENDING RESULTIS A
+
+ SWITCHON OP INTO
+ $(B DEFAULT: RESULTIS A
+
+ CASE S.LPAREN: NEXTSYMB()
+ B := 0
+ UNLESS SYMB=S.RPAREN DO B := REXPLIST()
+ CHECKFOR(S.RPAREN, 19)
+ A := LIST3(S.FNAP, A, B)
+ GOTO L
+
+ CASE S.VECAP: P := 40; GOTO LASSOC
+
+ CASE S.REM:CASE S.MULT:CASE S.DIV: P := 35; GOTO LASSOC
+
+ CASE S.PLUS:CASE S.MINUS: P := 34; GOTO LASSOC
+
+ CASE S.EQ:CASE S.NE:
+ CASE S.LE:CASE S.GE:
+ CASE S.LS:CASE S.GR:
+ IF N>=30 RESULTIS A
+
+ $(R NEXTSYMB()
+ B := REXP(30)
+ A := LIST3(OP, A, B)
+ TEST C=0 THEN C := A
+ OR C := LIST3(S.LOGAND, C, A)
+ A, OP := B, SYMB $)R REPEATWHILE S.EQ<=OP<=S.GE
+
+ A := C
+ GOTO L
+
+ CASE S.LSHIFT:CASE S.RSHIFT: P, Q := 25, 30; GOTO DIADIC
+
+ CASE S.LOGAND: P := 23; GOTO LASSOC
+
+ CASE S.LOGOR: P := 22; GOTO LASSOC
+
+ CASE S.EQV:CASE S.NEQV: P := 21; GOTO LASSOC
+
+ CASE S.COND:
+ IF N>=13 RESULTIS A
+ NEXTSYMB()
+ B := REXP(0)
+ CHECKFOR(S.COMMA, 30)
+ A := LIST4(S.COND, A, B, REXP(0))
+ GOTO L
+
+ LASSOC: Q := P
+
+ DIADIC: IF N>=P RESULTIS A
+ NEXTSYMB()
+ A := LIST3(OP, A, REXP(Q))
+ GOTO L $)B $)1
+
+LET REXPLIST() = VALOF
+ $(1 LET A = 0
+ LET PTR = @A
+
+ $( LET B = REXP(0)
+ UNLESS SYMB=S.COMMA DO $( !PTR := B
+ RESULTIS A $)
+ NEXTSYMB()
+ !PTR := LIST3(S.COMMA, B, 0)
+ PTR := @H3!(!PTR) $) REPEAT
+ $)1
+
+LET RDEF() = VALOF
+ $(1 LET N = RNAMELIST()
+
+ SWITCHON SYMB INTO
+
+ $( CASE S.LPAREN:
+ $( LET A = 0
+ NEXTSYMB()
+ UNLESS H1!N=S.NAME DO CAEREPORT(40)
+ IF SYMB=S.NAME DO A := RNAMELIST()
+ CHECKFOR(S.RPAREN, 41)
+
+ IF SYMB=S.BE DO
+ $( NEXTSYMB()
+ RESULTIS LIST5(S.RTDEF, N, A, RCOM(), 0) $)
+
+ IF SYMB=S.EQ DO
+ $( NEXTSYMB()
+ RESULTIS LIST5(S.FNDEF, N, A, REXP(0), 0) $)
+
+ CAEREPORT(42) $)
+
+ DEFAULT: CAEREPORT(44)
+
+ CASE S.EQ:
+ NEXTSYMB()
+ IF SYMB=S.VEC DO
+ $( NEXTSYMB()
+ UNLESS H1!N=S.NAME DO CAEREPORT(43)
+ RESULTIS LIST3(S.VECDEF, N, REXP(0)) $)
+ RESULTIS LIST3(S.VALDEF, N, REXPLIST()) $)1
+
+.
+
+
+// CAE4
+
+
+
+GET "SYNHDR"
+
+LET RBCOM() = VALOF
+ $(1 LET A, B, OP = 0, 0, SYMB
+
+ SWITCHON SYMB INTO
+ $( DEFAULT: RESULTIS 0
+
+ CASE S.NAME:CASE S.NUMBER:CASE S.STRING:
+ CASE S.TRUE:CASE S.FALSE:CASE S.LV:CASE S.RV:CASE S.VECAP:
+ CASE S.LPAREN:
+ A := REXPLIST()
+
+ IF SYMB=S.ASS THEN
+ $( OP := SYMB
+ NEXTSYMB()
+ RESULTIS LIST3(OP, A, REXPLIST()) $)
+
+ IF SYMB=S.COLON DO
+ $( UNLESS H1!A=S.NAME DO CAEREPORT(50)
+ NEXTSYMB()
+ RESULTIS LIST4(S.COLON, A, RBCOM(), 0) $)
+
+ IF H1!A=S.FNAP DO
+ $( H1!A := S.RTAP
+ RESULTIS A $)
+
+ CAEREPORT(51)
+ RESULTIS A
+
+ CASE S.GOTO:CASE S.RESULTIS:
+ NEXTSYMB()
+ RESULTIS LIST2(OP, REXP(0))
+
+ CASE S.IF:CASE S.UNLESS:
+ CASE S.WHILE:CASE S.UNTIL:
+ NEXTSYMB()
+ A := REXP(0)
+ IGNORE(S.DO)
+ RESULTIS LIST3(OP, A, RCOM())
+
+ CASE S.TEST:
+ NEXTSYMB()
+ A := REXP(0)
+ IGNORE(S.DO)
+ B := RCOM()
+ CHECKFOR(S.OR, 54)
+ RESULTIS LIST4(S.TEST, A, B, RCOM())
+
+ CASE S.FOR:
+ $( LET I, J, K = 0, 0, 0
+ NEXTSYMB()
+ A := RNAME()
+ CHECKFOR(S.EQ, 57)
+ I := REXP(0)
+ CHECKFOR(S.TO, 58)
+ J := REXP(0)
+ IF SYMB=S.BY DO $( NEXTSYMB()
+ K := REXP(0) $)
+ IGNORE(S.DO)
+ RESULTIS LIST6(S.FOR, A, I, J, K, RCOM()) $)
+
+ CASE S.LOOP:
+ CASE S.BREAK:CASE S.RETURN:CASE S.FINISH:CASE S.ENDCASE:
+ A := WORDNODE
+ NEXTSYMB()
+ RESULTIS A
+
+ CASE S.SWITCHON:
+ NEXTSYMB()
+ A := REXP(0)
+ CHECKFOR(S.INTO, 60)
+ RESULTIS LIST3(S.SWITCHON, A, RDSECT(RDSEQ))
+
+ CASE S.CASE:
+ NEXTSYMB()
+ A := REXP(0)
+ CHECKFOR(S.COLON, 61)
+ RESULTIS LIST3(S.CASE, A, RBCOM())
+
+ CASE S.DEFAULT:
+ NEXTSYMB()
+ CHECKFOR(S.COLON, 62)
+ RESULTIS LIST2(S.DEFAULT, RBCOM())
+
+ CASE S.LSECT:
+ RESULTIS RDSECT(RDBLOCKBODY) $)1
+
+
+AND RCOM() = VALOF
+ $(1 LET A = RBCOM()
+
+ IF A=0 DO CAEREPORT(51)
+
+ WHILE SYMB=S.REPEAT \/ SYMB=S.REPEATWHILE \/
+ SYMB=S.REPEATUNTIL DO
+ $( LET OP = SYMB
+ NEXTSYMB()
+ TEST OP=S.REPEAT
+ THEN A := LIST2(OP, A)
+ OR A := LIST3(OP, A, REXP(0)) $)
+
+ RESULTIS A $)1
+
+.
+
+// PLIST
+
+
+GET "SYNHDR"
+
+LET PLIST(X, N, D) BE
+ $(1 LET SIZE = 0
+ LET V = TABLE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+
+ IF X=0 DO $( WRITES("NIL"); RETURN $)
+
+ SWITCHON H1!X INTO
+ $( CASE S.NUMBER: WRITEN(H2!X); RETURN
+
+ CASE S.NAME: WRITES(X+2); RETURN
+
+ CASE S.STRING: WRITEF("*"%S*"", X+1); RETURN
+
+ CASE S.FOR:
+ SIZE := SIZE + 2
+
+ CASE S.COND:CASE S.FNDEF:CASE S.RTDEF:
+ CASE S.TEST:CASE S.CONSTDEF:
+ SIZE := SIZE + 1
+
+ CASE S.VECAP:CASE S.FNAP:
+ CASE S.MULT:CASE S.DIV:CASE S.REM:CASE S.PLUS:CASE S.MINUS:
+ CASE S.EQ:CASE S.NE:CASE S.LS:CASE S.GR:CASE S.LE:CASE S.GE:
+ CASE S.LSHIFT:CASE S.RSHIFT:CASE S.LOGAND:CASE S.LOGOR:
+ CASE S.EQV:CASE S.NEQV:CASE S.COMMA:
+ CASE S.AND:CASE S.VALDEF:CASE S.VECDEF:
+ CASE S.ASS:CASE S.RTAP:CASE S.COLON:CASE S.IF:CASE S.UNLESS:
+ CASE S.WHILE:CASE S.UNTIL:CASE S.REPEATWHILE:
+ CASE S.REPEATUNTIL:
+ CASE S.SWITCHON:CASE S.CASE:CASE S.SEQ:CASE S.LET:
+ CASE S.MANIFEST:CASE S.STATIC:CASE S.GLOBAL:
+ SIZE := SIZE + 1
+
+ CASE S.VALOF:CASE S.LV:CASE S.RV:CASE S.NEG:CASE S.NOT:
+ CASE S.TABLE:CASE S.GOTO:CASE S.RESULTIS:CASE S.REPEAT:
+ CASE S.DEFAULT:
+ SIZE := SIZE + 1
+
+ CASE S.LOOP:
+ CASE S.BREAK:CASE S.RETURN:CASE S.FINISH:CASE S.ENDCASE:
+ CASE S.TRUE:CASE S.FALSE:CASE S.QUERY:
+ DEFAULT:
+ SIZE := SIZE + 1
+
+ IF N=D DO $( WRITES("ETC")
+ RETURN $)
+
+ WRITES ("OP")
+ WRITEN(H1!X)
+ FOR I = 2 TO SIZE DO
+ $( NEWLINE()
+ FOR J=0 TO N-1 DO WRITES( V!J )
+ WRITES("**-")
+ V!N := I=SIZE->" ","! "
+ PLIST(H1!(X+I-1), N+1, D) $)
+ RETURN $)1
--- /dev/null
+JL4
+$ 1 LIP2 X4
+$ 2 LL5 AIP2 X1 X4 4 JL7
+$ 6 LIG16 K3 SG196 LIG17 K3 SG194 LIG194 SP5 LIG12 K3 LL499 SP5 LG1 SP6/
+ LIG76 K3 LP5 SP3 L5500 SP4 LIP3 SG128 L2 SG282 L0 SG127 L0 SG110 L0 SP/
+26 JL8 9 L0 SP27 LIP26 AIP3 SP28 LIP27 SIP28 LIP26 A1 SP26 8 LIP26 L20 /
+X15 TL9 LL498 SP28 LIG42 K26 SG193 L0 LIG193 X10 TL10 L0 SP26 L0 SP27 L/
+IG193 SP30 LIG11 K28 LL497 SP30 LIG60 K28 13 LIG13 K28 SP26 11 L10 LIP2/
+6 X10 TL15 L-1 LIP26 X10 FL14 15 JL16 14 LIP26 SP30 LIG14 K28 L80 LIP26/
+ X10 FL17 L1 SP27 17 L84 LIP26 X10 FL18 L2 SP27 18 L67 LIP26 X10 FL19 L/
+3 SP27 19 L77 LIP26 X10 FL20 L4 SP27 20 L78 LIP26 X10 FL21 L5 SP27 21 L/
+65 LIP26 X10 FL22 LIL3 SG190 22 L83 LIP26 X10 FL23 L-1 SG110 23 L69 LIP/
+26 X10 FL24 L-1 SG127 24 L76 LIP26 X10 FL25 LIG70 K28 SP4 LIP4 SP30 LIG/
+62 K28 LIG71 SP26 JIL12 25 L51 LIP26 X10 FL26 L3 SG282 26 L-1 SP28 LIP2/
+7 AIG128 SP29 LIP28 SIP29 JL13 16 LIG63 K28 LIG46 K28 10 L20 SG192 L0 S/
+G191 LIG196 SG193 LIG193 SP28 LIG11 K26 LL496 SP28 LIG41 K26 SG195 L0 L/
+IG195 X10 FL27 LIG194 SG195 27 JL30
+$ 28 LP5 SP4 LIP4 SG100 31 LIP3 AIP2 SG167 LIP2 SG168 LIG150 K69 SP69 L/
+0 LIP69 X10 FL32 JL33 32 LL495 SP72 LIG168 AIP3 LIG167 X9 SP73 LIG76 K7/
+0 L2 AIG128 X1 FL34 LL494 SP72 LIG60 K70 LIP69 SP72 L0 SP73 L20 SP74 LI/
+G152 K70 LIG63 K70 34 L0 LIG191 X10 TL35 L8 SP72 LIG30 K70 35 L3 AIG128/
+ X1 TL36 LIG195 SP72 LIG12 K70 LIP69 SP72 LIG245 K70 LIG194 SP72 LIG12 /
+K70 36 JL31 33 X4 30 LIL29 SP28 LIP4 SP29 LIG40 K26 LIG46 K26 L4 AIG128/
+ X1 FL37 LIG78 K26 37 LL493 SP28 LIG60 K26 L0 LIG191 X10 TL38 L8 SP28 L/
+IG30 K26 38 X22 X4 7
+3 DL2 5 D0 D0 D0 D0 D0 D9 D0 D0 D0 D0 D0 D11 D12 D13 D0 D0 D0 D0 D0 D0 /
+D0 D10 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D10 D0 D0 D0 D0 D0 /
+D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D32 D0 D/
+91 D93 D0 D0 D0 D0 D0 D0 D0 D46 D60 D40 D43 D124 D38 D0 D0 D0 D0 D0 D0 /
+D0 D0 D0 D33 D36 D42 D41 D59 D126 D45 D47 D92 D0 D0 D94 D95 D0 D0 D0 D0/
+ D44 D37 D96 D62 D63 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D58 D35 D64 D39 D61 /
+D34 D0 D97 D98 D99 D100 D101 D102 D103 D104 D105 D0 D0 D0 D0 D0 D0 D0 D/
+106 D107 D108 D109 D110 D111 D112 D113 D114 D0 D0 D0 D0 D0 D0 D0 D0 D11/
+5 D116 D117 D118 D119 D120 D121 D122 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D/
+0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D65 D66 D67 D68 D69 D70 D71 D72 D73 /
+D0 D0 D0 D0 D0 D0 D0 D74 D75 D76 D77 D78 D79 D80 D81 D82 D0 D0 D0 D0 D0/
+ D0 D0 D0 D83 D84 D85 D86 D87 D88 D89 D90 D0 D0 D0 D0 D0 D0 D48 D49 D50/
+ D51 D52 D53 D54 D55 D56 D57 D0 D0 D0 D0 D0 D0 499 C9 C10 C66 C67 C80 C/
+76 C32 C37 C78 C10 498 C7 C79 C80 C84 C73 C79 C78 C83 12 DL11 497 C9 C7/
+9 C80 C84 C73 C79 C78 C83 C32 C32 496 C5 C79 C67 C79 C68 C69 29 DL28 49/
+5 C14 C10 C84 C82 C69 C69 C32 C83 C73 C90 C69 C32 C37 C78 C10 494 C8 C6/
+5 C69 C32 C84 C82 C69 C69 C10 493 C18 C10 C80 C72 C65 C83 C69 C32 C49 C/
+32 C67 C79 C77 C80 C76 C69 C84 C69 C10
+G190L1 G1L6
+Z
+JL6
+$ 1 L0 SG122 11 LIG127 FL13 LIG117 SP4 LIG14 K2 13 JL14 16 17 L1 AIG133/
+ SG133 L-1 SG122 18 19 20 LIG126 K2 L32 LIG117 X10 TL18 JIL12 21 22 23 /
+24 25 26 27 28 29 30 L1 SG115 L10 SP4 LIL3 K2 X4 31 32 33 34 35 36 37 3/
+8 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 LIG117 SP4 LIG1/
+18 K2 LIG125 K2 SG115 L93 LIG115 X10 FL57 LIG155 K2 JIL12 57 X4 58 LIG1/
+26 K2 L40 LIG117 X10 TL59 L41 LIG117 X10 TL59 L91 SP4 LIG151 K2 59 L40 /
+LIG117 X10 FL61 L91 SP2 JL60 61 L92 SP2 60 LIP2 SG115 L36 SP4 LIG118 K2/
+ LIG125 K2 X4 62 63 L105 SG115 JIL8 64 65 L106 SG115 JIL8 66 L1 SG115 L/
+IG126 K2 L48 LIG117 X15 FL67 LIG117 L55 X15 FL67 L8 SP4 LIL3 K2 X4 67 L/
+66 LIG117 X10 FL68 LIG126 K2 L2 SP4 LIL3 K2 X4 68 L79 LIG117 X10 FL69 L/
+IG126 K2 L8 SP4 LIL3 K2 X4 69 L88 LIG117 X10 FL70 LIG126 K2 L16 SP4 LIL/
+3 K2 X4 70 L33 SP4 LIG151 K2 71 L16 SG115 JIL8 72 L14 SG115 JIL8 73 L38/
+ SG115 JIL8 74 L97 SG115 JIL8 75 L7 SG115 JIL8 76 L33 SG115 JIL8 77 L20/
+ SG115 JIL8 78 L9 SG115 JIL8 79 L50 SG115 JIL8 80 L11 SG115 JIL8 81 LIG/
+126 K2 L92 LIG117 X10 FL82 L33 SG115 JIL8 82 L47 LIG117 X10 FL83 JIL10 /
+83 L42 LIG117 X10 TL84 L12 SG115 X4 84 LIG126 K2 JL86 85 L42 LIG117 X10/
+ FL87 LIG126 K2 L47 LIG117 X10 TL89 JL86 89 LIG126 K2 JIL12 JL88 87 L10/
+ LIG117 X10 FL90 L1 AIG133 SG133 90 LIG126 K2 88 86 L-1 LIG117 X10 FL85/
+ L63 SP4 LIG151 K2 91 9 LIG126 K2 L10 LIG117 X10 TL92 L-1 LIG117 X10 FL/
+91 92 JIL12 93 LIG126 K2 L124 LIG117 X10 FL94 JIL10 94 L34 SG115 X4 95 /
+LIG126 K2 L47 LIG117 X10 FL96 L34 SG115 JIL8 96 L61 LIG117 X10 FL97 L21/
+ SG115 JIL8 97 L30 SG115 X4 98 LIG126 K2 L61 LIG117 X10 FL99 L24 SG115 /
+JIL8 99 L60 LIG117 X10 FL100 L31 SG115 JIL8 100 L22 SG115 X4 101 LIG126/
+ K2 L61 LIG117 X10 FL102 L25 SG115 JIL8 102 L62 LIG117 X10 FL103 L32 SG/
+115 JIL8 103 L23 SG115 X4 104 LIG126 K2 L62 LIG117 X10 FL105 L37 SG115 /
+JIL8 105 L15 SG115 X4 106 LIG126 K2 L61 LIG117 X10 FL107 L50 SG115 JIL8/
+ 107 L54 SG115 X4 108 109 LIG117 SP2 L0 SG109 110 LIG126 K3 LIP2 LIG117/
+ X10 TL112 L255 LIG109 X10 FL111 112 LIP2 LIG117 X10 TL113 L95 SP5 LIG1/
+51 K3 113 L1 LIG109 X10 FL114 L39 LIG117 X10 FL114 L1 SG115 LIG101 SP5 /
+LIG190 K3 SG101 JIL8 114 LIG109 SP3 L0 AIG108 SP4 LIP3 SIP4 LIG108 SP5 /
+LIG106 SP6 LIG66 K3 SG107 L3 SG115 JIL8 111 L10 LIG117 X10 FL115 L1 AIG/
+133 SG133 115 L42 LIG117 X10 FL116 LIG126 K3 L10 LIG117 X10 FL117 L1 AI/
+G133 SG133 118 LIG126 K3 L32 LIG117 X10 TL118 L9 LIG117 X10 TL118 L42 L/
+IG117 X10 TL119 L34 SP5 LIG151 K3 119 JL110 117 L84 LIG117 X10 FL120 L9/
+ SG117 120 L83 LIG117 X10 FL121 L32 SG117 121 L78 LIG117 X10 FL122 L10 /
+SG117 122 L66 LIG117 X10 FL123 L0 SG117 123 L80 LIG117 X10 FL124 L12 SG/
+117 124 116 LIG117 SG101 L1 AIG109 SG109 LIG117 SP3 LIG109 AIG108 SP4 L/
+IP3 SIP4 JL110 125 L-1 LIG117 X10 FL126 127 L0 LIG104 X10 FL128 L90 SG1/
+15 X4 128 LIG46 K2 LIG104 L3 X9 SG104 LIG104 AIG103 X1 SG193 LIG193 SP4/
+ LIG11 K2 L1 AIG104 AIG103 X1 SG133 L2 AIG104 AIG103 X1 SG117 JIL12 126/
+ L32 SG117 L94 SP4 LIG151 K2 LIG126 K2 JIL12 7 LIG126 K2 JL15 14 LIG117/
+ X23 D66 DL125 D12 DL16 D10 DL17 D9 DL19 D32 DL20 D48 DL21 D49 DL22 D50/
+ DL23 D51 DL24 D52 DL25 D53 DL26 D54 DL27 D55 DL28 D56 DL29 D57 DL30 D6/
+5 DL31 D66 DL32 D67 DL33 D68 DL34 D69 DL35 D70 DL36 D71 DL37 D72 DL38 D/
+73 DL39 D74 DL40 D75 DL41 D76 DL42 D77 DL43 D78 DL44 D79 DL45 D80 DL46 /
+D81 DL47 D82 DL48 D83 DL49 D84 DL50 D85 DL51 D86 DL52 D87 DL53 D88 DL54/
+ D89 DL55 D90 DL56 D36 DL58 D91 DL62 D40 DL63 D93 DL64 D41 DL65 D35 DL6/
+6 D63 DL71 D43 DL72 D44 DL73 D59 DL74 D64 DL75 D38 DL76 D61 DL77 D33 DL/
+78 D95 DL79 D42 DL80 D47 DL81 D124 DL93 D92 DL95 D60 DL98 D62 DL101 D45/
+ DL104 D58 DL106 D39 DL108 D34 DL109 D46 DL127 15 X4
+$ 2 LIG117 SP5 LIL5 K3 SP3 LIP3 SG101 LIP3 LIP2 X13 FL129 L33 SP6 LIG15/
+1 K4 129 130 LIG126 K4 LIG117 SP6 LIL5 K4 SP3 LIP3 LIP2 X13 FL131 X4 13/
+1 LIG101 LIP2 X5 AIP3 SG101 JL130 X4
+$ 4 L48 LIP2 X15 FL133 LIP2 L57 X15 FL133 LIP2 L48 X9 SP3 JL132 133 L65/
+ LIP2 X15 FL135 LIP2 L70 X15 FL135 LIP2 L65 X9 A10 SP3 JL134 135 L100 S/
+P3 134 132 LIP3 X4 6
+3 DL2 5 DL4 8 DL7 10 DL9 12 DL11
+G120L1
+Z
+JL5
+$ 1 LIP2 SP6 LIG108 SP7 LIG67 K4 LIG108 SP6 LIG106 SP7 LIG66 K4 SG107 L/
+IG125 K4 LIP3 SP4 L0 AIG116 SP5 LIP4 SIP5 X4
+$ 3 LL499 SP4 L40 SP5 LIL2 K2 LL498 SP4 L89 SP5 LIL2 K2 LL497 SP4 L66 S/
+P5 LIL2 K2 LL496 SP4 L100 SP5 LIL2 K2 LL495 SP4 L71 SP5 LIL2 K2 LL494 S/
+P4 L101 SP5 LIL2 K2 LL493 SP4 L72 SP5 LIL2 K2 LL492 SP4 L20 SP5 LIL2 K2/
+ LL491 SP4 L35 SP5 LIL2 K2 LL490 SP4 L102 SP5 LIL2 K2 LL489 SP4 L69 SP5/
+ LIL2 K2 LL488 SP4 L5 SP5 LIL2 K2 LL487 SP4 L56 SP5 LIL2 K2 LL486 SP4 L/
+68 SP5 LIL2 K2 LL485 SP4 L52 SP5 LIL2 K2 LL484 SP4 L25 SP5 LIL2 K2 LL48/
+3 SP4 L23 SP5 LIL2 K2 LL482 SP4 L76 SP5 LIL2 K2 LL481 SP4 L93 SP5 LIL2 /
+K2 LL480 SP4 L57 SP5 LIL2 K2 LL479 SP4 L98 SP5 LIL2 K2 LL478 SP4 L74 SP/
+5 LIL2 K2 LL477 SP4 L7 SP5 LIL2 K2 LL476 SP4 L24 SP5 LIL2 K2 LL475 SP4 /
+L22 SP5 LIL2 K2 LL474 SP4 L34 SP5 LIL2 K2 LL473 SP4 L33 SP5 LIL2 K2 LL4/
+72 SP4 L65 SP5 LIL2 K2 LL471 SP4 L31 SP5 LIL2 K2 LL470 SP4 L75 SP5 LIL2/
+ K2 LL469 SP4 L21 SP5 LIL2 K2 LL468 SP4 L30 SP5 LIL2 K2 LL467 SP4 L36 S/
+P5 LIL2 K2 LL466 SP4 L102 SP5 LIL2 K2 LL465 SP4 L53 SP5 LIL2 K2 LL464 S/
+P4 L67 SP5 LIL2 K2 LL463 SP4 L13 SP5 LIL2 K2 LL462 SP4 L32 SP5 LIL2 K2 /
+LL461 SP4 L8 SP5 LIL2 K2 LL460 SP4 L61 SP5 LIL2 K2 LL459 SP4 L62 SP5 LI/
+L2 K2 LL458 SP4 L63 SP5 LIL2 K2 LL457 SP4 L70 SP5 LIL2 K2 LL456 SP4 L79/
+ SP5 LIL2 K2 LL455 SP4 L99 SP5 LIL2 K2 LL454 SP4 L55 SP5 LIL2 K2 LL453 /
+SP4 L4 SP5 LIL2 K2 LL452 SP4 L101 SP5 LIL2 K2 LL451 SP4 L39 SP5 LIL2 K2/
+ LL450 SP4 L60 SP5 LIL2 K2 LL449 SP4 L58 SP5 LIL2 K2 LL448 SP4 L103 SP5/
+ LIL2 K2 LL447 SP4 L6 SP5 LIL2 K2 LL446 SP4 L59 SP5 LIL2 K2 LL445 SP4 L/
+0 SP5 LIL2 K2 LIG116 SG134 X4
+$ 4 L0 AIG106 X1 SP2 LIG107 AIG106 X1 SP3 LIP2 AIP3 L1 X17 LIG149 X7 SP/
+2 LIP2 AIG148 SP3 7 LIP3 X1 SG116 L0 LIG116 X10 TL9 L0 SP4 LIG107 SP5 J/
+L10 11 L2 AIP4 AIG116 X1 SP6 LIP4 AIG106 X1 SP7 LIP6 LIP7 X11 FL12 L1 A/
+IG116 SP3 JIL8 12 LIP4 A1 SP4 10 LIP4 LIP5 X15 TL11 L0 AIG116 X1 JL6 9 /
+L2 AIG107 SP6 LIG166 K4 SG116 L2 SP4 L0 AIG116 SP5 LIP4 SIP5 LIP2 AIG14/
+8 X1 SP4 L1 AIG116 SP5 LIP4 SIP5 L0 SP4 LIG107 SP5 JL13 14 LIP4 AIG106 /
+X1 SP6 L2 AIP4 AIG116 SP7 LIP6 SIP7 LIP4 A1 SP4 13 LIP4 LIP5 X15 TL14 L/
+IG116 SP4 LIP2 AIG148 SP5 LIP4 SIP5 L2 JL6 6 X4 5
+2 DL1 499 C3 C65 C78 C68 498 C2 C66 C69 497 C5 C66 C82 C69 C65 C75 496 /
+C2 C66 C89 495 C4 C67 C65 C83 C69 494 C2 C68 C79 493 C7 C68 C69 C70 C65/
+ C85 C76 C84 492 C2 C69 C81 491 C3 C69 C81 C86 490 C4 C69 C76 C83 C69 4/
+89 C7 C69 C78 C68 C67 C65 C83 C69 488 C5 C70 C65 C76 C83 C69 487 C3 C70/
+ C79 C82 486 C6 C70 C73 C78 C73 C83 C72 485 C4 C71 C79 C84 C79 484 C2 C/
+71 C69 483 C2 C71 C82 482 C6 C71 C76 C79 C66 C65 C76 481 C3 C71 C69 C84/
+ 480 C2 C73 C70 479 C4 C73 C78 C84 C79 478 C3 C76 C69 C84 477 C2 C76 C8/
+6 476 C2 C76 C69 475 C2 C76 C83 474 C5 C76 C79 C71 C79 C82 473 C6 C76 C/
+79 C71 C65 C78 C68 472 C4 C76 C79 C79 C80 471 C6 C76 C83 C72 C73 C70 C8/
+4 470 C8 C77 C65 C78 C73 C70 C69 C83 C84 469 C2 C78 C69 468 C3 C78 C79 /
+C84 467 C4 C78 C69 C81 C86 466 C2 C79 C82 465 C8 C82 C69 C83 C85 C76 C8/
+4 C73 C83 464 C6 C82 C69 C84 C85 C82 C78 463 C3 C82 C69 C77 462 C6 C82 /
+C83 C72 C73 C70 C84 461 C2 C82 C86 460 C6 C82 C69 C80 C69 C65 C84 459 C/
+11 C82 C69 C80 C69 C65 C84 C87 C72 C73 C76 C69 458 C11 C82 C69 C80 C69 /
+C65 C84 C85 C78 C84 C73 C76 457 C8 C83 C87 C73 C84 C67 C72 C79 C78 456 /
+C6 C83 C84 C65 C84 C73 C67 455 C2 C84 C79 454 C4 C84 C69 C83 C84 453 C4/
+ C84 C82 C85 C69 452 C4 C84 C72 C69 C78 451 C5 C84 C65 C66 C76 C69 450 /
+C5 C85 C78 C84 C73 C76 449 C6 C85 C78 C76 C69 C83 C83 448 C3 C86 C69 C6/
+7 447 C5 C86 C65 C76 C79 C70 446 C5 C87 C72 C73 C76 C69 445 C1 C36 8 DL/
+7
+G121L3 G125L4
+Z
+JL9
+$ 1 LIG13 K2 SG117 LIG110 FL10 L0 LIG104 X10 FL11 L-1 LIG117 X11 FL11 L/
+IG111 LIG133 X10 TL12 LL499 SP4 LIG133 SP5 LIG76 K2 LIG133 SG111 12 LIG/
+117 SP4 LIG14 K2 11 10 L1 AIG132 SG132 LIG117 SP2 L63 LIG132 X18 AIG100/
+ SP3 LIP2 SIP3 X4
+$ 2 LL498 SP4 LIG60 K2 LIG132 L63 X9 SP2 LIG132 SP3 JL13 14 L63 LIP2 X1/
+8 AIG100 X1 SP4 L0 LIP4 X10 TL15 LIP4 SP7 LIG14 K5 15 LIP2 A1 SP2 13 LI/
+P2 LIP3 X15 TL14 LIG63 K2 X4
+$ 3 L1 SG109 LIP2 SP3 L1 AIG108 SP4 LIP3 SIP4 16 LIG126 K3 L65 LIG117 X/
+15 FL18 LIG117 L90 X15 TL17 18 L48 LIG117 X15 FL19 LIG117 L57 X15 TL17 /
+19 L46 LIG117 X10 TL17 JL20 17 L1 AIG109 SG109 LIG117 SP3 LIG109 AIG108/
+ SP4 LIP3 SIP4 JL16 20 LIG109 SP3 L0 AIG108 SP4 LIP3 SIP4 LIG108 SP5 LI/
+G106 SP6 LIG66 K3 SG107 X4
+$ 4 LIG120 K2 L3 LIG115 X10 TL21 L97 SP4 LIG151 K2 21 L5 AIG128 X1 FL22/
+ X4 22 LIG193 SP2 LIG104 AIG103 SP3 LIP2 SIP3 LIG133 SP2 L1 AIG104 AIG1/
+03 SP3 LIP2 SIP3 LIG117 SP2 L2 AIG104 AIG103 SP3 LIP2 SIP3 L3 AIG104 SG/
+104 L1 SG133 LIG106 SP4 LIG42 K2 SG193 L0 LIG193 X10 FL23 LIG106 SP4 LI/
+L8 K2 SG193 23 L0 LIG193 X10 FL24 L96 SP4 LIG106 SP5 LIG151 K2 24 LIG19/
+3 SP4 LIG11 K2 LIG126 K2 X4
+$ 5 LIP2 SP6 L0 SP7 LIG85 K4 SP4 LIP3 SP7 L0 SP8 LIG85 K5 SP5 L1 SP6 LI/
+P5 SP7 JL25 26 L1 AIP4 SP4 LIP2 SP10 LIP4 SP11 LIP3 SP14 LIP6 SP15 LIG8/
+5 K12 SP12 LIG86 K8 LIP6 A1 SP6 25 LIP6 LIP7 X15 TL26 LIP2 SP8 L0 SP9 L/
+IP4 SP10 LIG86 K6 X4
+$ 7 LP5 SP3 LL497 SP4 LIP4 SP72 L0 SP73 LIG85 K70 SP70 LIP2 SP73 L0 SP7/
+4 LIG85 K71 SP71 LIP70 AIP71 L255 X14 FL28 L0 JL27 JL29 28 LIP3 SP72 L0/
+ SP73 L0 SP74 LIG86 K70 LIP3 SP72 LIP4 SP73 LIL6 K70 LIP3 SP72 LIP2 SP7/
+3 LIL6 K70 LIP3 SP72 LIG42 K70 JL27 29 27 X4 9
+6 DL5 8 DL7 499 C5 C37 C73 C52 C32 C32 498 C4 C10 C46 C46 C46 497 C23 C/
+47 C117 C115 C114 C47 C108 C111 C99 C97 C108 C47 C108 C105 C98 C47 C98 /
+C99 C112 C108 C107 C105 C116 C47
+G126L1 G131L2 G118L3 G155L4
+Z
+JL12
+$ 1 LIG167 LIP2 X9 L1 X9 SG167 LIG167 LIG168 X15 FL14 L0 SG192 L98 SP5 /
+LIG151 K3 14 LIG167 JL13 13 X4
+$ 2 L0 SP5 LIG166 K3 SP3 LIP2 SP4 L0 AIP3 SP5 LIP4 SIP5 LIP3 JL15 15 X4/
+
+$ 3 L1 SP6 LIG166 K4 SP4 LIP2 SP5 L0 AIP4 SP6 LIP5 SIP6 LIP3 SP5 L1 AIP/
+4 SP6 LIP5 SIP6 LIP4 JL16 16 X4
+$ 4 L2 SP7 LIG166 K5 SP5 LIP2 SP6 L0 AIP5 SP7 LIP6 SIP7 LIP3 SP6 L1 AIP/
+5 SP7 LIP6 SIP7 LIP4 SP6 L2 AIP5 SP7 LIP6 SIP7 LIP5 JL17 17 X4
+$ 5 L3 SP8 LIG166 K6 SP6 LIP2 SP7 L0 AIP6 SP8 LIP7 SIP8 LIP3 SP7 L1 AIP/
+6 SP8 LIP7 SIP8 LIP4 SP7 L2 AIP6 SP8 LIP7 SIP8 LIP5 SP7 L3 AIP6 SP8 LIP/
+7 SIP8 LIP6 JL18 18 X4
+$ 6 L4 SP9 LIG166 K7 SP7 LIP2 SP8 L0 AIP7 SP9 LIP8 SIP9 LIP3 SP8 L1 AIP/
+7 SP9 LIP8 SIP9 LIP4 SP8 L2 AIP7 SP9 LIP8 SIP9 LIP5 SP8 L3 AIP7 SP9 LIP/
+8 SIP9 LIP6 SP8 L4 AIP7 SP9 LIP8 SIP9 LIP7 JL19 19 X4
+$ 7 L5 SP10 LIG166 K8 SP8 LIP2 SP9 L0 AIP8 SP10 LIP9 SIP10 LIP3 SP9 L1 /
+AIP8 SP10 LIP9 SIP10 LIP4 SP9 L2 AIP8 SP10 LIP9 SIP10 LIP5 SP9 L3 AIP8 /
+SP10 LIP9 SIP10 LIP6 SP9 L4 AIP8 SP10 LIP9 SIP10 LIP7 SP9 L5 AIP8 SP10 /
+LIP9 SIP10 LIP8 JL20 20 X4
+$ 8 L1 AIG191 SG191 LL499 SP6 LIG133 SP7 LIG76 K4 LIP2 SP6 LIP3 SP7 LIL/
+11 K4 LIG131 K4 LIG191 LIG192 X14 FL21 LL498 SP6 LIG60 K4 L8 SP6 LIG30 /
+K4 21 L0 SG122 JL23 22 LIG120 K4 23 L91 LIG115 X10 TL24 L92 LIG115 X10 /
+TL24 L74 LIG115 X10 TL24 L40 LIG115 X10 TL24 L90 LIG115 X10 TL24 LIG122/
+ FL22 24 LIG135 SP6 LIG136 SP7 LIG32 K4 X4
+$ 9 L0 SG132 L0 SP2 JL26 27 L0 SP3 LIP2 AIG100 SP4 LIP3 SIP4 LIP2 A1 SP/
+2 26 LIP2 L63 X15 TL27 LP3 SP2 LIP2 SG103 L0 SG104 L10 SG105 LP15 SP14 /
+LIP14 SG106 LP117 SP116 LIP116 SG108 L0 SG109 LP375 SP374 LIP374 SG148 /
+L100 SG149 L0 SP476 JL30 31 L0 SP477 LIP476 AIG148 SP478 LIP477 SIP478 /
+LIP476 A1 SP476 30 LIP476 L100 X15 TL31 LIG31 K476 SG135 LIL29 SG136 L1/
+ SG133 L0 SG111 LIG126 K476 L-1 LIG117 X10 FL32 L0 JL25 32 LIG121 K476 /
+28 LIG120 K476 L1 AIG128 X1 FL33 LL497 SP478 LIG115 SP479 LIG106 SP480 /
+LIG76 K476 L90 LIG115 X10 FL34 L0 JL25 34 JIL29 33 LIG140 K476 SP476 L9/
+0 LIG115 X10 TL35 L99 SP479 LIG151 K477 JIL29 35 LIP476 JL25 25 X4
+$ 10 JL37 39 LIP2 SP6 LIG62 K4 X4 40 LL496 JL36 41 LL495 JL36 42 LL494 /
+JL36 43 LL493 JL36 44 LL492 JL36 45 LL491 JL36 46 LL490 JL36 47 48 49 L/
+L489 JL36 50 LL488 JL36 51 LL487 JL36 52 LL486 JL36 53 LL485 JL36 54 LL/
+484 JL36 55 LL483 JL36 56 57 58 LL482 JL36 59 LL481 JL36 60 LL480 JL36 /
+61 LL479 JL36 62 LL478 JL36 63 LL477 JL36 64 LL476 JL36 65 LL475 JL36 6/
+6 LL474 JL36 67 LL473 JL36 68 69 LL472 JL36 70 LL471 JL36 JL38 37 LIP2 /
+X23 D31 DL39 D91 DL40 D94 DL41 D95 DL42 D96 DL43 D97 DL44 D98 DL45 D99 /
+DL46 D8 DL47 D40 DL48 D43 DL49 D6 DL50 D7 DL51 D9 DL52 D32 DL53 D33 DL5/
+4 D34 DL55 D15 DL56 D19 DL57 D41 DL58 D30 DL59 D42 DL60 D44 DL61 D50 DL/
+62 D51 DL63 D54 DL64 D57 DL65 D58 DL66 D60 DL67 D61 DL68 D62 DL69 D63 D/
+L70 38 36 SP4 LIP4 SP7 LIP3 SP8 LIG76 K5 X4 12
+11 DL10 499 C29 C10 C83 C89 C78 C84 C65 C88 C32 C69 C82 C82 C79 C82 C32/
+ C78 C69 C65 C82 C32 C76 C73 C78 C69 C32 C37 C78 C58 C32 C32 498 C21 C1/
+0 C67 C79 C77 C80 C73 C76 C65 C84 C73 C79 C78 C32 C65 C66 C79 C82 C84 C/
+69 C68 C10 29 DL28 497 C6 C37 C78 C32 C37 C83 C10 496 C24 C39 C56 C39 C/
+32 C32 C39 C40 C39 C32 C79 C82 C32 C39 C41 C39 C32 C69 C88 C80 C69 C67 /
+C84 C69 C68 495 C17 C73 C76 C76 C69 C71 C65 C76 C32 C67 C72 C65 C82 C65/
+ C67 C84 C69 C82 494 C15 C83 C84 C82 C73 C78 C71 C32 C84 C79 C79 C32 C7/
+6 C79 C78 C71 493 C11 C78 C79 C32 C73 C78 C80 C85 C84 C32 C37 C83 492 C/
+25 C83 C84 C82 C73 C78 C71 C32 C79 C82 C32 C78 C85 C77 C66 C69 C82 C32 /
+C69 C88 C80 C69 C67 C84 C69 C68 491 C17 C80 C82 C79 C71 C82 C65 C77 C32/
+ C84 C79 C79 C32 C76 C65 C82 C71 C69 490 C21 C73 C78 C67 C79 C82 C82 C6/
+9 C67 C84 C32 C84 C69 C82 C77 C73 C78 C65 C84 C73 C79 C78 489 C13 C78 C/
+65 C77 C69 C32 C69 C88 C80 C69 C67 C84 C69 C68 488 C13 C39 C36 C40 C39 /
+C32 C69 C88 C80 C69 C67 C84 C69 C68 487 C13 C39 C36 C41 C39 C32 C69 C88/
+ C80 C69 C67 C84 C69 C68 486 C22 C85 C78 C84 C65 C71 C71 C69 C68 C32 C3/
+9 C36 C41 C39 C32 C77 C73 C83 C77 C65 C84 C67 C72 485 C19 C69 C82 C82 C/
+79 C82 C32 C73 C78 C32 C69 C88 C80 C82 C69 C83 C83 C73 C79 C78 484 C15 /
+C69 C82 C82 C79 C82 C32 C73 C78 C32 C78 C85 C77 C66 C69 C82 483 C10 C66/
+ C65 C68 C32 C83 C84 C82 C73 C78 C71 482 C11 C39 C41 C39 C32 C77 C73 C8/
+3 C83 C73 C78 C71 481 C11 C39 C44 C39 C32 C77 C73 C83 C83 C73 C78 C71 4/
+80 C20 C39 C61 C39 C32 C79 C82 C32 C39 C66 C69 C39 C32 C69 C88 C80 C69 /
+C67 C84 C69 C68 479 C19 C39 C61 C39 C32 C79 C82 C32 C39 C40 C39 C32 C69/
+ C88 C80 C69 C67 C84 C69 C68 478 C14 C69 C82 C82 C79 C82 C32 C73 C78 C3/
+2 C76 C65 C66 C69 C76 477 C16 C69 C82 C82 C79 C82 C32 C73 C78 C32 C67 C/
+79 C77 C77 C65 C78 C68 476 C13 C39 C79 C82 C39 C32 C69 C88 C80 C69 C67 /
+C84 C69 C68 475 C12 C39 C61 C39 C32 C69 C88 C80 C69 C67 C84 C69 C68 474/
+ C13 C39 C84 C79 C39 C32 C69 C88 C80 C69 C67 C84 C69 C68 473 C15 C39 C7/
+3 C78 C84 C79 C39 C32 C69 C88 C80 C69 C67 C84 C69 C68 472 C12 C39 C58 C/
+39 C32 C69 C88 C80 C69 C67 C84 C69 C68 471 C12 C39 C42 C47 C39 C32 C77 /
+C73 C83 C83 C73 C78 C71
+G166L1 G161L2 G162L3 G163L4 G164L5 G165L6 G169L7 G151L8 G150L9
+Z
+JL9
+$ 1 LIG135 SP2 LIG136 SP3 L0 SP4 LIG31 K5 SG135 LIL14 SG136 L97 SP7 LIG/
+154 K5 JL15 17 18 19 LIG115 SP5 LIG120 K6 LIG147 SP8 LIG141 K6 SP4 LIP5/
+ SP8 LIP4 SP9 LIG140 K10 SP10 LIG163 K6 SP4 JIL12 20 LIG120 K5 LIG145 K/
+5 SP4 13 JL22 21 LIG120 K5 L40 SP7 LIP4 SP8 LIG145 K9 SP9 LIG163 K5 SP4/
+ 22 L40 LIG115 X10 TL21 L74 SP7 LIP4 SP8 LIG140 K9 SP9 LIG163 K5 SP4 JI/
+L12 23 LIG157 K5 SP4 L92 LIG115 X10 TL24 L90 LIG115 X10 TL24 L51 SP7 LI/
+G151 K5 24 25 26 11 LIP2 SG135 LIP3 SG136 LIP4 JL10 JL16 15 LIG115 X23 /
+D6 DL23 D75 DL17 D79 DL18 D76 DL19 D74 DL20 D92 DL25 D90 DL26 16 10 X4
+$ 2 L0 SP2 L97 SP5 LIG154 K3 LIG146 K3 SP2 L92 LIG115 X10 TL29 L90 LIG1/
+15 X10 FL28 29 LIP2 JL27 28 L73 SP5 LIP2 SP6 LIG157 K7 SP7 LIG163 K3 JL/
+27 27 X4
+$ 3 L0 SP2 L0 SP3 LP2 SP4 LIG135 SP5 LIG136 SP6 LIG31 K7 SG135 LIL32 SG/
+136 33 LIG143 K7 SP3 L20 LIG115 X10 TL36 L54 LIG115 X10 FL34 36 LIG120 /
+K7 JL35 34 L45 SP9 LIG151 K7 35 L43 SP9 L0 SP10 LIP3 SP11 L0 SP14 LIG14/
+4 K12 SP12 LIG164 K7 SIP4 LIP4 X1 A1 SP4 31 L97 SP9 LIG154 K7 L2 LIG115/
+ X10 TL33 LIP5 SG135 LIP6 SG136 LIP2 JL30 30 X4
+$ 4 LIG116 SP3 L0 SP4 L91 SP7 L6 SP8 LIG153 K5 LIP2 K5 SP4 L92 LIG115 X/
+10 TL38 L7 SP7 LIG151 K5 38 LIG116 LIP3 X10 FL39 LIG120 K5 JL40 39 LIG1/
+34 LIG116 X10 FL41 L0 SG115 L9 SP7 LIG151 K5 41 40 LIP4 JL37 37 X4
+$ 5 LIG143 K2 SP2 L38 LIG115 X10 TL43 LIP2 JL42 43 LIG120 K3 L38 SP5 LI/
+P2 SP6 LIG142 K7 SP7 LIG163 K3 JL42 42 X4
+$ 6 LIG116 SP2 L2 SP5 L8 SP6 LIG153 K3 LIP2 JL44 44 X4
+$ 7 LIP2 LIG115 X10 FL45 LIG120 K3 45 X4
+$ 8 LIP2 LIG115 X10 TL46 LIP3 SP6 LIG151 K4 46 LIG120 K4 X4 9
+12 DL11 14 DL13 32 DL31
+G140L1 G157L2 G147L3 G141L4 G142L5 G143L6 G154L7 G153L8
+Z
+JL4
+$ 1 L0 SP2 LIG115 SP3 JL6 8 L32 SP6 LIG151 K4 9 LIG120 K4 L16 SP6 LIG16/
+1 K4 JL5 10 11 12 LIG116 SP2 LIG120 K4 LIP2 JL5 13 L1 AIG107 SP6 LIG166/
+ K4 SP2 L3 SP4 L0 AIP2 SP5 LIP4 SIP5 L0 SP4 LIG107 SP5 JL14 15 LIP4 AIG/
+106 X1 SP6 L1 AIP4 AIP2 SP7 LIP6 SIP7 LIP4 A1 SP4 14 LIP4 LIP5 X15 TL15/
+ LIG120 K4 LIP2 JL5 16 L1 SP6 LIG101 SP7 LIG162 K4 SP2 LIG120 K4 LIP2 J/
+L5 17 LIG120 K4 L0 SP6 LIG144 K4 SP2 L106 SP6 L15 SP7 LIG153 K4 LIP2 JL/
+5 18 LIG120 K4 L6 SP6 LIG146 K7 SP7 LIG162 K4 JL5 19 L8 SP3 20 21 LIG12/
+0 K4 LIP3 SP6 L35 SP9 LIG144 K7 SP7 LIG162 K4 JL5 22 LIG120 K4 L34 SP6 /
+LIG144 K4 JL5 23 LIG120 K4 L34 SP6 LIG144 K4 SP2 LIP2 A0 X1 L1 X10 FL24/
+ LIP2 A1 X1 X2 SP4 LIP2 A1 SP5 LIP4 SIP5 JL25 24 L17 SP6 LIP2 SP7 LIG16/
+2 K4 SP2 25 LIP2 JL5 26 LIG120 K4 L30 SP6 L24 SP9 LIG144 K7 SP7 LIG162 /
+K4 JL5 27 LIG120 K4 L39 SP6 LIG156 K7 SP7 LIG162 K4 JL5 JL7 6 LIG115 X2/
+3 D15 DL8 D16 DL9 D4 DL10 D5 DL11 D2 DL12 D3 DL13 D1 DL16 D105 DL17 D6 /
+DL18 D9 DL19 D7 DL20 D8 DL21 D14 DL22 D15 DL23 D30 DL26 D39 DL27 7 5 X4/
+
+$ 3 LIL2 K3 SP3 L0 SP4 L0 SP5 L0 SP6 L0 SP7 29 LIG115 SP8 LIG122 FL35 L/
+IP3 JL28 35 JL36 38 LIP3 JL28 39 LIG120 K9 L0 SP4 L106 LIG115 X10 TL40 /
+LIG156 K9 SP4 40 L106 SP11 L19 SP12 LIG153 K9 L10 SP11 LIP3 SP12 LIP4 S/
+P13 LIG163 K9 SP3 JIL30 41 L40 SP6 JIL34 42 43 44 L35 SP6 JIL34 45 46 L/
+34 SP6 JIL34 47 48 49 50 51 52 LIP2 L30 X13 FL53 LIP3 JL28 53 54 LIG120/
+ K9 L30 SP11 LIG144 K9 SP4 LIP8 SP11 LIP3 SP12 LIP4 SP13 LIG163 K9 SP3 /
+L0 LIP5 X10 FL55 LIP3 SP5 JL56 55 L33 SP11 LIP5 SP12 LIP3 SP13 LIG163 K/
+9 SP5 56 LIP4 SP3 LIG115 SP8 L20 LIP8 X15 FL57 LIP8 L25 X15 TL54 57 LIP/
+5 SP3 JIL30 58 59 L25 SP6 L30 SP7 JIL32 60 L23 SP6 JIL34 61 L22 SP6 JIL/
+34 62 63 L21 SP6 JIL34 64 LIP2 L13 X13 FL65 LIP3 JL28 65 LIG120 K9 L0 S/
+P11 LIG144 K9 SP4 L38 SP11 L30 SP12 LIG153 K9 L37 SP11 LIP3 SP12 LIP4 S/
+P13 L0 SP16 LIG144 K14 SP14 LIG164 K9 SP3 JIL30 33 LIP6 SP7 31 LIP2 LIP/
+6 X13 FL66 LIP3 JL28 66 LIG120 K9 LIP8 SP11 LIP3 SP12 LIP7 SP15 LIG144 /
+K13 SP13 LIG163 K9 SP3 JIL30 JL37 36 LIP8 X23 D20 DL38 D105 DL39 D9 DL4/
+1 D13 DL42 D11 DL43 D12 DL44 D14 DL45 D15 DL46 D20 DL47 D21 DL48 D24 DL/
+49 D25 DL50 D22 DL51 D23 DL52 D31 DL58 D32 DL59 D33 DL60 D34 DL61 D35 D/
+L62 D36 DL63 D37 DL64 37 28 X4 4 JL68
+$ 67 L0 SP2 LP2 SP3 70 L0 SP6 LIG144 K4 SP4 L38 LIG115 X10 TL71 LIP4 SI/
+P3 LIP2 JL69 71 LIG120 K5 L38 SP7 LIP4 SP8 L0 SP9 LIG163 K5 SIP3 LIP3 X/
+1 A2 SP3 JL70 69 X4 68 JL73
+$ 72 LIG142 K2 SP2 JL75 77 L0 SP3 LIG120 K4 LIP2 A0 X1 L2 X10 TL78 L40 /
+SP6 LIG151 K4 78 L2 LIG115 X10 FL79 LIG142 K4 SP3 79 L106 SP6 L41 SP7 L/
+IG153 K4 L89 LIG115 X10 FL80 LIG120 K4 L45 SP6 LIP2 SP7 LIP3 SP8 LIG146/
+ K9 SP9 L0 SP10 LIG165 K4 JL74 80 L20 LIG115 X10 FL81 LIG120 K4 L44 SP6/
+ LIP2 SP7 LIP3 SP8 L0 SP11 LIG144 K9 SP9 L0 SP10 LIG165 K4 JL74 81 L42 /
+SP6 LIG151 K4 82 L44 SP5 LIG151 K3 83 LIG120 K3 L103 LIG115 X10 FL84 LI/
+G120 K3 LIP2 A0 X1 L2 X10 TL85 L43 SP5 LIG151 K3 85 L42 SP5 LIP2 SP6 L0/
+ SP9 LIG144 K7 SP7 LIG163 K3 JL74 84 L41 SP5 LIP2 SP6 LIG156 K7 SP7 LIG/
+163 K3 JL74 JL76 75 LIG115 X23 D2 DL82 D105 DL77 D20 DL83 76 74 X4 73
+2 DL1 30 DL29 32 DL31 34 DL33
+G144L3 G156L67 G145L72
+Z
+JL4
+$ 1 L0 SP2 L0 SP3 LIG115 SP4 JL6 8 L0 JL5 9 10 11 12 13 14 15 16 17 LIG/
+156 K5 SP2 L50 LIG115 X10 FL18 LIG115 SP4 LIG120 K5 LIP4 SP7 LIP2 SP8 L/
+IG156 K9 SP9 LIG163 K5 JL5 18 L54 LIG115 X10 FL19 LIP2 A0 X1 L2 X10 TL2/
+0 L50 SP7 LIG151 K5 20 LIG120 K5 L54 SP7 LIP2 SP8 LIL2 K9 SP9 L0 SP10 L/
+IG164 K5 JL5 19 LIP2 A0 X1 L10 X10 FL21 L51 SP5 LIP2 A0 SP6 LIP5 SIP6 L/
+IP2 JL5 21 L51 SP7 LIG151 K5 LIP2 JL5 22 23 LIG120 K5 LIP4 SP7 L0 SP10 /
+LIG144 K8 SP8 LIG162 K5 JL5 24 25 26 27 LIG120 K5 L0 SP7 LIG144 K5 SP2 /
+L101 SP7 LIG154 K5 LIP4 SP7 LIP2 SP8 LIG146 K9 SP9 LIG163 K5 JL5 28 LIG/
+120 K5 L0 SP7 LIG144 K5 SP2 L101 SP7 LIG154 K5 LIG146 K5 SP3 L102 SP7 L/
+54 SP8 LIG153 K5 L55 SP7 LIP2 SP8 LIP3 SP9 LIG146 K10 SP10 LIG164 K5 JL/
+5 29 L0 SP5 L0 SP6 L0 SP7 LIG120 K8 LIG143 K8 SP2 L20 SP10 L57 SP11 LIG/
+153 K8 L0 SP10 LIG144 K8 SP5 L99 SP10 L58 SP11 LIG153 K8 L0 SP10 LIG144/
+ K8 SP6 L100 LIG115 X10 FL30 LIG120 K8 L0 SP10 LIG144 K8 SP7 30 L101 SP/
+10 LIG154 K8 L56 SP10 LIP2 SP11 LIP5 SP12 LIP6 SP13 LIP7 SP14 LIG146 K1/
+5 SP15 LIG169 K8 JL5 31 32 33 34 35 LIG116 SP2 LIG120 K5 LIP2 JL5 36 LI/
+G120 K5 L0 SP7 LIG144 K5 SP2 L98 SP7 L60 SP8 LIG153 K5 L70 SP7 LIP2 SP8/
+ LIG157 SP11 LIG141 K9 SP9 LIG163 K5 JL5 37 LIG120 K5 L0 SP7 LIG144 K5 /
+SP2 L54 SP7 L61 SP8 LIG153 K5 L71 SP7 LIP2 SP8 LIL2 K9 SP9 LIG163 K5 JL/
+5 38 LIG120 K5 L54 SP7 L62 SP8 LIG153 K5 L72 SP7 LIL2 K8 SP8 LIG162 K5 /
+JL5 39 LIG140 SP7 LIG141 K5 JL5 JL7 6 LIG115 X23 D26 DL8 D2 DL9 D1 DL10/
+ D3 DL11 D4 DL12 D5 DL13 D7 DL14 D8 DL15 D9 DL16 D105 DL17 D52 DL22 D53/
+ DL23 D57 DL24 D58 DL25 D59 DL26 D60 DL27 D55 DL28 D56 DL29 D65 DL31 D6/
+6 DL32 D67 DL33 D68 DL34 D69 DL35 D70 DL36 D71 DL37 D72 DL38 D91 DL39 7/
+ 5 X4
+$ 3 LIL2 K2 SP2 L0 LIP2 X10 FL41 L51 SP5 LIG151 K3 41 JL43 42 LIG115 SP/
+3 LIG120 K4 L61 LIP3 X10 FL44 LIP3 SP6 LIP2 SP7 LIG162 K4 SP2 JL45 44 L/
+IP3 SP6 LIP2 SP7 L0 SP10 LIG144 K8 SP8 LIG163 K4 SP2 45 43 L61 LIG115 X/
+10 TL42 L62 LIG115 X10 TL42 L63 LIG115 X10 TL42 LIP2 JL40 40 X4 4
+2 DL1
+G146L3
+Z
+JL2
+$ 1 L0 SP5 LL3 SP6 L0 LIP2 X10 FL4 LL499 SP9 LIG60 K7 X4 4 JL5 7 LIP2 A/
+1 X1 SP9 LIG62 K7 X4 8 L2 AIP2 SP9 LIG60 K7 X4 9 LL498 SP9 L1 AIP2 SP10/
+ LIG76 K7 X4 10 L2 AIP5 SP5 11 12 13 14 15 L1 AIP5 SP5 16 17 18 19 20 2/
+1 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 /
+45 46 47 48 49 50 51 52 53 54 L1 AIP5 SP5 55 56 57 58 59 60 61 62 63 64/
+ L1 AIP5 SP5 65 66 67 68 69 70 71 72 73 L1 AIP5 SP5 LIP4 LIP3 X10 FL74 /
+LL497 SP9 LIG60 K7 X4 74 LL496 SP9 LIG60 K7 LIP2 A0 X1 SP9 LIG62 K7 L2 /
+SP7 LIP5 SP8 JL75 76 LIG63 K9 L0 SP9 LIP3 L1 X9 SP10 JL77 78 LIP9 AIP6 /
+X1 SP13 LIG60 K11 LIP9 A1 SP9 77 LIP9 LIP10 X15 TL78 LL495 SP11 LIG60 K/
+9 LIP5 LIP7 X10 FL80 LL494 SP9 JL79 80 LL493 SP9 79 LIP3 AIP6 SP10 LIP9/
+ SIP10 LIP7 AIP2 L1 X9 A0 X1 SP11 L1 AIP3 SP12 LIP4 SP13 LIG152 K9 LIP7/
+ A1 SP7 75 LIP7 LIP8 X15 TL76 X4 JL6 5 LIP2 A0 X1 X23 D66 DL73 D1 DL7 D/
+2 DL8 D3 DL9 D56 DL10 D37 DL11 D44 DL12 D45 DL13 D55 DL14 D43 DL15 D9 D/
+L16 D10 DL17 D11 DL18 D12 DL19 D13 DL20 D14 DL21 D15 DL22 D20 DL23 D21 /
+DL24 D22 DL25 D23 DL26 D24 DL27 D25 DL28 D31 DL29 D32 DL30 D33 DL31 D34/
+ DL32 D35 DL33 D36 DL34 D38 DL35 D40 DL36 D41 DL37 D42 DL38 D50 DL39 D5/
+1 DL40 D54 DL41 D57 DL42 D58 DL43 D59 DL44 D60 DL45 D62 DL46 D63 DL47 D/
+70 DL48 D71 DL49 D73 DL50 D74 DL51 D75 DL52 D79 DL53 D76 DL54 D6 DL55 D/
+7 DL56 D8 DL57 D17 DL58 D30 DL59 D39 DL60 D52 DL61 D53 DL62 D61 DL63 D7/
+2 DL64 D65 DL65 D66 DL66 D67 DL67 D68 DL68 D69 DL69 D4 DL70 D5 DL71 D16/
+ DL72 6 X4 2
+3 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 499 C3 C7/
+8 C73 C76 498 C4 C34 C37 C83 C34 497 C3 C69 C84 C67 496 C2 C79 C80 495 /
+C2 C42 C45 494 C2 C32 C32 493 C2 C33 C32
+G152L1
+Z
--- /dev/null
+// $Id: trn.bcpl,v 1.1 2004/12/09 20:29:37 rn Exp $
+
+// TRN0
+
+GET "TRNHDR"
+
+LET NEXTPARAM() = VALOF
+ $( PARAMNUMBER := PARAMNUMBER + 1
+ RESULTIS PARAMNUMBER $)
+
+AND TRANSREPORT(N, X) BE
+ $( SELECTOUTPUT(SYSPRINT)
+ REPORTCOUNT := REPORTCOUNT + 1
+ IF REPORTCOUNT GE REPORTMAX DO
+ $( WRITES("*NCOMPILATION ABORTED*N")
+ STOP(8) $)
+ WRITES("*NREPORT: "); TRNMESSAGE(N)
+ WRITEF("*NCOMMANDS COMPILED %N*N", COMCOUNT)
+ PLIST(X, 0, 4); NEWLINE()
+ SELECTOUTPUT(OCODE) $)
+
+AND TRNMESSAGE(N) BE
+$( LET S = VALOF
+ SWITCHON N INTO
+
+ $( DEFAULT: WRITEF("COMPILER ERROR %N", N); RETURN
+
+ CASE 141: RESULTIS "TOO MANY CASES"
+ CASE 104: RESULTIS "ILLEGAL USE OF BREAK, LOOP OR RESULTIS"
+ CASE 101:
+ CASE 105: RESULTIS "ILLEGAL USE OF CASE OR DEFAULT"
+ CASE 106: RESULTIS "TWO CASES WITH SAME CONSTANT"
+ CASE 144: RESULTIS "TOO MANY GLOBALS"
+ CASE 142: RESULTIS "NAME DECLARED TWICE"
+ CASE 143: RESULTIS "TOO MANY NAMES DECLARED"
+ CASE 115: RESULTIS "NAME NOT DECLARED"
+ CASE 116: RESULTIS "DYNAMIC FREE VARIABLE USED"
+ CASE 117:CASE 118:CASE 119:
+ RESULTIS "ERROR IN CONSTANT EXPRESSION"
+ CASE 110:CASE 112:
+ RESULTIS "LHS AND RHS DO NOT MATCH"
+ CASE 109:CASE 113:
+ RESULTIS "LTYPE EXPRESSION EXPECTED"
+ $)
+
+ WRITES(S) $)
+
+
+LET COMPILEAE(X) BE
+ $(1 LET A = VEC 1200
+ LET D = VEC 100
+ LET K = VEC 150
+ LET L = VEC 150
+
+ DVEC, DVECS, DVECE, DVECP, DVECT := A, 3, 3, 3, 1200
+ DVEC!0, DVEC!1, DVEC!2 := 0, 0, 0
+
+ GLOBDECL, GLOBDECLS, GLOBDECLT := D, 0, 100
+
+ CASEK, CASEL, CASEP, CASET, CASEB := K, L, 0, 150, -1
+ ENDCASELABEL, DEFAULTLABEL := 0, 0
+
+ RESULTLABEL, BREAKLABEL, LOOPLABEL := -1, -1, -1
+
+ COMCOUNT, CURRENTBRANCH := 0, X
+
+ OCOUNT := 0
+
+ PARAMNUMBER := 0
+ SSP := SAVESPACESIZE
+ OUT2(S.STACK, SSP)
+ DECLLABELS(X)
+ TRANS(X)
+ OUT2(S.GLOBAL, GLOBDECLS/2)
+
+ $( LET I = 0
+ UNTIL I=GLOBDECLS DO
+ $( OUTN(GLOBDECL!I)
+ OUTL(GLOBDECL!(I+1))
+ I := I + 2 $)
+
+ ENDOCODE() $)1
+
+.
+
+// TRN1
+
+
+GET "TRNHDR"
+
+LET TRANS(X) BE
+ $(TR
+NEXT:
+ $( LET SW = FALSE
+ IF X=0 RETURN
+ CURRENTBRANCH := X
+
+ SWITCHON H1!X INTO
+$( DEFAULT: TRANSREPORT(100, X); RETURN
+
+ CASE S.LET:
+ $( LET A, B, S, S1 = DVECE, DVECS, SSP, 0
+ LET V = VECSSP
+ DECLNAMES(H2!X)
+ CHECKDISTINCT(B, DVECS)
+ DVECE := DVECS
+ VECSSP, S1 := SSP, SSP
+ SSP := S
+ TRANSDEF(H2!X)
+ UNLESS SSP=S1 DO TRANSREPORT(110, X)
+ UNLESS SSP=VECSSP DO $( SSP := VECSSP
+ OUT2(S.STACK, SSP) $)
+ OUT1(S.STORE)
+ DECLLABELS(H3!X)
+ TRANS(H3!X)
+ VECSSP := V
+ UNLESS SSP=S DO OUT2(S.STACK, S)
+ DVECE, DVECS, SSP := A, B, S
+ RETURN $)
+
+ CASE S.STATIC:
+ CASE S.GLOBAL:
+ CASE S.MANIFEST:
+ $(1 LET A, B, S = DVECE, DVECS, SSP
+ AND OP = H1!X
+ AND Y = H2!X
+
+ IF OP=S.MANIFEST DO OP := S.NUMBER
+
+ UNTIL Y=0 DO
+ $( TEST OP=S.STATIC THEN
+ $( LET M = NEXTPARAM()
+ ADDNAME(H3!Y, S.LABEL, M)
+ COMPDATALAB(M)
+ OUT2(S.ITEMN, EVALCONST(H4!Y)) $)
+
+ OR ADDNAME(H3!Y, OP, EVALCONST(H4!Y))
+
+ Y := H2!Y
+ DVECE := DVECS $)
+
+ DECLLABELS(H3!X)
+ TRANS(H3!X)
+ DVECE, DVECS, SSP := A, B, S
+ RETURN $)1
+
+
+ CASE S.ASS:
+ ASSIGN(H2!X, H3!X)
+ RETURN
+
+ CASE S.RTAP:
+ $( LET S = SSP
+ SSP := SSP+SAVESPACESIZE
+ OUT2(S.STACK, SSP)
+ LOADLIST(H3!X)
+ LOAD(H2!X)
+ OUT2(S.RTAP, S)
+ SSP := S
+ RETURN $)
+
+ CASE S.GOTO:
+ LOAD(H2!X)
+ OUT1(S.GOTO)
+ SSP := SSP-1
+ RETURN
+
+ CASE S.COLON:
+ COMPLAB(H4!X)
+ TRANS(H3!X)
+ RETURN
+
+ CASE S.UNLESS: SW := TRUE
+ CASE S.IF:
+ $( LET L = NEXTPARAM()
+ JUMPCOND(H2!X, SW, L)
+ TRANS(H3!X)
+ COMPLAB(L)
+ RETURN $)
+
+ CASE S.TEST:
+ $( LET L, M = NEXTPARAM(), NEXTPARAM()
+ JUMPCOND(H2!X, FALSE, L)
+ TRANS(H3!X)
+ COMPJUMP(M)
+ COMPLAB(L)
+ TRANS(H4!X)
+ COMPLAB(M)
+ RETURN $)
+
+ CASE S.LOOP:
+ IF LOOPLABEL<0 DO TRANSREPORT(104, X)
+ IF LOOPLABEL=0 DO LOOPLABEL := NEXTPARAM()
+ COMPJUMP(LOOPLABEL)
+ RETURN
+
+ CASE S.BREAK:
+ IF BREAKLABEL<0 DO TRANSREPORT(104, X)
+ IF BREAKLABEL=0 DO BREAKLABEL := NEXTPARAM()
+ COMPJUMP(BREAKLABEL)
+ RETURN
+
+ CASE S.RETURN: OUT1(S.RTRN)
+ RETURN
+
+ CASE S.FINISH: OUT1(S.FINISH)
+ RETURN
+
+ CASE S.RESULTIS:
+ IF RESULTLABEL<0 DO TRANSREPORT(104, X)
+ LOAD(H2!X)
+ OUT2P(S.RES, RESULTLABEL)
+ SSP := SSP - 1
+ RETURN
+
+ CASE S.WHILE: SW := TRUE
+ CASE S.UNTIL:
+ $( LET L, M = NEXTPARAM(), NEXTPARAM()
+ LET BL, LL = BREAKLABEL, LOOPLABEL
+ BREAKLABEL, LOOPLABEL := 0, M
+
+ COMPJUMP(M)
+ COMPLAB(L)
+ TRANS(H3!X)
+ COMPLAB(M)
+ JUMPCOND(H2!X, SW, L)
+ UNLESS BREAKLABEL=0 DO COMPLAB(BREAKLABEL)
+ BREAKLABEL, LOOPLABEL := BL, LL
+ RETURN $)
+
+ CASE S.REPEATWHILE: SW := TRUE
+ CASE S.REPEATUNTIL:
+ CASE S.REPEAT:
+ $( LET L, BL, LL = NEXTPARAM(), BREAKLABEL, LOOPLABEL
+ BREAKLABEL, LOOPLABEL := 0, 0
+ COMPLAB(L)
+ TEST H1!X=S.REPEAT
+ THEN $( LOOPLABEL := L
+ TRANS(H2!X)
+ COMPJUMP(L) $)
+ OR $( TRANS(H2!X)
+ UNLESS LOOPLABEL=0 DO COMPLAB(LOOPLABEL)
+ JUMPCOND(H3!X, SW, L) $)
+ UNLESS BREAKLABEL=0 DO COMPLAB(BREAKLABEL)
+ BREAKLABEL, LOOPLABEL := BL, LL
+ RETURN $)
+
+ CASE S.CASE:
+ $( LET L, K = NEXTPARAM(), EVALCONST(H2!X)
+ IF CASEP>=CASET DO TRANSREPORT(141, X)
+ IF CASEB<0 DO TRANSREPORT(105, X)
+ FOR I = CASEB TO CASEP-1 DO
+ IF CASEK!I=K DO TRANSREPORT(106, X)
+ CASEK!CASEP := K
+ CASEL!CASEP := L
+ CASEP := CASEP + 1
+ COMPLAB(L)
+ TRANS(H3!X)
+ RETURN $)
+
+ CASE S.DEFAULT:
+ IF CASEB<0 DO TRANSREPORT(105, X)
+ UNLESS DEFAULTLABEL=0 DO TRANSREPORT(101, X)
+ DEFAULTLABEL := NEXTPARAM()
+ COMPLAB(DEFAULTLABEL)
+ TRANS(H2!X)
+ RETURN
+
+ CASE S.ENDCASE: IF CASEB<0 DO TRANSREPORT(105, X)
+ COMPJUMP(ENDCASELABEL)
+ RETURN
+
+ CASE S.SWITCHON:
+ TRANSSWITCH(X)
+ RETURN
+
+ CASE S.FOR: TRANSFOR(X)
+ RETURN
+
+ CASE S.SEQ:
+ TRANS(H2!X)
+ COMCOUNT := COMCOUNT + 1
+ X := H3!X
+ GOTO NEXT $)TR
+.
+
+// TRN2
+
+
+GET "TRNHDR"
+
+LET DECLNAMES(X) BE UNLESS X=0 SWITCHON H1!X INTO
+
+ $( DEFAULT: TRANSREPORT(102, CURRENTBRANCH)
+ RETURN
+
+ CASE S.VECDEF: CASE S.VALDEF:
+ DECLDYN(H2!X)
+ RETURN
+
+ CASE S.RTDEF: CASE S.FNDEF:
+ H5!X := NEXTPARAM()
+ DECLSTAT(H2!X, H5!X)
+ RETURN
+
+ CASE S.AND:
+ DECLNAMES(H2!X)
+ DECLNAMES(H3!X)
+ RETURN $)
+
+
+AND DECLDYN(X) BE UNLESS X=0 DO
+
+ $( IF H1!X=S.NAME DO
+ $( ADDNAME(X, S.LOCAL, SSP)
+ SSP := SSP + 1
+ RETURN $)
+
+ IF H1!X=S.COMMA DO
+ $( ADDNAME(H2!X, S.LOCAL, SSP)
+ SSP := SSP + 1
+ DECLDYN(H3!X)
+ RETURN $)
+
+ TRANSREPORT(103, X) $)
+
+AND DECLSTAT(X, L) BE
+ $(1 LET T = CELLWITHNAME(X)
+
+ IF DVEC!(T+1)=S.GLOBAL DO
+ $( LET N = DVEC!(T+2)
+ ADDNAME(X, S.GLOBAL, N)
+ IF GLOBDECLS>=GLOBDECLT DO TRANSREPORT(144, X)
+ GLOBDECL!GLOBDECLS := N
+ GLOBDECL!(GLOBDECLS+1) := L
+ GLOBDECLS := GLOBDECLS + 2
+ RETURN $)
+
+
+ $( LET M = NEXTPARAM()
+ ADDNAME(X, S.LABEL, M)
+ COMPDATALAB(M)
+ OUT2P(S.ITEML, L) $)1
+
+
+AND DECLLABELS(X) BE
+ $( LET B = DVECS
+ SCANLABELS(X)
+ CHECKDISTINCT(B, DVECS)
+ DVECE := DVECS $)
+
+
+AND CHECKDISTINCT(E, S) BE
+ UNTIL E=S DO
+ $( LET P = E + 3
+ AND N = DVEC!E
+ WHILE P<S DO
+ $( IF DVEC!P=N DO TRANSREPORT(142, N)
+ P := P + 3 $)
+ E := E + 3 $)
+
+
+AND ADDNAME(N, P, A) BE
+ $( IF DVECS>=DVECT DO TRANSREPORT(143, CURRENTBRANCH)
+ DVEC!DVECS, DVEC!(DVECS+1), DVEC!(DVECS+2) := N, P, A
+ DVECS := DVECS + 3 $)
+
+
+AND CELLWITHNAME(N) = VALOF
+ $( LET X = DVECE
+
+ X := X - 3 REPEATUNTIL X=0 \/ DVEC!X=N
+
+ RESULTIS X $)
+
+
+AND SCANLABELS(X) BE UNLESS X=0 SWITCHON H1!X INTO
+
+ $( DEFAULT: RETURN
+
+ CASE S.COLON:
+ H4!X := NEXTPARAM()
+ DECLSTAT(H2!X, H4!X)
+
+ CASE S.IF: CASE S.UNLESS: CASE S.WHILE: CASE S.UNTIL:
+ CASE S.SWITCHON: CASE S.CASE:
+ SCANLABELS(H3!X)
+ RETURN
+
+ CASE S.SEQ:
+ SCANLABELS(H3!X)
+
+ CASE S.REPEAT:
+ CASE S.REPEATWHILE: CASE S.REPEATUNTIL: CASE S.DEFAULT:
+ SCANLABELS(H2!X)
+ RETURN
+
+ CASE S.TEST:
+ SCANLABELS(H3!X)
+ SCANLABELS(H4!X)
+ RETURN $)
+
+
+AND TRANSDEF(X) BE
+ $(1 TRANSDYNDEFS(X)
+ IF STATDEFS(X) DO
+ $( LET L, S= NEXTPARAM(), SSP
+ COMPJUMP(L)
+ TRANSSTATDEFS(X)
+ SSP := S
+ OUT2(S.STACK, SSP)
+ COMPLAB(L) $)1
+
+
+AND TRANSDYNDEFS(X) BE
+ SWITCHON H1!X INTO
+ $( CASE S.AND:
+ TRANSDYNDEFS(H2!X)
+ TRANSDYNDEFS(H3!X)
+ RETURN
+
+ CASE S.VECDEF:
+ OUT2(S.LLP, VECSSP)
+ SSP := SSP + 1
+ VECSSP := VECSSP + 1 + EVALCONST(H3!X)
+ RETURN
+
+ CASE S.VALDEF: LOADLIST(H3!X)
+ RETURN
+
+ DEFAULT: RETURN $)
+
+AND TRANSSTATDEFS(X) BE
+ SWITCHON H1!X INTO
+ $( CASE S.AND:
+ TRANSSTATDEFS(H2!X)
+ TRANSSTATDEFS(H3!X)
+ RETURN
+
+ CASE S.FNDEF: CASE S.RTDEF:
+ $(2 LET A, B, C = DVECE, DVECS, DVECP
+ AND BL, LL = BREAKLABEL, LOOPLABEL
+ AND RL, CB = RESULTLABEL, CASEB
+ BREAKLABEL, LOOPLABEL := -1, -1
+ RESULTLABEL, CASEB := -1, -1
+
+ COMPENTRY(H2!X, H5!X)
+ SSP := SAVESPACESIZE
+
+ DVECP := DVECS
+ DECLDYN(H3!X)
+ CHECKDISTINCT(B, DVECS)
+ DVECE := DVECS
+ DECLLABELS(H4!X)
+
+ OUT2(S.SAVE, SSP)
+
+ TEST H1!X=S.FNDEF
+ THEN $( LOAD(H4!X); OUT1(S.FNRN) $)
+ OR $( TRANS(H4!X); OUT1(S.RTRN) $)
+
+ OUT2(S.ENDPROC, 0)
+
+ BREAKLABEL, LOOPLABEL := BL, LL
+ RESULTLABEL, CASEB := RL, CB
+ DVECE, DVECS, DVECP := A, B, C $)2
+
+ DEFAULT: RETURN $)
+
+AND STATDEFS(X) = H1!X=S.FNDEF \/ H1!X=S.RTDEF -> TRUE,
+ H1!X NE S.AND -> FALSE,
+ STATDEFS(H2!X) -> TRUE,
+ STATDEFS(H3!X)
+
+
+.
+
+// TRN3
+
+
+GET "TRNHDR"
+
+LET JUMPCOND(X, B, L) BE
+$(JC LET SW = B
+ SWITCHON H1!X INTO
+ $( CASE S.FALSE: B := NOT B
+ CASE S.TRUE: IF B DO COMPJUMP(L)
+ RETURN
+
+ CASE S.NOT: JUMPCOND(H2!X, NOT B, L)
+ RETURN
+
+ CASE S.LOGAND: SW := NOT SW
+ CASE S.LOGOR:
+ TEST SW THEN $( JUMPCOND(H2!X, B, L)
+ JUMPCOND(H3!X, B, L) $)
+
+ OR $( LET M = NEXTPARAM()
+ JUMPCOND(H2!X, NOT B, M)
+ JUMPCOND(H3!X, B, L)
+ COMPLAB(M) $)
+
+ RETURN
+
+ DEFAULT: LOAD(X)
+ OUT2P(B -> S.JT, S.JF, L)
+ SSP := SSP - 1
+ RETURN $)JC
+
+AND TRANSSWITCH(X) BE
+ $(1 LET P, B, DL = CASEP, CASEB, DEFAULTLABEL
+ AND ECL = ENDCASELABEL
+ LET L = NEXTPARAM()
+ ENDCASELABEL := NEXTPARAM()
+ CASEB := CASEP
+
+ COMPJUMP(L)
+ DEFAULTLABEL := 0
+ TRANS(H3!X)
+ COMPJUMP(ENDCASELABEL)
+
+ COMPLAB(L)
+ LOAD(H2!X)
+ IF DEFAULTLABEL=0 DO DEFAULTLABEL := ENDCASELABEL
+ OUT3P(S.SWITCHON, CASEP-P, DEFAULTLABEL)
+
+ FOR I = CASEB TO CASEP-1 DO $( OUTN(CASEK!I)
+ OUTL(CASEL!I) $)
+
+ SSP := SSP - 1
+ COMPLAB(ENDCASELABEL)
+ ENDCASELABEL := ECL
+ CASEP, CASEB, DEFAULTLABEL := P, B, DL $)1
+
+AND TRANSFOR(X) BE
+ $( LET A, B = DVECE, DVECS
+ LET L, M = NEXTPARAM(), NEXTPARAM()
+ LET BL, LL = BREAKLABEL, LOOPLABEL
+ LET K, N = 0, 0
+ LET STEP = 1
+ LET S = SSP
+ BREAKLABEL, LOOPLABEL := 0, 0
+
+ ADDNAME(H2!X, S.LOCAL, S)
+ DVECE := DVECS
+ LOAD(H3!X)
+
+ TEST H1!(H4!X)=S.NUMBER
+ THEN K, N := S.LN, H2!(H4!X)
+ OR $( K, N := S.LP, SSP
+ LOAD(H4!X) $)
+
+ UNLESS H5!X=0 DO STEP := EVALCONST(H5!X)
+
+ OUT1(S.STORE)
+ COMPJUMP(L)
+ DECLLABELS(H6!X)
+ COMPLAB(M)
+ TRANS(H6!X)
+ UNLESS LOOPLABEL=0 DO COMPLAB(LOOPLABEL)
+ OUT2(S.LP, S); OUT2(S.LN, STEP); OUT1(S.PLUS); OUT2(S.SP, S)
+ COMPLAB(L)
+ OUT2(S.LP, S); OUT2(K, N); OUT1(STEP<0 -> S.GE, S.LE)
+ OUT2P(S.JT, M)
+
+ UNLESS BREAKLABEL=0 DO COMPLAB(BREAKLABEL)
+ BREAKLABEL, LOOPLABEL, SSP := BL, LL, S
+ OUT2(S.STACK, SSP)
+ DVECE, DVECS := A, B $)
+
+.
+
+// TRN4
+
+
+GET "TRNHDR"
+
+LET LOAD(X) BE
+ $(1 IF X=0 DO $( TRANSREPORT(148, CURRENTBRANCH)
+ LOADZERO()
+ RETURN $)
+
+ $( LET OP = H1!X
+
+ SWITCHON OP INTO
+ $( DEFAULT: TRANSREPORT(147, CURRENTBRANCH)
+ LOADZERO()
+ RETURN
+
+ CASE S.DIV: CASE S.REM: CASE S.MINUS:
+ CASE S.LS: CASE S.GR: CASE S.LE: CASE S.GE:
+ CASE S.LSHIFT: CASE S.RSHIFT:
+ LOAD(H2!X)
+ LOAD(H3!X)
+ OUT1(OP)
+ SSP := SSP - 1
+ RETURN
+
+ CASE S.VECAP: CASE S.MULT: CASE S.PLUS: CASE S.EQ: CASE S.NE:
+ CASE S.LOGAND: CASE S.LOGOR: CASE S.EQV: CASE S.NEQV:
+ $( LET A, B = H2!X, H3!X
+ IF H1!A=S.NAME \/ H1!A=S.NUMBER DO
+ A, B := H3!X, H2!X
+ LOAD(A)
+ LOAD(B)
+ IF OP=S.VECAP DO $( OUT1(S.PLUS); OP := S.RV $)
+ OUT1(OP)
+ SSP := SSP - 1
+ RETURN $)
+
+ CASE S.NEG: CASE S.NOT: CASE S.RV:
+ LOAD(H2!X)
+ OUT1(OP)
+ RETURN
+
+ CASE S.TRUE: CASE S.FALSE: CASE S.QUERY:
+ OUT1(OP)
+ SSP := SSP + 1
+ RETURN
+
+ CASE S.LV: LOADLV(H2!X)
+ RETURN
+
+ CASE S.NUMBER:
+ OUT2(S.LN, H2!X)
+ SSP := SSP + 1
+ RETURN
+
+ CASE S.STRING:
+ $( LET S = @H2!X
+ OUT2(S.LSTR, GETBYTE(S, 0))
+ FOR I = 1 TO GETBYTE(S, 0) DO OUTC(GETBYTE(S, I))
+ WRC('*S')
+ SSP := SSP + 1
+ RETURN $)
+
+ CASE S.NAME:
+ TRANSNAME(X, S.LP, S.LG, S.LL, S.LN)
+ SSP := SSP + 1
+ RETURN
+
+ CASE S.VALOF:
+ $( LET RL = RESULTLABEL
+ LET A, B = DVECS, DVECE
+ DECLLABELS(H2!X)
+ RESULTLABEL := NEXTPARAM()
+ TRANS(H2!X)
+ COMPLAB(RESULTLABEL)
+ OUT2(S.RSTACK, SSP)
+ SSP := SSP + 1
+ DVECS, DVECE := A, B
+ RESULTLABEL := RL
+ RETURN $)
+
+
+ CASE S.FNAP:
+ $( LET S = SSP
+ SSP := SSP + SAVESPACESIZE
+ OUT2(S.STACK, SSP)
+ LOADLIST(H3!X)
+ LOAD(H2!X)
+ OUT2(S.FNAP, S)
+ SSP := S + 1
+ RETURN $)
+
+ CASE S.COND:
+ $( LET L, M = NEXTPARAM(), NEXTPARAM()
+ LET S = SSP
+ JUMPCOND(H2!X, FALSE, M)
+ LOAD(H3!X)
+ COMPJUMP(L)
+ SSP := S; OUT2(S.STACK, SSP)
+ COMPLAB(M)
+ LOAD(H4!X)
+ COMPLAB(L)
+ RETURN $)
+
+ CASE S.TABLE:
+ $( LET M = NEXTPARAM()
+ COMPDATALAB(M)
+ X := H2!X
+ WHILE H1!X=S.COMMA DO
+ $( OUT2(S.ITEMN, EVALCONST(H2!X))
+ X := H3!X $)
+ OUT2(S.ITEMN, EVALCONST(X))
+ OUT2P(S.LLL, M)
+ SSP := SSP + 1
+ RETURN $) $)1
+
+
+AND LOADLV(X) BE
+ $(1 IF X=0 GOTO ERR
+
+ SWITCHON H1!X INTO
+ $( DEFAULT:
+ ERR: TRANSREPORT(113, CURRENTBRANCH)
+ LOADZERO()
+ RETURN
+
+ CASE S.NAME:
+ TRANSNAME(X, S.LLP, S.LLG, S.LLL, 0)
+ SSP := SSP + 1
+ RETURN
+
+ CASE S.RV:
+ LOAD(H2!X)
+ RETURN
+
+ CASE S.VECAP:
+ $( LET A, B = H2!X, H3!X
+ IF H1!A=S.NAME DO A, B := H3!X, H2!X
+ LOAD(A)
+ LOAD(B)
+ OUT1(S.PLUS)
+ SSP := SSP - 1
+ RETURN $) $)1
+
+AND LOADZERO() BE $( OUT2(S.LN, 0)
+ SSP := SSP + 1 $)
+
+AND LOADLIST(X) BE UNLESS X=0 DO
+ $( UNLESS H1!X=S.COMMA DO $( LOAD(X); RETURN $)
+
+ LOADLIST(H2!X)
+ LOADLIST(H3!X) $)
+.
+
+// TRN5
+
+
+GET "TRNHDR"
+
+LET EVALCONST(X) = VALOF
+ $(1 IF X=0 DO $( TRANSREPORT(117, CURRENTBRANCH)
+ RESULTIS 0 $)
+
+ SWITCHON H1!X INTO
+ $( DEFAULT: TRANSREPORT(118, X)
+ RESULTIS 0
+
+ CASE S.NAME:
+ $( LET T = CELLWITHNAME(X)
+ IF DVEC!(T+1)=S.NUMBER RESULTIS DVEC!(T+2)
+ TRANSREPORT(119, X)
+ RESULTIS 0 $)
+
+ CASE S.NUMBER: RESULTIS H2!X
+ CASE S.TRUE: RESULTIS TRUE
+ CASE S.FALSE: RESULTIS FALSE
+
+ CASE S.NEG: RESULTIS - EVALCONST(H2!X)
+
+ CASE S.MULT: RESULTIS EVALCONST(H2!X) * EVALCONST(H3!X)
+ CASE S.DIV: RESULTIS EVALCONST(H2!X) / EVALCONST(H3!X)
+ CASE S.PLUS: RESULTIS EVALCONST(H2!X) + EVALCONST(H3!X)
+ CASE S.MINUS:RESULTIS EVALCONST(H2!X) - EVALCONST(H3!X)
+ $)1
+
+
+AND ASSIGN(X, Y) BE
+ $(1 IF X=0 \/ Y=0 DO
+ $( TRANSREPORT(110, CURRENTBRANCH)
+ RETURN $)
+
+ SWITCHON H1!X INTO
+ $( CASE S.COMMA:
+ UNLESS H1!Y=S.COMMA DO
+ $( TRANSREPORT(112, CURRENTBRANCH)
+ RETURN $)
+ ASSIGN(H2!X, H2!Y)
+ ASSIGN(H3!X, H3!Y)
+ RETURN
+
+ CASE S.NAME:
+ LOAD(Y)
+ TRANSNAME(X, S.SP, S.SG, S.SL, 0)
+ SSP := SSP - 1
+ RETURN
+
+ CASE S.RV: CASE S.VECAP: CASE S.COND:
+ LOAD(Y)
+ LOADLV(X)
+ OUT1(S.STIND)
+ SSP := SSP - 2
+ RETURN
+
+ DEFAULT: TRANSREPORT(109, CURRENTBRANCH) $)1
+
+
+AND TRANSNAME(X, P, G, L, N) BE
+ $(1 LET T = CELLWITHNAME(X)
+ LET K, A = DVEC!(T+1), DVEC!(T+2)
+
+ IF T=0 DO $( TRANSREPORT(115, X)
+ OUT2(G, 2)
+ RETURN $)
+
+ SWITCHON K INTO
+ $( CASE S.LOCAL: IF T<DVECP DO TRANSREPORT(116, X)
+ OUT2(P, A); RETURN
+
+ CASE S.GLOBAL: OUT2(G, A); RETURN
+
+ CASE S.LABEL: OUT2P(L, A); RETURN
+
+ CASE S.NUMBER: IF N=0 DO $( TRANSREPORT(113, X)
+ N := P $)
+ OUT2(N, A) $)1
+
+.
+
+// TRN6
+
+
+GET "TRNHDR"
+
+LET COMPLAB(L) BE OUT2P(S.LAB, L)
+
+AND COMPENTRY(N, L) BE
+ $( LET S = @N!2
+ OUT3P(S.ENTRY, GETBYTE(S, 0), L)
+ FOR I = 1 TO GETBYTE(S, 0) DO OUTC(GETBYTE(S, I))
+ WRC('*S') $)
+
+AND COMPDATALAB(L) BE OUT2P(S.DATALAB, L)
+
+AND COMPJUMP(L) BE OUT2P(S.JUMP, L)
+
+AND OUT1(X) BE
+ $( WRITEOP(X); WRC('*S') $)
+
+AND OUT2(X, Y) BE
+ $( WRITEOP(X); WRC('*S')
+ WRN(Y); WRC('*S') $)
+
+AND OUT2P(X, Y) BE
+ $( WRITEOP(X); WRC('*S'); WRC('L')
+ WRN(Y); WRC('*S') $)
+
+AND OUT3P(X, Y, Z) BE
+ $( WRITEOP(X); WRC('*S')
+ WRN(Y); WRC('*S'); WRC('L')
+ WRN(Z); WRC('*S') $)
+
+
+AND OUTN(N) BE WRN(N)
+
+AND OUTL(X) BE
+ $( WRC('*S'); WRC('L'); WRN(X); WRC('*S') $)
+
+AND OUTC(X) BE
+ $( WRN(CHARCODE(X)); WRC('*S') $)
+
+AND WRITEOP(X) BE
+ $(1 LET S = VALOF SWITCHON X INTO
+ $( DEFAULT: TRANSREPORT(199, CURRENTBRANCH)
+ RESULTIS 'ERROR'
+
+ CASE S.MULT: RESULTIS "MULT"
+ CASE S.DIV: RESULTIS "DIV"
+ CASE S.REM: RESULTIS "REM"
+ CASE S.PLUS: RESULTIS "PLUS"
+ CASE S.MINUS: RESULTIS "MINUS"
+ CASE S.EQ: RESULTIS "EQ"
+ CASE S.NE: RESULTIS "NE"
+ CASE S.LS: RESULTIS "LS"
+ CASE S.GR: RESULTIS "GR"
+ CASE S.LE: RESULTIS "LE"
+ CASE S.GE: RESULTIS "GE"
+ CASE S.LSHIFT: RESULTIS "LSHIFT"
+ CASE S.RSHIFT: RESULTIS "RSHIFT"
+ CASE S.LOGAND: RESULTIS "LOGAND"
+ CASE S.LOGOR: RESULTIS "LOGOR"
+ CASE S.EQV: RESULTIS "EQV"
+ CASE S.NEQV: RESULTIS "NEQV"
+
+ CASE S.NEG: RESULTIS "NEG"
+ CASE S.NOT: RESULTIS "NOT"
+ CASE S.RV: RESULTIS "RV"
+
+ CASE S.TRUE: RESULTIS "TRUE"
+ CASE S.FALSE: RESULTIS "FALSE"
+ CASE S.QUERY: RESULTIS "QUERY"
+
+ CASE S.LP: RESULTIS "LP"
+ CASE S.LG: RESULTIS "LG"
+ CASE S.LN: RESULTIS "LN"
+ CASE S.LSTR: RESULTIS "LSTR"
+ CASE S.LL: RESULTIS "LL"
+
+ CASE S.LLP: RESULTIS "LLP"
+ CASE S.LLG: RESULTIS "LLG"
+ CASE S.LLL: RESULTIS "LLL"
+
+ CASE S.SP: RESULTIS "SP"
+ CASE S.SG: RESULTIS "SG"
+ CASE S.SL: RESULTIS "SL"
+ CASE S.STIND: RESULTIS "STIND"
+
+ CASE S.JUMP: RESULTIS "JUMP"
+ CASE S.JT: RESULTIS "JT"
+ CASE S.JF: RESULTIS "JF"
+ CASE S.GOTO: RESULTIS "GOTO"
+ CASE S.LAB: RESULTIS "LAB"
+ CASE S.STACK: RESULTIS "STACK"
+ CASE S.STORE: RESULTIS "STORE"
+
+ CASE S.ENTRY: RESULTIS "ENTRY"
+ CASE S.SAVE: RESULTIS "SAVE"
+ CASE S.FNAP: RESULTIS "FNAP"
+ CASE S.FNRN: RESULTIS "FNRN"
+ CASE S.RTAP: RESULTIS "RTAP"
+ CASE S.RTRN: RESULTIS "RTRN"
+ CASE S.ENDPROC: RESULTIS "ENDPROC"
+ CASE S.RES: RESULTIS "RES"
+ CASE S.RSTACK: RESULTIS "RSTACK"
+ CASE S.FINISH: RESULTIS "FINISH"
+
+ CASE S.SWITCHON:RESULTIS "SWITCHON"
+ CASE S.GLOBAL: RESULTIS "GLOBAL"
+ CASE S.DATALAB: RESULTIS "DATALAB"
+ CASE S.ITEML: RESULTIS "ITEML"
+ CASE S.ITEMN: RESULTIS "ITEMN" $)
+
+ FOR I = 1 TO GETBYTE(S, 0) DO WRC(GETBYTE(S, I)) $)1
+
+
+AND WRN(N) BE $( TEST N<0 DO WRC('-') OR N := - N
+ WRNN(N) $)
+
+AND WRNN(N) BE $( IF N<-9 DO WRNN(N/10)
+ WRC('0' - N REM 10) $)
+
+AND ENDOCODE() BE $( WRCH('*N'); OCOUNT := 0 $)
+
+
+AND WRC(CH) BE $( OCOUNT := OCOUNT + 1
+ IF OCOUNT>62 /\ CH='*S' DO
+ $( WRCH('*N'); OCOUNT := 0; RETURN $)
+ WRCH(CH) $)
--- /dev/null
+JL5
+$ 1 L1 AIG244 SG244 LIG244 JL6 6 X4
+$ 2 LIG194 SP6 LIG12 K4 L1 AIG191 SG191 LIG191 LIG192 X13 FL7 LL499 SP6/
+ LIG60 K4 L8 SP6 LIG30 K4 7 LL498 SP6 LIG60 K4 LIP2 SP6 LIL4 K4 LL497 S/
+P6 LIG288 SP7 LIG76 K4 LIP3 SP6 L0 SP7 L4 SP8 LIG152 K4 LIG63 K4 LIG195/
+ SP6 LIG12 K4 X4
+$ 3 JL9 11 LL496 SP5 LIP2 SP6 LIG76 K3 X4 12 LL495 JL8 13 LL494 JL8 14 /
+15 LL493 JL8 16 LL492 JL8 17 LL491 JL8 18 LL490 JL8 19 LL489 JL8 20 LL4/
+88 JL8 21 LL487 JL8 22 23 24 LL486 JL8 25 26 LL485 JL8 27 28 LL484 JL8 /
+JL10 9 LIP2 X23 D17 DL11 D141 DL12 D104 DL13 D101 DL14 D105 DL15 D106 D/
+L16 D144 DL17 D142 DL18 D143 DL19 D115 DL20 D116 DL21 D117 DL22 D118 DL/
+23 D119 DL24 D110 DL25 D112 DL26 D109 DL27 D113 DL28 10 8 SP3 LIP3 SP6 /
+LIG60 K4 X4 5 JL30
+$ 29 LP4 SP3 LP1206 SP1205 LP1308 SP1307 LP1460 SP1459 LIP3 SG260 L3 SG/
+261 L3 SG262 L3 SG263 L1200 SG264 L0 SP1611 L0 AIG260 SP1612 LIP1611 SI/
+P1612 L0 SP1611 L1 AIG260 SP1612 LIP1611 SIP1612 L0 SP1611 L2 AIG260 SP/
+1612 LIP1611 SIP1612 LIP1205 SG285 L0 SG286 L100 SG287 LIP1307 SG265 LI/
+P1459 SG266 L0 SG267 L150 SG268 L-1 SG269 L0 SG274 L0 SG273 L-1 SG272 L/
+-1 SG271 L-1 SG275 L0 SG288 LIP2 SG270 L0 SG251 L0 SG244 LIG282 SG280 L/
+91 SP1613 LIG280 SP1614 LIG291 K1611 LIP2 SP1613 LIG209 K1611 LIP2 SP16/
+13 LIG200 K1611 L76 SP1613 LIG286 L2 X6 SP1614 LIG291 K1611 L0 SP1611 J/
+L32 31 LIP1611 AIG285 X1 SP1614 LIG295 K1612 L1 AIP1611 AIG285 X1 SP161/
+4 LIG296 K1612 L2 AIP1611 SP1611 32 LIG286 LIP1611 X10 FL31 LIG252 K161/
+2 X4 30
+4 DL3 499 C21 C10 C67 C79 C77 C80 C73 C76 C65 C84 C73 C79 C78 C32 C65 C/
+66 C79 C82 C84 C69 C68 C10 498 C11 C10 C82 C69 C80 C79 C82 C84 C58 C32 /
+C32 C32 497 C22 C10 C67 C79 C77 C77 C65 C78 C68 C83 C32 C67 C79 C77 C80/
+ C73 C76 C69 C68 C32 C37 C78 C10 496 C18 C67 C79 C77 C80 C73 C76 C69 C8/
+2 C32 C69 C82 C82 C79 C82 C32 C32 C37 C78 495 C14 C84 C79 C79 C32 C77 C/
+65 C78 C89 C32 C67 C65 C83 C69 C83 494 C38 C73 C76 C76 C69 C71 C65 C76 /
+C32 C85 C83 C69 C32 C79 C70 C32 C66 C82 C69 C65 C75 C44 C32 C76 C79 C79/
+ C80 C32 C79 C82 C32 C82 C69 C83 C85 C76 C84 C73 C83 493 C30 C73 C76 C7/
+6 C69 C71 C65 C76 C32 C85 C83 C69 C32 C79 C70 C32 C67 C65 C83 C69 C32 C/
+79 C82 C32 C68 C69 C70 C65 C85 C76 C84 492 C28 C84 C87 C79 C32 C67 C65 /
+C83 C69 C83 C32 C87 C73 C84 C72 C32 C83 C65 C77 C69 C32 C67 C79 C78 C83/
+ C84 C65 C78 C84 491 C16 C84 C79 C79 C32 C77 C65 C78 C89 C32 C71 C76 C7/
+9 C66 C65 C76 C83 490 C19 C78 C65 C77 C69 C32 C68 C69 C67 C76 C65 C82 C/
+69 C68 C32 C84 C87 C73 C67 C69 489 C23 C84 C79 C79 C32 C77 C65 C78 C89 /
+C32 C78 C65 C77 C69 C83 C32 C68 C69 C67 C76 C65 C82 C69 C68 488 C17 C78/
+ C65 C77 C69 C32 C78 C79 C84 C32 C68 C69 C67 C76 C65 C82 C69 C68 487 C2/
+6 C68 C89 C78 C65 C77 C73 C67 C32 C70 C82 C69 C69 C32 C86 C65 C82 C73 C/
+65 C66 C76 C69 C32 C85 C83 C69 C68 486 C28 C69 C82 C82 C79 C82 C32 C73 /
+C78 C32 C67 C79 C78 C83 C84 C65 C78 C84 C32 C69 C88 C80 C82 C69 C83 C83/
+ C73 C79 C78 485 C24 C76 C72 C83 C32 C65 C78 C68 C32 C82 C72 C83 C32 C6/
+8 C79 C32 C78 C79 C84 C32 C77 C65 C84 C67 C72 484 C25 C76 C84 C89 C80 C/
+69 C32 C69 C88 C80 C82 C69 C83 C83 C73 C79 C78 C32 C69 C88 C80 C69 C67 /
+C84 C69 C68
+G243L1 G210L2 G245L29
+Z
+JL2
+$ 1 3 L0 SP3 L0 LIP2 X10 FL5 X4 5 LIP2 SG270 JL6 8 L100 SP6 LIP2 SP7 LI/
+G210 K4 X4 9 LIG262 SP4 LIG261 SP5 LIG280 SP6 L0 SP7 LIG281 SP8 LIP2 A1/
+ X1 SP11 LIG201 K9 LIP5 SP11 LIG261 SP12 LIG204 K9 LIG261 SG262 LIG280 /
+SG281 LIG280 SP7 LIP6 SG280 LIP2 A1 X1 SP11 LIG207 K9 LIP7 LIG280 X10 T/
+L10 L110 SP11 LIP2 SP12 LIG210 K9 10 LIG281 LIG280 X10 TL11 LIG281 SG28/
+0 L91 SP11 LIG280 SP12 LIG291 K9 11 L92 SP11 LIG290 K9 LIP2 A2 X1 SP11 /
+LIG209 K9 LIP2 A2 X1 SP11 LIG200 K9 LIP8 SG281 LIP6 LIG280 X10 TL12 L91/
+ SP11 LIP6 SP12 LIG291 K9 12 LIP4 SG262 LIP5 SG261 LIP6 SG280 X4 13 14 /
+15 LIG262 SP4 LIG261 SP5 LIG280 SP6 LIP2 A0 X1 SP7 LIP2 A1 X1 SP8 L75 L/
+IP7 X10 FL16 L1 SP7 16 JL18 17 L79 LIP7 X10 FL19 LIG243 K9 SP9 LIP8 A2 /
+X1 SP12 L78 SP13 LIP9 SP14 LIG205 K10 LIP9 SP12 LIG234 K10 L102 SP12 LI/
+P8 A3 X1 SP15 LIG235 K13 SP13 LIG291 K10 JL20 19 LIP8 A2 X1 SP11 LIP7 S/
+P12 LIP8 A3 X1 SP15 LIG235 K13 SP13 LIG205 K9 20 LIP8 A1 X1 SP8 LIG261 /
+SG262 18 L0 LIP8 X10 FL17 LIP2 A2 X1 SP11 LIG209 K9 LIP2 A2 X1 SP11 LIG/
+200 K9 LIP4 SG262 LIP5 SG261 LIP6 SG280 X4 21 LIP2 A1 X1 SP6 LIP2 A2 X1/
+ SP7 LIG230 K4 X4 22 LIG280 SP4 LIG282 AIG280 SG280 L91 SP7 LIG280 SP8 /
+LIG291 K5 LIP2 A2 X1 SP7 LIG233 K5 LIP2 A1 X1 SP7 LIG231 K5 L51 SP7 LIP/
+4 SP8 LIG291 K5 LIP4 SG280 X4 23 LIP2 A1 X1 SP6 LIG231 K4 L52 SP6 LIG29/
+0 K4 LIG280 L1 X9 SG280 X4 24 LIP2 A3 X1 SP6 LIG240 K4 LIP2 A2 X1 SP6 L/
+IG200 K4 X4 25 L-1 SP3 26 LIG243 K4 SP4 LIP2 A1 X1 SP7 LIP3 SP8 LIP4 SP/
+9 LIG220 K5 LIP2 A2 X1 SP7 LIG200 K5 LIP4 SP7 LIG240 K5 X4 27 LIG243 K4/
+ SP4 LIG243 K5 SP5 LIP2 A1 X1 SP8 L0 SP9 LIP4 SP10 LIG220 K6 LIP2 A2 X1/
+ SP8 LIG200 K6 LIP5 SP8 LIG241 K6 LIP4 SP8 LIG240 K6 LIP2 A3 X1 SP8 LIG/
+200 K6 LIP5 SP8 LIG240 K6 X4 28 LIG275 L0 X12 FL29 L104 SP6 LIP2 SP7 LI/
+G210 K4 29 L0 LIG275 X10 FL30 LIG243 K4 SG275 30 LIG275 SP6 LIG241 K4 X/
+4 31 LIG271 L0 X12 FL32 L104 SP6 LIP2 SP7 LIG210 K4 32 L0 LIG271 X10 FL/
+33 LIG243 K4 SG271 33 LIG271 SP6 LIG241 K4 X4 34 L97 SP6 LIG290 K4 X4 3/
+5 L68 SP6 LIG290 K4 X4 36 LIG272 L0 X12 FL37 L104 SP6 LIP2 SP7 LIG210 K/
+4 37 LIP2 A1 X1 SP6 LIG231 K4 L98 SP6 LIG272 SP7 LIG292 K4 LIG280 L1 X9/
+ SG280 X4 38 L-1 SP3 39 LIG243 K4 SP4 LIG243 K5 SP5 LIG271 SP6 LIG275 S/
+P7 L0 SG271 LIP5 SG275 LIP5 SP10 LIG241 K8 LIP4 SP10 LIG240 K8 LIP2 A2 /
+X1 SP10 LIG200 K8 LIP5 SP10 LIG240 K8 LIP2 A1 X1 SP10 LIP3 SP11 LIP4 SP/
+12 LIG220 K8 L0 LIG271 X10 TL40 LIG271 SP10 LIG240 K8 40 LIP6 SG271 LIP/
+7 SG275 X4 41 L-1 SP3 42 43 LIG243 K4 SP4 LIG271 SP5 LIG275 SP6 L0 SG27/
+1 L0 SG275 LIP4 SP9 LIG240 K7 LIP2 A0 X1 L61 X10 FL44 LIP4 SG275 LIP2 A/
+1 X1 SP9 LIG200 K7 LIP4 SP9 LIG241 K7 JL45 44 LIP2 A1 X1 SP9 LIG200 K7 /
+L0 LIG275 X10 TL46 LIG275 SP9 LIG240 K7 46 LIP2 A2 X1 SP9 LIP3 SP10 LIP/
+4 SP11 LIG220 K7 45 L0 LIG271 X10 TL47 LIG271 SP9 LIG240 K7 47 LIP5 SG2/
+71 LIP6 SG275 X4 48 LIG243 K4 SP4 LIP2 A1 X1 SP7 LIG235 K5 SP5 LIG267 L/
+IG268 X13 FL49 L141 SP8 LIP2 SP9 LIG210 K6 49 LIG269 L0 X12 FL50 L105 S/
+P8 LIP2 SP9 LIG210 K6 50 LIG269 SP6 LIG267 L1 X9 SP7 JL51 52 LIP6 AIG26/
+5 X1 LIP5 X10 FL53 L106 SP10 LIP2 SP11 LIG210 K8 53 LIP6 A1 SP6 51 LIP6/
+ LIP7 X15 TL52 LIP5 SP6 LIG267 AIG265 SP7 LIP6 SIP7 LIP4 SP6 LIG267 AIG/
+266 SP7 LIP6 SIP7 L1 AIG267 SG267 LIP4 SP8 LIG240 K6 LIP2 A2 X1 SP8 LIG/
+200 K6 X4 54 LIG269 L0 X12 FL55 L105 SP6 LIP2 SP7 LIG210 K4 55 L0 LIG27/
+3 X10 TL56 L101 SP6 LIP2 SP7 LIG210 K4 56 LIG243 K4 SG273 LIG273 SP6 LI/
+G240 K4 LIP2 A1 X1 SP6 LIG200 K4 X4 57 LIG269 L0 X12 FL58 L105 SP6 LIP2/
+ SP7 LIG210 K4 58 LIG274 SP6 LIG241 K4 X4 59 LIP2 SP6 LIG221 K4 X4 60 L/
+IP2 SP6 LIG222 K4 X4 61 LIP2 A1 X1 SP6 LIG200 K4 L1 AIG288 SG288 LIP2 A/
+2 X1 SP2 JIL4 JL7 6 LIP2 A0 X1 X23 D27 DL8 D74 DL9 D79 DL13 D76 DL14 D7/
+5 DL15 D50 DL21 D51 DL22 D52 DL23 D54 DL24 D58 DL25 D57 DL26 D55 DL27 D/
+65 DL28 D66 DL31 D67 DL34 D68 DL35 D53 DL36 D59 DL38 D60 DL39 D62 DL41 /
+D63 DL42 D61 DL43 D71 DL48 D72 DL54 D69 DL57 D70 DL59 D56 DL60 D73 DL61/
+ 7 X4 2
+4 DL3
+G200L1
+Z
+JL17
+$ 1 L0 LIP2 X10 TL18 JL19 21 L102 SP5 LIG270 SP6 LIG210 K3 X4 22 23 LIP/
+2 A1 X1 SP5 LIG202 K3 X4 24 25 LIG243 K3 SP3 LIP2 A4 SP4 LIP3 SIP4 LIP2/
+ A1 X1 SP5 LIP2 A4 X1 SP6 LIG203 K3 X4 26 LIP2 A1 X1 SP5 LIG201 K3 LIP2/
+ A2 X1 SP5 LIG201 K3 X4 JL20 19 LIP2 A0 X1 X23 D5 DL21 D42 DL22 D41 DL2/
+3 D45 DL24 D44 DL25 D40 DL26 20 18 X4
+$ 2 L0 LIP2 X10 TL27 LIP2 A0 X1 L2 X10 FL28 LIP2 SP5 L77 SP6 LIG280 SP7/
+ LIG205 K3 L1 AIG280 SG280 X4 28 LIP2 A0 X1 L38 X10 FL29 LIP2 A1 X1 SP5/
+ L77 SP6 LIG280 SP7 LIG205 K3 L1 AIG280 SG280 LIP2 A2 X1 SP5 LIG202 K3 /
+X4 29 L103 SP5 LIP2 SP6 LIG210 K3 27 X4
+$ 3 LIP2 SP6 LIG206 K4 SP4 L1 AIP4 AIG260 X1 L76 X10 FL30 L2 AIP4 AIG26/
+0 X1 SP5 LIP2 SP8 L76 SP9 LIP5 SP10 LIG205 K6 LIG286 LIG287 X13 FL31 L1/
+44 SP8 LIP2 SP9 LIG210 K6 31 LIP5 SP6 LIG286 AIG285 SP7 LIP6 SIP7 LIP3 /
+SP6 L1 AIG286 AIG285 SP7 LIP6 SIP7 L2 AIG286 SG286 X4 30 LIG243 K5 SP5 /
+LIP2 SP8 L78 SP9 LIP5 SP10 LIG205 K6 LIP5 SP8 LIG234 K6 L101 SP8 LIP3 S/
+P9 LIG292 K6 X4
+$ 4 LIG261 SP3 LIP2 SP6 LIL9 K4 LIP3 SP6 LIG261 SP7 LIG204 K4 LIG261 SG/
+262 X4
+$ 5 JL33 32 L3 AIP2 SP4 LIP2 AIG260 X1 SP5 JL35 34 LIP4 AIG260 X1 LIP5 /
+X10 FL36 L142 SP8 LIP5 SP9 LIG210 K6 36 L3 AIP4 SP4 35 LIP4 LIP3 X12 TL/
+34 L3 AIP2 SP2 33 LIP3 LIP2 X10 FL32 X4
+$ 6 LIG261 LIG264 X13 FL37 L143 SP7 LIG270 SP8 LIG210 K5 37 LIP2 SP5 LI/
+G261 AIG260 SP6 LIP5 SIP6 LIP3 SP5 L1 AIG261 AIG260 SP6 LIP5 SIP6 LIP4 /
+SP5 L2 AIG261 AIG260 SP6 LIP5 SIP6 L3 AIG261 SG261 X4
+$ 7 LIG262 SP3 39 LIP3 L3 X9 SP3 L0 LIP3 X10 TL40 LIP3 AIG260 X1 LIP2 X/
+10 FL39 40 LIP3 JL38 38 X4
+$ 8 L0 LIP2 X10 TL41 JL42 44 X4 45 LIG243 K3 SP3 LIP2 A3 SP4 LIP3 SIP4 /
+LIP2 A1 X1 SP5 LIP2 A3 X1 SP6 LIG203 K3 46 47 48 49 50 51 LIP2 A2 X1 SP/
+5 LIL9 K3 X4 52 LIP2 A2 X1 SP5 LIL9 K3 53 54 55 56 LIP2 A1 X1 SP5 LIL9 /
+K3 X4 57 LIP2 A2 X1 SP5 LIL9 K3 LIP2 A3 X1 SP5 LIL9 K3 X4 JL43 42 LIP2 /
+A0 X1 X23 D13 DL44 D54 DL45 D57 DL46 D58 DL47 D59 DL48 D60 DL49 D70 DL5/
+0 D71 DL51 D73 DL52 D61 DL53 D62 DL54 D63 DL55 D72 DL56 D55 DL57 43 41 /
+X4
+$ 10 LIP2 SP5 LIL12 K3 LIP2 SP5 LIL16 K3 FL58 LIG243 K3 SP3 LIG280 SP4 /
+LIP3 SP7 LIG241 K5 LIP2 SP7 LIL14 K5 LIP4 SG280 L91 SP7 LIG280 SP8 LIG2/
+91 K5 LIP3 SP7 LIG240 K5 58 X4
+$ 11 JL59 61 LIP2 A1 X1 SP5 LIL12 K3 LIP2 A2 X1 SP5 LIL12 K3 X4 62 L45 /
+SP5 LIG281 SP6 LIG291 K3 L1 AIG280 SG280 L1 AIG281 SP3 LIP2 A2 X1 SP6 L/
+IG235 K4 SP4 LIP3 AIP4 SG281 X4 63 LIP2 A2 X1 SP5 LIG233 K3 X4 64 X4 JL/
+60 59 LIP2 A0 X1 X23 D3 DL64 D40 DL61 D42 DL62 D41 DL63 60 X4
+$ 13 JL65 67 LIP2 A1 X1 SP5 LIL14 K3 LIP2 A2 X1 SP5 LIL14 K3 X4 68 69 L/
+IG262 SP3 LIG261 SP4 LIG263 SP5 LIG271 SP6 LIG275 SP7 LIG272 SP8 LIG269/
+ SP9 L-1 SG271 L-1 SG275 L-1 SG272 L-1 SG269 LIP2 A1 X1 SP12 LIP2 A4 X1/
+ SP13 LIG242 K10 LIG282 SG280 LIG261 SG263 LIP2 A2 X1 SP12 LIG202 K10 L/
+IP4 SP12 LIG261 SP13 LIG204 K10 LIG261 SG262 LIP2 A3 X1 SP12 LIG209 K10/
+ L95 SP12 LIG280 SP13 LIG291 K10 LIP2 A0 X1 L44 X10 FL70 LIP2 A3 X1 SP1/
+2 LIG231 K10 L96 SP12 LIG290 K10 JL71 70 LIP2 A3 X1 SP12 LIG200 K10 L97/
+ SP12 LIG290 K10 71 L103 SP12 L0 SP13 LIG291 K10 LIP6 SG271 LIP7 SG275 /
+LIP8 SG272 LIP9 SG269 LIP3 SG262 LIP4 SG261 LIP5 SG263 72 X4 JL66 65 LI/
+P2 A0 X1 X23 D3 DL72 D40 DL67 D44 DL68 D45 DL69 66 X4
+$ 15 LIP2 A0 X1 L44 X10 TL75 LIP2 A0 X1 L45 X10 FL74 75 L-1 SP3 JL73 74/
+ LIP2 A0 X1 L40 X11 FL77 L0 SP3 JL76 77 LIP2 A1 X1 SP5 LIL16 K3 FL79 L-/
+1 SP3 JL78 79 LIP2 A2 X1 SP5 LIL16 K3 SP3 78 76 73 LIP3 X4 17
+9 DL8 12 DL11 14 DL13 16 DL15
+G201L1 G202L2 G203L3 G209L4 G204L5 G205L6 G206L7 G207L10
+Z
+JL4
+$ 1 LIP3 SP5 JL5 7 LIP3 X3 SP3 8 LIP3 FL9 LIP4 SP8 LIG241 K6 9 X4 10 LI/
+P2 A1 X1 SP8 LIP3 X3 SP9 LIP4 SP10 LIG220 K6 X4 11 LIP5 X3 SP5 12 LIP5 /
+FL13 LIP2 A1 X1 SP8 LIP3 SP9 LIP4 SP10 LIG220 K6 LIP2 A2 X1 SP8 LIP3 SP/
+9 LIP4 SP10 LIG220 K6 JL14 13 LIG243 K6 SP6 LIP2 A1 X1 SP9 LIP3 X3 SP10/
+ LIP6 SP11 LIG220 K7 LIP2 A2 X1 SP9 LIP3 SP10 LIP4 SP11 LIG220 K7 LIP6 /
+SP9 LIG240 K7 14 X4 15 LIP2 SP8 LIG231 K6 LIP3 FL17 L86 SP8 JL16 17 L87/
+ SP8 16 LIP4 SP9 LIG292 K6 LIG280 L1 X9 SG280 X4 JL6 5 LIP2 A0 X1 X23 D/
+5 DL15 D5 DL7 D4 DL8 D30 DL10 D33 DL11 D34 DL12 6 X4
+$ 2 LIG267 SP3 LIG269 SP4 LIG273 SP5 LIG274 SP6 LIG243 K7 SP7 LIG243 K8/
+ SG274 LIG267 SG269 LIP7 SP10 LIG241 K8 L0 SG273 LIP2 A2 X1 SP10 LIG200/
+ K8 LIG274 SP10 LIG241 K8 LIP7 SP10 LIG240 K8 LIP2 A1 X1 SP10 LIG231 K8/
+ L0 LIG273 X10 FL18 LIG274 SG273 18 L70 SP10 LIG267 LIP3 X9 SP11 LIG273/
+ SP12 LIG294 K8 LIG269 SP8 LIG267 L1 X9 SP9 JL19 20 LIP8 AIG265 X1 SP12/
+ LIG295 K10 LIP8 AIG266 X1 SP12 LIG296 K10 LIP8 A1 SP8 19 LIP8 LIP9 X15/
+ TL20 LIG280 L1 X9 SG280 LIG274 SP10 LIG240 K8 LIP6 SG274 LIP3 SG267 LI/
+P4 SG269 LIP5 SG273 X4
+$ 3 LIG262 SP3 LIG261 SP4 LIG243 K5 SP5 LIG243 K6 SP6 LIG271 SP7 LIG275/
+ SP8 L0 SP9 L0 SP10 L1 SP11 LIG280 SP12 L0 SG271 L0 SG275 LIP2 A1 X1 SP/
+15 L77 SP16 LIP12 SP17 LIG205 K13 LIG261 SG262 LIP2 A2 X1 SP15 LIG231 K/
+13 LIP2 A3 X1 A0 X1 L1 X10 FL21 L42 SP9 LIP2 A3 X1 A1 X1 SP10 JL22 21 L/
+40 SP9 LIG280 SP10 LIP2 A3 X1 SP15 LIG231 K13 22 LIP2 A4 X1 L0 X10 TL23/
+ LIP2 A4 X1 SP15 LIG235 K13 SP11 23 L92 SP15 LIG290 K13 LIP5 SP15 LIG24/
+1 K13 LIP2 A5 X1 SP15 LIG209 K13 LIP6 SP15 LIG240 K13 LIP2 A5 X1 SP15 L/
+IG200 K13 L0 LIG275 X10 TL24 LIG275 SP15 LIG240 K13 24 L40 SP15 LIP12 S/
+P16 LIG291 K13 L42 SP15 LIP11 SP16 LIG291 K13 L14 SP15 LIG290 K13 L80 S/
+P15 LIP12 SP16 LIG291 K13 LIP5 SP15 LIG240 K13 L40 SP15 LIP12 SP16 LIG2/
+91 K13 LIP9 SP15 LIP10 SP16 LIG291 K13 LIP11 L0 X12 FL26 L25 SP15 JL25 /
+26 L24 SP15 25 LIG290 K13 L86 SP15 LIP6 SP16 LIG292 K13 L0 LIG271 X10 T/
+L27 LIG271 SP15 LIG240 K13 27 LIP7 SG271 LIP8 SG275 LIP12 SG280 L91 SP1/
+5 LIG280 SP16 LIG291 K13 LIP3 SG262 LIP4 SG261 X4 4
+
+G220L1 G221L2 G222L3
+Z
+JL5
+$ 1 L0 LIP2 X10 FL6 L148 SP5 LIG270 SP6 LIG210 K3 LIG236 K3 X4 6 LIP2 A/
+0 X1 SP3 JL7 9 L147 SP6 LIG270 SP7 LIG210 K4 LIG236 K4 X4 10 11 12 13 1/
+4 15 16 17 18 LIP2 A1 X1 SP6 LIG231 K4 LIP2 A2 X1 SP6 LIG231 K4 LIP3 SP/
+6 LIG290 K4 LIG280 L1 X9 SG280 X4 19 20 21 22 23 24 25 26 27 LIP2 A1 X1/
+ SP4 LIP2 A2 X1 SP5 LIP4 A0 X1 L2 X10 TL29 LIP4 A0 X1 L1 X10 FL28 29 LI/
+P2 A2 X1 SP4 LIP2 A1 X1 SP5 28 LIP4 SP8 LIG231 K6 LIP5 SP8 LIG231 K6 L9/
+ LIP3 X10 FL30 L14 SP8 LIG290 K6 L8 SP3 30 LIP3 SP8 LIG290 K6 LIG280 L1/
+ X9 SG280 X4 31 32 33 LIP2 A1 X1 SP6 LIG231 K4 LIP3 SP6 LIG290 K4 X4 34/
+ 35 36 LIP3 SP6 LIG290 K4 L1 AIG280 SG280 X4 37 LIP2 A1 X1 SP6 LIG232 K/
+4 X4 38 L42 SP6 LIP2 A1 X1 SP7 LIG291 K4 L1 AIG280 SG280 X4 39 LIP2 A1 /
+SP4 L43 SP7 LIP4 SP10 L0 SP11 LIG85 K8 SP8 LIG291 K5 L1 SP5 LIP4 SP8 L0/
+ SP9 LIG85 K6 SP6 JL40 41 LIP4 SP11 LIP5 SP12 LIG85 K9 SP9 LIG297 K7 LI/
+P5 A1 SP5 40 LIP5 LIP6 X15 TL41 L32 SP7 LIG250 K5 L1 AIG280 SG280 X4 42/
+ LIP2 SP6 L40 SP7 L41 SP8 L44 SP9 L42 SP10 LIG237 K4 L1 AIG280 SG280 X4/
+ 43 LIG272 SP4 LIG261 SP5 LIG262 SP6 LIP2 A1 X1 SP9 LIG209 K7 LIG243 K7/
+ SG272 LIP2 A1 X1 SP9 LIG200 K7 LIG272 SP9 LIG240 K7 L93 SP9 LIG280 SP1/
+0 LIG291 K7 L1 AIG280 SG280 LIP5 SG261 LIP6 SG262 LIP4 SG272 X4 44 LIG2/
+80 SP4 LIG282 AIG280 SG280 L91 SP7 LIG280 SP8 LIG291 K5 LIP2 A2 X1 SP7 /
+LIG233 K5 LIP2 A1 X1 SP7 LIG231 K5 L10 SP7 LIP4 SP8 LIG291 K5 L1 AIP4 S/
+G280 X4 45 LIG243 K4 SP4 LIG243 K5 SP5 LIG280 SP6 LIP2 A1 X1 SP9 L0 SP1/
+0 LIP5 SP11 LIG220 K7 LIP2 A2 X1 SP9 LIG231 K7 LIP4 SP9 LIG241 K7 LIP6 /
+SG280 L91 SP9 LIG280 SP10 LIG291 K7 LIP5 SP9 LIG240 K7 LIP2 A3 X1 SP9 L/
+IG231 K7 LIP4 SP9 LIG240 K7 X4 46 LIG243 K4 SP4 LIP4 SP7 LIG234 K5 LIP2/
+ A1 X1 SP2 JL48 47 L102 SP7 LIP2 A1 X1 SP10 LIG235 K8 SP8 LIG291 K5 LIP/
+2 A2 X1 SP2 48 LIP2 A0 X1 L38 X10 TL47 L102 SP7 LIP2 SP10 LIG235 K8 SP8/
+ LIG291 K5 L47 SP7 LIP4 SP8 LIG292 K5 L1 AIG280 SG280 X4 JL8 7 LIP3 X23/
+ D32 DL9 D12 DL10 D13 DL11 D15 DL12 D22 DL13 D23 DL14 D24 DL15 D25 DL16/
+ D31 DL17 D32 DL18 D9 DL19 D11 DL20 D14 DL21 D20 DL22 D21 DL23 D33 DL24/
+ D34 DL25 D35 DL26 D36 DL27 D17 DL31 D30 DL32 D8 DL33 D4 DL34 D5 DL35 D/
+16 DL36 D7 DL37 D1 DL38 D3 DL39 D2 DL42 D6 DL43 D10 DL44 D37 DL45 D39 D/
+L46 8 X4
+$ 2 L0 LIP2 X10 FL51 JIL50 51 JL52 54 49 L113 SP5 LIG270 SP6 LIG210 K3 /
+LIG236 K3 X4 55 LIP2 SP5 L45 SP6 L46 SP7 L47 SP8 L0 SP9 LIG237 K3 L1 AI/
+G280 SG280 X4 56 LIP2 A1 X1 SP5 LIG231 K3 X4 57 LIP2 A1 X1 SP3 LIP2 A2 /
+X1 SP4 LIP3 A0 X1 L2 X10 FL58 LIP2 A2 X1 SP3 LIP2 A1 X1 SP4 58 LIP3 SP7/
+ LIG231 K5 LIP4 SP7 LIG231 K5 L14 SP7 LIG290 K5 LIG280 L1 X9 SG280 X4 J/
+L53 52 LIP2 A0 X1 X23 D3 DL54 D2 DL55 D8 DL56 D9 DL57 53 X4
+$ 3 L42 SP4 L0 SP5 LIG291 K2 L1 AIG280 SG280 X4
+$ 4 L0 LIP2 X10 TL59 LIP2 A0 X1 L38 X10 TL60 LIP2 SP5 LIG231 K3 X4 60 L/
+IP2 A1 X1 SP5 LIG233 K3 LIP2 A2 X1 SP5 LIG233 K3 59 X4 5
+50 DL49
+G231L1 G232L2 G236L3 G233L4
+Z
+JL4
+$ 1 L0 LIP2 X10 FL6 L117 SP5 LIG270 SP6 LIG210 K3 L0 JL5 6 JL7 9 L118 S/
+P5 LIP2 SP6 LIG210 K3 L0 JL5 10 LIP2 SP5 LIG206 K3 SP3 L1 AIP3 AIG260 X/
+1 L1 X10 FL11 L2 AIP3 AIG260 X1 JL5 11 L119 SP6 LIP2 SP7 LIG210 K4 L0 J/
+L5 12 LIP2 A1 X1 JL5 13 L-1 JL5 14 L0 JL5 15 LIP2 A1 X1 SP5 LIG235 K3 X/
+2 JL5 16 LIP2 A1 X1 SP5 LIG235 K3 SP3 LIP2 A2 X1 SP6 LIG235 K4 SP4 LIP3/
+ LIP4 X5 JL5 17 LIP2 A1 X1 SP5 LIG235 K3 SP3 LIP2 A2 X1 SP6 LIG235 K4 S/
+P4 LIP3 LIP4 X6 JL5 18 LIP2 A1 X1 SP5 LIG235 K3 SP3 LIP2 A2 X1 SP6 LIG2/
+35 K4 SP4 LIP3 AIP4 JL5 19 LIP2 A1 X1 SP5 LIG235 K3 SP3 LIP2 A2 X1 SP6 /
+LIG235 K4 SP4 LIP3 LIP4 X9 JL5 JL8 7 LIP2 A0 X1 X23 D9 DL9 D2 DL10 D1 D/
+L12 D4 DL13 D5 DL14 D17 DL15 D11 DL16 D12 DL17 D14 DL18 D15 DL19 8 5 X4/
+
+$ 2 L0 LIP2 X10 TL21 L0 LIP3 X10 FL20 21 L110 SP6 LIG270 SP7 LIG210 K4 /
+X4 20 JL22 24 LIP3 A0 X1 L38 X10 TL25 L112 SP6 LIG270 SP7 LIG210 K4 X4 /
+25 LIP2 A1 X1 SP6 LIP3 A1 X1 SP7 LIG230 K4 LIP2 A2 X1 SP6 LIP3 A2 X1 SP/
+7 LIG230 K4 X4 26 LIP3 SP6 LIG231 K4 LIP2 SP6 L80 SP7 L81 SP8 L82 SP9 L/
+0 SP10 LIG237 K4 LIG280 L1 X9 SG280 X4 27 28 29 LIP3 SP6 LIG231 K4 LIP2/
+ SP6 LIG232 K4 L83 SP6 LIG290 K4 LIG280 L2 X9 SG280 X4 30 L109 SP6 LIG2/
+70 SP7 LIG210 K4 JL23 22 LIP2 A0 X1 X23 D5 DL30 D38 DL24 D2 DL26 D8 DL2/
+7 D9 DL28 D37 DL29 23 X4
+$ 3 LIP2 SP9 LIG206 K7 SP7 L1 AIP7 AIG260 X1 SP8 L2 AIP7 AIG260 X1 SP9 /
+L0 LIP7 X10 FL31 L115 SP12 LIP2 SP13 LIG210 K10 LIP4 SP12 L2 SP13 LIG29/
+1 K10 X4 31 JL32 34 LIP7 LIG263 X12 FL35 L116 SP12 LIP2 SP13 LIG210 K10/
+ 35 LIP3 SP12 LIP9 SP13 LIG291 K10 X4 36 LIP4 SP12 LIP9 SP13 LIG291 K10/
+ X4 37 LIP5 SP12 LIP9 SP13 LIG292 K10 X4 38 L0 LIP6 X10 FL39 L113 SP12 /
+LIP2 SP13 LIG210 K10 LIP3 SP6 39 LIP6 SP12 LIP9 SP13 LIG291 K10 JL33 32/
+ LIP8 X23 D4 DL33 D77 DL34 D76 DL36 D78 DL37 D1 DL38 33 X4 4
+
+G235L1 G230L2 G237L3
+Z
+JL18
+$ 1 L90 SP5 LIP2 SP6 LIG292 K3 X4
+$ 2 L2 AIP2 SP4 L94 SP7 LIP4 SP10 L0 SP11 LIG85 K8 SP8 LIP3 SP9 LIG294 /
+K5 L1 SP5 LIP4 SP8 L0 SP9 LIG85 K6 SP6 JL19 20 LIP4 SP11 LIP5 SP12 LIG8/
+5 K9 SP9 LIG297 K7 LIP5 A1 SP5 19 LIP5 LIP6 X15 TL20 L32 SP7 LIG250 K5 /
+X4
+$ 3 L100 SP5 LIP2 SP6 LIG292 K3 X4
+$ 4 L85 SP5 LIP2 SP6 LIG292 K3 X4
+$ 5 LIP2 SP5 LIG298 K3 L32 SP5 LIG250 K3 X4
+$ 6 LIP2 SP6 LIG298 K4 L32 SP6 LIG250 K4 LIP3 SP6 LIG253 K4 L32 SP6 LIG/
+250 K4 X4
+$ 7 LIP2 SP6 LIG298 K4 L32 SP6 LIG250 K4 L76 SP6 LIG250 K4 LIP3 SP6 LIG/
+253 K4 L32 SP6 LIG250 K4 X4
+$ 8 LIP2 SP7 LIG298 K5 L32 SP7 LIG250 K5 LIP3 SP7 LIG253 K5 L32 SP7 LIG/
+250 K5 L76 SP7 LIG250 K5 LIP4 SP7 LIG253 K5 L32 SP7 LIG250 K5 X4
+$ 9 LIP2 SP5 LIG253 K3 X4
+$ 10 L32 SP5 LIG250 K3 L76 SP5 LIG250 K3 LIP2 SP5 LIG253 K3 L32 SP5 LIG/
+250 K3 X4
+$ 11 LIP2 SP7 LIG190 K5 SP5 LIG253 K3 L32 SP5 LIG250 K3 X4
+$ 12 JL22 24 L199 SP5 LIG270 SP6 LIG210 K3 LL499 JL21 25 LL498 JL21 26 /
+LL497 JL21 27 LL496 JL21 28 LL495 JL21 29 LL494 JL21 30 LL493 JL21 31 L/
+L492 JL21 32 LL491 JL21 33 LL490 JL21 34 LL489 JL21 35 LL488 JL21 36 LL/
+487 JL21 37 LL486 JL21 38 LL485 JL21 39 LL484 JL21 40 LL483 JL21 41 LL4/
+82 JL21 42 LL481 JL21 43 LL480 JL21 44 LL479 JL21 45 LL478 JL21 46 LL47/
+7 JL21 47 LL476 JL21 48 LL475 JL21 49 LL474 JL21 50 LL473 JL21 51 LL472/
+ JL21 52 LL471 JL21 53 LL470 JL21 54 LL469 JL21 55 LL468 JL21 56 LL467 /
+JL21 57 LL466 JL21 58 LL465 JL21 59 LL464 JL21 60 LL463 JL21 61 LL462 J/
+L21 62 LL461 JL21 63 LL460 JL21 64 LL459 JL21 65 LL458 JL21 66 LL457 JL/
+21 67 LL456 JL21 68 LL455 JL21 69 LL454 JL21 70 LL453 JL21 71 LL452 JL2/
+1 72 LL451 JL21 73 LL450 JL21 74 LL449 JL21 75 LL448 JL21 76 LL447 JL21/
+ 77 LL446 JL21 78 LL445 JL21 79 LL444 JL21 80 LL443 JL21 81 LL442 JL21 /
+JL23 22 LIP2 X23 D57 DL24 D11 DL25 D12 DL26 D13 DL27 D14 DL28 D15 DL29 /
+D20 DL30 D21 DL31 D22 DL32 D23 DL33 D24 DL34 D25 DL35 D31 DL36 D32 DL37/
+ D33 DL38 D34 DL39 D35 DL40 D36 DL41 D17 DL42 D30 DL43 D8 DL44 D4 DL45 /
+D5 DL46 D16 DL47 D40 DL48 D41 DL49 D42 DL50 D43 DL51 D44 DL52 D45 DL53 /
+D46 DL54 D47 DL55 D80 DL56 D81 DL57 D82 DL58 D83 DL59 D85 DL60 D86 DL61/
+ D87 DL62 D52 DL63 D90 DL64 D91 DL65 D92 DL66 D94 DL67 D95 DL68 D10 DL6/
+9 D96 DL70 D51 DL71 D97 DL72 D103 DL73 D98 DL74 D93 DL75 D68 DL76 D70 D/
+L77 D76 DL78 D100 DL79 D101 DL80 D102 DL81 23 21 SP3 L1 SP4 LIP3 SP7 L0/
+ SP8 LIG85 K5 SP5 JL82 83 LIP3 SP10 LIP4 SP11 LIG85 K8 SP8 LIG250 K6 LI/
+P4 A1 SP4 82 LIP4 LIP5 X15 TL83 X4
+$ 13 LIP2 L0 X12 FL84 L45 SP5 LIG250 K3 JL85 84 LIP2 X2 SP2 85 LIP2 SP5/
+ LIL15 K3 X4
+$ 14 LIP2 L-9 X12 FL86 LIP2 L10 X6 SP5 LIL15 K3 86 L48 SP5 LIP2 L10 X7 /
+SP6 LIP5 LIP6 X9 SP5 LIG250 K3 X4
+$ 16 L10 SP4 LIG14 K2 L0 SG251 X4
+$ 17 L1 AIG251 SG251 LIG251 L62 X14 FL87 L32 LIP2 X10 FL87 L10 SP5 LIG1/
+4 K3 L0 SG251 X4 87 LIP2 SP5 LIG14 K3 X4 18
+15 DL14 499 C5 C69 C82 C82 C79 C82 498 C4 C77 C85 C76 C84 497 C3 C68 C7/
+3 C86 496 C3 C82 C69 C77 495 C4 C80 C76 C85 C83 494 C5 C77 C73 C78 C85 /
+C83 493 C2 C69 C81 492 C2 C78 C69 491 C2 C76 C83 490 C2 C71 C82 489 C2 /
+C76 C69 488 C2 C71 C69 487 C6 C76 C83 C72 C73 C70 C84 486 C6 C82 C83 C7/
+2 C73 C70 C84 485 C6 C76 C79 C71 C65 C78 C68 484 C5 C76 C79 C71 C79 C82/
+ 483 C3 C69 C81 C86 482 C4 C78 C69 C81 C86 481 C3 C78 C69 C71 480 C3 C7/
+8 C79 C84 479 C2 C82 C86 478 C4 C84 C82 C85 C69 477 C5 C70 C65 C76 C83 /
+C69 476 C5 C81 C85 C69 C82 C89 475 C2 C76 C80 474 C2 C76 C71 473 C2 C76/
+ C78 472 C4 C76 C83 C84 C82 471 C2 C76 C76 470 C3 C76 C76 C80 469 C3 C7/
+6 C76 C71 468 C3 C76 C76 C76 467 C2 C83 C80 466 C2 C83 C71 465 C2 C83 C/
+76 464 C5 C83 C84 C73 C78 C68 463 C4 C74 C85 C77 C80 462 C2 C74 C84 461/
+ C2 C74 C70 460 C4 C71 C79 C84 C79 459 C3 C76 C65 C66 458 C5 C83 C84 C6/
+5 C67 C75 457 C5 C83 C84 C79 C82 C69 456 C5 C69 C78 C84 C82 C89 455 C4 /
+C83 C65 C86 C69 454 C4 C70 C78 C65 C80 453 C4 C70 C78 C82 C78 452 C4 C8/
+2 C84 C65 C80 451 C4 C82 C84 C82 C78 450 C7 C69 C78 C68 C80 C82 C79 C67/
+ 449 C3 C82 C69 C83 448 C6 C82 C83 C84 C65 C67 C75 447 C6 C70 C73 C78 C/
+73 C83 C72 446 C8 C83 C87 C73 C84 C67 C72 C79 C78 445 C6 C71 C76 C79 C6/
+6 C65 C76 444 C7 C68 C65 C84 C65 C76 C65 C66 443 C5 C73 C84 C69 C77 C76/
+ 442 C5 C73 C84 C69 C77 C78
+G240L1 G242L2 G234L3 G241L4 G290L5 G291L6 G292L7 G294L8 G295L9 G296L10 /
+G297L11 G298L12 G253L13 G252L16 G250L17
+Z