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 |