home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / TRACE.ARC / TRC (.txt) < prev   
Encoding:
Commodore BASIC  |  2019-04-13  |  5.4 KB  |  299 lines

  1. 10 LDA #$00
  2. 20 STA TEMP;TEMP IS USED THROUGH OUT THIS ROUTINE FOR TEMP STORAGE
  3. 30 STA CT
  4. 40 STA EFLAG;FLAG TO INDICATE END OF ROUTINE
  5. 50 LDA #<TRK; EQUALS #$CC ADDED TO #$73 = $73CC
  6. 60 STA CH1+1
  7. 70 LDA #<MES1;SET UP TRACK MESSAGE
  8. 80 STA CH+1
  9. 90 LDA #>MES1
  10. 100 STA CH+2
  11. 110 LDA #$01;SET BEGINNING DATA STORAGE TO $0801
  12. 120 STA CH2+1
  13. 130 LDA #$08
  14. 140 STA CH2+2
  15. 150 LDA #$EE;FILL $7000 TO $70FF #$EE
  16. 160 LDY #$00
  17. 170 EE STA SECS,Y
  18. 180 INY
  19. 190 CPY #$00
  20. 200 BNE EE
  21. 210 START LDY #$00
  22. 220 CH LDA $0000,Y;PRINT MESSAGE TO SCREEN
  23. 230 CMP #$00;#$00 IS USED AS A DELIMITER IF 0 THEN STOP PRINT
  24. 240 BEQ TRC1
  25. 250 JSR PRINT
  26. 260 INY
  27. 270 JMP CH
  28. 280 TRC1 JSR GET;GET SCREEN INPUT FOR TRACK & SECTOR
  29. 290 BEQ TRC1
  30. 300 JSR PRINT;ECHO CHOICE TO SCREEN IT'S ALREADY IN ASCII
  31. 310 AND #$0F;CONVERT ASCII TO HEX
  32. 320 STA BUF
  33. 330 ASL:ASL
  34. 340 CLC
  35. 350 ADC BUF
  36. 360 ASL
  37. 370 STA BUF
  38. 380 TRC2 JSR GET;GET SECOND NUMBER IN CHIOCE
  39. 390 BEQ TRC2
  40. 400 JSR PRINT;ECHO IT TO SCREEN
  41. 410 AND #$0F;CONVERT TO HEX
  42. 420 CLC
  43. 430 ADC BUF
  44. 440 CH1 STA TRK;HOLDS IN HEX TWO NUMBERS PRESSED
  45. 450 INC TEMP
  46. 460 LDA TEMP
  47. 470 CMP #$02;IF NOT 2 (null) BACK FOR SECTOR CHOICE
  48. 480 BEQ TRC3;IF EQUAL TO 2 THEN CONTINUE
  49. 490 LDA #<MES2;SET UP SECTOR MESSAGE
  50. 500 STA CH+1
  51. 510 LDA #>MES2
  52. 520 STA CH+2
  53. 530 LDA #<SEC
  54. 540 STA CH1+1
  55. 550 LDA #>SEC
  56. 560 STA CH1+2
  57. 570 JMP START;(null) BACK AND PRINT SECTOR MESSAGE
  58. 580 TRC3 LDA TRK;PUT BEGINNING TRACK & SECTOR IN BUFFER AT $7000
  59. 590 STA SECS
  60. 600 INC CT;CT KEEPS TRACK OF X COUNTER FOR $7000
  61. 610 LDA SEC
  62. 620 STA SECS+1
  63. 630 INC CT
  64. 640 LDA #$00
  65. 650 STA TEMP
  66. 660 READ JSR LIST;ROUTINES TO SEND DATA TO 1541
  67. 670 LDY #$00;ADDRESSES $06 $07 AND $00
  68. 680 TRC4 LDA MW1,Y
  69. 690 JSR OUT
  70. 700 INY
  71. 710 CPY #$08
  72. 720 BNE TRC4
  73. 730 JSR UNLIS
  74. 740 JSR LIST
  75. 750 LDY #$00
  76. 760 TRC5 LDA MW2,Y
  77. 770 JSR OUT
  78. 780 INY
  79. 790 CPY #$07
  80. 800 BNE TRC5
  81. 810 JSR UNLIS
  82. 820 JSR DELAY;DELAY TO INSURE M-W DATA ACCEPTED BY 1541
  83. 830 LDY #$00
  84. 840 JSR LIST
  85. 850 TRC6 LDA MR,Y;READ DISK BUFFER $0300
  86. 860 JSR OUT
  87. 870 INY
  88. 880 CPY #$06
  89. 890 BNE TRC6
  90. 900 JSR UNLIS
  91. 910 JSR TALK
  92. 920 LDY #$00
  93. 930 TRC7 JSR IN
  94. 940 STA DATA,Y;$7400 IS A WORK BUFFER FROM HERE IT'S SENT TO MEMORY
  95. 950 INY
  96. 960 CPY #$FF
  97. 970 BNE TRC7
  98. 980 JSR UNTLK
  99. 990 STY Y;THERS ONE BYTE LEFT TO GET FROM THE DISK
  100. 1000 JSR FF;(null) TO THIS ROUTINE TO GET IT
  101. 1010 LDY #$00
  102. 1020 LDX CT
  103. 1030 LDA DATA,Y;GET THE FIRST 2 BYTES THIS IS OUR NEXT TRK & SEC
  104. 1040 STA SECS,X
  105. 1050 STA TRK;SET UP NEXT READ ROUTINE TO DISK
  106. 1060 INY
  107. 1070 INX
  108. 1080 JSR END
  109. 1090 LDA DATA,Y;ON THE FIRST SECTOR WE GET THE LOAD ADDRESS
  110. 1100 STA SECS,X;BYTE 2 & 3 FROM THE DATA BLOCK
  111. 1110 STA SEC
  112. 1120 INY
  113. 1130 INX
  114. 1140 STX CT
  115. 1150 LDA TEMP
  116. 1160 BNE TRC8
  117. 1170 LDA DATA,Y
  118. 1180 STA ADD
  119. 1190 INY
  120. 1200 LDA DATA,Y
  121. 1210 STA ADD+1
  122. 1220 INY
  123. 1230 TRC8 LDA DATA,Y;ALL OTHER BLOCKS COME HERE
  124. 1240 CH2 STA $0801;AND THE #254 BYTES ARE PUT IN MEMORY
  125. 1250 JSR INCBUF
  126. 1260 INY
  127. 1270 CPY #$00
  128. 1280 BNE TRC8
  129. 1290 LDA EFLAG
  130. 1300 BEQ MORE;IF E FLAG IS 0 THERS MORE TO COPY
  131. 1310 JMP DISP;IF THE FLAG IS SET (1) THE PRINT THE DATA TO THE SCREEN
  132. 1320 MORE LDA #$01
  133. 1330 STA TEMP
  134. 1340 JMP READ
  135. 1350 LIST LDA #$08;STANDARD LISTEN, TALK AND DELAY ROUTINES
  136. 1360 JSR LIS
  137. 1370 LDA #$FF
  138. 1380 JSR LISEC
  139. 1390 RTS
  140. 1400 TALK LDA #$08
  141. 1410 JSR TLK
  142. 1420 LDA #$FF
  143. 1430 JSR TLKSEC
  144. 1440 RTS
  145. 1450 DELAY LDA #$00
  146. 1460 STA TIME
  147. 1470 STA TIME+1
  148. 1480 TI INC TIME
  149. 1490 LDA TIME
  150. 1500 CMP #$FF
  151. 1510 BNE TI
  152. 1520 INY
  153. 1530 TI1 INC TIME+1
  154. 1540 LDA TIME+1
  155. 1550 CMP #$FF
  156. 1560 BNE TI1
  157. 1570 CPY #$FF
  158. 1580 BNE TI
  159. 1590 RTS
  160. 1600 INCBUF LDA CH2+1
  161. 1610 CLC
  162. 1620 ADC #$01
  163. 1630 CMP #$00
  164. 1640 BEQ INC1
  165. 1650 STA CH2+1
  166. 1660 RTS
  167. 1670 INC1 STA CH2+1
  168. 1680 LDA CH2+2
  169. 1690 CLC
  170. 1700 ADC #$01
  171. 1701 CMP #$70
  172. 1702 BNE SAFE
  173. 1703 LDA #$01:STA EFLAG
  174. 1710 SAFE STA CH2+2
  175. 1720 RTS
  176. 1730 END CMP #$00;IF FIRST BYTE FROM SECTOR WAS 0 OR > 35 IT'S THE END
  177. 1740 BEQ FLAG;SO SET THE FLAG TO END
  178. 1750 CMP #$23
  179. 1760 BCS FLAG
  180. 1770 RTS
  181. 1780 FLAG LDA #$01;THIS SETS THE FLAG TO A 1
  182. 1790 STA EFLAG
  183. 1800 RTS
  184. 1810 FF JSR LIST;THIS IS WHERE WE PICK UP THE 256TH BYTE OF DATA
  185. 1820 LDY #$00
  186. 1830 FF1 LDA MR1,Y
  187. 1840 JSR OUT
  188. 1850 INY
  189. 1860 CPY #$05
  190. 1870 BNE FF1
  191. 1880 JSR UNLIS
  192. 1890 JSR TALK
  193. 1900 JSR IN
  194. 1910 LDY Y
  195. 1920 STA DATA,Y
  196. 1930 JSR UNTLK
  197. 1940 RTS
  198. 1950 DISP LDY #$00;ROUTINE TO PRINT TRK & SEC DATA TO SCREEN
  199. 1960 LDX #$00
  200. 1970 DIS LDA MES3,Y
  201. 1980 CMP #$00
  202. 1990 BEQ DIS1
  203. 2000 JSR PRINT
  204. 2010 INY
  205. 2020 JMP DIS
  206. 2030 DIS1 LDY #$00
  207. 2040 SET LDA SECS,Y
  208. 2050 CMP #$EE;WHEN #$EE IS REACHED ALL DATA HAS BEEN DISPLAYED
  209. 2060 BEQ SETAD;SO PRINT THE LOAD ADDRESS
  210. 2070 INY
  211. 2080 JMP SET
  212. 2090 SETAD TYA
  213. 3000 SEC
  214. 3010 SBC #$02
  215. 3020 TAY
  216. 3030 LDA ADD+1
  217. 3040 STA SECS,Y
  218. 3050 INY
  219. 3060 LDA ADD
  220. 3070 STA SECS,Y
  221. 3080 INY
  222. 3081 LDA CH2+2
  223. 3082 STA SECS,Y
  224. 3083 INY
  225. 3084 LDA CH2+1
  226. 3085 STA SECS,Y
  227. 3086 LDY #$00
  228. 3090 LDX #$00
  229. 3100 DIS2 LDA #$12
  230. 3110 JSR PRINT
  231. 3120 LDA SECS,Y
  232. 3130 CMP #$EE;THIS TIME THROUGH #$EE INDICATES WE'RE FINISHED
  233. 3140 BEQ DONE
  234. 3150 STA TEMP;ROUTINE TO CHANGE HEX TO ASCII
  235. 3160 AND #$0F
  236. 3170 STA TEMP+1
  237. 3180 LDA TEMP
  238. 3190 AND #$F0
  239. 3200 LSR:LSR:LSR:LSR
  240. 3210 STA TEMP
  241. 3230 LDA TEMP
  242. 3240 CMP #$0A
  243. 3250 BCC LO
  244. 3260 CLC
  245. 3270 ADC #$37
  246. 3280 JSR PRINT
  247. 3290 JMP NEXT
  248. 3300 LO LDA TEMP
  249. 3310 CLC
  250. 3320 ADC #$30
  251. 3330 JSR PRINT
  252. 3340 NEXT LDA TEMP+1
  253. 3350 CMP #$0A
  254. 3360 BCC LO1
  255. 3370 CLC
  256. 3380 ADC #$37
  257. 3390 JSR PRINT
  258. 3400 LDA #$20
  259. 3410 JSR PRINT
  260. 3420 JMP DIS3
  261. 3430 LO1 CLC
  262. 3440 ADC #$30
  263. 3450 JSR PRINT
  264. 3460 LDA #$20
  265. 3470 JSR PRINT
  266. 3480 DIS3 INY
  267. 3490 INX
  268. 3500 CPX #$0C
  269. 3510 BEQ DIS4
  270. 3520 JMP DIS2
  271. 3530 DIS4 LDA #$0D
  272. 3540 JSR PRINT
  273. 3550 LDX #$00
  274. 3560 JMP DIS2
  275. 3570 DONE BRK;FINISHED BRK BRINGS US BACK TO THE M/L MONITOR
  276. 3580 MES1 .BYTE 147
  277. 3590 .BYTE 13 13 18:.BYTE " ENTER TRACK "
  278. 3600 .BYTE 146 32 0
  279. 3610 MES2 .BYTE 13 13 18:.BYTE " ENTER SECTOR "
  280. 3620 .BYTE 146 32 0
  281. 3630 MES3 .BYTE 13 13 18:.BYTE " TRACKS & SECTORS USED "
  282. 3640 .BYTE 13 13 00
  283. 3650 TIME .BYTE 0 0
  284. 3660 TEMP .BYTE 0 0
  285. 3670 BUF .BYTE 0
  286. 3680 MW1 .BYTE 77 45 87 06 00 02
  287. 3690 TRK .BYTE 0
  288. 3700 SEC .BYTE 0
  289. 3710 MW2 .BYTE 77 45 87 00 00 01 128
  290. 3720 MR .BYTE 77 45 82 00 03 255
  291. 3730 MR1 .BYTE 77 45 82 255 03
  292. 3740 CT .BYTE 0
  293. 3750 A .BYTE 0
  294. 3760 X .BYTE 0
  295. 3770 Y .BYTE 0
  296. 3780 ADD .BYTE 0 0
  297. 3790 EFLAG .BYTE 0
  298. 3800 .END TRACE EQ
  299.