home *** CD-ROM | disk | FTP | other *** search
- 1 ; ** BLKS FREE MESSAGE **
- 3 .BYTE 066 076 079 067 075 083; BLKS
- 5 .BYTE 032 070 082 073 073 046; FREE.
- 7 ; ** SCRATCH FILES **
- 9 JSR $C398; SET PTRS CHK TYPE FILENM
- 11 JSR $C320; SET UP ALL DRVS
- 13 JSR $C3CA; FIND FILE
- 15 LDA #$00
- 17 STA $86; TEMP RESULT BUFF
- 19 JSR $C49D; FIND START ENTRY IN DIRECTORY
- 21 BMI $C872; NOT SUCCESSFULL BRANCH
- 23 ; ** CODE TO SAVE SECTS OF UNCLOSED FILE **
- 25 JSR $DDB7; TEST FOR ACTIVE FILES
- 27 BCC $C86D; FILE ACTIVE BRANCH
- 29 ; ** CODE TO PREVENT SCRATCH OF LOCKED FILE **
- 31 LDY #$00
- 33 LDA ($94),Y; FILE TYPE DIRECTORY BUFF
- 35 AND #$40; TEST FOR LOCKED FILE
- 37 BNE $C86D; LOCKED FILE BRANCH
- 39 JSR $C8B6; DELETE DIRECTORY ENTRY
- 41 LDY #$13
- 43 LDA ($94),Y; THIS BYTE TELLS IF RELATIVE FILE
- 45 BEQ $C855; NOT RELATIVE FILE BRANCH
- 47 STA $80; CURRENT TRK NUM BUFF
- 49 INY
- 51 LDA ($94),Y; THIS IS SECT PTR FOR RELATIVE
- 53 STA $81; CURRENT SECT NUM BUFF
- 55 JSR $C87D; FREE SIDE SECTS & WRITE BAM
- 57 ; ** CODE PREVENTS FREEING SECTS OF FILE IF REPLACE NOT COMPLETE **
- 59 LDX $0253; DIRECTORY ENTRY FOUND FLAG
- 61 LDA #$20
- 63 AND $E7,X; PATTERN FLAG
- 65 BNE $C86B; UNCLOSED FILE BRANCH
- 67 LDA $0280,X; TRK FILE LINK
- 69 STA $80; CURRENT TRK NUM BUFF
- 71 LDA $0285,X; SECT FILE LINK
- 73 STA $81; CURRENT SECT NUM BUFF
- 75 JSR $C87D; FREE BLKS & UPDATE BAM
- 77 INC $86; TEMP RESULT
- 79 JSR $C48B; MATCH NEXT FILENM
- 81 BPL $C835; MATCH FOUND BRANCH
- 83 LDA $86; NUM OF FILES SCRATCHED
- 85 STA $80; CURRENT TRK NUM BUFF
- 87 LDA #$01
- 89 LDY #$00
- 91 JMP $C1A3; TERM ROUT
- 93 ; ** DELETE FILE BY LINKS **
- 95 JSR $EF5F; MARK 1ST FILE BLK FREE IN BAM
- 97 JSR $D475; OPEN INTERNAL READ CHNL
- 99 JSR $F119; SET BAM PTRS IN IN BUFF TABLES
- 101 LDA $A7,X; TABLE OF CHNLS PTR
- 103 CMP #$FF
- 105 BEQ $C894; INACTIVE BUFF BRANCH
- 107 LDA $02F9; DONT WRITE BAM FLAG
- 109 ORA #$40; SET BIT 6 (BOTH BUFFS ACTIVE)
- 111 STA $02F9
- 113 LDA #$00
- 115 JSR $D4C8; SET PTRS ACTIVE BUFF
- 117 JSR $D156; READ TRK LINK FROM BUFF
- 119 STA $80; CURRENT TRK NUM BUFF
- 121 JSR $D156; READ SECT LINK
- 123 STA $81; CURRENT SECT NUM BUFF
- 125 LDA $80
- 127 BNE $C8AD; MORE TRKS BRANCH
- 129 JSR $EEF4; WRITE BAM
- 131 JMP $D227; FREE INTERNAL READ CHNL
- 133 JSR $E55F; FREE TRK
- 135 JSR $D44D; READ NEXT BLK
- 137 JMP $C894; DE-ALLOCATE NEW BLK
- 139 ; ** DELETE DIRECTORY ENTRY **
- 141 LDY #$00; PTR 1ST CHAR
- 143 TYA
- 145 STA ($94),Y; FILE TYPE DIRECTORY BUFF
- 147 JSR $DE5E; WRITE DIRECTORY BLK
- 149 JMP $D599; WAIT FOR WRITE TO COMPLETE
- 151 ; ** DUPLICATE DISK CODE (CANT USE) **
- 153 LDA #$31; CODE BAD CMND
- 155 JMP $C1C8; ERROR HANDLING
- 157 ; ** FORMAT DISK **
- 159 LDA #$4C; CODE FOR JUMP (JMP)
- 161 STA $0600; RAM BUFF
- 163 LDA #$C7
- 165 STA $0601
- 167 LDA #$FA
- 169 STA $0602; BECOMES JMP $FAC7 (NEW DISK)
- 171 LDA #$03
- 173 JSR $D6D3; SET ACTIVE BUFF
- 175 LDA $7F; CURRENT DRV NUM
- 177 ORA #$E0; CODE FOR EXEC
- 179 STA $03; CMND BUFF $0600
- 181 LDA $03
- 183 BMI $C8E0; WAIT FOR CMND TO FINISH
- 185 CMP #$02; ERROR
- 187 BCC $C8EF; CODE EXEC OK BRANCH
- 189 LDA #$03; ERROR CODE
- 191 LDX #$00
- 193 JMP $E60A; ERROR HANDLING
- 195 RTS
- 197 ; ** COPY DISK FILES **
- 199 LDA #$E0
- 201 STA $024F; BUFF ALLOCATION PTR
- 203 JSR $F0D1; SET TRK & SECT LINK
- 205 JSR $F119; BAM ROUT
- 207 LDA #$FF; BAM OUT OF MEM
- 209 STA $A7,X; TABLE OF CHNLS
- 211 LDA #$0F
- 213 STA $0256; USE WORD (FREE ALL)
- 215 JSR $C1E5; PARSE CMND
- 217 BNE $C90C; COLON ":" FOUND BRANCH
- 219 JMP $C8C1; COLON NOT FOUND CMND = CX=Y NO (null)OD ON 1541
- 221 JSR $C1F8; PARSE CMND
- 223 JSR $C320; PUT DRV #'S IN FILE TABLE
- 225 LDA $028B; CMND IMAGE
- 227 AND #$55
- 229 BNE $C928; CONCATENATE OR NORMAL COPY BRANCH
- 231 LDX $027A; TABLE FILENM PTRS
- 233 LDA $0200,X; CMND BUFF
- 235 CMP #$2A; CODE FOR COLON ":"
- 237 BNE $C928; NO WILD CARD BRANCH
- 239 LDA #$30; CODE FOR ERROR
- 241 JMP $C1C8; ERROR HANDLING
- 243 LDA $028B; CMND IMAGE
- 245 AND #$D9
- 247 BNE $C923; BAD SYNTAX BRANCH
- 249 JMP $C952; COPY FILE
- 251 ; ** COPY WHOLE DISK (NO (null)OD 1541) **
- 253 LDA #$00
- 255 STA $0258
- 257 STA $028C
- 259 STA $0280
- 261 STA $0281
- 263 LDA $E3
- 265 AND #$01
- 267 STA $7F
- 269 ORA #$01
- 271 STA $0291
- 273 LDA $027B
- 275 STA $027A
- 277 RTS
- 279 ; ** COPY FILES TO ONE FILE **
- 281 JSR $C44F; LOOK UP FILE
- 283 LDA $0278; FILENM # 2 CTR
- 285 CMP #$03
- 287 BCC $C9A1; NOT CONCATENATE BRANCH
- 289 LDA $E2; DEFAULT FLAG
- 291 CMP $E3; DRV NUM
- 293 BNE $C9A1; NOT CONCATENATE BRANCH
- 295 LDA $DD; INDEX DIRECTORY ENTRYS
- 297 CMP $DE; " " "
- 299 BNE $C9A1; [168] C[145]CATENATE BRANCH
- 301 LDA $D8; SECT DIREC[164]RY ENTRIES
- 303 CMP $D9; " " "
- 305 BNE $C9A1; NOT CONCATENATE BRANCH
- 307 ; ** CONCATENATE FILES **
- 309 JSR $CACC; CHK FOR INPUT FILE
- 311 LDA #$01
- 313 STA $0279; FILENM # 2 PTR
- 315 JSR $C9FA; OPEN INTERNAL READ CHNL
- 317 JSR $D125; GET FILE TYPE
- 319 BEQ $C982; SCRATCHED FILE BRANCH
- 321 CMP #$02
- 323 BNE $C987; NOT DELETED BRANCH
- 325 LDA #$64; CODE FOR MISMATCH
- 327 JSR $C1C8; ERROR HANDLING
- 329 LDA #$12
- 331 STA $83; SEC ADDR BUFF
- 333 LDA $023C; BUFF PTR
- 335 STA $023D; BUFF PTR
- 337 LDA #$FF; CLOSE READ CHNL
- 339 STA $023C; BUFF PTR
- 341 JSR $DA2A; COPY 1ST FILE
- 343 LDX #$02
- 345 JSR $C9B9; COPY 2ND FILE
- 347 JMP $C194; END ROUT
- 349 ; ** COPY FILE **
- 351 JSR $C9A7; COPY ROUT
- 353 JMP $C194; TERM ROUT
- 355 JSR $CAE7; CHK I/O FILE
- 357 LDA $E2; DEFAULT FLAG
- 359 AND #$01; CLEAR DEFAULT BIT
- 361 STA $7F; CURRENT DRV NUM BUFF
- 363 JSR $D486; OPEN INTERNAL WRITE CHNL
- 365 JSR $D6E4; ADD FILE NAME TO DIRECTORY
- 367 LDX $0277; FILENM # 1 CTR
- 369 STX $0279; FILENM # 2 PTR
- 371 JSR $C9FA; OPEN INTERNAL READ CHNL
- 373 LDA #$11; SEC ADDR INTERNAL READ
- 375 STA $83; SEC ADDR BUFF
- 377 JSR $D0EB; FIND READ CHNL
- 379 JSR $D125; CHK RELATIVE FILE
- 381 BNE $C9CE; NOT RELATIVE BRANCH
- 383 JSR $CA53; COPY RELATIVE FILE
- 385 LDA #$08
- 387 STA $F8; EOI BUFF
- 389 JMP $C9D8; GET BYTE INTERNAL READ CHNL
- 391 JSR $CF9B; WRITE BYTE TO DISK
- 393 ; ** READ BYTE INTERNAL READ CHNL **
- 395 JSR $CA35
- 397 LDA #$80; CODE FOR LAST RECORD
- 399 JSR $DDA6; CHK TO SEE IF LAST RECORD
- 401 BEQ $C9D5; NOT LAST RECORD BRANCH
- 403 JSR $D125; GET FILE TYPE
- 405 BEQ $C9EA; MORE FILES BRANCH
- 407 JSR $CF9B; WRITE LAST BYTE TO DISK
- 409 LDX $0279; FILENM # 2 PTR
- 411 INX
- 413 CPX $0278; FILENM # 2 CTR
- 415 BCC $C9B9; MORE FILES BRANCH
- 417 LDA #$12; SEC ADDR INTERNAL WRITE
- 419 STA $83; SEC ADDR BUFF
- 421 JMP $DB02; CLOSE COPY CHNL
- 423 ; ** OPEN INTERNAL READ CHNL **
- 425 LDX $0279; FILENM # 2 PTR
- 427 LDA $E2,X; DRV NUM
- 429 AND #$01; MASK OFF DEFAULT BIT
- 431 STA $7F; CURRENT DRV NUM BUFF
- 433 LDA $FE85; #$12 DIRECTORY TRK
- 435 STA $80; CURRENT TRK NUM BUFF
- 437 LDA $D8,X; SECT DIRECTORY ENTRIES
- 439 STA $81; CURRENT SECT NUM BUFF
- 441 JSR $D475; OPEN INTERNAL READ CHNL
- 443 LDX $0279; FILENM # 2 PTR
- 445 LDA $DD,X; INDEX OF DIRECTORY ENTRIES
- 447 JSR $D4C8; SET TRK & SECT PTRS
- 449 LDX $0279; FILENM # 2 PTR
- 451 LDA $E7,X; PATTERN FLAG
- 453 AND #$07; FILE TYPE MASK
- 455 STA $024A; FILE TYPE BUFF
- 457 LDA #$00
- 459 STA $0258; RECORD SIZE
- 461 JSR $D9A0; OPEN READ CHNL
- 463 LDY #$01
- 465 JSR $D125; GET FILE TYPE
- 467 BEQ $CA31; NOT RELATIVE FILE BRANCH
- 469 INY
- 471 TYA
- 473 JMP $D4C8; SET TRK & SECT PTRS
- 475 ; ** GET BYTE FROM INTERNAL READ CHNL **
- 477 LDA #$11; SEC ADDR
- 479 STA $83; SEC ADDR BUFF
- 481 JSR $D39B; GET THE BYTE
- 483 STA $85; TEMP DATA BYTE
- 485 LDX $82; INDEX CURRENT CHNL
- 487 LDA $F2,X; CHNL STATUS BUFF
- 489 AND #$08; CODE NOT EOI
- 491 STA $F8; TEMP EOI BUFF
- 493 BNE $CA52; NOT RELATIVE FILE BRANCH
- 495 JSR $D125; GET FILE TYPE
- 497 BEQ $CA52; RELATIVE FILE BRANCH
- 499 LDA #$80; CODE LAST RECORD
- 501 JSR $DD97; SET LAST RECORD FLAG
- 503 RTS
- 505 ; ** COPY RELATIVE FILES **
- 507 JSR $D1D3; SET DRV NUM
- 509 JSR $E1CB; POSISTION SIDE SECT TO LAST RECORD
- 511 LDA $D6; INDEX SIDE SECT
- 513 PHA
- 515 LDA $D5; NUM SIDE SECT BUFF
- 517 PHA
- 519 LDA #$12; SEC ADDR
- 521 STA $83; SEC ADDR BUFF
- 523 JSR $D107; FIND WRITE CHNL
- 525 JSR $D1D3; SET DRV NUM
- 527 JSR $E1CB; POSISTION SIDE SECT TO LAST RECORD
- 529 JSR $E29C; POSISTION DATA BLKS
- 531 LDA $D6; INDEX SIDE SECT
- 533 STA $87; TEMP RESULT
- 535 LDA $D5; NUM SIDE SECT BUFF
- 537 STA $86; TEMP RESULT
- 539 LDA #$00
- 541 STA $88; USED FOR LO BYTES RECORD PTR
- 543 STA $D4; PTR START OF RECORD
- 545 STA $D7; RELATIVE FILE PTR TO TRK
- 547 PLA
- 549 STA $D5; NUM SIDE SECT BUFF
- 551 PLA
- 553 STA $D6; INDEX SIDE SECT
- 555 JMP $E33B; TERM ROUT
- 557 ; ** RENAME FILE **
- 559 JSR $C320; SET DRVS IN CMND (0)
- 561 LDA $E3; DRV NUM
- 563 AND #$01; MASK DEFAULT BIT
- 565 STA $E3
- 567 CMP $E2; DEFAULT FLAG
- 569 BEQ $CA97
- 571 ORA #$80; SET BIT 7 SEARCH BOTH DRVS
- 573 STA $E2; DEFAULT FLAG
- 575 JSR $C44F; LOOK UP BOTH FILENMS
- 577 JSR $CAE7; FIND FILES NAMED
- 579 LDA $E3; DRV NUM
- 581 AND #$01; MASK DEFAULT BIT
- 583 STA $7F; CURRENT DRV NUM BUFF
- 585 LDA $D9; SECT OF DIRECTORY ENTRY
- 587 STA $81; CURRENT SECT NUM
- 589 JSR $DE57; READ DIRECTORY SECT
- 591 JSR $D599; WAIT FOR ROUT TO FINISH
- 593 LDA $DE; INDEX DIRECTORY ENTRIES
- 595 CLC
- 597 ADC #$03; POINTS TO FIRST CHAR IN FILENM
- 599 JSR $D4C8; SET PTRS TO FILENM
- 601 JSR $DF93; STORE ACTIVE BUFF NUM
- 603 TAY
- 605 LDX $027A; TABLE FILENM PTRS
- 607 LDA #$10; MAX NUM OF CHARS
- 609 JSR $C66E; TRANSFER FILENM FROM CMND TO BUFF
- 611 JSR $DE5E; WRITE REVISED DIRECTORY
- 613 JSR $D599; WAIT FOR ROUT TO FINISH
- 615 JMP $C194; TREMINATE ROUT
- 617 ; ** CHK INPUT FILE **
- 619 LDA $E8; REPLACE FLAG
- 621 AND #$07; FILE TYPE MASK
- 623 STA $024A; FILE TYPE BUFF
- 625 LDX $0278; FILENM # 2 CTR
- 627 DEX
- 629 CPX $0277; FILENM # 1 CTR
- 631 BCC $CAE6; FILE FOUND BRANCH
- 633 LDA $02280,X; TRK FILE LINK
- 635 BNE $CAD6; MORE BRANCH
- 637 LDA #$62; ERROR CODE
- 639 JMP $C1C8; ERROR HANDLING
- 641 RTS
- 643 ; ** CHK I/O FILE **
- 645 JSR $CACC; FIND INPUT FILE
- 647 LDA $280,X; TRK LINK
- 649 BEQ $CAF4; NO TRKS LEFT BRANCH
- 651 LDA #$63; CODE FOR ERROR
- 653 JMP $C1C8; ERROR HANDLING
- 655 DEX
- 657 BPL $CAEA; CHK MORE BRANCH
- 659 RTS
- 661 ; ** MEM ACCESS CMNDS **
- 663 LDA $0201; 2ND CHAR IN CMND
- 665 CMP #$2D; CODE FOR "-" M-R & M-W ETC
- 667 BNE $CB4B; NOT MEM CMND ERROR BRANCH
- 669 LDA $0203; LO BYTE OF ADDR
- 671 STA $6F; TEMP STORAGE
- 673 LDA $0204; HI BYTE OF ADDR
- 675 STA $70
- 677 LDY #$00
- 679 LDA $0202; TYPE OF CMND E R W
- 681 CMP #$52;
- 683 BEQ $CB20; MEM READ BRANCH
- 685 JSR $F258; KILL PROTECTION ROUT (NO (null)OD 1541)
- 687 CMP #$57
- 689 BEQ $CB50; MEM WRITE BRANCH
- 691 CMP #$45
- 693 BNE $CB4B; ERROR BRANCH
- 695 JMP (006F); EXEC MEM CMND
- 697 LDA ($6F),Y
- 699 STA $85; TEMP DATA BUFF
- 701 LDA $0274; CMND SIZE BUFF
- 703 CMP #$06
- 705 BCC $CB45; IF LEE THAN 6 MEM READ BRANCH
- 707 ; ** MULTI BYTE MEM READ **
- 709 LDX $0205; NUM OF BYTES TO READ IN CMND
- 711 DEX
- 713 BEQ $CB45; ONLY ONE BYTE TO READ BRANCH
- 715 TXA
- 717 CLC
- 719 ADC $6F; LO BYTE MEM CMND
- 721 INC $6F
- 723 STA $0249; LAST CHAR PTR
- 725 LDA $6F
- 727 STA $A5;
- 729 LDA $70; TEMP WORK BUFF
- 731 STA $A6
- 733 JMP $D443; CONTINUE READ MEM JUMP
- 735 ; ** 1 BYTE MEM READ **
- 737 JSR $DOEB; FIND READ CHNL
- 739 JMP $D43A; GET THE BYTE AND TERM
- 741 LDA #$31; CODE FOR BAD CMND
- 743 JMP $C1C8; ERRO HANDLING
- 745 ; ** MEM WRITE **
- 747 LDA $0206,Y
- 749 STA ($6F),Y
- 751 INY
- 753 CPY $0205; NUM OF BYTES TO WRITE
- 755 BCC $CB50; MORE BYTES BRANCH
- 757 RTS
- 759 ; ** USER CMNDS **
- 761 LDY $0201; 2ND BYTE OF CMND
- 763 CPY #$30; 0
- 765 BNE $CB6C; NOT "U0" BRANCH
- 767 ; ** U0 RESTORES PTR TO JUMP TABLE **
- 769 LDA #$EA; LO BYTE USER JMP ADDR
- 771 STA $6B; USER JUMP PTR LO
- 773 LDA #$FF; HI BYTE USER JMP ADDR
- 775 STA $6C
- 777 RTS
- 779 ; ** U1 CMND **
- 781 JSR $CB72; EXEC CODE FROM JUMP TABLE
- 783 JMP $C194; TERM ROUT
- 785 DEY
- 787 TYA
- 789 AND #$0F; CONVERT ASCII TO HEX
- 791 ASL
- 793 TAY
- 795 LDA ($6B),Y; LO BYTE U JMP ADDR
- 797 STA $75
- 799 INY
- 801 LDA ($6B),Y; HI BYTE U JMP ADDR
- 803 STA $76
- 805 JMP ($0075); INDIRECT JUMP EXEC
- 807 ; ** OPEN DIRECT ACCESS BUFF (OPEN CMND) **
- 809 LDA $028E; LAST DRV NUM FROM LAST CMND
- 811 STA $7F; CURRENT DRV BUFF
- 813 LDA $83; SEC ADDR BUFF
- 815 PHA
- 817 JSR $C63D; INITIALIZE DISK
- 819 PLA; SEC ADDR
- 821 STA $83
- 823 LDX $0274; CMND LENGTH BUFF
- 825 DEX
- 827 BNE $CBA5; SPECIFIC BUFF BRANCH
- 829 LDA #$01
- 831 JSR $DE12; OPEN NEW READ CHNL
- 833 JMP $CBF1
- 835 LDA #$70; NO CHNL AVAIL CODE
- 837 JMP $C1C8; ERROR HANDLING
- 839 ; ** SPECIFIC BUFF **
- 841 LDY #$01
- 843 JSR $CC7C; CHK BLKS
- 845 LDX $0285; NUM OF BUFF REQUESTED
- 847 CPX #$05; HIGHEST BUFF THAT CAN BE USED
- 849 BCS $CBA0; BUFF TO HIGH BRANCH
- 851 ; ** FIND BUFFS IN USE **
- 853 LDA #$00
- 855 STA $6F; TEMP STORAGE
- 857 STA $70; " "
- 859 SEC
- 861 ROL $6F
- 863 ROL $70
- 865 DEX
- 867 BPL $CBB8; MORE TO DO BRANCH
- 869 LDA $6F
- 871 AND $024F; HOLDS BUFFS IN USE
- 873 BNE $CBA0; BUFF IN USE BRANCH
- 875 LDA $70
- 877 AND $0250; HOLDS BUFFS IN USE
- 879 BNE $CBA0; BUFF IN USE BRANCH
- 881 LDA $6F
- 883 ORA $024F
- 885 STA $024F; MARK BUFF REQUESTED IN USE
- 887 LDA $70
- 889 ORA $0250
- 891 STA $0250; " " "
- 893 LDA #$00
- 895 JSR $D1E2; [159] [162] [135] CHNL
- 897 LDX $82; CURRENT CHNL BUFF
- 899 LDA $0285; SECT FILE LINK
- 901 STA $A7,X; TABLE OF CHNLS
- 903 TAX
- 905 LDA $7F; CURRENT DRV BUFF
- 907 STA $00,X; EXEC CMND BUFF
- 909 STA $025B,X; LAST EXEC CMND BUFF
- 911 LDX $83; SEC ADDR BUFF
- 913 LDA $022B,X; INDEX TABLE
- 915 [176]A #$40; CODE [129] [135] & WRITE
- 917 STA $022B,X
- 919 LDY $82; CURRENT CHNL BUFF
- 921 LDA #$FF
- 923 STA $0244,Y; LAST CHAR PTR
- 925 LDA #$89; CODE [129] R[175]OM ACCESS
- 927 STA $00F2,Y; CHNL STATUS BUFF
- 929 LDA $00A7,Y; CHNL NUM
- 931 STA $023E,Y; 1ST CHAR IN BUFF
- 933 ASL
- 935 TAX; INDEX PTR
- 937 LDA #$01
- 939 STA $99,X; [130] BYTE IN BUFF PTR
- 941 LDA #$0E; CODE DIRECT ACCESS FILE
- 943 STA $00EC,Y; FILE TYPE BUFF
- 945 JMP $C194; TERM ROUT
- 947 ; [172][172] BLK CMNDS [172][172]
- 949 LDY #$00
- 951 LDX #$00
- 953 LDA #$2D; CODE [129] "-"
- 955 JSR $C268; PARSE CMND
- 957 BNE $CC30; "-" FOUND BRANCH
- 959 LDA #$31; BAD CMND CODE
- 961 JMP $C1C8; ERR[176] H[175]LING
- 963 LDA #$30; CODE [129] BAD SYNTAX
- 965 JMP $C1C8
- 967 TXA
- 969 BNE $CC2B; BAD SYNTAX BRANCH
- 971 LDX #$05; NUM OF CMNDS [171] 1
- 973 LDA $0200,Y; CHAR AFTER "-"
- 975 CMP $CC5D,X; BLK CMND TABLE
- 977 BEQ $CC42; FOUND CMND BRANCH
- 979 DEX
- 981 BPL $CC38; M[176]E [164] CHK BRANCH
- 983 BMI $CC26; [168] FOUND BRANCH
- 985 TXA
- 987 [176]A #$80
- 989 STA $022A; CMND CODE BUFF
- 991 JSR $CC6F; PARSE BLK PARAM
- 993 LDA $022A
- 995 ASL
- 997 TAX
- 999 LDA $CC64,X; BLK JUMP TABLE
- 1001 STA $70
- 1003 LDA $CC63,X
- 1005 STA $6F
- 1007 JMP ($006F); INDIRECT JUMP [164] ROUT
- 1009 ; [172][172] BLK CMND TABLE [172][172]
- 1011 .BYTE 065 070 082 087; A F R W
- 1013 .BYTE 069 080; E P
- 1015 ; [172][172] BLK JUMP TABLE [172][172]
- 1017 .BYTE 003 205 245 204; 03 CD F5 CC
- 1019 .BYTE 086 205 115 205; 56 CD 73 CD
- 1021 .BYTE 163 205 189 205; A3 CD BD CD
- 1023 ; [172][172] PARSE BLK [172][172]
- 1025 LDY #$00
- 1027 LDX #$00
- 1029 LDA #$3A; CODE [129] ":"
- 1031 JSR $C268; PARSE CMND
- 1033 BNE $CC7C; FOUND ":" BRANCH Y HOLDS [185]IISTI[145] [170]1
- 1035 LDY #$03; PARAM START
- 1037 LDA $0200,Y; CMND BUFF
- 1039 CMP #$20; SPACE
- 1041 BEQ $CC8B; FOUND SPACE BRANCH
- 1043 CMP #$1D; SKIP 1 CHAR
- 1045 BEQ $CC8B; FOUND SKIP BRANCH
- 1047 CMP #$2C; ","
- 1049 BNE $CC92; [168] COMMA BRANCH
- 1051 INY
- 1053 CPY $0274; CMND SIZE BUFF
- 1055 BCC $CC7C; M[176]E [164] [135] BRANCH
- 1057 RTS
- 1059 JSR $CCA1; C[145]VERT [198]II [164] HEX
- 1061 INC $0277; FI[195]M # 1 CTR
- 1063 LDY $0279; FI[195]M # 2 PTR
- 1065 CPX #$04; MAX # OF FILES
- 1067 BCC $CC8B; M[176]E BRANCH
- 1069 BCS $CC2B; BAD SYNTAX BRANCH
- 1071 ; [172][172] C[145]VERT [198]II [164] HEX [172][172]
- 1073 LDA #$00
- 1075 STA $6F; TEMP W[176]K BUFF
- 1077 STA $70; " " "
- 1079 STA $72; " " "
- 1081 LDX #$FF
- 1083 LDA $0200,Y; CMND BUFF
- 1085 CMP #$40
- 1087 BCS $CCCA; [168] A NUM BRANCH
- 1089 CMP #$30
- 1091 BCC $CCCA; [168] [198]II BRANCH
- 1093 [175] #$0F; MASK HI BITS
- 1095 PHA
- 1097 LDA $70; SH[139]T [197]UES IN TEMPS
- 1099 STA $71
- 1101 LDA $6F
- 1103 STA $70
- 1105 PLA
- 1107 STA $6F
- 1109 INY
- 1111 CPY $0274; CMND SIZE BUFF
- 1113 BCC $CCAB; M[176]E CMND BRANCH
- 1115 STY $0279; FI[195]M # 2 PTR
- 1117 CLC
- 1119 LDA #$00
- 1121 INX
- 1123 CPX #$03
- 1125 BCS $CCE4; D[145]E BRANCH
- 1127 LDY $6F,X
- 1129 DEY
- 1131 BMI $CCD0; Y [179] 0 BRANCH
- 1133 ADC $CCF2,X; DECIMAL TABLE
- 1135 BCC $CCD7; M[176]E BRANCH
- 1137 CLC
- 1139 INC $72
- 1141 BNE $CCD7; M[176]E BRANCH
- 1143 PHA
- 1145 LDX $0277; FI[195]M # 1 CTR
- 1147 LDA $72
- 1149 STA $0280,X; TRK FILE LINK
- 1151 PLA
- 1153 STA $0285,X; SECT FILE LINK
- 1155 RTS
- 1157 ; [172][172] DECIMAL TABLE [172][172]
- 1159 .BYTE 001 010 100; 01 0A 64
- 1161 ; [172][172] [184]E BLKS IN BAM [172][172]
- 1163 JSR $CDF5; CHK [129] [203]OD BLK
- 1165 JSR $EF5F; SET UP TRK & SECT
- 1167 JMP $C194; TERM ROUT
- 1169 LDA #$01; [168] USED 1541
- 1171 STA $02F9; " " "
- 1173 ; ** MARK BLK USED IN BAM **
- 1175 JSR $CDF5; CHK FOR (null)OD BLK
- 1177 LDA $81; CURRENT SECT NUM BUFF
- 1179 PHA
- 1181 JSR $F1FA; SET BAM
- 1183 BEQ $CD19; SECT USED NO MORE ON TRK BRANCH
- 1185 PLA
- 1187 CMP $81
- 1189 BNE $CD2C; ALREADY USED BRANCH
- 1191 JSR $EF90; MARK BLK USED
- 1193 JMP $C194; TERM ROUT
- 1195 PLA; GET RID OF SECT ALREADY IN USE
- 1197 LDA #$00
- 1199 STA $81; CURRENT SECT BUFF
- 1201 INC $80; CURRENT TRK BUFF
- 1203 LDA $80
- 1205 CMP $FED7; #$24 HIGHEST TRK
- 1207 BCS $CD31; OUT OF TRKS & SECTS BRANCH
- 1209 JSR $F1FA; SET BAM FIND NEXT AVAIL TRK & SEC
- 1211 BEQ $CD1A; NO SECT AVAIL THIS TRK BRANCH
- 1213 LDA #$65; CODE NO BLK ERROR
- 1215 JSR $E645; ERROR HANDLING
- 1217 LDA #$65
- 1219 JSR $C1C8; ERROR HANDLING
- 1221 ; ** BLK READ TEST PARAM **
- 1223 JSR $CDF2; TEST SEC SET UP TRK & SEC
- 1225 JMP $D460; READ BLK
- 1227 ; ** READ BLK W/O INCREMENT **
- 1229 JSR $D12F; SET PARAM
- 1231 LDA ($99),X; NEXT BYTE IN BUFF PTR
- 1233 RTS
- 1235 ; ** BLK READ **
- 1237 JSR $CD36; TEST PARAM
- 1239 LDA #$00
- 1241 JSR $D4C8; SET TRK & SEC PTRS
- 1243 JSR $CD3C; READ BLK
- 1245 STA $0244,Y; LAST CHAR PTR
- 1247 LDA #$89; RANDOM ACCESS CHNL CODE
- 1249 STA $00F2,Y; CHNL STATUS BUFF
- 1251 RTS
- 1253 ; ** BLK READ SECT **
- 1255 JSR $CD42; SET UP TO READ SECT
- 1257 JSR $D3EC; READ THE SECT
- 1259 JMP $C194; TERM ROUT
- 1261 ; ** U1 BLK READ SECT **
- 1263 ; U1 CMND IS THE ONE TO USE
- 1265 JSR $CC6F; PARSE BLK PARAM
- 1267 JSR $CD42; SET UP SECT TO READ
- 1269 LDA $0244,Y; LAST CHAR PTR
- 1271 STA $023E,Y; MOST RECENT READ BYTE
- 1273 LDA #$FF
- 1275 STA $0244,Y
- 1277 JMP $C194; TERM ROUT
- 1279 ; ** BLK WRITE SECT **
- 1281 JSR $CDF2; TEST BUFF SET UP TRK & SEC
- 1283 JSR $D4E8; GET BUFF PTRS A POINTS TO BUFF
- 1285 TAY
- 1287 DEY
- 1289 CMP #$02
- 1291 BCS $CD81; GREATER THAN 2 BRANCH
- 1293 LDY #$01
- 1295 LDA #$00
- 1297 JSR $D4C8; SET BUFF PTRS
- 1299 TYA
- 1301 JSR $CCF1; PUT BYTE IN ACTIVE BUFF
- 1303 TXA
- 1305 PHA
- 1307 JSR $D464; WRITE THE BLK
- 1309 PLA
- 1311 TAX
- 1313 JSR $D3EE; SET CHNL READY
- 1315 JMP $C194; TERM ROUT
- 1317 ; ** U2 BLK WRITE SECT **
- 1319 JSR $CC6F; PARSE BLK PARAM
- 1321 JSR $CDF2; TEST BUFF SET UP TRK & SEC
- 1323 JSR $D464; WRITE BLK
- 1325 JMP $C194; TERM ROUT
- 1327 ; ** BLK EXEC SECT **
- 1329 JSR $F258; KILL DISK PROTECTION (NO (null)OD 1541) **
- 1331 JSR $CD36; TEST BUFF SET UP TRK & SEC
- 1333 LDA #$00; CODE LO BYTE JUMP
- 1335 STA $6F; TEMP WORK
- 1337 LDX $F9; EXEC CODE
- 1339 LDA $FEE0,X; HI BYTE DATA BUFF (RAM)
- 1341 STA $70; TEMP WORK
- 1343 JSR $CDBA; EXEC BLK
- 1345 JMP $C194; TERM ROUT
- 1347 JMP ($006F); BLK EXEC
- 1349 ; ** SET BUFF PTR **
- 1351 JSR $CDD2; FIND BUFF
- 1353 LDA $F9; EXEC CODE
- 1355 ASL
- 1357 TAX
- 1359 LDA $0286; SECT FILE LINK
- 1361 STA $99,X; NEXT BYTE IN BUFF PTR
- 1363 JSR $D12F; SET UP PTRS
- 1365 JSR $D3EE; SET CHNL FOR I/O
- 1367 JMP $C194; TERM ROUT
- 1369 ; ** TEST BUFF FOR SEC ADDR **
- 1371 LDX $D3; FILENM # 1 PTR
- 1373 INC $D3
- 1375 LDA $0285,X; SEC FILE ADDR
- 1377 TAY
- 1379 DEY
- 1381 DEY
- 1383 CPY #$0C
- 1385 BCC $CDE5; SEC ADD BETWEEN 2 AND 14 BRANCH
- 1387 LDA #$70; NO CHNL CODE
- 1389 JMP $C1C8; ERROR HANDLING
- 1391 STA $83; CURRENT SEC ADDR
- 1393 JSR $D0EB; FIND READ CHNL
- 1395 BCS $CDE0; NO CHNL BRANCH
- 1397 JSR $DF93; GET ACTIVE BUFF
- 1399 STA $F9; EXEC CMND
- 1401 RTS
- 1403 ; ** TEST BLK PARAM **
- 1405 JSR $CDD2; TEST FOR BUFF IN USE
- 1407 LDX $D3; CHNL NUM BUFF
- 1409 LDA $0285,X; DRV NUM WANTED
- 1411 AND #$01
- 1413 STA $7F; CURRENT DRV BUFF
- 1415 LDA $0287,X; SECT FILE LINK
- 1417 STA $81; CURRENT SECT NUM
- 1419 LDA $0286,X; TRK FILE LINK
- 1421 STA $80; CURRENT TRK NUM
- 1423 JSR $D55F; CHK FOR (null)OD TRK & SEC
- 1425 JMP $C100; TURN ON DRV LED
- 1427 ; ** FIND RELATIVE FILE **
- 1429 JSR $CE2C; GET TOTAL BYTES
- 1431 JSR $CE6E; DIVIDE BY 254
- 1433 LDA $90; HOLDS REMAINDER
- 1435 STA $D7; POINTS TO LAST SECT
- 1437 JSR $CE71; DIVIDE BY 120
- 1439 INC $D7
- 1441 INC $D7; BYPASS LINK BYTES TRK & SEC
- 1443 LDA $8B; HOLDS QUOTIENT RESULT
- 1445 STA $D5; SIDE SEC # BUFF
- 1447 LDA $90; REMAINDER OF DIVISION
- 1449 ASL; EACH SIDE SEC IS 2 BYTES
- 1451 CLC
- 1453 ADC #$10; SKIP INITIAL LINK TABLE
- 1455 STA $D6; PTR TO SECT HOLDING SIDE SECS
- 1457 RTS
- 1459 ; ** CALCULATE RECORD LOCATION IN BYTES **
- 1461 JSR $CEC9; ZERO RESULT AREA
- 1463 STA $92; ACCUMULATOR
- 1465 LDX $82; INDEX CURRENT CHNL
- 1467 LDA $B5,X; LO BYTE RECORD NUM
- 1469 STA $90; ACCUMULATOR
- 1471 LDA $BB,X; HI BYTE RECORD NUM
- 1473 STA $91; ACCUMULATOR
- 1475 BNE $CE41; HI BYTE NOT 0 BRANCH
- 1477 LDA $90
- 1479 BEQ $CE4C; ADJUST ZERO FIRST RECORD
- 1481 LDA $90
- 1483 SEC
- 1485 SBC #$01
- 1487 STA $90
- 1489 BCS $CE4C; C FLAG SET BRANCH
- 1491 DEC $91; HI BYTE RECORD SIZE
- 1493 LDA $C7,X; RECORD SIZE BUFF
- 1495 STA $6F; TEMP WORK
- 1497 LSR $6F
- 1499 BCC $CE57; NO ADDITION BRANCH
- 1501 JSR $CEED; ADDITION ROUT
- 1503 JSR $CEE5; MULTIPLICATION ROUT
- 1505 LDA $6F
- 1507 BNE $CE50; NOT FINISHED BRANCH
- 1509 LDA $D4; BYTE PTR
- 1511 CLC
- 1513 ADC $8B; RESULT
- 1515 STA $8B
- 1517 BCC $CE6D; FINISHED BRANCH
- 1519 INC $8C; RESULT
- 1521 BNE $CE6D; FINISHED BRANCH
- 1523 INC $8D; RESULT
- 1525 RTS
- 1527 ; ** DIVIDE ROUT **
- 1529 ;$8B = QUOTIENT $90 = REMAINDER
- 1531 LDA #$FE; 254 ASCII
- 1533 BIT $78A9; *** SKIP TWO BYTES ***
- 1535 STA $6F; TEMP WORK
- 1537 LDX #$03
- 1539 LDA $8F,X; RESULT
- 1541 PHA
- 1543 LDA $8A,X; TEMP RESULT
- 1545 STA $8F,X
- 1547 PLA
- 1549 STA $8A,X
- 1551 DEX
- 1553 BNE $CE77; MORE DIVIDE BRANCH
- 1555 JSR $CED9; ZERO X ZERO RESULT 1 & 2
- 1557 LDX #$00
- 1559 LDA $90,X; ACCUMULATOR
- 1561 STA $8F,X; " "
- 1563 INX
- 1565 CPX #$04
- 1567 BCC $CE89; MORE DIVIDE BRANCH
- 1569 LDA #$00
- 1571 STA $92; HI BYTE ACCUMULATOR
- 1573 BIT $6F; CHK FOR DIVIDE BY 120
- 1575 BMI $CEA3; DIVIDE BY 254 BRANCH
- 1577 ASL $8F; SET THE CARRY
- 1579 PHP
- 1581 LSR $8F; RESTORE ORIGINAL VALUE
- 1583 PLP
- 1585 JSR $CEE6; MULTIPLICATION ROUT
- 1587 JSR $CEED; ADDITION ROUT
- 1589 JSR $CEE5; MULTIPLICATION ROUT
- 1591 BIT $6F; CHK DIVIDE BY 120
- 1593 BMI $CEB0; DIVIDE BY 254 BRANCH
- 1595 JSR $CEE2; MULTIPLICATION BY 4
- 1597 LDA $8F; ACCUMULATOR
- 1599 CLC
- 1601 ADC $90; REMAINDER
- 1603 STA $90
- 1605 BCC $CEBF; TEST REMAINDER BRANCH
- 1607 INC $91; ACCUMULATOR
- 1609 BNE $CEBF
- 1611 INC $92; RESULT
- 1613 LDA $92
- 1615 ORA $91
- 1617 BNE $CE87; REMAINDER TOO LARGE BRANCH
- 1619 LDA $90; REMAINDER
- 1621 SEC
- 1623 SBC $6F; TEMP WORK
- 1625 BCC $CED8; REMAINDER TOO LARGE BRANCH
- 1627 INC $8B; QUOTIENT
- 1629 BNE $CED6; REMAINDER SMALLER BRANCH
- 1631 INC $8C; RESULT
- 1633 BNE $CED6; REMAINDER TOO LARGE BRANCH
- 1635 INC $8D; RESULT
- 1637 STA $90; REMAINDER
- 1639 RTS
- 1641 ; ** ZERO REULTS **
- 1643 LDA #$00
- 1645 STA $8B
- 1647 STA $8C
- 1649 STA $8D
- 1651 RTS
- 1653 ; ** MULTIPLY ACCUMULATOR BY 4 **
- 1655 JSR $CEE5
- 1657 CLC
- 1659 ROL $90
- 1661 ROL $91
- 1663 ROL $92
- 1665 RTS
- 1667 ; ** ADD ACCUMULATOR TO RESULT **
- 1669 CLC
- 1671 LDX #$FD
- 1673 LDA $8E,X
- 1675 ADC $93,X
- 1677 STA $8E,X
- 1679 INX
- 1681 BNE $CEF0; MORE ADD BRANCH
- 1683 RTS
- 1685 ; ** INITIALIZE LEAST USED TABLE **
- 1687 LDX #$00
- 1689 TXA
- 1691 STA $FA,X; LEAST USED BUFF
- 1693 INX
- 1695 CPX #$04; CMND CHNL NUM
- 1697 BNE $CEFC; MORE BRANCH
- 1699 LDA #$06; CODE FOR FLOATING BAM
- 1701 STA $FA,X
- 1703 RTS
- 1705 ; ** UPDATE LEAST USED TABLE **
- 1707 LDY #$04; CODE FOR CMND CHNL
- 1709 LDX $82; CURRENT CHNL
- 1711 LDA $00FA,Y; VALUE LEAST USED
- 1713 STX $FA,Y
- 1715 CMP $82
- 1717 BEQ $CF1D; LEAST USED BRANCH
- 1719 DEY
- 1721 BMI $CEFA; NO MORE CHNLS BRANCH
- 1723 TAX
- 1725 JMP $CF0D; MORE TO CHK BRANCH
- 1727 RTS
- 1729 ; ** SWITCH ACTIVE & INACTIVE BUFFS **
- 1731 JSR $CF09; UPDATE LEAST USED TABLE
- 1733 JSR $DFB7; GET INACTIVE BUFF IN A
- 1735 BNE $CF6C; INACTIVE BUFF BRANCH
- 1737 JSR $D1D3; SET DRV NUM TO 1
- 1739 JSR $D28E; GET FREE BUFF
- 1741 BMI $CF76; NO BUFF BRANCH
- 1743 JSR $DFC2; STORE INACTIVE BUFF
- 1745 LDA $80; CURRENT TRK NUM BUFF
- 1747 PHA
- 1749 LDA $81; CURRENT SECT BUFF
- 1751 PHA
- 1753 LDA #$01; CODE FOR 1 BYTE
- 1755 JSR $D4F6; DIRECT READ BYTES IN A
- 1757 STA $81; CURRENT SECT BUFF
- 1759 LDA #$00
- 1761 JSR $D4F6; DIRECT READ
- 1763 STA $80; TRK NUM BUFF
- 1765 BEQ $CF66; LAST SECT IN FILE BRANCH
- 1767 JSR $D125; GET FILE TYPE
- 1769 BEQ $CF57; RELATIVE FILE BRANCH
- 1771 JSR $DDAB; CHK IF READ OR WRITE
- 1773 BNE $CF57; READ BRANCH
- 1775 JSR $CF8C; TOGGLE BUFFS
- 1777 JMP $CF5D
- 1779 JSR $CF8C; " "
- 1781 JSR $DE57; READ NEXT SECT
- 1783 PLA
- 1785 STA $81; SECT BUFF
- 1787 .FILE DISK ROM 3
-