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]