home *** CD-ROM | disk | FTP | other *** search
Wrap
0 REM********************************** 1 REM 2 REM PETER J. PONZO 3 REM 49 MARGARET AVE. S. 8 REM WATERLOO,ONT. N2J 2C8 4 REM JUN 19/82 5 REM 6 REM CORRECTIONS BY DAVID LOVELOCK 7 REM MODIFIED FOR NEW C64'S BY 8 REM DAVID BYRUM - 8/83 9 REM********************************** 10 POKE53280,6:POKE53281,6 11 PRINT"[147]";CHR$(142);TAB(11)"[144]DISK VIEW PROGRAM":PRINTS0$:GOSUB8000 100 REM******** 101 REM* * 102 REM* MENU * 103 REM" [184][184][184][184] * 104 [143]******** 105 [160]15:[159]15,8,15 106 CS[178]55296:SN[178]1024 110 [153]"LOAD";[199](14);[163]11)"STOPSTR$RIGHT$(null)(null)CLOSE(null)RIGHT$VAL(null)CLOSE(null)(null)(null)CHR$(null)ATN(null)":[153]S0$ 115 [153]"1WAIT:(null)OAD BLOCK INTO BUFFER" 120 [153]"2WAIT:(null)EE ATN(null)LENRIGHT$RIGHT$ OF ABOVE BLOCK" 130 [153]"3WAIT:(null)ODIFY ABOVE BLOCK" 140 [153]"4WAIT:(null)TORE ABOVE BLOCK IN (null)ATN(null)" 150 [153]"5WAIT:(null)RITE BLOCK IN (null)ATN(null) TO DISK" 160 [153]"6WAIT:PEEKLOCK ATNVAILABILITY (null)AP" 170 [153]"7WAIT:STR$ISK LENOMMANDS" 180 [153]"8WAIT:(null)RACE PEEKLOCKS 185 PRINT"9[146]:[213]NSCRATCH A [198]ILE 186 [153]"(null)VAL(null)(null)(null)(null)WAIT TO (null)UIT" 198 [141]310:[139]IN[178]0[167]7900 199 [145]IN[141]1000,2000,3000,4000,5000,6000,7000,7100,7500 200 [137]105 300 [143] GET 301 [143]" FREFREFRE 305 PRINT"[158][210][197][212][213][210][206][146] TO CONTINUE.":POKE 198,0 310 GETIN$:IFIN$<>""THEN310 320 GETIN$:IFIN$=""THEN320 330 IN=VAL(IN$):RETURN 1000 REM LOAD BLOCK INTO BUFFER 1001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184] 1010 [160]3:[160]15:[159]15,8,15:[159]3,8,3,"#":[161]#3,BN$:BN[178][198](BN$[170][199](0)) 1015 BN$[178][202](BN$,2):BM[178]BN[170]3[170]12[172][181]((BN[170]1)[173]4) 1020 [152]15,"B-P";3;1:[153]"LOAD" 1030 [129]K[178]0[164]10:[152]3,K$;:[130] 1040 [153]"LOAD"[170]SD$[170]"" 1045 [153]"(null)(null)ATNSTR$CLOSEPEEK(null)(null)LEN(null)CLOSE(null)(null)ATN(null)(null)RIGHT$(null)CHR$" 1050 [133]"AT STOP(null)(null)ATNLEN(null),STOP(null)VALLEN(null)(null)(null) SPC(CMDCMDCMD";T,S 1060 [152]15,"B-R";3;DR;T;S 1070 [152]15,"B-P";3;0 1080 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0) 1090 C(0)[178][198](Z$):[141]1200 1120 [153]"(null)VAL(null)(null)(null)(null) TO TERMINATE":CRT[178]01069:[153][196](C(0))[196](C(1)); 1130 J[178]2:[129]I[178]2[164]255:[152]15,"M-R";[199](I);[199](BM):I%[178]I[173]32 1135 CP[178]CS[170](CRT[171]SN) 1140 [161]#15,B$:[139]B$[178]""[167]B$[178][199](0) 1150 C(I)[178][198](B$):[139]T[179][177]DI[167]1165 1160 [139]S[177]0[175]I%[172]32[178]I[171]5[167][141]10000 1162 [139]S[177]0[175]I%[172]32[178]I[167][141]11000 1165 [151] CRT[170]J,C(I):[151] CP[170]J,0 1170 [161]A$:[139]A$[179][177]""[167][141]1195 1180 J[178]J[170]1:[130] 1190 [160]3:[160]15:[153]SD$"ONON":[141]300:[142] 1195 [153]SD$"PEEK(null)(null)LEN(null) LEFT$ATN(null) (null)(null)(null) PEEKVALVAL(null) LEN(null)(null)(null)(null)VAL(null)VAL(null)(null) (null)(null)ATNSTR$VALSTR$" 1196 [133]"..WANT TO CONTINUE LOADING NCMDCMDCMD";N$:[139]N$[178]"N"[167]I[178]256 1197 [153]SD$"ONON " 1198 [153]" " 1199 [142] 1200 [143] C(0)/C(1) 1201 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB( 1210 PRINTSD$:PRINT#15,"B-P";3;1 1220 GET#3,B$:IFB$=""THENB$=CHR$(0) 1230 C(1)=ASC(B$) 1240 IFC(0)=0THENPRINTSD$:PRINT"[144][204]AST [212]RACK":PRINT"[194]YTES [213]SED="C(1):RETURN 1250 PRINTSD$:PRINT"[206]EXT [212]RACK ="C(0):PRINT"[206]EXT [211]ECTOR="C(1) 1260 NT=C(0):NS=C(1):RETURN 2000 REM PRINT ASCII 2001 REM"[184][184][184][184][184][184][184][184][184][184][184] 2002 IJ[178]0:II[178]255[171]8:[153]"LOAD" 2005 [153]"FOR(null)VAL(null)(null)(null)(null) TO DISCONTINUE PRINTING..":[153]S0$:AB[178]31:EE$[178]"WAIT " 2010 [129]I[178]0[164]II[169]8:Y$[178][196](I):Y$[178]"ON"[170][201](" "[170]Y$,3):E0$[178]EE$ 2012 [153]""CL$:[153]""Y$"WAIT->";:[129]J[178]0[164]7:H[178]I[170]J:C5[178]C(H) 2013 [139]C5[177]AB[167]E0$[178]E0$[170][199](C5):[137]2015 2014 E0$[178]E0$[170]" " 2015 E$[178][201](" "[170][202]([196](C5),2),3) 2020 [153]R$(P)E$R$(1[171]P);:P[178]1[171]P:[130] 2025 [161]A$:[139]A$[179][177]""[167]II[178]I:I[178]255 2030 [153]E0$:[130]:[153]CL$:[153]CL$:[153]CL$:[153]CL$ 2031 [153]"ONONONONLEN(null)(null)(null)VAL(null)(null) STOP(null)(null)ATNLEN(null),STOP(null)VALLEN(null)(null)(null) ="T","S 2035 [153]"(null)EXT TRACK,SECTOR="NT","NS 2040 [139]IJ[178]0[167][141]300 2050 [142] 3000 [143] MODIFY BLOCK 3001 [143]"FREFREFREFREFREFREFREFREFREFREFREFRE 3050 PRINT"[147][205][207][196][201][198][217][160][194][204][207][195][203]" 3060 PRINT"[212]HE [193][211][195][201][201] CODE FOR EACH BLOCK-BYTE" 3070 PRINT"WILL BE DISPLAYED..I.E. C(0)...C(255)." 3080 PRINT"[217]OU MAY REDEFINE ANY C(I). [212]HE MODIFIED" 3090 PRINT"BLOCK WILL BE WRITTEN TO THE DISK" 3100 PRINT"INTO THE [212]RACK,[211]ECTOR YOU SELECT." 3102 PRINT"[212]HESE KEYS MAY BE USED TO HELP SPEED-UP" 3104 PRINT"THE ENTRY PROCESS:" 3106 PRINTTAB(5)"[129]_ KEY WILL ADVANCE I BY ONE." 3108 PRINTTAB(5)"[129]\ KEY WILL ENTER A [150]160 FOR C(I)." 3110 PRINT 3120 GOSUB300:PRINT"[147]":II=255-8:IJ=1 3130 PRINT"":GOSUB2005 3140 PRINT">>>[129][210][197][212][213][210][206] TO QUIT[146]<<<":GETI$ 3150 INPUT"[215][200][201][195][200] I [196][207][160][217][207][213][160][215][201][211][200][160][212][207][160][205][207][196][201][198][217][146] [157][157]?[157][157][157]";I$ 3155 IF I$="_" THEN I=I+1:GOTO3165 3157 I=VAL(I$) 3160 IFI$="?"THEN3173 3165 PRINT"CURRENT C("I")= [160][157][157][157][157][157][129]"C(I); 3167 PRINT"NEW VALUE= [157][157][157][157][157]";:INPUTC$:IF C$="\" THENC$="160" 3170 C(I)=VAL(C$) 3171 IF I>II THENII=I 3172 GOTO3150 3173 PRINT"[147]":GOSUB2005:PRINT" >>>OK[146] ([129]Y/[129]N) ? "; 3174 POKE204,0:GOSUB310:POKE204,1:IF IN$="N"THENPRINT" ":GOTO3150 3175 IF IN$<>"Y"ANDIN$<>"N" THEN3174 3176 PRINT"[147][205][207][196][201][198][217][201][206][199][160][194][204][207][195][203]" 3177 INPUT"[208]UT MODIFICATIONS ON DISK[146] Y[157][157][157]";IN$ 3178 IFIN$="N"THENRETURN 3179 PRINT"[195][213][210][210][197][206][212] [212][210][193][195][203],[211][197][195][212][207][210]="T","S 3180 PRINT"NEXT TRACK,SECTOR="NT","NS 3185 INPUT"[196][197][211][212][201][206][193][212][201][207][206][146] [144][212][210][193][195][203],[144][211][197][195][212][207][210] [166][157][157][157]";T,S:IF(T<1)OR(T>TT)THEN3180 3190 INPUT"[196][197][211][212][201][206][193][212][201][207][206] [196][210][201][214][197] #[146][160][160][160]0[157][157][157]";DR$:DR=VAL(DR$) 3200 CLOSE3:CLOSE15:OPEN15,8,15 3210 OPEN3,8,3,"#":GOSUB63900 3215 GET#3,BN$:BN=ASC(BN$):PRINT"[147][205][207][196][201][198][217][201][206][199][160][194][204][207][195][203]"SD$"USING [194][213][198][198][197][210] #"BN 3220 BM=BN+3+12*INT((BN+1)/4) 3225 FORI=0TO255 3230 PRINT#15,"M-W";CHR$(I);CHR$(BM);CHR$(1);CHR$(C(I)) 3240 PRINT" [157][157][157]"I 3250 NEXT 3280 PRINT#15,"U2:";3;DR;T;S 3290 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15 3300 PRINT"[147]":RETURN 4000 REM STORE C(I) IN RAM 4001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184] 4005 [153]"LOAD";:[141]2000 4010 [153]"ON(null)(null)(null)(null)VALCLOSE(null)LEFT$RIGHT$(null) PEEK(null)(null)LEN(null)CLOSERIGHT$(null)CLOSE(null)ATN(null)" 4020 [133]"(null)(null)ATN(null)(null)RIGHT$(null)CHR$CLOSE(null)ATN(null)(null)VALCLOSE(null)ASC IWAIT SPC(CMDCMDCMD";I1 4030 [133]"(null)(null)ATN(null)(null)RIGHT$(null)CHR$CLOSE(null)VAL(null)(null)(null)(null)CLOSE(null)(null)LENTHEN(null)WAIT($=LEFT$VAL(null)) SPC(CMDCMDCMD";M$:[141]9000 4040 [129]K1[178]I1[164]255:[151]M[171]I1[170]K1,C(K1):[130] 4050 M[178]M[171]I1[170]256:[153]"(null)VAL(null)(null)WAIT MEM'Y LOC'N="M;:[141]9500:[153]""M$ 4060 [141]300 4070 [153]"LOAD";:[142] 5000 [143] WRITE RAM TO DISK 5001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE 5010 PRINT"[147][215][210][201][212][197] [210][193][205] TO [196]ISK" 5020 INPUT"[205][197][205]'[217] [204][207][195]'[206] [207][198] [194][204][207][195][203][146]($=[200][197][216]) [166][157][157][157]";M$:GOSUB9000 5030 INPUT"[211][212][193][210][212] [215][201][212][200] I[146]=[160][160][160][166][157][157][157]";I1 5040 INPUT"[197][206][196] [215][201][212][200] I[146]=[160][160][160][166][157][157][157]";I2 5060 FORI=I1TOI2:C(I)=PEEK(M+I):NEXT 5070 INPUT"[147][196][197][211][212][201][206][193][212][201][207][206] [212][210][193][195][203],[211][197][195][212][207][210][146] [166][157][157][157]";T,S:IF(T<1)OR(T>TT)THEN5070 5080 INPUT"[196][197][211][212][201][206][193][212][201][207][206] [196][210][201][214][197] #[146][160][160][160]0[157][157][157]";DR$:DR=VAL(DR$) 5090 OPEN3,8,3,"#":GET#3,BN$:BN=ASC(BN$):PRINT"[147]"SD$"USING [194][213][198][198][197][210] #"BN 5095 BM=BN+3+12*INT((BN+1)/4) 5100 FORI=I1TOI2:PRINT" [157][157][157]"I 5110 PRINT#15,"M-W";CHR$(I);CHR$(BM);CHR$(1);CHR$(C(I)) 5130 NEXT 5140 PRINT#15,"U2:";3;DR;T;S 5150 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15 5160 PRINT"[147]":RETURN 6000 REM BAM 6010 REM"[184][184][184] 6020 [150] [165]B(I)[178](Z[175]P(I))[173]P(I) 6030 [160]15:[153][199](142)"LOADBLOCK AVAILABILITY MAP (BAM)" 6040 [153]"1WAIT:DISPLAY BAM" 6050 [153]"2WAIT:CHANGE BAM" 6060 [153]"3WAIT:RETURN TO MAIN MENU" 6070 [141]310:[139] IN[178]3 [167]6095 6080 [145] IN [141]6100,6280 6090 [137]6030 6095 [160]2:[160]3:[159]15,8,15,"I"[170]DR$:[141]63900:[142] 6100 [143] DISPLAY BAM 6110 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB( 6120 PRINT"WHICH TRACKS":PRINT"[184][184][184][184][184][184][184][184][184][184][184][184] 6130 [133]"FIRST,LAST TRACK SPC(CMDCMDCMD";TS,TE 6140 [139](TS[179]1)[176](TS[177]TT)[176](TE[179]1)[176](TE[177]TT)[176](TE[179]TS)[167]6130 6150 [153]"LOADBLOCK AVAILABILITY MAP (BAM)" 6155 [153]"SYSRETURNWAIT TO STOP":[153]S0$ 6160 [159]15,8,15,"I"[170]DR$:[141]63900 6170 [159]2,8,2,"$"[170]DR$:[141]63900 6180 FF[178]D1[170](TS[171]1)[172]S3 6190 [129]K[178]0[164]FF:[161]#2,A$:[130] 6200 [129]T[178]TS[164]TE:[139]T[178]51[167][161]#2,A$,A$,A$,A$ 6210 [141]6400 6220 [161]A$:[139]A$[179][177]""[167]T[178]TT[170]1 6230 [130]:[160]2:[160]15:[141]6870:[141]310:[142] 6240 [143] CHANGE BAM 6250 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB( 6260 INPUT"[147]MORE CHANGES Y[157][157][157]";I$ 6270 IFI$<>"Y"THENRETURN 6280 IFDT=67THENPRINT"[147]SORRY..CAN'T CHANGE BAM FOR THIS DISK.":GOSUB310:RETURN 6285 INPUT"[147]TRACK [214][157][157][157]";T:IF(T<1)OR(T>TT)THENN6280 6290 CLOSE15:OPEN15,8,15 6300 CLOSE2:OPEN2,8,2,"#":GOSUB63900 6310 PRINT#15,"U1:";2;DR;DI;0 6320 PRINT#15,"B-P";2;T*4 6330 PRINT"[147]ENTER [144]NEGATIVE SECTOR TO QUIT":GOSUB6400:GOSUB6580 6340 INPUT"CHANGE WHICH SECTOR [157][157][214][157][157][157]";S 6350 IFS<0ORS>=SC(T)THEN6260 6360 CLOSE2:CLOSE15:PRINTSD$ 6370 GOSUB6620:GOSUB6480:GOSUB6580:PRINT:PRINTMD$"OK[146][129]Y[129]N";:GOSUB310:PRINTCL$ 6380 IFIN$="Y"THENGOSUB6730 6385 PRINTMD$CL$SD$ 6390 GOSUB6480:GOTO6340 6400 FORK=0TOS2:GET#2,A$ 6410 IFA$=""THENA$=CHR$(0) 6420 B(K)=ASC(A$) 6430 NEXT 6480 REM PRINT TRACK 6490 REM"[163][163][163][163][163][163][163][163][163][163][163] 6500 [129]K[178]1[164]S1:Z[178]B(K) 6510 [129]I[178]0[164]7 6520 X[178][165]B(I):[153]X$(X);:[130]I 6530 [130]K 6540 Z[178]B(K):[129]I[178]0[164]SC(T)[171]SC(TT) 6550 X[178][165]B(I):[153]X$(X);:[130]I:[153] 6560 [153]"ON"[163]22)"TRACK"T"WAITCMDFREE="B(0) 6570 [142] 6580 [153][200](S1$,SC(T)) 6590 [153][200](S2$,SC(T))[163]23)"# SECTORS="SC(T) 6600 [139]SC(T)[178]21[167][153][200](S3$,SC(T)[170]1):[137]6610 6605 [153][200](S3$,SC(T)) 6610 [153]S0$:[142] 6620 [143] CHANGE SECTOR 6630 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB( 6640 IFS<8THENZ=B(1):SS=S:GOTO6670 6650 IFS<16THENZ=B(2):SS=S-8:GOTO6670 6660 Z=B(3):SS=S-16 6670 NZ=(NOTZANDP(SS))OR(ZANDNOTP(SS)) 6680 B(0)=B(0)+(NZ<Z)-(NZ>Z) 6690 IFS<8THENB(1)=NZ:GOTO6720 6700 IFS<16THENB(2)=NZ:GOTO6720 6710 B(3)=NZ 6720 RETURN 6730 OPEN15,8,15 6740 PRINTMD$"ARE YOU SURE?[146]";:GOSUB310:PRINTIN$;:IFIN$<>"Y"THENRETURN 6750 PRINT"..CHANGING BAM.."; 6760 OPEN3,8,3,"#":GOSUB63900 6770 GET#3,BN$:BN=ASC(BN$) 6780 BM=BN+3+12*INT((BN+1)/4) 6790 FORI=0TOS2 6800 PRINT#15,"M-W";CHR$(I+T*4);CHR$(BM);CHR$(1);CHR$(B(I)):NEXT 6840 PRINT#15,"U2:";3;DR;DI;0 6850 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15 6860 RETURN 6870 PRINT"[158]RETURN[146] TO CONTINUE";:RETURN 7000 REM DISK COMMANDS 7001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184] 7002 [153][199](14)"LOADSTR$RIGHT$(null)(null)CLOSELEN(null)(null)(null)ATN(null)STR$(null)" 7005 [153]"1WAIT:RIGHT$NITIALIZE" 7006 [153]"2WAIT:(null)ALIDATE" 7007 [153]"3WAIT:LENHANGE STR$(null)RIGHT$(null)VAL # 7008 IF PEEK(49154)=131 THEN PRINT"4[146]:[196]ISPLAY [196]IRECTORY" 7009 PRINT"9[146]:[210][197][212][213][210][206] TO MENU" 7010 GOSUB310:IF (IN>0ANDIN<5)ORIN=9 THEN7015 7011 GOTO7000 7015 PRINT"OK.. ";:ON IN GOTO7020,7030,7040,7050,,,,,7099 7020 PRINT"[129]INITIALIZING":CLOSE15:OPEN15,8,15,"I"+DR$:GOSUB63900:GOTO7000 7030 PRINT"[129]VALIDATING":CLOSE15:OPEN15,8,15,"V"+DR$:GOSUB63900:GOTO7000 7040 INPUT"NEW DRIVE # [166][157][157][157]";DR$:DR=VAL(DR$):GOTO7000 7050 PRINT"[129]CATALOG":(null)CMD 7055 GOSUB300:GOTO7000 7099 RETURN 7100 REM TRACE BLOCKS 7101 REM"[184][184][184][184][184][184][184][184][184][184][184][184] 7102 [153]"LOAD(null)(null)ATNLENVALCLOSEPEEK(null)(null)LEN(null)(null)" 7105 [133]"STARTINGWAIT STOP(null)(null)ATNLEN(null),STOP(null)VALLEN(null)(null)(null) SPC(CMDCMDCMD";T,S 7106 [139](T[179]1)[176](T[177]TT)[176](S[179]0)[176](S[177]SC(T))[167]7102 7110 [160]3:[160]15:[159]15,8,15:[159]3,8,3,"#":[141]63900:[161]#3,BN$:BN[178][198](BN$) 7111 BN$[178][202](BN$,2):BM[178]BN[170]3[170]12[172][181]((BN[170]1)[173]4) 7115 [153]:[153]"("T","S")STOP_ ASCRIGHT$(null)(null)(null) PEEK(null)(null)LEN(null)":N9[178]1 7120 [152]15,"B-R";3;DR;T;S 7130 [152]15,"B-P";3;0 7140 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0) 7150 T[178][198](Z$):[139]T[178]0[167]7200 7160 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0) 7170 S[178][198](Z$) 7175 T$[178][202]([196](T),2):S$[178][202]([196](S),2) 7180 [153]"("T$","S$")"; 7190 N9[178]N9[170]1:[137]7120 7200 [153]"STOP_ (null)ATN(null)(null) PEEK(null)(null)LEN(null)" 7210 [153]N9" BLOCKS":[141]300:[142] 7500 [143] UNSCRATCH 7501 [143]"FREFREFREFREFREFREFREFREFRE 7505 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 7510 PRINT"[215]E'LL DO THE FOLLOWING:" 7511 PRINT"1[146]:[199]O THRU' DIRECTORY TRACK"DI" UNTIL" 7512 PRINT" WE FIND THE SCRATCHED FILE NAME." 7513 PRINT"2[146]:[212]RACE THE [194]LOCKS AND COMPARE" 7514 PRINT" THE [194]LOCKS OBTAINED WITH THE" 7515 PRINT" [196]IRECTORY [194]LOCK [195]OUNT." 7516 PRINT"3[146]:[204]OOK AT THE [194]LOCK [193]VAILABILTY [205]AP" 7517 PRINT" TO SEE IF ALL THE BLOCKS ARE FREE." 7518 PRINT">>[129][201]F ALL OF THE ABOVE ARE [207][203]" 7519 PRINT" WE MAY [205]ODIFY THE [196]IRECTORY" 7520 PRINT" AS FOLLOWS:":GOSUB300 7530 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 7540 PRINT"[205]ODIFY THE BLOCK SO THAT THE" 7545 PRINT"MAGIC BYTE" 7550 PRINT" WHICH OCCURS JUST 3[146] PLACES BEFORE" 7560 PRINT" THE NAME IS AS FOLLOWS:" 7570 PRINT" 129 = [211][197][209] FILE" 7571 PRINT" 130 = [208][210][207][199] FILE" 7572 PRINT" 131 = [213][211][210] FILE" 7573 PRINT" 132 = [210][197][204] FILE" 7580 PRINT"[197]XAMPLE:TO UNSCRATCH A [208][210][207][199] FILE '[193][194][218]'" 7590 PRINT"FIND IT'S NAME ON THE [196][201][210][197][195][212][207][210][217], AND" 7600 PRINT"SELECT [205][197][206][213] ITEM=[205]ODIFY [194]LOCK." 7610 PRINT"[217]OU WILL SEE:" 7620 PRINT".. 0 0[146] 0 0[146] 19 3[146] 65 66[146] 90....ETC" 7630 PRINT" ^ ^ ^ ^ ^ ^" 7640 PRINT" SHOULD BE [221][212]RCK[221][193] [194] [218]" 7650 PRINT" A [129]130 [221]&[211]EC[221][198]ILENAME(IN [193][211][195][201][201])" 7660 GOSUB300:PRINT"[145] ":PRINTS0$ 7670 PRINT"[205]ODIFY THE BYTE WHICH IDENTIFIES THE " 7680 PRINT"FILE TYPE..TO [129]130..SO IT READS:" 7685 PRINT".. 0 0[146] 0[129] 130[146] 19 3[146] 65 66[146] 90....ETC" 7690 PRINT"4[146]:[215]RITE THE BLOCK BACK TO THE DISK." 7700 PRINT"5[146]:[209]UIT AND [214][193][204][201][196][193][212][197] THE DISK." 7705 PRINT" [184][184][184][184][184][184][184][184]" 7710 PRINT"5[146]:[208]RAY.." 7880 INPUT"[215][193][206][212] [212][207] [212][210][217] Y[157][157][157]";A$:IFA$<>"Y"THENRETURN 7890 GOTO12000 7900 CLOSE15:PRINT"[147]";CHR$(142);TAB(11)"[144]DISK VIEW PROGRAM":PRINTS0$ 7910 PRINTTAB(14)"[129]GOOD-BYE !![159]":END 8000 REM INITIALIZE 8001 REM"[184][184][184][184][184][184][184][184][184][184] 8005 [134]C(255),T(120),S(120),SC(77),B(4) 8006 [131]1,17,20,24,19,30,17,35,16,0 8007 [131]65,17,20,24,18,30,17,35,16,0 8008 [131]67,39,28,53,26,64,24,77,22,0 8010 R$(0)[178]"":R$(1)[178]"WAIT" 8020 SD$[178]"" 8025 MD$[178]"WAIT" 8035 [133]"DRIVE #WAIT 0CMDCMDCMD";DR$:DR[178][197](DR$) 8040 [159]15,8,15,"I"[170]DR$:[141]63900 8050 K$[178]" (null)LEFT$RIGHT$(null)CLOSEPEEK(null)(null)LEN(null)CLOSERIGHT$(null)CLOSEVAL(null)(null)(null)(null) " 8060 [153]"ONWAIT... ":[140]:WW[178]0:A0[178]1 8061 [159]3,8,3,"$"[170]DR$:[141]63900 8062 [161]#3,A$:A[178][198](A$[170][199](0)) 8063 [135]DT:[139]A[178]DT[167]8070 8064 WW[178]WW[170]1:[139]WW[179]3[167] [129]I[178]1[164]9:[135]DT:[130]:[137]8063 8065 [153]"LOAD***NOT A RECOGNIZABLE DISKWAIT***":[160]3:[153]"WANT TO QUIT?" 8066 [141]310:[139]IN$[178]"Y"[167]7900 8067 [137]8110 8070 [139]DT[178]1[176]DT[178]65[167]KK[178]143 8071 [139]DT[178]67[167]KK[178]5 8072 [153]"ONDISK HEADER IS:":[141]8200 8075 [135]A1:[139]A1[178]0[167]8090 8080 [135]B1:[129]I[178]A0[164]A1:SC(I)[178]B1[170]1:[130]:A0[178]I:[137]8075 8090 [139]DT[178]1[176]DT[178]65[167]D1[178]1:TT[178]35:S2[178]3:DI[178]18 8095 [139]DT[178]67[167]D1[178]257:TT[178]77:S2[178]4:DI[178]39 8096 S1[178]S2[171]1:S3[178]S2[170]1 8100 [160]3:[139]TT[178]0[167]8065 8110 [129]I[178]0[164]7:P(I)[178]2[174]I:[130] 8120 X$(0)[178]"(null)":X$(1)[178]"STOP(null)" 8130 S0$[178]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(" 8140 CL$[178]"":[129]I[178]1[164]39:CL$[178]CL$[170]" ":[130] 8150 S1$[178]"^....^....^....^....^....^....^...." 8160 S2$[178]"(null) (null) (null) (null) (null) (null) (null)" 8170 S3$[178]"0 5 10 15 20 25 30" 8180 [142] 8200 [129]I[178]3[164]KK:[161]#3,A$:[130]:[153]""; 8210 [129]I[178]1[164]23:[161]#3,A$:A$[178]A$[170][199](0):[153]A$;:[130] 8220 [153]:[142] 9000 [143] DECIMAL_HEX 9001 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB( 9005 M=VAL(M$):IFM<>0THENRETURN 9010 M$=MID$(M$,2):M=0:LM=LEN(M$) 9020 FORCN=1TOLM 9030 MM$=MID$(M$,CN,1):GOSUB9100:M=M+MM*16^(LM-CN):NEXT 9040 RETURN 9100 IFMM$="0"THENMM=0:RETURN 9110 MM=VAL(MM$):IFMM<>0THENRETURN 9120 MM=ASC(MM$)-55:RETURN 9500 REM HEX_DECIMAL 9501 REM"[163][163][163][163][163][163][163][163][163][163][163] 9505 SM[178]M:M$[178]"$":[129]CN[178]3[164]0[169][171]1:CM%[178]SM[173](16[174]CN):[141]9600:M$[178]M$[170]MM$ 9510 SM[178]SM[171](16[174]CN)[172]CM%:[130]:[142] 9600 [139]CM%[179]10[167]MM$[178][199](CM%[170]48):[142] 9610 MM$[178][199](CM%[170]55):[142] 10000 [153]SD$" " 10010 [151]CRT[170]J,168:[151]CP[170]J,0:J[178]J[170]1:[129]K[178]2[164]1[169][171]1:S$[178][202]([196](C(I[171]K)),2) 10020 [129]L[178]1[164][195](S$):[151]CRT[170]J,[197]([202](S$,L,1))[170]176:[151]CP[170]J,0:J[178]J[170]1:[130] 10030 [151]CRT[170]J,172:[151]CP[170]J,0:J[178]J[170]1:[130]:[151]CRT[170]J[171]1,169:[151]CP[170]J[171]1,0 10040 [153]SD$"FORNOTE:(TRACK,SECTOR) ":[142] 11000 : 11010 [151]CRT[170]J,190:[151]CP[170]J,0:J[178]J[170]1:SV[178]C(I[171]2)[170]C(I[171]1)[172]256:S$[178][202]([196](SV),2) 11020 [129]L[178]1[164][195](S$):[151]CRT[170]J,[197]([202](S$,L,1))[170]176:[151]CP[170]J,0:J[178]J[170]1:[130] 11030 J[178]J[170]1:[151]CRT[170]J[171]1,188:[151]CP[170]J[171]1,0 11040 [153]SD$"FREFREFREFRE:>NUMBER BLOCKS<":[142] 12000 [143] UNSCRATCH ROUTINE 12001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE 12010 PRINT"[147]"CHR$(14)"[213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 12020 PRINT"[212]HE SCRATCHED FILE NAMES WILL" 12030 PRINT"BE DISPLAYED." 12040 PRINT"[217]OU MAY DECIDE WHICH FILE YOU" 12050 PRINT"WISH TO RECOVER." 12060 PRINT"[129][210]ETURN TO CONTINUE":GOSUB310 12070 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 12080 CLOSE3:CLOSE15:OPEN15,8,15 12090 T=DI:S=1:OPEN3,8,3,"#0":GOSUB63900 12095 PRINT#15,"B-R";3;DR;T;S 12096 PRINT"[204]OOKING AT:" 12097 PRINT"[144]TRACK [157][157][157]"T"[144] SECTOR [157][157][157]"S 12100 FORJ=0TO255:PRINT#15,"M-R";CHR$(J);CHR$(3):GET#15,A$ 12110 C(J)=ASC(A$+CHR$(0)):NEXT 12120 FORD=2TO255STEP32:IFC(D)<>0ORC(D+1)=0THEN12200 12130 PRINTSD$CL$SD$"[145][145][145][215]ANT TO UNSCRATCH ";:FORP9=1TO200:NEXT 12140 GETA$:FORK=D+3TOD+18:PRINTCHR$(C(K));:NEXT:PRINT"[146]" 12145 PRINT"([129]Y/[129]N) ?":GOSUB310 12150 IF IN$="Y" THEN12300 12200 NEXTD:T=C(0):S=C(1):IFT=DITHEN12095 12210 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 12215 PRINT"[198]INISHED LOOKING..":PRINT"RETURN[146] TO CONTINUE.":GOSUB310:RETURN 12300 T0=T:S0=S:T=C(D+1):S=C(D+2):B0=C(D+28)+C(D+29)*256:PRINTCHR$(14) 12301 PRINT"[196]IRECTORY [194]LOCK [195]OUNT="B0:N9=1:PRINTS0$ 12302 CLOSE3:CLOSE15:OPEN15,8,15:OPEN3,8,3,"#":GOSUB63900:GET#3,BN$:BN=ASC(BN$) 12303 T(N9)=T:S(N9)=S:N9=N9+1 12305 PRINT#15,"B-R";3;DR;T;S 12306 PRINT#15,"B-P";3;0 12307 GET#3,Z$:IFZ$=""THENZ$=CHR$(0) 12308 T(N9)=ASC(Z$):IFT(N9)=0THEN12314 12309 GET#3,Z$:IFZ$=""THENZ$=CHR$(0) 12310 S(N9)=ASC(Z$) 12311 T$=MID$(STR$(T),2):S$=MID$(STR$(S),2) 12312 PRINT"("T$","S$")"; 12313 T=T(N9):S=S(N9):N9=N9+1:GOTO12305 12314 N9=N9-1:PRINT 12315 PRINT""N9" BLOCKS" 12350 IFN9<>B0THENPRINT"**INCORRECT BLOCK COUNT[146]**":GOSUB300:RETURN 12360 PRINT"[204]OOKS GOOD SO FAR." 12370 PRINT"[211]HALL WE PROCEED ([129]Y/[129]N) ?" 12373 GOSUB310:IF IN$<>"Y"ANDIN$<>"N" THEN12373 12375 IF IN$="N" THEN RETURN 12380 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 12385 PRINT"[215]E'LL CHECK THAT THE ABOVE BLOCKS" 12390 PRINT"ARE [198][210][197][197] BY LOOKING AT THE [194][193][205]." 12400 PRINT"[212]HE TRACK/SECTORS FOR THE FILE WILL BE" 12410 PRINT"DISPLAYED. [201]F A BLOCK IS OCCUPIED" 12420 PRINT"THE [213][206][211][195][210][193][212][195][200] WILL NOT WORK!":GOSUB300 12421 CLOSE15:OPEN15,8,15,"I"+DR$:GOSUB63900:PRINT"[147]":PRINTCHR$(142):K1=1 12422 OPEN2,8,2,"$"+DR$:GOSUB63900 12423 DEF FNB(I)=(ZANDP(I))/P(I) 12424 FF=D1+(T(K1)-1)*S3:PP=0 12425 FORK2=0TOFF:GET#2,A$:NEXT 12440 T=T(K1):PRINT"[147]":GOSUB6400:GOSUB6580 12450 PRINTSD$"CHECK THAT THE FOLLOWING " 12455 PRINT"SECTORS ARE FREE:" 12460 FORK2=1TON9:IFT(K2)=TTHENPRINTR$(PP)MID$(STR$(S(K2)),2)R$(1-PP); 12465 PP=1-PP:NEXT:PRINT 12467 PRINT"FREE = [144][215]" 12470 PRINT"OK ([129]Y/[129]N) ?":GOSUB310:IF IN$="Y" THEN12480 12475 PRINT"[147]SORRY..":PRINTCHR$(14):GOSUB300:CLOSE2:RETURN 12480 CLOSE2:IFK1>=N9THENCLOSE15:RETURN 12490 K1=K1+1:IFT(K1)=0THEN12600 12500 IFT(K1)=TTHEN12490 12505 GOTO12422 12600 PRINT"[147]":PRINTCHR$(14)"[213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]" 12610 PRINT"[206]OW [205]ODIFY THE MAGIC BYTE[146] ON DIRECTORY" 12620 PRINT"[212]RACK"T0" [211]ECTOR"S0 12630 PRINT"[212]HEN [215]RITE THE [194]LOCK BACK TO ("T0","S0")" 12640 PRINT"[198]INALLY [214]ALIDATE THE DISK!" 12650 GOSUB300:RETURN 13000 T=T1:S=S1 13001 FORJ=1TOB0 13005 CLOSE3:CLOSE15:OPEN15,8,15:OPEN3,8,3,"#":GOSUB63900:GET#3,BN$:BN=ASC(BN$) 13010 BN$=MID$(BN$,2):BM=BN+3+12*INT((BN+1)/4) 13020 PRINT:PRINT"("T","S")[144]_ [198][201][210][211][212] [194][204][207][195][203]":N9=1 13030 PRINT#15,"B-R";3;DR;T;S 13040 PRINT#15,"B-P";3;0 13050 GET#3,Z$:IFZ$=""THENZ$=CHR$(0) 13060 T=ASC(Z$):IFT=0THEN7200 13070 GET#3,Z$:IFZ$=""THENZ$=CHR$(0) 13080 S=ASC(Z$) 13090 T$=MID$(STR$(T),2):S$=MID$(STR$(S),2) 13100 PRINT"("T$","S$")"; 13110 NEXT 13120 PRINT"[144]_ [204][193][211][212] [194][204][207][195][203]" 13130 PRINTN9" BLOCKS":GOSUB300 13303 BN$=MID$(BN$,2):BM=BN+3+12*INT((BN+1)/4) 13304 PRINT:PRINT"("T","S")[144]_ [198][201][210][211][212] [194][204][207][195][203]":N9=1 63900 INPUT#15,E,E$,E1,E2 63901 IFE<>0THENPRINT:PRINT"**DISK ERROR[146]**"E,E$,E1,E2 63902 RETURN