    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