Files from TOPS-20 <mdl.comp>.
[pdp10-muddle.git] / <mdl.comp> / nn.mud.1
1
2 <SET REASONABLE!- T>
3
4 <SETG INSTRUCTION ,FORM>
5
6 <NEWTYPE TRANS
7          VECTOR
8          '<<PRIMTYPE VECTOR> NODE
9                              <UVECTOR [7 FIX]>
10                              <UVECTOR [7 FIX]>>>
11 <NEWTYPE IRSUBR LIST>
12
13 <NEWTYPE NODE
14          VECTOR
15          '<VECTOR FIX
16                   ANY
17                   ANY
18                   ANY
19                   <LIST [REST NODE]>
20                   FIX
21                   <OR FALSE ATOM>
22                   [REST
23                    LIST
24                    ANY
25                    ANY
26                    LIST
27                    FIX
28                    SYMTAB
29                    FIX
30                    FIX
31                    <OR FALSE ATOM>
32                    ATOM
33                    ANY
34                    LIST
35                    LIST
36                    ANY
37                    ANY
38                    ANY
39                    ANY
40                    ANY
41                    ANY
42                    ANY
43                    <PRIMTYPE LIST>
44                    FIX
45                    FIX]>>
46
47 "Offsets into pass 1 structure entities and functions to create same."
48
49 <SETG NODE-TYPE 1>      ; "Code specifying the node type."
50 <SETG PARENT 2>         ; "Pointer to parent node."
51 <SETG RESULT-TYPE 3>    ; "Type expression for result returned by code
52                            generated by this node."
53 <SETG NODE-NAME 4>      ; "Usually name of SUBR associated with  this node."
54 <SETG KIDS 5>           ; "List of sub-nodes for this node."
55 <SETG STACKS 6>         ; "Amount of stack needed by this node."
56 <SETG SEGS 7>           ; "Predicate:  any segments among kids?"
57 <SETG TYPE-INFO 8>      ; "Points to transient type info for this node."
58 <SETG SIDE-EFFECTS 9>   ; "General info about side effects (format not yet firm.)"
59 <SETG RSUBR-DECLS 10>   ; "Function only: final rsubr decls."
60 <SETG BINDING-STRUCTURE 11>
61                         ; "Partially compiled arg list."
62 <SETG SPECS-START 12>   ; "Offset to 1st special."
63 <SETG SYMTAB 13>        ; "Pointer to local symbol table."
64 <SETG SSLOTS 14>        ; "Number of specials."
65 <SETG USLOTS 15>        ; "Number of unspecials."
66 <SETG ACTIVATED 16>     ; "Predicate: any named activation?"
67 <SETG TMPLS 17>         ; "Offset to unamed temps."
68 <SETG PRE-ALLOC 18>     ; "Variable slots allocated in advance."
69 <SETG STK-B 19>         ; "Base of stack at entry."
70 <SETG BTP-B 20>         ; "Base of stack after bindings."
71 <SETG SPCS-X 21>        ; "Predicate:  any specials bound?"
72 <SETG DST 22>           ; "Destination spec for value of node."
73 <SETG CDST 23>          ; "Current destination used."
74 <SETG ATAG 24>          ; "Label for local againing."
75 <SETG RTAG 25>          ; "Label for local Returning."
76 <SETG ASSUM 26>         ; "Node type assumptions."
77 <SETG AGND 27>          ; "Predicate:  Again possible?"
78 <SETG ACS 28>           ; "Predicate:  AC call possible? (if not false
79                            ac structure)"
80 <SETG TOTARGS 29>       ; "Total number of args (including optional)."
81 <SETG REQARGS 30>       ; "Required arguemnts."
82
83 <SETG CLAUSES ,KIDS>    ; "For COND clauses."
84
85 <SETG NODE-SUBR ,RSUBR-DECLS>
86                         ; "For many nodes, the SUBR (not its name)."
87
88 <SETG PREDIC ,NODE-NAME>; "For cond clause nodes, the predicate."
89
90 <SETG ACCUM-TYPE ,DST>  ; "Accumulated type from all returns etc."
91 <SETG DEAD-VARS ,CDST>
92 <SETG LIVE-VARS ,TYPE-INFO>
93 <SETG VSPCD ,ATAG>
94 <SETG INIT-DECL-TYPE ,RTAG>
95 <SETG LOOP-VARS 31>
96
97 "Variables kept in acs thru loop."
98
99 <SETG AGAIN-STATES 32>
100
101 "States at agains"
102
103 <SETG RETURN-STATES 33>
104
105 "States at repeats."
106
107 <SETG PROG-VARS 34>
108
109 "Vars handled in this prog/repeat."
110
111 ;"Information used for merging states with prog-nodes"
112 <SETG USAGE-SYM 19>
113
114 "How a variable is used in a loop."
115
116 <NEWTYPE SYMTAB
117          VECTOR
118          '<VECTOR <PRIMTYPE VECTOR>
119                   ATOM
120                   <OR FALSE ATOM>
121                   FIX
122                   <OR ATOM FIX>
123                   <OR FALSE ATOM>
124                   LIST
125                   ANY
126                   ANY
127                   FIX
128                   <OR FALSE NODE>
129                   <OR FALSE 'T>
130                   <OR FALSE DATUM LIST>
131                   <OR FALSE 'T>
132                   <OR FALSE 'T>
133                   LIST
134                   ANY
135                   ANY>>
136
137
138 <SETG NEXT-SYM 1>       ; "Pointer to next symbol table entry."
139 <SETG NAME-SYM 2>       ; "Name of variable."
140 <SETG SPEC-SYM 3>       ; "Predicate:  special?"
141 <SETG CODE-SYM 4>       ; "Code specifying whether AUX, OPTIONAL etc."
142 <SETG ARGNUM-SYM 5>     ; "If an argument, which one."
143 <SETG PURE-SYM 6>       ; "Predicate:  unchanged in function?"
144 <SETG DECL-SYM 7>       ; "Decl for this variable."
145 <SETG ADDR-SYM 8>       ; "Where do I live?"
146 <SETG INIT-SYM 9>       ; "Predicate:  initial value? if so what."
147 <SETG FRMNO 10>         ; "ID of my frame."
148 <SETG RET-AGAIN-ONLY 11>; "Predicate:  used only in AGAIN/RETURN?"
149 <SETG ASS? 12>          ; "Predicate:  used in ASSIGNED?"
150 <SETG INACS 13>         ; "Predicate:  currently in some AC?"
151 <SETG STORED 14>        ; "Predicate:  stored in slot?"
152 <SETG USED-AT-ALL 15>
153 <SETG DEATH-LIST 16>
154 <SETG CURRENT-TYPE 17>
155 <SETG COMPOSIT-TYPE 18>
156 <SETG PROG-AC ,CURRENT-TYPE>
157
158 <SETG NUM-SYM ,COMPOSIT-TYPE>
159
160 <SETG POTLV ,USED-AT-ALL>
161
162
163 <SETG GNEXT-SYM 1>      ; "Next global symbol."
164 <SETG GNAME-SYM 2>
165 <SETG GDECL-SYM 3>
166
167 <PUT CHANNEL DECL '<CHANNEL [12 ANY] [4 FIX]>>
168
169 <PUT STRING DECL '<STRING [REST CHARACTER]>>
170
171 <PUT OBLIST DECL '<UVECTOR [REST  <LIST [REST ATOM]>]>>
172
173 <PROG ((N 1)) <SETG CODVEC <MAPF ,UVECTOR <FUNCTION (ATM) <SETG .ATM .N> <SET N 
174 <+ .N 1>> .ATM> ![FUNCTION-CODE QUOTE-CODE SEGMENT-CODE FORM-CODE PROG-CODE 
175 SUBR-CODE COND-CODE BRANCH-CODE RSUBR-CODE LVAL-CODE SET-CODE OR-CODE AND-CODE 
176 RETURN-CODE COPY-CODE GO-CODE AGAIN-CODE ARITH-CODE 0-TST-CODE NOT-CODE 1?-CODE 
177 TEST-CODE EQ-CODE TY?-CODE LNTH-CODE MT-CODE NTH-CODE REST-CODE PUT-CODE 
178 PUTR-CODE FLVAL-CODE FSET-CODE FGVAL-CODE FSETG-CODE MIN-MAX-CODE STACKFORM-CODE
179 CHTYPE-CODE ABS-CODE FIX-CODE FLOAT-CODE MOD-CODE ID-CODE ASSIGNED?-CODE 
180 ISTRUC-CODE ISTRUC2-CODE BITS-CODE BITL-CODE GETBITS-CODE PUTBITS-CODE MAP-CODE 
181 MFCN-CODE ISUBR-CODE READ-EOF-CODE READ-EOF2-CODE EOF-CODE GET-CODE GET2-CODE 
182 IPUT-CODE IREMAS-CODE IRSUBR-CODE MARGS-CODE MPSBR-CODE MAPLEAVE-CODE 
183 MAPRET-STOP-CODE UNWIND-CODE GVAL-CODE SETG-CODE SEG-CODE LENGTH?-CODE TAG-CODE 
184 MFIRST-CODE PRINT-CODE MEMQ-CODE FORM-F-CODE INFO-CODE
185 OBLIST?-CODE AS-NXT-CODE AS-IT-IND-VAL-CODE
186                     ALL-REST-CODE
187                     CASE-CODE SUBSTRUC-CODE BACK-CODE TOP-CODE COPY-LIST-CODE 
188                     PUT-SAME-CODE ROT-CODE LSH-CODE BIT-TEST-CODE SPARE1-CODE
189                     SPARE2-CODE
190                     SPARE3-CODE
191                     SPARE4-CODE!]>> <SETG COMP-TYPES .N>>
192
193 <SETG PREDV <IUVECTOR ,COMP-TYPES 0>>
194
195 <MAPF <> <FUNCTION (N) <PUT ,PREDV .N 1>> ![,0-TST-CODE ,1?-CODE ,NOT-CODE ,
196 TEST-CODE ,EQ-CODE ,TY?-CODE ,MT-CODE ,OR-CODE ,AND-CODE ,ASSIGNED?-CODE ,
197 ISUBR-CODE ,NTH-CODE ,MEMQ-CODE ,LENGTH?-CODE ,OBLIST?-CODE ,AS-NXT-CODE!]>
198
199 <GDECL (REGS ATIME) FIX (ALLACS) <UVECTOR [5 AC] [REST AC]>
200        (ACO AC-A AC-B AC-C AC-D AC-E AC-F AC-G AC-H LAST-AC LAST-AC-1) AC>
201
202 <SETG COMMON-DATUM 5>
203
204 <MANIFEST TMPFRM TMPNO THOME TUSERS DATTYP DATVAL  ADDRSYM ACSYM ACLINK ACAGE
205           ACNUM ACPROT AC1SYM ACRESIDUE ACPREF ACINUSE TMPAC COMMON-DATUM
206           POTLV>
207
208 <MAPF <> ,MANIFEST ,CODVEC>
209
210 <MANIFEST TOT-MODES RESTS RMODES COMP-TYPES
211 GDECL-SYM GNAME-SYM GNEXT-SYM FRMNO INIT-SYM ADDR-SYM TOTARGS REQARGS
212 DECL-SYM PURE-SYM ARGNUM-SYM CODE-SYM SPEC-SYM NAME-SYM NEXT-SYM PREDIC 
213 NODE-SUBR CLAUSES ACS TMPLS ACTIVATED USLOTS SSLOTS SYMTAB SPECS-START 
214 BINDING-STRUCTURE RSUBR-DECLS SEGS STACKS KIDS NODE-NAME RESULT-TYPE PARENT 
215 NODE-TYPE SIDE-EFFECTS RET-AGAIN-ONLY ASS? INACS STORED DST CDST ACCUM-TYPE
216 INIT-DECL-TYPE VSPCD AGND ASSUM RTAG ATAG SPCS-X BTP-B STK-B PRE-ALLOC
217 USED-AT-ALL CURRENT-TYPE DEATH-LIST COMPOSIT-TYPE AGAIN-STATES RETURN-STATES
218 PROG-VARS LOOP-VARS PROG-AC NUM-SYM  TYPE-INFO USAGE-SYM LIVE-VARS
219 DEAD-VARS> 
220
221 <GDECL (DOITS) <UVECTOR [9 ANY]> (RDOIT SDOIT) <UVECTOR [7 ANY]>
222         (BANALS) <UVECTOR [13 ANY]> (ANALYZERS) VECTOR
223         (BINDERS) UVECTOR (GENERATORS) VECTOR> 
224
225
226
227
228  
229  
230 <SETG DATTYP 1>
231  
232 <SETG DATVAL 2>
233  
234
235 <NEWTYPE TEMP VECTOR '<VECTOR SCL FIX>>
236
237 <NEWTYPE SAVED-STATE
238          LIST
239          '<LIST [REST
240                  <LIST AC
241                        <OR FALSE <LIST [REST SYMTAB]>>
242                        [REST <LIST SYMTAB ANY>]>]>>
243
244 <SETG TMPNO 1>
245
246 <SETG TUSERS 2>
247
248 <SETG DATTYP 1>
249
250 <SETG DATVAL 2>
251
252 <SETG ADDRSYM 1>
253
254 <SETG ACSYM 2>
255
256 <SETG ACLINK 3>
257
258 <SETG ACAGE 4>
259
260 <SETG ACNUM 5>
261
262 <SETG ACPROT 6>
263
264 <SETG AC1SYM 7>
265
266 <SETG ACRESIDUE 8>
267
268 <SETG ACPREF 9>
269
270 <SETG ACINUSE 10>
271
272 <NEWTYPE AC
273          VECTOR
274          '<VECTOR <PRIMTYPE WORD>
275                   <PRIMTYPE WORD>
276                   <OR <LIST [REST DATUM]> FALSE>
277                   FIX
278                   FIX
279                   <OR FALSE ATOM>
280                   <PRIMTYPE WORD>
281                   <OR LIST FALSE>
282                   <OR FALSE ATOM>
283                   <OR FALSE ATOM>>>
284
285
286 <NEWTYPE DATUM LIST '<<PRIMTYPE LIST>
287                            <OR ATOM <PRIMTYPE LIST> <PRIMTYPE VECTOR>>
288                            <OR ATOM <PRIMTYPE LIST> <PRIMTYPE VECTOR>>>>    
289
290 <NEWTYPE OFFPTR LIST '<LIST FIX DATUM ATOM>> 
291
292 <NEWTYPE ADDRESS:PAIR LIST>
293
294 <SETG ALLACS
295       <MAPF ,UVECTOR
296             <FUNCTION (N1 N2 N N+1 NAME) 
297                     <SETG .NAME <CHTYPE [.N1 .N2 <> 0 .N <> .N+1 <> <> <>] AC>>>
298             ![`A `B `C `D `E!]
299             ![`A* `B* `C* `D* `E*!]
300             ![1 2 3 4 5!]
301             ![`B* `C* `D* `E* `PVP*!]
302             ![AC-A AC-B AC-C AC-D AC-E!]>>
303
304 <COND (<NOT <GASSIGNED? DATUM>>
305        <SETG DATUM <RSUBR [#CODE ![] DATUM #DECL ("VALUE" DATUM ANY ANY)]>>)>
306
307 <COND (<NOT <GASSIGNED? GEN>>
308        <SETG GEN <RSUBR [#CODE ![] GEN #DECL ("VALUE" DATUM NODE <OR ATOM DATUM>)]>>)>
309
310 <COND (<NOT <GASSIGNED? GETREG>>
311        <SETG GETREG <RSUBR [#CODE ![] GETREG #DECL ("VALUE" AC ANY)]>>)>
312
313 <COND (<NOT <GASSIGNED? SGETREG>>
314        <SETG SGETREG <RSUBR [#CODE ![] SGETREG #DECL ("VALUE" AC AC ANY)]>>)>
315
316 <COND (<NOT <GASSIGNED? MINL>>
317        <SETG MINL <RSUBR [#CODE ![] MINL #DECL ("VALUE"FIX ANY)]>>)>
318
319 <COND (<NOT <GASSIGNED? TOACV>>
320        <SETG TOACV <RSUBR [#CODE ![] TOACV #DECL ("VALUE" DATUM DATUM)]>>)>
321
322 <COND (<NOT <GASSIGNED? TOACT>>
323        <SETG TOACT <RSUBR [#CODE ![] TOACT #DECL ("VALUE" DATUM DATUM)]>>)>
324
325 <GDECL (INS1) UVECTOR
326 (ASTATE) <UVECTOR [REST <UVECTOR [REST FIX]>]> (SNODES SNODES1) <UVECTOR [REST FIX]>
327 (CMSUBRS 0SUBRS) <UVECTOR ATOM [REST ATOM]>
328 (SKIPS) <UVECTOR [REST <LIST [REST <PRIMTYPE WORD>]>]>
329 (0JMPS) <UVECTOR [REST <PRIMTYPE WORD>]>>
330
331
332 \f\ 3\ 3