    Eintrag im Directory nach dem Schreiben updaten ($dba5)

    Einsprung von $99BF, $99FF:

    9A72: A6 50     LDX $50          Kanalnummer der Datei merken
    9A74: 8E 8C 02  STX $028C
    9A77: A5 52     LDA $52          SA der Datei merken
    9A79: 48        PHA

    entsprechenden Directory-Eintrag holen

    9A7A: BD 7D 02  LDA $027D,X      Dir-Block des Eintrages holen
    9A7D: 85 4E     STA $4E
    9A7F: BD 84 02  LDA $0284,X      Position des Eintrages im Block holen
    9A82: 8D 32 02  STA $0232
    9A85: AD 2B 02  LDA $022B        Tracknummer des Directorys setzen
    9A88: 85 4D     STA $4D
    9A8A: 20 11 9F  JSR $9F11        aktuellen Puffer der Datei holen
    9A8D: 48        PHA              [Der Dir-Block wird in den Puffer der Datei
    9A8E: 85 6C     STA $6C           gelesen, damit die Replace-Funktion den
                                     Scratch-Befehl verwenden kann.]
    9A90: 20 BD 93  JSR $93BD        Directory-Block lesen
    9A93: A0 00     LDY #$00
    9A95: BD F1 01  LDA $01F1,X      Pufferadresse holen
    9A98: 85 56     STA $56          und als Pufferzeiger Hi merken
    9A9A: AD 32 02  LDA $0232        Position des Eintrages holen und als
    9A9D: 85 55     STA $55          Pufferzeiger Lo merken

    9A9F: B1 55     LDA ($55),Y      Filetyp holen
    9AA1: 29 20     AND #$20         b5=1: 'Datei wird ueberschrieben' ?
    9AA3: F0 43     BEQ $9AE8        nein, ==>
    9AA5: 20 5F 90  JSR $905F        Filetyp des Kanals holen
    9AA8: C9 04     CMP #$04         = REL-Datei ?
    9AAA: F0 44     BEQ $9AF0        ja, ==>

    REPLACE-Funktion

    9AAC: B1 55     LDA ($55),Y      b5: Replace-Flag und b6: Scratch-Schutz
    9AAE: 29 8F     AND #$8F         loeschen
    9AB0: 91 55     STA ($55),Y
    9AB2: C8        INY
    9AB3: B1 55     LDA ($55),Y      Tracknummer der alten Datei holen
    9AB5: 85 4D     STA $4D          und merken
    9AB7: 84 42     STY $42
    9AB9: A0 1B     LDY #$1B
    9ABB: B1 55     LDA ($55),Y      T&S der neuen Datei holen und merken
    9ABD: 48        PHA              (Sektornummer)
    9ABE: 88        DEY
    9ABF: B1 55     LDA ($55),Y      Tracknummer = 0 ?
    9AC1: D0 0A     BNE $9ACD        nein, ==>
    9AC3: 85 4D     STA $4D          [Ja: in diesem Fall existiert gar keine
    9AC5: 68        PLA               neue Datei, also darf die alte nicht
    9AC6: 85 4E     STA $4E           geloescht werden.]
    9AC8: A9 67     LDA #$67         67, Illegal Track or Sector, 00, ss
    9ACA: 20 3F FF  JSR $FF3F        ==>

    Einsprung von $9AC1:

    9ACD: 48        PHA              Tracknummer merken
    9ACE: A9 00     LDA #$00
    9AD0: 91 55     STA ($55),Y      Replace-T&S-Zwischenspeicher loeschen
    9AD2: C8        INY
    9AD3: 91 55     STA ($55),Y
    9AD5: 68        PLA
    9AD6: A4 42     LDY $42          Tracknummer der neuen Datei als Dateianfang
    9AD8: 91 55     STA ($55),Y      merken
    9ADA: C8        INY
    9ADB: B1 55     LDA ($55),Y      Sektornummer der alten Datei
    9ADD: 85 4E     STA $4E          merken
    9ADF: 68        PLA
    9AE0: 91 55     STA ($55),Y      und durch neue Sektornummer ersetzen
    9AE2: 20 13 87  JSR $8713        alte Datei loeschen
    9AE5: 4C F0 9A  JMP $9AF0

    Datei im Directory abschliessen

    Einsprung von $9AA3:

    9AE8: B1 55     LDA ($55),Y      Datei als 'ordnungsgemaess geschlossen'
    9AEA: 29 0F     AND #$0F         kennzeichnen
    9AEC: 09 80     ORA #$80
    9AEE: 91 55     STA ($55),Y

    Einsprung von $9AAA, $9AE5:

    9AF0: AE 8C 02  LDX $028C        Nummer der Datei holen
    9AF3: A0 1C     LDY #$1C
    9AF5: BD 49 02  LDA $0249,X      Dateilaenge im Directory eintragen
    9AF8: 91 55     STA ($55),Y
    9AFA: C8        INY
    9AFB: BD 50 02  LDA $0250,X
    9AFE: 91 55     STA ($55),Y
    9B00: 68        PLA
    9B01: AA        TAX
    9B02: A9 90     LDA #$90         Jobcode fuer 'Sektor schreiben'
    9B04: 20 E6 94  JSR $94E6        an DC uebergeben
    9B07: 68        PLA
    9B08: 85 52     STA $52          SA der Datei zurueckholen
    9B0A: 4C 42 90  JMP $9042        SA freigeben

        Previous Page / Next Page