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 |