From 8314a9e63453b19f94876c9118ec0aaa65b9811c Mon Sep 17 00:00:00 2001 From: nealcrook Date: Wed, 23 Nov 2016 11:45:11 +0000 Subject: [PATCH] Add files from BCPL kit. --- Applications/BCPL/CGHDR | 71 ++ Applications/BCPL/LIBHDR | 29 + Applications/BCPL/OPTIONS | 1 + Applications/BCPL/SYNHDR | 63 ++ Applications/BCPL/TRNHDR | 79 ++ Applications/BCPL/cg.b | 526 +++++++++++++ Applications/BCPL/cg.i | 212 +++++ Applications/BCPL/examples/cgtest.b | 310 ++++++++ Applications/BCPL/iclib.i | 19 + Applications/BCPL/syn.b | 1108 +++++++++++++++++++++++++++ Applications/BCPL/syn.i | 402 ++++++++++ Applications/BCPL/trn.b | 940 +++++++++++++++++++++++ Applications/BCPL/trn.i | 341 +++++++++ 13 files changed, 4101 insertions(+) create mode 100644 Applications/BCPL/CGHDR create mode 100644 Applications/BCPL/LIBHDR create mode 100644 Applications/BCPL/OPTIONS create mode 100644 Applications/BCPL/SYNHDR create mode 100644 Applications/BCPL/TRNHDR create mode 100644 Applications/BCPL/cg.b create mode 100644 Applications/BCPL/cg.i create mode 100644 Applications/BCPL/examples/cgtest.b create mode 100644 Applications/BCPL/iclib.i create mode 100644 Applications/BCPL/syn.b create mode 100644 Applications/BCPL/syn.i create mode 100644 Applications/BCPL/trn.b create mode 100644 Applications/BCPL/trn.i diff --git a/Applications/BCPL/CGHDR b/Applications/BCPL/CGHDR new file mode 100644 index 00000000..8bdec66e --- /dev/null +++ b/Applications/BCPL/CGHDR @@ -0,0 +1,71 @@ +// $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 +$) diff --git a/Applications/BCPL/LIBHDR b/Applications/BCPL/LIBHDR new file mode 100644 index 00000000..6b4fda98 --- /dev/null +++ b/Applications/BCPL/LIBHDR @@ -0,0 +1,29 @@ +// $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 +$) diff --git a/Applications/BCPL/OPTIONS b/Applications/BCPL/OPTIONS new file mode 100644 index 00000000..1c0f02ff --- /dev/null +++ b/Applications/BCPL/OPTIONS @@ -0,0 +1 @@ +L7500 diff --git a/Applications/BCPL/SYNHDR b/Applications/BCPL/SYNHDR new file mode 100644 index 00000000..c98ab090 --- /dev/null +++ b/Applications/BCPL/SYNHDR @@ -0,0 +1,63 @@ +// $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 +$) diff --git a/Applications/BCPL/TRNHDR b/Applications/BCPL/TRNHDR new file mode 100644 index 00000000..ee751725 --- /dev/null +++ b/Applications/BCPL/TRNHDR @@ -0,0 +1,79 @@ +// $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 $) diff --git a/Applications/BCPL/cg.b b/Applications/BCPL/cg.b new file mode 100644 index 00000000..a7bdc991 --- /dev/null +++ b/Applications/BCPL/cg.b @@ -0,0 +1,526 @@ +// $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) $) diff --git a/Applications/BCPL/cg.i b/Applications/BCPL/cg.i new file mode 100644 index 00000000..ffa69f2f --- /dev/null +++ b/Applications/BCPL/cg.i @@ -0,0 +1,212 @@ +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 diff --git a/Applications/BCPL/examples/cgtest.b b/Applications/BCPL/examples/cgtest.b new file mode 100644 index 00000000..b1942b90 --- /dev/null +++ b/Applications/BCPL/examples/cgtest.b @@ -0,0 +1,310 @@ +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, #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(F21,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 + + diff --git a/Applications/BCPL/iclib.i b/Applications/BCPL/iclib.i new file mode 100644 index 00000000..242f2a45 --- /dev/null +++ b/Applications/BCPL/iclib.i @@ -0,0 +1,19 @@ +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 diff --git a/Applications/BCPL/syn.b b/Applications/BCPL/syn.b new file mode 100644 index 00000000..ae46a5c9 --- /dev/null +++ b/Applications/BCPL/syn.b @@ -0,0 +1,1108 @@ +// $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 diff --git a/Applications/BCPL/syn.i b/Applications/BCPL/syn.i new file mode 100644 index 00000000..e74b9e81 --- /dev/null +++ b/Applications/BCPL/syn.i @@ -0,0 +1,402 @@ +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 diff --git a/Applications/BCPL/trn.b b/Applications/BCPL/trn.b new file mode 100644 index 00000000..3e6ef83b --- /dev/null +++ b/Applications/BCPL/trn.b @@ -0,0 +1,940 @@ +// $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=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 T62 /\ CH='*S' DO + $( WRCH('*N'); OCOUNT := 0; RETURN $) + WRCH(CH) $) diff --git a/Applications/BCPL/trn.i b/Applications/BCPL/trn.i new file mode 100644 index 00000000..69a9bca2 --- /dev/null +++ b/Applications/BCPL/trn.i @@ -0,0 +1,341 @@ +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 -- 2.34.1