)**********************************/D PETER J. PONZO 49 MARGARET AVE. S. 8 REM WATERLOO,ONT. N2J 2C8 JUN 19/82 CORRECTIONS BY DAVID LOVELOCK MODIFIED FOR NEW C64'S BY DAVID BYRUM - 8/83# **********************************9 53280,6:53281,6n "";(142);11)"DISK VIEW PROGRAM":S0$:8000| d******** e* * f* MENU * g" * h******** i15:15,8,15 jCS55296:SN1024 n"";(14);11)"ˠנ":S0$+ s"1:OAD BLOCK INTO BUFFER"P x"2:EE OF ABOVE BLOCK"o "3:ODIFY ABOVE BLOCK" "4:TORE ABOVE BLOCK IN " "5:RITE BLOCK IN TO DISK" "6:LOCK VAILABILITY AP" "7:ISK OMMANDS" "8:RACE LOCKS, "9:NSCRATCH A ILEE "Β TO UIT"Y 310:IN07900 IN1000,2000,3000,4000,5000,6000,7000,7100,7500 105 , GET -" 1"Β TO CONTINUE.": 198,0 6IN$:IN$""310 @IN$:IN$""320 JIN(IN$):-  LOAD BLOCK INTO BUFFERJ " 3:15:15,8,15:3,8,3,"#":#3,BN$:BN(BN$(0)) BN$(BN$,2):BMBN312((BN1)4) 15,"B-P";3;1:"" K010:3,K$;: ""SD$"" "Ġ"- "AT , ";T,SD $15,"B-R";3;DR;T;SV .15,"B-P";3;0p 8#3,Z$:Z$""Z$(0) BC(0)(Z$):1200 `" TO TERMINATE":CRT01069:(C(0))(C(1)); jJ2:I2255:15,"M-R";(I);(BM):I%I32 oCPCS(CRTSN)t#15,B$:B$""B$(0)4~C(I)(B$):TDI1165NS0I%32I510000fS0I%32I11000 CRTJ,C(I): CPJ,0A$:A$""1195JJ1:3:15:SD$"":300:SD$" "+"..WANT TO CONTINUE LOADING N";N$:N$"N"I256\SD$" "" " C(0)/C(1)"SD$:15,"B-P";3;1#3,B$:B$""B$(0)C(1)(B$)!C(0)0SD$:"AST RACK":"YTES SED="C(1):RSD$:"EXT RACK ="C(0):"EXT ECTOR="C(1)hNTC(0):NSC(1):z PRINT ASCII"IJ0:II2558:""" TO DISCONTINUE PRINTING..":S0$:AB31:EE$" "I0II8:Y$(I):Y$""(" "Y$,3):E0$EE$D""CL$:""Y$"->";:J07:HIJ:C5C(H)cC5ABE0$E0$(C5):2015sE0$E0$" "E$(" "((C5),2),3)R$(P)E$R$(1P);:P1P:A$:A$""III:I255E0$::CL$:CL$:CL$:CL$" , ="T","S3"EXT TRACK,SECTOR="NT","NSBIJ0300H[ MODIFY BLOCKn " "٠" "HE CODE FOR EACH BLOCK-BYTE" "WILL BE DISPLAYED..I.E. C(0)...C(255)." "OU MAY REDEFINE ANY C(I). HE MODIFIED"9 "BLOCK WILL BE WRITTEN TO THE DISK"c "INTO THE RACK,ECTOR YOU SELECT." "HESE KEYS MAY BE USED TO HELP SPEED-UP" "THE ENTRY PROCESS:"" 5)"_ KEY WILL ADVANCE I BY ONE." $ 5)"\ KEY WILL ENTER A 160 FOR C(I)."& /0 300:"":II2558:IJ1>: "":2005cD ">>> TO QUIT<<<":I$N " I ϠՠȠϠْ ?";I$S I$"_" II1:3165U I(I$)X I$"?"3173] "CURRENT C("I")= "C(I);3_ "NEW VALUE= ";:C$: C$"\" C$"160"Bb C(I)(C$)Sc III III]d 3150e "":2005:" >>>OK (Y/N) ? ";f 204,0:310:204,1: IN$"N"" ":3150g IN$"Y"IN$"N" 3174h "Ǡ"$i "UT MODIFICATIONS ON DISK Y";IN$3j IN$"N"Xk " ,="T","Syl "NEXT TRACK,SECTOR="NT","NSq "Β , ";T,S:(T1)(TTT)3180v " #0";DR$:DR(DR$) 3:15:15,8,15 3,8,3,"#":63900c #3,BN$:BN(BN$):"Ǡ"SD$"USING #"BN~ BMBN312((BN1)4) I0255 15,"M-W";(I);(BM);(1);(C(I)) " "I  15,"U2:";3;DR;T;S 15,"I"DR$:63900:3:15  "":! STORE C(I) IN RAM9"I"";:2000k"Š ˠΠ""ǠŠ I ";I1"Ǡ٠çΒ($=) ";M$:9000K1I1255:MI1K1,C(K1):MMI1256:"Ԓ MEM'Y LOC'N="M;:9500:""M$&3006"";: N WRITE RAM TO DISKf"" TO ISK""' ' ˒($=) ";M$:9000" I=";I1" I=";I2II1I2:C(I)(MI):Y" ,Ғ ";T,S:(T1)(TTT)5070" #0";DR$:DR(DR$)3,8,3,"#":#3,BN$:BN(BN$):""SD$"USING #"BNBMBN312((BN1)4)II1I2:" "I'15,"M-W";(I);(BM);(1);(C(I))- D15,"U2:";3;DR;T;Sb15,"I"DR$:63900:3:15m("":wp BAMz" B(I)(ZP(I))P(I)15:(142)"BLOCK AVAILABILITY MAP (BAM)""1:DISPLAY BAM""2:CHANGE BAM""3:RETURN TO MAIN MENU"2310: IN3 6095F IN 6100,6280P6030t2:3:15,8,15,"I"DR$:63900: DISPLAY BAM""WHICH TRACKS":""FIRST,LAST TRACK ";TS,TE(TS1)(TSTT)(TE1)(TETT)(TETS)6130;"BLOCK AVAILABILITY MAP (BAM)"\ "RETURN TO STOP":S0$x15,8,15,"I"DR$:639002,8,2,"$"DR$:63900$FFD1(TS1)S3.K0FF:#2,A$:8TTSTE:T51#2,A$,A$,A$,A$B6400LA$:A$""TTT1V:2:15:6870:310:*` CHANGE BAM;j"Zt"MORE CHANGES Y";I$i~I$"Y"DT67"SORRY..CAN'T CHANGE BAM FOR THIS DISK.":310:"TRACK ֝";T:(T1)(TTT)N628015:15,8,152:2,8,2,"#":6390015,"U1:";2;DR;DI;0'15,"B-P";2;T4]"ENTER NEGATIVE SECTOR TO QUIT":6400:6580"CHANGE WHICH SECTOR ֝";SS0SSC(T)62602:15:SD$6620:6480:6580::MD$"OKYN";:310:CL$IN$"Y"6730 MD$CL$SD$ 6480:6340/ K0S2:#2,A$B A$""A$(0)Q B(K)(A$)W i P PRINT TRACK{ Z" dK1S1:ZB(K) nI07 xXB(I):X$(X);:I K ZB(K):I0SC(T)SC(TT) XB(I):X$(X);:I:!""22)"TRACK"T"FREE="B(0)!(!(S1$,SC(T))O!(S2$,SC(T))23)"# SECTORS="SC(T)s!SC(T)21(S3$,SC(T)1):6610!(S3$,SC(T))!S0$:! CHANGE SECTOR!"!S8ZB(1):SSS:6670!S16ZB(2):SSS8:6670"ZB(3):SSS16!"NZ(ZP(SS))(ZP(SS))="B(0)B(0)(NZZ)(NZZ)T""S8B(1)NZ:6720l",S16B(2)NZ:6720x"6B(3)NZ~"@"J15,8,15"TMD$"ARE YOU SURE?";:310:IN$;:IN$"Y""^"..CHANGING BAM..";"h3,8,3,"#":63900#r#3,BN$:BN(BN$)#|BMBN312((BN1)4)*#I0S2V#15,"M-W";(IT4);(BM);(1);(B(I)):n#15,"U2:";3;DR;DI;0#15,"I"DR$:63900:3:15##"RETURN TO CONTINUE";:#X DISK COMMANDS#Y"$Z(14)"ˠ"&$]"1:NITIALIZE";$^"2:ALIDATE"U$_"3:HANGE #$` (49154)131 "4:ISPLAY IRECTORY"$a"9: TO MENU"$b310: (IN0IN5)IN9 7015$c7000%g"OK.. ";: IN 7020,7030,7040,7050,,,,,7099:%l"INITIALIZING":15:15,8,15,"I"DR$:63900:7000p%v"VALIDATING":15:15,8,15,"V"DR$:63900:7000%"NEW DRIVE # ";DR$:DR(DR$):7000%"CATALOG":˝%300:7000%% TRACE BLOCKS%"&"Š"6&"STARTING , ";T,S]&(T1)(TTT)(S0)(SSC(T))7102&3:15:15,8,15:3,8,3,"#":63900:#3,BN$:BN(BN$)&BN$(BN$,2):BMBN312((BN1)4)&:"("T","S")_ ":N91&15,"B-R";3;DR;T;S '15,"B-P";3;0''#3,Z$:Z$""Z$(0)='T(Z$):T07200W'#3,Z$:Z$""Z$(0)c'S(Z$)'T$((T),2):S$((S),2)' "("T$","S$")";'N9N91:7120' "_ "'*N9" BLOCKS":300:'L UNSCRATCH'M"(Q"Ƞ"3(V"E'LL DO THE FOLLOWING:"b(W"1:O THRU' DIRECTORY TRACK"DI" UNTIL"(X" WE FIND THE SCRATCHED FILE NAME."(Y"2:RACE THE LOCKS AND COMPARE"(Z" THE LOCKS OBTAINED WITH THE"([" IRECTORY LOCK OUNT."))\"3:OOK AT THE LOCK VAILABILTY AP"U)]" TO SEE IF ALL THE BLOCKS ARE FREE."|)^">>F ALL OF THE ABOVE ARE ")_" WE MAY ODIFY THE IRECTORY")`" AS FOLLOWS:":300)j"Ƞ")t"ODIFY THE BLOCK SO THAT THE"*y"MAGIC BYTE";*~" WHICH OCCURS JUST 3 PLACES BEFORE"\*" THE NAME IS AS FOLLOWS:"t*" 129 = FILE"*" 130 = FILE"*" 131 = FILE"*" 132 = FILE"*"XAMPLE:TO UNSCRATCH A FILE ''"+"FIND IT'S NAME ON THE , AND">+"SELECT ITEM=ODIFY LOCK."S+"OU WILL SEE:"+".. 0 0 0 0 19 3 65 66 90....ETC"+" ^ ^ ^ ^ ^ ^"+" SHOULD BE RCK "+" A 130 &ECILENAME(IN )"),300:" ":S0$W,"ODIFY THE BYTE WHICH IDENTIFIES THE ","FILE TYPE..TO 130..SO IT READS:",".. 0 0 0 130 19 3 65 66 90....ETC", "4:RITE THE BLOCK BACK TO THE DISK." -"5:UIT AND THE DISK."%-" "7-"5:RAY.."`-" Y";A$:A$"Y"k-12000-15:"";(142);11)"DISK VIEW PROGRAM":S0$-14)"GOOD-BYE !!":-@ INITIALIZE-A" .EC(255),T(120),S(120),SC(77),B(4),.F1,17,20,24,19,30,17,35,16,0N.G65,17,20,24,18,30,17,35,16,0p.H67,39,28,53,26,64,24,77,22,0.JR$(0)"":R$(1)"".TSD$"".YMD$"".c"DRIVE # 0";DR$:DR(DR$)/h15,8,15,"I"DR$:63900!/rK$" ӠˠӠ "B/|"WAIT... "::WW0:A01\/}3,8,3,"$"DR$:63900t/~#3,A$:A(A$(0))/DT:ADT8070/WWWW1:WW3 I19:DT::8063/"***NOT A RECOGNIZABLE DISK***":3:"WANT TO QUIT?"0310:IN$"Y"790008110%0DT1DT65KK14350DT67KK5U0"DISK HEADER IS:":8200h0A1:A1080900B1:IA0A1:SC(I)B11::A0I:80750DT1DT65D11:TT35:S23:DI180DT67D1257:TT77:S24:DI390S1S21:S3S2113:TT080651I07:P(I)2I:01X$(0)"":X$(1)""a1S0$""1CL$"":I139:CL$CL$" ":1S1$"^....^....^....^....^....^....^...."1S2$" "2S3$"0 5 10 15 20 25 30" 2&2 I3KK:#3,A$::"";K2 I123:#3,A$:A$A$(0):A$;:S2 :e2(# DECIMAL_HEXw2)#"2-#M(M$):M022#M$(M$,2):M0:LM(M$)2<#CN1LM2F#MM$(M$,CN,1):9100:MMMM16(LMCN):2P#2#MM$"0"MM0:3#MM(MM$):MM0%3#MM(MM$)55:73% HEX_DECIMALI3%"3!%SMM:M$"$":CN301:CM%SM(16CN):9600:M$M$MM$3&%SMSM(16CN)CM%::3%CM%10MM$(CM%48):3%MM$(CM%55):3'SD$" "4'CRTJ,168:CPJ,0:JJ1:K211:S$((C(IK)),2)V4$'L1(S$):CRTJ,((S$,L,1))176:CPJ,0:JJ1:4.'CRTJ,172:CPJ,0:JJ1::CRTJ1,169:CPJ1,048'SD$"NOTE:(TRACK,SECTOR) ":4*:5+CRTJ,190:CPJ,0:JJ1:SVC(I2)C(I1)256:S$((SV),2)75 +L1(S$):CRTJ,((S$,L,1))176:CPJ,0:JJ1:X5+JJ1:CRTJ1,188:CPJ1,05 +SD$":>NUMBER BLOCKS<":5. UNSCRATCH ROUTINE5."5.""(14)"Ƞ"5."HE SCRATCHED FILE NAMES WILL"6."BE DISPLAYED."96/"OU MAY DECIDE WHICH FILE YOU"Q6/"WISH TO RECOVER."t6/"ETURN TO CONTINUE":3106&/"Ƞ"60/3:15:15,8,156:/TDI:S1:3,8,3,"#0":639006?/15,"B-R";3;DR;T;S6@/"OOKING AT:"7A/"TRACK "T" SECTOR "S@7D/J0255:15,"M-R";(J);(3):#15,A$V7N/C(J)(A$(0)):~7X/D225532:C(D)0C(D1)0122007b/SD$CL$SD$"ANT TO UNSCRATCH ";:P91200:7l/A$:KD3D18:(C(K));::""7q/"(Y/N) ?":3108v/ IN$"Y" 12300&8/D:TC(0):SC(1):TDI12095A8/"Ƞ"8/"INISHED LOOKING..":"RETURN TO CONTINUE.":310:8 0T0T:S0S:TC(D1):SC(D2):B0C(D28)C(D29)256:(14)8 0"IRECTORY LOCK OUNT="B0:N91:S0$!903:15:15,8,15:3,8,3,"#":63900:#3,BN$:BN(BN$)=90T(N9)T:S(N9)S:N9N91T9015,"B-R";3;DR;T;Sf9015,"B-P";3;090#3,Z$:Z$""Z$(0)90T(N9)(Z$):T(N9)01231490#3,Z$:Z$""Z$(0)90S(N9)(Z$)90T$((T),2):S$((S),2)90"("T$","S$")";:0TT(N9):SS(N9):N9N91:12305,:0N9N91:B:0""N9" BLOCKS"x:>0N9B0"**INCORRECT BLOCK COUNT**":300::H0"OOKS GOOD SO FAR.":R0"HALL WE PROCEED (Y/N) ?":U0310: IN$"Y"IN$"N" 12373:W0 IN$"N" ;\0"Ƞ"4;a0"E'LL CHECK THAT THE ABOVE BLOCKS"];f0"ARE BY LOOKING AT THE .";p0"HE TRACK/SECTORS FOR THE FILE WILL BE";z0"DISPLAYED. F A BLOCK IS OCCUPIED";0"THE WILL NOT WORK!":300<015:15,8,15,"I"DR$:63900:"":(142):K11,<02,8,2,"$"DR$:63900F<0 B(I)(ZP(I))P(I)b<0FFD1(T(K1)1)S3:PP0x<0K20FF:#2,A$:<0TT(K1):"":6400:6580<0SD$"CHECK THAT THE FOLLOWING "<0"SECTORS ARE FREE:"=0K21N9:T(K2)TR$(PP)((S(K2)),2)R$(1PP);=0PP1PP::,=0"FREE = "Z=0"OK (Y/N) ?":310: IN$"Y" 12480}=0"SORRY..":(14):300:2:=02:K1N915:=0K1K11:T(K1)012600=0T(K1)T12490=012422=81"":(14)"Ƞ"#>B1"OW ODIFY THE MAGIC BYTE ON DIRECTORY">>L1"RACK"T0" ECTOR"S0s>V1"HEN RITE THE LOCK BACK TO ("T0","S0")">`1"INALLY ALIDATE THE DISK!">j1300:>2TT1:SS1>2J1B0>23:15:15,8,15:3,8,3,"#":63900:#3,BN$:BN(BN$)"?2BN$(BN$,2):BMBN312((BN1)4)I?2:"("T","S")_ ":N91`?215,"B-R";3;DR;T;Sr?215,"B-P";3;0?2#3,Z$:Z$""Z$(0)?3T(Z$):T07200?3#3,Z$:Z$""Z$(0)?3S(Z$)?"3T$((T),2):S$((S),2)?,3"("T$","S$")";@63@@3"_ "/@J3N9" BLOCKS":300W@3BN$(BN$,2):BMBN312((BN1)4)~@3:"("T","S")_ ":N91@15,E,E$,E1,E2@E0:"**DISK ERROR**"E,E$,E1,E2@