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 |