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