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