home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU07.ARC / BLOCKMOD4 (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  6.3 KB  |  200 lines

  1. 10 POKE55,0:POKE56,160
  2. 14 REM-------BLOCKMOD4------------------            -----------
  3. 15 REM------JERRY BYBEE-----------------    404 ROSEMERE LN-MAQUOKETA,IA 52060
  4. 20 REM --USES SOME ROUTINES FROM--                 --BACKUP 1541--
  5. 30 FORI=828TO883:READA:POKEI,A:NEXTI
  6. 40 BB=PEEK(44)+27:POKE995,BB
  7. 50 POKE998,PEEK(55):POKE999,PEEK(56):POKE55,0:POKE56,BB:CLR
  8. 60 BB=PEEK(995):BA=BB*256
  9. 70 MA=828
  10. 80 PRINT"[147]":PRINT"BLOCK MOD4":PRINT
  11. 90 PRINT:INPUT"DO YOU WANT INSTRUCTIONS (Y/N)";YN$:PRINT
  12. 100 IFYN$="Y"THENGOSUB1330:GOTO120
  13. 110 IFYN$<>"N"GOTO90
  14. 120 PRINT"DO YOU WANT TO:":PRINT" (1) READ A BLOCK":PRINT" (2) WRITE A BLOCK
  15. 130 [153]" (3) REVIEW SOMETHING AGAIN":[153]" (4) SELECT A NEW FUNCTION":[153]" (5) STOP
  16. 140 INPUTRW:PRINT:IFRW=4GOTO450
  17. 150 IFRW=3GOTO230
  18. 160 IFRW=5GOTO1530
  19. 170 PRINT"WHAT BLOCK DO YOU WANT?"
  20. 180 INPUT"TRACK";T1
  21. 190 INPUT"SECTOR";S1:PRINT
  22. 200 IFRW=1THENGOSUB760:GOSUB 230:GOTO450
  23. 210 IFRW=2THENGOSUB890:GOTO120
  24. 220 GOTO120
  25. 230 PRINT"HOW DO YOU WANT TO SEE IT?"
  26. 240 PRINT"(1) CHR$'S (DIRECTORY)":PRINT"(2) DECIMAL NUMBERS":PRINT"(3) HEXADECIMAL"
  27. 250 PRINT"(4) DISK NAME,ID AND DOS"
  28. 260 INPUTCA:PRINT
  29. 270 ON CA GOSUB390,300,330,350
  30. 280 IF CA<>1ANDCA<>2ANDCA<>3ANDCA<>4GOTO230
  31. 290 GOTO450
  32. 300 ZX=0
  33. 310 FORQ=0TO248STEP8:PRINT"[157]";Q;")";:FORK=0TO7:PRINTPEEK(BA+Q+K);:NEXTK:PRINT:NEXTQ
  34. 320 RETURN
  35. 330 FORQ=0TO248STEP8:PRINTQ;")";:FORQ1=0TO7:D=PEEK(BA+Q+Q1):GOSUB380:PRINTH$;" ";:NEXTQ1:PRINT:NEXTQ
  36. 340 RETURN
  37. 350 IFT1<>18ORS1<>0THENPRINT"YOU NEED TRACK-18,SECTOR-0 TO READ THE NAME & ID":PRINT
  38. 360 FORN=144TO167:PRINTCHR$(PEEK(BA+N));:NEXT:PRINT
  39. 370 RETURN
  40. 380 H$="":D=D/16:FORI=1TO2:D%=D:H$=H$+CHR$(48+D%-(D%>9)*7):D=16*(D-D%):NEXT:RETURN
  41. 390 PRINT"DIRECTORY":PRINT:PRINT"TRACK";T1;:PRINT"SECTOR";S1:PRINT:
  42. 400 PRINT"                (# BLOCKS)"
  43. 410 FORV=0TO7:PRINTV+1;" ";:FORW=0TO15:PRINTCHR$(PEEK(BA+5+V*32+W));:NEXTW:PRINTPEEK(BA+V*32+30):NEXTV
  44. 420 PRINT"NEXT DIRECTORY BLOCK:"
  45. 430 PRINT"TRACK:";PEEK(BA)
  46. 440 PRINT"SECTOR:";PEEK(BA+1):RETURN
  47. 450 PRINT:PRINT"   WHAT DO YOU WANT TO DO TO THE CURRENT BLOCK ?  (";T1;",";S1;")":PRINT
  48. 460 PRINT" (1) NOTHING":PRINT" (2) CHANGE DISK NAME & ID":PRINT" (3) UNSCRATCH THE BLOCK
  49. 470 [153]" (4) CHANGE A BYTE":[153]" (5) SEE A PROGRAM'S BLOCK SEQUENCE
  50. 480 PRINT" (6) FIND A PROGRAM'S LOAD ADDRESS
  51. 490 [133]NC:[153]
  52. 500 [139]NC[178]1[137]120
  53. 510 [139]NC[178]2[167][141]1090
  54. 520 [139]NC[178]3[167][141]1170
  55. 530 [139]NC[178]4[167][141]1270
  56. 540 [139]NC[178]5[167][141]1600
  57. 550 [139]NC[178]6[167][141]1780
  58. 560 [137]450
  59. 570 [159]1,8,15
  60. 580 [152]1,"I0":[159]3,8,3,"#"
  61. 590 [141]760
  62. 600 [153]"READING BLOCK #";
  63. 610 S1[178]S1[170]1:[139]S1[177]20[167]S1[178]0:T1[178]T1[170]1
  64. 620 [139]T1[179]TF[170]1[167]550
  65. 630 [153]""
  66. 640 [160]3
  67. 650 D$[178]"D":[141]3200:[139]IR$[179][177]I1$[167][137]650
  68. 660 [152]1,"I0":[159]3,8,3,"#"
  69. 670 [141]890:[160]1:[137]201
  70. 680 [153]"WRITING BUFFER #";
  71. 690 S1[178]S1[170]1:[139]S1[177]20[167]S1[178]0:T1[178]T1[170]1
  72. 700 [139]T1[179]TF[170]1[167]650
  73. 710 [153]""
  74. 720 [160]3
  75. 730 S[178]S1[170]1:[139]S[177]20[167]S[178]0:T1[178]T1[170]1
  76. 740 T[178]T1:[139]T[177]TF[167]550
  77. 750 D$[178]"S":[141]3200:[139]IR$[179][177]I2$[167]750
  78. 760 [143] READ BLOCK T1,S1 TO BUFFER
  79. 770 C[178].
  80. 780 [160]3:[160]1:[159]1,8,15
  81. 790 [152]1,"I0":[159]3,8,3,"#"
  82. 800 [152]1,"U1";3;0;T1;S1
  83. 810 [141]1050:[139][168]ER[167]840
  84. 820 C[178]C[170]1:[139]C[179]3[137]800
  85. 830 [153]ER$:[129]J[178]BB[172]256[164]BB[172]256[170]255:[151]J,.:[130]J:[137]880
  86. 840 [152]1,"B-P";3;0
  87. 850 [151]996,[194](3):[151]997,[194](4):[151]4,BB:[158]MA
  88. 860 [151]3,[194](996):[151]4,[194](997)
  89. 870 [139]ST[179][177].[175]ST[179][177]64[167][141]1050:[137]830
  90. 880 [142]
  91. 890 [143] WRITE BLOCK T1,S1 FROM BUFFER
  92. 900 [153]"HAVE YOU READ AND MODIFIED THE BLOCK    FIRST....IF YOU HAVEN'T IT";
  93. 910 [153]"WILL REALLY   SCREW UP THE ENTIRE BLOCK. TO ESCAPE HIT RUN/STOP-";
  94. 920 [153]"RESTORE"
  95. 930 [153]"IF YOU'RE SURE HIT ANY KEY":[153]:[153]
  96. 940 [146]197,64,64
  97. 950 C[178].
  98. 960 [152]1,"B-A";0;T1;S1:[152]1,"B-P";3;0
  99. 970 [151]996,[194](3):[151]997,[194](4):[151]4,BB:[158]MA[170]3
  100. 980 [151]3,[194](996):[151]4,[194](997)
  101. 990 [139]ST[179][177].[175]ST[179][177]64[167][153]"IEEE WRITE ERROR"ST"WAIT":[137]1930
  102. 1000 [152]1,"U2";3;0;T1;S1
  103. 1010 [141]1050:[139][168]ER[167]1040
  104. 1020 C[178]C[170]1:[139]C[179]3[167]1000
  105. 1030 [153]"UNRECOVERABLE WRITE ERROR"ER$:[137]1930
  106. 1040 [142]
  107. 1050 [143] READ ERR CH TO ER,ER$
  108. 1060 [132]1,E0$,E1$,E2$,E3$:ER$[178]E0$[170]","[170]E1$[170]","[170]E2$[170]","[170]E3$
  109. 1070 ER[178][195](E0$):[139]ER[167]ER[178][197](E0$)
  110. 1080 [142]
  111. 1090 [139]T1[179][177]18[176]S1[179][177]0[167][153]"ONLY TRACK:18 SECTOR:0 HAS THE NAME & ID ":[142]
  112. 1100 [133]"NEW DISK NAME";NA$:NA$[178]NA$[170]"CLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSE"
  113. 1110 [133]"NEW ID";ID$
  114. 1120 [129]JE[178]1[164]16
  115. 1130 [151](BA[170]143[170]JE),[198]([202](NA$,JE,1))
  116. 1140 [130]JE
  117. 1150 [129]JE[178]1[164]2:[151]BA[170]161[170]JE,[198]([202](ID$,JE,1)):[130]JE
  118. 1160 [141]890:[141]760::[141]350:[153]"(NAME,ID,AND DOS-AS READ FROM DISK)":[153]:[142]
  119. 1170 [139]T1[179][177]18[176]S1[178]0[167][153]"YOU CAN ONLY UNSCRATCH A DIRECTORY BLOCK":[137]1260
  120. 1180 [133]"# OF PROGRAMS IN BLOCK";NO
  121. 1190 [129]JE[178]0[164]NO[171]1
  122. 1200 [151]BB[172]256[170]2[170]JE[172]32,130
  123. 1210 [130]JE
  124. 1220 [153]:[153]"NEXT BLOCK OF DIRECTORY IS:"
  125. 1230 [153]"TRACK:";[194](BB[172]256)
  126. 1240 [153]"SECTOR:";[194](BB[172]256[170]1)
  127. 1250 [142]
  128. 1260 [153]"YOU ARE TRYING TO UNSCRATCH":[153]"TRACK:";T1:[153]"SECTOR:";S1:[142]
  129. 1270 [133]"BYTE # : ";BN
  130. 1280 [153]"OLD VALUE = ";[194](BB[172]256[170]BN)
  131. 1290 [133]"NEW VALUE DESIRED ";NV
  132. 1300 [151]BB[172]256[170]BN,NV
  133. 1310 [153]"IF REWRITTEN TO DISK, BYTE ";BN:[153]" WILL BE ";NV
  134. 1320 [142]
  135. 1330 [153]:[153]"LOADTHIS PROGRAM CAN BE UTILIZED TO:
  136. 1340 PRINT"  (1) READ AND WRITE DISK BLOCKS
  137. 1350 [153]"  (2) DISPLAY A BLOCK IN HEX,DECIMAL, OR AS A DIRECTORY
  138. 1360 PRINT"  (3) UNSCRATCH FILES
  139. 1370 [153]"  (4) CHANGE THE DISK NAME AND ID
  140. 1380 PRINT"  (5) ALTER INDIVIDUAL BYTE(S) WITHIN   ANY BLOCK
  141. 1390 [153]"  (6) DISPLAY A PROGRAM'S BLOCKS
  142. 1400 PRINT"[185][185](7) SHOW A PROGRAM'S LOAD ADDRESS[185][185][185][185][185]
  143. 1410 [153]"TO UNSCRATCH FILES YOU NEED TO CHANGE   BYTE 0";
  144. 1420 [153]" OF THAT FILE'S DIRECTORY ENTRY"
  145. 1430 [153]"(SEE TOP OF P.56 OF 1541 USERS MANUAL)
  146. 1440 PRINT"FOR FILE 'N' OF THAT DIRECTORY BLOCK THE BYTE TO CHANGE IS:((N-1)*32+2)
  147. 1450 [153]"(FOR SEQ, 'TYPE'=1: FOR PRG 'TYPE'=2)
  148. 1460 PRINT"EG. TO UNSCRATCH THE SECOND FILE (A PRG)  OF A BLOCK, CHANGE BYTE 34
  149. 1470 [153]"((2-1)*32+2) TO 130 (128+2)
  150. 1480 PRINT:PRINT"AFTER YOU READ AND CHANGE A BLOCK YOU   HAVE TO WRITE IT BACK";
  151. 1490 PRINT" TO THE DISK"
  152. 1500 PRINT"HIT  [146] TO CONTINUE"
  153. 1510 GETT$:IFT$=""GOTO1510
  154. 1520 PRINT:RETURN
  155. 1530 PRINT:PRINT"  DID YOU UNSCRATCH ANY FILES?          (IF SO, THE DISK MUST BE RE-";
  156. 1540 PRINT"VALIDATED)
  157. 1550 [133]"(Y/N)";YN$
  158. 1560 [139]YN$[178]"N"[137]1590
  159. 1570 [153]:[153]:[153]"RE-VALIDATING DISK...........
  160. 1580 CLOSE1:CLOSE3:OPEN15,8,15:PRINT#15,"V":CLOSE15:END
  161. 1590 OPEN15,8,15:CLOSE15:END
  162. 1600 REM  SEQUENCE OF BLOCKS OF PROGRAM           ON DISK
  163. 1610 IFT1=18THENIFS1<>0GOTO1650
  164. 1620 PRINT"YOU HAVE TO START WITH A DIRECTORY ENTRY (TRACK 18, SECTOR>0) TO";
  165. 1630 PRINT" SEQUENCE THE   ";
  166. 1640 PRINT"BLOCKS ";:PRINT"OF A PROGRAM":RETURN
  167. 1650 INPUT"NUMBER OF PROGRAM IN SECTOR (1-8)";NB
  168. 1660 PRINT"   BLOCKS OF PROGRAM"
  169. 1670 PRINT"[198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198]"
  170. 1680 PRINT"  BLOCK NUMBER    TRACK       SECTOR"
  171. 1690 GOSUB 760
  172. 1700 T1=PEEK(BB*256+(NB-1)*32+3):S1=PEEK(BB*256+(NB-1)*32+4)
  173. 1710 PRINT:NM=1
  174. 1720 PRINT"      ";NM;"        ";T1;"           ";S1
  175. 1730 NM=NM+1
  176. 1740 GOSUB 760:T2=T1:S2=S1
  177. 1750 T1=PEEK(BB*256):S1=PEEK(BB*256+1)
  178. 1760 IFS1>20ORT1<1ORT1>35THENT1=T2:S1=S2:RETURN
  179. 1770 GOTO1720
  180. 1780 REM  LOAD ADDRESS OF PROGRAM
  181. 1790 IFT1=18THENIFS1>0GOTO1820
  182. 1800 PRINT"YOU HAVE TO START WITH THE DIRECTORY    (TRACK 18,SECTOR>0)"
  183. 1810 PRINT"TO FIND THE LOAD ADDRESS OF A PROGRAM":RETURN
  184. 1820 PRINT"DID YOU JUST READ THE PROPER DIRECTORY SECTOR (Y/N)?":INPUT YN$
  185. 1830 IFYN$="Y"THENGOTO1860
  186. 1840 INPUT"SECTOR OF DIRECTORY PROGRAM NAME IS ON";S1
  187. 1850 GOSUB 760
  188. 1860 A=BB*256:GOSUB390
  189. 1870 INPUT"NUMBER OF PROGRAM IN SECTOR (1-8)";NB
  190. 1880 T1=PEEK(A+(NB-1)*32+3):S1=PEEK(A+(NB-1)*32+4)
  191. 1890 GOSUB760
  192. 1900 LO=PEEK(A+2):HI=PEEK(A+3)
  193. 1910 PRINT:PRINT"LOAD ADDRESS OF THIS PROGRAM:";HI*256+LO
  194. 1920 RETURN
  195. 1930 REM DROP OUT
  196. 1940 POKE55,PEEK(998):POKE56,PEEK(999):CLR:STOP
  197. 1950 DATA76,66,3,76,91,3,162,3,32,198,255,160,0,132,3,32,207,255,145
  198. 1960 DATA3,165,144,208,3,200,208,244,32,204,255,96,162,3,32,201,255,160
  199. 1970 DATA0,132,3,177,3,32,210,255,165,144,208,3,200,208,244,32,204,255,96
  200.