    Neuen Side-Sektor zur relativen Datei hinzufuegen ($e31c)

    Einsprung von $A3CD:

    A459: 20 68 B6  JSR $B668        Folgeblock fuer Datei suchen
    A45C: 20 7D 8D  JSR $8D7D        Puffer wechseln [Fuer das Erzeugen und
                                     Updaten der Side-Sektoren wird der gerade
                                     inaktive Datenpuffer verwendet.]
    A45F: 20 2E 9D  JSR $9D2E        Puffer ggf. schreiben
    A462: 20 11 9F  JSR $9F11        Nummer des aktiven Puffers holen
    A465: 48        PHA              und merken
    A466: 20 FA 9D  JSR $9DFA        Puffer mit $00 fuellen
    A469: A6 50     LDX $50
    A46B: BD 65 02  LDA $0265,X      Side-Sektor-Puffer holen
    A46E: A8        TAY              als Quellpuffer merken
    A46F: 68        PLA              Datenpuffer als Zielpuffer merken
    A470: AA        TAX
    A471: 20 6E A5  JSR $A56E        Wird Super-Side-Sektor verwendet?
    A474: D0 03     BNE $A479        nein, ==>
    A476: 4C 47 A5  JMP $A547        ggf. neue Gruppe anlegen ==>

    Neuen Side-Sektor anlegen

    Einsprung von $A474, $A54D, $A56B:

    A479: A9 10     LDA #$10         Side-Sektor-Header uebernehmen
    A47B: 20 DE 9D  JSR $9DDE        y: Quellpuffer; x: Zielpuffer; a: Anzahl
    A47E: A9 00     LDA #$00         Side-Sektor-Nummer erhoehen
    A480: 20 15 9E  JSR $9E15        Side-Sektor-Pufferzeiger holen
    A483: A0 02     LDY #$02         [Die Nummer wird aus dem alten Side-Sektor
    A485: B1 64     LDA ($64),Y       geholt, um 1 erhoeht und in den neuen
    A487: 48        PHA               Side-Sektor geschrieben.]
    A488: A9 00     LDA #$00
    A48A: 20 22 94  JSR $9422        Auf neuen Side-Sektor schalten
    A48D: 68        PLA
    A48E: 18        CLC              Side-Sektor-Nummer +1
    A48F: 69 01     ADC #$01
    A491: 91 64     STA ($64),Y      Nummer merken

    T&S des Side-Sektors alten Side-Sektor eintragen

    A493: 0A        ASL              (2-Byte Tabelle)
    A494: 69 04     ADC #$04         Tabelle beginnt beim 4. Byte im Side-Sektor
    A496: 85 58     STA $58          Zeiger auf die T&S
    A498: A8        TAY              des aktuellen Side-Sektors merken
    A499: 38        SEC              -2 (vorhergehender Side-Sektor)
    A49A: E9 02     SBC #$02         Zeiger auf die T&S der zu updatenden
    A49C: 85 59     STA $59          Side-Sektoren merken

    Einsprung von $A568:

    A49E: A5 4D     LDA $4D          T&S in Side-Sektor eintragen
    A4A0: 85 56     STA $56          und merken
    A4A2: 91 64     STA ($64),Y
    A4A4: C8        INY
    A4A5: A5 4E     LDA $4E
    A4A7: 85 57     STA $57
    A4A9: 91 64     STA ($64),Y
    A4AB: A0 00     LDY #$00         Blockverkettung setzen
    A4AD: 98        TYA              [1. Byte ist 0: Kennzeichen fuer den letzten
    A4AE: 91 64     STA ($64),Y       Side-Sektor.
    A4B0: C8        INY               Das 2. Byte gibt die Position des letzten
    A4B1: A9 11     LDA #$11          gebrauchten Bytes im Side-Sektor an.
    A4B3: 91 64     STA ($64),Y       Es wird hier auf 17 gesetzt:
                                     Der erste gueltige Zeiger auf einen
                                     Datenblock steht in den Bytes 16-17; die
                                     restlichen Zeiger sind noch nicht belegt.]
    A4B5: A9 10     LDA #$10         Pufferzeiger auf ersten Datenblock-Zeiger
    A4B7: 20 22 94  JSR $9422        setzen
    A4BA: 20 8E 9D  JSR $9D8E        neuen Side-Sektor schreiben
    A4BD: 20 ED 94  JSR $94ED        Jobausfuehrung pruefen
    A4C0: A6 50     LDX $50
    A4C2: BD 65 02  LDA $0265,X      Alten Side-Sektor merken
    A4C5: 48        PHA
    A4C6: 20 1C 9F  JSR $9F1C        aktiven Puffer holen
    A4C9: A6 50     LDX $50
    A4CB: 9D 65 02  STA $0265,X      und als neuen Side-Sektor merken
    A4CE: 68        PLA
    A4CF: A6 74     LDX $74          Alten Side-Sektor als aktiven Datenpuffer
    A4D1: 95 D1     STA $D1,X        merken
    A4D3: A9 00     LDA #$00         Pufferzeiger auf Datenblock setzen
    A4D5: 20 22 94  JSR $9422
    A4D8: A0 00     LDY #$00         Blockverkettung des alten Side-Sektors
    A4DA: A5 4D     LDA $4D          auf den neuen setzen
    A4DC: 91 64     STA ($64),Y
    A4DE: C8        INY
    A4DF: A5 4E     LDA $4E
    A4E1: 91 64     STA ($64),Y

    Super-Side-Sektor updaten

    A4E3: 20 6E A5  JSR $A56E        wird Super-Side-Sektor verwendet?
    A4E6: D0 41     BNE $A529        nein, ==>
    A4E8: A5 55     LDA $55          alte Side-Sektor-Nummer holen
    A4EA: C9 FF     CMP #$FF         wurde eine neue Gruppe angelegt ?
    A4EC: D0 3B     BNE $A529        nein ==>
    A4EE: A5 4E     LDA $4E          T&S des neuen Side-Sektors merken
    A4F0: 48        PHA
    A4F1: A5 4D     LDA $4D
    A4F3: 48        PHA
    A4F4: 20 9A 9D  JSR $9D9A        alten Side-Sektor schreiben
    A4F7: 20 ED 94  JSR $94ED        Jobausfuehrung pruefen
    A4FA: 20 7D 8D  JSR $8D7D        Puffer wechseln
    A4FD: 20 7E A5  JSR $A57E        Super-Side-Sektor laden
    A500: E6 5A     INC $5A          Aktuelle Gruppennummer +1
    A502: A5 5A     LDA $5A
    A504: 0A        ASL              2-Byte Tabelle
    A505: 18        CLC
    A506: 69 03     ADC #$03         Die Tabelle faengt bei Byte 3 an
    A508: 20 23 9E  JSR $9E23        Pufferzeiger setzen
    A50B: 68        PLA
    A50C: 20 CA 9C  JSR $9CCA        T&S der neuen Gruppe in die Gruppentabelle
    A50F: 68        PLA              eintragen
    A510: 20 CA 9C  JSR $9CCA
    A513: 20 81 A5  JSR $A581        Super-Side-Sektor schreiben
    A516: A5 5A     LDA $5A          Aktuelle Gruppennummer holen
    A518: 48        PHA
    A519: 4C CC A5  JMP $A5CC        Gruppe anwaehlen, Ende ==>
    Tabellen der anderen Side-Sektoren anpassen

    Einsprung von $A542:

    A51C: 20 11 9F  JSR $9F11        Nummer des aktiven Puffers holen
    A51F: A6 50     LDX $50
    A521: 20 56 9E  JSR $9E56        Side-Sektor lesen (y: Nummer*2; a: Puffer)
    A524: A9 00     LDA #$00
    A526: 20 22 94  JSR $9422        Pufferzeiger auf 0 setzen

    Einsprung von $A4E6, $A4EC:

    A529: C6 59     DEC $59          <-- Einsprung
    A52B: C6 59     DEC $59          Zeiger auf vorherigen SS setzen
    A52D: A4 58     LDY $58          Zeiger auf T&S des neuen SS
    A52F: A5 56     LDA $56
    A531: 91 64     STA ($64),Y      T&S in Side-Sektoren-Tabelle eintragen
    A533: C8        INY
    A534: A5 57     LDA $57
    A536: 91 64     STA ($64),Y
    A538: 20 9A 9D  JSR $9D9A        Aktuellen Puffer schreiben
    A53B: 20 ED 94  JSR $94ED        Jobausfuehrung ueberpruefen
    A53E: A4 59     LDY $59          Zeiger auf T&S des naechsten Side-Sektors
    A540: C0 03     CPY #$03         holen
    A542: B0 D8     BCS $A51C        noch nicht fertig, ==>
    A544: 4C 7D 8D  JMP $8D7D        Puffer wechseln

        Previous Page / Next Page