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