$F575/62837: Write data block to disk
Jump from $F570:
F575: 20 E9 F5 JSR $F5E9 ; calculate parity for buffer
F578: 85 3A STA $3A ; and save
F57A: AD 00 1C LDA $1C00 ; read port B
F57D: 29 10 AND #$10 ; isolate bit for 'write protect'
F57F: D0 05 BNE $F586 ; not set, ok
F581: A9 08 LDA #$08
F583: 4C 69 F9 JMP $F969 ; 26, 'write protect'
Jump from $F57F:
F586: 20 8F F7 JSR $F78F
F589: 20 10 F5 JSR $F510 ; find block header
F58C: A2 09 LDX #$09
Jump from $F58E, $F592:
F58E: 50 FE BVC $F58E ; byte ready?
F590: B8 CLV
F591: CA DEX
F592: D0 FA BNE $F58E
F594: A9 FF LDA #$FF
F596: 8D 03 1C STA $1C03 ; port A (read/write head) to output
F599: AD 0C 1C LDA $1C0C
F59C: 29 1F AND #$1F
F59E: 09 C0 ORA #$C0 ; change PCR to output
F5A0: 8D 0C 1C STA $1C0C
F5A3: A9 FF LDA #$FF
F5A5: A2 05 LDX #$05
F5A7: 8D 01 1C STA $1C01 ; write $FF to disk 5 times
F5AA: B8 CLV
Jump from $F5AB, $F5AF:
F5AB: 50 FE BVC $F5AB ; as SYNC characters
F5AD: B8 CLV
F5AE: CA DEX
F5AF: D0 FA BNE $F5AB
F5B1: A0 BB LDY #$BB
Jump from $F5BD:
F5B3: B9 00 01 LDA $0100,Y ; bytes $1BB to $1FF to disk
Jump from $F5B6:
F5B6: 50 FE BVC $F5B6
F5B8: B8 CLV
F5B9: 8D 01 1C STA $1C01
F5BC: C8 INY
F5BD: D0 F4 BNE $F5B3
Jump from $F5C8:
F5BF: B1 30 LDA ($30),Y ; write data buffer (256 bytes)
Jump from $F5C1:
F5C1: 50 FE BVC $F5C1
F5C3: B8 CLV
F5C4: 8D 01 1C STA $1C01
F5C7: C8 INY
F5C8: D0 F5 BNE $F5BF
Jump from $F5CA:
F5CA: 50 FE BVC $F5CA ; byte ready?
F5CC: AD 0C 1C LDA $1C0C
F5CF: 09 E0 ORA #$E0 ; PCR to input again
F5D1: 8D 0C 1C STA $1C0C
F5D4: A9 00 LDA #$00
F5D6: 8D 03 1C STA $1C03 ; port A (read/write head) to input
F5D9: 20 F2 F5 JSR $F5F2
F5DC: A4 3F LDY $3F
F5DE: B9 00 00 LDA $00,Y
F5E1: 49 30 EOR #$30 ; convert command code 'write' to 'verify'
F5E3: 99 00 00 STA $00,Y
F5E6: 4C B1 F3 JMP $F3B1
Previous Page / Next Page