$EEF4/61172: Write BAM if needed
Jump from $C8A7, $DB26, $DD87, $E433:
EEF4: 20 93 DF JSR $DF93 ; get buffer number
EEF7: AA TAX
EEF8: BD 5B 02 LDA $025B,X ; command for disk controller
EEFB: 29 01 AND #$01
EEFD: 85 7F STA $7F ; isolate drive number
Jump from $EDAD, $EEA0:
EEFF: A4 7F LDY $7F
EF01: B9 51 02 LDA $0251,Y ; BAM-changed flag set?
EF04: D0 01 BNE $EF07 ; yes
EF06: 60 RTS
Jump from $EF04:
EF07: A9 00 LDA #$00
EF09: 99 51 02 STA $0251,Y ; reset BAM-changed flag
EF0C: 20 3A EF JSR $EF3A ; set buffer pointer for BAM
EF0F: A5 7F LDA $7F ; drive number
EF11: 0A ASL ; times 2
EF12: 48 PHA
EF13: 20 A5 F0 JSR $F0A5 ; verify BAM entry
EF16: 68 PLA
EF17: 18 CLC
EF18: 69 01 ADC #$01 ; inrement track number
EF1A: 20 A5 F0 JSR $F0A5 ; verify BAM entry
EF1D: A5 80 LDA $80 ; track
EF1F: 48 PHA
EF20: A9 01 LDA #$01 ; track 1
EF22: 85 80 STA $80
Jump from $EF32:
EF24: 0A ASL ; times 4
EF25: 0A ASL
EF26: 85 6D STA $6D
EF28: 20 20 F2 JSR $F220 ; verify BAM
EF2B: E6 80 INC $80 ; increment track number
EF2D: A5 80 LDA $80
EF2F: CD D7 FE CMP $FED7 ; and compare with max val + 1 = 36
EF32: 90 F0 BCC $EF24 ; ok, next track
EF34: 68 PLA
EF35: 85 80 STA $80 ; get track number back
EF37: 4C 8A D5 JMP $D58A ; write BAM to disk
Previous Page / Next Page