    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