Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / mimc / allr.mima
1
2 <PACKAGE "ALLR">
3
4 <ENTRY ALL-REST-GEN>
5
6 <USE "COMPDEC" "CODGEN" "CHKDCL" "STRGEN" "MIMGEN">
7
8 #WORD *13517536717*
9                     <GFCN \1aALL-REST-GEN ("VALUE" ANY NODE ANY) N4 W5>
10                     <TEMP TEMP19 TEMP20 R?6 NUM11 SS14:LIST STR10 SPARE12:TEMP>
11                     <INTGO>
12                     <NTHUV N4 9 = TEMP19>
13                     <GVAL 'REST = TEMP20>
14                     <EQUAL? TEMP19 TEMP20 - TAG18>
15                     <DEAD TEMP19 TEMP20>
16                     <SET R?6 'T (TYPE ATOM)>
17                     <JUMP + TAG21>
18 TAG18
19                     <SET R?6 %<> (TYPE FALSE)>
20 TAG21
21                     <NTHUV N4 5 = TEMP19 (TYPE LIST)>
22                     <NTHUV N4 7 = SS14 (TYPE LIST)>
23                     <DEAD N4>
24                     <FRAME '\1aGEN>
25                     <NTHL TEMP19 1 = STACK (TYPE NODE)>
26                     <DEAD TEMP19>
27                     <TYPE? W5 <TYPE-CODE TEMP> - PHRASE24>
28                     <SET TEMP20 W5>
29                     <JUMP + PHRASE27>
30 PHRASE24
31                     <RESTL SS14 1 = TEMP19 (TYPE LIST)>
32                     <RESTL TEMP19 1 = TEMP19 (TYPE LIST)>
33                     <NTHL TEMP19 1 = TEMP19 (TYPE LIST)>
34                     <EMPL? TEMP19 + PHRASE25 (TYPE LIST)>
35                     <DEAD TEMP19>
36                     <FRAME '\1aNTH>
37                     <RESTL SS14 1 = TEMP19 (TYPE LIST)>
38                     <RESTL TEMP19 1 = TEMP19 (TYPE LIST)>
39                     <NTHL TEMP19 1 = STACK>
40                     <DEAD TEMP19>
41                     <PUSH %<OFFSET 4 NODE>>
42                     <CALL '\1aNTH 2 = TEMP19>
43                     <NTHUV TEMP19 10 = TEMP20>
44                     <DEAD TEMP19>
45                     <JUMP + PHRASE27>
46 PHRASE25
47                     <SET TEMP20 'DONT-CARE (TYPE ATOM)>
48 PHRASE27
49                     <PUSH TEMP20>
50                     <DEAD TEMP20>
51                     <CALL '\1aGEN 2 = STR10>
52                     <TYPE? STR10 <TYPE-CODE TEMP> - BOOL30>
53                     <EQUAL? W5 STR10 + PHRASE29>
54                     <NTHUV STR10 2 = TEMP20 (TYPE FIX)>
55                     <GRTR? TEMP20 1 - PHRASE29 (TYPE FIX)>
56                     <DEAD TEMP20>
57 BOOL30
58                     <FRAME '\1aMOVE-ARG>
59                     <PUSH STR10>
60                     <DEAD STR10>
61                     <FRAME '\1aGEN-TEMP>
62                     <PUSH %<>>
63                     <CALL '\1aGEN-TEMP 1 = STACK>
64                     <CALL '\1aMOVE-ARG 2 = STR10>
65 PHRASE29
66                     <GEN-LVAL 'CAREFUL = TEMP20>
67                     <TYPE? TEMP20 <TYPE-CODE FALSE> + PHRASE37>
68                     <DEAD TEMP20>
69                     <FRAME '\1aEMPTY-CHECK>
70                     <PUSH 'LIST>
71                     <PUSH STR10>
72                     <PUSH 'LIST>
73                     <CALL '\1aEMPTY-CHECK 3>
74 PHRASE37
75                     <NTHL SS14 1 = TEMP20 (TYPE LIST)>
76                     <EMPL? TEMP20 - BOOL43 (TYPE LIST)>
77                     <DEAD TEMP20>
78                     <RESTL SS14 1 = TEMP20 (TYPE LIST)>
79                     <NTHL TEMP20 1 = TEMP20 (TYPE LIST)>
80                     <EMPL? TEMP20 + PHRASE42 (TYPE LIST)>
81                     <DEAD TEMP20>
82 BOOL43
83                     <FRAME '\1aSET-TEMP>
84                     <NTHL SS14 1 = TEMP20 (TYPE LIST)>
85                     <EMPL? TEMP20 + PHRASE46 (TYPE LIST)>
86                     <DEAD TEMP20>
87                     <NTHL SS14 1 = TEMP20 (TYPE LIST)>
88                     <NTHL TEMP20 1 = TEMP20 (TYPE NODE)>
89                     <NTHUV TEMP20 4 = TEMP20 (TYPE SYMTAB)>
90                     <NTHUV TEMP20 10 = NUM11>
91                     <DEAD TEMP20>
92                     <JUMP + PHRASE48>
93 PHRASE46
94                     <RESTL SS14 1 = TEMP20 (TYPE LIST)>
95                     <NTHL TEMP20 1 = TEMP20 (TYPE LIST)>
96                     <EMPL? TEMP20 + PHRASE47 (TYPE LIST)>
97                     <DEAD TEMP20>
98                     <RESTL SS14 1 = TEMP20 (TYPE LIST)>
99                     <NTHL TEMP20 1 = TEMP20 (TYPE LIST)>
100                     <NTHL TEMP20 1 = TEMP20 (TYPE NODE)>
101                     <NTHUV TEMP20 4 = TEMP20 (TYPE SYMTAB)>
102                     <NTHUV TEMP20 10 = NUM11>
103                     <DEAD TEMP20>
104                     <JUMP + PHRASE48>
105 PHRASE47
106                     <FRAME '\1aGEN-TEMP>
107                     <CALL '\1aGEN-TEMP 0 = NUM11>
108 PHRASE48
109                     <PUSH NUM11>
110                     <PUSH 0>
111                     <CALL '\1aSET-TEMP 2>
112 PHRASE42
113                     <TYPE? NUM11 <TYPE-CODE UNBOUND> + PHRASE51>
114                     <FRAME '\1aIEMIT>
115                     <PUSH '`LOOP>
116                     <CONS 'VALUE () = TEMP20>
117                     <GEN-LVAL 'MUM = TEMP19>
118                     <NTHUV TEMP19 1 = TEMP19 (TYPE ATOM)>
119                     <CONS TEMP19 TEMP20 = STACK>
120                     <DEAD TEMP19 TEMP20>
121                     <CONS 'VALUE () = TEMP20>
122                     <NTHUV STR10 1 = TEMP19 (TYPE ATOM)>
123                     <CONS TEMP19 TEMP20 = STACK>
124                     <DEAD TEMP19 TEMP20>
125                     <CALL '\1aIEMIT 3>
126                     <JUMP + PHRASE55>
127 PHRASE51
128                     <FRAME '\1aIEMIT>
129                     <PUSH '`LOOP>
130                     <CONS 'VALUE () = TEMP20>
131                     <NTHUV STR10 1 = TEMP19 (TYPE ATOM)>
132                     <CONS TEMP19 TEMP20 = STACK>
133                     <DEAD TEMP19 TEMP20>
134                     <CALL '\1aIEMIT 2>
135 PHRASE55
136                     <FRAME '\1aLABEL-TAG>
137                     <FRAME '\1aMAKE-TAG>
138                     <CALL '\1aMAKE-TAG 0 = TEMP19>
139                     <PUSH TEMP19>
140                     <CALL '\1aLABEL-TAG 1>
141                     <FRAME '\1aREST-LIST>
142                     <PUSH STR10>
143                     <FRAME '\1aGEN-TEMP>
144                     <CALL '\1aGEN-TEMP 0 = SPARE12>
145                     <PUSH SPARE12>
146                     <PUSH 1>
147                     <CALL '\1aREST-LIST 3>
148                     <FRAME '\1aEMPTY-LIST>
149                     <PUSH SPARE12>
150                     <FRAME '\1aMAKE-TAG>
151                     <CALL '\1aMAKE-TAG 0 = TEMP20>
152                     <PUSH TEMP20>
153                     <PUSH 'T>
154                     <CALL '\1aEMPTY-LIST 3>
155                     <FRAME '\1aSET-TEMP>
156                     <PUSH STR10>
157                     <PUSH SPARE12>
158                     <CALL '\1aSET-TEMP 2>
159                     <FRAME '\1aFREE-TEMP>
160                     <PUSH SPARE12>
161                     <DEAD SPARE12>
162                     <CALL '\1aFREE-TEMP 1>
163                     <TYPE? NUM11 <TYPE-CODE UNBOUND> + PHRASE66>
164                     <FRAME '\1aIEMIT>
165                     <PUSH '`ADD>
166                     <PUSH NUM11>
167                     <PUSH 1>
168                     <PUSH '=>
169                     <PUSH NUM11>
170                     <CALL '\1aIEMIT 5>
171 PHRASE66
172                     <FRAME '\1aBRANCH-TAG>
173                     <PUSH TEMP19>
174                     <DEAD TEMP19>
175                     <CALL '\1aBRANCH-TAG 1>
176                     <FRAME '\1aLABEL-TAG>
177                     <PUSH TEMP20>
178                     <DEAD TEMP20>
179                     <CALL '\1aLABEL-TAG 1>
180                     <FRAME '\1aMUNG-VALS>
181                     <PUSH STR10>
182                     <RESTL SS14 1 = TEMP20 (TYPE LIST)>
183                     <RESTL TEMP20 1 = TEMP20 (TYPE LIST)>
184                     <NTHL TEMP20 1 = STACK (TYPE LIST)>
185                     <DEAD TEMP20>
186                     <CALL '\1aMUNG-VALS 2>
187                     <TYPE? NUM11 <TYPE-CODE UNBOUND> + PHRASE72>
188                     <FRAME '\1aMUNG-VALS>
189                     <PUSH NUM11>
190                     <NTHL SS14 1 = STACK (TYPE LIST)>
191                     <CALL '\1aMUNG-VALS 2>
192                     <RESTL SS14 1 = TEMP20 (TYPE LIST)>
193                     <NTHL TEMP20 1 = TEMP20 (TYPE LIST)>
194                     <EMPL? TEMP20 + PHRASE75 (TYPE LIST)>
195                     <DEAD TEMP20>
196                     <NTHL SS14 1 = TEMP20 (TYPE LIST)>
197                     <EMPL? TEMP20 + PHRASE75 (TYPE LIST)>
198                     <DEAD TEMP20>
199                     <FRAME '\1aIEMIT>
200                     <PUSH '`ADD>
201                     <PUSH NUM11>
202                     <PUSH 1>
203                     <PUSH '=>
204                     <PUSH NUM11>
205                     <CALL '\1aIEMIT 5>
206 PHRASE75
207                     <FRAME '\1aMUNG-VALS>
208                     <PUSH NUM11>
209                     <DEAD NUM11>
210                     <RESTL SS14 1 = TEMP20 (TYPE LIST)>
211                     <DEAD SS14>
212                     <NTHL TEMP20 1 = STACK (TYPE LIST)>
213                     <DEAD TEMP20>
214                     <CALL '\1aMUNG-VALS 2>
215 PHRASE72
216                     <VEQUAL? R?6 0 + PHRASE80>
217                     <DEAD R?6>
218                     <FRAME '\1aMOVE-ARG>
219                     <PUSH STR10>
220                     <DEAD STR10>
221                     <PUSH W5>
222                     <DEAD W5>
223                     <CALL '\1aMOVE-ARG 2 = TEMP20>
224                     <RETURN TEMP20>
225                     <DEAD TEMP20>
226 PHRASE80
227                     <EQUAL? W5 'DONT-CARE - PHRASE84>
228                     <FRAME '\1aGEN-TEMP>
229                     <CALL '\1aGEN-TEMP 0 = W5>
230                     <JUMP + PHRASE86>
231 PHRASE84
232                     <TYPE? W5 <TYPE-CODE TEMP> - PHRASE86>
233                     <FRAME '\1aUSE-TEMP>
234                     <PUSH W5>
235                     <CALL '\1aUSE-TEMP 1>
236 PHRASE86
237                     <FRAME '\1aNTH-LIST>
238                     <PUSH STR10>
239                     <PUSH W5>
240                     <PUSH 1>
241                     <CALL '\1aNTH-LIST 3>
242                     <FRAME '\1aFREE-TEMP>
243                     <PUSH STR10>
244                     <DEAD STR10>
245                     <CALL '\1aFREE-TEMP 1>
246                     <RETURN W5>
247                     <DEAD W5>
248                     <END \1aALL-REST-GEN>
249
250 #WORD *23751654021*
251                     <GFCN \1aMUNG-VALS ("VALUE" <OR FALSE TEMP> ANY <LIST [REST NODE]>) D4 L5>
252                     <TEMP TEMP15 TEMP12:LIST TEMP22>
253                     <INTGO>
254                     <SET TEMP15 %<> (TYPE FALSE)>
255                     <SET TEMP12 L5 (TYPE LIST)>
256                     <DEAD L5>
257                     <LOOP>
258 MAP7
259                     <INTGO>
260                     <EMPL? TEMP12 + MAPAP10>
261                     <NTHL TEMP12 1 = TEMP15>
262                     <NTHUV TEMP15 4 = TEMP15 (TYPE SYMTAB)>
263                     <NTHUV TEMP15 10 = TEMP22>
264                     <EQUAL? TEMP22 D4 - TAG21>
265                     <DEAD TEMP22>
266                     <SET TEMP15 %<> (TYPE FALSE)>
267                     <JUMP + PHRASE20>
268 TAG21
269                     <FRAME '\1aSET-SYM>
270                     <PUSH TEMP15>
271                     <DEAD TEMP15>
272                     <PUSH D4>
273                     <CALL '\1aSET-SYM 2 = TEMP15>
274 PHRASE20
275                     <RESTL TEMP12 1 = TEMP12 (TYPE LIST)>
276                     <JUMP + MAP7>
277 MAPAP10
278                     <RETURN TEMP15>
279                     <DEAD TEMP15>
280                     <END \1aMUNG-VALS>
281
282 <ENDPACKAGE>