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 |