Byte aus aktueller Datei holen ($d156)
Es wird der Zwei-Puffer-Modus verwendet. Dieser bringt bei der 1581 keinen
Vorteil (sondern nur den Nachteil, dass 2 Puffer gebraucht werden).
E: $50 : Kanalnummer
A: $0234+KN: Kanalstatus
a : Byte aus der Datei
Byte aus aktuellem Puffer holen
Einsprung von $871E, $8723, $935C, $93B9, $9B8D:
909B: 20 71 90 JSR $9071 Byte holen
909E: D0 66 BNE $9106 Blockende ? nein, ==>
90A0: 85 54 STA $54 Datenbyte zwischenspeichern
90A2: B9 42 02 LDA $0242,Y Dateiende ?
90A5: F0 08 BEQ $90AF nein, ==>
90A7: A9 80 LDA #$80 b7=1: Lesekanal; b3=0: EOI-Flag setzen
90A9: 99 34 02 STA $0234,Y Kanalstatus setzen
90AC: A5 54 LDA $54
90AE: 60 RTS
T&S des uebernaechsten Blocks holen
Einsprung von $90A5:
90AF: 20 7D 8D JSR $8D7D Puffer umschalten (er enthaelt bereits den
90B2: A9 00 LDA #$00 Folgeblock)
90B4: 85 40 STA $40
90B6: A6 50 LDX $50
90B8: B5 D1 LDA $D1,X Aktuellen Puffer holen
90BA: 10 02 BPL $90BE
90BC: B5 D8 LDA $D8,X
Einsprung von $90BA:
90BE: 29 BF AND #$BF
90C0: 0A ASL
90C1: AA TAX
90C2: B5 BC LDA $BC,X Pufferzeiger setzen
90C4: 85 65 STA $65
90C6: A5 40 LDA $40 = 0
90C8: 95 BB STA $BB,X
90CA: 85 64 STA $64
90CC: 20 71 90 JSR $9071 1. Byte aus Puffer holen
90CF: C9 00 CMP #$00 Ist es der letzter Block der Datei ?
90D1: F0 34 BEQ $9107 ja, ==>
90D3: 85 4D STA $4D Folgetrack merken
90D5: 20 71 90 JSR $9071 2. Byte holen
90D8: 85 4E STA $4E Folgesektor merken
90DA: 20 7D 8D JSR $8D7D Puffer wieder zurueckschalten
oebernaechsten Block einlesen
90DD: A6 50 LDX $50 Was soll das ?
90DF: B5 D1 LDA $D1,X Puffer holen, die erste
90E1: 10 02 BPL $90E5
90E3: B5 D8 LDA $D8,X
Einsprung von $90E1:
90E5: 29 BF AND #$BF
90E7: AA TAX [Hier ist eine Laufwerksnummernabfrage
entfallen]
Puffer holen, die zweite
90E8: A6 50 LDX $50 Kanalnummer holen
90EA: B5 D1 LDA $D1,X Aktiven Puffer holen
90EC: 10 02 BPL $90F0 (wenn erster nicht aktiv, dann zweiten
90EE: B5 D8 LDA $D8,X Puffer holen)
Einsprung von $90EC:
90F0: 29 BF AND #$BF
90F2: 0A ASL 2-Byte-Tabelle
90F3: A8 TAY
90F4: A5 4D LDA $4D T&S des Folgeblocks in Jobpuffer schreiben
90F6: 99 0B 00 STA $000B,Y
90F9: A5 4E LDA $4E
90FB: 99 0C 00 STA $000C,Y
90FE: 20 FE 8F JSR $8FFE Block einlesen
9101: 20 7D 8D JSR $8D7D Puffer wieder umschalten
9104: A5 54 LDA $54 Datenbyte zurueckholen
Einsprung von $909E:
9106: 60 RTS
Letzten Dateiblock behandeln
Einsprung von $90D1:
9107: 20 71 90 JSR $9071 Blocklaenge holen
910A: A4 50 LDY $50 und als Blocklaenge des aktuellen
910C: 99 42 02 STA $0242,Y Kanals merken
910F: A5 54 LDA $54 Datenbyte zurueckholen
9111: 60 RTS
Previous Page / Next Page