Burst-Befehle $00,$10: Read (bei der 1571: $8371) BB11: A5 25 LDA $25 wurde die Diskette gewechselt ? BB13: D0 E2 BNE $BAF7 ja, ==> Einsprung von $BB6E: BB15: 20 D4 AC JSR $ACD4 FSM auf Ausgabe schalten BB18: A5 7C LDA $7C Burst-Kommandobyte holen BB1A: 30 97 BMI $BAB3 L-Flag (b7)=1: logische T&S angegeben, ==> (bei der 1571: $8d67) BB1C: A2 00 LDX #$00 Job 0 benutzen BB1E: AD 03 02 LDA $0203 Tracknummer holen BB21: 95 0B STA $0B,X und in Jobpuffer eintragen BB23: AD 04 02 LDA $0204 Sektornummer holen BB26: 95 0C STA $0C,X und in Jobpuffer eintragen BB28: A5 7C LDA $7C Burst-Kommandobyte holen BB2A: 29 10 AND #$10 b4: Seitennummer isolieren BB2C: 9D CE 01 STA $01CE,X und in Job-Puffer (SIDS) eintragen BB2F: A9 B2 LDA #$B2 TPREAD_DV: physikalische Spur einlesen BB31: 20 B0 BF JSR $BFB0 Job aufrufen BB34: 20 66 BF JSR $BF66 Burst-Status setzen BB37: 24 7C BIT $7C Burst-Kommandobyte holen; BB39: 70 04 BVS $BB3F E-Flag (b6)=1: Fehler ignorieren ? ja, ==> BB3B: C9 02 CMP #$02 Jobrueckmeldung < 2 (Ok.) ? BB3D: B0 BD BCS $BAFC nein, (Status ausgeben, Ende) ==> Einsprung von $BB39: BB3F: 20 AB BF JSR $BFAB Burst-Status an Computer uebertragen BB42: A0 00 LDY #$00 BB44: 84 7E STY $7E Pufferzeiger Lo =0 setzen BB46: B9 9F 00 LDA $009F,Y Zeiger auf den Block im Cache holen BB49: 29 7F AND #$7F Umwandlungs-Flag ausblenden BB4B: 18 CLC BB4C: 65 8C ADC $8C + Cache-Start BB4E: 85 7F STA $7F als Pufferzeiger Hi merken BB50: A6 91 LDX $91 Sektorgroesse holen BB52: E0 03 CPX #$03 Anzahl auszugebender Speicherseiten merken BB54: D0 01 BNE $BB57 1 oder 2 Seiten, ==> BB56: E8 INX 4 Seiten ausgeben Einsprung von $BB54, $BB5D, $BB64: BB57: B1 7E LDA ($7E),Y Byte aus Cachepuffer holen BB59: 20 86 BF JSR $BF86 und an Computer senden BB5C: C8 INY BB5D: D0 F8 BNE $BB57 ganze Speicherseite ausgeben, ==> BB5F: CA DEX naechste Seite holen BB60: F0 04 BEQ $BB66 keine Seite mehr auszugeben, ==> BB62: E6 7F INC $7F Pufferzeiger Hi erhoehen BB64: D0 F1 BNE $BB57 ==> Einsprung von $BB60: BB66: CE 05 02 DEC $0205 Anzahl auszugebender Sektoren -1 BB69: F0 06 BEQ $BB71 fertig, ==> BB6B: 20 40 C0 JSR $C040 naechste Blocknummer holen BB6E: 4C 15 BB JMP $BB15 Block lesen und ausgeben Einsprung von $BB69: BB71: 4C 47 BF JMP $BF47 ggf. Kopf auf die angegebene Spur setzen Previous Page / Next Page |