    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