Beschreibung zum SUBMON-4.1D

Allgemeines

Im SUBMON können alle Eingaben in Groß- oder Kleinschreibung vorgenommen werden. Es ist egal, an welcher Stelle in einer Zeile die Befehlsbuchstaben oder Parameter stehen, es können also beliebig viele Leerzeichen getippt werden. Wichtig ist nur die Einhaltung der Reihenfolge bei der Eingabe (ausgenommen "/"- Optionen) sowie mindestens 1 Leerzeichen zwischen den Parametern, nach den Befehlszeichen muß keines stehen. Im SUBMON wird die Leertaste als Fortsetzungstaste ausgewertet, bei z.B. den Dump- Befehlen kann nur so die nächste Zeile angezeigt werden, jede andere bricht das Kommando ab.

Bei den meisten Befehlen, die eine listenartige Ausgabe auf dem Bildschirm erzeugen, kann durch Angabe der Option "/P" eine gleichzeitige Druckerausgabe eingeschaltet werden.

SUBMON lädt beim Starten automatisch seine Einstellungsdatei. Ist diese nicht vorhanden, werden Grundeinstellungen benutzt und als erste Meldung "Error." ausgegeben.

In der Befehlsreferenz bedeuten folgende Abkürzungen:

<PARx> ist ein x-stelliger Parameter, vorangestellt sein kann die mögliche Anzahl.
<AADR> Anfangsadresse
<EADR> Endadresse
<ZADR> Zieladresse
<PAGE> steht hier für die Nummer einer 64KByte- Pagesequenz, die mit dem P-Kommando eingegeben wird
Optionale Parameter, die das Kommando beeinflussen.
(..) im Klammern gesetztes kann optional angegeben werden
<FILENAME> Ein gültiger DOS-Dateiname (bis 8 Zeichen +"."+ bis 3 Zeichen Erweiterung), der genaue Aufbau kann in jedem DOS- Handbuch nachgelesen werden.

Maske> In einer Dateimaske können durch Jokerzeichen ("*", eine Gruppe von Zeichen) und Wildcards ("?", ein Zeichen) bestimmte Dateien bei der Anzeige bevorzugt bzw. ausgeschlossen werden. Im SUBMON kann diese Angabe ebenfalls Pfadangaben im jeweils DOS- gültigen Format enthalten. Alle Werte sind HEX-Zahlen, mit Ausnahme von z.B. der Wandlung DEZ -> HEX.

SUBMON ist resetfest und benutzt dazu den Cassettenvektor über $2,$3.

Für den SUBMON müssen folgende Speicherbereiche freigehalten werden: in der Zeropage von $80 bis $8F und im normalen Bereich von $480 bis $4FF. Die Bereiche von $500 bis $5FF und $3C0 bis $3FF werden zwar intern für den SUBMON benutzt, können aber temporär von eigenen Routinen genutzt werden. Genauso können die Display List sowie die für die Darstellung des Bildschirms notwendigen Daten (ab $BB88) überschrieben werden, da sie durch ein RESET restauriert werden. SUBMON verändert außer der DL-Adresse keine Interrupt- oder Systemadressen.

Für Dateioperationen wird der IOCB- Kanal 7 verwendet.

Zur Funktionsweise der RAM- Verwaltung: SUBMON unterstützt eine RAMDisk nach dem XE-Standard (über $D301 gesteuert). Grundlage ist, daß durch Einschreiben eines bestimmten Wertes in die Adresse $D301 eine zusätzliche 16KByte- Bank in den Adressbereich $4000-$7FFF eingeblendet wird. Die Größe der RAMDisk in KByte geteilt durch 16 ergibt die Anzahl der zur Ansteuerung aller Bänke notwendigen Werte. Diese zusammen ergeben wiederum eine Wertetabelle (im allgemeinen Pagesequenz genannt) zur Ansteuerung der gesamten Erweiterung. Diese Pagesequenz kann durch ein Testprogramm leicht herausgefunden werden, so sie nicht beim Einbau der Erweiterung bereits bekannt ist.

SUBMON kann aus dieser Pagesequenz immer 4 Werte zusammenfassen und so eine zusätzliche 64KByte- Bank logisch verwalten. Vom SUBMON werden bis zu 15 dieser Bänke in einer frei änderbaren Tabelle erfaßt (Anzeige mit Kommando "PL"). Durch Eingabe von P1 bis PF kann eine dieser Bänke eingeschalten werden. Mit dieser arbeitet SUBMON dann im folgenden bei allen speicherorientierten Befehlen. Bank 0 entspricht dabei dem normalen RAM. Wie im Listing (Eingabe PL) zu sehen, sind einige Werte für gebräuchliche RAM-Erweiterungen bereits vorbesetzt, diese sind aber jederzeit änderbar.

Wenn eine zusätzliche Bank eingeschalten ist, können in dieser die 64KByte komplett genutzt werden. So ist es möglich, z.B. Files mit Überlänge in eine andere 64KByte- Bank zu laden und zu bearbeiten. Angebracht sind allerdings Versuche mit Turbo 6000. Durch das notwendige Timingverhalten gerade beim Saven aus einer zusätzlichen 64KByte- Bank können sich Fehler einschleichen - aber sowieso sollte Turbo 6000 nur zum Laden benutzt werden, gesaved wird dann ohnehin meistens auf Diskette.

Hinweis: Da die 16KByte- Bänke logisch zusammengefaßt werden, sollte von GOTO´s in diesen Bereich abgesehen werden, genauso kann daher beim Fileexpandieren INIT und RUN nicht funktionieren. Die Stepfunktion ("E") dagegen kann genutzt werden. Zum Austesten großer Programme sollte daher eine Umschaltung in den Computer eingebaut werden, die den Adreßbereich verändert und 4 zusätzliche 16KByte- Bänke physisch zusammenschaltet. In diesem Fall kann SUBMON im normalen RAM laufen und das Programm im "2. Computer" (Informationen zu dieser Umschaltung gibt's über die TOP-CREW).

Zusätzliche Erklärung zu den Kommandos:

Kommandozeichen „+“:
Eingabe von bis zu 32 Zeichen Text- oder Grafikzeichen. Diese werden als ATASCII- Bytes in den Speicher ab der angegebenen Adresse abgelegt.

Kommandozeichen "-":
Entspricht dem "+"- Kommando, nur wird hier die Eingabe in SCREEN- Bytes abgelegt.

Kommandozeichen ".":
Ab der angegebenen Adresse können Assemblerbefehle eingegeben werden. Die Befehlsmnemonik entspricht den allgemein verbreiteten Vorgaben und enthält ebenfalls alle "verbotenen" Befehle des 6502- Prozessors. Der Assembler wandelt die Eingabe (nach Abschluß mit RETURN) in ein Standardformat um und zeigt dieses sofort an. Bei 2- und 3- Bytebefehlen können die Parameter als Dezimal- (#45, 45, 18756) oder als Hexwerte (#$45, $45, $1FA8) eingegeben werden. Alle Adressbezüge können auch relativ angegeben werden, z.B. STA +$1584 oder BNE -24, dabei wird von der derzeitigen Assemblieradresse ausgegangen und die entsprechende Zieladresse berechnet. Ebenfalls können die Parameter bei der Eingabe abgekürzt werden, z.B. funktioniert statt $0006 genauso $6. Zu beachten ist dabei, daß hier eventuell ungewollt aus einem 2- Byte- Befehl einer mit 3 Byte und umgekehrt werden kann.

Kommandozeichen ":":
Bei der Biteingabe müssen nach der Adressangabe 8 Zeichen stehen. Dabei steht ein "*" für ein gesetztes, "-" für ein ungesetztes Bit innerhalb eines Bytes.

Kommandozeichen ";":
Hier können nach der Adressangabe bis zu 8 Hexbytes in der Form 7C 98 A2 98 .. eingegeben werden. Genauso kann man gleich in einem Listing mit "M" Änderungen vornehmen. Zu beachten ist, daß in diesem Fall 8 HEX- Werte vor den dahinterstehenden ATASCII- oder SCREEN- Bytes stehen müssen, da SUBMON hier nicht unterscheiden kann, ob die Zeichen zu den HEX- Bytes gehören oder nicht.

Kommandozeichen ">":
Ein hier eingegebener FILENAME muß den Vorgaben entsprechen, die der jeweilige Gerätetreiber beschreibt. Der Name wird in die rechte obere Bildschirmecke nach der Markierung "FN:" eingetragen. Auf diesen Namen beziehen sich im folgenden die meisten Dateioperationen, wie z.B. die Kommandos "L", "S" oder "W". Zusätzlich zu den Standardgeräten stellt SUBMON den Treiber "T:" für Turbo 6000 bereit. Hier kann ein bis zu 20-stelliger Name folgen. Turbo 6000 unterstützt (bis auf das "L"- Kommando Fileexpandieren) alle Funktionen wie auch D: oder C:.

Kommandozeichen "<":
Mit diesem Kommando können häufig gebrauchte DUP- Befehle auch vom SUBMON ausgeführt werden. Die Eingabe muß aus einem Befehlsbuchstaben und einem Dateinamen bestehen. Möglich sind die Befehle "R" (Rename), "D" (Delete), "L" (Lock), "U" (Unlock) sowie "F" (Format). Beim Formatieren kann zusätzlich die Option "/S" für Singleformat angegeben werden. Die Befehle sind kompatibel zum DOS 2.5, inwieweit andere DOS- Versionen mit den internen Codes arbeiten, kann nur probiert werden. Im Sinne einer größtmöglichen Einsetzbarkeit von SUBMON wurde auf Spezialfunktionen wie z.B. von MyDOS verzichtet. Bei den getesteten DOS- Versionen ist es aber ohne weiteres möglich, mit dem Kommando "^D" ins DOS zu wechseln, dort Befehle auszuführen und mit einem RESET in den Monitor zurückzukehren.

Kommandozeichen "#":
Wandlung einer Dezimalzahl in eine Hexadezimalzahl. Dabei ist als Eingabe ein Wert bis 65535 möglich.

Kommandozeichen "$":
Wandlung einer Hexadezimalzahl in eine Dezimalzahl. Dabei ist als Eingabe ein Wert bis $FFFF möglich.

Kommandozeichen "1-8":
Directory von Diskettenlaufwerk 1-8. Dabei wird automatisch die Anzeigemaske "Dx:*.*" gesetzt. "x" ist die eingegebene Diskettennummer. Optional kann eine Maske angegeben werden, die dann "*.*" ersetzt. Es kann auch ein Pfadinhalt angezeigt werden, da die Länge für die optionale Maske nur durch das Betriebssystem (128 Bytes) begrenzt wird. Bei der Angabe der Option "/W" wird das Directory 2- spaltig angezeigt.

Kommandozeichen "^":
Dieser Befehl ist der Ausstieg aus SUBMON. Es kann zurück ins DUP (D), in einen Kaltstart (C) oder in den Selbsttest (S) gesprungen werden. Bei Anwendungs-programmen, die mit SUBMON zusammenarbeiten und diesen aufgerufen haben, kann mit "A" in dieses Programm zurückgekehrt werden.

Kommandozeichen "A":
Arithmetik mit 2 HEX- Werten. Die ausgeführten Operationen werden angezeigt.

Kommandozeichen "B":
Ab der angegebenen Adresse wird ein Bitdump erzeugt, zusätzlich wird das Byte als HEX- Wert angezeigt.

Kommandozeichen "C":
Es wird ein Speicherbereich (von-bis) mit einem Zielbereich auf Übereinstimmung verglichen. Der Zielbereich kann in einem anderen 64KByte- Segment liegen, wenn der optionale Parameter <PAGE> angegeben wurde. Dabei wird jede gefundene Unstimmigkeit zusammen mit der Pagesequenznummer angezeigt. Die Suche wird erst nach Drücken der Leertaste fortgesetzt, jede andere Taste unterbricht das Kommando (gilt in dieser Form bei fast allen List- Kommandos).

Kommandozeichen "D":
Es wird ein Assemblerlisting ab der angegebenen Adresse erzeugt.

Kommandozeichen "E":
Ab der angegebenen Adresse wird ein Stepbetrieb ausgeführt, d.h., es wird jeder Befehl im Gegensatz zum Kommando "D" nicht nur angezeigt, sondern auch ausgeführt. Zur besseren Übersichtlichkeit werden hierbei die HEX- Werte weggelassen, dafür werden die Werte der Register und der Stack angezeigt. In jeder Zeile wird zunächst der Assemblerausdruck angezeigt, nach der Bestätigung mit der Leertaste wird er ausgeführt und die Register- und Stackwerte werden gelistet. Zusätzlich zur Leertaste kann die Tabulatortaste benutzt werden, um z.B. Unterprogramme schneller abzuarbeiten. Das Prinzip ist einfach: Nach Drücken von TAB werden die Befehle solange automatisch (ohne Listing) ausgeführt, bis der Stackzeiger wieder gleich dem Wert vor dem TAB ist. Es kann also auch statt der Leertaste gleich die TAB- Taste benutzt werden, Unterprogramme (Betriebssystem) müssen dann nicht einzeln "durchgestept" werden. Da die Abarbeitung der Einzelbefehle aber trotzdem vom SUBMON vorgenommen wird, kann die Ausführung eines Unterprogrammes wesentlich länger dauern als mit einem GOTO. Eine Einschränkung muß beachtet werden: Da für den Stepbetrieb der normale CPU- Stack mitbenutzt wird, darf der Stackzeiger im Stepbetrieb nicht kleiner als $40 werden.
Hinweis: Auch in einem anderen 64KByte- Segment kann der Stepbetrieb (im Gegensatz zum GOTO) ausgeführt werden.

Kommandozeichen "F":
Es wird ein Speicherbereich (von-bis) mit bestimmten Werten gefüllt. Dabei gilt: Wird außer dem Adreßbereich kein weiterer Parameter eingegeben, wird mit 0 gefüllt, sonst mit den angegebenen Werten. Es sind hierbei bis zu 8 Werte möglich, mit denen der Speicher fortlaufend gefüllt wird.

Kommandozeichen "G":
Mit GOTO wird ein Maschinenprogramm, daß sich im Speicher ab der angegebenen Adresse befindet, ausgeführt. Im allgemeinen sollte dieses mit RTS beendet werden.
Hinweis: In einem anderen 64KByte- Segment sollte kein GOTO ausgeführt werden, da die einzelnen 16KByte- Bänke nur logisch zusammengefaßt sind und nicht vorausgesetzt werden kann, daß bei Maschinenprogrammen, die über eine Bankgrenze hinausgehen, diese auch wirklich physisch zusammenhängend durch die Pagesequenz angegeben sind.

Kommandozeichen "H":
Mit dem Befehl "H" wird in einem bestimmten Speicherbereich (von-bis) nach einer Bytefolge gesucht. Diese kann aus 1 bis 8 HEX- Werten bestehen. Bei jeder Übereinstimmung wird diese Adresse angezeigt. Mit der Leertaste kann die Suche fortgesetzt werden.

Kommandozeichen "I":
Es wird ein ATASCII- Dump ab der angegebenen Adresse erzeugt. Bei Angabe der Option "/R" wird eine Zeile nur bis zu einem eventuell vorhandenen EOL- Zeichen ($9B) ausgegeben, damit lassen sich Texte wesentlich einfacher betrachten.

Kommandozeichen "J":
Wie "I", nur wird hier ein SCREEN- Dump erzeugt.

Kommandozeichen "L":
Über das Kommando "L" können fast alle LOAD- Funktionen von SUBMON ausgeführt werden.
Voraussetzung ist, daß ein gültiges Gerät sowie ein eventueller Dateiname mit dem ">"- Kommando eingegeben wurde.
Mit "L" ohne Parameter wird ein File im Diskettenformat in den Speicher an die im File stehenden Adressen geladen, d.h., daß z.B. ein ausführbares Programm gleich an die Stellen im Speicher geladen wird, wo es auch beim Laden aus dem DUP heraus stehen würde. Wird die Option "/A" angegeben, werden diese Adressbereiche aufgelistet, die bei diesem Befehl noch möglichen Optionen bleiben wirkungslos. Beim Laden des Files wird jeder einzelne Schritt abgefragt und muß mit der Leertaste bestätigt werden. ESC bricht den Befehl komplett ab, jede andere Taste verbietet lediglich die Ausführung dieses einen Schrittes. Natürlich können diese Abfragen einzeln ausgeschalten werden. Dabei verhindert "/L" die Abfrage vor dem Laden in den Speicher, mit "/I" gibt es keine Abfrage vor einem INIT, "/R" erlaubt die Ausführung des RUN ohne Nachfrage. Zu beachten ist, daß dieser Befehl zwar genauso in einem zusätzlichen 64KByte- Segment funktioniert, hier aber kein INIT oder RUN ausgeführt werden sollte (siehe GOTO).
"L" mit einem Parameter (AADR) lädt ein File ab der angegebenen Adresse in den Speicher, und zwar bis zum Dateiende. Mit einem 2. Parameter kann die Anzahl der zu ladenden Bytes angegeben werden. Wird der 3. Parameter angegeben, hängt es vom jeweiligen Gerätetreiber ab, welche Funktion ausgeführt wird. Bei C: wird erst ab diesem Block (PAR4=Nummer) direkt in den Speicher geladen, bei D: gibt der Parameter die Sektornummer an, ab der geladen werden soll. Dieser Startsektor bezeichnet einen Sektor innerhalb der physisch auf der Diskette vorhandenen Reihenfolge. Mit der Option "/S" kann (ähnlich C:) ab einem Sektor geladen werden, der sich auf die Reihenfolge innerhalb der Datei bezieht.
Mit der Option "/D" können Disketten im Doubleformat gelesen werden. Die Option "/@" gibt es nur beim Gerät T:. Hier besteht ein File im Allgemeinen aus einem Vorspann, der den Namen sowie die zu ladenden Adressen beinhaltet. Ist dieser nicht vorhanden oder soll er nicht beachtet werden, kann mit Option "/@" dieser Vorspann ignoriert werden, geladen wird nur das Hauptfile. Bei mehrteiligen Turbo- Files z.B. muß diese Option angewandt werden.

Kommandozeichen "M":
Mit diesem Befehl kann ein HEX- Dump ab AADR erzeugt werden. Dabei werden 8 Werte sowie die entsprechenden ATASCII- Zeichen angezeigt. Mit der Option "/S" werden statt ATASCII SCREEN- Bytes dargestellt.

Kommandozeichen "P":
Dieses Kommando hat mehrere Bedeutungen. Ohne Angabe von Parametern wird der Motor des Cassettenlaufwerkes ein- und ausgeschalten.
Gibt man als Parameter "L" an, werden die aktuelle Pagesequenz sowie die daraus resultierenden 64KByte- Segmente aufgelistet. Mit den Parametern 0-F kann eines dieser 64KByte- Segmente eingeschaltet werden. Dabei bezeichnet 0 den normalen Speicher, der im Normalfall nicht aus einer RAMDISK besteht. In diesem RAM- Bereich befindet sich auch SUBMON selbst. Um eine 64KByte- Bank umzudefinieren, gibt man als Parameter die Nummer dieser Bank (1-F) an, gefolgt von 4 HEX- Werten. Genauso kann man auch nach dem Listing (mit Parameter "L") gleich auf die entsprechende Stelle gehen und hier die Änderungen vornehmen.
Hinweis: Das korrekte Funktionieren von SUBMON bei allen speicherorientierten Befehlen (+,-,.,:,;,B,C,D,E..) bei eingeschalteter RAM- Bank 1-F setzt voraus, daß die eigene RAMDISK- Pagesequenz bekannt ist und auch so eingegeben wurde.

Kommandozeichen "Q":
Hier wird die Quersumme über den angegebenen Bereich berechnet (Addition aller Werte). Angezeigt wird dieser Wert sowie die Anzahl der Bytes.

Kommandozeichen "R":
Mit diesem Kommando können die CPU- Register mit ihren Inhalten angezeigt werden, wenn "R" ohne weitere Parameter eingegeben wird. Zum Ändern eines Registers oder Flags muß der Buchstabe für das Register/Flag sowie ein HEX- Wert für den neuen Inhalt angegeben werden (Ohne HEX- Wert wird das Register/Flag auf 0 gesetzt). Als Register stehen zur Verfügung: A,X,Y,S,F (letzteres beeinflußt das Flagregister insgesamt). Zum Ändern eines Flags kann N,V,B,D,I,C oder Z verwendet werden.

Kommandozeichen "S":
Mit diesem Kommando können fast alle SAVE- Funktionen von SUBMON angesprochen werden. Dabei sind die beim Kommando "L" gegebenen Hinweise zu beachten. Gesaved wird immer ein Adreßbereich von-bis. Dabei bezeichnet die EADR in diesem Fall das Ende des zu savenden Bereiches+1! Bei Angabe des 3. Parameters wird auch hier wie beim Kommando "L" die Sektornummer (physische Reihenfolge der Diskette) bezeichnet. Genauso kann mit Option "/D" auf Doubleformat umgeschaltet werden. Mit Option "/A" wird der zu savende Bereich an ein bestehendes File angehängt (nur Diskette).

Kommandozeichen "T":
Über diese Funktion können Speicherbereiche kopiert werden. Ohne Angabe des 4. Parameters bezieht sich der Transport immer auf das aktuell eingestellte 64KByte- Segment, mit dem 4. Parameter wird in diese Page kopiert. Natürlich dürfen sich die Anfangs- und Endbereiche überlappen, der zu kopierende Bereich bleibt immer erhalten.

Kommandozeichen "V":
Die Monitoreinstellungen werden mit dem Parameter "L" geladen bzw. mit "S" gesichert. Wird kein Dateiname angegeben, wird ein Standardname benutzt (diese Datei versucht SUBMON auch nach dem Starten zu laden) und vom aktuell eingestellten Laufwerk geladen/gesichert. Verwendet man eigene Dateinamen, können beliebig viele Einstellungsdateien angelegt werden. Die Einstellungen beziehen sich im Wesentlichen auf die Werte für Pagesequenz, Farbe und Tastatur.

Kommandozeichen "W":
Mit dieser Funktion kann ein Speicherbereich als HEX- Dump (siehe "M") in eine Datei (oder Gerät) geschrieben werden. Diese Datei kann z.B. in einen Assembler weiterverwendet werden. Die Werte werden ohne den Parameter "/K" mit vorangestellten "$" sowie mit Komma als Trennung gesaved. Mit dem Parameter "/K" wird eine verkürzte Schreibweise erzeugt, ohne "$" und ",". Bei beiden Möglichkeiten werden jeweils 8 Byte in eine Zeile geschrieben.

Kommandozeichen "X":
Hier besteht die Möglichkeit, mit dem 1. Parameter die Schrifthelligkeit, mit dem 2. die Hintergrundfarbe sowie mit dem letzten Parameter die Rahmenfarbe zu beeinflussen.

Kommandozeichen "Y":
Diese Funktion paßt die Tastatur an die eigenen Wünsche an. Dabei gibt der 1. Parameter die Wartezeit an, bis die Tastaturwiederholung einsetzt, der 2. Parameter beeinflußt die Geschwindigkeit der Wiederholung.

Kommandozeichen "Z":
Mit diesem Kommando werden werden die Normalwerte für Farbe und Tastatur, wie sie bei der Erstinstallation oder dem Laden vom SUBMON ohne Konfigurationsdatei aktuell sind, wiederhergestellt.