home *** CD-ROM | disk | FTP | other *** search
- 1 LDX $82; INDEX CURRENT CHNL
- 3 LDA $CD,X; SIDE SECT TABLE
- 5 JMP $CFFD; STORE BYTE IN BUFF
- 7 ; ** SET OR CLEAR CARRY FLG **
- 9 BCC $DD9D; CARRY FLG CLEAR BRANCH
- 11 LDX $82; INDEX CURRENT CHNL
- 13 ORA $EC,X; CHNL FILE TYPE
- 15 BNE $DDA3; NEW FILE TYPE BRANCH
- 17 LDX $82
- 19 EOR #$FF; FLIP ALL BITS
- 21 AND $EC,X
- 23 STA $EC,X
- 25 RTS
- 27 ; ** TEST FLG **
- 29 LDX $82; INDEX CURRENT CHNL
- 31 AND $EC,X; CHNL FILE TYPE
- 33 RTS
- 35 ; ** TEST FOR WRITE CMND **
- 37 JSR $DF93; GET ACTIVE BUFF NUM
- 39 TAX; HOLDS BUFF NUM
- 41 LDA $025B,X; LAST CMND BUFF
- 43 AND #$F0; MASK DRV BITS
- 45 CMP #$90; SETS Z FLG IF WRITE (#$90)
- 47 RTS
- 49 ; ** TEST FOR ACTIVE FILES @ READ & WRITE INDEX **
- 51 LDX #$00
- 53 STX $71; TEMP WORK
- 55 LDA $022B,X; BUFF NUM THIS SEC ADD
- 57 CMP #$FF; INACTIVE CODE
- 59 BNE $DDCA; TEST MORE BRANCH
- 61 LDX $71
- 63 INX
- 65 CPX #$10; MAXIMUM SEC ADDRES
- 67 BCC $DDB9; CHECK MORE BRANCH
- 69 RTS
- 71 STX $71; TEMP WORK (SEC ADD)
- 73 AND #$3F; MASK HI BITS
- 75 TAY
- 77 LDA $00EC,Y; FILE TYPE THIS SEC ADD
- 79 AND #$01; MASK NON DRV BITS
- 81 STA $70; TEMP WORK BUFF
- 83 LDX $0253; DIRECTORY ENTRY FND FLG
- 85 LDA $E2,X; DRV NUM THIS SEC ADD
- 87 AND #$01; MASK NON DRV BITS
- 89 CMP $70; HOLDS DRV NUM
- 91 BNE $DDC2; MORE TEST BRANCH
- 93 LDA $0260,Y; SECT DIRECTORY ENTRY BUFF
- 95 CMP $D8,X; SECT DIRECTORY ENTRIES
- 97 BNE $DDC2; MORE TEST BRANCH
- 99 LDA $0266,Y; INDEX DIRECTORY ENTRY BY BUFF
- 101 CMP $DD,X; INDEX OF DIRECTORY ENTRIES
- 103 BNE $DDC2; TEST MORE BRANCH
- 105 CLC; ALL TESTS (null)OD FND ACTIVE FILE
- 107 RTS
- 109 ; ** WRITE OUT BUFF IF DIRTY **
- 111 ; IT'S DIRTY IF RAM DOES NOT MATCH DISK NOT DIRTY NO WRITE
- 113 JSR $DF9E; GET ACTIVE BUFF NUM
- 115 BVC $DDFC; IF V FLG CLEAR NOT DIRTY
- 117 JSR $DE5E; WRITE OUT BUFF TO DISK
- 119 JSR $D599; WAIT FOR WRITE TO FINISH
- 121 RTS
- 123 ; ** PUT TRK & SECT INTO HEADER **
- 125 JSR $DE2B; SET PTRS TO HEADER
- 127 LDA $80; TRK NUM BUFF
- 129 STA ($94),Y; DIRECTORY BUFF
- 131 INY
- 133 LDA $81; SECT NUM BUFF
- 135 STA ($94),Y
- 137 JMP $E105; SET DIRTY BUFF FLG
- 139 ; ** SET TRK & SECT FROM LINK IN BUFF **
- 141 JSR $DE2B; SET PTR TO HEADER
- 143 LDA ($94),Y; DIRECTORY BUFF
- 145 STA $80; TRK NUM BUFF
- 147 INY
- 149 LDA ($94),Y
- 151 STA $81; SECT NUM BUFF
- 153 RTS
- 155 ; ** SET TRK LINK TO 0 SECT TO LAST NON 0 CHAR IN BUFF **
- 157 JSR $DE2B; SET PTR TO HEADER
- 159 LDA #$00
- 161 STA ($94),Y; DIRECTORY BUFF
- 163 INY
- 165 LDX $82; INDEX CURRENT CHNL
- 167 LDA $C1,X; NEXT RECORD NUM TABLE
- 169 TAX
- 171 DEX
- 173 TXA
- 175 STA ($94),Y; SECT LINK
- 177 RTS
- 179 ; ** SET UP PTR TO ACTIVE BUFF **
- 181 JSR $DF93; GET ACTIVE BUFF NUM
- 183 ASL
- 185 TAX
- 187 LDA $9A,X; NEXT BYTE IN BUFF PTR
- 189 STA $95; DIRECTORY BUFF
- 191 LDA #$00
- 193 STA $94; LO BYTE DIRECTORY BUFF
- 195 LDY #$00
- 197 RTS
- 199 ; ** SET TRK & SECT FROM HEADER **
- 201 JSR $D0EB; FIND READ CHNL
- 203 JSR $DF93; GET ACTIVE BUFF NUM
- 205 STA $F9; CMND NUM BUFF
- 207 ASL
- 209 TAY
- 211 LDA $0006,Y; TRK NUM
- 213 STA $80; TRK NUM BUFF
- 215 LDA $0007,Y; SECT NUM
- 217 STA $81; SECT NUM BUFF
- 219 RTS
- 221 ; ** EXECUTE READ & WRITE CMNDS **
- 223 LDA #$90; CODE FOR WRITE
- 225 STA $024D; TEMP CMND BUFF
- 227 BNE $DE7F; FORCED BRANCH
- 229 LDA #$80; WRITE CMND
- 231 STA $024D
- 233 BNE $DE7F; FORCED BRANCH
- 235 LDA #$90; WRITE CMND
- 237 STA $024D
- 239 BNE $DE8B; FORCED BRANCH
- 241 LDA #$80; READ CMND
- 243 STA $024D
- 245 BNE $DE8B; FORCED BRANCH
- 247 LDA #$90; WRITE CMND
- 249 STA $024D
- 251 BNE $DE75; FORCED BRANCH
- 253 LDA #$80; WRITE CMND
- 255 STA $024D
- 257 LDX $82; INDEX CURRENT CHNL
- 259 LDA $CD,X; SIDE SECT TABLES
- 261 TAX
- 263 BPL $DE92; CONTINUE BRANCH
- 265 JSR $D6D0; SET HEADER FROM TRK & SEC
- 267 JSR $DF93; GET ACTIVE BUFF NUM
- 269 TAX
- 271 LDA $7F; DRV NUM BUFF
- 273 STA $025B,X; LAST CMND BUFF
- 275 JSR $E115; CLEAR DIRTY BUFF FLG
- 277 JSR $DF93; GET ACTIVE BUFF NUM
- 279 TAX
- 281 JMP $D506; SET LAST USED BUFF
- 283 ; ** SET TRK & SECT FROM LINK IN BUFF **
- 285 LDA #$00
- 287 JSR $D4C8; SET BUFF PTR 1ST BYTE IN BUFF
- 289 JSR $D137; READ TRK LINK
- 291 STA $80; TRK NUM BUFF
- 293 JSR $D137; READ SECT LINK
- 295 STA $81; SECT BUFF
- 297 RTS
- 299 ; ** TRANSFER BYTES BETWEEN TWO BUFFS **
- 301 ; A = NUM OF BYTES TO MOVE
- 303 ; X = TO BUFF NUM
- 305 ; Y = FROM BUFF NUM
- 307 PHA; SAVE NUM OF BYTES TO MOVE
- 309 LDA #$00
- 311 STA $6F; TEMP WORK
- 313 STA $71; " "
- 315 LDA $FEE0,Y; HI BYTE DATA BUFF (FROM)
- 317 STA $70; TEMP WORK
- 319 LDA $FEE0,X; HI BYTE DATA BUFF (TO)
- 321 STA $72; TEMP WORK
- 323 PLA; BYTES TO MOVE
- 325 TAY; INDEX
- 327 DEY
- 329 LDA ($6F),Y; FROM BYTE
- 331 STA ($71),Y; TO BYTE
- 333 DEY
- 335 BPL $DEB9; MOVE MORE BRANCH
- 337 RTS
- 339 ; ** CLEAR BUFF **
- 341 ; A HOLDS BUFF NUM
- 343 TAY
- 345 LDA $FEE0,Y; HI BYTE DTAT BUFF
- 347 STA $70; TEMP WORK
- 349 LDA #$00
- 351 STA $6F
- 353 TAY
- 355 STA ($6F),Y
- 357 INY
- 359 BNE $DECC; MORE TO CLEAR BRANCH
- 361 RTS
- 363 ; ** SET SIDE SECT PTR TO 0 **
- 365 LDA #$00
- 367 JSR $DEDC; SET DIREC BUFF TO SIDE SEC PTR
- 369 LDY #$02
- 371 LDA ($94),Y; SIDE SEC PTR
- 373 RTS
- 375 ; ** USE SIDE SECT PTR TO SET DIRECTORY BUFF **
- 377 ; A HOLDS LO BYTE
- 379 STA $94; DIRECTORY BUFF
- 381 LDX $82; INDEX CURRENT CHNL
- 383 LDA $CD,X; SIDE SECT TABLES
- 385 TAX
- 387 LDA $FEE0,X; HI BYTE DATA BUFF
- 389 STA $95; DIRECTORY BUFF
- 391 RTS
- 393 ; ** USE SIDE SECT PTR TO SET DIR BUFF & BUFF TAB **
- 395 ; A HOLDS LO BYTE
- 397 PHA
- 399 JSR $DEDC; SET DIR BUFF FROM SS PTR
- 401 PHA
- 403 TXA
- 405 ASL
- 407 TAX
- 409 PLA; HI BYTE SS BUFF PTR
- 411 STA $9A,X; NEXT BYTE IN BUFF PTR
- 413 PLA; LO BYTE SS BUFF PTR
- 415 STA $99,X; NEXT BYTE IN BUFF PTR
- 417 RTS
- 419 ; ** USE SIDE SEC # & SIDE SEC INDEX TO SET SIDE SEC & BUFF TAB **
- 421 JSR $DF66; TEST SIDE SEC PRESENT & IN RANGE
- 423 BMI $DF0B; OUT OF RANGE BRANCH
- 425 BVC $DF12; PRESENT BRANCH
- 427 LDX $82; INDEX CURRENT CHNL
- 429 LDA $CD,X; SIDE SECT TABLES
- 431 JSR $DF1B; READ SIDE SECT
- 433 JSR $DF66; TEAST AGAIN
- 435 BPL $DF12; IN RANGE BRANCH
- 437 JSR $E1CB; SET SIDE SEC & BUF TAB TO LAST RECORD
- 439 BIT $FECE; #$7F SET FLGS
- 441 RTS
- 443 LDA $D6; INDEX TO SIDE SECT
- 445 JSR $DEE9; SET DIRECT BUFF & BUFF TAB
- 447 BIT $FECD; #$3F SET FLGS
- 449 RTS
- 451 ; ** INDIRECT BLK READ OR WRITE **
- 453 ; A = BUFF NUM
- 455 ; X = ACTIVE BUFF
- 457 ; Y POINTS TO TRK & SECT TO R/W
- 459 STA $F9; CMND NUM BUFF
- 461 LDA #$80; READ CMND
- 463 BNE $DF25; NOT READ BRANCH
- 465 STA $F9
- 467 LDA #$90; WRITE CMND
- 469 PHA
- 471 LDA $EC,X; CHNL FILE TYPE
- 473 AND #$01; MASK NON DRV BITS
- 475 STA $7F; DRV NUM BUFF
- 477 PLA; HOLDS CMND
- 479 ORA $7F
- 481 STA $024D; TEMP CMND BUFF
- 483 LDA ($94),Y; DIRECTORY BUFF
- 485 STA $80; TRK NUM BUFF
- 487 INY
- 489 LDA ($94),Y
- 491 STA $81; SECT BUFF NUM
- 493 LDA $F9
- 495 JSR $D6D3; SET UP HEADER
- 497 LDX $F9
- 499 JMP $D593; EXECUTE CMND
- 501 ; ** SET SIDE SECT PTRS **
- 503 LDX $82; INDEX CURRENT CHNL
- 505 LDA $CD,X; SIDE SECT TABLES
- 507 JMP $D4EB; SET DIRECTORY BUFF PTRS
- 509 ; ** CALCULATE SIDE SECTS **
- 511 LDA #$78; NUM OF SIDE SECT IN A BUFF
- 513 JSR $DF5C; ADD NUM OF SIDE SECTS NEEDED
- 515 DEX
- 517 BPL $DF4C
- 519 LDA $72; HOLDS SIDE SEC INDEXES
- 521 LSR; TWO BYTES TRK & SEC FOR EACH INDEX
- 523 JSR $DF5C
- 525 LDA $73; NUM OF SIDE SECTS
- 527 CLC
- 529 ADC $70
- 531 STA $70
- 533 BCC $DF65; END
- 535 INC $71
- 537 RTS
- 539 ; ** TEST SIDE SECT # & SIDE SECT IMAGE & PRESENCE **
- 541 ; MEANING OF FLGS ON RETURN
- 543 ; N RANRETURNE V PRESENT
- 545 ; 0 OK 0 YES ER0
- 547 ; 0 MAYBE 1 NO ER1
- 549 ; 1 BAD 0 YES ER2
- 551 ; 1 BAD 1 NO ER3
- 553 JSR $DED2; SET PTR 0 GET SIDE SEC #
- 555 CMP $D5; NUM OF SIDE SECT
- 557 BNE $DF7B
- 559 LDY $D6; INDEX TO SIDE SECT
- 561 LDA ($94),Y
- 563 BEQ $DF77; WRONG SIDE SECT PRESENT
- 565 BIT $FECD; #$3F ER0 CLEARS N & V FLGS
- 567 RTS
- 569 BIT $FECF; #$BF ER2 OUT OF RANGE
- 571 RTS
- 573 LDA $D5
- 575 CMP #$06; NUM SIDE SECT LINKS
- 577 BCS $DF8B; GREATER THAN 6 BRANCH
- 579 ASL
- 581 TAY
- 583 LDA #$04; LO BYTE PTR
- 585 STA $94; DIRECTORY BUFF
- 587 LDA ($94),Y
- 589 BNE $DF8F
- 591 BIT $FED0; #$FF ER3 OUT OF RANGE
- 593 RTS
- 595 BIT $FECE; #$7F ER1 NOT PRESENT
- 597 RTS
- 599 ; ** GET ACTIVE BUFF NUM **
- 601 LDX $82; INDEX CURRENT CHNL
- 603 LDA $A7,X; CHNL STATUS TABLE
- 605 BPL $DF9B; BUFF ACTIVE BRANCH
- 607 LDA $AE,X; CHNL STATUS TABLE
- 609 AND #$BF; MASK DIRTY BIT
- 611 ; ON EXIT A = ACTIVE BUFF NUM
- 613 ; X = INDEX
- 615 ; N FLG = 1 NOT ACTIVE
- 617 RTS
- 619 ; ** GET ACTIVE BUFF & SET BUFF USED **
- 621 ; ON EXIT A = ACTIVE BUFF NUM
- 623 ; X= INDEX
- 625 ; N FLG = 1 NO ACTIVE BUFF
- 627 ; V FLG = 1 BUFF DIRTY
- 629 LDX $82; INDEX CURRENT CHNL
- 631 STX $0257; LAST BUFF USED
- 633 LDA $A7,X; CHNL STATUS TABLE
- 635 BPL $DFB0; BUFF ACTIVE BRANCH
- 637 TXA
- 639 CLC
- 641 ADC #$07; MINIMUM # CHNLS + 1
- 643 STA $0257
- 645 LDA $AE,X; CHNL STATUS TABLE
- 647 STA $70; TEMP WORK
- 649 AND #$1F
- 651 BIT $70; SET N & V FLGS
- 653 RTS
- 655 ; ** GET CHNLS INACTIVE BUFF NUM **
- 657 ; ON ENTRY INDEX = CHNL NUM
- 659 ; ON EXIT A = BUFF # #$FF IF NONE
- 661 LDX $82; INDEX CURRENT CHNL
- 663 LDA $A7,X; CHNL STATUS TABLE
- 665 BMI $DFBF; BUFF INACTIVE BRANCH
- 667 LDA $AE,X; CHNL STATUS TABLE
- 669 CMP #$FF; SET Z FLG
- 671 RTS
- 673 ; ** SET INACTIVE BUFF NUM **
- 675 LDX $82; INDEX CURRENT CHNL
- 677 ORA #$80; SET INACTIVE BIT
- 679 LDY $A7,X; CHNL STATUS TABLE
- 681 BPL $DFCD; OTHER BUFF INACTIVE BRANCH
- 683 STA $A7,X
- 685 RTS
- 687 STA $AE,X; CHNL STATUS TABLE
- 689 RTS
- 691 ; ** SET UP NEXT RELATIVE RECORD **
- 693 LDA #$20
- 695 JSR $DD9D; CLEAR RECORD OVERFLOW FLG
- 697 LDA #$80
- 699 JSR $DDA6; TEST LAST RECORD FLG
- 701 BNE $E01D; NOT LAST RECORD BRANCH
- 703 LDX $82; INDEX CURRENT CHNL
- 705 INC $B5,X; LO BYTE CHNL TABLE
- 707 BNE $DFE4
- 709 INC $BB,X; HI " " "
- 711 LDX $82
- 713 LDA $C1,X; [130] REC[176]D NUM TABLE
- 715 BEQ $E018; NO [130] REC[176]D BRANCH
- 717 JSR $D4E8; [161] BUFF PTR
- 719 LDX $82
- 721 CMP $C1,X;[130] REC[176]D # TABLE
- 723 BCC $DFF6
- 725 JSR $E03C; SET UP [130] BUFF
- 727 LDX $82; INDEX CURRENT CHNL
- 729 LDA $C1,X
- 731 JSR $D4C8; SET PTR [164] [130] REC[176]D
- 733 LDA ($99,X); PTR [130] BYTE IN BUFF TABLE
- 735 STA $85; TEMP [131]
- 737 LDA #$20
- 739 JSR $DD9D; CLEAR REC[176]D OVERFLOW FLG
- 741 JSR $E304; ADVANCE PTR
- 743 PHA
- 745 BCC $E034; HAVE [168] CROSSED BLK BOUNDRY
- 747 LDA #$00
- 749 JSR $D4F6; [135] TRK LINK [131] BLK
- 751 BNE $E034; [168] LAST TRK BRANCH
- 753 PLA
- 755 CMP #$02
- 757 BEQ $E02A
- 759 LDA #$80
- 761 JSR $DD97; TEST LAST REC[176]D FLG
- 763 JSR $D12F; [161] PTRS
- 765 LDA $99,X; [130] BYTE IN BUFF TABLE
- 767 STA $0244,Y; LAST CHAR PTR
- 769 LDA #$0D; CARRIAGE [142]
- 771 STA $85; TEMP [131] BYTE
- 773 RTS
- 775 JSR $E035; S[164]RE [130] REC[176]D [197]UE
- 777 LDX $82; INDEX [130] CHNL
- 779 LDA #$00
- 781 STA $C1,X; [130] REC[176]D TABLE
- 783 RTS
- 785 PLA; [162] [130] REC[176]D NUM
- 787 LDX $82; INDEX CURRENT CHNL
- 789 STA $C1,X; [130] REC[176]D TABLE
- 791 JMP $E16E; SET PTR [164] LAST CHAR
- 793 ; [172][172] SET UP [130] REC[176]D IN BUFF [172][172]
- 795 JSR $D1D3; SET DRV NUM
- 797 JSR $DE95; SET TRK & SEC FROM LINKS
- 799 JSR $DF9E; TEST [139] BUFF DIRTY
- 801 BVC $E05D; CLEAN BUFF BRANCH
- 803 JSR $DE5E; WRITE BUFF
- 805 JSR $CF1E; [164]GGLE INACTIVE[173]ACTIVE BUFFS
- 807 LDA #$02
- 809 JSR $D4C8; SET THE PTRS
- 811 JSR $DDAB; TEST LAST CMND WRITE
- 813 BNE $E07B; [168] WRITE BRANCH
- 815 JSR $DE57; [135] IN BUFF NEEDED
- 817 JMP $D599; [146] [129] [135] [164] FINISH
- 819 JSR $CF1E; [164]GGLE INACTIVE[173]ACTIVE BUFFS
- 821 JSR $DDAB; TEST LAST CMND WRITE
- 823 BNE $E06B; [168] WRITE BRANCH
- 825 JSR $DE57; [135] IN BUFF NEEDED
- 827 JSR $D599; [146] [129] [135] [164] FINISH
- 829 JSR $DE95; SET TRK & SEC FROM LINK
- 831 LDA #$80
- 833 BEQ $E07B; LAST BLK NO DOUBLE BUFF
- 835 JSR $CF1E; [164]GGLE INACTIVE[173]ACTIVE BUFFS
- 837 JSR $DE57; [135] IN BUFF NEEDED
- 839 JSR $CF1E
- 841 RTS
- 843 ; [172][172] PUT RELATIVE FILE IN BUFF [172][172]
- 845 JSR $E105; SET DIRTY BUFF FLG
- 847 JSR $DF93; [161] ACTIVE BUFF NUM
- 849 ASL
- 851 TAX
- 853 LDA $85; TEMP [131] BYTE
- 855 STA ($99,X); [130] BYTE IN BUFF PTR
- 857 LDY $99,X; LO BYTE PTR
- 859 INY
- 861 BNE $E096
- 863 LDY $82; INDEX CURRENT CHNL
- 865 LDA $00C1,Y; [130] REC[176]D # TABLE
- 867 BEQ $E09E
- 869 LDY #$02
- 871 TYA
- 873 LDY $82
- 875 CMP $00C1,Y
- 877 BNE $E0A3; [130] REC[176]D [168] PTR
- 879 LDA #$20
- 881 JMP $DD97; SET REC[176]D OVERFLOW FLG
- 883 INC $99,X
- 885 BNE $E0AA; D[145]T NEED [130] BUFF
- 887 JSR $E03C; [161] [130] BUFF
- 889 RTS
- 891 ; [172][172] WRITE RELATIVE FILE [172][172]
- 893 LDA #$A0
- 895 JSR $DDA6; SET LAST REC[176]D & OVERFLOW FLG
- 897 BNE $E0D9; FLG SET BRANCH
- 899 LDA $85; TEMP [131] BYTE
- 901 JSR $E07C; PUT BYTE IN BUFF
- 903 LDA $F8; TEMP [129] EOI
- 905 BEQ $E0C8; EOI [168] SENT BRANCH
- 907 RTS
- 909 LDA #$20
- 911 JSR $DDA6; TEST [129] OVERFLOW
- 913 BEQ $E0C8; NO OVERFLOW BRANCH
- 915 LDA #$51
- 917 STA $026C; ERR[176] W[176]D [129] RECOVERY
- 919 JSR $E0F3; CLEAR REST OF REC[176]D
- 921 JSR $E153; SET UP [130] REC[176]D
- 923 LDA $026C
- 925 BEQ $E0D6; NO ERR[176] BRANCH
- 927 JMP $C1C8; ERR[176] H[175]LING
- 929 JMP $E6BC; " "
- 931 [175] #$80
- 933 BNE $E0E2; LAST REC[176]D SET BRANCH
- 935 LDA $F8; TEMP [129] EOI
- 937 BEQ $E0BC; NO EOI BRANCH
- 939 RTS
- 941 LDA $85; TEMP [131] BYTE
- 943 PHA
- 945 JSR $E31C; ADD RELATIVE FILE
- 947 PLA
- 949 STA $85
- 951 LDA #$80
- 953 JSR $DD9D; CLEAR LAST REC[176]D FLG
- 955 JMP $E0B2; JUMP [129] M[176]E
- 957 ; [172][172] CLEAR REST OF RELATIVE FILE [172][172]
- 959 LDA #$20
- 961 JSR $DDA6; TEST OVERFLOW FLG
- 963 BNE $E104; OVERFLOW BRANCH
- 965 LDA #$00
- 967 STA $85; TEMP [131] BYTE
- 969 JSR $E07C; PUT NULL BYTE IN BUFF
- 971 JMP $E0F3; FILL BUFF 0'S
- 973 RTS
- 975 ; [172][172] SET DIRTY BUFF FLG (CHANGE IN BUFF) [172][172]
- 977 LDA #$40
- 979 JSR $DD97; SET THE FLG
- 981 JSR $DF9E; [161] ACTIVE BUFF NUM
- 983 [176]A #$40; SET BUFF DIRTY FLG
- 985 LDX $0257; LAST BUFF USED
- 987 STA $A7,X; CHNL STATUS TABLE
- 989 RTS
- 991 ; [172][172] CLEAR DIRTY BUFF FLG [172][172]
- 993 JSR $DF9E; [161] ACTIVE BUFF NUM
- 995 [175] #$BF; CLEAR FLG
- 997 LDX $0257; LAST BUFF USED
- 999 STA $A7,X; CHNL STATUS TABLE
- 1001 RTS
- 1003 ; [172][172] [135] RELATIVE FILE [172][172]
- 1005 LDA #$80
- 1007 JSR $DDA6; TEST LAST REC[176]D FLG
- 1009 BNE $E15E; LAST REC[176]D ERR[176]
- 1011 JSR $D12F; SET POITERS [164] EXISTING BUFF
- 1013 LDA $99,X; [130] BYTE IN BUFF PTR
- 1015 CMP $0244,Y; LAST CHAR PTR
- 1017 BEQ $E153; [130] REC[176]D BRANCH
- 1019 INC $99,X
- 1021 BNE $E13B; D[145]T NEED [130] BUFF
- 1023 JSR $E03C; [135] [130] BUFF
- 1025 JSR $D12F
- 1027 LDA ($99,X); [131] BYTE
- 1029 STA $023E,Y; CHNL [131] BYTE
- 1031 LDA #$89; CODE R[175]OM ACCESS [135]Y
- 1033 STA $00F2,Y; CHNL STATUS BUFF
- 1035 LDA $99,X; [130] BYTE IN BUFF PTR
- 1037 CMP $0244,Y; LAST CHAR PTR
- 1039 BEQ $E14D; S[128] EOI BRANCH
- 1041 RTS
- 1043 LDA #$81; CODE R[175]OM ACCESS EOI
- 1045 STA $00F2,Y; CHNL STATUS BUFF
- 1047 RTS
- 1049 JSR $DFD0; [161] [130] REC[176]D
- 1051 JSR $D12F; SET PTRS [164] EXISTING BUFF
- 1053 LDA $85; TEMP [131] BYTE
- 1055 JMP $E13D; [154]INUE
- 1057 LDX $82; INDEX CURRENT CHNL
- 1059 LDA #$0D; CODE CARRIAGE [142]
- 1061 STA $023E,X; MOST RECENT BYTE [135] BUFF
- 1063 LDA #$81; CODE R[175]OM ACCESS EOI
- 1065 STA $F2,X
- 1067 LDA #$50; CODE NO REC[176]D ERR[176]
- 1069 JSR $C1C8; ERR[176] H[175]LING
- 1071 ; [172][172] SET PTR LAST CHAR IN BUFF [172][172]
- 1073 LDX $82; INDEX CURRENT CHNL
- 1075 LDA $C1,X; [130] REC[176]D NUM TABLE
- 1077 STA $87; TEMP RESULT
- 1079 DEC $87
- 1081 CMP #$02; PTR 1ST [131] BYTE
- 1083 BNE $E17E
- 1085 LDA #$FF; PTR LAST BYTE
- 1087 STA $87
- 1089 LDA $C7,X; REC[176]D [195]GTH TABLE
- 1091 STA $88;TEMP RESULT
- 1093 JSR $D4E8; PUT PTR IN ACTIVE BUFF
- 1095 LDX $82
- 1097 CMP $87
- 1099 BCC $E1A4; $87 GREATER BRANCH
- 1101 BEQ $E1A4
- 1103 JSR $CF1E; [164]GGLE INACTIVE[173]ACTIVE BUFF
- 1105 JSR $E1B2; FIND LAST CHAR
- 1107 BCC $E19D
- 1109 LDX $82
- 1111 STA $0244,X; LAST CHAR PTR
- 1113 JMP $CF1E
- 1115 JSR $CF1E
- 1117 LDA #$FF; LAST BYTE PTR
- 1119 STA $87; TEMP RESULT
- 1121 JSR $E1B2; FIND LAST N[145] 0 CHAR
- 1123 BCS $E1AC
- 1125 JSR $D4E8; [161] PTR ACTIVE BUFF
- 1127 LDX $82; INDEX CURRENT CHNL
- 1129 STA $0244,X; CHNL LAST CHAR PTR
- 1131 RTS
- 1133 ; [172][172] FIND N[145] ZERO CHAR IN REC[176]D [172][172]
- 1135 JSR $DE2B; SET PTR START OF BUFF
- 1137 LDY $87; TEMP RESULT
- 1139 LDA ($94),Y; DIREC[164]RY BUFF
- 1141 BNE $E1C8; [168] ZERO BRANCH
- 1143 DEY
- 1145 CPY #$02
- 1147 BCC $E1C4; [168] START OF REC[176]D
- 1149 DEC $88; TEMP REC[176]D SIZE
- 1151 BNE $E1B7; [168] D[145]E BRANCH
- 1153 DEC $88
- 1155 CLC; REC[176]D [168] [165]D
- 1157 RTS
- 1159 TYA
- 1161 SEC; REC[176]D [165]D
- 1163 RTS
- 1165 ; [172][172] SET SIDE SECT & BUFF TAB [164] [128] LAST REC[176]D [172][172]
- 1167 JSR $DED2; SET SIDE SEC PTR
- 1169 STA $D5; SIDE SEC NUM BUFF
- 1171 LDA #$04
- 1173 STA $94; LO BYTE DIRECT PTR
- 1175 LDY #$0A; SIDE SEC OFFSET [171] 6
- 1177 BNE $E1DC; [129]CED BRANCH
- 1179 DEY
- 1181 DEY
- 1183 BMI $E202; ERRO BRANCH
- 1185 LDA ($94),Y; DIRECT BUFF PTR
- 1187 BEQ $E1D8; HAVE'NT [165]D LAST SIDE SEC
- 1189 TYA
- 1191 LSR
- 1193 CMP $D5
- 1195 BEQ $E1EF; [165]D LAST SIDE SEC
- 1197 STA $D5
- 1199 LDX $82; INDEX CURRENT CHNL
- 1201 LDA $CD,X; SIDE SECT TABLE
- 1203 JSR $DF1B; INDIRECT [135] LAST SECT
- 1205 LDY #$00
- 1207 STY $94;LO BYTE DIRECT PTR
- 1209 LDA ($94),Y; TRK LINK
- 1211 BNE $E202; ERR[176] BRANCH
- 1213 INY
- 1215 LDA ($94),Y; SECT LINK
- 1217 TAY
- 1219 DEY
- 1221 STY $D6; INDEX SIDE SECT
- 1223 TYA
- 1225 JMP $DEE9; SET DIR BUFF & BUF TAB W[173]SIDE SEC PTR
- 1227 LDA #$67; CODE [158] TRK[173]SECT ERR[176]
- 1229 JSR $E645; ERR[176] H[175]LING
- 1231 ; [172][172] [185]ISTI[145] PTR IN REC[176]D [172][172]
- 1233 ; SETS [164] LAST REC[176]D [139] OUT OF RANGE
- 1235 JSR $C2B3; INIT PTRS & TABLES
- 1237 LDA $0201; 2ND CHAR CMND BUFF
- 1239 STA $83; CURRENT SEC ADDR
- 1241 JSR $D0EB; FIND [135] CHNL
- 1243 BCC $E219; CHNL [165]D
- 1245 LDA #$70; CODE NO CHNL ERR[176]
- 1247 JSR $C1C8; ERR[176] H[175]LING
- 1249 LDA #$A0
- 1251 JSR $DD9D; CLEAR LAST REC & OVERFLOW FLG
- 1253 JSR $D125; [161] FILE TYPE
- 1255 BEQ $E228; RELATIVE FILE BRANCH
- 1257 LDA #$64; CODE FILE TYPE MISMATCH
- 1259 JSR $C1C8; ERR[176] H[175]LING
- 1261 LDA $EC,X; CHNL FILE TYPE
- 1263 [175] #$01
- 1265 STA $7F; DRV NUM BUFF
- 1267 LDA $0202; 3RD CHAR CMND BUFF
- 1269 STA $B5,X; REC[176]D NUM TABLES
- 1271 LDA $0203; 4TH CHAR CMND BUFF
- 1273 STA $BB,X; REC[176]D NUM TABLES
- 1275 LDX $82; INDEX CURRENT CHNL
- 1277 LDA #$89; CODE R[175]OM ACCESS [135]Y
- 1279 STA $F2,X; CHNL STATUS BUFF
- 1281 LDA $0204; 5TH CHAR
- 1283 BEQ $E253
- 1285 SEC
- 1287 SBC #$01
- 1289 BEQ $E253
- 1291 CMP $C7,X; REC[176]D [195]GTH BUFF
- 1293 BCC $E253
- 1295 LDA #$51; CODE REC[176]D OVERFLOW
- 1297 STA $026C; ERR[176] W[176]D
- 1299 LDA #$00
- 1301 STA $D4; PTR START OF REC[176]D
- 1303 JSR $CE0E; CALCULATE SIDE SEC PTRS
- 1305 .FILE DISK ROM 6
-