SuperMonitor 1.4+ by Crown DOC file 24.07.93
------------------------------------------------
-+*+- Command Summary at the end in ENGLISH -+*+-
-+*+- Komplette Beschreibung der Befehle in DEUTSCH -+*+-
Diese Informationen sind an alle die gerichtet, die, aus welchen Gruenden
auch immer, ein Monitorprogramm gebrauchen koennen.
Ich denke sagen zu koennen, dass der SMon 1.4+ nun der weltweit beste Monitor
fuer den Cpc ist. Ich kann das aus gutem Gewissen sagen, denn mir ist kein
anderes Programm dieser Art bekannt, das zudem noch so gut waere.
Das mag nun etwas angeberisch klingen, aber es ist nun einmal Tatsache,
ausserdem ist der SuperMonitor nicht alleine auf meinem Mist gewachsen.
Der erste SMon 'SUPERMON CPC-1002' (geiler Name!) wurde 1985 von Volker Everts
fuer Happy Computer programmiert. 1986 hat sich dann ein gewisser Hackersoft
dran gemacht, ein erstes Update 'Profimonitor II' von diesem Tool zu machen.
1987 hat er den SMon auch noch durch die Moeglichkeit, den zweiten 64K Satz
zu benutzen, erweitert. Ungefaehr in der Zeit duerfte BSC auch seinen
'Supermonitor 2.0' rausgebracht haben, der wieder von der urspruenglichen
Version abstammt. Teufel nochmal, es muesste doch nicht mit rechten Dingen
zugehen, wenn es nicht moeglich waere, alle Vorteile der beiden Updates
miteinander zu vereinen und einen besseren SMon zu schaffen. Und so kam dann
von mir der SMon 1.2, der alle Vorteile der beiden existierenden Updates
miteinander vereint und ausserdem noch eine schnellere Textausgabe und ein
paar andere Dinge mehr hat. Aber der neue SMon ist von Grundauf neu
programmiert worden, denn sonst waere es nicht moeglich gewesen, all die neuen
Ideen umzusetzen, ohne wesentlich mehr Speicher zu verbrauchen. In der Tat
braucht diese letzte Version des SMon nur &0380 Bytes mehr als die Erste.
Einen Dank an dieser Stelle noch an BSC, der mir durch seinen Smon2.5 weitere
Ideen fuer diese Version geliefert hat.
Eigenschaften des SMon 1.4+:
- WICHTIG: Den SMon nicht abspeichern, nachdem er einmal aufgerufen
worden ist. Aus Speicherplatzgruenden arbeitet die Anpassung des SMon an
die verschiedenen Cpc Typen nur in einer Richtung, naemlich vom 6128 zum
664 oder 464. Ein einmal auf dem 664 oder 464 abgespeicherter SMon ist
auf dem 6128 nicht mehr lauffaehig.
- Der SMon sollte ausschliesslich durch RUN"SMON" gestartet werden, da
Basic Programme und sonstige Speicherinhalte erhalten bleiben.
Erneuter Aufruf nach verlassen des SMon mit ùSM
(weil ùM schon von einiger RomSoft genutzt wird.)
- Liegt der Himem bei Programmstart ueber den Codeanfang des SMon, wird er
auf das letzte Byte unterhalb des SMon korrigiert. Bitte entweder darauf
achten, dass keine Stringvariablen vorhanden sind oder Himem vor Laden
des SMons auf Werte unterhalb des Codeanfangs setzen, da die Strings
sonst beim Laden ueberschrieben werden.
- Der zweite 64K Satz wird als zusammenhaengender Speicher simuliert ohne
ihn zu veraendern.
- Roms werden beim ersten Start und beim Restart eingehaengt.
- Speed Key wird auf 8,1 gesetzt und die Tastenwiederholung fuer die
Return-Taste eingeschaltet.
- Der Farbeventblock wird ausgehaengt. Durch Aufruf der Mode Routine
(call &bc0e oder Mode-Befehl in Basic) kann der Farbeventblock bei
Bedarf wieder eingehaengt werden.
- SMon nutzt eine eigene Textausgabe und Hardrollroutine, die nach aussen
hin nicht existent sind.
- SMon nutzt den Speicher von 8C80 bis 9FFF, den Basicinputbuffer und den
freien Basicbereich von B0C8 bis B0FF.
Fuer Discoperationen wird der Bereich von 0800 bis 0FFF benutzt (CAT.)
- SMon nutzt die Zweitregister DE und HL und loescht Akku und Flags
des Zweitregistersatzes.
Garantiert wird:
- maximale Rechnerausnutzung
- hoechste Arbeitsgeschwindigkeit,
- absolute Fehlerfreiheit,
- automatische Adaption an alle alten Cpc Typen sowie Disc/Tape,
- optimale Zusammenarbeit mit dem BASIC/BIOS/DOS/OS,
- viele vielfaeltige Optionen,
- maximaler Bedienkomfort und
- schlichtes, ansprechendes Design bei
- geringst moeglichem Speicherplatzbedarf
Tip:
Probieren geht ueber studieren, wer weis das besser als ich?
Am besten lernt man die Bedienung kennen, indem man alles selber ausprobiert.
Die wichtigsten Informationen sind in diesem DOC File untergebracht,
man sollte also mit dieser Anleitung in der Lage sein, den SMON zu bedienen.
Update Infos v1.1
-----------------
- Kommando 'O' wurde entfernt, da identisch mit call &BC74.
- Der Piepston toent jetzt nur noch bei Fehleingaben.
- Mit der Taste CLR kann, wie in Protext, der Bildschirm geloescht werden.
- Die Anpassung an alle CPC-Typen ist aus dem Basicteil in den
Maschinenteil verlagert, somit entfaellt der Basicvorspann.
- Beim Programmstart ist sofort der MODE 2 aktiv.
- Die Textausgabe fuer den MODE 2 ist um das 2.3-fache beschleunigt.
- Fast alle Fehler der Disassembler-Option sind behoben worden.
Die Fehler waren: statt HALT wurde LD (HL),(HL) ausgegeben.
statt LD A,(nn) wurde LD HL,(nn) ausgegeben.
Illegale Befehle mit erstem Opcode &ED und zweitem
Opcode <&40 oder >&BF wurden inkorrekt ausgegeben.
Das Symbol fuer den illegalen Befehl '????' ist nun
auf drei Fragezeichen gekuerzt, und somit Standart.
- SuperMonitor 1.1 nutzt den Speicherbereich von 8000-8fff vollkommen aus.
Update Infos v1.2
-----------------
- Der SuperMonitor 1.2 besteht nur noch aus einem File, das einfach mit
RUN"SMon" geladen und gestartet wird.
- Der Monitor kann von Basic aus mit ùSM aufgerufen werden.
- Basic Programme bleiben erhalten, Variablen bleiben unveraendert,
ROM Erweiterungen koennen weiterhin genutzt werden.
- Der Himem wird automatisch korrigiert.
- Aber ACHTUNG: Arbeitet man an einer Sache, die die Benutzung von
Stringvariablen erfordert, sollte darauf geachtet werden dass der
HIMEM vor Laden des Programms unter &8DB0 liegt, da die Stringvariablen
sonst beim Laden ueberschrieben werden.
- SPEED KEY wird auf 10,1 gesetzt.
- Der SMON 1.2 liegt nun zwischen &8DB0 und &9FFF, also etwas hoeher, so
dass groessere Files bearbeitet werden koennen, es aber trotzdem
moeglich ist, an &A000 assemblierte Programme an ihrer Originaladresse
zu analysieren. Ausserdem wird der Bereich bis runter nach &A000 auch
von ROM-Erweiterungen benoetigt.
- Es ist nun moeglich, die zweiten 64K zu analysieren. Dazu braucht nur
die TAB-Taste gedrueckt zu werden, und schon befindet man sich in den
oberen vier RAM-Baenken. Dabei verhalten sich diese vier RAM-Baenke, die
ja eigentlich zwischen &4000 und &7FFF liegen, wie der normale Speicher
mit Adressen von &0000 bis &FFFF. Es kann nun mit den zweiten 64K alles das
gemacht werden, was auch im normalen Speicher moeglich ist, z.B.
Files Laden/Speichern, Kopieren usw.
- Ist der zweite RAM-Satz eingeschaltet, so stehen ein paar Kommandos zur
Verfuegung, mit denen vom 2.RAM Satz in den ersten, oder umgekehrt kopiert
werden kann. Mit der Taste
0 wird vom normalen in den 2.RAM Satz kopiert, und mit
1 ist das Umgekehrte moeglich.
Update Infos v1.3
-----------------
- Vollkommen neu programmiert und optimiert, daraus folgt ...
- Speed Ink wird nicht mehr veraendert.
- Befehl (, ), 0 und 1 entfernt, weil nutzlos.
- Befehl U ist jetzt die 'Save Current File' Option.
- Neuer Befehl C zum Vergleichen von Speicherbereichen.
- Neuer Befehl V fuer die Suche nach Grafikdaten.
- Neuer Befehl * zum Multiplizieren.
- Neuer Befehl E zum Suchen und Analysieren von Soundtrakker Modulen.
- Neuer Befehl P zum Abspielen von gefundenen Soundmodulen.
- Neuer Befehl O zum Ein/Ausschalten des Kassettenmotorrelais.
- Print Option erneuert. Befehl zum Drucken ist jetzt '?'.
- Textausgabe auf das Maximum beschleunigt.
Die Befehle Disassemble, ASCII Dump und Memory Dump werden im
unteren 64K Bereich mit einer Ausgabegeschwindigkeit von einer Zeile
pro Frame abgearbeitet. Die Ausgabegeschwindigkeit laesst sich mit den
Tasten '0' und '1' regulieren, dabei bedeutet
0 normal (1 Zeile/Frame bei Disassemble)
1 schnell (mehr als 2 Zeilen/Frame bei Disassemble)
- Befindet man sich in den oberen 64K, so haben die Tasten '0' und '1'
eine andere Bedeutung, durch
0 kann man vom oberen 64K Block in den unteren kopieren, also DOWN, durch
1 kann man vom unteren 64K Block in den oberen kopieren, also UP
- Fehler in der Disassemblierung entfernt: mehrfache &DD und &FD.
- Es werden alle Arten von Pseudobefehlen bei der Disassemblierung erkannt
(HL=IX / OUT (C),F / verschiedene Opcodes fuer den gleichen Befehl.)
Dabei bedeutet X das High- und x das Lowbyte dex IX Registers.
Entsprechendes gilt fuer das IY Register.
'???' erscheint also nur noch bei Befehlen, die equivalent zu NOP sind!
Es ist noch keine Darstellungsart fuer Pseudobefehle
"&DD (oder &FD), &CB, dd, &??" wobei &?? nicht &?6 oder &?e ist, bekannt,
also keine getrennte Darstellung dieser Pseudobefehle.
- Der SMon benutzt nur noch den Mode 2.
- Der Piepser ertoent nur noch bei einem BRK.
- Zugriffe auf obere 64K beschleunigt.
- Befehle haben neue Fehlerrueckmeldungen.
- RSX Aufruf verbessert.
- Kommando B zeigt evtl. vorhandenen BP an.
Update Infos v1.4
-----------------
- Weiter optimiert und debugged.
- L und Y zu L zusammengefasst und erneuert. Neue Meldungen fuer L.
- S und U zu S zusammengefasst und erneuert. Neue Meldungen fuer S.
- Y ist jetzt FIND TEXT Option.
- Neue Option N fuer MEMORY MAP.
- Neue Option Q fuer Disc Load/Save/Scan Operationen.
- O Option ist jetzt ç.
- W Option erneuert.
- T Option erneuert.
- Neue Fehlerrueckmeldungen.
- Fehler in D Option gefunden:
- Offsetberechnung bei indizierter Adressierung vorzeichenlos
- Offset und letzter Opcode bei DD/FD,CB vertauscht
- 64K Banking weiter beschleunigt.
Update Infos v1.4+
------------------
- Funktion 'U', 'F' und 'E' debugged.
- Druckoption debugged.
- Repeatfunktion statt Enter-Taste nun Return-Taste.
Beschreibung der Kommandos
--------------------------
A Ascii dump xxxx Start
Der Speicher wird in Textform angezeigt.
B Breakpoint xxxx Adresse
Setzt einen Breakpoint (BP). Wenn schon ein BP aktiv ist, wird der Alte
angezeigt. B bezieht sich immer auf die unteren 64K.
C Compare xxxx xxxx xxxx Start Ende Ziel
Zwei Speicherbereiche werden miteinander verglichen, dabei werden nicht
uebereinstimmende Adressen angezeigt.
D Diassemble xxxx Start
Der Speicher wird disassembliert.
E Examine for modules
Der Speicher wird nach neuen und alten Soundtrakker Modulen abgesucht.
Die verschiedenen Passes versuchen, ein Soundmodul auch dann zu finden,
wenn die urspruengliche Markierung entfernt worden ist.
Es wird die aktuelle und die richtige Startadresse angegeben, letzteres
in Klammern. Ein Soundmodul darf nur an seiner richtigen Startadresse
mit 'P' abgespielt werden, und natuerlich nur in den unteren 64K.
Da Sounds meist in den unteren 64K liegen, ist ein RAM-Schalter sehr
nuetzlich, um mit dem SMon auf die Jagd nach Modulen zu gehen. Das Demo
wird dann zuerst geladen, dann wird der Ram-Schalter umgelegt und der
Rechner ganz kurz aus- und wieder eingeschaltet, sollte er nicht ohnehin
abgestuerzt sein. Nun einfach Befehl 'E' im zweiten Speichersatz starten.
Ein Halt- und Resetschalter wuerden diesen Vorgang optimieren.
F Find xxxx xxxx xx xx xx xx Start Ende Byte1-4
Sucht im angegebenen Speicherbereich nach max. 4 zusammenhaengenden Bytes.
Dabei muessen die letzten Bytes nicht eingegeben werden.
G Go xxxx Adresse
Programm wird mit CALL aufgerufen, dabei werden die alten Registerwerte
vorher geladen. Die neuen Registerwerte werden anschliessen wieder
gespeichert und sind mit 'R' abrufbar.
G bezieht sich immer auf die unteren 64K.
H Header
Zeigt den aktuellen Fileheader an.
J Jump xxxx Adresse
Programm wird mit CALL angesprungen. Keine Registerbehandlung. J bezieht
sich immer auf die unteren 64K.
K Kill breakpoint
Breakpoint wird geloescht, falls vorhanden.
L Load text xxxx Name Adresse
Laedt ein File. Bei Leereingaben werden Daten aus Fileheader uebernommen.
M Memory dump xxxx Adresse
Zeigt Speicher in Hex und Textform an.
N memory map
Gibt eine Schnelluebersicht des Speichers an. Jedes Byte ungerader
Paritaet wird als einser Bit ausgegeben.
P Play module xxxx Adresse
Spielt ein gefundenes Soundmodul ab. Das Soundmodul muss sich dabei an
seiner richtigen Adresse befinden, was mit 'E' ueberprueft werden kann.
Betrieb nicht in den oberen 64K moeglich, deshalb muss ein gefundenes
Modul zuerst in den unteren Speicher runterkopiert werden.
P bezieht sich immer auf die unteren 64K.
Q disc operation ...
Zugriff auf FDC. Bei leerer Eingabe werden alte Werte uebernommen.
Zeigt Adresse, 9 Commandobytes und 7 Bytes aus der Resultphase an.
Q bezieht sich immer auf die unteren 64K.
R Register
Zeigt die Registerwerte nach einem GO oder BRK an.
S Save text xx xxxx xxxx xxxx Name Dateiart Start Ende Exek
Sichert einen Speicherbereich. Bei Leereingaben werden Daten aus Fileheader
uebernommen.
T Type text xxxx Adresse
Eingabe von Text in den Speicher. Mit den Cursortasten kann der Cursor
nach links oder rechts bewegt werden.
V View memory xxxx x Adresse Bildschirmmode
Speicher wird grafisch dargestellt, um ihn nach grafischen Objekten
absuchen zu koennen. Nach Beendigung wird die Adresse der linken oberen
Ecke angezeigt, ausserdem die Dimensionen in X und Y Richtung, die waehrend
der Darstellung mit SHIFT CURSOR variiert werden kann. Das Grafikfenster
kann bei der Darstellung mit den Cursortasten verschoben werden.
V Bezieht sich immer auf die unteren 64K.
W Write xxxx Adresse
Eingabe von Hex-Bytes in den Speicher. Bei Leereingabe wird das aktuelle Byte
uebersprungen. Zum schnellen Vorwaertsbewegen ist die Repeat-Funktion fuer
die Return-Taste eingeschaltet.
X copy xxxx xxxx xxxx Start Ende Ziel
Kopieren eines Speicherbereiches.
Y find text xxxx xxxx xxxx Start Ende Zeichen1-4
Sucht im angegebenen Speicherbereich nach max. 4 zusammenhaengenden Zeichen.
Dabei muessen die letzten Zeichen nicht eingegeben werden.
Z Zap xxxx xxxx xx Start Ende Fuellbyte
Speicherbereich fuellen.
! quit
Ruecksprung ins Basic.
? print
Um etwas auszudrucken muss erst '?' gedrueckt werden, dann Befehl eingeben.
Nicht moeglich, wenn Drucker ausgeschaltet.
^ offset xxxx xxxx Adresse Adresse
Berechnung eines Offset.
ù rsx
RSX Kommando eingeben. Keine Anfuehrungszeichen bei Parametern mit eingeben.
à catalogue
Katalog. Achtung: Bereich ab 0800 wird bei Disc zum Sortieren benutzt.
ç cas motor relais on/off
Schaltet das Kassettenmotorrelais ein/aus.
: rom xx Konfiguration
Rom-Konfiguration definieren: 00-FB = Rom Nummer
FC-FF = Upper/Lower ROM On/Off
+ add xxxx xxxx Zahl Zahl
Addieren.
- sub xxxx xxxx Zahl Zahl
Subtrahieren.
* mul xx xxxx Zahl Zahl
Multiplizieren.
. filter
Bit-7-Filter fuer Textausgaben ein-/ausschalten.
0 DOWN xxxx xxxx xxxx Start Ende Ziel
Bei aktivem 1.Ram: normale Textausgabe
Bei aktivem 2.Ram: vom oberen ins untere Ram kopieren.
1 UP xxxx xxxx xxxx Start Ende Ziel
Bei aktivem 1.Ram: schnelle Textausgabe
Bei aktivem 2.Ram: vom unteren ins obere Ram kopieren.
TAB toggle memory
Zwischen den beiden 64K Saetzen umschalten.
ESC break
Neustart des SMon. Notbremse. Roms werden eingehaengt.
CLR cls
Bildschirm loeschen.
Command Summary
---------------
A Ascii dump
B set Breakpoint
C Compare memory
D Disassemble
E Examine memory for soundtrakker modules
F Find
G Go program (registers preserved)
H fileHeader
J Jump program
K Kill breakpoint
L Load file
M Memory dump
N memory map
P Play soundmodule
Q disc operation
R Register
S Save file
T Type text to memory
V View memory
W Write hex to memory
X copy memory block
Y find text
Z Zap (fill) memory
! return to basic
? print (type ? and then the command to print out)
^ calculate offset
ù execute RSX command
à disc catalogue
ç cas motor relais on/off
: set ROM selection
+ addition
- substraction
* multiplication
. ignore bit7 during text-output on/off
0 if 1.RAM active then.. normal textspeed
1 if 1.RAM active then.. fast textspeed
0 if 2.RAM active then.. copy up
1 if 2.RAM active then.. copy down
TAB toggle between the two 64K RAMs (on 6128)
ESC restart SuperMonitor, emergency break
CLR clear screen