    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