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 |