     $F510/62736:   Read block header

    Jump from $F50A, $F589, $F6CA:

    F510: A5 3D     LDA $3D         ; drive number
    F512: 0A        ASL
    F513: AA        TAX
    F514: B5 12     LDA $12,X       ; ID1
    F516: 85 16     STA $16         ; save
    F518: B5 13     LDA $13,X       ; ID2
    F51A: 85 17     STA $17         ; save
    F51C: A0 00     LDY #$00
    F51E: B1 32     LDA ($32),Y     ; get track and
    F520: 85 18     STA $18
    F522: C8        INY
    F523: B1 32     LDA ($32),Y     ; sector number from buffer
    F525: 85 19     STA $19
    F527: A9 00     LDA #$00
    F529: 45 16     EOR $16
    F52B: 45 17     EOR $17         ; calculate parity for block header
    F52D: 45 18     EOR $18
    F52F: 45 19     EOR $19
    F531: 85 1A     STA $1A         ; and save
    F533: 20 34 F9  JSR $F934
    F536: A2 5A     LDX #$5A        ; 90 attempts

    Jump from $F54F:

    F538: 20 56 F5  JSR $F556       ; wait for SYNC
    F53B: A0 00     LDY #$00

    Jump from $F53D, $F54B:

    F53D: 50 FE     BVC $F53D       ; byte ready?
    F53F: B8        CLV
    F540: AD 01 1C  LDA $1C01       ; read data from block header
    F543: D9 24 00  CMP $24,Y       ; compare with saved data
    F546: D0 06     BNE $F54E       ; not the same, try again
    F548: C8        INY
    F549: C0 08     CPY #$08        ; 8 bytes read?
    F54B: D0 F0     BNE $F53D       ; no
    F54D: 60        RTS

    Jump from $F546:

    F54E: CA        DEX             ; decrement counter
    F54F: D0 E7     BNE $F538       ; not yet zero?
    F551: A9 02     LDA #$02

    Jump from $F560:

    F553: 4C 69 F9  JMP $F969       ; 20, 'read error'

        Previous Page / Next Page