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 |