    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