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