HPlogo System Debug Reference Manual > Chapter 9 System Debug Window Commands

wJ

MPE documents

Complete PDF
Table of Contents
Index

E0201 Edition 4 ♥
E0300 Edition 3
E0692 Edition 3

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:

  1. The logical code file (PROG, GRP, SYS, and so on).

  2. NM: the virtual space ID number (SID).

    CM: the logical segment number.

  3. 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)

    • PJ 23.2644 sid.offset or seg.offset

    The logical file is determined based on the command suffix:
    • PJ implies PROG

    • PJG implies GRP

    • PJS implies SYS, and so on.

  • As a short pointer (SPTR)

    • PJ 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 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:
  • Default account: the account of the program file.

  • Default group: the group of the program file.

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:
  • As a long pointer (LPTR)

    PJA 23.2644

    Implicit CST 23.2644

    PJAX 5.3204

    Implicit CSTX 5.3204

  • As a full absolute code pointer (ACPTR)

    PJA CST(2.200)

    Explicit CST coercion

    PJAX CSTX(2.200)

    Explicit CSTX coercion

    PJAX logtoabs(prog(1.20))

    Explicit absolute conversion

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




wI


wK