3 <GFCN
\1aINIT-RECORD-DEFS ("VALUE" <LIST [REST RECORD-DESCRIPTOR]>)>
6 <SETG 'RECORD-TABLE ()>
8 <END
\1aINIT-RECORD-DEFS>
11 <GFCN
\1aDEFINE-RECORD ("VALUE" <LIST [REST RECORD-DESCRIPTOR]> ANY ANY "TUPLE" ANY) TYP4 STACK5>
12 <MAKTUP ELEMENTS6 TEMP11 = ELEMENTS6>
14 <SET TEMP11 0 (TYPE FIX)>
15 <LOOP (ELEMENTS6 VALUE LENGTH) (TEMP11 VALUE)>
18 <EMPUV? ELEMENTS6 + TAG9>
19 <NTHUV ELEMENTS6 1 = STACK>
20 <RESTUV ELEMENTS6 1 = ELEMENTS6 (TYPE VECTOR)>
21 <ADD TEMP11 1 = TEMP11 (TYPE FIX)>
24 <LIST TEMP11 = ELEMENTS6 (TYPE LIST)>
32 <UBLOCK <TYPE-CODE VECTOR> 3 = TEMP11 (TYPE VECTOR)>
33 <CHTYPE TEMP11 <TYPE-CODE RECORD-DESCRIPTOR> = ELEMENTS6>
35 <GVAL 'RECORD-TABLE = TEMP11>
36 <CONS ELEMENTS6 TEMP11 = TEMP11>
38 <SETG 'RECORD-TABLE TEMP11>
41 <END
\1aDEFINE-RECORD>
44 <GFCN
\1aPARSE-RED ("VALUE" RECORD-ELEMENT-DESCRIPTOR ATOM FIX "OPTIONAL" FIX <OR FALSE FIX> BOOLEAN) TYP8 OFFSET9 ALTOFF10 LEN?11 SBOOL?12>
45 <OPT-DISPATCH 2 %<> OPT4 OPT5 OPT6 OPT7>
53 <TEMP RES13:VECTOR TEMP26 TEMP31 TEMP32>
55 <VEQUAL? TYP8 'ANY - PHRASE15>
65 <UBLOCK <TYPE-CODE VECTOR> 7 = RES13 (TYPE VECTOR)>
68 <VEQUAL? TYP8 'BYTE + BOOL18>
69 <VEQUAL? TYP8 'SMALL-INT + BOOL18>
70 <VEQUAL? TYP8 'SMALL-POS-INT + BOOL18>
71 <VEQUAL? TYP8 'SMALL-FR-OFFSET - PHRASE17>
82 <UBLOCK <TYPE-CODE VECTOR> 7 = RES13 (TYPE VECTOR)>
85 <VEQUAL? TYP8 'BOOLEAN - PHRASE20>
95 <UBLOCK <TYPE-CODE VECTOR> 7 = RES13 (TYPE VECTOR)>
98 <VEQUAL? TYP8 'TYPE-C - PHRASE22>
109 <UBLOCK <TYPE-CODE VECTOR> 7 = RES13 (TYPE VECTOR)>
112 <NTHR TYP8 5 = TEMP26 (RECORD-TYPE ATOM) (BRANCH-FALSE + PHRASE24)>
113 <TYPE? TEMP26 <TYPE-CODE FALSE> + PHRASE24>
117 <CALL '
\1aTYPEPRIM 1 = TEMP26>
118 <SET TEMP31 [VECTOR STRING UVECTOR BYTES] (TYPE VECTOR)>
119 <TYPE? TEMP26 <TYPE-CODE ATOM> - PHRASE24>
120 <LOOP (TEMP26 VALUE) (TEMP31 LENGTH VALUE)>
122 <NTHUV TEMP31 1 = TEMP32>
123 <VEQUAL? TEMP32 TEMP26 + TAG27>
125 <RESTUV TEMP31 1 = TEMP31 (TYPE VECTOR)>
126 <EMPUV? TEMP31 - TAG28>
129 <TYPE? LEN?11 <TYPE-CODE FALSE> - PHRASE24>
141 <UBLOCK <TYPE-CODE VECTOR> 7 = RES13 (TYPE VECTOR)>
144 <TYPE? LEN?11 <TYPE-CODE FALSE> - BOOL35>
145 <SET TEMP31 [ATOM LBIND T$MSUBR GBIND FRAME OBLIST] (TYPE VECTOR)>
146 <LOOP (TYP8 VALUE) (TEMP31 LENGTH VALUE)>
148 <NTHUV TEMP31 1 = TEMP26>
149 <VEQUAL? TEMP26 TYP8 + BOOL35>
151 <RESTUV TEMP31 1 = TEMP31 (TYPE VECTOR)>
152 <EMPUV? TEMP31 - TAG37>
155 <CALL '
\1aTYPEPRIM 1 = TEMP31>
156 <EQUAL? TEMP31 'LIST + BOOL35>
160 <CALL '
\1aTYPEPRIM 1 = TEMP31>
161 <EQUAL? TEMP31 'FIX - PHRASE34>
175 <UBLOCK <TYPE-CODE VECTOR> 7 = RES13 (TYPE VECTOR)>
177 <CHTYPE RES13 <TYPE-CODE RECORD-ELEMENT-DESCRIPTOR> = TEMP31>
184 <GFCN
\1aGET-RELE-DESCRIPTOR ("VALUE" <OR FALSE RECORD-ELEMENT-DESCRIPTOR> FIX <OR ATOM HINT>) NUM4 HINT5>
185 <TEMP RTYP6 TEMP20 TEMP22:LIST ELE23:RECORD-DESCRIPTOR TEMP30 TEMP31 TEMP37>
187 <TYPE? HINT5 <TYPE-CODE ATOM> - PHRASE9>
192 <FRAME '
\1aPARSE-HINT>
196 <CALL '
\1aPARSE-HINT 2 = RTYP6>
198 <SET TEMP20 %<> (TYPE FALSE)>
199 <GVAL 'RECORD-TABLE = TEMP22>
203 <EMPL? TEMP22 + MAPAP15>
204 <NTHL TEMP22 1 = ELE23>
205 <NTHUV ELE23 1 = TEMP20 (TYPE VECTOR)>
207 <TYPE? RTYP6 <TYPE-CODE ATOM> - TAG27>
208 <EMPUV? TEMP30 + TAG27>
209 <LOOP (RTYP6 VALUE) (TEMP30 LENGTH VALUE)>
211 <NTHUV TEMP30 1 = TEMP31>
212 <VEQUAL? TEMP31 RTYP6 + TAG33>
214 <RESTUV TEMP30 1 = TEMP30 (TYPE VECTOR)>
215 <EMPUV? TEMP30 - TAG28>
217 <FRAME '
\1aCLEAN-DECL>
219 <CALL '
\1aCLEAN-DECL 1 = TEMP30>
220 <TYPE TEMP30 = TEMP31>
221 <EMPUV? TEMP20 + TAG32>
222 <LOOP (TEMP30 VALUE) (TEMP31 VALUE) (TEMP20 LENGTH VALUE)>
224 <NTHUV TEMP20 1 = TEMP37>
225 <TYPE? TEMP37 TEMP31 - TAG35>
226 <VEQUAL? TEMP37 TEMP30 + TAG33>
229 <RESTUV TEMP20 1 = TEMP20 (TYPE VECTOR)>
230 <EMPUV? TEMP20 - TAG34>
232 <SET TEMP20 %<> (TYPE FALSE)>
235 <NTHUV ELE23 2 = TEMP30 (TYPE LIST)>
239 <SUB TEMP37 1 = TEMP37 (TYPE FIX)>
240 <GRTR? TEMP37 0 - RESTL39 (TYPE FIX)>
241 <LOOP (TEMP30 VALUE) (TEMP37 VALUE)>
244 <RESTL TEMP30 1 = TEMP30 (TYPE LIST)>
245 <SUB TEMP37 1 = TEMP37 (TYPE FIX)>
246 <GRTR? TEMP37 0 + RESTL38 (TYPE FIX)>
248 <NTHL TEMP30 1 = TEMP20 (TYPE RECORD-ELEMENT-DESCRIPTOR)>
253 <RESTL TEMP22 1 = TEMP22 (TYPE LIST)>
258 <END
\1aGET-RELE-DESCRIPTOR>
261 <GFCN
\1aGET-RSTACK? ("VALUE" <OR ATOM FALSE> <OR ATOM HINT>) HINT4>
262 <TEMP RTYP5 TEMP19 TEMP21:LIST ELE22:RECORD-DESCRIPTOR TEMP29 TEMP30 TEMP36>
264 <TYPE? HINT4 <TYPE-CODE ATOM> - PHRASE8>
269 <FRAME '
\1aPARSE-HINT>
273 <CALL '
\1aPARSE-HINT 2 = RTYP5>
275 <SET TEMP19 %<> (TYPE FALSE)>
276 <GVAL 'RECORD-TABLE = TEMP21>
280 <EMPL? TEMP21 + MAPAP14>
281 <NTHL TEMP21 1 = ELE22>
282 <NTHUV ELE22 1 = TEMP19 (TYPE VECTOR)>
284 <TYPE? RTYP5 <TYPE-CODE ATOM> - TAG26>
285 <EMPUV? TEMP29 + TAG26>
286 <LOOP (RTYP5 VALUE) (TEMP29 LENGTH VALUE)>
288 <NTHUV TEMP29 1 = TEMP30>
289 <VEQUAL? TEMP30 RTYP5 + TAG32>
291 <RESTUV TEMP29 1 = TEMP29 (TYPE VECTOR)>
292 <EMPUV? TEMP29 - TAG27>
294 <FRAME '
\1aCLEAN-DECL>
296 <CALL '
\1aCLEAN-DECL 1 = TEMP29>
297 <TYPE TEMP29 = TEMP30>
298 <EMPUV? TEMP19 + TAG31>
299 <LOOP (TEMP29 VALUE) (TEMP30 VALUE) (TEMP19 LENGTH VALUE)>
301 <NTHUV TEMP19 1 = TEMP36>
302 <TYPE? TEMP36 TEMP30 - TAG34>
303 <VEQUAL? TEMP36 TEMP29 + TAG32>
306 <RESTUV TEMP19 1 = TEMP19 (TYPE VECTOR)>
307 <EMPUV? TEMP19 - TAG33>
309 <SET TEMP19 %<> (TYPE FALSE)>
312 <NTHUV ELE22 3 = TEMP19>
317 <RESTL TEMP21 1 = TEMP21 (TYPE LIST)>
325 <GFCN
\1aGET-RELE-BRANCH? ("VALUE" <OR FALSE <LIST [1 ANY]>> <OR FALSE HINT>) HINT24>
326 <TEMP TEMP7 CP13:LIST TEMP24>
329 <TYPE? TEMP7 <TYPE-CODE FALSE> + PHRASE6>
330 <NTHL HINT24 1 = TEMP7>
331 <EQUAL? TEMP7 'BRANCH-FALSE + TAG11>
333 <NTHL HINT24 1 = TEMP7>
334 <EQUAL? TEMP7 'BRANCH-TAG + TAG11>
338 <GEN-LVAL 'CODPTR = CP13>
342 <EMPL? CP13 + PHRASE26 (TYPE LIST)>
343 <NTHL CP13 1 = TEMP7>
344 <TYPE? TEMP7 <TYPE-CODE FORM> - PHRASE26>
345 <NTHL TEMP7 1 = TEMP24>
346 <EQUAL? TEMP24 'DEAD!-MIMOP + PHRASE23>
356 <RESTL CP13 1 = CP13 (TYPE LIST)>
359 <RESTL HINT24 1 = TEMP7 (TYPE LIST)>
364 <END
\1aGET-RELE-BRANCH?>
367 <GFCN
\1aINIT-REC-DEFS ("VALUE" <LIST [REST RECORD-DESCRIPTOR]>)>
370 <FRAME '
\1aINIT-RECORD-DEFS>
371 <CALL '
\1aINIT-RECORD-DEFS 0>
372 <FRAME '
\1aDEFINE-RECORD>
381 <UBLOCK <TYPE-CODE VECTOR> 8 = STACK>
383 <FRAME '
\1aPARSE-RED>
389 <CALL '
\1aPARSE-RED 5 = STACK>
390 <FRAME '
\1aPARSE-RED>
396 <CALL '
\1aPARSE-RED 5 = STACK>
397 <FRAME '
\1aPARSE-RED>
403 <CALL '
\1aPARSE-RED 5 = STACK>
404 <FRAME '
\1aPARSE-RED>
410 <CALL '
\1aPARSE-RED 5 = STACK>
411 <FRAME '
\1aPARSE-RED>
417 <CALL '
\1aPARSE-RED 5 = STACK>
418 <CALL '
\1aDEFINE-RECORD 7>
419 <FRAME '
\1aDEFINE-RECORD>
422 <UBLOCK <TYPE-CODE VECTOR> 2 = STACK>
424 <FRAME '
\1aPARSE-RED>
430 <CALL '
\1aPARSE-RED 5 = STACK>
431 <FRAME '
\1aPARSE-RED>
437 <CALL '
\1aPARSE-RED 5 = STACK>
438 <FRAME '
\1aPARSE-RED>
439 <PUSH 'SMALL-POS-INT>
444 <CALL '
\1aPARSE-RED 5 = STACK>
445 <FRAME '
\1aPARSE-RED>
446 <PUSH 'SMALL-POS-INT>
451 <CALL '
\1aPARSE-RED 5 = STACK>
452 <FRAME '
\1aPARSE-RED>
458 <CALL '
\1aPARSE-RED 5 = STACK>
459 <FRAME '
\1aPARSE-RED>
460 <PUSH 'SMALL-POS-INT>
465 <CALL '
\1aPARSE-RED 5 = STACK>
466 <FRAME '
\1aPARSE-RED>
467 <PUSH 'SMALL-FR-OFFSET>
472 <CALL '
\1aPARSE-RED 5 = STACK>
473 <FRAME '
\1aPARSE-RED>
479 <CALL '
\1aPARSE-RED 5 = STACK>
480 <CALL '
\1aDEFINE-RECORD 10>
481 <FRAME '
\1aDEFINE-RECORD>
484 <UBLOCK <TYPE-CODE VECTOR> 2 = STACK>
486 <FRAME '
\1aPARSE-RED>
492 <CALL '
\1aPARSE-RED 5 = STACK>
493 <FRAME '
\1aPARSE-RED>
499 <CALL '
\1aPARSE-RED 5 = STACK>
500 <FRAME '
\1aPARSE-RED>
506 <CALL '
\1aPARSE-RED 5 = STACK>
507 <FRAME '
\1aPARSE-RED>
513 <CALL '
\1aPARSE-RED 5 = STACK>
514 <FRAME '
\1aPARSE-RED>
520 <CALL '
\1aPARSE-RED 5 = STACK>
521 <FRAME '
\1aPARSE-RED>
527 <CALL '
\1aPARSE-RED 5 = STACK>
528 <CALL '
\1aDEFINE-RECORD 8>
529 <FRAME '
\1aDEFINE-RECORD>
532 <UBLOCK <TYPE-CODE VECTOR> 2 = STACK>
534 <FRAME '
\1aPARSE-RED>
540 <CALL '
\1aPARSE-RED 5 = STACK>
541 <FRAME '
\1aPARSE-RED>
547 <CALL '
\1aPARSE-RED 5 = STACK>
548 <FRAME '
\1aPARSE-RED>
554 <CALL '
\1aPARSE-RED 5 = STACK>
555 <CALL '
\1aDEFINE-RECORD 5 = TEMP35>
558 <END
\1aINIT-REC-DEFS>