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