     $F3B1/62385:   Read block header, verify ID

    Jump from $F36B, $F5E6:

    F3B1: A2 5A     LDX #$5A        ; 90
    F3B3: 86 4B     STX $4B         ; counter
    F3B5: A2 00     LDX #$00
    F3B7: A9 52     LDA #$52        ; 82
    F3B9: 85 24     STA $24

    Jump from $F409:

    F3BB: 20 56 F5  JSR $F556       ; wait for SYNC

    Jump from $F3BE:

    F3BE: 50 FE     BVC $F3BE       ; byte ready?
    F3C0: B8        CLV
    F3C1: AD 01 1C  LDA $1C01       ; data from read head
    F3C4: C5 24     CMP $24
    F3C6: D0 3F     BNE $F407       ; 20, 'read error'

    Jump from $F3C8, $F3D3:

    F3C8: 50 FE     BVC $F3C8       ; byte ready?
    F3CA: B8        CLV
    F3CB: AD 01 1C  LDA $1C01       ; data byte from disk (block header)
    F3CE: 95 25     STA $25,X       ; save 7 bytes
    F3D0: E8        INX
    F3D1: E0 07     CPX #$07
    F3D3: D0 F3     BNE $F3C8       ; continue reading
    F3D5: 20 97 F4  JSR $F497
    F3D8: A0 04     LDY #$04        ; 4 bytes plus parity
    F3DA: A9 00     LDA #$00

    Jump from $F3E0:

    F3DC: 59 16 00  EOR $16,Y       ; form checksum for header
    F3DF: 88        DEY
    F3E0: 10 FA     BPL $F3DC
    F3E2: C9 00     CMP #$00        ; parity ok?
    F3E4: D0 38     BNE $F41E       ; 27, 'read error'
    F3E6: A6 3E     LDX $3E         ; drive number
    F3E8: A5 18     LDA $18         ; track number of header
    F3EA: 95 22     STA $22,X       ; use as actual track number
    F3EC: A5 45     LDA $45
    F3EE: C9 30     CMP #$30        ; code for 'preserve header'
    F3F0: F0 1E     BEQ $F410       ; preserve header
    F3F2: A5 3E     LDA $3E
    F3F4: 0A        ASL
    F3F5: A8        TAY
    F3F6: B9 12 00  LDA $12,Y
    F3F9: C5 16     CMP $16         ; command with ID1
    F3FB: D0 1E     BNE $F41B
    F3FD: B9 13 00  LDA $13,Y
    F400: C5 17     CMP $17         ; command with ID2
    F402: D0 17     BNE $F41B       ; <>, then 29, 'disk id mismatch'
    F404: 4C 23 F4  JMP $F423

    Jump from $F3C6:

    F407: C6 4B     DEC $4B         ; decrement counter for attempts
    F409: D0 B0     BNE $F3BB       ; and try again
    F40B: A9 02     LDA #$02        ; else
    F40D: 20 69 F9  JSR $F969       ; 20, 'read error'

        Previous Page / Next Page