CP/M Debugger

Overview of debugger distributed by Digital Research — and a version modified by me — including a list of implemented commands:
CommandDebugger →
↓ Function
DDT SID ZSID ZSID mod
?Help --- --- --- ?
AAssemble As {-}A{s} {-}A{s} {-}A{s}
BSearch --- --- --- B{"}s{"}
CCall --- Cs{b{,d}} Cs{b{,d}} Cs{b{,d}}
DDisplay D{s{,f}} {-}D{W}{s}{,f} {-}D{W}{s}{,f} {-}D{W}{s}{,f}
EExecution --- Epgm-file{,sym-file}--- Epgm-file{,sym-file}
FFill memory Fs,f,c Fs,f,d Fs,f,d Fs,f,d
GGo G{s{,b{,c}}} {-}G{p}{,a{,b}} {-}G{p}{,a{,b}}{-}G{p}{,a{,b}}
HHex --- H{a,b} H{a,b} H{a,b}
IInput line Ifilename{.typ}Icommand tail Icommand tail Icommand tail
LLists mnemonicsL{s{,f}} {-}L{s}{,f} {-}L{s}{,f} {-}L{s}{,f}
MMove Ms,f,d Ms,h,d Ms,h,d Ms,h,d
OOther bank --- --- --- O{b}
PPass point --- {-}P{p{,c}} {-}P{p{,c}} {-}P{p{,c}}
QQuit --- --- --- Q
RRead R{b} Rfilespec{,d} R{d} Rfilespec{,d}
SSet memory Ss S{W}s S{W}s S{W}s
TTrace T{n} {-}T{W}{n{,c}} {-}T{W}{n{,c}} {-}T{W}{n{,c}}
UUntrace U{n} {-}U{W}{n{,c}} {-}U{W}{n{,c}} {-}U{W}{n{,c}}
VValue --- V --- {-}U{W}{n{,c}}
WWrite --- --- --- Wfile,s,f
XExamine X{r} X{f}{r} X{f}{r} X{f}{r}

The debugger is used to examine a program loaded into the TPA, starting at 0x100. Also the debugger will be loaded into this area if it is requested.
Therefore the debugger must be moved into high memory below the BDOS first. Hence debuggers consist of two parts:
  1. A loader to move the debugger below the BDOS
  2. The debugger code followed by a bitmap for relocating the code
The debuggers support mnemonic input as well as output (commands A and L). Except for the DDT this part of code may be removed optionally so bigger programs can be loaded into memory.
In case of modifying the binary program code, it must be possible to write the new code to disc. This could be done by the built in command SAVE running CP/M 2. This command was not supported under CP/M 3 due to different CCP memory layout. But CP/M 3 made the RSX SAVE available which must be activated before running (Z)SID. After closing the debugger the RSX then asks for the start and end address of the code to be written to disc. To make handling easier I implemented the new command W.

Find notes about more debuggers here


Werner Cirsovius Compiled May 2010