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

  1. 5 ;** TURN ON DRV LED **
  2. 7 SEI
  3. 9 LDA #$F7; 11110111 BIT 3 = 0 TURN OFF LED
  4. 11 AND $1C00; DSK CONTROLLER
  5. 13 PHA
  6. 15 LDA $7F; DRV # BUFF ALWAYS 0 ON 1541
  7. 17 BEQ $C110; WILL ALWAYS TAKE BRANCH
  8. 19 PLA
  9. 21 ORA #$00
  10. 23 BNE $C113
  11. 25 PLA
  12. 27 ORA #$08; 00001000 BIT 3 = 1 TURN ON LED
  13. 29 STA $1C00; DSK CONTROLLER
  14. 31 CLI
  15. 33 RTS
  16. 35 ;** TURN ON DRV LED **
  17. 37 SEI
  18. 39 LDA #$08; 00001000 BIT 3 = 1 TURN ON LED
  19. 41 ORA $1C00; DSK CONTROLLER
  20. 43 STA $1C00
  21. 45 CLI
  22. 47 RTS
  23. 49 ;** TURN OFF FLASHING ERROR LED **
  24. 51 LDA #$00
  25. 53 STA $026C; HOLDS # OF ERROR WORD
  26. 55 STA $026D; HOLDS LED MASK FOR FLASH (ERROR)
  27. 57 RTS
  28. 59 ;** TURN ON ERROR LED **
  29. 61 SEI
  30. 63 TXA
  31. 65 PHA
  32. 67 LDA #$50
  33. 69 STA $026C; HOLDS # OF ERROR WORD
  34. 71 LDX #$00
  35. 73 LDA $FECA,X; LED MASK FOR DRV 0
  36. 75 STA $026D; HOLDS LED MASK FOR FLASH (ERROR)
  37. 77 ORA $1C00;DSK CONTROLLER
  38. 79 STA $1C00
  39. 81 PLA
  40. 83 TAX
  41. 85 CLI
  42. 87 RTS
  43. 89 ;** PARSE CMND STRING IN CMND BUFF ($0200 $0228) **
  44. 91 LDA #$00
  45. 93 STA $02F9; DONT WRITE BAM FLG
  46. 95 LDA $028E; DRV # LAST SUCCESSFUL CMND
  47. 97 STA $7F; DRV # BUFF
  48. 99 JSR $E6BC; ROUT TO CLR ALL ERRORS PUT OK IN ERROR MESSAGE
  49. 101 LDA $84; ORIGINAL SEC ADDR BUFF
  50. 103 BPL $C160; CHK FOR SEC ADDR #$0F (CMND CHNL)
  51. 105 AND #$0F
  52. 107 CMP #$0F
  53. 109 BEQ $C160
  54. 111 JMP $D7B4; OPEN ROUT
  55. 113 JSR $C2B3; INTERPRET CMND IN BUFF ON RET Y = 0
  56. 115 LDA $(A3),Y; PTR TO CMND BUFF
  57. 117 STA $0275; CHRTR UNDER PARSER
  58. 119 LDX #$0B
  59. 121 LDA $FE89,X; CMND TABLE OF CMND CHRTRS
  60. 123 CMP $0275
  61. 125 BEQ $C17A; FND CORRECT CMND
  62. 127 DEX
  63. 129 BPL $C16A; CHK NEXT CHRTR
  64. 131 LDA #$31; CODE FOR BAD CMND
  65. 133 JMP $C1C8; ERROR ROUT
  66. 135 STX $022A; CMND CODE BUFF
  67. 137 CPX #$09; IF #$09 CMND MUST BE PARSED
  68. 139 BCC $C184; CORRECT ROM ROUT OF CMND
  69. 141 JSR $C1EE; ROUT TO PARSE CMND
  70. 143 LDX $022A; CMND CODE BUFF
  71. 145 LDA $FE95,X; LO BYTE CMND JMP TABLE
  72. 147 STA $6F; ADDR OF INDIRECT JMP FOR CMND ROUT
  73. 149 LDA $FEA1,X; HI BYTE CMND JMP TABLE
  74. 151 STA $70
  75. 153 JMP ($006F); EXEC THE CMND
  76. 155 ;** TERMINATE CMND **
  77. 157 LDA #$00
  78. 159 STA $02F9; DONT WRITE BAM FLG
  79. 161 LDA $026C; HOLDS # OF ERROR WORD
  80. 163 BNE $C1C8; BRANCH ON ERROR
  81. 165 LDY #$00
  82. 167 TYA
  83. 169 STY $80; CURRENT TRK # (0 AFTER USE)
  84. 171 STY $81; CURRENT SECT # (0 AFTER USE)
  85. 173 STY $A3; PTR TO CMND BUFF ($0200)
  86. 175 JSR $E6C7; ROUT FOR ERROR MESSAGE
  87. 177 JSR $C123; TURN OFF ERROR LED
  88. 179 LDA #$7F; CURRENT DRV #
  89. 181 STA $028E; LAST USED DRV BUFF
  90. 183 TAX
  91. 185 LDA #$00
  92. 187 STA $FF,X; DRV BUSY FLG
  93. 189 JSR $C1BD; ROUT TO CLR CMND BUFF
  94. 191 JMP $D4DA; CLR INTERNAL CMND CHNLS
  95. 193 LDY #$28; = LAST BYTE OF CMND BUFF ($0228)
  96. 195 LDA #$00; FILL CMND BUFF WITH 0'S
  97. 197 STA $0200,Y
  98. 199 DEY
  99. 201 BPL $C1C1
  100. 203 RTS
  101. 205 ;** CMND ERROR HANDLING **
  102. 207 LDY #$00
  103. 209 STY $80; CURRENT TRK # BUFF
  104. 211 STY $81; CURRENT SECT # BUFF
  105. 213 JMP $E645; ROUT FOR ERROR HANDLING
  106. 215 ;** SIMPLE PARSER **
  107. 217 LDX #$00
  108. 219 STX $027A; FILE TABLE PTR
  109. 221 LDA #$3A; CODE FOR COLON ":"
  110. 223 JSR $C268; ROUT TO LOOK FOR COLON IN CMND
  111. 225 BEQ $C1E2; ON RET IF Z FLG = 1 COLON FND
  112. 227 DEY; Y HOLDS POSISTION OF COLON IN CMND
  113. 229 DEY
  114. 231 STY $027A; FILE TABLE PTR
  115. 233 JMP $C368; ROUT TO SET DRV #
  116. 235 ;** FIND COLON ":" IN CMND **
  117. 237 LDY #$00
  118. 239 LDX #$00
  119. 241 LDA #$3A; CODE FOR COLON ":"
  120. 243 JMP $C268; ROUT TO PARSE CMND
  121. 245 JSR $C1E5; ROUT TO FIND POSISTION IN CMND OF COLON
  122. 247 BNE $C1F8; ON RET IF Z FLG = 1 COLON FND
  123. 249 LDA #$34; CODE FOR BAD CMND
  124. 251 JMP $C1C8; ROUT ROUT FOR CMND ERROR
  125. 253 ;** COLON ":" FND **
  126. 255 DEY
  127. 257 DEY
  128. 259 STY $027A; FILE TABLE PTR
  129. 261 ;** CHK FOR COMMA "," BEFORE COLON ":" **
  130. 263 TXA
  131. 265 BNE $C1F3; ON RET IF Z FLG = 1 COMMA FND
  132. 267 LDA #$3D; CODE FOR "="
  133. 269 JSR $C268; ROUTNE TO PARSE CMND
  134. 271 TXA
  135. 273 BEQ $C20A; ON RET IF Z FLG = 1 WILD CARD FND
  136. 275 LDA #$40; WILD CARD FND SET BIT 6 FILE STREAM IMAGE ($028B)
  137. 277 ORA #$21; IF WILD CARD FND ALWAYS SET BIT 5 $028B
  138. 279 STA $028B; FND WILD CARD BUFF
  139. 281 INX; SETS THE LENGTH OF FILENM 1 & 2
  140. 283 STX $0277; LENGTH OF FILENM #1 BUFF
  141. 285 STX $0278; LENGTH OF FILENM #2 BUFF
  142. 287 LDA $028A; CHK WILD CARD BUFF
  143. 289 BEQ $C228; IF Z FLG = 0 NO WILD CARDS
  144. 291 LDA #$80; THERE ARE WILD CARDS SET BIT 8 OF $028B
  145. 293 ORA $028B
  146. 295 STA $028B
  147. 297 LDA #$00; SET PATTERN FLG SO REST OF CMND CAN BE PARSED
  148. 299 STA $028A; PATTERN FLG
  149. 301 ;** CHK CMND REMAINING IF ANY **
  150. 303 TYA; Y HOLDS LENGTH OF CMND
  151. 305 BEQ $C254; IF Y = 0 NO MORE CMND TO PARSE
  152. 307 STA $027A,X; FILE TABLE PTR
  153. 309 LDA $0277; LENGTH FILENM #1 BUFF
  154. 311 STA $0279; FILENM PTR #2 BUFF
  155. 313 LDA #$8D; CODE FOR SHIFTED CARRAIGE RET
  156. 315 JSR $C268; ROUT TO PARSE CMND
  157. 317 INX; INX TO SET LENGTH OF CMND
  158. 319 STX $0278; LENGTH FILENM #2 BUFF
  159. 321 DEX; RESTORE X'S FORMER VALUE TO CONTINUE
  160. 323 LDA $028A; WILD CARD BUFF
  161. 325 BEQ $C245; IF 0 NO WILD CARDS
  162. 327 LDA #$08; WILD CARD FND SET BIT 3 FILENM IMAGE
  163. 329 CPX $0277; LENGTH OF FILENM #1
  164. 331 BEQ $C24C; IF FILENM 1 CHRTR BRANCH
  165. 333 ORA #$04; SET BIT 2 TO INDICATE MORE THAN 1 FILENM
  166. 335 ORA #$03
  167. 337 EOR $028B; FILENM IMAGE
  168. 339 STA $028B
  169. 341 LDA $028B; CHK IMAGE WITH CMND ENTRY
  170. 343 LDX $022A; CMND CODE #
  171. 345 AND $FEA5,X; HI BYTE CMND JMP TABLE
  172. 347 BNE $C260; IF NOT = BAD SYNTAX
  173. 349 RTS; (null)OD SYNTAX CONTINUE ON
  174. 351 ;** HANDLE BAD SYNTAX IN CMND **
  175. 353 STA $026C; ERROR WORD BUFF FOR RECOVERY OF BAD CMND
  176. 355 LDA #$30; CODE FOR BAD SYNTAX
  177. 357 JMP $C1C8; ROUT TO HANDLE ERROR
  178. 359 ; ** PARSE CMND ROUT **
  179. 361 ; ON ENTRY THE A REG HOLDS CHARACTER TO FIND
  180. 363 ; THE Y REG POINTS TO CHRTR IN CMND TO START SEARCH
  181. 365 ; THE X REG POINTS TO FILENM PTRS ($027A)
  182. 367 STA $0275; CHRTR UNDER PARSER
  183. 369 CPY $0274; LENGTH OF CMND BUFF
  184. 371 BCS $C29E; BRANCH IF = OR GREATER
  185. 373 LDA $(A3),Y; PTR TO NEXT BYTE IN CMND
  186. 375 INY
  187. 377 CMP $0275; CHRTR UNDER PARSER
  188. 379 BEQ $C2A0; IF = FND CHRTR LOOKING FOR
  189. 381 CMP #$2A; CHK FOR WILD CARD "*"
  190. 383 BEQ $C280; IF = FND WILD CARD
  191. 385 CMP #$3F; CHK FOR WILD CARD "?"
  192. 387 BNE $C283; IF = FND WILD CARD
  193. 389 INC $028A; FILENM PRESENT FLG
  194. 391 CMP #$2C; CODE FOR COMMA ","
  195. 393 BNE $C26B; IF = COMMA FND
  196. 395 TYA
  197. 397 STA $027B,X; FILENM TABLE PTR
  198. 399 LDA $028A; FILENM PRESENT FLG
  199. 401 AND #$7F; 01111111
  200. 403 BEQ $C299; IF 0 NO WILD CARD
  201. 405 LDA #$80; 10000000
  202. 407 STA $E7,X; PATTERN FLG FOR WILD CARD
  203. 409 STA $028A; FILENM PRESENT FLG
  204. 411 INX; COUNTS # OF FILENMS
  205. 413 CPX #$04; MAX # OF FILENMS ALLOWED
  206. 415 BCC $C26B; IF LESS THAN 4 (null) BACK FOR MORE
  207. 417 LDY #$00; INDICATES CHRTR NOT FND
  208. 419 LDA $0274; LENGTH OF CMND BUFF
  209. 421 STA $027B,X; TABLE OF FILENM PTR
  210. 423 LDA $028A; FILENM PRESENT FLG
  211. 425 AND #$7F; 01111111
  212. 427 BEQ $C2B1; IF = NO WILD CARD
  213. 429 LDA #$80; 10000000
  214. 431 STA $E7,X; PATTERN FLG WILD CARD FND
  215. 433 TYA; Y HOLDS CHRTR COUNT SETS Z FLG (FND)
  216. 435 RTS
  217. 437 ;** INIT CMND TABLES & PTRS **
  218. 439 LDY $A3; POINTS TO NEXT BYTE IN CMND BUFF
  219. 441 BEQ $C2CB
  220. 443 DEY
  221. 445 BEQ $C2CA
  222. 447 LDA $0200,Y; CMND BUFF ($0200 $0228)
  223. 449 CMP #$0D; CODE FOR CARRAIGE RET
  224. 451 BEQ $C2CB
  225. 453 DEY
  226. 455 LDA $0200,Y
  227. 457 CMP #$0D
  228. 459 BEQ $C2CB
  229. 461 INY; RESET LENGTH OF CMND
  230. 463 INY
  231. 465 STY $0274; LENGTH OF CMND BUFF
  232. 467 CPY #$2A; = MAX LENGTH OF CMND (SETS CARRY FLG)
  233. 469 LDY #$FF
  234. 471 BCC $C2DC; IF Z FLG 0 CMND OK
  235. 473 STY $022A; CMND CODE #
  236. 475 LDA #$32; CODE TO INDICATE CMND TOO LONG
  237. 477 JMP $C1C8; ROUT TO HANDLE ERROR
  238. 479 ;** 0 ALL VARIABLES & PTRS **
  239. 481 LDY #$00
  240. 483 TYA
  241. 485 STA $A3; NEXT BYTE IN CMND BUFF
  242. 487 STA $0258; RECORD SIZE BUFF (DIRECTORY)
  243. 489 STA $024A; FILE TYPE BUFF
  244. 491 STA $0296; FILE TYPE MATCH FLG
  245. 493 STA $D3; FILENM PTR #1
  246. 495 STA $0279; FILENM PTR #2
  247. 497 STA $0277; FILENM #1 CTR
  248. 499 STA $0278; FILENM #2 CTR
  249. 501 STA $028A; FILENM PRESENT FLG
  250. 503 STA $026C; ERROR WORD FLG (RECOVERY)
  251. 505 LDX #$05
  252. 507 STA $0279,X; CLR FILENM PTR TABLE
  253. 509 STA $D7,X; CLR SECT OF DIRECTORY ENTRIES
  254. 511 STA $DC,X; CLR INDEX OF DIRECTORY ENTRIES
  255. 513 STA $E1,X; CLR DEFAULT FLGS (ALWAYS 0 1541)
  256. 515 STA $E6,X; PATTERN, REPLACE, CLOSE, TYPE FLGS
  257. 517 STA $027F,X; TABLE OF FILENM PTRS
  258. 519 STA $0284,X; FIRST FILE LINK TRK & SECT TABLES
  259. 521 DEX
  260. 523 BNE $C2FD
  261. 525 RTS
  262. 527 ; ** SET DRV & TABLE PTRS **
  263. 529 LDA $0278; FILENM #2 CTR
  264. 531 STA $0277; FILENM #1 CTR
  265. 533 LDA #$01
  266. 535 STA $0278; CLR THE VARIABLES
  267. 537 STA $0279; FILENM #2 CTR
  268. 539 LDY $028E; LAST DRV USED FLG
  269. 541 LDX #$00
  270. 543 STX $D3; FILENM #1 PTR
  271. 545 LDA $027A,X; FILENM PTR TABLE
  272. 547 JSR $C33C; ROUT TO SET DRV #
  273. 549 LDX $D3; FILENM #1 PTR
  274. 551 STA $027A,X; FILENM PTR TABLE
  275. 553 TYA; MOVE DRV # TO Y
  276. 555 STA $E2,X; DEFAULT FLGS (0 1541)
  277. 557 INX
  278. 559 CPX $0278; FILENM #2 CTR
  279. 561 BCC $C325; BRANCH BACK IF NOT DONE
  280. 563 RTS
  281. 565 ; ** SET DRV # FROM TEXT OR DEFAULT TO 0 **
  282. 567 ; ON ENTRY Y IS DEFAULT DRV
  283. 569 ; ON EXIT Y IS THE DRV SPECIFIED OR THE DEFAULT DRV
  284. 571 ; ON ENTRY A IS THE INDEX TO THE CMND BUFF
  285. 573 TAX
  286. 575 LDY #$00; MAKE DEFAULT DRV 0
  287. 577 LDA #$3A; CODE FOR COLON ":"
  288. 579 CMP $0201,X; FIND SYNTAX IN CMND BUFF
  289. 581 BEQ $C352; FND COLON ":"
  290. 583 CMP $0200,X; IF COLON HERE SYNTAX FOR DEFAULT DRV
  291. 585 BNE $C361; COLON NOT FND
  292. 587 INX
  293. 589 TYA; SETS DEFAULT TO 0
  294. 591 AND #$01
  295. 593 TAY; RESTORE DRV #
  296. 595 TXA; RESTORE INDEX TO CMND BUFF
  297. 597 RTS
  298. 599 ; ** SET DRV # FROM SYNTAX **
  299. 601 LDA $0200,X; CMND BUFF
  300. 603 INX
  301. 605 INX; TO SET X TO 1ST CHRTR IN CMND
  302. 607 CMP #$30; ASCII FOR DRV 0
  303. 609 BEQ $C34D
  304. 611 CMP #$31; ASCII FOR DRV 1
  305. 613 BEQ $C34D
  306. 615 BNE $C34C; IF NOT = DEFAULT DRV
  307. 617 TYA; TRANSFER DRV FROM Y TO A
  308. 619 ORA #$80; SET BIT 7 FOR DEFAULT DRV
  309. 621 AND #$81; CLR ODD BITS
  310. 623 BNE $C34F; END THIS ROUT
  311. 625 ; ** SET DRV # FROM ANY SYNTAX **
  312. 627 LDA #$00
  313. 629 STA $028B; FILENM IMAGE
  314. 631 LDY $027A; FILENM PTR TABLE
  315. 633 LDA $(A3),Y; NEXT BYTE IN CMND BUFF PTR
  316. 635 JSR $C3BD; ROUT TO FIND 0 OR 1
  317. 637 ; ON RET A = 0 OR 1 IF DRV NOT SPECIFIED
  318. 639 ; IF NOT A = #$80 OR #$81 IF SPECIFIED
  319. 641 BPL $C388; BRANCH NOT SPECIFIED
  320. 643 INY; PTR TO CMND BUFF
  321. 645 CPY $0274; CMND LENGTH BUFF
  322. 647 BCS $C383; BRANCH END OF CMND
  323. 649 LDY $0274; CMND LENGTH BUFF
  324. 651 DEY; POINT TO LAST CHRTR IN CMND WITH Y
  325. 653 BNE $C370
  326. 655 DEC $028B; FILENM BUFF (BECOMES #$FF FLG DEFAULT)
  327. 657 LDA #$00; FLG DEFAULT 0
  328. 659 AND #$01
  329. 661 STA $7F; DRV # BUFF
  330. 663 JMP $C100; ROUT TO TURN ON DRV LED
  331. 665 ; ** TOGGLE DRV # **
  332. 667 LDA $7F; DRV # BUFF
  333. 669 EOR #$01; FLIP BIT 0
  334. 671 AND #$01; MASK BITS 1 TO 7
  335. 673 STA $7F
  336. 675 RTS
  337. 677 ; ** SET PTRS TO ONE FILENM CHK TYPE **
  338. 679 LDY #$00
  339. 681 LDA $0277; FILENM #1 CTR
  340. 683 CMP $0278; FILENM #2 CTR
  341. 685 BEQ $C3B8; IF = NO SECOND FILENM
  342. 687 DEC $0278
  343. 689 LDY $0278
  344. 691 LDA $027A,Y; FILENM PTR TABLE
  345. 693 TAY; Y USED TO LOAD FILE TYPE
  346. 695 LDA $(A3),Y; NEXT BYTE IN CMND BUFF PTR
  347. 697 LDY #$04; # OF FILE TYPES LESS 1
  348. 699 CMP $FEBB,Y; HI BYTE FILE TYPE TABLE
  349. 701 BEQ $C3B8; IF = FND MATCH
  350. 703 DEY
  351. 705 BNE $C3B0; LOOK FOR MATCH
  352. 707 ; IF NO MATCH FND FILE IS DEL TYPE
  353. 709 TYA; Y HOLDS FILE TYPE
  354. 711 STA $0296; FILE TYPE MATCH FLG
  355. 713 RTS
  356. 715 ; ** TEST A FOR ASCII 0 OR 1 **
  357. 717 CMP #$30
  358. 719 BEQ $C3C7
  359. 721 CMP #$31
  360. 723 BEQ $C3C7
  361. 725 ORA #$80; SET BIT 7 (NO MATCH FND)
  362. 727 AND #$81; CONVERT ASCII TO HEX (SAVE BIT 7)
  363. 729 RTS
  364. 731 ; ** SEARCH TO FIND FILE **
  365. 733 LDA #$00
  366. 735 STA $6F; TEMPORY WORK BUFF (DRV MASK)
  367. 737 STA $028D; DRV SEARCH FLG
  368. 739 PHA; SAVE A
  369. 741 LDX $0278; FILENM #1 CTR
  370. 743 PLA ;RESTORE A TO 0
  371. 745 ORA $6F; DRV MASK
  372. 747 PHA; SAVE A
  373. 749 LDA #$01
  374. 751 STA $6F; TEMP WORK BUFF
  375. 753 DEX; PTR TO FILENM TABLE
  376. 755 BMI $C3EF; END OF FILENM
  377. 757 LDA $E2,X; DEFAULT DRV FLG (0 ON 1541)
  378. 759 BPL $C3E8; IF DEFAULT BIT 7 SET
  379. 761 ASL $6F
  380. 763 ASL $6F
  381. 765 LSR; IF DRV = 1 CARRY BIT IS SET
  382. 767 BCC $C3D5; BRANCH BACK
  383. 769 ASL $6F; DRV WAS 0 IF HERE
  384. 771 BNE $C3D5; BRANCH BACK
  385. 773 PLA
  386. 775 TAX; USE X FOR INDEX
  387. 777 LDA $C34F,X; SEARCH TABLE
  388. 779 PHA; SAVE VALUE FROM SEARCH TABLE
  389. 781 AND #$03
  390. 783 STA $028C; # OF SEARCHES BUFF
  391. 785 PLA
  392. 787 ASL
  393. 789 BPL $C43C; IF BIT 7 NOT SET BRANCH
  394. 791 LDA $E2; DEFAULT FLG
  395. 793 AND #$01
  396. 795 STA $7F; DRV # BUFF
  397. 797 LDA $028C; # OF SEARCHES BUFF
  398. 799 BEQ $C434; IF 0 ONLY ONE DRV
  399. 801 JSR $C63D; ROUT TO CHK DRV STATUS
  400. 803 BEQ $C420; IF A 0 DRV READY
  401. 805 JSR $C38F; ROUT TO TOGGLE DRV #
  402. 807 LDA #$00
  403. 809 STA $028C; # OF SEARCHES BUFF
  404. 811 JSR $C63D; ROUT TO CHK DRV STATUS
  405. 813 BEQ $C439; ROUT TO TERMINATE
  406. 815 LDA #$74; IF HERE DRV NOT READY
  407. 817 JSR $C1C8; ERROR ROUT
  408. 819 JSR $C38F; ROUT TO TOGGLE DRV #
  409. 821 JSR $C63D; ROUT TO CHK DRV STATUS
  410. 823 PHP
  411. 825 JSR $C38F; ROUT TO TOGGLE DRV #
  412. 827 PLP
  413. 829 BEQ $C439; IF Z FLG = 0 SECOND DRV ACTIVE
  414. 831 LDA #$00; SECOND DRV NOT ACTIVE IF HERE
  415. 833 STA $028C; # OF SEARCHES BUFF
  416. 835 BEQ $C439; ONLY ONE DRV BRANCH
  417. 837 JSR $C63D; CHK DRV STATUS
  418. 839 BNE $C41B; BRANCH IF DRV NOT READY
  419. 841 JMP $C100; TURN ON DRV LED
  420. 843 ROL
  421. 845 JMP $C400
  422. 847 ; ** SEARCH TABLE **
  423. 849 .BYTE 000 128 065;        00 80 41
  424. 851 .BYTE 001 001 001 001; 01 01 01 01
  425. 853 .BYTE 129 129 129 129; 81 81 81 81
  426. 855 .BYTE 066 066 066 066; 42 42 42 42
  427. 857 ; ** FIND FILE IN CMND **
  428. 859 JSR $C3CA; SEARCH ROUT
  429. 861 LDA #$00; IF 0 NOT DELETED OF UNUSED DIRECTORY FILE
  430. 863 STA $0292; INDEX FIRST ENTRY
  431. 865 JSR $C5AC; SEARCH DIRECTORY
  432. 867 BNE $C475; IF NOT 0 (null)OD FILENM FND
  433. 869 DEC $028C; # OF SEARCHES
  434. 871 BPL $C462; IF MORE TO SEARCH BRANCH
  435. 873 RTS
  436. 875 LDA #$01
  437. 877 STA $028D; DRV SEARCH FLG
  438. 879 JSR $C38F; TOGGLE DRV #
  439. 881 JSR $C100; TURN ON DRV LED
  440. 883 JMP $C452
  441. 885 JSR $C617; SEARCH ROUT
  442. 887 BEQ $C485; FILE NOT FND BRANCH
  443. 889 JSR $C4D8; COMPARE FILE NAMES
  444. 891 LDA $028F
  445. 893 BEQ $C47E; FND FILE BRANCH
  446. 895 RTS
  447. 897 LDA $0253; FND FILE FLG
  448. 899 BMI $C470; IF MINUS MATCH NOT FND
  449. 901 BPL $C475; FND MATCH LOOK FOR MORE
  450. 903 LDA $028F; FND FILE FLG
  451. 905 BEQ $C45C; IF 0 ALL FILES FND
  452. 907 RTS
  453. 909 ; ** FIND NEXT FILENM MATCHING ANY FILE **
  454. 911 JSR $C604; READ NEXT BLK DIRECTORY
  455. 913 BEQ $C4AA; NO FILES FND BRANCH
  456. 915 BNE $C4BA; FILES FND BRANCH
  457. 917 LDA #$01
  458. 919 STA $028D; DRV SEARCH FLG
  459. 921 JSR $C38F; TOGGLE DRV
  460. 923 JSR $C100; TURN ON DRV LED
  461. 925 ; ** FIND STARTING ENTRY IN DIRECTORY **
  462. 927 LDA #$00
  463. 929 STA $0292; INDEX FIRST ENTRY 0 = NOT DELETED OR UNUSED DIRECTORY
  464. 931 JSR $C5AC; SEARCH ROUT
  465. 933 BNE $C4BA; IF = (null)OD FILENM FND
  466. 935 STA $028F; FND FILE FLG
  467. 937 LDA $028F; FND FILE FLG
  468. 939 BNE $C4D7; IF NOT 0 ALL FILES FND
  469. 941 DEC $028C; # OF DRVS BUFF
  470. 943 BPL $C492; IF MINUS NO MORE DRVS
  471. 945 RTS
  472. 947 ; ** KEEP SCANNING DIRECTORY **
  473. 949 JSR $C617; SEARCH FOR ENTRIES
  474. 951 BEQ $C4AA; IF 0 NO MORE ENTRIES
  475. 953 JSR $C4D8; COMPARE FILE NAMES
  476. 955 LDX $0253; DIRECTORY ENTRY FND FLG
  477. 957 BPL $C4C9; MATCH FND BRANCH
  478. 959 LDA $028F; DIRECTORY SEARCH FND FLG
  479. 961 BEQ $C4B5; ALL FILES FND BRANCH
  480. 963 BNE $C4D7; ALL FILES NOT FND BRANCH
  481. 965 LDA $0296; FILE TYPE FND FLG
  482. 967 BEQ $C4D7; IF EQAUL FND MATCH
  483. 969 LDA $E7,X; PATTERN TYPE FLG
  484. 971 AND #$07; FILE TYPE MASK
  485. 973 CMP $0296; MATCH FND FLG
  486. 975 BNE $C4B5; MATCH NOT FND BRANCH
  487. 977 RTS
  488. 979 ; ** COMPARE FILE NAMES WITH DIRECTORY **
  489. 981 LDX #$FF; SET TO MINUS
  490. 983 STX $0253; DIRECTORY ENTRY FND FLG
  491. 985 INX; = 0
  492. 987 STX $028A; PATTERN PRESENT FLG
  493. 989 JSR $C589; CHK FOR UNFND FILES
  494. 991 BEQ $C4EC; NO UNFND FILES BRANCH
  495. 993 RTS
  496. 995 JSR $C594; DECREMENT FILE COUNT
  497. 997 BNE $C4E6; NO MORE FILES THIS DRV BRANCH
  498. 999 LDA $7F; DRV # BUFF
  499. 1001 EOR $E2,X; DEFAULT FLG
  500. 1003 LSR
  501. 1005 BCC $C4FE; DRV CORRECT FOR THIS FILE BRANCH
  502. 1007 AND #$40; USE DEFAULT DRV CHK
  503. 1009 BEQ $C4E7; NO DEFAULT DRV BRANCH
  504. 1011 LDA #$02
  505. 1013 CMP $028C; # OF DRVS BUFF
  506. 1015 BEQ $C4E7; TWO DRVS CANT USE DEFAULT BRANCH
  507. 1017 LDA $027A,X; FILENM PTR TABLE
  508. 1019 TAX; IF HERE THERES A MATCH
  509. 1021 JSR $C6A6; FIND END OF CMND
  510. 1023 LDY #$03; Y IS THE PTR
  511. 1025 JMP $C51D
  512. 1027 LDA $0200,X; CMND BUFF
  513. 1029 CMP ($94),Y; DIRECTORY BUFF PTR
  514. 1031 BEQ $C51B; (null)OD MATCH BRANCH
  515. 1033 CMP #$3F; CODE FOR "?" WILD CARD
  516. 1035 BNE $C4E7; NO MATCH BRANCH
  517. 1037 LDA ($94),Y; DIRECTORY BUFF PTR
  518. 1039 CMP #$A0; CODE FOR END OF FILENM
  519. 1041 BEQ $C4E7; TRY NEXT FILENM BRANCH
  520. 1043 INX
  521. 1045 INY
  522. 1047 CPX $0276; COMPARISON LIMIT PTR
  523. 1049 BCS $C52B; END OF CMND BRANCH
  524. 1051 LDA $0200,X; CMND BUFF
  525. 1053 CMP #$2A; CODE FOR "*"
  526. 1055 BEQ $C535; EVERTHING MATCHES BRANCH
  527. 1057 BNE $C50A; TRY FOR A MATCH BRANCH
  528. 1059 CPY #$13
  529. 1061 BCS $C535; END OF NAME IN DIRECTORY BRANCH
  530. 1063 LDA $($94),Y; DIRECTORY BUFF PTR
  531. 1065 CMP #$A0; CODE FOR END OF FILENM
  532. 1067 BNE $C4E7; NOT END OF NAME BRANCH
  533. 1069 LDX $0279; FILENM #2 CTR
  534. 1071 STX $0253; DIRECTORY ENTRY FND FLG
  535. 1073 LDA $E7,X; PATTERN FLG
  536. 1075 AND #$80
  537. 1077 STA $028A; PATTERN PRESENT FLG
  538. 1079 LDA $0294; INDEX IN BUFF
  539. 1081 STA $DD,X; INDEX OF DIRECTORY ENTRIES
  540. 1083 LDA $81; SECT # BUFF
  541. 1085 STA $D8,X; SECT OF DIRECTORY ENTRIES BUFF
  542. 1087 LDY #$00
  543. 1089 LDA ($94),Y; DIRECTORY ENTRY PTR
  544. 1091 INY
  545. 1093 PHA; SAVE FILE TYPE
  546. 1095 AND #$40; CHK FOR LOCKED FILE
  547. 1097 STA $6F; TEMP WORK BUFF
  548. 1099 PLA; GET FILE TYPE
  549. 1101 AND #$DF
  550. 1103 BMI $C55C; IF MINUS REPLACEMENT FILE BRANCH
  551. 1105 ORA #$20
  552. 1107 AND #$27
  553. 1109 ORA $6F; TEMP WORK BUFF
  554. 1111 STA $6F
  555. 1113 LDA #$80
  556. 1115 AND $E7,X; PATTERN FLG
  557. 1117 ORA $6F
  558. 1119 STA $E7,X
  559. 1121 LDA $E2,X; DEFAULT FLG
  560. 1123 AND #$80; SAVE DEFAULT BIT
  561. 1125 ORA $7F; CURRENT DRV # (0)
  562. 1127 STA $E2,X
  563. 1129 LDA ($94),Y; DIRECTORY ENTRY PTR
  564. 1131 STA $0280,X; FILE LINK TRK BUFF
  565. 1133 INY
  566. 1135 LDA ($94),Y
  567. 1137 STA $0285,X; FILE LINK SECT BUFF
  568. 1139 LDA $0258; RECORD SIZE BUFF
  569. 1141 BNE $C589; IF NOT 0 CHK FOR UNFND ENTRIES BRANCH
  570. 1143 LDY #$15
  571. 1145 LDA ($94),Y; DIRECTORY ENTRY PTR
  572. 1147 STA $0258; RECORD SIZE BUFF
  573. 1149 ; ** CHK TABLE FOR UNFND FILES **
  574. 1151 LDA #$FF
  575. 1153 STA $028F; DIRECTORY SEARCH FND FLG
  576. 1155 LDA $0278; FILENM #2 CTR (# OF FILES TO TEST)
  577. 1157 STA $0279; FILENM #2 PTR
  578. 1159 DEC $0279
  579. 1161 BPL $C59A; FILES LEFT BRANCH
  580. 1163 RTS
  581. 1165 LDX $0279
  582. 1167 LDA $E7,X; PATTERN FLG
  583. 1169 BMI $C5A6; FILE NOT FND BRANCH
  584. 1171 LDA $0280,X; FILE LINK TRK BUFF
  585. 1173 BNE $C594; FILE FND BRANCH
  586. 1175 LDA #$00
  587. 1177 STA $028F; ALL FILES FND FLG
  588. 1179 RTS
  589. 1181 ; ** SEARCH DIRECTORY **
  590. 1183 LDY #$00
  591. 1185 STY $0291; SECT OF FIRST AVAIL ENTRY BUFF
  592. 1187 DEY
  593. 1189 STY $0253; DIRECTORY ENTRY FND FLG
  594. 1191 LDA $FE85; #$12 DIRECTORY TRK
  595. 1193 STA $80; CURRENT TRK# BUFF
  596. 1195 LDA #$01
  597. 1197 STA $81; CURRENT SECT# BUFF
  598. 1199 STA $0293; LAST BLK BUFF = 0 LAST BLK
  599. 1201 JSR $D475; OPEN INTERNAL READ CHNL
  600. 1203 LDA $0293; LAST BLK BUFF
  601. 1205 BNE $C5CA; LAST SECT BRANCH
  602. 1207 RTS
  603. 1209 LDA #$07
  604. 1211 STA $0295; FILE ENTRY COUNT BUFF
  605. 1213 LDA #$00
  606. 1215 JSR $D4F6; READ A BYTE
  607. 1217 STA $0293; LAST BLK BUFF
  608. 1219 JSR $D4E8; GET ACTIVE BUFF PTR
  609. 1221 DEC $0295; FILE ENTRY COUNT BUFF
  610. 1223 LDY #$00
  611. 1225 LDA ($94),Y; DIRECTORY BUFF PTR
  612. 1227 BNE $C5FB; NOT DELETED OR BLANK ENTRY BRANCH
  613. 1229 LDA $0291; FIRST AVAIL SECT BUFF
  614. 1231 BNE $C617; DELETED FILE ALREADY FND BRANCH
  615. 1233 JSR $DE3B; SET TRK & SECT FROM HEADER
  616. 1235 LDA $81; SECT# BUFF
  617. 1237 STA $0291; SECT FIRST AVAIL ENTRY BUFF
  618. 1239 LDA $94; DIRECTORY BUFF PTR
  619. 1241 LDX $0292; INDEX FIRST AVAIL ENTRY BUFF
  620. 1243 STA $0292
  621. 1245 BEQ $C617; NEED VALID ENTRIES NOT DELETED BRANCH
  622. 1247 RTS
  623. 1249 ; ** FND VALID ENTRY **
  624. 1251 LDX #$01
  625. 1253 CPX $0292; INDEX FIRST AVAIL ENTRY BUFF
  626. 1255 BNE $C62F; NOT VALID ENTRY BRANCH
  627. 1257 BEQ $C617; WANT DELETED ENTRY NOT VALID BRANCH
  628. 1259 LDA $FE85; #$12 DIRECTORY TRK
  629. 1261 STA $80; CURRENT TRK # BUFF
  630. 1263 LDA $0290; DIRECTORY SECT BUFF
  631. 1265 STA $81; CURRENT SECT # BUFF
  632. 1267 JSR $D475; OPEN INTERNAL READ CHNL
  633. 1269 LDA $0294; CURRENT INDEX IN BUFF
  634. 1271 JSR $D4C8; SET UP PTR TO ACTIVE BUFF
  635. 1273 LDA #$FF
  636. 1275 STA $0253; DIRECTORY ENTRY FND FLG
  637. 1277 LDA $0295; FILE ENTRY CTR BUFF
  638. 1279 BMI $C629; NO ENTRIES LEFT TO FIND BRANCH
  639. 1281 LDA #$20
  640. 1283 JSR $D1C6
  641. 1285 JMP $C5D7; PROCESS ENTRY
  642. 1287 ; ** GET NEXT BUFF OF ENTRIES **
  643. 1289 JSR $D44D; READ NEXT BLK OF FILE
  644. 1291 JMP $C5C4; TEST FOR LAST SECT
  645. 1293 ; ** FND VALID ENTRY SAVE PTRS **
  646. 1295 LDA $94; DIRECTORY BUFF PTR
  647. 1297 STA $0294; CURRENT INDEX IN BUFF
  648. 1299 JSR $DE3B; SET TRK & SECT FROM HEADER
  649. 1301 LDA $81; CURRENT SECT #
  650. 1303 STA $0290; DIRECTORY SECT BUFF
  651. 1305 RTS
  652. 1307 ; ** CHK FOR DSK & INITAILIZE **
  653. 1309 LDA $68; AUTO INIT FLG
  654. 1311 BNE $C669; NO INIT BRANCH
  655. 1313 LDX $7F; CURRENT DRV # BUFF
  656. 1315 LSR $1C,X; WRITE PROTECT STAUS FLG
  657. 1317 BCC $C669; NO CHANGE IN DSK BRANCH
  658. 1319 LDA #$FF; RET CODE
  659. 1321 STA $0298; CMND RET FLG
  660. 1323 JSR $D00E; INIT DRV
  661. 1325 LDY #$FF; DEFAULT CODE
  662. 1327 CMP #$02
  663. 1329 BEQ $C65F; NO SYNC BRANCH
  664. 1331 CMP #$03
  665. 1333 BEQ $C65F; NO HEADER BRANCH
  666. 1335 CMP #$0F
  667. 1337 BEQ $C65F; NO DRV BRANCH
  668. 1339 LDY #$00
  669. 1341 LDX $7F; CURRENT DRV # BUFF
  670. 1343 TYA
  671. 1345 STA $FF,X; NO DRV FLG
  672. 1347 BNE $C669; BAD STATUS BRANCH
  673. 1349 JSR $D042; INIT DRV
  674. 1351 LDX $7F; CURRENT DRV # BUFF
  675. 1353 LDA $FF,X; NO DRV FLG
  676. 1355 RTS
  677. 1357 ; ** TRANSFER FILENM FROM BUFF **
  678. 1359 ; ON ENTRY A IS CMND SIZE
  679. 1361 ; X IS START INDEX IN CMND
  680. 1363 ; Y IS BUFF #
  681. 1365 PHA; SAVE CMND SIZE
  682. 1367 JSR $C6A6; FIND END OF CMND
  683. 1369 JSR $C688; TRANSFER CMND BUFF
  684. 1371 PLA
  685. 1373 SEC
  686. 1375 SBC $024B; LENGTH OF CMND
  687. 1377 TAX
  688. 1379 BEQ $C687; DONT PAD CMND BRANCH
  689. 1381 BCC $C687;  "    "     "      "
  690. 1383 ; ** PAD CMND **
  691. 1385 LDA #$A0; CODE TO PAD WITH
  692. 1387 STA ($94),Y; DIRECTORY BUFF PTR
  693. 1389 INY
  694. 1391 DEX
  695. 1393 BNE $C681; MORE PAD BRANCH
  696. 1395 RTS
  697. 1397 ; ** TRANSFER CMND BUFF **
  698. 1399 ; X IS INDEX TO BEGINNING OF CMND
  699. 1401 ; Y IS BUFF PTR
  700. 1403 TYA
  701. 1405 ASL
  702. 1407 TAY
  703. 1409 LDA $0099,Y; NEXT BYTE IN BUFF PTR
  704. 1411 STA $94; DIRECTORY BUFF PTR
  705. 1413 LDA $009A,Y; NEXT BYTE IN BUFF PTR
  706. 1415 STA $95; DIRECTORY BUFF PTR
  707. 1417 LDY #$00
  708. 1419 LDA $0200,X; MOVE FROM CMND BUFF
  709. 1421 STA ($94),Y; STORE IN DIRECTORY BUFF
  710. 1423 INY
  711. 1425 BEQ $C6A5; CMND MOVED BRANCH
  712. 1427 INX
  713. 1429 CPX $0276; LIMIT COMPARISON BUFF
  714. 1431 BCC $C697; MOVE MORE BRANCH
  715. 1433 RTS
  716. 1435 ; ** FIND LIMIT (END OF CMND)  **
  717. 1437 LDA #$00
  718. 1439 STA $024B; LENGTH OF CMND BUFF
  719. 1441 TXA
  720. 1443 PHA; SAVE START PTR
  721. 1445 LDA $0200,X; CMND BUFF
  722. 1447 CMP #$2C; CODE FOR COMMA ","
  723. 1449 BEQ $C6C8; END OF CMND BRANCH
  724. 1451 CMP #$3D; CODE FOR EQUAL "="
  725. 1453 BEQ $C6C8; END OD CMND BRANCH
  726. 1455 INC $024B; LENGTH OF CMND BUFF
  727. 1457 INX
  728. 1459 LDA #$0F; MAX CMND SIZE
  729. 1461 CMP $024B
  730. 1463 BCC $C6C8; CMND FULL BRANCH
  731. 1465 CPX $0274; CMND SIZE BUFF
  732. 1467 BCC $C6AD; NOT END OF CMND BRANCH
  733. 1469 STX $0276; LIMIT COMPARISON BUFF
  734. 1471 PLA; PULL STARTING PTR
  735. 1473 TAX
  736. 1475 RTS
  737. 1477 ; ** GET FILE ENTRY FROM DIRECTORY **
  738. 1479 LDA $83; CURRENT SEC ADDR BUFF
  739. 1481 PHA
  740. 1483 LDA $82; INDEX CURRENT FILE BUFF
  741. 1485 PHA
  742. 1487 JSR $C6DE; GET FILE ENTRY
  743. 1489 PLA; INDEX CURRENT FILE
  744. 1491 STA $82; INDEX CURRENT FILE BUFF
  745. 1493 PLA; CURRENT SEC ADDR
  746. 1495 STA $83; CURRENT SEC ADDR BUFF
  747. 1497 RTS
  748. 1499 ; ** GET FILE ENTRY **
  749. 1501 LDA #$11; INTERNAL READ SEC ADDR
  750. 1503 STA $83; CURRENT SEC ADDR BUFF
  751. 1505 JSR $D0EB; FIND READ CHNL
  752. 1507 JSR $D4E8; GET ACTIVE BUFF PTR
  753. 1509 LDA $0253; DIRECTORY ENTRY FND FLG
  754. 1511 BPL $C6F7; MORE ENTRIES BRANCH
  755. 1513 LDA $028D; DRV SEARCH FLG
  756. 1515 BNE $C6FC; ANOTHER DRV TO CHK BRANCH
  757. 1517 JSR $C806; BLKS FREE MESSAGE
  758. 1519 CLC
  759. 1521 RTS
  760. 1523 LDA $028D; DRV SEARCH FLG
  761. 1525 BEQ $C71B; NO MORE DRVS BRANCH
  762. 1527 DEC $028D
  763. 1529 BNE $C70E; NEW DIRECTORY BRANCH
  764. 1531 DEC $028D
  765. 1533 JSR $C38F; SWITCH DRVS
  766. 1535 JSR $C806; SEND BLK FREE MESSAGE
  767. 1537 SEC
  768. 1539 JMP $C38F; SWITCH DRVS
  769. 1541 LDA #$00
  770. 1543 STA $0273; # OF BLKS CTR
  771. 1545 STA $028D; DRV SEARCH FLG
  772. 1547 JSR $C7B7; NEW DIRECTORY
  773. 1549 SEC
  774. 1551 RTS
  775. 1553 LDX #$18; LENGTH OF ENTRY IN DIRECTORY
  776. 1555 LDY #$1D; POSISTION OF HI BYTE # OF BLKS
  777. 1557 LDA ($94),Y; LO BYTE#OF BLKS IN FILE
  778. 1559 STA $0273; # OF BLKS CTR
  779. 1561 BEQ $C728
  780. 1563 LDX #$16; DIRECTORY LENGTH LESS 2
  781. 1565 DEY; POINTS TO LO BYTE# OF BLKS IN FILE
  782. 1567 LDA ($94),Y; LO BYTE#OF BLKS IN FILE
  783. 1569 STA $0272; # OF BLKS CTR
  784. 1571 CPX #$16
  785. 1573 BEQ $C73C; MAX DIRECTORY BRANCH
  786. 1575 CMP #$0A
  787. 1577 BCC $C73C; CLR NAME BUFF BUFF
  788. 1579 DEX
  789. 1581 CMP #$64
  790. 1583 BCC $C73C
  791. 1585 DEX
  792. 1587 JSR $C7AC; BLANK NAME BUFF
  793. 1589 LDA ($94),Y; FILE TYPE
  794. 1591 PHA
  795. 1593 ASL; IF (null)OD TYPE SET CARRY
  796. 1595 BPL $C748; PULL FILE TYPE
  797. 1597 LDA #$3C; CODE FOR "<"
  798. 1599 STA $02B2,X; NAME BUFF
  799. 1601 PLA; PULL FILE TYPE
  800. 1603 AND #$0F; MASK HI BITS
  801. 1605 TAY; INDEX
  802. 1607 LDA $FEC5,Y; FILE TYPE TABLE
  803. 1609 STA $02B1,X; NAME BUFF
  804. 1611 DEX
  805. 1613 LDA $FEC0,Y; FILE TYPE TABLE
  806. 1615 STA $02B1,X
  807. 1617 DEX
  808. 1619 LDA $FEBB,Y; FILE TYPE TABLE
  809. 1621 STA $02B1,X
  810. 1623 DEX
  811. 1625 DEX
  812. 1627 BCS $C76B; (null)OD ENTRY BRANCH
  813. 1629 LDA #$2A; CODE FOR "*" IMPROPERLY CLOSED FILE
  814. 1631 STA $02B2,X; NAME BUFF
  815. 1633 LDA #$A0; SHIFTED SPACE BETWEEN NAME & TYPE
  816. 1635 STA $02B1,X
  817. 1637 DEX
  818. 1639 LDY #$12; PTR END OF NAME
  819. 1641 LDA ($94),Y; MOVE NAME DIRECTORY BUFF
  820. 1643 STA $02B1,X; TO NAME BUFF
  821. 1645 DEX
  822. 1647 DEY
  823. 1649 CPY #$03
  824. 1651 BCS $C773; MORE NAME BRANCH
  825. 1653 LDA #$22; QUOTATION MARK
  826. 1655 STA $02B1,X; BEFORE NAME
  827. 1657 INX
  828. 1659 CPX #$20
  829. 1661 LDA $02B1,X
  830. 1663 BCS $C793
  831. 1665 CMP #$22; QUOTE
  832. 1667 BEQ $C793; END OF NAME BRANCH
  833. 1669 CMP #$A0; SHIFTED SPACE
  834. 1671 BNE $C783; MORE NAME BRANCH
  835. 1673 LDA #$22; QUOTE
  836. 1675 STA $02B1,X; END OF NAME QUOTE
  837. 1677 INX
  838. 1679 CPX #$20
  839. 1681 BCS $C7A7; FIND NEXT FILE
  840. 1683 LDA #$7F
  841. 1685 AND $02B1,X
  842. 1687 STA $02B1,X; CLR HI BIT REMAINING CHARCHTERS
  843. 1689 BPL $C798; MORE CHRTRS BRANCH
  844. 1691 JSR $C4B5; FIND NEXT FILE
  845. 1693 SEC
  846. 1695 RTS
  847. 1697 ; ** BLANK NAME BUFF **
  848. 1699 LDY #$1B; LENGTH OF NAME BUFF
  849. 1701 LDA #$20; CODE FOR SPACE
  850. 1703 STA $02B2,Y; NAME BUFF
  851. 1705 DEY
  852. 1707 BNE $C7B0; MORE SPACE BRANCH
  853. 1709 RTS
  854. 1711 ; ** NEW DIRECTORY IN LISTING **
  855. 1713 JSR $F119; SET BLK ACCESS (BAM) PTR
  856. 1715 JSR $F0DF; READ BAM TO $0700 $07FF
  857. 1717 JSR $C7AC; BLANK NAME BUFF
  858. 1719 LDA #$FF
  859. 1721 STA $6F; TEMP WORK BUFF
  860. 1723 LDX $7F; CURRENT DRV # BUFF
  861. 1725 STX $0272; # OF BLKS BUFF
  862. 1727 LDA #$00
  863. 1729 STA $0273; # OF BLKS BUFF
  864. 1731 LDX $F9; CURRENT CMND #
  865. 1733 LDA $FEE0,X; HI BYTE PTR DATA BUFF
  866. 1735 STA $95; DIRECTORY BUFF
  867. 1737 LDA $FE88; #$90 OFFSET OF NAME IN BAM SECT
  868. 1739 STA $94; DIRECTORY BUFF
  869. 1741 LDY #$16; MAX NAME LENGTH
  870. 1743 LDA ($94),Y; PTR DIRECTORY BUFF
  871. 1745 CMP #$A0; SHIFTED SPACE
  872. 1747 BNE $C7ED; STORE CHRTR BRANCH
  873. 1749 LDA #$31; ASCII 1
  874. 1751 BIT $94B1; ** FORCES BRANCH TO $C7ED **
  875. 1753 CMP #$A0; SHIFTED SPACE
  876. 1755 BNE $C7ED; NOT SHIFTED SPACE BRANCH
  877. 1757 LDA #$20; CODE FOR SPACE
  878. 1759 STA $02B3,Y; NAME BUFF
  879. 1761 DEY
  880. 1763 BPL $C7E5; MORE CHRTRS BRANCH
  881. 1765 LDA #$12; CODE REVERSE PRINT
  882. 1767 STA $02B1; NAME BUFF
  883. 1769 LDA #$22; CODE FOR QUOTE
  884. 1771 STA $02B2; NAME BUFF
  885. 1773 STA $02C3; END OF NAME BUFF
  886. 1775 LDA #$20; CODE FOR SPACE
  887. 1777 STA $02C4; SPACE BETWEEN NAME ("NAME"X)
  888. 1779 RTS
  889. 1781 ; ** SET UP BLKS FREE MESSAGE **
  890. 1783 JSR $C7AC; BLANK NAME BUFF
  891. 1785 LDY #$0B; MESSAGE LENGTH - 1
  892. 1787 LDA $C817,Y; BLKS FREE MESSAGE
  893. 1789 STA $02B1,Y; NAME BUFF
  894. 1791 DEY
  895. 1793 BPL $C80B; MORE MESSAGE BRANCH
  896. 1795 JMP $EF4D; GET # OF FREE BLKS
  897. 1797 .FILE DISK ROM 2
  898.