home *** CD-ROM | disk | FTP | other *** search
- 1 INY
- 3 INY; SKIP CHECKSUM
- 5 LDA $0628; SECT NUM
- 7 STA $0300,Y
- 9 INY
- 11 LDA $51; TRK NUM
- 13 STA $0300,Y
- 15 INY
- 17 LDA $13,X; ID # 2
- 19 INY:STA $0300,Y
- 21 LDA $12,X; ID # 1
- 23 STA $0300,Y
- 25 INY
- 27 LDA #$0F; PAD BYTES
- 29 STA $0300,Y
- 31 INY
- 33 STA $0300,Y
- 35 INY
- 37 LDA #$00; CALCULATE HEADER CHECKSUM
- 39 EOR $02FA,Y
- 41 EOR $02FB,Y
- 43 EOR $02FC,Y
- 45 EOR $02FD,Y
- 47 STA $02F9,Y; CHECKSUM
- 49 INC $0268; SECT COUNT
- 51 LDA $0268
- 53 CMP $43; # SECTS THIS TRK
- 55 BCC $FC3F; MORE IMAGES
- 57 TYA; # SECTS
- 59 PHA
- 61 INX; BECOMES #$01
- 63 TXA
- 65 STA $0500,X; DUMMY CHAR
- 67 INX
- 69 BNE $FC88; FILE BUFF WITH #$01
- 71 LDA #$03; HI BYTE BUFF 0300
- 73 STA $31
- 75 JSR $FE30; CONVERT HEADERS TO GCR
- 77 PLA
- 79 TAY
- 81 DEY
- 83 JSR $FDE5; CONVERT OVERFLOW TO GCR
- 85 JSR $FDF5
- 87 LDA #$05:STA $31
- 89 JSR $FE59; CALCULATE DATA BLK CHECKSUM
- 91 STA $3A
- 93 JSR $F78F; CONVERT DUMMY DATA BLK TO GCR (ALL #$01)
- 95 ; ** BEGIN FORMATTING THE TRK **
- 97 LDA #$00
- 99 STA $32; POINTS TI 1ST HEADER
- 101 JSR $FE0E; CLEAR THE TRK
- 103 LDA #$FF; SYNC CHAR
- 105 STA $1C01; READ/WRITE PORT
- 107 LDX #$05; 5 SYNCS
- 109 BVC $FCB8; WAIT
- 111 CLV
- 113 DEX
- 115 BNE $FCB8; MORE SYNC MARKS
- 117 LDX #$0A; 10 BYTES
- 119 LDY $32; START OF GCR HEADERS
- 121 BVC $FCC2; WAIT
- 123 CLV
- 125 LDA $0300,Y
- 127 STA $1C01; WRITE HEADER BYTE TO DSK
- 129 INY
- 131 DEX
- 133 BNE $FCC2; MORE TO WRITE THIS HEADER
- 135 LDX #$09; HEADER GAP SIZE 9 BYTES
- 137 BVC $FCD1
- 139 CLV
- 141 LDA #$55; HEADER GAP BYTE
- 143 STA $1C01; WRITE TO DSK
- 145 DEX
- 147 BNE $FCD1; MORE GAP BYTES
- 149 LDA #$FF; SYNC MARK
- 151 LDX #$05; 5 SYNC MARKS
- 153 BVC $FCE0; WAIT
- 155 CLV
- 157 STA $1C01; WRITE SYNC TO TRK
- 159 DEX
- 161 BNE $FCE0; MORE SYNCS
- 163 LDX #$BB; POINT TO OVERFLOW BUFF
- 165 BVC $FCEB:CLV
- 167 LDA $0100,X
- 169 STA $1C01; WRITE TO DSK
- 171 INX
- 173 BNE $FCEB; MORE OVERFLOW
- 175 LDY #$00; POINTS TO DATA BUFF
- 177 BVC $FCF9; WAIT
- 179 CLV
- 181 LDA ($30),Y
- 183 STA $1C01; WRITE TO DSK
- 185 INY
- 187 BNE $FCF9; MORE DATA BUFF
- 189 LDA #$55; GAP BETWEEN DATA & HEADER
- 191 LDX $0626; HOLDS # OF GAP BYTES
- 193 BVC $FD09; WAIT
- 195 CLV
- 197 STA 41C01; WRITE GAP TO TRK
- 199 DEX
- 201 BNE $FD09; MORE GAPS
- 203 LDA $32
- 205 CLC
- 207 ADC #$0A; 10 BYTES POINT NEXT HEADER
- 209 STA $32
- 211 DEC $0628; SECT CTR
- 213 BNE $FCB1; WRITE MORE SECTS ON TRK
- 215 BVC $FD1E; WAIT FOR LAST BYTE
- 217 CLV
- 219 BVC $FD21
- 221 CLV
- 223 JSR $FE00; TURN OFF WRITE
- 225 ; ** VERIFY FORMAT **
- 227 LDA #$C8; NUM OF TRYS
- 229 STA $0623
- 231 LDA #$00; SET PTRS TO $0300
- 233 STA $30
- 235 LDA #$03
- 237 STA $31
- 239 LDA $43; # OF SECTS THIS TRK
- 241 STA $0628
- 243 JSR $F556; WAIT FOR SYNC
- 245 LDX #$0A; HEADER CHAR TO READ
- 247 LDY #$00
- 249 BVC $FD40; WAIT
- 251 CLV
- 253 LDA $1C01; READ THE BYTE
- 255 CMP ($30),Y
- 257 BNE $FD58; NO MATCH
- 259 INY
- 261 DEX
- 263 BNE $FD40; MORE HEADER TO READ
- 265 CLC
- 267 LDA $30
- 269 ADC #$0A; POINT TO NEXT HEADER
- 271 STA $30
- 273 JMP $FD62; CHECK THE DATA BLK
- 275 DEC $0623; BAD VERIFY
- 277 BNE $FD2C; MORE TRYS (null) BACK
- 279 LDA #$06; TRIED 200 TIMES ERROR
- 281 JMP $FDD3; ERROR HANDLING
- 283 JSR $F556; WAIT FOR SYNC
- 285 LDY #$BB; START OVERFLOW BUFF
- 287 BVC $FD67; WAIT
- 289 CLV
- 291 LDA $1C01; READ A BYTE
- 293 CMP $0100,Y
- 295 BNE $FD58; NO MATCH THIS DATA BUFF
- 297 INY
- 299 BNE $FD67; MORE TO CHECK THIS SECT
- 301 LDX #$FC; # OF REST OF SEC BYTES LESS OFF BYTES
- 303 BVC $FD77; WAIT
- 305 CLV
- 307 LDA $1C01; READ A BYTE
- 309 CMP $0500,Y
- 311 BNE $FD58; NO MATCH
- 313 INY
- 315 DEX
- 317 BNE $FD77; MORE SECT TO CHECK
- 319 DEC $0628; # OF SEC THIS TRK
- 321 BNE $FD39; MORE SECTS TO CHECK
- 323 INC $51; TRK CTR
- 325 LDA $51
- 327 CMP #$24; # OF TRKS + 1
- 329 BCS $FD96; DONE END VERIFY
- 331 JMP $F99C; STEP HEAD NEXT TRK
- 333 LDA #$FF
- 335 STA $51
- 337 LDA #$00
- 339 STA $50; (null)OD LOAD NO GCR IN BUFF
- 341 LDA #$01; OK ERROR CODE
- 343 JMP $F969; ERROR HANDLING
- 345 ; ** CLEAN TRK WITH SYNC MARKS **
- 347 LDA $1C0C; PERIPHIAL CONTROL REG
- 349 AND #$1F; LATCH SIGNAL
- 351 ORA #$C0
- 353 STA $1C0C
- 355 LDA #$FF; OUTPUT PORT
- 357 STA $1C03; DATA DIRECTION REG
- 359 STA $1C01; SYNC MARK
- 361 LDX #$28; HI CTR
- 363 LDY #$00
- 365 BVC $FDB9; WAIT
- 367 CLV
- 369 DEY
- 371 BNE $FDB9
- 373 DEX
- 375 BNE $FDB9
- 377 RTS
- 379 ; ** WRITE # OF BYTES ($0621/2) TO DSK **
- 381 LDX $0621
- 383 LDY $0622
- 385 BVC $FDC9; WAIT
- 387 CLV
- 389 DEX
- 391 BNE $FDC9
- 393 DEY
- 395 BPL $FDC9
- 397 RTS
- 399 ; ** FORMAT ERROR HANDLING **
- 401 DEC $0620; TRY CTR
- 403 BEQ $FDDB; SEND ERROR
- 405 JMP $F99C; TRY AGAIN
- 407 LDY #$FF
- 409 STY $51; TRK CTR
- 411 INY
- 413 STY $50; DATA IN BUFF GCR FLG
- 415 JMP $F969; ERROR HANDLING
- 417 ; ** MOVE BYTES IN BUFFS **
- 419 LDA $0300,Y
- 421 STA $0345,Y; MOVED DOWN
- 423 DEY
- 425 BNE $FDE5; MORE TO MOVE
- 427 LDA $0300; LAST BYTE TO MOVE IS 1ST
- 429 STA $0345
- 431 RTS
- 433 LDY #$44
- 435 LDA $01BB,Y
- 437 STA ($30),Y; FROM OVERFLOW BUFF
- 439 DEY
- 441 BPL $FDF7; MORE TO MOVE
- 443 RTS
- 445 ; ** TURN OFF WRIYE MODE **
- 447 LDA $1C0C; SET BITS 5 6 & 7
- 449 ORA #$E0
- 451 STA $1C0C; PERIPHIAL CONTROL REG
- 453 LDA #$00; INPUT PORT
- 455 STA $1C03; DATA DIRECTION REG
- 457 RTS
- 459 ; ** CLEAR TRK WITH NON SYNC CHARS **
- 461 LDA $1C0C; PERIPHIAL CONTROL REG
- 463 AND #$1F; FORCE LOW FOR OUTPUT
- 465 ORA #$C0
- 467 STA $1C0C; PERIPHIAL CONTROL REG
- 469 LDA #$FF; DTAT OUT MODE
- 471 STA $1C03; DATA DIRECTION REG
- 473 LDA #$55; GAP BYTE
- 475 STA $1C01; WRITE TO DSK PORT
- 477 LDX #$28; CTRS
- 479 LDY #$00
- 481 BVC $FE26; WAIT
- 483 CLV
- 485 DEY
- 487 BNE $FE26; MORE NON SYNC
- 489 DEX
- 491 BNE $FE26
- 493 RTS
- 495 ; ** CONVERT HEADER IMAGES IN $0300 TO GCR W/OUT HEADER ID **
- 497 LDA #$00; LO BYTE PTRS
- 499 STA $30
- 501 STA $2E
- 503 STA $36
- 505 LDA #$BB; 1ST BYTE OVERFLOW
- 507 STA $34; HI BYTE PTRS
- 509 LDA $31
- 511 STA $2F
- 513 LDA #$01
- 515 STA $31
- 517 LDY $36
- 519 LDA ($2E),Y
- 521 STA $52; GCR CONVERSION AREA
- 523 INY
- 525 LDA ($2E),Y
- 527 STA $53
- 529 INY
- 531 LDA ($2E),Y
- 533 STA $54
- 535 INY
- 537 LDA ($2E),Y
- 539 STA $55
- 541 INY
- 543 BEQ $FE64
- 545 STY $36; SAVE INDEX
- 547 JSR $F6D0; CONVERT TO 5 GCR BYTES
- 549 JMP $FE44; CONVERT AND STORE LAST 4 BYTES
- 551 JMP $F6D0; MAIN IRQ ROUT
- 553 ; ** MAIN IRQ ROUT **
- 555 ; CHECKED EVERY 10 MILLISECONDS FOR SOMETHING TO DO **
- 557 PHA; SAVE REGISTERS
- 559 TXA
- 561 PHA
- 563 TYA
- 565 PHA
- 567 LDA $180D; INTERRUPT FLG REG
- 569 AND #$02
- 571 BEQ $FE76; NO ATTENTION SIG FROM 64
- 573 JSR $E853; BUS HANDLING ROUTS
- 575 LDA $1C0D; INTERRUPT FLG REG
- 577 ASL; PUSH BIT 6
- 579 BPL $FE75; NO DSK CONTROLLER ROUTS
- 581 JSR $F2B0; DSK CONTROLLER ROUTS
- 583 PLA; RESTORE REGISTERS
- 585 TAY
- 587 PLA
- 589 TAX
- 591 PLA
- 593 RTI
- 595 ; ** CONSTANTS IN ROM **
- 597 ;$FE85 #$12 DIRECTORY TRK NUM
- 599 ;$FE86 #$04 NUM OF BYTES/TRK IN BAM
- 601 ;$FE87 #$04 OFFSET OF BAM IN THE SECT
- 603 ;$FE88 #$90 OFFSET OF DSK NAME IN BAM SECT
- 605 ; ** CMMAND TABLE **
- 607 ;$FE89 #$56 V VALIDATE DSK
- 609 ; 49 I INIT DSK
- 611 ; 44 D DUPLICATE DSK (NOT ON 1541)
- 613 ; 4D M MEM OPERATION
- 615 ; 42 B BLK OPERATION
- 617 ; 55 U USER JUMP CMNDS
- 619 ; 50 P POSISTION (REL FILES)
- 621 ; 26 & UTILITY LOADER
- 623 ; 43 C COPY FILE (NOT ON 1541)
- 625 ; 52 R RENAME FILE
- 627 ; 53 S SCRATCH A FILE
- 629 ; 4E N NEW (FORMAT) DSK
- 631 ; ** CMND JUMP TABLE **
- 633 ; LO BYTE HI BYTE COMND
- 635 ;$FE95 #$84 $FEA1 #$ED V
- 637 ; 05 D0 I
- 639 ; C1 C8 D
- 641 ; F8 CA M
- 643 ; 1B CC B
- 645 ; 5C CB U
- 647 ; 07 E2 P
- 649 ; A3 E7 &
- 651 ; F0 C8 C
- 653 ; 88 CA R
- 655 ; 23 C8 S
- 657 ; 0D EE N
- 659 ; ** IMAGES FOR CMNDS **
- 661 ;$FEAD #$51 01010001 DSK COPY
- 663 ; DD 11011101 RENAME (NOT PARSED)
- 665 ; 1C 00011100 SCRATCH " "
- 667 ; 9E 10011110 NEW " "
- 669 ; 1C 00011100 LOAD
- 671 ; ** MODE TABLE **
- 673 ;$FEB2 #$52 R READ
- 675 ; 57 W WRITE
- 677 ; 41 A APPEND
- 679 ; 4D M MODIFY
- 681 ; ** MISC CONSTANTS **
- 683 ;$FEB6 #$44 D $FEBB #$44 D
- 685 ; 53 S 53 S
- 687 ; 50 P 50 P
- 689 ; 55 U 55 U
- 691 ; 4C L 52 R
- 693 ;$FEC0 45 E $FEC5 4C L
- 695 ; 45 E 51 Q
- 697 ; 52 R 47 G
- 699 ; 53 S 52 R
- 701 ; 45 E 4C L
- 703 ; ** LED MASKS **
- 705 ;$FECA #$08 DRIVE 0 #$00 DRIVE 1 (NOT ON 1541)
- 707 ; ** ERROR FLG VARIABLES FOR BIT **
- 709 ;$FECC #$00
- 711 ; 3F
- 713 ; 7F
- 715 ; BF
- 717 ; FF
- 719 ; ** NUM OF SECTS/TRK/ZONE **
- 721 ;$FED1 #$11 17 TRK/ZONE 4 31 35
- 723 ; 12 18 25 30
- 725 ; 13 19 18 24
- 727 ; 15 21 01 17
- 729 ; ** DOS VERSION **
- 731 ;$FED5 #$41 A
- 733 ; ** NUM OF ZONES **
- 735 ;$FED6 #$04
- 737 ; ** ZONE BOUNDRIES **
- 739 ;$FED7 #$24 #36 END/ZONE 4
- 741 ; 1F 31 3
- 743 ; 19 25 2
- 745 ; 12 18 1
- 747 ; ** OFFSETS ERROR RECOVERY **
- 749 ;$FEDB #$01
- 751 ; FF
- 753 ; FF
- 755 ; 01
- 757 ; 00
- 759 ; ** HI BYTE PTRS DATA BUFFS **
- 761 ;$FEE0 #$03 BUFF 0 $0300 03FF
- 763 ; 04 1 0400 04FF
- 765 ; 05 2 0500 05FF
- 767 ; 06 3 0600 06FF
- 769 ; 07 4 0700 07FF
- 771 ; ** DATA CHECKSUM FOR ROM CHECK **
- 773 ;$FEE6 #$3E
- 775 ; ** PTR NMI VECTOR **
- 777 *= $FEE7
- 779 JMP ($0065)
- 781 ; ** POWER ON ERROR ROUT **
- 783 STA $1C00; DSK CONTROLLER
- 785 STA $1C02; DATA DIRECTION REG
- 787 JMP $EA7D; LED BLINK ROUT
- 789 ; ** SLOW SERIAL ROUT **
- 791 TXA
- 793 LDX #$05; 40 MICROSECOND DELAY
- 795 DEX
- 797 BNE $FEF6
- 799 TAX
- 801 RTS
- 803 JSR $E9AE; ** NOT USED
- 805 JMP $E99C; ** NOT USED
- 807 ; ** NMI ROUT CHECK U+ U- **
- 809 LDA $0202; 3RD BYTE CMND BUFF
- 811 CMP #$2D; "-"
- 813 BEQ $FF0D
- 815 SEC
- 817 SBC #$2B; "+"
- 819 BNE $FEE7; NOT U+
- 821 STA $23; TEMP STORE
- 823 RTS
- 825 STX $1803; DATA DIRECTION PORT
- 827 LDA #$02; DATA OUT
- 829 STA $1800; SERIAL DATA I/O
- 831 LDA #$1A
- 833 STA $1802; DATA DIRECTION PORT
- 835 JMP $EAA7; BACK TO INIT
- 837 LDA $1800
- 839 AND #$01; SERIAL DATA OUT
- 841 BNE $FF20; WAIT
- 843 LDA #$01
- 845 STA $1805; TIMER 1 HIGH COUNT
- 847 JMP $E9DF; BACK TO SERIAL BUS LISTEN
- 849 ; ** TABLE OF JUMP VECTORS **
- 851 ;$FFE6; LO #$C6 HI #$C8 FORMAT ROM
- 853 ; 8F F9 TURN OFF ROM
- 855 ; 5F CD U BLK READ
- 857 ; 97 CD U BLK WRITE
- 859 ; 00 05 LINK BUFF 2
- 861 ; 03 05 " "
- 863 ; 06 05 " "
- 865 ; 09 05 " "
- 867 ; 0C 05 " "
- 869 ; 0F 05 " "
- 871 ; 01 FF NMI ROM ROUT
- 873 ; A0 EA DSK INIT ROM ROUT
- 875 ; 67 EE SYSTEM ROM ROUT
- 877 .END DISK/ROM0
-