Daten zwischen Cache und Puffer transferieren
Einsprung von $C5A0:
CEA4: 24 39 BIT $39 Modus von BUFMOV_DV
CEA6: 50 03 BVC $CEAB b6=0, ==>
CEA8: A9 80 LDA #$80 b6=1: Flag: b7=1: Cache wurde veraendert
CEAA: 2C B $2C
Einsprung von $CEA6:
CEAB: A9 00 LDA #$00 Flag: b7=0: Cache wurde nicht veraendert
CEAD: 85 87 STA $87 Flag setzen
Einsprung von $C5A6:
CEAF: A9 20 LDA #$20 b5=1: Transfer durchfuehren ?
CEB1: 24 37 BIT $37
[Warum $37 ??? Der Modus steht doch in $39 !!! Dieser Fehler fuehrt dazu,
dass normalerweise mit dem BUFMOV-Befehl gar keine Daten kopiert werden
koennen. Da $37 aber sonst keine Bedeutung hat, kann man dort das b5 von
Hand setzen und den Befehl dann trotzdem verwenden.]
CEB3: D0 01 BNE $CEB6 ja, ==>
CEB5: 60 RTS
Einsprung von $CEB3:
CEB6: A4 99 LDY $99
CEB8: B9 0B 00 LDA $000B,Y Sektornummer
CEBB: 18 CLC
CEBC: 65 8C ADC $8C + Cache-Start
CEBE: 85 4B STA $4B = Zeiger in Cache
CEC0: A0 00 LDY #$00 Lo-Bytes = 0
CEC2: 84 48 STY $48 Zeiger in DOS-Puffer
CEC4: 84 4A STY $4A Zeiger in Cache
CEC6: A6 83 LDX $83 Pufferadresse holen
CEC8: BD F1 01 LDA $01F1,X
CECB: 85 49 STA $49
CECD: A5 39 LDA $39 Modus von BUFMOV_DV
CECF: 29 1F AND #$1F Anzahl der zu kopierenden Bloecke merken
CED1: AA TAX
CED2: 24 39 BIT $39 Modus von BUFMOV_DV:
CED4: 10 03 BPL $CED9 b7=0, ==>
CED6: 4C 3E D0 JMP $D03E b7=1: Daten vom Puffer in Cache kopieren
Einsprung von $CED4:
CED9: 4C 58 D5 JMP $D558 b7=0: Daten vom Cache in Puffer kopieren
Previous Page / Next Page