Byte für Byte
Ein Diskettenmonitor mit vielen Extras
Wie gut, daß Sie nicht zu den oberflächlichen Menschen gehören. Ansonsten
hätten Sie jetzt vielleicht gedacht: “Schon wieder ein Sektor-Editor, war doch
schon x-mal da !!” – Sie haben gut daran getan, nicht gleich weiterzublättern.
“Sectedit 2.6” ist deutlich mehr als “just another disk-editor”. Dieses
Programm verfügt nämlich über Fähigkeiten, denen Sie nur selten begegnen.
Die meisten Sektoreditoren können nur Disketten im “DATA”- oder “SYSTEM”-Format
lesen. In der Regel werden auch nur Sektoren von 512 Bytes Länge verarbeitet.
Welches Programm kann darüber hinaus fehlerhafte Sektoren oder Sektoren mit
gelöschter “DATA ADDRESS MARK” veränderter ID weiterbearbeiten? Und wenn ein
Sektor-Editor dann doch so etwas kann, ist er auch dementsprechend teuer.
Mit SECTEDIT in der Version 2.6 können Sie folgende Arten von Sektoren
bearbeiten:
●Sektoren mit gelöschter DATA ADDRESS MARK
●Sektoren ohne DATA ADDRESS MARK
●Spuren in Single oder Double Density
●Sektoren von beliebiger Länge (natürlich nur bis 4096 Bytes)
●”nicht vorhandene” Sektoren
●Sektoren mit Checksummenfehlern in Daten oder ID
●Sektoren, deren IDs nicht stimmen
●bis zu 40 Sektoren pro Spur
●unterschiedliche Sektorlängen auf einer Spur,
außerdem alle Sektoren, die mit einem uPD765 FDC (der Floppycontroller im CPC)
geschrieben wurden.
Kinderleichte Handhabung
Die Bedienung von SECTEDIT ist denkbar einfach.
In einem Fenster mit je 256 Bytes des gelesenen Sektors können Sie den Cursor
ganz normal mit den Cursortasten in alle vier Richtungen bewegen.
Änderungen werden sofort übernommen. Das bedeutet, wenn Sie 41424344 eintippen,
sehen Sie im ASCII-Fenster ABCD. (Im HEX-Fenster steht dann natürlich auch 41
42 43 44.)
Mit den SHIFT-Tasten bekommen die Cursortasten weitere Funktionen.
<SHIFT-Hoch> springt zur nächsten Spur.
Nach Spur 41 kommt wieder Spur 0.
<SHIFT-Runter> springt zur vorherigen Spur. Nach Spur 0 kommt wieder Spur 41.
<SHIFT -Links> und <-Rechts> lesen den jeweils vorherigen beziehungsweise den
nächsten Sektor.
Wenn der letzte Sektor einer Spur gelesen wurde, wird automatisch die nächste
Spur gelesen. So geht es natürlich auch rückwärts (erster Sektor).
Die Funktionen von SECTEDIT lassen sich über Tastenkombinationen aufrufen.
Jedes Kommando, das Eingaben verlangt, kann durch auf <ENTER> (ohne etwas
einzugeben) oder <ESC> abgebrochen werden!
Bei Eingaben im Hexmodus wird immer ein # vorangestellt.
Nun die Kommandos im einzelnen:
<CTRL A>: Autowrite-Option an/aus
Bei eingeschaltetem Autowrite wird jeder Sektor zurückgeschrieben, bevor der
nächste gelesen wird.
ACHTUNG !! Diese Funktion sollten Sie nicht unbedingt an Ihrer
Lieblingsdiskette ausprobieren, Sie könnten versehentlich wichtige Dateien
zerstören !!
<CTRL B>: Sektor-Sort an/aus
Wenn Sektor-Sort eingeschaltet ist, werden die Sektornummern logisch sortiert.
Ansonsten werden die Sektoren in ihrer physikalischen Reihenfolge aufgelistet.
<CTRL C>: Diretory anzeigen
Liest, falls vorhanden, das Inhaltsverzeichnis dereingelegten Diskette.
<CTRL D>: Laufwerk wechseln
Umschalten von Laufwerk A nach B oder entsprechend von B nach A.
Gleichzeitig wird Track 0 gelesen.
<CTRL F>: Farben ändern
Hierdrücken Sie:
- ”H” für die Hintergrundfarbe (PAPER)
- ”R” für die Randfarbe (BORDER)
- ”S” für die Schriftfarbe (INK 1)
<CTRL H>: Informationen zu einem File
Zuerst muß der Filename eingegeben werden. Wird keine Datei mit dem Namen
gefunden oder enthält die Diskette keine Dateien, wird eine Fehlermeldung
ausgegeben.
Ansonsten werden folgende Informationen zum File aufgelistet:
- Filetyp: Hier steht eine Hexzahl (00 für Basic, 02 für Binärfiles usw.)
- Anfang: ist die Ladeadresse des Files inhexadezimaler Schreibweise.
- Länge: ist die Dateilänge in Hex.
- Start: ist, falls vorhanden, die Einsprungadresse (bei BASIC-Files steht hier
immer 0).
- Lage des Files auf Diskette:
Hier werden die erste Spur und der erste Sektor des Files ausgegeben, also die
Stelle auf der Diskette, an der das File beginnt.
- Fileattribute:
SYS für versteckte oder DIR für sichtbare Files.
R/O für nur lesbare oder R/W für schreib- und lesbare Files.
<CTRL I>: Sektor-Informationen
Falls die Spur formatiert ist, erscheinen hier folgende Informationen:
- Die Anzahl der Sektoren auf dieser Spur
- Die Länge des aktuellen Sektors in Bytes
- Die Anzahl der Seiten (Pages) im aktuellen Sektor
- Die Gesamtkapazität der Spur in Bytes
- Der erste Sektor der Spur.
Die Gesamtlänge der Spur stimmt nur bei Sektorgrößen bis 6144 Bytes.
Größere Sektoren passen ja nicht auf eine Spur, also wird als Spurgröße 0 Bytes
angegeben.
<CTRL K>: Spur kopieren
Die aktuelle Spur wird kopiert.
Zuerst muß das Ziellaufwerk eingegeben werden, also das Laufwerk, auf welches
die Spur kopiert werden soll.
Nach dem Lesen der Spur werden Sie gefragt, ob Sie die Sektor-IDs editieren
wollen.
Editieren der Sektor-IDs:
Hier können folgende Einträge der ID geändert werden :
- Spurnummer (beliebiger Wert)
- Kopfnummer (beliebiger Wert)
- Sektornummer (beliebig, aber siehe unten)
- Sektorlänge (#02 für 512 Bytes)
Links wird jeweils der alte Wert angezeigt. Dieser kann mit <ENTER> übernommen
oder durch Eingabe einer Hexzahl verändert werden.
Sie sollten nie mehrmals dieselbe Sektornummer verwenden, da der FDC (Floppy
Disc Controller) beim Lesen diese Sektoren nicht unterscheiden kann, und
Sektoren mit derselben Nummer sozusagen “verschluckt” werden. Auch sollte die
neue Sektorlänge niemals größer sein als die alte, da sonst nachfolgende
Sektoren oder die Index Adress Mark überschrieben werden können (die Spur ist
dann sozusagen unformatiert). Außerdem gehen beim Kürzen eines Sektors von zum
Beispiel 1024 auf 512 Bytes die letzten 512 Bytes in den nächsten Sektor über
(falls vorhanden).
<CTRL N>: Neue Parameter eingeben
Hier wird zuerst die Spur eingegeben. Nach dem Lesen der IDs wird dann wie bei
<CTRL V> der Sektor ausgewählt.
<CTRL P>: Seite wechseln
Wechselt die Seite des aktuellen Sektors. Bei Sektoren mit 512 Bytes Länge wird
automatisch zwischen zwei Seiten umgeschaltet, sonst kann die Seitennummer in
Hex eingegeben werden. Bei
- 128 Bytes gibt es nur eine halbe Seite (dieersten 8 Zeilen)
- 256 Bytes gibt es eine Seite (hierbei wird nicht umgeschaltet)
- 512 Bytes gibt es zwei Seiten, die automatisch umgeschaltet werden.
- 1024 Bytes gibt es 4 Seiten (#00 -#03)
- 2048 Bytes gibt es 8 Seiten (#00 -#07)
- 4096 Bytes gibt es 16 Seiten (#00 - #0F)
<CTRL Q>: Bytefolge auf Diskette suchen
Zuerst wird nach der Art der Bytes gefragt.
Hier ist dann ”H” für Hexzahlen und ”A” für ASCII-Zeichenfolgen einzutippen.
Nun können Sie die Suchbytes eingeben (maximal 16 Bytes). Falls Sie weniger als
16 Bytes suchen wollen, drücken Sie nach Eingabe der Bytes beziehungsweise der
Zeichenfolge einfach <ENTER>.
Die Suche beginnt ab dem aktuellen Track im angemeldeten Laufwerk. Wenn Sie
also im Laufwerk B, auf Track 39 stehen, wird auch nur bis Track 41 gesucht.
Wurden die Bytes gefunden, wird die Lage der Bytes im Sektor als Hexadresse
angegeben und danach gefragt, ob weitergesucht werden soll. Hier muß einfach
nur “J” oder “N” gedrückt werden.
Die Suche wird abgebrochen, wenn:
- die Bytes gefunden wurden, und nicht weitergesucht werden soll,
- während der Suche eine Taste gedrückt wurde
- oder die letzte Spur (Spur 41) durchsucht wurde.
<CTRL R>: Re-Read Sektor
Der zuletzt eingelesene Sektor wird nocheinmal eingelesen. Dies hilft
(allerdings nur dann, wenn der Sektor nicht schon geschrieben wurde), wenn Sie
falsche Änderungen rückgängig machen oder die Änderungen kontrollieren wollen.
<CTRL S>: Sektor schreiben
Der zuletzt eingelesene Sektor wird (mit allen Änderungen) nach einer
Sicherheitsabfrage auf die Diskette zurückgeschrieben.
<CTRL V>: Sektor auswählen
Hier können Sie einen Sektor der Spur auswählen. Sie geben einfach die Nummer
des Sektors ein, und er wird, falls vorhanden, eingelesen.
<CTRL W>: Wechsel zwischen ASCII und HEX
Der Eingabe-Cursor schaltet zwischen dem ASCII- und HEX-Fenster um. Alle
Eingaben werden dann nur noch in Hexadezimalzahlen beziehungsweise in
ASCII-Zeichen angenommen.
<ENTER> (<CTRL M>): Kommandoliste
Zu jedem CTRL-Befehl wird eine Kurzbeschreibung ausgegeben.
<ESC>: Zurück zum BASIC
Sie können SECTEDIT danach mit CALL &9000 neustarten.
Weitere Infos
Neben den Informationen über die Spur werden nach dem Lesen eines Sektors auch
seine ID, zum Beispiel #0A #00 #C3 #02, und einige seiner Status-Register
ausgegeben.
Die Bytes in der ID haben folgende Bedeutung:
1. Die Spurnummer des Sektors, welche aber nicht stimmen muß.
2. Die Kopfnummer des Sektors. Auch hier kann ein beliebiger Wert stehen.
3. Die Sektornummer. Die ist immer richtig (muß sie auch sein).
4. Die Sektorgröße in einer codierten Form. Das bedeutet:
#00 = 128 Bytes, #01 = 256 Bytes, #02 = 512 Bytes (wie bei Amsdos-Formaten),
#03 = 1024 Bytes, #04 = 2048 Bytes und #05 = 4096 Bytes.
Alle anderen Werte größer als fünf sind unsinnig oder fehlerhaft, wobei der
Wert sechs eine Ausnahme darstellt. Bei manchen neueren Spieldisketten wird ein
Kopierschutz verwendet, wobei die Sektoren theoretisch 8192 Bytes lang sind.
Da auf eine MFM-formatierte Spur aber nur zirka 6500 Bytes passen, wird der
Lesevorgang nach 6144 Bytes abgebrochen. Diese Sektoren lassen sich auch mit
SECTEDIT lesen, allerdings ist es unsinnig, sie auch zu schreiben (was mit
etwas Aufwand schon möglich wäre), da dieser Schutz sowieso nur bei
Originaldisketten verwendet wird, und auf die will ja wohl niemand etwas
schreiben.
Bei den Statusregistern gibt es folgende Möglichkeiten:
CM - CONTROL MARK
Der gelesene Sektor hat eine gelöschte DATA ADDRESS MARK
WC - WRONG CYLINDER
Die gelesene Spurnummer oder Kopfnummer in der ID stimmt nicht mit der
physikalischen Spur- beziehungsweise Kopfnummer überein.
DE - DATA ERROR
Der Sektor ist kaputt, die gelesenen Daten stimmen nicht mit der eingetragenen
Checksumme überein.
ND - NO DATA
Der Sektor ist nicht vorhanden, hat aber trotzdem eine ID. Diese Meldung tritt
aber auch beim versuchten Zugriff auf nicht vorhandene Leseköpfe auf (siehe
WC). In beiden Fällen wird der Sektorbuffer mit #E5 gefüllt. Dieser Sektor kann
auch nicht geschrieben werden, da er zwar eine ID hat, aber entweder keine ID
ADRESS MARK, ein SYNC oder GAP#2 zu klein oder das Sektorfeld (DATAFIELD) nicht
vorhanden ist (Sektorlänge = 0 Bytes).
MD - MISSING DAM
Bei dem gelesenen Sektor fehlt die DATA ADDRESS MARK.
Links neben den IDs wird die Aufzeichnungsdichte der Spur angezeigt: MF für
Single und MFM für Double Density. Fehlerhafte Eingaben werden soweit als
möglich abgefangen.
Abtippen des Dataladers
Tippen Sie den BASIC-Lader ab, und speichern Sie ihn zur Sicherheit auf
Diskette. Wenn alles in Ordnung ist, wird das Programm “SEKTOR.BIN”
abgespeichert, welches dann einfach “SEKTOR” geladen werden kann.
SECTEDIT läuft übrigens nicht unter VDOS. Auch auf den neuen CPCs mit der
Bezeichnung ”plus” ist dieses Programm nicht lauffähig.
Oliver Mayer/rs