+++ /dev/null
-This is ../../../interpreters/nitfol/nitfol.info, produced by makeinfo
-version 4.13 from ../../../interpreters/nitfol/nitfol.texi.
-
-INFO-DIR-SECTION Games
-START-INFO-DIR-ENTRY
-* nitfol: (nitfol). Z-code interpreter and debugger.
-END-INFO-DIR-ENTRY
-
-\1f
-File: nitfol.info, Node: Top, Next: Invoking nitfol, Prev: (dir), Up: (dir)
-
-Introduction
-************
-
-Nitfol is a portable interpreter for Z-machine code, the game format
-used by Infocom and more recently, Inform
-(http://www.gnelson.demon.co.uk/inform.html). Nitfol handles versions
-one through eight of the format, and attempts to comply with version
-1.0 of the Z-machine specification.
-
- You will need game files to use nitfol. The "if-archive" contains a
-large collection of these, available at
-`ftp://ftp.gmd.de/if-archive/games/zcode/' or at the USA mirror
-`http://ifarchive.org/indexes/if-archiveXgamesXzcode.html'.
-
- This manual describes how to use nitfol and how it differs from
-other Z-machine interpreters. This manual was written with UNIX-like
-systems in mind; ignore that which does not apply to your platform.
-Comments on and corrections for this manual and nitfol are appreciated
-and should be sent to <nitfol@my-deja.com>.
-
-* Menu:
-
-* Invoking nitfol:: How to start nitfol under UNIX
-* Features:: Useful extras
-* Debugger:: Built in source-level debugger
-
-* Bugs:: What I know is wrong
-* Thanks:: List of people who've helped
-* Games Cited:: The games used as examples in this manual
-
-\1f
-File: nitfol.info, Node: Invoking nitfol, Next: Features, Prev: Top, Up: Top
-
-1 Invoking nitfol
-*****************
-
-Invoke nitfol with the game filename, and options. If you omit the
-game filename, nitfol will prompt you for one. The following options
-are recognized:
-
-`-ignore'
-`-no-ignore'
-`-i'
- Ignore Z-machine strictness errors. Normally nitfol checks for
- illegal and undefined Z-machine behaviour and alerts the user. If
- you're playing someone else's buggy game, this can be annoying and
- you should use this option.
-
-`-fullname'
-`-no-fullname'
-`-f'
- For running under Emacs or DDD. Tells nitfol to give
- machine-recognizeable markers when stack frames are displayed
- instead of displaying the line. Only useful if you are using
- nitfol as an inferior debugger.
-
-`-command FILE'
-`-x FILE'
- Read commands from this file. Load a script from a file for
- playback in the game.
-
-`-pirate'
-`-no-pirate'
-`-P'
- Aye, matey. Make the piracy opcode not branch, letting the game
- know the game disc is not "genuine." Infocom never used this
- opcode and neither should you, but if obscurity amuses you...
-
-`-quiet'
-`-no-quiet'
-`-q'
- Do not print introductory messages. For GDB compatibility.
-
-`-spell'
-`-no-spell'
- Perform spelling correction. Normally Z-machine games are
- unforgiving of typos (though they do have an `oops' command). If
- you type in a word which isn't in the game's dictionary and have
- typo correction enabled, nitfol will search for a word which is
- off by one letter by a substitution, deletion, insertion or
- transposition.
-
-`-expand'
-`-no-expand'
- Expand one letter abbreviations. Early Z-machine games don't
- include `x' as a synonym for `examine' and such. If the first
- word in a sentence is one letter long and not recognized by the
- game, this will attempt to expand it to a full word.
-
-`-symbols FILE'
-`-s FILE'
- Specify symbol file for game. If you want to perform source-level
- debugging, you will need to specify a symbol file, which contains
- the names of variables and tells nitfol how source code
- corresponds to object code.
-
-`-tandy'
-`-no-tandy'
-`-t'
- Censors some Infocom games. Some version 3 games perform minor
- wording changes when this bit is set to appease the sensitivity of
- Tandy Corporation.
-
-`-transcript WFILE'
-`-T WFILE'
- Write transcript to this file. This transcript begins as soon as
- the game starts.
-
-`-debug'
-`-no-debug'
-`-d'
- Enter debugger immediatly. Imitate GDB by not automatically
- starting the story.
-
-`-prompt STRING'
- Specify debugging prompt. This is the prompt nitfol prints when
- it is waiting for a debugging command (as opposed to the > the
- game story prints when waiting for a game command). DDD requires
- this to be `(gdb) '.
-
-`-path STRING'
- Look for games in this directory. If nitfol cannot find the
- requested game in the current directory, it looks through the
- directories listed in the given colon separated string. The
- directories specified here are also used to search for gamefiles
- from saved games. If this option is not used, nitfol looks at
- the `INFOCOM_PATH' environment variable.
-
-`-autoundo'
-`-no-autoundo'
- Ensure `@save_undo' is called every turn. If a turn passes with
- no `@save_undo' between, this option performs the `@save_undo'
- automagically. Could cause problems with some games which have a
- different concept of a turn.
-
-`-stacklimit NUMBER'
-`-S NUMBER'
- Exit when the stack is this deep. If a game is infinitely
- recursing, nitfol will allocate large amounts of memory and take a
- long time before the problem is reported. This option makes it
- fatal to recurse more than the given number of stack frames.
- Setting this to 0 makes nitfol allow as many as fit contiguously
- in memory. The Z-machine Standards Document recommends games use
- no more than 1024 words of total stack (frames and pushed data) in
- ZIP, which roughly works out to 90 routine calls deep.
-
-`-alias STRING'
-`-a STRING'
- Specify an alias. Adds an alias which will be expanded in read
- lines before tokenisation. The alias is of the form NAME VALUE;
- you will need to use quotes around it on the commandline.
-
-`-ralias STRING'
- Specify an recursive alias. Adds an alias whose result is checked
- for further alias expansion. Identical syntax to adding a normal
- alias.
-
-`-unalias STRING'
- Remove an alias. Removes an alias previously added by -alias.
- Useful for removing aliases in preference files.
-
-`-random NUMBER'
-`-r NUMBER'
- Set random seed. Normally the random number generator is
- initialized with the time of day. If this option is used with a
- non-zero argument, the given number will be used to initialize the
- generator and for `@random 0'.
-
-`-mapsym STRING'
- Specify mapping glyphs. Nitfol draws maps using ASCII characters;
- you can choose which characters it uses to draw rooms. Defaults
- to `*udb@UDB+', which is, in order: empty room, room with down
- exit, room with up exit, room with up and down exits, room with
- player, room with player and up exit, room with player and down
- exit, room with player and up and down exits, bend symbol.
-
-`-mapsize NUMBER'
- Specify map size. Determines the number of lines to be used for
- the map.
-
-`-maploc STRING'
- Specify map location. Nitfol creates a Glk window for the map it
- generates. The map can be placed `above', `below', to the
- `right', or the `left', of the main game window. Follow this
- option with one those locations.
-
-`-terpnum NUMBER'
- Specify interpreter number. Each port of Infocom's Z-machine
- interpreter was given a number. `1' for their own DECSystem-20,
- `2' for Apple IIe, `3' for Macintosh, `4' for Amiga, `5' for Atari
- ST, `6' for IBM PC, `7' for Commodore 128, `8' for Commodore 64,
- `9' for Apple IIc, `10' for Apple IIgs, `11' for Tandy Color.
- Giving this option makes nitfol claim to be running on the
- specified system. A few games change their behaviour slightly
- depending on which machine type they run. By default nitfol
- claims to be on an Apple IIe, as this makes Beyond Zork not do
- character graphics.
-
-`-terpver STRING'
- Specify interpreter version. Infocom's interpreters were given
- versions, typically a capital letter. Nitfol defaults to `N',
- Frotz uses `F', and ZIP uses `B'. Any single character version is
- allowed. Multicharacter options are read as a number instead of
- an ASCII character. Only known effect upon games is the letter
- printed by banners and the `version' command. Version 6 games
- interpret this as a number instead of a letter.
-
-
-\1f
-File: nitfol.info, Node: Features, Next: Debugger, Prev: Invoking nitfol, Up: Top
-
-2 Features
-**********
-
-* Menu:
-
-* Preferences:: Store options in `~/.nitfolrc'
-* Infinite undo/redo:: Erase your mistakes and bad luck
-* Aliases:: Abbreviate long/common words
-* Abbreviation Expansion:: Expand one letter commands
-* Typo correction:: Nitfol uses a smart tokeniser
-* Automapping:: Automatically generate an on-screen map
-* Quetzal:: Save files are in Quetzal format
-* Blorb:: Nitfol supports Blorb resources
-
-\1f
-File: nitfol.info, Node: Preferences, Next: Infinite undo/redo, Prev: Features, Up: Features
-
-2.1 Preferences
-===============
-
-If you don't like the default options and don't want to recompile, you
-can set your preferences by writing a `.nitfolrc' in your home
-directory.
-
- Each line should be of the form `OPTION=VALUE'. Blank lines and
-lines starting with a `#' are ignored. If you want to specify
-different options for different copies of nitfol, you can put those
-options in a block which will only be read by copies of nitfol with a
-specific name.
-
- Here's an example `.nitfolrc':
- path=/usr/local/games/infocom
- alias=v verbose
- alias=asierra tone cordial. ask sierra about
- ignore=true
-
- [strictnitfol]
- ignore=false
- spell=false
- expand=false
- autoundo=false
- unalias=v
- unalias=asierra
-
- [xnitfol]
- tandy=true
- pirate=true
-
- Nitfol will look in `/usr/local/games/infocom' for game files.
-Copies of nitfol named `strictnitfol' will report Z-machine strictness
-errors, perform strict tokenisation, and not automatically
-`@save_undo'. All others will ignore strictness errors and have two
-aliases. `xnitfol' will set the Tandy bit and branch on the piracy
-opcode.
-
- Options specified in the preference file may be overruled by
-environment variables and command line options.
-
-\1f
-File: nitfol.info, Node: Infinite undo/redo, Next: Aliases, Prev: Preferences, Up: Features
-
-2.2 Infinite undo/redo
-======================
-
-Multiple `@restore_undo' opcodes with no intervening `@save_undo' will
-restore earlier and earlier saved states. However, Inform games will
-not do this, so if you want infinite undo, you must enter the commands
-`/undo' and `/redo'. The `/...' commands are part of the debugger, so
-you will need to compile in debugger support to use this feature.
-
- Z-machine games prior to version 5 do not provide undo (none of them
-provide redo), and some version 5 games don't use it (like
-`Wishbringer'). If the game performs two `@read' opcodes with no
-intervening `@save_undo' or `@restore_undo', nitfol will perform a
-`@save_undo'.
-
-\1f
-File: nitfol.info, Node: Aliases, Next: Abbreviation Expansion, Prev: Infinite undo/redo, Up: Features
-
-2.3 Aliases
-===========
-
-If the game has long words which you wish to abbreviate, you can use
-aliases. Use the command `/alias NAME VALUE'. All instances of NAME
-in line input will be replaced with VALUE. NAME may not contain
-whitespace.
-
- Unlike abbreviation expansion and typo correction, alias expansion
-modifies the text buffer, inserting the requested text. This is
-necessary to allow multiple commands to be given in an alias through
-the use of periods.
-
- Aliases are not expanded recursively, so you could do something
-clever like this:
- >/alias e w
- /alias w e
- /alias nw ne
- /alias ne nw
- /alias sw se
- /alias se sw
-
- And your east-west movement will be swapped (`e' will do a `w',
-though `east' will still do `east'). Aliases expand on all input the
-game receives using `@read', including transcripts and directions from
-the automapper.
-
- If you want the expansion of the alias to be checked for further
-aliases, you must use the `/ralias' command. This expansion is stopped
-when an alias would expand itself.
- >/ralias e w
- /ralias w e
-
- Would do nothing, as `e' is expanded to `w', which is expanded to
-`e', and then it stops because the rule for expanding `e' has already
-taken place.
-
- >/ralias hanoi2 move src to extra. move src to dest. move extra to dest
- /alias src left
- /alias dest center
- /alias extra right
- hanoi2
- You move the small disc from the left peg to the right peg.
- You move the medium disc from the left peg to the middle peg.
- You move the small disc from the right peg to the middle peg.
- >move left to right
- You move the large disc from the left peg to the right peg.
- >/alias src center
- /alias dest right
- /alias extra left
- hanoi2
- You move the small disc from the middle peg to the left peg.
- You move the medium disc from the middle peg to the right peg.
- You move the small disc from the left peg to the right peg.
-
- Ideally you should be able to define an alias which recursively
-solves any depth by relying on lower levels being solvable, but this
-isn't yet possible. You must keep the expansion of aliases to a
-reasonable size, since Inform has a fairly small buffer size.
-
- You can remove aliases using the `/unalias' command.
- >/unalias hanoi2
-
- Aliases do not effect `/...' commands; if they did, it wouldn't be
-possible to `/unalias'.
-
-\1f
-File: nitfol.info, Node: Abbreviation Expansion, Next: Typo correction, Prev: Aliases, Up: Features
-
-2.4 Abbreviation Expansion
-==========================
-
-Early Infocom games don't provide abbreviations like `x' for `examine'.
-If you enable abbreviation expansion, nitfol will attempt to expand one
-letter words at the beginning of inputs which are not in the game's
-dictionary.
-
- Nitfol supports the following expansions (note that some are
-non-standard):
-
-c close d down e east g again
-i inventory k attack l look n north
-o oops p open q quit r drop
-s south t take u up w west
-x examine y yes z wait
-
- From `Zork I':
- *West of House*
- You are standing in an open field west of a white house, with a
- boarded front door.
- There is a small mailbox here.
-
- >x mailbox
- [x -> examine]
- The small mailbox is closed.
-
- >p it
- [p -> open]
- Opening the small mailbox reveals a leaflet.
-
- >t leaflet
- [t -> take]
- Taken.
-
-\1f
-File: nitfol.info, Node: Typo correction, Next: Automapping, Prev: Abbreviation Expansion, Up: Features
-
-2.5 Typo correction
-===================
-
-In the Z-machine, the `@read' opcode provides the interpreter with a
-dictionary to search in order to do tokenisation and word matching. If
-you enable typo correction and enter a word not in the provided
-dictionary, nitfol will search for near misses.
-
- From `Curses':
- >ask jemmia about gloves
- [jemmia -> jemima]
- "Those are my gloves."
-
- Nitfol takes the following steps to correct typos:
-
- 1. If the entered word is in the dictionary, behave as normal.
-
- 2. If the length of the word is less than 3 letters long, give up.
- We don't want to make assumptions about what so short words might
- be.
-
- 3. If the word is the same as a dictionary word with one
- transposition, assume it is that word. `exmaine' becomes
- `examine'.
-
- 4. If it is a dictionary word with one deleted letter, assume it is
- that word. `botle' becomes `bottle'.
-
- 5. If it is a dictionary word with one inserted letter, assume it is
- that word. `tastey' becomes `tasty'.
-
- 6. If it is a dictionary word with one substitution, assume it is
- that word. `opin' becomes `open'.
-
- This behavior can be annoying when nitfol "corrects" intentionally
-entered words which are similar to dictionary words. Usually this has
-no effect upon the game, perhaps slightly changing the game's error
-message, but may have negative effects when it causes an undesired
-action. Games like `Beyond Zork' expect you to type words not in their
-dictionary to name things. Nitfol might "correct" your entered word to
-a dictionary word, which the game might complain about.
-
- If typo correction is getting in your way, run nitfol with
-`-no-smart', compile it without applying `-DSMART_TOKENISER', or edit
-`nitfol.opt' to change the compile-time default.
-
-\1f
-File: nitfol.info, Node: Automapping, Next: Quetzal, Prev: Typo correction, Up: Features
-
-2.6 Automapping
-===============
-
-Nitfol has the ability to display an on-screen map showing visited
-rooms and their connections on the current floor. Below is a map
-generated from `Enchanter'.
- *-* *
- | |
- u-*-*-*-*-------*---*
- | |
- * * * | *---* |
- |/ \ / | /|\ / \ |
- * * * / | X * \ *
- / \ | / |/ v| \ |
- / * *-*-*-*-*---*---u---*-*-*-@
- / | / | |\ |\ ^| / |
- *-* * * | | \ | X * / *-*
- \ |/ | | \|/ \ / |
- * * * * *---* *
- \ / | | |
- * u-d-*-----------*-u
- |
- *
- \
- *
-
- The `*'s designate rooms; the `@' the current room. Rooms
-containing staircases are shown with a `u' or `d', or `b' if the
-staircase is bi-directional. If the current room contains a staircase,
-nitfol draws it with a `U', `D', or `B'. Passageways are shown with
-lines; the `X's are crossed lines. One-way passages are shown as lines
-with arrows. Nitfol uses `v', `^', `<', and `>' for arrow heads.
-
- In Glks which provide mouse events, you can click on rooms and it
-will display the room name (and number) in the upper left hand corner
-of the map. Note that XGlk is slightly broken, so you need to click on
-the left-hand side of the room. Clicking on an empty map space clears
-the name.
-
- In order to use automapping, you must tell nitfol how to calculate
-the current location. You do this by specifying an Inform expression,
-so you must have debugging enabled.
-
- Typically the current location is available in a global. In Z-code
-versions 3 and prior, the current location is always stored in global
-zero, so typing `/automap (global) 0' should work. In later versions,
-you must figure out an expression which evaluates to the current
-location.
-
- First, find out where the player object is. Typically, the player
-object is named `self', `cretin', `self-object', or the name of the PC.
-You can use the `find' command to search object names. If this all
-fails, try `object-tree' to find the location number.
-
- Once you have found the number of the location, you need to figure
-out which global keeps track of the location. You can use the
-`globals' command to search the globals.
-
- From `Spider And Web':
- >/find self
- 20 "(self object)"
- 25 "yourself" in 91 "End of Alley"
- 26 "yourself" in 48 "chair"
- /globals 91
- G15 G36 G39
- s
-
- *Mouth of Alley*
- You're in the entrance of a narrow brick alley, which runs further
- in to the north. To the south a broad street courses by, congested
- with traffic and bicycles, although none of them seem to notice you.
-
- >/find self
- 20 "(self object)"
- 25 "yourself" in 94 "Mouth of Alley"
- 26 "yourself" in 48 "chair"
- /globals 94
- G15 G36 G39
- /automap (global) 15
-
- Obviously we have 3 globals tracking the player location. Typically
-there are only two, but some games have more. In this, we just picked
-the first one, which is probably the Inform `location' variable;
-another is probably the `real_location' variable. Depending on how you
-want automapping to behave in the dark, or when dealing with
-game-specific stuff, you may want to pick a different one.
-
- To figure out what is in which direction, nitfol checks the current
-location, tells the game to go north, checks the new location, undoes
-the north movement, tries to go northeast, and so on. During all of
-this, output is disabled.
-
- Drawing the map is more complicated. First nitfol looks for cycles
-in the graph and makes the cycles connect properly. Then it draws the
-map. If parts of the map overlapp, it finds a path connecting the
-overlapping bits and tries increasing the length of each passage in
-this path by one, and recalculates cycle connections. If this solves
-the problem, it's done; otherwise, it tries increasing the length of
-two passages, or of one of the passages by two. If this fails, it
-gives up.
-
- This technique isn't perfect. The implementation of this technique
-isn't perfect either. So expect nitfol to misbehave a lot on complex
-maps, and a little on simple maps. If you clever ideas on how to
-improve it, let me know.
-
- Nitfol makes an effort to simplify the map. If multiple exits go
-from the barn to cornfield and you've been to both places, nitfol will
-draw a single two-way passage if possible. If both up and west go up
-the stairs and nitfol knows east returns from the top of the stairs,
-nitfol will draw it as a simple west-east passage ignoring the up/down.
-If east doesn't return from the top of the staircase, nitfol will draw
-it as up/down, leaving out the west passage.
-
- If you've been north of a gate, and come up to the gate from the
-south, and unlock the gate, nitfol will draw it as a one-way passage
-since last time it was north of the gate, it couldn't go south.
-
- Some games feature reincarnation, perhaps moving you to a new
-location. If movement leads to your death, this makes nitfol think the
-reincarnation location is in that direction. Nitfol watches for three
-asterisks in a row and will assume they mean death instead of a normal
-passage.
-
- Some of these problems could be avoided by having nitfol explore
-each neighboring room, but this would make automapping even slower.
-
-\1f
-File: nitfol.info, Node: Quetzal, Next: Blorb, Prev: Automapping, Up: Features
-
-2.7 Quetzal
-===========
-
-Nitfol uses Quetzal version 1.4 for its save format, so you can use
-your saves between different computers and interpreters. More
-information about Quetzal is available at
-`http://www.geocities.com/SiliconValley/Vista/6631/'.
-
- If you specify a save-file on the command-line on UNIX, nitfol uses
-a `UNIX' `IntD' chunk to locate the game file associated with the save
-name. This chunk is included in save games when nitfol can figure out
-the current filename. If you compile nitfol with -D__USE_GNU,
--D__USE_BSD, or -D__USE_XOPEN_EXTENDED, nitfol will canonicalize the
-file name, so you don't have to worry about relative file name
-specifications no longer working if you invoke nitfol from a different
-directory.
-
- On MacOS, nitfol uses alias records from a `MACS' `IntD' chunk to
-locate the game file. This won't work for games built-in to the
-interpreter.
-
- If no `IntD' chunk is included, nitfol searches the environment
-variable `INFOCOM_PATH' for a game with matching release number, serial
-number, and checksum.
-
- Looking for games without an `IntD' chunk isn't foolproof, but it
-should work most of the time. Serial numbers are basically the date
-and it's extremely unlikely more than ten games will be compiled on the
-same day (the only time lots of games are compiled on same day is right
-before competition time). Assuming they all have the same release
-number, there's still only a .0686% chance that at least two of these
-ten will share the same checksum. If someone reports this as a
-problem, I'll make nitfol ensure the game contains a `save' opcode
-right before the restored PC.
-
-\1f
-File: nitfol.info, Node: Blorb, Prev: Quetzal, Up: Features
-
-2.8 Blorb
-=========
-
-If you wish to hear sounds or see graphics in your games, they must be
-packaged in Blorb files. The Z-machine game may included in the Blorb
-file or may be specified separately. Nitfol does not support the
-traditional Infocom `.mg1' and `.snd' files.
-
- Note that graphics are displayed incorrectly, and sound has not yet
-been tested.
-
-\1f
-File: nitfol.info, Node: Debugger, Next: Bugs, Prev: Features, Up: Top
-
-3 Debugger
-**********
-
-Nitfol debugging mode tries to imitate the GDB interface. If you're
-familiar with that, you should have no problem using nitfol (other than
-dealing with the current incompleteness).
-
- You need inform 6.21 or later, as earlier versions don't produce
-correct infix files without a patch. You then need to compile infix
-information for your game. I recommend doing:
-
- `inform -k -~S -~X -~D MYGAME.inf'
-
- Then your debug information will be in `gameinfo.dbg'. If you have
-a command-line on your platform, run nitfol like `nitfol MYGAME.z5
--symbols gameinfo.dbg'. Otherwise, start up your game and type
-`/symbol-file gameinfo.dbg' the first time you get a prompt.
-
- When the game stops to read a line of text, you can begin that line
-with `/' to give a debug command. If you want to pass a line beginning
-with a `/' to the game, double the `/' and the game will be passed the
-second one. When at a `(nitfol) ' prompt, starting commands with `/'
-is neither necessary nor recommended.
-
- All expressions are like the ones used in Inform.
-
- You can perform casts to get the result in the form you want:
-
-`(number) EXPRESSION'
- Use EXPRESSION as if it were a number. Useful when you want to
- know the number of something, not the object, routine, or string
- information nitfol normally gives.
-
-`(object) EXPRESSION'
- Use EXPRESSION as if it were an object. Most useful when printing
- the result, as it will show the object's attributes and properties.
-
-`(routine) EXPRESSION'
- Use EXPRESSION as if it were the packed address of a routine.
- Useful if you have the packed address of a routine which you want
- to set a breakpoint at.
-
-`(string) EXPRESSION'
- Use EXPRESSION as if it were the packed address of a string.
- Useful for printing it.
-
-`(global) EXPRESSION'
- Evaluates to the value of a numbered global. `(global) 0' is the
- player location for version 3 Infocom games.
-
-`(local) EXPRESSION'
- Evaluates to the value of a numbered local. Not terribly useful
- unless you're debugging something without source.
-
- Here are short descriptions of the debugger commands. *note
-(gdb)Top::, for more information. Some of these were taken/adapted
-from GDB's help.
-
-`up-silently'
-`up-silently NUM'
- Select the parent of the selected frame silently. An argument
- specifies how many frames up to go.
-
-`set EXP'
- Evaluate an expression without printing its value.
-
-`backtrace'
-`backtrace NUM'
-`backtrace - NUM'
- Display the parent functions of the current frame. An argument
- specifies how many frames back to show. If the argument is
- negative, start from the first frame instead of the current.
-
-`break LINESPEC'
-`break LINESPEC if EXP'
- Set a breakpoint. An `if' clause specifies a condition.
-
-`recording off'
- Stop recording a script.
-
-`recording on'
- Start recording a script.
-
-`down-silently'
-`down-silently NUM'
- Silently select the child of the selected frame. An argument
- specifies how many frames down to go.
-
-`show copying'
- Show licensing information.
-
-`condition NUM EXP'
- Set a condition for an existing breakpoint.
-
-`step'
-`step NUM'
- Step through program to a different source line. An argument
- specifies a repeat count.
-
-`remove EXP'
- Remove an object from the object tree.
-
-`replay'
- Replay a recorded script.
-
-`down'
-`down NUM'
- Select the child of the selected frame. An argument specifies how
- many frames down to go.
-
-`globals'
-`globals EXP'
- List all global variables and their values. With an argument,
- list all only those with a specific value.
-
-`enable display NUM'
- Re-enable an automatic display.
-
-`nexti'
-`nexti NUM'
- Step one instruction, stepping over subroutine calls. Step a
- specified number of instructions, stepping over subroutine calls.
-
-`until'
- Resume execution until the program reaches a line number greater
- than the current line.
-
-`object-tree'
-`object-tree EXP'
- Display the object tree. An argument says which object to use as
- the root of the tree.
-
-`stepi'
-`stepi NUM'
- Step exactly one instruction. An argument specifies a repeat
- count.
-
-`show warranty'
- Show warranty information.
-
-`restart'
- Restart the game.
-
-`undo'
- Undo last move (not last debugger command).
-
-`frame'
-`frame NUM'
- Show the selected stack frame. An argument specifies a stack
- frame to show.
-
-`select-frame NUM'
- Select a specific stack frame.
-
-`continue'
-`continue NUM'
- Continue execution. An argument sets the ignore count of the
- current breakpoint.
-
-`finish'
- An argument specifies a repeat count.
-
-`give EXP NUM'
-`give EXP ~ NUM'
- Give an object an attribute. With a tilde clears the attribute
- instead of setting it.
-
-`find'
- Find objects whose shortnames contain a string.
-
-`jump LINESPEC'
- Continue execution at a new location.
-
-`show language'
- Show the current source language.
-
-`dumpmem FILE'
- Dump memory to a file
-
-`undisplay NUM'
- Stop automatically displaying an expression.
-
-`disable NUM'
- Temporarily disable a breakpoint.
-
-`restore'
- Restore a saved game.
-
-`redo'
- Redo undid move. Only works immediately after an `undo'.
-
-`info sources'
- List source files.
-
-`symbol-file FILE'
- Load debugging info from a file (usually `gameinfo.dbg').
-
-`display EXP'
- Print value of an expression each time the program stops.
-
-`next'
-`next NUM'
- Step through program, stepping over subroutine calls. An argument
- specifies a repeat count.
-
-`info breakpoints'
-`info breakpoints NUM'
- List breakpoints. An argument specifies a specific breakpoint to
- list.
-
-`unalias NAME'
- Remove an alias
-
-`help'
- Print list of commands.
-
-`move EXP to EXP'
- Move an object around the object tree.
-
-`delete NUM'
- Delete a breakpoint.
-
-`quit'
- Exit nitfol.
-
-`up'
-`up NUM'
- Select the parent of the selected frame. An argument specifies
- how many frames up to go.
-
-`alias NAME VALUE'
- Add an alias
-
-`enable NUM'
- Re-enabled a breakpoint.
-
-`automap EXP'
- Start automapping
-
-`info source'
- Get information on the current source file.
-
-`replay off'
- Halt replay.
-
-`# comment'
- Enter a comment
-
-`ralias NAME VALUE'
- Add a recursive alias
-
-`ignore NUM NUM'
- Set the ignore count for a breakpoint.
-
-`print EXP'
- Evaluates an expression and prints the result. This can include
- function calls.
-
-`disable display NUM'
- Temporarily disable an automatic display.
-
-
- If you're on a UNIX and you don't like the GDB interface, you can
-compile cheapnitfol and run it as the inferior debugger under Emacs or
-DDD. You can also try compiling `xnitfol' with `-DSTDOUT_DEBUG' and
-trying that, but I haven't tested that much.
-
-`ddd MYGAME.z5 --debugger cheapnitfol -s gameinfo.dbg -prompt "(gdb) "'
-
-\1f
-File: nitfol.info, Node: Bugs, Next: Thanks, Prev: Debugger, Up: Top
-
-4 Bugs
-******
-
-A nitfol bug is any behaviour which makes nitfol reliably misbehave,
-with the exceptions of bugs in Glk libraries. These include: anything
-which makes nitfol crash (other than when nitfol reports `FATAL'
-errors), anything which causes nitfol to contradict the Z-machine
-standards documents (except for optional enhancements like spelling
-correction and debug mode), any buffer overflows, and anything which
-makes nitfol infinite loop other than infinite loops in the game itself.
-
- Before reporting a bug, make sure the bug is not listed below and
-your copy of nitfol is not compiled with `-DFAST'. Please report the
-version of nitfol, your system type and a series of commands which
-reliably cause the bug.
-
- Nitfol is lacking:
- - Graphical font (`Beyond Zork') (should use images for this)
-
- - Terminating character support (mostly `Beyond Zork')
-
- - Reverse video, full color (should querry Glk more aggressively)
-
- - Unicode support
-
- - keypad character codes
-
- - its own random number generator (relies on system one)
-
- Nitfol does incorrectly:
- - Play is not paused to wait for sounds to complete in `The Lurking
- Horror'.
-
- - Pictures and text are not placed correctly for v6 games.
-
- - block quotes are placed in the upper window, so `cheapnitfol'
- can't see them.
-
- - Corrupted save files may make nitfol do bad things.
-
- - Should figure out a way to handle buggy games like `AMFV' and
- `Varicella' which assume the upper window is 80 columns wide.
-
- - Doesn't catch header writing other than `@storeb' and `@storew'.
-
- Debugger problems:
- - Sometimes says there's no code at a location where it could be
- clever and find some.
-
- - `ofclass', superclass not implemented.
-
- - Should perform more sanity checks everywhere.
-
- - Lots of useful commands not yet implemented.
-
- - OBJECT.FUNCTION is handled incorrectly, both for assignments and
- calls.
-
- - Assumes you know what you're doing, so `quit', `run', etc., don't
- prompt you for confirmation.
-
- Automapping problems:
- - Doesn't work well for random destinations (the forest in `Advent')
-
- - `@get_cursor' doesn't return the correct value during automapping
- since output is disabled.
-
- - Requires too much work for the end-user; should put in stuff to
- make it figure out the location global in 95% of games.
-
- - Doesn't really work if multiple locations are coded as being in
- the same room (long road in `Enchanter').
-
- - Doesn't show exits which go nowhere, but change the game.
-
- - Perhaps should use graphics windows when available.
-
- - Movement causing teleportation confuses it.
-
- - Reincarnation handling isn't optimal.
-
- - Still very buggy.
-
- - It's too slow.
-
- - Should realize it can add extra bends (especially in one-way
- passages).
-
- - Should be able to output nice-looking Postscript.
-
- - Should store map in saved games (wait until automapping code
- stabilizes).
-
-\1f
-File: nitfol.info, Node: Thanks, Next: Games Cited, Prev: Bugs, Up: Top
-
-5 Thanks
-********
-
-The following people have given comments, suggestions, bug reports,
-answered questions, or helped port nitfol (in alphabetical order):
- - John Cater
-
- - Paul David Doherty
-
- - Martin Frost
-
- - Doug Jones
-
- - David Picton
-
- - Andrew Plotkin
-
- - Andrew Pontious
-
- - L. Ross Raszewski
-
- - Dan Shiovitz
-
-\1f
-File: nitfol.info, Node: Games Cited, Prev: Thanks, Up: Top
-
-6 Games Cited
-*************
-
-`Wishbringer' Copyright (C) 1985, 1988 Infocom Inc.
-
-`Zork I' Copyright (C) 1981-1986 Infocom Inc.
-
-`Curses' Copyright (C) 1993-1994 Graham Nelson.
-
- `http://ifarchive.org/if-archive/games/zcode/curses.z5'
-
-`Beyond Zork' Copyright (C) 1987 Infocom Inc.
-
-`Enchanter' Copyright (C) 1983, 1984, 1986 Infocom Inc.
-
-`Varicella' by Adam Cadre 1999.
-
- `http://adamcadre.ac/content/vgame.z8'
-
-`Spider And Web' Copyright (C) 1997-1998 Andrew Plotkin.
-
- `http://ifarchive.org/if-archive/games/zcode/Tangle.z5'
-
-
-\1f
-Tag Table:
-Node: Top\7f263
-Node: Invoking nitfol\7f1602
-Node: Features\7f8478
-Node: Preferences\7f9127
-Node: Infinite undo/redo\7f10483
-Node: Aliases\7f11257
-Node: Abbreviation Expansion\7f13781
-Node: Typo correction\7f14898
-Node: Automapping\7f16812
-Node: Quetzal\7f22591
-Node: Blorb\7f24312
-Node: Debugger\7f24738
-Node: Bugs\7f31713
-Node: Thanks\7f34768
-Node: Games Cited\7f35184
-\1f
-End Tag Table