Files from TOPS-20 <mdl.comp>.
[pdp10-muddle.git] / <mdl.comp> / nn.mud.1
diff --git a/<mdl.comp>/nn.mud.1 b/<mdl.comp>/nn.mud.1
new file mode 100644 (file)
index 0000000..d3c1ccb
--- /dev/null
@@ -0,0 +1,332 @@
+
+<SET REASONABLE!- T>
+
+<SETG INSTRUCTION ,FORM>
+
+<NEWTYPE TRANS
+        VECTOR
+        '<<PRIMTYPE VECTOR> NODE
+                            <UVECTOR [7 FIX]>
+                            <UVECTOR [7 FIX]>>>
+<NEWTYPE IRSUBR LIST>
+
+<NEWTYPE NODE
+        VECTOR
+        '<VECTOR FIX
+                 ANY
+                 ANY
+                 ANY
+                 <LIST [REST NODE]>
+                 FIX
+                 <OR FALSE ATOM>
+                 [REST
+                  LIST
+                  ANY
+                  ANY
+                  LIST
+                  FIX
+                  SYMTAB
+                  FIX
+                  FIX
+                  <OR FALSE ATOM>
+                  ATOM
+                  ANY
+                  LIST
+                  LIST
+                  ANY
+                  ANY
+                  ANY
+                  ANY
+                  ANY
+                  ANY
+                  ANY
+                  <PRIMTYPE LIST>
+                  FIX
+                  FIX]>>
+
+"Offsets into pass 1 structure entities and functions to create same."
+
+<SETG NODE-TYPE 1>     ; "Code specifying the node type."
+<SETG PARENT 2>                ; "Pointer to parent node."
+<SETG RESULT-TYPE 3>   ; "Type expression for result returned by code
+                          generated by this node."
+<SETG NODE-NAME 4>     ; "Usually name of SUBR associated with  this node."
+<SETG KIDS 5>          ; "List of sub-nodes for this node."
+<SETG STACKS 6>                ; "Amount of stack needed by this node."
+<SETG SEGS 7>          ; "Predicate:  any segments among kids?"
+<SETG TYPE-INFO 8>     ; "Points to transient type info for this node."
+<SETG SIDE-EFFECTS 9>  ; "General info about side effects (format not yet firm.)"
+<SETG RSUBR-DECLS 10>  ; "Function only: final rsubr decls."
+<SETG BINDING-STRUCTURE 11>
+                       ; "Partially compiled arg list."
+<SETG SPECS-START 12>  ; "Offset to 1st special."
+<SETG SYMTAB 13>       ; "Pointer to local symbol table."
+<SETG SSLOTS 14>       ; "Number of specials."
+<SETG USLOTS 15>       ; "Number of unspecials."
+<SETG ACTIVATED 16>    ; "Predicate: any named activation?"
+<SETG TMPLS 17>                ; "Offset to unamed temps."
+<SETG PRE-ALLOC 18>    ; "Variable slots allocated in advance."
+<SETG STK-B 19>                ; "Base of stack at entry."
+<SETG BTP-B 20>                ; "Base of stack after bindings."
+<SETG SPCS-X 21>       ; "Predicate:  any specials bound?"
+<SETG DST 22>          ; "Destination spec for value of node."
+<SETG CDST 23>         ; "Current destination used."
+<SETG ATAG 24>         ; "Label for local againing."
+<SETG RTAG 25>         ; "Label for local Returning."
+<SETG ASSUM 26>                ; "Node type assumptions."
+<SETG AGND 27>         ; "Predicate:  Again possible?"
+<SETG ACS 28>          ; "Predicate:  AC call possible? (if not false
+                          ac structure)"
+<SETG TOTARGS 29>      ; "Total number of args (including optional)."
+<SETG REQARGS 30>      ; "Required arguemnts."
+
+<SETG CLAUSES ,KIDS>   ; "For COND clauses."
+
+<SETG NODE-SUBR ,RSUBR-DECLS>
+                       ; "For many nodes, the SUBR (not its name)."
+
+<SETG PREDIC ,NODE-NAME>; "For cond clause nodes, the predicate."
+
+<SETG ACCUM-TYPE ,DST> ; "Accumulated type from all returns etc."
+<SETG DEAD-VARS ,CDST>
+<SETG LIVE-VARS ,TYPE-INFO>
+<SETG VSPCD ,ATAG>
+<SETG INIT-DECL-TYPE ,RTAG>
+<SETG LOOP-VARS 31>
+
+"Variables kept in acs thru loop."
+
+<SETG AGAIN-STATES 32>
+
+"States at agains"
+
+<SETG RETURN-STATES 33>
+
+"States at repeats."
+
+<SETG PROG-VARS 34>
+
+"Vars handled in this prog/repeat."
+
+;"Information used for merging states with prog-nodes"
+<SETG USAGE-SYM 19>
+
+"How a variable is used in a loop."
+
+<NEWTYPE SYMTAB
+        VECTOR
+        '<VECTOR <PRIMTYPE VECTOR>
+                 ATOM
+                 <OR FALSE ATOM>
+                 FIX
+                 <OR ATOM FIX>
+                 <OR FALSE ATOM>
+                 LIST
+                 ANY
+                 ANY
+                 FIX
+                 <OR FALSE NODE>
+                 <OR FALSE 'T>
+                 <OR FALSE DATUM LIST>
+                 <OR FALSE 'T>
+                 <OR FALSE 'T>
+                 LIST
+                 ANY
+                 ANY>>
+
+
+<SETG NEXT-SYM 1>      ; "Pointer to next symbol table entry."
+<SETG NAME-SYM 2>      ; "Name of variable."
+<SETG SPEC-SYM 3>      ; "Predicate:  special?"
+<SETG CODE-SYM 4>      ; "Code specifying whether AUX, OPTIONAL etc."
+<SETG ARGNUM-SYM 5>    ; "If an argument, which one."
+<SETG PURE-SYM 6>      ; "Predicate:  unchanged in function?"
+<SETG DECL-SYM 7>      ; "Decl for this variable."
+<SETG ADDR-SYM 8>      ; "Where do I live?"
+<SETG INIT-SYM 9>      ; "Predicate:  initial value? if so what."
+<SETG FRMNO 10>                ; "ID of my frame."
+<SETG RET-AGAIN-ONLY 11>; "Predicate:  used only in AGAIN/RETURN?"
+<SETG ASS? 12>         ; "Predicate:  used in ASSIGNED?"
+<SETG INACS 13>                ; "Predicate:  currently in some AC?"
+<SETG STORED 14>       ; "Predicate:  stored in slot?"
+<SETG USED-AT-ALL 15>
+<SETG DEATH-LIST 16>
+<SETG CURRENT-TYPE 17>
+<SETG COMPOSIT-TYPE 18>
+<SETG PROG-AC ,CURRENT-TYPE>
+
+<SETG NUM-SYM ,COMPOSIT-TYPE>
+
+<SETG POTLV ,USED-AT-ALL>
+
+
+<SETG GNEXT-SYM 1>     ; "Next global symbol."
+<SETG GNAME-SYM 2>
+<SETG GDECL-SYM 3>
+
+<PUT CHANNEL DECL '<CHANNEL [12 ANY] [4 FIX]>>
+
+<PUT STRING DECL '<STRING [REST CHARACTER]>>
+
+<PUT OBLIST DECL '<UVECTOR [REST  <LIST [REST ATOM]>]>>
+
+<PROG ((N 1)) <SETG CODVEC <MAPF ,UVECTOR <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 GETBITS-CODE PUTBITS-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 SPARE1-CODE
+                   SPARE2-CODE
+                   SPARE3-CODE
+                   SPARE4-CODE!]>> <SETG COMP-TYPES .N>>
+
+<SETG PREDV <IUVECTOR ,COMP-TYPES 0>>
+
+<MAPF <> <FUNCTION (N) <PUT ,PREDV .N 1>> ![,0-TST-CODE ,1?-CODE ,NOT-CODE ,
+TEST-CODE ,EQ-CODE ,TY?-CODE ,MT-CODE ,OR-CODE ,AND-CODE ,ASSIGNED?-CODE ,
+ISUBR-CODE ,NTH-CODE ,MEMQ-CODE ,LENGTH?-CODE ,OBLIST?-CODE ,AS-NXT-CODE!]>
+
+<GDECL (REGS ATIME) FIX (ALLACS) <UVECTOR [5 AC] [REST AC]>
+       (ACO AC-A AC-B AC-C AC-D AC-E AC-F AC-G AC-H LAST-AC LAST-AC-1) AC>
+
+<SETG COMMON-DATUM 5>
+
+<MANIFEST TMPFRM TMPNO THOME TUSERS DATTYP DATVAL  ADDRSYM ACSYM ACLINK ACAGE
+         ACNUM ACPROT AC1SYM ACRESIDUE ACPREF ACINUSE TMPAC COMMON-DATUM
+         POTLV>
+
+<MAPF <> ,MANIFEST ,CODVEC>
+
+<MANIFEST TOT-MODES RESTS RMODES COMP-TYPES
+GDECL-SYM GNAME-SYM GNEXT-SYM FRMNO INIT-SYM ADDR-SYM TOTARGS REQARGS
+DECL-SYM PURE-SYM ARGNUM-SYM CODE-SYM SPEC-SYM NAME-SYM NEXT-SYM PREDIC 
+NODE-SUBR CLAUSES ACS TMPLS ACTIVATED USLOTS SSLOTS SYMTAB SPECS-START 
+BINDING-STRUCTURE RSUBR-DECLS SEGS STACKS KIDS NODE-NAME RESULT-TYPE PARENT 
+NODE-TYPE SIDE-EFFECTS RET-AGAIN-ONLY ASS? INACS STORED DST CDST ACCUM-TYPE
+INIT-DECL-TYPE VSPCD AGND ASSUM RTAG ATAG SPCS-X BTP-B STK-B PRE-ALLOC
+USED-AT-ALL CURRENT-TYPE DEATH-LIST COMPOSIT-TYPE AGAIN-STATES RETURN-STATES
+PROG-VARS LOOP-VARS PROG-AC NUM-SYM  TYPE-INFO USAGE-SYM LIVE-VARS
+DEAD-VARS> 
+
+<GDECL (DOITS) <UVECTOR [9 ANY]> (RDOIT SDOIT) <UVECTOR [7 ANY]>
+       (BANALS) <UVECTOR [13 ANY]> (ANALYZERS) VECTOR
+       (BINDERS) UVECTOR (GENERATORS) VECTOR> 
+
+
+
+
+<SETG DATTYP 1>
+<SETG DATVAL 2>
+
+<NEWTYPE TEMP VECTOR '<VECTOR SCL FIX>>
+
+<NEWTYPE SAVED-STATE
+        LIST
+        '<LIST [REST
+                <LIST AC
+                      <OR FALSE <LIST [REST SYMTAB]>>
+                      [REST <LIST SYMTAB ANY>]>]>>
+
+<SETG TMPNO 1>
+
+<SETG TUSERS 2>
+
+<SETG DATTYP 1>
+
+<SETG DATVAL 2>
+
+<SETG ADDRSYM 1>
+
+<SETG ACSYM 2>
+
+<SETG ACLINK 3>
+
+<SETG ACAGE 4>
+
+<SETG ACNUM 5>
+
+<SETG ACPROT 6>
+
+<SETG AC1SYM 7>
+
+<SETG ACRESIDUE 8>
+
+<SETG ACPREF 9>
+
+<SETG ACINUSE 10>
+
+<NEWTYPE AC
+        VECTOR
+        '<VECTOR <PRIMTYPE WORD>
+                 <PRIMTYPE WORD>
+                 <OR <LIST [REST DATUM]> FALSE>
+                 FIX
+                 FIX
+                 <OR FALSE ATOM>
+                 <PRIMTYPE WORD>
+                 <OR LIST FALSE>
+                 <OR FALSE ATOM>
+                 <OR FALSE ATOM>>>
+
+
+<NEWTYPE DATUM LIST '<<PRIMTYPE LIST>
+                          <OR ATOM <PRIMTYPE LIST> <PRIMTYPE VECTOR>>
+                          <OR ATOM <PRIMTYPE LIST> <PRIMTYPE VECTOR>>>>    
+
+<NEWTYPE OFFPTR LIST '<LIST FIX DATUM ATOM>> 
+
+<NEWTYPE ADDRESS:PAIR LIST>
+
+<SETG ALLACS
+      <MAPF ,UVECTOR
+           <FUNCTION (N1 N2 N N+1 NAME) 
+                   <SETG .NAME <CHTYPE [.N1 .N2 <> 0 .N <> .N+1 <> <> <>] AC>>>
+           ![`A `B `C `D `E!]
+           ![`A* `B* `C* `D* `E*!]
+           ![1 2 3 4 5!]
+           ![`B* `C* `D* `E* `PVP*!]
+           ![AC-A AC-B AC-C AC-D AC-E!]>>
+
+<COND (<NOT <GASSIGNED? DATUM>>
+       <SETG DATUM <RSUBR [#CODE ![] DATUM #DECL ("VALUE" DATUM ANY ANY)]>>)>
+
+<COND (<NOT <GASSIGNED? GEN>>
+       <SETG GEN <RSUBR [#CODE ![] GEN #DECL ("VALUE" DATUM NODE <OR ATOM DATUM>)]>>)>
+
+<COND (<NOT <GASSIGNED? GETREG>>
+       <SETG GETREG <RSUBR [#CODE ![] GETREG #DECL ("VALUE" AC ANY)]>>)>
+
+<COND (<NOT <GASSIGNED? SGETREG>>
+       <SETG SGETREG <RSUBR [#CODE ![] SGETREG #DECL ("VALUE" AC AC ANY)]>>)>
+
+<COND (<NOT <GASSIGNED? MINL>>
+       <SETG MINL <RSUBR [#CODE ![] MINL #DECL ("VALUE"FIX ANY)]>>)>
+
+<COND (<NOT <GASSIGNED? TOACV>>
+       <SETG TOACV <RSUBR [#CODE ![] TOACV #DECL ("VALUE" DATUM DATUM)]>>)>
+
+<COND (<NOT <GASSIGNED? TOACT>>
+       <SETG TOACT <RSUBR [#CODE ![] TOACT #DECL ("VALUE" DATUM DATUM)]>>)>
+
+<GDECL (INS1) UVECTOR
+(ASTATE) <UVECTOR [REST <UVECTOR [REST FIX]>]> (SNODES SNODES1) <UVECTOR [REST FIX]>
+(CMSUBRS 0SUBRS) <UVECTOR ATOM [REST ATOM]>
+(SKIPS) <UVECTOR [REST <LIST [REST <PRIMTYPE WORD>]>]>
+(0JMPS) <UVECTOR [REST <PRIMTYPE WORD>]>>
+
+
+\f\ 3\ 3
\ No newline at end of file