Fehlerkanal auslesen bzw M-R-Befehl ($d414)

Einsprung von $9311:

9370: 20 42 94  JSR $9442        Pufferzeiger holen
9373: C9 CF     CMP #$CF         = $02cf (Pufferanfang) ?
9375: D0 18     BNE $938F        nein, Byte holen ==>
9377: A5 65     LDA $65
9379: C9 02     CMP #$02
937B: D0 12     BNE $938F        nein, Byte holen ==>
937D: A9 0D     LDA #$0D         ja, CR ausgeben
937F: 85 54     STA $54

[Diese Abfrage fuehrt dazu, dass die neue Fehlermeldung bereitge stellt wird,
 wenn die alte ausgegeben worden ist. Die Fehlermeldung wird aber auch dann
 bereitgestellt, wenn man mit dem M-R Befehl versucht, ueber den
 Fehlerpuffer-Anfang zu lesen. Dann wird der M-R einfach abgebrochen.]

Ok-Meldung bereitstellen

9381: 20 E5 81  JSR $81E5        LEDs ausschalten
9384: A9 00     LDA #$00
9386: 20 67 A8  JSR $A867        '00, OK,00,00'-Meldung bereitstellen
9389: C6 CF     DEC $CF
938B: A9 80     LDA #$80         EOI setzen
938D: D0 12     BNE $93A1        immer ==>

Einsprung von $9375, $937B:

938F: 20 71 90  JSR $9071        Byte aus aktuellem Puffer holen
9392: 85 54     STA $54          und merken
9394: D0 09     BNE $939F        Pufferende erreicht ?

[Leider ist das z-Flag nicht nur am Pufferende gesetzt, sondern generell,
 wenn eine Seitengrenze uebersprungen wird, da das Hi-Byte der Pufferadresse
 nicht beruecksichtigt wird. Dies ist bei 'normalen' Puffern auch ganz in
 Ordnung. Beim M-R Befehl tritt jedoch ein Fehler auf, da bei ihm der
 Ausgabepuffer auch ueber Seitengrenzen gehen kann. In einem solchen Fall
 wird einfach wieder auf Fehlerausgabe umgeschaltet.]
Fehlerausgabe initialisieren

Einsprung von $897B:

9396: A9 CF     LDA #$CF         Fehler-Pufferzeiger auf $02cf setzen
9398: 20 22 94  JSR $9422        Pufferzeiger Lo auf $cf setzen
939B: A9 02     LDA #$02         Pufferzeiger Hi auf $02 setzen
939D: 95 BC     STA $BC,X

Einsprung von $9394, $8975:

939F: A9 88     LDA #$88         b3=1: EOI-Flag loeschen

Einsprung von $938D:

93A1: 8D 3A 02  STA $023A        b7=1: auf Ausgabe (Lesen) schalten
93A4: A5 54     LDA $54          Datenbyte holen
93A6: 8D 41 02  STA $0241        und in Ausgabepuffer schreiben
93A9: 60        RTS

    Previous Page / Next Page