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