Burst-Befehle $0a,$1a: Query Disk Format (bei der 1571: $8517) BE06: 20 B2 BC JSR $BCB2 Burst-Befehl: INQUIRE-DISK (bei der 1571: $8f5f) BE09: A2 00 LDX #$00 Anzahl gefundener Sektoren = 0 setzen BE0B: 86 3D STX $3D BE0D: A9 C0 LDA #$C0 RESTORE_DV ('BUMP') BE0F: 20 F4 DB JSR $DBF4 Nummer der ersten Spur ermitteln BE12: C9 02 CMP #$02 Fehler ? BE14: B0 59 BCS $BE6F ja, ==> BE16: A5 1F LDA $1F gefundene Spurnummer aus Blockheader als BE18: 85 8E STA $8E '1. physikalische Spurnummer' uebernehmen BE1A: 24 7C BIT $7C Burst-Kommandobyte holen BE1C: 10 0F BPL $BE2D F-Flag (b7): bestimmte Spur abfragen ? BE1E: AD 03 02 LDA $0203 ja: BE21: 8D BC 01 STA $01BC Tracknummer in HDRS2 des Jobs0 schreiben BE24: A9 8C LDA #$8C SEEK_DV: sucht physikalischn Zylinder BE26: 20 9D 95 JSR $959D Job aufrufen BE29: C9 02 CMP #$02 Fehler ? BE2B: B0 42 BCS $BE6F ja, ==> Einsprung von $BE1C: BE2D: A5 7C LDA $7C Burst-Kommandobyte holen BE2F: 29 10 AND #$10 S-Flag holen (Seitenauswahl) BE31: 4A LSR und nach b0 verschieben BE32: 4A LSR BE33: 4A LSR BE34: 4A LSR x=0 BE35: 9D CE 01 STA $01CE,X in den Job-Seitenspeicher (SIDS) schreiben BE38: A9 9C LDA #$9C SIDE_DV: Seite auswaehlen BE3A: 20 9D 95 JSR $959D Job aufrufen BE3D: A9 B0 LDA #$B0 SEEKHD_DV: erstbesten Sektor suchen BE3F: 20 9D 95 JSR $959D Job aufrufen BE42: C9 02 CMP #$02 ist ein Fehler aufgetreten ? BE44: B0 29 BCS $BE6F ja, ==> BE46: A5 21 LDA $21 gefundene Sektornummer BE48: 85 3E STA $3E merken [Jetzt werden so lange Blockheader gesucht und die Sektornummer gemerkt, bis die zuerst gefundene Nummer wieder auftaucht.] Einsprung von $BE64: BE4A: A2 00 LDX #$00 Job0 benutzen BE4C: A9 B0 LDA #$B0 SEEKHD_DV: naechsten Sektor suchen BE4E: 20 9D 95 JSR $959D Job aufrufen BE51: C9 02 CMP #$02 Fehler ? BE53: B0 1A BCS $BE6F ja, ==> BE55: A5 21 LDA $21 Sektornummer aus dem Blockheader holen BE57: A4 3D LDY $3D Anzahl gefundener Sektoren holen BE59: 99 0B 02 STA $020B,Y Sektor in die Sektorentabelle eintragen BE5C: E6 3D INC $3D Sektorenzahl erhoehen BE5E: C0 1F CPY #$1F Ende des 'Kommandopuffers' erreicht ? BE60: B0 0B BCS $BE6D ja, ==> BE62: C5 3E CMP $3E erste Sektornummer wieder erreicht ? BE64: D0 E4 BNE $BE4A nein, ==> Daten auswerten BE66: A5 3D LDA $3D BE68: 85 92 STA $92 Anzahl Sektoren merken BE6A: A9 00 LDA #$00 Ok. BE6C: 2C B $2C Einsprung von $BE60: BE6D: A9 02 LDA #$02 Header nicht gefunden (meint, Tabelle voll) Einsprung von $BE14, $BE2B, $BE44, $BE53: BE6F: 20 66 BF JSR $BF66 Burst-Status setzen (bei der 1571: $8523) BE72: C9 02 CMP #$02 Fehler ? BE74: 90 03 BCC $BE79 nein, ==> BE76: 4C FC BA JMP $BAFC Status ausgeben ==> Einsprung von $BE74: BE79: 20 97 C0 JSR $C097 groesste/kleinste Sektornummer suchen BE7C: 20 D4 AC JSR $ACD4 FSM auf Ausgabe schalten BE7F: AD EF 01 LDA $01EF kleinste gefundene Sektornummer BE82: 85 94 STA $94 als 1. Sektornummer der Spur merken BE84: AD F0 01 LDA $01F0 groesste gefundene Sektornummer BE87: 85 93 STA $93 als letzten Sektor der Spur merken Spurinformation an Computer senden BE89: 20 AB BF JSR $BFAB Burst-Status ausgeben BE8C: A5 92 LDA $92 Anzahl der Sektoren BE8E: 20 86 BF JSR $BF86 ausgeben BE91: A5 1F LDA $1F Tracknummer BE93: 20 86 BF JSR $BF86 ausgeben BE96: AD EF 01 LDA $01EF kleinste Sektornummer BE99: 20 86 BF JSR $BF86 ausgeben BE9C: AD F0 01 LDA $01F0 groesste Sektornummer BE9F: 20 86 BF JSR $BF86 ausgeben BEA2: A9 01 LDA #$01 1 (soll Sektorversatz sein) BEA4: 20 86 BF JSR $BF86 ausgeben BEA7: A9 20 LDA #$20 Sektorentabelle senden (T-Flag (b5)=1) ? BEA9: 24 7C BIT $7C BEAB: F0 0D BEQ $BEBA nein, ==> BEAD: A0 00 LDY #$00 Tabelle ausgeben Einsprung von $BEB8: BEAF: B9 0B 02 LDA $020B,Y BEB2: 20 86 BF JSR $BF86 Byte an Computer senden BEB5: C8 INY BEB6: C4 92 CPY $92 Anzahl Sektoren auf der Spur BEB8: D0 F5 BNE $BEAF Einsprung von $BEAB: BEBA: 60 RTS Previous Page / Next Page |