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