Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / 20 / disk.mima
diff --git a/mim/development/mim/20/disk.mima b/mim/development/mim/20/disk.mima
new file mode 100644 (file)
index 0000000..83508bb
--- /dev/null
@@ -0,0 +1,1620 @@
+
+"I/O for non-paged disk:  may or may not use buffers (according to user
+ desires), never uses pmap.  Note that input and output use the same buffer,
+so this is not suitable for devices that don't random-access (chaos net, tty,
+...)."
+
+"Possible modes:  READ, CREATE, MODIFY, APPEND/ASCII, BINARY, 8BIT"
+
+#WORD *23367241657*
+<GFCN \1aX$DISK-FILE-HANDLE ("VALUE" FIX CHANNEL ANY) CHANNEL4 OPR5>
+                   <TEMP DATA6>
+                   <INTGO>
+                   <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL4>
+                   <NTHUV DATA6 1 = DATA6 (TYPE FIX)>
+                   <RETURN DATA6>
+                   <DEAD DATA6>
+                   <END \1aX$DISK-FILE-HANDLE>
+#WORD *14535666447*
+<GFCN \1aX$DISK-QUERY ("VALUE" <OR ATOM FALSE> CHANNEL ANY FIX) CHANNEL4 OPR5 BIT6>
+                   <TEMP DATA7>
+                   <INTGO>
+                   <VEQUAL? BIT6 1 + TAG11 (TYPE FIX)>
+                   <DEAD BIT6>
+                   <RETURN %<>>
+TAG11
+                   <RETURN 'T>
+                   <END \1aX$DISK-QUERY>
+#WORD *2533510363*
+<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>
+                   <OPT-DISPATCH 4 %<> OPT4 OPT5 OPT6 OPT7 OPT8>
+OPT4
+                   <PUSH "ASCII">
+OPT5
+                   <PUSH 'T>
+OPT6
+                   <PUSH %<>>
+OPT7
+                   <PUSH %<>>
+OPT8
+                   <TEMP (NEW?17 %<>) (APP?21 %<>) TEMP26 TEMP27 TEMP28 TEMP29 TEMP30 MODE18:FIX BSZ20:FIX>
+                   <INTGO>
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? MODS12 "READ" - PHRASE25>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP26 MODS12>
+                   <SET TEMP27 "READ" (TYPE STRING)>
+                   <LENUS TEMP26 = TEMP28 (TYPE FIX)>
+                   <VEQUAL? TEMP28 4 - PHRASE25>
+                   <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
+TAG31
+                   <NTHUS TEMP26 1 = TEMP29>
+                   <NTHUS TEMP27 1 = TEMP30>
+                   <VEQUAL? TEMP29 TEMP30 - PHRASE25>
+                   <DEAD TEMP29 TEMP30>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
+                   <GRTR? TEMP28 0 + TAG31 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET MODE18 65568 (TYPE FIX)>
+                   <JUMP + PHRASE41>
+PHRASE25
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? MODS12 "CREATE" - PHRASE32>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP27 MODS12>
+                   <SET TEMP26 "CREATE" (TYPE STRING)>
+                   <LENUS TEMP27 = TEMP30 (TYPE FIX)>
+                   <VEQUAL? TEMP30 6 - PHRASE32>
+                   <LOOP (TEMP27 VALUE LENGTH) (TEMP26 VALUE LENGTH) (TEMP30 VALUE)>
+TAG34
+                   <NTHUS TEMP27 1 = TEMP29>
+                   <NTHUS TEMP26 1 = TEMP28>
+                   <VEQUAL? TEMP29 TEMP28 - PHRASE32>
+                   <DEAD TEMP29 TEMP28>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <SUB TEMP30 1 = TEMP30 (TYPE FIX)>
+                   <GRTR? TEMP30 0 + TAG34 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET NEW?17 'T (TYPE ATOM)>
+                   <SET MODE18 98336 (TYPE FIX)>
+                   <JUMP + PHRASE41>
+PHRASE32
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? MODS12 "MODIFY" - PHRASE35>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP26 MODS12>
+                   <SET TEMP27 "MODIFY" (TYPE STRING)>
+                   <LENUS TEMP26 = TEMP28 (TYPE FIX)>
+                   <VEQUAL? TEMP28 6 - PHRASE35>
+                   <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
+TAG37
+                   <NTHUS TEMP26 1 = TEMP29>
+                   <NTHUS TEMP27 1 = TEMP30>
+                   <VEQUAL? TEMP29 TEMP30 - PHRASE35>
+                   <DEAD TEMP29 TEMP30>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
+                   <GRTR? TEMP28 0 + TAG37 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET MODE18 98336 (TYPE FIX)>
+                   <JUMP + PHRASE41>
+PHRASE35
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? MODS12 "APPEND" - PHRASE38>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP27 MODS12>
+                   <SET TEMP26 "APPEND" (TYPE STRING)>
+                   <LENUS TEMP27 = TEMP30 (TYPE FIX)>
+                   <VEQUAL? TEMP30 6 - PHRASE38>
+                   <LOOP (TEMP27 VALUE LENGTH) (TEMP26 VALUE LENGTH) (TEMP30 VALUE)>
+TAG40
+                   <NTHUS TEMP27 1 = TEMP29>
+                   <NTHUS TEMP26 1 = TEMP28>
+                   <VEQUAL? TEMP29 TEMP28 - PHRASE38>
+                   <DEAD TEMP29 TEMP28>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <SUB TEMP30 1 = TEMP30 (TYPE FIX)>
+                   <GRTR? TEMP30 0 + TAG40 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET APP?21 'T (TYPE ATOM)>
+                   <SET MODE18 73760 (TYPE FIX)>
+                   <JUMP + PHRASE41>
+PHRASE38
+                   <FRAME '\1aERROR>
+                   <PUSH '@ILLEGAL-MODE>
+                   <PUSH MODS12>
+                   <DEAD MODS12>
+                   <PUSH 'I$DISK-OPEN>
+                   <CALL '\1aERROR 3>
+PHRASE41
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? BYTES13 "ASCII" - PHRASE44>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP26 BYTES13>
+                   <SET TEMP27 "ASCII" (TYPE STRING)>
+                   <LENUS TEMP26 = TEMP28 (TYPE FIX)>
+                   <VEQUAL? TEMP28 5 - PHRASE44>
+                   <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
+TAG46
+                   <NTHUS TEMP26 1 = TEMP29>
+                   <NTHUS TEMP27 1 = TEMP30>
+                   <VEQUAL? TEMP29 TEMP30 - PHRASE44>
+                   <DEAD TEMP29 TEMP30>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
+                   <GRTR? TEMP28 0 + TAG46 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET BSZ20 7 (TYPE FIX)>
+                   <JUMP + PHRASE53>
+PHRASE44
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? BYTES13 "8BIT" - PHRASE47>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP27 BYTES13>
+                   <SET TEMP26 "8BIT" (TYPE STRING)>
+                   <LENUS TEMP27 = TEMP30 (TYPE FIX)>
+                   <VEQUAL? TEMP30 4 - PHRASE47>
+                   <LOOP (TEMP27 VALUE LENGTH) (TEMP26 VALUE LENGTH) (TEMP30 VALUE)>
+TAG49
+                   <NTHUS TEMP27 1 = TEMP29>
+                   <NTHUS TEMP26 1 = TEMP28>
+                   <VEQUAL? TEMP29 TEMP28 - PHRASE47>
+                   <DEAD TEMP29 TEMP28>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <SUB TEMP30 1 = TEMP30 (TYPE FIX)>
+                   <GRTR? TEMP30 0 + TAG49 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET BSZ20 8 (TYPE FIX)>
+                   <JUMP + PHRASE53>
+PHRASE47
+                   <IFCAN "STRING-EQUAL?">
+                   <STRING-EQUAL? BYTES13 "BINARY" - PHRASE50>
+                   <ENDIF "STRING-EQUAL?">
+                   <IFCANNOT "STRING-EQUAL?">
+                   <SET TEMP26 BYTES13>
+                   <SET TEMP27 "BINARY" (TYPE STRING)>
+                   <LENUS TEMP26 = TEMP28 (TYPE FIX)>
+                   <VEQUAL? TEMP28 6 - PHRASE50>
+                   <LOOP (TEMP26 VALUE LENGTH) (TEMP27 VALUE LENGTH) (TEMP28 VALUE)>
+TAG52
+                   <NTHUS TEMP26 1 = TEMP29>
+                   <NTHUS TEMP27 1 = TEMP30>
+                   <VEQUAL? TEMP29 TEMP30 - PHRASE50>
+                   <DEAD TEMP29 TEMP30>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <RESTUS TEMP27 1 = TEMP27 (TYPE STRING)>
+                   <SUB TEMP28 1 = TEMP28 (TYPE FIX)>
+                   <GRTR? TEMP28 0 + TAG52 (TYPE FIX)>
+                   <ENDIF "STRING-EQUAL?">
+                   <SET BSZ20 36 (TYPE FIX)>
+                   <JUMP + PHRASE53>
+PHRASE50
+                   <FRAME '\1aERROR>
+                   <PUSH '@ILLEGAL-BYTE-SIZE>
+                   <PUSH BYTES13>
+                   <DEAD BYTES13>
+                   <PUSH 'I$DISK-OPEN>
+                   <CALL '\1aERROR 3>
+PHRASE53
+                   <TYPE? THAWED?15 <TYPE-CODE FALSE> + PHRASE56>
+                   <DEAD THAWED?15>
+                   <OR MODE18 #WORD *2000* = MODE18>
+PHRASE56
+                   <TYPE? NO-REF?16 <TYPE-CODE FALSE> + PHRASE58>
+                   <DEAD NO-REF?16>
+                   <OR MODE18 #WORD *400* = MODE18>
+PHRASE58
+                   <FRAME '\1aT$GET-JFN>
+                   <PUSH NAME11>
+                   <DEAD NAME11>
+                   <PUSH MODE18>
+                   <PUSH BSZ20>
+                   <PUSH NEW?17>
+                   <DEAD NEW?17>
+                   <CALL '\1aT$GET-JFN 4 = NEW?17>
+                   <SET TEMP27 NEW?17>
+                   <TYPE? TEMP27 <TYPE-CODE FALSE> + PHRASE60>
+                   <PUSH NEW?17>
+                   <PUSH MODE18>
+                   <DEAD MODE18>
+                   <PUSH BSZ20>
+                   <VEQUAL? APP?21 0 + PHRASE64>
+                   <DEAD APP?21>
+                   <FRAME '\1aT$GET-BYTE-COUNT>
+                   <PUSH NEW?17>
+                   <DEAD NEW?17>
+                   <PUSH BSZ20>
+                   <CALL '\1aT$GET-BYTE-COUNT 2 = MODE18>
+                   <SET TEMP26 MODE18>
+                   <JUMP + COND63>
+PHRASE64
+                   <SET MODE18 0 (TYPE FIX)>
+                   <SET TEMP26 MODE18>
+COND63
+                   <PUSH TEMP26>
+                   <DEAD TEMP26>
+                   <PUSH MODE18>
+                   <DEAD MODE18>
+                   <SET NEW?17 BUF?14>
+                   <DEAD BUF?14>
+                   <TYPE? NEW?17 <TYPE-CODE FALSE> + PHRASE73>
+                   <VEQUAL? BSZ20 7 - PHRASE69 (TYPE FIX)>
+                   <FRAME '\1aT$REQUEST-BUFFER>
+                   <PUSH %<>>
+                   <PUSH 'T$STRING>
+                   <PUSH %<>>
+                   <CALL '\1aT$REQUEST-BUFFER 3 = NEW?17>
+                   <JUMP + PHRASE73>
+PHRASE69
+                   <VEQUAL? BSZ20 8 - PHRASE71 (TYPE FIX)>
+                   <DEAD BSZ20>
+                   <FRAME '\1aT$REQUEST-BUFFER>
+                   <PUSH %<>>
+                   <PUSH 'T$BYTES>
+                   <PUSH %<>>
+                   <CALL '\1aT$REQUEST-BUFFER 3 = NEW?17>
+                   <JUMP + PHRASE73>
+PHRASE71
+                   <FRAME '\1aT$REQUEST-BUFFER>
+                   <PUSH %<>>
+                   <PUSH 'T$UVECTOR>
+                   <PUSH %<>>
+                   <CALL '\1aT$REQUEST-BUFFER 3 = NEW?17>
+PHRASE73
+                   <PUSH NEW?17>
+                   <PUSH 0>
+                   <PUSH 0>
+                   <PUSH %<>>
+                   <PUSH NEW?17>
+                   <DEAD NEW?17>
+                   <UBLOCK <TYPE-CODE VECTOR> 10 = TEMP26>
+                   <CHTYPE TEMP26 <TYPE-CODE I$DISK-CHANNEL> = TEMP27>
+                   <DEAD TEMP26>
+PHRASE60
+                   <RETURN TEMP27>
+                   <DEAD TEMP27>
+                   <END \1aX$DISK-OPEN>
+#WORD *22230733063*
+<GFCN \1aX$DISK-FLUSH ("VALUE" I$DISK-CHANNEL CHANNEL ANY) CHANNEL4 OPER5>
+                   <TEMP DATA6:I$DISK-CHANNEL TEMP8>
+                   <INTGO>
+                   <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL4>
+                   <NTHUV DATA6 1 = TEMP8 (TYPE FIX)>
+                   <OR TEMP8 #WORD *4000000000* = TEMP8>
+                   <SYSOP 'CLOSF TEMP8 = TEMP8>
+                   <NTHUV DATA6 10 = TEMP8>
+                   <TYPE? TEMP8 <TYPE-CODE FALSE> + PHRASE10>
+                   <DEAD TEMP8>
+                   <FRAME '\1aT$RELEASE-BUFFER>
+                   <NTHUV DATA6 10 = STACK>
+                   <CALL '\1aT$RELEASE-BUFFER 1>
+PHRASE10
+                   <PUTUV DATA6 6 %<>>
+                   <PUTUV DATA6 10 %<>>
+                   <PUTUV DATA6 1 -1 (TYPE FIX)>
+                   <RETURN DATA6>
+                   <DEAD DATA6>
+                   <END \1aX$DISK-FLUSH>
+#WORD *2755256421*
+<GFCN \1aX$DISK-CLOSE ("VALUE" I$DISK-CHANNEL CHANNEL ANY) CHANNEL4 OPER5>
+                   <TEMP DATA6:I$DISK-CHANNEL TEMP11>
+                   <INTGO>
+                   <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL4>
+                   <FRAME '\1aI$FLUSH-BUFFER>
+                   <PUSH DATA6>
+                   <CALL '\1aI$FLUSH-BUFFER 1>
+                   <NTHUV DATA6 10 = TEMP11>
+                   <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE10>
+                   <DEAD TEMP11>
+                   <FRAME '\1aT$RELEASE-BUFFER>
+                   <NTHUV DATA6 10 = STACK>
+                   <CALL '\1aT$RELEASE-BUFFER 1>
+PHRASE10
+                   <PUTUV DATA6 10 %<>>
+                   <PUTUV DATA6 6 %<>>
+                   <NTHUV DATA6 1 = TEMP11 (TYPE FIX)>
+                   <SYSOP 'CLOSF TEMP11 = TEMP11>
+                   <PUTUV DATA6 1 -1 (TYPE FIX)>
+                   <RETURN DATA6>
+                   <DEAD DATA6>
+                   <END \1aX$DISK-CLOSE>
+\\f
+
+#WORD *7477130320*
+<GFCN \1aX$DISK-READ-BYTE ("VALUE" ANY CHANNEL ANY) CHANNEL4 OPER5>
+                   <TEMP DATA6:I$DISK-CHANNEL BUF7 TEMP15:FIX BYTE8 TEMP26>
+                   <INTGO>
+                   <NTHUV CHANNEL4 5 = DATA6 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL4>
+                   <NTHUV DATA6 6 = BUF7>
+                   <TYPE? BUF7 <TYPE-CODE FALSE> - PHRASE11>
+                   <NTHUV DATA6 1 = TEMP15 (TYPE FIX)>
+                   <SYSOP 'BIN TEMP15 (RETURN 2) = BYTE8>
+                   <DEAD TEMP15>
+                   <SET BUF7 BYTE8>
+                   <TYPE? BUF7 <TYPE-CODE FALSE> + PHRASE34>
+                   <NTHUV DATA6 4 = TEMP15 (TYPE FIX)>
+                   <ADD TEMP15 1 = TEMP15 (TYPE FIX)>
+                   <PUTUV DATA6 4 TEMP15 (TYPE FIX)>
+                   <DEAD TEMP15>
+                   <NTHUV DATA6 4 = TEMP15 (TYPE FIX)>
+                   <PUTUV DATA6 5 TEMP15 (TYPE FIX)>
+                   <DEAD TEMP15>
+                   <NTHUV DATA6 3 = TEMP15 (TYPE FIX)>
+                   <DEAD DATA6>
+                   <VEQUAL? TEMP15 7 - PHRASE17 (TYPE FIX)>
+                   <DEAD TEMP15>
+                   <CHTYPE BYTE8 <TYPE-CODE CHARACTER> = BUF7>
+                   <DEAD BYTE8>
+                   <RETURN BUF7>
+                   <DEAD BUF7>
+PHRASE17
+                   <RETURN BYTE8>
+                   <DEAD BYTE8>
+PHRASE11
+                   <SET BYTE8 %<> (TYPE FALSE)>
+                   <LOOP>
+AGAIN21
+                   <INTGO>
+                   <NTHUV DATA6 7 = TEMP15 (TYPE FIX)>
+                   <VEQUAL? TEMP15 0 + PHRASE23 (TYPE FIX)>
+                   <NTH1 BUF7 = BYTE8>
+                   <NTHUV DATA6 4 = TEMP26 (TYPE FIX)>
+                   <ADD TEMP26 1 = TEMP26 (TYPE FIX)>
+                   <PUTUV DATA6 4 TEMP26 (TYPE FIX)>
+                   <DEAD TEMP26>
+                   <TYPE? BUF7 <TYPE-CODE STRING> - PHRASE28>
+                   <RESTUS BUF7 1 = TEMP26 (TYPE STRING)>
+                   <DEAD BUF7>
+                   <JUMP + PHRASE30>
+PHRASE28
+                   <TYPE? BUF7 <TYPE-CODE UVECTOR> - PHRASE29>
+                   <RESTUU BUF7 1 = TEMP26 (TYPE UVECTOR)>
+                   <DEAD BUF7>
+                   <JUMP + PHRASE30>
+PHRASE29
+                   <TYPE? BUF7 <TYPE-CODE BYTES> + TAG31>
+                   <SET TEMP26 %<> (TYPE FALSE)>
+                   <JUMP + PHRASE30>
+TAG31
+                   <RESTUB BUF7 1 = TEMP26 (TYPE BYTES)>
+                   <DEAD BUF7>
+PHRASE30
+                   <PUTUV DATA6 6 TEMP26>
+                   <DEAD TEMP26>
+                   <SUB TEMP15 1 = TEMP26 (TYPE FIX)>
+                   <DEAD TEMP15>
+                   <PUTUV DATA6 7 TEMP26 (TYPE FIX)>
+                   <DEAD DATA6 TEMP26>
+                   <RETURN BYTE8>
+                   <DEAD BYTE8>
+PHRASE23
+                   <VEQUAL? BYTE8 0 + PHRASE33>
+                   <DEAD BYTE8>
+                   <RETURN %<>>
+PHRASE33
+                   <FRAME '\1aI$READ-BUFFER>
+                   <PUSH DATA6>
+                   <CALL '\1aI$READ-BUFFER 1>
+                   <NTHUV DATA6 6 = BUF7>
+                   <SET BYTE8 'T (TYPE ATOM)>
+                   <JUMP + AGAIN21>
+PHRASE34
+                   <RETURN BUF7>
+                   <DEAD BUF7>
+                   <END \1aX$DISK-READ-BYTE>
+#WORD *15766212063*
+<GFCN \1aI$DO-SOUT ("VALUE" <OR FALSE FIX> FIX ANY FIX) JFN4 BUF5 LEN6>
+                   <TEMP TEMP12 VAL7>
+                   <INTGO>
+                   <VEQUAL? LEN6 0 - PHRASE9 (TYPE FIX)>
+                   <RETURN 0>
+PHRASE9
+                   <SUB 0 LEN6 = TEMP12 (TYPE FIX)>
+                   <DEAD LEN6>
+                   <SYSOP 'SOUT JFN4 BUF5 TEMP12 = VAL7>
+                   <DEAD JFN4 TEMP12>
+                   <SET TEMP12 VAL7>
+                   <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE13>
+                   <LENU BUF5 = TEMP12>
+                   <DEAD BUF5>
+                   <LENU VAL7 = VAL7>
+                   <SUB TEMP12 VAL7 = TEMP12 (TYPE FIX)>
+                   <DEAD VAL7>
+PHRASE13
+                   <RETURN TEMP12>
+                   <DEAD TEMP12>
+                   <END \1aI$DO-SOUT>
+#WORD *34362617271*
+<GFCN \1aI$DO-SIN ("VALUE" <OR FALSE FIX> FIX ANY FIX FIX) JFN4 BUF5 LEN6 START7>
+                   <TEMP TEMP14 TEMP16 TEMP17:FIX>
+                   <INTGO>
+                   <VEQUAL? LEN6 0 - PHRASE11 (TYPE FIX)>
+                   <RETURN 0>
+PHRASE11
+                   <SUB 0 LEN6 = TEMP16 (TYPE FIX)>
+                   <DEAD LEN6>
+                   <SYSOP 'SIN-JSYS JFN4 BUF5 TEMP16 = TEMP14>
+                   <DEAD TEMP16>
+                   <TYPE? TEMP14 <TYPE-CODE FALSE> + PHRASE15>
+                   <LENU BUF5 = TEMP16>
+                   <DEAD BUF5>
+                   <LENU TEMP14 = TEMP17>
+                   <DEAD TEMP14>
+                   <SUB TEMP16 TEMP17 = TEMP14 (TYPE FIX)>
+                   <DEAD TEMP16 TEMP17>
+                   <RETURN TEMP14>
+                   <DEAD TEMP14>
+PHRASE15
+                   <SYSOP 'GTSTS JFN4 (RETURN 2) = TEMP16>
+                   <AND TEMP16 #WORD *1000000000* = TEMP17>
+                   <DEAD TEMP16>
+                   <VEQUAL? TEMP17 0 + PHRASE20 (TYPE FIX)>
+                   <DEAD TEMP17>
+                   <SYSOP 'RFPTR JFN4 (RETURN 2) = TEMP17>
+                   <DEAD JFN4>
+                   <SUB TEMP17 START7 = TEMP14 (TYPE FIX)>
+                   <DEAD TEMP17 START7>
+                   <RETURN TEMP14>
+                   <DEAD TEMP14>
+PHRASE20
+                   <RETURN TEMP14>
+                   <DEAD TEMP14>
+                   <END \1aI$DO-SIN>
+#WORD *23044741142*
+<GFCN \1aI$READ-BUFFER ("VALUE" I$DISK-CHANNEL I$DISK-CHANNEL) DATA4>
+                   <TEMP JFN5 OB7 TEMP12>
+                   <INTGO>
+                   <NTHUV DATA4 1 = JFN5 (TYPE FIX)>
+                   <NTHUV DATA4 10 = OB7>
+                   <NTHUV DATA4 9 = TEMP12>
+                   <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE11>
+                   <DEAD TEMP12>
+                   <FRAME '\1aI$FLUSH-BUFFER>
+                   <PUSH DATA4>
+                   <CALL '\1aI$FLUSH-BUFFER 1>
+PHRASE11
+                   <FRAME '\1aI$DO-SIN>
+                   <PUSH JFN5>
+                   <DEAD JFN5>
+                   <PUSH OB7>
+                   <TYPE? OB7 <TYPE-CODE STRING> - PHRASE18>
+                   <LENUS OB7 = TEMP12 (TYPE FIX)>
+                   <JUMP + COND17>
+PHRASE18
+                   <TYPE? OB7 <TYPE-CODE UVECTOR> - PHRASE19>
+                   <LENUU OB7 = TEMP12 (TYPE FIX)>
+                   <JUMP + COND17>
+PHRASE19
+                   <LENUB OB7 = TEMP12 (TYPE FIX)>
+COND17
+                   <PUSH TEMP12>
+                   <DEAD TEMP12>
+                   <NTHUV DATA4 5 = STACK (TYPE FIX)>
+                   <CALL '\1aI$DO-SIN 4 = JFN5>
+                   <TYPE? JFN5 <TYPE-CODE FALSE> - PHRASE15>
+                   <FRAME '\1aERROR>
+                   <PUSH '@ERROR-ON-READ>
+                   <PUSH JFN5>
+                   <PUSH 'I$READ-BUFFER>
+                   <CALL '\1aERROR 3>
+PHRASE15
+                   <PUTUV DATA4 6 OB7>
+                   <DEAD OB7>
+                   <NTHUV DATA4 5 = TEMP12 (TYPE FIX)>
+                   <ADD TEMP12 JFN5 = TEMP12 (TYPE FIX)>
+                   <PUTUV DATA4 5 TEMP12 (TYPE FIX)>
+                   <DEAD TEMP12>
+                   <PUTUV DATA4 7 JFN5 (TYPE FIX)>
+                   <PUTUV DATA4 8 JFN5 (TYPE FIX)>
+                   <DEAD JFN5>
+                   <RETURN DATA4>
+                   <DEAD DATA4>
+                   <END \1aI$READ-BUFFER>
+#WORD *6155110244*
+<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>
+                   <OPT-DISPATCH 3 %<> OPT4 OPT5 OPT6>
+OPT4
+                   <PUSH #T$UNBOUND 0>
+OPT5
+                   <PUSH 0>
+OPT6
+                   <TEMP DATA12:I$DISK-CHANNEL IBUF13 TEMP18 PT17:FIX TEMP32 RD41:FIX BC15:FIX>
+                   <INTGO>
+                   <NTHUV CHANNEL7 5 = DATA12 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL7>
+                   <NTHUV DATA12 6 = IBUF13>
+                   <TYPE BUFFER9 = TEMP18>
+                   <AND TEMP18 #WORD *7* = PT17>
+                   <DEAD TEMP18>
+                   <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE20>
+                   <TYPE IBUF13 = TEMP18>
+                   <AND TEMP18 #WORD *7* = TEMP18>
+                   <VEQUAL? TEMP18 PT17 + PHRASE20 (TYPE FIX)>
+                   <DEAD TEMP18>
+                   <FRAME '\1aERROR>
+                   <PUSH '@BUFFER-IS-WRONG-TYPE>
+                   <FRAME '\1aTYPE>
+                   <PUSH BUFFER9>
+                   <CALL '\1aTYPE 1 = STACK>
+                   <PUSH 'I$DISK-READ-BUFFER>
+                   <CALL '\1aERROR 3>
+PHRASE20
+                   <TYPE? CT10 <TYPE-CODE UNBOUND> - PHRASE25>
+                   <VEQUAL? PT17 5 - CASE28>
+                   <LENUS BUFFER9 = TEMP18 (TYPE FIX)>
+                   <JUMP + CASEND27>
+CASE28
+                   <VEQUAL? PT17 6 - CASE29>
+                   <LENUU BUFFER9 = TEMP18 (TYPE FIX)>
+                   <JUMP + CASEND27>
+CASE29
+                   <VEQUAL? PT17 4 - CASE30>
+                   <LENUB BUFFER9 = TEMP18 (TYPE FIX)>
+                   <JUMP + CASEND27>
+CASE30
+                   <SET TEMP18 %<> (TYPE FALSE)>
+CASEND27
+                   <SET CT10 TEMP18>
+                   <DEAD TEMP18>
+PHRASE25
+                   <SET TEMP18 CT10>
+                   <DEAD CT10>
+                   <LENU BUFFER9 = TEMP32>
+                   <GRTR? TEMP18 TEMP32 - TAG33>
+                   <SET TEMP18 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+TAG33
+                   <SET CT10 TEMP18>
+                   <DEAD TEMP18>
+                   <VEQUAL? CT10 0 - PHRASE35 (TYPE FIX)>
+                   <RETURN 0>
+PHRASE35
+                   <SET RD41 0 (TYPE FIX)>
+                   <LOOP>
+AGAIN43
+                   <INTGO>
+                   <TYPE? IBUF13 <TYPE-CODE FALSE> + CASE55>
+                   <NTHUV DATA12 7 = BC15 (TYPE FIX)>
+                   <VEQUAL? BC15 0 + CASE55 (TYPE FIX)>
+                   <SET TEMP18 BC15>
+                   <GRTR? TEMP18 CT10 - TAG50>
+                   <SET TEMP18 CT10 (TYPE FIX)>
+TAG50
+                   <VEQUAL? PT17 5 - CASE53>
+                   <SET TEMP32 IBUF13>
+                   <MOVE-STRING TEMP32 BUFFER9 TEMP18 (NO-OVERLAP %<>)>
+                   <DEAD TEMP32>
+                   <ADD RD41 TEMP18 = RD41 (TYPE FIX)>
+                   <SUB CT10 TEMP18 = CT10 (TYPE FIX)>
+                   <RESTUS IBUF13 TEMP18 = TEMP32 (TYPE STRING)>
+                   <PUTUV DATA12 6 TEMP32>
+                   <DEAD TEMP32>
+                   <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
+                   <DEAD BC15>
+                   <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <RESTUS BUFFER9 TEMP18 = BUFFER9 (TYPE STRING)>
+                   <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
+                   <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
+                   <DEAD TEMP18>
+                   <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <JUMP + CASE55>
+CASE53
+                   <VEQUAL? PT17 6 - CASE54>
+                   <SET TEMP32 IBUF13>
+                   <MOVE-WORDS TEMP32 BUFFER9 TEMP18 (TYPE UVECTOR) (DIRECTION %<>)>
+                   <DEAD TEMP32>
+                   <ADD RD41 TEMP18 = RD41 (TYPE FIX)>
+                   <SUB CT10 TEMP18 = CT10 (TYPE FIX)>
+                   <RESTUU IBUF13 TEMP18 = TEMP32 (TYPE UVECTOR)>
+                   <PUTUV DATA12 6 TEMP32>
+                   <DEAD TEMP32>
+                   <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
+                   <DEAD BC15>
+                   <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <RESTUU BUFFER9 TEMP18 = BUFFER9 (TYPE UVECTOR)>
+                   <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
+                   <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
+                   <DEAD TEMP18>
+                   <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <JUMP + CASE55>
+CASE54
+                   <VEQUAL? PT17 4 - CASE55>
+                   <SET TEMP32 IBUF13>
+                   <MOVE-STRING TEMP32 BUFFER9 TEMP18 (NO-OVERLAP %<>)>
+                   <DEAD TEMP32>
+                   <ADD RD41 TEMP18 = RD41 (TYPE FIX)>
+                   <SUB CT10 TEMP18 = CT10 (TYPE FIX)>
+                   <RESTUB IBUF13 TEMP18 = TEMP32 (TYPE BYTES)>
+                   <PUTUV DATA12 6 TEMP32>
+                   <DEAD TEMP32>
+                   <SUB BC15 TEMP18 = TEMP32 (TYPE FIX)>
+                   <DEAD BC15>
+                   <PUTUV DATA12 7 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <RESTUB BUFFER9 TEMP18 = BUFFER9 (TYPE BYTES)>
+                   <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
+                   <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
+                   <DEAD TEMP18>
+                   <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+CASE55
+                   <VEQUAL? CT10 0 + PHRASE58 (TYPE FIX)>
+                   <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE62>
+                   <VEQUAL? PT17 5 - CASE66>
+                   <NTHUV DATA12 10 = TEMP32 (TYPE STRING)>
+                   <LENUS TEMP32 = TEMP32 (TYPE FIX)>
+                   <JUMP + CASEND65>
+CASE66
+                   <VEQUAL? PT17 6 - CASE67>
+                   <NTHUV DATA12 10 = TEMP32 (TYPE UVECTOR)>
+                   <LENUU TEMP32 = TEMP32 (TYPE FIX)>
+                   <JUMP + CASEND65>
+CASE67
+                   <VEQUAL? PT17 4 - CASE68>
+                   <NTHUV DATA12 10 = TEMP32 (TYPE BYTES)>
+                   <LENUB TEMP32 = TEMP32 (TYPE FIX)>
+                   <JUMP + CASEND65>
+CASE68
+                   <SET TEMP32 %<> (TYPE FALSE)>
+CASEND65
+                   <LESS? CT10 TEMP32 - PHRASE62 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <FRAME '\1aI$READ-BUFFER>
+                   <PUSH DATA12>
+                   <CALL '\1aI$READ-BUFFER 1>
+                   <NTHUV DATA12 7 = TEMP32 (TYPE FIX)>
+                   <VEQUAL? TEMP32 0 - PHRASE72 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <RETURN RD41>
+                   <DEAD RD41>
+PHRASE72
+                   <NTHUV DATA12 6 = IBUF13>
+                   <JUMP + AGAIN43>
+PHRASE62
+                   <FRAME '\1aI$DO-SIN>
+                   <NTHUV DATA12 1 = STACK (TYPE FIX)>
+                   <PUSH BUFFER9>
+                   <DEAD BUFFER9>
+                   <PUSH CT10>
+                   <DEAD CT10>
+                   <NTHUV DATA12 5 = STACK (TYPE FIX)>
+                   <CALL '\1aI$DO-SIN 4 = TEMP18>
+                   <TYPE? TEMP18 <TYPE-CODE FALSE> + PHRASE75>
+                   <NTHUV DATA12 4 = TEMP32 (TYPE FIX)>
+                   <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
+                   <PUTUV DATA12 4 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <NTHUV DATA12 5 = TEMP32 (TYPE FIX)>
+                   <ADD TEMP32 TEMP18 = TEMP32 (TYPE FIX)>
+                   <PUTUV DATA12 5 TEMP32 (TYPE FIX)>
+                   <DEAD TEMP32>
+                   <PUTUV DATA12 8 0 (TYPE FIX)>
+                   <TYPE? IBUF13 <TYPE-CODE FALSE> + PHRASE78>
+                   <DEAD IBUF13>
+                   <NTHUV DATA12 10 = TEMP32>
+                   <PUTUV DATA12 6 TEMP32>
+                   <DEAD DATA12 TEMP32>
+PHRASE78
+                   <ADD TEMP18 RD41 = TEMP32 (TYPE FIX)>
+                   <DEAD TEMP18 RD41>
+                   <RETURN TEMP32>
+                   <DEAD TEMP32>
+PHRASE75
+                   <RETURN TEMP18>
+                   <DEAD TEMP18>
+PHRASE58
+                   <RETURN RD41>
+                   <DEAD RD41>
+                   <END \1aX$DISK-READ-BUFFER>
+\\f
+
+#WORD *23472577025*
+<GFCN \1aX$DISK-WRITE-BYTE ("VALUE" <OR FIX CHARACTER> CHANNEL ANY <OR FIX CHARACTER>) CHANNEL4 OPER5 BYTE6>
+                   <TEMP DATA7:I$DISK-CHANNEL BUF8 TEMP10 PT9 TEMP41>
+                   <INTGO>
+                   <NTHUV CHANNEL4 5 = DATA7 (TYPE I$DISK-CHANNEL)>
+                   <NTHUV DATA7 6 = BUF8>
+                   <TYPE BUF8 = TEMP10>
+                   <AND TEMP10 #WORD *7* = PT9>
+                   <DEAD TEMP10>
+                   <NTHUV DATA7 2 = TEMP10 (TYPE FIX)>
+                   <AND TEMP10 #WORD *120000* = TEMP10>
+                   <VEQUAL? TEMP10 0 - PHRASE12 (TYPE FIX)>
+                   <DEAD TEMP10>
+                   <FRAME '\1aERROR>
+                   <PUSH '@CHANNEL-NOT-OPEN-FOR-WRITING>
+                   <PUSH CHANNEL4>
+                   <DEAD CHANNEL4>
+                   <PUSH 'I$DISK-WRITE-BYTE>
+                   <CALL '\1aERROR 3>
+PHRASE12
+                   <TYPE? BUF8 <TYPE-CODE FALSE> - PHRASE17>
+                   <NTHUV DATA7 1 = TEMP10 (TYPE FIX)>
+                   <SYSOP 'BOUT TEMP10 BYTE6>
+                   <DEAD TEMP10>
+                   <NTHUV DATA7 4 = TEMP10 (TYPE FIX)>
+                   <ADD TEMP10 1 = TEMP10 (TYPE FIX)>
+                   <PUTUV DATA7 4 TEMP10 (TYPE FIX)>
+                   <DEAD TEMP10>
+                   <NTHUV DATA7 5 = TEMP10 (TYPE FIX)>
+                   <ADD TEMP10 1 = TEMP10 (TYPE FIX)>
+                   <PUTUV DATA7 5 TEMP10 (TYPE FIX)>
+                   <DEAD DATA7 TEMP10>
+                   <RETURN BYTE6>
+                   <DEAD BYTE6>
+PHRASE17
+                   <VEQUAL? PT9 5 - CASE23>
+                   <EMPUS? BUF8 - TAG26 (TYPE STRING)>
+                   <SET TEMP10 'T (TYPE ATOM)>
+                   <JUMP + CASEND22>
+TAG26
+                   <SET TEMP10 %<> (TYPE FALSE)>
+                   <JUMP + CASEND22>
+CASE23
+                   <VEQUAL? PT9 6 - CASE24>
+                   <EMPUU? BUF8 - TAG29 (TYPE UVECTOR)>
+                   <SET TEMP10 'T (TYPE ATOM)>
+                   <JUMP + CASEND22>
+TAG29
+                   <SET TEMP10 %<> (TYPE FALSE)>
+                   <JUMP + CASEND22>
+CASE24
+                   <VEQUAL? PT9 4 - CASE25>
+                   <EMPUB? BUF8 - TAG31 (TYPE BYTES)>
+                   <SET TEMP10 'T (TYPE ATOM)>
+                   <JUMP + CASEND22>
+TAG31
+                   <SET TEMP10 %<> (TYPE FALSE)>
+                   <JUMP + CASEND22>
+CASE25
+                   <SET TEMP10 %<> (TYPE FALSE)>
+CASEND22
+                   <TYPE? TEMP10 <TYPE-CODE FALSE> + PHRASE20>
+                   <DEAD TEMP10>
+                   <FRAME '\1aI$FLUSH-BUFFER>
+                   <PUSH DATA7>
+                   <CALL '\1aI$FLUSH-BUFFER 1>
+                   <NTHUV DATA7 6 = BUF8>
+PHRASE20
+                   <VEQUAL? PT9 5 - CASE36>
+                   <PUTUS BUF8 1 BYTE6>
+                   <RESTUS BUF8 1 = BUF8 (TYPE STRING)>
+                   <PUTUV DATA7 6 BUF8>
+                   <NTHUV DATA7 8 = TEMP10 (TYPE FIX)>
+                   <NTHUV DATA7 10 = PT9 (TYPE STRING)>
+                   <LENUS PT9 = PT9 (TYPE FIX)>
+                   <LENUS BUF8 = TEMP41 (TYPE FIX)>
+                   <DEAD BUF8>
+                   <SUB PT9 TEMP41 = PT9 (TYPE FIX)>
+                   <DEAD TEMP41>
+                   <LESS? TEMP10 PT9 - TAG42>
+                   <SET TEMP10 PT9 (TYPE FIX)>
+                   <DEAD PT9>
+TAG42
+                   <PUTUV DATA7 8 TEMP10 (TYPE FIX)>
+                   <DEAD TEMP10>
+                   <JUMP + CASE38>
+CASE36
+                   <VEQUAL? PT9 6 - CASE37>
+                   <PUTUU BUF8 1 BYTE6>
+                   <RESTUU BUF8 1 = BUF8 (TYPE UVECTOR)>
+                   <PUTUV DATA7 6 BUF8>
+                   <NTHUV DATA7 8 = PT9 (TYPE FIX)>
+                   <NTHUV DATA7 10 = TEMP41 (TYPE UVECTOR)>
+                   <LENUU TEMP41 = TEMP41 (TYPE FIX)>
+                   <LENUU BUF8 = TEMP10 (TYPE FIX)>
+                   <DEAD BUF8>
+                   <SUB TEMP41 TEMP10 = TEMP41 (TYPE FIX)>
+                   <DEAD TEMP10>
+                   <LESS? PT9 TEMP41 - TAG44>
+                   <SET PT9 TEMP41 (TYPE FIX)>
+                   <DEAD TEMP41>
+TAG44
+                   <PUTUV DATA7 8 PT9 (TYPE FIX)>
+                   <DEAD PT9>
+                   <JUMP + CASE38>
+CASE37
+                   <VEQUAL? PT9 4 - CASE38>
+                   <DEAD PT9>
+                   <PUTUB BUF8 1 BYTE6>
+                   <RESTUB BUF8 1 = BUF8 (TYPE BYTES)>
+                   <PUTUV DATA7 6 BUF8>
+                   <NTHUV DATA7 8 = TEMP41 (TYPE FIX)>
+                   <NTHUV DATA7 10 = TEMP10 (TYPE BYTES)>
+                   <LENUB TEMP10 = TEMP10 (TYPE FIX)>
+                   <LENUB BUF8 = PT9 (TYPE FIX)>
+                   <DEAD BUF8>
+                   <SUB TEMP10 PT9 = TEMP10 (TYPE FIX)>
+                   <DEAD PT9>
+                   <LESS? TEMP41 TEMP10 - TAG46>
+                   <SET TEMP41 TEMP10 (TYPE FIX)>
+                   <DEAD TEMP10>
+TAG46
+                   <PUTUV DATA7 8 TEMP41 (TYPE FIX)>
+                   <DEAD TEMP41>
+CASE38
+                   <NTHUV DATA7 4 = PT9 (TYPE FIX)>
+                   <ADD PT9 1 = PT9 (TYPE FIX)>
+                   <PUTUV DATA7 4 PT9 (TYPE FIX)>
+                   <DEAD PT9>
+                   <PUTUV DATA7 9 'T>
+                   <NTHUV DATA7 7 = TEMP10 (TYPE FIX)>
+                   <SUB TEMP10 1 = PT9 (TYPE FIX)>
+                   <DEAD TEMP10>
+                   <LESS? PT9 0 - TAG47>
+                   <SET PT9 0 (TYPE FIX)>
+TAG47
+                   <PUTUV DATA7 7 PT9 (TYPE FIX)>
+                   <DEAD DATA7 PT9>
+                   <RETURN BYTE6>
+                   <DEAD BYTE6>
+                   <END \1aX$DISK-WRITE-BYTE>
+#WORD *22434316071*
+<GFCN \1aI$FLUSH-BUFFER ("VALUE" <OR FALSE I$DISK-CHANNEL> I$DISK-CHANNEL) DATA4>
+                   <TEMP BUF5 JFN8:FIX TEMP11 PT10:FIX TB9 TEMP22>
+                   <INTGO>
+                   <NTHUV DATA4 6 = BUF5>
+                   <NTHUV DATA4 1 = JFN8 (TYPE FIX)>
+                   <TYPE BUF5 = TEMP11>
+                   <AND TEMP11 #WORD *7* = PT10>
+                   <DEAD TEMP11>
+                   <NTHUV DATA4 9 = TEMP11>
+                   <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE13>
+                   <DEAD TEMP11>
+                   <PUTUV DATA4 9 %<>>
+                   <SET TEMP11 BUF5>
+                   <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE37>
+                   <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
+                   <VEQUAL? PT10 5 - CASE19>
+                   <NTHUV DATA4 10 = TB9 (TYPE STRING)>
+                   <LENUS TB9 = TEMP22 (TYPE FIX)>
+                   <LENUS BUF5 = PT10 (TYPE FIX)>
+                   <DEAD BUF5>
+                   <SUB TEMP22 PT10 = TEMP22 (TYPE FIX)>
+                   <DEAD PT10>
+                   <JUMP + CASEND18>
+CASE19
+                   <VEQUAL? PT10 6 - CASE20>
+                   <NTHUV DATA4 10 = TB9 (TYPE UVECTOR)>
+                   <LENUU TB9 = PT10 (TYPE FIX)>
+                   <LENUU BUF5 = TEMP22 (TYPE FIX)>
+                   <DEAD BUF5>
+                   <SUB PT10 TEMP22 = TEMP22 (TYPE FIX)>
+                   <DEAD PT10>
+                   <JUMP + CASEND18>
+CASE20
+                   <VEQUAL? PT10 4 - CASE21>
+                   <DEAD PT10>
+                   <NTHUV DATA4 10 = TB9 (TYPE BYTES)>
+                   <LENUB TB9 = TEMP22 (TYPE FIX)>
+                   <LENUB BUF5 = PT10 (TYPE FIX)>
+                   <DEAD BUF5>
+                   <SUB TEMP22 PT10 = TEMP22 (TYPE FIX)>
+                   <DEAD PT10>
+                   <JUMP + CASEND18>
+CASE21
+                   <SET TEMP22 %<> (TYPE FALSE)>
+CASEND18
+                   <SUB TEMP11 TEMP22 = PT10 (TYPE FIX)>
+                   <DEAD TEMP11 TEMP22>
+                   <NTHUV DATA4 5 = TEMP11 (TYPE FIX)>
+                   <VEQUAL? PT10 TEMP11 + PHRASE26 (TYPE FIX)>
+                   <DEAD TEMP11>
+                   <SYSOP 'SFPTR JFN8 PT10>
+                   <PUTUV DATA4 5 PT10 (TYPE FIX)>
+                   <DEAD PT10>
+PHRASE26
+                   <NTHUV DATA4 8 = PT10 (TYPE FIX)>
+                   <VEQUAL? PT10 0 + PHRASE28 (TYPE FIX)>
+                   <SUB 0 PT10 = TEMP11 (TYPE FIX)>
+                   <SYSOP 'SOUT JFN8 TB9 TEMP11>
+                   <DEAD TEMP11>
+PHRASE28
+                   <NTHUV DATA4 5 = TEMP11 (TYPE FIX)>
+                   <ADD TEMP11 PT10 = PT10 (TYPE FIX)>
+                   <DEAD TEMP11>
+                   <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
+                   <VEQUAL? PT10 TEMP11 + PHRASE32 (TYPE FIX)>
+                   <DEAD TEMP11>
+                   <NTHUV DATA4 4 = PT10 (TYPE FIX)>
+                   <PUTUV DATA4 5 PT10 (TYPE FIX)>
+                   <SYSOP 'SFPTR JFN8 PT10>
+                   <DEAD JFN8 PT10>
+                   <JUMP + COND31>
+PHRASE32
+                   <PUTUV DATA4 5 PT10 (TYPE FIX)>
+                   <DEAD PT10>
+COND31
+                   <PUTUV DATA4 6 TB9>
+                   <DEAD TB9>
+                   <PUTUV DATA4 7 0 (TYPE FIX)>
+                   <PUTUV DATA4 8 0 (TYPE FIX)>
+                   <RETURN DATA4>
+                   <DEAD DATA4>
+PHRASE13
+                   <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
+                   <NTHUV DATA4 5 = PT10 (TYPE FIX)>
+                   <VEQUAL? TEMP11 PT10 + PHRASE35 (TYPE FIX)>
+                   <DEAD TEMP11 PT10>
+                   <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
+                   <SYSOP 'SFPTR JFN8 TEMP11>
+                   <DEAD JFN8 TEMP11>
+PHRASE35
+                   <NTHUV DATA4 4 = TEMP11 (TYPE FIX)>
+                   <PUTUV DATA4 5 TEMP11 (TYPE FIX)>
+                   <DEAD TEMP11>
+                   <PUTUV DATA4 7 0 (TYPE FIX)>
+                   <PUTUV DATA4 8 0 (TYPE FIX)>
+                   <SET TEMP11 BUF5>
+                   <DEAD BUF5>
+                   <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE37>
+                   <NTHUV DATA4 10 = TEMP11>
+                   <PUTUV DATA4 6 TEMP11>
+                   <DEAD TEMP11>
+                   <SET TEMP11 DATA4>
+                   <DEAD DATA4>
+PHRASE37
+                   <RETURN TEMP11>
+                   <DEAD TEMP11>
+                   <END \1aI$FLUSH-BUFFER>
+#WORD *32433161303*
+<GFCN \1aX$DISK-WRITE-BUFFER ("VALUE" ANY CHANNEL ANY <OR <PRIMTYPE UVECTOR> <PRIMTYPE STRING> <PRIMTYPE BYTES>> "OPTIONAL" FIX) CHANNEL6 OPER7 BUFFER8 LEN9>
+                   <OPT-DISPATCH 3 %<> OPT4 OPT5>
+OPT4
+                   <PUSH #T$UNBOUND 0>
+OPT5
+                   <TEMP TEMP16 PT10:FIX DATA11:I$DISK-CHANNEL IBUF12 JFN13:FIX TEMP25 RD52:FIX DONE55:FIX TEMP78>
+                   <INTGO>
+                   <TYPE BUFFER8 = TEMP16>
+                   <AND TEMP16 #WORD *7* = PT10>
+                   <DEAD TEMP16>
+                   <NTHUV CHANNEL6 5 = DATA11 (TYPE I$DISK-CHANNEL)>
+                   <NTHUV DATA11 6 = IBUF12>
+                   <NTHUV DATA11 1 = JFN13 (TYPE FIX)>
+                   <TYPE? LEN9 <TYPE-CODE UNBOUND> - PHRASE18>
+                   <VEQUAL? PT10 5 - CASE21>
+                   <LENUS BUFFER8 = TEMP16 (TYPE FIX)>
+                   <JUMP + CASEND20>
+CASE21
+                   <VEQUAL? PT10 6 - CASE22>
+                   <LENUU BUFFER8 = TEMP16 (TYPE FIX)>
+                   <JUMP + CASEND20>
+CASE22
+                   <VEQUAL? PT10 4 - CASE23>
+                   <LENUB BUFFER8 = TEMP16 (TYPE FIX)>
+                   <JUMP + CASEND20>
+CASE23
+                   <SET TEMP16 %<> (TYPE FALSE)>
+CASEND20
+                   <SET LEN9 TEMP16>
+                   <DEAD TEMP16>
+PHRASE18
+                   <SET TEMP16 LEN9>
+                   <DEAD LEN9>
+                   <LENU BUFFER8 = TEMP25>
+                   <GRTR? TEMP16 TEMP25 - TAG26>
+                   <SET TEMP16 TEMP25 (TYPE FIX)>
+                   <DEAD TEMP25>
+TAG26
+                   <SET LEN9 TEMP16>
+                   <DEAD TEMP16>
+                   <NTHUV DATA11 2 = TEMP25 (TYPE FIX)>
+                   <AND TEMP25 #WORD *120000* = TEMP25>
+                   <VEQUAL? TEMP25 0 - PHRASE28 (TYPE FIX)>
+                   <DEAD TEMP25>
+                   <FRAME '\1aERROR>
+                   <PUSH '@CHANNEL-NOT-OPEN-FOR-WRITING>
+                   <PUSH CHANNEL6>
+                   <DEAD CHANNEL6>
+                   <PUSH 'I$DISK-WRITE-BUFFER>
+                   <CALL '\1aERROR 3>
+PHRASE28
+                   <VEQUAL? LEN9 0 - PHRASE33 (TYPE FIX)>
+                   <RETURN 0>
+PHRASE33
+                   <TYPE? IBUF12 <TYPE-CODE FALSE> - PHRASE36>
+                   <FRAME '\1aI$DO-SOUT>
+                   <PUSH JFN13>
+                   <DEAD JFN13>
+                   <PUSH BUFFER8>
+                   <DEAD BUFFER8>
+                   <PUSH LEN9>
+                   <DEAD LEN9>
+                   <CALL '\1aI$DO-SOUT 3 = TEMP16>
+                   <SET TEMP25 TEMP16>
+                   <TYPE? TEMP25 <TYPE-CODE FALSE> + EXIT51>
+                   <NTHUV DATA11 4 = TEMP25 (TYPE FIX)>
+                   <ADD TEMP25 TEMP16 = TEMP25 (TYPE FIX)>
+                   <PUTUV DATA11 4 TEMP25 (TYPE FIX)>
+                   <DEAD TEMP25>
+                   <NTHUV DATA11 5 = TEMP25 (TYPE FIX)>
+                   <ADD TEMP25 TEMP16 = TEMP25 (TYPE FIX)>
+                   <PUTUV DATA11 5 TEMP25 (TYPE FIX)>
+                   <DEAD DATA11 TEMP25>
+                   <RETURN TEMP16>
+                   <DEAD TEMP16>
+PHRASE36
+                   <TYPE IBUF12 = TEMP25>
+                   <AND TEMP25 #WORD *7* = TEMP25>
+                   <VEQUAL? PT10 TEMP25 + PHRASE41 (TYPE FIX)>
+                   <DEAD TEMP25>
+                   <FRAME '\1aERROR>
+                   <PUSH '@BUFFER-IS-WRONG-TYPE>
+                   <FRAME '\1aTYPE>
+                   <PUSH BUFFER8>
+                   <DEAD BUFFER8>
+                   <CALL '\1aTYPE 1 = STACK>
+                   <PUSH 'I$DISK-WRITE-BUFFER>
+                   <CALL '\1aERROR 3 = TEMP25>
+                   <RETURN TEMP25>
+                   <DEAD TEMP25>
+PHRASE41
+                   <VEQUAL? PT10 5 - CASE47>
+                   <NTHUV DATA11 10 = TEMP25 (TYPE STRING)>
+                   <LENUS TEMP25 = TEMP25 (TYPE FIX)>
+                   <JUMP + CASEND46>
+CASE47
+                   <VEQUAL? PT10 6 - CASE48>
+                   <NTHUV DATA11 10 = TEMP16 (TYPE UVECTOR)>
+                   <LENUU TEMP16 = TEMP25 (TYPE FIX)>
+                   <DEAD TEMP16>
+                   <JUMP + CASEND46>
+CASE48
+                   <VEQUAL? PT10 4 - CASE49>
+                   <NTHUV DATA11 10 = TEMP16 (TYPE BYTES)>
+                   <LENUB TEMP16 = TEMP25 (TYPE FIX)>
+                   <DEAD TEMP16>
+                   <JUMP + CASEND46>
+CASE49
+                   <SET TEMP25 %<> (TYPE FALSE)>
+CASEND46
+                   <SET RD52 0 (TYPE FIX)>
+                   <LOOP>
+AGAIN56
+                   <INTGO>
+                   <VEQUAL? PT10 5 - CASE61>
+                   <EMPUS? IBUF12 - TAG64 (TYPE STRING)>
+                   <SET TEMP16 'T (TYPE ATOM)>
+                   <JUMP + CASEND60>
+TAG64
+                   <SET TEMP16 %<> (TYPE FALSE)>
+                   <JUMP + CASEND60>
+CASE61
+                   <VEQUAL? PT10 6 - CASE62>
+                   <EMPUU? IBUF12 - TAG67 (TYPE UVECTOR)>
+                   <SET TEMP16 'T (TYPE ATOM)>
+                   <JUMP + CASEND60>
+TAG67
+                   <SET TEMP16 %<> (TYPE FALSE)>
+                   <JUMP + CASEND60>
+CASE62
+                   <VEQUAL? PT10 4 - CASE63>
+                   <EMPUB? IBUF12 - TAG69 (TYPE BYTES)>
+                   <SET TEMP16 'T (TYPE ATOM)>
+                   <JUMP + CASEND60>
+TAG69
+                   <SET TEMP16 %<> (TYPE FALSE)>
+                   <JUMP + CASEND60>
+CASE63
+                   <SET TEMP16 %<> (TYPE FALSE)>
+CASEND60
+                   <TYPE? TEMP16 <TYPE-CODE FALSE> - CASE75>
+                   <DEAD TEMP16>
+                   <VEQUAL? PT10 5 - CASE73>
+                   <LENUS IBUF12 = TEMP16 (TYPE FIX)>
+                   <GRTR? TEMP16 LEN9 - TAG77>
+                   <SET TEMP16 LEN9 (TYPE FIX)>
+TAG77
+                   <SET TEMP78 BUFFER8>
+                   <MOVE-STRING TEMP78 IBUF12 TEMP16 (NO-OVERLAP %<>)>
+                   <DEAD TEMP78>
+                   <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
+                   <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
+                   <RESTUS BUFFER8 TEMP16 = BUFFER8 (TYPE STRING)>
+                   <PUTUV DATA11 9 'T>
+                   <RESTUS IBUF12 TEMP16 = IBUF12 (TYPE STRING)>
+                   <PUTUV DATA11 6 IBUF12>
+                   <NTHUV DATA11 4 = TEMP78 (TYPE FIX)>
+                   <ADD TEMP78 TEMP16 = TEMP78 (TYPE FIX)>
+                   <PUTUV DATA11 4 TEMP78 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <NTHUV DATA11 7 = DONE55 (TYPE FIX)>
+                   <SUB DONE55 TEMP16 = TEMP78 (TYPE FIX)>
+                   <DEAD DONE55 TEMP16>
+                   <LESS? TEMP78 0 - TAG80>
+                   <SET TEMP78 0 (TYPE FIX)>
+TAG80
+                   <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
+                   <LENUS IBUF12 = TEMP78 (TYPE FIX)>
+                   <DEAD IBUF12>
+                   <SUB TEMP25 TEMP78 = TEMP16 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <LESS? DONE55 TEMP16 - TAG83>
+                   <SET DONE55 TEMP16 (TYPE FIX)>
+                   <DEAD TEMP16>
+TAG83
+                   <PUTUV DATA11 8 DONE55 (TYPE FIX)>
+                   <DEAD DONE55>
+                   <JUMP + CASE75>
+CASE73
+                   <VEQUAL? PT10 6 - CASE74>
+                   <LENUU IBUF12 = TEMP16 (TYPE FIX)>
+                   <GRTR? TEMP16 LEN9 - TAG84>
+                   <SET TEMP16 LEN9 (TYPE FIX)>
+TAG84
+                   <SET TEMP78 BUFFER8>
+                   <MOVE-WORDS TEMP78 IBUF12 TEMP16 (TYPE UVECTOR) (DIRECTION %<>)>
+                   <DEAD TEMP78>
+                   <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
+                   <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
+                   <RESTUU BUFFER8 TEMP16 = BUFFER8 (TYPE UVECTOR)>
+                   <PUTUV DATA11 9 'T>
+                   <RESTUU IBUF12 TEMP16 = IBUF12 (TYPE UVECTOR)>
+                   <PUTUV DATA11 6 IBUF12>
+                   <NTHUV DATA11 4 = TEMP78 (TYPE FIX)>
+                   <ADD TEMP78 TEMP16 = TEMP78 (TYPE FIX)>
+                   <PUTUV DATA11 4 TEMP78 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <NTHUV DATA11 7 = DONE55 (TYPE FIX)>
+                   <SUB DONE55 TEMP16 = TEMP78 (TYPE FIX)>
+                   <DEAD DONE55 TEMP16>
+                   <LESS? TEMP78 0 - TAG86>
+                   <SET TEMP78 0 (TYPE FIX)>
+TAG86
+                   <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
+                   <LENUU IBUF12 = TEMP78 (TYPE FIX)>
+                   <DEAD IBUF12>
+                   <SUB TEMP25 TEMP78 = TEMP16 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <LESS? DONE55 TEMP16 - TAG89>
+                   <SET DONE55 TEMP16 (TYPE FIX)>
+                   <DEAD TEMP16>
+TAG89
+                   <PUTUV DATA11 8 DONE55 (TYPE FIX)>
+                   <DEAD DONE55>
+                   <JUMP + CASE75>
+CASE74
+                   <VEQUAL? PT10 4 - CASE75>
+                   <LENUB IBUF12 = TEMP16 (TYPE FIX)>
+                   <GRTR? TEMP16 LEN9 - TAG90>
+                   <SET TEMP16 LEN9 (TYPE FIX)>
+TAG90
+                   <SET TEMP78 BUFFER8>
+                   <MOVE-STRING TEMP78 IBUF12 TEMP16 (NO-OVERLAP %<>)>
+                   <DEAD TEMP78>
+                   <ADD RD52 TEMP16 = RD52 (TYPE FIX)>
+                   <SUB LEN9 TEMP16 = LEN9 (TYPE FIX)>
+                   <RESTUB BUFFER8 TEMP16 = BUFFER8 (TYPE BYTES)>
+                   <PUTUV DATA11 9 'T>
+                   <RESTUB IBUF12 TEMP16 = IBUF12 (TYPE BYTES)>
+                   <PUTUV DATA11 6 IBUF12>
+                   <NTHUV DATA11 4 = TEMP78 (TYPE FIX)>
+                   <ADD TEMP78 TEMP16 = TEMP78 (TYPE FIX)>
+                   <PUTUV DATA11 4 TEMP78 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <NTHUV DATA11 7 = DONE55 (TYPE FIX)>
+                   <SUB DONE55 TEMP16 = TEMP78 (TYPE FIX)>
+                   <DEAD DONE55 TEMP16>
+                   <LESS? TEMP78 0 - TAG92>
+                   <SET TEMP78 0 (TYPE FIX)>
+TAG92
+                   <PUTUV DATA11 7 TEMP78 (TYPE FIX)>
+                   <DEAD TEMP78>
+                   <NTHUV DATA11 8 = DONE55 (TYPE FIX)>
+                   <LENUB IBUF12 = IBUF12 (TYPE FIX)>
+                   <SUB TEMP25 IBUF12 = IBUF12 (TYPE FIX)>
+                   <LESS? DONE55 IBUF12 - TAG95>
+                   <SET DONE55 IBUF12 (TYPE FIX)>
+                   <DEAD IBUF12>
+TAG95
+                   <PUTUV DATA11 8 DONE55 (TYPE FIX)>
+                   <DEAD DONE55>
+CASE75
+                   <VEQUAL? LEN9 0 + PHRASE97 (TYPE FIX)>
+                   <FRAME '\1aI$FLUSH-BUFFER>
+                   <PUSH DATA11>
+                   <CALL '\1aI$FLUSH-BUFFER 1>
+                   <GRTR? LEN9 TEMP25 - PHRASE102 (TYPE FIX)>
+                   <FRAME '\1aI$DO-SOUT>
+                   <PUSH JFN13>
+                   <DEAD JFN13>
+                   <PUSH BUFFER8>
+                   <DEAD BUFFER8>
+                   <PUSH LEN9>
+                   <DEAD LEN9>
+                   <CALL '\1aI$DO-SOUT 3 = TEMP16>
+                   <NTHUV DATA11 5 = IBUF12 (TYPE FIX)>
+                   <ADD IBUF12 TEMP16 = IBUF12 (TYPE FIX)>
+                   <PUTUV DATA11 5 IBUF12 (TYPE FIX)>
+                   <DEAD IBUF12>
+                   <NTHUV DATA11 4 = IBUF12 (TYPE FIX)>
+                   <ADD IBUF12 TEMP16 = IBUF12 (TYPE FIX)>
+                   <PUTUV DATA11 4 IBUF12 (TYPE FIX)>
+                   <DEAD DATA11 IBUF12>
+                   <ADD TEMP16 RD52 = TEMP25 (TYPE FIX)>
+                   <DEAD TEMP16 RD52>
+                   <RETURN TEMP25>
+                   <DEAD TEMP25>
+PHRASE102
+                   <NTHUV DATA11 6 = IBUF12>
+                   <JUMP + AGAIN56>
+PHRASE97
+                   <RETURN RD52>
+                   <DEAD RD52>
+EXIT51
+                   <RETURN TEMP25>
+                   <DEAD TEMP25>
+                   <END \1aX$DISK-WRITE-BUFFER>
+\\f
+
+#WORD *5624272712*
+<GFCN \1aX$DISK-ACCESS ("VALUE" <OR FALSE FIX> CHANNEL ANY "OPTIONAL" <OR FIX FALSE>) CHANNEL6 OPER7 PTR8>
+                   <OPT-DISPATCH 2 %<> OPT4 OPT5>
+OPT4
+                   <PUSH #T$UNBOUND 0>
+OPT5
+                   <TEMP DATA9:I$DISK-CHANNEL JFN10:FIX OPTR11:FIX BUF12 TEMP17 PT16:FIX L15:FIX TL14:FIX>
+                   <INTGO>
+                   <NTHUV CHANNEL6 5 = DATA9 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL6>
+                   <NTHUV DATA9 1 = JFN10 (TYPE FIX)>
+                   <NTHUV DATA9 4 = OPTR11 (TYPE FIX)>
+                   <NTHUV DATA9 6 = BUF12>
+                   <TYPE BUF12 = TEMP17>
+                   <AND TEMP17 #WORD *7* = PT16>
+                   <DEAD TEMP17>
+                   <TYPE? BUF12 <TYPE-CODE FALSE> + CASE24>
+                   <VEQUAL? PT16 5 - CASE22>
+                   <LENUS BUF12 = L15 (TYPE FIX)>
+                   <NTHUV DATA9 10 = TEMP17 (TYPE STRING)>
+                   <LENUS TEMP17 = TL14 (TYPE FIX)>
+                   <DEAD TEMP17>
+                   <JUMP + CASE24>
+CASE22
+                   <VEQUAL? PT16 6 - CASE23>
+                   <LENUU BUF12 = L15 (TYPE FIX)>
+                   <NTHUV DATA9 10 = TEMP17 (TYPE UVECTOR)>
+                   <LENUU TEMP17 = TL14 (TYPE FIX)>
+                   <DEAD TEMP17>
+                   <JUMP + CASE24>
+CASE23
+                   <VEQUAL? PT16 4 - CASE24>
+                   <LENUB BUF12 = L15 (TYPE FIX)>
+                   <NTHUV DATA9 10 = TEMP17 (TYPE BYTES)>
+                   <LENUB TEMP17 = TL14 (TYPE FIX)>
+                   <DEAD TEMP17>
+CASE24
+                   <TYPE? PTR8 <TYPE-CODE UNBOUND> + BOOL27>
+                   <TYPE? PTR8 <TYPE-CODE FALSE> - PHRASE26>
+BOOL27
+                   <RETURN OPTR11>
+                   <DEAD OPTR11>
+PHRASE26
+                   <VEQUAL? PTR8 OPTR11 + PHRASE39 (TYPE FIX)>
+                   <TYPE? BUF12 <TYPE-CODE FALSE> + PHRASE28>
+                   <SUB TL14 L15 = TEMP17 (TYPE FIX)>
+                   <DEAD TL14 L15>
+                   <SUB OPTR11 TEMP17 = TEMP17 (TYPE FIX)>
+                   <LESS? PTR8 TEMP17 + PHRASE28 (TYPE FIX)>
+                   <DEAD TEMP17>
+                   <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
+                   <ADD TEMP17 OPTR11 = TEMP17 (TYPE FIX)>
+                   <GRTR? PTR8 TEMP17 + PHRASE28 (TYPE FIX)>
+                   <DEAD TEMP17>
+                   <GRTR? PTR8 OPTR11 - PHRASE32 (TYPE FIX)>
+                   <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
+                   <SUB PTR8 OPTR11 = JFN10 (TYPE FIX)>
+                   <DEAD OPTR11>
+                   <SUB TEMP17 JFN10 = TEMP17 (TYPE FIX)>
+                   <PUTUV DATA9 7 TEMP17 (TYPE FIX)>
+                   <DEAD TEMP17>
+                   <VEQUAL? PT16 5 - CASE35>
+                   <RESTUS BUF12 JFN10 = TEMP17 (TYPE STRING)>
+                   <DEAD BUF12 JFN10>
+                   <PUTUV DATA9 6 TEMP17>
+                   <DEAD TEMP17>
+                   <JUMP + PHRASE38>
+CASE35
+                   <VEQUAL? PT16 4 - CASE36>
+                   <RESTUB BUF12 JFN10 = TEMP17 (TYPE BYTES)>
+                   <DEAD BUF12 JFN10>
+                   <PUTUV DATA9 6 TEMP17>
+                   <DEAD TEMP17>
+                   <JUMP + PHRASE38>
+CASE36
+                   <VEQUAL? PT16 6 - PHRASE38>
+                   <DEAD PT16>
+                   <RESTUU BUF12 JFN10 = TEMP17 (TYPE UVECTOR)>
+                   <DEAD BUF12 JFN10>
+                   <PUTUV DATA9 6 TEMP17>
+                   <DEAD TEMP17>
+                   <JUMP + PHRASE38>
+PHRASE32
+                   <SUB OPTR11 PTR8 = JFN10 (TYPE FIX)>
+                   <DEAD OPTR11>
+                   <BACKU BUF12 JFN10 = TEMP17>
+                   <DEAD BUF12>
+                   <PUTUV DATA9 6 TEMP17>
+                   <DEAD TEMP17>
+                   <NTHUV DATA9 7 = TEMP17 (TYPE FIX)>
+                   <ADD TEMP17 JFN10 = TEMP17 (TYPE FIX)>
+                   <DEAD JFN10>
+                   <PUTUV DATA9 7 TEMP17 (TYPE FIX)>
+                   <DEAD TEMP17>
+PHRASE38
+                   <PUTUV DATA9 4 PTR8 (TYPE FIX)>
+                   <DEAD DATA9>
+                   <RETURN PTR8>
+                   <DEAD PTR8>
+PHRASE28
+                   <FRAME '\1aI$FLUSH-BUFFER>
+                   <PUSH DATA9>
+                   <CALL '\1aI$FLUSH-BUFFER 1>
+                   <SYSOP 'SFPTR JFN10 PTR8>
+                   <VEQUAL? PTR8 -1 - PHRASE42 (TYPE FIX)>
+                   <SYSOP 'RFPTR JFN10 (RETURN 2) = PTR8>
+                   <DEAD JFN10>
+PHRASE42
+                   <PUTUV DATA9 4 PTR8>
+                   <PUTUV DATA9 5 PTR8>
+                   <DEAD DATA9>
+PHRASE39
+                   <RETURN PTR8>
+                   <DEAD PTR8>
+                   <END \1aX$DISK-ACCESS>
+#WORD *27671765672*
+                   <GFCN \1aX$DISK-BUFOUT ("VALUE" CHANNEL CHANNEL ANY "OPTIONAL" <OR ATOM FALSE>) CHANNEL6 OPER7 FORCE?8>
+                   <OPT-DISPATCH 2 %<> OPT4 OPT5>
+OPT4
+                   <PUSH 'T>
+OPT5
+                   <TEMP DATA9 TEMP12>
+                   <INTGO>
+                   <NTHUV CHANNEL6 5 = DATA9 (TYPE I$DISK-CHANNEL)>
+                   <NTHUV DATA9 9 = TEMP12>
+                   <TYPE? TEMP12 <TYPE-CODE FALSE> + PHRASE11>
+                   <DEAD TEMP12>
+                   <FRAME '\1aI$FLUSH-BUFFER>
+                   <PUSH DATA9>
+                   <CALL '\1aI$FLUSH-BUFFER 1>
+PHRASE11
+                   <TYPE? FORCE?8 <TYPE-CODE FALSE> + PHRASE15>
+                   <DEAD FORCE?8>
+                   <FRAME '\1aT$CLOSE-OPEN>
+                   <NTHUV DATA9 1 = STACK (TYPE FIX)>
+                   <NTHUV DATA9 2 = STACK (TYPE FIX)>
+                   <NTHUV DATA9 3 = STACK (TYPE FIX)>
+                   <CALL '\1aT$CLOSE-OPEN 3>
+PHRASE15
+                   <NTHUV DATA9 2 = TEMP12 (TYPE FIX)>
+                   <AND TEMP12 #WORD *20000* = TEMP12>
+                   <VEQUAL? TEMP12 0 - PHRASE18 (TYPE FIX)>
+                   <DEAD TEMP12>
+                   <NTHUV DATA9 1 = TEMP12 (TYPE FIX)>
+                   <NTHUV DATA9 5 = DATA9 (TYPE FIX)>
+                   <SYSOP 'SFPTR TEMP12 DATA9>
+                   <DEAD TEMP12 DATA9>
+PHRASE18
+                   <RETURN CHANNEL6>
+                   <DEAD CHANNEL6>
+                   <END \1aX$DISK-BUFOUT>
+
+#WORD *11411612773*
+<GFCN \1aX$DISK-FILE-LENGTH ("VALUE" ANY CHANNEL ANY "OPTIONAL" <OR FALSE FIX> FIX) CHANNEL7 OPER8 NEW-SIZE9 BSZ10>
+                   <OPT-DISPATCH 2 %<> OPT4 OPT5 OPT6>
+OPT4
+                   <PUSH %<>>
+OPT5
+                   <PUSH 7>
+OPT6
+                   <TEMP DATA11:I$DISK-CHANNEL TEMP23:FIX PGS20>
+                   <INTGO>
+                   <NTHUV CHANNEL7 5 = DATA11 (TYPE I$DISK-CHANNEL)>
+                   <TYPE? NEW-SIZE9 <TYPE-CODE FALSE> + PHRASE13>
+                   <VEQUAL? NEW-SIZE9 -1 - EXIT18 (TYPE FIX)>
+                   <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
+                   <SYSOP 'SIZEF TEMP23 (RETURN 3) = PGS20>
+                   <DEAD TEMP23>
+                   <DIV 36 BSZ10 = TEMP23 (TYPE FIX)>
+                   <MUL TEMP23 PGS20 = TEMP23 (TYPE FIX)>
+                   <DEAD PGS20>
+                   <LSH TEMP23 9 = NEW-SIZE9 (TYPE FIX)>
+EXIT18
+                   <IFSYS "VAX">
+                   <NTHUV DATA11 1 = PGS20 (TYPE FIX)>
+                   <PUTBITS PGS20 16 16 131081 = TEMP23>
+                   <DEAD PGS20>
+                   <ENDIF "VAX">
+                   <IFSYS "TOPS20">
+                   <NTHUV DATA11 1 = PGS20 (TYPE FIX)>
+                   <PUTBITS PGS20 18 18 131081 = TEMP23>
+                   <DEAD PGS20>
+                   <ENDIF "TOPS20">
+                   <LSH BSZ10 24 = PGS20 (TYPE FIX)>
+                   <DEAD BSZ10>
+                   <SYSOP 'CHFDB TEMP23 1056964608 PGS20>
+                   <DEAD TEMP23>
+                   <IFSYS "VAX">
+                   <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
+                   <PUTBITS TEMP23 16 16 10 = PGS20>
+                   <DEAD TEMP23>
+                   <ENDIF "VAX">
+                   <IFSYS "TOPS20">
+                   <NTHUV DATA11 1 = TEMP23 (TYPE FIX)>
+                   <DEAD DATA11>
+                   <PUTBITS TEMP23 18 18 10 = PGS20>
+                   <DEAD TEMP23>
+                   <ENDIF "TOPS20">
+                   <SYSOP 'CHFDB PGS20 -1 NEW-SIZE9>
+                   <DEAD PGS20>
+                   <RETURN NEW-SIZE9>
+                   <DEAD NEW-SIZE9>
+PHRASE13
+                   <FRAME '\1aX$DISK-BUFOUT>
+                   <PUSH CHANNEL7>
+                   <DEAD CHANNEL7>
+                   <PUSH OPER8>
+                   <DEAD OPER8>
+                   <PUSH 'T>
+                   <CALL '\1aX$DISK-BUFOUT 3>
+                   <FRAME '\1aT$GET-BYTE-COUNT>
+                   <NTHUV DATA11 1 = STACK (TYPE FIX)>
+                   <NTHUV DATA11 3 = STACK (TYPE FIX)>
+                   <DEAD DATA11>
+                   <CALL '\1aT$GET-BYTE-COUNT 2 = PGS20>
+                   <RETURN PGS20>
+                   <DEAD PGS20>
+                   <END \1aX$DISK-FILE-LENGTH>
+\\f
+
+#WORD *6444033505*
+<GFCN \1aX$DISK-PRINT-DATA ("VALUE" ATOM CHANNEL ANY ANY) CHANNEL4 OPER5 OUTCHAN6>
+                   <TEMP DATA7:I$DISK-CHANNEL BUF8 TEMP31:FIX>
+                   <INTGO>
+                   <NTHUV CHANNEL4 5 = DATA7 (TYPE I$DISK-CHANNEL)>
+                   <DEAD CHANNEL4>
+                   <FRAME '\1aPRINC>
+                   <PUSH "#DISK-CHANNEL [">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH "JFN:">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <NTHUV DATA7 1 = STACK (TYPE FIX)>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH " MODE:">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <NTHUV DATA7 2 = STACK (TYPE FIX)>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH " BSZ:">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <NTHUV DATA7 3 = STACK (TYPE FIX)>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH " PTR:">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <NTHUV DATA7 4 = STACK (TYPE FIX)>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH " SPTR:">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <NTHUV DATA7 5 = STACK (TYPE FIX)>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH " BUF:">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <NTHUV DATA7 6 = BUF8>
+                   <TYPE? BUF8 <TYPE-CODE FALSE> + PHRASE22>
+                   <FRAME '\1aPRIN1>
+                   <NTHUV DATA7 7 = STACK (TYPE FIX)>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\/>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <TYPE? BUF8 <TYPE-CODE STRING> - PHRASE26>
+                   <DEAD BUF8>
+                   <FRAME '\1aPRIN1>
+                   <FRAME '\1aLENGTH>
+                   <NTHUV DATA7 10 = STACK>
+                   <CALL '\1aLENGTH 1 = BUF8>
+                   <FRAME '\1aLENGTH>
+                   <NTHUV DATA7 6 = STACK>
+                   <CALL '\1aLENGTH 1 = TEMP31>
+                   <SUB BUF8 TEMP31 = STACK (TYPE FIX)>
+                   <DEAD BUF8 TEMP31>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\/>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <FRAME '\1aLENGTH>
+                   <NTHUV DATA7 6 = STACK>
+                   <DEAD DATA7>
+                   <CALL '\1aLENGTH 1 = STACK>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <JUMP + PHRASE42>
+PHRASE26
+                   <FRAME '\1aPRIN1>
+                   <FRAME '\1aLENGTH>
+                   <NTHUV DATA7 10 = STACK>
+                   <CALL '\1aLENGTH 1 = TEMP31>
+                   <FRAME '\1aLENGTH>
+                   <NTHUV DATA7 6 = STACK>
+                   <CALL '\1aLENGTH 1 = BUF8>
+                   <SUB TEMP31 BUF8 = STACK (TYPE FIX)>
+                   <DEAD TEMP31 BUF8>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\/>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <FRAME '\1aPRIN1>
+                   <FRAME '\1aLENGTH>
+                   <NTHUV DATA7 6 = STACK>
+                   <DEAD DATA7>
+                   <CALL '\1aLENGTH 1 = STACK>
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRIN1 2>
+                   <JUMP + PHRASE42>
+PHRASE22
+                   <FRAME '\1aPRINC>
+                   <PUSH "<>">
+                   <PUSH OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+PHRASE42
+                   <FRAME '\1aPRINC>
+                   <PUSH !\]>
+                   <PUSH OUTCHAN6>
+                   <DEAD OUTCHAN6>
+                   <CALL '\1aPRINC 2>
+                   <RETURN 'T>
+                   <END \1aX$DISK-PRINT-DATA>
\ No newline at end of file