File zum Schreiben oeffnen ($dcda)
E: $52 : benutzte Sekundaeradresse
A: $4d-$4e: Startblock
Einsprung von $93E4, $97AF, $9890:
9BC3: 20 ED B6 JSR $B6ED Freien Block suchen und belegen
Einsprung von $B89C:
9BC6: A9 01 LDA #$01 Schreibkanal suchen und
9BC8: 20 57 91 JSR $9157 einen Puffer belegen
9BCB: 20 85 95 JSR $9585 T&S an DC uebergeben
9BCE: 20 9B 9B JSR $9B9B Pufferzeiger initialisieren
9BD1: A6 50 LDX $50
9BD3: AD 2D 02 LDA $022D Aktuellen Dateityp
9BD6: 48 PHA merken
9BD7: 0A ASL b0=0: Drivenummer
9BD8: 95 F9 STA $F9,X b1-3: Dateityp
9BDA: 68 PLA
9BDB: C9 04 CMP #$04 REL-Datei ?
9BDD: F0 06 BEQ $9BE5 ja, ==>
9BDF: A9 01 LDA #$01 b1=1: Datei auf Schreiben festlegen
9BE1: 9D 34 02 STA $0234,X
9BE4: 60 RTS
REL-Datei oeffnen
Einsprung von $9BDD:
9BE5: A4 52 LDY $52
9BE7: B9 A8 00 LDA $00A8,Y Kanalnummer holen
9BEA: 29 3F AND #$3F b76=01: Lese- und Schreibzugriffe erlauben
9BEC: 09 40 ORA #$40
9BEE: 99 A8 00 STA $00A8,Y Kanalmodus setzen
9BF1: AD 6F 02 LDA $026F Recordlaenge fuer aktuellen Kanal merken
9BF4: 9D 5E 02 STA $025E,X
9BF7: 20 04 92 JSR $9204 Puffer suchen (fuer den Side-Sektor)
9BFA: 10 03 BPL $9BFF Puffer gefunden ? ja, ==>
9BFC: 4C 86 91 JMP $9186 70, No Channel
1. Side-Sektor erzeugen
Einsprung von $9BFA:
9BFF: A6 50 LDX $50
9C01: 9D 65 02 STA $0265,X Side-Sektor-Puffer merken
9C04: 20 FA 9D JSR $9DFA Puffer loeschen
9C07: 20 68 B6 JSR $B668 freien Block suchen
9C0A: A5 4D LDA $4D
9C0C: 8D 70 02 STA $0270 und als ersten Side-Sektor merken
9C0F: A5 4E LDA $4E
9C11: 8D 71 02 STA $0271
9C14: A6 50 LDX $50
9C16: BD 65 02 LDA $0265,X Side-Sektor-Puffernummer holen
9C19: 20 88 95 JSR $9588 T&S an DC uebergeben
9C1C: A9 00 LDA #$00 Pufferzeiger des Side-Sektors auf 0 setzen
9C1E: 20 23 9E JSR $9E23
9C21: A9 00 LDA #$00 Byte 0 = 0: Letzter Side-Sektor
9C23: 20 CA 9C JSR $9CCA (Byte in Side-Sektor schreiben)
9C26: A9 11 LDA #$11 Anzahl gueltige Bytes = 17:
9C28: 20 CA 9C JSR $9CCA ein Datenblock vorhanden
9C2B: A9 00 LDA #$00 0 : Nummer des Side-Sektors
9C2D: 20 CA 9C JSR $9CCA Byte in Side-Sektor schreiben
9C30: AD 6F 02 LDA $026F Recordlaenge
9C33: 20 CA 9C JSR $9CCA
9C36: A5 4D LDA $4D T&S des ersten Side-Sektors
9C38: 20 CA 9C JSR $9CCA in Side-Sektor schreiben
9C3B: A5 4E LDA $4E
9C3D: 20 CA 9C JSR $9CCA
9C40: A9 10 LDA #$10 Zeiger auf 1. Datenblock-Verweis setzen
9C42: 20 23 9E JSR $9E23
9C45: 20 7C 9D JSR $9D7C T&S des aktiven Datenpuffers holen
9C48: A5 4D LDA $4D
9C4A: 20 CA 9C JSR $9CCA und in Side-Sektor schreiben
9C4D: A5 4E LDA $4E
9C4F: 20 CA 9C JSR $9CCA
9C52: 20 A6 9D JSR $9DA6 Side-Sektor schreiben
9C55: 20 ED 94 JSR $94ED Jobausfuehrung pruefen
9C58: 20 6E A5 JSR $A56E Super-Side-Sektor verwenden ?
9C5B: D0 03 BNE $9C60 nein, ==>
9C5D: 20 82 9C JSR $9C82 Super-Side-Sektor anlegen
Einsprung von $9C5B:
9C60: A9 02 LDA #$02
9C62: 20 22 94 JSR $9422 Pufferzeiger auf Byte 2 setzen
9C65: A6 50 LDX $50
ersten Datenblock erzeugen
[Man muss sich vorstellen, vor dem 1. Datensatz existiert ein 'Schein'-
Datensatz, dessen Position so gewaehlt werden muss, dass beim Anhaengen eines
Datensatzes dieser genau am Datenblock-Anfang erzeugt wird.]
9C67: 38 SEC Position des Schein-Datensatzes berechnen:
9C68: A9 00 LDA #$00 Von 0 (Blockanfang):
9C6A: FD 5E 02 SBC $025E,X Recordlaenge abziehen = Anfangsposition
9C6D: 9D 57 02 STA $0257,X des Schein-Datensatzes
9C70: 20 98 A2 JSR $A298 einen Datenblock voll 'leerer' Records
an den Schein-Datensatz haengen.
9C73: 20 56 9D JSR $9D56 Blocklaenge setzen
9C76: 20 9A 9D JSR $9D9A Block schreiben
9C79: 20 ED 94 JSR $94ED Jobausfuehrung ueberpruefen
9C7C: 20 15 B5 JSR $B515 Bam ggf. abspeichern
9C7F: 4C 7B 9B JMP $9B7B Recordzeiger auf 1. Record setzen
Super-Side-Sektor anlegen
Einsprung von $9C5D:
9C82: A6 50 LDX $50 aktuellen Side-Sektor-Puffer holen
9C84: BD 65 02 LDA $0265,X
9C87: 20 FA 9D JSR $9DFA Puffer mit $00 fuellen
9C8A: 20 23 9E JSR $9E23 Side-Sektor-Pufferzeiger auf 0
9C8D: AD 70 02 LDA $0270 Blockverkettung des Super-Side-Sektors
9C90: 20 CA 9C JSR $9CCA auf 1. Side-Sektor setzen
9C93: AD 71 02 LDA $0271
9C96: 20 CA 9C JSR $9CCA
9C99: A9 FE LDA #$FE $fe: Kennzeichen des Super-Side-Sektors
9C9B: 20 CA 9C JSR $9CCA
9C9E: AD 70 02 LDA $0270 1. Side-Sektor in Gruppentabelle eintragen
9CA1: 20 CA 9C JSR $9CCA
9CA4: AD 71 02 LDA $0271
9CA7: 20 CA 9C JSR $9CCA
9CAA: 20 68 B6 JSR $B668 Folgeblock fuer Datei suchen
9CAD: A6 50 LDX $50
9CAF: A5 4D LDA $4D Als T&S des Super-Side-Sektors
9CB1: 9D 10 01 STA $0110,X des Kanals merken
9CB4: 8D 70 02 STA $0270 und als 1. Side-Sektor merken
9CB7: A5 4E LDA $4E [wird im Directory eingetragen]
9CB9: 9D 09 01 STA $0109,X
9CBC: 8D 71 02 STA $0271
9CBF: A9 FF LDA #$FF Flag: 'kein Side-Sektor geladen' setzen
9CC1: 9D 02 01 STA $0102,X
9CC4: 20 81 A5 JSR $A581 Super-Side-Sektor schreiben
9CC7: 4C 7C 9D JMP $9D7C T&S des Datenblocks holen
Previous Page / Next Page