|
|
Window jump. Jumps window to the specified address.
Syntax
PJ [logaddr] Program file
PJG [logaddr] Group library
PJP [logaddr] Account library
PJLG [logaddr] Logon group library
PJLP [logaddr] Logon account library
PJS [logaddr] System library
PJU [fname logaddr] User library
PJV [virtaddr] Any virtual address
PJA [absaddr] Absolute CST
PJAX [absaddr] Absolute CSTX
CMPJ [logaddr] Program file
CMPJG [logaddr] Group library
CMPJP [logaddr] Account library
CMPJLG [logaddr] Logon group library
CMPJLP [logaddr] Logon account library
CMPJS [logaddr] System library
CMPJA [absaddr] Absolute CST
CMPJAX [absaddr] Absolute CSTX
NMPJ [logaddr] Program file
NMPJG [logaddr] Group library
NMPJP [logaddr] Account library
NMPJLG [logaddr] Logon group library
NMPJLP [logaddr] Logon account library
NMPJS [logaddr] System library
NMPJU [fname logaddr] User library
QJ [dst.off] CM Frame, Q relative
SJ [dst.off] CM Stack, S relative
VJ [virtaddr] [win_number] Virtual window
ZJ [realaddr] Real memory window
LJ [Ldev.off] LDEV window
TXJ [record_number] Text window
Parameters
- logaddr
PJ, PJG, PJP, PJLG, PJLP, PJS, PJU, and PJV control
the current program window, which is based on the current mode (CM or NM).
CMPJ, CMPJG, CMPJP, CMPJLG, CMPJLP, and CMPJS control
the CM program window.
NMPJ, NMPJG, NMPJP, NMPJS, NMPJS, and NMPJU control the
NM program window.
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)
- PJ procname+20
Procedure name lookups return LCPTRs.
- PJ pw+4
Predefined ENV variables of type
LCPTR.
- PJ SYS(2.200)
Explicit coercion to a LCPTR type.
As a long pointer (LPTR)
The logical file is determined based on the command suffix:
As a short pointer (SPTR)
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 search path used for procedure name lookups is based on the command
suffix letter:
- PJ
Full search path:
NM: PROG, GRP, PUB, USER(s), SYS
CM: PROG, GRP, PUB, LGRP, LPUB, SYS
- PJG
Search GRP, the group library.
- PJP
Search PUB, the account library.
- PJLG
Search LGRP, the logon group library.
- PJLP
Search LPUB, the logon account library.
- PJS
Search SYS, the system library.
- PJU
Search USER, the user library.
For a full description of logical code addresses, refer to the section
"Logical Code Addresses" in chapter 2.
- fname
PJU, CMPJU, and NMPJU only. The file name of the NM
USER library. Multiple NM libraries can be bound with the
XL= option on a RUN command. For example:
:RUN NMPROG; XL=LIB1,LIB2.TESTGRP,LIB3
In this case it is necessary to specify the desired NM USER library.
For example:
PJU lib1 204c
PJU lib2.testgrp test20+1c0
If the file name is not fully qualified, then the following defaults are
used:
- virtaddr
The virtual window (V) can be aimed at any Precision Architecture
space and offset address. Virtaddr can be a short pointer,
a long pointer, or a full logical code pointer.
- absaddr
PJA, PJAX, CMPJA, CMPJAX control the CM program window. 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:
- PJA
GRP, PUB, LGRP, LPUB, SYS
- PJAX
PROG
- dst.off
The stack frame (Q) and top of stack (S) windows can be aimed at any
data segment and offset.
- ldev.off
The LDEV window can be aimed at a disk
ldev.byte-offset.
- win_number
You may specify which virtual window is the jump window, if there is
more than one window.
- realaddr
The real memory window (Z) can be aimed at any real address. If no
address is given, the address used is the address to which the window
previously was pointed (if any).
- record_number
The text file record number.
Examples
$nmdebug > pj 200
Jump to the program file at offset 200. A logical address is expected as the
value for this command. Remember that when only an offset is specified as a
logical address in the PJ command, the space (SID) for the program is
assumed. A STOLOG conversion (with the "prog" selector) will be
done to accomplish this.
$nmdebug > pj r2
Jump to the program file at the offset indicated by register R2. As in the
above example, when only an offset is given for a logical address, the space
(SID) for the program file is assumed.
$nmdebug > pjv r2
Jump to the offset indicated by register R2. The space is determined by using
the appropriate space register. A STOL conversion is performed to
accomplish this.
$nmdebug > pjs r2
Jump to the system library (NL.PUB.SYS) at the offset indicated by
register R2.
%cmdebug > pjg 2.200
Jump to the group library at logical segment 2 at an offset of 200.
$nmdebug > cmpj cmaddr("?fopen")
Jump the CM program window to the entry point for the fopen procedure. Note
that since we are in native mode, the CMADDR function must be used to
look up the address of CM procedures.
%cmdebug > nmpj cmtonmnode(?fopen)
Jump the NM program window to the nearest translated code node point associated
with the CM procedure fopen. Refer to appendix C for a discussion of
CM object code translation, node points, and breakpoints in translated CM code.
%cmdebug > SJ 12.200
Jump the stack window to data segment 12 at an offset of 200.
$nmdebug > vw c0.100 /* Create a new virtual window at c0.100
$nmdebug > vj c0.200 /* Jump the window to c0.200
$nmdebug > vj c0.300 /* Jump the window to c0.300
$nmdebug > vj /* Jump to previous location (c0.200)
$nmdebug > vh /* Jump to home location (c0.100)
The end result is to place the current virtual window at 100 (its "home" location).
Limitations, Restrictions
none
|