home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
recreation
/
zipdebug
/
b055
/
!ZIPDebug
/
!Help
< prev
next >
Wrap
Text File
|
1993-08-05
|
7KB
|
185 lines
zipdebug help file (5-Aug-93)
------------------------------
zipdebug was written by Frank Lancaster during 1984-1993.
zipdebug and sources are free, you may do anything with them.
Contact: email: fl@tools.de
paper mail: Frank Lancaster
Karl-Barth-Str. 39
53129 Bonn
Germany
This programme is a debugger for Infocom adventures. It contains
a complete interpreter and disassmbler for code versions 3, 4 and
5 (Borderzone (including real time action) and Sherlock run
without problems, in Beyond Zork the on-line mapping will only
work correctly with the alternate font with Archimedes RISC OS,
colour is also only supported in RISC OS). Code version 6 (Zork
Zero, Shogun, King Arthur) can be partially disassembled but will
not run properly (work will continue on getting it to run).
I invented the mnemonics for the op-codes myself, so they won't
be compatible to anything else you may have seen. Descriptions of
the mnemonics and opcodes will be avaialble "real soon now" (that
means whenever I find time).
With RISC OS zipdebug should be started from the desktop, either
by double clicking the application icon (this will start the
programme in interactive mode) or by double-clicking a story data
file (file type should be 1, this will start executing the
story). Under UNIX zipdebug should be used from the command line.
To run a story call the programme with the story name as first
parameter to the programme. E.g.:
zipdebug Borderzone
zipdebug is programmed in UCSD Pascal which is translated to c
with p2c. This removed a lot of bugs which were due to the Acorn
ISO Pascal (spit, spit!) Compiler (I didn't have any other Pascal
compiler for the Archimedes). The programme started out on an
Apple II with UCSD Pascal.
The source code (Pascal & C) is available in a separate archive.
I will continue to use the Pascal source, so I would prefer any
changes to be made in that source.
If the programme is called without a parameter, it will prompt
you for commands on its own command line.
zipdebug understands the following commands (the P option sends
output to the listing file (this is called 'listing' in the
current directory):
[] surround optional parameters, <> surround parameter names,
{} surround repeatable parameters, () group alternatives,
| separates alternatives):
Load new story file:
N <StoryFileName>
Execution commands:
X [P] <Address> start execution at address
A [P] <Address> start execution with trace
S enter single step mode
In single step mode the following keys can be typed:
<space> step one instruction
O execute until instruction after this one is reached
L disassemble next instruction
G execute until listed instruction is reached
T switch to trace mode
X start normal execution
B set break point
C clear break point
Ctrl-B interrupts execution and the last instruction is disassembled.
ESC interrupts any operation and returns you to the command line.
List commands:
L [P] <AddressRange> list code
G [P] <AddressRange> list code assumming address is subroutine
start (register initialization data)
T [P] <AddressRange> list text (compressed)
I[P][M|S] list header info or statistics
V[P|A] list vocabulary (A = with pointers)
C[P] list calls (backtrace)
R [P] list registers
W ( W | B ) [P] <AddressRangle> list memory (words | bytes)
List object:
O [P] ( <AddressRange> | "<string>" [, <Address>] ) [#]
Objects can be specified by number (if a range is given all
objects in that range are listed) or searched for by name
starting at an optional specifed object number.
The # option enables property listing (object properties are
additional data per object).
Z-State command:
Z [P] [S|I|R|X]
Options:
S list z-state
R reset z-state
I initialise z-state
(reload data pages and reset)
X start execution at start address
Entry point command:
E [C|D|N|Y]
The disassembler saves every subroutine address for better
disassembly (register initialization data is at the start
of a subroutine, trying to list this data as code gives
wrong disassembly).
Options:
C delete all saved entry points
D <address> delete entry point at address
Y turn on entry point saving
N turn off entry point saving
With no option the saved entry points are listed.
Set breakpoint:
B [P] [S|C] <Address> [<Number>]
Quit:
Q
Help:
? | H
Verify code:
$
Set option:
D ( (N|C|T|U) | ( (B|I|K|R|S|V) (Y|N|T|F) ) )
Dump options:
DC Set dump state to code dump
DT Set dump state to text dump
DU Set dump state to unpacked value dump
DN Turn off all code and text dumping
Switches (Y, N, T or F must follow the switch character):
DB Disassemble breakpoints
DF Fault unimplemented operations
DI not used
DK Crash on internal error
DO Set IPC to restart operations after internal error
or break
DR Check for register lists in code while disassembling
DS Start computing opcode statistics
DV Debug parsing of vocabulary
Modify memory:
M ( W | B ) [P] <AddressRange> {, <Number>}
Parameter syntax:
AddressRange = [<Address> [. <Address>]]
Address = [&] [*] <Number> [W|Q] | ~ | ^ | @ | + <Address>
Number = <Hexdigit> {<Hexdigit>}
@ is the start address supplied in the header.
~ is the previouly specified address.
^ is the address specified before the previous address.
& as prefix means indirect.
* as prefix means data relative.
W as suffix means word address.
Q as suffix means double word address.
G as suffix means code address
If no address is used the last address will be used, so
repeating 'L' will disassemble code sequentially.
To execute an adventure type the following commands:
N <storyfilename>
X
Special keys:
Ctrl-B Break-Key. Typing this will interrupt the execution of a story.
ESC Output interrupt. Typing this will stop any output.