Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vaxc / fcode.mima
1
2 <GDECL (FCODE-CHANNEL) <OR FALSE CHANNEL> (FCODE-BUFFER) UVECTOR (FCODE-BUFFER-PAGE FCODE-FILE-POINTER MAX-BUFFERS) FIX (FCODE-BUFFER-CHANGED?) BOOLEAN (FCODE-LIST) <LIST [REST <OR FIX CODEVEC>]> (FCURRENT-CODE) CODEVEC (FCODE-COUNT FCURRENT-WORD FBYTE-OFFSET FSHIFT) FIX>
3
4 <SETG MAX-BUFFERS 5>
5
6 <MSETG FCODEVEC-LENGTH <* ,CODEVEC-LENGTH 4>>
7
8 #WORD *11314717470*
9                     <GFCN \1aINIT-FINAL-CODE ("VALUE" FIX)>
10                     <TEMP TEMP4 TEMP5>
11                     <INTGO>
12                     <UUBLOCK <TYPE-CODE UVECTOR> 1024 = TEMP4>
13                     <SET TEMP5 TEMP4>
14                     <LOOP (TEMP5 VALUE LENGTH)>
15 ISTR6
16                     <EMPUU? TEMP5 + ISTRE7>
17                     <PUTUU TEMP5 1 0>
18                     <RESTUU TEMP5 1 = TEMP5>
19                     <JUMP + ISTR6>
20 ISTRE7
21                     <SETG 'FCURRENT-CODE TEMP4>
22                     <DEAD TEMP4>
23                     <GVAL 'FCURRENT-CODE = TEMP4>
24                     <CONS TEMP4 () = TEMP4>
25                     <SETG 'FCODE-LIST TEMP4>
26                     <DEAD TEMP4>
27                     <SETG 'FCODE-CHANNEL %<>>
28                     <UUBLOCK <TYPE-CODE UVECTOR> 1024 = TEMP4>
29                     <SET TEMP5 TEMP4>
30                     <LOOP (TEMP5 VALUE LENGTH)>
31 ISTR8
32                     <EMPUU? TEMP5 + ISTRE9>
33                     <PUTUU TEMP5 1 0>
34                     <RESTUU TEMP5 1 = TEMP5>
35                     <JUMP + ISTR8>
36 ISTRE9
37                     <SETG 'FCODE-BUFFER TEMP4>
38                     <DEAD TEMP4>
39                     <SETG 'FCODE-BUFFER-PAGE -1>
40                     <SETG 'FCODE-FILE-POINTER 0>
41                     <SETG 'FCODE-COUNT 1>
42                     <SETG 'FCURRENT-WORD 0>
43                     <SETG 'FBYTE-OFFSET 1>
44                     <SETG 'FSHIFT 32>
45                     <RETURN 32>
46                     <END \1aINIT-FINAL-CODE>
47
48 #WORD *3174377565*
49                     <GFCN \1aRESET-FCODE ("VALUE" FIX)>
50                     <TEMP TEMP9>
51                     <INTGO>
52                     <LOOP>
53 AGAIN6
54                     <INTGO>
55                     <GVAL 'FCODE-LIST = TEMP9>
56                     <NTHL TEMP9 1 = TEMP9>
57                     <TYPE? TEMP9 <TYPE-CODE FIX> - EXIT4>
58                     <DEAD TEMP9>
59                     <GVAL 'FCODE-LIST = TEMP9>
60                     <RESTL TEMP9 1 = TEMP9 (TYPE LIST)>
61                     <SETG 'FCODE-LIST TEMP9>
62                     <DEAD TEMP9>
63                     <JUMP + AGAIN6>
64 EXIT4
65                     <GVAL 'FCODE-LIST = TEMP9>
66                     <NTHL TEMP9 1 = TEMP9 (TYPE UVECTOR)>
67                     <SETG 'FCURRENT-CODE TEMP9>
68                     <DEAD TEMP9>
69                     <SETG 'FCODE-BUFFER-PAGE -1>
70                     <GVAL 'FCODE-CHANNEL = TEMP9>
71                     <TYPE? TEMP9 <TYPE-CODE FALSE> + PHRASE12>
72                     <DEAD TEMP9>
73                     <FRAME '\1aCLOSE>
74                     <GVAL 'FCODE-CHANNEL = STACK>
75                     <CALL '\1aCLOSE 1>
76                     <SETG 'FCODE-CHANNEL %<>>
77 PHRASE12
78                     <SETG 'FCODE-FILE-POINTER 0>
79                     <SETG 'FCODE-COUNT 1>
80                     <SETG 'FCURRENT-WORD 0>
81                     <SETG 'FBYTE-OFFSET 1>
82                     <SETG 'FSHIFT 32>
83                     <RETURN 32>
84                     <END \1aRESET-FCODE>
85
86 #WORD *21427501014*
87                     <GFCN \1aOPEN-FCODE-FILE ("VALUE" ATOM)>
88                     <TEMP CH4>
89                     <INTGO>
90                     <FRAME '\1aCHANNEL-OPEN>
91                     <PUSH 'DISK>
92                     <PUSH "CACHE.FILE">
93                     <PUSH "CREATE">
94                     <PUSH "BINARY">
95                     <CALL '\1aCHANNEL-OPEN 4 = CH4>
96                     <TYPE? CH4 <TYPE-CODE FALSE> - PHRASE6>
97                     <FRAME '\1aERROR>
98                     <FRAME '\1aSYS-ERR>
99                     <PUSH "CACHE.FILE">
100                     <PUSH CH4>
101                     <CALL '\1aSYS-ERR 2 = STACK>
102                     <CALL '\1aERROR 1>
103 PHRASE6
104                     <SETG 'FCODE-CHANNEL CH4>
105                     <DEAD CH4>
106                     <RETURN 'T>
107                     <END \1aOPEN-FCODE-FILE>
108
109 #WORD *22104746003*
110                     <GFCN \1aWRITE-FCODE ("VALUE" ATOM UVECTOR FIX) BUF4 PAGE5>
111                     <TEMP CH6>
112                     <INTGO>
113                     <GVAL 'FCODE-CHANNEL = CH6>
114                     <GVAL 'FCODE-CHANNEL = CH6>
115                     <TYPE? CH6 <TYPE-CODE FALSE> - PHRASE8>
116                     <DEAD CH6>
117                     <FRAME '\1aOPEN-FCODE-FILE>
118                     <CALL '\1aOPEN-FCODE-FILE 0>
119 PHRASE8
120                     <GVAL 'FCODE-CHANNEL = CH6>
121                     <FRAME '\1aACCESS>
122                     <PUSH CH6>
123                     <LSH PAGE5 10 = STACK (TYPE FIX)>
124                     <DEAD PAGE5>
125                     <CALL '\1aACCESS 2>
126                     <FRAME '\1aCHANNEL-OP>
127                     <PUSH CH6>
128                     <DEAD CH6>
129                     <PUSH 'WRITE-BUFFER>
130                     <PUSH BUF4>
131                     <DEAD BUF4>
132                     <CALL '\1aCHANNEL-OP 3>
133                     <RETURN 'T>
134                     <END \1aWRITE-FCODE>
135
136 #WORD *12243145154*
137                     <GFCN \1aREAD-FCODE ("VALUE" ANY ANY ANY) BUF4 PAGE5>
138                     <TEMP CH6>
139                     <INTGO>
140                     <GVAL 'FCODE-CHANNEL = CH6>
141                     <FRAME '\1aACCESS>
142                     <PUSH CH6>
143                     <LSH PAGE5 10 = STACK (TYPE FIX)>
144                     <DEAD PAGE5>
145                     <CALL '\1aACCESS 2>
146                     <FRAME '\1aCHANNEL-OP>
147                     <PUSH CH6>
148                     <DEAD CH6>
149                     <PUSH 'READ-BUFFER>
150                     <PUSH BUF4>
151                     <DEAD BUF4>
152                     <CALL '\1aCHANNEL-OP 3 = CH6>
153                     <RETURN CH6>
154                     <DEAD CH6>
155                     <END \1aREAD-FCODE>
156
157 #WORD *34505060006*
158                     <GFCN \1aADD-BYTE-TO-FCODE ("VALUE" FIX FIX) BYT4>
159                     <TEMP CCODE6 CWORD7:FIX OFF8:FIX SHFT9:FIX TEMP15>
160                     <INTGO>
161                     <GVAL 'FCURRENT-CODE = CCODE6>
162                     <GVAL 'FCURRENT-WORD = CWORD7>
163                     <GVAL 'FBYTE-OFFSET = OFF8>
164                     <GVAL 'FSHIFT = SHFT9>
165                     <SUB SHFT9 8 = SHFT9 (TYPE FIX)>
166                     <GRTR? SHFT9 0 - PHRASE12 (TYPE FIX)>
167                     <LSH BYT4 SHFT9 = TEMP15 (TYPE FIX)>
168                     <DEAD BYT4>
169                     <OR CWORD7 TEMP15 = CCODE6>
170                     <DEAD CWORD7 TEMP15>
171                     <SETG 'FCURRENT-WORD CCODE6>
172                     <DEAD CCODE6>
173                     <JUMP + PHRASE17>
174 PHRASE12
175                     <GVAL 'FCODE-COUNT = SHFT9>
176                     <EMPUU? CCODE6 - PHRASE25 (TYPE UVECTOR)>
177                     <GVAL 'FCODE-LIST = CCODE6>
178                     <DIV SHFT9 1024 = TEMP15 (TYPE FIX)>
179                     <SUB TEMP15 1 = TEMP15 (TYPE FIX)>
180                     <GRTR? TEMP15 0 - RESTL21 (TYPE FIX)>
181                     <LOOP (CCODE6 VALUE) (TEMP15 VALUE)>
182 RESTL20
183                     <INTGO>
184                     <RESTL CCODE6 1 = CCODE6 (TYPE LIST)>
185                     <SUB TEMP15 1 = TEMP15 (TYPE FIX)>
186                     <GRTR? TEMP15 0 + RESTL20 (TYPE FIX)>
187 RESTL21
188                     <SET TEMP15 CCODE6>
189                     <DEAD CCODE6>
190                     <EMPL? TEMP15 + PHRASE23>
191                     <RESTL TEMP15 1 = CCODE6 (TYPE LIST)>
192                     <EMPL? CCODE6 - PHRASE23>
193                     <DEAD CCODE6>
194                     <FRAME '\1aNEW-FCODE-BUFFER>
195                     <CALL '\1aNEW-FCODE-BUFFER 0 = CCODE6>
196                     <JUMP + PHRASE25>
197 PHRASE23
198                     <RESTL TEMP15 1 = CCODE6 (TYPE LIST)>
199                     <DEAD TEMP15>
200                     <NTHL CCODE6 1 = CCODE6>
201 PHRASE25
202                     <OR CWORD7 BYT4 = BYT4>
203                     <DEAD CWORD7>
204                     <PUTUU CCODE6 1 BYT4>
205                     <DEAD BYT4>
206                     <RESTUU CCODE6 1 = CCODE6 (TYPE UVECTOR)>
207                     <SETG 'FCURRENT-CODE CCODE6>
208                     <DEAD CCODE6>
209                     <ADD SHFT9 1 = TEMP15 (TYPE FIX)>
210                     <DEAD SHFT9>
211                     <SETG 'FCODE-COUNT TEMP15>
212                     <DEAD TEMP15>
213                     <SETG 'FCURRENT-WORD 0>
214                     <SET SHFT9 32 (TYPE FIX)>
215 PHRASE17
216                     <SETG 'FSHIFT SHFT9>
217                     <DEAD SHFT9>
218                     <ADD OFF8 1 = TEMP15 (TYPE FIX)>
219                     <SETG 'FBYTE-OFFSET TEMP15>
220                     <DEAD TEMP15>
221                     <RETURN OFF8>
222                     <DEAD OFF8>
223                     <END \1aADD-BYTE-TO-FCODE>
224
225 #WORD *21420556560*
226                     <GFCN \1aNEW-FCODE-BUFFER ("VALUE" UVECTOR)>
227                     <TEMP RLST4:LIST BPAGE6 TEMP9 TEMP10 BUF21 CCODE5>
228                     <INTGO>
229                     <GVAL 'FCODE-LIST = RLST4>
230                     <GVAL 'FCODE-FILE-POINTER = BPAGE6>
231                     <GVAL 'MAX-BUFFERS = TEMP9>
232                     <LENL RLST4 = TEMP10 (TYPE FIX)>
233                     <LESS? TEMP9 TEMP10 - PHRASE8 (TYPE FIX)>
234                     <DEAD TEMP9>
235                     <SET TEMP9 RLST4 (TYPE LIST)>
236                     <LOOP>
237 MAP12
238                     <INTGO>
239                     <EMPL? TEMP9 + MAPAP15>
240                     <SET TEMP10 TEMP9>
241                     <NTHL TEMP10 1 = BUF21>
242                     <TYPE? BUF21 <TYPE-CODE UVECTOR> - PHRASE23>
243                     <PUTL TEMP10 1 BPAGE6>
244                     <DEAD TEMP10>
245                     <SET CCODE5 BUF21>
246                     <DEAD BUF21>
247                     <JUMP + MAPAP15>
248 PHRASE23
249                     <RESTL TEMP9 1 = TEMP9 (TYPE LIST)>
250                     <JUMP + MAP12>
251 MAPAP15
252                     <FRAME '\1aWRITE-FCODE>
253                     <PUSH CCODE5>
254                     <PUSH BPAGE6>
255                     <CALL '\1aWRITE-FCODE 2>
256                     <ADD BPAGE6 1 = BUF21 (TYPE FIX)>
257                     <DEAD BPAGE6>
258                     <SETG 'FCODE-FILE-POINTER BUF21>
259                     <DEAD BUF21>
260                     <SET BUF21 RLST4>
261                     <DEAD RLST4>
262                     <LOOP (BUF21 VALUE)>
263 TAG26
264                     <RESTL BUF21 1 = TEMP9 (TYPE LIST)>
265                     <EMPL? TEMP9 + TAG27>
266                     <SET BUF21 TEMP9>
267                     <DEAD TEMP9>
268                     <JUMP + TAG26>
269 TAG27
270                     <CONS CCODE5 () = BPAGE6>
271                     <PUTREST BUF21 BPAGE6>
272                     <DEAD BUF21 BPAGE6>
273                     <RETURN CCODE5>
274                     <DEAD CCODE5>
275 PHRASE8
276                     <UUBLOCK <TYPE-CODE UVECTOR> 1024 = CCODE5>
277                     <SET BPAGE6 CCODE5>
278                     <LOOP (BPAGE6 VALUE LENGTH)>
279 ISTR29
280                     <EMPUU? BPAGE6 + ISTRE30>
281                     <PUTUU BPAGE6 1 0>
282                     <RESTUU BPAGE6 1 = BPAGE6>
283                     <JUMP + ISTR29>
284 ISTRE30
285                     <SET BPAGE6 RLST4>
286                     <DEAD RLST4>
287                     <LOOP (BPAGE6 VALUE)>
288 TAG31
289                     <RESTL BPAGE6 1 = TEMP9 (TYPE LIST)>
290                     <EMPL? TEMP9 + TAG32>
291                     <SET BPAGE6 TEMP9>
292                     <DEAD TEMP9>
293                     <JUMP + TAG31>
294 TAG32
295                     <CONS CCODE5 () = TEMP9>
296                     <PUTREST BPAGE6 TEMP9>
297                     <DEAD BPAGE6 TEMP9>
298                     <RETURN CCODE5>
299                     <DEAD CCODE5>
300                     <END \1aNEW-FCODE-BUFFER>
301
302 #WORD *21516276332*
303                     <GFCN \1aPUT-FCODE ("VALUE" <OR ATOM FIX> FIX FIX) DEST4 VAL5>
304                     <TEMP CL6 OFF7:FIX CWORD8:FIX SHFT9:FIX TEMP13>
305                     <INTGO>
306                     <GVAL 'FCODE-LIST = CL6>
307                     <GVAL 'FBYTE-OFFSET = OFF7>
308                     <GVAL 'FCURRENT-WORD = CWORD8>
309                     <GVAL 'FSHIFT = SHFT9>
310                     <ADD OFF7 2 = TEMP13 (TYPE FIX)>
311                     <DEAD OFF7>
312                     <DIV TEMP13 4 = TEMP13 (TYPE FIX)>
313                     <ADD DEST4 3 = OFF7 (TYPE FIX)>
314                     <DIV OFF7 4 = OFF7 (TYPE FIX)>
315                     <VEQUAL? TEMP13 OFF7 - PHRASE11 (TYPE FIX)>
316                     <DEAD TEMP13>
317                     <VEQUAL? SHFT9 32 + PHRASE11 (TYPE FIX)>
318                     <DEAD SHFT9>
319                     <ADD DEST4 3 = TEMP13 (TYPE FIX)>
320                     <DEAD DEST4>
321                     <AND TEMP13 3 = TEMP13>
322                     <ADD TEMP13 1 = TEMP13 (TYPE FIX)>
323                     <NTHUU ![24 16 8 0!] TEMP13 = TEMP13 (TYPE FIX)>
324                     <PUTBITS CWORD8 8 TEMP13 VAL5 = TEMP13>
325                     <DEAD CWORD8 VAL5>
326                     <SETG 'FCURRENT-WORD TEMP13>
327                     <RETURN TEMP13>
328                     <DEAD TEMP13>
329 PHRASE11
330                     <SET CWORD8 DEST4>
331                     <DEAD DEST4>
332                     <LOOP>
333 AGAIN20
334                     <INTGO>
335                     <GRTR? CWORD8 4096 + PHRASE22 (TYPE FIX)>
336                     <ADD CWORD8 3 = TEMP13 (TYPE FIX)>
337                     <DIV TEMP13 4 = OFF7 (TYPE FIX)>
338                     <DEAD TEMP13>
339                     <ADD CWORD8 3 = TEMP13 (TYPE FIX)>
340                     <DEAD CWORD8>
341                     <AND TEMP13 3 = TEMP13>
342                     <ADD TEMP13 1 = TEMP13 (TYPE FIX)>
343                     <NTHUU ![24 16 8 0!] TEMP13 = SHFT9 (TYPE FIX)>
344                     <DEAD TEMP13>
345                     <NTHL CL6 1 = TEMP13>
346                     <TYPE? TEMP13 <TYPE-CODE UVECTOR> - PHRASE25>
347                     <DEAD TEMP13>
348                     <NTHL CL6 1 = CL6 (TYPE UVECTOR)>
349                     <JUMP + COND24>
350 PHRASE25
351                     <FRAME '\1aGET-FCODE-BUFFER>
352                     <NTHL CL6 1 = STACK (TYPE FIX)>
353                     <DEAD CL6>
354                     <PUSH 'WRITE>
355                     <CALL '\1aGET-FCODE-BUFFER 2 = CL6>
356 COND24
357                     <NTHUU CL6 OFF7 = TEMP13 (TYPE FIX)>
358                     <PUTBITS TEMP13 8 SHFT9 VAL5 = CWORD8>
359                     <DEAD TEMP13 SHFT9 VAL5>
360                     <PUTUU CL6 OFF7 CWORD8>
361                     <DEAD CL6 OFF7 CWORD8>
362                     <RETURN 'T>
363 PHRASE22
364                     <RESTL CL6 1 = CL6 (TYPE LIST)>
365                     <EMPL? CL6 - PHRASE28 (TYPE LIST)>
366                     <FRAME '\1aERROR>
367                     <PUSH 'OUT-OF-BOUNDS>
368                     <PUSH 'PUT-FCODE>
369                     <CALL '\1aERROR 2>
370 PHRASE28
371                     <SUB CWORD8 4096 = CWORD8 (TYPE FIX)>
372                     <JUMP + AGAIN20>
373                     <END \1aPUT-FCODE>
374
375 #WORD *32410634272*
376                     <GFCN \1aNTH-FCODE ("VALUE" FIX FIX) DEST4>
377                     <TEMP CL5 OFF7:FIX CWORD8:FIX SHFT9:FIX TEMP13>
378                     <INTGO>
379                     <GVAL 'FCODE-LIST = CL5>
380                     <GVAL 'FBYTE-OFFSET = OFF7>
381                     <GVAL 'FCURRENT-WORD = CWORD8>
382                     <GVAL 'FSHIFT = SHFT9>
383                     <ADD OFF7 2 = TEMP13 (TYPE FIX)>
384                     <DEAD OFF7>
385                     <DIV TEMP13 4 = TEMP13 (TYPE FIX)>
386                     <ADD DEST4 3 = OFF7 (TYPE FIX)>
387                     <DIV OFF7 4 = OFF7 (TYPE FIX)>
388                     <VEQUAL? TEMP13 OFF7 - PHRASE11 (TYPE FIX)>
389                     <DEAD TEMP13>
390                     <VEQUAL? SHFT9 32 + PHRASE11 (TYPE FIX)>
391                     <DEAD SHFT9>
392                     <ADD DEST4 3 = TEMP13 (TYPE FIX)>
393                     <DEAD DEST4>
394                     <AND TEMP13 3 = TEMP13>
395                     <ADD TEMP13 1 = TEMP13 (TYPE FIX)>
396                     <NTHUU ![24 16 8 0!] TEMP13 = TEMP13 (TYPE FIX)>
397                     <GETBITS CWORD8 8 TEMP13 = TEMP13>
398                     <DEAD CWORD8>
399                     <RETURN TEMP13>
400                     <DEAD TEMP13>
401 PHRASE11
402                     <SET CWORD8 DEST4>
403                     <LOOP>
404 AGAIN19
405                     <INTGO>
406                     <GRTR? CWORD8 4096 + PHRASE21 (TYPE FIX)>
407                     <ADD CWORD8 3 = TEMP13 (TYPE FIX)>
408                     <DIV TEMP13 4 = OFF7 (TYPE FIX)>
409                     <DEAD TEMP13>
410                     <ADD CWORD8 3 = TEMP13 (TYPE FIX)>
411                     <DEAD CWORD8>
412                     <AND TEMP13 3 = TEMP13>
413                     <ADD TEMP13 1 = TEMP13 (TYPE FIX)>
414                     <NTHUU ![24 16 8 0!] TEMP13 = SHFT9 (TYPE FIX)>
415                     <DEAD TEMP13>
416                     <NTHL CL5 1 = TEMP13>
417                     <TYPE? TEMP13 <TYPE-CODE UVECTOR> - PHRASE24>
418                     <DEAD TEMP13>
419                     <NTHL CL5 1 = CL5 (TYPE UVECTOR)>
420                     <JUMP + COND23>
421 PHRASE24
422                     <FRAME '\1aGET-FCODE-BUFFER>
423                     <NTHL CL5 1 = STACK (TYPE FIX)>
424                     <DEAD CL5>
425                     <PUSH 'READ>
426                     <CALL '\1aGET-FCODE-BUFFER 2 = CL5>
427 COND23
428                     <NTHUU CL5 OFF7 = TEMP13 (TYPE FIX)>
429                     <DEAD CL5 OFF7>
430                     <GETBITS TEMP13 8 SHFT9 = OFF7>
431                     <DEAD TEMP13 SHFT9>
432                     <RETURN OFF7>
433                     <DEAD OFF7>
434 PHRASE21
435                     <RESTL CL5 1 = CL5 (TYPE LIST)>
436                     <EMPL? CL5 - PHRASE27 (TYPE LIST)>
437                     <FRAME '\1aERROR>
438                     <PUSH 'OUT-OF-BOUNDS>
439                     <PUSH DEST4>
440                     <PUSH 'NTH-FCODE>
441                     <CALL '\1aERROR 3>
442 PHRASE27
443                     <SUB CWORD8 4096 = CWORD8 (TYPE FIX)>
444                     <JUMP + AGAIN19>
445                     <END \1aNTH-FCODE>
446
447 #WORD *21553301514*
448                     <GFCN \1aGET-FCODE-BUFFER ("VALUE" UVECTOR FIX ATOM) PAGE4 MODE5>
449                     <TEMP TEMP8>
450                     <INTGO>
451                     <GVAL 'FCODE-BUFFER-PAGE = TEMP8>
452                     <VEQUAL? PAGE4 TEMP8 - PHRASE7 (TYPE FIX)>
453                     <DEAD TEMP8>
454                     <VEQUAL? MODE5 'WRITE - PHRASE20>
455                     <DEAD MODE5>
456                     <SETG 'FCODE-BUFFER-CHANGED? 'T>
457                     <JUMP + PHRASE20>
458 PHRASE7
459                     <GVAL 'FCODE-BUFFER-PAGE = TEMP8>
460                     <LESS? TEMP8 0 + PHRASE12 (TYPE FIX)>
461                     <DEAD TEMP8>
462                     <GVAL 'FCODE-BUFFER-CHANGED? = TEMP8>
463                     <TYPE? TEMP8 <TYPE-CODE FALSE> + PHRASE12>
464                     <DEAD TEMP8>
465                     <FRAME '\1aWRITE-FCODE>
466                     <GVAL 'FCODE-BUFFER = STACK>
467                     <GVAL 'FCODE-BUFFER-PAGE = STACK>
468                     <CALL '\1aWRITE-FCODE 2>
469 PHRASE12
470                     <FRAME '\1aREAD-FCODE>
471                     <GVAL 'FCODE-BUFFER = STACK>
472                     <PUSH PAGE4>
473                     <CALL '\1aREAD-FCODE 2>
474                     <SETG 'FCODE-BUFFER-PAGE PAGE4>
475                     <DEAD PAGE4>
476                     <VEQUAL? MODE5 'READ - PHRASE19>
477                     <DEAD MODE5>
478                     <SETG 'FCODE-BUFFER-CHANGED? %<>>
479                     <JUMP + PHRASE20>
480 PHRASE19
481                     <SETG 'FCODE-BUFFER-CHANGED? 'T>
482 PHRASE20
483                     <GVAL 'FCODE-BUFFER = TEMP8>
484                     <RETURN TEMP8>
485                     <DEAD TEMP8>
486                     <END \1aGET-FCODE-BUFFER>
487
488 #WORD *27553405450*
489                     <GFCN \1aADVANCE-FCODE ("VALUE" ATOM FIX) NUM4>
490                     <TEMP TEMP5:ATOM>
491                     <INTGO>
492                     <LOOP>
493 AGAIN8
494                     <INTGO>
495                     <FRAME '\1aADD-BYTE-TO-FCODE>
496                     <PUSH NUM4>
497                     <CALL '\1aADD-BYTE-TO-FCODE 1>
498                     <SUB NUM4 1 = NUM4 (TYPE FIX)>
499                     <VEQUAL? NUM4 0 - AGAIN8 (TYPE FIX)>
500                     <RETURN 'T>
501                     <END \1aADVANCE-FCODE>