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