FROTZ V2.01 - an interpreter for all Infocom games. Complies with standard 0.2 for all games except V6 (graphic) games. Written by Stefan Jokisch in 1995-96 This program evolved from Mark Howell's Zip. Although the source code is completely re-written, one can still find traces of Zip. Many thanks to Paul D. Doherty for his continuing support of this project. Thanks to Alan Sherrod for testing the performance; to John Kennedy and Ambat Sasi Nair for helpful hints on PC video boards; to Thomas Biskup, Ian Carpenter, Graeme Cree, Jason Dyer, Bernhard Fuchs, Joe Hachem, Kirk Klobe, Marnix Klooster and John Mackin for their bug reports; to David Kinder for his Amiga port. Frotz is freeware: It may be used and distributed freely provided no commercial profit is involved. (c) 1995, 1996 Stefan Jokisch, . This OS/2 port was done by Christopher J. Madsen . Please report bugs in it to me, and I'll forward them to Stefan if necessary. If you want to be helpful, you could get the DOS version and see if it has the same bug. (OS/2 and DOS saved games are compatible.) There are two executables in this archive. You only need one of them. Frotz.exe is the standard executable, and FrotzEMX.exe is a smaller one for people who have installed the EMX 0.9c runtime libraries. This is a beta release, but I haven't had any problems with it. Please give it a try and let me know how it works. In particular, the European character support needs testing. I don't have any games that use it. If you do, *please* let me know if it works. Features: - support for V1 to V8 games - user-defined aliases (NEW, OS/2 port only) - timed input ('Border Zone') - function key support including number pad keys ('Beyond Zork') - command line editing and history - small save files (Zip 2.0 format is still understood) - switches for colour setting - switch for setting the Tandy bit - low- and high-pitched beep sounds - cheat functions - multiple UNDO (via hot key, even for old V1 to V4 games) - input line recording and playback (via hot key) - support for European characters ('Zork I German') - emphasized, reverse and boldface text - fast performance without virtual memory Features in the DOS version but not in this OS/2 port: - various text and graphic modes - built-in graphic font ('Beyond Zork') - mouse support ('Beyond Zork' and all V6 games) - sound effects via Soundblaster ('Lurking Horror' and 'Sherlock') Special keys: Alt-A - alias menu Alt-N - new game (restart) Alt-P - turn on input line playback Alt-R - toggle input line recording on/off Alt-S - set the random seed Alt-U - multiple UNDO (even for old V1 to V4 games) Alt-X - exit game (quit) Ctrl-B or cursor left - move one character to the left Ctrl-F cursor right - move one character to the right Alt-B ctrl-cursor left - move to previous word Alt-F ctrl-cursor right - move to next word Ctrl-A home - move to beginning of line Ctrl-E end - move to end of line backspace - delete character to the left ctrl-backspace - delete word to the left Ctrl-D delete - delete character below cursor Alt-D ctrl-delete - delete word below cursor insert - toggle overwrite mode on/off Ctrl-U escape - delete whole input line Ctrl-P cursor up - get previous command Ctrl-N cursor down - get next command Ctrl-T - transpose characters page up - scroll status window up ('Beyond Zork') page down - scroll status window down ('Beyond Zork') The history works differently in OS/2 beta 3. When you press the up or down arrow, Frotz looks for a line that begins with the characters you have typed so far. You can press the up and down arrow keys to cycle through the matches. Pressing any other key breaks the cycle, so pressing up or down again will start a new search. In addition, commands less than 4 characters are no longer recorded in the history. User-defined aliases: The OS/2 port of Frotz now supports user-defined aliases. An alias is just a word that gets replaced by a string. For example, in older Infocom games, you can alias 'x' to 'examine', and then type 'x box' instead of 'examine box'. This can save you lots of typing. Aliases affect all input read by the 'read' routine. In most games, this is just about everything (one exception is Bureaucracy's forms). Aliases are case sensitive, but the game's parser is not. So, you can use 'x' and 'X' for different aliases, or use 'x' for 'examine' and 'X' if you really want the word 'x'. You press Alt-A to bring up the alias menu. It looks like this: Hot key -- Alias A)dd C)lear D)elete L)oad O)ff S)ave V)iew: _ You should then press the first letter of your choice: A)dd Create an alias. You will be prompted for an alias and its expansion. The alias must be composed only of alphanumeric characters. If the alias already exists, it will be replaced. C)lear Delete all aliases. You will be prompted for confirmation. D)elete Delete one alias. You will be prompted for the alias you want to delete. L)oad Load aliases from an initialization file (see below). This does not erase the current aliases (unless the init file uses the 'clear' command). O)n or O)ff Turn alias expansion on or off. If alias expansion is currently on, this choice will say "O)ff"; if it's off, the choice will say "O)n". This does not affect the alias table. Defining a new alias automatically turns alias expansion on. S)ave Save the current aliases to an init file. You will be prompted for the filename. V)iew List the contents of the alias table. Aliases can also contain parameters. So, you can make aliases like 'dlu' (defined as 'look up %s in dictionary'), which expands 'dlu fool's gold' to 'look up fool's gold in dictionary'. The parameters are introduced by a percent sign: %r The rest of the input %s Everything up to the next period %w The next word %% A single percent sign You can't have more than one %s or %r in an alias, and %w will not move past a period or comma. Initialization Files: Aliases can be defined in initialization files. Frotz automatically loads the file 'frotz.frc' from the directory defined by the HOME environment variable (or the current directory if HOME is not defined). It then loads the file 'story.frc' from the current directory (where 'story' is the name of the game file, with the extension replaced by '.frc'). You can also load init files while playing the game with the 'Alt-A L' command. The 'Alt-A S' command creates an init file. Init files can contain the following commands (one per line): alias ALIAS EXPANSION Define ALIAS as an alias for EXPANSION. If ALIAS is already defined, it is replaced by the new one. unalias ALIAS Delete ALIAS from the alias table (if it exists). clear Delete all aliases. % COMMENT Any line that begins with a percent sign is a comment, and is ignored. You cannot have partial-line comments; 'alias x examine % comment' defines 'x' as an alias for 'examine % comment'. Command line options: -f # set the foreground colour -b # set the background colour -e # set the emphasis colour -F # set the foreground colour for reverse mode -B # set the background colour for reverse mode -w # set the screen width -h # set the screen height -l # set the left margin -r # set the right margin -c # set the number of context lines to keep when scrolling -u # set the number of undo slots for multiple undo -o monitor object movement -O monitor object locating -a monitor attribute assignment -A monitor attribute testing -t set the Tandy bit (see below) -x enable abbreviations for older games (see below) @file Read additional command line options from FILE (one per line) Colours range from 0 to 15. Frotz also looks for options in the environment variable FROTZOPT. Questions and answers: Q: What is Frotz? A: Frotz runs text adventures which come in so-called story files: ZORK1.DAT, TRINITY.DAT, CURSES.Z5, JIGSAW.Z8, ARTHUR.ZIP etc. Q: Where can I find story files to use with Frotz? A: First, you can use the files from your original Infocom games. It is possible to play Atari ST, Amiga or Macintosh games on your PC once you manage to transfer the story files. Some people even extracted story files from old Atari 800, Apple II and C-64 disks! Second, there is also an increasing number of new games available on the Internet. Check the if-archive at ftp.gmd.de. Q: Why does Frotz stop with an error message? A: Your story file may be corrupt. Be sure to download story files in binary mode. Q: Is there a way to exit Frotz in emergency situations? A: Try ctrl-C or ctrl-break. You may have to add the command "BREAK=ON" to your CONFIG.SYS. Q: What do I need to play graphic games? A: You need the DOS version of Frotz. Sorry, this OS/2 version is strictly text-only. However, the DOS version runs fine under OS/2. Q: What do I need for sound? A: You need the DOS version of Frotz. Sorry, this OS/2 version doesn't support sounds yet. I hope to add this in the future. Q: How can I send transscription to the printer? A: Type "PRN." as the file name. (Notice the '.', it's important.) Q: Why is it impossible to save or restore? A: When your story file is stored on a floppy disk, do not remove the disk during save and restore. Q: Why doesn't multiple undo work as often as it should? A: The number of undo slots is limited by your free memory. Q: Why do I get weird characters instead of accented letters? A: Activate code page 850 (consult your OS/2 manual). Alternatively, the default code page 437 displays most important characters (e.g. French, German or Spanish letters) properly. Q: Why don't the number pad keys work in 'Beyond Zork'? A: NumLock must be set. Q: How can I scroll the status window in 'Beyond Zork'? A: Use page up/down instead of cursor up/down. Q: What is this Tandy bit? A: Some old Infocom games were sold by the Tandy Corporation. These games behave slightly different when this bit is set. For example, 'The Witness' gets censored: bastards turn into idiots, private dicks into private eyes and so on. Q: How does Frotz add abbreviations to older games? A: In beta 5, the -x command line option is now implemented via the user-defined alias feature. It simply adds the following aliases: g again x examine z wait Because of this, -x is now redundant and may go away in the future. List of fatal errors: - "Byte swapped story file" - "Call to illegal address" - "Call to non-routine" [1] - "Cannot open story file" - "Division by zero" - "Error reading save file" - "Illegal attribute number" - "Illegal object number" [2] - "Jump to illegal address" - "No such property" - "Out of memory" - "Print at illegal address" - "Stack overflow" [3] - "Store out of dynamic memory" - "Story file read error" - "Text buffer overflow" - "Unknown opcode" - "Unsupported Z-code version" [1] The first byte of a routine must be less than 16. [2] In V4 and above, object numbers > 2000 are considered illegal. [3] This condition is only checked on every call instruction.