21 VS = ( INT( PEEK( -15604)/16) = 8) *3: IF VS < >3 THEN HOME : VTAB 12: PRINT "80 COLUMN CARD REQUIRED IN SLOT 3<CTRL-0x07>";: GET A$: PRINT CHR$(4)"BYE"
22 GOTO 101
30 M$ = "INVERTING LIST - ONE MOMENT...": GOSUB 6070: FOR Y = 1 TO INT(P/2):T$ = A$(Y):A$(Y) = A$(P +1 -Y):A$(P +1 -Y) = T$: NEXT : PRINT D$"FRE":J = 4:G = 1: GOSUB 5020: GOSUB 4521: GOSUB 4760: RETURN
40 I = P
42 I = INT(I/2): IF I <1 THEN 65
44 FOR T = 1 TO P -I: ON RIGHT$(A$(T),24) < RIGHT$(A$(T +I),24) GOTO 60:T$ = A$(T +I):A$(T +I) = A$(T):A$(T) = T$:X = T
50 ON X -I <1 GOTO 60: ON RIGHT$(A$(X -I),24) < RIGHT$(A$(X),24) GOTO 60:T$ = A$(X -I):A$(X -I) = A$(X):A$(X) = T$:X = X -I: GOTO 50
60 NEXT : GOTO 42
65 SF = 1: PRINT D$"FRE": PRINT : RETURN
80 X = J -3 + INT(G/27) *17: VTAB J: POKE E,G -1: PRINT A$(X): IF D = 9 OR D = 77 OR D = 18 THEN J = 4:G = 1: RETURN
81 IF D >48 AND D <58 THEN D = D -48:X = (D = 1) +(D = 9) *F +(D >1 AND D <9) * INT(D/9 *F):J = 3 +(X >34) *(X -34) +(X >17 AND X <35) *(X -17) +(X <18) *X:G = 1 +(X >17 AND X <35) *27 +(X >34) *54: GOTO 99
82 IF D = 21 THEN G = G +27: IF G >HM THEN G = 1: GOTO 98
84 IF D = 21 AND G = HM AND J >VM THEN J = VM: GOTO 98
86 IF D = 8 THEN G = G -27: IF G <1 THEN G = HM
88 IF D = 8 AND G = HM AND J >VM THEN J = VM: GOTO 98
90 IF (D = 11 OR D = 65) THEN J = J -1: IF G < = HM AND J <4 AND G >1 THEN G = G -27:J = 20: GOTO 98
92 IF (D = 11 OR D = 65) AND J <4 AND G = 1 THEN G = HM:J = VM: GOTO 98
94 IF D = 10 OR D = 32 OR D = 90 THEN J = J +1: IF G <HM AND J >20 THEN G = G +27:J = 4: GOTO 98
96 IF (D = 10 OR D = 32 OR D = 90) AND G = HM AND J >VM THEN G = 1:J = 4
98 IF R = 1 THEN 100
99 X = J -3 + INT(G/27) *17:O = X: INVERSE : VTAB J: POKE E,G: PRINT RIGHT$(A$(X),24): NORMAL
120 V$ = " FILE TYP BLKS FILE TYP BLKS FILE TYP BLKS": FOR X = 1 TO 79:K$ = K$ +" ": NEXT : FOR X = 1 TO 79:U$ = U$ +"-": NEXT :B1$ = LEFT$(K$,18):D$(0) = "VOLUME]":D$(1) = "DIRECTORY]": GOSUB 5000: GOSUB 5020: GOSUB 5030: GOSUB 5040: GOSUB 5050: FOR I = 8 TO 13 STEP 5: VTAB I: POKE E,27
121 PRINT "__________________________": NEXT : FOR I = 0 TO 4: VTAB 9 +I: POKE E,26: PRINT "|";: POKE E,53: PRINT "|": NEXT : VTAB 10: POKE E,36: PRINT "FileView"
122 VTAB 12: POKE E,29: PRINT "By Rick Pedley (C)1989":M$ = "**** CAPS LOCK DOWN PLEASE! ****": GOSUB 6070
126 GOSUB 43000: FOR I = 1 TO 1600 *GS: NEXT : IF D = 14 THEN GOSUB 6100: RETURN
150 GOSUB 4500: GOSUB 4700:J = 4:G = 1
170 IF CO THEN RETURN
171 IF GS >1 THEN POKE 49206,132
172 POKE KC,0: WAIT WT,TW:D = PEEK(WT) -TW: POKE KC,0:D = D -(D >96 AND D <123) *32: IF ((D = 8 OR D = 21 OR D = 10 OR D = 65 OR D = 11 OR D = 90) OR (D >48 AND D <58)) AND F >1 THEN GOSUB 80: GOTO 170
190 IF D = 79 THEN M = 1: GOSUB 4500: GOSUB 4800: GOTO 170
195 IF (D = 9 AND TD = 1) THEN GOSUB 4500: GOSUB 4700: GOTO 170
200 IF D = 9 AND TD >1 THEN GOSUB 4200: GOTO 170
201 IF D = 17 THEN 4604
203 IF D = 77 AND NOT W THEN GOSUB 4100: GOTO 170
205 IF D = 13 AND NOT R THEN GOSUB 4900: GOTO 170
210 IF D = 27 THEN GOSUB 4600: GOTO 170
215 IF D = 42 AND NOT R AND NOT W THEN GOSUB 4300: GOTO 170
220 IF D = 85 AND NOT R AND NOT W THEN GOSUB 4350: GOTO 170
225 IF D = 86 AND M >1 THEN GOSUB 4360: GOTO 170
230 IF (D = 82 AND NOT R) OR (D = 18) AND NOT W THEN GOSUB 4400: GOTO 170
235 IF D = 66 THEN GOSUB 4000:J = 4:G = 1: GOSUB 98: GOTO 170
240 IF (D = 68 OR D = 127) AND NOT R AND NOT W THEN GOSUB 4150: GOTO 170
245 IF D = 80 AND H$ < >"S3,D2" THEN GOSUB 3900: GOTO 170
250 IF D = 76 AND NOT R AND NOT W THEN GOSUB 3800: GOTO 170
255 IF D = 83 AND NOT SF AND F >1 THEN GOSUB 3750: GOTO 170
260 IF D = 84 AND NOT R THEN GOSUB 3500: GOTO 170
265 IF D = 32 AND F >1 THEN GOSUB 30: GOTO 170
270 REM IF D = 67 AND NOT R AND NOT CO AND MID$ (A$(O),18,3) < > "DIR" THEN GOSUB 3000: GOTO 170
3020 CO = 1: ON SM = 1 GOTO 3030:M$ = "FIND & OPEN TARGET DIRECTORY, THEN PRESS 'C' ('X' CANCELS, TAB CHOOSES DRIVE)": GOSUB 6070: GOTO 3060
3030 VTAB 21: POKE E,1: PRINT ">[C] TO SAME DIR? ["O$"]";: POKE E,3: GET A$: GOSUB 6160: IF A$ = "N" THEN O$ = "":SM = 0: GOSUB 5020: GOTO 3020
3040 ON A$ < >R$ AND A$ < >"Y" AND A$ < >"C" GOTO 3190
3041 M$ = "ONE MOMENT...": GOSUB 6070:AE = 0: FOR O = 1 TO TT: FOR X = 2 TO 17: IF MID$ (E$(O),X,1) = " " THEN C$ = MID$ (E$(O),2,X -2):G$ = MID$ (E$(O),18,3):X = 17
3042 NEXT : IF W$ = C$ THEN AE = 1:TF$ = C$:SZ = VAL( MID$ (E$(O),21,5)):O = TT
3044 NEXT : GOSUB 5020:D = 67: GOTO 3061
3060 GOSUB 171: ON D = 88 GOTO 3190: ON D < >88 AND D < >67 GOTO 3060: GOTO 3041
3061 IF NOT SM THEN TX = DP:TS$ = H$:O$ = F$:Z = (Y$ = TS$)
3062 IF W AND F$ = O$ THEN GOSUB 5020:M$ = "TARGET DISK IS WRITE-PROTECTED<CTRL-0x07>": GOSUB 6050: GOTO 3190
3067 IF O$ = Q$ THEN M$ = "SOURCE & TARGET PREFIXES ARE IDENTICAL<CTRL-0x07>": GOSUB 6050:M$ = "RENAME ONE OF THE VOLUMES FIRST WITH [CTRL-R]": GOSUB 6050: GOTO 3190
3070 IF M = 1 AND TT = 51 THEN M$ = "TARGET VOLUME DIRECTORY IS FULL<CTRL-0x07>": GOSUB 6050: GOTO 3190
3083 IF AE AND G$ = "DIR" THEN M$ = "FILE ALREADY EXISTS AND IS A 'DIR' FILE - CAN'T WRITE OVER IT<CTRL-0x07>": GOSUB 6050: GOTO 3190
3085 IF AE THEN VTAB 21: POKE E,10: PRINT " '"W$"' ALREADY EXISTS ON TARGET - COPY ANYWAY? [C]<CTRL-0x07> ";: GOSUB 6100: ON K < >217 AND K < >249 AND K < >195 AND K < >227 AND K < >141 GOTO 3190: GOSUB 5020
3090 IF (AE AND (B2 +SZ +1) <BS) OR ( NOT (AE) AND (B2 +1 <BS)) THEN M$ = "NOT ENOUGH ROOM ON TARGET DISK<CTRL-0x07>": GOSUB 6050: GOTO 3190
3095 PRINT D$"FRE":RE = 0: IF NOT Z THEN PRINT D$"PREFIX"Q$
3097 IF Z = 1 AND RE = 0 THEN M$ = "INSERT <--SOURCE--> DISK AND PRESS [RETURN]": GOSUB 6070: GOSUB 6100: ON K < >141 GOTO 3190: PRINT D$"PREFIX"Q$
3100 NM = LEN(W$): POKE 773,NM: POKE 768,0: FOR X = 1 TO NM: POKE 773 +X, ASC( MID$ (W$,X,1)): NEXT : CALL 790:L = PEEK(772) *65536 + PEEK(771) *256 + PEEK(770):FT = PEEK(769): FOR B = 0 TO L STEP CH:LO = CH *(L > = CH) +L *(L <CH): IF NOT Z GOTO 3130
3124 GOSUB 5020: IF Z AND RE = 0 THEN 3130
3125 H = 7:M$ = "INSERT <--SOURCE--> DISK AND PRESS [RETURN]": GOSUB 6070: IF Z THEN GOSUB 6100: PRINT D$"PREFIX"Q$
3126 ON K < >141 AND K < >248 AND K < >216 GOTO 3125: IF K < >141 THEN B = L: NEXT : GOTO 3190
3130 M$ = "READING <<SOURCE>>": GOSUB 6070: PRINT D$"BLOAD"Q$"/"W$",A"LA",B"B",L"LO",T"FT: GOSUB 5020: IF NOT Z THEN 3135
3133 H = 8:M$ = "INSERT -->TARGET<-- DISK AND PRESS [RETURN]": GOSUB 6070: IF Z THEN GOSUB 6100: PRINT D$"PREFIX"O$
3134 ON K < >141 AND K < >248 AND K < >216 GOTO 3133: IF K < >141 THEN B = L: NEXT : GOTO 3190
3135 H = 8:RE = RE +1
3136 M$ = "WRITING >>TARGET<<": GOSUB 6070: IF RE = 1 AND AE THEN PRINT D$"UNLOCK"O$"/"TF$: PRINT D$"DELETE"O$"/"TF$
3140 IF RE = 1 THEN PRINT D$"CREATE"O$"/"W$",T"FT
3150 PRINT D$"BSAVE"O$"/"W$",A"LA",B"B",L"LO",T"FT:L = L -CH: NEXT : PRINT D$"PREFIX"O$: CALL 855:M$ = "COPY COMPLETED - PRESS ANY KEY": GOSUB 6050: GOTO 3199
3190 M$ = "COPY ABORTED - PRESS ANY KEY<CTRL-0x07>": GOSUB 6050:CO = 0:S = B1:M = D1: IF Z THEN GOSUB 6150
3200 CO = 0:S = B1:M = D1:TT = TT +(AE = 0):B2 = B2 +SZ *(AE = 1) -BS: VTAB 2: POKE E,1: PRINT "FILE ": GOSUB 5020:X = TX: GOSUB 4850: PRINT B$(X);:X = SX: GOSUB 4850: INVERSE : PRINT B$(X);: NORMAL :DP = X:F$ = Q$:H$ = B$(X):M = D1:H = 3: GOSUB 4518: IF NOT SM THEN H = 1: GOSUB 4700
3202 IF SM THEN GOSUB 4760
3203 SM = NOT Z: RETURN
3500 H = 5:PR = 0: GOSUB 4910: GOSUB 6090:N$ = CHR$(0): IF PEEK(55) = 183 THEN N$ = ""
3508 GOSUB 6080: VTAB 7: PRINT "TYPE CONTENTS OF '"C$"' TO:": PRINT : PRINT " [1] SCREEN, OR": PRINT " [2] PRINTER? [1]";: POKE E,18: GET A$: ON A$ = E$ GOTO 3553: IF A$ = R$ THEN A$ = "1"
3509 A = VAL(A$): PRINT A: ON A <1 OR A >2 GOTO 3508: IF A = 2 THEN PR = 1: PRINT : VTAB 12: PRINT "TURN ON PRINTER, POSITION PAPER, THEN PRESS [RETURN]": GOSUB 6100: ON K < >141 GOTO 3508
3516 HOME :M$ = "PRESS [ESC] TO EXIT, [SPACEBAR] TO PAUSE/CONTINUE": GOSUB 6070: HOME : VTAB 6: IF PR = 1 THEN PRINT D$"PR#" STR$(PR)
3904 PRINT : VTAB 7: PRINT "PRINTER IS IN WHICH SLOT/PORT? [1]";: POKE E,32: GET L$: ON (L$ <"1" OR L$ >"7") AND L$ < >R$ AND L$ < >E$ GOTO 3904: IF L$ = R$ THEN L$ = "1"
3905 IF L$ = E$ THEN HOME : TEXT : PRINT OM$;: GOSUB 4521: GOSUB 4760: RETURN
3906 IF D = 66 THEN RETURN
3910 POKE E,32: PRINT L$
3915 PRINT : VTAB 9: PRINT "[1] EPSON SERIES,": PRINT "[2] IMAGEWRITER, OR": PRINT "[3] IMAGEWRITER II? [1]";: POKE E,21: GET I$: ON (I$ <"1" OR I$ >"3") AND I$ < >E$ AND I$ < >R$ GOTO 3915: ON I$ = E$ GOTO 3901: IF I$ = R$ THEN I$ = "1"
3918 POKE E,21: PRINT I$
3919 ON F < = 1 OR SF GOTO 3921: VTAB 14: POKE E,0: PRINT "SORT FIRST? [Y]";: POKE E,13: GET A$: GOSUB 6160: PRINT A$: ON A$ < >"Y" AND A$ < >R$ AND A$ < >E$ GOTO 3921: ON A$ = E$ GOTO 3901: VTAB 14: PRINT K$: VTAB 14: POKE E,0: PRINT "ONE MOMENT - SORTING A TO Z....":D = 19: GOSUB 40: VTAB 12: POKE E,0: PRINT K$
3921 VTAB 14: PRINT : VTAB 14: PRINT "PRINTING ON [P]APER OR [L]ABEL? [P]";: POKE E,34: GET A$: GOSUB 6160: ON A$ = E$ GOTO 3901: IF A$ < >"L" AND A$ < >"P" AND A$ < >R$ THEN 3921
3925 VTAB 16: POKE E,0: PRINT "TURN ON PRINTER AND POSITION "PG$" - THEN PRESS [RETURN]": GOSUB 6100: ON K < >141 GOTO 3901: POKE 34,19: HOME : PRINT D$"PR#"L$: IF I$ = "1" THEN PRINT E$"3" CHR$(14)E$"S" CHR$(1) CHR$(15)
3931 IF I$ = "2" THEN PRINT E$"Q"E$"T09"
3932 IF I$ = "3" THEN PRINT E$"Q"E$"T09"E$ CHR$(121)
3936 NORMAL : PRINT CHR$(24): PRINT X$: PRINT V$: PRINT U$:PS$ = " ": IF LS = 20 THEN PS$ = " "
3937 IF R THEN T$ = A$(1):A$(1) = "[NO FILES]" + LEFT$(K$,15)
3940 FOR X = P +1 TO P +3:A$(X) = LEFT$(K$,25): NEXT :RW = INT((P -.1)/3) +1: FOR X = 1 TO RW: PRINT LEFT$(A$(X),LS) +PS$ + LEFT$(A$(X +RW),LS) +PS$ + LEFT$(A$(X +RW *2),LS): NEXT : PRINT U$: IF LS = 20 THEN BS$ = B$:B$ = LEFT$(B$,18) + MID$ (B$,30,11) + MID$ (B$,45,18) +" FILES/" + LEFT$(D$(M >1),3) +":" + LEFT$(K$,3 - LEN( STR$(P))) + STR$(P): GOTO 3945
4000 GOSUB 6080: VTAB 5: PRINT : VTAB 5: PRINT "[S]CREEN OR [P]RINTER? [S]";: POKE E,24: GET A$: GOSUB 6160: ON A$ = E$ GOTO 4050: IF A$ = R$ THEN A$ = "S"
4001 ON A$ = E$ GOTO 4050: PRINT A$: IF A$ = "S" THEN 4020
4004 GOSUB 3904: IF L$ = E$ THEN RETURN
4006 PRINT : VTAB 9: PRINT "SWITCH ON PRINTER, POSITION PAPER & PRESS [RETURN]": GOSUB 6100: ON K < >141 GOTO 4000: POKE 34,19: HOME : VTAB 20: PRINT D$"PR#1": PRINT D$"CATALOG": PRINT D$"PR#0": PRINT OM$: GOTO 4050
4020 GOSUB 6080: VTAB 2: PRINT L$(2): GOSUB 4700: VTAB 4: FOR X = 1 TO P: PRINT A$(X): IF PEEK(37) = 20 AND X < >P THEN M$ = "PRESS ANY KEY FOR MORE - [ESC] TO CANCEL": GOSUB 6070: GOSUB 6100: GOSUB 6080: TEXT : VTAB 4: IF K = 155 THEN X = P: NEXT : GOTO 4050
4040 NEXT :M$ = "NO MORE - PRESS ANY KEY": GOSUB 6050
4050 GOSUB 5000:D = 1:H = 1: GOSUB 4700: IF CO THEN VTAB 2: POKE E,1: INVERSE : PRINT "COPYFILE": NORMAL
4060 RETURN
4100 FD = 0: IF F = 51 AND M = 1 THEN M$ = "VOLUME DIRECTORY IS FULL!<CTRL-0x07>": GOSUB 6050: RETURN
4110 GOSUB 80: GOSUB 4406: IF FD THEN RETURN
4115 IF LEN(F$ +"/" +S$) >64 THEN M$ = "PREFIX CONTAINS MORE THAN 64 CHARACTERS - MAKE NAME SHORTER<CTRL-0x07>": GOSUB 6050: GOSUB 98: RETURN
4150 GOSUB 4910:N = VAL( MID$ (A$(O),21,5)): IF CO AND F$ = Q$ AND Y$ = H$ AND W$ = C$ THEN M$ = "THIS FILE IS WAITING TO BE COPIED!<CTRL-0x07>": GOSUB 6050: RETURN
4165 M$ = "DELETING '" +C$ +"'": GOSUB 6070: PRINT D$"CLOSE": PRINT D$"DELETE"C$: GOSUB 5020:U = U -N:S = BT -U: FOR Y = O TO P -1:A$(Y) = A$(Y +1): NEXT :P = P -1:F = F -(P <51): IF F = 0 THEN F = 1:A$(1) = "[NO FILES IN THIS " +D$(M >1):R = 1
4200 H = 3:M$ = "[TAB] TO SELECT DRIVE, [RETURN] TO OPEN VOLUME": GOSUB 6070: ON D = 9 GOSUB 80:X = DP: IF D = 79 THEN GOSUB 6100: IF K = 141 THEN 4220
4210 GOSUB 4850: PRINT B$(X);: IF D = 79 THEN VTAB 8 +X: PRINT : VTAB 8 +X: POKE E,0: PRINT B$(X)": "C$(X)
4211 X = X +1: IF X >TD THEN X = 1
4212 INVERSE : GOSUB 4850: PRINT B$(X);: IF D = 79 THEN VTAB 8 +X: PRINT : VTAB 8 +X: POKE E,0: PRINT B$(X)": "C$(X)
4213 NORMAL : GOSUB 6100: ON K = 137 GOTO 4210
4214 IF K = 155 AND D = 9 THEN GOSUB 5020: GOSUB 4850: PRINT B$(X);:X = DP: INVERSE : GOSUB 4850: PRINT B$(X);: NORMAL : ON NOT R GOSUB 98: RETURN
4215 IF K = 141 AND D = 9 AND X = DP AND M = 1 THEN K = 155: GOTO 4214
4220 IF K = 141 THEN M = 1:DP = X:F$ = C$(X):H$ = B$(X):H = 3:SM = (CO = 1) *SM: GOSUB 4518:H = 1: GOSUB 4700: RETURN
4400 IF D = 18 THEN Z$ = "--> VOL ": GOSUB 80: GOTO 4407
4405 IF LEFT$(A$(O),1) = "*" THEN M$ = "FILE LOCKED!<CTRL-0x07>": GOSUB 6050: RETURN
4406 Z$ = "--> NEW ": IF D = 77 THEN Z$ = "--> DIR "
4407 GOSUB 4910: VTAB 21: PRINT Z$"NAME:[ ] (ENTER AN '*' TO CANCEL) ": POKE 33,30: VTAB 21: POKE E,14: CALL -657: TEXT : GOSUB 5020: GOSUB 5030: GOSUB 4770: VTAB 21: PRINT :S$ = "": FOR X = 512 TO 767:C = PEEK(X) -TW: IF C < >13 THEN S$ = S$ + CHR$(C -32 *(C >96 AND C <123)): IF C = 42 THEN X = 767: NEXT :FD = (D = 77): RETURN
4415 IF C = 13 THEN X = 767
4420 NEXT :L = LEN(S$): IF L >15 THEN M$ = "FILENAME TOO LONG!<CTRL-0x07>": GOSUB 6050:FD = (D = 77): RETURN
4430 IF L = 0 THEN FD = (D = 77): RETURN
4432 NG = 1: FOR NC = 1 TO L:NA = ASC( MID$ (S$,NC,1)):NG = ((NA >64 AND NA <91) OR (((NA = 46) OR (NA >47 AND NA <58)) AND NC >1)) AND NG = 1: NEXT : IF NG = 0 THEN M$ = "A-Z, 0-9, AND PERIODS ONLY - START WITH A LETTER!<CTRL-0x07>": GOSUB 6050: GOTO 4407
4440 IF D = 18 THEN M$ = "RENAMING VOLUME": GOSUB 6070: PRINT D$"RENAME"C$(DP)","S$: GOSUB 5020: GOSUB 4500: GOSUB 4700: RETURN
4502 H = 2:X = 0: FOR Y = 22 TO 24: VTAB Y: POKE E,61: PRINT B1$;: NEXT : FOR SL = 2 TO 7: FOR DR = 1 TO 2: VTAB 5: PRINT D$"PREFIX,S"SL",D"DR:X = X +1: PRINT D$"PREFIX": IF X = 1 AND J$ = "" THEN INPUT "";J$:J$ = LEFT$(J$, LEN(J$) -1):H$ = "S" + STR$( PEEK(SA)) +",D" + STR$( PEEK(DA)): PRINT D$"PREFIX"
4506 INPUT "";C$(X):C$(X) = LEFT$(C$(X), LEN(C$(X)) -1):B$(X) = "S" + STR$(SL) +",D" + STR$(DR): GOSUB 4850: IF C$(X) = J$ AND B$(X) = H$ THEN INVERSE :DP = X
4512 PRINT B$(X);: NORMAL
4515 NEXT : NEXT : IF NOT (X) THEN M$ = "INSERT A DISK!<CTRL-0x07>": GOSUB 6050: GOTO 4500
4700 GOSUB 6080: TEXT :U = 0:S = 0:BT = 0:SF = 0: IF (CO AND NOT SM) THEN KK = 1
4702 M$ = "READING FILENAMES": GOSUB 6070:R = 0:F = 1: VTAB 4: PRINT D$"FRE": PRINT D$"OPEN"F$",TDIR": PRINT D$"READ"F$: FOR X = 1 TO 3: INPUT L$(X): NEXT
4710 INPUT A$(F): IF A$(F) = "" AND F = 1 THEN R = 1:A$(1) = "[NO FILES IN THIS " +D$(M >1): ON KK = 0 GOTO 4750:TT = 0: GOTO 4750
4715 IF A$(F) = "" THEN F = F -1: ON KK = 0 GOTO 4750:TT = F: GOTO 4750
4720 ON D = 66 GOTO 4722:A$(F) = LEFT$(A$(F),20) + MID$ (A$(F),24,5): IF KK THEN E$(F) = A$(F)
4722 IF H$ = "S3,D2" THEN U = U + VAL( MID$ (A$(F),24,5))
4730 F = F +1: GOTO 4710
4750 ON H$ = "S3,D2" GOTO 4752: INPUT B$:S = VAL( MID$ (B$,14,4)):U = VAL( MID$ (B$,36,4)):BT = S +U: IF KK THEN B2 = S
4752 P = F: IF F >51 THEN M$ = "THERE ARE MORE THAN 51 FILES - [SPACE BAR] TOGGLES LIST": GOSUB 6070:F = 51
4753 IF P >102 THEN M$ = "MORE THAN 102 FILES - CANNOT DISPLAY THEM ALL<CTRL-0x07>": GOSUB 6070
4755 PRINT D$"CLOSE": ON H$ < >"S3,D2" GOTO 4757:BT = 127:U = U +8:S = BT -U:B1 = S: IF KK THEN B2 = S
4756 IF R THEN VTAB 4: POKE E,0: PRINT A$(1)
4757 GOSUB 4650: IF D = 66 OR D = 80 THEN B$ = "BLOCKS FREE:" + LEFT$(K$,5 - LEN( STR$(S))) + STR$(S) +" BLOCKS USED:" + LEFT$(K$,5 - LEN( STR$(U))) + STR$(U) +" TOTAL BLOCKS: 127": GOTO 4770
4759 IF D = 66 THEN 4770
4760 FOR X = 1 TO F: VTAB 3 +(X >34) *(X -34) +(X >17 AND X <35) *(X -17) +(X <18) *X: POKE E,0 +(X >17 AND X <35) *27 +(X >34) *54: IF X = F THEN VM = PEEK(37) +1:HM = PEEK(36) +1
4765 PRINT A$(X): NEXT :O = 1
4770 FOR X = 22 TO 24: VTAB X: POKE E,10: PRINT " ";: NEXT : VTAB 22: POKE E,14 - LEN( STR$(U)): PRINT U: POKE E,14 - LEN( STR$(S)): PRINT S: POKE E,14 - LEN( STR$(P)): PRINT P -(R = 1) +(P = 0);: IF D = 82 OR D = 66 THEN GOSUB 5020:KK = 0: RETURN
4772 GOSUB 5020: IF NOT R THEN VTAB 4: PRINT : VTAB 4: POKE E,1: INVERSE : PRINT RIGHT$(A$(1),24): NORMAL
4775 KK = 0: RETURN
4800 GOSUB 6080: TEXT : VTAB 7: PRINT "ON-LINE VOLUMES:": PRINT "---------------": FOR X = 1 TO TD: IF C$(X) = J$ AND B$(X) = H$ THEN INVERSE
4810 PRINT B$(X)": "C$(X): NORMAL : NEXT : VTAB 1: GOSUB 4200: RETURN
4850 VTAB 21 +(X = 1 OR X = 4 OR X = 7) +2 *(X = 2 OR X = 5 OR X = 8) +3 *(X = 3 OR X = 6 OR X = 9): POKE E,61 +(X >3) *6 +(X >6) *6: RETURN
4900 H = 4: GOSUB 6090: IF (G$ = "DIR") +(G$ = "SYS") +(G$ = "BIN") +(G$ = "BAS") +(G$ = "TXT") = 0 THEN PRINT BE$: RETURN
4910 FOR X = 2 TO 17: IF MID$ (A$(O),X,1) = " " THEN C$ = MID$ (A$(O),2,X -2): GOSUB 6090:X = 17
4920 NEXT : IF D < >13 THEN RETURN
4925 IF G$ = "DIR" THEN F$ = F$ +"/" +C$:M = M +1:H = 2: GOSUB 4518:H = 1: GOSUB 4700: RETURN
4927 IF GS >1 THEN POKE 49206,SP
4930 IF G$ = "TXT" THEN RN$ = "EXEC "
4940 IF G$ = "BIN" OR G$ = "SYS" THEN RN$ = "BRUN "
4950 IF G$ = "BAS" THEN RN$ = "RUN "
4955 M$ = "PRESS [RETURN] AGAIN TO " +RN$ +"'" +C$ +"'": GOSUB 6070: GOSUB 6100: ON K = 141 GOTO 4960: GOSUB 5020: RETURN
4960 TEXT : HOME : PRINT CD$: VTAB 10: HTAB 9: PRINT RN$;C$"...": PRINT D$"CLOSE": PRINT D$"-"C$: RETURN
6150 M$ = "PLEASE INSERT <<SOURCE>> DISK IN " +Y$: GOSUB 6050: VTAB 4: PRINT D$"PREFIX,"Y$: PRINT D$"PREFIX": INPUT P$: IF P$ < >Q$ +"/" THEN PRINT BE$;: GOTO 6150
6152 RETURN
6160 A = ASC(A$): IF A >96 AND A <123 THEN A$ = CHR$(A -32)
6162 RETURN
40000 Q = PEEK(222): CALL -3288: ON H = 1 AND (Q = 8 OR Q = 6) GOTO 4502: ON H = 2 AND (Q = 8 OR Q = 3) GOTO 4515: IF (H = 1 OR H = 2) AND (Q = 5 OR Q = 20) AND F = 1 THEN R = 1:A$(1) = "[NO FILES IN THIS " +D$(M >1): GOTO 4750
40021 IF (H = 1 OR H = 2) AND (Q = 5 OR Q = 20) THEN F = F -1: GOTO 4750
40030 IF H = 3 THEN POP :H = 1: GOSUB 4500: GOSUB 4700: GOTO 170
40035 IF H = 8 AND Q = 4 THEN M$ = "TARGET IS WRITE-PROTECTED - PLEASE REMOVE STICKER<CTRL-0x07>": GOSUB 6050: GOTO 3136
40041 IF H = 7 THEN PRINT BE$: GOTO 3125
40042 IF H = 8 THEN PRINT BE$: GOTO 3133
40043 IF Q = 8 OR Q = 6 THEN H = 1: GOSUB 4500: GOSUB 4700: GOTO 170
40044 IF Q = 19 THEN POP :M$ = "FILENAME ALREADY IN USE!<CTRL-0x07>": GOSUB 6050: GOTO 170
40045 IF Q = 10 THEN POP :M$ = "DIRECTORY STILL CONTAINS FILES!<CTRL-0x07>": GOSUB 6050: GOTO 170
40046 IF Q = 107 THEN M$ = "THIS PROGRAM CANNOT HANDLE MORE THAN 130 FILES AT ONCE!<CTRL-0x07>": GOSUB 6050:M$ = "PLEASE INSERT ANOTHER DISK AND TRY AGAIN": GOSUB 6050: RUN
40047 IF Q = 4 THEN PRINT CD$: PRINT D$"BYE"
40050 IF H = 5 AND Q = 5 THEN 3550
40200 VTAB 21: HTAB 1: PRINT "UNDETERMINED ERROR. PRESS A KEY TO EXIT": POKE -16368,0: WAIT -16384,128: GET K$: PRINT CHR$(4)"BYE"
41000 Q = PEEK(222): CALL -3288: ON Q = 4 OR Q = 13 GOTO 4654: IF Q = 9 THEN M$ = "DISK IS FULL - YOU MUST CHECK WRITE-PROTECT STATUS YOURSELF!<CTRL-0x07>": GOSUB 6050:W = 0: GOTO 4657
41010 IF Q = 17 THEN M$ = "VOLUME DIRECTORY IS FULL - YOU MUST CHECK WRITE-PROTECT STATUS YOURSELF!<CTRL-0x07>": GOSUB 6050:W = 0: GOTO 4657
41020 IF Q = 19 THEN M$ = "DUPLICATE VOLUMES ON LINE - CHECK WRITE-PROTECT STATUS YOURSELF!<CTRL-0x07>": GOSUB 6050:W = 0: GOTO 4657
41050 GOTO 40200
43000 FOR I = 790 TO 885: READ V: POKE I,V: NEXT I: RETURN : DATA 32,0,191,200,102,3,208,36,173,107,3,141,109,3,141,114,3,32,0,191,209,108,3,208,19,32,0,191,204,113,3,208,11,169,10,141,115,3,32,0,191,196,115,3,141,0,3,173,119,3
43001 DATA 141,1,3,160,2,185,110,3,153,2,3,136,16,247,96,169,7,141,115,3,32,0,191,195,115,3,141,0,3,96,3,5,3,0,112,0,2,0,0,0,0,1,0,10,5,3