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