Operation [ MPE/iX System Utilities Reference Manual ] MPE/iX 5.0 Documentation
MPE/iX System Utilities Reference Manual
Operation
To invoke PATCH enter:
PATCH
or
RUN PATCH.PUB.SYS
PATCH identifies itself, then displays ENTITY=? to request the name of
the file you want to list or modify:
PROGRAM PATCH G.00.00 (C) HEWLETT-PACKARD CO., 1976
ENTITY =?
Enter filename.groupname.accountname, in uppercase letters, of the file
whose code you wish to display or change. (PATCH does not immediately
verify that the file you specified is a program file, but you will get an
error when you attempt to use a command on a nonprogram file.)
When the file name is accepted, PATCH displays the ? prompt, where you
enter one of the following four subcommands:
D Displays code segment contents.
M Modifies code segment contents.
DG Displays global area of initial stack.
MG Modifies global area of initial stack.
After each command, PATCH prompts you for another. To terminate PATCH
press Return without entering a command. (An incorrectly entered command
also terminates PATCH.)
On the following pages, each of the four PATCH subcommands is explained
in detail.
D
The D command displays code segment contents. To invoke this command
enter:
?D, segnum, address [,numlocations]
Parameters
segnum The logical segment number to be displayed, found at the top of
the PMAP output.
address The code segment relative address you wish to display is as
follows: add the offset of the instruction within the procedure
(an octal value found in your compiler listing) to the procedure
start address found in the CODE column of your PMAP output.
numlocations The number of words, in octal, to be displayed.
For a list of segment names and their addresses within a program file use
the PMAP option of the PREP command.
For information regarding the offsets of instructions and global
variables in program files, refer to compiler options for the programming
language in which the code was written.
M
The M command modifies code segment contents. To invoke this command
enter:
?M, segnum, address, [,numlocations]
Parameters
segnum The logical segment number to be modified, found at the top of the
PMAP output.
address The address of the code segment you wish to modify, calculated by
adding the offset of the instruction within the procedure (an
octal value found in your compiler listing) to the procedure start
address found in the CODE column of your PMAP output.
numlocations The number of words, in octal, to be modified.
When you enter the M command, the contents of the current instruction are
displayed followed by a comma. To leave the value unchanged, you must
re-enter the contents! If you press RETURN without entering anything the
instruction will be set to zeros (%000000, a NOP instruction).
For a list of segment names and their addresses within a program file use
the PMAP option of the PREP command.
For information regarding the offsets of instructions and global
variables in program files, refer to compiler options for the programming
language in which the code was written.
Example
The following example shows you how to use the M and D commands to
display and modify the contents of one instruction in the file
BIGBUCS.PUB.SALES:
FILE = ? BIGBUCS.PUB.SALES
?D,0,20,1
031042
?M,0,20,1
031042, 420031
?D,0,20,1
420031
?
DG
The DG command displays the global area of the initial stack. To invoke
this command enter:
?DG, reloffset [,numwords]
Parameters
reloffset The DB-relative offset of the word to display, found in your
compiler listing. For more information, refer to the compiler
options for the programming language in which the code was
written.
numwords The number of words, in octal, that you wish to display. The
default is one.
Example
FILE? PINITRIN.PUB.TEST
?DG,0,4
000010
000015
000000
000046
?
MG
The MG command modifies the global area of the intial stack. To invoke
this command enter:
?MG, reloffset [,numwords]
Parameters
reloffset The DB-relative offset of the word to modify, found in your
compiler listing.
numwords The number of words, in octal, that you wish to modify. The
default is one.
The MG command displays the contents of the current stack word, followed
by a comma. To leave the value unchanged, you must re-enter the
contents! If you press RETURN without entering anything the word will be
filled with zeros.
For information regarding the offsets of instructions and global
variables in program files, refer to compiler options for the programming
language in which the code was written.
Examples
Here is an example of using the MG and DG command. Begin by running
PATCH and entering the executable file name. In this example, the file
is BIGTECH.PUB.SYS.
PROGRAM PATCH G.00.00 (C) HEWLETT-PACKARD CO., 1976
FILE =?BIGTECH.PUB.SYS
The following displays values in the first five addresses:
?DG, 0,5
000112
000052
000064
000264
000464
The following would set the first five locations to zero because RETURN
is pressed without entering anything after each location is displayed:
?MG, 0,5
000112,
000052,
000064,
000264,
000464,
The following displays the changes you just made:
?DG ,0,5
000000
000000
000000
000000
000000
The following changes the zeros displayed above to the values shown after
each comma:
?MG,0,5
000000,112
000000,52
000000,64
000000,264
000000,464
The following displays the first changed value:
?DG,,1
000112
Additional Discussion
For more information on PREP command refer to MPE/iX Commands Reference
Manual Volumes 1 and 2 (32650-90003 and 32650-90364). For more
information on User Subprogram Library (USL) files refer to MPE Segmenter
Reference Manual (30000-90011).
Many compilers produce a listing of global identifiers and their
addresses. For more information refer to the reference manual for that
compiler's programming language.
MPE/iX 5.0 Documentation