home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
BEEHIVE
/
ZCAT
/
DDTZ.LBR
/
DDTZ.DQC
/
DDTZ.DOC
Wrap
Text File
|
2000-06-30
|
8KB
|
182 lines
DDTZ v2.5 is a rework of DDTY 2.2.5 for improved functionality, bug
extermination, and complete Z80 support. In general DDTZ is compat-
ible with Digital Researchs DDT, but has added and extended commands
and many fewer bugs. All Z80 instructions can be dis/assembled.
DDTZ will correctly trace (T and U commands) both Z80 and 8080 instr-
uctions, depending on what CPU is executing.
DDTZ v2.5M is a variant with commands compatible with the Microsoft
PC/MSDOS DEBUG program. The "Untrace" command is replaced by the
"Unassemble" command, and other commands are renamed. See below.
This is designed to prevent foul-ups when switching between the
MSDOS and CPM systems. The only differences between DDTZ and the
"M" version are in the command transfer table and sign-on message.
If you use this I suggest renaming it to be "DEBUG".
DDTY v2.5 is an assembly time option for DDTZ, which eliminates the
Z80 opcodes on the A and L commands. It will still trace Z80 code
correctly. Useful where disk space is short.
As did the DR version, when a program is loaded above the area
holding the A and L (and now K) command code, these commands are
disabled and the memory released to the user. Thus DDTZ can use as
little as 3k total memory space. Unlike the original, DDTZ will not
overwrite itself on program loads (except hex files).
All input parameters can be supplied as any one of:
a. hexadecimal (as original)
b. decimal, with a leading '#' character
c. Character, by enclosing in either single
or double quotes. One or two chars allowed.
Leading blanks are absorbed. The comma is a valid delimiter.
Lower case input is accepted.
The default command (for anything not otherwise recognizable) is the
"H" command. This allows convenient calculation, with the other
features described below. To convert a number, just enter it.
New Commands (over DDT) (Parenthized names are for DDTZ xxM)
=======================
@ Sets or shows (with no parameter) the internally stored
"base" value. This is used with the S and D commands to
display memory from an arbitrary base marker. When zero
(the default) it does not affect any displays.
B Begin. resets the USER stack pointer to its initial value,
such that a program that exits by a RET will return to DDTZ.
DDTZ provides a default stack space of approximately 24
bytes to user programs.
C Compare first_address,last_address,against_address.
Shows all differences between two memory areas.
K Keep the modified memory area in the file specified by the
(W) I command, or to the original file from which it was loaded.
By default, memory from 0100h through the "next" value -1
is saved. K first_address,last_address overrides this
default, and allows writing any memory area to a file. If
the destination file exists the user is queried before
over-writing it. Almost a necessity for CPM 3.0 (no SAVE).
Q Query. Re-displays the "NEXT PC SAVE" display at any time.
(X)
W Where first_address, last_address, value. Searches the
(S) specified area for the value (a 16 bit value, not a byte)
and shows the location of all such. Very useful for finding
calls or jmps to a particular address, etc.
Y ?? name. Executes an arbitrary routine as a DDTZ command.
"Y parm1, parm2, address" executes the routine at "address"
with the bc and de registers set to parm1 and parm2 resp.
Z Displays (but does not alter) the auxiliary Z80 only regis-
ter set, including index registers. Automatically disabled
if running on an 8080. On Z80's this is automatically
executed as the last portion of the X <cr> command.
Based Displays
==============
The D)ump and S)ubstitute commands use the stored base value (set by
the @ command). The current @ value may be over-ridden for any single
execution by an extra parameter in the command line. The effect is to
add the base value to the start/end limits, and display accordingly.
The address display becomes XXXX:YYYY where XXXX is the offset value,
and YYYY is the actual memory address being used. For example, if you
have a data area at location 4237h, and wish to preserve easy access,
set "@4237". Now "d0,3f" will show values starting at 4237.
Further changes from DR's DDT (Parenthized names for DDTZ x.xM)
=============================
D D)isplay can accept an optional third parameter to set the
"base" value for the one execution only. Format cleaned up.
H H(ex) value1 value2 command also shows difference in decimal.
Can be used as handy hex/decimal/hex converter. H(ex) value1
(no 2nd parameter) converts to hex, decimal, and character
(1 char only)
I The I)nput command allows the use of drive specifiers, and sets
(N) up the complete command line including the 2nd FCB at location
6ch up. Note that the command lines may be in lower case.
L L)ist command displays the raw code bytes. Especially handy
(U) when examining non-code areas. "Unassemble" on the M version
R When reading a hex file with a bias, the R command will not
(L) transfer control to an invalid execution point. An execution
of the R command can re-read the input file. e.g.
i blah
r
modify the code and generally mess about
r
and the modifications are removed.
LOAD command on the M version
S S)ubstitute, like D)isplay, accepts an optional 2nd parameter
(E) to set the "base" value for the one execution only.
E)nter command on the M version.
X X)amine registers. Shows what the HL and SP registers are
(R) pointing to. On Z80's shows the auxiliary register set.
R)egister command on the M version.
NOTE
Any use of the R or K commands resets the system DMA
transfer address to the standard default value of 0080h.
At initialization the user (sp) value points to a return to DDT, just
like CCP. Thus programs that <ret> to CCP will return to DDT in this
system. The B(egin) command re-initializes this.
Trap/trace termination now shows the CPU state. Traps and tracing no
longer lock up when a user RST 7 instruction is executed.
Tracing of BDOS/BIOS calls is heavily truncated, avoiding clutter and
preventing system crashes.
Loads of files (except hex files) are protected against overwriting
DDT and/or system code. The report after program load includes the
decimal "SAVE" value, and may be re-evoked by Q)uery ("eXamine" on the
M version) command.
Intercept vector copies BDOS serial etc, so an object program does not
know that DDTZ is in use (except for BIOS-BDOS vector size). Thus
programs that check the serial number will execute correctly under DDTZ.
Command summary: (parenthised letters for the "M" version)
* indicates command not available in M version
** indicates command only available in M version
@)Set base
a)ssemble first
b)egin (* i.e. initialize stack & return *)
c)ompare first,last,against
d)ump first,last,(base)
f)ill first,last,value
g)oto address, trap1, trap2
h)exarith valu1, valu2
(N) i)nitialize tfcb_commandline
(W) k)keep first,last
(U) l)istcode first,last
m)ove first,last,destination
(X) q)uery (* memory used for application *)
(L) r)ead_from_file [offset]
(E) s)ubstitute_in_memory first_address,(base)
t)race_execution [count]
* u)ntrace_execution [count] (* quiet *)
(S) w)here first,last,value
(R) x)amine_change [register]
y)bc := p1; de := p2; execute (p3)
z)80 register display
(Q) ** quit ("M version only). Equivalent to CNTL-C
C.B. Falconer
:┤