APPLICATIONSDISQUE ★ Animation ★

DisDis (Schneider Magazin)Applications Disque
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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)
Länge : &1D06 ( 7430)
Endadresse : &8D05 (36101)
Aufruf : CALL &7000

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:

BefehlHexzahl,Hexzahl,String
Z------2b4---,Fe5a---,Hello

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:

  • DRIVE Aktuelles Laufwerk, auf dem alle Speicherzugriffe stattfinden (A oder B).
  • USER Aktueller User im Bereich von 0 bis &0F. FORMAT Format, in dem die aktuelle Diskette formatiert ist.
  • BLOCK Als letzter berechneter oder gelesener Block. Wenn &FF ausgegeben wird, befindet sich dieser in einer CP/M-Spur.
  • TRACK Als letzte berechnete oder angefahrene Spur.
  • SECTOR Als letzter berechneter oder gelesener Sektor.
  • PROGRAM Programm, daß sich auf dem aktuellen Block befindet. Steht dort kein gültiges, wird NO FILE HERE ausgegeben. Sollte das Programm jedoch gelöscht, aber noch voll lauffähig sein, erscheint sein Name farblich abgesetzt.
  • PRINTER Gibt an, ob die Druckeroption an- oder ausgeschaltet ist.

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 —
Syntax: A (keine Parameter)

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 —
Syntax: D,, drive

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
in Track/Sektor — Syntax: R 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
in Block — Syntax: T track, sector

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,
wird der Katalog auch auf dem Printer ausgegeben. Normalerweise muß der Parameter im Bereich von 0 bis &0F liegen. Jedoch besteht die Möglichkeit, durch Eingabe von &E5 alle gelöschten Files der Diskette ' auflisten zu lassen. Dieser Wert wird allerdings nicht im Computer gespeichert und ist jeweils neu einzugeben. Alle anderen Werte führen zu einer Fehlermeldung.

Erweiterter Katalog —
Syntax: E (keine Parameter)

Auch nach diesem Befehl erfolgt ein Ausdruck der Directory, der aber nun wesentlich genauer ist. Er enthält folgende Angaben:

  • PROGRAM Name des jeweiligen Programms
  • FORMAT Art dieses Programms
  • START Anfangsadresse LEN. Länge
  • AUTO Autostartadresse
  • HIDE Gibt an, ob das Programm versteckt ist oder nicht.
  • R/O Gibt an, ob das Programm nur lesbar ist oder nicht.
  • PROT. Zeigt, ob das File geschützt ist oder nicht.
  • USER Gibt den User im Bereich von 0 bis &0F oder &E5 an.

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 —
Syntax: Q (keine Parameter)

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 —
Syntax: M track, sector

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
sich nun mit den Cursor-Tasten hin- und herbewegen. Durch die Eingabe von Hexzahlen kann man jetzt direkt die Seite des Sektors verändern. Mit TAB wechselt der Cursor zwischen Hex-Dump und ASCII-Dump. In letzterem lassen sich Änderungen ebenfalls direkt vornehmen. Diese werden dann auf beiden Seiten, d.h. im ASCII- und im Hex-Dump, unverzüglich ausgeführt; man kann sie also sofort sehen. Ein Druck auf ESC führt zurück in die Memory-Ebene.

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 —
Syntax: X,, Programmname

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:

  • HIDE (Y/N) Soll das Programm zukünftig versteckt sein oder nicht?
  • R/O (Y/N) Soll es von nun an nur lesbar oder auch schreibbar sein?
  • USER Unter welchem User soll es nun laufen? War der alte User &E5, war es gelöscht und kann nun mit der Eingabe von Null wieder zurückgeholt werden.
  • PROT. (Y/N) Soll es zukünftig geschützt sein oder nicht ?
  • STARTADR. Die neue Startadresse im Bereich 0 bis &FFFF
  • AUTOSTART Die neue Autostartadresse im Bereich 0 bis &FFFF

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!

Jörn Klose, Schneider Magazin

★ PUBLISHER: Schneider Magazin
★ YEARE: 1987 , 1988
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Jörn Klose
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» DisDis    (Schneider  Magazin)    GERMANDATE: 2023-03-19
DL: 57
TYPE: ZIP
SiZE: 8Ko
NOTE: Supplied by Johnny Farragut ; 40 Cyls
.HFE: Χ

» DisDis    (Schneider  Magazin)    LISTING    GERMANDATE: 2021-02-02
DL: 224
TYPE: PDF
SiZE: 2024Ko
NOTE: 5 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Desenhador de sprites (Amstrad Magazine)
» Applications » Taspro 464 (Amstrad Action)
» Applications » CP/M-Hilfsprogramme für CPC und JOYCE
» Applications » Sprite-Routine (CPC Magazin)
» Applications » Sprite Generator
» Applications » Sprite Editor v2
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 497 millisecondes et consultée 869 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.