Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vaxc / opdefvax.mima
1
2 <MSETG BITS-PER-FIELD 8>
3
4 <MSETG FIELDS-PER-WORD 4>
5
6 <MSETG FIELDS-PER-OP <* ,FIELDS-PER-WORD 3>>
7
8 <MSETG WORDS-PER-OP 4>
9
10 <MSETG INIT-SHIFT <- <* ,BITS-PER-FIELD ,FIELDS-PER-WORD> ,BITS-PER-FIELD>>
11
12 <MSETG FIELD-MASK 255>
13
14 #WORD *652130037*
15                     <GFCN \1aDEFOP ("VALUE" <UVECTOR [REST FIX]> STRING FIX "TUPLE" <TUPLE [REST FIX]>) STR4 CODE5>
16                     <MAKTUP MODES6 (WD18 0) (SHFT9:FIX 24) TEMP12 TEMP16 = MODES6>
17                     <INTGO>
18                     <FRAME '\1aMSETG>
19                     <FRAME '\1aLOOKUP>
20                     <PUSH "INST-">
21                     <PUSH STR4>
22                     <UBLOCK <TYPE-CODE STRING> 2 = WD18 (TYPE STRING)>
23                     <PUSH WD18>
24                     <GVAL 'OP-OBLIST = STACK>
25                     <CALL '\1aLOOKUP 2 = TEMP12>
26                     <TYPE? TEMP12 <TYPE-CODE FALSE> - BOOL11>
27                     <FRAME '\1aINSERT>
28                     <PUSH WD18>
29                     <DEAD WD18>
30                     <GVAL 'OP-OBLIST = STACK>
31                     <CALL '\1aINSERT 2 = TEMP12>
32 BOOL11
33                     <PUSH TEMP12>
34                     <DEAD TEMP12>
35                     <PUSH CODE5>
36                     <CALL '\1aMSETG 2>
37                     <GVAL 'OP-VECTOR = TEMP12>
38                     <LSH CODE5 2 = TEMP16 (TYPE FIX)>
39                     <DEAD CODE5>
40                     <ADD TEMP16 1 = CODE5 (TYPE FIX)>
41                     <DEAD TEMP16>
42                     <FRAME '\1aSQUOZE>
43                     <PUSH STR4>
44                     <DEAD STR4>
45                     <CALL '\1aSQUOZE 1 = TEMP16>
46                     <PUTUU TEMP12 CODE5 TEMP16>
47                     <DEAD TEMP12 TEMP16>
48                     <LENUV MODES6 = TEMP16 (TYPE FIX)>
49                     <LSH TEMP16 SHFT9 = WD18 (TYPE FIX)>
50                     <DEAD TEMP16>
51                     <CHTYPE MODES6 <TYPE-CODE VECTOR> = TEMP16>
52                     <DEAD MODES6>
53                     <LOOP>
54 MAP19
55                     <INTGO>
56                     <EMPUV? TEMP16 + MAPAP22>
57                     <NTHUV TEMP16 1 = MODES6>
58                     <SUB SHFT9 8 = SHFT9 (TYPE FIX)>
59                     <LSH MODES6 SHFT9 = MODES6 (TYPE FIX)>
60                     <OR WD18 MODES6 = WD18>
61                     <DEAD MODES6>
62                     <VEQUAL? SHFT9 0 - PHRASE30 (TYPE FIX)>
63                     <SET SHFT9 32 (TYPE FIX)>
64                     <ADD CODE5 1 = MODES6 (TYPE FIX)>
65                     <GVAL 'OP-VECTOR = TEMP12>
66                     <PUTUU TEMP12 MODES6 WD18>
67                     <DEAD TEMP12 MODES6 WD18>
68                     <SET WD18 0 (TYPE FIX)>
69                     <ADD CODE5 1 = CODE5 (TYPE FIX)>
70 PHRASE30
71                     <RESTUV TEMP16 1 = TEMP16 (TYPE VECTOR)>
72                     <JUMP + MAP19>
73 MAPAP22
74                     <ADD CODE5 1 = SHFT9 (TYPE FIX)>
75                     <DEAD CODE5>
76                     <GVAL 'OP-VECTOR = TEMP12>
77                     <PUTUU TEMP12 SHFT9 WD18>
78                     <DEAD SHFT9 WD18>
79                     <RETURN TEMP12>
80                     <DEAD TEMP12>
81                     <END \1aDEFOP>
82
83 #WORD *3667656641*
84                     <GFCN \1aGET-INST-INFO ("VALUE" UVECTOR FIX) INST4>
85                     <TEMP TEMP5:UVECTOR TEMP6:FIX>
86                     <INTGO>
87                     <GVAL 'OP-VECTOR = TEMP5>
88                     <LSH INST4 2 = TEMP6 (TYPE FIX)>
89                     <DEAD INST4>
90                     <RESTUU TEMP5 TEMP6 = TEMP5 (TYPE UVECTOR)>
91                     <DEAD TEMP6>
92                     <RETURN TEMP5>
93                     <DEAD TEMP5>
94                     <END \1aGET-INST-INFO>
95
96 #WORD *30340160550*
97                     <GFCN \1aGET-OP-INFO ("VALUE" FIX FIX <UVECTOR [4 FIX]>) FNUM4 OP-INF5>
98                     <TEMP WD6:FIX TEMP11:FIX>
99                     <INTGO>
100                     <LESS? FNUM4 8 + PHRASE8 (TYPE FIX)>
101                     <SUB FNUM4 9 = FNUM4 (TYPE FIX)>
102                     <NTHUU OP-INF5 4 = WD6 (TYPE FIX)>
103                     <DEAD OP-INF5>
104                     <JUMP + PHRASE10>
105 PHRASE8
106                     <LESS? FNUM4 4 + PHRASE9 (TYPE FIX)>
107                     <SUB FNUM4 5 = FNUM4 (TYPE FIX)>
108                     <NTHUU OP-INF5 3 = WD6 (TYPE FIX)>
109                     <DEAD OP-INF5>
110                     <JUMP + PHRASE10>
111 PHRASE9
112                     <NTHUU OP-INF5 2 = WD6 (TYPE FIX)>
113                     <DEAD OP-INF5>
114                     <ADD FNUM4 1 = FNUM4 (TYPE FIX)>
115 PHRASE10
116                     <SUB FNUM4 4 = TEMP11 (TYPE FIX)>
117                     <DEAD FNUM4>
118                     <LSH TEMP11 3 = TEMP11 (TYPE FIX)>
119                     <LSH WD6 TEMP11 = TEMP11 (TYPE FIX)>
120                     <DEAD WD6>
121                     <AND TEMP11 #WORD *377* = TEMP11>
122                     <RETURN TEMP11>
123                     <DEAD TEMP11>
124                     <END \1aGET-OP-INFO>
125
126 #WORD *15664200714*
127                     <GFCN \1aADDRESS-MODES ("VALUE" <OR ATOM FALSE SPLICE> STRING STRING) MODES4 SIZES5>
128                     <TEMP (MODEN6:FIX 0) (SIZEN7:FIX 0) TEMP14:STRING MODE19:CHARACTER TEMP26 SIZE31 TEMP35>
129                     <INTGO>
130                     <SET TEMP14 MODES4 (TYPE STRING)>
131                     <DEAD MODES4>
132                     <LOOP>
133 MAP9
134                     <INTGO>
135                     <EMPUS? TEMP14 + MAPAP12>
136                     <NTHUS TEMP14 1 = MODE19>
137                     <SET SIZEN7 0 (TYPE FIX)>
138                     <SET TEMP26 SIZES5 (TYPE STRING)>
139                     <LOOP>
140 MAP21
141                     <INTGO>
142                     <EMPUS? TEMP26 + MAPAP24>
143                     <NTHUS TEMP26 1 = SIZE31>
144                     <FRAME '\1aMSETG>
145                     <FRAME '\1aLOOKUP>
146                     <PUSH "OP-">
147                     <PUSH MODE19>
148                     <PUSH SIZE31>
149                     <DEAD SIZE31>
150                     <UBLOCK <TYPE-CODE STRING> 3 = SIZE31 (TYPE STRING)>
151                     <PUSH SIZE31>
152                     <GVAL 'OP-OBLIST = STACK>
153                     <CALL '\1aLOOKUP 2 = TEMP35>
154                     <TYPE? TEMP35 <TYPE-CODE FALSE> - BOOL34>
155                     <FRAME '\1aINSERT>
156                     <PUSH SIZE31>
157                     <DEAD SIZE31>
158                     <GVAL 'OP-OBLIST = STACK>
159                     <CALL '\1aINSERT 2 = TEMP35>
160 BOOL34
161                     <PUSH TEMP35>
162                     <DEAD TEMP35>
163                     <LSH MODEN6 3 = TEMP35 (TYPE FIX)>
164                     <ADD TEMP35 SIZEN7 = STACK (TYPE FIX)>
165                     <DEAD TEMP35>
166                     <CALL '\1aMSETG 2>
167                     <ADD SIZEN7 1 = SIZEN7 (TYPE FIX)>
168                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
169                     <JUMP + MAP21>
170 MAPAP24
171                     <ADD MODEN6 1 = MODEN6 (TYPE FIX)>
172                     <RESTUS TEMP14 1 = TEMP14 (TYPE STRING)>
173                     <JUMP + MAP9>
174 MAPAP12
175                     <SET SIZEN7 -1 (TYPE FIX)>
176                     <SET TEMP26 %<> (TYPE FALSE)>
177                     <SET TEMP14 SIZES5 (TYPE STRING)>
178                     <DEAD SIZES5>
179                     <LOOP>
180 MAP40
181                     <INTGO>
182                     <EMPUS? TEMP14 + MAPAP43>
183                     <NTHUS TEMP14 1 = MODE19>
184                     <FRAME '\1aMSETG>
185                     <FRAME '\1aLOOKUP>
186                     <PUSH "SZ-">
187                     <PUSH MODE19>
188                     <DEAD MODE19>
189                     <UBLOCK <TYPE-CODE STRING> 2 = SIZE31 (TYPE STRING)>
190                     <PUSH SIZE31>
191                     <GVAL 'OP-OBLIST = STACK>
192                     <CALL '\1aLOOKUP 2 = TEMP26>
193                     <TYPE? TEMP26 <TYPE-CODE FALSE> - BOOL49>
194                     <FRAME '\1aINSERT>
195                     <PUSH SIZE31>
196                     <DEAD SIZE31>
197                     <GVAL 'OP-OBLIST = STACK>
198                     <CALL '\1aINSERT 2 = TEMP26>
199 BOOL49
200                     <PUSH TEMP26>
201                     <DEAD TEMP26>
202                     <ADD SIZEN7 1 = SIZEN7 (TYPE FIX)>
203                     <PUSH SIZEN7>
204                     <CALL '\1aMSETG 2 = TEMP26>
205                     <RESTUS TEMP14 1 = TEMP14 (TYPE STRING)>
206                     <JUMP + MAP40>
207 MAPAP43
208                     <RETURN TEMP26>
209                     <DEAD TEMP26>
210                     <END \1aADDRESS-MODES>
211
212 <SETG OP-OBLIST <OBLIST? DEFOP>>
213
214 #WORD *23007160617*
215                     <GFCN \1aINIT-OP-DEFS ("VALUE" <UVECTOR [REST FIX]>)>
216                     <TEMP TEMP4 TEMP5>
217                     <INTGO>
218                     <UUBLOCK <TYPE-CODE UVECTOR> 1024 = TEMP4>
219                     <SET TEMP5 TEMP4>
220                     <LOOP (TEMP5 VALUE LENGTH)>
221 ISTR6
222                     <EMPUU? TEMP5 + ISTRE7>
223                     <PUTUU TEMP5 1 0>
224                     <RESTUU TEMP5 1 = TEMP5>
225                     <JUMP + ISTR6>
226 ISTRE7
227                     <SETG 'OP-VECTOR TEMP4>
228                     <RETURN TEMP4>
229                     <DEAD TEMP4>
230                     <END \1aINIT-OP-DEFS>
231
232 <GDECL (OP-VECTOR) <UVECTOR [REST FIX]>>
233
234 <MSETG SQUOZE-MULF <* 40 40 40 40 40>>
235
236 #WORD *5377466631*
237                     <GFCN \1aSQUOZE ("VALUE" FIX STRING) STR4>
238                     <TEMP (VAL5:FIX 0) (COUNT6:FIX 6) (TC8:FIX 0) (MULF9:FIX 102400000) C7:CHARACTER>
239                     <INTGO>
240                     <LOOP>
241 AGAIN13
242                     <INTGO>
243                     <EMPUS? STR4 + BOOL16 (TYPE STRING)>
244                     <LESS? COUNT6 1 - PHRASE15 (TYPE FIX)>
245 BOOL16
246                     <RETURN VAL5>
247                     <DEAD VAL5>
248 PHRASE15
249                     <NTHUS STR4 1 = C7 (TYPE CHARACTER)>
250                     <CHTYPE C7 <TYPE-CODE FIX> = TC8>
251                     <RESTUS STR4 1 = STR4 (TYPE STRING)>
252                     <LESS? TC8 48 + PHRASE20 (TYPE FIX)>
253                     <GRTR? TC8 57 + PHRASE20 (TYPE FIX)>
254                     <SUB TC8 47 = TC8 (TYPE FIX)>
255                     <JUMP + PHRASE29>
256 PHRASE20
257                     <LESS? TC8 65 + PHRASE22 (TYPE FIX)>
258                     <GRTR? TC8 90 + PHRASE22 (TYPE FIX)>
259                     <SUB TC8 54 = TC8 (TYPE FIX)>
260                     <JUMP + PHRASE29>
261 PHRASE22
262                     <LESS? TC8 97 + PHRASE24 (TYPE FIX)>
263                     <GRTR? TC8 122 + PHRASE24 (TYPE FIX)>
264                     <SUB TC8 86 = TC8 (TYPE FIX)>
265                     <JUMP + PHRASE29>
266 PHRASE24
267                     <VEQUAL? C7 !\. - PHRASE26>
268                     <SET TC8 37 (TYPE FIX)>
269                     <JUMP + PHRASE29>
270 PHRASE26
271                     <VEQUAL? C7 !\$ - PHRASE27>
272                     <SET TC8 38 (TYPE FIX)>
273                     <JUMP + PHRASE29>
274 PHRASE27
275                     <VEQUAL? C7 !\% - AGAIN13>
276                     <DEAD C7>
277                     <SET TC8 39 (TYPE FIX)>
278 PHRASE29
279                     <SUB COUNT6 1 = COUNT6 (TYPE FIX)>
280                     <MUL TC8 MULF9 = TC8 (TYPE FIX)>
281                     <ADD TC8 VAL5 = VAL5 (TYPE FIX)>
282                     <DEAD TC8>
283                     <DIV MULF9 40 = MULF9 (TYPE FIX)>
284                     <JUMP + AGAIN13>
285                     <END \1aSQUOZE>
286
287 <MSETG SQUOZE-DIVF <* 40 40 40 40 40>>
288
289 #WORD *34675224432*
290                     <GFCN \1aPRINT-SQUOZE ("VALUE" ATOM FIX "OPTIONAL" CHANNEL) NUM6 OUTCHAN7>
291                     <OPT-DISPATCH 1 %<> OPT4 OPT5>
292 OPT4
293                     <PUSH #T$UNBOUND 0>
294 OPT5
295                     <TEMP TEMP3:LBIND TEMP11 (DIVF8:FIX 102400000) VAL17>
296                     <INTGO>
297                     <GETS 'BIND = TEMP3 (TYPE LBIND)>
298                     <TYPE? OUTCHAN7 <TYPE-CODE UNBOUND> - TAG9>
299                     <GEN-LVAL 'OUTCHAN = OUTCHAN7>
300 TAG9
301                     <BBIND 'OUTCHAN 'CHANNEL 'FIX OUTCHAN7>
302                     <DEAD OUTCHAN7>
303                     <FIXBIND>
304                     <LOOP>
305 AGAIN18
306                     <INTGO>
307                     <DIV NUM6 DIVF8 = TEMP11 (TYPE FIX)>
308                     <MOD TEMP11 40 = VAL17 (TYPE FIX)>
309                     <DEAD TEMP11>
310                     <LESS? NUM6 0 - PHRASE21 (TYPE FIX)>
311                     <GRTR? VAL17 0 - PHRASE21 (TYPE FIX)>
312                     <FRAME '\1a+>
313                     <PUSH VAL17>
314                     <DEAD VAL17>
315                     <PUSH 1>
316                     <CALL '\1a+ 2 = VAL17>
317                     <MUL VAL17 DIVF8 = TEMP11 (TYPE FIX)>
318                     <SUB NUM6 TEMP11 = NUM6 (TYPE FIX)>
319                     <DEAD TEMP11>
320 PHRASE21
321                     <VEQUAL? VAL17 0 - PHRASE29 (TYPE FIX)>
322                     <SET TEMP11 'T (TYPE ATOM)>
323                     <JUMP + EXIT15>
324 PHRASE29
325                     <GRTR? VAL17 10 - PHRASE32 (TYPE FIX)>
326                     <LESS? VAL17 37 - PHRASE32 (TYPE FIX)>
327                     <FRAME '\1aPRINC>
328                     <ADD VAL17 54 = TEMP11 (TYPE FIX)>
329                     <DEAD VAL17>
330                     <CHTYPE TEMP11 <TYPE-CODE CHARACTER> = STACK>
331                     <DEAD TEMP11>
332                     <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
333                     <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
334                     <DEAD TEMP11>
335                     <CALL '\1aPRINC 2>
336                     <JUMP + PHRASE49>
337 PHRASE32
338                     <GRTR? VAL17 10 + PHRASE37 (TYPE FIX)>
339                     <FRAME '\1aPRINC>
340                     <ADD VAL17 47 = TEMP11 (TYPE FIX)>
341                     <DEAD VAL17>
342                     <CHTYPE TEMP11 <TYPE-CODE CHARACTER> = STACK>
343                     <DEAD TEMP11>
344                     <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
345                     <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
346                     <DEAD TEMP11>
347                     <CALL '\1aPRINC 2>
348                     <JUMP + PHRASE49>
349 PHRASE37
350                     <VEQUAL? VAL17 37 - PHRASE41 (TYPE FIX)>
351                     <FRAME '\1aPRINC>
352                     <PUSH !\.>
353                     <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
354                     <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
355                     <DEAD TEMP11>
356                     <CALL '\1aPRINC 2>
357                     <JUMP + PHRASE49>
358 PHRASE41
359                     <VEQUAL? VAL17 38 - PHRASE45 (TYPE FIX)>
360                     <FRAME '\1aPRINC>
361                     <PUSH !\$>
362                     <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
363                     <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
364                     <DEAD TEMP11>
365                     <CALL '\1aPRINC 2>
366                     <JUMP + PHRASE49>
367 PHRASE45
368                     <VEQUAL? VAL17 39 - PHRASE49 (TYPE FIX)>
369                     <DEAD VAL17>
370                     <FRAME '\1aPRINC>
371                     <PUSH !\%>
372                     <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
373                     <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
374                     <DEAD TEMP11>
375                     <CALL '\1aPRINC 2>
376 PHRASE49
377                     <VEQUAL? DIVF8 1 - PHRASE54 (TYPE FIX)>
378                     <SET TEMP11 'T (TYPE ATOM)>
379                     <JUMP + EXIT15>
380 PHRASE54
381                     <DIV DIVF8 40 = DIVF8 (TYPE FIX)>
382                     <JUMP + AGAIN18>
383 EXIT15
384                     <UNBIND TEMP3>
385                     <DEAD TEMP3>
386                     <ADJ -9>
387                     <RETURN TEMP11>
388                     <DEAD TEMP11>
389                     <END \1aPRINT-SQUOZE>