home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / DISKROMSOURCE4.SDA / DISK / ROM9 (.txt) < prev   
Encoding:
Commodore BASIC  |  2019-04-13  |  13.7 KB  |  638 lines

  1. 1 STA $53
  2. 3 INY
  3. 5 LDA ($2E),Y
  4. 7 STA $54
  5. 9 INY
  6. 11 LDA ($2E),Y
  7. 13 STA $55
  8. 15 INY
  9. 17 STY $36
  10. 19 JSR $F6D0; CONVERT 4 HEX TO 5 GCR
  11. 21 LDY $36
  12. 23 LDA ($2E),Y
  13. 25 STA $52
  14. 27 INY
  15. 29 BEQ $F7D9
  16. 31 LDA ($2E),Y
  17. 33 STA $53
  18. 35 INY
  19. 37 LDA ($2E),Y
  20. 39 STA $54
  21. 41 INY
  22. 43 LDA ($2E),Y
  23. 45 STA $55
  24. 47 INY
  25. 49 BNE $F7BA
  26. 51 LDA $3A
  27. 53 STA $53
  28. 55 LDA #$00
  29. 57 STA $54
  30. 59 STA $55
  31. 61 JMP $F6D0; CONVERT 4 HEX TO 5 GCR
  32. 63 LDY $34
  33. 65 LDA ($30),Y
  34. 67 AND #$F8
  35. 69 LSR
  36. 71 LSR
  37. 73 LSR
  38. 75 STA $56
  39. 77 LDA ($30),Y
  40. 79 AND #$07
  41. 81 ASL
  42. 83 ASL
  43. 85 STA $57
  44. 87 INY
  45. 89 BNE $F802; DONT CHANGE TO DATA BUFF
  46. 91 LDA $4E
  47. 93 STA $31
  48. 95 LDY $4F
  49. 97 LDA ($30),Y
  50. 99 AND #$C0
  51. 101 ROL
  52. 103 ROL
  53. 105 ROL
  54. 107 ORA $57
  55. 109 STA $57
  56. 111 LDA ($30),Y
  57. 113 AND #$3E
  58. 115 LSR
  59. 117 STA $58
  60. 119 LDA ($30),Y
  61. 121 AND #$01
  62. 123 ASL
  63. 125 ASL
  64. 127 ASL
  65. 129 ASL
  66. 131 STA $59
  67. 133 INY
  68. 135 LDA ($30),Y
  69. 137 AND #$F0
  70. 139 LSR
  71. 141 LSR
  72. 143 LSR
  73. 145 LSR
  74. 147 ORA $59
  75. 149 STA $59
  76. 151 LDA ($30),Y
  77. 153 AND #$F0
  78. 155 ASL
  79. 157 STA $5A
  80. 159 INY
  81. 161 LDA ($30),Y
  82. 163 AND #$80
  83. 165 CLC
  84. 167 ROL
  85. 169 ROL
  86. 171 AND #$01
  87. 173 ORA $5A
  88. 175 STA $5A
  89. 177 LDA ($30),Y
  90. 179 AND #$7C
  91. 181 LSR
  92. 183 LSR
  93. 185 STA $5B
  94. 187 LDA ($30),Y
  95. 189 AND #$03
  96. 191 ASL
  97. 193 ASL
  98. 195 ASL
  99. 197 STA $5C
  100. 199 INY
  101. 201 BNE $F85A
  102. 203 LDA $4E
  103. 205 STA $31
  104. 207 LDY $4F
  105. 209 LDA ($30),Y
  106. 211 AND #$E0
  107. 213 ROL
  108. 215 ROL
  109. 217 ROL
  110. 219 ROL
  111. 221 ORA $5C
  112. 223 STA $5C
  113. 225 LDA ($30),Y
  114. 227 AND #$1F
  115. 229 STA $5D
  116. 231 INY
  117. 233 STY $34
  118. 235 LDX $56
  119. 237 LDA $F8A0,X
  120. 239 LDX $57
  121. 241 ORA $F8C0,X
  122. 243 STA $52
  123. 245 LDX $58
  124. 247 LDA $F8A0,X
  125. 249 LDX $59
  126. 251 ORA $F8C0,X
  127. 253 STA $53
  128. 255 LDX $5A
  129. 257 LDA $F8A0,X
  130. 259 LDX $5B
  131. 261 ORA $F8C0,X
  132. 263 STA $54
  133. 265 LDX $5C
  134. 267 LDA $F8A0,X
  135. 269 LDX $5D
  136. 271 ORA $F8C0,X
  137. 273 STA $55
  138. 275 RTS
  139. 277 ; ** 5 BYTE GCR TO HEX TABLES **
  140. 279 ; $F8A0  5 BIT GCR  BYTE  HIGH NIBBLE
  141. 281 ;     00   00000     FF     11111111
  142. 283 ;     01   00001     FF     11111111
  143. 285 ;     02   00010     FF     11111111
  144. 287 ;     03   00011     FF     11111111
  145. 289 ;     04   00100     FF     11111111
  146. 291 ;     05   00101     FF     11111111
  147. 293 ;     06   00110     FF     11111111
  148. 295 ;     07   00111     FF     11111111
  149. 297 ;     08   01000     FF     11111111
  150. 299 ;     09   01001     80     10000000
  151. 301 ;     0A   01010     00     00000000
  152. 303 ;     0B   01011     10     00010000
  153. 305 ;     0C   01100     FF     11111111
  154. 307 ;     0D   01101     C0     11000000
  155. 309 ;     0E   01110     40     01000000
  156. 311 ;     0F   01111     50     01010000
  157. 313 ;     10   10000     FF     11111111
  158. 315 ;     11   10001     FF     11111111
  159. 317 ;     12   10010     20     00100000
  160. 319 ;     13   10011     30     00110000
  161. 321 ;     14   10100     FF     11111111
  162. 323 ;     15   10101     F0     11110000
  163. 325 ;     16   10110     60     01100000
  164. 327 ;     17   10111     70     01110000
  165. 329 ;     18   11000     FF     11111111
  166. 331 ;     19   11001     90     10010000
  167. 333 ;     1A   11010     A0     10100000
  168. 335 ;     1B   11011     B0     10110000
  169. 337 ;     1C   11100     FF     11111111
  170. 339 ;     1D   11101     D0     11010000
  171. 341 ;     1E   11110     E0     11100000
  172. 343 ;     1F   11111     FF     11111111
  173. 345 ;  $F8C0  5 BIT GCR  BYTE  LOW NIBBLE
  174. 347 ;     00   00000     FF     11111111
  175. 349 ;     01   00001     FF     11111111
  176. 351 ;     02   00010     FF     11111111
  177. 353 ;     03   00011     FF     11111111
  178. 355 ;     04   00100     FF     11111111
  179. 357 ;     05   00101     FF     11111111
  180. 359 ;     06   00110     FF     11111111
  181. 361 ;     07   00111     FF     11111111
  182. 363 ;     08   01000     FF     11111111
  183. 365 ;     09   01001     08     00001000
  184. 367 ;     0A   01010     00     00000000
  185. 369 ;     0B   01011     01     00000001
  186. 371 ;     0C   01100     FF     11111111
  187. 373 ;     0D   01101     0C     00001100
  188. 375 ;     0E   01110     04     00000100
  189. 377 ;     0F   01111     05     00000101
  190. 379 ;     10   10000     FF     11111111
  191. 381 ;     11   10001     FF     11111111
  192. 383 ;     12   10010     02     00000010
  193. 385 ;     13   10011     03     00000011
  194. 387 ;     14   10100     FF     11111111
  195. 389 ;     15   10101     0F     00001111
  196. 391 ;     16   10110     06     00000110
  197. 393 ;     17   10111     07     00000111
  198. 395 ;     18   11000     FF     11111111
  199. 397 ;     19   11001     09     00001001
  200. 399 ;     1A   11010     0A     00001010
  201. 401 ;     1B   11011     0B     00001011
  202. 403 ;     1C   11100     FF     11111111
  203. 405 ;     1D   11101     0D     00001101
  204. 407 ;     1E   11110     0E     00001110
  205. 409 ;     1F   11111     FF     11111111
  206. 411 ; *** #$FF = ERROR ***
  207. 413 *= $F8E0
  208. 415 ; ** DECODE GCR DATA IMAGE ($01BB) **
  209. 417 LDA #$00
  210. 419 STA $34; LO BYTE PTR
  211. 421 STA $2F;  "  "      "
  212. 423 STA $36;  "  "      "
  213. 425 LDA #$01; HI BYTE PTR
  214. 427 STA $4E
  215. 429 LDA #$BA
  216. 431 STA $4F
  217. 433 LDA $31
  218. 435 STA $2F
  219. 437 JSR $F7E6; CONVERT 5 BYTES GCR TO HEX
  220. 439 LDA $52; HEADER BLK ID
  221. 441 STA $38
  222. 443 LDY $36
  223. 445 LDA $53; HEADER BLK CHECKSUM
  224. 447 STA ($2E),Y
  225. 449 INY
  226. 451 LDA $54; SECT NUM
  227. 453 STA ($2E),Y
  228. 455 INY
  229. 457 LDA $55; TRK NUM
  230. 459 STA ($2E),Y
  231. 461 INY
  232. 463 STY $36
  233. 465 JSR $F7E6; CONVERT NEXT 5 BYTES
  234. 467 LDY $36
  235. 469 LDA $52; ID # 2
  236. 471 STA ($2E),Y
  237. 473 INY
  238. 475 BEQ $F92B; CHECK IF OVERFLOW DONE
  239. 477 LDA $53; ID # 1
  240. 479 STA ($2E),Y
  241. 481 INY
  242. 483 LDA $54; PAD BYTE #$0F
  243. 485 STA ($2E),Y
  244. 487 INY
  245. 489 LDA $55; PAD BYTE
  246. 491 STA ($2E),Y
  247. 493 INY
  248. 495 BNE $F90C; GET MORE
  249. 497 LDA $53; HEADER BLK CHECKSUM
  250. 499 STA $3A; CHECKSUM BUFF
  251. 501 LDA $2F; BUFF PTR
  252. 503 STA $31
  253. 505 RTS
  254. 507 ; ** CONVERT HEX HEADER TO GCR FOR WRITE **
  255. 509 LDA $31; BUFF PTR
  256. 511 STA $2F; TEMP STORAGE PTRS
  257. 513 LDA #$00
  258. 515 STA $31; HY BYTE ACTIVE BUFF
  259. 517 LDA #$24
  260. 519 STA $34; LAST BYTE CONVERTED PTR
  261. 521 LDA $39; HEADER BLK ID BUFF
  262. 523 STA $52; GCR CONVERSION BUFF
  263. 525 LDA $1A; HEADER BLK CHECKSUM
  264. 527 STA $53
  265. 529 LDA $19; HEADER SECT NUM
  266. 531 STA $54
  267. 533 LDA $18; HEADER TRK NUM
  268. 535 STA $55
  269. 537 JSR $F6D0; CONVERT HEADER TO GCR
  270. 539 LDA $17; HEADER ID # 2
  271. 541 STA $52
  272. 543 LDA $16; HEADER ID # 1
  273. 545 STA $53
  274. 547 LDA #$00; PAD BYTE CONVERTED TO #$0F
  275. 549 STA $54
  276. 551 STA $55
  277. 553 JSR $F6D0
  278. 555 LDA $2F; RESTORE BUFFS
  279. 557 STA $31
  280. 559 RTS
  281. 561 ; ** DSK CONTROLLER ERROR HANDLER **
  282. 563 LDY $3F; ERROR CODE BUFF
  283. 565 STA $0000,Y; CMND BUFF
  284. 567 LDA $50; GCR FLAG (MORE TO DO)
  285. 569 BEQ $F975; NO GCR
  286. 571 JSR $F5F2; CONVERT GCR TO HEX
  287. 573 JSR $F98F; START TIMER OUT TURN OFF MOTOR
  288. 575 LDX $49; TEMP FOR STACK PTR
  289. 577 TXS; RESET THE STACK
  290. 579 JMP $F2BE; LOOK FOR CMNDS @ $00,Y
  291. 581 ; ** TURN DSK MOTOR ON **
  292. 583 LDA #$A0; DRV ON NOT UP TO SPEED
  293. 585 STA $20; DRV STATUS BUFF
  294. 587 LDA $1C00; DSK CONTROLLER
  295. 589 ORA #$04; 00000100
  296. 591 STA $1C00; MOTOT ON
  297. 593 LDA #$3C; 1 1/2 SECONDS
  298. 595 STA $48; TIMER FOR MOTOR SPEED
  299. 597 RTS
  300. 599 ; ** TURN DSK MOTOR OFF **
  301. 601 LDX $3E; DRV NUM ALWAYS 0
  302. 603 LDA $20; DSK STATUS BUFF
  303. 605 ORA #$10; 00010000
  304. 607 STA $20; MOTOR OFF
  305. 609 LDA #$FF; 6.4 SECONDS
  306. 611 STA $48; TIMER FOR MOTOR SPEED
  307. 613 RTS
  308. 615 ; ** DRV MOTOR & HEAD STEPPER ROUTS **
  309. 617 LDA $1C07; TIMER # 1 HIGH LATCH
  310. 619 STA $1C05; TIMER # 1 HIGH COUNT
  311. 621 LDA $1C00; DSK CONTROLLER
  312. 623 AND #$10
  313. 625 CMP $1E; LAST STATE WRITE PROTECT
  314. 627 STA $1E
  315. 629 BEQ $F9B1; WRITE PROTECT SAME
  316. 631 LDA #$01; CHANGE IN WRITE PROTECT
  317. 633 STA $1C; WRITE PROTECT STATUS FLAG
  318. 635 LDA $02FE; PHASE HEAD STEPPER
  319. 637 BEQ $F9CB; 0 OR 2 IN PHASE 1 = OUT (IN BETWEEN TRKS 1/2 TRK)
  320. 639 CMP #$02
  321. 641 BNE $F9C1; MOVE HEAD 1/2 TRK
  322. 643 LDA #$00
  323. 645 STA $02FE:BEQ $F9CB;FORCED BRANCH
  324. 647 STA $4A:LDA #$02:STA $02FE:JMP $FA2E; STEP HEAD IN
  325. 649 LDX $3E; ACTIVE DRV ALWAYS 0
  326. 651 BMI $F9D6; BRANCH IF DRV NOT ACTIVE
  327. 653 LDA $20; DRV STATUS BUFF
  328. 655 TAY
  329. 657 CMP #$20:BNE $F9D9
  330. 659 JMP $FABE; END OF IRQ
  331. 661 DEC $48; ACCELERATION TIMER
  332. 663 BNE $F9FA; DRV NOT UP TO SPEED
  333. 665 TYA; HOLDS DRV STATUS BUFF
  334. 667 BPL $F9E4; BIT 7 0 DRV UP TO SPEED
  335. 669 AND #$7F
  336. 671 STA $20
  337. 673 AND #$10; TEST TIMER OUT
  338. 675 BEQ $F9FA; OUT OF TIME TURN OFF MOTOR
  339. 677 LDA $1C00; DSK CONTROLLER
  340. 679 AND #$FB; CLEAR BIT 2 MOTOR OFF
  341. 681 STA $1C00
  342. 683 LDA #$FF; CODE NO ACTIVE DRV
  343. 685 STA $3E; ACTIVE DRV BUFF
  344. 687 LDA #$00; CLEAR ALL BITS
  345. 689 STA $20; DRV STATUS BUFF
  346. 691 BEQ $F9D6; FORCED BRANCH
  347. 693 TYA; HOLDS DRV STATUS
  348. 695 AND #$40; CHECK IF HEAD NEEDS TO MOVE
  349. 697 BNE $FA02; NO STEPPING NEEDED
  350. 699 JMP $FABE; END IRQ ROUT
  351. 701 JMP ($0062); HEAD STEPPING ROUTS
  352. 703 ; ** SET UP TO STEP (MOVE) HEAD **
  353. 705 LDA $4A; # OF STEPS TO MOVE HEAD
  354. 707 BPL $FA0E; NOT A NEGATIVE VALUE
  355. 709 ; NEG VALUE FIND ABSOLUTE VALUE
  356. 711 EOR #$FF; FLIP ALL BITS (COMPLEMENT)
  357. 713 CLC
  358. 715 ADC #$01
  359. 717 CMP $64; MIN # OF STEPS (FAST STEP)
  360. 719 BCS $FA1C; DISTANCE BIG ENOUGH FAST STEP
  361. 721 LDA #$3B; SHORT DISTANCE
  362. 723 STA $62; SET PTRS TO SHORT MODE
  363. 725 LDA #$FA; NOW POINTS TO $FA3B
  364. 727 STA $63
  365. 729 BNE $FA2E; FORCED BRANCH
  366. 731 SBC $5E; # OF STEPS TO MOVE HEAD
  367. 733 SBC $5E; FAST STEPPING MODE
  368. 735 STA $61; # OF STEPS LEFT TO MOVE HEAD
  369. 737 LDA $5E
  370. 739 STA $60
  371. 741 LDA #$7B; SET PTR TO $FA7B
  372. 743 STA $62
  373. 745 LDA #$FB
  374. 747 STA $63
  375. 749 LDA $4A; # OF STEPS TO MOVE HEAD
  376. 751 BPL $FA63; MOVE HEAD IN
  377. 753 INC $4A
  378. 755 LDX $1C00; DSK CONTROLLER
  379. 757 DEX; CYCLES BIT 0 TO MOVE HEAD
  380. 759 JMP $FA69; STEP HEAD
  381. 761 ; ** SHORT DISTANCE HEAD STEPPING **
  382. 763 LDA $4A; # OF STEPS TO MOVE HEAD
  383. 765 BNE $FA2E; MORE STEPS TO MOVE
  384. 767 LDA #$4E; SET PTRS TO $FA4E
  385. 769 STA $62; TO CLEAR TIMER
  386. 771 LDA #$FA
  387. 773 STA $63
  388. 775 LDA #$05
  389. 777 STA $60; # OF STEPS TO ACEL/DECELERATE
  390. 779 JMP $FABE; END IRQ ROUT
  391. 781 ; ** STOP HEAD ROUT **
  392. 783 DEC $60
  393. 785 BNE $FABE; END IRQ ROUT
  394. 787 LDA $20; DRV STATUS BUFF
  395. 789 AND #$BF; DRV AVAILABLE
  396. 791 STA $20
  397. 793 LDA #$05; SET PTR TO $FA05
  398. 795 STA $62; HEAD INACTIVE ROUT
  399. 797 LDA #$FA
  400. 799 STA $63
  401. 801 JMP $FABE; END IRQ ROUT
  402. 803 ; ** REDUCE STEPS BY ONE **
  403. 805 DEC $4A; # OF STEPS TO MOVE HEAD
  404. 807 LDX $1C00; DSK CONTROLLER
  405. 809 INX; CYCLE BITS 0 & 1
  406. 811 TXA
  407. 813 AND #$03
  408. 815 STA $4B; TEMP STORAGE
  409. 817 LDA $1C00
  410. 819 AND #$FC; MASK BITS 0 & 1
  411. 821 ORA $4B
  412. 823 STA $1C00; BITS NOW CYCLED
  413. 825 JMP $FABE; END IRQ ROUT
  414. 827 ; ** ACCELERATE HEAD **
  415. 829 SEC
  416. 831 LDA $1C07; TIMER 1 HIGH LATCH
  417. 833 SBC $5F; #$04 ACCELERATION FACTOR
  418. 835 STA $1C05; TIMER 1 HIGH CTR
  419. 837 DEC $60;# STEPS ACCELERATE
  420. 839 BNE $FA94; STEP HEAD
  421. 841 LDA $5E; SAME AS $5F
  422. 843 STA $60
  423. 845 LDA #$97; SET PTR FAST STEP
  424. 847 STA $62
  425. 849 LDA #$FA
  426. 851 STA $63
  427. 853 JMP $FA2E; STEP HEAD
  428. 855 ; ** FAST STEP ROUT **
  429. 857 DEC $61; # OF STEPS TO MOVE HEAD
  430. 859 BNE $FA94; STEP HEAD
  431. 861 LDA #$A5; PTR $FAA5 DECELERATE
  432. 863 STA $62
  433. 865 LDA #$FA
  434. 867 STA $63
  435. 869 BNE $FA94; STEP HEAD
  436. 871 ; ** DECELERATE HEAD **
  437. 873 LDA $1C07; TIMER 1 HIGH LATCH
  438. 875 CLC
  439. 877 ADC $5F; #$04 DELERATION FACTOR
  440. 879 STA $1C05; TIMER 1 HIGH COUNT
  441. 881 DEC $60; # STEPS DECELERATE
  442. 883 BNE $FA94; STEP HEAD
  443. 885 LDA #$4E; SET PTR $FA4E
  444. 887 STA $62; DEC # OF DECEL STEPS
  445. 889 LDA #$FA
  446. 891 STA $63
  447. 893 LDA #$05
  448. 895 STA $60
  449. 897 LDA $1C0C; PERIPHIAL CONT REG
  450. 899 AND #$FD; FORCE SER OUT LINE LOW
  451. 901 STA $1C0C
  452. 903 RTS; RETURN MAIN IRQ
  453. 905 ; ** FORMAT (NEW A DSK) **
  454. 907 LDA $51; TRK BEING FORMATTED
  455. 909 BPL $FAF5; ALREADY FORMATTING
  456. 911 LDX $3D; DRV NUM ALWAYS 0
  457. 913 LDA #$60; HEAD STEPPING
  458. 915 STA $20; DRV STATUS
  459. 917 LDA #$01
  460. 919 STA $22,X; TRK UNDER HEAD
  461. 921 STA $51
  462. 923 LDA #$A4; BUMP HEAD TRK 1
  463. 925 STA $4A; STEPS TO DESIRED TRK
  464. 927 LDA $1C00; DSK CONTROLLER
  465. 929 AND #$FC; CYCLE BITS 0 & 1
  466. 931 STA $1C00; TO MOVE HEAD
  467. 933 LDA #$0A; # OF ERRORS ALLOWED
  468. 935 STA $0620
  469. 937 LDA #$A0; SET # BYTES 1/2 A TRK
  470. 939 STA $0621; TO #4000
  471. 941 LDA #$0F
  472. 943 STA $0622
  473. 945 JMP $F99C; TERM ROUT
  474. 947 LDY #$00
  475. 949 CMP ($32),Y; A HOLDS TRK NUM
  476. 951 BEQ $FB00; CORRECT TRK
  477. 953 STA ($32),Y; TRK LOOKING FOR
  478. 955 JMP $F99C; TERM ROUT
  479. 957 LDA $1C00; DSK CONTROLLER
  480. 959 AND #$10; CHECK WRITE PROTECT
  481. 961 BNE $FB0C; PROTECT NOT ON
  482. 963 LDA #$08; WRITE PROTECT ERROR
  483. 965 JMP $FDD3; ERROR HANDLING
  484. 967 JSR $FDA3; ERASE TRK WITH SYNC MARKS
  485. 969 JSR $FDC3; WRITE 4000 SYNCS TO DSK
  486. 971 LDA #$55; NON SYN CHARACHTER
  487. 973 STA $1C01; BUFF READ/WRITE TO DSK
  488. 975 JSR $FDC3; WRITE TO DSK
  489. 977 JSR $FEE0; TURN OFF WRITE MODE
  490. 979 JSR $F556; WAIT FOR SYNC
  491. 981 LDA #$40; FREE RUNNING 100 MICOSEC TIMER
  492. 983 ORA $180B; INTERN AUX CONTROL REG
  493. 985 STA $180B
  494. 987 LDA #$62; TIMER COUNT
  495. 989 STA $1806; INTERN TIMER 1 LOW LATCH
  496. 991 LDA #$00
  497. 993 STA $1807; TIMER 1 HIGH LATCH
  498. 995 STA $1805; TIMER 1 HIGH COUNT
  499. 997 LDY #$00
  500. 999 LDX #$00
  501. 1001 BIT $1C00; DSK CONTROLLER
  502. 1003 BMI $FB39; SYNC MARK WANT NO SYNC
  503. 1005 BIT $1C00
  504. 1007 BPL $FB3E; FOUND NO SYNC
  505. 1009 LDA $1804; TIMER 1 LOW COUNT
  506. 1011 BIT $1C00; TIME NON SYNC AREA
  507. 1013 BPL $FB5C; FOUND SYNC BRANCH
  508. 1015 LDA $180D; INTERRUPT FLAG REG
  509. 1017 ASL; PUSH BIT 6
  510. 1019 BPL $FB46; TIME NOT UP
  511. 1021 INX
  512. 1023 BNE $FB43; RESET INTERRUPT FLAGS
  513. 1025 INY
  514. 1027 BNE $FB43
  515. 1029 LDA #$02; NO SYNC FOUND
  516. 1031 JMP $FDD3; ERROR HANDLING
  517. 1033 STX $71; TEMP WORK STORE NON SYNC
  518. 1035 STY $72; & BEGINNING TIMES
  519. 1037 LDX #$00
  520. 1039 LDY #$00
  521. 1041 LDA $1804; TIMER 1 LOW COUNT
  522. 1043 BIT $1C00; DSK CONTROLLER
  523. 1045 BMI $FB7D; NO SYNC
  524. 1047 LDA $180D; INTERRUPT FLAG REG
  525. 1049 ASL; PUSH BIT 6
  526. 1051 BPL $FB67; TIME NOT UP
  527. 1053 INX
  528. 1055 BNE $FB64; RESET INTERRUPT FLAGS
  529. 1057 INY
  530. 1059 BNE $FB64
  531. 1061 LDA #$02; NO SYNC FOUND
  532. 1063 JMP $FDD3; ERROR HANDLING
  533. 1065 SEC; CALCULATE DIFFERENCE BETWEEN
  534. 1067 TXA; SYNC & NON SYNC TIMES
  535. 1069 SBC $71
  536. 1071 TAX
  537. 1073 STA $70
  538. 1075 TYA
  539. 1077 SBC $72
  540. 1079 TAY
  541. 1081 STA $71
  542. 1083 BPL $FB97
  543. 1085 EOR #$FF; FLIP ALL BITS
  544. 1087 TAY
  545. 1089 TXA
  546. 1091 EOR #$FF
  547. 1093 TAX
  548. 1095 INX
  549. 1097 BNE $FB97
  550. 1099 INY
  551. 1101 TYA
  552. 1103 BNE $FB9E
  553. 1105 CPX #$04
  554. 1107 BCC $FBB6; COUNT SYNC CHARACHTERS
  555. 1109 ASL $70
  556. 1111 ROL $71; MAKE AVERAGE 2 TIMES LARGER
  557. 1113 CLC
  558. 1115 LDA $70
  559. 1117 ADC $0621
  560. 1119 STA $0621
  561. 1121 LDA $71
  562. 1123 ADC $0622
  563. 1125 STA $0622
  564. 1127 JMP $FB0C; TRY AGAIN
  565. 1129 LDX #$00
  566. 1131 LDY #$00
  567. 1133 CLV:LDA $1C00; WAIT FOR SYNC MARK
  568. 1135 BPL $FBCE; FOUND SYNC
  569. 1137 BVC $FBBB; NO SYNC
  570. 1139 CLV
  571. 1141 INX; HOLDS # SYNCS
  572. 1143 BNE $FBBB; COUNT MORE SYNCS
  573. 1145 INY; HOLDS SYNC COUNT
  574. 1147 BNE $FBBB
  575. 1149 LDA #$03; COUNT = 65535 TIMES
  576. 1151 JMP $FDD3; ERROR HANDLING
  577. 1153 TXA; BYTE COUNT
  578. 1155 ASL
  579. 1157 STA $0625
  580. 1159 TYA
  581. 1161 ROL
  582. 1163 STA $0624
  583. 1165 LDA #$BF
  584. 1167 AND $180B; AUX CONTROL REG
  585. 1169 STA $180B; TURN OFF TIMER
  586. 1171 LDA #$66
  587. 1173 STA $0626
  588. 1175 LDX $43; SECT CTR
  589. 1177 LDY #$00
  590. 1179 TYA
  591. 1181 CLC
  592. 1183 ADC $0626
  593. 1185 BCC $FBF1
  594. 1187 INY
  595. 1189 INY
  596. 1191 DEX
  597. 1193 BNE $FBEA
  598. 1195 EOR #$FF
  599. 1197 SEC
  600. 1199 ADC #$00
  601. 1201 CLC
  602. 1203 ADC $0625
  603. 1205 BCS $FC03
  604. 1207 DEC $0624
  605. 1209 TAX
  606. 1211 TYA
  607. 1213 EOR #$FF
  608. 1215 SEC
  609. 1217 ADC #$00
  610. 1219 CLC
  611. 1221 ADC $0624
  612. 1223 BPL $FC15
  613. 1225 LDA #$04:JMP $FDD3; ERROR HANDLING
  614. 1227 TAY
  615. 1229 TAY:TXA
  616. 1231 LDX #$00
  617. 1233 SEC
  618. 1235 SBC $43; SECT CTR
  619. 1237 BCS $FC21
  620. 1239 DEY
  621. 1241 BMI $FC24
  622. 1243 INX
  623. 1245 BNE $FC19
  624. 1247 STX $0626
  625. 1249 CPX #$04
  626. 1251 BCS $FC30; SECT GAP OK
  627. 1253 LDA #$05; FORMAT ERROR
  628. 1255 JMP $FDD3; ERROR HANDLING
  629. 1257 ADC $43
  630. 1259 STA $0627
  631. 1261 LDA #$00
  632. 1263 STA $0628; SECT CTR
  633. 1265 LDY #$00
  634. 1267 LDX $3D; DRV NUM
  635. 1269 LDA $39; #$08 HEADER ID
  636. 1271 STA $0300,Y; HOLDS SEC HEADER IMAGES
  637. 1273 .FILE DISK ROM 10
  638.