Bedienung
Monitorkommandos
Der Z1013 hat einen kleinen maschinennahen Systemmonitor, mit dem Programme geladen und gestartet werden. Es gibt 2 verschiedene Versionen: 2.02 (für die originale Flachfolientastatur) und A2 (für eine große Alpha-Tastatur).
- Die Befehle sind 1 oder 2 Buchstaben lang, gearbeitet wird hexadezimal.
- Der Nutzer muss wissen, wie der Speicher aufgeteilt ist und wohin er ein Programm lädt.
- Das Prompt-Zeichen ist '#', der Cursor muss sich beim Abschließen der Zeile mit Enter am Zeilenende befinden.
- Zahlen werden hexadezimal eingegeben. Es gelten die letzten 4 Stellen.
die wichtigsten Unterschiede A2 ↔ 2.02
Original wurde der Z1013 mit 2 verschiedenen Varianten des Systemmonitors ausgeliefert, die sich vor allem in der anzuschließenden Tastatur unterscheiden. Zwischen beiden Varianten konnte durch eine Wickelbrücke gewählt werden.
Version 2.02 unterstützt eine 8×4-Flachfolientastatur, während die Variante A2 für eine 8×8-Komfort-Tastatur ausgelegt ist.
Im Gegensatz zur Version 2.02 gelten für A2 folgende Änderungen:
- kein H- und A- und F-Kommando
- andere Adressen Windows-Speicher
- andere INKEY-Routine und auch INCH-Routine!
- KDO mit RST-Aufrufen programmiert, damit Verschiebung aller Routinen des Monitors!
Der A2-Monitor hat eine Repeat-Funktion bei INCH, während der 2.02-Monitor wartet, bis die Taste losgelassen und erneut gedrückt wurde.
Zu den Erweiterungen anderer Monitore siehe Der Monitor
grundlegende Kommandos
J sadr (Jump)
Es wird ein Programm ab der Startadresse aktiviert, eine eventuell eingegebene Haltepunktadresse wird nicht beachtet, die Inhalte der CPU-Register sind undefiniert.
L aadr eadr (Load from Cassette)
Ein mit dem S-Kommando ausgegebener Speicherbereich kann mit diesem Kommando wieder geladen werden. Dabei werden die ankommenden Byte ab der Anfangsadresse bis zur Endadresse im Speicher plaziert. Diese Adressen muessen nicht mit denen des S-Kommandos identisch sein, wichtig ist nur die Uebereinstimmung der Byteanzahl. Waehrend des Lesens wird mittels der aufgezeichneten Pruefsumme die Richtigkeit der ankommenden Daten kontrolliert. Stimmen errechnete und vom Band gelesene Pruefsumme nicht ueberein, wird eine Fehlermeldung ausgegeben: CS<aerr. Der fehlerhafte Bereich unterhalb der Adresse aerr muss dann manuell kontrolliert werden. Moeglicherweise ist auch nur die Pruefsumme falsch gelesen worden. Reicht die Anzahl der eingelesenen Bytes nicht aus, den Speicher bis zur Endadresse zu fuellen, bleibt das Programm in der Eingabe haengen, der Monitor kann nur wieder mit der Reset-Taste erreicht werden.
S aadr eadr (Save to Cassette)
Der Speicherbereich von Adresse aadr bis zur Adresse eadr wird ueber das Magnetbandinterface auf Magnetband ausgegeben. Nach einem etwa 1,5 Sekunden langen Kennton werden die Daten in Bloecken zu 32 Byte mit einer anschliessenden Prüfsumme pro Block ausgegeben.
Im Brosig-Monitor sowie beim Nachladen von Headersave stehen weiter Kommandos zum Laden und Speichern zur Verfügung:
@S aadr eadr [sadr] Speichern; Typ und Name wird abgefragt
Der Speicherbereich von Adresse aadr bis zur Adresse eadr wird ueber das
Magnetbandinterface auf Magnetband ausgegeben. Ein Autostartadresse sadr kann zusätzlich übergeben werden.
Nach einem etwa 1,5 Sekunden
langen Kennton wird ein Kopfblock mit den Adressen und Name und Typ ausgegeben, es folgt ein kürzerer Kennton, dann werden die Daten in Bloecken zu 32 Byte mit einer anschliessenden
Prüfsumme pro Block ausgegeben.
Headersave ist kompatibel zum originalen Load-Kommando, wenn erst ab zweitem Kennton geladen wird.
@L [aadr] und @LN [aadr] Laden; bei LN wird Typ und Name abgefragt
Laden von mit @S gespeicherten Programmen. Die Ladeadresse wird aus dem Kopfblock entnommen, es kann aber eine alternative Adresse angegeben werden. Bei Nutzung von @LN wird Name und Typ abgefragt und es wir nur geladen, wenn Name und Typ des Programms aus Kassette übereinstimmen.
W aaaa eeee (Window)
Dieses Kommando realisiert eine Fensterfunktion, innerhalb dessen die Rollfunktion des Bildschirms erhalten bleibt. Ausserhalb dieses Fensters wird die Bildschirmausgabe als Standbild realisiert. Der Anfang des Fensters wird mit dem Parameter aaaa, dessen Ende mit eeee festgelegt. Der kleinste realisierbare Fensterausschnitt besteht aus zwei Zeilen. Sollen nur die letzten beiden Zeilen rollen, sind als Parameter die Angaben aaaa=EFC0 und eeee=EFFF+1=F000 notwendig. Der volle Bereich wird durch die Parameter aaaa=EC00 und eeee=EFFF+1=F000 eingestellt. Der Bildschirm wird nicht geloescht, der Kursor wird an den Anfang des Fensters positioniert.
Speicheroperationen
M aadr (Modify)
Es ist moeglich, mit diesem Kommando einen Speicherbereich ab der angegebenen Anfangsadresse byteweise anzuzeigen und gegebenenfalls zu veraendern. Es erfolgt die Ausgabe der aktuellen Adresse und des Inhaltes des zugehoerigen Bytes. Anschliessend wird mit dem Zeichen „#“ zur Eingabe aufgefordert. Soll der alte Inhalt beibehalten werden, ist nur die Enter-Taste zu betaetigen, ansonsten wird vorher eine hexadezimale Zahl eingegeben. Es koennen auch mehrere Byteinhalte, durch Leerzeichen voneinander getrennt, eingegeben werden.
Nach Betaetigung der Enter-Taste wird die aktuelle Adresse erhoeht und auf der naechsten Zeile fortgesetzt. Wird versucht, einen nicht vorhandenen Speicherbereich oder einen ROM zu beschreiben, erfolgt eine Fehleraussohrift: ER aerr bb, wobei aerr die Adresse und bb den fehlerhaften Inhalt darstellen. Anschliessend wird eine erneute Eingabe erwartet. Diese Fehlerausschrift wird vor allem dann auftreten, wenn versucht wird, nicht vorhandene Speicher oder Festwertspeicher zu beschreiben. Mit Eingabe des Zeichens „R“ kann die aktuelle Adresse bei Bedarf zurueckgestellt werden.
Die Komandoausfuehrung wird beendet durch Eingabe eines Semikolon „;“. Die aktuelle Adresse wird als Endadresse uebernommen. Mit dem Kommando 'D :' kann der aktualisierte Speicherbereich nochmals auf dem Bildschirm angezeigt werden.
D aadr eadr (Display Memory)
Mit diesem Kommando koennen beliebige Speicherbereiche zwischen einer Anfangs- und einer Endadresse angezeigt werden. Die Anzeige des Bereiches zwischen FFF8 und FFFF ist mit dem D-Kommando nicht moeglich, dafuer muss das M-Kommando verwendet werden. Die Anzeige erfolgt zeilenweise in hexadezimaler Form. Zuerst wird die Adresse des jeweiligen Bereiches ausgegeben, danach folgen acht Byte des Speicherinhaltes, gefolgt von einer dreistelligen Pruefsumme. Es wird immer eine Zeile vollständig ausgegeben, auch wenn die Endadresse eine andere Anzahl von Bytes verlangt.
K aadr eadr bb (Kill)
Damit ist es moeglich, einen angegebenen Speicherbereich zu loeschen oder mit dem Byte bb zu fuellen. Wird das Kommando ohne Parameter verwendet, wird der gesamte adressierbare Speicher geloescht. Weiterarbeit ist dann nur nach Betaetigen der Resettaste moeglich.
T aadr zadr anz (Transfer)
Es erfolgt ein Transport eines Speicherbereiches ab der Anfangsadresse auf eine Zieladresse mit der festgelegten Anzahl von Bytes. Dabei ist eine Ueberlappung der beiden Bereiche moeglich
C adr1 adr2 anz (Compare)
Dieses Kommando wird genutzt, um zwei Speicherbereiche miteinander zu vergleichen. Sind die Speicherbereiche gleich, meldet sich wieder der Monitor. Bei Ungleichheit erfolgt eine Fehlerausschrift in der Form: aaaa xx bbbb yy, wobei aaaa und bbbb Adressen und xx und yy deren Byte inhalte darstellen, zwischen denen die Ungleichheit besteht. Mit Betaetigen der Entertaste wird der Vergleich fortgesetzt, eine andere Taste bricht den Vergleich ab.
F aadr anz aa bb cc .. (Find)
Ab der angegebenen Adresse soll eine bestimmte Anzahl aufeinanderfolgender Bytes im Speicher gesucht werden. Werden diese Bytes gefunden, erfolgt ein Uebergang zum M-Kommando, die Bytes koennen gelesen und/oder veraendert werden. Wird die Bytefolge nicht gefunden, erfolgt die Aussohrift „NOT FOUND“ auf dem Bildschirm.
Debugging
I (Initialisierung)
Es erfolgt ein Loeschen des Registerrette-Bereiches, so dass nach Programmstart mit dem E-Kommando die CPU-Register mit definierten Anfangswerten geladen (geloescht) werden. Der weitere Ablauf ist wie nach Betaetigen der Reset-Taste, es wird der Grundzustand des Mikrorechners hergestellt.
B hadr (Breakpoint-Haltepunkt)
Es wird eine Haltepunktadresse eingegeben. Diese Adresse muss im RAM-Bereich liegen und auf das erste Byte eines Befehles zeigen. Zur Kontrolle wird der eingetragene Haltepunkt BP.:…., die dort befindlichen Befehlsbytes BS.:…. sowie alle Registerinhalte angezeigt. Ein zu testendes Programm haelt beim Erreichen dieser Adresse an und gibt eine Reihe von Informationen aus. Das sind wieder die Haltepunktadresse sowie die ab dieser Adresse stehenden Befehlsbyte und alle Registerinhalte. Danach werden Monitorkommandos erwartet. Voraussetzung ist, dass die Haltepunktadresse auf das erste Byte eines Befehls zeigt.
E sadr (Execute)
Es wird ein Maschinenprogramm ab der eingegebenen Startadresse unter Beachtung einer eventuell eingegebenen Haltepunktadresse gestartet. Zu Beginn werden alle Register der CPU mit definierten Inhalten aus dem Registerrette-Bereich geladen. Mit Erreichen eines Haltepunktes werden die CPU-Register im Registerrette- Bereich gespeichert und in den Monitor verzweigt. Eine Programmfortsetzung des zu testenden Programmes kann auf mehreren Wegen erfolgen:
- Festlegen eines neuen Haltepunktes mit dem B-Kommando und Fortsetzung mit dem G-Kommando (siehe dort)
- Schrittweise Abarbeitung mit dem N-Kommando (s. d.)
- Fortsetzung mit dem G-Kommando ohne Neufestlegung eines Haltepunktes
G (Go)
Fortsetzung eines Programmes ab der Haltepunktadresse. Zuvor werden die geretteten CPU-Register wieder geladen. Das G-Kommando kann auch nach dem Schrittbetrieb gegeben werden. Wurde zuvor mit dem B-Kommando ein neuer Haltepunkt eingegeben, laeuft das zu testende Programm bis zu dieser neuen Haltepunktadresse.
N (Next)
Dieses Kommando veranlasst die Ausfuehrung genau eines Befehls des zu testenden Programmes (Schrittbetrieb). Das N-Kommando kann nur angewandt werden, wenn zuvor ein Haltepunkt gesetzt und das zu testende Programm mit dem E-Kommando gestartet wurde. Nach der Ausfuehrung des Befehls werden alle Registerinhalte gerettet. Angezeigt werden der Befehlszaehler, die abzuarbeitenden Befehlsbyte sowie alle Registerinhalte. Waehrend des Schrittbetriebes duerfen in dem zu testenden Programm keine der nachfolgenden Befehle auftreten:
'IM0', 'IM1' - Veraenderung im Interruptmodus 'LD I, A' - Veraenderung des Interruptvektors in der CPU 'DI' - Verbieten Interrupt
R rg/rg' (Register Display/Modify)
Mit diesem Kommando ist es moeglich, Inhalte beliebiger Doppelregister der CPU einschliesslich des Austauschregistersatzes anzuzeigen und zu veraendern, Nach Eingabe der Registerbezeichnung (AB, DC, DE, HL, IX, IY, PC, SP, AF', BC', DE', HL') wird der Inhalt des ausgewaehlten Doppelregisters ausgegeben und mit den Zeichen „#“ die Eingabe des neuen Wertes erwartet. Wird an Stelle einer Registerbezeichnung ein Doppelpunkt „:“ eingegeben, werden alle Registerinhalte angezeigt.
BP:XXXX BS:XXXXXX S Z C X X X SP:XXXX PC:XXXX IX:XXXX IY:XXXX AF:XXXX BC:XXXX DE:XXXX HL:XXXX AF:XXXX BC:XXXX DE:XXXX HL:XXXX'
Zu beachten ist, dass nur das S-, Z- und C-Flag einzeln angezeigt wird, die Belegung der anderen Flags ist dem AF-Register zu entnehmen.
Tastastur-Modus (nur 2.02)
A (Alphaumschaltung)
Schaltet die Tastatur wieder in den Grundzustand, sofern sie vorher mit dem Kommando „H“ umgeschaltet war.
H (Hexadezimalumschaltung)
Schaltet in der Tastaturkodetabelle die Zahlen 0 bis 9 sowie die entsprechenden Sonderzeichen in die Shiftebene 0, d. h. anstelle der Zeichen „H“ bis „Q“. Dadurch sind hexadezimale Eingaben ohne Benutzung der Shift-Taste moeglich.