home *** CD-ROM | disk | FTP | other *** search
- 1 LDA #$00; HEAD NOT ON TRK ZERO OFFSET
- 3 STA $0299; RECOVERY PTR
- 5 STA $029A; TOTAL TRK OFFSET
- 7 LDY $0299
- 9 LDA $029A
- 11 SEC
- 13 SBC $FEDB,Y; #$01
- 15 STA $029A
- 17 LDA $FEDB,Y
- 19 JSR $D676; MOVE HEAD
- 21 INC $0299
- 23 JSR $D6A6; ATTEMPT RECOVERY
- 25 CMP #$02; ERROR CODE
- 27 BCC $D625; RECOVERED
- 29 LDY $0299
- 31 LDA $FEDB,Y
- 33 BNE $D600; TRY ANOTHER RECOVERY
- 35 LDA $029A
- 37 JSR $D676; TRY ANOTHER OFFSET
- 39 LDA $00,X; CMND BUFF
- 41 CMP #$02; ERROR CODE
- 43 BCC $D65C; NO ERROR BRANCH
- 45 BIT $6A; CHECK BIT 7
- 47 BPL $D644; BIT CLEAR BUMP HEAD TRK 1
- 49 PLA; ORIGINAL CMND
- 51 CMP #$90; WRITE
- 53 BNE $D63F; NO WRITE BRANCH
- 55 ORA $7F; TRK NUM BUFF
- 57 STA $025B,X; LAST CMND BUFF
- 59 LDA $00,X; HOLDS ERROR CODE
- 61 JSR $E60A; ERROR HANDLING
- 63 PLA; ORIGINAL CMND
- 65 BIT $0298; CHECK BIT 7
- 67 BMI $D66D; BIT 7 SET ERROR BRANCH
- 69 PHA
- 71 LDA #$C0; CODE FOR BUMP TRK 1
- 73 ORA $7F; TRK NUM BUFF
- 75 STA $00,X; CMND BUFF
- 77 LDA $00,X
- 79 BMI $D651; CMND STILL WORKING BRANCH
- 81 JSR $D6A6; TRY AGAIN BRANCH
- 83 CMP #$02; ERROR CODE
- 85 BCS $D635; ERROR BRANCH QUIT
- 87 PLA
- 89 CMP #$90; WRITE
- 91 BNE $D66D; NO WRITE BRANCH
- 93 ORA $7F; DRV NUM BUFF
- 95 STA $025B,X; LAST CMND BUFF
- 97 JSR $D6A6; TRY AGAIN
- 99 CMP #$02; ERROR CODE
- 101 BCS $D63F; STILL ERROR QUIT
- 103 PLA
- 105 STA $7F
- 107 PLA
- 109 TAY
- 111 LDA $00,X; ERROR CODE
- 113 CLC
- 115 RTS
- 117 ; ** ADJUST HEAD OFFSET (MOVE HEAD) **
- 119 CMP #$00
- 121 BEQ $D692; NO OFFSET NEEDED
- 123 BMI $D688; STEP HEAD IN BRANCH
- 125 ; IF HERE STEP HEAD OUT
- 127 LDY #$01; HOLDS 1 TRK OUT
- 129 JSR $D693; MOVE HEAD OUT LOWER TRKS
- 131 SEC
- 133 SBC #$01
- 135 BNE $D67C; NOT FINISHED BRANCH
- 137 BEQ $D692; FINISHED BRANCH
- 139 ; IF HERE MOVE HEAD IN
- 141 LDY #$FF
- 143 JSR $D693; MOVE HEAD IN HIGHER TRKS
- 145 CLC
- 147 ADC #$01
- 149 BNE $D688; NOT FINISHED
- 151 RTS
- 153 ; ** STEP HEAD IN OR OUT **
- 155 PHA
- 157 TYA; NUM OF STEPS TO MOVE
- 159 LDY $7F; DRV NUM BUFF
- 161 STA $02FE,Y; PHASE OF STEPPER MOTOR (IN OUT)
- 163 CMP $02FE,Y
- 165 BEQ $D69A; HEAD NOT MOVED BRANCH
- 167 LDA #$00
- 169 STA $02FE,Y; KEEP HEAD IN PLACE
- 171 PLA
- 173 RTS
- 175 LDA $6A; RETRY CTR
- 177 AND #$3F; MASK HI BITS
- 179 TAY
- 181 LDA $026D; ERROR LED MASK (FLASH)
- 183 EOR $1C00; DISK CONTROLLER
- 185 STA $1C00; TURN OFF LED
- 187 LDA $025B,X; LAST CMND BUFF
- 189 STA $00,X; CMND BUFF
- 191 LDA $00,X
- 193 BMI $D6B9; CMND NOT FINISHED BRANCH
- 195 CMP #$02; ERROR CODE
- 197 BCC $D6C4; NO ERROR BRANCH
- 199 DEY; ERROR CTR
- 201 BNE $D6AB; MORE TRYS BRANCH
- 203 PHA; HOLDS ERROR CODE
- 205 LDA $026D
- 207 ORA $1C00
- 209 STA $1C00; TURN DRV LED ON
- 225 PLA; ERROR CODE
- 227 RTS
- 229 ; ** SET HEADER FOR ACTIVE BUFF **
- 231 JSR $DF93; GET ACTIVE BUFF NUM
- 233 ASL
- 235 TAY
- 237 LDA $80; TRK NUM BUFF
- 239 STA $0006,Y; TRK FOR CMND
- 241 LDA $81; SECT NUM BUFF
- 243 STA $0007,Y; SECT FOR CMND
- 245 LDA $7F; DRV NUM BUFF
- 247 ASL
- 249 TAX
- 251 RTS
- 253 LDA $83; SEC ADDR BUFF
- 255 PHA
- 257 LDA $82; INDEX CURRENT CHNL
- 259 PHA
- 261 LDA $81; SECT NUM BUFF
- 263 PHA
- 265 LDA $80; TRK NUM BUFF
- 267 PHA
- 269 LDA #$11; SEC ADD (INTERNAL READ)
- 271 STA $83
- 273 JSR $DE3B; FIND READ CHNL
- 275 LDA $024A; FILE TYPE BUFF
- 277 PHA
- 279 LDA $E2; DEFAULT FLAG
- 281 AND #$01
- 283 STA $7F
- 285 LDX $F9; CMND CODE BUFF
- 287 EOR $025B,X; LAST CMND BUFF
- 289 LSR
- 291 BCC $D715; DONT CHANGE DRV BRANCH
- 293 LDX #$01; CODE SEARCHING DELETED FILE
- 295 STX $0292; INDEX 1ST AVAIL ENTRY
- 297 JSR $C5AC; SEARCH DIRECTORY
- 299 BEQ $D730; NO ROOM THIS SECT BRANCH
- 301 BNE $D73D; FND SPACE FOR NEW ENTRY
- 303 LDA $0291; SECT 1ST AVAIL ENTRY
- 305 BEQ $D726; DIDN'T LOACATE DELETED FILE
- 307 CMP $81; SECT NUM BUFF
- 309 BEQ $D73D; RIGHT SECT IN MEMORY
- 311 STA $81
- 313 JSR $D460; READ SECT
- 315 JMP $D73D
- 317 LDA #$01; CODE LOOK FOR DELETED FILE
- 319 STA $0292
- 321 JSR $C617; FIND DELETED OR EMPTY DIRECTORY
- 323 BNE $D73D; FND DELETED OR EMPTY
- 325 JSR $D48D; READ NEW SECT
- 327 LDA $81
- 329 STA $0291
- 331 LDA #$02
- 333 STA $0292
- 335 LDA $0292; INDEX 1ST AVAIL ENTRY
- 337 JSR $D4C8; SET PTRS
- 339 PLA
- 341 STA $024A; FILE TYPE BUFF
- 343 CMP #$04; CODE RELATIVE FILE
- 345 BNE $D74D; NOT RELATIVE
- 347 ORA #$80; SET BIT 7
- 349 JSR $CFF1; STORE FILE TYPE IN BUFF
- 351 PLA
- 353 STA $0280; TRK LINK BUFF
- 355 JSR $CFF1
- 357 PLA
- 359 STA $0285; SECT LINK BUFF
- 361 JSR $CFF1
- 363 JSR $DF93; GET ACTIVE BUFF NUM
- 365 TAY
- 367 LDA $027A; FILENM PTR TABLE
- 369 TAX
- 371 LDA #$10; MAX LENGTH FILENM
- 373 JSR $C66E; PUT FILENM IN BUFF
- 375 LDY #$10; FILL DIRECTORY ENTRY 0'S
- 377 LDA #$00
- 379 STA ($94),Y
- 381 INY
- 383 CPY #$1B
- 385 BCC $D76F; MORE FILL BRANCH
- 387 LDA $024A; FILE TYPE BUFF
- 389 CMP #$04
- 391 BNE $D790; NOT RELATIVE FILE BRANCH
- 393 LDY #$10
- 395 LDA $0259; SIDE SECT TRK NUM
- 397 STA $($94),Y; DIRECTORY BUFF PTR
- 399 INY
- 401 LDA $025A; SIDE SECT SECT NUM
- 403 STA $($94),Y
- 405 INY
- 407 LDA $0258; RECORD SIZE
- 409 STA $($94),Y
- 411 JSR $D464; WRITE DIRECTORY SECT
- 413 PLA
- 415 STA $82; INDEX CURRENT CHNL
- 417 TAX
- 419 PLA
- 421 STA $83; SEC ADDR BUFF
- 423 LDA $0291; SECT 1ST AVAIL ENTRY
- 425 STA $D8; SECT DIRECTORY ENTRY
- 427 STA $0260,X; SECT DIRECTORY ENTRY BUFF
- 429 LDA $0292; INDEX 1ST AVAIL ENTRY
- 431 STA $DD; INDEX OF DIRECTORY ENTRIES
- 433 STA $0266,X; INDEX DIREC ENTRY BUFF
- 435 LDA $024A; FILE TYPE
- 437 STA $E7; PATTERN FLAG
- 439 LDA $7F; DRV NUM BUFF
- 441 STA $E2; DEFAULT FLAG
- 443 RTS
- 445 ; ** OPEN CHNL FROM SERIAL BUS **
- 447 ; OPEN LOAD & SAVE CMNDS
- 449 LDA $83; SEC ADDR BUFF
- 451 STA $024C; TEMP STORAGE SEC ADD
- 453 JSR $C2B3; SET CMND PTRS
- 455 STX $022A; CMND CODE NUM
- 457 LDX $0200; CMND BUFF
- 459 LDA $024C
- 461 BNE $D7F3; NOT LOAD BRANCH
- 463 CPX #$2A; CODE FOR "*"
- 465 BNE $D7F3; LOAD LAST PROGRAM REFERENCE
- 467 LDA $7E; LAST PROGRAM BUFF
- 469 BEQ $D81C;NO LAST PROGRAM
- 471 STA $80; TRK NUM BUFF
- 473 LDA $026E; LAST PROGRAM DRV #
- 475 STA $7F; DRV NUM BUFF
- 477 STA $E2; DEFAULT FLAG
- 479 LDA #$02; CODE FOR PROGRAM
- 481 STA $E7; PATTERN FLAG
- 483 LDA $026F; LAST PROGRAM SECT
- 485 STA $81; SECT NUM BUFF
- 487 JSR $C100; TURN ON DRV LED
- 489 JSR $DC46; OPEN READ CHNL
- 491 LDA #$04; PROGRAM TYPE X 2
- 493 ORA $7F
- 495 LDX $82; INDEX CURRENT CHNL
- 497 STA $00EC,Y; CHNL FILE TYPE BUFF
- 499 JMP $C194; TERMINATE ROUTINE
- 501 CPX #$24; CODE FOR "$"
- 503 BNE $D815; NOT DIRECTORY LOAD
- 505 LDA $024C; TEMP SEC ADDR
- 507 BNE $D7FF; OPEN SEQUENTIAL FILE BRANCH
- 509 JMP $DA55; LOAD DIRECTORY
- 511 ; ** OPEN DIRECTORY SEQUENTIAL **
- 513 JSR $C1D1; PARSE CMND
- 515 LDA $FE85; #$12 DIRECTORY TRK LINK
- 517 STA $80; TRK NUM BUFF
- 519 LDA #$00
- 521 STA $81; SECT BUFF
- 523 JSR $DC46; OPEN READ CHNL
- 525 LDA $7F; DRV NUM BUFF
- 527 ORA #$02; CODE SEQUENTIAL FILE
- 529 JMP $D7EB; TERMINATE ROUTINE
- 531 CPX #$23; CODE FOR "#"
- 533 BNE $D82B; NOT DIRECT ACCESS BRANCH
- 535 JMP $CB884; OPEN DIRECT ACCESS BUFF
- 537 LDA #$02; CODE PROGRAM FILE
- 539 STA $0296; MATCH TYPE FLAG
- 541 LDA #$00
- 543 STA $7F; DRV NUM BUFF
- 545 STA $028E; LAST DRV W/O ERROR BUFF
- 547 JSR $D042; INITIALIZE DRV 0
- 549 JSR $C1E5; PARSE CMND FOR ":"
- 551 BNE $D834; NOT ":" BRANCH
- 553 LDX #$00
- 555 BEQ $D840; FORCED BRANCH
- 557 TXA
- 559 BEQ $D83C
- 561 LDA #$30; CODE BAD SYNTAX
- 563 JMP $C1C8; ERROR HANDLING
- 565 DEY; POINTS TO ":"
- 567 BEQ $D840; ":" IS FIRST CHAR
- 569 DEY; POINT BYTE BEFORE ":"
- 571 STY $027A; FILENM PTR TABLE
- 573 LDA #$8D; CODE SHIFTED RETURN
- 575 JSR $C268; PARSE REST OF CMND
- 577 INX; FILE CTR
- 579 STX $0278; FILENM # 2 CTR
- 581 JSR $C312; SET UP DRV & PTRS
- 583 JSR $C3CA; OPTIMAL SEARCH PATTERN
- 585 JSR $C49D; SEARCH DIRECTORY FOR FILE
- 587 LDX #$00
- 589 STX $0258; RECORD SIZE
- 591 STX $0297; ACTIVE FILE MODE (R/W)
- 593 STX $024A; FILE TYPE
- 595 INX
- 597 CPX $0277; FILENM # 1 CTR
- 599 BCS $D876; NO WILD CARD BRANCH
- 601 JSR $DA09; SET FILE TYPE & MODE
- 603 INX
- 605 CPX $0277
- 607 BCS $D876; NO WILD CARD BRANCH
- 609 CPY #$04
- 611 BEQ $D8B1; RELATIVE FILE BRANCH
- 613 JSR $DA09
- 615 LDX $024C; TEMP SEC ADD
- 617 STX $83; SEC ADDR BUFF
- 619 CPX #$02
- 621 BCS $D891; NOT LOAD OR SAVE BRANCH
- 623 STX $0297; ACTIVE FILE MODE (R/W)
- 625 LDA #$40; BAM DIRTY CODE
- 627 STA $02F9; DONT WRITE BAM FLAG
- 629 LDA $024A; FILE TYPE
- 631 BNE $D8A7; NOT DELETED FILE
- 633 LDA #$02; PROGRAM FILE CODE
- 635 STA $024A
- 637 LDA $024A
- 639 BNE $D8A7; SCRATCHED FILE TYPE
- 641 LDA $E7; PATTERN FLAG
- 643 AND #$07; FILE TYPE MASK
- 645 STA $024A
- 647 LDA $0280; TRK FILE LINK
- 649 BNE $D8A7; FILE EXISTS BRANCH
- 651 LDA #$01; CODE SEQUENTIAL FILE
- 653 STA $024A; FILE TYPE BUFF
- 655 LDA $0297; ACTIVE FILE MODE (R/W)
- 657 CMP #$01; CODE WRITE MODE
- 659 BEQ $D8C6
- 661 JMP $D940; OPEN TO READ OR LOAD
- 663 ; ** RELATIVE FILES **
- 665 LDA $027A,X; FILENM PTR TABLE
- 667 LDA $0200,Y; CMND BUFF
- 669 STA $0258; RECORD LENGTH
- 671 LDA $0280; TRK FILE LINK
- 673 BNE $D876; FILE PRESENT BRANCH
- 675 LDA #$01; CODE FOR WRITE MODE
- 677 STA $0297; ACTIVE FILE MODE (R/W)
- 679 BNE $D876; FORCED BRANCH
- 681 LDA $E7; PATTERN FLAG
- 683 AND #$80
- 685 TAX
- 687 BNE $D8E1; NOT DELETED FILE BRANCH
- 689 LDA #$20
- 691 BIT $E7
- 693 BEQ $D8D9; NO PATTERN MATCH BRANCH
- 695 JSR $C8B6; DELETE DIRECTORY WRITE NEW SECT
- 697 JMP $D9E3; OPEN WRITE CHNL
- 699 LDA $0280; TRK FILE LINK
- 701 BNE $D8E1; EXISTING FILE BRANCH
- 703 JMP $D9E3
- 705 LDA $0200; CMND BUFF
- 707 CMP #$40; CODE FOR "@"
- 709 BEQ $D8F5; REPLACE FILE BRANCH
- 711 TXA
- 713 BNE $D8F0; ERROR BRANCH
- 715 LDA #$63; FILE EXISTS ERROR CODE
- 717 JMP $C1C8; ERROR HANDLING
- 719 LDA #$33; BAD FILENM ERROR CODE
- 721 JMP $C1C8
- 723 ; ** REPLACE FILE "@" **
- 725 LDA $E7; PATTERN FLAG
- 727 AND #$07; FILE TYPE MASK
- 729 CMP $024A; FILE TYPE
- 731 BNE $D965; ERROR BRANCH
- 733 CMP #$04
- 735 BEQ $D965; RELATIVE FILE BRANCH
- 737 JSR $DCDA; OPEN WRITE CHNL
- 739 LDA $82;INDEX CURRENT CHNL
- 741 STA $0270; WRITE INDEX
- 743 LDA #$11
- 745 STA $83; SEC ADDR BUFF
- 747 JSR $D0EB; FIND READ CHNL
- 749 LDA $0294; CURRENT INDEX BUFF
- 751 JSR $D4C8; SET PTRS TO POINT TO BYTE
- 753 LDY #$00
- 755 LDA ($94),Y; FILE TYPE
- 757 ORA #$20; SET REPLACE BIT
- 759 STA ($94),Y; DIRECTORY BUFF PTR
- 761 LDY #$1A; CODE MOVE NEW TRK LINK
- 763 LDA $80; TRK NUM BUFF
- 765 STA ($94),Y
- 767 INY; POINTS TO NEW SECT LINK
- 769 LDA $81; SECT NUM BUFF
- 771 STA ($94),Y
- 773 LDX $0270; WRITE INDEX BUFF
- 775 LDA $D8; SECT DIRECTORY ENTRIES
- 777 STA $0260,X; SECT DIRECTORY ENTRY BUFF
- 779 LDA $DD; INDEX DIRECTORY ENTRIES
- 781 STA $0266,X; INDEX DIRECTORY ENTRY BUFF
- 783 JSR $DE3B; SET TRK & SEC FROM HEADER
- 785 JSR $D464; DIRECT WRITE DIRECTORY TO DISK
- 787 JMP $D9EF; FINISH OPENING FILE
- 789 ; ** TEST DIRECTORY TRK LINK **
- 791 LDA $0280; TRK FILE LINK
- 793 BNE $D94A; FILE EXISTS BRANCH
- 795 LDA #$62; FILE NOT FND CODE
- 797 JMP $C1C8; ERROR HANDLING
- 799 LDA $0297; FILE MODE (R/W)
- 801 CMP #$03
- 803 BEQ $D95C; OPEN TO MODIFY BRANCH
- 805 LDA #$20
- 807 BIT $E7; CHECK BIT 5 FILE TYPE
- 809 BEQ $D95C; FILE CLOSED OR OPEN PROPERLY
- 811 LDA #$60; FILE OPEN ERROR CODE
- 813 JMP $C1C8; ERROR HANDLING
- 815 LDA $E7; PATTERN FLAG
- 817 AND #$07; MASK HI BITS
- 819 CMP $024A; FILE TYPE
- 821 BEQ $D96A; FILE MATCH BRANCH
- 823 LDA #$64; FILE MISMATCH CODE
- 825 JMP $C1C8
- 827 LDY #$00
- 829 STY $0279; FILENM # 2 PTR
- 831 LDX $0297; FILE MODE (R/W)
- 833 CPX #$02
- 835 BNE $D990; NOT OPEN TO APPEND
- 837 CMP #$04
- 839 BEQ $D965; RELATIVE FILE BRANCH
- 841 ; ** OPEN TO APPEND ROUTINE **
- 843 LDA ($94),Y; FILE TYPE
- 845 AND #$4F
- 847 STA ($94),Y
- 849 LDA $83; SEC ADDR BUFF
- 851 PHA
- 853 LDA #$11; SEC ADD INTERNAL READ
- 855 STA $83
- 857 JSR $DE3B; SET TRK & SEC FROM HEADER
- 859 JSR $D464; DIRECT WRITE DIRECTORY TO DISK
- 861 PLA
- 863 STA $83
- 865 JSR $D490; OPEN FILE FOR READ
- 867 LDA $0297; FILE MODE (R/W)
- 869 CMP #$02
- 871 BNE $D9EF; NOT APPEND BRANCH
- 873 JSR $DA2A; READ TO END OF FILE
- 875 JMP $C194; TERMINATE ROUTINE
- 877 ; ** OPEN FILE TO READ **
- 879 LDY #$13
- 881 LDA ($94),Y; RELATIVE FILE VALUES
- 883 STA $0259; SIDE SECT TRK BUFF
- 885 INY
- 887 LDA ($94),Y
- 889 STA $025A; SIDE SECT SECT BUFF
- 891 INY
- 893 LDA ($94),Y
- 895 LDX $0258; RECORD LENGTH
- 897 STA $0258
- 899 TXA
- 901 BEQ $D9C3; CMND SIZE 0 BRANCH
- 903 CMP $0258
- 905 BEQ $D9C3; RECORD LENGTHS EQUAL
- 907 LDA #$50; READ PAST END OF FILE CODE
- 909 JSR $C1C8; ERROR HANDLING
- 911 LDX $0279; FILENM # 2 PTR
- 913 LDA $0280,X; TRK FILE LINK
- 915 STA $80; TRK NUM BUFF
- 917 LDA $0285,X; SECT FILE LINK
- 919 STA $81; SECT NUM BUFF
- 921 JSR $DC46; OPEN READ CHNL
- 923 LDY $82; INDEX CURRENT CHNL
- 925 LDX $0279
- 927 LDA $D8,X; SECT DIRECTORY ENTRIES
- 929 STA $0260,Y; SECT DIRECT ENTRY BUFF
- 931 LDA $DD,X; INDEX DIRECTORY ENTRIES
- 933 STA $0266,Y; INDEX DIRECT ENTRY BUFF
- 935 RTS
- 937 ; ** OPEN WRITE FILE **
- 939 LDA $E2; DEFUALT FLAG
- 941 AND #$01
- 943 STA $7F; DRV NUM BUFF
- 945 JSR $DCDA; OPEN WRITE CHNL
- 947 JSR $D6E4; ADD ENTRY TO DIRECTORY
- 949 LDA $83; SEC ADDR BUFF
- 951 CMP #$02
- 953 BCS $DA06; NOT PROGRAM FILE BRANCH
- 955 JSR $DE3E; SET TRK & SEC FROM LAST HEADER READ
- 957 LDA $80; TRK NUM BUFF
- 959 STA $7E; LAST PROGRAM ACCESSED BUFF
- 961 LDA $7F
- 963 STA $026E; LAST PROG DRV BUFF
- 965 LDA $81; SECT NUM BUFF
- 967 STA $0226F; LAST PROG SECT BUFF
- 969 JMP $C199; TERMINATE ROUTINE
- 971 ; ** CHECK MODE/FILE TYPE **
- 973 LDY $027A,X; FILENM PTR TABLE
- 975 LDA $0200,Y; MODE/FILE TYPE IN CMND
- 977 LDY #$04; NUM OF MODES CODE
- 979 DEY
- 981 BMI $DA1C; NO MORE BRANCH
- 983 CMP $FEB2,Y; MODE TABLE
- 985 BNE $DA11; CHECK FOR MORE
- 987 STY $0297; FILE MODE BUFF
- 989 LDY #$05; NUM OF TYPES
- 991 DEY
- 993 BMI $DA29; NO MORE BRANCH
- 995 CMP $FEB6,Y; TYPES TABLE
- 997 BNE $DA1E; CHECK FOR MORE
- 999 STY $024A; FILE TYPE BUFF
- 1001 RTS
- 1003 ; ** APPEND INFO TO END OF FILE **
- 1005 JSR $CA39; GET BYTE FROM DATA CHNL
- 1007 LDA #$80
- 1009 JSR $DDA6; TEST END OF FILE (EOF)
- 1011 BEQ $DA2A; NOT END BRANCH
- 1013 JSR $DE95; SET TRK & SEC FROM LINKS
- 1015 LDX $81; SECT NUM BUFF
- 1017 INX
- 1019 TXA
- 1021 BNE $DA42; SPACE LEFT END OF SECT
- 1023 JSR $D1A3; NO SPACE GET NEXT SECT
- 1025 LDA #$02; SKIP TRK & SEC LINK
- 1027 JSR $D4C8; SET ACTIVE BUFF PTRS
- 1029 LDX $82; INDEX CURRENT CHNL
- 1031 LDA #$01; CHNL READY CODE
- 1033 STA $F2,X; CHNL STATUS BUFF
- 1035 LDA #$80
- 1037 ORA $82
- 1039 LDX $83; SEC ADDR BUFF
- 1041 STA $0222B,X; CURRENT STATUS TABLE
- 1043 RTS
- 1045 ; ** LOAD DIRECTORY "$" **
- 1047 LDA #$0C; CODE FOR LOAD
- 1049 STA $022A; CMND CODE BUFF
- 1051 LDA #$00; CODE FOR DRV 0
- 1053 LDX $0274; CMND LENGTH
- 1055 DEX
- 1057 BEQ $DA6D; LOAD COMPLETE DIRECTORY
- 1059 DEX
- 1061 BNE $DA86; LOAD BY NAME BRANCH
- 1063 LDA $0201; 2ND CHAR IN CMND BUFF
- 1065 JSR $C3BD; TEST ASCII 0 OR 1
- 1067 BMI $DA86; LOAD BY NAME BRANCH
- 1069 STA $E2; DEFUALT DRV FLAG
- 1071 INC $0277; FILENM # 1 CTR
- 1073 INC $0278; FILENM # 2 CTR
- 1075 INC $027A; FILENM PTR TABLE
- 1077 LDA #$80
- 1079 STA $E7; PATTERN TYPE FLAG
- 1081 LDA #$2A; CODE FOR "*"
- 1083 STA $0200; 1ST BYTE CMND BUFF
- 1085 STA $0201; 2ND " " "
- 1087 BNE $DA93; [129]CED BRANCH
- 1089 JSR $C1E5; FIND COL[145] IN CMND
- 1091 BNE $DA90; "*" [168] [165]D BRANCH
- 1093 JSR $C2DC; "*" [165]D ZERO BUFF
- 1095 LDY #$03
- 1097 DEY
- 1099 DEY
- 1101 STY $027A
- 1103 JSR $C200; PARSE CMND SET TABLES
- 1105 JSR $C398; SET FI[195]M PTRS & CHK TYPE
- 1107 JSR $C320; SET UP DRV[173]S
- 1109 JSR $C3CA; SET DRV SEARCH PATTERN
- 1111 JSR $C7B7; [135] BAM
- 1113 JSR $C49D; FILE FILE START ENTRY
- 1115 JSR $EC9E; START DIREC[164]RY [147]ING
- 1117 JSR $D137; [161] 1ST BYTE FROM BUFF
- 1119 LDX $82; INDEX CURRENT CHNL
- 1121 STA $023E,X; [131] BYTE STORAGE
- 1123 LDA $7F; DRV NUM BUFF
- 1125 STA $028E; LAST DRV W[173]O ERR[176] BUFF
- 1127 [176]A #$04
- 1129 STA $EC,X; CHNL FILE TYPE BUFF
- 1131 LDA #$00
- 1133 STA $A3; [130] BYTE CMND BUFF PTR
- 1135 RTS
- 1137 ; [172][172] [160] FILE FR[145] SEC ADDR [172][172]
- 1139 LDA #$00
- 1141 STA $02F9; D[145]T WRITE BAM FLAG
- 1143 LDA $83; SEC ADDR BUFF
- 1145 BNE $DAD4; [168] DIRECT [147] SEC ADD
- 1147 LDA #$00
- 1149 STA $0254; DIREC[164]RY [155] FLAG
- 1151 JSR $D227; [184]E THE CHNL
- 1153 JMP $D4DA; [184]E [181]ERNAL CHNL
- 1155 CMP #$0F
- 1157 BEQ $DAEC; [160] ALL FILE BRANCH
- 1159 JSR $DB02; [160] 1 CHNL
- 1161 LDA $83
- 1163 CMP #$02
- 1165 BCC $DAD1; ([148]) [160] [181]ERNAL CHNL
- 1167 LDA $026C; ERR[176] W[176]D [129] RECOVERY
- 1169 BNE $DAE9; ERR[176] BRANCH
- 1171 JMP $C194; TERMINATE CMND
- 1173 JMP $C1AD; ERR[176] H[175]LING
- 1175 ; [172][172] [160] ALL FILES [172][172]
- 1177 LDA #$0E; NUM OF FILES
- 1179 STA $83; SEC ADDR BUFF
- 1181 JSR $DB02; [160] CHNL
- 1183 DEC $83
- 1185 BPL $DAF0; M[176]E [164] [160] BRANCH
- 1187 LDA $026C; ERR[176] W[176]D
- 1189 BNE $DAFF; ERR[176] BRANCH
- 1191 JMP $C194; TERMINATE CMND
- 1193 JMP $C1AD; ERR[176] H[175]LING
- 1195 ; [172][172] [160] FILE BY SEC ADDR [172][172]
- 1197 LDA $83; SEC ADDR BUFF
- 1199 LDA $022B,X; CURRENT STATUS CHNL BUFF
- 1201 CMP #$FF; CODE [129] [160]D
- 1203 BNE $DB0C
- 1205 RTS
- 1207 [175] #$0F; MASK [129] BUFF # [145]LY
- 1209 STA $82; INDEX CURRENT CHNL
- 1211 JSR $D125; [161] FILE TYPE
- 1213 CMP #$07
- 1215 BEQ $DB26; DIRECT CHNL BRANCH
- 1217 CMP #$04
- 1219 BEQ $DB2C; RELATIVE FILE BRANCH
- 1221 JSR $D107; FIND WRITE CHNL
- 1223 BCS $DB29; NO CHNL [165]D BRANCH
- 1225 JSR $DB62; [160] SEQUENTIAL WRITE
- 1227 JSR $DBA5; [160] DIREC[164]RY
- 1229 JSR $EEF4; WRITE BAM
- 1231 JMP $D227; [184]E CHNL TERMINATE
- 1233 ; [172][172] [160] RELATIVE FILE [172][172]
- 1235 JSR $DDF1; [139] BAM DIRTY REWRITE
- 1237 JSR $CF1E; SET DOUBLE BUFFING
- 1239 JSR $E1CB; [185]ISTI[145] SIDE SECT & BUFF PO[181]
- 1241 LDX $D5; NUM OF SIDE SECT BUFF
- 1243 STX $73; TEMP W[176]K
- 1245 INC $73
- 1247 LDA #$00
- 1249 STA $70; TEMP W[176]K
- 1251 STA $71; " "
- 1253 LDA $D6; INDEX [164] SIDE SECT
- 1255 SEC
- 1257 SBC #$0E; SIDE SECT OFFSET [171] 2
- 1259 STA $72; TEMP W[176]K
- 1261 JSR $DF51; CALCULATE # OF SIDE SECTS
- 1263 LDX $82; INDEX CURRENT CHNL
- 1265 LDA $70
- 1267 STA $B5,X; LO BYTE REC # TABLE
- 1269 LDA $71
- 1271 STA $BB,X; HI " " " "
- 1273 LDA #$40; CODE DIRTY RELATIVE FILE
- 1275 JSR $DDA6; TEST RELATIVE FILE WRITE
- 1277 BEQ $DB5F; D[145]T WRITE BRANCH
- 1279 JSR $DBA5; [160] DIREC[164]RY FILE
- 1281 JMP $D227; CLEAR CHNL TERMINATE
- 1283 ; [172][172] [160] SEQUENTIAL WRITE FILE CHNL [172][172]
- 1285 LDX $82; INDEX CURRENT CHNL
- 1287 LDA $B5,X; LO BYTE BUFF NUM
- 1289 [176]A $BB,X; HI " " "
- 1291 BNE $DB76; AT LEAST 1 BLOCK WRITTEN
- 1293 JSR $D4E8; NO BLOCKS WRITTEN GET BUFF PTR
- 1295 CMP #$02; AT LEAST 1 BYTE WRITTEN
- 1297 BNE $DB76; GET BUFF PTR
- 1299 LDA #$0D; CODE FOR CARRIAGE RETURN
- 1301 JSR $CFF1; WRITE TO DATA BUFF
- 1303 JSR $D4E8; GET BUFF PTR
- 1305 CMP #$02
- 1307 BNE $DB8C; BUFF NOT EMPTY BRANCH
- 1309 JSR $CF1E; EMPTY SWITCH BUFFS
- 1311 LDX $82; INDEX CURRENT CHNL
- 1313 LDA $B5,X
- 1315 BNE $DB88; WRITE MORE BRANCH
- 1317 DEC $BB,X
- 1319 DEC $B5,X
- 1321 LDA #$00
- 1323 SEC
- 1325 SBC #$01
- 1327 PHA; HOLDS NUM OF BYTES WRITTEN
- 1329 LDA #$00
- 1331 JSR $D4C8; SET PTR TO 1ST BYTE DATA BUFF
- 1333 JSR $CFF1; WRITE 0 AS TRK LINK
- 1335 PLA
- 1337 JSR $CFF1; WRITE SECT LINK
- 1339 JSR $D0C7; WRITE DATA BUFF TO DISK
- 1341 JSR $D599; WAIT FOR WRITE TO FINISH
- 1343 JMP $CF1E; CHECK BOTH BUFFS
- 1345 ; ** CLOSE DIRECTORY AFTER WRITE **
- 1347 LDX $82; INDEX CURRENT FILE
- 1349 STX $0270; WRITE LINK INDEX BUFF
- 1351 LDA $83; SEC ADDR BUFF
- 1353 PHA
- 1355 LDA $0260,X; SECT DIRECTORY ENTRY
- 1357 STA $81; SECT NUM BUFF
- 1359 LDA $0266,Y; INDEX DIRECTORY ENTRIES
- 1361 STA $0294; INDEX IN BUFF
- 1363 LDA $EC,X; FILE TYPE BUFF
- 1365 AND #$01
- 1367 STA $7F; DRV NUM BUFF
- 1369 LDA $FE85; #$12 DIRECTORY TRK
- 1371 STA $80; TRK NUM BUFF
- 1373 JSR $DF93; GET ACTIVE BUFF NUM
- 1375 PHA
- 1377 STA $F9; CMND NUM BUFF
- 1379 JSR $D460; READ DIRECTORY SECT
- 1381 LDY #$00
- 1383 LDA $FEE0,X; HI BYTE DATA BUFF TABLE
- 1385 STA $87; TEMP RESULT
- 1387 LDA $0294
- 1389 STA $86; " "
- 1391 LDA ($86),Y; HOLDS FILE TYPE
- 1393 AND #$20
- 1395 BEQ $DC21; NOT A REPLACE FILE
- 1397 ; ** FILE REPLACE ROUTINE **
- 1399 JSR $D125; GET FILE TYPE
- 1401 CMP #$04
- 1403 BEQ $DC29; RELATIVE FILE BRANCH
- 1405 LDA ($86),Y; HOLDS FILE TYPE
- 1407 AND #$8F; MASK REPLACE BIT
- 1409 STA ($86),Y
- 1411 INY
- 1413 LDA ($86),Y
- 1415 STA $80; TRK NUM BUFF
- 1417 STY $71; TEMP WORK
- 1419 LDY #$1B; PTR TO REPLACEMENT LINK
- 1421 LDA ($86),Y
- 1423 PHA; HOLDS REPLACEMENT SECT LINK
- 1425 DEY
- 1427 LDA $($86),Y
- 1429 BNE $DC06; TRK LINK NOT 0 (END)
- 1431 STA $80; TRK NUM BUFF
- 1433 PLA
- 1435 STA $81; SECT NUM BUFF
- 1437 LDA #$67; CODE SYS TRK OR SEC ERROR
- 1439 JSR $E645; ERROR HANDLING
- 1441 PHA; REPLACEMENT TRK LINK
- 1443 LDA #$00
- 1445 STA ($86),Y
- 1447 INY
- 1449 STA ($86),Y
- 1451 PLA
- 1453 LDY $71; ORIGINAL PTR
- 1455 STA ($86),Y
- 1457 INY
- 1459 LDA ($86),Y; OLD SECT LINK
- 1461 STA $81
- 1463 PLA; REPLACEMENT SECT LINK
- 1465 STA ($86),Y
- 1467 JSR $C87D; REMOVE OLD FILE FROM BAM
- 1469 JMP $DC29; FINISH CLOSE
- 1471 LDA ($86),Y; FILE TYPE
- 1473 AND #$0F; MASK HI BITS
- 1475 ORA #$80; SET CLOSE BIT
- 1477 STA ($86),Y
- 1479 LDX $0270; WRITE INDEX ACTIVE BUFF #
- 1481 LDY #$1C; PTR LO BYTE # OF BLOCKS IN FILE
- 1483 LDA $B5,X; NUM OF BLOCKS
- 1485 STA ($86),Y
- 1487 INY
- 1489 LDA $BB,X; HI BYTE # OF BLOCKS
- 1491 STA ($86),Y
- 1493 PLA; ORIGINAL BUFF NUM
- 1495 TAX
- 1497 LDA #$90; CODE FOR WRITE
- 1499 ORA $7F; DRV NUM BUFF
- 1501 JSR $D590; WRITE REVISED DIRECTORY
- 1503 PLA; ORIGINAL SEC ADDR
- 1505 STA $83; SEC ADDR BUFF
- 1507 JMP $D107; FIND ASSIGNED WRITE CHNL
- 1509 ; ** OPEN READ CHNL W/ 2 BUFFS **
- 1511 LDA #$01
- 1513 JSR $D1E2; SET UP 1 READ CHNL
- 1515 JSR $DCB6; CLEAR PTRS
- 1517 LDA $024A; FILE TYPE
- 1519 PHA
- 1521 ASL
- 1523 ORA $7F; DRV NUM
- 1525 STA $EC,X; CHNL FILE TYPE
- 1527 JSR $D09B; READ 1ST 1 OR 2 BLOCK FILE
- 1529 LDX $82; INDEX CURRENT CHNL
- 1531 LDA $80; TRK NUM BUFF
- 1533 BNE $DC65; NOT LAST BLOCK BRANCH
- 1535 LDA $81; SECT NUM BUFF
- 1537 STA $0244,X; LAST CHAR IN BUFF PTR
- 1539 PLA; ORIGINAL FILE TYPE
- 1541 CMP #$04
- 1543 BNE $DCA9; NOT RELATIVE FILE BRANCH
- 1545 LDY $83; SEC ADDR BUFF
- 1547 LDA $022B,Y; CHNL STATUS BUFF
- 1549 ORA #$40; SET BITS READ/WRITE
- 1551 STA $022B,Y
- 1553 LDA $0258; RECORD LENGTH
- 1555 STA $C7,X; RECORD LENGTH BUFF
- 1557 JSR $D28E; SET UP SIDE SECTS
- 1559 BPL $DC81; BUFF AVAIL BRANCH
- 1561 JMP $D20F; NO BUFF FOR SIDE SECTS
- 1563 LDX $82; ACTIVE BUFF NUM
- 1565 STA $CD,X; SIDE SECT TABLES
- 1567 LDY $0259; RECORD LENGTH BUFF
- 1569 STY $80; TRK NUM BUFF
- 1571 LDY $025A; SIDE SECT SECT BUFF
- 1573 STY $81; SECT NUM BUFF
- 1575 JSR $D6D3; SET UP SIDE SEC HEADER IMAGE
- 1577 JSR $DE73; READ SIDE SECT BLOCK
- 1579 JSR $D599; WAIT FOR READ TO FINISH
- 1581 LDX $82
- 1583 LDA #$02
- 1585 STA $C1,X; NEXT RECORD NUM TABLE
- 1587 LDA #$00
- 1589 LSR $D4C8; SET BUFF POINT TO SIDE SEC
- 1591 JSR $E153; SET UP 1ST RECORD
- 1593 JMP $DE3E; RESTORE TRK & SEC PTRS
- 1595 JSR $D156; READ A BYTE
- 1597 LDX $82; ACTIVE BUFF NUM
- 1599 STA $023E,X; DATA BYTE STORAGE
- 1601 LDA #$88; CODE FOR READY TO TALK
- 1603 STA $F2,X; CHNL STATUS
- 1605 RTS
- 1607 ; ** INITIALIZE VARIABLES OPEN CHNL **
- 1609 LDX $82; INDEX CURRENT CHNL
- 1611 LDA $A7,X; CHNL TABLES
- 1613 ASL
- 1615 TAY
- 1617 LDA #$02
- 1619 STA $0099,Y; NEXT BYTE IN BUFF PTR
- 1621 LDA $AE,X; CHNL TABLES
- 1623 ORA #$80; SET BUFF INACTIVE BIT
- 1625 STA $AE,X
- 1627 ASL
- 1629 TAY
- 1631 LDA #$02
- 1633 STA $0099,Y
- 1635 LDA #$00:STA $B5,X; CHNL TABLES
- 1637 STA $BB,X; " "
- 1639 LDA #$00
- 1641 STA $0244,X; LAST CHAR IN BUFF PTR
- 1643 RTS
- 1645 ; ** OPEN WRITE CHNL W/ 2 BUFFS **
- 1647 JSR $F1A9; GET 1ST TRK & SEC
- 1649 LDA #$01
- 1651 JSR $D1DF; GET 1 WRITE BUFF
- 1653 JSR $D6D0; SET HEADER IMAGE
- 1655 JSR $DCB6; SET UP PTRS
- 1657 LDX $82; INDEX CURRENT CHNL
- 1659 LDA $024A; FILE TYPE
- 1661 PHA
- 1663 ASL
- 1665 ORA $7F; DRV NUM BUFF
- 1667 STA $EC,X; CHNL FILE TYPE
- 1669 PLA
- 1671 CMP #$04
- 1673 BEQ $DCFD; RELATIVE FILE BRANCH
- 1675 LDA #$01; ACTIVE LISTEN CODE
- 1677 STA $F2,X; CHNL STATUS
- 1679 RTS
- 1681 LDY $83; SEC ADDR BUFF
- 1683 LDA $022B,Y; CURRENT CHNL STATUS
- 1685 AND #$3F; MASK HI BITS
- 1687 ORA #$40; SET READ/WRITE BIT
- 1689 STA $022B,Y
- 1691 LDA $0258; RECORD LENGTH
- 1693 STA $C7,X; RECORD SIZE TABLE
- 1695 JSR $D28E; GET BUFF FOR SIDE SECTS
- 1697 BPL $DD16; BUFF AVAIL BRANCH
- 1699 JMP $D20F; NO BUFF JMP
- 1701 LDX $82; INDEX CURRENT CHNL
- 1703 STA $CD,X; SIDE SECT TABLES
- 1705 JSR $DEC1; CLEAR SIDE SECT BUFF
- 1707 JSR $F11E; FIND NEXT AVAIL TRK & SEC
- 1709 LDA $80; TRK NUM BUFF
- 1711 STA $0259; SIDE SECT TRK BUFF
- 1713 LDA $81; SECT NUM BUFF
- 1715 STA $025A; SIDE SECT SECT BUFF
- 1717 LDX $82; INDEX CURRENT CHNL
- 1719 LDA $CD,X; SIDE SECT NUM
- 1721 JSR $D6D3; SET UP HEADER
- 1723 LDA #$00
- 1725 JSR $DEE9; SET BUFF PTRS
- 1727 LDA #$00
- 1729 JSR $DD8D; SET NULL SIDE SECT LINK
- 1731 LDA #$11
- 1733 JSR $DD8D; SET SIDE SECT NUM
- 1735 LDA #$00:JSR $DD8D
- 1737 LDA $0258; RECORD LENGTH
- 1739 JSR $DD8D; SET RECORD SIZE
- 1741 LDA #$80
- 1743 JSR $DD8D; SET TRK LINK
- 1745 LDA $81; SECT NUM BUFF
- 1747 JSR $DD8D; SET SECT LINK
- 1749 LDA #$10; SIDE SECT OFFSET CODE
- 1751 JSR $DEE9; SET SIDE SECT OFFSET
- 1753 JSR $DE3E; GET 1ST TRK & SEC 1ST SIDE SECT
- 1755 LDA #$80
- 1757 JSR $DD8D; SET SIDE SECT TRK LINK
- 1759 LDA $81
- 1761 JSR $DD8D; SET SIDE SECT SEC LINK
- 1763 JSR $DE6C; WRITE SIDE SECT BLOCK
- 1765 JSR $D599; WAIT FOR WRITE TO FINISH
- 1767 LDA #$02
- 1769 JSR $D4C8; SET PTR TO DATA
- 1771 LDX $82; INDEX CURRENT CHNL
- 1773 SEC
- 1775 LDA #$00
- 1777 SBC $C7,X; RECORD SIZE
- 1779 STA $C1,X; NEXT RECORD NUM FOR BUFF
- 1781 JSR $E2E2; SET NULL RECORDS ACTIVE BUFF
- 1783 JSR $DE19; SET TRK LINK 0 SECT LINK LAST CHAR
- 1785 JSR $DE5E; WRITE NULL RECORD BLOCK
- 1787 JSR $D599; WAIT FOR WRITE TO FINISH
- 1789 JSR $EEF4; WRITE BAM
- 1791 JMP $DC98; FINISH OPENING CHNL
- 1793 ; ** PUT BYTE IN SIDE SECT **
- 1795 PHA
- 1797 .FILE DISK ROM 5
-