Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / 20 / disk.mima
1
2 "I/O for non-paged disk:  may or may not use buffers (according to user
3  desires), never uses pmap.  Note that input and output use the same buffer,
4 so this is not suitable for devices that don't random-access (chaos net, tty,
5 ...)."
6
7 "Possible modes:  READ, CREATE, MODIFY, APPEND/ASCII, BINARY, 8BIT"
8
9 #WORD *23367241657*
10 <GFCN \1aX$DISK-FILE-HANDLE ("VALUE" FIX CHANNEL ANY) CHANNEL4 OPR5>
11                     <TEMP DATA6>
12                     <INTGO>
13                     <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
14                     <DEAD CHANNEL4>
15                     <NTHUV DATA6 1 = DATA6 (TYPE FIX)>
16                     <RETURN DATA6>
17                     <DEAD DATA6>
18                     <END \1aX$DISK-FILE-HANDLE>
19 #WORD *14535666447*
20 <GFCN \1aX$DISK-QUERY ("VALUE" <OR ATOM FALSE> CHANNEL ANY FIX) CHANNEL4 OPR5 BIT6>
21                     <TEMP DATA7>
22                     <INTGO>
23                     <VEQUAL? BIT6 1 + TAG11 (TYPE FIX)>
24                     <DEAD BIT6>
25                     <RETURN %<>>
26 TAG11
27                     <RETURN 'T>
28                     <END \1aX$DISK-QUERY>
29 #WORD *2533510363*
30 <GFCN \1aX$DISK-OPEN ("VALUE" <OR FALSE I$DISK-CHANNEL> ANY ANY STRING STRING "OPTIONAL" STRING <OR ATOM FALSE> <OR ATOM FALSE> <OR ATOM FALSE>) STYPE9 OPR10 NAME11 MODS12 BYTES13 BUF?14 THAWED?15 NO-REF?16>
31                     <OPT-DISPATCH 4 %<> OPT4 OPT5 OPT6 OPT7 OPT8>
32 OPT4
33                     <PUSH "ASCII">
34 OPT5
35                     <PUSH 'T>
36 OPT6
37                     <PUSH %<>>
38 OPT7
39                     <PUSH %<>>
40 OPT8
41                     <TEMP (NEW?17 %<>) (APP?21 %<>) TEMP26 TEMP27 TEMP28 TEMP29 TEMP30 MODE18:FIX BSZ20:FIX>
42                     <INTGO>
43                     <IFCAN "STRING-EQUAL?">
44                     <STRING-EQUAL? MODS12 "READ" - PHRASE25>
45                     <ENDIF "STRING-EQUAL?">
46                     <IFCANNOT "STRING-EQUAL?">
47                     <SET TEMP26 MODS12>
48                     <SET TEMP27 "READ" (TYPE STRING)>
49                     <LENUS TEMP26 = TEMP28 (TYPE FIX)>
50                     <VEQUAL? TEMP28 4 - PHRASE25>
51                     <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
52 TAG31
53                     <NTHUS TEMP26 1 = TEMP29>
54                     <NTHUS TEMP27 1 = TEMP30>
55                     <VEQUAL? TEMP29 TEMP30 - PHRASE25>
56                     <DEAD TEMP29 TEMP30>
57                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
58                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
59                     <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
60                     <GRTR? TEMP28 0 + TAG31 (TYPE FIX)>
61                     <ENDIF "STRING-EQUAL?">
62                     <SET MODE18 65568 (TYPE FIX)>
63                     <JUMP + PHRASE41>
64 PHRASE25
65                     <IFCAN "STRING-EQUAL?">
66                     <STRING-EQUAL? MODS12 "CREATE" - PHRASE32>
67                     <ENDIF "STRING-EQUAL?">
68                     <IFCANNOT "STRING-EQUAL?">
69                     <SET TEMP27 MODS12>
70                     <SET TEMP26 "CREATE" (TYPE STRING)>
71                     <LENUS TEMP27 = TEMP30 (TYPE FIX)>
72                     <VEQUAL? TEMP30 6 - PHRASE32>
73                     <LOOP (TEMP27 VALUE LENGTH) (TEMP26 VALUE LENGTH) (TEMP30 VALUE)>
74 TAG34
75                     <NTHUS TEMP27 1 = TEMP29>
76                     <NTHUS TEMP26 1 = TEMP28>
77                     <VEQUAL? TEMP29 TEMP28 - PHRASE32>
78                     <DEAD TEMP29 TEMP28>
79                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
80                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
81                     <SUB TEMP30 1 = TEMP30 (TYPE FIX)>
82                     <GRTR? TEMP30 0 + TAG34 (TYPE FIX)>
83                     <ENDIF "STRING-EQUAL?">
84                     <SET NEW?17 'T (TYPE ATOM)>
85                     <SET MODE18 98336 (TYPE FIX)>
86                     <JUMP + PHRASE41>
87 PHRASE32
88                     <IFCAN "STRING-EQUAL?">
89                     <STRING-EQUAL? MODS12 "MODIFY" - PHRASE35>
90                     <ENDIF "STRING-EQUAL?">
91                     <IFCANNOT "STRING-EQUAL?">
92                     <SET TEMP26 MODS12>
93                     <SET TEMP27 "MODIFY" (TYPE STRING)>
94                     <LENUS TEMP26 = TEMP28 (TYPE FIX)>
95                     <VEQUAL? TEMP28 6 - PHRASE35>
96                     <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
97 TAG37
98                     <NTHUS TEMP26 1 = TEMP29>
99                     <NTHUS TEMP27 1 = TEMP30>
100                     <VEQUAL? TEMP29 TEMP30 - PHRASE35>
101                     <DEAD TEMP29 TEMP30>
102                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
103                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
104                     <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
105                     <GRTR? TEMP28 0 + TAG37 (TYPE FIX)>
106                     <ENDIF "STRING-EQUAL?">
107                     <SET MODE18 98336 (TYPE FIX)>
108                     <JUMP + PHRASE41>
109 PHRASE35
110                     <IFCAN "STRING-EQUAL?">
111                     <STRING-EQUAL? MODS12 "APPEND" - PHRASE38>
112                     <ENDIF "STRING-EQUAL?">
113                     <IFCANNOT "STRING-EQUAL?">
114                     <SET TEMP27 MODS12>
115                     <SET TEMP26 "APPEND" (TYPE STRING)>
116                     <LENUS TEMP27 = TEMP30 (TYPE FIX)>
117                     <VEQUAL? TEMP30 6 - PHRASE38>
118                     <LOOP (TEMP27 VALUE LENGTH) (TEMP26 VALUE LENGTH) (TEMP30 VALUE)>
119 TAG40
120                     <NTHUS TEMP27 1 = TEMP29>
121                     <NTHUS TEMP26 1 = TEMP28>
122                     <VEQUAL? TEMP29 TEMP28 - PHRASE38>
123                     <DEAD TEMP29 TEMP28>
124                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
125                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
126                     <SUB TEMP30 1 = TEMP30 (TYPE FIX)>
127                     <GRTR? TEMP30 0 + TAG40 (TYPE FIX)>
128                     <ENDIF "STRING-EQUAL?">
129                     <SET APP?21 'T (TYPE ATOM)>
130                     <SET MODE18 73760 (TYPE FIX)>
131                     <JUMP + PHRASE41>
132 PHRASE38
133                     <FRAME '\1aERROR>
134                     <PUSH '@ILLEGAL-MODE>
135                     <PUSH MODS12>
136                     <DEAD MODS12>
137                     <PUSH 'I$DISK-OPEN>
138                     <CALL '\1aERROR 3>
139 PHRASE41
140                     <IFCAN "STRING-EQUAL?">
141                     <STRING-EQUAL? BYTES13 "ASCII" - PHRASE44>
142                     <ENDIF "STRING-EQUAL?">
143                     <IFCANNOT "STRING-EQUAL?">
144                     <SET TEMP26 BYTES13>
145                     <SET TEMP27 "ASCII" (TYPE STRING)>
146                     <LENUS TEMP26 = TEMP28 (TYPE FIX)>
147                     <VEQUAL? TEMP28 5 - PHRASE44>
148                     <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
149 TAG46
150                     <NTHUS TEMP26 1 = TEMP29>
151                     <NTHUS TEMP27 1 = TEMP30>
152                     <VEQUAL? TEMP29 TEMP30 - PHRASE44>
153                     <DEAD TEMP29 TEMP30>
154                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
155                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
156                     <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
157                     <GRTR? TEMP28 0 + TAG46 (TYPE FIX)>
158                     <ENDIF "STRING-EQUAL?">
159                     <SET BSZ20 7 (TYPE FIX)>
160                     <JUMP + PHRASE53>
161 PHRASE44
162                     <IFCAN "STRING-EQUAL?">
163                     <STRING-EQUAL? BYTES13 "8BIT" - PHRASE47>
164                     <ENDIF "STRING-EQUAL?">
165                     <IFCANNOT "STRING-EQUAL?">
166                     <SET TEMP27 BYTES13>
167                     <SET TEMP26 "8BIT" (TYPE STRING)>
168                     <LENUS TEMP27 = TEMP30 (TYPE FIX)>
169                     <VEQUAL? TEMP30 4 - PHRASE47>
170                     <LOOP (TEMP27 VALUE LENGTH) (TEMP26 VALUE LENGTH) (TEMP30 VALUE)>
171 TAG49
172                     <NTHUS TEMP27 1 = TEMP29>
173                     <NTHUS TEMP26 1 = TEMP28>
174                     <VEQUAL? TEMP29 TEMP28 - PHRASE47>
175                     <DEAD TEMP29 TEMP28>
176                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
177                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
178                     <SUB TEMP30 1 = TEMP30 (TYPE FIX)>
179                     <GRTR? TEMP30 0 + TAG49 (TYPE FIX)>
180                     <ENDIF "STRING-EQUAL?">
181                     <SET BSZ20 8 (TYPE FIX)>
182                     <JUMP + PHRASE53>
183 PHRASE47
184                     <IFCAN "STRING-EQUAL?">
185                     <STRING-EQUAL? BYTES13 "BINARY" - PHRASE50>
186                     <ENDIF "STRING-EQUAL?">
187                     <IFCANNOT "STRING-EQUAL?">
188                     <SET TEMP26 BYTES13>
189                     <SET TEMP27 "BINARY" (TYPE STRING)>
190                     <LENUS TEMP26 = TEMP28 (TYPE FIX)>
191                     <VEQUAL? TEMP28 6 - PHRASE50>
192                     <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
193 TAG52
194                     <NTHUS TEMP26 1 = TEMP29>
195                     <NTHUS TEMP27 1 = TEMP30>
196                     <VEQUAL? TEMP29 TEMP30 - PHRASE50>
197                     <DEAD TEMP29 TEMP30>
198                     <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
199                     <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
200                     <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
201                     <GRTR? TEMP28 0 + TAG52 (TYPE FIX)>
202                     <ENDIF "STRING-EQUAL?">
203                     <SET BSZ20 36 (TYPE FIX)>
204                     <JUMP + PHRASE53>
205 PHRASE50
206                     <FRAME '\1aERROR>
207                     <PUSH '@ILLEGAL-BYTE-SIZE>
208                     <PUSH BYTES13>
209                     <DEAD BYTES13>
210                     <PUSH 'I$DISK-OPEN>
211                     <CALL '\1aERROR 3>
212 PHRASE53
213                     <TYPE? THAWED?15 <TYPE-CODE FALSE> + PHRASE56>
214                     <DEAD THAWED?15>
215                     <OR MODE18 #WORD *2000* = MODE18>
216 PHRASE56
217                     <TYPE? NO-REF?16 <TYPE-CODE FALSE> + PHRASE58>
218                     <DEAD NO-REF?16>
219                     <OR MODE18 #WORD *400* = MODE18>
220 PHRASE58
221                     <FRAME '\1aT$GET-JFN>
222                     <PUSH NAME11>
223                     <DEAD NAME11>
224                     <PUSH MODE18>
225                     <PUSH BSZ20>
226                     <PUSH NEW?17>
227                     <DEAD NEW?17>
228                     <CALL '\1aT$GET-JFN 4 = NEW?17>
229                     <SET TEMP27 NEW?17>
230                     <TYPE? TEMP27 <TYPE-CODE FALSE> + PHRASE60>
231                     <PUSH NEW?17>
232                     <PUSH MODE18>
233                     <DEAD MODE18>
234                     <PUSH BSZ20>
235                     <VEQUAL? APP?21 0 + PHRASE64>
236                     <DEAD APP?21>
237                     <FRAME '\1aT$GET-BYTE-COUNT>
238                     <PUSH NEW?17>
239                     <DEAD NEW?17>
240                     <PUSH BSZ20>
241                     <CALL '\1aT$GET-BYTE-COUNT 2 = MODE18>
242                     <SET TEMP26 MODE18>
243                     <JUMP + COND63>
244 PHRASE64
245                     <SET MODE18 0 (TYPE FIX)>
246                     <SET TEMP26 MODE18>
247 COND63
248                     <PUSH TEMP26>
249                     <DEAD TEMP26>
250                     <PUSH MODE18>
251                     <DEAD MODE18>
252                     <SET NEW?17 BUF?14>
253                     <DEAD BUF?14>
254                     <TYPE? NEW?17 <TYPE-CODE FALSE> + PHRASE73>
255                     <VEQUAL? BSZ20 7 - PHRASE69 (TYPE FIX)>
256                     <FRAME '\1aT$REQUEST-BUFFER>
257                     <PUSH %<>>
258                     <PUSH 'T$STRING>
259                     <PUSH %<>>
260                     <CALL '\1aT$REQUEST-BUFFER 3 = NEW?17>
261                     <JUMP + PHRASE73>
262 PHRASE69
263                     <VEQUAL? BSZ20 8 - PHRASE71 (TYPE FIX)>
264                     <DEAD BSZ20>
265                     <FRAME '\1aT$REQUEST-BUFFER>
266                     <PUSH %<>>
267                     <PUSH 'T$BYTES>
268                     <PUSH %<>>
269                     <CALL '\1aT$REQUEST-BUFFER 3 = NEW?17>
270                     <JUMP + PHRASE73>
271 PHRASE71
272                     <FRAME '\1aT$REQUEST-BUFFER>
273                     <PUSH %<>>
274                     <PUSH 'T$UVECTOR>
275                     <PUSH %<>>
276                     <CALL '\1aT$REQUEST-BUFFER 3 = NEW?17>
277 PHRASE73
278                     <PUSH NEW?17>
279                     <PUSH 0>
280                     <PUSH 0>
281                     <PUSH %<>>
282                     <PUSH NEW?17>
283                     <DEAD NEW?17>
284                     <UBLOCK <TYPE-CODE VECTOR> 10 = TEMP26>
285                     <CHTYPE TEMP26 <TYPE-CODE I$DISK-CHANNEL> = TEMP27>
286                     <DEAD TEMP26>
287 PHRASE60
288                     <RETURN TEMP27>
289                     <DEAD TEMP27>
290                     <END \1aX$DISK-OPEN>
291 #WORD *22230733063*
292 <GFCN \1aX$DISK-FLUSH ("VALUE" I$DISK-CHANNEL CHANNEL ANY) CHANNEL4 OPER5>
293                     <TEMP DATA6:I$DISK-CHANNEL TEMP8>
294                     <INTGO>
295                     <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
296                     <DEAD CHANNEL4>
297                     <NTHUV DATA6 1 = TEMP8 (TYPE FIX)>
298                     <OR TEMP8 #WORD *4000000000* = TEMP8>
299                     <SYSOP 'CLOSF TEMP8 = TEMP8>
300                     <NTHUV DATA6 10 = TEMP8>
301                     <TYPE? TEMP8 <TYPE-CODE FALSE> + PHRASE10>
302                     <DEAD TEMP8>
303                     <FRAME '\1aT$RELEASE-BUFFER>
304                     <NTHUV DATA6 10 = STACK>
305                     <CALL '\1aT$RELEASE-BUFFER 1>
306 PHRASE10
307                     <PUTUV DATA6 6 %<>>
308                     <PUTUV DATA6 10 %<>>
309                     <PUTUV DATA6 1 -1 (TYPE FIX)>
310                     <RETURN DATA6>
311                     <DEAD DATA6>
312                     <END \1aX$DISK-FLUSH>
313 #WORD *2755256421*
314 <GFCN \1aX$DISK-CLOSE ("VALUE" I$DISK-CHANNEL CHANNEL ANY) CHANNEL4 OPER5>
315                     <TEMP DATA6:I$DISK-CHANNEL TEMP11>
316                     <INTGO>
317                     <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
318                     <DEAD CHANNEL4>
319                     <FRAME '\1aI$FLUSH-BUFFER>
320                     <PUSH DATA6>
321                     <CALL '\1aI$FLUSH-BUFFER 1>
322                     <NTHUV DATA6 10 = TEMP11>
323                     <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE10>
324                     <DEAD TEMP11>
325                     <FRAME '\1aT$RELEASE-BUFFER>
326                     <NTHUV DATA6 10 = STACK>
327                     <CALL '\1aT$RELEASE-BUFFER 1>
328 PHRASE10
329                     <PUTUV DATA6 10 %<>>
330                     <PUTUV DATA6 6 %<>>
331                     <NTHUV DATA6 1 = TEMP11 (TYPE FIX)>
332                     <SYSOP 'CLOSF TEMP11 = TEMP11>
333                     <PUTUV DATA6 1 -1 (TYPE FIX)>
334                     <RETURN DATA6>
335                     <DEAD DATA6>
336                     <END \1aX$DISK-CLOSE>
337 \\f
338
339 #WORD *7477130320*
340 <GFCN \1aX$DISK-READ-BYTE ("VALUE" ANY CHANNEL ANY) CHANNEL4 OPER5>
341                     <TEMP DATA6:I$DISK-CHANNEL BUF7 TEMP15:FIX BYTE8 TEMP26>
342                     <INTGO>
343                     <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
344                     <DEAD CHANNEL4>
345                     <NTHUV DATA6 6 = BUF7>
346                     <TYPE? BUF7 <TYPE-CODE FALSE> - PHRASE11>
347                     <NTHUV DATA6 1 = TEMP15 (TYPE FIX)>
348                     <SYSOP 'BIN TEMP15 (RETURN 2) = BYTE8>
349                     <DEAD TEMP15>
350                     <SET BUF7 BYTE8>
351                     <TYPE? BUF7 <TYPE-CODE FALSE> + PHRASE34>
352                     <NTHUV DATA6 4 = TEMP15 (TYPE FIX)>
353                     <ADD TEMP15 1 = TEMP15 (TYPE FIX)>
354                     <PUTUV DATA6 4 TEMP15 (TYPE FIX)>
355                     <DEAD TEMP15>
356                     <NTHUV DATA6 4 = TEMP15 (TYPE FIX)>
357                     <PUTUV DATA6 5 TEMP15 (TYPE FIX)>
358                     <DEAD TEMP15>
359                     <NTHUV DATA6 3 = TEMP15 (TYPE FIX)>
360                     <DEAD DATA6>
361                     <VEQUAL? TEMP15 7 - PHRASE17 (TYPE FIX)>
362                     <DEAD TEMP15>
363                     <CHTYPE BYTE8 <TYPE-CODE CHARACTER> = BUF7>
364                     <DEAD BYTE8>
365                     <RETURN BUF7>
366                     <DEAD BUF7>
367 PHRASE17
368                     <RETURN BYTE8>
369                     <DEAD BYTE8>
370 PHRASE11
371                     <SET BYTE8 %<> (TYPE FALSE)>
372                     <LOOP>
373 AGAIN21
374                     <INTGO>
375                     <NTHUV DATA6 7 = TEMP15 (TYPE FIX)>
376                     <VEQUAL? TEMP15 0 + PHRASE23 (TYPE FIX)>
377                     <NTH1 BUF7 = BYTE8>
378                     <NTHUV DATA6 4 = TEMP26 (TYPE FIX)>
379                     <ADD TEMP26 1 = TEMP26 (TYPE FIX)>
380                     <PUTUV DATA6 4 TEMP26 (TYPE FIX)>
381                     <DEAD TEMP26>
382                     <TYPE? BUF7 <TYPE-CODE STRING> - PHRASE28>
383                     <RESTUS BUF7 1 = TEMP26 (TYPE STRING)>
384                     <DEAD BUF7>
385                     <JUMP + PHRASE30>
386 PHRASE28
387                     <TYPE? BUF7 <TYPE-CODE UVECTOR> - PHRASE29>
388                     <RESTUU BUF7 1 = TEMP26 (TYPE UVECTOR)>
389                     <DEAD BUF7>
390                     <JUMP + PHRASE30>
391 PHRASE29
392                     <TYPE? BUF7 <TYPE-CODE BYTES> + TAG31>
393                     <SET TEMP26 %<> (TYPE FALSE)>
394                     <JUMP + PHRASE30>
395 TAG31
396                     <RESTUB BUF7 1 = TEMP26 (TYPE BYTES)>
397                     <DEAD BUF7>
398 PHRASE30
399                     <PUTUV DATA6 6 TEMP26>
400                     <DEAD TEMP26>
401                     <SUB TEMP15 1 = TEMP26 (TYPE FIX)>
402                     <DEAD TEMP15>
403                     <PUTUV DATA6 7 TEMP26 (TYPE FIX)>
404                     <DEAD DATA6 TEMP26>
405                     <RETURN BYTE8>
406                     <DEAD BYTE8>
407 PHRASE23
408                     <VEQUAL? BYTE8 0 + PHRASE33>
409                     <DEAD BYTE8>
410                     <RETURN %<>>
411 PHRASE33
412                     <FRAME '\1aI$READ-BUFFER>
413                     <PUSH DATA6>
414                     <CALL '\1aI$READ-BUFFER 1>
415                     <NTHUV DATA6 6 = BUF7>
416                     <SET BYTE8 'T (TYPE ATOM)>
417                     <JUMP + AGAIN21>
418 PHRASE34
419                     <RETURN BUF7>
420                     <DEAD BUF7>
421                     <END \1aX$DISK-READ-BYTE>
422 #WORD *15766212063*
423 <GFCN \1aI$DO-SOUT ("VALUE" <OR FALSE FIX> FIX ANY FIX) JFN4 BUF5 LEN6>
424                     <TEMP TEMP12 VAL7>
425                     <INTGO>
426                     <VEQUAL? LEN6 0 - PHRASE9 (TYPE FIX)>
427                     <RETURN 0>
428 PHRASE9
429                     <SUB 0 LEN6 = TEMP12 (TYPE FIX)>
430                     <DEAD LEN6>
431                     <SYSOP 'SOUT JFN4 BUF5 TEMP12 = VAL7>
432                     <DEAD JFN4 TEMP12>
433                     <SET TEMP12 VAL7>
434                     <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE13>
435                     <LENU BUF5 = TEMP12>
436                     <DEAD BUF5>
437                     <LENU VAL7 = VAL7>
438                     <SUB TEMP12 VAL7 = TEMP12 (TYPE FIX)>
439                     <DEAD VAL7>
440 PHRASE13
441                     <RETURN TEMP12>
442                     <DEAD TEMP12>
443                     <END \1aI$DO-SOUT>
444 #WORD *34362617271*
445 <GFCN \1aI$DO-SIN ("VALUE" <OR FALSE FIX> FIX ANY FIX FIX) JFN4 BUF5 LEN6 START7>
446                     <TEMP TEMP14 TEMP16 TEMP17:FIX>
447                     <INTGO>
448                     <VEQUAL? LEN6 0 - PHRASE11 (TYPE FIX)>
449                     <RETURN 0>
450 PHRASE11
451                     <SUB 0 LEN6 = TEMP16 (TYPE FIX)>
452                     <DEAD LEN6>
453                     <SYSOP 'SIN-JSYS JFN4 BUF5 TEMP16 = TEMP14>
454                     <DEAD TEMP16>
455                     <TYPE? TEMP14 <TYPE-CODE FALSE> + PHRASE15>
456                     <LENU BUF5 = TEMP16>
457                     <DEAD BUF5>
458                     <LENU TEMP14 = TEMP17>
459                     <DEAD TEMP14>
460                     <SUB TEMP16 TEMP17 = TEMP14 (TYPE FIX)>
461                     <DEAD TEMP16 TEMP17>
462                     <RETURN TEMP14>
463                     <DEAD TEMP14>
464 PHRASE15
465                     <SYSOP 'GTSTS JFN4 (RETURN 2) = TEMP16>
466                     <AND TEMP16 #WORD *1000000000* = TEMP17>
467                     <DEAD TEMP16>
468                     <VEQUAL? TEMP17 0 + PHRASE20 (TYPE FIX)>
469                     <DEAD TEMP17>
470                     <SYSOP 'RFPTR JFN4 (RETURN 2) = TEMP17>
471                     <DEAD JFN4>
472                     <SUB TEMP17 START7 = TEMP14 (TYPE FIX)>
473                     <DEAD TEMP17 START7>
474                     <RETURN TEMP14>
475                     <DEAD TEMP14>
476 PHRASE20
477                     <RETURN TEMP14>
478                     <DEAD TEMP14>
479                     <END \1aI$DO-SIN>
480 #WORD *23044741142*
481 <GFCN \1aI$READ-BUFFER ("VALUE" I$DISK-CHANNEL I$DISK-CHANNEL) DATA4>
482                     <TEMP JFN5 OB7 TEMP12>
483                     <INTGO>
484                     <NTHUV DATA4 1 = JFN5 (TYPE FIX)>
485                     <NTHUV DATA4 10 = OB7>
486                     <NTHUV DATA4 9 = TEMP12>
487                     <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE11>
488                     <DEAD TEMP12>
489                     <FRAME '\1aI$FLUSH-BUFFER>
490                     <PUSH DATA4>
491                     <CALL '\1aI$FLUSH-BUFFER 1>
492 PHRASE11
493                     <FRAME '\1aI$DO-SIN>
494                     <PUSH JFN5>
495                     <DEAD JFN5>
496                     <PUSH OB7>
497                     <TYPE? OB7 <TYPE-CODE STRING> - PHRASE18>
498                     <LENUS OB7 = TEMP12 (TYPE FIX)>
499                     <JUMP + COND17>
500 PHRASE18
501                     <TYPE? OB7 <TYPE-CODE UVECTOR> - PHRASE19>
502                     <LENUU OB7 = TEMP12 (TYPE FIX)>
503                     <JUMP + COND17>
504 PHRASE19
505                     <LENUB OB7 = TEMP12 (TYPE FIX)>
506 COND17
507                     <PUSH TEMP12>
508                     <DEAD TEMP12>
509                     <NTHUV DATA4 5 = STACK (TYPE FIX)>
510                     <CALL '\1aI$DO-SIN 4 = JFN5>
511                     <TYPE? JFN5 <TYPE-CODE FALSE> - PHRASE15>
512                     <FRAME '\1aERROR>
513                     <PUSH '@ERROR-ON-READ>
514                     <PUSH JFN5>
515                     <PUSH 'I$READ-BUFFER>
516                     <CALL '\1aERROR 3>
517 PHRASE15
518                     <PUTUV DATA4 6 OB7>
519                     <DEAD OB7>
520                     <NTHUV DATA4 5 = TEMP12 (TYPE FIX)>
521                     <ADD TEMP12 JFN5 = TEMP12 (TYPE FIX)>
522                     <PUTUV DATA4 5 TEMP12 (TYPE FIX)>
523                     <DEAD TEMP12>
524                     <PUTUV DATA4 7 JFN5 (TYPE FIX)>
525                     <PUTUV DATA4 8 JFN5 (TYPE FIX)>
526                     <DEAD JFN5>
527                     <RETURN DATA4>
528                     <DEAD DATA4>
529                     <END \1aI$READ-BUFFER>
530 #WORD *6155110244*
531 <GFCN \1aX$DISK-READ-BUFFER ("VALUE" <OR FALSE FIX> CHANNEL ANY <OR <PRIMTYPE STRING> <PRIMTYPE BYTES> <PRIMTYPE UVECTOR>> "OPTIONAL" FIX FIX) CHANNEL7 OPER8 BUFFER9 CT10 CONT11>
532                     <OPT-DISPATCH 3 %<> OPT4 OPT5 OPT6>
533 OPT4
534                     <PUSH #T$UNBOUND 0>
535 OPT5
536                     <PUSH 0>
537 OPT6
538                     <TEMP DATA12:I$DISK-CHANNEL IBUF13 TEMP18 PT17:FIX TEMP32 RD41:FIX BC15:FIX>
539                     <INTGO>
540                     <NTHUV CHANNEL7 5 = DATA12 (TYPE I$DISK-CHANNEL)>
541                     <DEAD CHANNEL7>
542                     <NTHUV DATA12 6 = IBUF13>
543                     <TYPE BUFFER9 = TEMP18>
544                     <AND TEMP18 #WORD *7* = PT17>
545                     <DEAD TEMP18>
546                     <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE20>
547                     <TYPE IBUF13 = TEMP18>
548                     <AND TEMP18 #WORD *7* = TEMP18>
549                     <VEQUAL? TEMP18 PT17 + PHRASE20 (TYPE FIX)>
550                     <DEAD TEMP18>
551                     <FRAME '\1aERROR>
552                     <PUSH '@BUFFER-IS-WRONG-TYPE>
553                     <FRAME '\1aTYPE>
554                     <PUSH BUFFER9>
555                     <CALL '\1aTYPE 1 = STACK>
556                     <PUSH 'I$DISK-READ-BUFFER>
557                     <CALL '\1aERROR 3>
558 PHRASE20
559                     <TYPE? CT10 <TYPE-CODE UNBOUND> - PHRASE25>
560                     <VEQUAL? PT17 5 - CASE28>
561                     <LENUS BUFFER9 = TEMP18 (TYPE FIX)>
562                     <JUMP + CASEND27>
563 CASE28
564                     <VEQUAL? PT17 6 - CASE29>
565                     <LENUU BUFFER9 = TEMP18 (TYPE FIX)>
566                     <JUMP + CASEND27>
567 CASE29
568                     <VEQUAL? PT17 4 - CASE30>
569                     <LENUB BUFFER9 = TEMP18 (TYPE FIX)>
570                     <JUMP + CASEND27>
571 CASE30
572                     <SET TEMP18 %<> (TYPE FALSE)>
573 CASEND27
574                     <SET CT10 TEMP18>
575                     <DEAD TEMP18>
576 PHRASE25
577                     <SET TEMP18 CT10>
578                     <DEAD CT10>
579                     <LENU BUFFER9 = TEMP32>
580                     <GRTR? TEMP18 TEMP32 - TAG33>
581                     <SET TEMP18 TEMP32 (TYPE FIX)>
582                     <DEAD TEMP32>
583 TAG33
584                     <SET CT10 TEMP18>
585                     <DEAD TEMP18>
586                     <VEQUAL? CT10 0 - PHRASE35 (TYPE FIX)>
587                     <RETURN 0>
588 PHRASE35
589                     <SET RD41 0 (TYPE FIX)>
590                     <LOOP>
591 AGAIN43
592                     <INTGO>
593                     <TYPE? IBUF13 <TYPE-CODE FALSE> + CASE55>
594                     <NTHUV DATA12 7 = BC15 (TYPE FIX)>
595                     <VEQUAL? BC15 0 + CASE55 (TYPE FIX)>
596                     <SET TEMP18 BC15>
597                     <GRTR? TEMP18 CT10 - TAG50>
598                     <SET TEMP18 CT10 (TYPE FIX)>
599 TAG50
600                     <VEQUAL? PT17 5 - CASE53>
601                     <SET TEMP32 IBUF13>
602                     <MOVE-STRING TEMP32 BUFFER9 TEMP18 (NO-OVERLAP %<>)>
603                     <DEAD TEMP32>
604                     <ADD RD41 TEMP18 = RD41 (TYPE FIX)>
605                     <SUB CT10 TEMP18 = CT10 (TYPE FIX)>
606                     <RESTUS IBUF13 TEMP18 = TEMP32 (TYPE STRING)>
607                     <PUTUV DATA12 6 TEMP32>
608                     <DEAD TEMP32>
609                     <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
610                     <DEAD BC15>
611                     <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
612                     <DEAD TEMP32>
613                     <RESTUS BUFFER9 TEMP18 = BUFFER9 (TYPE STRING)>
614                     <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
615                     <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
616                     <DEAD TEMP18>
617                     <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
618                     <DEAD TEMP32>
619                     <JUMP + CASE55>
620 CASE53
621                     <VEQUAL? PT17 6 - CASE54>
622                     <SET TEMP32 IBUF13>
623                     <MOVE-WORDS TEMP32 BUFFER9 TEMP18 (TYPE UVECTOR) (DIRECTION %<>)>
624                     <DEAD TEMP32>
625                     <ADD RD41 TEMP18 = RD41 (TYPE FIX)>
626                     <SUB CT10 TEMP18 = CT10 (TYPE FIX)>
627                     <RESTUU IBUF13 TEMP18 = TEMP32 (TYPE UVECTOR)>
628                     <PUTUV DATA12 6 TEMP32>
629                     <DEAD TEMP32>
630                     <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
631                     <DEAD BC15>
632                     <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
633                     <DEAD TEMP32>
634                     <RESTUU BUFFER9 TEMP18 = BUFFER9 (TYPE UVECTOR)>
635                     <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
636                     <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
637                     <DEAD TEMP18>
638                     <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
639                     <DEAD TEMP32>
640                     <JUMP + CASE55>
641 CASE54
642                     <VEQUAL? PT17 4 - CASE55>
643                     <SET TEMP32 IBUF13>
644                     <MOVE-STRING TEMP32 BUFFER9 TEMP18 (NO-OVERLAP %<>)>
645                     <DEAD TEMP32>
646                     <ADD RD41 TEMP18 = RD41 (TYPE FIX)>
647                     <SUB CT10 TEMP18 = CT10 (TYPE FIX)>
648                     <RESTUB IBUF13 TEMP18 = TEMP32 (TYPE BYTES)>
649                     <PUTUV DATA12 6 TEMP32>
650                     <DEAD TEMP32>
651                     <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
652                     <DEAD BC15>
653                     <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
654                     <DEAD TEMP32>
655                     <RESTUB BUFFER9 TEMP18 = BUFFER9 (TYPE BYTES)>
656                     <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
657                     <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
658                     <DEAD TEMP18>
659                     <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
660                     <DEAD TEMP32>
661 CASE55
662                     <VEQUAL? CT10 0 + PHRASE58 (TYPE FIX)>
663                     <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE62>
664                     <VEQUAL? PT17 5 - CASE66>
665                     <NTHUV DATA12 10 = TEMP32 (TYPE STRING)>
666                     <LENUS TEMP32 = TEMP32 (TYPE FIX)>
667                     <JUMP + CASEND65>
668 CASE66
669                     <VEQUAL? PT17 6 - CASE67>
670                     <NTHUV DATA12 10 = TEMP32 (TYPE UVECTOR)>
671                     <LENUU TEMP32 = TEMP32 (TYPE FIX)>
672                     <JUMP + CASEND65>
673 CASE67
674                     <VEQUAL? PT17 4 - CASE68>
675                     <NTHUV DATA12 10 = TEMP32 (TYPE BYTES)>
676                     <LENUB TEMP32 = TEMP32 (TYPE FIX)>
677                     <JUMP + CASEND65>
678 CASE68
679                     <SET TEMP32 %<> (TYPE FALSE)>
680 CASEND65
681                     <LESS? CT10 TEMP32 - PHRASE62 (TYPE FIX)>
682                     <DEAD TEMP32>
683                     <FRAME '\1aI$READ-BUFFER>
684                     <PUSH DATA12>
685                     <CALL '\1aI$READ-BUFFER 1>
686                     <NTHUV DATA12 7 = TEMP32 (TYPE FIX)>
687                     <VEQUAL? TEMP32 0 - PHRASE72 (TYPE FIX)>
688                     <DEAD TEMP32>
689                     <RETURN RD41>
690                     <DEAD RD41>
691 PHRASE72
692                     <NTHUV DATA12 6 = IBUF13>
693                     <JUMP + AGAIN43>
694 PHRASE62
695                     <FRAME '\1aI$DO-SIN>
696                     <NTHUV DATA12 1 = STACK (TYPE FIX)>
697                     <PUSH BUFFER9>
698                     <DEAD BUFFER9>
699                     <PUSH CT10>
700                     <DEAD CT10>
701                     <NTHUV DATA12 5 = STACK (TYPE FIX)>
702                     <CALL '\1aI$DO-SIN 4 = TEMP18>
703                     <TYPE? TEMP18 <TYPE-CODE FALSE> + PHRASE75>
704                     <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
705                     <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
706                     <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
707                     <DEAD TEMP32>
708                     <NTHUV DATA12 5 = TEMP32 (TYPE FIX)>
709                     <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
710                     <PUTUV DATA12 5 TEMP32 (TYPE FIX)>
711                     <DEAD TEMP32>
712                     <PUTUV DATA12 8 0 (TYPE FIX)>
713                     <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE78>
714                     <DEAD IBUF13>
715                     <NTHUV DATA12 10 = TEMP32>
716                     <PUTUV DATA12 6 TEMP32>
717                     <DEAD DATA12 TEMP32>
718 PHRASE78
719                     <ADD TEMP18 RD41 = TEMP32 (TYPE FIX)>
720                     <DEAD TEMP18 RD41>
721                     <RETURN TEMP32>
722                     <DEAD TEMP32>
723 PHRASE75
724                     <RETURN TEMP18>
725                     <DEAD TEMP18>
726 PHRASE58
727                     <RETURN RD41>
728                     <DEAD RD41>
729                     <END \1aX$DISK-READ-BUFFER>
730 \\f
731
732 #WORD *23472577025*
733 <GFCN \1aX$DISK-WRITE-BYTE ("VALUE" <OR FIX CHARACTER> CHANNEL ANY <OR FIX CHARACTER>) CHANNEL4 OPER5 BYTE6>
734                     <TEMP DATA7:I$DISK-CHANNEL BUF8 TEMP10 PT9 TEMP41>
735                     <INTGO>
736                     <NTHUV CHANNEL4 5 = DATA7 (TYPE I$DISK-CHANNEL)>
737                     <NTHUV DATA7 6 = BUF8>
738                     <TYPE BUF8 = TEMP10>
739                     <AND TEMP10 #WORD *7* = PT9>
740                     <DEAD TEMP10>
741                     <NTHUV DATA7 2 = TEMP10 (TYPE FIX)>
742                     <AND TEMP10 #WORD *120000* = TEMP10>
743                     <VEQUAL? TEMP10 0 - PHRASE12 (TYPE FIX)>
744                     <DEAD TEMP10>
745                     <FRAME '\1aERROR>
746                     <PUSH '@CHANNEL-NOT-OPEN-FOR-WRITING>
747                     <PUSH CHANNEL4>
748                     <DEAD CHANNEL4>
749                     <PUSH 'I$DISK-WRITE-BYTE>
750                     <CALL '\1aERROR 3>
751 PHRASE12
752                     <TYPE? BUF8 <TYPE-CODE FALSE> - PHRASE17>
753                     <NTHUV DATA7 1 = TEMP10 (TYPE FIX)>
754                     <SYSOP 'BOUT TEMP10 BYTE6>
755                     <DEAD TEMP10>
756                     <NTHUV DATA7 4 = TEMP10 (TYPE FIX)>
757                     <ADD TEMP10 1 = TEMP10 (TYPE FIX)>
758                     <PUTUV DATA7 4 TEMP10 (TYPE FIX)>
759                     <DEAD TEMP10>
760                     <NTHUV DATA7 5 = TEMP10 (TYPE FIX)>
761                     <ADD TEMP10 1 = TEMP10 (TYPE FIX)>
762                     <PUTUV DATA7 5 TEMP10 (TYPE FIX)>
763                     <DEAD DATA7 TEMP10>
764                     <RETURN BYTE6>
765                     <DEAD BYTE6>
766 PHRASE17
767                     <VEQUAL? PT9 5 - CASE23>
768                     <EMPUS? BUF8 - TAG26 (TYPE STRING)>
769                     <SET TEMP10 'T (TYPE ATOM)>
770                     <JUMP + CASEND22>
771 TAG26
772                     <SET TEMP10 %<> (TYPE FALSE)>
773                     <JUMP + CASEND22>
774 CASE23
775                     <VEQUAL? PT9 6 - CASE24>
776                     <EMPUU? BUF8 - TAG29 (TYPE UVECTOR)>
777                     <SET TEMP10 'T (TYPE ATOM)>
778                     <JUMP + CASEND22>
779 TAG29
780                     <SET TEMP10 %<> (TYPE FALSE)>
781                     <JUMP + CASEND22>
782 CASE24
783                     <VEQUAL? PT9 4 - CASE25>
784                     <EMPUB? BUF8 - TAG31 (TYPE BYTES)>
785                     <SET TEMP10 'T (TYPE ATOM)>
786                     <JUMP + CASEND22>
787 TAG31
788                     <SET TEMP10 %<> (TYPE FALSE)>
789                     <JUMP + CASEND22>
790 CASE25
791                     <SET TEMP10 %<> (TYPE FALSE)>
792 CASEND22
793                     <TYPE? TEMP10 <TYPE-CODE FALSE> + PHRASE20>
794                     <DEAD TEMP10>
795                     <FRAME '\1aI$FLUSH-BUFFER>
796                     <PUSH DATA7>
797                     <CALL '\1aI$FLUSH-BUFFER 1>
798                     <NTHUV DATA7 6 = BUF8>
799 PHRASE20
800                     <VEQUAL? PT9 5 - CASE36>
801                     <PUTUS BUF8 1 BYTE6>
802                     <RESTUS BUF8 1 = BUF8 (TYPE STRING)>
803                     <PUTUV DATA7 6 BUF8>
804                     <NTHUV DATA7 8 = TEMP10 (TYPE FIX)>
805                     <NTHUV DATA7 10 = PT9 (TYPE STRING)>
806                     <LENUS PT9 = PT9 (TYPE FIX)>
807                     <LENUS BUF8 = TEMP41 (TYPE FIX)>
808                     <DEAD BUF8>
809                     <SUB PT9 TEMP41 = PT9 (TYPE FIX)>
810                     <DEAD TEMP41>
811                     <LESS? TEMP10 PT9 - TAG42>
812                     <SET TEMP10 PT9 (TYPE FIX)>
813                     <DEAD PT9>
814 TAG42
815                     <PUTUV DATA7 8 TEMP10 (TYPE FIX)>
816                     <DEAD TEMP10>
817                     <JUMP + CASE38>
818 CASE36
819                     <VEQUAL? PT9 6 - CASE37>
820                     <PUTUU BUF8 1 BYTE6>
821                     <RESTUU BUF8 1 = BUF8 (TYPE UVECTOR)>
822                     <PUTUV DATA7 6 BUF8>
823                     <NTHUV DATA7 8 = PT9 (TYPE FIX)>
824                     <NTHUV DATA7 10 = TEMP41 (TYPE UVECTOR)>
825                     <LENUU TEMP41 = TEMP41 (TYPE FIX)>
826                     <LENUU BUF8 = TEMP10 (TYPE FIX)>
827                     <DEAD BUF8>
828                     <SUB TEMP41 TEMP10 = TEMP41 (TYPE FIX)>
829                     <DEAD TEMP10>
830                     <LESS? PT9 TEMP41 - TAG44>
831                     <SET PT9 TEMP41 (TYPE FIX)>
832                     <DEAD TEMP41>
833 TAG44
834                     <PUTUV DATA7 8 PT9 (TYPE FIX)>
835                     <DEAD PT9>
836                     <JUMP + CASE38>
837 CASE37
838                     <VEQUAL? PT9 4 - CASE38>
839                     <DEAD PT9>
840                     <PUTUB BUF8 1 BYTE6>
841                     <RESTUB BUF8 1 = BUF8 (TYPE BYTES)>
842                     <PUTUV DATA7 6 BUF8>
843                     <NTHUV DATA7 8 = TEMP41 (TYPE FIX)>
844                     <NTHUV DATA7 10 = TEMP10 (TYPE BYTES)>
845                     <LENUB TEMP10 = TEMP10 (TYPE FIX)>
846                     <LENUB BUF8 = PT9 (TYPE FIX)>
847                     <DEAD BUF8>
848                     <SUB TEMP10 PT9 = TEMP10 (TYPE FIX)>
849                     <DEAD PT9>
850                     <LESS? TEMP41 TEMP10 - TAG46>
851                     <SET TEMP41 TEMP10 (TYPE FIX)>
852                     <DEAD TEMP10>
853 TAG46
854                     <PUTUV DATA7 8 TEMP41 (TYPE FIX)>
855                     <DEAD TEMP41>
856 CASE38
857                     <NTHUV DATA7 4 = PT9 (TYPE FIX)>
858                     <ADD PT9 1 = PT9 (TYPE FIX)>
859                     <PUTUV DATA7 4 PT9 (TYPE FIX)>
860                     <DEAD PT9>
861                     <PUTUV DATA7 9 'T>
862                     <NTHUV DATA7 7 = TEMP10 (TYPE FIX)>
863                     <SUB TEMP10 1 = PT9 (TYPE FIX)>
864                     <DEAD TEMP10>
865                     <LESS? PT9 0 - TAG47>
866                     <SET PT9 0 (TYPE FIX)>
867 TAG47
868                     <PUTUV DATA7 7 PT9 (TYPE FIX)>
869                     <DEAD DATA7 PT9>
870                     <RETURN BYTE6>
871                     <DEAD BYTE6>
872                     <END \1aX$DISK-WRITE-BYTE>
873 #WORD *22434316071*
874 <GFCN \1aI$FLUSH-BUFFER ("VALUE" <OR FALSE I$DISK-CHANNEL> I$DISK-CHANNEL) DATA4>
875                     <TEMP BUF5 JFN8:FIX TEMP11 PT10:FIX TB9 TEMP22>
876                     <INTGO>
877                     <NTHUV DATA4 6 = BUF5>
878                     <NTHUV DATA4 1 = JFN8 (TYPE FIX)>
879                     <TYPE BUF5 = TEMP11>
880                     <AND TEMP11 #WORD *7* = PT10>
881                     <DEAD TEMP11>
882                     <NTHUV DATA4 9 = TEMP11>
883                     <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE13>
884                     <DEAD TEMP11>
885                     <PUTUV DATA4 9 %<>>
886                     <SET TEMP11 BUF5>
887                     <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE37>
888                     <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
889                     <VEQUAL? PT10 5 - CASE19>
890                     <NTHUV DATA4 10 = TB9 (TYPE STRING)>
891                     <LENUS TB9 = TEMP22 (TYPE FIX)>
892                     <LENUS BUF5 = PT10 (TYPE FIX)>
893                     <DEAD BUF5>
894                     <SUB TEMP22 PT10 = TEMP22 (TYPE FIX)>
895                     <DEAD PT10>
896                     <JUMP + CASEND18>
897 CASE19
898                     <VEQUAL? PT10 6 - CASE20>
899                     <NTHUV DATA4 10 = TB9 (TYPE UVECTOR)>
900                     <LENUU TB9 = PT10 (TYPE FIX)>
901                     <LENUU BUF5 = TEMP22 (TYPE FIX)>
902                     <DEAD BUF5>
903                     <SUB PT10 TEMP22 = TEMP22 (TYPE FIX)>
904                     <DEAD PT10>
905                     <JUMP + CASEND18>
906 CASE20
907                     <VEQUAL? PT10 4 - CASE21>
908                     <DEAD PT10>
909                     <NTHUV DATA4 10 = TB9 (TYPE BYTES)>
910                     <LENUB TB9 = TEMP22 (TYPE FIX)>
911                     <LENUB BUF5 = PT10 (TYPE FIX)>
912                     <DEAD BUF5>
913                     <SUB TEMP22 PT10 = TEMP22 (TYPE FIX)>
914                     <DEAD PT10>
915                     <JUMP + CASEND18>
916 CASE21
917                     <SET TEMP22 %<> (TYPE FALSE)>
918 CASEND18
919                     <SUB TEMP11 TEMP22 = PT10 (TYPE FIX)>
920                     <DEAD TEMP11 TEMP22>
921                     <NTHUV DATA4 5 = TEMP11 (TYPE FIX)>
922                     <VEQUAL? PT10 TEMP11 + PHRASE26 (TYPE FIX)>
923                     <DEAD TEMP11>
924                     <SYSOP 'SFPTR JFN8 PT10>
925                     <PUTUV DATA4 5 PT10 (TYPE FIX)>
926                     <DEAD PT10>
927 PHRASE26
928                     <NTHUV DATA4 8 = PT10 (TYPE FIX)>
929                     <VEQUAL? PT10 0 + PHRASE28 (TYPE FIX)>
930                     <SUB 0 PT10 = TEMP11 (TYPE FIX)>
931                     <SYSOP 'SOUT JFN8 TB9 TEMP11>
932                     <DEAD TEMP11>
933 PHRASE28
934                     <NTHUV DATA4 5 = TEMP11 (TYPE FIX)>
935                     <ADD TEMP11 PT10 = PT10 (TYPE FIX)>
936                     <DEAD TEMP11>
937                     <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
938                     <VEQUAL? PT10 TEMP11 + PHRASE32 (TYPE FIX)>
939                     <DEAD TEMP11>
940                     <NTHUV DATA4 4 = PT10 (TYPE FIX)>
941                     <PUTUV DATA4 5 PT10 (TYPE FIX)>
942                     <SYSOP 'SFPTR JFN8 PT10>
943                     <DEAD JFN8 PT10>
944                     <JUMP + COND31>
945 PHRASE32
946                     <PUTUV DATA4 5 PT10 (TYPE FIX)>
947                     <DEAD PT10>
948 COND31
949                     <PUTUV DATA4 6 TB9>
950                     <DEAD TB9>
951                     <PUTUV DATA4 7 0 (TYPE FIX)>
952                     <PUTUV DATA4 8 0 (TYPE FIX)>
953                     <RETURN DATA4>
954                     <DEAD DATA4>
955 PHRASE13
956                     <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
957                     <NTHUV DATA4 5 = PT10 (TYPE FIX)>
958                     <VEQUAL? TEMP11 PT10 + PHRASE35 (TYPE FIX)>
959                     <DEAD TEMP11 PT10>
960                     <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
961                     <SYSOP 'SFPTR JFN8 TEMP11>
962                     <DEAD JFN8 TEMP11>
963 PHRASE35
964                     <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
965                     <PUTUV DATA4 5 TEMP11 (TYPE FIX)>
966                     <DEAD TEMP11>
967                     <PUTUV DATA4 7 0 (TYPE FIX)>
968                     <PUTUV DATA4 8 0 (TYPE FIX)>
969                     <SET TEMP11 BUF5>
970                     <DEAD BUF5>
971                     <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE37>
972                     <NTHUV DATA4 10 = TEMP11>
973                     <PUTUV DATA4 6 TEMP11>
974                     <DEAD TEMP11>
975                     <SET TEMP11 DATA4>
976                     <DEAD DATA4>
977 PHRASE37
978                     <RETURN TEMP11>
979                     <DEAD TEMP11>
980                     <END \1aI$FLUSH-BUFFER>
981 #WORD *32433161303*
982 <GFCN \1aX$DISK-WRITE-BUFFER ("VALUE" ANY CHANNEL ANY <OR <PRIMTYPE UVECTOR> <PRIMTYPE STRING> <PRIMTYPE BYTES>> "OPTIONAL" FIX) CHANNEL6 OPER7 BUFFER8 LEN9>
983                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
984 OPT4
985                     <PUSH #T$UNBOUND 0>
986 OPT5
987                     <TEMP TEMP16 PT10:FIX DATA11:I$DISK-CHANNEL IBUF12 JFN13:FIX TEMP25 RD52:FIX DONE55:FIX TEMP78>
988                     <INTGO>
989                     <TYPE BUFFER8 = TEMP16>
990                     <AND TEMP16 #WORD *7* = PT10>
991                     <DEAD TEMP16>
992                     <NTHUV CHANNEL6 5 = DATA11 (TYPE I$DISK-CHANNEL)>
993                     <NTHUV DATA11 6 = IBUF12>
994                     <NTHUV DATA11 1 = JFN13 (TYPE FIX)>
995                     <TYPE? LEN9 <TYPE-CODE UNBOUND> - PHRASE18>
996                     <VEQUAL? PT10 5 - CASE21>
997                     <LENUS BUFFER8 = TEMP16 (TYPE FIX)>
998                     <JUMP + CASEND20>
999 CASE21
1000                     <VEQUAL? PT10 6 - CASE22>
1001                     <LENUU BUFFER8 = TEMP16 (TYPE FIX)>
1002                     <JUMP + CASEND20>
1003 CASE22
1004                     <VEQUAL? PT10 4 - CASE23>
1005                     <LENUB BUFFER8 = TEMP16 (TYPE FIX)>
1006                     <JUMP + CASEND20>
1007 CASE23
1008                     <SET TEMP16 %<> (TYPE FALSE)>
1009 CASEND20
1010                     <SET LEN9 TEMP16>
1011                     <DEAD TEMP16>
1012 PHRASE18
1013                     <SET TEMP16 LEN9>
1014                     <DEAD LEN9>
1015                     <LENU BUFFER8 = TEMP25>
1016                     <GRTR? TEMP16 TEMP25 - TAG26>
1017                     <SET TEMP16 TEMP25 (TYPE FIX)>
1018                     <DEAD TEMP25>
1019 TAG26
1020                     <SET LEN9 TEMP16>
1021                     <DEAD TEMP16>
1022                     <NTHUV DATA11 2 = TEMP25 (TYPE FIX)>
1023                     <AND TEMP25 #WORD *120000* = TEMP25>
1024                     <VEQUAL? TEMP25 0 - PHRASE28 (TYPE FIX)>
1025                     <DEAD TEMP25>
1026                     <FRAME '\1aERROR>
1027                     <PUSH '@CHANNEL-NOT-OPEN-FOR-WRITING>
1028                     <PUSH CHANNEL6>
1029                     <DEAD CHANNEL6>
1030                     <PUSH 'I$DISK-WRITE-BUFFER>
1031                     <CALL '\1aERROR 3>
1032 PHRASE28
1033                     <VEQUAL? LEN9 0 - PHRASE33 (TYPE FIX)>
1034                     <RETURN 0>
1035 PHRASE33
1036                     <TYPE? IBUF12 <TYPE-CODE FALSE> - PHRASE36>
1037                     <FRAME '\1aI$DO-SOUT>
1038                     <PUSH JFN13>
1039                     <DEAD JFN13>
1040                     <PUSH BUFFER8>
1041                     <DEAD BUFFER8>
1042                     <PUSH LEN9>
1043                     <DEAD LEN9>
1044                     <CALL '\1aI$DO-SOUT 3 = TEMP16>
1045                     <SET TEMP25 TEMP16>
1046                     <TYPE? TEMP25 <TYPE-CODE FALSE> + EXIT51>
1047                     <NTHUV DATA11 4 = TEMP25 (TYPE FIX)>
1048                     <ADD TEMP25 TEMP16 = TEMP25 (TYPE FIX)>
1049                     <PUTUV DATA11 4 TEMP25 (TYPE FIX)>
1050                     <DEAD TEMP25>
1051                     <NTHUV DATA11 5 = TEMP25 (TYPE FIX)>
1052                     <ADD TEMP25 TEMP16 = TEMP25 (TYPE FIX)>
1053                     <PUTUV DATA11 5 TEMP25 (TYPE FIX)>
1054                     <DEAD DATA11 TEMP25>
1055                     <RETURN TEMP16>
1056                     <DEAD TEMP16>
1057 PHRASE36
1058                     <TYPE IBUF12 = TEMP25>
1059                     <AND TEMP25 #WORD *7* = TEMP25>
1060                     <VEQUAL? PT10 TEMP25 + PHRASE41 (TYPE FIX)>
1061                     <DEAD TEMP25>
1062                     <FRAME '\1aERROR>
1063                     <PUSH '@BUFFER-IS-WRONG-TYPE>
1064                     <FRAME '\1aTYPE>
1065                     <PUSH BUFFER8>
1066                     <DEAD BUFFER8>
1067                     <CALL '\1aTYPE 1 = STACK>
1068                     <PUSH 'I$DISK-WRITE-BUFFER>
1069                     <CALL '\1aERROR 3 = TEMP25>
1070                     <RETURN TEMP25>
1071                     <DEAD TEMP25>
1072 PHRASE41
1073                     <VEQUAL? PT10 5 - CASE47>
1074                     <NTHUV DATA11 10 = TEMP25 (TYPE STRING)>
1075                     <LENUS TEMP25 = TEMP25 (TYPE FIX)>
1076                     <JUMP + CASEND46>
1077 CASE47
1078                     <VEQUAL? PT10 6 - CASE48>
1079                     <NTHUV DATA11 10 = TEMP16 (TYPE UVECTOR)>
1080                     <LENUU TEMP16 = TEMP25 (TYPE FIX)>
1081                     <DEAD TEMP16>
1082                     <JUMP + CASEND46>
1083 CASE48
1084                     <VEQUAL? PT10 4 - CASE49>
1085                     <NTHUV DATA11 10 = TEMP16 (TYPE BYTES)>
1086                     <LENUB TEMP16 = TEMP25 (TYPE FIX)>
1087                     <DEAD TEMP16>
1088                     <JUMP + CASEND46>
1089 CASE49
1090                     <SET TEMP25 %<> (TYPE FALSE)>
1091 CASEND46
1092                     <SET RD52 0 (TYPE FIX)>
1093                     <LOOP>
1094 AGAIN56
1095                     <INTGO>
1096                     <VEQUAL? PT10 5 - CASE61>
1097                     <EMPUS? IBUF12 - TAG64 (TYPE STRING)>
1098                     <SET TEMP16 'T (TYPE ATOM)>
1099                     <JUMP + CASEND60>
1100 TAG64
1101                     <SET TEMP16 %<> (TYPE FALSE)>
1102                     <JUMP + CASEND60>
1103 CASE61
1104                     <VEQUAL? PT10 6 - CASE62>
1105                     <EMPUU? IBUF12 - TAG67 (TYPE UVECTOR)>
1106                     <SET TEMP16 'T (TYPE ATOM)>
1107                     <JUMP + CASEND60>
1108 TAG67
1109                     <SET TEMP16 %<> (TYPE FALSE)>
1110                     <JUMP + CASEND60>
1111 CASE62
1112                     <VEQUAL? PT10 4 - CASE63>
1113                     <EMPUB? IBUF12 - TAG69 (TYPE BYTES)>
1114                     <SET TEMP16 'T (TYPE ATOM)>
1115                     <JUMP + CASEND60>
1116 TAG69
1117                     <SET TEMP16 %<> (TYPE FALSE)>
1118                     <JUMP + CASEND60>
1119 CASE63
1120                     <SET TEMP16 %<> (TYPE FALSE)>
1121 CASEND60
1122                     <TYPE? TEMP16 <TYPE-CODE FALSE> - CASE75>
1123                     <DEAD TEMP16>
1124                     <VEQUAL? PT10 5 - CASE73>
1125                     <LENUS IBUF12 = TEMP16 (TYPE FIX)>
1126                     <GRTR? TEMP16 LEN9 - TAG77>
1127                     <SET TEMP16 LEN9 (TYPE FIX)>
1128 TAG77
1129                     <SET TEMP78 BUFFER8>
1130                     <MOVE-STRING TEMP78 IBUF12 TEMP16 (NO-OVERLAP %<>)>
1131                     <DEAD TEMP78>
1132                     <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
1133                     <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
1134                     <RESTUS BUFFER8 TEMP16 = BUFFER8 (TYPE STRING)>
1135                     <PUTUV DATA11 9 'T>
1136                     <RESTUS IBUF12 TEMP16 = IBUF12 (TYPE STRING)>
1137                     <PUTUV DATA11 6 IBUF12>
1138                     <NTHUV DATA11 4 = TEMP78 (TYPE FIX)>
1139                     <ADD TEMP78 TEMP16 = TEMP78 (TYPE FIX)>
1140                     <PUTUV DATA11 4 TEMP78 (TYPE FIX)>
1141                     <DEAD TEMP78>
1142                     <NTHUV DATA11 7 = DONE55 (TYPE FIX)>
1143                     <SUB DONE55 TEMP16 = TEMP78 (TYPE FIX)>
1144                     <DEAD DONE55 TEMP16>
1145                     <LESS? TEMP78 0 - TAG80>
1146                     <SET TEMP78 0 (TYPE FIX)>
1147 TAG80
1148                     <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
1149                     <DEAD TEMP78>
1150                     <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
1151                     <LENUS IBUF12 = TEMP78 (TYPE FIX)>
1152                     <DEAD IBUF12>
1153                     <SUB TEMP25 TEMP78 = TEMP16 (TYPE FIX)>
1154                     <DEAD TEMP78>
1155                     <LESS? DONE55 TEMP16 - TAG83>
1156                     <SET DONE55 TEMP16 (TYPE FIX)>
1157                     <DEAD TEMP16>
1158 TAG83
1159                     <PUTUV DATA11 8 DONE55 (TYPE FIX)>
1160                     <DEAD DONE55>
1161                     <JUMP + CASE75>
1162 CASE73
1163                     <VEQUAL? PT10 6 - CASE74>
1164                     <LENUU IBUF12 = TEMP16 (TYPE FIX)>
1165                     <GRTR? TEMP16 LEN9 - TAG84>
1166                     <SET TEMP16 LEN9 (TYPE FIX)>
1167 TAG84
1168                     <SET TEMP78 BUFFER8>
1169                     <MOVE-WORDS TEMP78 IBUF12 TEMP16 (TYPE UVECTOR) (DIRECTION %<>)>
1170                     <DEAD TEMP78>
1171                     <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
1172                     <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
1173                     <RESTUU BUFFER8 TEMP16 = BUFFER8 (TYPE UVECTOR)>
1174                     <PUTUV DATA11 9 'T>
1175                     <RESTUU IBUF12 TEMP16 = IBUF12 (TYPE UVECTOR)>
1176                     <PUTUV DATA11 6 IBUF12>
1177                     <NTHUV DATA11 4 = TEMP78 (TYPE FIX)>
1178                     <ADD TEMP78 TEMP16 = TEMP78 (TYPE FIX)>
1179                     <PUTUV DATA11 4 TEMP78 (TYPE FIX)>
1180                     <DEAD TEMP78>
1181                     <NTHUV DATA11 7 = DONE55 (TYPE FIX)>
1182                     <SUB DONE55 TEMP16 = TEMP78 (TYPE FIX)>
1183                     <DEAD DONE55 TEMP16>
1184                     <LESS? TEMP78 0 - TAG86>
1185                     <SET TEMP78 0 (TYPE FIX)>
1186 TAG86
1187                     <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
1188                     <DEAD TEMP78>
1189                     <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
1190                     <LENUU IBUF12 = TEMP78 (TYPE FIX)>
1191                     <DEAD IBUF12>
1192                     <SUB TEMP25 TEMP78 = TEMP16 (TYPE FIX)>
1193                     <DEAD TEMP78>
1194                     <LESS? DONE55 TEMP16 - TAG89>
1195                     <SET DONE55 TEMP16 (TYPE FIX)>
1196                     <DEAD TEMP16>
1197 TAG89
1198                     <PUTUV DATA11 8 DONE55 (TYPE FIX)>
1199                     <DEAD DONE55>
1200                     <JUMP + CASE75>
1201 CASE74
1202                     <VEQUAL? PT10 4 - CASE75>
1203                     <LENUB IBUF12 = TEMP16 (TYPE FIX)>
1204                     <GRTR? TEMP16 LEN9 - TAG90>
1205                     <SET TEMP16 LEN9 (TYPE FIX)>
1206 TAG90
1207                     <SET TEMP78 BUFFER8>
1208                     <MOVE-STRING TEMP78 IBUF12 TEMP16 (NO-OVERLAP %<>)>
1209                     <DEAD TEMP78>
1210                     <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
1211                     <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
1212                     <RESTUB BUFFER8 TEMP16 = BUFFER8 (TYPE BYTES)>
1213                     <PUTUV DATA11 9 'T>
1214                     <RESTUB IBUF12 TEMP16 = IBUF12 (TYPE BYTES)>
1215                     <PUTUV DATA11 6 IBUF12>
1216                     <NTHUV DATA11 4 = TEMP78 (TYPE FIX)>
1217                     <ADD TEMP78 TEMP16 = TEMP78 (TYPE FIX)>
1218                     <PUTUV DATA11 4 TEMP78 (TYPE FIX)>
1219                     <DEAD TEMP78>
1220                     <NTHUV DATA11 7 = DONE55 (TYPE FIX)>
1221                     <SUB DONE55 TEMP16 = TEMP78 (TYPE FIX)>
1222                     <DEAD DONE55 TEMP16>
1223                     <LESS? TEMP78 0 - TAG92>
1224                     <SET TEMP78 0 (TYPE FIX)>
1225 TAG92
1226                     <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
1227                     <DEAD TEMP78>
1228                     <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
1229                     <LENUB IBUF12 = IBUF12 (TYPE FIX)>
1230                     <SUB TEMP25 IBUF12 = IBUF12 (TYPE FIX)>
1231                     <LESS? DONE55 IBUF12 - TAG95>
1232                     <SET DONE55 IBUF12 (TYPE FIX)>
1233                     <DEAD IBUF12>
1234 TAG95
1235                     <PUTUV DATA11 8 DONE55 (TYPE FIX)>
1236                     <DEAD DONE55>
1237 CASE75
1238                     <VEQUAL? LEN9 0 + PHRASE97 (TYPE FIX)>
1239                     <FRAME '\1aI$FLUSH-BUFFER>
1240                     <PUSH DATA11>
1241                     <CALL '\1aI$FLUSH-BUFFER 1>
1242                     <GRTR? LEN9 TEMP25 - PHRASE102 (TYPE FIX)>
1243                     <FRAME '\1aI$DO-SOUT>
1244                     <PUSH JFN13>
1245                     <DEAD JFN13>
1246                     <PUSH BUFFER8>
1247                     <DEAD BUFFER8>
1248                     <PUSH LEN9>
1249                     <DEAD LEN9>
1250                     <CALL '\1aI$DO-SOUT 3 = TEMP16>
1251                     <NTHUV DATA11 5 = IBUF12 (TYPE FIX)>
1252                     <ADD IBUF12 TEMP16 = IBUF12 (TYPE FIX)>
1253                     <PUTUV DATA11 5 IBUF12 (TYPE FIX)>
1254                     <DEAD IBUF12>
1255                     <NTHUV DATA11 4 = IBUF12 (TYPE FIX)>
1256                     <ADD IBUF12 TEMP16 = IBUF12 (TYPE FIX)>
1257                     <PUTUV DATA11 4 IBUF12 (TYPE FIX)>
1258                     <DEAD DATA11 IBUF12>
1259                     <ADD TEMP16 RD52 = TEMP25 (TYPE FIX)>
1260                     <DEAD TEMP16 RD52>
1261                     <RETURN TEMP25>
1262                     <DEAD TEMP25>
1263 PHRASE102
1264                     <NTHUV DATA11 6 = IBUF12>
1265                     <JUMP + AGAIN56>
1266 PHRASE97
1267                     <RETURN RD52>
1268                     <DEAD RD52>
1269 EXIT51
1270                     <RETURN TEMP25>
1271                     <DEAD TEMP25>
1272                     <END \1aX$DISK-WRITE-BUFFER>
1273 \\f
1274
1275 #WORD *5624272712*
1276 <GFCN \1aX$DISK-ACCESS ("VALUE" <OR FALSE FIX> CHANNEL ANY "OPTIONAL" <OR FIX FALSE>) CHANNEL6 OPER7 PTR8>
1277                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1278 OPT4
1279                     <PUSH #T$UNBOUND 0>
1280 OPT5
1281                     <TEMP DATA9:I$DISK-CHANNEL JFN10:FIX OPTR11:FIX BUF12 TEMP17 PT16:FIX L15:FIX TL14:FIX>
1282                     <INTGO>
1283                     <NTHUV CHANNEL6 5 = DATA9 (TYPE I$DISK-CHANNEL)>
1284                     <DEAD CHANNEL6>
1285                     <NTHUV DATA9 1 = JFN10 (TYPE FIX)>
1286                     <NTHUV DATA9 4 = OPTR11 (TYPE FIX)>
1287                     <NTHUV DATA9 6 = BUF12>
1288                     <TYPE BUF12 = TEMP17>
1289                     <AND TEMP17 #WORD *7* = PT16>
1290                     <DEAD TEMP17>
1291                     <TYPE? BUF12 <TYPE-CODE FALSE> + CASE24>
1292                     <VEQUAL? PT16 5 - CASE22>
1293                     <LENUS BUF12 = L15 (TYPE FIX)>
1294                     <NTHUV DATA9 10 = TEMP17 (TYPE STRING)>
1295                     <LENUS TEMP17 = TL14 (TYPE FIX)>
1296                     <DEAD TEMP17>
1297                     <JUMP + CASE24>
1298 CASE22
1299                     <VEQUAL? PT16 6 - CASE23>
1300                     <LENUU BUF12 = L15 (TYPE FIX)>
1301                     <NTHUV DATA9 10 = TEMP17 (TYPE UVECTOR)>
1302                     <LENUU TEMP17 = TL14 (TYPE FIX)>
1303                     <DEAD TEMP17>
1304                     <JUMP + CASE24>
1305 CASE23
1306                     <VEQUAL? PT16 4 - CASE24>
1307                     <LENUB BUF12 = L15 (TYPE FIX)>
1308                     <NTHUV DATA9 10 = TEMP17 (TYPE BYTES)>
1309                     <LENUB TEMP17 = TL14 (TYPE FIX)>
1310                     <DEAD TEMP17>
1311 CASE24
1312                     <TYPE? PTR8 <TYPE-CODE UNBOUND> + BOOL27>
1313                     <TYPE? PTR8 <TYPE-CODE FALSE> - PHRASE26>
1314 BOOL27
1315                     <RETURN OPTR11>
1316                     <DEAD OPTR11>
1317 PHRASE26
1318                     <VEQUAL? PTR8 OPTR11 + PHRASE39 (TYPE FIX)>
1319                     <TYPE? BUF12 <TYPE-CODE FALSE> + PHRASE28>
1320                     <SUB TL14 L15 = TEMP17 (TYPE FIX)>
1321                     <DEAD TL14 L15>
1322                     <SUB OPTR11 TEMP17 = TEMP17 (TYPE FIX)>
1323                     <LESS? PTR8 TEMP17 + PHRASE28 (TYPE FIX)>
1324                     <DEAD TEMP17>
1325                     <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
1326                     <ADD TEMP17 OPTR11 = TEMP17 (TYPE FIX)>
1327                     <GRTR? PTR8 TEMP17 + PHRASE28 (TYPE FIX)>
1328                     <DEAD TEMP17>
1329                     <GRTR? PTR8 OPTR11 - PHRASE32 (TYPE FIX)>
1330                     <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
1331                     <SUB PTR8 OPTR11 = JFN10 (TYPE FIX)>
1332                     <DEAD OPTR11>
1333                     <SUB TEMP17 JFN10 = TEMP17 (TYPE FIX)>
1334                     <PUTUV DATA9 7 TEMP17 (TYPE FIX)>
1335                     <DEAD TEMP17>
1336                     <VEQUAL? PT16 5 - CASE35>
1337                     <RESTUS BUF12 JFN10 = TEMP17 (TYPE STRING)>
1338                     <DEAD BUF12 JFN10>
1339                     <PUTUV DATA9 6 TEMP17>
1340                     <DEAD TEMP17>
1341                     <JUMP + PHRASE38>
1342 CASE35
1343                     <VEQUAL? PT16 4 - CASE36>
1344                     <RESTUB BUF12 JFN10 = TEMP17 (TYPE BYTES)>
1345                     <DEAD BUF12 JFN10>
1346                     <PUTUV DATA9 6 TEMP17>
1347                     <DEAD TEMP17>
1348                     <JUMP + PHRASE38>
1349 CASE36
1350                     <VEQUAL? PT16 6 - PHRASE38>
1351                     <DEAD PT16>
1352                     <RESTUU BUF12 JFN10 = TEMP17 (TYPE UVECTOR)>
1353                     <DEAD BUF12 JFN10>
1354                     <PUTUV DATA9 6 TEMP17>
1355                     <DEAD TEMP17>
1356                     <JUMP + PHRASE38>
1357 PHRASE32
1358                     <SUB OPTR11 PTR8 = JFN10 (TYPE FIX)>
1359                     <DEAD OPTR11>
1360                     <BACKU BUF12 JFN10 = TEMP17>
1361                     <DEAD BUF12>
1362                     <PUTUV DATA9 6 TEMP17>
1363                     <DEAD TEMP17>
1364                     <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
1365                     <ADD TEMP17 JFN10 = TEMP17 (TYPE FIX)>
1366                     <DEAD JFN10>
1367                     <PUTUV DATA9 7 TEMP17 (TYPE FIX)>
1368                     <DEAD TEMP17>
1369 PHRASE38
1370                     <PUTUV DATA9 4 PTR8 (TYPE FIX)>
1371                     <DEAD DATA9>
1372                     <RETURN PTR8>
1373                     <DEAD PTR8>
1374 PHRASE28
1375                     <FRAME '\1aI$FLUSH-BUFFER>
1376                     <PUSH DATA9>
1377                     <CALL '\1aI$FLUSH-BUFFER 1>
1378                     <SYSOP 'SFPTR JFN10 PTR8>
1379                     <VEQUAL? PTR8 -1 - PHRASE42 (TYPE FIX)>
1380                     <SYSOP 'RFPTR JFN10 (RETURN 2) = PTR8>
1381                     <DEAD JFN10>
1382 PHRASE42
1383                     <PUTUV DATA9 4 PTR8>
1384                     <PUTUV DATA9 5 PTR8>
1385                     <DEAD DATA9>
1386 PHRASE39
1387                     <RETURN PTR8>
1388                     <DEAD PTR8>
1389                     <END \1aX$DISK-ACCESS>
1390 #WORD *27671765672*
1391                     <GFCN \1aX$DISK-BUFOUT ("VALUE" CHANNEL CHANNEL ANY "OPTIONAL" <OR ATOM FALSE>) CHANNEL6 OPER7 FORCE?8>
1392                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1393 OPT4
1394                     <PUSH 'T>
1395 OPT5
1396                     <TEMP DATA9 TEMP12>
1397                     <INTGO>
1398                     <NTHUV CHANNEL6 5 = DATA9 (TYPE I$DISK-CHANNEL)>
1399                     <NTHUV DATA9 9 = TEMP12>
1400                     <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE11>
1401                     <DEAD TEMP12>
1402                     <FRAME '\1aI$FLUSH-BUFFER>
1403                     <PUSH DATA9>
1404                     <CALL '\1aI$FLUSH-BUFFER 1>
1405 PHRASE11
1406                     <TYPE? FORCE?8 <TYPE-CODE FALSE> + PHRASE15>
1407                     <DEAD FORCE?8>
1408                     <FRAME '\1aT$CLOSE-OPEN>
1409                     <NTHUV DATA9 1 = STACK (TYPE FIX)>
1410                     <NTHUV DATA9 2 = STACK (TYPE FIX)>
1411                     <NTHUV DATA9 3 = STACK (TYPE FIX)>
1412                     <CALL '\1aT$CLOSE-OPEN 3>
1413 PHRASE15
1414                     <NTHUV DATA9 2 = TEMP12 (TYPE FIX)>
1415                     <AND TEMP12 #WORD *20000* = TEMP12>
1416                     <VEQUAL? TEMP12 0 - PHRASE18 (TYPE FIX)>
1417                     <DEAD TEMP12>
1418                     <NTHUV DATA9 1 = TEMP12 (TYPE FIX)>
1419                     <NTHUV DATA9 5 = DATA9 (TYPE FIX)>
1420                     <SYSOP 'SFPTR TEMP12 DATA9>
1421                     <DEAD TEMP12 DATA9>
1422 PHRASE18
1423                     <RETURN CHANNEL6>
1424                     <DEAD CHANNEL6>
1425                     <END \1aX$DISK-BUFOUT>
1426
1427 #WORD *11411612773*
1428 <GFCN \1aX$DISK-FILE-LENGTH ("VALUE" ANY CHANNEL ANY "OPTIONAL" <OR FALSE FIX> FIX) CHANNEL7 OPER8 NEW-SIZE9 BSZ10>
1429                     <OPT-DISPATCH 2 %<> OPT4 OPT5 OPT6>
1430 OPT4
1431                     <PUSH %<>>
1432 OPT5
1433                     <PUSH 7>
1434 OPT6
1435                     <TEMP DATA11:I$DISK-CHANNEL TEMP23:FIX PGS20>
1436                     <INTGO>
1437                     <NTHUV CHANNEL7 5 = DATA11 (TYPE I$DISK-CHANNEL)>
1438                     <TYPE? NEW-SIZE9 <TYPE-CODE FALSE> + PHRASE13>
1439                     <VEQUAL? NEW-SIZE9 -1 - EXIT18 (TYPE FIX)>
1440                     <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
1441                     <SYSOP 'SIZEF TEMP23 (RETURN 3) = PGS20>
1442                     <DEAD TEMP23>
1443                     <DIV 36 BSZ10 = TEMP23 (TYPE FIX)>
1444                     <MUL TEMP23 PGS20 = TEMP23 (TYPE FIX)>
1445                     <DEAD PGS20>
1446                     <LSH TEMP23 9 = NEW-SIZE9 (TYPE FIX)>
1447 EXIT18
1448                     <IFSYS "VAX">
1449                     <NTHUV DATA11 1 = PGS20 (TYPE FIX)>
1450                     <PUTBITS PGS20 16 16 131081 = TEMP23>
1451                     <DEAD PGS20>
1452                     <ENDIF "VAX">
1453                     <IFSYS "TOPS20">
1454                     <NTHUV DATA11 1 = PGS20 (TYPE FIX)>
1455                     <PUTBITS PGS20 18 18 131081 = TEMP23>
1456                     <DEAD PGS20>
1457                     <ENDIF "TOPS20">
1458                     <LSH BSZ10 24 = PGS20 (TYPE FIX)>
1459                     <DEAD BSZ10>
1460                     <SYSOP 'CHFDB TEMP23 1056964608 PGS20>
1461                     <DEAD TEMP23>
1462                     <IFSYS "VAX">
1463                     <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
1464                     <PUTBITS TEMP23 16 16 10 = PGS20>
1465                     <DEAD TEMP23>
1466                     <ENDIF "VAX">
1467                     <IFSYS "TOPS20">
1468                     <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
1469                     <DEAD DATA11>
1470                     <PUTBITS TEMP23 18 18 10 = PGS20>
1471                     <DEAD TEMP23>
1472                     <ENDIF "TOPS20">
1473                     <SYSOP 'CHFDB PGS20 -1 NEW-SIZE9>
1474                     <DEAD PGS20>
1475                     <RETURN NEW-SIZE9>
1476                     <DEAD NEW-SIZE9>
1477 PHRASE13
1478                     <FRAME '\1aX$DISK-BUFOUT>
1479                     <PUSH CHANNEL7>
1480                     <DEAD CHANNEL7>
1481                     <PUSH OPER8>
1482                     <DEAD OPER8>
1483                     <PUSH 'T>
1484                     <CALL '\1aX$DISK-BUFOUT 3>
1485                     <FRAME '\1aT$GET-BYTE-COUNT>
1486                     <NTHUV DATA11 1 = STACK (TYPE FIX)>
1487                     <NTHUV DATA11 3 = STACK (TYPE FIX)>
1488                     <DEAD DATA11>
1489                     <CALL '\1aT$GET-BYTE-COUNT 2 = PGS20>
1490                     <RETURN PGS20>
1491                     <DEAD PGS20>
1492                     <END \1aX$DISK-FILE-LENGTH>
1493 \\f
1494
1495 #WORD *6444033505*
1496 <GFCN \1aX$DISK-PRINT-DATA ("VALUE" ATOM CHANNEL ANY ANY) CHANNEL4 OPER5 OUTCHAN6>
1497                     <TEMP DATA7:I$DISK-CHANNEL BUF8 TEMP31:FIX>
1498                     <INTGO>
1499                     <NTHUV CHANNEL4 5 = DATA7 (TYPE I$DISK-CHANNEL)>
1500                     <DEAD CHANNEL4>
1501                     <FRAME '\1aPRINC>
1502                     <PUSH "#DISK-CHANNEL [">
1503                     <PUSH OUTCHAN6>
1504                     <CALL '\1aPRINC 2>
1505                     <FRAME '\1aPRINC>
1506                     <PUSH "JFN:">
1507                     <PUSH OUTCHAN6>
1508                     <CALL '\1aPRINC 2>
1509                     <FRAME '\1aPRIN1>
1510                     <NTHUV DATA7 1 = STACK (TYPE FIX)>
1511                     <PUSH OUTCHAN6>
1512                     <CALL '\1aPRIN1 2>
1513                     <FRAME '\1aPRINC>
1514                     <PUSH " MODE:">
1515                     <PUSH OUTCHAN6>
1516                     <CALL '\1aPRINC 2>
1517                     <FRAME '\1aPRIN1>
1518                     <NTHUV DATA7 2 = STACK (TYPE FIX)>
1519                     <PUSH OUTCHAN6>
1520                     <CALL '\1aPRIN1 2>
1521                     <FRAME '\1aPRINC>
1522                     <PUSH " BSZ:">
1523                     <PUSH OUTCHAN6>
1524                     <CALL '\1aPRINC 2>
1525                     <FRAME '\1aPRIN1>
1526                     <NTHUV DATA7 3 = STACK (TYPE FIX)>
1527                     <PUSH OUTCHAN6>
1528                     <CALL '\1aPRIN1 2>
1529                     <FRAME '\1aPRINC>
1530                     <PUSH " PTR:">
1531                     <PUSH OUTCHAN6>
1532                     <CALL '\1aPRINC 2>
1533                     <FRAME '\1aPRIN1>
1534                     <NTHUV DATA7 4 = STACK (TYPE FIX)>
1535                     <PUSH OUTCHAN6>
1536                     <CALL '\1aPRIN1 2>
1537                     <FRAME '\1aPRINC>
1538                     <PUSH " SPTR:">
1539                     <PUSH OUTCHAN6>
1540                     <CALL '\1aPRINC 2>
1541                     <FRAME '\1aPRIN1>
1542                     <NTHUV DATA7 5 = STACK (TYPE FIX)>
1543                     <PUSH OUTCHAN6>
1544                     <CALL '\1aPRIN1 2>
1545                     <FRAME '\1aPRINC>
1546                     <PUSH " BUF:">
1547                     <PUSH OUTCHAN6>
1548                     <CALL '\1aPRINC 2>
1549                     <NTHUV DATA7 6 = BUF8>
1550                     <TYPE? BUF8 <TYPE-CODE FALSE> + PHRASE22>
1551                     <FRAME '\1aPRIN1>
1552                     <NTHUV DATA7 7 = STACK (TYPE FIX)>
1553                     <PUSH OUTCHAN6>
1554                     <CALL '\1aPRIN1 2>
1555                     <FRAME '\1aPRINC>
1556                     <PUSH !\/>
1557                     <PUSH OUTCHAN6>
1558                     <CALL '\1aPRINC 2>
1559                     <TYPE? BUF8 <TYPE-CODE STRING> - PHRASE26>
1560                     <DEAD BUF8>
1561                     <FRAME '\1aPRIN1>
1562                     <FRAME '\1aLENGTH>
1563                     <NTHUV DATA7 10 = STACK>
1564                     <CALL '\1aLENGTH 1 = BUF8>
1565                     <FRAME '\1aLENGTH>
1566                     <NTHUV DATA7 6 = STACK>
1567                     <CALL '\1aLENGTH 1 = TEMP31>
1568                     <SUB BUF8 TEMP31 = STACK (TYPE FIX)>
1569                     <DEAD BUF8 TEMP31>
1570                     <PUSH OUTCHAN6>
1571                     <CALL '\1aPRIN1 2>
1572                     <FRAME '\1aPRINC>
1573                     <PUSH !\/>
1574                     <PUSH OUTCHAN6>
1575                     <CALL '\1aPRINC 2>
1576                     <FRAME '\1aPRIN1>
1577                     <FRAME '\1aLENGTH>
1578                     <NTHUV DATA7 6 = STACK>
1579                     <DEAD DATA7>
1580                     <CALL '\1aLENGTH 1 = STACK>
1581                     <PUSH OUTCHAN6>
1582                     <CALL '\1aPRIN1 2>
1583                     <JUMP + PHRASE42>
1584 PHRASE26
1585                     <FRAME '\1aPRIN1>
1586                     <FRAME '\1aLENGTH>
1587                     <NTHUV DATA7 10 = STACK>
1588                     <CALL '\1aLENGTH 1 = TEMP31>
1589                     <FRAME '\1aLENGTH>
1590                     <NTHUV DATA7 6 = STACK>
1591                     <CALL '\1aLENGTH 1 = BUF8>
1592                     <SUB TEMP31 BUF8 = STACK (TYPE FIX)>
1593                     <DEAD TEMP31 BUF8>
1594                     <PUSH OUTCHAN6>
1595                     <CALL '\1aPRIN1 2>
1596                     <FRAME '\1aPRINC>
1597                     <PUSH !\/>
1598                     <PUSH OUTCHAN6>
1599                     <CALL '\1aPRINC 2>
1600                     <FRAME '\1aPRIN1>
1601                     <FRAME '\1aLENGTH>
1602                     <NTHUV DATA7 6 = STACK>
1603                     <DEAD DATA7>
1604                     <CALL '\1aLENGTH 1 = STACK>
1605                     <PUSH OUTCHAN6>
1606                     <CALL '\1aPRIN1 2>
1607                     <JUMP + PHRASE42>
1608 PHRASE22
1609                     <FRAME '\1aPRINC>
1610                     <PUSH "<>">
1611                     <PUSH OUTCHAN6>
1612                     <CALL '\1aPRINC 2>
1613 PHRASE42
1614                     <FRAME '\1aPRINC>
1615                     <PUSH !\]>
1616                     <PUSH OUTCHAN6>
1617                     <DEAD OUTCHAN6>
1618                     <CALL '\1aPRINC 2>
1619                     <RETURN 'T>
1620                     <END \1aX$DISK-PRINT-DATA>