    Job auf fehlerfreie Durchfuehrung pruefen ($d5a6)
    E: x: Puffernummer

    Test auf Fehler, bei denen mehrere Versuche keine Besserung bringen koennen

    Einsprung von $94ED:

    94F8: 20 98 95  JSR $9598        Controller aufrufen
    94FB: C9 02     CMP #$02         kein Fehler ? (0 oder 1)
    94FD: 90 19     BCC $9518        ja, Ok. Ende ==>
    94FF: C9 08     CMP #$08         Schreibschutzfehler ?
    9501: F0 0C     BEQ $950F        ja, ==>
    9503: C9 0B     CMP #$0B         Falsche ID ?
    9505: F0 08     BEQ $950F        ja, ==>
    9507: C9 03     CMP #$03         keine Adressmarke gefunden ?
    9509: F0 04     BEQ $950F        ja, ==>
    950B: C9 0F     CMP #$0F         keine Diskette eingelegt ?
    950D: D0 0B     BNE $951A        nein, ==>

    Einsprung von $9501, $9505, $9509:

    950F: 24 81     BIT $81          Burst-Fehlerunterdrueckung ?
    9511: 30 05     BMI $9518        ja, ==>
    9513: 2C A8 02  BIT $02A8        DOS-Fehlerunterdrueckung ?
    9516: 10 17     BPL $952F        nein, ==>

    Einsprung von $94FD, $9511:

    9518: 18        CLC              ja: Fehler kommentarlos hinnehmen
    9519: 60        RTS

    Mehrere Leseversuche unternehmen, ggf. Spur 0 anfahren

    Einsprung von $950D:

    951A: 98        TYA
    951B: 48        PHA
    951C: 20 64 95  JSR $9564        Mehrere Versuche durchfuehren
    951F: C9 02     CMP #$02         kein Fehler mehr ?
    9521: 90 37     BCC $955A        ja, ==>
    9523: 24 30     BIT $30          b7=0: Kopf auf Spur 0 fahren ?
    9525: 10 12     BPL $9539        ja, ==>

    Einsprung von $954D:

    9527: 68        PLA              Stack restaurieren
                                    [enthielt ein gerettetes y-Reg. Der Wert
                                     hat nichts mit Jobcodes zu tun, trotzdem
    9528: C9 90     CMP #$90          wird mit $90: Jobcode zum Schreiben ver-
    952A: D0 03     BNE $952F         glichen - ein Fehler bei der Veraenderung
    952C: 9D 72 02  STA $0272,X      des 1541-DOS;  wird bei der 1581 aber
                                     sowieso nicht mehr benoetigt]

    Einsprung von $9516, $952A, $955C, $C015:

    952F: A9 00     LDA #$00         Fehlerpruefung einschalten
    9531: 8D A8 02  STA $02A8        [Fehlerunterdrueckung wird nicht beachtet !]
    9534: B5 02     LDA $02,X        Fehlernummer holen
    9536: 20 2D FF  JSR $FF2D        Error-Routine des Controllers
    Kopf auf Spur 0 fahren und Job nochmal probieren

    Einsprung von $9525:

    9539: 24 81     BIT $81          Burst-Fehlerunterdrueckung ?
    953B: 30 21     BMI $955E        ja, ==>
    953D: 2C A8 02  BIT $02A8        DOS-Fehlerunterdrueckung ?
    9540: 30 1C     BMI $955E        ja, ==>
    9542: 48        PHA              a enthaelt letzte Job-RoeCK-meldung
    9543: A9 C0     LDA #$C0         RESTORE_DV
    9545: 20 9D 95  JSR $959D        Aufruf des Controllers
    9548: 20 64 95  JSR $9564        Schreib-/Lesejob ausfuehren
    954B: C9 02     CMP #$02         Fehler ?
    954D: B0 D8     BCS $9527        ja, ==>

    954F: 68        PLA              vorletzte Job-RoeCK-meldung holen
    9550: C9 90     CMP #$90         (ist immer < $10)
    9552: D0 0A     BNE $955E        also immer ==>
    9554: 9D 72 02  STA $0272,X      wird nie aufgerufen
    9557: 20 64 95  JSR $9564        "

    Einsprung von $9521:

    955A: C9 02     CMP #$02         "
    955C: B0 D1     BCS $952F        "

    Einsprung von $953B, $9540, $9552:

    955E: 68        PLA              y-Register zurueckholen
    955F: A8        TAY
    9560: B5 02     LDA $02,X        Jobrueckmeldung holen
    9562: 18        CLC              Ok. Ende
    9563: 60        RTS

    mehrere Schreib-/Leseversuche ausfuehren

    Einsprung von $951C, $9548, $9557:

    9564: A5 30     LDA $30          Anzahl der Leseversuche nach y
    9566: 29 3F     AND #$3F
    9568: A8        TAY

    Einsprung von $957A, $C023:

    9569: A5 79     LDA $79          LED-Blinken aktivieren
    956B: 09 20     ORA #$20
    956D: 85 79     STA $79
    956F: BD 72 02  LDA $0272,X      Jobcode holen
    9572: 20 9D 95  JSR $959D        Job nochmals ausfuehren
    9575: C9 02     CMP #$02         Fehler
    9577: 90 03     BCC $957C        nein, =>
    9579: 88        DEY              naechster Versuch ?
    957A: D0 ED     BNE $9569        ja, ==>

    Einsprung von $9577:

    957C: 48        PHA              Jobrueckmeldung merken
    957D: A5 79     LDA $79          LED-Blinken aus
    957F: 29 DF     AND #$DF
    9581: 85 79     STA $79
    9583: 68        PLA              Jobrueckmeldung in A
    9584: 60        RTS

        Previous Page / Next Page