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,
7 "Possible modes: READ, CREATE, MODIFY, APPEND/ASCII, BINARY, 8BIT"
10 <GFCN
\1aX$DISK-FILE-HANDLE ("VALUE" FIX CHANNEL ANY) CHANNEL4 OPR5>
13 <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
15 <NTHUV DATA6 1 = DATA6 (TYPE FIX)>
18 <END
\1aX$DISK-FILE-HANDLE>
20 <GFCN
\1aX$DISK-QUERY ("VALUE" <OR ATOM FALSE> CHANNEL ANY FIX) CHANNEL4 OPR5 BIT6>
23 <VEQUAL? BIT6 1 + TAG11 (TYPE FIX)>
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>
41 <TEMP (NEW?17 %<>) (APP?21 %<>) TEMP26 TEMP27 TEMP28 TEMP29 TEMP30 MODE18:FIX BSZ20:FIX>
43 <IFCAN "STRING-EQUAL?">
44 <STRING-EQUAL? MODS12 "READ" - PHRASE25>
45 <ENDIF "STRING-EQUAL?">
46 <IFCANNOT "STRING-EQUAL?">
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)>
53 <NTHUS TEMP26 1 = TEMP29>
54 <NTHUS TEMP27 1 = TEMP30>
55 <VEQUAL? TEMP29 TEMP30 - PHRASE25>
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)>
65 <IFCAN "STRING-EQUAL?">
66 <STRING-EQUAL? MODS12 "CREATE" - PHRASE32>
67 <ENDIF "STRING-EQUAL?">
68 <IFCANNOT "STRING-EQUAL?">
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)>
75 <NTHUS TEMP27 1 = TEMP29>
76 <NTHUS TEMP26 1 = TEMP28>
77 <VEQUAL? TEMP29 TEMP28 - PHRASE32>
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)>
88 <IFCAN "STRING-EQUAL?">
89 <STRING-EQUAL? MODS12 "MODIFY" - PHRASE35>
90 <ENDIF "STRING-EQUAL?">
91 <IFCANNOT "STRING-EQUAL?">
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)>
98 <NTHUS TEMP26 1 = TEMP29>
99 <NTHUS TEMP27 1 = TEMP30>
100 <VEQUAL? TEMP29 TEMP30 - PHRASE35>
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)>
110 <IFCAN "STRING-EQUAL?">
111 <STRING-EQUAL? MODS12 "APPEND" - PHRASE38>
112 <ENDIF "STRING-EQUAL?">
113 <IFCANNOT "STRING-EQUAL?">
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)>
120 <NTHUS TEMP27 1 = TEMP29>
121 <NTHUS TEMP26 1 = TEMP28>
122 <VEQUAL? TEMP29 TEMP28 - PHRASE38>
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)>
134 <PUSH '@ILLEGAL-MODE>
140 <IFCAN "STRING-EQUAL?">
141 <STRING-EQUAL? BYTES13 "ASCII" - PHRASE44>
142 <ENDIF "STRING-EQUAL?">
143 <IFCANNOT "STRING-EQUAL?">
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)>
150 <NTHUS TEMP26 1 = TEMP29>
151 <NTHUS TEMP27 1 = TEMP30>
152 <VEQUAL? TEMP29 TEMP30 - PHRASE44>
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)>
162 <IFCAN "STRING-EQUAL?">
163 <STRING-EQUAL? BYTES13 "8BIT" - PHRASE47>
164 <ENDIF "STRING-EQUAL?">
165 <IFCANNOT "STRING-EQUAL?">
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)>
172 <NTHUS TEMP27 1 = TEMP29>
173 <NTHUS TEMP26 1 = TEMP28>
174 <VEQUAL? TEMP29 TEMP28 - PHRASE47>
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)>
184 <IFCAN "STRING-EQUAL?">
185 <STRING-EQUAL? BYTES13 "BINARY" - PHRASE50>
186 <ENDIF "STRING-EQUAL?">
187 <IFCANNOT "STRING-EQUAL?">
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)>
194 <NTHUS TEMP26 1 = TEMP29>
195 <NTHUS TEMP27 1 = TEMP30>
196 <VEQUAL? TEMP29 TEMP30 - PHRASE50>
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)>
207 <PUSH '@ILLEGAL-BYTE-SIZE>
213 <TYPE? THAWED?15 <TYPE-CODE FALSE> + PHRASE56>
215 <OR MODE18 #WORD *2000* = MODE18>
217 <TYPE? NO-REF?16 <TYPE-CODE FALSE> + PHRASE58>
219 <OR MODE18 #WORD *400* = MODE18>
221 <FRAME '
\1aT$GET-JFN>
228 <CALL '
\1aT$GET-JFN 4 = NEW?17>
230 <TYPE? TEMP27 <TYPE-CODE FALSE> + PHRASE60>
235 <VEQUAL? APP?21 0 + PHRASE64>
237 <FRAME '
\1aT$GET-BYTE-COUNT>
241 <CALL '
\1aT$GET-BYTE-COUNT 2 = MODE18>
245 <SET MODE18 0 (TYPE FIX)>
254 <TYPE? NEW?17 <TYPE-CODE FALSE> + PHRASE73>
255 <VEQUAL? BSZ20 7 - PHRASE69 (TYPE FIX)>
256 <FRAME '
\1aT$REQUEST-BUFFER>
260 <CALL '
\1aT$REQUEST-BUFFER 3 = NEW?17>
263 <VEQUAL? BSZ20 8 - PHRASE71 (TYPE FIX)>
265 <FRAME '
\1aT$REQUEST-BUFFER>
269 <CALL '
\1aT$REQUEST-BUFFER 3 = NEW?17>
272 <FRAME '
\1aT$REQUEST-BUFFER>
276 <CALL '
\1aT$REQUEST-BUFFER 3 = NEW?17>
284 <UBLOCK <TYPE-CODE VECTOR> 10 = TEMP26>
285 <CHTYPE TEMP26 <TYPE-CODE I$DISK-CHANNEL> = TEMP27>
292 <GFCN
\1aX$DISK-FLUSH ("VALUE" I$DISK-CHANNEL CHANNEL ANY) CHANNEL4 OPER5>
293 <TEMP DATA6:I$DISK-CHANNEL TEMP8>
295 <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
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>
303 <FRAME '
\1aT$RELEASE-BUFFER>
304 <NTHUV DATA6 10 = STACK>
305 <CALL '
\1aT$RELEASE-BUFFER 1>
309 <PUTUV DATA6 1 -1 (TYPE FIX)>
312 <END
\1aX$DISK-FLUSH>
314 <GFCN
\1aX$DISK-CLOSE ("VALUE" I$DISK-CHANNEL CHANNEL ANY) CHANNEL4 OPER5>
315 <TEMP DATA6:I$DISK-CHANNEL TEMP11>
317 <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
319 <FRAME '
\1aI$FLUSH-BUFFER>
321 <CALL '
\1aI$FLUSH-BUFFER 1>
322 <NTHUV DATA6 10 = TEMP11>
323 <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE10>
325 <FRAME '
\1aT$RELEASE-BUFFER>
326 <NTHUV DATA6 10 = STACK>
327 <CALL '
\1aT$RELEASE-BUFFER 1>
331 <NTHUV DATA6 1 = TEMP11 (TYPE FIX)>
332 <SYSOP 'CLOSF TEMP11 = TEMP11>
333 <PUTUV DATA6 1 -1 (TYPE FIX)>
336 <END
\1aX$DISK-CLOSE>
340 <GFCN
\1aX$DISK-READ-BYTE ("VALUE" ANY CHANNEL ANY) CHANNEL4 OPER5>
341 <TEMP DATA6:I$DISK-CHANNEL BUF7 TEMP15:FIX BYTE8 TEMP26>
343 <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
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>
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)>
356 <NTHUV DATA6 4 = TEMP15 (TYPE FIX)>
357 <PUTUV DATA6 5 TEMP15 (TYPE FIX)>
359 <NTHUV DATA6 3 = TEMP15 (TYPE FIX)>
361 <VEQUAL? TEMP15 7 - PHRASE17 (TYPE FIX)>
363 <CHTYPE BYTE8 <TYPE-CODE CHARACTER> = BUF7>
371 <SET BYTE8 %<> (TYPE FALSE)>
375 <NTHUV DATA6 7 = TEMP15 (TYPE FIX)>
376 <VEQUAL? TEMP15 0 + PHRASE23 (TYPE FIX)>
378 <NTHUV DATA6 4 = TEMP26 (TYPE FIX)>
379 <ADD TEMP26 1 = TEMP26 (TYPE FIX)>
380 <PUTUV DATA6 4 TEMP26 (TYPE FIX)>
382 <TYPE? BUF7 <TYPE-CODE STRING> - PHRASE28>
383 <RESTUS BUF7 1 = TEMP26 (TYPE STRING)>
387 <TYPE? BUF7 <TYPE-CODE UVECTOR> - PHRASE29>
388 <RESTUU BUF7 1 = TEMP26 (TYPE UVECTOR)>
392 <TYPE? BUF7 <TYPE-CODE BYTES> + TAG31>
393 <SET TEMP26 %<> (TYPE FALSE)>
396 <RESTUB BUF7 1 = TEMP26 (TYPE BYTES)>
399 <PUTUV DATA6 6 TEMP26>
401 <SUB TEMP15 1 = TEMP26 (TYPE FIX)>
403 <PUTUV DATA6 7 TEMP26 (TYPE FIX)>
408 <VEQUAL? BYTE8 0 + PHRASE33>
412 <FRAME '
\1aI$READ-BUFFER>
414 <CALL '
\1aI$READ-BUFFER 1>
415 <NTHUV DATA6 6 = BUF7>
416 <SET BYTE8 'T (TYPE ATOM)>
421 <END
\1aX$DISK-READ-BYTE>
423 <GFCN
\1aI$DO-SOUT ("VALUE" <OR FALSE FIX> FIX ANY FIX) JFN4 BUF5 LEN6>
426 <VEQUAL? LEN6 0 - PHRASE9 (TYPE FIX)>
429 <SUB 0 LEN6 = TEMP12 (TYPE FIX)>
431 <SYSOP 'SOUT JFN4 BUF5 TEMP12 = VAL7>
434 <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE13>
438 <SUB TEMP12 VAL7 = TEMP12 (TYPE FIX)>
445 <GFCN
\1aI$DO-SIN ("VALUE" <OR FALSE FIX> FIX ANY FIX FIX) JFN4 BUF5 LEN6 START7>
446 <TEMP TEMP14 TEMP16 TEMP17:FIX>
448 <VEQUAL? LEN6 0 - PHRASE11 (TYPE FIX)>
451 <SUB 0 LEN6 = TEMP16 (TYPE FIX)>
453 <SYSOP 'SIN-JSYS JFN4 BUF5 TEMP16 = TEMP14>
455 <TYPE? TEMP14 <TYPE-CODE FALSE> + PHRASE15>
458 <LENU TEMP14 = TEMP17>
460 <SUB TEMP16 TEMP17 = TEMP14 (TYPE FIX)>
465 <SYSOP 'GTSTS JFN4 (RETURN 2) = TEMP16>
466 <AND TEMP16 #WORD *1000000000* = TEMP17>
468 <VEQUAL? TEMP17 0 + PHRASE20 (TYPE FIX)>
470 <SYSOP 'RFPTR JFN4 (RETURN 2) = TEMP17>
472 <SUB TEMP17 START7 = TEMP14 (TYPE FIX)>
481 <GFCN
\1aI$READ-BUFFER ("VALUE" I$DISK-CHANNEL I$DISK-CHANNEL) DATA4>
482 <TEMP JFN5 OB7 TEMP12>
484 <NTHUV DATA4 1 = JFN5 (TYPE FIX)>
485 <NTHUV DATA4 10 = OB7>
486 <NTHUV DATA4 9 = TEMP12>
487 <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE11>
489 <FRAME '
\1aI$FLUSH-BUFFER>
491 <CALL '
\1aI$FLUSH-BUFFER 1>
497 <TYPE? OB7 <TYPE-CODE STRING> - PHRASE18>
498 <LENUS OB7 = TEMP12 (TYPE FIX)>
501 <TYPE? OB7 <TYPE-CODE UVECTOR> - PHRASE19>
502 <LENUU OB7 = TEMP12 (TYPE FIX)>
505 <LENUB OB7 = TEMP12 (TYPE FIX)>
509 <NTHUV DATA4 5 = STACK (TYPE FIX)>
510 <CALL '
\1aI$DO-SIN 4 = JFN5>
511 <TYPE? JFN5 <TYPE-CODE FALSE> - PHRASE15>
513 <PUSH '@ERROR-ON-READ>
515 <PUSH 'I$READ-BUFFER>
520 <NTHUV DATA4 5 = TEMP12 (TYPE FIX)>
521 <ADD TEMP12 JFN5 = TEMP12 (TYPE FIX)>
522 <PUTUV DATA4 5 TEMP12 (TYPE FIX)>
524 <PUTUV DATA4 7 JFN5 (TYPE FIX)>
525 <PUTUV DATA4 8 JFN5 (TYPE FIX)>
529 <END
\1aI$READ-BUFFER>
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>
538 <TEMP DATA12:I$DISK-CHANNEL IBUF13 TEMP18 PT17:FIX TEMP32 RD41:FIX BC15:FIX>
540 <NTHUV CHANNEL7 5 = DATA12 (TYPE I$DISK-CHANNEL)>
542 <NTHUV DATA12 6 = IBUF13>
543 <TYPE BUFFER9 = TEMP18>
544 <AND TEMP18 #WORD *7* = PT17>
546 <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE20>
547 <TYPE IBUF13 = TEMP18>
548 <AND TEMP18 #WORD *7* = TEMP18>
549 <VEQUAL? TEMP18 PT17 + PHRASE20 (TYPE FIX)>
552 <PUSH '@BUFFER-IS-WRONG-TYPE>
555 <CALL '
\1aTYPE 1 = STACK>
556 <PUSH 'I$DISK-READ-BUFFER>
559 <TYPE? CT10 <TYPE-CODE UNBOUND> - PHRASE25>
560 <VEQUAL? PT17 5 - CASE28>
561 <LENUS BUFFER9 = TEMP18 (TYPE FIX)>
564 <VEQUAL? PT17 6 - CASE29>
565 <LENUU BUFFER9 = TEMP18 (TYPE FIX)>
568 <VEQUAL? PT17 4 - CASE30>
569 <LENUB BUFFER9 = TEMP18 (TYPE FIX)>
572 <SET TEMP18 %<> (TYPE FALSE)>
579 <LENU BUFFER9 = TEMP32>
580 <GRTR? TEMP18 TEMP32 - TAG33>
581 <SET TEMP18 TEMP32 (TYPE FIX)>
586 <VEQUAL? CT10 0 - PHRASE35 (TYPE FIX)>
589 <SET RD41 0 (TYPE FIX)>
593 <TYPE? IBUF13 <TYPE-CODE FALSE> + CASE55>
594 <NTHUV DATA12 7 = BC15 (TYPE FIX)>
595 <VEQUAL? BC15 0 + CASE55 (TYPE FIX)>
597 <GRTR? TEMP18 CT10 - TAG50>
598 <SET TEMP18 CT10 (TYPE FIX)>
600 <VEQUAL? PT17 5 - CASE53>
602 <MOVE-STRING TEMP32 BUFFER9 TEMP18 (NO-OVERLAP %<>)>
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>
609 <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
611 <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
613 <RESTUS BUFFER9 TEMP18 = BUFFER9 (TYPE STRING)>
614 <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
615 <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
617 <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
621 <VEQUAL? PT17 6 - CASE54>
623 <MOVE-WORDS TEMP32 BUFFER9 TEMP18 (TYPE UVECTOR) (DIRECTION %<>)>
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>
630 <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
632 <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
634 <RESTUU BUFFER9 TEMP18 = BUFFER9 (TYPE UVECTOR)>
635 <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
636 <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
638 <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
642 <VEQUAL? PT17 4 - CASE55>
644 <MOVE-STRING TEMP32 BUFFER9 TEMP18 (NO-OVERLAP %<>)>
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>
651 <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
653 <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
655 <RESTUB BUFFER9 TEMP18 = BUFFER9 (TYPE BYTES)>
656 <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
657 <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
659 <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
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)>
669 <VEQUAL? PT17 6 - CASE67>
670 <NTHUV DATA12 10 = TEMP32 (TYPE UVECTOR)>
671 <LENUU TEMP32 = TEMP32 (TYPE FIX)>
674 <VEQUAL? PT17 4 - CASE68>
675 <NTHUV DATA12 10 = TEMP32 (TYPE BYTES)>
676 <LENUB TEMP32 = TEMP32 (TYPE FIX)>
679 <SET TEMP32 %<> (TYPE FALSE)>
681 <LESS? CT10 TEMP32 - PHRASE62 (TYPE FIX)>
683 <FRAME '
\1aI$READ-BUFFER>
685 <CALL '
\1aI$READ-BUFFER 1>
686 <NTHUV DATA12 7 = TEMP32 (TYPE FIX)>
687 <VEQUAL? TEMP32 0 - PHRASE72 (TYPE FIX)>
692 <NTHUV DATA12 6 = IBUF13>
696 <NTHUV DATA12 1 = STACK (TYPE FIX)>
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)>
708 <NTHUV DATA12 5 = TEMP32 (TYPE FIX)>
709 <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
710 <PUTUV DATA12 5 TEMP32 (TYPE FIX)>
712 <PUTUV DATA12 8 0 (TYPE FIX)>
713 <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE78>
715 <NTHUV DATA12 10 = TEMP32>
716 <PUTUV DATA12 6 TEMP32>
719 <ADD TEMP18 RD41 = TEMP32 (TYPE FIX)>
729 <END
\1aX$DISK-READ-BUFFER>
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>
736 <NTHUV CHANNEL4 5 = DATA7 (TYPE I$DISK-CHANNEL)>
737 <NTHUV DATA7 6 = BUF8>
739 <AND TEMP10 #WORD *7* = PT9>
741 <NTHUV DATA7 2 = TEMP10 (TYPE FIX)>
742 <AND TEMP10 #WORD *120000* = TEMP10>
743 <VEQUAL? TEMP10 0 - PHRASE12 (TYPE FIX)>
746 <PUSH '@CHANNEL-NOT-OPEN-FOR-WRITING>
749 <PUSH 'I$DISK-WRITE-BYTE>
752 <TYPE? BUF8 <TYPE-CODE FALSE> - PHRASE17>
753 <NTHUV DATA7 1 = TEMP10 (TYPE FIX)>
754 <SYSOP 'BOUT TEMP10 BYTE6>
756 <NTHUV DATA7 4 = TEMP10 (TYPE FIX)>
757 <ADD TEMP10 1 = TEMP10 (TYPE FIX)>
758 <PUTUV DATA7 4 TEMP10 (TYPE FIX)>
760 <NTHUV DATA7 5 = TEMP10 (TYPE FIX)>
761 <ADD TEMP10 1 = TEMP10 (TYPE FIX)>
762 <PUTUV DATA7 5 TEMP10 (TYPE FIX)>
767 <VEQUAL? PT9 5 - CASE23>
768 <EMPUS? BUF8 - TAG26 (TYPE STRING)>
769 <SET TEMP10 'T (TYPE ATOM)>
772 <SET TEMP10 %<> (TYPE FALSE)>
775 <VEQUAL? PT9 6 - CASE24>
776 <EMPUU? BUF8 - TAG29 (TYPE UVECTOR)>
777 <SET TEMP10 'T (TYPE ATOM)>
780 <SET TEMP10 %<> (TYPE FALSE)>
783 <VEQUAL? PT9 4 - CASE25>
784 <EMPUB? BUF8 - TAG31 (TYPE BYTES)>
785 <SET TEMP10 'T (TYPE ATOM)>
788 <SET TEMP10 %<> (TYPE FALSE)>
791 <SET TEMP10 %<> (TYPE FALSE)>
793 <TYPE? TEMP10 <TYPE-CODE FALSE> + PHRASE20>
795 <FRAME '
\1aI$FLUSH-BUFFER>
797 <CALL '
\1aI$FLUSH-BUFFER 1>
798 <NTHUV DATA7 6 = BUF8>
800 <VEQUAL? PT9 5 - CASE36>
802 <RESTUS BUF8 1 = BUF8 (TYPE STRING)>
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)>
809 <SUB PT9 TEMP41 = PT9 (TYPE FIX)>
811 <LESS? TEMP10 PT9 - TAG42>
812 <SET TEMP10 PT9 (TYPE FIX)>
815 <PUTUV DATA7 8 TEMP10 (TYPE FIX)>
819 <VEQUAL? PT9 6 - CASE37>
821 <RESTUU BUF8 1 = BUF8 (TYPE UVECTOR)>
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)>
828 <SUB TEMP41 TEMP10 = TEMP41 (TYPE FIX)>
830 <LESS? PT9 TEMP41 - TAG44>
831 <SET PT9 TEMP41 (TYPE FIX)>
834 <PUTUV DATA7 8 PT9 (TYPE FIX)>
838 <VEQUAL? PT9 4 - CASE38>
841 <RESTUB BUF8 1 = BUF8 (TYPE BYTES)>
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)>
848 <SUB TEMP10 PT9 = TEMP10 (TYPE FIX)>
850 <LESS? TEMP41 TEMP10 - TAG46>
851 <SET TEMP41 TEMP10 (TYPE FIX)>
854 <PUTUV DATA7 8 TEMP41 (TYPE FIX)>
857 <NTHUV DATA7 4 = PT9 (TYPE FIX)>
858 <ADD PT9 1 = PT9 (TYPE FIX)>
859 <PUTUV DATA7 4 PT9 (TYPE FIX)>
862 <NTHUV DATA7 7 = TEMP10 (TYPE FIX)>
863 <SUB TEMP10 1 = PT9 (TYPE FIX)>
865 <LESS? PT9 0 - TAG47>
866 <SET PT9 0 (TYPE FIX)>
868 <PUTUV DATA7 7 PT9 (TYPE FIX)>
872 <END
\1aX$DISK-WRITE-BYTE>
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>
877 <NTHUV DATA4 6 = BUF5>
878 <NTHUV DATA4 1 = JFN8 (TYPE FIX)>
880 <AND TEMP11 #WORD *7* = PT10>
882 <NTHUV DATA4 9 = TEMP11>
883 <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE13>
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)>
894 <SUB TEMP22 PT10 = TEMP22 (TYPE FIX)>
898 <VEQUAL? PT10 6 - CASE20>
899 <NTHUV DATA4 10 = TB9 (TYPE UVECTOR)>
900 <LENUU TB9 = PT10 (TYPE FIX)>
901 <LENUU BUF5 = TEMP22 (TYPE FIX)>
903 <SUB PT10 TEMP22 = TEMP22 (TYPE FIX)>
907 <VEQUAL? PT10 4 - CASE21>
909 <NTHUV DATA4 10 = TB9 (TYPE BYTES)>
910 <LENUB TB9 = TEMP22 (TYPE FIX)>
911 <LENUB BUF5 = PT10 (TYPE FIX)>
913 <SUB TEMP22 PT10 = TEMP22 (TYPE FIX)>
917 <SET TEMP22 %<> (TYPE FALSE)>
919 <SUB TEMP11 TEMP22 = PT10 (TYPE FIX)>
921 <NTHUV DATA4 5 = TEMP11 (TYPE FIX)>
922 <VEQUAL? PT10 TEMP11 + PHRASE26 (TYPE FIX)>
924 <SYSOP 'SFPTR JFN8 PT10>
925 <PUTUV DATA4 5 PT10 (TYPE FIX)>
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>
934 <NTHUV DATA4 5 = TEMP11 (TYPE FIX)>
935 <ADD TEMP11 PT10 = PT10 (TYPE FIX)>
937 <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
938 <VEQUAL? PT10 TEMP11 + PHRASE32 (TYPE FIX)>
940 <NTHUV DATA4 4 = PT10 (TYPE FIX)>
941 <PUTUV DATA4 5 PT10 (TYPE FIX)>
942 <SYSOP 'SFPTR JFN8 PT10>
946 <PUTUV DATA4 5 PT10 (TYPE FIX)>
951 <PUTUV DATA4 7 0 (TYPE FIX)>
952 <PUTUV DATA4 8 0 (TYPE FIX)>
956 <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
957 <NTHUV DATA4 5 = PT10 (TYPE FIX)>
958 <VEQUAL? TEMP11 PT10 + PHRASE35 (TYPE FIX)>
960 <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
961 <SYSOP 'SFPTR JFN8 TEMP11>
964 <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
965 <PUTUV DATA4 5 TEMP11 (TYPE FIX)>
967 <PUTUV DATA4 7 0 (TYPE FIX)>
968 <PUTUV DATA4 8 0 (TYPE FIX)>
971 <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE37>
972 <NTHUV DATA4 10 = TEMP11>
973 <PUTUV DATA4 6 TEMP11>
980 <END
\1aI$FLUSH-BUFFER>
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>
987 <TEMP TEMP16 PT10:FIX DATA11:I$DISK-CHANNEL IBUF12 JFN13:FIX TEMP25 RD52:FIX DONE55:FIX TEMP78>
989 <TYPE BUFFER8 = TEMP16>
990 <AND TEMP16 #WORD *7* = PT10>
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)>
1000 <VEQUAL? PT10 6 - CASE22>
1001 <LENUU BUFFER8 = TEMP16 (TYPE FIX)>
1004 <VEQUAL? PT10 4 - CASE23>
1005 <LENUB BUFFER8 = TEMP16 (TYPE FIX)>
1008 <SET TEMP16 %<> (TYPE FALSE)>
1015 <LENU BUFFER8 = TEMP25>
1016 <GRTR? TEMP16 TEMP25 - TAG26>
1017 <SET TEMP16 TEMP25 (TYPE FIX)>
1022 <NTHUV DATA11 2 = TEMP25 (TYPE FIX)>
1023 <AND TEMP25 #WORD *120000* = TEMP25>
1024 <VEQUAL? TEMP25 0 - PHRASE28 (TYPE FIX)>
1027 <PUSH '@CHANNEL-NOT-OPEN-FOR-WRITING>
1030 <PUSH 'I$DISK-WRITE-BUFFER>
1033 <VEQUAL? LEN9 0 - PHRASE33 (TYPE FIX)>
1036 <TYPE? IBUF12 <TYPE-CODE FALSE> - PHRASE36>
1037 <FRAME '
\1aI$DO-SOUT>
1044 <CALL '
\1aI$DO-SOUT 3 = 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)>
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>
1058 <TYPE IBUF12 = TEMP25>
1059 <AND TEMP25 #WORD *7* = TEMP25>
1060 <VEQUAL? PT10 TEMP25 + PHRASE41 (TYPE FIX)>
1063 <PUSH '@BUFFER-IS-WRONG-TYPE>
1067 <CALL '
\1aTYPE 1 = STACK>
1068 <PUSH 'I$DISK-WRITE-BUFFER>
1069 <CALL '
\1aERROR 3 = TEMP25>
1073 <VEQUAL? PT10 5 - CASE47>
1074 <NTHUV DATA11 10 = TEMP25 (TYPE STRING)>
1075 <LENUS TEMP25 = TEMP25 (TYPE FIX)>
1078 <VEQUAL? PT10 6 - CASE48>
1079 <NTHUV DATA11 10 = TEMP16 (TYPE UVECTOR)>
1080 <LENUU TEMP16 = TEMP25 (TYPE FIX)>
1084 <VEQUAL? PT10 4 - CASE49>
1085 <NTHUV DATA11 10 = TEMP16 (TYPE BYTES)>
1086 <LENUB TEMP16 = TEMP25 (TYPE FIX)>
1090 <SET TEMP25 %<> (TYPE FALSE)>
1092 <SET RD52 0 (TYPE FIX)>
1096 <VEQUAL? PT10 5 - CASE61>
1097 <EMPUS? IBUF12 - TAG64 (TYPE STRING)>
1098 <SET TEMP16 'T (TYPE ATOM)>
1101 <SET TEMP16 %<> (TYPE FALSE)>
1104 <VEQUAL? PT10 6 - CASE62>
1105 <EMPUU? IBUF12 - TAG67 (TYPE UVECTOR)>
1106 <SET TEMP16 'T (TYPE ATOM)>
1109 <SET TEMP16 %<> (TYPE FALSE)>
1112 <VEQUAL? PT10 4 - CASE63>
1113 <EMPUB? IBUF12 - TAG69 (TYPE BYTES)>
1114 <SET TEMP16 'T (TYPE ATOM)>
1117 <SET TEMP16 %<> (TYPE FALSE)>
1120 <SET TEMP16 %<> (TYPE FALSE)>
1122 <TYPE? TEMP16 <TYPE-CODE FALSE> - CASE75>
1124 <VEQUAL? PT10 5 - CASE73>
1125 <LENUS IBUF12 = TEMP16 (TYPE FIX)>
1126 <GRTR? TEMP16 LEN9 - TAG77>
1127 <SET TEMP16 LEN9 (TYPE FIX)>
1129 <SET TEMP78 BUFFER8>
1130 <MOVE-STRING TEMP78 IBUF12 TEMP16 (NO-OVERLAP %<>)>
1132 <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
1133 <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
1134 <RESTUS BUFFER8 TEMP16 = BUFFER8 (TYPE STRING)>
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)>
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)>
1148 <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
1150 <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
1151 <LENUS IBUF12 = TEMP78 (TYPE FIX)>
1153 <SUB TEMP25 TEMP78 = TEMP16 (TYPE FIX)>
1155 <LESS? DONE55 TEMP16 - TAG83>
1156 <SET DONE55 TEMP16 (TYPE FIX)>
1159 <PUTUV DATA11 8 DONE55 (TYPE FIX)>
1163 <VEQUAL? PT10 6 - CASE74>
1164 <LENUU IBUF12 = TEMP16 (TYPE FIX)>
1165 <GRTR? TEMP16 LEN9 - TAG84>
1166 <SET TEMP16 LEN9 (TYPE FIX)>
1168 <SET TEMP78 BUFFER8>
1169 <MOVE-WORDS TEMP78 IBUF12 TEMP16 (TYPE UVECTOR) (DIRECTION %<>)>
1171 <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
1172 <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
1173 <RESTUU BUFFER8 TEMP16 = BUFFER8 (TYPE UVECTOR)>
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)>
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)>
1187 <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
1189 <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
1190 <LENUU IBUF12 = TEMP78 (TYPE FIX)>
1192 <SUB TEMP25 TEMP78 = TEMP16 (TYPE FIX)>
1194 <LESS? DONE55 TEMP16 - TAG89>
1195 <SET DONE55 TEMP16 (TYPE FIX)>
1198 <PUTUV DATA11 8 DONE55 (TYPE FIX)>
1202 <VEQUAL? PT10 4 - CASE75>
1203 <LENUB IBUF12 = TEMP16 (TYPE FIX)>
1204 <GRTR? TEMP16 LEN9 - TAG90>
1205 <SET TEMP16 LEN9 (TYPE FIX)>
1207 <SET TEMP78 BUFFER8>
1208 <MOVE-STRING TEMP78 IBUF12 TEMP16 (NO-OVERLAP %<>)>
1210 <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
1211 <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
1212 <RESTUB BUFFER8 TEMP16 = BUFFER8 (TYPE BYTES)>
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)>
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)>
1226 <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
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)>
1235 <PUTUV DATA11 8 DONE55 (TYPE FIX)>
1238 <VEQUAL? LEN9 0 + PHRASE97 (TYPE FIX)>
1239 <FRAME '
\1aI$FLUSH-BUFFER>
1241 <CALL '
\1aI$FLUSH-BUFFER 1>
1242 <GRTR? LEN9 TEMP25 - PHRASE102 (TYPE FIX)>
1243 <FRAME '
\1aI$DO-SOUT>
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)>
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)>
1264 <NTHUV DATA11 6 = IBUF12>
1272 <END
\1aX$DISK-WRITE-BUFFER>
1276 <GFCN
\1aX$DISK-ACCESS ("VALUE" <OR FALSE FIX> CHANNEL ANY "OPTIONAL" <OR FIX FALSE>) CHANNEL6 OPER7 PTR8>
1277 <OPT-DISPATCH 2 %<> OPT4 OPT5>
1281 <TEMP DATA9:I$DISK-CHANNEL JFN10:FIX OPTR11:FIX BUF12 TEMP17 PT16:FIX L15:FIX TL14:FIX>
1283 <NTHUV CHANNEL6 5 = DATA9 (TYPE I$DISK-CHANNEL)>
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>
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)>
1299 <VEQUAL? PT16 6 - CASE23>
1300 <LENUU BUF12 = L15 (TYPE FIX)>
1301 <NTHUV DATA9 10 = TEMP17 (TYPE UVECTOR)>
1302 <LENUU TEMP17 = TL14 (TYPE FIX)>
1306 <VEQUAL? PT16 4 - CASE24>
1307 <LENUB BUF12 = L15 (TYPE FIX)>
1308 <NTHUV DATA9 10 = TEMP17 (TYPE BYTES)>
1309 <LENUB TEMP17 = TL14 (TYPE FIX)>
1312 <TYPE? PTR8 <TYPE-CODE UNBOUND> + BOOL27>
1313 <TYPE? PTR8 <TYPE-CODE FALSE> - PHRASE26>
1318 <VEQUAL? PTR8 OPTR11 + PHRASE39 (TYPE FIX)>
1319 <TYPE? BUF12 <TYPE-CODE FALSE> + PHRASE28>
1320 <SUB TL14 L15 = TEMP17 (TYPE FIX)>
1322 <SUB OPTR11 TEMP17 = TEMP17 (TYPE FIX)>
1323 <LESS? PTR8 TEMP17 + PHRASE28 (TYPE FIX)>
1325 <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
1326 <ADD TEMP17 OPTR11 = TEMP17 (TYPE FIX)>
1327 <GRTR? PTR8 TEMP17 + PHRASE28 (TYPE FIX)>
1329 <GRTR? PTR8 OPTR11 - PHRASE32 (TYPE FIX)>
1330 <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
1331 <SUB PTR8 OPTR11 = JFN10 (TYPE FIX)>
1333 <SUB TEMP17 JFN10 = TEMP17 (TYPE FIX)>
1334 <PUTUV DATA9 7 TEMP17 (TYPE FIX)>
1336 <VEQUAL? PT16 5 - CASE35>
1337 <RESTUS BUF12 JFN10 = TEMP17 (TYPE STRING)>
1339 <PUTUV DATA9 6 TEMP17>
1343 <VEQUAL? PT16 4 - CASE36>
1344 <RESTUB BUF12 JFN10 = TEMP17 (TYPE BYTES)>
1346 <PUTUV DATA9 6 TEMP17>
1350 <VEQUAL? PT16 6 - PHRASE38>
1352 <RESTUU BUF12 JFN10 = TEMP17 (TYPE UVECTOR)>
1354 <PUTUV DATA9 6 TEMP17>
1358 <SUB OPTR11 PTR8 = JFN10 (TYPE FIX)>
1360 <BACKU BUF12 JFN10 = TEMP17>
1362 <PUTUV DATA9 6 TEMP17>
1364 <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
1365 <ADD TEMP17 JFN10 = TEMP17 (TYPE FIX)>
1367 <PUTUV DATA9 7 TEMP17 (TYPE FIX)>
1370 <PUTUV DATA9 4 PTR8 (TYPE FIX)>
1375 <FRAME '
\1aI$FLUSH-BUFFER>
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>
1383 <PUTUV DATA9 4 PTR8>
1384 <PUTUV DATA9 5 PTR8>
1389 <END
\1aX$DISK-ACCESS>
1391 <GFCN
\1aX$DISK-BUFOUT ("VALUE" CHANNEL CHANNEL ANY "OPTIONAL" <OR ATOM FALSE>) CHANNEL6 OPER7 FORCE?8>
1392 <OPT-DISPATCH 2 %<> OPT4 OPT5>
1398 <NTHUV CHANNEL6 5 = DATA9 (TYPE I$DISK-CHANNEL)>
1399 <NTHUV DATA9 9 = TEMP12>
1400 <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE11>
1402 <FRAME '
\1aI$FLUSH-BUFFER>
1404 <CALL '
\1aI$FLUSH-BUFFER 1>
1406 <TYPE? FORCE?8 <TYPE-CODE FALSE> + PHRASE15>
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>
1414 <NTHUV DATA9 2 = TEMP12 (TYPE FIX)>
1415 <AND TEMP12 #WORD *20000* = TEMP12>
1416 <VEQUAL? TEMP12 0 - PHRASE18 (TYPE FIX)>
1418 <NTHUV DATA9 1 = TEMP12 (TYPE FIX)>
1419 <NTHUV DATA9 5 = DATA9 (TYPE FIX)>
1420 <SYSOP 'SFPTR TEMP12 DATA9>
1425 <END
\1aX$DISK-BUFOUT>
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>
1435 <TEMP DATA11:I$DISK-CHANNEL TEMP23:FIX PGS20>
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>
1443 <DIV 36 BSZ10 = TEMP23 (TYPE FIX)>
1444 <MUL TEMP23 PGS20 = TEMP23 (TYPE FIX)>
1446 <LSH TEMP23 9 = NEW-SIZE9 (TYPE FIX)>
1449 <NTHUV DATA11 1 = PGS20 (TYPE FIX)>
1450 <PUTBITS PGS20 16 16 131081 = TEMP23>
1454 <NTHUV DATA11 1 = PGS20 (TYPE FIX)>
1455 <PUTBITS PGS20 18 18 131081 = TEMP23>
1458 <LSH BSZ10 24 = PGS20 (TYPE FIX)>
1460 <SYSOP 'CHFDB TEMP23 1056964608 PGS20>
1463 <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
1464 <PUTBITS TEMP23 16 16 10 = PGS20>
1468 <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
1470 <PUTBITS TEMP23 18 18 10 = PGS20>
1473 <SYSOP 'CHFDB PGS20 -1 NEW-SIZE9>
1478 <FRAME '
\1aX$DISK-BUFOUT>
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)>
1489 <CALL '
\1aT$GET-BYTE-COUNT 2 = PGS20>
1492 <END
\1aX$DISK-FILE-LENGTH>
1496 <GFCN
\1aX$DISK-PRINT-DATA ("VALUE" ATOM CHANNEL ANY ANY) CHANNEL4 OPER5 OUTCHAN6>
1497 <TEMP DATA7:I$DISK-CHANNEL BUF8 TEMP31:FIX>
1499 <NTHUV CHANNEL4 5 = DATA7 (TYPE I$DISK-CHANNEL)>
1502 <PUSH "#DISK-CHANNEL [">
1510 <NTHUV DATA7 1 = STACK (TYPE FIX)>
1518 <NTHUV DATA7 2 = STACK (TYPE FIX)>
1526 <NTHUV DATA7 3 = STACK (TYPE FIX)>
1534 <NTHUV DATA7 4 = STACK (TYPE FIX)>
1542 <NTHUV DATA7 5 = STACK (TYPE FIX)>
1549 <NTHUV DATA7 6 = BUF8>
1550 <TYPE? BUF8 <TYPE-CODE FALSE> + PHRASE22>
1552 <NTHUV DATA7 7 = STACK (TYPE FIX)>
1559 <TYPE? BUF8 <TYPE-CODE STRING> - PHRASE26>
1563 <NTHUV DATA7 10 = STACK>
1564 <CALL '
\1aLENGTH 1 = BUF8>
1566 <NTHUV DATA7 6 = STACK>
1567 <CALL '
\1aLENGTH 1 = TEMP31>
1568 <SUB BUF8 TEMP31 = STACK (TYPE FIX)>
1578 <NTHUV DATA7 6 = STACK>
1580 <CALL '
\1aLENGTH 1 = STACK>
1587 <NTHUV DATA7 10 = STACK>
1588 <CALL '
\1aLENGTH 1 = TEMP31>
1590 <NTHUV DATA7 6 = STACK>
1591 <CALL '
\1aLENGTH 1 = BUF8>
1592 <SUB TEMP31 BUF8 = STACK (TYPE FIX)>
1602 <NTHUV DATA7 6 = STACK>
1604 <CALL '
\1aLENGTH 1 = STACK>
1620 <END
\1aX$DISK-PRINT-DATA>