HPlogo System Debug Reference Manual > Chapter 4 System Debug Command Specifications

ENV

MPE documents

Complete PDF
Table of Contents
Index

E0201 Edition 4 ♥
E0300 Edition 3
E0692 Edition 3

Assigns a new value to one of the predefined environment variables.

Syntax



   ENV var_name [=] var_value

The environment variables allow control and inspection of the operation of System Debug.

Parameters


var_name

The name of the environment variable to set.

var_value

The new value for the variable, which can be an expression.

The environment variables are logically organized in the following groups:

(cmd)

Command related

(cmreg)

Compatibility mode registers

(const)

Predefined constants

(fpreg)

Native mode floating-point registers

(io)

Input/output related

(limits)

Limits

(misc)

Miscellaneous

(nmreg)

Native mode registers

(system)

System-wide Debug registers

(state)

All nmreg + cmreg + fpreg registers

(win)

Window

Access rights abbreviations are listed below. PM indicates that privileged mode (PM) capability is required.

d

Display access (DR command)

D

PM display access (DR command)

m

Modify access (MR command)

M

PM modify access (MR command)

r

Read access

R

PM read access

w

Write access

W

PM write access

Two names separated by a hyphen indicate a range of names. For example, ARG0 - ARG3 implies the full range: ARG0, ARG1, ARG2, and ARG3.

The Environment Variables - Sorted by Group


The following table lists all environment variables, arranged by their logical groups. A full alphabetically-sorted listing and description of each variable can be found following this table.

const - constants

   const   r     FALSE             : BOOL
   const   r     TRUE              : BOOL

cmd - command related

   cmd     rw    AUTOIGNORE        : BOOL
   cmd     rw    AUTOREPEAT        : BOOL
   cmd     rw    CMDLINESUBS       : BOOL
   cmd     rw    CMDNUM            : U32
   cmd     rw    ECHO_CMDS         : BOOL
   cmd     rw    ECHO_SUBS         : BOOL
   cmd     rw    ECHO_USE          : BOOL
   cmd     rw    ERROR             : S32
   cmd     r     MACRO_DEPTH       : U16
   cmd     rw    MULTI_LINE_ERRS   : U16
   cmd     rw    NONLOCALVARS      : BOOL
   cmd     rw    TRACE_FUNC        : U16

io - input/output

   io      rw    CM_INBASE         : STR
   io      rw    CM_OUTBASE        : STR
   io      r     COLUMN            : U16
   io      rW    CONSOLE_IO        : BOOL     (Debug only)
   io      rw    FILL              : STR
   io      rw    FILTER            : STR
   io      rw    HEXUPSHIFT        : BOOL
   io      rw    INBASE            : STR
   io      rw    JUSTIFY           : STR
   io      rw    LIST_INPUT        : BOOL
   io      rw    LIST_PAGELEN      : U16
   io      r     LIST_PAGENUM      : U16
   io      rw    LIST_PAGING       : BOOL
   io      rw    LIST_TITLE        : STR
   io      rw    LIST_WIDTH        : U16
   io      rw    NM_INBASE         : STR
   io      rw    NM_OUTBASE        : STR
   io      rw    OUTBASE           : STR
   io      rw    PROMPT            : STR
   io      rw    TERM_KEEPLOCK     : BOOL    (Debug only)
   io      rW    TERM_LDEV         : U16     (Debug only)
   io      rw    TERM_LOCKING      : BOOL    (Debug only)
   io      rw    TERM_LOUD         : BOOL
   io      rw    TERM_PAGING       : BOOL
   io      rw    TERM_WIDTH        : U16

limits - limits for macros and variables

   limits  rw    MACROS            : U16
   limits  r     MACROS_LIMIT      : U16
   limits  rw    VARS              : U16
   limits  r     VARS_LIMIT        : U16
   limits  rw    VARS_LOC          : U16
   limits  r     VARS_TABLE        : U16

misc - miscellaneous

   misc    rW    CCODE             : STR     (Debug only)
   misc    rw    CHECKPSTATE       : BOOL
   misc    r d   CPU               : U16
   misc    rW    CSTBASE           : LPTR
   misc    r     DATE              : STR
   misc    r     DISP              : BOOL
   misc    rW    DSTBASE           : LPTR
   misc    rw    DUMPALLOC_LZ      : U16
   misc    rw    DUMPALLOC_RLE     : U16
   misc    r     DUMP_COMP_ALGO    : STR
   misc    r     ENTRY_MODE        : STR
   misc    rW    ESCAPECODE        : U32     (Debug only)
   misc    r     EXEC_MODE         : STR
   misc    rw    GETDUMP_COMP_ALGO : STR
   misc    r     ICSNEST           : U16
   misc    r     ICSVA             : LPTR
   misc    r     ISM_ARCH          : S32
   misc    r     LASTPIN           : U16
   misc    rw    LOOKUP_ID         : STR
   misc    r     MODE              : STR
   misc    r d   MONARCHCPU        : U16
   misc    rw    MPEXL_TABLE_VA    : LPTR
   misc    r     PHYS_REG_WIDTH    : S32
   misc    r     PIN               : U16
   misc    rW    PRIV_USER         : BOOL
   misc    r     PROGNAME          : STR
   misc    r d   PSEUDOVIRTREAD    : BOOL
   misc    rw    PSTMT             : U16
   misc    rw    QUIET_MODIFY      : BOOL
   misc    rw    SYMPATH_UPSHIFT   : BOOL
   misc    r     SYSVERSION        : STR
   misc    r     TIME              : STR
   misc    rw    USER_REG_WIDTH    : S32
   misc    r     VERSION           : STR

win - window

   win     rw    CHANGES           : STR
   win     rw    CMPW              : LCPTR
   win     r     LW                : SADDR
   win     rw    MARKERS           : STR
   win     r     NMPW              : LCPTR
   win     r     PW                : LCPTR
   win     r     PWO               : SPTR
   win     r     PWS               : U32
   win     r     SHOW_CCTL         : BOOL
   win     r     VW                : LPTR
   win     r     VWO               : SPTR
   win     r     VWS               : U32
   win     rw    WIN_LENGTH        : U32
   win     rw    WIN_WIDTH         : U32
   win     r     ZW                : U32

cmreg - compatibility mode regs

   cmreg   r dm  CIR               : S16
   cmreg   r dm  CMPC              : LCPTR
   cmreg   r dm  DB                : S16
   cmreg   r dm  DBDST             : S16
   cmreg   r dm  DL                : S16
   cmreg   r d   MAPDST            : S16
   cmreg   r d   MAPFLAG           : S16
   cmreg   r dm  Q                 : S16
   cmreg   r dm  S                 : S16
   cmreg   r dm  SDST              : S16
   cmreg   r dm  STATUS            : S16
   cmreg   r dm  X                 : S16

nmreg - native mode regs

   nmreg   r dm  ARG0 - ARG3       : U32
   nmreg   r dM  CCR               : U16
   nmreg   r dm  CR0               : U32
   nmreg   r dm  CR8 - CR31        : U32
   nmreg   r dm  DP                : U32
   nmreg   r dM  EIEM              : U32
   nmreg   r dM  EIRR              : U32
   nmreg   r dM  IIR               : U32
   nmreg   r dM  IOR               : U32
   nmreg   r dM  IPSW              : U32
   nmreg   r dM  ISR               : U32
   nmreg   r dM  ITMR              : U32
   nmreg   r dM  IVA               : U32
   nmreg   r dm  PC                : LPTR
   nmreg   r dm  PCOB              : U32
   nmreg   r dm  PCOF              : U32
   nmreg   r dm  PCQB              : LPTR
   nmreg   r dm  PCQF              : LPTR
   nmreg   r dm  PCSB              : U32
   nmreg   r dm  PCSF              : U32
   nmreg   r dM  PID1 - PID4       : U16
   nmreg   r dM  PRIV              : BOOL
   nmreg   r d   PSP               : U32
   nmreg   r dM  PSW               : U32
   nmreg   r d   R0                : U32
   nmreg   r dm  R1 - R31          : U32
   nmreg   r dM  RCTR              : U32
   nmreg   r dm  RET0              : U32
   nmreg   r dm  RET1              : U32
   nmreg   r d   RP                : U32
   nmreg   r dm  SAR               : U16
   nmreg   r dm  SL                : U32
   nmreg   r dm  SP                : U32
   nmreg   r dm  SR0 - SR7         : U32
   nmreg   r dM  TR0 - TR7         : U32

fpreg - floating point regs

   fpreg   r dM  FP0 - FP15        : LPTR    (until S64 is supported)
   fpreg   r dM  FPE0 - FPE7       : U32
   fpreg   r dM  FPSTATUS          : U32

system - system wide debug

   system  rW    CONSOLE_DEBUG     : BOOL    (Debug only)
   system  rW    DYING_DEBUG       : BOOL    (Debug only)
   system  rW    JOB_DEBUG         : BOOL    (Debug only)

state - process state

The state variables consist of all NMREG, CMREG, and FPREG variables.

The Environment Variables - Sorted Alphabetically


The following table lists all predefined environment variables. Each variable description displays on the first line the variable name and type, group name in parentheses, and access rights, for example:
name

TYPE (group) access [*]

Environment variable description

Those variables flagged with a "*" have their value reset to their default value if the SET DEFAULT command is issued.
ARG0 - ARG3

U32 (nmreg) r dm

NM argument registers. These registers are used by the language compilers for parameter passing. (Alias for R26 - R23)

AUTOIGNORE

BOOL (cmd) rw *

Setting AUTOIGNORE is equivalent to using the IGNORE LOUD command before every command. When AUTOIGNORE is set, System Debug ignores errors (that is, the ERROR variable contains a negative value). Among other things, this means that System Debug continues processing USE files, macros, and looping constructs even though an error occurs while doing so. (Refer to the IGNORE command.) The default for this variable is FALSE.

AUTOREPEAT

BOOL (cmd) rw

Controls the automatic repetition of the last command whenever a lone carriage return is entered. Setting AUTOREPEAT allows repetitive operations (such as single stepping or PF) to be automatically executed by pressing Return. This variable may also be altered with the SET CRON and SET CROFF commands. The default value for the AUTOREPEAT variable is FALSE.

CCODE

STR (misc) rW

Condition code. This value is captured on entry to Debug. It is restored when the debugger resumes the process. Since Debug itself causes the condition code for the process to change, it is necessary to cache the original value. The following string literals are valid: "CCE", "CCG", "CCL".

CCR

U16 (nmreg) r dM

NM coprocessor configuration register. (Alias for CR10)

CHANGES

STR (win) rw

Selects the type of video enhancement used to flag window values modified since the last command. The following string literals are valid: "INVERSE", "HALFINV", "BLINK", "ULINE", and "FEABLE". Note that this is a string variable; thus, literals must be quoted. The default value is "HALFINV".

CHECKPSTATE

BOOL (misc) rw

If FALSE, inhibits validation of the process state when performing the following functions: PIB, PIBX, PCB, PCBX, CMG, CMSTACKBASE, CMSTACKDST, CMSTACKLIMIT, NMSTACKBASE and NMSTACKLIMIT.

CIR

U16 (cmreg) r dm

CM current instruction register.

CMDLINESUBS

BOOL (cmd) rw

Setting CMDLINESUBS enables command line substitutions (for example, expanding the "|" character in-line). When macro bodies use command line substitutions, it is sometimes desirable to disable CMDLINESUBS while reading the macro definitions in from a USE file. (Refer to the ECHO_SUBS variable). The default for this variable is TRUE.

CMDNUM

U32 (cmd) rw

The current command number is maintained as a running counter. This value is displayed as part of the default prompt string.

CMPC

LCPTR (cmreg) r

The full logical code address for CM, based on the current logical code file, logical segment number, and offset.

CMPW

LCPTR (win) r

The address (as a logical code address) where the CM program window is aimed.

CM_INBASE

STR (io) rw

The current CM input conversion base. When in cmdebug, all values entered are assumed to be in this base unless otherwise specified. The following values are allowed:

  • % or OCTAL

  • # or DECIMAL

  • $ or HEXADECIMAL

The names may be abbreviated to a single character. The default value is % (octal). Refer to the SET command for an alternate method of setting this variable.

CM_OUTBASE

STR (io) rw *

The current CM output display base. The following values are allowed:

  • % or OCTAL

  • # or DECIMAL

  • $ or HEXADECIMAL

The names may be abbreviated to a single character. The default value is % (octal). Refer to the SET command for an alternate method of setting this variable.

COLUMN

U16 (io) rw

The current character position in the user's output buffer. The position is advanced by the W and WCOL commands (or by the C directive in a format specification). Refer to the W command for details.

CONSOLE_DEBUG

BOOL (system) rW

If this system-wide flag is set, all processes entering the debugger for the first time automatically have their debug I/O performed at the system console with the system console I/O routines. Processes that have already entered Debug and have established a debugging environment are not affected by this variable. When this variable is set, the CONSOLE_IO variable is set to TRUE for all processes entering Debug for the first time. Setting CONSOLE_DEBUG is useful when doing system debugging. If global breakpoints have been set, all of the I/O can be directed to one terminal by setting this variable. The default value is FALSE.

This variable is not available in DAT.

CONSOLE_IO

BOOL (io) rW

If set, the current process uses the system console I/O routines to perform Debug I/O. No other processes are affected by this command. Note that this variable has precedence over the TERM_LDEV variable. System processes and jobs entering Debug (assuming the JOB_DEBUG environment variable was set), has this variable set to TRUE upon entry to the debugger. The default value is FALSE.

This variable is not available in DAT.

CPU

U16 (misc) r d

The CPU number of the processor that is being examined.

CR0

U32 (nmreg) r dm

NM control register 0 (alias for RCTR). Debug uses this value while single stepping.

CR8 - CR31

U32 (nmreg) r dm

NM control registers. These registers have the following aliases and names (for descriptions of their usage, refer to the PA-RISC 1.1 Instruction Set Reference Manual):

Table 4-6 NM Control Registers

Register Alias Description
CR0RCTRRecovery counter
CR8PID1Protection ID 1
CR9PID2Protection ID 2
CR10CCRCoprocessor configuration register
CR11SARShift amount register
CR12PID3Protection ID 3
CR13PID4Protection ID 4
CR14IVAInterrupt vector address
CR15EIEMExternal interrupt enable mask
CR16ITMRInterval timer
CR17PCSFPC space queue front
CR18PCOFPC offset queue front
CR19IIR Interrupt instruction register
CR20ISRInterrupt space register
CR21IORInterrupt offset register
CR22IPSW PSWInterrupt processor status word
CR23EIRRExternal interrupt request register
CR24TR0Temporary register 0
[vellip]
CR31TR7Temporary register 7

Refer to the PID environment variable entry for a detailed description of the format of PID registers.

Refer to the IPSW environment variable entry for a detailed description of the format for the PSW register.

CSTBASE

LPTR (misc) rW

The virtual address of the CST table.

DATE

STR (misc) r

The current date string in the form 'WED, OCT 14, 1951'.

DB

U16 (cmreg) r dm

The CM DB register.

DBDST

U16 (cmreg) r dm

The CM DB DST number.

DISP

BOOL (misc) r

A Boolean value that indicates whether or not the dispatcher is currently running. This value is always FALSE in Debug.

DL

U16 (cmreg) r dm

The CM DL register.

DP

U32 (nmreg) r dm

NM global data pointer register. (Alias for R27)

DSTBASE

LPTR (misc) rW

The virtual address of the CM DST table.

DUMPALLOC_LZ

U16 (misc) rw

Determines the percentage of disk space DAT will preallocate before restoring a dump encoded with LZ data compression. The percentage is relative to the space required to contain a fully uncompressed dump. This means if you normally expect your dumps to be compressed by 60%, setting DUMPALLOC_LZ to 40 should preallocate enough disk space to contain the entire dump.

DUMPALLOC_RLE

U16 (misc) rw

Similar to DUMPALLOC_LZ, except that it applies to dumps encoded with RLE data compression.

DUMP_COMP_ALGO

STR (misc) r

Set to the data compression algorithm used by the currently opened dump. Possible values are:

"NONE"

The dump is not compressed.

"RLE"

The dump is RLE-compressed.

"LZ"

The dump is LZ-compressed.

DYING_DEBUG

BOOL (system) rW

When a process is being killed, its state is said to be "dying." Once a process is in this state, Debug normally ignores all breakpoints, traps, and so on. If this system-wide variable is set to TRUE, Debug stops for all events even if the process is dying. This is useful to operating system developers only. It is possible to cause system failures if this variable is turned on and breakpoints are set at inappropriate locations. The default value for this variable is FALSE.

This variable is not available in DAT.

ECHO_CMDS

BOOL (cmd) rw *

When ECHO_CMDS is set, each command (other than those executed within macros) is echoed just prior to its execution. The default value for this variable is FALSE.

ECHO_SUBS

BOOL (cmd) rw *

When ECHO_SUBS is set, and CMDLINESUBS is enabled, command line substitutions are displayed as they are performed. In the following example, the first line displays the location of the substitution and the second line displays the result after the substitution has taken place. The default value for this variable is FALSE.


   subs > fv a.c0341450 "|symfile :student_record"
                         /\
   done > fv a.c0341450 "gradtyp:student_record"

ECHO_USE

BOOL (cmd) rw *

When ECHO_USE is set, each command line that is read in from a use file is echoed (along with the name of the USE file), prior to its execution. The USE file name is used as the prompt. The default value for this variable is FALSE.

EIEM

U32 (nmreg) r dm

NM external interrupt enable mask. (Alias for CR15)

EIRR

U32 (nmreg) r dM

The NM external interrupt request register. (Alias for CR23)

ENTRY_MODE

STR (misc) r

This variable contains either "NM" or "CM". For Debug, it indicates whether you entered either in cmdebug or nmdebug. For DAT, it just tracks the MODE variable.

ERROR

S32 (cmd) rw

The ERROR variable contains the most recent error number. It is cleared on entry to any user-defined macro. Refer to the IGNORE command, the ENV variable AUTOIGNORE, and the "Error Handling" section in Chapter 2 for additional error handling information. Note that only negative values constitute errors. Positive values are warnings.

ESCAPECODE

U32 (misc) rW

This is the last ESCAPECODE value that was stored for the process at the moment Debug was entered. This variable is restored when the debugger resumes execution of the process. Since Debug itself causes the escape code for the process to change, it is necessary to cache the original value.

This variable is not available in DAT.

EXEC_MODE

STR (misc) r

This variable contains either "NM" or "CM". It indicates the execution mode of the current process. This value is obtained from the TCB (operating system data structure). This value does not necessarily match the ENTRY_MODE variable.

FALSE

BOOL (const) r

The constant FALSE.

FILL

STR (io) rw *

This variable determines how leading zeros in right-justified data (refer to JUSTIFY variable) are output from the Display commands and in the windows. This variable may take on one of two quoted literal values: "BLANK" (show leading zeros as blanks) or "ZERO" (show leading zeros as zeros). The default value is "ZERO".

FILTER

STR (io) rw *

All output, with the exception of error messages and the prompts, passes through a final filtering process. Those lines that match the value in the FILTER variable are displayed and the rest are discarded. By default, FILTER is initialized to the blank string (&'&', &"&", or ) that matches all output. FILTER can be set to a regular expression for the purpose of pattern matching. For example, the following shows how to find the pattern "123" in memory. Only a line that contains "123" anywhere in the line is displayed. Note that FILTER is displayed as part of the default prompt.


   $6 ($10) nmdat > env FILTER 123
   $7 ($10) nmdat 123> dv a.c0000000, 4000
   $ VIRT a.c0001020   $ 40020330  4002033c  40012348  c0002342
   $ VIRT a.c0001238   $ c0062344  ffffffff  fffffec2  00000004
   $ VIRT a.c0003240   $ 00000001  0000cf42  40012362  000000bc
   $8 ($10) nmdat 123> env filter ''
   $9 ($10) nmdat >

Three lines of output were matched. The pattern "123" has been highlighted in the example to help point out where the pattern was found in the line. Notice that one of the lines contained the pattern as part of the address displayed by the DV command. We could use a fancier regular expression to have just those lines with a "123" in the data part of the output be displayed. In the following example, the regular expression translates into "Match those lines that start with a dollar sign (^$), are followed by any number of any characters (.*), that are followed by a dollar sign and a space ($ ), and followed by any number of any character (.*), and finally followed by characters 123 (123)."

   $a ($10) nmdat > env FILTER `^$.*$ .*123`
   $b ($10) nmdat ^$.*$ .*123> dv a.c0000000, 4000
   $ VIRT a.c0001020   $ 40020330  4002033c  40012348  c0002342
   $ VIRT a.c0003240   $ 00000001  0000cf42  40012362  000000bc
   $c ($10) nmdat ^$.*$ .*123> set def
   $d ($10) nmdat >

Note that only those lines with "123" as part of the data output by the DV command were matched and displayed. For additional information on how to specify regular expressions, refer to appendix A.

FP0-FP15

LPTR (fpreg) r dm

NM floating-point registers 0-15. The 64 bits of these registers are presented as long pointers until System Debug supports 64-bit integers.

FPE1-FPE7

S32 (fpreg) r dm

NM floating-point exception registers 1-7. These registers are extracted from FP0-FP3. That is, FPE1 is an alias for the right 32 bits of FP0, FPE2 is an alias for the left 32 bits of FP1, and so on. (Refer to the Precision Architecture and Instruction Reference Manual (09740-90014).)

FPSTATUS

U32 (fpreg) r dm

NM floating-point status register. (Alias for the left 32 bits of FP0.)

GETDUMP_COMP_ALGO

STR (misc) r

Determines the data compression algorithm to be used when creating a new dump disk file with the GETDUMP command. This algorithm may be different from the one used on the dump tape. Possible values are:

"" or "DEFAULT"

Use the best algorithm supported by the current version of DAT.

"TAPE"

Use the same algorithm used on the dump tape.

"NONE"

Don't compress the dump.

"RLE"

Use RLE compression on the disk file.

"LZ"

Use LZ compression on the disk file.

HEXUPSHIFT

BOOL (io) r *

If TRUE, all hex output is displayed in uppercase; otherwise it is displayed in lowercase. The default is FALSE, lowercase.

ICSNEST

U16 (misc) r

The current ICS nest count as found in the base of the ICS. This value is always 0 for Debug.

ICSVA

LPTR (misc) r

The virtual address for the base of the ICS.

IIR

U32 (nmreg) r dM

NM interrupt instruction register. (Alias for CR19)

INBASE

STR (io) rw *

The current input conversion radix, which is based on the current mode. Values entered are assumed to be in this radix unless otherwise specified. This variable tracks NM_INBASE and CM_INBASE dependent upon the MODE variable. The following values are allowed:

  • % or OCTAL

  • # or DECIMAL

  • $ or HEXADECIMAL

The names may be abbreviated to 1 character.

The default is based on the current mode (NM or CM). Refer to the SET command for an alternate method of setting this variable.

IOR

U32 (nmreg) r dM

NM interrupt offset register. (Alias for CR21)

IPSW

U32 (nmreg) r dM

NM interrupt processor status word (alias for CR22 and PSW). Debug may set or alter the "R" bit while single stepping, as well as the "T" bit if the TRAP BRANCH ARM command has been issued.

This register has the following format:


                   1 1 1 1 1 1 1               2     2 2 2 3 3
  0          7 8 9 0 1 2 3 4 5 6               4     7 8 9 0 1
 --------------------------------------------------------------
 |J|        |T|H|L|N|X|B|C|V|M|     C/B       |     |R|Q|P|D|I|
 --------------------------------------------------------------

J

Joint instruction and data TLB misses/page faults pending

T

Taken branch trap enabled

H

Higher-privilege transfer trap enable

L

Lower-privilege transfer trap enable

N

Instruction whose address is at front of PC queue is nullified

X

Data memory break disable

B

Taken branch in previous cycle

C

Code address translation enable

V

Divide step correction

M

High-priority machine check disable

C/B

Carry/borrow bits

R

Recovery counter enable

Q

Interruption state collection enable

P

Protection ID validation enable

D

Data address translation enable

I

External, power failure, & low-priority machine check interruption enable

System Debug displays this register in two formats:

   IPSW=$6ff0b=jthlnxbCVmrQpDI

The first value is a full 32-bit integer representation of the register. The second format shows the value of the special named bits. An uppercase letter means the bit is ON while a lowercase letter indicates the bit is OFF.

ISM_ARCH

S32 (misc) r dM

Returns the software interrupt stack marker architecture as 32 or 64. The two architectures currently in use differ in their abilities to hold either a 32 or 64-bit state, and are associated with the operating system version. Note that this is NOT the same as the hardware register size, which may be determined by ENV CPU_ARCH.

ISR

U32 (nmreg) r dM

NM interrupt space register. (Alias for CR20)

ITMR

U32 (nmreg) r dM

NM interval timer register. (Alias for CR16)

IVA

U32 (nmreg) r dM

NM interrupt vector address. (Alias for CR14)

JOB_DEBUG

BOOL (system) rW

A system wide flag that enables the debugging of jobs. The default value is FALSE; any process attempting to access Debug in a job has that request ignored (with the exception of the HPDEBUG intrinsic, which will execute a command string but not stop in Debug). If this variable is set, and a job does call Debug, upon entry the CONSOLE_IO variable is set to TRUE and the TERM_LDEV variable is set to the console port (LDEV 20).

This variable is available only in Debug.

JUSTIFY

STR (io) rw *

This variable controls the form justification used when numeric values are displayed in the windows or from the Display commands. This variable may take on one of two quoted literal values: "LEFT" or "RIGHT". When right-justified, values can be blank or zero filled (refer to the FILL variable). Decimal values are always left-justified in windows, despite this setting. The default value is "RIGHT".

LAST_PIN

U16 (misc) r

For DAT, this is the last PIN that was running at dump time (as found in SYSGLOB). For Debug, this variable is the PIN on whose stack the debugger is running.

LIST_INPUT

U16 (io) rw

When LIST_INPUT is set, all user input lines are written into any currently opened list file (refer to the LIST command). When ECHO_USE is set, those lines that are input from the USE file are always displayed to the list file, even if LIST_INPUT is disabled. The default value is TRUE.

LIST_PAGELEN

U16 (io) rw *

The page length (in lines) of the list file (refer to the LIST command). The default page length is #60. If the LIST_PAGING environment variable is set, a page eject is placed in the list after every LIST_PAGELEN lines.

LIST_PAGENUM

U16 (io) r

The current page number of the list file (refer to the LIST command). When a list file is opened, this variable is reset to 1. The default LIST_TITLE uses this value as part of the page title written to each page.

LIST_PAGING

BOOL (io) r *

When LIST_PAGING is set, output to the list file (refer to the LIST command) is paged (based on LIST_PAGELEN). In addition, the LIST_TITLE is written at the top of each new page. The default value for this variable is TRUE.

LIST_TITLE

STR (io) rw *

When the LIST_PAGING variable is enabled, this LIST_TITLE is written to the top of each new page in the list file (refer to the LIST command). The default LIST_TITLE is displayed below, followed by the output it produces:


 '"Page: " list_pagenum:"d" "   " version "   " date "   " time'

 Page: 1    DAT-XL 9.00.00    FRI, FEB 13, 1987  2:22 PM

The variables in the title are evaluated each time the title is written to the list file.

LIST_WIDTH

U16 (io) rw *

The width (in number of characters) to be used for the list file (refer to the LIST command). This number must be in the range 1-132, and is 80 characters by default. Lines written to the list file that are longer than the LIST_WIDTH length are not truncated; instead they are split, with the extra data placed on the following line.

LOOKUP_ID

STR (misc) rw *

This variable is used by the expression evaluator in determining where to look up NM procedure names. Refer to the "Procedure Name Symbols" section in chapter 2 "User Interfaces" for additional details. It may take on any of the following values:

UNIVERSAL

Search exported procedures in the System Object Module symbols.

LOCAL

Search non-exported procedures in the System Object Module symbols.

NESTED

Search nested procedures in the System Object Module symbols.

PROCEDURES

Search local or exported procedures in the System Object Module symbols.

ALLPROC

Search local/exported/nested procedures in the System Object Module symbols.

EXPORTSTUB

Search export stubs in the System Object Module symbols.

DATAANY

Search exported or local data System Object Module symbols.

DATAUNIV

Search exported data System Object Module symbols.

DATALOCAL

Search local data System Object Module symbols.

LSTPROC

Search exported level 1 procedures in the LST.

LSTEXPORTSTUB

Search export stubs in the LST.

ANY

Search for any type of symbol in the System Object Module symbols.

The default is LSTPROC. Note that it is noticeably slower to look up symbols from the System Object Module symbol table. For additional information, see the section "Procedure Names" in chapter 2, the PROCLIST command, and the NMADDR function.

LW

SADDR (win) r

The secondary address where the LDEV window is aimed. The value returned is interpreted as ldev.offset.

MACROS

U16 (limits) rw

The MACROS variable controls the size of the macro table, and must be changed (from the default size) before any macros are created. The MACROS limit is automatically increased to the nearest prime number, which must be less than or equal to MACROS_LIMIT.

MACROS_LIMIT

U16 (limits) r

MACROS_LIMIT is a compile time constant that defines the absolute maximum size of the macro table. The product must be recompiled and redistributed to increase this absolute capacity.

MACRO_DEPTH

U16 (cmd) r

MACRO_DEPTH tracks the current nested call level for macros. A depth of 1 implies the macro was invoked from the user interface. A depth of 2 implies that the current macro was called by another macro, and so on.

MAPDST

U16 (cmreg) r

This variable contains the mapping DST number for CM CST expansion.

MAPFLAG

U16 (cmreg) r

MAPFLAG indicates the mapping of the current CM segment, running under CST expansion. If MAPFLAG = 0, the current CM segment is logically mapped. If MAPFLAG = 1, the current CM segment is physically mapped.

MARKERS

STR (win) rw *

The MARKERS variable selects the type of video enhancement which is used to flag stack markers in the CM Q (frame) and S (stack) windows. The following string literals are valid: "INVERSE", "HALFINV", "BLINK", "ULINE", and "FEABLE". The default is "ULINE".

MODE

STR (misc) r This variable contains either "NM" if you are in NMDebug, or "CM" if in cmdebug.

MONARCHCPU

U16 (misc) r d

This variable contains the number of the Monarch processor.

MPEXL_TABLE_VA

U16 (misc) rw

This variable contains the address of the table used by the MPEXL command. Initially the address is set to NIL (0.0). The first invocation of the MPEXL command will correctly replace the NIL value with the actual table address. If any (non-NIL) virtual address is written into this variable, then the MPEXL comand will honor this address and use it to attempt access to the MPEXL table.

MULTI_LINE_ERRS

U16 (cmd) rw *

When a user's multiple line input contains an error, it is sometimes desirable to limit the quantity of error output generated. In particular this variable controls how much of the user's original input line is displayed in the error message:

1

Display the single input line that contains the error.

2

Display all lines up to and including the line with the error.

3

Display all input lines (up to, including and after) the error.

The default value is 2. Any value larger than 3 is interpreted as a 3.

NMPW

LCPTR (win) r

The logical code address where the NM program window is aimed.

NM_INBASE

STR (io) rw *

The current NM input conversion base. When in NMDebug, all values entered are assumed to be in this base unless otherwise specified. The following values are allowed:

  • % or OCTAL

  • # or DECIMAL

  • $ or HEXADECIMAL

The names may be abbreviated to as little as a single character.

The default value is $ (hex). Refer to the SET command for an alternate method of setting this variable.

NM_OUTBASE

STR (io) rw *

When in NM (nmdat or nmdebug), all numbers printed will be this base, unless otherwise indicated (refer to the SET command). The following values are allowed:

  • % or OCTAL

  • # or DECIMAL

  • $ or HEXADECIMAL

The names may be abbreviated to as little as a single character.

The default value is $ (hex). Refer to the SET command for an alternate method of setting this variable.

NONLOCALVARS

BOOL (cmd) rw

When NONLOCALVARS is FALSE (default), macro bodies can only reference local variables that are declared locally within the current macro. When NONLOCALVARS is TRUE, a macro body can reference a local variable within another macro that called it. Setting this variable is useful when a macro is too large for the current macro size restrictions and must be broken into several pieces. The first piece can call the subsequent pieces without passing all of the local variables as parameters.

OUTBASE

STR (io) rw *

This variable tracks NM_OUTBASE and CM_OUTBASE dependent upon the MODE variable. The following values are allowed:

  • % or OCTAL

  • # or DECIMAL

  • $ or HEXADECIMAL

The names may be abbreviated to as little as 1 character.

The default is based on the current mode (NM or CM). Refer to the SET command for an alternate method of setting this variable.

PC

LPTR (nmreg) r dm

NM program counter register as a logical code address. This value is composed of data taken from CR17 (PCSF) and CR18 (PCOF). The privileged bits from CR18 (bits 30, 31) are masked out (that is, they are set to zero).

PCOB

U32 (nmreg) r dm

NM program counter offset (next in pipeline queue).

PCOF

U32 (nmreg) r dm

NM program counter offset (first in pipeline queue).

PCQB

LPTR (nmreg) r dm

NM program counter sid.offset (next in pipeline queue). (Alias for CR18)

PCQF

LPTR (nmreg) r dm

NM program counter sid.offset (first in pipeline queue). (Alias for CR17)

PCSB

U32 (nmreg) r dm

NM program counter sid (next in pipeline queue).

PCSF

U32 (nmreg) r dm

NM program counter sid (first in pipeline queue).

PHYS_REG_WIDTH

S32 (misc) r

Returns the physical width of the registers in the machine, as 32 or 64. Note that 64 is returned only when the machine has HP-PA 2.0 64-bit hardware AND the OS supports it with 64-bit ISMs.

PID1 - PID4

U16 (nmreg) r dM

NM protection ID registers. (Alias for CR8, CR9, CR12, CR13.) The format of the PID registers is as follows:


                          1 1                              3
 0                        5 6                              1
 ------------------------------------------------------------
 |        <reserved>         |     Protection ID         |WD|
 ------------------------------------------------------------

<reserved>

The top 16 bits are undefined for this register.

Protection ID

The protection ID number.

WD

Write disable bit (1 = read only, 0 = write enabled)

System Debug displays these registers in two formats:

   PID1=030e=0187(W)

The first value is the register as a 16-bit value. The second form is the original 16-bit register shifted right by 1 bit followed by the value of the write disable bit. The (W) indicates the WD bit is off. That is, write capability is enabled. When the WD bit is on, an (R) is displayed indicating Read access.

PIN

U16 (misc) r

The current process identification number (PIN). Note that this variable changes when one uses the PIN command. PIN 0 (zero) indicates that the dispatcher is running. (Refer to the variable LAST_PIN.)

PRIV

U16 (nmreg) r dM

Current privilege level (low two bits of PCOF).

PRIV_USER

BOOL (nmreg) r rW

This variable is TRUE if the user running Debug has privileged mode (PM) capabilities. If set, the user has access to all privileged commands within Debug. Privileged users may alter the value of this variable if desired to supply a "safe" environment.

In DAT, this variable is always TRUE.

PROGNAME

STR (misc) r

This variable contains the name of the tool that is being run. It is either 'dat' or 'debug'.

PROMPT

STR (io) rw

Current user prompt. It is defined as a quoted string with the same syntax and options as the WL command. The default prompt is:


   'cmdnum " (" pin ")   " mode progname " " filter "> "'

The variables in the prompt are evaluated each time the prompt is displayed.

PSEUDOVIRTREAD

BOOL (misc) r d

This variable is TRUE if the last virtual access came from a pseudomapped file. Otherwise, the access came from virtual memory.

PSP

U32 (nmreg) r d

Previous SP. This is not really a register; it is computed based on the current SP and size of the current frame.

PSTMT

BOOL (misc) rw *

When PSTMT is set, the NM disassembler interprets certain LDIL instructions as statement numbers, as generated by some of the language compilers. The default value is TRUE.

PSW

U32 (nmreg) r dM

Processor status register (alias for IPSW and CR22). Refer to the IPSW environment variable for a complete description of this variable.

PW

LCPTR (win) r

The address (as a logical code address) where the (current) program window is aimed.

PWO

SPTR (win) r

The offset where the (current) program window is aimed.

PWS

U32 (win) r

The SID (NM) or SEG (CM) where the (current) program window is aimed.

Q

U16 (cmreg) r dm

This is the CM Q register. The value in this register is relative to the CM DB register.

QUIET_MODIFY

U16 (io) rw *

When this variable is FALSE (the default value), all modifications to registers and memory cause the current value of the item to be displayed. If the variable is set to TRUE, all modifications are performed quietly. Quiet modifications are useful in macros and breakpoint command lists.

R0

U32 (nmreg) r d

NM register 0; the constant 0 (zero).

R1 - R31

U32 (nmreg) rwdm

NM general registers. Many of these registers have aliases. Refer to the DR command for a complete list.

RCTR

U32 (nmreg) r dM

NM recovery counter register. (Alias for CR0)

RET0

U32 (nmreg) r dm

NM return register 0 (alias for R28). This register is used by the language compilers to return function results.

RET1

U32 (nmreg) r dm

NM return register 1 (alias for R29). This register is used by the language compilers to return function results.

RP

U32 (nmreg) r d

NM return pointer. This value is determined based on stack unwind information. It may be the contents of R2 or it may be the return address stored somewhere in the NM stack. Note that RP is not an alias for R2.

S

U16 (cmreg) r dm

CM S (stack) register. The value in this register is relative to the CM DB register.

SAR

U16 (nmreg) r dm

NM shift amount register. (Alias for SR11)

SDST

U16 (cmreg) r dm

DST number of the CM stack.

SL

U32 (nmreg) r dm

NM static link register. (Alias for R29)

SP

U32 (nmreg) r dm

NM stack pointer register. (Alias for R30)

SR0 - SR7

U32 (nmreg) r dM

NM space registers 0 - 7.

STATUS

U16 (cmreg) r dm

CM status register. This register has the following format:


                        1 1 1 1 1 1
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
   ---------------------------------
   |M|I|T|R|O|C|CC |  Segment #    |
   ---------------------------------

M bit

1 if program is privileged

0 if program is in user mode

I bit

1 if external Interrupts are enabled

0 if not

T bit

1 if user Traps are enabled

0 if not

R bit

1 if right stack operation pending

0 if left stack operation pending

O bit

1 if Overflow bit set (not set if user traps enabled)

0 if not

C bit

1 if Carry bit set

0 if not

CC bits

01 if CCL (This is the condition code value)

10 if CCE

00 if CCG

System Debug display this register with two formats:

   STATUS=%100030=(Mitroc CCG 030)

The first value is the full 16-bit integer representation of the register. The second format shows the value of the special named bits. An uppercase letter means the bit is on while a lowercase letters indicates the bit is off.

The segment number has various interpretations. For non-CST expansion systems, this is an absolute segment number. For CST expansion systems, refer to the MPE V/E Tables Manual for details on its interpretation.

SYMPATH_UPSHIFT

BOOL (misc) rw

TRUE if path specifications used by symbolic formatting should be upshifted. This should be FALSE if a symbol file originated with a case-sensitive language, such as C. Note that this variable affects only those symbols entered in System Debug commands and functions, not those in symbol files.

SYSVERSION

STR (nmreg) r

The version of the operating system (as found in SYSGLOB).

This variable is currently a null string in DAT.

TERM_KEEPLOCK

BOOL (io) rw

If this variable is set, the terminal semaphore is not released when the process is resumed by Debug. The default for this variable is FALSE. If the process dies, the terminal semaphore is automatically released. If the TERM NEXT command is issued or the value of TERM_LOCKING is changed, this variable is reset to FALSE.

This variable is available only in Debug.

TERM_LDEV

U16 (io) rW

This variable contains the logical device number (LDEV) to use for I/O. Debug determines this value by looking up the LDEV for the session.

If the ENV command is used to alter this value, Debug attempts to allocate the indicated LDEV. If the LDEV is already allocated (that is, in use by another session), an error status is returned. If the user has privileged mode (PM) capabilities, the allocation check may be bypassed by specifying a negative LDEV. In this case, all security and validity checking is bypassed. Non-Preemptive send_io calls are done to the specified LDEV without question.

When Debug is entered from a job (this is possible when the HPDEBUG intrinsic is used), this variable is not used. Rather, Debug performs I/O to the job's standard list file ($STDLIST).

If the JOB_DEBUG system wide variable is set, when a process being run in a job enters Debug, this variable is set to the console port (LDEV 20) and the CONSOLE_IO variable is set to TRUE.

Note that the CONSOLE_IO environment variable has precedence over TERM_LDEV.


NOTE: A privileged procedure exists that allows the user to enter Debug and specify the initial value of this variable. The name of the routine is debug_at_ldev. It takes one parameter, the LDEV.

This variable is not available in DAT.

TERM_LOCKING

BOOL (io) rw

If this variable is set (the default value), the debugger will perform "terminal locking" (with a semaphore) to ensure that only one debug process can use a terminal at any given time. This prevents multiple prompts from appearing on the screen when debugging multiple processes at the same terminal. The TERM command may then be used to control which process owns the semaphore. If this variable is not set, no terminal locking is performed.

The TERM_LDEV variable is not used to determine which semaphore to attempt to lock; rather, the session number is used for this purpose. There is one semaphore per session. If a process enters Debug with its I/O from the system console (that is, the CONSOLE_IO variable was set to TRUE at entry), a single console semaphore is used.

Altering the value of the CONSOLE_IO variable or the TERM_LDEV variable does _not affect which semaphore is used for terminal locking.

This variable is not available in DAT.

TERM_LOUD

BOOL (io) rw *

If this variable is clear, all output to the terminal is suppressed with the exception of prompts and error messages. This is useful when listing large amounts of data to a list file so that you do not see it on your screen. The default for this variable is TRUE.

TERM_PAGING

BOOL (io) rw *

If this variable is set, all output is paged. That is, after each full screen of output, System Debug pauses. At that point the user is prompted with the question "MORE?". Any response that does not begin with the letter "Y" or "y" will cause the user to be returned to the System Debug prompt (any pending output is flushed). This variable may also be set with the SET MOREON/SET MOREOFF commands. The default value is FALSE.

TERM_WIDTH

U16 (io) rw *

This is the number of characters to print per line. The default is set at 79. Any output line longer than this value is split with the remainder placed on the next line.

TIME

STR (misc) r

The current time of day in the format: "5:25 PM".

TR0 - TR7

U32 (n*eg) r dM

NM "temp" registers (alias for CR24..CR31).

TRACE_FUNC

U16 (cmd) rw

Setting this variable allows you to observe function calls and their parameters. The current values and meanings are:

0

Trace is off.

1

Trace EXIT from functions.

2

Trace ENTRY and EXIT from functions.

3

Trace function PARAMETERS as well as ENTRY and EXIT.

TRUE

BOOL (const) r

The constant "TRUE".

USER_REG_WIDTH

S32 (misc) rw

Determines the number of register bits the user sees with the debugger. This will affect the register display window, the output from the DR command, and the sizes (types) of the register ENV variables. May be either 32 or 64, but 64 bits are displayed or returned ONLY when a 64-bit state is available. (That is, only when ENV PHYS_REG_WIDTH is also 64.)

VARS

U16 (limits) rw

The VARS limit determines the maximum number of variables that can be defined by the VAR command. The VARS limit must be set (changed from the default) before the first variable is defined. The VARS limit is automatically increased to the nearest prime number. The combined sum of the VARS and VARS_LOC limits must be less than or equal to the value of VARS_LIMIT.

VARS_LIMIT

U16 (limits) r

VARS_LIMIT is the compile time constant that defines the absolute maximum size of the variable table. The product must be recompiled and redistributed to increase this absolute capacity. The combined sum of the VARS and VARS_LOC limits must be less than or equal to the value VARS_LIMIT.

VARS_LOC

U16 (limits) rw

The VARS_LOC limit determines the maximum number of local variables that can be defined. Local variables are explicitly defined by the LOC command, and are implicitly defined for macro parameters. The VARS_LOC limit must be set before any local variable is defined. The combined sum of the VARS and VARS_LOC limits must be less than the value VARS_LIMIT.

VARS_TABLE

U16 (limits) rw

VARS_TABLE tracks the total number of entries in the variable table, which is defined to be the sum of variables VARS plus VARS_LOC. The VARS_TABLE size must always be less than or equal to VARS_LIMIT.

VERSION

STR (misc) r

The version ID of the program, for example, "DAT XL A.00.00".

VW

LPTR (win) r

The virtual address where the current virtual window is aimed.

VWO

SPTR (win) r

The offset portion for the virtual address where the current virtual window is aimed.

VWS

U32 (win) r

The sid portion for the virtual address where the current virtual window is aimed.

WIN_LENGTH

U32 (io) rw *

Specifies the number of lines available on the display terminal. The default value is #24. Values grater than or less than the actual number of terminal lines may cause unpredictable screen output.

WIN_WIDTH

U32 (io) rw *

Specifies the number of columns available on the display terminal. The default value is #80. Modification of this value is permitted, but the value is ignored.

X

U16 (c*eg) r dm

The CM X (index) register.

ZW

U32 (win) r

The real address where the Z window is aimed.

Examples



   %cmdebug > env autoignore true

Set the environment variable AUTOIGNORE to TRUE.

   $nmdebug > env cmdlinesubs true

Set the variable CMDLINESUBS to TRUE. This enables command line substitutions, that may have been disabled while macros were being read in from a file.

Limitations, Restrictions


none




DUMPINFO


ENVL[IST]