Puffer wechseln im Zwei-Puffer-Betrieb ($cf1e)
ggf. wird, wenn ein Puffer 'gestohlen' wurde, ein neuer Puffer gesucht
und mit den benoetigten Daten gefuellt.
Einsprung von $8FF2, $8FFB, $90AF, $90DA, $9101, $912D, $99CB, $9A47, $9A6F,
$9FCA, $9FDD, $9FF2, $9FF8, $A11E, $A12B, $A12E, $A24C, $A25B,
$A261, $A394, $A3A6, $A423, $A45C, $A4FA, $A544:
8D7D: 20 68 8D JSR $8D68 Kanalnummer ans Tabellenende
8D80: A6 50 LDX $50
8D82: B5 D1 LDA $D1,X 1. Puffer inaktiv ?
8D84: 30 02 BMI $8D88 Ja, ==>
8D86: B5 D8 LDA $D8,X 2. Puffer unbelegt ?
Einsprung von $8D84:
8D88: C9 FF CMP #$FF (bzw. 1. Puffer unbelegt ?)
8D8A: F0 18 BEQ $8DA4 Ja, neuen Puffer suchen ==>
8D8C: B5 D1 LDA $D1,X Aktiven Puffer wechseln
8D8E: 49 80 EOR #$80 dazu:
8D90: 95 D1 STA $D1,X 1. Puffer umschalten,
8D92: 48 PHA
8D93: B5 D8 LDA $D8,X 2. Puffer umschalten
8D95: 49 80 EOR #$80
8D97: 95 D8 STA $D8,X
8D99: A8 TAY
8D9A: 68 PLA Aktiven Puffer nach A
8D9B: 10 01 BPL $8D9E 1. Puffer aktiv, dann ==>
8D9D: 98 TYA 2. Puffer ist aktiv
Einsprung von $8D9B:
8D9E: 29 BF AND #$BF
8DA0: AA TAX
8DA1: 4C ED 94 JMP $94ED Alten Job abwarten, Ende ==>
Ersatz fuer gestohlenen Puffer suchen
Einsprung von $8D8A:
8DA4: B5 D1 LDA $D1,X 1. Puffer aktiv ?
8DA6: 10 02 BPL $8DAA ja, ==>
8DA8: B5 D8 LDA $D8,X [Das Ergebnis wurde bei der 1541 fuer die
Einsprung von $8DA6:
8DAA: 29 BF AND #$BF Drivenummerabfrage verwendet, die bei der
8DAC: A8 TAY 1581 nicht mehr existiert.]
8DAD: 20 04 92 JSR $9204 Puffer suchen
8DB0: 10 05 BPL $8DB7 gefunden, dann ==>
8DB2: A9 70 LDA #$70 70, NO CHANNEL
8DB4: 4C 7C 80 JMP $807C
Einsprung von $8DB0:
8DB7: A6 50 LDX $50 aktuelle Kanalnummer holen
8DB9: 09 80 ORA #$80 neuen Puffer inaktiv setzen
8DBB: B4 D1 LDY $D1,X Wenn 1. Puffer inaktiv, dann
8DBD: 10 04 BPL $8DC3 1. Puffer neubesetzen
8DBF: 95 D1 STA $D1,X
8DC1: 30 02 BMI $8DC5 immer ==>
Einsprung von $8DBD:
8DC3: 95 D8 STA $D8,X ansonsten 2. Puffer neubesetzen
Pufferinhalt wieder herstellen
Einsprung von $8DC1:
8DC5: A5 4D LDA $4D aktuelle T&S retten
8DC7: 48 PHA
8DC8: A5 4E LDA $4E
8DCA: 48 PHA
8DCB: A9 01 LDA #$01 Sektornummer aus Puffer holen
8DCD: 85 42 STA $42 (s. $9450)
8DCF: B5 D1 LDA $D1,X aktiven Puffer holen
8DD1: 10 02 BPL $8DD5
8DD3: B5 D8 LDA $D8,X
Einsprung von $8DD1:
8DD5: 29 BF AND #$BF
8DD7: A8 TAY
8DD8: B9 F1 01 LDA $01F1,Y Pufferadresse holen
8DDB: 85 43 STA $43
8DDD: A0 00 LDY #$00
8DDF: B1 42 LDA ($42),Y Byte holen
8DE1: 85 4E STA $4E als aktuelle Sektornummer merken
8DE3: A9 00 LDA #$00 Tracknummer holen
8DE5: 85 42 STA $42 [Vergleichen Sie diesen Absatz mit dem
8DE7: B5 D1 LDA $D1,X davor. Hier hat doch irgend jemand ganz
8DE9: 10 02 BPL $8DED offensicht lich mit einer 'Suchen und
8DEB: B5 D8 LDA $D8,X Ersetzen'-Funktion oder 'Macro'-Funkton
Einsprung von $8DE9:
8DED: 29 BF AND #$BF Unterprogramm-Aufrufe durch die ent-
8DEF: A8 TAY sprechenden Routinen ersetzt (um das DOS
8DF0: B9 F1 01 LDA $01F1,Y zu beschleunigen). Dabei haette hier ein
8DF3: 85 43 STA $43 einfaches 'dec $42' gleiche Dienste tun
8DF5: A0 00 LDY #$00 koennen.]
8DF7: B1 42 LDA ($42),Y Byte aus Puffer holen
8DF9: 85 4D STA $4D als aktuelle Tracknummer merken
8DFB: F0 2A BEQ $8E27 letzter Block ? ja, ==>
8DFD: 20 5F 90 JSR $905F Aktuellen Filetyp holen
8E00: F0 0B BEQ $8E0D REL-File ? ja, ==>
8E02: 20 E9 9C JSR $9CE9 Ist Jobcode = $90 (schreiben) ?
[Ein geschriebener Puffer muss ja nicht mehr
eingelesen werden.]
8E05: D0 06 BNE $8E0D nein, ==>
8E07: 20 4D 8E JSR $8E4D Aktiven Puffer wechseln
8E0A: 4C 1E 8E JMP $8E1E
Einsprung von $8E00, $8E05:
8E0D: A6 50 LDX $50 Aktiven Puffer wechseln
8E0F: B5 D1 LDA $D1,X
8E11: 49 80 EOR #$80
8E13: 95 D1 STA $D1,X
8E15: B5 D8 LDA $D8,X
8E17: 49 80 EOR #$80
8E19: 95 D8 STA $D8,X
8E1B: 20 94 9D JSR $9D94 Lesejob aufrufen
Einsprung von $8E0A:
8E1E: 68 PLA
8E1F: 85 4E STA $4E T&S zurueckholen
8E21: 68 PLA
8E22: 85 4D STA $4D
8E24: 4C 30 8E JMP $8E30
Einsprung von $8DFB:
8E27: 68 PLA T&S zurueckholen
8E28: 85 4E STA $4E
8E2A: 68 PLA
8E2B: 85 4D STA $4D
8E2D: 20 4D 8E JSR $8E4D aktiven Puffer wechseln
Einsprung von $8E24:
8E30: 20 11 9F JSR $9F11 aktiven Puffer holen
8E33: AA TAX
8E34: 4C ED 94 JMP $94ED Jobausfuehrung abwarten
Previous Page / Next Page