home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / recreation / zipdebug / b055 / !ZIPDebug / !Help < prev    next >
Text File  |  1993-08-05  |  7KB  |  185 lines

  1.  
  2. zipdebug help file (5-Aug-93)
  3. ------------------------------
  4.  
  5. zipdebug was written by Frank Lancaster during 1984-1993.
  6.  
  7. zipdebug and sources are free, you may do anything with them.
  8.  
  9. Contact:      email: fl@tools.de
  10.          paper mail: Frank Lancaster
  11.                      Karl-Barth-Str. 39
  12.                      53129 Bonn
  13.                      Germany
  14.  
  15. This programme is a debugger for Infocom adventures. It contains
  16. a complete interpreter and disassmbler for code versions 3, 4 and
  17. 5 (Borderzone (including real time action) and Sherlock run
  18. without problems, in Beyond Zork the on-line mapping will only
  19. work correctly with the alternate font with Archimedes RISC OS,
  20. colour is also only supported in RISC OS). Code version 6 (Zork
  21. Zero, Shogun, King Arthur) can be partially disassembled but will
  22. not run properly (work will continue on getting it to run).
  23.  
  24. I invented the mnemonics for the op-codes myself, so they won't
  25. be compatible to anything else you may have seen. Descriptions of
  26. the mnemonics and opcodes will be avaialble "real soon now" (that
  27. means whenever I find time).
  28.  
  29. With RISC OS zipdebug should be started from the desktop, either
  30. by double clicking the application icon (this will start the
  31. programme in interactive mode) or by double-clicking a story data
  32. file (file type should be 1, this will start executing the
  33. story). Under UNIX zipdebug should be used from the command line.
  34. To run a story call the programme with the story name as first
  35. parameter to the programme. E.g.:
  36.  
  37. zipdebug Borderzone
  38.  
  39. zipdebug is programmed in UCSD Pascal which is translated to c
  40. with p2c. This removed a lot of bugs which were due to the Acorn
  41. ISO Pascal (spit, spit!) Compiler (I didn't have any other Pascal
  42. compiler for the Archimedes). The programme started out on an
  43. Apple II with UCSD Pascal.
  44.  
  45. The source code (Pascal & C) is available in a separate archive.
  46. I will continue to use the Pascal source, so I would prefer any
  47. changes to be made in that source.
  48.  
  49.  
  50. If the programme is called without a parameter, it will prompt
  51. you for commands on its own command line.
  52.  
  53. zipdebug understands the following commands (the P option sends
  54. output to the listing file (this is called 'listing' in the
  55. current directory):
  56.  
  57. [] surround optional parameters, <> surround parameter names,
  58. {} surround repeatable parameters, () group alternatives,
  59. | separates alternatives):
  60.  
  61. Load new story file:
  62.         N <StoryFileName>
  63.  
  64. Execution commands:
  65.         X [P] <Address>                 start execution at address
  66.         A [P] <Address>                 start execution with trace
  67.         S                               enter single step mode
  68. In single step mode the following keys can be typed:
  69.         <space>                         step one instruction
  70.         O                               execute until instruction after this one is reached
  71.         L                               disassemble next instruction
  72.         G                               execute until listed instruction is reached
  73.         T                               switch to trace mode
  74.         X                               start normal execution
  75.         B                               set break point
  76.         C                               clear break point
  77.  
  78. Ctrl-B interrupts execution and the last instruction is disassembled.
  79.  
  80. ESC interrupts any operation and returns you to the command line.
  81.  
  82. List commands:
  83.         L [P] <AddressRange>            list code
  84.         G [P] <AddressRange>            list code assumming address is subroutine
  85.                                         start (register initialization data)
  86.         T [P] <AddressRange>            list text (compressed)
  87.         I[P][M|S]                       list header info or statistics
  88.         V[P|A]                          list vocabulary (A = with pointers)
  89.         C[P]                            list calls (backtrace)
  90.         R [P]                           list registers
  91.         W ( W | B ) [P] <AddressRangle> list memory (words | bytes)
  92.  
  93. List object:
  94.         O [P] ( <AddressRange> | "<string>" [, <Address>] ) [#]
  95. Objects can be specified by number (if a range is given all
  96. objects in that range are listed) or searched for by name
  97. starting at an optional specifed object number.
  98. The # option enables property listing (object properties are
  99. additional data per object).
  100.  
  101. Z-State command:
  102.         Z [P] [S|I|R|X]
  103. Options:
  104.         S                               list z-state
  105.         R                               reset z-state
  106.         I                               initialise z-state
  107.                                         (reload data pages and reset)
  108.         X                               start execution at start address
  109.  
  110. Entry point command:
  111.         E [C|D|N|Y]
  112. The disassembler saves every subroutine address for better
  113. disassembly (register initialization data is at the start 
  114. of a subroutine, trying to list this data as code gives
  115. wrong disassembly).
  116. Options:
  117.         C                               delete all saved entry points
  118.         D <address>                     delete entry point at address
  119.         Y                               turn on entry point saving
  120.         N                               turn off entry point saving
  121. With no option the saved entry points are listed.
  122.  
  123. Set breakpoint:
  124.         B [P] [S|C] <Address> [<Number>]
  125.  
  126.  
  127. Quit:
  128.         Q
  129.  
  130. Help:
  131.         ? | H
  132.  
  133. Verify code:
  134.         $
  135.  
  136. Set option:
  137.         D ( (N|C|T|U) | ( (B|I|K|R|S|V) (Y|N|T|F) ) )
  138.  
  139.         Dump options:
  140.                 DC      Set dump state to code dump
  141.                 DT      Set dump state to text dump
  142.                 DU      Set dump state to unpacked value dump
  143.                 DN      Turn off all code and text dumping
  144.  
  145.         Switches (Y, N, T or F must follow the switch character):
  146.                 DB      Disassemble breakpoints
  147.                 DF      Fault unimplemented operations
  148.                 DI      not used
  149.                 DK      Crash on internal error
  150.                 DO      Set IPC to restart operations after internal error
  151.                         or break
  152.                 DR      Check for register lists in code while disassembling
  153.                 DS      Start computing opcode statistics
  154.                 DV      Debug parsing of vocabulary
  155.  
  156. Modify memory:
  157.         M ( W | B ) [P] <AddressRange> {, <Number>}
  158.  
  159. Parameter syntax:
  160.         AddressRange  = [<Address> [. <Address>]]
  161.         Address       = [&] [*] <Number> [W|Q] | ~ | ^ | @ | + <Address>
  162.         Number        = <Hexdigit> {<Hexdigit>}
  163.  
  164. @ is the start address supplied in the header.
  165. ~ is the previouly specified address.
  166. ^ is the address specified before the previous address.
  167. & as prefix means indirect.
  168. * as prefix means data relative.
  169. W as suffix means word address.
  170. Q as suffix means double word address.
  171. G as suffix means code address
  172.  
  173. If no address is used the last address will be used, so
  174. repeating 'L' will disassemble code sequentially.
  175.  
  176. To execute an adventure type the following commands:
  177.  
  178. N <storyfilename>
  179. X
  180.  
  181. Special keys:
  182.  
  183. Ctrl-B          Break-Key. Typing this will interrupt the execution of a story.
  184. ESC             Output interrupt. Typing this will stop any output.
  185.