    Byte aus aktuellem Puffer holen ($d137)
    E: $50: Kanalnummer
    A: a  : aktuelles Byte
       z  : 1: Blockende

    Einsprung von $8FDF, $8FE4, $909B, $90CC, $90D5, $9107, $938F,
                  $994B, $9DD3, $9DD8, $B245, $B2D5, $B2DA:

    9071: A6 50     LDX $50          Kanal- und Puffernummer holen
    9073: B5 D1     LDA $D1,X        [Dies entspricht exakt der Routine $9069.
    9075: 10 02     BPL $9079         Bei der 1541 stand hier nur ein JSR
    9077: B5 D8     LDA $D8,X         dorthin. Diese Version spart

    Einsprung von $9075:

    9079: 29 BF     AND #$BF          2 x JSR, 2 x RTS (2x6 + 2x6 = 24 Takte)
    907B: 0A        ASL               fuer jedes gelesene Byte
    907C: AA        TAX               = 0.6 sec bei 202 Blocks.]
    907D: A4 50     LDY $50

    907F: B9 42 02  LDA $0242,Y      Zeiger auf Pufferende = 0 ?
    9082: F0 12     BEQ $9096        (nicht letzter Block) ja, ==>

    Byte aus letztem Block einer Datei holen

    9084: A1 BB     LDA ($BB,X)      Byte holen
    9086: 48        PHA
    9087: B5 BB     LDA $BB,X        Dateiende ?
    9089: D9 42 02  CMP $0242,Y
    908C: D0 04     BNE $9092        nein, ==>
    908E: A9 FF     LDA #$FF         Pufferzeiger auf 0 setzen
    9090: 95 BB     STA $BB,X        ($ff wegen inc bb,x (setzt das z-Flag))

    Einsprung von $908C:

    9092: 68        PLA
    9093: F6 BB     INC $BB,X        Pufferzeiger erhoehen
    9095: 60        RTS
    Byte aus allen anderen Bloecken einer Datei holen

    Einsprung von $9082:

    9096: A1 BB     LDA ($BB,X)      Byte holen
    9098: F6 BB     INC $BB,X        Pufferzeiger erhoehen
    909A: 60        RTS

        Previous Page / Next Page