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

  1. 1 LDA #$00; HEAD NOT ON TRK ZERO OFFSET
  2. 3 STA $0299; RECOVERY PTR
  3. 5 STA $029A; TOTAL TRK OFFSET
  4. 7 LDY $0299
  5. 9 LDA $029A
  6. 11 SEC
  7. 13 SBC $FEDB,Y; #$01
  8. 15 STA $029A
  9. 17 LDA $FEDB,Y
  10. 19 JSR $D676; MOVE HEAD
  11. 21 INC $0299
  12. 23 JSR $D6A6; ATTEMPT RECOVERY
  13. 25 CMP #$02; ERROR CODE
  14. 27 BCC $D625; RECOVERED
  15. 29 LDY $0299
  16. 31 LDA $FEDB,Y
  17. 33 BNE $D600; TRY ANOTHER RECOVERY
  18. 35 LDA $029A
  19. 37 JSR $D676; TRY ANOTHER OFFSET
  20. 39 LDA $00,X; CMND BUFF
  21. 41 CMP #$02; ERROR CODE
  22. 43 BCC $D65C; NO ERROR BRANCH
  23. 45 BIT $6A; CHECK BIT 7
  24. 47 BPL $D644; BIT CLEAR BUMP HEAD TRK 1
  25. 49 PLA; ORIGINAL CMND
  26. 51 CMP #$90; WRITE
  27. 53 BNE $D63F; NO WRITE BRANCH
  28. 55 ORA $7F; TRK NUM BUFF
  29. 57 STA $025B,X; LAST CMND BUFF
  30. 59 LDA $00,X; HOLDS ERROR CODE
  31. 61 JSR $E60A; ERROR HANDLING
  32. 63 PLA; ORIGINAL CMND
  33. 65 BIT $0298; CHECK BIT 7
  34. 67 BMI $D66D; BIT 7 SET ERROR BRANCH
  35. 69 PHA
  36. 71 LDA #$C0; CODE FOR BUMP TRK 1
  37. 73 ORA $7F; TRK NUM BUFF
  38. 75 STA $00,X; CMND BUFF
  39. 77 LDA $00,X
  40. 79 BMI $D651; CMND STILL WORKING BRANCH
  41. 81 JSR $D6A6; TRY AGAIN BRANCH
  42. 83 CMP #$02; ERROR CODE
  43. 85 BCS $D635; ERROR BRANCH QUIT
  44. 87 PLA
  45. 89 CMP #$90; WRITE
  46. 91 BNE $D66D; NO WRITE BRANCH
  47. 93 ORA $7F; DRV NUM BUFF
  48. 95 STA $025B,X; LAST CMND BUFF
  49. 97 JSR $D6A6; TRY AGAIN
  50. 99 CMP #$02; ERROR CODE
  51. 101 BCS $D63F; STILL ERROR QUIT
  52. 103 PLA
  53. 105 STA $7F
  54. 107 PLA
  55. 109 TAY
  56. 111 LDA $00,X; ERROR CODE
  57. 113 CLC
  58. 115 RTS
  59. 117 ; ** ADJUST HEAD OFFSET (MOVE HEAD) **
  60. 119 CMP #$00
  61. 121 BEQ $D692; NO OFFSET NEEDED
  62. 123 BMI $D688; STEP HEAD IN BRANCH
  63. 125 ; IF HERE STEP HEAD OUT
  64. 127 LDY #$01; HOLDS 1 TRK OUT
  65. 129 JSR $D693; MOVE HEAD OUT LOWER TRKS
  66. 131 SEC
  67. 133 SBC #$01
  68. 135 BNE $D67C; NOT FINISHED BRANCH
  69. 137 BEQ $D692; FINISHED BRANCH
  70. 139 ; IF HERE MOVE HEAD IN
  71. 141 LDY #$FF
  72. 143 JSR $D693; MOVE HEAD IN HIGHER TRKS
  73. 145 CLC
  74. 147 ADC #$01
  75. 149 BNE $D688; NOT FINISHED
  76. 151 RTS
  77. 153 ; ** STEP HEAD IN OR OUT **
  78. 155 PHA
  79. 157 TYA; NUM OF STEPS TO MOVE
  80. 159 LDY $7F; DRV NUM BUFF
  81. 161 STA $02FE,Y; PHASE OF STEPPER MOTOR (IN OUT)
  82. 163 CMP $02FE,Y
  83. 165 BEQ $D69A; HEAD NOT MOVED BRANCH
  84. 167 LDA #$00
  85. 169 STA $02FE,Y; KEEP HEAD IN PLACE
  86. 171 PLA
  87. 173 RTS
  88. 175 LDA $6A; RETRY CTR
  89. 177 AND #$3F; MASK HI BITS
  90. 179 TAY
  91. 181 LDA $026D; ERROR LED MASK (FLASH)
  92. 183 EOR $1C00; DISK CONTROLLER
  93. 185 STA $1C00; TURN OFF LED
  94. 187 LDA $025B,X; LAST CMND BUFF
  95. 189 STA $00,X; CMND BUFF
  96. 191 LDA $00,X
  97. 193 BMI $D6B9; CMND NOT FINISHED BRANCH
  98. 195 CMP #$02; ERROR CODE
  99. 197 BCC $D6C4; NO ERROR BRANCH
  100. 199 DEY; ERROR CTR
  101. 201 BNE $D6AB; MORE TRYS BRANCH
  102. 203 PHA; HOLDS ERROR CODE
  103. 205 LDA $026D
  104. 207 ORA $1C00
  105. 209 STA $1C00; TURN DRV LED ON
  106. 225 PLA; ERROR CODE
  107. 227 RTS
  108. 229 ; ** SET HEADER FOR ACTIVE BUFF **
  109. 231 JSR $DF93; GET ACTIVE BUFF NUM
  110. 233 ASL
  111. 235 TAY
  112. 237 LDA $80; TRK NUM BUFF
  113. 239 STA $0006,Y; TRK FOR CMND
  114. 241 LDA $81; SECT NUM BUFF
  115. 243 STA $0007,Y; SECT FOR CMND
  116. 245 LDA $7F; DRV NUM BUFF
  117. 247 ASL
  118. 249 TAX
  119. 251 RTS
  120. 253 LDA $83; SEC ADDR BUFF
  121. 255 PHA
  122. 257 LDA $82; INDEX CURRENT CHNL
  123. 259 PHA
  124. 261 LDA $81; SECT NUM BUFF
  125. 263 PHA
  126. 265 LDA $80; TRK NUM BUFF
  127. 267 PHA
  128. 269 LDA #$11; SEC ADD (INTERNAL READ)
  129. 271 STA $83
  130. 273 JSR $DE3B; FIND READ CHNL
  131. 275 LDA $024A; FILE TYPE BUFF
  132. 277 PHA
  133. 279 LDA $E2; DEFAULT FLAG
  134. 281 AND #$01
  135. 283 STA $7F
  136. 285 LDX $F9; CMND CODE BUFF
  137. 287 EOR $025B,X; LAST CMND BUFF
  138. 289 LSR
  139. 291 BCC $D715; DONT CHANGE DRV BRANCH
  140. 293 LDX #$01; CODE SEARCHING DELETED FILE
  141. 295 STX $0292; INDEX 1ST AVAIL ENTRY
  142. 297 JSR $C5AC; SEARCH DIRECTORY
  143. 299 BEQ $D730; NO ROOM THIS SECT BRANCH
  144. 301 BNE $D73D; FND SPACE FOR NEW ENTRY
  145. 303 LDA $0291; SECT 1ST AVAIL ENTRY
  146. 305 BEQ $D726; DIDN'T LOACATE DELETED FILE
  147. 307 CMP $81; SECT NUM BUFF
  148. 309 BEQ $D73D; RIGHT SECT IN MEMORY
  149. 311 STA $81
  150. 313 JSR $D460; READ SECT
  151. 315 JMP $D73D
  152. 317 LDA #$01; CODE LOOK FOR DELETED FILE
  153. 319 STA $0292
  154. 321 JSR $C617; FIND DELETED OR EMPTY DIRECTORY
  155. 323 BNE $D73D; FND DELETED OR EMPTY
  156. 325 JSR $D48D; READ NEW SECT
  157. 327 LDA $81
  158. 329 STA $0291
  159. 331 LDA #$02
  160. 333 STA $0292
  161. 335 LDA $0292; INDEX 1ST AVAIL ENTRY
  162. 337 JSR $D4C8; SET PTRS
  163. 339 PLA
  164. 341 STA $024A; FILE TYPE BUFF
  165. 343 CMP #$04; CODE RELATIVE FILE
  166. 345 BNE $D74D; NOT RELATIVE
  167. 347 ORA #$80; SET BIT 7
  168. 349 JSR $CFF1; STORE FILE TYPE IN BUFF
  169. 351 PLA
  170. 353 STA $0280; TRK LINK BUFF
  171. 355 JSR $CFF1
  172. 357 PLA
  173. 359 STA $0285; SECT LINK BUFF
  174. 361 JSR $CFF1
  175. 363 JSR $DF93; GET ACTIVE BUFF NUM
  176. 365 TAY
  177. 367 LDA $027A; FILENM PTR TABLE
  178. 369 TAX
  179. 371 LDA #$10; MAX LENGTH FILENM
  180. 373 JSR $C66E; PUT FILENM IN BUFF
  181. 375 LDY #$10; FILL DIRECTORY ENTRY 0'S
  182. 377 LDA #$00
  183. 379 STA ($94),Y
  184. 381 INY
  185. 383 CPY #$1B
  186. 385 BCC $D76F; MORE FILL BRANCH
  187. 387 LDA $024A; FILE TYPE BUFF
  188. 389 CMP #$04
  189. 391 BNE $D790; NOT RELATIVE FILE BRANCH
  190. 393 LDY #$10
  191. 395 LDA $0259; SIDE SECT TRK NUM
  192. 397 STA $($94),Y; DIRECTORY BUFF PTR
  193. 399 INY
  194. 401 LDA $025A; SIDE SECT SECT NUM
  195. 403 STA $($94),Y
  196. 405 INY
  197. 407 LDA $0258; RECORD SIZE
  198. 409 STA $($94),Y
  199. 411 JSR $D464; WRITE DIRECTORY SECT
  200. 413 PLA
  201. 415 STA $82; INDEX CURRENT CHNL
  202. 417 TAX
  203. 419 PLA
  204. 421 STA $83; SEC ADDR BUFF
  205. 423 LDA $0291; SECT 1ST AVAIL ENTRY
  206. 425 STA $D8; SECT DIRECTORY ENTRY
  207. 427 STA $0260,X; SECT DIRECTORY ENTRY BUFF
  208. 429 LDA $0292; INDEX 1ST AVAIL ENTRY
  209. 431 STA $DD; INDEX OF DIRECTORY ENTRIES
  210. 433 STA $0266,X; INDEX DIREC ENTRY BUFF
  211. 435 LDA $024A; FILE TYPE
  212. 437 STA $E7; PATTERN FLAG
  213. 439 LDA $7F; DRV NUM BUFF
  214. 441 STA $E2; DEFAULT FLAG
  215. 443 RTS
  216. 445 ; ** OPEN CHNL FROM SERIAL BUS **
  217. 447 ; OPEN LOAD & SAVE CMNDS
  218. 449 LDA $83; SEC ADDR BUFF
  219. 451 STA $024C; TEMP STORAGE SEC ADD
  220. 453 JSR $C2B3; SET CMND PTRS
  221. 455 STX $022A; CMND CODE NUM
  222. 457 LDX $0200; CMND BUFF
  223. 459 LDA $024C
  224. 461 BNE $D7F3; NOT LOAD BRANCH
  225. 463 CPX #$2A; CODE FOR "*"
  226. 465 BNE $D7F3; LOAD LAST PROGRAM REFERENCE
  227. 467 LDA $7E; LAST PROGRAM BUFF
  228. 469 BEQ $D81C;NO LAST PROGRAM
  229. 471 STA $80; TRK NUM BUFF
  230. 473 LDA $026E; LAST PROGRAM DRV #
  231. 475 STA $7F; DRV NUM BUFF
  232. 477 STA $E2; DEFAULT FLAG
  233. 479 LDA #$02; CODE FOR PROGRAM
  234. 481 STA $E7; PATTERN FLAG
  235. 483 LDA $026F; LAST PROGRAM SECT
  236. 485 STA $81; SECT NUM BUFF
  237. 487 JSR $C100; TURN ON DRV LED
  238. 489 JSR $DC46; OPEN READ CHNL
  239. 491 LDA #$04; PROGRAM TYPE X 2
  240. 493 ORA $7F
  241. 495 LDX $82; INDEX CURRENT CHNL
  242. 497 STA $00EC,Y; CHNL FILE TYPE BUFF
  243. 499 JMP $C194; TERMINATE ROUTINE
  244. 501 CPX #$24; CODE FOR "$"
  245. 503 BNE $D815; NOT DIRECTORY LOAD
  246. 505 LDA $024C; TEMP SEC ADDR
  247. 507 BNE $D7FF; OPEN SEQUENTIAL FILE BRANCH
  248. 509 JMP $DA55; LOAD DIRECTORY
  249. 511 ; ** OPEN DIRECTORY SEQUENTIAL **
  250. 513 JSR $C1D1; PARSE CMND
  251. 515 LDA $FE85; #$12 DIRECTORY TRK LINK
  252. 517 STA $80; TRK NUM BUFF
  253. 519 LDA #$00
  254. 521 STA $81; SECT BUFF
  255. 523 JSR $DC46; OPEN READ CHNL
  256. 525 LDA $7F; DRV NUM BUFF
  257. 527 ORA #$02; CODE SEQUENTIAL FILE
  258. 529 JMP $D7EB; TERMINATE ROUTINE
  259. 531 CPX #$23; CODE FOR "#"
  260. 533 BNE $D82B; NOT DIRECT ACCESS BRANCH
  261. 535 JMP $CB884; OPEN DIRECT ACCESS BUFF
  262. 537 LDA #$02; CODE PROGRAM FILE
  263. 539 STA $0296; MATCH TYPE FLAG
  264. 541 LDA #$00
  265. 543 STA $7F; DRV NUM BUFF
  266. 545 STA $028E; LAST DRV W/O ERROR BUFF
  267. 547 JSR $D042; INITIALIZE DRV 0
  268. 549 JSR $C1E5; PARSE CMND FOR ":"
  269. 551 BNE $D834; NOT ":" BRANCH
  270. 553 LDX #$00
  271. 555 BEQ $D840; FORCED BRANCH
  272. 557 TXA
  273. 559 BEQ $D83C
  274. 561 LDA #$30; CODE BAD SYNTAX
  275. 563 JMP $C1C8; ERROR HANDLING
  276. 565 DEY; POINTS TO ":"
  277. 567 BEQ $D840; ":" IS FIRST CHAR
  278. 569 DEY; POINT BYTE BEFORE ":"
  279. 571 STY $027A; FILENM PTR TABLE
  280. 573 LDA #$8D; CODE SHIFTED RETURN
  281. 575 JSR $C268; PARSE REST OF CMND
  282. 577 INX; FILE CTR
  283. 579 STX $0278; FILENM # 2 CTR
  284. 581 JSR $C312; SET UP DRV & PTRS
  285. 583 JSR $C3CA; OPTIMAL SEARCH PATTERN
  286. 585 JSR $C49D; SEARCH DIRECTORY FOR FILE
  287. 587 LDX #$00
  288. 589 STX $0258; RECORD SIZE
  289. 591 STX $0297; ACTIVE FILE MODE (R/W)
  290. 593 STX $024A; FILE TYPE
  291. 595 INX
  292. 597 CPX $0277; FILENM # 1 CTR
  293. 599 BCS $D876; NO WILD CARD BRANCH
  294. 601 JSR $DA09; SET FILE TYPE & MODE
  295. 603 INX
  296. 605 CPX $0277
  297. 607 BCS $D876; NO WILD CARD BRANCH
  298. 609 CPY #$04
  299. 611 BEQ $D8B1; RELATIVE FILE BRANCH
  300. 613 JSR $DA09
  301. 615 LDX $024C; TEMP SEC ADD
  302. 617 STX $83; SEC ADDR BUFF
  303. 619 CPX #$02
  304. 621 BCS $D891; NOT LOAD OR SAVE BRANCH
  305. 623 STX $0297; ACTIVE FILE MODE (R/W)
  306. 625 LDA #$40; BAM DIRTY CODE
  307. 627 STA $02F9; DONT WRITE BAM FLAG
  308. 629 LDA $024A; FILE TYPE
  309. 631 BNE $D8A7; NOT DELETED FILE
  310. 633 LDA #$02; PROGRAM FILE CODE
  311. 635 STA $024A
  312. 637 LDA $024A
  313. 639 BNE $D8A7; SCRATCHED FILE TYPE
  314. 641 LDA $E7; PATTERN FLAG
  315. 643 AND #$07; FILE TYPE MASK
  316. 645 STA $024A
  317. 647 LDA $0280; TRK FILE LINK
  318. 649 BNE $D8A7; FILE EXISTS BRANCH
  319. 651 LDA #$01; CODE SEQUENTIAL FILE
  320. 653 STA $024A; FILE TYPE BUFF
  321. 655 LDA $0297; ACTIVE FILE MODE (R/W)
  322. 657 CMP #$01; CODE WRITE MODE
  323. 659 BEQ $D8C6
  324. 661 JMP $D940; OPEN TO READ OR LOAD
  325. 663 ; ** RELATIVE FILES **
  326. 665 LDA $027A,X; FILENM PTR TABLE
  327. 667 LDA $0200,Y; CMND BUFF
  328. 669 STA $0258; RECORD LENGTH
  329. 671 LDA $0280; TRK FILE LINK
  330. 673 BNE $D876; FILE PRESENT BRANCH
  331. 675 LDA #$01; CODE FOR WRITE MODE
  332. 677 STA $0297; ACTIVE FILE MODE (R/W)
  333. 679 BNE $D876; FORCED BRANCH
  334. 681 LDA $E7; PATTERN FLAG
  335. 683 AND #$80
  336. 685 TAX
  337. 687 BNE $D8E1; NOT DELETED FILE BRANCH
  338. 689 LDA #$20
  339. 691 BIT $E7
  340. 693 BEQ $D8D9; NO PATTERN MATCH BRANCH
  341. 695 JSR $C8B6; DELETE DIRECTORY WRITE NEW SECT
  342. 697 JMP $D9E3; OPEN WRITE CHNL
  343. 699 LDA $0280; TRK FILE LINK
  344. 701 BNE $D8E1; EXISTING FILE BRANCH
  345. 703 JMP $D9E3
  346. 705 LDA $0200; CMND BUFF
  347. 707 CMP #$40; CODE FOR "@"
  348. 709 BEQ $D8F5; REPLACE FILE BRANCH
  349. 711 TXA
  350. 713 BNE $D8F0; ERROR BRANCH
  351. 715 LDA #$63; FILE EXISTS ERROR CODE
  352. 717 JMP $C1C8; ERROR HANDLING
  353. 719 LDA #$33; BAD FILENM ERROR CODE
  354. 721 JMP $C1C8
  355. 723 ; ** REPLACE FILE "@" **
  356. 725 LDA $E7; PATTERN FLAG
  357. 727 AND #$07; FILE TYPE MASK
  358. 729 CMP $024A; FILE TYPE
  359. 731 BNE $D965; ERROR BRANCH
  360. 733 CMP #$04
  361. 735 BEQ $D965; RELATIVE FILE BRANCH
  362. 737 JSR $DCDA; OPEN WRITE CHNL
  363. 739 LDA $82;INDEX CURRENT CHNL
  364. 741 STA $0270; WRITE INDEX
  365. 743 LDA #$11
  366. 745 STA $83; SEC ADDR BUFF
  367. 747 JSR $D0EB; FIND READ CHNL
  368. 749 LDA $0294; CURRENT INDEX BUFF
  369. 751 JSR $D4C8; SET PTRS TO POINT TO BYTE
  370. 753 LDY #$00
  371. 755 LDA ($94),Y; FILE TYPE
  372. 757 ORA #$20; SET REPLACE BIT
  373. 759 STA ($94),Y; DIRECTORY BUFF PTR
  374. 761 LDY #$1A; CODE MOVE NEW TRK LINK
  375. 763 LDA $80; TRK NUM BUFF
  376. 765 STA ($94),Y
  377. 767 INY; POINTS TO NEW SECT LINK
  378. 769 LDA $81; SECT NUM BUFF
  379. 771 STA ($94),Y
  380. 773 LDX $0270; WRITE INDEX BUFF
  381. 775 LDA $D8; SECT DIRECTORY ENTRIES
  382. 777 STA $0260,X; SECT DIRECTORY ENTRY BUFF
  383. 779 LDA $DD; INDEX DIRECTORY ENTRIES
  384. 781 STA $0266,X; INDEX DIRECTORY ENTRY BUFF
  385. 783 JSR $DE3B; SET TRK & SEC FROM HEADER
  386. 785 JSR $D464; DIRECT WRITE DIRECTORY TO DISK
  387. 787 JMP $D9EF; FINISH OPENING FILE
  388. 789 ; ** TEST DIRECTORY TRK LINK **
  389. 791 LDA $0280; TRK FILE LINK
  390. 793 BNE $D94A; FILE EXISTS BRANCH
  391. 795 LDA #$62; FILE NOT FND CODE
  392. 797 JMP $C1C8; ERROR HANDLING
  393. 799 LDA $0297; FILE MODE (R/W)
  394. 801 CMP #$03
  395. 803 BEQ $D95C; OPEN TO MODIFY BRANCH
  396. 805 LDA #$20
  397. 807 BIT $E7; CHECK BIT 5 FILE TYPE
  398. 809 BEQ $D95C; FILE CLOSED OR OPEN PROPERLY
  399. 811 LDA #$60; FILE OPEN ERROR CODE
  400. 813 JMP $C1C8; ERROR HANDLING
  401. 815 LDA $E7; PATTERN FLAG
  402. 817 AND #$07; MASK HI BITS
  403. 819 CMP $024A; FILE TYPE
  404. 821 BEQ $D96A; FILE MATCH BRANCH
  405. 823 LDA #$64; FILE MISMATCH CODE
  406. 825 JMP $C1C8
  407. 827 LDY #$00
  408. 829 STY $0279; FILENM # 2 PTR
  409. 831 LDX $0297; FILE MODE (R/W)
  410. 833 CPX #$02
  411. 835 BNE $D990; NOT OPEN TO APPEND
  412. 837 CMP #$04
  413. 839 BEQ $D965; RELATIVE FILE BRANCH
  414. 841 ; ** OPEN TO APPEND ROUTINE **
  415. 843 LDA ($94),Y; FILE TYPE
  416. 845 AND #$4F
  417. 847 STA ($94),Y
  418. 849 LDA $83; SEC ADDR BUFF
  419. 851 PHA
  420. 853 LDA #$11; SEC ADD INTERNAL READ
  421. 855 STA $83
  422. 857 JSR $DE3B; SET TRK & SEC FROM HEADER
  423. 859 JSR $D464; DIRECT WRITE DIRECTORY TO DISK
  424. 861 PLA
  425. 863 STA $83
  426. 865 JSR $D490; OPEN FILE FOR READ
  427. 867 LDA $0297; FILE MODE (R/W)
  428. 869 CMP #$02
  429. 871 BNE $D9EF; NOT APPEND BRANCH
  430. 873 JSR $DA2A; READ TO END OF FILE
  431. 875 JMP $C194; TERMINATE ROUTINE
  432. 877 ; ** OPEN FILE TO READ **
  433. 879 LDY #$13
  434. 881 LDA ($94),Y; RELATIVE FILE VALUES
  435. 883 STA $0259; SIDE SECT TRK BUFF
  436. 885 INY
  437. 887 LDA ($94),Y
  438. 889 STA $025A; SIDE SECT SECT BUFF
  439. 891 INY
  440. 893 LDA ($94),Y
  441. 895 LDX $0258; RECORD LENGTH
  442. 897 STA $0258
  443. 899 TXA
  444. 901 BEQ $D9C3; CMND SIZE 0 BRANCH
  445. 903 CMP $0258
  446. 905 BEQ $D9C3; RECORD LENGTHS EQUAL
  447. 907 LDA #$50; READ PAST END OF FILE CODE
  448. 909 JSR $C1C8; ERROR HANDLING
  449. 911 LDX $0279; FILENM # 2 PTR
  450. 913 LDA $0280,X; TRK FILE LINK
  451. 915 STA $80; TRK NUM BUFF
  452. 917 LDA $0285,X; SECT FILE LINK
  453. 919 STA $81; SECT NUM BUFF
  454. 921 JSR $DC46; OPEN READ CHNL
  455. 923 LDY $82; INDEX CURRENT CHNL
  456. 925 LDX $0279
  457. 927 LDA $D8,X; SECT DIRECTORY ENTRIES
  458. 929 STA $0260,Y; SECT DIRECT ENTRY BUFF
  459. 931 LDA $DD,X; INDEX DIRECTORY ENTRIES
  460. 933 STA $0266,Y; INDEX DIRECT ENTRY BUFF
  461. 935 RTS
  462. 937 ; ** OPEN WRITE FILE **
  463. 939 LDA $E2; DEFUALT FLAG
  464. 941 AND #$01
  465. 943 STA $7F; DRV NUM BUFF
  466. 945 JSR $DCDA; OPEN WRITE CHNL
  467. 947 JSR $D6E4; ADD ENTRY TO DIRECTORY
  468. 949 LDA $83; SEC ADDR BUFF
  469. 951 CMP #$02
  470. 953 BCS $DA06; NOT PROGRAM FILE BRANCH
  471. 955 JSR $DE3E; SET TRK & SEC FROM LAST HEADER READ
  472. 957 LDA $80; TRK NUM BUFF
  473. 959 STA $7E; LAST PROGRAM ACCESSED BUFF
  474. 961 LDA $7F
  475. 963 STA $026E; LAST PROG DRV BUFF
  476. 965 LDA $81; SECT NUM BUFF
  477. 967 STA $0226F; LAST PROG SECT BUFF
  478. 969 JMP $C199; TERMINATE ROUTINE
  479. 971 ; ** CHECK MODE/FILE TYPE **
  480. 973 LDY $027A,X; FILENM PTR TABLE
  481. 975 LDA $0200,Y; MODE/FILE TYPE IN CMND
  482. 977 LDY #$04; NUM OF MODES CODE
  483. 979 DEY
  484. 981 BMI $DA1C; NO MORE BRANCH
  485. 983 CMP $FEB2,Y; MODE TABLE
  486. 985 BNE $DA11; CHECK FOR MORE
  487. 987 STY $0297; FILE MODE BUFF
  488. 989 LDY #$05; NUM OF TYPES
  489. 991 DEY
  490. 993 BMI $DA29; NO MORE BRANCH
  491. 995 CMP $FEB6,Y; TYPES TABLE
  492. 997 BNE $DA1E; CHECK FOR MORE
  493. 999 STY $024A; FILE TYPE BUFF
  494. 1001 RTS
  495. 1003 ; ** APPEND INFO TO END OF FILE **
  496. 1005 JSR $CA39; GET BYTE FROM DATA CHNL
  497. 1007 LDA #$80
  498. 1009 JSR $DDA6; TEST END OF FILE (EOF)
  499. 1011 BEQ $DA2A; NOT END BRANCH
  500. 1013 JSR $DE95; SET TRK & SEC FROM LINKS
  501. 1015 LDX $81; SECT NUM BUFF
  502. 1017 INX
  503. 1019 TXA
  504. 1021 BNE $DA42; SPACE LEFT END OF SECT
  505. 1023 JSR $D1A3; NO SPACE GET NEXT SECT
  506. 1025 LDA #$02; SKIP TRK & SEC LINK
  507. 1027 JSR $D4C8; SET ACTIVE BUFF PTRS
  508. 1029 LDX $82; INDEX CURRENT CHNL
  509. 1031 LDA #$01; CHNL READY CODE
  510. 1033 STA $F2,X; CHNL STATUS BUFF
  511. 1035 LDA #$80
  512. 1037 ORA $82
  513. 1039 LDX $83; SEC ADDR BUFF
  514. 1041 STA $0222B,X; CURRENT STATUS TABLE
  515. 1043 RTS
  516. 1045 ; ** LOAD DIRECTORY "$" **
  517. 1047 LDA #$0C; CODE FOR LOAD
  518. 1049 STA $022A; CMND CODE BUFF
  519. 1051 LDA #$00; CODE FOR DRV 0
  520. 1053 LDX $0274; CMND LENGTH
  521. 1055 DEX
  522. 1057 BEQ $DA6D; LOAD COMPLETE DIRECTORY
  523. 1059 DEX
  524. 1061 BNE $DA86; LOAD BY NAME BRANCH
  525. 1063 LDA $0201; 2ND CHAR IN CMND BUFF
  526. 1065 JSR $C3BD; TEST ASCII 0 OR 1
  527. 1067 BMI $DA86; LOAD BY NAME BRANCH
  528. 1069 STA $E2; DEFUALT DRV FLAG
  529. 1071 INC $0277; FILENM # 1 CTR
  530. 1073 INC $0278; FILENM # 2 CTR
  531. 1075 INC $027A; FILENM PTR TABLE
  532. 1077 LDA #$80
  533. 1079 STA $E7; PATTERN TYPE FLAG
  534. 1081 LDA #$2A; CODE FOR "*"
  535. 1083 STA $0200; 1ST BYTE CMND BUFF
  536. 1085 STA $0201; 2ND  "      "      "
  537. 1087 BNE $DA93; [129]CED BRANCH
  538. 1089 JSR $C1E5; FIND COL[145] IN CMND
  539. 1091 BNE $DA90; "*" [168] [165]D BRANCH
  540. 1093 JSR $C2DC; "*" [165]D ZERO BUFF
  541. 1095 LDY #$03
  542. 1097 DEY
  543. 1099 DEY
  544. 1101 STY $027A
  545. 1103 JSR $C200; PARSE CMND SET TABLES
  546. 1105 JSR $C398; SET FI[195]M PTRS & CHK TYPE
  547. 1107 JSR $C320; SET UP DRV[173]S
  548. 1109 JSR $C3CA; SET DRV SEARCH PATTERN
  549. 1111 JSR $C7B7; [135] BAM
  550. 1113 JSR $C49D; FILE FILE START ENTRY
  551. 1115 JSR $EC9E; START DIREC[164]RY [147]ING
  552. 1117 JSR $D137; [161] 1ST BYTE FROM BUFF
  553. 1119 LDX $82; INDEX CURRENT CHNL
  554. 1121 STA $023E,X; [131] BYTE STORAGE
  555. 1123 LDA $7F; DRV NUM BUFF
  556. 1125 STA $028E; LAST DRV W[173]O ERR[176] BUFF
  557. 1127 [176]A #$04
  558. 1129 STA $EC,X; CHNL FILE TYPE BUFF
  559. 1131 LDA #$00
  560. 1133 STA $A3; [130] BYTE CMND BUFF PTR
  561. 1135 RTS
  562. 1137 ; [172][172] [160] FILE FR[145] SEC ADDR [172][172]
  563. 1139 LDA #$00
  564. 1141 STA $02F9; D[145]T WRITE BAM FLAG
  565. 1143 LDA $83; SEC ADDR BUFF
  566. 1145 BNE $DAD4; [168] DIRECT [147] SEC ADD
  567. 1147 LDA #$00
  568. 1149 STA $0254; DIREC[164]RY [155] FLAG
  569. 1151 JSR $D227; [184]E THE CHNL
  570. 1153 JMP $D4DA; [184]E [181]ERNAL CHNL
  571. 1155 CMP #$0F
  572. 1157 BEQ $DAEC; [160] ALL FILE BRANCH
  573. 1159 JSR $DB02; [160] 1 CHNL
  574. 1161 LDA $83
  575. 1163 CMP #$02
  576. 1165 BCC $DAD1; ([148]) [160] [181]ERNAL CHNL
  577. 1167 LDA $026C; ERR[176] W[176]D [129] RECOVERY
  578. 1169 BNE $DAE9; ERR[176] BRANCH
  579. 1171 JMP $C194; TERMINATE CMND
  580. 1173 JMP $C1AD; ERR[176] H[175]LING
  581. 1175 ; [172][172] [160] ALL FILES [172][172]
  582. 1177 LDA #$0E; NUM OF FILES
  583. 1179 STA $83; SEC ADDR BUFF
  584. 1181 JSR $DB02; [160] CHNL
  585. 1183 DEC $83
  586. 1185 BPL $DAF0; M[176]E [164] [160] BRANCH
  587. 1187 LDA $026C; ERR[176] W[176]D
  588. 1189 BNE $DAFF; ERR[176] BRANCH
  589. 1191 JMP $C194; TERMINATE CMND
  590. 1193 JMP $C1AD; ERR[176] H[175]LING
  591. 1195 ; [172][172] [160] FILE BY SEC ADDR [172][172]
  592. 1197 LDA $83; SEC ADDR BUFF
  593. 1199 LDA $022B,X; CURRENT STATUS CHNL BUFF
  594. 1201 CMP #$FF; CODE [129] [160]D
  595. 1203 BNE $DB0C
  596. 1205 RTS
  597. 1207 [175] #$0F; MASK [129] BUFF # [145]LY
  598. 1209 STA $82; INDEX CURRENT CHNL
  599. 1211 JSR $D125; [161] FILE TYPE
  600. 1213 CMP #$07
  601. 1215 BEQ $DB26; DIRECT CHNL BRANCH
  602. 1217 CMP #$04
  603. 1219 BEQ $DB2C; RELATIVE FILE BRANCH
  604. 1221 JSR $D107; FIND WRITE CHNL
  605. 1223 BCS $DB29; NO CHNL [165]D BRANCH
  606. 1225 JSR $DB62; [160] SEQUENTIAL WRITE
  607. 1227 JSR $DBA5; [160] DIREC[164]RY
  608. 1229 JSR $EEF4; WRITE BAM
  609. 1231 JMP $D227; [184]E CHNL TERMINATE
  610. 1233 ; [172][172] [160] RELATIVE FILE [172][172]
  611. 1235 JSR $DDF1; [139] BAM DIRTY REWRITE
  612. 1237 JSR $CF1E; SET DOUBLE BUFFING
  613. 1239 JSR $E1CB; [185]ISTI[145] SIDE SECT & BUFF PO[181]
  614. 1241 LDX $D5; NUM OF SIDE SECT BUFF
  615. 1243 STX $73; TEMP W[176]K
  616. 1245 INC $73
  617. 1247 LDA #$00
  618. 1249 STA $70; TEMP W[176]K
  619. 1251 STA $71;  "    "
  620. 1253 LDA $D6; INDEX [164] SIDE SECT
  621. 1255 SEC
  622. 1257 SBC #$0E; SIDE SECT OFFSET [171] 2
  623. 1259 STA $72; TEMP W[176]K
  624. 1261 JSR $DF51; CALCULATE # OF SIDE SECTS
  625. 1263 LDX $82; INDEX CURRENT CHNL
  626. 1265 LDA $70
  627. 1267 STA $B5,X; LO BYTE REC # TABLE
  628. 1269 LDA $71
  629. 1271 STA $BB,X; HI  "    "  "   "
  630. 1273 LDA #$40; CODE DIRTY RELATIVE FILE
  631. 1275 JSR $DDA6; TEST RELATIVE FILE WRITE
  632. 1277 BEQ $DB5F; D[145]T WRITE BRANCH
  633. 1279 JSR $DBA5; [160] DIREC[164]RY FILE
  634. 1281 JMP $D227; CLEAR CHNL TERMINATE
  635. 1283 ; [172][172] [160] SEQUENTIAL WRITE FILE CHNL [172][172]
  636. 1285 LDX $82; INDEX CURRENT CHNL
  637. 1287 LDA $B5,X; LO BYTE BUFF NUM
  638. 1289 [176]A $BB,X; HI  "      "     "
  639. 1291 BNE $DB76; AT LEAST 1 BLOCK WRITTEN
  640. 1293 JSR $D4E8; NO BLOCKS WRITTEN GET BUFF PTR
  641. 1295 CMP #$02; AT LEAST 1 BYTE WRITTEN
  642. 1297 BNE $DB76; GET BUFF PTR
  643. 1299 LDA #$0D; CODE FOR CARRIAGE RETURN
  644. 1301 JSR $CFF1; WRITE TO DATA BUFF
  645. 1303 JSR $D4E8; GET BUFF PTR
  646. 1305 CMP #$02
  647. 1307 BNE $DB8C; BUFF NOT EMPTY BRANCH
  648. 1309 JSR $CF1E; EMPTY SWITCH BUFFS
  649. 1311 LDX $82; INDEX CURRENT CHNL
  650. 1313 LDA $B5,X
  651. 1315 BNE $DB88; WRITE MORE BRANCH
  652. 1317 DEC $BB,X
  653. 1319 DEC $B5,X
  654. 1321 LDA #$00
  655. 1323 SEC
  656. 1325 SBC #$01
  657. 1327 PHA; HOLDS NUM OF BYTES WRITTEN
  658. 1329 LDA #$00
  659. 1331 JSR $D4C8; SET PTR TO 1ST BYTE DATA BUFF
  660. 1333 JSR $CFF1; WRITE 0 AS TRK LINK
  661. 1335 PLA
  662. 1337 JSR $CFF1; WRITE SECT LINK
  663. 1339 JSR $D0C7; WRITE DATA BUFF TO DISK
  664. 1341 JSR $D599; WAIT FOR WRITE TO FINISH
  665. 1343 JMP $CF1E; CHECK BOTH BUFFS
  666. 1345 ; ** CLOSE DIRECTORY AFTER WRITE **
  667. 1347 LDX $82; INDEX CURRENT FILE
  668. 1349 STX $0270; WRITE LINK INDEX BUFF
  669. 1351 LDA $83; SEC ADDR BUFF
  670. 1353 PHA
  671. 1355 LDA $0260,X; SECT DIRECTORY ENTRY
  672. 1357 STA $81; SECT NUM BUFF
  673. 1359 LDA $0266,Y; INDEX DIRECTORY ENTRIES
  674. 1361 STA $0294; INDEX IN BUFF
  675. 1363 LDA $EC,X; FILE TYPE BUFF
  676. 1365 AND #$01
  677. 1367 STA $7F; DRV NUM BUFF
  678. 1369 LDA $FE85; #$12 DIRECTORY TRK
  679. 1371 STA $80; TRK NUM BUFF
  680. 1373 JSR $DF93; GET ACTIVE BUFF NUM
  681. 1375 PHA
  682. 1377 STA $F9; CMND NUM BUFF
  683. 1379 JSR $D460; READ DIRECTORY SECT
  684. 1381 LDY #$00
  685. 1383 LDA $FEE0,X; HI BYTE DATA BUFF TABLE
  686. 1385 STA $87; TEMP RESULT
  687. 1387 LDA $0294
  688. 1389 STA $86;  "     "
  689. 1391 LDA ($86),Y; HOLDS FILE TYPE
  690. 1393 AND #$20
  691. 1395 BEQ $DC21; NOT A REPLACE FILE
  692. 1397 ; ** FILE REPLACE ROUTINE **
  693. 1399 JSR $D125; GET FILE TYPE
  694. 1401 CMP #$04
  695. 1403 BEQ $DC29; RELATIVE FILE BRANCH
  696. 1405 LDA ($86),Y; HOLDS FILE TYPE
  697. 1407 AND #$8F; MASK REPLACE BIT
  698. 1409 STA ($86),Y
  699. 1411 INY
  700. 1413 LDA ($86),Y
  701. 1415 STA $80; TRK NUM BUFF
  702. 1417 STY $71; TEMP WORK
  703. 1419 LDY #$1B; PTR TO REPLACEMENT LINK
  704. 1421 LDA ($86),Y
  705. 1423 PHA; HOLDS REPLACEMENT SECT LINK
  706. 1425 DEY
  707. 1427 LDA $($86),Y
  708. 1429 BNE $DC06; TRK LINK NOT 0 (END)
  709. 1431 STA $80; TRK NUM BUFF
  710. 1433 PLA
  711. 1435 STA $81; SECT NUM BUFF
  712. 1437 LDA #$67; CODE SYS TRK OR SEC ERROR
  713. 1439 JSR $E645; ERROR HANDLING
  714. 1441 PHA; REPLACEMENT TRK LINK
  715. 1443 LDA #$00
  716. 1445 STA ($86),Y
  717. 1447 INY
  718. 1449 STA ($86),Y
  719. 1451 PLA
  720. 1453 LDY $71; ORIGINAL PTR
  721. 1455 STA ($86),Y
  722. 1457 INY
  723. 1459 LDA ($86),Y; OLD SECT LINK
  724. 1461 STA $81
  725. 1463 PLA; REPLACEMENT SECT LINK
  726. 1465 STA ($86),Y
  727. 1467 JSR $C87D; REMOVE OLD FILE FROM BAM
  728. 1469 JMP $DC29; FINISH CLOSE
  729. 1471 LDA ($86),Y; FILE TYPE
  730. 1473 AND #$0F; MASK HI BITS
  731. 1475 ORA #$80; SET CLOSE BIT
  732. 1477 STA ($86),Y
  733. 1479 LDX $0270; WRITE INDEX ACTIVE BUFF #
  734. 1481 LDY #$1C; PTR LO BYTE # OF BLOCKS IN FILE
  735. 1483 LDA $B5,X; NUM OF BLOCKS
  736. 1485 STA ($86),Y
  737. 1487 INY
  738. 1489 LDA $BB,X; HI BYTE # OF BLOCKS
  739. 1491 STA ($86),Y
  740. 1493 PLA; ORIGINAL BUFF NUM
  741. 1495 TAX
  742. 1497 LDA #$90; CODE FOR WRITE
  743. 1499 ORA $7F; DRV NUM BUFF
  744. 1501 JSR $D590; WRITE REVISED DIRECTORY
  745. 1503 PLA; ORIGINAL SEC ADDR
  746. 1505 STA $83; SEC ADDR BUFF
  747. 1507 JMP $D107; FIND ASSIGNED WRITE CHNL
  748. 1509 ; ** OPEN READ CHNL W/ 2 BUFFS **
  749. 1511 LDA #$01
  750. 1513 JSR $D1E2; SET UP 1 READ CHNL
  751. 1515 JSR $DCB6; CLEAR PTRS
  752. 1517 LDA $024A; FILE TYPE
  753. 1519 PHA
  754. 1521 ASL
  755. 1523 ORA $7F; DRV NUM
  756. 1525 STA $EC,X; CHNL FILE TYPE
  757. 1527 JSR $D09B; READ 1ST 1 OR 2 BLOCK FILE
  758. 1529 LDX $82; INDEX CURRENT CHNL
  759. 1531 LDA $80; TRK NUM BUFF
  760. 1533 BNE $DC65; NOT LAST BLOCK BRANCH
  761. 1535 LDA $81; SECT NUM BUFF
  762. 1537 STA $0244,X; LAST CHAR IN BUFF PTR
  763. 1539 PLA; ORIGINAL FILE TYPE
  764. 1541 CMP #$04
  765. 1543 BNE $DCA9; NOT RELATIVE FILE BRANCH
  766. 1545 LDY $83; SEC ADDR BUFF
  767. 1547 LDA $022B,Y; CHNL STATUS BUFF
  768. 1549 ORA #$40; SET BITS READ/WRITE
  769. 1551 STA $022B,Y
  770. 1553 LDA $0258; RECORD LENGTH
  771. 1555 STA $C7,X; RECORD LENGTH BUFF
  772. 1557 JSR $D28E; SET UP SIDE SECTS
  773. 1559 BPL $DC81; BUFF AVAIL BRANCH
  774. 1561 JMP $D20F; NO BUFF FOR SIDE SECTS
  775. 1563 LDX $82; ACTIVE BUFF NUM
  776. 1565 STA $CD,X; SIDE SECT TABLES
  777. 1567 LDY $0259; RECORD LENGTH BUFF
  778. 1569 STY $80; TRK NUM BUFF
  779. 1571 LDY $025A; SIDE SECT SECT BUFF
  780. 1573 STY $81; SECT NUM BUFF
  781. 1575 JSR $D6D3; SET UP SIDE SEC HEADER IMAGE
  782. 1577 JSR $DE73; READ SIDE SECT BLOCK
  783. 1579 JSR $D599; WAIT FOR READ TO FINISH
  784. 1581 LDX $82
  785. 1583 LDA #$02
  786. 1585 STA $C1,X; NEXT RECORD NUM TABLE
  787. 1587 LDA #$00
  788. 1589 LSR $D4C8; SET BUFF POINT TO SIDE SEC
  789. 1591 JSR $E153; SET UP 1ST RECORD
  790. 1593 JMP $DE3E; RESTORE TRK & SEC PTRS
  791. 1595 JSR $D156; READ A BYTE
  792. 1597 LDX $82; ACTIVE BUFF NUM
  793. 1599 STA $023E,X; DATA BYTE STORAGE
  794. 1601 LDA #$88; CODE FOR READY TO TALK
  795. 1603 STA $F2,X; CHNL STATUS
  796. 1605 RTS
  797. 1607 ; ** INITIALIZE VARIABLES OPEN CHNL **
  798. 1609 LDX $82; INDEX CURRENT CHNL
  799. 1611 LDA $A7,X; CHNL TABLES
  800. 1613 ASL
  801. 1615 TAY
  802. 1617 LDA #$02
  803. 1619 STA $0099,Y; NEXT BYTE IN BUFF PTR
  804. 1621 LDA $AE,X; CHNL TABLES
  805. 1623 ORA #$80; SET BUFF INACTIVE BIT
  806. 1625 STA $AE,X
  807. 1627 ASL
  808. 1629 TAY
  809. 1631 LDA #$02
  810. 1633 STA $0099,Y
  811. 1635 LDA #$00:STA $B5,X; CHNL TABLES
  812. 1637 STA $BB,X;   "       "
  813. 1639 LDA #$00
  814. 1641 STA $0244,X; LAST CHAR IN BUFF PTR
  815. 1643 RTS
  816. 1645 ; ** OPEN WRITE CHNL W/ 2 BUFFS **
  817. 1647 JSR $F1A9; GET 1ST TRK & SEC
  818. 1649 LDA #$01
  819. 1651 JSR $D1DF; GET 1 WRITE BUFF
  820. 1653 JSR $D6D0; SET HEADER IMAGE
  821. 1655 JSR $DCB6; SET UP PTRS
  822. 1657 LDX $82; INDEX CURRENT CHNL
  823. 1659 LDA $024A; FILE TYPE
  824. 1661 PHA
  825. 1663 ASL
  826. 1665 ORA $7F; DRV NUM BUFF
  827. 1667 STA $EC,X; CHNL FILE TYPE
  828. 1669 PLA
  829. 1671 CMP #$04
  830. 1673 BEQ $DCFD; RELATIVE FILE BRANCH
  831. 1675 LDA #$01; ACTIVE LISTEN CODE
  832. 1677 STA $F2,X; CHNL STATUS
  833. 1679 RTS
  834. 1681 LDY $83; SEC ADDR BUFF
  835. 1683 LDA $022B,Y; CURRENT CHNL STATUS
  836. 1685 AND #$3F; MASK HI BITS
  837. 1687 ORA #$40; SET READ/WRITE BIT
  838. 1689 STA $022B,Y
  839. 1691 LDA $0258; RECORD LENGTH
  840. 1693 STA $C7,X; RECORD SIZE TABLE
  841. 1695 JSR $D28E; GET BUFF FOR SIDE SECTS
  842. 1697 BPL $DD16; BUFF AVAIL BRANCH
  843. 1699 JMP $D20F; NO BUFF JMP
  844. 1701 LDX $82; INDEX CURRENT CHNL
  845. 1703 STA $CD,X; SIDE SECT TABLES
  846. 1705 JSR $DEC1; CLEAR SIDE SECT BUFF
  847. 1707 JSR $F11E; FIND NEXT AVAIL TRK & SEC
  848. 1709 LDA $80; TRK NUM BUFF
  849. 1711 STA $0259; SIDE SECT TRK BUFF
  850. 1713 LDA $81; SECT NUM BUFF
  851. 1715 STA $025A; SIDE SECT SECT BUFF
  852. 1717 LDX $82; INDEX CURRENT CHNL
  853. 1719 LDA $CD,X; SIDE SECT NUM
  854. 1721 JSR $D6D3; SET UP HEADER
  855. 1723 LDA #$00
  856. 1725 JSR $DEE9; SET BUFF PTRS
  857. 1727 LDA #$00
  858. 1729 JSR $DD8D; SET NULL SIDE SECT LINK
  859. 1731 LDA #$11
  860. 1733 JSR $DD8D; SET SIDE SECT NUM
  861. 1735 LDA #$00:JSR $DD8D
  862. 1737 LDA $0258; RECORD LENGTH
  863. 1739 JSR $DD8D; SET RECORD SIZE
  864. 1741 LDA #$80
  865. 1743 JSR $DD8D; SET TRK LINK
  866. 1745 LDA $81; SECT NUM BUFF
  867. 1747 JSR $DD8D; SET SECT LINK
  868. 1749 LDA #$10; SIDE SECT OFFSET CODE
  869. 1751 JSR $DEE9; SET SIDE SECT OFFSET
  870. 1753 JSR $DE3E; GET 1ST TRK & SEC 1ST SIDE SECT
  871. 1755 LDA #$80
  872. 1757 JSR $DD8D; SET SIDE SECT TRK LINK
  873. 1759 LDA $81
  874. 1761 JSR $DD8D; SET SIDE SECT SEC LINK
  875. 1763 JSR $DE6C; WRITE SIDE SECT BLOCK
  876. 1765 JSR $D599; WAIT FOR WRITE TO FINISH
  877. 1767 LDA #$02
  878. 1769 JSR $D4C8; SET PTR TO DATA
  879. 1771 LDX $82; INDEX CURRENT CHNL
  880. 1773 SEC
  881. 1775 LDA #$00
  882. 1777 SBC $C7,X; RECORD SIZE
  883. 1779 STA $C1,X; NEXT RECORD NUM FOR BUFF
  884. 1781 JSR $E2E2; SET NULL RECORDS ACTIVE BUFF
  885. 1783 JSR $DE19; SET TRK LINK 0 SECT LINK LAST CHAR
  886. 1785 JSR $DE5E; WRITE NULL RECORD BLOCK
  887. 1787 JSR $D599; WAIT FOR WRITE TO FINISH
  888. 1789 JSR $EEF4; WRITE BAM
  889. 1791 JMP $DC98; FINISH OPENING CHNL
  890. 1793 ; ** PUT BYTE IN SIDE SECT **
  891. 1795 PHA
  892. 1797 .FILE DISK ROM 5
  893.