$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