★ APPLICATIONS ★ DISQUE ★ Animation ★ |
DisDis (Schneider Magazin) | Applications Disque |
Disk-Monitore gibt es wie Sand am Meer. Aber die Darstellung des Sektorinhalts als Hex-/ASCII-Dump ist nur für ganz firme Computeraner aussagekräftig. Oft handelt es sich bei den Hex-Zahlen nämlich um Assembler-Programme. Und diese können Sie sich jetzt mit ”DisDis” (DISketten-DISassembler) als As-sembler-Listing auch auf dem Drucker ausgeben lassen. Aber auch sonst hat ”DisDis” noch einiges an erweitertem Standard zu bieten. Zunächst einige Hinweise zum Maschinenprogramm: Startadresse: &7000 (28672) Außerdem wird der Speicherplatz von &9000 bis &A000 für Daten benötigt. Das Programm funktioniert auf allen CPCs und unterstützt zwei Laufwerke von Amstrad/Schneider und Kompatiblen. Es erkennt die drei Formate des AMSDOS selbständig. Auch ist es weitgehend gegen Fehleingaben gesichert (man sollte jedoch zumindest am Anfang mit Backups arbeiten). ”DisDis” erwartet Eingaben in folgender Form:
Korrekturen sind wie üblich mit DEL durchzuführen. Nach Druck auf ESC wird diese Eingabe abgebrochen und eine neue erwartet. Ein- und Ausgabe von Zahlen erfolgen immer im Hexadezimalsystem, was zunächst etwas stören kann; das Programm ist damit später aber viel einfacher zu handhaben. Die Zahlen können Integer-Werte zwischen 0 und &FFFF annehmen. Eingaben erfolgen ohne Kennungszeichen wie & in Basic. Der String darf aus beliebigen ASCII-Zeichen bestehen, und Befehl kann sowohl ein Klein- als auch ein Großbuchstabe sein. Hier ist zu beachten, daß die erste Zahl dahinter ohne Komma oder Leerzeichen eingegeben wird. Bei einigen Befehlen sind manche Parameter nicht nötig. Dort ist es ausreichend, wenn nur die benötigten Daten übergeben werden. Ist die Eingabe mit ENTER abgeschlossen, erfolgt ihre Überprüfung und Ausführung. Sollte ein Fehler enthalten sein, erscheint eine Meldung, und der Computer erwartet eine erneute Eingabe. Im folgenden wollen wir nun die möglichen Befehle genau beschreiben. Basic — Syntax: B (keine Parameter) Rückkehr zum aufrufenden Programm. Ein Neustart des Monitors ist durch CALL &7000 möglich. Druckerausgabe an/aus — Syntax: P (keine Parameter) Der Drucker wird zu- oder abgeschaltet. Ist keiner angeschlossen oder ist der vorhandene nicht eingeschaltet, wird eine entsprechende Meldung ausgegeben. Sollte alles in Ordnung sein, wird von nun an (bis zu einem erneuten P) fast alles, was auf dem Bildschirm erscheint, auch zu Papier gebracht. Eine Ausnahme stellt die Ausgabe beim S-Kommando dar. Status — Syntax: S (keine Parameter) Es erscheinen die aktuellen Werte, die das Programm speichert, auf dem Bildschirm. Auch bei eingeschalteter Druckeroption erfolgt die Ausgabe nur auf dem Monitor. Ihre jeweilige Bedeutung wird im folgenden erklärt:
Hilfstabelle — Syntax: H (keine Parameter) Es wird eine kurze Hilfstabelle aufgelistet, die alle möglichen Kommandos aufgezeigt. Bei Start des Monitors erscheint diese automatisch. Andere Diskette — Der Monitor benötigt zur Arbeit einige Daten von der im Laufwerk liegenden Diskette, die sich ständig im Speicher befinden müssen. Diese werden bei Start des Programms eingelesen. Wenn nun jedoch die Diskette gewechselt bzw. gewendet wird, braucht der Monitor neue Daten. In diesem Falle ist das A-Kommando einzugeben, damit keine Fehler auftreten. Automatisch wird es beim Start des Monitors und bei einem Wechsel der Diskettenstation durchgeführt. Wahl des Laufwerks — Mit diesem Befehl wird das Laufwerk, auf das alle Speicherzugriffe stattfinden, bestimmt. Als Parameter ist A oder B möglich. Es werden, wie beim Start, alle Daten des gewählten Laufwerks eingelesen; das A-Kommando kann deshalb entfallen. Der Parameter ist nach zwei Kommas einzugeben! Umrechnung von Block Rechnet einen Block in Track/Sektor um. Der Parameter läßt sich dabei nur im vom Format abhängigen Bereich angeben. Ist er zu groß, erscheint eine Fehlermeldung. Die errechneten Werte werden gespeichert, so daß man sie beim folgenden M-Kommando benützen kann. Wenn kein Parameter angegeben ist. wird der Wert 0 angenommen. Beim M-Befehl erfolgt dann automatisches Laden des ersten Sektors der Directory- Umrechnung von Track/Sektor Dieser Befehl stellt das Gegenteil des R-Komman-dos dar. Er rechnet Track/Sektor in einen Block um. Die Parameter müssen nicht angegeben werden; in diesem Falle erfolgt eine Übernahme der gespeicherten Werte. Der Parameter track darf nicht größer &27 sein, und sector muß im Bereich des vorgegebenen Formats (DATA/CP/M = 1-9; IBM = 1-8) liegen. Bei Fehleingaben erscheint eine entsprechende Meldung. Katalog — Syntax: C user Mit diesem Befehl erhält man einen üblichen Ausdruck der Directory. Der Parameter user gibt hier den gewünschten User an. Er kann entfallen; es wird dann der gespeicherte Wert genommen. Nach Start des Monitors ist dieser 0. Ist die Druckeroption eingeschaltet, Erweiterter Katalog — Auch nach diesem Befehl erfolgt ein Ausdruck der Directory, der aber nun wesentlich genauer ist. Er enthält folgende Angaben:
Beim Format muß noch auf eine Besonderheit hingewiesen werden. Einige Assembler, Textverarbeitungen usw. besitzen ein spezielles Abspeicherformat (z.B. der Hisoft-Gena-Assembler). Solche Files sind mit SPECIAL zu bezeichnen. Wenn sich ein Programm auf der Diskette befindet, das zwar gelöscht, aber noch vollständig lauffähig ist, wird auch dieses farblich abgesetzt gelistet. SoUte man es allerdings nicht mehr zurückholen können, wird es auch nicht aufgeführt. Nachdem ein Bildschirm gefüllt ist, hält die Ausgabe an und wartet zur Fortsetzung auf den Druck einer Taste (nicht ESC, sonst wird das Kommando abgebrochen). Die Abfrage der Tastatur entfällt, wenn die Druckeroption eingeschaltet ist. Belegung der Diskette — Dieser Befehl bietet eine gute Hilfe, wenn man ein bestimmtes Programm untersuchen will. Oft stehen ja dessen Daten nicht unmittelbar hintereinander, sondern sind auf der Diskette verteilt. Er gibt alle Tracks/ Sektoren an, die die einzelnen Programme belegen. Durch Druck auf eine Taste wird die Ausgabe unterbrochen, und der Computer erwartet zur Fortsetzung einen erneuten Tastendruck (nicht ESC. sonst erfolgt ein Abbruch). Wie bei der E-Option werden auch hier gelöschte, aber noch lauffähige Files farblich abgesetzt gelistet. Bei eingeschalteter Druckeroption erfolgt eine Ausgabe der Liste auch auf dem Printer. Dump eines Sektors — Dies ist wohl die umfassendste Option des Programms und der leistungfähigste Teil des gesamten Monitors. Die Parameter müssen nicht unbedingt angegeben werden. In diesem Falle erfolgt eine Übernahme der gespeicherten, z.B. die aus einem Block über die R-Option errechneten Werte. Zunächst wird ein Dump vom Sektor ausgegeben. Das sieht dann folgendermaßen aus: In der Kopfzeile sind alle wichtigen Daten angegeben: Laufwerk, Spur, Sektor, Seite, Diskettenformat und das Programm, das sich auf diesem Sektor befindet. Ist es gelöscht, aber noch lauffähig, wird sein Name farblich abgesetzt gelistet. Steht jedoch kein Programm in diesem Sektor oder ist es bereits von anderen überschrieben, so wird NO FILE HERE ausgegeben. Darunter befindet sich der Dump von der Hälfte des Sektors nach folgendem Schema: Adresse, 16 Hexzahlen und die entsprechenden 16 ASCII-Zeichen. Besonders hervorzuheben sind hier die Adressen. Es handelt sich um sogenannte echte Adressen, d.h., sie geben an, wo sich dieser Teil des Programms tatsächlich im Speicher befindet. Dies ist z.B. bei Binärprogrammen sehr wertvoll. Ist der Sektor ein Teil einer ASCII-Datei oder liegt dort kein Programm, so werden die Adressen jeweils von 0 an gezählt. Unter dem Dump erscheint ein farblich abgesetztes Fenster. Hier sind alle jetzt möglichen Eingaben aufgelistet. Mit den Cursor-Tasten kann man sich sektor-und track weise durch die Diskette bewegen. Außerdem ist es möglich, mit F den folgenden Sektor des derzeitigen Programms zu laden. So kann man seine über die Diskette verstreuten Teile gut untersuchen. Wenn dies beim letzten Sektor eines Programms geschieht, erklingt ein Piepston, und es wird einfach der folgende Sektor geladen. Mit P werden die anderen 256 Byte des doppelt so großen Sektors ausgegeben. ESC führt in die Hauptebene zurück. W schreibt einen geänderten Sektor wieder auf die Diskette. Bevor der Computer dies jedoch ausführt, erfolgt eine Sicherheitsabfrage, um Fehlern vorzubeugen. Mit einem Druck auf M gelangt man in das Modify-Menü. Das obere Fenster bleibt erhalten, das untere wird neu aufgebaut. Außerdem erscheint im Hexdump oben links ein Cursor. Dieser läßt Zum Disassemblieren ist COPY zu betätigen. Es wird das untere Fenster gelöscht und die Startadresse abgefragt. Gibt man nun eine Hexzahl an, so beginnt bei dieser Adresse der Disassembliervorgang. Die Adresse muß sich allerdings auf dem zuuntersuchenden Sektor befinden. Betätigt man lediglich die ENTER-Taste, ist es die Adresse, an der sich der Cursor befindet. Nach Löschen des Bildschirms wird nun so lange gelistet, bis man eine Taste drückt. Überschreitet das Programm dabei die Grenzen des im Speicher befindlichen Sektors, wird automatisch der nächste geladen, der die folgenden Daten des Programms enthält. Handelt es sich dabei um den letzten Sektor, erklingt ein Piepston, und es wird einfach der folgende Sektor geladen. Das Disassemblieren geht aber in jedem Falle weiter. Nach Druck auf eine Taste wartet der Disassembler auf eine weitere Eingabe. Ist dies eine Taste außer ESC, setzt er die Arbeit fort, ansonsten erfolgt Löschen des Bildschirms und Rückkehr in die Modify-Ebene. Dabei wird der Zustand vor Aufruf des Disassemblers wiederhergestellt; der Cursor befindet sich nun an der Adresse, an der begonnen wurde, zu disassemblieren. Ist die Druckeroption eingeschaltet, erscheint all dies natürlich auch auf dem Papier. Programm ändern — Mit dieser Option kann man Programme direkt ändern. Ihr Name sollte die übliche Form besitzen, sonst erfolgt eine Fehlermeldung. Ist er nicht vollständig (die Extension fehlt), wird das erste gefundene Programm genommen. Man kann hier auch Namen angeben, die eigentlich nicht mehr vorhanden, also gelöscht sind. Auf diese Weise ist es möglich, Programme wieder zurückzuholen. Allerdings werden hier nur solche berücksichtigt, die auch lauffähig, also noch nicht überschrieben sind. Sollte das Programm nicht uneraseable oder auf der Diskette gar nicht vorhanden sein, erscheint NOT FOUND, und das Kommando wird abgebrochen. Ist jedoch alles in Ordnung, werden alle verfügbaren Daten für dieses Programm wie unter Option E aufgelistet. Dann erfolgt eine Abfrage der neuen Daten:
Wenn bei einer Abfrage einfach nur die ENTER-Taste gedrückt wird, erfolgt die Übernahme des alten Werts. Bei der ersten, zweiten und vierten Abfrage muß man nur Y für ja oder N für nein eingeben, sonst Zahlen. Nach einer falschen Eingabe wird die Frage wiederholt. Die ESC-Taste bringt in die Hauptebene zurück, ohne daß Daten verändert werden. Ist alles eingegeben, erscheinen die Daten des Programms noch einmal in der geänderten Form, und es erfolgt eine Sicherheitsabfrage. Nach Y werden dann die Daten auf die Diskette zurückgeschrieben. N bricht das Kommando ab, ohne daß Daten abgewandelt wurden. Die Abfrage nach der neuen Länge des Programms unterbleibt absichtlich, da eine Änderung dieses Werts unliebsame Folgen haben kann. Aber auch mit Variationen der Startadresse oder des Autostarts sollte man sehr vorsichtig sein, da dies nur allzu schnell Daten zerstören kann!
|