THE TEMPELMANN MONITOR by Richard Karsmakers
Originally published in ST NEWS Volume 1 Issue 4, launched on
September 7th, 1986.
Recently, Thomas Tempelmann (E.-L.-Kirchnerstraße 25, D-2900
Oldenburg, West Germany) has written a nice utility program for
the ST. As some of you might know, Thomas was very active on the
Commodore 64 a while ago - he wrote some nice copy programs. We
sure are glad to hear that yet another computer whizkid has joined
the ST legions.
But now, let's review the program. It comes supplied in a folder
with four items, and it is public domain (at least, versions 1.x
are). Our version was version 1.3.
The concept is simple: he manipulated the routine that normally
prints out the screen (on ALTERNATE+HELP), so that is points to
his program - a machine language monitor. It offers nice touches,
like using wild cards and examining the whole memory. Just think
about the possibilities: you can now enter a program in memory any
time you want. Some programs, however, disable this function. A
few programs that do this: The Pawn and our Synth Samples.
After pressing ALTERNATE and HELP simultaneously, the screen
blanks and the monitor starts up, giving you some essential data
as well as a "!" prompt. This prompt lets you know that the
monitor is waiting for a command line. Below, you will find a
summary of all commands. In that summary, we will use these
conventions:
* All values must be given in hexadecimal notation, unless you
add "&", in which case you may use decimal notation.
* <f> means first address, <e> means ending address.
* <e> may also be replaced by: X<n> (number of bytes)
Z<n> (number of lines)
* With the commands M, D and I you may also replace <e> by a
point, which indicates endless display of memory.
* As address is also possible to specify the contents of a
specific register, like "! G ~A0".
* It is also allowed to exchange an address for the variable "O",
that can be given a value through the "O" command (see below).
* All listing can be paused by pressing the SPACE bar, whereas
they may be stopped completely by pressing any other key.
Here is the list of commands:
F1 Switch to monitor work screen
F2 Switch to original screen
M <f> <e> Memory dump
: <f> <w1> <w2>... Save words <w1>-<w..> from address <f>
D <f> <e> Disassemble memory
O <offs> Set the variable "O" to the value <offs>
C <f> <e> <d> Copy <f>-<e>-2 to <d>-(<d>+(<e>-<f>))
V <f> <e> <d> Verify memory (compare)
H <f> <e> <b1> <b2>..Hunts memory for bytes <b1>-<b..>. The
question mark may be used as wild card.
H <f> <e> '<string> Hunts memory for <string>. The question
mark may be used as wild card.
F <f> <e> <b1> <b2>..Fills memory with bytes (b1>-<b..>. The
question mark may be used as wild card.
F <f> <e> '<string> Fills memory with <string>. The question
mark may be used as a wild card.
I <f> <e> ASCII dump (Interrogate memory). Control
codes will be given in reverse.
' <f> <string> Puts string in memory from address <f>
B Indicates all breakpoints (BPs), with the
format <address>, <counter>, <standing>.
B <n> <a> <c> <c0> Sets BP number <n> to address <a>.
B- Disables all BPs.
A note to Breakpoints: These are set when
leaving the monitor, if the Trace bit in
SR isn't set (if not, the Tracefunction
will trace the BPs).
G <f> Go. Leave the monitor and go on at the
address specified by <f>.
GS <f> Calls a Subroutine. This routine has to
end with RTS to assure return to the
monitor!
T+ (or T-) Set Trace control mode on (or off). During
Trace, the following functions are
possible:
SPACE Execute specified instruction
ESC Leave Trace mode and enter the
monitor. Back with "!G"
T Toggle T-flag of SR of processor.
This can also be done in normal
monitor mode, by "!R FT=1" or
"!R FT=0". Only when this flag is
set, the monitor will keep control
over the executed instructions
O Turns of output and key input.
The program will continue, and has
to return to the monitor by a BP
A Just like "O", but in this case
all functions are traced (inclu-
ding TRAP routines, etc.), since
the trace bit is set each time.
During disk operation, or when the
Interrupt mask is set to 7, the
instruction will not be traced,
because the trace bit isn't set
R Turns off the input and output,
until a subprogram returns
Templemon also knows some quite advanced register operations, for
which we will use the following conventions:
* Registers (<reg>) may be specified by D0,A7,SR,PC,SSP,USP, etc.
* F is the same as SR
* A7 represents either the SSP or USP; this depends on the S-bit
of the SR (whether it is set or not)
R Displays the register that was specified
with "R:".
R <reg> = <l> Sets <reg> to the value <l>.
R: <reg1> <reg2>... Sets up default Register diplay (e.g. for
Trace).
R F<SR-Flag> = <v> Sets SR-flag to <v> (either 0 or 1). An
example: "!R FC=1" sets the carry-flag.
P Clears the screen
Q Quits (Gemdos(0))
The following commands are added in version 1.3 onwards:
S <filename>,<f> <e> Saves memory from <f> to <e>-1 in a file.
P <filename> Opens a protocol file. All output will then
be sent to the screen, but also to that
file. Example: "P PRN:" will send all
output to screen, but also to the printer.
PC Close protocol file.
Thomas Tempelmann is currently working on a professional version
of this program, on a ROM module. If you want to receive a full
user manual of the PD program, as well as a 40 DM bonus on the
purchase of that professional version, you should send DM 40 to
him (to the address mentioned earlier in this article).
Please note that the program may only be spread through public
domain if it is accompanied in a folder by a "read me"-file, and a
program called "TRACE.TOS" as well as that's C-source file! It may
be ordered through our public domain service (read all about that
in the article about our Reader's Service, elsewhere in this
bulletin).
Disclaimer
The text of the articles is identical to the originals like they appeared
in old ST NEWS issues. Please take into consideration that the author(s)
was (were) a lot younger and less responsible back then. So bad jokes,
bad English, youthful arrogance, insults, bravura, over-crediting and
tastelessness should be taken with at least a grain of salt. Any contact
and/or payment information, as well as deadlines/release dates of any
kind should be regarded as outdated. Due to the fact that these pages are
not actually contained in an Atari executable here, references to scroll
texts, featured demo screens and hidden articles may also be irrelevant.