Neue Datei im Directory eintragen ($d6e4)

Einsprung von $87FA, $9893, $B89F:

95AB: A5 52     LDA $52          aktuelle SA und
95AD: 48        PHA
95AE: A5 50     LDA $50          aktuelle Kanalnummer merken
95B0: 48        PHA

freien Eintrag suchen

95B1: A5 4E     LDA $4E          aktuelle T&S merken
95B3: 48        PHA
95B4: A5 4D     LDA $4D
95B6: 48        PHA
95B7: A9 11     LDA #$11         internen Lesekanal oeffnen,
95B9: 85 52     STA $52          aktuellen Puffer holen und
95BB: 20 79 9D  JSR $9D79        T&S des geladenen Blocks holen
95BE: AD 2D 02  LDA $022D        aktuellen Dateityp merken
95C1: 48        PHA
95C2: A6 6C     LDX $6C          Puffernummer
95C4: A5 EF     LDA $EF          Drivenummer des Files
95C6: 5D 72 02  EOR $0272,X      mit Drivenummer des Jobs vergleichen
95C9: 4A        LSR
95CA: 90 0B     BCC $95D7        gleich, ==>

Das Verzeichnis des falschen Laufwerks ist geoeffnet

95CC: A2 01     LDX #$01         Flag: '1. freien Eintrag finden' setzen
95CE: 86 73     STX $73
95D0: 20 24 84  JSR $8424        und Eintrag suchen
95D3: F0 20     BEQ $95F5        keinen freier Eintrag, ==>
95D5: D0 2D     BNE $9604

Das richtige Verzeichnis ist geoeffnet

Einsprung von $95CA:

95D7: A5 72     LDA $72          1. Dir-Block mit freiem Eintrag
95D9: F0 11     BEQ $95EC        noch nicht gefunden ?, ==>
95DB: C5 4E     CMP $4E          ist der Block bereits geladen ?
95DD: F0 25     BEQ $9604        ja, ==>
95DF: 85 4E     STA $4E
95E1: 20 BD 93  JSR $93BD        Dir-Block in den aktuellen Puffer einlesen
95E4: 4C 04 96  JMP $9604

Einsprung von $95FC:

95E7: A9 72     LDA #$72         72, Disk full
95E9: 20 7C 80  JSR $807C

Einsprung von $95D9:

95EC: A9 01     LDA #$01         Flag: '1. freien Eintrag finden' setzen
95EE: 85 73     STA $73
95F0: 20 89 84  JSR $8489        und Suche fortsetzen
95F3: D0 0F     BNE $9604        freien Eintrag gefunden, ==>

Im Directory ist kein Eintrag mehr frei, Directory erweitern

Einsprung von $95D3:

95F5: 20 E7 93  JSR $93E7        neuen Dir-Block anhaengen
95F8: A5 4E     LDA $4E          Sektornummer < 3 ?
95FA: C9 03     CMP #$03
95FC: 90 E9     BCC $95E7        ja, (Direktory ist voll) ==>
95FE: 85 72     STA $72          1. Eintrag des neuen Blocks fuer den
9600: A9 02     LDA #$02         Filenamen verwenden (beginnt hinter der
9602: 85 73     STA $73          Blockverkettung)

File im Directory an der freien Stelle eintragen

Einsprung von $95D5, $95DD, $95E4, $95F3:

9604: A5 73     LDA $73          Pufferzeiger auf den freien Eintrag setzen
9606: 20 22 94  JSR $9422
9609: 68        PLA              Aktuellen Dateityp zurueckholen
960A: 8D 2D 02  STA $022D
960D: C9 04     CMP #$04         Dateityp = REL-Datei ?
960F: D0 02     BNE $9613        nein, ==>
9611: 09 80     ORA #$80         Flag: 'Datei geschlossen' setzen

Einsprung von $960F:

9613: 20 B1 8E  JSR $8EB1        Dateityp in Puffer schreiben
9616: 68        PLA
9617: 8D 97 02  STA $0297        T&S merken
961A: 20 B1 8E  JSR $8EB1        und in Puffer schreiben
961D: 68        PLA
961E: 8D 9C 02  STA $029C
9621: 20 B1 8E  JSR $8EB1
9624: 20 11 9F  JSR $9F11        Nummer des aktiven Puffers holen
9627: A8        TAY
9628: AD 91 02  LDA $0291        Position des Filenamens holen
962B: AA        TAX
962C: A9 10     LDA #$10         Maximale Filenamenlaenge setzen
962E: 20 EE 84  JSR $84EE        Filenamen in Puffer kopieren
9631: A0 10     LDY #$10
9633: A9 00     LDA #$00         Rest des Eintrags (11 Bytes) loeschen

Einsprung von $963A:

9635: 91 64     STA ($64),Y      [$64 zeigt auf das 3. Byte des Eintrages;
9637: C8        INY               y= 16..27 - Also werden die Bytes 19-29
9638: C0 1B     CPY #$1B          geloescht.]
963A: 90 F9     BCC $9635
963C: AD 2D 02  LDA $022D        Dateityp = REL-Datei ?
963F: C9 04     CMP #$04
9641: D0 13     BNE $9656        nein, ==>
9643: A0 10     LDY #$10
9645: AD 70 02  LDA $0270        T&S des (Super-)Side-Sektors eintragen
9648: 91 64     STA ($64),Y
964A: C8        INY
964B: AD 71 02  LDA $0271
964E: 91 64     STA ($64),Y
9650: C8        INY
9651: AD 6F 02  LDA $026F        Datensatzlaenge eintragen
9654: 91 64     STA ($64),Y

Einsprung von $9641:

9656: 20 C1 93  JSR $93C1        Puffer schreiben

9659: 68        PLA
965A: 85 50     STA $50          Kanalnummer und
965C: AA        TAX
965D: 68        PLA
965E: 85 52     STA $52          SA zurueckholen
T&S des Eintrages dem Kanal und der Dateitabelle zuordnen

9660: A5 72     LDA $72          Dir-Block merken
9662: 85 E5     STA $E5
9664: 9D 7D 02  STA $027D,X
9667: A5 73     LDA $73          Position im Dir-Block merken
9669: 85 EA     STA $EA
966B: 9D 84 02  STA $0284,X
966E: AD 2D 02  LDA $022D        Dateityp merken
9671: 85 F4     STA $F4
9673: A9 00     LDA #$00         Drivenummer (immer 0) merken
9675: 85 EF     STA $EF
9677: 60        RTS

    Previous Page / Next Page