Google
 

Trailing-Edge - PDP-10 Archives - BB-J939B-BM - documents/six12.hlp
There are 8 other files named six12.hlp in the archive. Click here to see a list.
SIX12.HLP -- HELP FILE for SIX12 Version 6.23, 10-Dec-79 [9 pages]


SIX12 is a routine-oriented interactive debugging module for use  with
BLISS-10, BLISS-36C and BLISS-36 on DECsystem-10 and DECsystem-20.


This summary is organized as follows:

         1.  Commands
         2.  Expressions
         3.  Numbers, Names and Strings
         4.  Global Entry Points and Data Areas
         5.  Compilation, Linking and Getting Started
         6.  Notational Conventions


1.  COMMANDS

! comment           ! at the beginning of a command line  indicates  a
                    comment and the line is ignored.

exp                 Evaluate the  given  expression  and  display  its
                    value.

exp1 = exp2         Assign the value of exp2 to the address  given  by
                    exp1.  (Do not display the value of exp2.)

exp1<p,s> = exp2    Assign the (truncated) value of exp2 to the s  bit
                    field  located p bits from the low end of the word
                    at address exp1.  (Do not display any value.)

exp/                Display the contents of the word at  address  exp.
                    ("/"  is  also used as the division operator;  see
                    Section 2, especially note 4.)

exp1 ! exp2         Display the contents of  exp2  words  starting  at
                    address exp1.

command ;...        Perform a sequence of commands.

ABREAK routine ,... Set breakpoint at end  of  the  given  routine(s).
                    (Can be used with IF.)

BASE                Display current number radix (default 8).

BASE n              Set number radix to n (1<n<11 decimal).

BIND name = exp     Enter name in DDT symbol table with value of exp.

BREAK routine ,...  Set breakpoint at entry to the  given  routine(s).
                    (Can be used with IF.)

CALL { n }          Display last n calls  on  routine  stack  (without
                    locals);   if  n omitted, display last call.  (See
                    also LCALL.)

CALLS               Display entire stack  of  routine  calls  (without
                    locals).  (See also LCALLS.)

CLRTRACE            Turn off trace mode.

DABREAK routine ,...
                    Delete  breakpoint  at  end   of   (after)   given
                    routine(s).

DBREAK routine ,... Delete  breakpoint   at   entry   of   the   given
                    routine(s).

DDT                 Transfer control to DDT.  Return  to  SIX12  using
                    SIXRET$X  (where  $  is  altmode/escape).   If  no
                    symbol table  is  present,  then  use  JRST @130$X
                    (ie., JRST @.JBOPC$X).

DEFINE              Define an operator.  (See SIX12 Manual).

DISABLE             Turn off terminal monitoring.  Enables  type-ahead
                    and  faster  execution.   (Terminal  monitoring is
                    automatically turned on at any breakpoint.)

DMONITOR field ,... Delete monitoring of changes in  contents  of  the
                    given field(s).

DOPAQUE routine ,...
                    Delete OPAQUE status for the given routine(s).

DOPAQUE AFTER routine ,...
                    Delete  OPAQUE  AFTER   status   for   the   given
                    routine(s).

DTRACE routine ,... Delete TRACE status for the given routine(s).

DTRACE AFTER routine ,...
                    Delete  TRACE   AFTER   status   for   the   given
                    routine(s).

DTRACE FROM routine ,...
                    Delete TRACE and TRACE AFTER status for the  given
                    routine(s).

FORGET macro-name ,...
                    Delete definition of the given macro name(s).

GO                  Resume (or start) program execution.

GOTRACE             Resume (or start) program execution in trace  mode
                    (same as SETTRACE;GO).

IDENT               Display complete identification of  SIX12  version
                    in use, including linkage/register conventions.

IF $condition$      Can  preceed  certain  commands  (ABREAK,   BREAK,
                    OPAQUE,  OPAQUE  AFTER,  TRACE, TRACE AFTER, TRACE
                    FROM)  to  make  the  action  conditional   during
                    program  execution.   ($  is  altmode/escape.) The
                    condition must be a SIX12 expression that  returns
                    a  value.   The  condition  is  evaluated when the
                    routine given by the command is entered or exited;
                    if  the  condition  is true (low bit equals 1) the
                    command is performed, otherwise (low bit equals 0)
                    the command is ignored.

LCALL { n }         Display last n calls on  routine  stack  including
                    locals;  if n is omitted, display last call.  (See
                    also CALL.)

LCALLS              Display entire stack of routine  calls,  including
                    locals.  (See also CALLS.)

LOAD 'filename { .ext } { [ppn] }'
                    Load SIX12's internal tables from the  given  file
                    with  control information saved by a previous SAVE
                    command.   Device  DSK:   is  assumed.   (Existing
                    control information is replaced.)

LPTCLOSE            Close line printer listing file and queue  it  for
                    printing and deletion.

LPTDUP              Send SIX12 output to  both  line  printer  listing
                    file   and   terminal.   (Output  is  restored  to
                    terminal only at a breakpoint.)

LPTOFF              Stop sending SIX12  output  to  the  line  printer
                    listing file;  send output to the terminal.

LPTON               Send SIX12 output to the line printer listing file
                    and  do  not send output to the terminal.  (Output
                    is restored to the terminal only at a breakpoint.)

LPTOPEN             Open a line printer listing file to receive  SIX12
                    output.   No  output  is  sent to the file until a
                    LPTON or LPTDUP command is given.  When  the  file
                    is  closed  (using  LPTCLOSE) it is spooled to the
                    line printer and deleted.

MACRO name = $text$ Define the given name as a macro  with  the  given
                    replacement text.  ($ is altmode/escape.)

MONITOR field ,...  Monitor the given field(s) and report any  changes
                    in contents.

NODEBUG             Disable SIX12 and resume  execution.   (The  DEBUG
                    UUO is rendered a no-op and execution is faster.)

OPAQUE routine ,... Make the given routine(s) and any called  routines
                    opaque to tracing;  that is, tracing is turned off
                    until the routine exits.  (Can be used with IF.)

OPAQUE AFTER routine  ,...
                    Make any routines called  by  the  given  routines
                    opaque  to  tracing;   that is, the given routines
                    will be traced but routines they call will not  be
                    traced.  (Can be used with IF.)

PRINT ACTION type { routine }
                    Display the condition  for  the  execution  action
                    type  associated  with  the given routine;  if the
                    routine is omitted, information for  all  routines
                    is displayed.  The type must be one of:

                         ABREAK, BREAK, OPAQ, OPAQAF
                         TRACE, TRACEA, ALL

                    where the first six types correspond to  (obvious)
                    action  commands.   If  ALL  is  given,  then  all
                    actions apply.

PRINT MACRO { macro }
                    Display the replacement text for the  given  macro
                    name;   if  the name is omitted, display all macro
                    names with replacement text.

PRINT MONITOR       Display all monitored  fields  and  their  current
                    contents.

PRINT OPER          Display     information     about     a      SIX12
                    operator/command.  (See SIX12 Manual.)

PRS name ,...       Display all DDT symbol table entries for the given
                    name(s).   (A  "*"  following a name indicates the
                    name is not used for type out.)

RESET               Issue  monitor  reset  command  to  terminate  all
                    input/output  and  start  over.   SIX12  does  not
                    reinitialize itself.

RETURN exp          Depends on the state of SIX12 as follows:
                      o   At entry of a  routine  (BREAK),  cause  the
                          routine  to return without executing and use
                          the given exp as the value of the routine.
                      o   At exit of a routine (ABREAK), return  using
                          the  given  exp  as the value instead of the
                          actual value.
                      o   If SIX12 was explicitly called, then  return
                          using exp as the routine value.

SAVE 'filename { .ext } { [ppn] } '
                    Save information from SIX12's internal  tables  in
                    the  given  disk  file.   Device DSK:  is assumed.
                    The following information is saved:

                         Macro definitions
                         Monitored locations
                         Execution time actions (BREAK, etc.)

                    (Can be used to recover table  space  for  deleted
                    macros   or   conditions   for  deleted  execution
                    actions.)

SEARCH 'partial-name'
                    Display all DDT symbol table  entries  that  match
                    the   given  partial  name.   A  "?"  matches  any
                    character in the corresponding position (as in the
                    monitor DIRECTORY command).

SETTRACE            Turn on trace mode.

TRACE routine ,...  During execution, trace the entry and exit of  the
                    given routine(s).  (Can be used with IF.)

TRACE AFTER routine ,...
                    During execution,  turn  on  trace  mode  for  any
                    routines  that are called by the given routine(s).
                    (Can be used with IF.)

TRACE FROM routine ,...
                    During execution, trace the entry and exit of  the
                    given  routine(s)  and  turn  on tracemode for any
                    routines that are  called.   (Same  as  TRACE  and
                    TRACE AFTER together.) (Can be used with IF.)

WBASE               Display current display offset limit.

WBASE n             Set current display offset limit to n.


2.  EXPRESSIONS

Priority    Form                     Meaning

10          ( exp )                  Parenthesis grouping
            ( exp ;... )             Compound expression
            routine ( exp ,... )     Routine call
            exp [ exp ]              VECTOR structure reference
            exp <p,s>                Field reference (byte pointer)

 9          . exp                    Fetch contents of word (note 1)
            . exp <p,s>              Fetch contents of field
            @ exp                    Fetch contents of word (note 2)

 8          exp ^ exp                Shift (note 3)

 7          exp * exp                Multiplication
            exp / exp                Division (note 4)

 6          exp + exp                Addition
            exp - exp                Subtraction
            + exp                    Unary plus
            - exp                    Negation

 5          NOT exp                  One's complement

 4          exp AND exp              Bitwise logical and
            exp OR exp               Bitwise logical inclusive-or

 3          exp EQL exp              Equal
            exp NEQ exp              Not equal
            exp LSS exp              Less than
            exp LEQ exp              Less than or equal
            exp GTR exp              Greater than
            exp GEQ exp              Greater than or equal

 2          exp = exp                Assign (notes 1 & 5)
            exp <p,s> = exp          Assign to field (notes 1 & 5)

 1          exp ;...                 Sequence of expressions


Notes:
     1.  Fetch (.) and assign (=) actually examine the high half  word
         of  the (left) operand value.  If zero, a full word access is
         performed;  otherwise, a byte pointer access is performed.
     2.  "@exp" is equivalent to ".exp<0,36>".
     3.  In BLISS-10, "^" is a logical shift.  In BLISS-36(C), "^"  is
         a logical shift left and an arithmetic shift right.
     4.  The  expression  "exp/-exp"  is  ambiguous  (meaning   either
         "(exp/)-exp"  or  "exp/(-exp)")  because  "exp/"  is  also  a
         command.  Parenthesis are recommended around unary  operators
         adjacent  to  "/",  as in "exp/(-exp)", to assure that "/" is
         interpreted as the division operator.
     5.  The assign expression is syntactically  like  an  expression,
         but  does  not  produce  at  value.   Hence, it may not be an
         operand where a value is needed.


3.  NUMBERS, NAMES AND STRINGS

number         A number is a sequence of  digits  interpreted  in  the
               current radix (initially base 8).

#number        # alters the radix for the following  number:   if  the
               current  radix  is 8, then use base 10;  otherwise, use
               base 8.

number %A      Refers to the address of the n'th actual  parameter  of
               the current routine (when stopped at a routine entry or
               exit).

number %L      Refers to the address of the n'th  local  word  of  the
               stack  frame  of the current routine (when stopped at a
               routine entry or exit).  Local words include any  saved
               register values, stack management control words, and so
               on, that may be  allocated  after  the  frame  pointer.
               Consequently,  a machine code listing will generally be
               required to determine  the  appropriate  offset  for  a
               particular local data segment name.

name           A name is 1 to 6 characters from the set:  "A" to  "Z",
               "a"  to  "z",  "0" to "9", "$", "&" and "_".  The first
               character must not be a digit.  Lower case letters  are
               converted to uppercase, "&" is converted to "." and "_"
               is converted to "%".

               Names are typed out using "." and "_", (except BLISS-10
               versions use "." and "%").

               Names are looked up in one of three  symbol  tables  in
               this  order:  SIX12 macro table, SIX12 operator/command
               table, DDT symbol table.  The value of a  name  is  the
               address  or  offset obtained from the DDT symbol table.
               (Module names are ignored in DDT symbol table look up.)

?name          ? allows the following name to include  the  characters
               "."  and "%".  (If %n is used after a name with ?  then
               a blank must separate them.)

name %n        Refers to the n'th entry for name  in  the  DDT  symbol
               table.  (Module names are ignored and not counted.)

name %0        Refers to the SIX12 command or operator with the  given
               name.

'c ... '       A  string  of  up  to  five  7-bit  ASCII   characters,
               left-justified, trailing blanks.

"c ... "       A  string  of  up  to  five  7-bit  ASCII   characters,
               right-justified, leading nulls.


4.  GLOBAL ENTRY POINTS AND DATA AREAS

All global symbols in SIX12 begin with the three letters "SIX".  These
symbols, in alphabetical order, are:

SIX10          Initialization entry used for BLISS-10.

SIX12          User callable entry to explicitly invoke SIX12;  called
               with one parameter.

SIX36C         Initialization entry used for BLISS-36C.

SIX36          Initialization entry used for BLISS-36.

SIXDDT         Jump  address   to   start   SIX12   from   DDT   using
               JRST SIXDDT$X.   A valid stack (register SIXSP) must be
               set up first, if necessary.   If  SIX12  has  not  been
               initialized,   then  use  PUSHJ SIXSP,SIXxxx$X  instead
               (where SIXxxx is one of SIX10, SIX36C or SIX36,  and  $
               is altmode/escape).

SIXENF         Enable flag value.  May be redefined  using  LINK  (see
               Section 5).

SIXOSA         Routine entry point to print an  ASCIZ  string  on  the
               terminal  using  the  SIX12  internal  routine for this
               purpose.  Called with one parameter, the address of the
               beginning of the string.  (Must be called using BLISS10
               or BLISS36C linkage from BLISS-36.)

SIXPAT         Twenty word patch area.

SIXRET         Instruction to return to SIX12 after  the  DDT  command
               using SIXRET$X (where $ is altmode/escape).  (SIXRET is
               equivalent to "JRST @.JBOPC".)

SIXSP          Stack register name.  (Suppressed for type out.)

SIXSTF         Start flag value.  May be  redefined  using  LINK  (see
               Section 5).

SIXSTK         Contains value of stack pointer register when SIX12  is
               first initialized.

SIXUUO         Address of SIX12 handler for the DEBUG UUO.


5.  COMPILING, LINKING AND GETTING STARTED

There are five versions of SIX12 for use as follows:

On TOPS-10         Use With

   SIXA12.REL  1)  BLISS-10, using default register assignments
               2)  BLISS-36C, using BLISS10_REGS module switch
               3)  BLISS-36, using BLISS10 linkage

   SIXB12.REL  1)  BLISS-10, using /Z register assignments
               2)  BLISS-36C, using default register assignments
               3)  BLISS-36, using default linkage

   SIXC12.REL  1)  BLISS-36, using BLISS linkage

On TOPS-20

   SIXD12.REL  1)  BLISS-10, using /Z register assignments
               2)  BLISS-36C, using default register assignments
               3)  BLISS-36, using default linkage

   SIXE12.REL  1)  BLISS-36, using BLISS linkage


Note:  TOPS-10 versions can be used on TOPS-20 with the  compatibility
package.


5.1  Use with BLISS-10

Compile all modules with the /D switch or with the DEBUG switch in the
module-head.   The  main  module  must  also contain the module switch
"TIMER=EXTERNAL(SIX10)".


Link the program using the linker /DEBUG or /TEST switch to  obtain  a
DDT symbol table and include the appropriate SIX12 module (see above).
For example:

         @LINK
         */TEST
         *M1,M2,...,Mn,SIXA12/GO


When execution starts SIX12 is initially in  control.   It  identifies
itself and prompts for commands using "&".


5.2  Use with BLISS-36C and BLISS-36

Compile all modules of the program with the /DEBUG command  switch  or
the DEBUG module-switch.


Link the program using the /DEBUG or /TEST linker  command  switch  to
obtain  a  DDT  symbol  table.   The  appropriate  version of SIX12 is
automatically included from the BLISS-36(C) library.  For example:

         @LINK
         */TEST
         *M1,M2,...,Mn/GO

When execution starts SIX12 is initially in  control.   It  identifies
itself and prompts for commands by using "&".


5.3  General Notes

It is not necessary to compile all modules of a program for debugging;
only  the  main  module  must  so  compiled.   However,  commands  for
breakpoints, tracing, and so on,  will  not  operate  on  routines  in
modules  that  are not compiled for debugging.  (For debugging, a user
UUO (37 octal) is compiled at the beginning and near the end  of  each
routine.  This provides the means for SIX12 to maintain control of the
program.)


Two options can be selected when linking a program.  If you define the
global  symbol  SIXSTF to have value 0 using the linker switch /DEFINE
(eg.  "/DEFINE:SIXSTF:0") then SIX12 immediately starts  execution  of
the  program without prompting for commands.  Similarly, if you define
the symbol SIXENF to  have  value  0  (eg.   "/DEFINE:SIXENF:0")  then
terminal  monitoring  mode  is  disabled.   (This is equivalent to the
DISABLE command.) (Note:  the linker may give a warning  message  that
you are redefining a symbol;  this message should be ignored.)


These two options together are particularly useful for a program  that
is  in semi-production use, but for which you want to have SIX12 ready
in case of problems.  If  problems  do  arise,  then  enter  DDT  from
monitor  mode.   The  program  stack  register (SIXSP) must be set up.
Also, deposit PUSHJ SIXSP,SIXUUO in  location  .JB41  if  the  NODEBUG
command  was  given.   Next give the command JRST SIXDDT$X (where $ is
altmode/escape).  SIX12 then prompts for commands.


SIX12 attempts to modify its DEBUG UUO's at times.  If the memory page
on  which a routine resides is write-protected this can cause problems
when running under TOPS-20.  If you find yourself  in  this  situation
the following series of commands will take care of it.
         &DDT
         $W      SIXRET$X
         &
where "$" represents alt-mode.


If you are running a TOPS-10 SIX12 on a 20 you must tell  SIX12  where
DDT  is.   Generally  this can be done by setting location ".JBDDT" to
"770000".  This location is where DDT will be loaded by  TOPS-20  most
of  the  time.   You  can set this location from the EXEC by using the
deposit command.  Location ".JBDDT" is at octal 74.


6.  NOTATIONAL CONVENTIONS

    exp,
    exp1, exp2,
    p,s,n         a (SIX12) expression
    routine       an expression  whose  value  is  the  address  of  a
                  routine that begins with the DEBUG UUO
    { x }         x is optional
    x ,...        a  sequence  of  (one  or  more)  x's  separated  by
                  comma(s)
    x ;...        a  sequence  of  (one  or  more)  x's  separated  by
                  semicolon(s)
    x ...         a sequence of (one or more) x's with no separator


[end of SIX12.RNH]