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:
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.