Kommandos der Monitorprogrammemulation

Das Monitorprogramm zeigt mit einem # an, dass es auf die Eingabe eines Kommandos wartet. Ein Kommando besteht aus einem Buchstaben. Dahinter können durch Leerzeichen getrennt Argumente in Form von hexadezimalen Zahlen folgen. Wenn Sie anstelle der Argumente einen Doppelpunkt eingeben, werden die Argumente des vorherigen Kommandos übernommen.

Argumente, die in der nachfolgenden Beschreibung in eckigen Klammern eingeschlossen sind, können weggelassen werden.

Ein Kommando schließen Sie mit der ENTER-Taste ab, wobei sich der Cursor hinter dem letzten Argument befinden muss.

Die Kommandos der Monitorprogrammemulation sind an die Kommandos der originalen Monitorprogramme angelehnt. Es stehen aber nicht alle originalen Kommandos zur Verfügung. Die Hex-Alpha-Umschaltung (Kommandos A und H) wird nicht unterstützt, da das im Emulator wenig Sinn macht. Das Kommando H hat dafür eine andere Bedeutung. Außerdem fehlen die Kommandos B (Haltepunkt setzen), E (Programm mit aktiviertem Haltepunkt starten), G (angehaltenes Programm fortsetzen) und N (Schrittbetrieb), da J1013 diese Debugger-Funktionalitäten in anderer Form bietet (siehe Debugger).

1. Eingebaute Kommandos

C adr1 adr2 anz

Dieses Kommando vergleicht zwei Speicherbereiche miteinander. Die Speicherbereiche beginnen an den Adressen adr1 und adr2 und sind anz Bytes lang. Sind die Speicherbereiche gleich, meldet sich das Monitorprogramm wieder. Bei Ungleichheit werden die ersten unterschiedlichen Bytes mit ihren Adressen ausgegeben. Mit Betätigen der ENTER-Taste wird der Vergleich fortgesetzt, eine andere Taste bricht den Vergleich ab.

D aadr [eadr]

Der Speicherbereich von der Anfangsadresse aadr bis zur Endadresse eadr wird auf dem Bildschirm hexadezimal ausgegeben. Pro Zeile erscheint zuerst die Adresse, anschließend acht Bytes und zum Schluss eine Prüfsumme.

Wird die Endadresse weggelassen, erfolgt die Ausgabe blockweise und ohne Prüfsumme als Hex-ASCII-Dump. Betätigen Sie die ENTER-Taste, wird der nächste Block ausgegeben. Jede andere Taste beendet das Kommando.

F aadr anz aa bb cc ...

Ab der angegebene Adresse aadr sollen anz aufeinanderfolgende Bytes im Speicher gesucht werden. Ab dem dritten Argument werden die zu suchenden Bytes angegeben. Ist die Suche erfolgreich, erfolgt an der gefundenen Adresse ein Übergang zum M-Kommando. Konnte die Bytefolge nicht gefunden werden, erscheint die Ausschrift NOT FOUND.

H

Es wird eine kurze Hilfe mit den möglichen Kommandos angezeigt.

I

Dieses Kommando initialisert das Monitorprogramm neu.

J sadr

Es wird ein Programm mit der Startadresse sadr gestartet. Die Inhalte der CPU-Register sind unbestimmt.

K aadr eadr bb

Damit wird der Speicherbereich von der Anfangsadresse aadr bis einschließlich Endadresse eadr mit dem Byte bb beschrieben. Der Speicherbereich wird somit gelöscht.

L [aadr [eadr]]

Mit diesem Kommando laden Sie eine Datei in den Arbeitsspeicher. Dazu erscheint ein Dateiauswahldialog. Die weitere Vorgehensweise ist im Abschnitt Datei laden beschrieben.

Mit dem Kommando können Sie auch eine Anfangs- und bei Bedarf zusätzlich auch eine Endadresse angeben. In diesem Fall werden die angegebenen Adressen verwendet und die Ladeadressen im Dateikopf ignoriert.

M aadr

Das M-Kommando ermöglicht das byteweise Anzeigen und gegebenfalls auch Verändern von Speicherbereichen. Sie können mit diesem Kommando Maschinencodeprogramme eintippen, die als Hex-Listing vorliegen.

Das Kommando gibt die Adresse addr, den Wert der Speicherzelle und dahinter ein Doppelkreuz als Eingabeaufforderung aus. Nun können Sie durch Leerzeichen getrennt hexadezimale Zahlen eingeben, die dann in den Arbeitsspeicher geschrieben werden. Soll dagegen der alte Inhalt beibehalten werden, betätigen Sie die ENTER-Taste, ohne etwas vorher einzugeben. Durch Eingabe des Zeichens R gelangen Sie eine Adresse zurück. Mit einem Semikolon verlassen Sie das M-Kommando.

Wenn Sie versuchen, den Wert einer nicht veränderbaren Speicherzelle zu beschreiben (ROM), erscheint ein ER als Fehlerausschrift. Dahinter wird die Speicherzelle noch einmal ausgegeben.

S [aadr eadr]

Mit diesem Kommando wird ein Speicherbereich in eine Datei geschrieben. Nach dem Bestätigen des Kommandos mit ENTER ist der weitere Ablauf wie im Abschnitt Datei speichern beschrieben.

Wenn Sie die Anfangs- und Endadresse des Speicherbereiches nicht schon direkt beim Kommando angegeben haben, müssen Sie diese in dem sich öffnenden Fenster eingeben.

T aadr zadr anz

Es werden im Arbeitsspeicher ab der Anfangsadresse aadr anz Bytes zur Zieladresse zadr kopiert. Ein Überlappen der Speicherbereiche ist möglich.

W aadr eadr

Diese Kommando realisiert eine Fensterfunktion, innerhalb dessen die Bildschirmausgabe rollt. aadr steht für die Anfangsadresse der ersten zum Rollbereich gehörenden Zeile. eadr gibt die Anfangsadresse der ersten nicht mehr zum Rollbereich gehörenden Zeile an.

Der Rollbereich muss mindestens zwei Zeilen groß sein.

2. Benutzerdefinierte Kommandos

Das emulierte Monitorprogramm kann um eigene Kommandos erweitert werden, die als Maschinencodeunterprogramme zu implementieren und in den Arbeitsspeicher zu laden sind. Ein benutzerdefiniertes Kommando beginnt mit einem @. Unmittelbar dahinter folgt ein ASCII-Zeichen, dass für das eigentliche Kommando steht. Dahinter können durch Leerzeichen getrennt Argumente angegeben werden.

Die Verknüpfung der benutzerdefinierten Kommandos mit dem Monitorprogramm erfolgt über eine Tabelle, die ab Adresse 00B0 im Arbeitsspeicher steht und bis maximal zur Adresse 00CF reichen kann. In dieser Tabelle stehen immer drei aufeinander folgende Bytes für ein Kommando. Das erste Byte einer solchen 3-Byte-Gruppe enthält das ASCII-Zeichen, dass in der Kommandozeile nach dem @-Zeichen angegeben werden muss. Die restlichen beiden Bytes enthalten die Startadresse des Maschinencodeunterprogramms, in welchem das benutzerdefinierte Kommando implementiert ist. Das Unterprogramm selbst muss mit einem Return-Befehl abgeschlossen sein.