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