$D506/54534:   Check track and sector numbers

Jump from $D0D0, $DE92:

D506: BD 5B 02  LDA $025B,X     ; command code for disk controller
D509: 29 01     AND #$01        ; drive number
D50B: 0D 4D 02  ORA $024D       ; plus command code

Jump from $D596:

D50E: 48        PHA             ; save
D50F: 86 F9     STX $F9         ; buffer number
D511: 8A        TXA
D512: 0A        ASL             ; times 2
D513: AA        TAX
D514: B5 07     LDA $07,X       ; sector
D516: 8D 4D 02  STA $024D       ; save
D519: B5 06     LDA $06,X       ; track
D51B: F0 2D     BEQ $D54A       ; 66, 'illegal track or sector'
D51D: CD D7 FE  CMP $FED7       ; 36, highest track number + 1
D520: B0 28     BCS $D54A       ; 66, 'illegal track or sector'
D522: AA        TAX
D523: 68        PLA             ; command code
D524: 48        PHA
D525: 29 F0     AND #$F0
D527: C9 90     CMP #$90        ; code for writing?
D529: D0 4F     BNE $D57A       ; no
D52B: 68        PLA
D52C: 48        PHA
D52D: 4A        LSR
D52E: B0 05     BCS $D535
D530: AD 01 01  LDA $0101
D533: 90 03     BCC $D538

Jump from $D52E:

D535: AD 02 01  LDA $0102

Jump from $D533:

D538: F0 05     BEQ $D53F
D53A: CD D5 FE  CMP $FED5       ; 'A', format marker
D53D: D0 33     BNE $D572       ; 73, 'cbm dos v2.6 1541'

Jump from $D538:

D53F: 8A        TXA             ; track number
D540: 20 4B F2  JSR $F24B       ; get maximum sector number
D543: CD 4D 02  CMP $024D       ; compare with sector number
D546: F0 02     BEQ $D54A       ; equal, then error
D548: B0 30     BCS $D57A       ; smaller?

Jump from $D51B, $D520, $D546:

D54A: 20 52 D5  JSR $D552       ; get track and sector number

Jump from $D561, $D566, $D56D, $D56F:

D54D: A9 66     LDA #$66
D54F: 4C 45 E6  JMP $E645       ; 66, 'illegal track or sector'

    Previous Page / Next Page