|
|
Privileged Mode: DA, DCS, DCA, DZ, DSEC
Displays the contents of the specified address.
Syntax
DA offset [count] [base] [recw] [bytew] ABS relative
DD dst.off [count] [base] [recw] [bytew] CM data segment
DDB offset [count] [base] [recw] [bytew] DB relative
DS offset [count] [base] [recw] [bytew] S relative
DQ offset [count] [base] [recw] [bytew] Q relative
DC logaddr [count] [base] [recw] [bytew] Program file
DCG logaddr [count] [base] [recw] [bytew] Group library
DCP logaddr [count] [base] [recw] [bytew] Account library
DCLG logaddr [count] [base] [recw] [bytew] Logon group lib
DCLP logaddr [count] [base] [recw] [bytew] Logon account lib
DCS logaddr [count] [base] [recw] [bytew] System library
DCU fname logaddr [count] [base] [recw] [bytew User library
DCA cmabsaddr [count] [base] [recw] [bytew] Absolute CST
DCAX cmabsaddr [count] [base] [recw] [bytew] Absolute CSTX
DV virtaddr [count] [base] [recw] [bytew] Virtual
DZ realaddr [count] [base] [recw] [bytew] Real memory
DSEC ldev.off [count] [base] [recw] [bytew] Secondary store
Parameters
- offset
DA, DDB, DQ, DS only.
The CM word offset that specifies the relative starting location of the
area to be displayed.
- dst.off
DD only.
The data segment number and CM word offset that specifies the starting
location of the area to be displayed.
- logaddr
DC, DCG, DCP, DCLG, DCLP,
DCS, DCU only.
A full logical code address (LCPTR) specifies three necessary items:
the logical code file (PROG, GRP, SYS, and so on)
NM: the virtual space ID number (SID)
CM: the logical segment number
NM: the virtual byte offset within the space.
CM: the word offset within the code segment.
Logical code addresses can be specified in various levels of detail:
as a full logical code pointer (LCPTR)
- DC procname+20
procedure name lookups return LCPTRs
- DC pw+4
predefined ENV variables of type LCPTR
- DC SYS(2.200)
explicit coercion to a LCPTR type
as a long pointer(LPTR)
- DC 23.2644
sid.offset or
seg.offset
as a short pointer (SPTR)
- DC 1024
offset only
For NM, the short pointer offset is converted to a long pointer
using the function STOLOG, which looks up the SID of the
loaded logical file. This is different from the standard short to
long pointer conversion, STOL, which is based on the
current space registers (SRs).
For CM, the current executing logical segment number and the
current executing logical file are used to build an
LCPTR.
The logical file is determined based on the command suffix, for example:
DC implies PROG
DCG implies GRP
DCS implies SYS
The search path used for procedure name lookups is based on the command
suffix letter:
- DC
Full search path:
NM: PROG, GRP, PUB,
USER(s), SYS
CM: PROG, GRP, PUB,
LGRP, LPUB, SYS
- DCG
Search GRP, the group library.
- DCP
Search PUB, the account library.
- DCLG
Search LGRP, the logon group library.
- DCLP
Search LPUB, the logon account library.
- DCS
Search SYS, the system library.
- DCU
Search USER, the user library.
For a full description of logical code addresses, refer to the section
"Logical Code Addresses" in chapter 2.
- fname
DCU only.
The file name of the NM USER library. Since multiple NM libraries can be
bound with the XL= option on a RUN command,
:run nmprog; xl=lib1,lib2.testgrp,lib3
it is necessary to specify the desired NM user library. For example,
DCU lib1 204c
DCU lib2.testgrp test20+1c0
If the file name is not fully qualified, then the following defaults are used:
- cmabsadr
DCA, DCAX only.
A full CM absolute code address specifies three necessary items:
Either the CST or the CSTX
The absolute code segment number
The CM word offset within the code segment.
Absolute code addresses can be specified in two ways:
The search path used for procedure name lookups is based on the command
suffix letter:
- DCA
GRP, PUB, LGRP, LPUB, SYS
- DCAX
PROG
- virtaddr
DV only. The virtual address to be displayed.
Virtaddr can be a short pointer, a long pointer,
or a full logical code pointer.
- realaddr
DZ only.
The real mode HP Precision Architecture memory address
to be displayed.
- ldev.off
DSEC only.
The logical device number (LDEV) and offset (in bytes) of the data
on disk to be displayed.
- count
DA, DC@ (CM), DD, DDB,
DS, DQ: The number of CM 16-bit words to be
displayed.
DC@ (NM), DV, DZ, DSEC: The
number of NM 32-bit words to be displayed. If omitted, then a
single value is displayed.
- base
The desired representation mode for output values:
- % or OCTAL
Octal representation
- # or DECIMAL
Decimal representation
- $ or HEXADECIMAL
Hexadecimal representation
- ASCII
ASCII representation
- BOTH
Numeric and ASCII together
- CODE
Disassembled code representation
- STRING
Packed ASCII representation
This parameter can be abbreviated to as a single character.
By default, and for the numeric portion of B[OTH], the
current output base is used.
Display code commands (DC@) automatically set the base to
CODE, unless another base is explicitly specified.
Note that the address portion of the display is always formatted
using the current output base (see ENV OUTBASE and the
SET command), not the specified base parameter.
- recw
The number of words to be displayed per line. Large requests may
cause lines to wrap around on the terminal, but may be appropriate
for offline listings, based on the ENV variable
LIST_WIDTH.
By default, either 4 or 8 words will be displayed per line, based
on the command, count, and base.
When the base CODE is selected, disassembled code is always
displayed one word per line.
- bytew
The width in bytes of the displayed values. Values can be
displayed as
- 1 byte
Single bytes (8 bits)
- 2 bytes
CM (16-bit words)
- 4 bytes
NM (32-bit words) / CM double-words
If omitted, values are displayed as CM words (2) or NM words (4),
based on the current mode (CM/NM) and the specified command.
This parameter is ignored for display code commands
(DC@).
Examples
%cmdebug > dd 77.0
DST %77.0 % 000655
Display DST 77.0. By default, one word is displayed in the current
output base, octal.
%cmdebug > dd 77.0,20
DST %77.0
%0 % 000655 000012 000000 000000 000000 000000 000000 000000
%10 % 000000 000000 041515 023511 047111 052111 040514 020040
Display DST 77.0 for %20 words. By default, the data is displayed
in the current output base, octal, at eight words per line.
%cmdebug > dd 77.0,20,a
DST %77.0
%0 ASCII .. .. .. .. .. .. .. ..
%10 ASCII .. .. CM 'I NI TI AL
Display DST 77.0 for %20 words in ASCII. The two character ASCII
Representations for each word are displayed, separated by blanks.
Dots (".") are displayed for nonprintable characters.
%cmdebug > dd 77.0,20,b
DST %77.0
%0 % 000655 000012 000000 000000 .. .. .. ..
%4 % 000000 000000 000000 000000 .. .. .. ..
%10 % 000000 000000 041515 023511 .. .. CM 'I
%14 % 047111 052111 040514 020040 NI TI AL
Display DST 77.0 for %20 words. Display both numeric and ASCII
data together. By default, four words are displayed per line.
%cmdebug > dd 77.0,100,a,12
DST %77.0
%0 ASCII .. .. .. .. .. .. .. .. .. ..
%12 ASCII CM 'I NI TI AL . .. ..
%24 ASCII MI X' PA RM . .. ..
%36 ASCII LO AD . .. ..
%50 ASCII GE TS IR . .. ..
%62 ASCII RE LS IR . .. ..
%74 ASCII FR EE 'P RI
Display DST 77.0, for %100 words, in ASCII, in a width of %12 words
per line.
%cmdebug > dd 77.0,100,s,12
DST %77.0 "...................."
DST %77.12 "CM'INITIAL ....."
DST %77.24 "MIX'PARM ....."
DST %77.36 "LOAD ....."
DST %77.50 "GETSIR ....."
DST %77.62 "RELSIR ....."
DST %77.74 "FREE'PRI"
Display DST 77.0 for %100 words, as a string, in a width of %12
CM words = #10 CM words = 20 characters per line.
%cmdebug > dd 77.0,20,h,6,1
DST %77.0
%0 $ 01 ad 00 0a 00 00 00 00 00 00 00 00
%6 $ 00 00 00 00 00 00 00 00 43 4d 27 49
%14 $ 4e 49 54 49 41 4c 20 20
%cmdebug > dd 77.0,20,h,6,2
DST %77.0
%0 $ 01ad 000a 0000 0000 0000 0000
%6 $ 0000 0000 0000 0000 434d 2749
%14 $ 4e49 5449 414c 2020
%cmdebug > dd 77.0,20,h,6,4
DST %77.0
%0 $ 01ad000a 00000000 00000000 00000000 00000000 434d2749
%14 $ 4e495449 414c2020 20202000 930c0000 4d495827 5041524d
%30 $ 20202020 20202000 00000000 4c4f4144
Display DST 77.0, for 20 words, in hexadecimal.
Display the data as bytes (1), CM 16-bit words (2), and NM 32-bit words (4).
Note that the offset addresses are displayed in octal (the
current output base), while the data is displayed in hexadecimal, as requested.
$nmdebug > dsec 1.0,4,a
SEC $1.0 ASCII ..HP ESYS ..]@ ....
Display secondary storage at the disk address 1.0 (LDEV=1,
byteoffset=0). Display four words in ASCII. This example displays a portion of
the volume label.
%cmdebug > da %1114,3,a
ABS+%1114 ASCII 82 04 9
%cmdebug > da %1474,3,a
ABS+%1474 ASCII 9 82 04
Two examples that display CM ABS relative. Both examples display three
words in ASCII.
ABS is CM Bank 0 low core memory. CM SYSGLOB starts at
ABS+%1000.
The first example displays the SEL release ID in the form:
uu ff vv.
The second example displays the MPE/iX system version ID in the form:
vv uu ff.
$nmdat > wl pc
SYS $a.728304
$nmdat > wl vtor(pc)
$c18304
$nmdat > dz tr0+((vtor(pc)>>$b)*$10),4
REAL $00603500 $ 80000000 0000000a 00728000 02400000
The logical code address of PC is SYS $a.728304, which
translates to real memory address c18304.
This example displays the 4-word PDIR entry in real memory for the page that
contains PC.
Display real memory (DZ) at the address TR0 (start of PDIR)
plus the offset to entry, which is calculated by right-shifting the real
address of PC by $b (to determine page number), and then
multiplying by $10 since each 4-word PDIR entry is $10=#16 bytes long.
Examples of Code Displays
$nmdebug > dcs sendio+18,7
SYS $a.219f08
00219f08 sendio+$18 6bd83d69 STW 24,-332(0,30)
00219f0c sendio+$1c 4bda3d51 LDW -344(0,30),26
00219f10 sendio+$20 081a0241 OR 26,0,1
00219f14 sendio+$24 081e025f OR 30,0,31
00219f18 sendio+$28 34180050 LDO 40(0),24
00219f1c sendio+$2c ebfe174d BL ?ldm_completion+$1e4,31
00219f20 sendio+$30 37d93dc1 LDO -288(30),25
Display code in the NM system library, starting at sendio+18, for
seven words. By default, the display code commands use the CODE radix
and display formatted lines of disassembled code.
$nmdebug > dcs sendio+18,7,h
SYS $a.219f08 $ 6bd83d69 4bda3d51 081a0241 081e025f
SYS $a.219f18 $ 34180050 ebfe174d 37d93dc1
Display code in the system library, starting at sendio+18, for
seven words in hexadecimal. By default, four words are displayed per line.
%cmdebug > dcs lsearch+11,10
SYS %12.20262
%020262: LSEARCH+%11 051401 S. STOR Q+1
%020263: LSEARCH+%12 000600 .. ZERO, NOP
%020264: LSEARCH+%13 151607 .. LDD Q-7
%020265: LSEARCH+%14 041605 C. LOAD Q-5
%020266: LSEARCH+%15 041604 C. LOAD Q-4
%020267: LSEARCH+%16 031105 2E PCAL ?LSEARCH'
%020270: LSEARCH+%17 013712 .. BRE P+%12
%020271: LSEARCH+%20 031107 2G PCAL ?TRANS'XDST'TO'L
Display code starting at lsearch+11, for %10 words. The procedure is
located in the CM system library, SL.PUB.SYS.
Listing Disassembled Code to a File
The following example demonstrates how to dump disassembled
code into a file. The example is explained command by command, based
on the command numbers that appear within the prompt lines.
Command %10 opens an offline list file with the name codedump.
All Debug input and output is recorded into this file, including the code we
intend to display.
Command %11 sets the environment variable term_loud to FALSE.
This prevents subsequent Debug output from being displayed on the terminal.
We capture the output in the list file (codedump), but we do not want
the output on the terminal.
Command %12 contains the desired display code command. We display %20
words of disassembled code, starting at the entry point address
?fopen.
Command %13 closes (and saves) the current list file
(codedump).
Command %14 uses the SET DEFAULT command to effectively reset
the environment variable term_loud back to TRUE. Debug output once
again is displayed on the terminal.
Command %15 issues an MPE/iX CI command PRINT CODEDUMP to
display the newly created list file with the disassembled code. Note the
additional Debug commands that were captured in the list file.
%10 (%53) cmdebug > list codedump
%11 (%53) cmdebug > env term_loud false
%12 (%53) cmdebug > dc ?fopen,20
%13 (%53) cmdebug > list close
%14 (%53) cmdebug > set def
%15 (%53) cmdebug > :print codedump
Page: 1 DEBUG/XL A.01.00 WED, FEB 23, 1987 11:42 AM
%11 (%53) cmdebug > env term_loud false
%12 (%53) cmdebug > dc ?fopen,20
SYS %22.5000
%005000: ?FOPEN 170404 .. LRA P-4
%005001: FOPEN+%5 030400 1. SCAL 0
%005002: FOPEN+%6 000600 .. ZERO, NOP
%005003: FOPEN+%7 051451 S) STOR Q+%51
%005004: FOPEN+%10 140060 .0 BR P+%60
%005005: FOPEN+%11 140003 .. BR P+3
%005006: ?FSOPEN 170412 .. LRA P-%12
%005007: FOPEN+%13 030400 1. SCAL 0
%005010: FOPEN+%14 021001 ". LDI 1
%005011: FOPEN+%15 051451 S) STOR Q+%51
%005012: FOPEN+%16 140052 .* BR P+%52
%005013: FOPEN+%17 140003 .. BR P+3
%005014: ?FJOPEN 170420 .. LRA P-%20
%005015: FOPEN+%21 030400 1. SCAL 0
%005016: FOPEN+%22 021002 ". LDI 2
%005017: FOPEN+%23 051451 S) STOR Q+%51
%13 (%53) cmdebug > list close
Limitations, Restrictions
None
|