Trailing-Edge
-
PDP-10 Archives
-
BB-H311D-RM
-
documentation/ddt-info.memos
There is 1 other file named ddt-info.memos in the archive. Click here to see a list.
This file contains the following:
DDT41.MEM - user guide to DDT version 41
DDT41A.DOC - changes for DDT version 41A
DDT43.HLP - discussion of features of DDT version 43
DDT41.MEM - DDT %41(260) Users Guide to New Features Page 1
Copyright (C) 1978, 1979
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copyed
only in accordance with the terms of such license and with the inclu-
sion of the above copyright notice. This software or any other copies
thereof may not be provided or otherwise made available to any other
person. No title to and ownership of the software is hereby trans-
ferred.
The information in this software is subject to change without notice
and should not be construed as a commitment by Digital Equipment Cor-
poration.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
DDT41 - DDT %41(260) Users Guide to New Features Page 2
Introduction and Overview
1.0 Introduction and Overview
This document is designed as a users guide to DDT version 41 in so far
as it has changed from previous versions of DDT. It is not a complete
users guide to all the wonders of DDT, just those new features which
have recently been implemented (although directed primarily at new
features only in DDT version 41, some documentation is included to
describe other aspects of DDT which have been around for a longer
period of time, but were never fully understood or otherwise
documented).
Throughout this document it is assumed that the reader is already
familiar with DDT and the MACRO assembly language in general as well
as the appropriate operating system(s).
This is the first revision of this document, incorporating the addi-
tional changes to DDT version 41 as of edit 260.
2.0 Configurations
DDT version 41 will run on KA-10's, KI-10's, KL-10's, and KS-10's,
using no paging, KI-paging, or KL-paging, with or without extended
addressing in user or executive mode (user and file DDT's run only in
user mode) with no special assembly needed. DDT version 41 must be
assembled to run under either the TOPS-10 or the TOPS-20 operating
system.
It traditionally has been a goal to maintain one single set of source
files from which all flavors of DDT are built. This goal has been
maintained.
Note
TOPS-20 UDDT (and SDDT) now use memory locations 764000
through 777777 (previously 770000 through 777777), but the
starting address for DDT continues to be location 770000.
This requires version 4 of the PA1050 "compatibility pack-
age".
3.0 Memory and Address Control
The single biggest change to DDT version 41 from earlier versions is
in the realm of memory control and how the user addresses memory loca-
tions.
3.1 Extended addressing
All flavors of DDT except FILDDT will run in any memory section. Full
extended addressing is supported, as are "large" addresses - DDT will
now accept a full 36-bit expression as an address although obviously
only FILDDT can actually handle an address over 30-bits wide. In all
cases the actual address must be positive (i.e., effectively a 35-bit
address).
DDT41 - DDT %41(260) Users Guide to New Features Page 3
Memory and Address Control
3.1.1 Symbol table restrictions
There are certain restrictions however which must be adhered to in
order for DDT to function correctly. The first restriction is that the
symbol table logic is essentially section-dependent, i.e., the symbol
table and its pointers (.JBSYM=116 and .JBUSY=117, also .JBHSM=6 rela-
tive to the start of the "high segment") must reside (i.e., be mapped)
in the same section as that in which DDT itself is running. Further,
the symbol table can be no longer than 128K words in length and must
be RADIX-50 format.
Much thought is being given towards the implementation of a totally
new symbol table scheme which would address all of these problems, the
single biggest one of which is simply how is extended addressing going
to be used - as a single fixed address space with one or more "global"
symbol tables (like the TOPS-20 monitor currently works), or as a
collection of independent sections each of which has section-local
symbols/symbol tables (whatever that means), or what?
3.1.2 Breakpoint restrictions
The second restriction of which the user must be aware concerns
breakpoints. Since the hardware has no facility to unconditionally
transfer control to DDT using only 36-bits, DDT must be mapped into
each section (at the same relative address obviously) which contains
code into which the user wishes to place breakpoints.
3.1.3 Location examining restrictions
Even if running on an extended addressing machine if DDT is running in
section 0, then only locations within section 0 (addresses 0 to
777777) may be manipulated. DDT will make no effort to outsmart the
combined efforts of the user and the operating system by sneaking into
a non-zero section even momentarily to do the memory reference.
3.2 Effective address calculation
DDT version 41 can calculate effective address references using either
"local" or IFIW (Instruction Format Indirect Word) or "global" or EFIW
(Extended Format Indirect Word) formats. In a normal DDT address-open-
ing command ("/", "\", <TAB>, etc.) a single <ESC> delimiting the
address expression (e.g., "MOVE 3,@200(10)$/" or just "$[") instructs
DDT to treat the expression as an IFIW word and calculate the effec-
tive address exactly like the hardware would, were the hardware to
execute that 36-bit word as an instruction at location "." (whether or
not location "." is currently open).
Two <ESC>'s delimiting the address expression instructs DDT to treat
the 36-bit expression as an EFIW word and calculate the effective
address exactly as the hardware would, were the hardware to indirectly
address the 36-bit expression at location "." (whether or not location
"." is currently open). A strange case can come up about which the
user should be cautioned - there is an ambiguity as to where (i.e.,
what "section") to start the effective address calculation. DDT as-
sumes the left half of "." (i.e., the last location opened by the
user). If for example having opened location 0,,1234 which contains
7,,4321 the user issues the command "$$[" then DDT will calulate the
effective address as the contents of location 4321 in section 0
indexed by the right half of register 7, and if bit 13 is on, treating
DDT41 - DDT %41(260) Users Guide to New Features Page 4
Memory and Address Control
that word as an IFIW and continuing the address calculation. This,
although probably not what was expected, is in fact exactly what the
hardware would do since the indirect word came from section 0. Had the
user opened location 1,,1234 (containing 7,,4321) then DDT would take
the contents of location 7004321 and continue from there.
If no <ESC>'s delimit the address expression, then DDT simply uses the
full 36-bit expression as the address (e.g., "30,,30/" says open loca-
tion 30000030 and "-1/" says open location 777777777777). Again, only
FILDDT can actually reference an address greater than 30-bits wide
(not that anyone has that much disk space, but the hardware will not
permit an address space over 30-bits wide), and in any case the ad-
dress must be a non-negative 36-bit integer.
There is a special case in which DDT does something "kinky" - if a
space was typed in entering the address expression, or if no explicit
address was typed (i.e., the user is using the "last word typed" by
simply typing only (for example) <TAB>), DDT will form the 36-bit
actual address by using only the right half of the 36-bit address
expression plus the left half of "." as the section number. This not-
at-all-obvious behavior is so that the user can type in expressions
such as "JRST PAT<TAB>" and have DDT go to location PAT in the same
section as the JRST PAT instruction rather than going to address
254000000000+(PAT modulo 2**18). Another common usage of this "fea-
ture" would be in chaining down linked lists where the link pointer is
an 18-bit section-local address in the left half of a word. To do this
the user may type "sp$$Q/" (where "sp" means space). This is one of
those cases where usefullness outweighs cleanliness of implementation
and documentation.
3.3 Modifying memory
Two new commands have been added to facilitate DDT's manipulation of
the user address space.
3.3.1 Automatic write-enable
The $W or $0W command instructs DDT to, if the user attempts to depos-
it into a write-protected memory location, automatically attempt to
write-enable the memory location, do the memory deposit, then finally
re-write-protect the memory location (default for TOPS-10); the $$W or
$$0W command instructs DDT to simply give an error indication if the
user attempts to change a write-protected memory location (default for
TOPS-20). For FILDDT the use of this command is restricted to non-file
usage such as "DDT'ing" the running monitor/memory space.
3.3.2 Automatic page-creation
The $1W command instructs DDT to automatically try to create the page
the user is trying to deposit into if it doesn't already exist (de-
fault for TOPS-20); the $$1W command instructs DDT to simply give an
error indication if the user attempts to write into a non-existant
page (default for TOPS-10). EDDT and FILDDT doing super I/O or
"DDT'ing" an .EXE file will NEVER attempt to create a non-existant
page. For FILDDT the user must specify patching the file when he
starts FILDDT in order to be able to create new pages (e.g., extend
the file or fill in a gap in the middle of the file (TOPS-20 only)).
DDT41 - DDT %41(260) Users Guide to New Features Page 5
Memory and Address Control
3.4 Page mapping and physical addressing
In DDT version 41 all flavors of DDT support page mapping and address
relocation as well as register and physical address manipulation. All
of these functions use some variation of the $U/$$U DDT command. In
general these functions may be mixed together (for example address
relocation and page mapping).
*** Warning ***
The $U command syntax in DDT is totally different (and main-
ly incompatible) from previous versions of DDT! The user is
MOST strongly urged to carefully read this section on memory
mapping and addressing!
3.4.1 Physical addressing
DDT now has the concept of "physical" addressing in addition to its
normal "virtual" addressing. The $U command instructs DDT to use nor-
mal virtual addressing (what it used to do); the $$U command instructs
DDT to manually track down the honest physical address rather than the
virtual address space in which DDT finds itself running. Physical ad-
dressing is really applicable only to EDDT or to FILDDT looking at
running monitor/memory (TOPS-10 only). User mode DDT (including EDDT
running in user mode, MDDT (TOPS-20 only), and VMDDT (TOPS-10 only))
and FILDDT looking at a disk all treat $U and $$U identically. In
physical addressing location 0 is not register 0 (i.e., DDT's internal
copy of user register 0) but rather physical memory location 0 page 0
bank 0 box 0 (that memory location on the hardware memory bus that
responds to all address bits = 0).
When the $$U DDT command is issued "physical" locations 0 to 17 become
"registers" 0 to 17. For user mode DDT this means locations 0 to 17
become DDT's registers rather than the user's registers (although the
user's registers will be properly restored on DDT-exit, $$U merely
directs DDT not to use the internal "fake" (i.e., user) registers).
For FILDDT this means file words 0 to 17 (as mapped by the .EXE
directory if used) become locations 0 to 17 (normal for a data file).
Subsequent issuance of the $U DDT command will redirect locations 0 to
17 to being DDT's internal "fake" registers again, except for FILDDT
looking at an data file or doing super I/O to a disk.
Note that for executive mode EDDT to utilize physical addressing the
paging hardware must have been enabled PRIOR to DDT-entry. This re-
quirement exists because EDDT, in order to access all of physical
memory, needs to map the desired physical address into its own (execu-
tive) virtual address space, which it does by fondling the already-
extant page maps. For EDDT to provide physical addressing capability
without this restriction would require 2 (3 if KL-paging) more memory
pages be dedicated to EDDT for building temporary page maps, plus
support code etc.
For FILDDT to examine/modify physical memory a 7.00 or later release
of the TOPS-10 monitor is required; no release of TOPS-20 supports
FILDDT'ing physical memory.
DDT41 - DDT %41(260) Users Guide to New Features Page 6
Memory and Address Control
3.4.2 Page mapping
All flavors of DDT now support page mapping in both the KI- and the
KL-tradition. EDDT in executive mode will dynamically figure out which
style of paging is in effect and operate accordingly. All other fla-
vors of DDT (including EDDT running in user mode) will assume the mode
of paging used by the operating system for which DDT was assembled -
KI-paging for TOPS-10 and KL-paging for TOPS-20. To select KI-paging
emulation the flg$10U command is used; to select KL-paging the flg$11U
command is issued; in either case if flg is zero then the paging
emulation is disabled, if flg is non-zero then the appropriate paging
emulation is enabled.
In executive mode EDDT or FILDDT looking at running monitor/memory
space DDT will internally utilize physical addressing in order to
provide the user the true mapped virtual address space desired.
3.4.2.1 KI-paging - For KI-paging (TOPS-10 default) the page mapping
command for the executive virtual addressing space is [upt<]ept$[0]U
where upt is the optional physical memory page number of the user
process table (for setting the "per-process" addressing space - exec
virtual addresses 340000 through 377777) and ept is the physical memo-
ry page number of the executive process table. The user virtual ad-
dressing space is selected by the upt$1U command. The command $U re-
turns DDT to regular unmapped virtual addressing.
3.4.2.2 KL-paging - For KL-paging (TOPS-20 default) the page mapping
command for the executive virtual addressing space is ept$[0]U where
ept is the physical memory page number of the executive process table,
or epx$$[0]U where epx is the index into the SPT of the executive
process table pointer. To select the user virtual addressing space the
command is upt$1U where upt is the physical memory page number of the
user process table, or upx$$1U where upx is the index into the SPT of
the user process table pointer. The command $U returns DDT to regular
unmapped virtual addressing.
To map a single section (256K address space) under KL-paging the
command is either sec$2U where sec is the physical memory page number
of a KL-paging section map, or sex$$2U where sex is the index into the
SPT of the section map.
Basically, under KL-paging, $0U selects the ept, $1U selects the upt,
and $2U selects a single section. A single $ indicates the physical
memory page number and two $'s indicate an SPT index.
3.4.3 Setting the SPT
FILDDT will automatically define the start of the SPT from a disk file
(assumed monitor dump) from the symbol "SPT" if it exists (TOPS-20
only). The command spt$6U specifies to DDT that the SPT starts at
address spt.
3.4.4 Register addressing
The command acs$5U instructs DDT to use the 20 consecutive locations
starting at acs as the registers (DDT maintains an internal copy of
the registers so changing "register" 3 will not affect (for example)
acs+3). FILDDT, when reading an .EXE file, will automatically load its
internal "fake" registers as though the user had typed CRSHAC$5U if
DDT41 - DDT %41(260) Users Guide to New Features Page 7
Memory and Address Control
TOPS-10 or BUGACS$5U if TOPS-20. Note that if physical addressing mode
has been entered (the user has issued the $$U command) then the inter-
nal "fake" registers are ignored; if the user subsequently reenters
virtual addressing (via some form of the $U command) then an acs$5U
command may also have to be re-issued to get the registers back (this
does not affect the saving and restoring of the hardware registers in
user or executive DDT, only what DDT will use for typing out locations
0 to 17).
The command flg$3U explicitly controls the usage of DDT's internal
"fake" registers - if flg is 0 then the "fake" registers are ignored
(i.e., 0 to 17 are taken from the true current addressing space), if
flg is non-zero then addresses 0 to 17 are taken from DDT's internal
copies of the registers.
The $U command, except for FILDDT'ing a data file or doing super I/O
to a disk, will return DDT to its internal "fake" registers. The se-
lection of registers is completely independent of any page mapping in
effect. Changing virtual address spaces does not change the "regis-
ters".
In executive mode DDT only the command n$4U will switch DDT to use
(and thus display) hardware AC block n (available only for KL-10's and
KS-10's). The user is warned that 7$4U on a KL-10 will bring rapid and
rabid death (the microcode uses AC block 7). On DDT exit DDT will
restore the ac block context to the state it was in at DDT entry.
3.4.5 Address relocation and protection
As an aid to looking at data structures which are formed using
pointers as offsets rather than pointers as absolute values DDT ver-
sion 41 will allow the user to set both a base relocation address to
be added to all addresses used in location examining commands and a
protection address beyond which the user "virtual" (note the use of
"virtual" here as meaning pre-relocated) address is illegal. This is
(coincidently) exactly analguous to the KA-10 hardware relocation and
protection strategy, and in fact could be used as such to "mimic" the
$U KI/KL/KS-10 functionality on a KA-10 in executive mode. The form of
this command is bas$8U where bas is the base virtual address, and
prt$9U where prt is the maximum address the user will be allowed to
type in. Note that page mapping and address relocation and protection
are independent mechanisms, with address relocation and protection be-
ing performed before any mapping is done. The protection address has
no effect on the final "physical" address generated by any mapping
currently in effect.
3.4.6 $U command summary
All $U/$$U commands take the following form:
1. $U Unmapped virtual addressing
2. $$U Unmapped physical addressing
3. ept$[$][0]U Select executive virtual addressing
4. upt$[$]1U Select user virtual addressing
5. sec$[$]2U Select single section
6. flg$3U Select (deselect) internal fake registers
7. acb$4U Select hardware ac block
8. acs$5U Load internal fake registers
DDT41 - DDT %41(260) Users Guide to New Features Page 8
Memory and Address Control
9. spt$6U Select base of SPT
10. bas$8U Set base relocation address
11. prt$9U Set protection address
12. flg$10U Select (deselect) KI-paging
13. flg$11U Select (deselect) KL-paging
where:
1. acb := integer ac block number
2. acs := address of 20-word register block
3. bas := base relocation address
4. ept := executive process table page number
5. flg := selection flag, zero to deselect, non-zero to select
6. prt := protection (maximum allowable) address
7. sec := section map page number
8. spt := address of SPT
9. upt := user process table page number
3.4.7 Address checking (Executive EDDT only)
EDDT version 41, when running in executive mode, now is much more
extensive in validity-checking memory references. In particular, EDDT
will not cause a NXM (page fault) trap to the resident operating sys-
tem if the user types in an illegal (non-existent or unmapped)
address, but rather will simply type its ubiquitous ?<DINK><TAB> error
message.
3.4.8 Address breaking
DDT will no longer cause an address break to occur when examining or
depositing a location at which an address break condition has been
set. This applies only to "user" examines and deposits, an address
break set in DDT will still cause an address break to occur.
4.0 Specifying the Start Address
The $G command now expects a 36-bit address (obviously with bits 0 to
5 off) at which to start the user program. This means that the users
of programs such as the TOPS-10 monitor which define symbols like
"DEBUG=:<JRST .>" can no longer go either DEBUG$G or DEBUG$X at the
users whim but must decide on one form or the other (the default
obviously being to do nothing - i.e., to settle for the DEBUG$X form)
5.0 Symbolic expression typein and typeout
DDT version 41 has expanded the range of both symbolic typein and
symbolic typeout.
5.1 Symbolic typein
The JSYS opcode (opcode 104) has been added to TOPS-20 DDT, as have
all the TOPS-10 UUO's (but not the CALLI's etc.) for debugging pro-
grams which run under the compatibility package.
DDT41 - DDT %41(260) Users Guide to New Features Page 9
Symbolic expression typein and typeout
5.2 Multiply-defined symbol typein
If the user types an ambiguous symbol (a symbol defined two or more
places outside of the current local symbol table and not in the cur-
rent local symbol table) DDT will issue an "M" error message.
5.3 Selecting no local symbol table
The $: command issued without an explicit module name to use as the
local (or "opened") symbol table will deselect any local symbol table.
This is the initial state in which DDT starts.
5.4 Symbol cache
DDT now has a symbol "cache" of symbols recently used to type out
values. This cache is used primarily for typeout; typein will check
the symbol cache for a matching symbol from the currently opened or
local symbol table, if no match is found the cache is ignored and the
regular symbol table is used. The symbol cache is "flushed" on the
issuance of any $: command.
5.5 Symbolic typeout
DDT now goes to great pains to find any possible user-defined symbol
(such as an OPDEF) to match the expression DDT is trying to type out.
The order in which DDT searches for a symbol match in symbolic typeout
mode for non-I/O instructions is:
1. Full 36-bit match; OP, AC, I, X, and Y fields (e.g., the TOPS-20
monitor calls such as GTJFN)
2. OP, I, X, and Y fields (e.g., the TOPS-10 monitor calls such as
FILOP.)
3. OP and AC fields (e.g., the TOPS-10 monitor calls such as INCHWL
or "instructions" such as HALT)
4. OP field only (e.g., user UUO's or "OPDEF XMOVEI [SETMI]")
5. DDT's internal hardware opcode table
The order in which DDT searches for a symbol match in symbolic typeout
mode for I/O instructions is:
1. I/O OP and DEV fields (bits 0 to 12 - e.g., KL-10 APRID or KS-10
RDCSB)
2. Regular (non-I/O) OP field (e.g., KS-10 UMOVE)
6.0 ASCII typeout
DDT version 41 adds the typeout mode commands $8T and $9T to typeout 8
bit ASCII or 9 bit ASCII respectively (i.e., pick up 8 or 9 bit bytes
and "type" them straight as is - which with current TOPS-10 and TOPS-
20 operating systems means as 7-bit ASCII).
DDT41 - DDT %41(260) Users Guide to New Features Page 10
Command files
7.0 Command files
The $Y command (TOPS-10 DDT only) has been changed somewhat, both in
input and output (logging) functions.
7.1 Command input
If the user does not type a 36-bit expression to be used as a file
name (such as $""FILNAM"$Y) but just types $Y by itself then DDT will
prompt with "File: ". After the prompt the user can enter a TOPS-10
file specification in the form dev:name.type[directory]/switches where
[directory] can of course contain SFD's.
7.1.1 /A switch
The /A switch instructs DDT to abort the command file if a DDT-detect-
ed command error occurs (such as reference to an undefined symbol).
7.2 Command output (logging)
When reading a command file ($Y command) DDT will no longer "log" all
output onto device LPT: but rather just type out onto the user
terminal.
8.0 Automatic patch insertion
The automatic patch insertion facility ($< and $> commands) are basi-
cally the same as in version 40 of DDT with only minor differences.
8.1 Patch opening
The user may specify patching either by sym$< where sym is the name of
a symbol (which will be automatically updated at the termination of
the patch) or via exp$< where exp is any 36-bit expression represent-
ing the address of the resultant patch. If the later form of the patch
command is used no symbol will be updated to the end of the patch.
8.2 Default patching symbol
The list and order of default patching symbols which DDT uses when the
user does not supply an explicit patching symbol is now:
1. PAT (TOPS-10 EDDT only)
2. FFF (TOPS-20 EDDT and MDDT only)
3. PAT.. (all flavors)
4. PATCH (all flavors)
5. PAT (all flavors except TOPS-10 EDDT)
8.3 Default patching address
If the user does not supply an explicit patching symbol and DDT is
unable to find one of the default patching symbols then the address
specified by the right half of location .JBFF (even on TOPS-20) is
used. On patch close ($> command) if the patching address was default-
ed to via .JBFF, then both the right half of location .JBFF and the
DDT41 - DDT %41(260) Users Guide to New Features Page 11
Automatic patch insertion
left half of location .JBSA are updated.
8.4 Patch closing confusion and restriction
With DDT version 41 it no longer matters how (when) the user types the
$> command, either immediately after the final word expression, or
after a <CR> or <LF> to terminate the final word expression - DDT will
never generate a 0 word for free.
There is a very obscure restriction however on the use of the #
command in conjunction with the $> command. If the user is referencing
an undefined symbol in the expression for the last word of the patch
then that expression must explicitly be terminated in such a fashion
as to close the location before terminating the patch. For example,
"MOVE T1,BLETCH#$>" is illegal but "MOVE T1,BLETCH#cr$> (where "cr"
indicates a carriage return) is ok.
9.0 Breakpoints
The breakpoint logic in DDT version 41 has been extensively revamped
in order to support extended addressing. The default number of break-
points is now 12 (decimal); and can be set (by defining the symbol
NBP=number of breakpoints) arbitrarily high (within memory space limi-
tations) rather than being limited to 9 or 36 (decimal) depending on
which code restriction one choose to believe.
9.1 Setting breakpoints
DDT can now set a breakpoint in code running in any section with two
restrictions:
1. If DDT is currently running in section 0 then breakpoints can
only be set in section 0 (see section 3.1.3 above).
2. DDT must be mapped in the section containing the code in which
breakpoints are to be placed (the logic of this is that since
there is no way for DDT to cause unconditional transfer of con-
trol to DDT with only 36 bits some portion of the section address
space must be devoted to DDT; therefore, given this restriction,
one might just as well put all of DDT in that section since it
makes for a cleaner and simpler implementation). Note that this
does not mean DDT must be running in that section, but merely
that DDT must be mapped in that section!
It does not matter into how many different sections the same code is
mapped as long as DDT is mapped into the same sections since DDT is
"section-independent". For example (taking the TOPS-20 monitor which
maps section 0 and section 1 identically) if a breakpoint is set at
address 1004567 (or 1,,4567) but the PC was 4567 (or 0,,4567, i.e., in
section 0 rather than section 1) when the breakpoint was executed DDT
does not care (as long as DDT is mapped in that section, which in the
example of the TOPS-20 monitor it is).
The syntax for setting a breakpoint is now opn<bpt$nB where n is
optional and, if specified, declares the breakpoint number to be as-
signed to that address; bpt is the 36-bit address at which to place a
DDT41 - DDT %41(260) Users Guide to New Features Page 12
Breakpoints
breakpoint; and opn is an optional 36-bit address to open and display
upon execution of the breakpoint. The syntax was changed because two
full 30-bit addresses could not be squeezed into two halfwords.
DDT will no longer assign two different breakpoints to the same ad-
dress, either accidentally or under user control - if the user at-
tempts to set a breakpoint at a location at which a (different)
breakpoint is already set, the old breakpoint is cleared first.
9.2 Breakpoint typeout
Upon execution of a breakpoint DDT will now always typeout the user
instruction (in instruction format regardless of the permanent typeout
mode) at that breakpoint and set "." to the breakpoint address. If,
further, opn was specified as in section 9.1 above, then DDT will also
display the contents of location opn in the permanently set typeout
mode and "." will be updated to opn (with the breakpoint address it-
self becoming the previous PC sequence and so available via the $<CR>
etc. commands).
9.3 Examining breakpoint locations
The $nB command continues to be the "address" of breakpoint n's data-
base, but $nB is no longer equal to $n-1B+3. The breakpoint database
of interest to the user now has the following format:
1. $nB+0/ If nonzero the address for breakpoint n
2. $nB+1/ The conditional break instruction (break if skips)
3. $nB+2/ The proceed count (break on transition to 0)
4. $nB+3/ If greater than or equal to zero then the address to be
displayed
The rest of the breakpoint data base should not be of use to the user.
9.4 Unsolicited breakpoints
DDT version 41 has a new breakpoint facility - the ability to handle
unsolicited breakpoints (i.e., breakpoints that DDT did not itself
set). If control passes to location $0BPT+1 ($0BPT is a global DDT
symbol) then DDT will act as if a breakpoint had been set at the
address-1 contained in location $0BPT. The address in $0BPT must be
setup as if the cpu executed a JSR $0BPT instruction - if in section 0
then flags,,PC otherwise just global 30-bit PC. After "hitting" an
unsolicited breakpoint the user can proceed with program execution
with the $P command (all arguments to the $P command such as proceed
count or auto-proceed ($$P) are ignored).
Although this facility gives programs the ability to cause breakpoints
at any time (thus getting into DDT with the program state carefully
preserved) it is intended to be of most use in conjunction with an as-
yet-unimplemented monitor command (such as control-D) to "force" a
breakpoint on a program without having to control-C/DDT the program.
Then the user could simply continue with the program by typing $P.
DDT41 - DDT %41(260) Users Guide to New Features Page 13
Single-stepping the program
10.0 Single-stepping the program
The $X DDT command has been significantly modernized (and sped up in
general) with version 41 of DDT.
10.1 New opcodes
The ADJSP, DADD, DSUB, DMUL, and DDIV instructions have been added to
DDT's $X table although double- and quad-word integers (for DADD etc.)
are still typed out as two or four single words rather than one big
multiple precision integer. All of the extended JRST-class instruc-
tions are correctly simulated/traced. A user-UUO being executed in a
non-zero section is simply XCT'ed and is not traced.
10.2 Byte-manipulation typeout
A rudimentary byte-manipulation-instruction typeout facility was added
(to DDT version 40 actually) to display the byte pointer and the
contents of the effective address of the byte pointer. The EXTEND-
class instructions are not handled.
10.3 Effective address calculation
DDT now always calculates the effective address of the instruction
being $X'ed rather than just blindly "doing it" in order to both pre-
vent DDT from getting an illegal memory reference as well as to make
DDT be independent of the section in which the user PC resides (i.e.,
DDT does not have to be mapped into the user PC section to handle
$X'es although if the user PC is in a non-zero section then DDT must
be in a non-zero section). Besides, it's usually faster too!
10.4 KS-10 I/O instruction trace
The KS-10 specific I/O instructions which reference the UNIBUS (execu-
tive mode only) are not traced, only the contents of the register
specified in the AC field are displayed. Since the UNIBUS device reg-
isters can be reference-volatile (i.e., merely referencing one can
cause it to change - such as the DL-11 data registers) DDT does not
typeout the contents of the referenced UNIBUS address. Further, since
the effective address of the instruction is not calculated in a
standard format (at least as far as DDT is concerned) the effective
address itself is not even displayed.
10.5 PC skipping
If the user instruction being $X'ed skips then DDT will now typeout
"<SKIP>" if the PC skips by one location, or "<SKIP n>" if the PC
skips by n locations, where n is less than or equal to the DDT assem-
bly parameter SKPMAX (by default 3). If the PC changes more drastical-
ly than that (e.g., goes to a smaller address) DDT will type "<JUMP>
instead.
10.6 ERCAL/ERJMP
DDT (TOPS-20 only) will now handle instructions followed by either an
ERCAL or an ERJMP instruction (which is really just a 72-bit instruc-
DDT41 - DDT %41(260) Users Guide to New Features Page 14
Single-stepping the program
tion with two effective addresses). If the instruction being executed
does not take the error jump then DDT will print "<ERSKP>" after the
normal instruction trace to indicate to the user that an ERCAL or
ERJMP was just skipped (i.e., the PC incremented by 2 rather than 1)
and will not display the ERCAL or ERJMP instruction. If the
instruction does take the error jump then the ERCAL or ERJMP instruc-
tion will be displayed, if an ERCAL instruction then register 17 will
also be displayed, and the PC will be changed to the error address.
DDT will print "<ERSKP>" rather than showing the ERCAL or ERJMP in-
struction since DDT has no way of telling whether or not the instruc-
tion itself caused the skip (as in a SKIPA) or if the PC merely "fell
through" the ERCAL or ERJMP instruction (as in a successful MOVE).
Users of EDDT and MDDT should be cautioned about $Xing instructions
followed by an ERCAL or ERJMP in non-zero sections - the monitor has a
tendency to transfer control to the error address in section 0, which
will cause a BUGHLT because DDT (running in executive mode) does non-
zero section things thinking it is still in a non-zero section.
10.7 $X'ing an INIT
DDT will now let the user $X an INIT (TOPS-10) monitor call. DDT will
print out <SKIP 2> if the INIT fails or <SKIP 3> if the INIT succeeds.
10.8 $X speed up
By building into DDT a table of instructions which can cause the state
of the known world to change, and assuming the state of the world does
not change if the instruction being $X'ed is not so marked, the time
required to $X an instruction is cut by roughly a factor of 10. This
results in a dramatic performance increase especially for EDDT on KL-
10's where waiting for the console front end to switch between
secondary and primary protocol is very time-consuming.
10.9 Repetitive $X'es
The $$X command now takes an optional address range. Normally $$X will
terminate when the user PC inclusively enters the range .+1 to .+
SKPMAX (default value of SKPMAX is 3). The user may specify
lwr<upr>$$X where lwr is the lower address boundary and upr is the
upper address boundary which, if the user PC ever inclusively enters
the range so specified, terminates the $$X. If only lwr is specified
then upr defaults to lwr+SKPMAX. This command is very useful for re-
covering from having $X'ed a (for example) PUSHJ instead of having
$$X'ed the (for example) PUSHJ.
10.10 $X'ing from instr$X
If the user $X'es a return from a subroutine which was entered by
doing an instr$X (for example "PUSHJ P,SUBRTN$X where SUBRTN has a
breakpoint in it) then DDT simply "returns" from the original instr$X
rather than proceding to $X the internals of DDT itself. This is a
very obscure condition so don't worry too much about it.
DDT41 - DDT %41(260) Users Guide to New Features Page 15
Single-stepping the program
10.11 $$X status
DDT will now respond to a ? character being typed during an $$X se-
quence by typing "Executing: " followed by the current user "pc" and
instruction being executed. Typing any other character terminates the
$$X immediately.
10.12 $X PC
The $. command now acts like the . command only $. returns the value
of the $X PC (i.e., the address of the next instruction to be $X'ed).
The $$. command returns the previous $. value (useful for $$.<$$X as
in section 10.9 above).
11.0 Searches
Most of the differences in how DDT version 41 handles searches are
simply bug fixes, not major changes in the logic of searching.
11.1 Non-existant pages
DDT version 41 now simply skips over pages which don't exist in the
address space being searched, rather than terminating the search as
soon as a hole has been found.
11.2 Missed matches
The bug which caused TOPS-20 DDT to miss many valid matches is fixed
in DDT version 41.
11.3 Effective address searches
Since almost all address calculations start with an IFIW basis (with
the exceptions being such things as interrupt vectors and the like on
KL-10's or KS-10's), DDT version 41 will assume that each word it
examines is an instruction and perform an IFIW effective address cal-
culation. The final result must match in all 30 bits (actually
internally DDT will do a full 36-bit compare so the address being
searched for had better not contain anything in bits 0 to 5).
11.4 Address limit defaults
With the advent of extended addressing and physical addressing the
address limits are defaulted somewhat differently than from previous
versions of DDT:
1. EDDT, MDDT (TOPS-20 only), UDDT, and VMDDT
1. Lower Limit: <current section>,,0
2. Upper Limit: <current section>,,777777
2. FILDDT looking at an .EXE file
1. Lower Limit: 0
2. Upper Limit: highest virtual address mapped
DDT41 - DDT %41(260) Users Guide to New Features Page 16
Searches
3. FILDDT looking at a data file
1. Lower Limit: 0
2. Upper Limit: highest word written in file
4. FILDDT looking at disk structure/unit
1. Lower Limit: 0
2. Upper Limit: highest word in disk structure/unit
5. FILDDT looking at runing monitor
1. Lower limit: 0
2. Upper limit: 777777
6. FILDDT looking at physical memory (TOPS-10 only)
1. Lower Limit: 0
2. Upper Limit: Highest extant memory address
As with any defaults not all cases will be properly "guessed" by DDT.
In particular if the user has mapping or address relocation in effect
the virtual address range so produced may have nothing whatsoever in
common with the address limit defaults chosen by DDT.
11.5 Search matches
DDT will leave each address matched by its search on the "pc stack"
available to $<CR> etc. commands. When the search is terminated DDT
will set "." to the last address searched.
11.6 Searching status
DDT will now respond to a ? character being typed during a search by
typing "Searching: " followed by the current location and value being
searched. Typing any other character terminates the search immediate-
ly.
12.0 Watching
DDT version 41 allows the user to "watch" a location, waiting for it
to change. Although primarily useful for FILDDT'ing the running moni-
tor, it is present in all flavors fo DDT for completeness. The syntax
of the watching command is exp$V, where exp is the address to be
watched. If no explicit address is specified the last location opened
by the user will be used.
Upon initial issuance of the $V command the location is displayed.
Thereafter the location is continuously monitored, and will be dis-
played every time its contents change. In user mode DDTs (and this
includes TOPS-20 MDDT as well) the location is checked once a clock
tick (approximately 50 to 60 times a second), in exec mode EDDT the
location is continuously being monitored - no "pause" is attempted.
DDT will respond to a ? character being typed during an $V sequence by
DDT41 - DDT %41(260) Users Guide to New Features Page 17
Watching
typing "Watching: " followed by the current location and contents
being watched. Typing any other character terminates the $V immediate-
ly.
13.0 Zeroing memory
The algorithm used by DDT previous to version 41 has only limited
usefulness in today's modern virtual world (especially on TOPS-20).
However, to avoid "breaking" already extant control or MIC files which
may use the $$Z command it remains unchanged. A new command has been
implemented - lwr<upr>exp$z where lwr is the lowest (starting) ad-
dress, upr is the highest (ending) address, and exp is the 36-bit
quantity to deposit in each word inclusively bounded by lwr and upr.
Both lwr and upr must be specified. If exp is not specified then 0 is
used as the default.
A special note: The creation of zeroed pages (which formerly were non-
existent) by the $Z and $$Z commands is under the control of the
automatic page create flag (i.e, the $1W and $$1W commands - see sec-
tion 3.3.2).
DDT will now respond to a ? character being typed during an $Z
sequence by typing "Zeroing: " followed by the current location and
value being "zeroed". Typing any other character terminates the $Z
immediately.
14.0 Special masks
DDT version 41 (it actually started with DDT version 40) has several
new "masks" (for lack of a better name and/or command) of interest to
the user. None of these masks are currently displayable (e.g., "$3M/")
in FILDDT although they may be set normally.
14.1 $0M - Search mask
The operation of the search mask continues unchanged. The search mask
may now be referenced by either the $M (old style) or the $0M com-
mands. The default value remains 777777777777.
14.2 $1M - TTY control mask
This mask controls special TTY behavior (primarily TOPS-10 and exec
mode EDDT).
14.2.1 Tab separator display
Bit 17 controls whether DDT will print its usual <TAB> or three spaces
for the <TAB> separator. A 0 (the default) selects three spaces, a 1
selects a <TAB>.
14.2.2 Tab simulation
Bit 34 controls tab simulation. A 0 selects literal <TAB> characters
(i.e., the terminal handles <TAB>'s directly, a 1 selects space-fill
instead. This condition is automatically set for user mode DDT's (in
user mode <TAB>s are always output literally) - it is only useful to
DDT41 - DDT %41(260) Users Guide to New Features Page 18
Special masks
manually set tab simulation in exec mode EDDT.
14.2.3 Rubout control
Bit 35 controls rubout (and ^W) operation. A 0 selects "hardcopy"
operation (DDT will echo a "\" character and the character being
deleted), a 1 will cause rubouts to echo as a backspace, space, back-
space sequence. This condition is automatically set for user mode
DDT's (if TTY DISPLAY is set then rubouts echo as <BS><SP><BS>) - it
is only useful to manually set fancy rubouts in exec mode EDDT.
14.3 $2M - Offset range
The 36-bit "mask" in this case is really a value, used as the maximum
offset allowable for typing addresses in the form symbol+offset. The
default offset is 1000 (octal).
14.4 $3M - Byte mask
This mask is used in conjunction with the $O command for typing bytes
in a word that are not necessarily evenly spaced. Whenever an $O com-
mand is issued without an explicit byte size the byte boundaries are
determined by one-bits in the byte mask - each one bit in the byte
mask marks the low order bit of a byte. Bit 35 is always considered
on. The default value is 0 (i.e., one 36-bit byte). For example the
DDT command 040100200401$3M sets the byte mask for typing right-justi-
fied 8-bit bytes (preceded by the leading 4-bit byte).
15.0 RADIX-50 symbol typein
Since prehistoric times DDT has supported RADIX-50 symbol typein, but
that fact was never documented. The syntax for using a RADIX-50 symbol
as an 36-bit item in an expression is sym$5" where sym is the desired
RADIX-50 symbol. For example, to search for all occurences of the
symbol PAT.. the DDT commands 37777,,-1$M (only look at low-order 32
bits) and PAT..$5"$W suffice.
16.0 New DDT runtime information
Several new words have been added to DDT's runtime table describing
the state of the machine upon (executive mode only) DDT-entry. These
words are all accessible via the DDT command $I+offset (not available
in FILDDT):
1. $I-01/ APR CONI word
2. $I+00/ PI CONI word
3. $I+01/ Mask of PI channels turned off by EDDT
4. $I+02/ Executive virtual address of EPT
5. $I+03/ Executive virtual address of UPT
6. $I+04/ Executive virtual address of CST
7. $I+05/ Executive virtual address of SPT
8. $I+06/ Original AC-block word (DATAI PAG) if acb$4U
DDT41 - DDT %41(260) Users Guide to New Features Page 19
Obsolete commands
17.0 Obsolete commands
The executive mode paper tape facilities (^R, $J, and $L DDT commands)
are no longer supported. The code is left in the source file for
reference purposes but will soon be removed.
18.0 FILDDT startup and commands
FILDDT is a special version of DDT with the facilities for "DDT'ing"
address spaces other than its own, such as disk files and in particu-
lar .EXE files. FILDDT has existed for years but has always been off
in the background as a specialized "tool" for the exclusive use of
monitor programmers looking at crash dumps. With DDT version 41 FILDDT
is now a general purpose utility for use by the "general public",
particularly people who have databases resident in disk files (.REL
files for example).
18.1 Symbols
Out of efficiency considerations FILDDT builds the symbol table(s) it
will actually use at runtime in its own address space. Virgin FILDDT
has no symbols (the symbol table (if any) for FILDDT in FILDDT.EXE is
completely independent of the address space being FILDDT'ed and does
not count). There are special commands to instruct FILDDT to extract
(and build internal-to-FILDDT copies of) symbol tables from .EXE files
(see below). Once FILDDT has setup its internal symbol table(s), it
may then be SAVEd with the internal symbol table(s) for later use by
exiting to monitor level (with the ^Z FILDDT command) and typing the
"SAVE" command.
18.2 TOPS-10
When FILDDT is started it will prompt "File: ". The user may at this
time optionally enter a standard TOPS-10 file specification in the
form dev:name.type[directory]/switch. At least one function switch is
mandatory. SFD's are of course legal in the directory specification.
18.2.1 /D command
The /D command or function switch instructs FILDDT that the file
specified is a data file - i.e., do not map the file as an .EXE file
and use real file words 0 to 17 for locations 0 to 17.
18.2.2 /F command
The /F command or function switch instructs FILDDT to "DDT this file
anyway". It is useful only in conjunction with the /S command or func-
tion switch which normally re-prompts for another file specification.
Used in conjunction with /S (which implies an .EXE file) FILDDT will
use the file from which symbols were extracted as the file to be
"DDT'ed".
18.2.3 /H command
The /H command or function switch instructs FILDDT to type out a brief
help text, abort the current command, and prompt the user for another
command.
DDT41 - DDT %41(260) Users Guide to New Features Page 20
FILDDT startup and commands
18.2.4 /J command
The /J command or function switch is applied to a job number rather
than a file specification and instructs FILDDT to "DDT" the address
space of the job specified. Since FILDDT uses JOBPEK monitor calls to
access the specified job's address space the success or failure of any
given memory reference is dependent on the job being resident in main
memory - if the job is swapped out or if the memory reference is to a
page which is paged out the memory reference will fail. This is a
privileged command.
18.2.5 /M command
The /M command or function switch instructs FILDDT to "DDT" the cur-
rently running monitor and physical memory address space (controlled
by use of the $U and $$U commands). This is a privileged command.
18.2.6 /P command
The /P command or function switch instructs FILDDT to enable for writ-
ing as well as reading the specified address space. Note that DDT's
internal fake registers are always writable.
18.2.7 /S command
The /S command or function switch instructs FILDDT to only extract the
symbol table from the file specified, replacing any symbol table
FILDDT may already have. Unless overridden by the inclusion of a /F
command FILDDT will, after having read the symbol table, again prompt
the user for the next FILDDT command.
18.2.8 /U command
The /U command or function switch is applied to a file structure or
disk unit only rather than a complete file specification and indicates
to FILDDT that the user wants the entire physical address space repre-
sented by that file structure or disk unit name independent of any
"file structure mapping" normally imposed by the monitor. This is a
privileged command.
18.3 TOPS-20
With DDT version 41, FILDDT on TOPS-20 runs in native mode, and in
particular, uses the PMAP monitor call for all regular file access.
FILDDT will also type a brief message telling what address space is
about to be "DDT'ed" before going into DDT mode.
18.3.1 DRIVE command
The format of the DRIVE command is:
DRIVE (FOR PHYSICAL I/O IS ON CHANNEL) c (UNIT) u
The DRIVE command allows examination of the disk unit u on system
channel c without regard for whether it is mounted as part of a file
structure, or indeed whether it even has the necessary information so
that it could be so mounted (as if the HOME blocks were wiped out).
If, however, the drive is part of a mounted file structure, FILDDT
will type a message indicating the structure to which it belongs. This
is a privileged command.
DDT41 - DDT %41(260) Users Guide to New Features Page 21
FILDDT startup and commands
18.3.2 ENABLE DATA-FILE command
The ENABLE DATA-FORMAT command instructs FILDDT to treat the file as
pure data, even if a valid .EXE directory is detected, and in particu-
lar to use real file words 0 to 17 as locations 0 to 17.
18.3.3 ENABLE PATCHING command
The ENABLE PATCHING command instructs FILDDT to enable any subsequent-
ly specified address space for patching (writing). This command is
ignored when looking at the running monitor since there is no monitor
call to "poke" the running monitor.
18.3.4 EXIT command
The EXIT command instructs FILDDT to return to command level. If
FILDDT has an internal symbol table (due to a previous LOAD or GET
FILDDT command) then a SAVE command will save FILDDT with the symbols
pre-loaded.
18.3.5 GET command
The format of the GET command is:
GET (FILE) filespec (optional switches)
The GET command instructs FILDDT to set up the disk file filespec as
the address space to be "DDT'ed", as modified by the optional switches
or previous ENABLE commands. The available switches are:
18.3.5.1 /DATA - The /DATA switch is equivilent to a previous ENABLE
DATA-FILE command.
18.3.5.2 /PATCH - The /PATCH switch is equivilent to a previous ENABLE
PATCHING command.
18.3.5.3 /SYMBOL - The /SYMBOL switch instructs FILDDT to extract sym-
bols from the specified .EXE file before "DDT'ing" the file, discard-
ing any symbols that FILDDT may already have. This switch is legal
only with .EXE files.
18.3.6 HELP command
The HELP command instructs FILDDT to type out a short summary of the
available FILDDT commands.
18.3.7 LOAD command
The format of the LOAD command is:
LOAD (SYMBOLS FROM) filespec
The LOAD command instructs FILDDT to extract symbols from the disk
file filespec, which must be an .EXE file, then to return to FILDDT
command level. This command is legal only for .EXE files.
18.3.8 PEEK command
The PEEK command instructs FILDDT to use the currently running monitor
as the address space to be "DDT'ed". The address space so available is
currently limited to monitor executive virtual addresses 0 to 777777,
since the PEEK monitor call will only accept 18-bit address arguments
for executive virtual addresses. Physical memory addressing is not
DDT41 - DDT %41(260) Users Guide to New Features Page 22
FILDDT startup and commands
available. This is a privileged command.
18.3.9 STRUCTURE command
The format of the STRUCTURE command is:
STRUCTURE (FOR PHYSICAL I/O IS) str:
The STRUCTURE command instructs FILDDT to use as the address space to
be "DDT'ed" the entire disk file structure str independent of any
"file structure mapping" normally imposed by the monitor. This is a
privileged command.
18.4 Defaults
Following is a list of the various defaults supplied by FILDDT:
1. DSK: is the default file device unless super I/O is specified
(which requires an explicit file structure or disk unit name).
2. .EXE is the default file type or extension unless either a data
file or super I/O is specified, in which case there is no default
file type or extension.
3. The default directory is the user's default directory.
4. The specified address space is read-only.
5. If "DDT'ing" an .EXE file and FILDDT does not already have a
symbol table, extract the symbol table (if any) from the .EXE
file first.
6. If "DDT'ing" an .EXE file and the symbol CRSHAC (if TOPS-10) or
BUGACS (if TOPS-20) exists, give a "free" CRSHAC$5U or BUGACS$5U
command. If the CRSHAC/BUGACS symbol does not exist then use file
words 0 to 17 (if any) as mapped by the .EXE directory for loca-
tions 0 to 17. For TOPS-20 only, if the symbol SPT exists then
also give a free SPT$6U command as well.
18.5 Other FILDDT-specific commands
Following are the commands which are unique (or different) to FILDDT.
18.5.1 ^E command
The ^E command instructs FILDDT to exit the current address space and
prompt the user for a new address space. The ^E command is equivilent
to a ^Z, START command sequence.
18.5.2 ^Z command
The ^Z command instructs FILDDT to exit to monitor level after having
written out any changes to the current file (if any). It is most
important that the user exit only via ^Z (or ^E which does an implicit
^Z) in order to guarantee the integrity of the file data (if any) - a
^C can leave a file in an indeterminate state (some changes written
out to the disk and some not).
18.5.3 I/O errors
Should FILDDT incur an I/O error reading or writing a disk file, a
warning message will be issued but FILDDT will otherwise ignore the
error. This is to allow the user the ability to manually fix a file
with bad data by rewriting the data correctly (hoping the rewriting
DDT41 - DDT %41(260) Users Guide to New Features Page 23
FILDDT startup and commands
operation clears the error condition - if the physical disk surface
itself is at fault, then it is probably hopeless).
[End of DDT41 Users Guide]
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 1
January 1982
COPYRIGHT (C) 1970, 1982 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
TRANSFERRED.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 2
SUMMARY
1.0 SUMMARY
DDT is a symbolic assembly language debugger for the DECsystem-10
and DECSYSTEM-20. DDT provides many debugging facilities, including
breakpoints, program single-stepping, and the ability to examine or
deposit programs or data symbolically. The source file DDT.MAC
assembles into the following different versions of DDT:
TOPS-10 TOPS-20 FUNCTION
VMDDT.EXE UDDT.EXE Brought in by the DDT command.
DDT.EXE SDDT.EXE DDT with system symbols.
FILDDT.EXE FILDDT.EXE For EXE or binary data files.
DDT.REL RDDT.REL Relocatable user DDT.
EDDT.REL EDDT.REL Exec mode DDT.
-- MDDT.REL TOPS-20 monitor process DDT.
-- KDDT.REL TOPS-20 monitor specific EDDT.
DDT version 41A is a maintenance release incorporating 30 edits
since the last release. Many bug fixes have been made, and a few
enhancements have been included. These are documented under External
Changes, section 2.0, and Internal Changes, section 5.0.
WARNING
A FEW OF THE NEW FEATURES IN DDT 41A ARE
NOT COMPATABLE WITH PREVIOUS VERSIONS OF
DDT. SOME COMMANDS THAT WORKED WITH
PREVIOUS VERSIONS OF DDT MAY NOT WORK OR
DO DIFFERENT THINGS WITH DDT 41A. SEE
SECTION 2 FOR MORE INFORMATION.
DDT 41A supersedes all previous versions. It runs under all
supported monitors, and has been tested under TOPS-10 7.01, and under
TOPS-20 releases 4 and 5. All edits made through 30-Nov-81 have been
incorporated into DDT 41A.
For DECsystem-10 sites, DDT is documented in the Utilities
manual, which is part of notebook 12 of the TOPS-10 Software
Notebooks. The manual can also be ordered separately as order number
DEC-10-UTILA-A-D. Although this manual documents version 37, most
commands are still supported as outlined in the manual. FILDDT is
also documented in notebook 12.
For DECSYSTEM-20 sites, DDT is not documented.
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 3
EXTERNAL CHANGES
2.0 EXTERNAL CHANGES
Most of the external changes in DDT 41A are new features that
make the debugging process easier. Following is a list of new
commands and features.
INCOMPATABLE CHANGES
SOME OF THE CHANGES TO DDT MAY CAUSE
COMMANDS THAT WORKED UNDER PREVIOUS
VERSIONS OF DDT TO NOT WORK OR DO
DIFFERENT THINGS WITH DDT 41A. THE
FOLLOWING LIST DESCRIBES ALL SUCH
CHANGES. PLEASE BE SURE YOU UNDERSTAND
THIS LIST BEFORE ATTEMPTING TO USE DDT
41A.
1. RP20 disks are now supported in FILDDT.
2. Users who build DDT-10 with FTYANK on may turn off $Y echo by
typing 4$1M (1B33); this sets a TTY control bit which
determines whether echoing occurs or not. The default is to
echo the $Y input/output (0B33).
3. DDT types short error messages under certain conditions now.
Attempting to deposit in a write-locked page will generate
the message "?NOT WRITABLE".
4. The $? and $$? commands have been implemented. The $?
command types the last DDT error such as NOT WRITABLE, etc.
The $$? command types the last TOPS-20 process error
encountered.
5. The $$Z command has been removed. The new command format is
start-address<end-address>new-contents$Z. If "new-contents"
is not specified, the default is 0.
6. The $$1X command has been implemented. This command is
similar to $$X, except that no "dangerous instruction"
checking is done. Dangerous instructions are those which can
alter the PSI/APR status, do I/O, or in any way alter the
environment which DDT perceives. This command is offered for
convenience only since it executes much faster, but is not
recommended. The normal $$X command should still be used.
7. TOPS-20 User-mode DDTs and FILDDT now have the command $2F to
type double precision floating point numbers. Single
precision numbers now use the FLOUT% JSYS rather than the
cumbersome "by-hand" method used on TOPS-10. Thus the
typeout format is slightly different, and rounding may make a
1 digit difference in the displayed value.
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 4
EXTERNAL CHANGES
8. New GFLOATING opcodes are recognized by DDT. These include
GFAD, GFSB, GFDV, and GFMP.
9. FILDDT now types out the $M and $U masks upon command. These
masks cannot be changed as in other DDTs; the command
new-value$M or new-value$U must still be used.
10. The command $$0> has been added to abort a patch. Starting a
new patch while another is in progress is no longer possible,
thus users are protected against accidentally destroying a
patch by typing $< instead of $> to finish. It is also
possible to type ^Z followed by DDT to reenter with patch
mode reset.
11. The close-patch command format is now $n>, where "n" is the
decimal number of returns desired. The default is 2, but can
be set from 0 to any value. The instructions inserted are
JUMPAs, with the AC field starting at 0 and "pegging" at 17.
12. The $T command will now only type a single right-justified
character if the entire word is zero (except for the
character itself). Previously, a single character would be
typed whenever the first byte was a null, rendering it
impossible to type text if the first character in a word was
null.
13. The new $0T command types ASCIZ strings starting at any
address (default is "."). Repeated issuance of $0T will
continue stepping through memory, typing consecutive strings.
Typeout may be halted by typing any character.
14. FILDDT-20 no longer searches non-zero sections in data files.
The search will stop after the last page in the file.
15. If a FILOP. error occurs when loading a file with FILDDT-10,
the radix is set back to octal by FILDDT's error handling
routine.
16. Exec mode DDT now supports ^S/^Q and typeahead.
17. If the FTYANK feature is enabled (TOPS-10 only), DDT can
automatically execute a command string each time a breakpoint
is reached. The command list address is specified when
setting the breakpoint, using the following format:
"addr-to-display<command-list-addr>breakpoint-addr$nB". The
command string can be defined into memory with the
double-quote command, and must be left-justified ASCIZ.
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 5
KNOWN BUGS AND DEFICIENCIES
3.0 KNOWN BUGS AND DEFICIENCIES
The following is a complete list of all known bugs and
deficiencies in DDT 41A as of 7-Jan-82.
1. DDT does not detect many illegal commands, for example, 18
octal is accepted and treated as 20 octal. DDT does not
detect arguments to commands which are ignored, e.g., $23Q is
the same as $Q.
2. The commands $<CR>, and $<LF> do not detect the attempt to
recall more than was saved.
3. When looking at user rather than exec memory in FILDDT-10
(e.g. n$mU), the AC's still come from CRSHAC rather than the
user pages.
4. Symbolic typeout is turned off for $O mode, thus addresses
are absolute rather than relative.
4.0 INSTALLATION INSTRUCTIONS
4.1 TOPS-10
To install DDT version 41A on your system, copy the files
DDT.EXE, VMDDT.EXE, FILDDT.EXE, DDT.REL, and EDDT.REL from the
distribution tape to SYS:. DDT41A.DOC should be installed on DOC: or
HLP:.
The batch control file DDT.CTL contains all necessary
instructions to assemble and load DDT. It will normally have to be
modified slightly to correspond to the installation configuration.
4.2 TOPS-20
To install DDT version 41A on your system, copy the files
UDDT.EXE, SDDT.EXE, FILDDT.EXE, RDDT.REL, EDDT.REL, and MDDT.REL from
the distribution tape to SYS:. DDT41A.DOC should be installed on DOC:
or HLP:.
The batch control file DDT.CTL contains all necessary
instructions to assemble and load DDT. It will normally have to be
modified slightly to correspond to the installation configuration.
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 6
INTERNAL CHANGES
5.0 INTERNAL CHANGES
Following is a list of changes from DDT 41(265) to DDT 41A(323):
Edit Who Date SPR
-----------------------------------
266 DIB 18-FEB-80
Add RP20 support to FILDDT.
267 BPK 11-APR-80
Replace SUB in LOOK10 with equivalent code that doesn't overflow.
270 BPK 17-APR-80
Turn off CTRL-O whenever we stop at a breakpoint.
271 DLM 4-OCT-79
Flag in TTYMSK for instruction typeout on breakpoint, warning if
breakpoint insertion/removal fails, diagnostics on memory reference
failure, run in non-zero section if possible.
272 JBS 9-NOV-80 SPR 10-30155
Add ^E text to -10 help message.
273 JBS 10-NOV-80 SPR 10-30019
Fix overflow in ADD instruction at L4+18.
274 JBS 12-NOV-80 SPR 10-30058
Fix SUB at DOITX0 that set CARRY1 and CARRY0 in user context.
275 JBS 14-NOV-80
Fix ERJMP/ERCAL $X routines to agree with edit 274.
276 JBS 17-NOV-80 SPR 10-30156
Move PUSH out of conditionals to agree with POP in RDBIN.
277 JBS 18-NOV-80 SPR 20-15067
Fix $<RET> after $<TAB>.
300 JBS 19-NOV-80 SPR 10-30237
Add user TTY control bit for $Y echo during file read/execution.
301 JBS 25-NOV-80
All kinds of misc. edits to fix little things here and there.
302 JBS 3-DEC-80 SPR 10-30277
Fix moving of PAT.. in $< mode.
303 JBS 4-DEC-80
Make $Z abort with "?" if any mem. write fails, remove $$Z,
move /H text around for -10 version, fix extended addressing bug.
304 JBS 10-DEC-80 SPR 10-30337
Fix ILDB typeout in extended addressing mode - was messing up section #
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 7
INTERNAL CHANGES
when ac AC was used.
305 JBS 29-DEC-80
Remove temporary patch that bypassed MACRO bug, revise edit 300.
306 JBS 29-DEC-80 SPR 10-30404
Add $$1X feature to do quicker $$X by not checking for dangerous
instructions. Used over long but safe PUSHJ's, etc.
307 JBS/RDH 30-JAN-81
Setup location .JBBPT with $0BPT for TOPS-10 user/exec DDT's,
Change floating output subroutine TFLOT to use FLOUT JSYS on
TOPS-20, add $2F double-precision floating typeout on TOPS-20,
allow reading $M and $U masks in FILDDT (special-case them),
remove $L paper tape punch code, add $[any digit] command to
abort patch insert mode, make $[any digit]< illegal, clear
"patch mode" flag and reset location pointers at start-up,
don't allow nested patching, change <LF> and ^H to recognize
double-word mode on TOPS-20 (i.e., double precision floating typeout),
change $X code to clear input buffer and reset ^O before next
instruction typeout.
310 JBS 22-JAN-81 SPR 20-15518
Change handling of text insertion - automatically close location
upon receipt of text delimiter.
311 JBS 6-FEB-81
Redefine patch abort command to $0>, fix breakpoint typeahead
clearing bug - was munching first chr. typed after breakpoint
stuff began typing out, fix FILDDT bug which would setup PAGTBL
wrong (sometimes) for pages over 4000, change text insertion mode
so it won't force a CRLF if a location is open but nothing has
been deposited yet (revision of edit 310), reinstall edit 273
with a change (edit 303 removed edit 273).
312 RDH/JBS 4-MAR-81
Fix broken negative integer typeout, fix TOPS-10 output broken by
edit 305, make $7T mode do right-justified typeout only if left 29
bits are all null, change patch abort (again) to $$0>, make a botched
patch-insert fix PTLOC before losing, make $N> set maximum skip
returns from patch (N=1 gives 1 JUMPA, etc.), fix bug that would set
"." to zero after ^C/DDT commands, add $0T/$$0T command to type the
ASCIZ string starting at ".", make XMOVEI type out AC contents after
$X.
313 JBS 10-APR-81
Edits 302 and 312 must be installed first -
Add <addr.>$0T to type ASCIZ string at <addr.>, change $0T code to
be more efficient, allow user to stop $0T typeout anytime, more work
to get $T to work right for right-justified single chr., handle RPACS%
error if section doesn't exist, make FILDDT stop searching after EOF
on data files, fix moving of PAT.. when an undefined symbol exists
and a new definition is made (cache problem), make conditional
breakpoint instruction execute in user context, don't force $P
DDT41A.DOC -- Changes from DDT 41(265) to DDT 41A(323) Page 8
INTERNAL CHANGES
default to 1 if user has specified own number.
314 JBS 10-AUG-81
Remove auto CRLF after long string insertion, fix another bug with
undefined symbols not getting fixed up.
315 JBS 13-AUG-81 SPR 10-31459
Output radix wasn't setup before typing FILOP. error code, causing
garbage to print out. FILDDT-10 only.
316 JBS 17-AUG-81
Find "real" EOF for a TOPS-20 file - edit 313 broke this because it
assumed SIZEF% returned EOF. But EOF doesn't really exist in TOPS-20!
317 JBS/RDH 19-AUG-81
[JBS] Fix FILDDT-20 for big data file again.
[RDH] Handle ^S/^Q in exec mode, implement exec mode typeahead,
implement xxx<adr>n$B where "adr" is address of command string to
be executed on breakpoint (depends on FTYANK), handle $X'ing in
the ACs in non-zero section (PC always local, therefore always
a "register" address).
320 RDH/JBS 30-SEP-81
Edit 317 broke typing something to get out of a (e.g.) search
loop (EXEC mode only), preserve APR bits in EXEC mode, type "/"
instead of a space in $0T command.
321 JBS 30-SEP-81
Remove definition of RADIX50 PAT from list of patch locations in
user mode.
322 JBS 6-OCT-81
Physically remove desupported $L code.
323 JBS 30-NOV-81
Don't use JSYSes for numeric typeout in TOPS-20 EXEC DDT's.
6.0 SUGGESTIONS
The following suggestion list has been accumulated from various
sources, including SPRs and DECUS sessions. The appearance of a
suggestion on this list does not necessarily mean that DIGITAL ever
intends to implement it.
1. Implement a byte typein and typeout facility.
2. Implement sorted and block-structured symbol tables.
[End of DDT41A.DOC]
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 9
October 1979
COPYRIGHT (C) 1979 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
TRANSFERRED.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 10
SUMMARY
7.0 SUMMARY
DDT is a symbolic assembly language debugger for the DECsystem-10
and DECSYSTEM-20. DDT provides many debugging facilities, including
breakpoints, program single-stepping, and the ability to examine or
deposit programs or data symbolically. The source file DDT.MAC
assembles into the following different versions of DDT:
TOPS-10 TOPS-20 FUNCTION
VMDDT.EXE UDDT.EXE Brought in by the DDT command.
DDT.EXE SDDT.EXE DDT with system symbols.
FILDDT.EXE FILDDT.EXE For EXE or binary data files.
DDT.REL RDDT.REL Relocatable user DDT.
EDDT.REL EDDT.REL Exec mode DDT.
-- MDDT.REL TOPS-20 monitor process DDT.
-- KDDT.REL TOPS-20 monitor specific EDDT.
DDT version 41 is a significant development release with many new
features, including KL10 model B extended addressing support, 2020
support, native mode FILDDT on TOPS-20, and many minor enhancements to
make the debugging process easier.
WARNING
A FEW OF THE NEW FEATURES IN DDT 41 ARE
NOT COMPATABLE WITH PREVIOUS VERSIONS OF
DDT. SOME COMMANDS THAT WORKED WITH
PREVIOUS VERSIONS OF DDT MAY NOT WORK OR
DO DIFFERENT THINGS WITH DDT 41. SEE
SECTION 2 FOR MORE INFORMATION.
DDT 41 supercedes all previous versions. It runs under all
supported monitors, and has been tested under TOPS-10 6.03A, and under
TOPS-20 releases 3A and 4. All patches published through 31-Dec-78
have been incorporated into DDT 41.
For DECsystem-10 sites, DDT is documented in the DDT manual,
which is part of volume 9 of the TOPS-10 Software Notebooks. The
manual can also be ordered separately as order number
DEC-10-UDDTA-A-D.
For DECSYSTEM-20 sites, DDT is documented in the TOPS-20 User's
Guide, which is part of volume 1 of the TOPS-20 Software Notebooks.
The User's Guide can also be ordered separately as order number
AA-4179B-TM.
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 11
EXTERNAL CHANGES
8.0 EXTERNAL CHANGES
Most of the external changes in DDT 41 are new features that make
the debugging process easier. Refer to the file DDT41.MAN for a
detailed description of all new features.
INCOMPATABLE CHANGES
SOME OF THE CHANGES TO DDT MAY CAUSE
COMMANDS THAT WORKED UNDER PREVIOUS
VERSIONS OF DDT TO NOT WORK OR DO
DIFFERENT THINGS WITH DDT 41. THE
FOLLOWING LIST DESCRIBES ALL SUCH
CHANGES. PLEASE BE SURE YOU UNDERSTAND
THIS LIST BEFORE ATTEMPTING TO USE DDT
41.
8.1 36-Bit Addresses
All addresses used by DDT are now 36-bit numbers, including the
current location counter ".". Commands like "/" that take addresses
as arguments will now take all 36 bits of the argument as the address
to be used.
This change can cause DDT to type "?" unexpectedly on some
commands that worked with previous versions of DDT. The following
typescript illustrates a typical sequence that performs differently
with DDT 41:
FOO/ <old contents> -1,,TEXT<tab>
777777,,TEXT/ ?
777777,,TEXT+1/ ?
The user obviously expected to open location TEXT, but DDT 41
interpreted the entire expression as an address and opened a very
large nonexistent address. Another example is:
DISP/ 10327,,17346 $$Q/ ? .=17346,,10327
In this case, the user wanted to follow the address in the left half
of location DISP, but ended up looking at a huge address instead. The
$$Q means "the last quantity typed out with the halves swapped", which
has non-zero bits in the left half. The .= verifies that this is
indeed what has happened.
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 12
EXTERNAL CHANGES
If DDT types "?" when it should have typed real data, and you
suspect that you may have ended up at a huge address, you can type .=
or linefeed to verify whether or not this has indeed happened. If it
has, the command ,./ (three adjacent keys on most terminals) will
quickly get you to the corresponding address with a zero left half.
You can get DDT to ignore the left half of the argument to a
location opening command such as / or tab by including a space
somewhere in the argument. Space means to retain the left half of the
current location when opening a new location. For instance, the first
example above could have been done as follows:
FOO/ <old contents> -1,,TEXT<space><tab>
TEXT/ ANDI 360732(16)
TEXT+1/ CONSZ 30,500000(14)
This command sequence would deposit -1,,TEXT in location FOO, but open
location 0,,TEXT, since the left half of the current address "." is 0.
Another example is:
LOOP1+3/ PUSHJ P,ERROR JRST PAT..<tab>
PAT../ 0
In this example, the user wanted to deposit a JRST PAT.. at LOOP1+3,
and then open location PAT.. to write a patch. However, the user did
not have to include an explicit space before the tab, since the
argument to the tab already contained the space between the JRST and
the PAT... In fact, this kind of example is exactly why space has
been implemented as a "retain the current section" command.
The ramifications of 36-bit addresses are more complex than can
be described in this short summary. Refer to the file DDT41.MAN for
complete documentation.
8.2 Auto-typeout On Breakpoints
The command to set a location to type out automatically on a
breakpoint has changed, as follows:
Old way:
A,,B$B or B(A)$B
New way:
A<B$B
This command means to set a breakpoint at location B, and type out
location A symbolically every time the program hits the breakpoint.
If the old-style command is typed to DDT 41, it will be interpreted as
a command to set a breakpoint at the full-word address A,,B, which is
usually illegal.
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 13
KNOWN BUGS AND DEFICIENCIES
9.0 KNOWN BUGS AND DEFICIENCIES
The following list is currently incomplete. It will be updated
before DDT 41 is finally released.
The following is a complete list of all known bugs and
deficiencies in DDT 41 as of 1-Mar-79.
1. DDT does not detect many illegal commands, for example, 18
octal is accepted and treated as 20 octal. DDT does not
detect arguments to commands which are ignored, e.g., $23Q is
the same as $Q.
2. The commands $<CR>, and $<LF> do not detect the attempt to
recall more than was saved.
3. When looking at user rather than exec memory (e.g. n$mU),
the AC's still come from CRSHAC rather than the user pages.
4. $X cannot handle the INIT MUUO in user mode.
5. Rubout, CTRL/U, and CTRL/W are not handled properly when
ASCII or SIXBIT text is typed in (the " and $" commands).
Text may be stored in memory even if it is rubbed out later.
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 14
INSTALLATION INSTRUCTIONS
10.0 INSTALLATION INSTRUCTIONS
10.1 TOPS-10
To install DDT version 41 on your system, copy the files DDT.EXE,
VMDDT.EXE, FILDDT.EXE, DDT.REL, EDDT.REL, and DDT41.MAN from the
distribution tape to SYS:.
The batch control file DDT.CTL contains all necessary
instructions to assemble and load DDT. It will normally have to be
modified slightly to correspond to the installation configuration.
10.2 TOPS-20
To install DDT version 41 on your system, copy the files
UDDT.EXE, SDDT.EXE, FILDDT.EXE, RDDT.REL, EDDT.REL, MDDT.REL, and
DDT41.MAN from the distribution tape to SYS:. This can be done by
mounting the tape labelled Distribution Tape on MTA0:, then typing the
following commands:
R DUMPER
TAPE MTA0:
REWIND
DENSITY 1600-BPI
SKIP 2
RESTORE DSK*:<*>*DDT.EXE (TO) SYS:*.*.-1, -
DSK*:<*>*DDT.REL (TO) SYS:*.*.-1, -
DSK*:<*>DDT41.MAN (TO) SYS:*.*.-1
REWIND
To rebuild DDT from sources, mount the tape labelled Distribution
Tape on MTA0:, then type the following commands:
R DUMPER
TAPE MTA0:
REWIND
DENSITY 1600-BPI
SKIP 3
RESTORE DSK*:<*>*.*.* (TO) <self>*.*.*
REWIND
CTRL/C
!At this point, you should TYPE DDT.CTL to see what it does.
SUBMIT DDT.CTL/TIME/RESTART
The batch control file DDT.CTL contains the procedures necessary
to rebuild DDT from sources. It may have to be modified slightly to
run at your installation, so you should type it to see what it does
before typing the SUBMIT command above.
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 15
INTERNAL CHANGES
11.0 INTERNAL CHANGES
11.1 Changes From DDT 37(201) To DDT 40A(250)
200 RDH 14-NOV-76 SPR 10-17714
VALIDITY-CHECK THE SYMBOL POINTER FOR THE HIGH-SEG SYMBOL
TABLE (.JBHSM) RATHER THAN ARBITRARILY BELIEVING IT (AND
SUBSEQUENTLY ILL MEM REF'ING, ETC.).
201 RDH 14-NOV-76 SPR 10-18806
MORE OF EDIT 200, AT DEF1:
202 RDH 14-NOV-76 SPR 10-19661
TREAT THE MAP INSTRUCTION "E" FIELD AS AN IMMEDIATE QUANTITY
RATHER THAN AS A MEMORY REFERENCE.
203 RDH 14-NOV-76
EXPAND FILDDT TO HANDLE FULL 22-BIT ADDRESSING IN EXE-FORMAT
FILES (SPECIFICALLY CRASH.EXE).
204 RDH 14-NOV-76 SPR 10-20165
IMPLEMENT SPECIAL BYTE-FORMAT TYPEOUT FOR THE VARIOUS
BYTE MANIPULATION INSTRUCTIONS. CODE COURTESY OF THE
UNIVERSITY OF ARIZONA.
205 RDH 15-NOV-76
PUT TAG PTDFLG: UNDER FTYANK RATHER THAN FTEXEC!FTFILE FOR
THOSE SITES THAT WISH TO TAKE THEIR CHANCES WITH $Y IN EITHER
UDDT OR VMDDT (NOTE: $Y USES I/O CHANNEL 17 - BE WARNED)
206 RDH 4-DEC-76
REWRITTEN CODE IN CHKADR (TO BETTER HANDLE KL'S) FORGOT HOW
KA'S WORKED AND LOST THE APR PI ASSIGNMENT.
207 RDH 4-DEC-76
IMPLEMENT "/D" FOR FILDDT -- TREAT FILE SPECIFIED AS PURE
DATA FILE - DON'T CRUMP ON FIRST 20 LOCATIONS (THE "ACS"),
DON'T LOOK FOR SYMBOL TABLE. IF NOT .EXE FORMAT AND NOT .XPN
FORMAT THEN "/D" IS ASSUMED.
210 RDH 6-DEC-76
EXTEND THE $M COMMAND -- <M>$<N>M -- WHERE <N> IS THE
MASK NUMBER AND <M> IS THE ASSOCIATED MASK.
<N> = 0 OR NOT-SPECIFIED THEN <M> IS THE SEARCH MASK
<N> = 1 THEN <M> IS TTY CONTROL MASK:
1B35 = 1 THEN "ECHO" <DEL>'S AS <BS><SP><BS>
211 RDH 6-DEC-76
NEW ASSEMBLY PARAMETER "SKPMAX" TO SET MAXIMUM NUMBER OF
LOCATIONS SKIPPED FOR $X LOGIC. IF <INSTR>$X THEN TYPE
<SKP> FOR EACH LOCATION SKIPPED. IF $$X THEN DO INDEFINITE
$X UNTIL OLD-PC .LT. NEW-PC .LE. OLD-PC+SKPMAX
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 16
INTERNAL CHANGES
212 RDH 7-DEC-76
[214] MATCH ANGLE BRACKETTS -- <<
WHEN PATCHING ($>) DON'T INSERT A 0 WORD UNLESS USER EXPLICITLY
TYPED IT - I.E., ALLOW THE $> TO APPEAR BY ITSELF - THE WAY MOST
PEOPLE TEND TO USE IT.
213 RDH 9-DEC-76
CHANGE SKIPN'S TO SKIPE'S IN [207] AND CAILE TO CAIL IN [210]
214 RDH 18-DEC-76
MATCH ANGLE BRACKETTS IN EDIT [212] COMMENTS TO KEEP VARIOUS
AND SUNDRY PEOPLE HAPPY.
215 RDH 19-DEC-76
IF SPYSEG THEN NO HISEG SYMBOL TABLE.
216 RDH 19-DEC-76
CHKHSM ROUTINE ([200],[201]) IS TOO RESTRICTIVE, WON'T ALLOW
.JBHSM TO POINT TO LOW SEG; CHKADR ROUTINE WON'T ALLOW RANDOM
NON-CONTIGUOUS PAGES.
217 RDH 19-DEC-76
NAMSET ROUTINE (TO HANDLE MODULE$:) ASSUMES HIGH SEGMENT ALWAYS
STARTS AT 400000, LEADING TO SUBSEQUENT ILL MEM REF'S.
220 JNG 28-JAN-77
PREVENT ILL MEM REF ON PATCH CLOSE WHEN USING A WRITE-LOCKED
(E.G. HISEG) SYMBOL TABLE.
DDT %40(220) MARCH, 1977
221 TAH 13-MAR-77
ADD COMMAND FRONT END TO INTERFACE FILDDT TO TOPS-20 SYSTEM.
ADD KL PAGING CODE TO CVTADR, ALL UNDER FTFD20 CONDITIONAL
(FTFILE MUST STILL BE ON ALSO).
222 ASM 13-MAR-77
IN EXEC DDT DETERMINE EXEC VIRTUAL ADDRESS OF EPT BY SCANNING
EXEC VIRT ADR SPACE IF PAGING IS ON.
223 TAH 13-MAR-77
MAKE LPDL LARGER FOR TOPS-20 MDDT
224 RDH 13-MAR-77
MAKE SEARCHES HANDLE NON-CONTIGUOUS CORE/FILE IMAGES, ADD
TWO NEW ASSEMBLY PARAMETERS:
INDPTH ;MAX INDIRECT NESTING FOR $E SEARCHES
LISCNT ;NUM OF <PUSHJ P,LISTEN>'S TWEEN INCHRS'S
225 RDH 13-MAR-77
HANDLE TYPEOUT RADIX .GE. 10 (E.G., HEX) MORE GRACEFULLY
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 17
INTERNAL CHANGES
226 RDH 13-MAR-77
EDIT 215 IS WRONG, .GTSGN == 14
227 JNG 13-MAR-77
ADD CODE TO DDT TO WRITE-ENABLE PAGES ON TOPS-20 BEFORE
ATTEMPTING TO WRITE THEM - E.G., FOR BREAKPOINTS, PATCHS,
AND SO FORTH. IF PAGE NOT WRITE-ENABLED, SET COPY-ON-WRITE
SO AS NOT TO ZAP OTHER USERS "SHARING" THE PAGE.
230 RDH 13-MAR-77
WHEN IN A COMMAND FILE ($Y) THEN DO NOT CHECK THE COMMAND
FILE FOR INPUT ON CALLS TO LISTEN - ONLY ACCEPT PHYSICAL
TTY INPUT.
231 RDH 14-MAR-77
CLEAR $U POINTERS IN FILDDT ON ^Z, START SEQUENCE
232 RDH 14-MAR-77
UPDATE LH(.JBSA) ON PATCH END IF .JBFF WAS DEFAULTED TO
ON PATCH BEGIN. THIS WAY THE PATCH IS AT LEAST SAVED ON
SAVE'S, RESET'S, AD NAUSEUM.
233 RDH 14-MAR-77
REVAMP PATCH LOGIC ($< AND $>) TO DISPLAY LOCATION BEFORE
MODIFYING SAME LOCATION SO THAT FILDDT CAN PATCH RUNNING
MONITOR (ALSO LOOKS NEATER).
234 RDH 23-MAR-77
ADD NEW "MASK" COMMAND <N>$2M TO SET THE SYMBOL OFFSET RANGE
(I.E. THE RANGE IN WHICH VALUES WILL BE TYPED IN THE FORM
SYMBOL+<OFFSET>) TO <N>. ADD ASSEMBLY PARAMETER "ADRNGE"
AS THE DEFAULT VALUE. ALSO MAKE $1M/ ETC. WORK.
235 RDH 24-MAR-77
REVAMP BYTE TYPEOUT LOGIC: ADD <N>$3M AS BYTE TYPEOUT MASK
(EACH "1" BIT IN THE MASK MARKS THE END OF A BYTE, BIT 35
IS ALWAYS CONSIDERED THE END OF A BYTE). FOR VALUES OF <N>
SUCH THAT 1 .LE. <N> .LE. 36(10) THE COMMANDS $<N>O & $$<N>O
WORK AS USUAL BY SETTING AN INTERNAL BYTE MASK. FOR <N> = 0
THE $3M BYTE MASK WILL BE USED. FOR <N> = <NULL> (I.E. THE
$O COMMAND) THE CURRENTLY PREVAILING $O OR $$O MASK WILL
BE USED IF NON-BLANK, ELSE THE $3M MASK WILL BE USED.
$$O MAKES PERMANENT THE CURRENTLY PREVAILING $O (OR $$O)
BYTE MASK.
236 RDH 14-APR-77
ADD IFN FTYANK CONDITIONALS SO THAT FILDDT CAN BE ASSEMBLED
WITH FTYANK TURNED OFF
237 RDH 17-APR-77
GENERAL CLEANUP AND REARRANGEMENT. MAKE TOPS-10 DDT SEARCH
THE "C" UNIVERSAL FILE. TYPE OUT "DDT" WHEN USER MODE DDT
IS ENTERED. PUT TOPS-10-SPECIFIC CODE UNDER "IFN FTDEC10"
RATHER THAN "IFE FTDEC20".
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 18
INTERNAL CHANGES
240 RDH 15-JUN-77
ADD CODE TO TYPE OUT SYMBOLIC WORDS WITH USER-DEFINED SYMBOLS
SUCH AS THE CALLI OR JSYS MNEMONICS. ORDER OF SEARCH IS:
1) OPCODE & AC & I & X & Y FIELDS
2) OPCODE & I & X & Y FIELDS (E.G. CALLI OR JSYS)
3) OPCODE & AC FIELDS (E.G. TTCALLS)
4) OPCODE ONLY
5) HARDWARE-KNOWN OPCODE (JRST, ETC.)
PUT CODE UNDER FTOPX .NE. 0 CONDITIONAL SINCE UNTIL SORTED
SYMBOL TABLES AVAILABLE THIS CODE TAKES MUCH RUN TIME.
ALSO MAKE TRXX AND TLXX TYPE OUT ADDRESS AS OCTAL RATHER
THAN SYMBOL+OFFSET.
241 RDH 15-SEP-77 SPR # 10-22011
"777777" COULD GET TYPED OUT AS "-1" WHEN $X'ING IF THE
AC BEING TYPED OUT WAS TYPED OUT IN XWD FORMAT.
242 RDH 16-SEP-77 SPR # 10-22616
"AOS UND#(AC)" LOST BOTH THE UND SYMBOL AND THE AC IN
THE WORD BEING BUILT (I.E., LEFT ONLY THE AOS).
243 RDH 16-SEP-77 SPR # 10-22788
PATCHING WITH FILDDT WRONG IF NONE OF THE USUAL PATCHING
SYMBOLS (PAT.., PAT, PATCH) ARE PRESENT AND THUS PATCHING
DEFAULTS TO C(.JBFF) - THE .JBFF USED WAS FILDDT'S, NOT
THE FILE'S.
244 RDH 16-SEP-77 SPR # 10-22894
SOME RUBOUT'S STILL GET TYPED OUT.
245 RDH 17-SEP-77 SPR # 10-23013
AFTER REFERENCING AN UNDEFINED SYMBOL, THE UNDEFINED SYMBOL
IS LEFT IN THE SYMBOL CACHE WITH ITS BOGUS VALUE (E.G., THE
ADDRESS TO FIX UP).
246 RDH 25-SEP-77
BE MORE CHOOSEY ABOUT TYPE-IN INVOLVING UNDEFINEDS - CATCH ERRORS
SUCH AS "PUSHJ UND#,FOO" OR "MOVE 4,(UND#)"
250 JNG 15-Aug-78
Search UUOSYM, MACTEN instead of C.
DDT %40A(250) October, 1978
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 19
INTERNAL CHANGES
11.2 Changes From DDT 40A(250) To DDT 41(265)
247 RDH/JNG 16-OCT-77 TO 28-JUN-78
MASSIVE DEVELOPMENT AND REVAMPING: EXTENDED ADDRESSING; JSYSIZE FILDDT;
REMOVE SYMBOL CACHE; ADD $0W AND $1W; DISK SUPER I/O (FILDDT);
PHYSICAL MEMORY ADDRESSING; KS-10 SUPPORT; KI/KL PAGING SUPPORT;
$Z; $8T AND $9T; $.; $U ENHANCEMENTS; $B ENHANCEMENTS; $X EN-
HANCEMENTS; DECOMMIT EXEC PAPER TAPE STUFF; SYMBOLIC TYPEOUT
ENHANCEMENTS; $Y ENHANCEMENTS (TOPS-10 ONLY); NUMEROUS RANDOM
BUG FIXES. CALL VERSION 41.
251 JNG/RDH 15-Aug-78 to 26-Jan-79
Continuing and fixing bugs in 247: Implement hiseg symbol tables
in FILDDT; Allow the symbol table to be in another address space
for EDDT and MDDT; Add $: with no argument; Add "M" error.
252 JNG 4-Feb-79
Change hidden symbol logic to do exec virtual BLT's instead
of switching the EPT base address.
253 DIB 8-Mar-79
Insert a new symbol table cache for output only. Also move
data pages below code pages so symbol cache will fit in UDDT.
254 JNG/RDH 8-Mar-79
Get FAKEAC logic right in $U commands. Broken by 251. Only
setup .JBVER if FILDDT. Add /A (abort on command error) for
$Y. Make ^W work more reasonably on -10. Make fancy rubout
handling automatic on -10 (7.01 only). Add $$. as previous
$. (useful for $$.<$$X etc.).
255 RDH 31-Mar-79
Lost instruction in EDDT for KI-10's. Suppress address breaks
in fetch and store logic. If $$X'ing (or $W'ing (searching)
or $Z'ing (depositing)) and user types a ? then give a quickie
typeout status. Second field test for TOPS-10 7.00.
256 RDH 17-Apr-79
Random version 41 bugs (in particular $P of a breakpoint caused
by XCT'ing a breakpoint location failed). Handle ERCAL/JMP on
$P. Handle INIT UUO.
257 JNG 21-Apr-79
Convert $U command to function codes.
260 RDH 13-May-79
Add ADR$V command to "watch" a location and report any change in
its contents (ADR defaults to last location opened).
261 RDH 22-May-79
Stupid little bugs.
262 RDH 8-Jul-79
DDT41.DOC -- Changes from DDT 37(201)/40A(220) to DDT 41(265) Page 20
INTERNAL CHANGES
XJRSTF and friends want all 36 bits of PC flags, not just the
left-most 18 bits. $I+3 is 36-bit PC flags, $I+4 is 36-bit PC.
263 RDH 16-Jul-79
More stupid little buggies. In particular, n$P broke.
264 DZN 25-Oct-79
Replace SUB in LOOKDN with equivalent code that doesn't overflow.
265 DZN 6-Nov-79
Remove multiply-defined globals $nB, $I, $M when KDDT and MDDT are
loaded together.
12.0 SUGGESTIONS
The following suggestion list has been accumulated from various
sources, including SPRs and DECUS sessions. The appearance of a
suggestion on this list does not necessarily mean that DIGITAL ever
intends to implement it.
1. Implement a byte typein and typeout facility.
2. Implement sorted and block-structured symbol tables.
3. Add error messages.
[End of DDT41.DOC]
DDT43.HLP - new features for DDT version 43
This help file briefly describes new features implemented in DDT 43(474).
It only discusses changes in user mode.
Summary of new commands:
$4M sets/displays inter-section breakpoint block location.
$5M sets/displays symbol table location info.
$6M sets/displays permanent default section.
$$:/text/ specifies a PDV by name.
$$1: types name of current PDV if any.
1. Inter-section Breakpoints
It is now possible to have DDT in one (non-0) section and set breakpoints in
any section. In order to make this work, DDT uses a "breakpoint block" in
the section you set the breakpoint in. "$4M/" displays the (in-section)
address of the block, "n$4M" sets it to n. The block in each section is
at the same section-relative address; the left half of $4M is ignored.
By default this block is set to the very high end of the section (777722).
If you want to use that area for something else, you need to change $4M.
WARNING: the breakpoint block is at the same section-relative address in
every section. There is no way to set different block locations for different
sections.
2. Specifying Symbol Tables
With the recent growth in the use of extended sections, has come the situation
where several distinct "programs" are mapped into a single fork. Each of
these is likely to have its own symbol table. DDT will still only understand
one symbol table (or set of tables, if you consider hiseg and loseg) at a time,
but you can now switch between them. Control of this centers around the DDT
location/command $5M. There are lots of cases, and I've gone to some trouble
to try and make it work without you having to do much. But just in case:
The "normal" case of a section 0 program and DDT brought in by the @DDT
command should work the way it always did. The EXEC stuffs pointers into
DDT and $5M is zero.
EXEs mapped into different sections fall into two classes; those with PDVs
and those without. Those without still have JOBDATs, and you can select
that EXE's symbol table(s) by typing "-1,,n$5M" where n is the section
the EXE is mapped into.
If the EXE has a PDV, and the PDV was built by a LINK v6 that can build
proper symbol table vectors, you can use one of two commands to tell DDT
where the PDV is. If you happen to know the address of the PDV, just
type "n$5M" where n is the address. Most likely you don't know, but you
can find out the name with the @INFO VERSION command. Then you can type
"$$:/pdv name/" to DDT and it will search for the PDV by name, and set
$5M for you. DDT only uses the first 39 characters; if your PDV name is
longer than 39 characters, you'll have to use the n$5M command.
In FILDDT the $$: and $5M commands write any changes to the old symbol table
back to the file, and then read the new symbol table in. If it is successful
you should get a message something like "[978 symbols loaded from file]" when
it's done. Obviously these commands are only useful in EXE files.
3. Default Section Number
Many people have complained about the sometimes bizarre way that DDT defaults
section numbers. By default you still get that behavior (I'm working on it,
folks). If you are consistently working in just one section, though, you
can tell DDT to always use it by typing "n,,0$6M". This sets the "permanent
default section." Get back to the old "floating" default with "-1$6M".
4. instruction$X
In the past, instruction$X always executed in DDT's section. This was fine,
since DDT could only handle one section. Now, however, instruction$X will
execute in the current default section. If $6M is set, that section will
be used, otherwise the last referenced section will be used. If you're
not sure, just open a location in the section you want. In most cases it
doesn't make any difference which section is used, but in some cases (such
as with local byte pointers or stack pointers) it does.
5. Symbolic Typeout
If you have symbols defined with section numbers, DDT will use them in
typeout when appropriate. Basically, this means that a word containing
a 30-bit address won't come out in halfword format if there's a symbol
for it. DDT will also tack on a section number to the Y field of an
instruction to look up a symbol; if that fails it will use a zero left half
like always.
[End of DDT43.HLP]
[End of DDT-INFO.MEMOS]