home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Toolkit / DISK-VIEW (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  15KB  |  491 lines

  1. 0 REM**********************************
  2. 1 REM
  3. 2 REM PETER J. PONZO
  4. 3 REM 49 MARGARET AVE. S.               8 REM WATERLOO,ONT. N2J 2C8
  5. 4 REM JUN 19/82
  6. 5 REM
  7. 6 REM CORRECTIONS BY DAVID LOVELOCK
  8. 7 REM MODIFIED FOR NEW C64'S BY
  9. 8 REM DAVID BYRUM - 8/83
  10. 9 REM**********************************
  11. 10 POKE53280,6:POKE53281,6
  12. 11 PRINT"[147]";CHR$(142);TAB(11)"[144]DISK VIEW PROGRAM":PRINTS0$:GOSUB8000
  13. 100 REM********
  14. 101 REM*      *
  15. 102 REM* MENU *
  16. 103 REM" [184][184][184][184] *
  17. 104 [143]********
  18. 105 [160]15:[159]15,8,15
  19. 106 CS[178]55296:SN[178]1024
  20. 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$
  21. 115 [153]"1WAIT:(null)OAD BLOCK INTO BUFFER"
  22. 120 [153]"2WAIT:(null)EE ATN(null)LENRIGHT$RIGHT$ OF ABOVE BLOCK"
  23. 130 [153]"3WAIT:(null)ODIFY ABOVE BLOCK"
  24. 140 [153]"4WAIT:(null)TORE ABOVE BLOCK IN (null)ATN(null)"
  25. 150 [153]"5WAIT:(null)RITE BLOCK IN (null)ATN(null) TO DISK"
  26. 160 [153]"6WAIT:PEEKLOCK ATNVAILABILITY (null)AP"
  27. 170 [153]"7WAIT:STR$ISK LENOMMANDS"
  28. 180 [153]"8WAIT:(null)RACE PEEKLOCKS
  29. 185 PRINT"9[146]:[213]NSCRATCH A [198]ILE
  30. 186 [153]"(null)VAL(null)(null)(null)(null)WAIT TO (null)UIT"
  31. 198 [141]310:[139]IN[178]0[167]7900
  32. 199 [145]IN[141]1000,2000,3000,4000,5000,6000,7000,7100,7500
  33. 200 [137]105
  34. 300 [143]  GET
  35. 301 [143]" FREFREFRE
  36. 305 PRINT"[158][210][197][212][213][210][206][146] TO CONTINUE.":POKE 198,0
  37. 310 GETIN$:IFIN$<>""THEN310
  38. 320 GETIN$:IFIN$=""THEN320
  39. 330 IN=VAL(IN$):RETURN
  40. 1000 REM LOAD BLOCK INTO BUFFER
  41. 1001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
  42. 1010 [160]3:[160]15:[159]15,8,15:[159]3,8,3,"#":[161]#3,BN$:BN[178][198](BN$[170][199](0))
  43. 1015 BN$[178][202](BN$,2):BM[178]BN[170]3[170]12[172][181]((BN[170]1)[173]4)
  44. 1020 [152]15,"B-P";3;1:[153]"LOAD"
  45. 1030 [129]K[178]0[164]10:[152]3,K$;:[130]
  46. 1040 [153]"LOAD"[170]SD$[170]""
  47. 1045 [153]"(null)(null)ATNSTR$CLOSEPEEK(null)(null)LEN(null)CLOSE(null)(null)ATN(null)(null)RIGHT$(null)CHR$"
  48. 1050 [133]"AT STOP(null)(null)ATNLEN(null),STOP(null)VALLEN(null)(null)(null)   SPC(CMDCMDCMD";T,S
  49. 1060 [152]15,"B-R";3;DR;T;S
  50. 1070 [152]15,"B-P";3;0
  51. 1080 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0)
  52. 1090 C(0)[178][198](Z$):[141]1200
  53. 1120 [153]"(null)VAL(null)(null)(null)(null) TO TERMINATE":CRT[178]01069:[153][196](C(0))[196](C(1));
  54. 1130 J[178]2:[129]I[178]2[164]255:[152]15,"M-R";[199](I);[199](BM):I%[178]I[173]32
  55. 1135 CP[178]CS[170](CRT[171]SN)
  56. 1140 [161]#15,B$:[139]B$[178]""[167]B$[178][199](0)
  57. 1150 C(I)[178][198](B$):[139]T[179][177]DI[167]1165
  58. 1160 [139]S[177]0[175]I%[172]32[178]I[171]5[167][141]10000
  59. 1162 [139]S[177]0[175]I%[172]32[178]I[167][141]11000
  60. 1165 [151] CRT[170]J,C(I):[151] CP[170]J,0
  61. 1170 [161]A$:[139]A$[179][177]""[167][141]1195
  62. 1180 J[178]J[170]1:[130]
  63. 1190 [160]3:[160]15:[153]SD$"ONON":[141]300:[142]
  64. 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$"
  65. 1196 [133]"..WANT TO CONTINUE LOADING   NCMDCMDCMD";N$:[139]N$[178]"N"[167]I[178]256
  66. 1197 [153]SD$"ONON                                    "
  67. 1198 [153]"                                 "
  68. 1199 [142]
  69. 1200 [143] C(0)/C(1)
  70. 1201 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  71. 1210 PRINTSD$:PRINT#15,"B-P";3;1
  72. 1220 GET#3,B$:IFB$=""THENB$=CHR$(0)
  73. 1230 C(1)=ASC(B$)
  74. 1240 IFC(0)=0THENPRINTSD$:PRINT"[144][204]AST [212]RACK":PRINT"[194]YTES [213]SED="C(1):RETURN
  75. 1250 PRINTSD$:PRINT"[206]EXT [212]RACK ="C(0):PRINT"[206]EXT [211]ECTOR="C(1)
  76. 1260 NT=C(0):NS=C(1):RETURN
  77. 2000 REM PRINT ASCII
  78. 2001 REM"[184][184][184][184][184][184][184][184][184][184][184]
  79. 2002 IJ[178]0:II[178]255[171]8:[153]"LOAD"
  80. 2005 [153]"FOR(null)VAL(null)(null)(null)(null) TO DISCONTINUE PRINTING..":[153]S0$:AB[178]31:EE$[178]"WAIT "
  81. 2010 [129]I[178]0[164]II[169]8:Y$[178][196](I):Y$[178]"ON"[170][201]("  "[170]Y$,3):E0$[178]EE$
  82. 2012 [153]""CL$:[153]""Y$"WAIT->";:[129]J[178]0[164]7:H[178]I[170]J:C5[178]C(H)
  83. 2013 [139]C5[177]AB[167]E0$[178]E0$[170][199](C5):[137]2015
  84. 2014 E0$[178]E0$[170]" "
  85. 2015 E$[178][201]("   "[170][202]([196](C5),2),3)
  86. 2020 [153]R$(P)E$R$(1[171]P);:P[178]1[171]P:[130]
  87. 2025 [161]A$:[139]A$[179][177]""[167]II[178]I:I[178]255
  88. 2030 [153]E0$:[130]:[153]CL$:[153]CL$:[153]CL$:[153]CL$
  89. 2031 [153]"ONONONONLEN(null)(null)(null)VAL(null)(null) STOP(null)(null)ATNLEN(null),STOP(null)VALLEN(null)(null)(null) ="T","S
  90. 2035 [153]"(null)EXT TRACK,SECTOR="NT","NS
  91. 2040 [139]IJ[178]0[167][141]300
  92. 2050 [142]
  93. 3000 [143] MODIFY BLOCK
  94. 3001 [143]"FREFREFREFREFREFREFREFREFREFREFREFRE
  95. 3050 PRINT"[147][205][207][196][201][198][217][160][194][204][207][195][203]"
  96. 3060 PRINT"[212]HE [193][211][195][201][201] CODE FOR EACH BLOCK-BYTE"
  97. 3070 PRINT"WILL BE DISPLAYED..I.E. C(0)...C(255)."
  98. 3080 PRINT"[217]OU MAY REDEFINE ANY C(I). [212]HE MODIFIED"
  99. 3090 PRINT"BLOCK WILL BE WRITTEN TO THE DISK"
  100. 3100 PRINT"INTO THE [212]RACK,[211]ECTOR YOU SELECT."
  101. 3102 PRINT"[212]HESE KEYS MAY BE USED TO HELP SPEED-UP"
  102. 3104 PRINT"THE ENTRY PROCESS:"
  103. 3106 PRINTTAB(5)"[129]_ KEY WILL ADVANCE I BY ONE."
  104. 3108 PRINTTAB(5)"[129]\ KEY WILL ENTER A [150]160 FOR C(I)."
  105. 3110 PRINT
  106. 3120 GOSUB300:PRINT"[147]":II=255-8:IJ=1
  107. 3130 PRINT"":GOSUB2005
  108. 3140 PRINT">>>[129][210][197][212][213][210][206] TO QUIT[146]<<<":GETI$
  109. 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$
  110. 3155 IF I$="_" THEN I=I+1:GOTO3165
  111. 3157 I=VAL(I$)
  112. 3160 IFI$="?"THEN3173
  113. 3165 PRINT"CURRENT C("I")=     [160][157][157][157][157][157][129]"C(I);
  114. 3167 PRINT"NEW VALUE=     [157][157][157][157][157]";:INPUTC$:IF C$="\" THENC$="160"
  115. 3170 C(I)=VAL(C$)
  116. 3171 IF I>II THENII=I
  117. 3172 GOTO3150
  118. 3173 PRINT"[147]":GOSUB2005:PRINT"        >>>OK[146] ([129]Y/[129]N)  ?  ";
  119. 3174 POKE204,0:GOSUB310:POKE204,1:IF IN$="N"THENPRINT" ":GOTO3150
  120. 3175 IF IN$<>"Y"ANDIN$<>"N" THEN3174
  121. 3176 PRINT"[147][205][207][196][201][198][217][201][206][199][160][194][204][207][195][203]"
  122. 3177 INPUT"[208]UT MODIFICATIONS ON DISK[146]   Y[157][157][157]";IN$
  123. 3178 IFIN$="N"THENRETURN
  124. 3179 PRINT"[195][213][210][210][197][206][212] [212][210][193][195][203],[211][197][195][212][207][210]="T","S
  125. 3180 PRINT"NEXT TRACK,SECTOR="NT","NS
  126. 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
  127. 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$)
  128. 3200 CLOSE3:CLOSE15:OPEN15,8,15
  129. 3210 OPEN3,8,3,"#":GOSUB63900
  130. 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
  131. 3220 BM=BN+3+12*INT((BN+1)/4)
  132. 3225 FORI=0TO255
  133. 3230 PRINT#15,"M-W";CHR$(I);CHR$(BM);CHR$(1);CHR$(C(I))
  134. 3240 PRINT"   [157][157][157]"I
  135. 3250 NEXT
  136. 3280 PRINT#15,"U2:";3;DR;T;S
  137. 3290 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15
  138. 3300 PRINT"[147]":RETURN
  139. 4000 REM STORE C(I) IN RAM
  140. 4001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
  141. 4005 [153]"LOAD";:[141]2000
  142. 4010 [153]"ON(null)(null)(null)(null)VALCLOSE(null)LEFT$RIGHT$(null) PEEK(null)(null)LEN(null)CLOSERIGHT$(null)CLOSE(null)ATN(null)"
  143. 4020 [133]"(null)(null)ATN(null)(null)RIGHT$(null)CHR$CLOSE(null)ATN(null)(null)VALCLOSE(null)ASC IWAIT   SPC(CMDCMDCMD";I1
  144. 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
  145. 4040 [129]K1[178]I1[164]255:[151]M[171]I1[170]K1,C(K1):[130]
  146. 4050 M[178]M[171]I1[170]256:[153]"(null)VAL(null)(null)WAIT MEM'Y LOC'N="M;:[141]9500:[153]""M$
  147. 4060 [141]300
  148. 4070 [153]"LOAD";:[142]    
  149. 5000 [143] WRITE RAM TO DISK
  150. 5001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE
  151. 5010 PRINT"[147][215][210][201][212][197] [210][193][205] TO [196]ISK"
  152. 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
  153. 5030 INPUT"[211][212][193][210][212] [215][201][212][200] I[146]=[160][160][160][166][157][157][157]";I1
  154. 5040 INPUT"[197][206][196] [215][201][212][200] I[146]=[160][160][160][166][157][157][157]";I2
  155. 5060 FORI=I1TOI2:C(I)=PEEK(M+I):NEXT
  156. 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
  157. 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$)
  158. 5090 OPEN3,8,3,"#":GET#3,BN$:BN=ASC(BN$):PRINT"[147]"SD$"USING [194][213][198][198][197][210] #"BN
  159. 5095 BM=BN+3+12*INT((BN+1)/4)
  160. 5100 FORI=I1TOI2:PRINT"   [157][157][157]"I
  161. 5110 PRINT#15,"M-W";CHR$(I);CHR$(BM);CHR$(1);CHR$(C(I))
  162. 5130 NEXT
  163. 5140 PRINT#15,"U2:";3;DR;T;S
  164. 5150 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15
  165. 5160 PRINT"[147]":RETURN
  166. 6000 REM BAM
  167. 6010 REM"[184][184][184]
  168. 6020 [150] [165]B(I)[178](Z[175]P(I))[173]P(I)
  169. 6030 [160]15:[153][199](142)"LOADBLOCK AVAILABILITY MAP (BAM)"
  170. 6040 [153]"1WAIT:DISPLAY BAM"
  171. 6050 [153]"2WAIT:CHANGE BAM"
  172. 6060 [153]"3WAIT:RETURN TO MAIN MENU"
  173. 6070 [141]310:[139] IN[178]3 [167]6095
  174. 6080 [145] IN [141]6100,6280
  175. 6090 [137]6030
  176. 6095 [160]2:[160]3:[159]15,8,15,"I"[170]DR$:[141]63900:[142]
  177. 6100 [143] DISPLAY BAM
  178. 6110 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  179. 6120 PRINT"WHICH TRACKS":PRINT"[184][184][184][184][184][184][184][184][184][184][184][184]
  180. 6130 [133]"FIRST,LAST TRACK   SPC(CMDCMDCMD";TS,TE
  181. 6140 [139](TS[179]1)[176](TS[177]TT)[176](TE[179]1)[176](TE[177]TT)[176](TE[179]TS)[167]6130
  182. 6150 [153]"LOADBLOCK AVAILABILITY MAP (BAM)"
  183. 6155 [153]"SYSRETURNWAIT TO STOP":[153]S0$
  184. 6160 [159]15,8,15,"I"[170]DR$:[141]63900
  185. 6170 [159]2,8,2,"$"[170]DR$:[141]63900
  186. 6180 FF[178]D1[170](TS[171]1)[172]S3
  187. 6190 [129]K[178]0[164]FF:[161]#2,A$:[130]
  188. 6200 [129]T[178]TS[164]TE:[139]T[178]51[167][161]#2,A$,A$,A$,A$
  189. 6210 [141]6400
  190. 6220 [161]A$:[139]A$[179][177]""[167]T[178]TT[170]1
  191. 6230 [130]:[160]2:[160]15:[141]6870:[141]310:[142]
  192. 6240 [143] CHANGE BAM
  193. 6250 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  194. 6260 INPUT"[147]MORE CHANGES   Y[157][157][157]";I$
  195. 6270 IFI$<>"Y"THENRETURN
  196. 6280 IFDT=67THENPRINT"[147]SORRY..CAN'T CHANGE BAM FOR THIS DISK.":GOSUB310:RETURN
  197. 6285 INPUT"[147]TRACK   [214][157][157][157]";T:IF(T<1)OR(T>TT)THENN6280
  198. 6290 CLOSE15:OPEN15,8,15
  199. 6300 CLOSE2:OPEN2,8,2,"#":GOSUB63900
  200. 6310 PRINT#15,"U1:";2;DR;DI;0
  201. 6320 PRINT#15,"B-P";2;T*4
  202. 6330 PRINT"[147]ENTER [144]NEGATIVE SECTOR TO QUIT":GOSUB6400:GOSUB6580
  203. 6340 INPUT"CHANGE WHICH SECTOR     [157][157][214][157][157][157]";S
  204. 6350 IFS<0ORS>=SC(T)THEN6260
  205. 6360 CLOSE2:CLOSE15:PRINTSD$
  206. 6370 GOSUB6620:GOSUB6480:GOSUB6580:PRINT:PRINTMD$"OK[146][129]Y[129]N";:GOSUB310:PRINTCL$
  207. 6380 IFIN$="Y"THENGOSUB6730
  208. 6385 PRINTMD$CL$SD$
  209. 6390 GOSUB6480:GOTO6340
  210. 6400 FORK=0TOS2:GET#2,A$
  211. 6410 IFA$=""THENA$=CHR$(0)
  212. 6420 B(K)=ASC(A$)
  213. 6430 NEXT
  214. 6480 REM PRINT TRACK
  215. 6490 REM"[163][163][163][163][163][163][163][163][163][163][163]
  216. 6500 [129]K[178]1[164]S1:Z[178]B(K)
  217. 6510 [129]I[178]0[164]7
  218. 6520 X[178][165]B(I):[153]X$(X);:[130]I
  219. 6530 [130]K
  220. 6540 Z[178]B(K):[129]I[178]0[164]SC(T)[171]SC(TT)
  221. 6550 X[178][165]B(I):[153]X$(X);:[130]I:[153]
  222. 6560 [153]"ON"[163]22)"TRACK"T"WAITCMDFREE="B(0)
  223. 6570 [142]
  224. 6580 [153][200](S1$,SC(T))
  225. 6590 [153][200](S2$,SC(T))[163]23)"# SECTORS="SC(T)
  226. 6600 [139]SC(T)[178]21[167][153][200](S3$,SC(T)[170]1):[137]6610
  227. 6605 [153][200](S3$,SC(T))
  228. 6610 [153]S0$:[142]
  229. 6620 [143] CHANGE SECTOR
  230. 6630 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  231. 6640 IFS<8THENZ=B(1):SS=S:GOTO6670
  232. 6650 IFS<16THENZ=B(2):SS=S-8:GOTO6670
  233. 6660 Z=B(3):SS=S-16
  234. 6670 NZ=(NOTZANDP(SS))OR(ZANDNOTP(SS))
  235. 6680 B(0)=B(0)+(NZ<Z)-(NZ>Z)
  236. 6690 IFS<8THENB(1)=NZ:GOTO6720
  237. 6700 IFS<16THENB(2)=NZ:GOTO6720
  238. 6710 B(3)=NZ
  239. 6720 RETURN
  240. 6730 OPEN15,8,15
  241. 6740 PRINTMD$"ARE YOU SURE?[146]";:GOSUB310:PRINTIN$;:IFIN$<>"Y"THENRETURN
  242. 6750 PRINT"..CHANGING BAM..";
  243. 6760 OPEN3,8,3,"#":GOSUB63900
  244. 6770 GET#3,BN$:BN=ASC(BN$)
  245. 6780 BM=BN+3+12*INT((BN+1)/4)
  246. 6790 FORI=0TOS2
  247. 6800 PRINT#15,"M-W";CHR$(I+T*4);CHR$(BM);CHR$(1);CHR$(B(I)):NEXT
  248. 6840 PRINT#15,"U2:";3;DR;DI;0
  249. 6850 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15
  250. 6860 RETURN
  251. 6870 PRINT"[158]RETURN[146] TO CONTINUE";:RETURN
  252. 7000 REM DISK COMMANDS
  253. 7001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184]
  254. 7002 [153][199](14)"LOADSTR$RIGHT$(null)(null)CLOSELEN(null)(null)(null)ATN(null)STR$(null)"
  255. 7005 [153]"1WAIT:RIGHT$NITIALIZE"
  256. 7006 [153]"2WAIT:(null)ALIDATE"
  257. 7007 [153]"3WAIT:LENHANGE STR$(null)RIGHT$(null)VAL #
  258. 7008 IF PEEK(49154)=131 THEN PRINT"4[146]:[196]ISPLAY [196]IRECTORY"
  259. 7009 PRINT"9[146]:[210][197][212][213][210][206] TO MENU"
  260. 7010 GOSUB310:IF (IN>0ANDIN<5)ORIN=9 THEN7015
  261. 7011 GOTO7000
  262. 7015 PRINT"OK.. ";:ON IN GOTO7020,7030,7040,7050,,,,,7099
  263. 7020 PRINT"[129]INITIALIZING":CLOSE15:OPEN15,8,15,"I"+DR$:GOSUB63900:GOTO7000
  264. 7030 PRINT"[129]VALIDATING":CLOSE15:OPEN15,8,15,"V"+DR$:GOSUB63900:GOTO7000
  265. 7040 INPUT"NEW DRIVE #   [166][157][157][157]";DR$:DR=VAL(DR$):GOTO7000
  266. 7050 PRINT"[129]CATALOG":(null)CMD
  267. 7055 GOSUB300:GOTO7000
  268. 7099 RETURN
  269. 7100 REM TRACE BLOCKS
  270. 7101 REM"[184][184][184][184][184][184][184][184][184][184][184][184]
  271. 7102 [153]"LOAD(null)(null)ATNLENVALCLOSEPEEK(null)(null)LEN(null)(null)"
  272. 7105 [133]"STARTINGWAIT STOP(null)(null)ATNLEN(null),STOP(null)VALLEN(null)(null)(null)   SPC(CMDCMDCMD";T,S
  273. 7106 [139](T[179]1)[176](T[177]TT)[176](S[179]0)[176](S[177]SC(T))[167]7102
  274. 7110 [160]3:[160]15:[159]15,8,15:[159]3,8,3,"#":[141]63900:[161]#3,BN$:BN[178][198](BN$)
  275. 7111 BN$[178][202](BN$,2):BM[178]BN[170]3[170]12[172][181]((BN[170]1)[173]4)
  276. 7115 [153]:[153]"("T","S")STOP_ ASCRIGHT$(null)(null)(null) PEEK(null)(null)LEN(null)":N9[178]1
  277. 7120 [152]15,"B-R";3;DR;T;S
  278. 7130 [152]15,"B-P";3;0
  279. 7140 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0)
  280. 7150 T[178][198](Z$):[139]T[178]0[167]7200
  281. 7160 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0)
  282. 7170 S[178][198](Z$)
  283. 7175 T$[178][202]([196](T),2):S$[178][202]([196](S),2)
  284. 7180 [153]"("T$","S$")";
  285. 7190 N9[178]N9[170]1:[137]7120
  286. 7200 [153]"STOP_ (null)ATN(null)(null) PEEK(null)(null)LEN(null)"
  287. 7210 [153]N9" BLOCKS":[141]300:[142]
  288. 7500 [143] UNSCRATCH
  289. 7501 [143]"FREFREFREFREFREFREFREFREFRE
  290. 7505 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  291. 7510 PRINT"[215]E'LL DO THE FOLLOWING:"
  292. 7511 PRINT"1[146]:[199]O THRU' DIRECTORY TRACK"DI" UNTIL"
  293. 7512 PRINT"  WE FIND THE SCRATCHED FILE NAME."
  294. 7513 PRINT"2[146]:[212]RACE THE [194]LOCKS AND COMPARE"
  295. 7514 PRINT"  THE [194]LOCKS OBTAINED WITH THE"
  296. 7515 PRINT"  [196]IRECTORY [194]LOCK [195]OUNT."
  297. 7516 PRINT"3[146]:[204]OOK AT THE [194]LOCK [193]VAILABILTY [205]AP"
  298. 7517 PRINT"  TO SEE IF ALL THE BLOCKS ARE FREE."
  299. 7518 PRINT">>[129][201]F ALL OF THE ABOVE ARE [207][203]"
  300. 7519 PRINT"  WE MAY [205]ODIFY THE [196]IRECTORY"
  301. 7520 PRINT"  AS FOLLOWS:":GOSUB300
  302. 7530 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  303. 7540 PRINT"[205]ODIFY THE BLOCK SO THAT THE"
  304. 7545 PRINT"MAGIC BYTE"
  305. 7550 PRINT"  WHICH OCCURS JUST 3[146] PLACES BEFORE"
  306. 7560 PRINT"  THE NAME IS AS FOLLOWS:"
  307. 7570 PRINT"  129 = [211][197][209] FILE"
  308. 7571 PRINT"  130 = [208][210][207][199] FILE"
  309. 7572 PRINT"  131 = [213][211][210] FILE"
  310. 7573 PRINT"  132 = [210][197][204] FILE"
  311. 7580 PRINT"[197]XAMPLE:TO UNSCRATCH A [208][210][207][199] FILE '[193][194][218]'"
  312. 7590 PRINT"FIND IT'S NAME ON THE [196][201][210][197][195][212][207][210][217], AND"
  313. 7600 PRINT"SELECT [205][197][206][213] ITEM=[205]ODIFY [194]LOCK."
  314. 7610 PRINT"[217]OU WILL SEE:"
  315. 7620 PRINT".. 0 0[146] 0 0[146] 19 3[146] 65 66[146] 90....ETC"
  316. 7630 PRINT"         ^  ^ ^  ^  ^  ^"
  317. 7640 PRINT" SHOULD BE [221][212]RCK[221][193]  [194]  [218]"
  318. 7650 PRINT"     A [129]130 [221]&[211]EC[221][198]ILENAME(IN [193][211][195][201][201])"
  319. 7660 GOSUB300:PRINT"[145]                                      ":PRINTS0$
  320. 7670 PRINT"[205]ODIFY THE BYTE WHICH IDENTIFIES THE "
  321. 7680 PRINT"FILE TYPE..TO [129]130..SO IT READS:"
  322. 7685 PRINT".. 0 0[146] 0[129] 130[146] 19 3[146] 65 66[146] 90....ETC"
  323. 7690 PRINT"4[146]:[215]RITE THE BLOCK BACK TO THE DISK."
  324. 7700 PRINT"5[146]:[209]UIT AND [214][193][204][201][196][193][212][197] THE DISK."
  325. 7705 PRINT"           [184][184][184][184][184][184][184][184]"
  326. 7710 PRINT"5[146]:[208]RAY.."
  327. 7880 INPUT"[215][193][206][212] [212][207] [212][210][217]   Y[157][157][157]";A$:IFA$<>"Y"THENRETURN
  328. 7890 GOTO12000
  329. 7900 CLOSE15:PRINT"[147]";CHR$(142);TAB(11)"[144]DISK VIEW PROGRAM":PRINTS0$
  330. 7910 PRINTTAB(14)"[129]GOOD-BYE !![159]":END
  331. 8000 REM INITIALIZE
  332. 8001 REM"[184][184][184][184][184][184][184][184][184][184]
  333. 8005 [134]C(255),T(120),S(120),SC(77),B(4)
  334. 8006 [131]1,17,20,24,19,30,17,35,16,0
  335. 8007 [131]65,17,20,24,18,30,17,35,16,0
  336. 8008 [131]67,39,28,53,26,64,24,77,22,0
  337. 8010 R$(0)[178]"":R$(1)[178]"WAIT"
  338. 8020 SD$[178]""
  339. 8025 MD$[178]"WAIT"
  340. 8035 [133]"DRIVE #WAIT   0CMDCMDCMD";DR$:DR[178][197](DR$)
  341. 8040 [159]15,8,15,"I"[170]DR$:[141]63900
  342. 8050 K$[178]"  (null)LEFT$RIGHT$(null)CLOSEPEEK(null)(null)LEN(null)CLOSERIGHT$(null)CLOSEVAL(null)(null)(null)(null)  "
  343. 8060 [153]"ONWAIT...     ":[140]:WW[178]0:A0[178]1
  344. 8061 [159]3,8,3,"$"[170]DR$:[141]63900
  345. 8062 [161]#3,A$:A[178][198](A$[170][199](0))
  346. 8063 [135]DT:[139]A[178]DT[167]8070
  347. 8064 WW[178]WW[170]1:[139]WW[179]3[167] [129]I[178]1[164]9:[135]DT:[130]:[137]8063
  348. 8065 [153]"LOAD***NOT A RECOGNIZABLE DISKWAIT***":[160]3:[153]"WANT TO QUIT?"
  349. 8066 [141]310:[139]IN$[178]"Y"[167]7900
  350. 8067 [137]8110
  351. 8070 [139]DT[178]1[176]DT[178]65[167]KK[178]143
  352. 8071 [139]DT[178]67[167]KK[178]5
  353. 8072 [153]"ONDISK HEADER IS:":[141]8200
  354. 8075 [135]A1:[139]A1[178]0[167]8090
  355. 8080 [135]B1:[129]I[178]A0[164]A1:SC(I)[178]B1[170]1:[130]:A0[178]I:[137]8075
  356. 8090 [139]DT[178]1[176]DT[178]65[167]D1[178]1:TT[178]35:S2[178]3:DI[178]18
  357. 8095 [139]DT[178]67[167]D1[178]257:TT[178]77:S2[178]4:DI[178]39
  358. 8096 S1[178]S2[171]1:S3[178]S2[170]1
  359. 8100 [160]3:[139]TT[178]0[167]8065
  360. 8110 [129]I[178]0[164]7:P(I)[178]2[174]I:[130]
  361. 8120 X$(0)[178]"(null)":X$(1)[178]"STOP(null)"
  362. 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("
  363. 8140 CL$[178]"":[129]I[178]1[164]39:CL$[178]CL$[170]" ":[130]
  364. 8150 S1$[178]"^....^....^....^....^....^....^...."
  365. 8160 S2$[178]"(null)    (null)    (null)    (null)    (null)    (null)    (null)"
  366. 8170 S3$[178]"0    5    10   15   20   25   30"
  367. 8180 [142]
  368. 8200 [129]I[178]3[164]KK:[161]#3,A$:[130]:[153]"";
  369. 8210 [129]I[178]1[164]23:[161]#3,A$:A$[178]A$[170][199](0):[153]A$;:[130]
  370. 8220 [153]:[142]
  371. 9000 [143] DECIMAL_HEX
  372. 9001 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  373. 9005 M=VAL(M$):IFM<>0THENRETURN
  374. 9010 M$=MID$(M$,2):M=0:LM=LEN(M$)
  375. 9020 FORCN=1TOLM
  376. 9030 MM$=MID$(M$,CN,1):GOSUB9100:M=M+MM*16^(LM-CN):NEXT
  377. 9040 RETURN
  378. 9100 IFMM$="0"THENMM=0:RETURN
  379. 9110 MM=VAL(MM$):IFMM<>0THENRETURN
  380. 9120 MM=ASC(MM$)-55:RETURN
  381. 9500 REM HEX_DECIMAL
  382. 9501 REM"[163][163][163][163][163][163][163][163][163][163][163]
  383. 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$
  384. 9510 SM[178]SM[171](16[174]CN)[172]CM%:[130]:[142]
  385. 9600 [139]CM%[179]10[167]MM$[178][199](CM%[170]48):[142]
  386. 9610 MM$[178][199](CM%[170]55):[142]
  387. 10000 [153]SD$"    "
  388. 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)
  389. 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]
  390. 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
  391. 10040 [153]SD$"FORNOTE:(TRACK,SECTOR) ":[142]
  392. 11000 :
  393. 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)
  394. 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]
  395. 11030 J[178]J[170]1:[151]CRT[170]J[171]1,188:[151]CP[170]J[171]1,0
  396. 11040 [153]SD$"FREFREFREFRE:>NUMBER BLOCKS<":[142]
  397. 12000 [143] UNSCRATCH ROUTINE
  398. 12001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE
  399. 12010 PRINT"[147]"CHR$(14)"[213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  400. 12020 PRINT"[212]HE SCRATCHED FILE NAMES WILL"
  401. 12030 PRINT"BE DISPLAYED."
  402. 12040 PRINT"[217]OU MAY DECIDE WHICH FILE YOU"
  403. 12050 PRINT"WISH TO RECOVER."
  404. 12060 PRINT"[129][210]ETURN TO CONTINUE":GOSUB310
  405. 12070 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  406. 12080 CLOSE3:CLOSE15:OPEN15,8,15
  407. 12090 T=DI:S=1:OPEN3,8,3,"#0":GOSUB63900
  408. 12095 PRINT#15,"B-R";3;DR;T;S
  409. 12096 PRINT"[204]OOKING AT:"
  410. 12097 PRINT"[144]TRACK   [157][157][157]"T"[144] SECTOR   [157][157][157]"S
  411. 12100 FORJ=0TO255:PRINT#15,"M-R";CHR$(J);CHR$(3):GET#15,A$
  412. 12110 C(J)=ASC(A$+CHR$(0)):NEXT
  413. 12120 FORD=2TO255STEP32:IFC(D)<>0ORC(D+1)=0THEN12200
  414. 12130 PRINTSD$CL$SD$"[145][145][145][215]ANT TO UNSCRATCH ";:FORP9=1TO200:NEXT
  415. 12140 GETA$:FORK=D+3TOD+18:PRINTCHR$(C(K));:NEXT:PRINT"[146]"
  416. 12145 PRINT"([129]Y/[129]N) ?":GOSUB310
  417. 12150 IF IN$="Y" THEN12300
  418. 12200 NEXTD:T=C(0):S=C(1):IFT=DITHEN12095
  419. 12210 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  420. 12215 PRINT"[198]INISHED LOOKING..":PRINT"RETURN[146] TO CONTINUE.":GOSUB310:RETURN
  421. 12300 T0=T:S0=S:T=C(D+1):S=C(D+2):B0=C(D+28)+C(D+29)*256:PRINTCHR$(14)
  422. 12301 PRINT"[196]IRECTORY [194]LOCK [195]OUNT="B0:N9=1:PRINTS0$
  423. 12302 CLOSE3:CLOSE15:OPEN15,8,15:OPEN3,8,3,"#":GOSUB63900:GET#3,BN$:BN=ASC(BN$)
  424. 12303 T(N9)=T:S(N9)=S:N9=N9+1
  425. 12305 PRINT#15,"B-R";3;DR;T;S
  426. 12306 PRINT#15,"B-P";3;0
  427. 12307 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  428. 12308 T(N9)=ASC(Z$):IFT(N9)=0THEN12314
  429. 12309 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  430. 12310 S(N9)=ASC(Z$)
  431. 12311 T$=MID$(STR$(T),2):S$=MID$(STR$(S),2)
  432. 12312 PRINT"("T$","S$")";
  433. 12313 T=T(N9):S=S(N9):N9=N9+1:GOTO12305
  434. 12314 N9=N9-1:PRINT
  435. 12315 PRINT""N9" BLOCKS"
  436. 12350 IFN9<>B0THENPRINT"**INCORRECT BLOCK COUNT[146]**":GOSUB300:RETURN
  437. 12360 PRINT"[204]OOKS GOOD SO FAR."
  438. 12370 PRINT"[211]HALL WE PROCEED ([129]Y/[129]N) ?"
  439. 12373 GOSUB310:IF IN$<>"Y"ANDIN$<>"N" THEN12373
  440. 12375 IF IN$="N" THEN RETURN
  441. 12380 PRINT"[147][213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  442. 12385 PRINT"[215]E'LL CHECK THAT THE ABOVE BLOCKS"
  443. 12390 PRINT"ARE [198][210][197][197] BY LOOKING AT THE [194][193][205]."
  444. 12400 PRINT"[212]HE TRACK/SECTORS FOR THE FILE WILL BE"
  445. 12410 PRINT"DISPLAYED. [201]F A BLOCK IS OCCUPIED"
  446. 12420 PRINT"THE [213][206][211][195][210][193][212][195][200] WILL NOT WORK!":GOSUB300
  447. 12421 CLOSE15:OPEN15,8,15,"I"+DR$:GOSUB63900:PRINT"[147]":PRINTCHR$(142):K1=1
  448. 12422 OPEN2,8,2,"$"+DR$:GOSUB63900
  449. 12423 DEF FNB(I)=(ZANDP(I))/P(I)
  450. 12424 FF=D1+(T(K1)-1)*S3:PP=0
  451. 12425 FORK2=0TOFF:GET#2,A$:NEXT
  452. 12440 T=T(K1):PRINT"[147]":GOSUB6400:GOSUB6580
  453. 12450 PRINTSD$"CHECK THAT THE FOLLOWING "
  454. 12455 PRINT"SECTORS ARE FREE:"
  455. 12460 FORK2=1TON9:IFT(K2)=TTHENPRINTR$(PP)MID$(STR$(S(K2)),2)R$(1-PP);
  456. 12465 PP=1-PP:NEXT:PRINT
  457. 12467 PRINT"FREE = [144][215]"
  458. 12470 PRINT"OK ([129]Y/[129]N) ?":GOSUB310:IF IN$="Y" THEN12480
  459. 12475 PRINT"[147]SORRY..":PRINTCHR$(14):GOSUB300:CLOSE2:RETURN
  460. 12480 CLOSE2:IFK1>=N9THENCLOSE15:RETURN
  461. 12490 K1=K1+1:IFT(K1)=0THEN12600
  462. 12500 IFT(K1)=TTHEN12490
  463. 12505 GOTO12422
  464. 12600 PRINT"[147]":PRINTCHR$(14)"[213][206][211][195][210][193][212][195][200][160][193][160][198][201][204][197]"
  465. 12610 PRINT"[206]OW [205]ODIFY THE MAGIC BYTE[146] ON DIRECTORY"
  466. 12620 PRINT"[212]RACK"T0" [211]ECTOR"S0
  467. 12630 PRINT"[212]HEN [215]RITE THE [194]LOCK BACK TO ("T0","S0")"
  468. 12640 PRINT"[198]INALLY [214]ALIDATE THE DISK!"
  469. 12650 GOSUB300:RETURN
  470. 13000 T=T1:S=S1
  471. 13001 FORJ=1TOB0
  472. 13005 CLOSE3:CLOSE15:OPEN15,8,15:OPEN3,8,3,"#":GOSUB63900:GET#3,BN$:BN=ASC(BN$)
  473. 13010 BN$=MID$(BN$,2):BM=BN+3+12*INT((BN+1)/4)
  474. 13020 PRINT:PRINT"("T","S")[144]_ [198][201][210][211][212] [194][204][207][195][203]":N9=1
  475. 13030 PRINT#15,"B-R";3;DR;T;S
  476. 13040 PRINT#15,"B-P";3;0
  477. 13050 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  478. 13060 T=ASC(Z$):IFT=0THEN7200
  479. 13070 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  480. 13080 S=ASC(Z$)
  481. 13090 T$=MID$(STR$(T),2):S$=MID$(STR$(S),2)
  482. 13100 PRINT"("T$","S$")";
  483. 13110 NEXT
  484. 13120 PRINT"[144]_ [204][193][211][212] [194][204][207][195][203]"
  485. 13130 PRINTN9" BLOCKS":GOSUB300
  486. 13303 BN$=MID$(BN$,2):BM=BN+3+12*INT((BN+1)/4)
  487. 13304 PRINT:PRINT"("T","S")[144]_ [198][201][210][211][212] [194][204][207][195][203]":N9=1
  488. 63900 INPUT#15,E,E$,E1,E2
  489. 63901 IFE<>0THENPRINT:PRINT"**DISK ERROR[146]**"E,E$,E1,E2
  490. 63902 RETURN
  491.