Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / mimc / compdec.mima
diff --git a/mim/development/mim/mimc/compdec.mima b/mim/development/mim/mimc/compdec.mima
new file mode 100644 (file)
index 0000000..722c3e8
--- /dev/null
@@ -0,0 +1,739 @@
+
+<PACKAGE "COMPDEC">
+
+<ENTRY CTLZ-PRINT RSUB-DEC TMPS-NEXT TMP-DEST NO-BQ EXTRA-CODE ALL-TEMPS-LIST MIM-OBL TMP-OBL DEATH HAIRY-ANALYSIS DEBUG-COMPILE CODE-START CODE-PTR FCNS TMPS IDT STYPES PLUSINF MINUSINF IPUT TEMPV DEBUGSW INSTRUCTION INTH FCN SNODES SNODES1 PSTACK DUMMY-MAPF INCONSISTENCY SEGS SPEC CODVEC QUOTE-CODE ADECL-CODE CALL-CODE APPLY-CODE RETURN-CODE IPUT-CODE SEG-CODE MULTI-RETURN-CODE PREDV SYM-SLOT STK STKTMP STK-CHARS7 STK-CHARS8 BINDING-LENGTH PARENT TYPE-INFO PROG-VARS CURRENT-TYPE NODE1 PUTR-CODE ISUBR-CODE EOF-CODE IREMAS-CODE GVAL-CODE SPARE4-CODE ADDVAR FSET-CODE OFFPTR PROG-CODE COMP-TYPES NODE-NAME AGND REQARGS DECL-SYM PUT-CODE FLVAL-CODE SETG-CODE BACK-CODE PUT-SAME-CODE RSUBR-DECLS NODEF AND-CODE MT-CODE BITS-CODE FPUTBITS-CODE COPY-LIST-CODE SPARE1-CODE ATAG ASSUM PURE-SYM NUM-SYM KID GNAME-SYM CHTYPE-CODE NODE SYMTAB GDECL-SYM MAP-CODE MARGS-CODE DATVAL NODE-SUBR LIVE-VARS SPEC-SYM AS-NXT-CODE SUBSTRUC-CODE BIT-TEST-CODE SPARE3-CODE NOT-CODE TEST-CODE MIN-MAX-CODE READ-EOF2-CODE KIDS PREDIC NODEPR NODEFM GNEXT-SYM FIX-CODE MFCN-CODE IRSUBR-CODE CASE-CODE SCL NODE-TYPE DEAD-VARS DEATH-LIST COMPOSIT-TYPE PRED COPY-CODE LENGTH?-CODE INIT-DECL-TYPE NODECOND FUNCTION-CODE AGAIN-CODE 0-TST-CODE FGETBITS-CODE MAPRET-STOP-CODE LSH-CODE SYMBOL NODEB SET-CODE ROT-CODE BINDING-STRUCTURE CDST VSPCD NAME-SYM INIT-SYM EQ-CODE ALL-REST-CODE DISPATCH DST RTAG ACCUM-TYPE DATUM ARGNUM-SYM ADDR-SYM USED-AT-ALL ARGNUM FGVAL-CODE ID-CODE FORM-F-CODE INFO-CODE TEMP CLAUSES TRG VARTBL LVARTBL SUBR-CODE LNTH-CODE ASSIGNED?-CODE GET2-CODE AS-IT-IND-VAL-CODE COMMON DATTYP RET-AGAIN-ONLY SEGMENT-CODE FSETG-CODE ISTRUC-CODE MFIRST-CODE CODE-SYM BST RSUBR-CODE 1?-CODE REST-CODE ABS-CODE MPSBR-CODE UNWIND-CODE PRINT-CODE OBLIST?-CODE STACKS ASS? BRANCH-CODE LVAL-CODE OR-CODE ISTRUC2-CODE READ-EOF-CODE MAPLEAVE-CODE MEMQ-CODE RESULT-TYPE SIDE-EFFECTS NEXT-SYM FORM-CODE TY?-CODE FLOAT-CODE GET-CODE SPECS-START RES-TYP BITL-CODE TOP-CODE SPARE2-CODE ACTIVATED TOTARGS VTB RQRG COND-CODE ARITH-CODE NTH-CODE MOD-CODE IND ALL NOTE WARNING PRIM-CODE CAREFUL REASONABLE DONT-CARE FLUSHED NO-RETURN NO-DATUM MESSAGE GROUP-NAME COMMON-TYPE COMMON-SYMTAB COMMON-ITEM COMMON-PRIMTYPE COMMON-DATUM COMMON-SYMT TRANSFORM TRANS N0? POPWR2 DEALLOCATE SRC-FLG BIN-FLG GLOSP ANALY-OK VERBOSE COMPILER INDARGL-ACT ARGL-IAUX ARGL-AUX ARGL-TUPLE ARGL-ARGS ARGL-QIOPT ARGL-IOPT ARGL-QOPT ARGL-OPT ARGL-CALL ARGL-BIND ARGL-QUOTE ARGL-ACT ARGL-ARG TAG-COUNT TEMP-NAME-SYM ARG-NAME-SYM ARGS-NEXT SPCS-X POP-STACK TOP-STACK TEMP-NAME TEMP-REFS TEMP-FRAME TEMP-ALLOC TEMP-NO-RECYCLE TEMP-TYPE FREE-TEMPS EVERY-TEMP MIM-SPECIAL MONAD-CODE GASSIGNED?-CODE GLN USAGE-SYM =?-STRING-CODE TYPE-C-CODE ANALYSIS VALID-CODE LIST-TUPLE FCN-ATOM STACK-CODE CHANNEL-OP-CODE RET-OR-AGAIN DONT-FLUSH-ME ATOM-PART-CODE OFFSET-PART-CODE PUT-GET-DECL-CODE THE-BOOL THE-BIT SPECD MULTI-SET-CODE MAX-LENGTH>
+
+<SETG MAX-LENGTH 65535>
+
+<MANIFEST MAX-LENGTH>
+
+<GDECL (SNODES SNODES1) <UVECTOR [REST FIX]>>
+
+<NEWTYPE STACK WORD>
+
+<BLOCK (<ROOT>)>
+
+<NEWTYPE I$TERMIN WORD>
+
+<NEWTYPE ADECL VECTOR>
+
+=
+
+LBIND
+
+<NEWTYPE T$UNBOUND WORD>
+
+<ENDBLOCK>
+
+<SETG DEATH <>>
+
+<SETG BQ+1 <+ <ASCII !\`> 1>>
+
+<COND (<OR <NOT <ASSIGNED? READ-TABLE>> <L? <LENGTH .READ-TABLE> ,BQ+1>> <COND (<==? <TYPEPRIM FIX> WORD> <SETG READ-TABLE <SET READ-TABLE <IVECTOR ,BQ+1 0>>>) (ELSE <SETG READ-TABLE <SET READ-TABLE <IVECTOR ,BQ+1 <>>>>)>)>
+
+<SETG MIM-OBL <MOBLIST MIM-OBL>>
+
+<SETG TMP-OBL <MOBLIST TMPS>>
+
+<SETG MIM-OBL-L (,MIM-OBL)>
+
+#WORD *17227751330*
+                   <GFCN \1aBQ-RD ("VALUE" ANY ANY "OPTIONAL" ANY) X6 Y7>
+                   <OPT-DISPATCH 1 %<> OPT4 OPT5>
+OPT4
+                   <PUSH #T$UNBOUND 0>
+OPT5
+                   <TEMP O8:LIST TEMP3:LBIND TEMP12 TEMP17:LBIND>
+                   <INTGO>
+                   <GEN-LVAL 'OBLIST = O8>
+                   <GETS 'BIND = TEMP3 (TYPE LBIND)>
+                   <GVAL 'MIM-OBL-L = TEMP12>
+                   <BBIND 'OBLIST 'ANY 'FIX TEMP12>
+                   <DEAD TEMP12>
+                   <FRAME '\1aREAD>
+                   <CALL '\1aREAD 0 = X6>
+                   <TYPE? X6 <TYPE-CODE ATOM> + PHRASE14 (DEAD-JUMP O8) (DEAD-FALL X6)>
+                   <GETS 'BIND = TEMP17 (TYPE LBIND)>
+                   <BBIND 'OBLIST 'ANY 'FIX O8>
+                   <DEAD O8>
+                   <FRAME '\1aERROR>
+                   <PUSH 'BAD-BACK-Q-USAGE!-ERRORS>
+                   <CALL '\1aERROR 1 = TEMP12>
+                   <UNBIND TEMP17>
+                   <DEAD TEMP17>
+                   <ADJ -9>
+                   <JUMP + PHRASE21>
+PHRASE14
+                   <SET TEMP12 X6>
+                   <DEAD X6>
+PHRASE21
+                   <UNBIND TEMP3>
+                   <DEAD TEMP3>
+                   <ADJ -9>
+                   <RETURN TEMP12>
+                   <DEAD TEMP12>
+                   <END \1aBQ-RD>
+
+<COND (<AND <==? <TYPEPRIM FIX> WORD> <N==? <NTH .READ-TABLE ,BQ+1> 0>> <PUT .READ-TABLE ,BQ+1 ,BQ-RD>) (<AND <==? <TYPEPRIM FIX> FIX> <NOT <NTH .READ-TABLE ,BQ+1>>> <PUT .READ-TABLE ,BQ+1 [!\` <ASCII !\`> T ,BQ-RD <>]>)>
+
+<SETG POP-STACK `STACK>
+
+<SETG TOP-STACK `STACK>
+
+<NEWTYPE FOOATOM ATOM>
+
+<NEWTYPE FCN-ATOM ATOM>
+
+<SETG OLD-ATOM <PRINTTYPE ATOM>>
+
+<PRINTTYPE ATOM ,PRINT>
+
+<PRINTTYPE FCN-ATOM>
+
+<PRINTTYPE FOOATOM ATOM>
+
+#WORD *27225372751*
+                   <FCN \1aATOM-PRINT ("VALUE" ANY ANY) X4>
+                   <TEMP TEMP3:LBIND TEMP6 TEMP9 TEMP47>
+                   <INTGO>
+                   <GETS 'BIND = TEMP3 (TYPE LBIND)>
+                   <CFRAME = TEMP6 (TYPE FRAME)>
+                   <BBIND 'ACT 'ANY 'FIX TEMP6>
+                   <DEAD TEMP6>
+                   <ACTIVATION>
+                   <NTHR X4 4 = TEMP6 (RECORD-TYPE ATOM)>
+                   <GVAL 'MIM-OBL = TEMP9>
+                   <EQUAL? TEMP6 TEMP9 - PHRASE8>
+                   <DEAD TEMP6 TEMP9>
+                   <GEN-ASSIGNED? 'NO-BQ - BOOL12>
+                   <GEN-LVAL 'NO-BQ = TEMP6>
+                   <TYPE? TEMP6 <TYPE-CODE FALSE> - PEEP68>
+                   <DEAD TEMP6>
+BOOL12
+                   <FRAME '\1aPRINC>
+                   <PUSH "`">
+                   <GEN-LVAL 'OUTCHAN = STACK>
+                   <CALL '\1aPRINC 2>
+                   <JUMP + PEEP68>
+PHRASE8
+                   <NTHR X4 4 = TEMP6 (RECORD-TYPE ATOM)>
+                   <GVAL 'TMP-OBL = TEMP9>
+                   <EQUAL? TEMP6 TEMP9 - PHRASE24>
+                   <DEAD TEMP6 TEMP9>
+PEEP68
+                   <FRAME '\1aPRINC>
+                   <NTHR X4 3 = STACK (RECORD-TYPE ATOM)>
+                   <JUMP + PEEP65>
+PHRASE24
+                   <NTHR 'ACT 2 = TEMP6 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP6 1 = TEMP6 (RECORD-TYPE LBIND)>
+                   <CHTYPE TEMP6 <TYPE-CODE FRAME> = TEMP6>
+                   <NTHR 'ACT 2 = TEMP9 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <PUTR TEMP9 1 TEMP6 (RECORD-TYPE LBIND)>
+                   <DEAD TEMP9 TEMP6>
+                   <LOOP>
+AGAIN37
+                   <INTGO>
+                   <FRAME '\1aFUNCT>
+                   <NTHR 'ACT 2 = TEMP9 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP9 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP9>
+                   <CALL '\1aFUNCT 1 = TEMP9>
+                   <SET TEMP6 [PRINT PPRINT PRIN1 TOPLEV PRINT-MANY FLATSIZE UNPARSE] (TYPE VECTOR)>
+                   <LOOP (TEMP9 VALUE) (TEMP6 LENGTH VALUE)>
+TAG41
+                   <NTHUV TEMP6 1 = TEMP47>
+                   <VEQUAL? TEMP47 TEMP9 + TAG40 (DEAD-JUMP TEMP9 TEMP6)>
+                   <DEAD TEMP47>
+                   <RESTUV TEMP6 1 = TEMP6 (TYPE VECTOR)>
+                   <EMPUV? TEMP6 - TAG41 (DEAD-FALL TEMP9 TEMP6)>
+                   <JUMP + PHRASE39>
+TAG40
+                   <FRAME '\1aPRIN1>
+                   <CHTYPE X4 <TYPE-CODE FOOATOM> = STACK>
+                   <GEN-LVAL 'OUTCHAN = STACK>
+                   <CALL '\1aPRIN1 2 = TEMP6 (DEAD-FALL X4)>
+                   <JUMP + PHRASE58>
+PHRASE39
+                   <FRAME '\1aFUNCT>
+                   <NTHR 'ACT 2 = TEMP9 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP9 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP9>
+                   <CALL '\1aFUNCT 1 = TEMP9>
+                   <VEQUAL? TEMP9 'PRINC - PHRASE51>
+                   <DEAD TEMP9>
+                   <FRAME '\1aPRINC>
+                   <CHTYPE X4 <TYPE-CODE FOOATOM> = STACK>
+PEEP65
+                   <GEN-LVAL 'OUTCHAN = STACK>
+                   <CALL '\1aPRINC 2 = TEMP6 (DEAD-FALL X4)>
+                   <JUMP + PHRASE58>
+PHRASE51
+                   <FRAME '\1aFRAME>
+                   <NTHR 'ACT 2 = TEMP47 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP47 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP47>
+                   <CALL '\1aFRAME 1 = TEMP47>
+                   <NTHR 'ACT 2 = TEMP6 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <PUTR TEMP6 1 TEMP47 (RECORD-TYPE LBIND)>
+                   <DEAD TEMP6 TEMP47>
+                   <JUMP + AGAIN37>
+PHRASE58
+                   <UNBIND TEMP3>
+                   <DEAD TEMP3>
+                   <ADJ -9>
+                   <RETURN TEMP6>
+                   <DEAD TEMP6>
+                   <END \1aATOM-PRINT>
+
+#WORD *16134143374*
+                   <FCN \1aFCN-ATOM-PRINT ("VALUE" ANY ANY) X4>
+                   <TEMP TEMP3:LBIND TEMP6 TEMP18 TEMP31>
+                   <INTGO>
+                   <GETS 'BIND = TEMP3 (TYPE LBIND)>
+                   <CFRAME = TEMP6 (TYPE FRAME)>
+                   <BBIND 'ACT 'ANY 'FIX TEMP6>
+                   <DEAD TEMP6>
+                   <ACTIVATION>
+                   <NTHR 'CTLZ-PRINT 1 = TEMP6 (RECORD-TYPE ATOM) (BRANCH-FALSE + PHRASE8) (DEAD-JUMP TEMP6)>
+                   <TYPE? TEMP6 <TYPE-CODE FALSE> + PHRASE8 (DEAD-JUMP TEMP6)>
+                   <NTHR TEMP6 1 = TEMP6 (RECORD-TYPE GBIND)>
+                   <TYPE? TEMP6 <TYPE-CODE UNBOUND> + PHRASE8>
+                   <DEAD TEMP6>
+                   <GVAL 'CTLZ-PRINT = TEMP6>
+                   <TYPE? TEMP6 <TYPE-CODE FALSE> + PHRASE8>
+                   <DEAD TEMP6>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\\1a>
+                   <GEN-LVAL 'OUTCHAN = STACK>
+                   <CALL '\1aPRINC 2>
+PHRASE8
+                   <NTHR 'ACT 2 = TEMP6 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP6 1 = TEMP6 (RECORD-TYPE LBIND)>
+                   <CHTYPE TEMP6 <TYPE-CODE FRAME> = TEMP6>
+                   <NTHR 'ACT 2 = TEMP18 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <PUTR TEMP18 1 TEMP6 (RECORD-TYPE LBIND)>
+                   <DEAD TEMP18 TEMP6>
+                   <LOOP>
+AGAIN20
+                   <INTGO>
+                   <FRAME '\1aFUNCT>
+                   <NTHR 'ACT 2 = TEMP6 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP6 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP6>
+                   <CALL '\1aFUNCT 1 = TEMP6>
+                   <SET TEMP18 [PRINT PPRINT PRIN1 TOPLEVEL FLATSIZE UNPARSE] (TYPE VECTOR)>
+                   <LOOP (TEMP6 VALUE) (TEMP18 LENGTH VALUE)>
+TAG24
+                   <NTHUV TEMP18 1 = TEMP31>
+                   <VEQUAL? TEMP31 TEMP6 + TAG23 (DEAD-JUMP TEMP18 TEMP6)>
+                   <DEAD TEMP31>
+                   <RESTUV TEMP18 1 = TEMP18 (TYPE VECTOR)>
+                   <EMPUV? TEMP18 - TAG24 (DEAD-FALL TEMP18 TEMP6)>
+                   <JUMP + PHRASE22>
+TAG23
+                   <FRAME '\1aPRIN1>
+                   <CHTYPE X4 <TYPE-CODE FOOATOM> = STACK>
+                   <GEN-LVAL 'OUTCHAN = STACK>
+                   <CALL '\1aPRIN1 2 = TEMP6 (DEAD-FALL X4)>
+                   <JUMP + PHRASE42>
+PHRASE22
+                   <FRAME '\1aFUNCT>
+                   <NTHR 'ACT 2 = TEMP6 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP6 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP6>
+                   <CALL '\1aFUNCT 1 = TEMP6>
+                   <VEQUAL? TEMP6 'PRINC - PHRASE35>
+                   <DEAD TEMP6>
+                   <FRAME '\1aPRINC>
+                   <CHTYPE X4 <TYPE-CODE FOOATOM> = STACK>
+                   <GEN-LVAL 'OUTCHAN = STACK>
+                   <CALL '\1aPRINC 2 = TEMP6 (DEAD-FALL X4)>
+                   <JUMP + PHRASE42>
+PHRASE35
+                   <FRAME '\1aFRAME>
+                   <NTHR 'ACT 2 = TEMP31 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP31 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP31>
+                   <CALL '\1aFRAME 1 = TEMP31>
+                   <NTHR 'ACT 2 = TEMP18 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <PUTR TEMP18 1 TEMP31 (RECORD-TYPE LBIND)>
+                   <DEAD TEMP18 TEMP31>
+                   <JUMP + AGAIN20>
+PHRASE42
+                   <UNBIND TEMP3>
+                   <DEAD TEMP3>
+                   <ADJ -9>
+                   <RETURN TEMP6>
+                   <DEAD TEMP6>
+                   <END \1aFCN-ATOM-PRINT>
+
+<COND (<==? ,OLD-ATOM ATOM> <PRINTTYPE ATOM ,ATOM-PRINT> <PRINTTYPE FCN-ATOM ,FCN-ATOM-PRINT>)>
+
+<PRINTTYPE STACK <FUNCTION (X) <PRINC "#STACK "> <PRIN1 <CHTYPE .X FIX>>>>
+
+<SETG PLUSINF <CHTYPE <MIN> FIX>>
+
+<SETG MINUSINF <CHTYPE <MAX> FIX>>
+
+"Type specification for NODE."
+
+<NEWTYPE NODE VECTOR '<<PRIMTYPE VECTOR> FIX ANY ANY ANY <LIST [REST NODE]> <OR FALSE ATOM> [OPTIONAL LIST ANY ANY LIST SYMTAB <OR FALSE ATOM> ANY ANY ANY ANY ANY LIST <OR FALSE LIST> FIX FIX]>>
+
+"Offsets into pass 1 structure entities and functions to create same."
+
+<SETG NODE-TYPE <OFFSET 1 NODE>>
+
+<SETG PARENT <OFFSET 2 NODE>>
+
+<SETG RESULT-TYPE <OFFSET 3 NODE>>
+
+<SETG NODE-NAME <OFFSET 4 NODE>>
+
+<SETG KIDS <OFFSET 5 NODE>>
+
+<SETG SEGS <OFFSET 6 NODE>>
+
+<SETG TYPE-INFO <OFFSET 7 NODE>>
+
+<SETG SIDE-EFFECTS <OFFSET 8 NODE>>
+
+<SETG RSUBR-DECLS <OFFSET 9 NODE>>
+
+<SETG BINDING-STRUCTURE <OFFSET 10 NODE>>
+
+<SETG SYMTAB <OFFSET 11 NODE>>
+
+<SETG ACTIVATED <OFFSET 12 NODE>>
+
+<SETG SPCS-X <OFFSET 13 NODE>>
+
+<SETG DST <OFFSET 14 NODE>>
+
+<SETG CDST <OFFSET 15 NODE>>
+
+<SETG ATAG <OFFSET 16 NODE>>
+
+<SETG RTAG <OFFSET 17 NODE>>
+
+<SETG ASSUM <OFFSET 18 NODE>>
+
+<SETG AGND <OFFSET 19 NODE>>
+
+<SETG TOTARGS <OFFSET 20 NODE>>
+
+<SETG REQARGS <OFFSET 21 NODE>>
+
+<SETG CLAUSES <OFFSET <1 ,KIDS> NODE>>
+
+<SETG NODE-SUBR <OFFSET <1 ,RSUBR-DECLS> NODE>>
+
+<SETG PREDIC <OFFSET <1 ,NODE-NAME> NODE>>
+
+<SETG ACCUM-TYPE <OFFSET <1 ,DST> NODE>>
+
+<SETG DEAD-VARS <OFFSET <1 ,CDST> NODE>>
+
+<SETG LIVE-VARS <OFFSET <1 ,TYPE-INFO> NODE>>
+
+<SETG VSPCD <OFFSET <1 ,ATAG> NODE>>
+
+<SETG INIT-DECL-TYPE <OFFSET <1 ,RTAG> NODE>>
+
+"      Definitions associated with compiler symbol tables."
+
+"Offsets for variable description blocks"
+
+<NEWTYPE TEMP VECTOR '!<<PRIMTYPE VECTOR> ATOM FIX ANY <OR ATOM FALSE> ANY ANY>>
+
+<NEWTYPE SYMTAB VECTOR '<<PRIMTYPE VECTOR> <PRIMTYPE VECTOR> ATOM <OR FALSE ATOM> FIX <OR ATOM FIX> <OR FALSE ATOM> <OR ATOM SEGMENT FORM> ANY ANY ANY <OR FALSE NODE> <OR FALSE 'T> FIX <OR FALSE 'T> <OR FALSE 'T> LIST ANY ANY ANY>>
+
+<SETG NEXT-SYM <OFFSET 1 SYMTAB>>
+
+<SETG NAME-SYM <OFFSET 2 SYMTAB>>
+
+<SETG SPEC-SYM <OFFSET 3 SYMTAB>>
+
+<SETG CODE-SYM <OFFSET 4 SYMTAB>>
+
+<SETG ARGNUM-SYM <OFFSET 5 SYMTAB>>
+
+<SETG PURE-SYM <OFFSET 6 SYMTAB>>
+
+<SETG DECL-SYM <OFFSET 7 SYMTAB>>
+
+<SETG ADDR-SYM <OFFSET 8 SYMTAB>>
+
+<SETG INIT-SYM <OFFSET 9 SYMTAB>>
+
+<SETG TEMP-NAME-SYM <OFFSET 10 SYMTAB>>
+
+<SETG RET-AGAIN-ONLY <OFFSET 11 SYMTAB>>
+
+<SETG ASS? <OFFSET 12 SYMTAB>>
+
+<SETG USAGE-SYM <OFFSET 13 SYMTAB>>
+
+'<SETG STORED <OFFSET 14 SYMTAB>>
+
+<SETG USED-AT-ALL <OFFSET 15 SYMTAB>>
+
+<SETG DEATH-LIST <OFFSET 16 SYMTAB>>
+
+<SETG CURRENT-TYPE <OFFSET 17 SYMTAB>>
+
+<SETG COMPOSIT-TYPE <OFFSET 18 SYMTAB>>
+
+<SETG ARG-NAME-SYM <OFFSET 19 SYMTAB>>
+
+"How a variable is used in a loop."
+
+#WORD *15631065707*
+                   <GFCN \1aNODE1 ("VALUE" NODE ANY ANY ANY ANY ANY) TYP4 PAR5 RES-TYP6 NAME7 KID8>
+                   <TEMP TEMP10>
+                   <INTGO>
+                   <PUSH TYP4>
+                   <DEAD TYP4>
+                   <PUSH PAR5>
+                   <DEAD PAR5>
+                   <PUSH RES-TYP6>
+                   <DEAD RES-TYP6>
+                   <PUSH NAME7>
+                   <DEAD NAME7>
+                   <PUSH KID8>
+                   <DEAD KID8>
+                   <PUSH %<>>
+                   <UBLOCK <TYPE-CODE VECTOR> 6 = TEMP10>
+                   <CHTYPE TEMP10 <TYPE-CODE NODE> = TEMP10>
+                   <RETURN TEMP10>
+                   <DEAD TEMP10>
+                   <END \1aNODE1>
+
+"Create a function node with all its hair."
+
+#WORD *23371000733*
+                   <GFCN \1aNODEF ("VALUE" NODE ANY ANY ANY ANY ANY ANY ANY ANY ANY ANY ANY) TYP4 PAR5 RES-TYP6 NAME7 KID8 RSD9 BST10 HAT11 VTB12 TRG13 RQRG14>
+                   <TEMP TEMP16>
+                   <INTGO>
+                   <PUSH TYP4>
+                   <DEAD TYP4>
+                   <PUSH PAR5>
+                   <DEAD PAR5>
+                   <PUSH RES-TYP6>
+                   <PUSH NAME7>
+                   <DEAD NAME7>
+                   <PUSH KID8>
+                   <DEAD KID8>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH RSD9>
+                   <DEAD RSD9>
+                   <PUSH BST10>
+                   <DEAD BST10>
+                   <PUSH VTB12>
+                   <DEAD VTB12>
+                   <PUSH %<>>
+                   <PUSH %<>>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH RES-TYP6>
+                   <DEAD RES-TYP6>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH TRG13>
+                   <DEAD TRG13>
+                   <PUSH RQRG14>
+                   <DEAD RQRG14>
+                   <UBLOCK <TYPE-CODE VECTOR> 21 = TEMP16>
+                   <CHTYPE TEMP16 <TYPE-CODE NODE> = TEMP16>
+                   <RETURN TEMP16>
+                   <DEAD TEMP16>
+                   <END \1aNODEF>
+
+"Create a PROG/REPEAT node with nearly as much hair."
+
+#WORD *11135071643*
+                   <GFCN \1aNODEPR ("VALUE" NODE ANY ANY ANY ANY ANY ANY ANY ANY ANY) TYP4 PAR5 RES-TYP6 NAME7 KID8 VL9 BST10 HAT11 VTB12>
+                   <TEMP TEMP14>
+                   <INTGO>
+                   <PUSH TYP4>
+                   <DEAD TYP4>
+                   <PUSH PAR5>
+                   <DEAD PAR5>
+                   <PUSH RES-TYP6>
+                   <PUSH NAME7>
+                   <DEAD NAME7>
+                   <PUSH KID8>
+                   <DEAD KID8>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH VL9>
+                   <DEAD VL9>
+                   <PUSH BST10>
+                   <DEAD BST10>
+                   <PUSH VTB12>
+                   <DEAD VTB12>
+                   <PUSH %<>>
+                   <PUSH %<>>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH RES-TYP6>
+                   <DEAD RES-TYP6>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <UBLOCK <TYPE-CODE VECTOR> 19 = TEMP14>
+                   <CHTYPE TEMP14 <TYPE-CODE NODE> = TEMP14>
+                   <RETURN TEMP14>
+                   <DEAD TEMP14>
+                   <END \1aNODEPR>
+
+"Create a COND node."
+
+#WORD *11170042227*
+                   <GFCN \1aNODECOND ("VALUE" NODE ANY ANY ANY ANY ANY) TYP4 PAR5 RES-TYP6 NAME7 CLAU8>
+                   <TEMP TEMP10>
+                   <INTGO>
+                   <PUSH TYP4>
+                   <DEAD TYP4>
+                   <PUSH PAR5>
+                   <DEAD PAR5>
+                   <PUSH RES-TYP6>
+                   <DEAD RES-TYP6>
+                   <PUSH NAME7>
+                   <DEAD NAME7>
+                   <PUSH CLAU8>
+                   <DEAD CLAU8>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <UBLOCK <TYPE-CODE VECTOR> 8 = TEMP10>
+                   <CHTYPE TEMP10 <TYPE-CODE NODE> = TEMP10>
+                   <RETURN TEMP10>
+                   <DEAD TEMP10>
+                   <END \1aNODECOND>
+
+"Create a node for a COND clause."
+
+#WORD *11751756122*
+                   <GFCN \1aNODEB ("VALUE" NODE ANY ANY ANY ANY ANY) TYP4 PAR5 RES-TYP6 PRED7 CLAU8>
+                   <TEMP TEMP10>
+                   <INTGO>
+                   <PUSH TYP4>
+                   <DEAD TYP4>
+                   <PUSH PAR5>
+                   <DEAD PAR5>
+                   <PUSH RES-TYP6>
+                   <DEAD RES-TYP6>
+                   <PUSH PRED7>
+                   <DEAD PRED7>
+                   <PUSH CLAU8>
+                   <DEAD CLAU8>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <UBLOCK <TYPE-CODE VECTOR> 8 = TEMP10>
+                   <CHTYPE TEMP10 <TYPE-CODE NODE> = TEMP10>
+                   <RETURN TEMP10>
+                   <DEAD TEMP10>
+                   <END \1aNODEB>
+
+"Create a node for a SUBR call etc."
+
+#WORD *33557455354*
+                   <GFCN \1aNODEFM ("VALUE" NODE ANY ANY ANY ANY ANY ANY) TYP4 PAR5 RES-TYP6 NAME7 KID8 SUB9>
+                   <TEMP TEMP11>
+                   <INTGO>
+                   <PUSH TYP4>
+                   <DEAD TYP4>
+                   <PUSH PAR5>
+                   <DEAD PAR5>
+                   <PUSH RES-TYP6>
+                   <DEAD RES-TYP6>
+                   <PUSH NAME7>
+                   <DEAD NAME7>
+                   <PUSH KID8>
+                   <DEAD KID8>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH SUB9>
+                   <DEAD SUB9>
+                   <UBLOCK <TYPE-CODE VECTOR> 9 = TEMP11>
+                   <CHTYPE TEMP11 <TYPE-CODE NODE> = TEMP11>
+                   <RETURN TEMP11>
+                   <DEAD TEMP11>
+                   <END \1aNODEFM>
+
+#WORD *30012051121*
+                   <GFCN \1aADDVAR ("VALUE" SYMTAB ANY ANY ANY ANY ANY ANY ANY ANY) NAM4 SPEC5 CODE6 ARGNUM7 PURE8 DCL9 ADDR10 INIT11>
+                   <TEMP TEMP13>
+                   <INTGO>
+                   <GEN-LVAL 'VARTBL = STACK>
+                   <PUSH NAM4>
+                   <PUSH SPEC5>
+                   <DEAD SPEC5>
+                   <PUSH CODE6>
+                   <DEAD CODE6>
+                   <PUSH ARGNUM7>
+                   <DEAD ARGNUM7>
+                   <PUSH PURE8>
+                   <DEAD PURE8>
+                   <PUSH DCL9>
+                   <DEAD DCL9>
+                   <PUSH ADDR10>
+                   <DEAD ADDR10>
+                   <PUSH INIT11>
+                   <DEAD INIT11>
+                   <PUSH NAM4>
+                   <DEAD NAM4>
+                   <PUSH %<>>
+                   <PUSH %<>>
+                   <PUSH 0>
+                   <PUSH 'T>
+                   <PUSH %<>>
+                   <PUSH ()>
+                   <PUSH %<>>
+                   <PUSH 'ANY>
+                   <PUSH 'FOO!-IPASS1!-PASS1!-PACKAGE>
+                   <UBLOCK <TYPE-CODE VECTOR> 19 = TEMP13>
+                   <CHTYPE TEMP13 <TYPE-CODE SYMTAB> = TEMP13>
+                   <GEN-SET 'VARTBL TEMP13>
+                   <RETURN TEMP13>
+                   <DEAD TEMP13>
+                   <END \1aADDVAR>
+
+"Some specialized decl stuff."
+
+<SETG LVARTBL <PROG ((VARTBL [])) #DECL ((VARTBL) <SPECIAL ANY>) <ADDVAR OBLIST T -1 0 T <OR LIST OBLIST> <> <>> <ADDVAR OUTCHAN T -1 0 T CHANNEL <> <>> <ADDVAR INCHAN T -1 0 T CHANNEL <> <>> .VARTBL>>
+
+<COND (<NOT ,MIM> <PUTPROP CHANNEL DECL '<CHANNEL FIX [11 ANY] [5 FIX]>>)>
+
+<COND (,MIM <PUT-DECL STRING '<<PRIMTYPE STRING> [REST CHARACTER]>>) (ELSE <PUTPROP STRING DECL '<<PRIMTYPE STRING> [REST CHARACTER]>>)>
+
+"Codes for the node types in the tree built by pass1 and modified by
+other passes."
+
+"Give symbolic codes arbitrary increasing values."
+
+<PROG ((N 1)) <SETG CODVEC <MAPF ,VECTOR <FUNCTION (ATM) <SETG .ATM .N> <SET N <+ .N 1>> .ATM> '[FUNCTION-CODE QUOTE-CODE SEGMENT-CODE FORM-CODE PROG-CODE SUBR-CODE COND-CODE BRANCH-CODE RSUBR-CODE LVAL-CODE SET-CODE OR-CODE AND-CODE RETURN-CODE COPY-CODE GO-CODE AGAIN-CODE ARITH-CODE 0-TST-CODE NOT-CODE 1?-CODE TEST-CODE EQ-CODE TY?-CODE LNTH-CODE MT-CODE NTH-CODE REST-CODE PUT-CODE PUTR-CODE FLVAL-CODE FSET-CODE FGVAL-CODE FSETG-CODE MIN-MAX-CODE STACKFORM-CODE CHTYPE-CODE ABS-CODE FIX-CODE FLOAT-CODE MOD-CODE ID-CODE ASSIGNED?-CODE ISTRUC-CODE ISTRUC2-CODE BITS-CODE BITL-CODE FGETBITS-CODE FPUTBITS-CODE MAP-CODE MFCN-CODE ISUBR-CODE READ-EOF-CODE READ-EOF2-CODE EOF-CODE GET-CODE GET2-CODE IPUT-CODE IREMAS-CODE IRSUBR-CODE MARGS-CODE MPSBR-CODE MAPLEAVE-CODE MAPRET-STOP-CODE UNWIND-CODE GVAL-CODE SETG-CODE SEG-CODE LENGTH?-CODE TAG-CODE MFIRST-CODE PRINT-CODE MEMQ-CODE FORM-F-CODE INFO-CODE OBLIST?-CODE AS-NXT-CODE AS-IT-IND-VAL-CODE ALL-REST-CODE CASE-CODE SUBSTRUC-CODE BACK-CODE TOP-CODE COPY-LIST-CODE PUT-SAME-CODE ROT-CODE LSH-CODE BIT-TEST-CODE ADECL-CODE CALL-CODE MONAD-CODE GASSIGNED?-CODE APPLY-CODE MULTI-RETURN-CODE =?-STRING-CODE TYPE-C-CODE VALID-CODE STACK-CODE CHANNEL-OP-CODE ATOM-PART-CODE OFFSET-PART-CODE PUT-GET-DECL-CODE MULTI-SET-CODE SPARE1-CODE SPARE2-CODE SPARE3-CODE SPARE4-CODE]>> <SETG COMP-TYPES .N>>
+
+<USE "NPRINT">
+
+"Build a dispatch table based on node types."
+
+#WORD *15575416236*
+                   <GFCN \1aDISPATCH ("VALUE" VECTOR ANY "TUPLE" <<PRIMTYPE VECTOR> [REST <LIST FIX ANY>]>) DEFAULT4>
+                   <MAKTUP PAIRS5 TEMP7 TT6:VECTOR TEMP16:FIX = PAIRS5>
+                   <INTGO>
+                   <UUBLOCK <TYPE-CODE VECTOR> 108 = TT6>
+                   <SET TEMP7 TT6>
+                   <LOOP (TEMP7 VALUE LENGTH) (DEFAULT4 TYPE VALUE LENGTH)>
+ISTR8
+                   <EMPUV? TEMP7 + ISTRE9 (DEAD-JUMP DEFAULT4 TEMP7)>
+                   <PUTUV TEMP7 1 DEFAULT4>
+                   <RESTUV TEMP7 1 = TEMP7>
+                   <JUMP + ISTR8>
+ISTRE9
+                   <LOOP>
+AGAIN13
+                   <INTGO>
+                   <EMPUV? PAIRS5 - PHRASE15 (DEAD-FALL PAIRS5)>
+                   <RETURN TT6>
+                   <DEAD TT6>
+PHRASE15
+                   <NTHUV PAIRS5 1 = TEMP7 (TYPE LIST)>
+                   <NTHL TEMP7 1 = TEMP16 (TYPE FIX)>
+                   <RESTL TEMP7 1 = TEMP7 (TYPE LIST)>
+                   <NTHL TEMP7 1 = TEMP7>
+                   <PUTUV TT6 TEMP16 TEMP7>
+                   <DEAD TEMP16 TEMP7>
+                   <RESTUV PAIRS5 1 = PAIRS5 (TYPE VECTOR)>
+                   <CHTYPE PAIRS5 <TYPE-CODE VECTOR> = PAIRS5>
+                   <JUMP + AGAIN13>
+                   <END \1aDISPATCH>
+
+<SETG PREDV <IUVECTOR ,COMP-TYPES 0>>
+
+<GDECL (PREDV) UVECTOR>
+
+<MAPF <> <FUNCTION (N) <PUT ,PREDV .N 1>> [,0-TST-CODE ,1?-CODE ,NOT-CODE ,TEST-CODE ,EQ-CODE ,TY?-CODE ,MT-CODE ,ASSIGNED?-CODE ,MEMQ-CODE ,LENGTH?-CODE ,OBLIST?-CODE ,AS-NXT-CODE ,BIT-TEST-CODE ,GASSIGNED?-CODE ,VALID-CODE ,=?-STRING-CODE]>
+
+<MAPF <> <FUNCTION (N) <PUT ,PREDV .N -1>> [,OR-CODE ,AND-CODE ,COND-CODE]>
+
+"Predicate:  does this type have special predicate code?"
+
+" Assign codes to differen types of argument in argument list"
+
+<PROG ((N 1)) <MAPF <> <FUNCTION (TYP) <SETG .TYP .N> <MANIFEST .TYP> <SET N <+ .N 1>>> '(ARGL-ACT ARGL-IAUX ARGL-AUX ARGL-TUPLE ARGL-ARGS ARGL-QIOPT ARGL-IOPT ARGL-QOPT ARGL-OPT ARGL-CALL ARGL-BIND ARGL-QUOTE ARGL-ARG)>>
+
+<COND (,MIM <PUT-DECL REP-STATE '<LIST [5 <LIST [REST SYMTAB DATUM <OR FALSE ATOM> <OR ATOM FALSE>]>]>>) (ELSE <PUTPROP REP-STATE DECL '<LIST [5 <LIST [REST SYMTAB DATUM <OR FALSE ATOM> <OR ATOM FALSE>]>]>>)>
+
+<COND (,MIM <PUT-DECL SYMBOL '<OR SYMTAB TEMP COMMON>>) (ELSE <PUTPROP SYMBOL DECL '<OR SYMTAB TEMP COMMON>>)>
+
+<SETG DATTYP <OFFSET 1 DATUM>>
+
+<SETG DATVAL <OFFSET 2 DATUM>>
+
+<NEWTYPE DATUM LIST '<<PRIMTYPE LIST> <OR ATOM <PRIMTYPE LIST> <PRIMTYPE VECTOR>> <OR ATOM <PRIMTYPE LIST> <PRIMTYPE VECTOR>>>>
+
+<NEWTYPE OFFPTR LIST '<<PRIMTYPE LIST> FIX DATUM ATOM>>
+
+<MANIFEST DATTYP DATVAL>
+
+<MAPF <> ,MANIFEST ,CODVEC>
+
+<MANIFEST USAGE-SYM TOT-MODES RESTS RMODES COMP-TYPES GDECL-SYM GNAME-SYM GNEXT-SYM INIT-SYM ADDR-SYM TOTARGS REQARGS DECL-SYM PURE-SYM ARGNUM-SYM CODE-SYM SPEC-SYM NAME-SYM TEMP-NAME-SYM ARG-NAME-SYM NEXT-SYM PREDIC NODE-SUBR CLAUSES ACTIVATED SYMTAB BINDING-STRUCTURE RSUBR-DECLS SEGS KIDS NODE-NAME RESULT-TYPE PARENT NODE-TYPE SIDE-EFFECTS RET-AGAIN-ONLY ASS? DST CDST ACCUM-TYPE INIT-DECL-TYPE VSPCD AGND ASSUM RTAG ATAG SPCS-X USED-AT-ALL CURRENT-TYPE DEATH-LIST COMPOSIT-TYPE TYPE-INFO LIVE-VARS DEAD-VARS>
+
+<NEWTYPE COMMON VECTOR '<<PRIMTYPE VECTOR> ATOM <OR COMMON SYMTAB> FIX ANY <PRIMTYPE LIST>>>
+
+<SETG COMMON-TYPE <OFFSET 1 COMMON>>
+
+"TYPE OF COMMON (ATOM)"
+
+<SETG COMMON-SYMT <OFFSET 2 COMMON>>
+
+"POINTER TO OR COMMON SYMTAB"
+
+<SETG COMMON-ITEM <OFFSET 3 COMMON>>
+
+"3RD ARGUMENT TO NTH,REST,PUT ETC."
+
+<SETG COMMON-PRIMTYPE <OFFSET 4 COMMON>>
+
+"PRIMTYPE OF OBJECT IN COMMON"
+
+<SETG COMMON-DATUM <OFFSET 5 COMMON>>
+
+"DATUM FOR THIS COMMON"
+
+<MANIFEST COMMON-TYPE COMMON-SYMTAB COMMON-ITEM COMMON-PRIMTYPE COMMON-DATUM>
+
+<NEWTYPE TRANS VECTOR '<<PRIMTYPE VECTOR> NODE <UVECTOR [7 FIX]> <UVECTOR [7 FIX]>>>
+
+<NEWTYPE MIM-SPECIAL ATOM>
+
+<SETG TEMP-NAME <OFFSET 1 TEMP>>
+
+<SETG TEMP-REFS <OFFSET 2 TEMP>>
+
+<SETG TEMP-FRAME <OFFSET 3 TEMP>>
+
+<SETG TEMP-ALLOC <OFFSET 4 TEMP>>
+
+<SETG TEMP-NO-RECYCLE <OFFSET 5 TEMP>>
+
+<SETG TEMP-TYPE <OFFSET 6 TEMP>>
+
+<MANIFEST TEMP-NAME TEMP-REFS TEMP-FRAME TEMP-ALLOC TEMP-NO-RECYCLE TEMP-TYPE>
+
+<COND (<N==? <TYPEPRIM FIX> FIX> <FLOAD "PS:<COMPIL>POPWR2.FBIN">)>
+
+<SETG BINDING-LENGTH 9>
+
+<MANIFEST BINDING-LENGTH>
+
+<ENDPACKAGE>