home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / comdore / 64utils / diskread.prg (.txt) < prev    next >
Commodore BASIC  |  1988-12-02  |  10KB  |  316 lines

  1. 100 IFPEEK(56)=127THENPOKE56,160:CLR:X=FRE(0)
  2. 110 REM* DISPLAY ANY TRACK $ SECTOR *
  3. 120 REM* ON THE DISK TO THE SCREEN  *
  4. 130 REM* OR THE PRINTER             *
  5. 140 REM******************************
  6. 150 PRINT"[147][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210]";
  7. 160 PRINT"DISPLAY BLOCK CONTENTS IN HEX & ALPHA"CHR$(13)SPC(10)"S[146]CREEN OR P[146]RINTER"
  8. 165 PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]";
  9. 166 PRINT"(OR F1[146] SCALPEL  F2[146] TRACE LINKS  F3[146] END     F5[146] LOAD ADDRESS";
  10. 167 PRINT"  F7[146] 8K COPY)"
  11. 180 REM* SET PROGRAM CONSTANT       *
  12. 190 REM******************************
  13. 200 SP$=" ":NL$=CHR$(0):HX$="0123456789ABCDEF"
  14. 210 FS$="":FORI=64 TO 95:FS$=FS$+""+CHR$(I)+"[146]":NEXT I
  15. 220 SS$="  ":FOR I=192 TO 223:SS$=SS$+""+CHR$(I)+"[146]":NEXT I
  16. 240 DIM A$(15),NB(2)
  17. 251 D$="0"
  18. 254 GETJJ$:IF JJ$="" THEN254
  19. 255 IF JJ$="S"THENPRINT"        SCREEN[146]"
  20. 256 IF JJ$="P"THENPRINT"        PRINTER[146]"
  21. 257 IFJJ$="[133]"THENRUN1000
  22. 258 IFJJ$="[134]"THENPRINT"END":@"I":END
  23. 259 IFJJ$="[137]"THENRUN2000
  24. 260 IFJJ$="[135]"THENRUN3000
  25. 261 IFJJ$="[136]"THENRUN4000
  26. 264 OPEN15,8,15,"I"+D$:GOSUB 650
  27. 265 OPEN4,4
  28. 270 OPEN 2,8,2,"#":GOSUB 650
  29. 280 REM******************************
  30. 290 REM* LOAD TRACK AND SECTOR      *
  31. 300 REM* INTO DISK BUFFER           *
  32. 310 REM******************************
  33. 320 INPUT"TRACK, SECTOR";T,S
  34. 330 IF T=0 OR T>35 THEN PRINT#15,"I"D$:CLOSE2:CLOSE4:CLOSE15:PRINT"END":END
  35. 340 IF JJ$="S" THEN PRINT"TRACK"T" SECTOR"S""
  36. 341 IF JJ$="P" THEN PRINT#4:PRINT#4,"TRACK"T" SECTOR"S:PRINT#4
  37. 350 PRINT#15,"U1:2,"D$;T;S:GOSUB650
  38. 360 REM******************************
  39. 370 REM* READ BYTE 0 OF DISK BUFFER *
  40. 390 REM******************************
  41. 400 PRINT#15,"B-P:2,1"
  42. 410 PRINT#15,"M-R"CHR$(0)CHR$(5)
  43. 420 GET#15,A$(0):IFA$(0)=""THENA$(0)=NL$
  44. 428 IF JJ$="S"THEN430
  45. 430 IF JJ$="P"THEN460
  46. 431 REM******************************
  47. 432 REM* READ & CRT DISPLAY         *
  48. 433 REM* REST OF THE DISK BUFFER    *
  49. 434 REM******************************
  50. 436 K=1:NB(1)=ASC(A$(0))
  51. 438 FOR J=0 TO 63:IF J=32 THEN GOSUB 710:IF Z$="N"THEN J=80:GOTO 458
  52. 440 FOR I=K TO 3
  53. 442 GET#2,A$(I):IF A$(I)="" THEN A$(I)=NL$
  54. 444 IF K=1 AND I<2 THEN NB(2)=ASC(A$(I))
  55. 446 NEXT I:K=0
  56. 448 A$="":B$=":":N=J*4:GOSUB 790:A$=A$+":"
  57. 450 FOR I=0 TO 3:N=ASC(A$(I)):GOSUB 790
  58. 452 C$=A$(I):GOSUB 850:B$=B$+C$
  59. 454 NEXT I:IF JJ$="S" THEN PRINTA$B$
  60. 458 NEXT J:GOTO571
  61. 460 REM******************************
  62. 462 REM* READ & PRINTER DISPLAY     *
  63. 464 REM******************************
  64. 466 K=1:NB(1)=ASC(A$(0))
  65. 468 FOR J=0 TO 15
  66. 470 FOR I=K TO 15
  67. 472 GET#2,A$(I):IF A$(I)="" THEN A$(I)=NL$
  68. 474 IF K=1 AND I<2 THEN NB(2)=ASC(A$(I))
  69. 476 NEXT I:K=0
  70. 478 A$="":B$=":":N=J*16:GOSUB 790:A$=A$+":"
  71. 480 FOR I=0 TO 15:N=ASC(A$(I)):GOSUB 790:IF Z$="N"THEN J=40:GOTO 571
  72. 482 C$=A$(I):GOSUB 850:B$=B$+C$
  73. 484 NEXT I
  74. 486 IF JJ$="P" THEN PRINT#4,A$B$
  75. 488 NEXT J:GOTO571
  76. 571 REM******************************
  77. 572 REM* NEXT TRACK AND SECTOR      *
  78. 573 REM******************************
  79. 575 PRINT"NEXT TRACK AND SECTOR"NB(1)NB(2) ""
  80. 580 PRINT"DO YOU WANT NEXT TRACK AND SECTOR (Y/N)    F3[146] TO END    ";
  81. 590 GET Z$:IF Z$="" THEN590
  82. 600 IF Z$="Y" THEN T=NB(1):S=NB(2):GOTO330
  83. 610 IF Z$="N" THEN 320
  84. 615 IFZ$="[134]"THENRUN
  85. 620 GOTO 590
  86. 630 REM******************************
  87. 640 REM* SUBROUTINES                *
  88. 650 REM******************************
  89. 660 REM* ERROR ROUTINE              *
  90. 670 REM******************************
  91. 680 INPUT#15,EN,EM$,ET,ES:IF EN=0 THEN RETURN
  92. 690 PRINT"DISK ERROR[146]"EN,EM$,ET,ES
  93. 700 END
  94. 710 REM******************************
  95. 720 REM* SCREEN CONTINUE MESSAGE    *
  96. 730 REM******************************
  97. 740 PRINT"CONTINUE(Y/N)"
  98. 750 GETZ$:IF Z$="" THEN 750
  99. 760 IF Z$="N" THEN RETURN
  100. 770 IF Z$<>"Y" THEN 750
  101. 780 PRINT"[147]TRACK" T " SECTOR"S "[147]":RETURN
  102. 790 REM******************************
  103. 800 REM* DISK BYTE TO HEX PRINT     *
  104. 810 REM******************************
  105. 820 A1=INT(N/16):A$=A$+MID$(HX$,A1+1,1)
  106. 830 A2=INT(N-16*A1):A$=A$+MID$(HX$,A2+1,1)
  107. 840 A$=A$+SP$:RETURN
  108. 850 REM******************************
  109. 860 REM* DISK BYTE TO ASC DISPLAY   *
  110. 870 REM* CHARACTER                  *
  111. 880 REM******************************
  112. 890 IF ASC(C$)<32 THEN C$=" ":RETURN
  113. 910 IF ASC(C$)<128 OR ASC(C$)>159 THEN RETURN
  114. 920 C$=MID$(SS$,3*(ASC(C$)-127),3):RETURN
  115. 1000 REM *********SCALPEL*********
  116. 1002 BL$="                                       "
  117. 1003 DIMH$(16):H$="0123456789ABCDEF"
  118. 1010 PRINT"[147]"SPC(10)"SCALPEL[146] (J.MCA)"
  119. 1020 PRINTSPC(6)"(FOR DISK FILE SURGERY)"
  120. 1021 FORX=0TO15:H$(X)=MID$(H$,X+1,1):NEXT:EC=0
  121. 1022 PRINT SPC(8)"S[146]CREEN OR P[146]RINTER ? S[146]"
  122. 1023 PRINTSPC(8)"ERROR C[146]HECK[145][145]";SPC(9);
  123. 1024 GETP$:IFP$=""THEN1024
  124. 1025 PRINT"S[157]";:IFP$="P"THENP=1:OPEN4,4:PRINT"P";
  125. 1026 IFP$="C"THENEC=1:PRINT"C";
  126. 1027 PRINT:PRINTSPC(7)"B[146]LOCK OR DISK M[146]EMORY B[146][157]";
  127. 1028 GETM$:IFM$=""THEN1028
  128. 1029 PRINT"B[157]";:IFM$="M"THENM=1:PRINT"M";
  129. 1030 PRINT:IFMTHENPRINTSPC(10)"HIBYTE,LOBYTE";:GOTO1035
  130. 1031 PRINTSPC(10)"TRACK,SECTOR";
  131. 1035 INPUTT,S
  132. 1040 OPEN15,8,15:IFMTHENLB=S:HB=T:PRINT"[147]":GOTO1090
  133. 1050 OPEN3,8,3,"#"
  134. 1060 PRINT#15,"U1:"3;8;T;S:PRINT"[147]";
  135. 1070 INPUT#15,A$,B$,C$,D$:EN=VAL(A$)+EC
  136. 1080 PRINT""T"[157],"S"[157]:"A$B$C$","D$ "
  137. 1081 [139]EN[167][153][166]6)"CWAITONTINUE OR RWAITEPEAT ? CWAIT"
  138. 1082 [139]EN[167][153][166]6)"SWAITCALPEL MENU":[153][166]6)"MWAITAIN MENU"
  139. 1083 [139]EN[167][161]AN$:[139]AN$[178]""[167]1083
  140. 1085 [139]EN[167][139]AN$[178]"R"[167]1060
  141. 1087 [139]EN[167][139]AN$[178]"S"[167][160]3:[160]15:[138]1000
  142. 1088 [139]EN[167][139]AN$[178]"M"[167][160]3:[160]15:[138]
  143. 1090 Z$[178][199](0):[153]"  0: ";
  144. 1091 [139]P[167][152]4,"  0: ";
  145. 1120 [129]Y[178]1[164]22:[129]X[178]1[164]12
  146. 1130 [139]M[167][152]15,"M-R"[199](LB)[199](HB):[161]#15,D$:[137]1140
  147. 1135 [161]#3,D$
  148. 1140 A[178][198](D$[170]Z$):H[178][181](A[173]16):L[178]A[171]H[172]16
  149. 1170 [153]H$(H)H$(L)" ";:[139]P[167][152]4,H$(H)H$(L)" ";
  150. 1175 [139]M[167]LB[178]LB[170]1:[139]LB[178]256[167]LB[178]0:HB[178]HB[170]1
  151. 1180 D[178]D[170]1:[139]D[178]256[167]1200
  152. 1190 [130]:[153]"CMD"[201]([196](D),3)": ";
  153. 1192 [139]P[167][152]4,[199](13)[201]([196](D),3)": ";
  154. 1195 [130]
  155. 1200 [139]P[167][152]4,[199](13):[160]4
  156. 1205 [139][168]M[167][160]3
  157. 1206 [160]15
  158. 1210 [153][199](13)"F1WAIT=AGAIN F2WAIT=WRITE F3WAIT=QUIT F4WAIT=XFER BLK ";
  159. 1215 [153][166]4)"F5WAIT/F6WAIT ON/OFF MEMORY MODE";
  160. 1220 P[178]1024[170]39[170]6:SC[178]1024:E[178]1919:B[178]1069
  161. 1250 [161]K$:[139]K$[178]""[167]C[178][194](P):[151]P,C[170]128:[129]I[178]0[164]40:[130]:[151]P,C:[129]I[178]0[164]40:[130]:[137]1250
  162. 1260 [139]K$[178]"INPUT"[167][138]1000
  163. 1261 [139]K$[178]"READ"[167]M[178]1
  164. 1262 [139]K$[178]"IF"[167]M[178]0
  165. 1263 [139]K$[178]"GOTO"[167]1500
  166. 1265 [139]K$[178]"DIM"[167][138]
  167. 1266 [139]K$[178]"RUN"[167][153]BL$;:[153]"TRACK,SECTOR ? ";
  168. 1267 [139]K$[178]"RUN"[167][139]M[167][153]BL$;:[153]"HIBYTE,LOBYTE ? ";
  169. 1269 [139]K$[178]"RUN"[167][159]6,0:[132]6,T,S:[160]6:[137]1500
  170. 1270 [139]K$[178]""[175]P[179]E[167]P[178]P[170]1
  171. 1271 [139]K$[178]"CMD"[175]P[177]B[167]P[178]P[171]1
  172. 1275 P1[178]P[171]SC:PI[178]40[172][181](P1[173]40):PD[178]P1[171]PI
  173. 1277 [139]K$[178]"CMD"[175]PD[179]5[167]P[178]P[171]5:[137]1250
  174. 1278 [139]PD[179]5[167] P[178]P[170]5:[137]1250
  175. 1279 [139]K$[179][177]"CMD"[167][139](PD[171]7)[173]3[178][181]((PD[171]7)[173]3)[167]P[178]P[170]1:[137]1250
  176. 1280 [139]K$[178]""[175]P[179](E[171]39)[167]P[178]P[170]40:[137]1250
  177. 1290 [139]K$[178]"ON"[175]P[177](B[170]39)[167]P[178]P[171]40:[137]1250
  178. 1300 K[178][198](K$)
  179. 1310 [139]K[178]32[167]K$[178]"":[137]1270
  180. 1320 [139]K[177]47[175]K[179]58[167][151]P,K:K$[178]"":[137]1270
  181. 1330 [139]K[177]64[175]K[179]71[167][151]P,K[171]64:K$[178]"":[137]1270
  182. 1450 [137]1250
  183. 1500 :[153]BL$"WRITING";T"CMD,"S"CMD WAIT";
  184. 1550 [159]15,8,15:[139]M[167]LB[178]S:HB[178]T:P[178]B:[137]1570
  185. 1555 [159]6,8,6,"#"
  186. 1560 [152]15,"B-P:"6;0:P[178]B
  187. 1570 [129]Y[178]1[164]22:[129]X[178]1[164]12:[139]P[177]E[167]P[178]0:D[178]0:[137]1691
  188. 1600 CH[178][194](P):CL[178][194](P[170]1):[151]P,32:[151]P[170]1,32
  189. 1630 [139]CH[177]47[167]H[178]16[172](CH[171]48)
  190. 1640 [139]CL[177]47[167]L[178]CL[171]48
  191. 1650 [139]CH[179]7[167]H[178]16[172](9[170]CH)
  192. 1660 [139]CL[179]7[167]L[178]9[170]CL
  193. 1665 [139]M[167]:[152]15,"M-W"[199](LB)[199](HB)[199](1)[199](H[170]L)
  194. 1666 [139]M[167]LB[178]LB[170]1:[139]LB[178]256[167]LB[178]0:HB[178]HB[170]1:[137]1680
  195. 1667 [139]M[167]1680
  196. 1670 [152]6,[199](H[170]L);
  197. 1680 P[178]P[170]3
  198. 1690 [130]:P[178]P[170]4:[130]
  199. 1691 [139]M[167][160]15:[137]1040
  200. 1700 [152]15,"U2:"6;8;T;S
  201. 1750 [132]15,A$,B$,C$,D$
  202. 1800 [153]BL$""T"CMD,"S"CMD:"A$B$C$","D$" (WRITE) WAIT"
  203. 1820 [160]6:[160]15:D[178]0
  204. 1850 [159]15,8,15:[159]3,8,3,"#"
  205. 1860 [152]15,"U1:"3;8;T;S
  206. 1861 [132]15,A$,B$,C$,D$:D$[178]D$[170]" READBACK ":EN[178][197](A$)
  207. 1900 [137]1080
  208. 2000 [153]"LOAD"[166]9)"TRACE LINKS (J MCA)":[153][166]9)"ONONSWAITCREEN OR PWAITRINTER"
  209. 2001 [161]ANS$:[139]ANS$[178]""[167]2001
  210. 2002 [153]"NWAITAME (*)  OR  TWAITRACK & SECTOR"
  211. 2003 [161]RE$:[139]RE$[178]""[167]2003
  212. 2004 [139]RE$[178]"T"[167]2010
  213. 2005 [153]"NAME(*)";:[133]NA$:[139]NA$[178]"$"[167]T[178]18:S[178]1:[137]2012
  214. 2006 [159]15,8,15:[159]1,8,3,NA$:[160]1
  215. 2007 [152]15,"M-R"[199](24)[199](0)[199](2):[161]#15,T$,S$:[160]15
  216. 2008 T[178][198](T$[170][199](0)):S[178][198](S$[170][199](0))
  217. 2009 [137]2012
  218. 2010 [153]"TRACK,SECTOR";
  219. 2011 [133]T,S
  220. 2012 [139]ANS$[178]"S"[167]2200
  221. 2015 [159]15,8,15:[159]4,4
  222. 2020 [159]3,8,3,"#"
  223. 2030 [152]15,"U1:"3;8;T;S
  224. 2040 [132]15,A$,B$,C$,D$:B[178]B[170]1
  225. 2050 [152]4,"BLK#"B":"T","S;" "A$;B$;C$;D$"  ";
  226. 2090 [161]#3,T$,S$:T[178][198](T$[170][199](0)):S[178][198](S$[170][199](0))
  227. 2095 [152]4,T;","S
  228. 2096 [139]T[178]0[167]2120
  229. 2100 [137]2030
  230. 2120 [152]4:[160]4:[160]3:[160]15:[138]
  231. 2200 :
  232. 2215 [153]"HOLD DOWN SHIFT KEY TO STOP SCROLL"
  233. 2220 [159]15,8,15
  234. 2230 [159]3,8,3,"#"
  235. 2240 [152]15,"U1:"3;8;T;S
  236. 2250 [132]15,A$,B$,C$,D$
  237. 2255 B[178]B[170]1:[153]"BLK#"B":";
  238. 2260 [153]T","S;" "A$;B$;C$;D$"  ";
  239. 2270 [161]#3,T$,S$:T[178][198](T$[170][199](0)):S[178][198](S$[170][199](0))
  240. 2280 [153]T;","S
  241. 2290 [139]T[178]0[167]2310
  242. 2295 [139][194](654)[178]1[167]2295
  243. 2300 [137]2240
  244. 2310 [160]3:[160]15
  245. 2320 [153]"F3WAIT TO END  F1WAIT=AGAIN";
  246. 2325 [161]ANS$:[139]ANS$[178]""[167]2325
  247. 2330 [139]ANS$[178]"INPUT"[167][138]2000
  248. 2335 [139]ANS$[178]"DIM"[167][138]
  249. 2340 [137]2325
  250. 3000 [153] "LOADDISPLAY 'LOAD ADDRESS' OF A FILE"
  251. 3015 [153] "FILE ";:[133]F$
  252. 3018 [153] "LOAD ADDRESS:";
  253. 3020 [159]1,8,3,"0:"[170]F$
  254. 3030 [161] #1,L$,H$
  255. 3050 X$[178]H$:[141]3100:H[178]X[172]256
  256. 3060 X$[178]L$:[141]3100:L[178]X:[153]H[170]L
  257. 3080 [160]1:[153]"F1WAIT AGAIN  F3WAIT END
  258. 3090 GETANS$:IFANS$=""THEN3090
  259. 3093 IFANS$="[133]"THENRUN3000
  260. 3094 IFANS$="[134]"THENRUN
  261. 3095 GOTO3090
  262. 3100 IF X$="" THEN X=0:RETURN
  263. 3110 X=ASC(X$):RETURN
  264. 4000 REM***** 8K COPY ********
  265. 4010 IFPEEK(56)<>127THENPOKE56,127:A=FRE(0):RUN4010
  266. 4015 BL$="                                       "
  267. 4020 PRINT"[147]"SPC(10)"COPY*8*[146] (J.MCA)"
  268. 4025 PRINTSPC(6)"(COPIES 8K OF DISK DATA)":GOSUB4500
  269. 4030 PRINTSPC(6)"START AT TRACK,SECTOR";
  270. 4040 INPUTT,S:TS=T:SS=S:SA=32768:Z$=CHR$(0):AD=SA
  271. 4050 OPEN15,8,15:OPEN3,8,3,"#"
  272. 4055 FORBK=1TO32
  273. 4060 PRINT#15,"U1:"3;8;T;S
  274. 4070 INPUT#15,A,B$,C$,D$
  275. 4080 PRINT"[147]"T"[157],"S"[157]:"A"[157]"B$C$","D$" ST:"ST"[157] BLOCK# "BK"[146]"
  276. 4090 IFA=0THENES=0:GOTO4110
  277. 4100 ES$="R":ES=1:GOTO4200
  278. 4110 TL=T:SL=S:BL=BK
  279. 4115 GET#3,T$,S$:T=ASC(T$+Z$):S=ASC(S$+Z$)
  280. 4120 IFT=0THENBK=32
  281. 4130 POKEAD,T:AD=AD+1:POKEAD,S:POKE840,127+BL
  282. 4140 SYS828
  283. 4160 AD=AD+255:NEXTBK
  284. 4200 PRINT:PRINT"LAST BLOCK SUCESSFULY READ:"
  285. 4201 PRINT"TRACK"TL"SECTOR"SL"BLOCK#"BL
  286. 4202 IFES=0 THEN PRINT"NO READ ERRORS"
  287. 4203 IFES=1THENPRINT"STOPED BY READ ERROR"
  288. 4205 PRINT"EXCHANGE DISKS F1[146] TO WRITE"
  289. 4210 CLOSE3:CLOSE15
  290. 4220 GETAN$:IFAN$=""THEN4220
  291. 4230 IFAN$<>"[133]"THENSTOP
  292. 4240 AD=SA:T=TS:S=SS
  293. 4250 OPEN15,8,15:OPEN6,8,6,"#"
  294. 4260 FORX=1TOBL
  295. 4270 PRINT#15,"B-P:"6;0
  296. 4280 TN=PEEK(AD):AD=AD+1:SN=PEEK(AD)
  297. 4290 POKE857,127+X
  298. 4300 SYS848
  299. 4310 AD=AD+255
  300. 4330 PRINT#15,"U2:"6;8;T;S
  301. 4340 INPUT#15,A,B$,C$,D$
  302. 4350 PRINTBL$""T"[157],"S"[157]:"A"[157]"B$C$","D$" ST:"ST"[157] BLOCK# [157]"X"[146]"
  303. 4352 FORL=0TONE:IFNE<>0THENPRINT
  304. 4353 NEXT
  305. 4355 IFA<>0THENPRINT"ERROR"T","S:NE=NE+1
  306. 4360 T=TN:S=SN:NEXT
  307. 4370 CLOSE6:CLOSE15:POKE56,160:CLR:F=FRE(0)
  308. 4380 PRINT:PRINT"F1[146]=AGAIN  F3[146]=END";
  309. 4390 GETAN$:IFAN$=""THEN4390
  310. 4400 IFAN$="[133]"THENRUN4010
  311. 4410 RUN
  312. 4500 FORA=828TO867:READB:POKEA,B:NEXT
  313. 4510 DATA 162,3,32,198,255,160,2,32,165,255,153,0,48,200,208,247,32,204,255,96
  314. 4520 DATA 162,6,32,201,255,160,0,185,0,48,32,168,255,200,208,247,32,204,255,96
  315. 4530 RESTORE:RETURN
  316.