Google
 

Trailing-Edge - PDP-10 Archives - QT020_T20_4.1_6.1_SWSKIT_851021 - swskit-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]