|
|
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 the MPE/iX Commands
Reference Manual V. For more information on User Subprogram Library (USL)
files refer to the MPE Segmenter Reference Manual.
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.
|