1FROTZ(6) Games Manual FROTZ(6)
2
3
4
6 frotz - interpreter for Infocom and other Z-Machine games
7
8
10 frotz [options] file [blorb_file]
11
12 At least one file must be specified on the command line. This can be
13 either a plain Z-code file or a Blorb file. A Z-code file is a com‐
14 piled executable for the Z-Machine. A Blorb file contains audio,
15 graphics, and other things in addition to the game wrapped up into a
16 single file. It can also optionally contain the Z-Machine executable.
17 If a plain Z-code file is supplied, then Frotz will check for a Blorb
18 file with the same base name but an extension of .blb, .blorb, or
19 .zblorb and load it if found.
20
21 If the file supplied on the command line is a Blorb file, then Frotz
22 will check to see if a Z-code file is contained within. If not found,
23 then Frotz will complain and exit.
24
25 An alternatively-named Blorb file can be supplied as the optional sec‐
26 ond parameter to the command line invocation.
27
28
29
31 Frotz is a Z-Machine interpreter. The Z-machine is a virtual machine
32 designed by Infocom to run all of their text adventures. It went
33 through multiple revisions during the lifetime of the company, and two
34 further revisions (V7 and V8) were created by Graham Nelson after the
35 company's demise. The specification is now quite well documented; this
36 version of Frotz supports version 1.0.
37
38 This version of Frotz fully supports all these versions of the Z-Ma‐
39 chine except for version 6. Version 6 is semi-supported by displaying
40 the outlines of V6 graphics with the picture number in the bottom-right
41 corner.
42
43
44
46 -a Watch attribute setting. Setting and clearing of attributes on
47 objects will be noted in debugging messages.
48
49
50 -A Watch attribute testing. Every time the Z-machine tests an at‐
51 tribute value, the test and the result will be reported.
52
53
54 -b <colorname>
55 Sets the default background color. <colorname> corresponds to
56 one of the Z-machine colors, which are as follows:
57 black red green yellow blue magenta cyan white
58 If color support is disabled or not available on your terminal,
59 this option does nothing.
60
61
62 -c N Sets the number of context lines used. By default, after a
63 ``[MORE]'' prompt, and assuming there is enough output pending,
64 Frotz will allow all the currently visible lines to scroll off
65 the screen before prompting again. This switch specifies how
66 many lines of text Frotz will hold over and display at the top
67 of the next screen.
68
69
70 -d Disable color.
71
72
73 -e Enable sound. If you've disabled sound in a config file and
74 want to hear sound effects, use this.
75
76
77 -E <mode>
78 Emphasis mode. <mode> corresponds to one of three possible ways
79 to render emphasized text. Possible choices are as follows:
80 italic underline none
81 Infocom created an EMPHASIS_STYLE for the Z-machine, which was
82 supposed to make the text be underlined or be italicized. Ex‐
83 actly what to do is left up to the interpreter. Some plat‐
84 forms/terminals could support either, both of these, or neither.
85 Underlining was more common than italic. This option allows you
86 to choose how EMPHASIS_STYLE is displayed.
87
88
89 -f <colorname>
90 Sets the default foreground color. <colorname> corresponds to
91 one of the Z-machine colors, which are as follows:
92 black red green yellow blue magenta cyan white
93 If color support is disabled or is not available on your termi‐
94 nal, this option does nothing.
95
96
97 -F Force color mode. If you've disabled color in a config file and
98 want to Frotz to display colors, use this.
99
100
101 -h N Manually sets the text height. Though most curses libraries are
102 intelligent enough to determine the current width from the ter‐
103 minal, it may sometimes be necessary to use this option to over‐
104 ride the default.
105
106
107 -i Ignore fatal errors. If a Z-Machine interpreter encounters a
108 zcode error such as division-by-zero or addressing an illegal
109 object, the proper response is to abort execution. This is done
110 because the zcode program doesn't have a clear idea of what is
111 going on. There are some games out there that cause fatal er‐
112 rors because the authors were careless and used an interpreter
113 that didn't properly check for errors. This option is intended
114 to get around such bugs, but be warned that Strange Things may
115 happen if fatal errors are not caught.
116
117
118 -I N Set the interpreter number. Infocom designed the Z-machine such
119 that a game could tell on what kind of machine the interpreter
120 was running. See INTERPRETER NUMBER below.
121
122
123 -l N Sets the left margin, for those who might have specific format‐
124 ting needs.
125
126
127 -L <filename>
128 When the game starts, load this saved game file.
129
130
131 -m Enable mouse support. Naturally, this is quite limited, but
132 it's available for anyone who wants to experiment with it. When
133 active, the mouse cannot be used to copy text from the terminal.
134
135
136 -o Watch object movement. This option enables debugging messages
137 from the interpreter which describe the moving of objects in the
138 object tree.
139
140
141 -O Watch object location. These debugging messages detail the lo‐
142 cations of objects in the object tree.
143
144
145 -p Plain ASCII output only. This inhibits the output of accented
146 letters and other characters from the Latin-1 character set, re‐
147 placing them with reasonable alternatives. This may be neces‐
148 sary on devices lacking these characters. The OE/oe dipthongs
149 are missing from the Latin-1 set. These are handled as well.
150
151
152 -P Alter the piracy opcode. The piracy opcode was never used by
153 Infocom. This switch is really only useful for those who like
154 to toy around with Z-code.
155
156
157 -q Quiet. Turns off sound effects. Useful when running Frotz on a
158 remote machine and you don't want to bother whoever's near the
159 console with weird noises.
160
161
162 -r N Sets the right margin.
163
164
165 -R <path>
166 Restricted read/write. Reading and writing files will be re‐
167 stricted only to the provided path. Ordinarily Frotz will write
168 or read its saves, transcripts, and move recordings in whatever
169 path or directory the user provides when the SAVE, SCRIPT, or
170 RECORDING commands are given. This can be undesirable if Frotz
171 is run in a restricted environment, by a front end, or by a
172 chatbot. This option will cause Frotz to write or read only to
173 the provided path and nowhere else. Then the controlling
174 process can then watch that directory for changes and need not
175 worry about someone scribbling or snooping who-knows-where.
176
177
178 -s N Set the random number seed value. The given seed value is used
179 as the initial seed value on every restart. This is helpful for
180 testing games like Curses which make random decisions before the
181 first input (such that the hot key Alt-S does not really help).
182
183
184 -S N Set the transcript width. By default your transcript files are
185 formatted to a width of 80 columns per line, regardless of the
186 current text width. This switch allows you to change this set‐
187 ting. In particular, use -S 0 to deactivate automatic line
188 splitting in transcript files.
189
190
191 -t Sets the Z-machine's Tandy bit, which may affect the behavior of
192 certain Infocom games. For example, Zork I pretends not to have
193 sequels, and Witness has its language toned down.
194
195
196 -u N Sets the number of slots available for Frotz's multiple undo
197 hotkey (see below). This defaults to twenty, which should be
198 sufficient for most purposes. Setting too high a number here
199 may be dangerous on machines with limited memory.
200
201
202 -w N Manually sets the text width.
203
204
205 -x Expand the abbreviations "g", "x", and "z" to "again", "exam‐
206 ine", and "wait". This switch is for use with old Infocom games
207 that lack these common abbreviations which were introduced in
208 later games. Use it with caution: A few games might use "g",
209 "x" or "z" for different purposes.
210
211
212 -v Show version information and exit. This will display the ver‐
213 sion of Frotz, some information about what's enabled and what's
214 not, the commit date of the source code, and a git(1) hash of
215 that commit.
216
217
218 -Z N Error checking mode.
219 0 = don't report errors.
220 1 = report first instance of an error.
221 2 = report all errors.
222 3 = exit after any error.
223 Default is 1 (report first instance of an error).
224
225
226
228 These hot keys are enabled only when the Z-machine is waiting for line
229 input (for Z-machine experts: the @read opcode).
230
231
232 Alt-D Set debugging options.
233
234
235 Alt-H Help (print the list of hot keys).
236
237
238 Alt-N New game (restart).
239
240
241 Alt-P Playback on.
242
243
244 Alt-R Recording on/off.
245
246
247 Alt-S Set random number seed.
248
249
250 Alt-U Undo one turn.
251
252
253 Alt-X Exit game (after confirmation).
254
255
256
258 The interpreter number is a setting in the Z-machine header which is
259 used to tell the game on what sort of machine the interpreter is run‐
260 ning. Frotz will automatically choose the most appropriate number for a
261 given Infocom-produced game. Should you want to override the number,
262 the -I option is available.
263
264 An interpreter should choose the interpreter number most suitable for
265 the machine it will run on. In Versions up to 5, the main considera‐
266 tion is that the behaviour of 'Beyond Zork' depends on the interpreter
267 number (in terms of its usage of the character graphics font). In Ver‐
268 sion 6, the decision is more serious, as existing Infocom story files
269 depend on interpreter number in many ways: moreover, some story files
270 expect to be run only on the interpreters for a particular machine.
271 There are, for instance, specifically Amiga versions. The DECSystem-20
272 was Infocom's own in-house mainframe.
273
274 For Infocom's four V6 games, the interpreter number will be automati‐
275 cally chosen based on the title and release number. Of course, this
276 can be overridden at the command line.
277
278 Infocom used the following interpreter numbers:
279
280
281 1 DECSystem 20
282
283
284 2 Apple IIe
285
286
287 3 Macintosh
288
289
290 4 Amiga
291
292
293 5 Atari ST
294
295
296 6 IBM PC
297
298
299 7 Commodore128
300
301
302 8 Commodore64
303
304
305 9 Apple IIc
306
307
308 10 Apple IIgs
309
310
311 11 Tandy Color
312
313
314
316 On startup, frotz will first check the system's frotz.conf then
317 $HOME/.frotzrc for configuration information. The configuration file
318 uses a simple syntax of
319 <variable> <whitespace> <value>
320
321
322 Color names may be any of the following:
323 black | red | green | blue | magenta | cyan | white
324
325
326
327 ascii on | off
328 Use plain ASCII only. Default is "off".
329
330
331 background <colorname>
332 Set background color. Default is terminal's default background color.
333
334
335 color yes | no
336 Use color text. Default is "yes" if supported.
337
338
339 errormode never | once | always | fatal
340 Set error reporting mode.
341 never Don't report any errors except for fatal ones.
342 once Report only the first instance of an error.
343 always Report every instance of an error.
344 fatal Abort on any error, even non-fatal ones.
345 Default is "once".
346
347
348 expand_abb on | off
349 Expand abbreviations. Default is off. Expand the abbreviations "g",
350 "x", and "z" to "again", "examine", and "wait". This switch is for use
351 with old Infocom games that lack these common abbreviations which were
352 introduced in later games. Use it with caution. A few games might use
353 the "g", "x", or "z" for different purposes.
354
355
356 foreground <colorname>
357 Set foreground color. Default is terminal's default foreground color.
358
359
360 ignore_fatal on | off
361 Ignore fatal errors. If a Z-Machine interpreter encounters a zcode er‐
362 ror such as division-by-zero or addressing an illegal object, the
363 proper response is to abort execution. This is done because the zcode
364 program doesn't have a clear idea of what is going on. There are some
365 games out there that cause fatal errors because the authors were care‐
366 less and used an interpreter that didn't properly check for errors.
367 This option is intended to get around such bugs, but be warned that
368 Strange Things may happen if fatal errors are not caught.
369 Default is "off"
370
371
372 piracy on | off
373 Alter the piracy opcode. Default is off. The piracy opcode was never
374 used by Infocom. This option is only useful for those who like to toy
375 around with Z-code.
376
377
378 randseed <integer>
379 Set random number seed. Default comes from the Unix epoch.
380
381
382 sound on | off
383 Turn sound effects on or off. Default is "on".
384
385
386 tandy on | off
387 Set the machine's Tandy bit. This may affect the behavior of certain
388 Infocom games. For example, Zork I pretends not to have sequels, and
389 Witness has its language toned down. Default is "off".
390
391
392 undo_slots <integer>
393 Set number of undo slots. Default is 500.
394
395
396 zcode_path /path/to/zcode/files:/another/path
397 Set path to search for zcode game files. This is just like the $PATH
398 environmental variable except that you can't put environmental vari‐
399 ables in the path or use other shortcuts. For example,
400 "$HOME/games/zcode" is illegal because the shell can't interpret that
401 $HOME variable.
402
403
404 The following options are really only useful for weird terminals, weird
405 curses libraries or if you want to force a certain look (like play in
406 40-column mode).
407
408
409 context_lines <integer>
410 Set the number of context lines used. By default, after a ``[MORE]''
411 prompt, and assuming there is enough output pending, frotz will allow
412 all the currently visible lines to scroll off the screen before prompt‐
413 ing again. This switch specifies how many lines of text frotz will
414 hold over and display at the top of the next screen. Default is "0".
415
416
417 left_margin <integer>
418 Set the left margin. This is for those who might have special format‐
419 ting needs.
420
421
422 right_margin <integer>
423 Set the right margin. This is for those who might have special format‐
424 ting needs.
425
426
427 text_height <integer>
428 Manually set text height. Most curses libraries are intelligent enough
429 to determine the current width of the terminal. You may need to use
430 this option to override the default.
431
432
433 text_width <integer>
434 Manually set text width. Again, this should not be necessary except in
435 special circumstances.
436
437
438 script_width <integer>
439 Set the transcript width. Default is 80 columns per line, regardless
440 of the current text width. This switch allows you to change this set‐
441 ting. You may set this to "0" to deactivate automatic line-splitting
442 in transcript files.
443
444
445 The following options are mainly useful for debugging or cheating.
446
447
448 attrib_set on | off
449 Watch attribute setting. Setting and clearing of attributes on objects
450 will be noted in debugging messages. Default is "off"
451
452
453 attrib_test on | off
454 Watch attribute testing. Every time the Z-machine tests an attribute
455 value, the test and the result will be reported. Default is "off".
456
457
458 obj_loc on | off
459 Watch object location. These debugging messages detail the locations
460 of objects in the object tree. Default is "off".
461
462
463 obj_move on | off
464 Watch object movement. This option enables debugging messages from the
465 interpreter which describe the movement of objects in the object tree.
466 Default is "off".
467
468
470 Whether or not Frotz will display color depends upon the curses library
471 and the terminal. In general, an xterm or other X11-based terminal em‐
472 ulator will support color. Sometimes the value of $TERM will need to
473 be set to something like "xterm-color" or "rxvt-256color". For a Linux
474 console, $TERM is almost always set to "linux". This will support
475 color. For a NetBSD or OpenBSD console on an x86 or amd64, the default
476 value of $TERM is "vt100". To get color supported there, you need to
477 set $TERM to "pc3". A FreeBSD console's $TERM is "xterm" and will sup‐
478 port color. Color on text consoles on machines other than x86 or amd64
479 is untested.
480
481 On some operating systems, Xterm will not change the cursor color to
482 match that of the text. To fix this, add the following line to your
483 .Xresources file and type xrdb -merge $HOME/.Xresources
484
485 xterm*cursorColor: *XtDefaultForeground
486
487 This can also be added to a systemwide file such as /etc/X11/Xre‐
488 sources/x11-common or /etc/X11/app-defaults/XTerm. The names and loca‐
489 tions of the system-wide files can vary from OS to OS.
490
491
493 Frotz supports Unicode glyphs by way of UTF-8 if the terminal used sup‐
494 ports UTF-8. If you prefer using xterm, start it as uxterm. This is a
495 wrapper script that sets up xterm with UTF-8 locale. You can also man‐
496 ually tell an xterm to switch into UTF-8 mode by holding CTRL and the
497 right mouse button to bring up the VT FONTS menu. Depending on how
498 xterm was installed, you may see an option for "UTF-8 Fonts" which will
499 allow Unicode to be properly displayed.
500
501 Getting normal xterm to behave like this all the time can vary from
502 system to system. Other terminal emulators have their own ways of be‐
503 ing set to use UTF-8 character encoding.
504
505
507 Non-ASCII glyphs can be displayed without the use of UTF-8 by way of
508 the ISO-8859-1 or ISO-8859-15 (Latin-1 or Latin-9) character sets.
509 ISO-8859-15 is more or less identical to ISO-8859-1 except that the
510 OE/oe dipthongs are supported, replacing the seldom-used 1/2 and 1/4
511 glyphs. See also luit(1) charsets(7) iso_8859-1(7) and iso_8859-15(7)
512 for more information.
513
514
515 LOCALE
516 An important means of ensuring the system knows to use UTF-8 is to make
517 sure the locale is set appropriately. This is valid only when Dumb
518 Frotz runs under Unix-ish systems.
519
520 Using the command locale will tell you what is currently in use. Using
521 locale -a
522
523 will show you what's available. Then set your LANG evironmental vari‐
524 able to something appropriate by using one of these commands:
525
526 export LANG=C.UTF-8
527 export LANG=en_US.utf8
528
529 This can be put in your shell configuration file, be it .profile,
530 .bash_profile, .login, .bashrc, or whatever.
531
532 It can also be set system-wide in the equivalent files in /etc.
533
534
535 SEE ALSO
536 ash(1) bash(1) csh(1) ksh(1) sh(1) zsh(1)
537
538
539
541 If the ZCODE_PATH environmental variable is defined, frotz will search
542 that path for game files. If that doesn't exist, INFOCOM_PATH will be
543 searched.
544
545 For the Alt key to be read correctly in an Xterm, the following lines
546 should be in your .Xresources file:
547
548 XTerm*metaSendsEscape: true
549 XTerm*eightBitInput: false
550
551
552
554 The Frotz homepage is at https://661.org/proj/if/frotz/.
555
556 A git(1) repository of all versions of Unix Frotz back to 2.32 is
557 available for public perusal here:
558 https://gitlab.com/DavidGriffith/frotz/.
559
560 The bleeding edge of Frotz development may be followed there.
561
562 The Interactive Fiction Archive is a good place to find games to play
563 with Frotz. Various ports and builds for Frotz may also be found here.
564 Here is its URL:
565 http://www.ifarchive.org/
566
567 Most distributions of Linux and BSD include Frotz in their package
568 repositories.
569
570 It is distributed under the GNU General Public License version 2 or (at
571 your option) any later version.
572 https://www.gnu.org/licenses/gpl-2.0.en.html
573
574 This software is offered as-is with no warranty or liability. If you
575 find a bug or would like Frotz to do something it doesn't currently do,
576 please visit the above Gitlab website and report your concerns.
577
578
579
581 The Z Machine itself has trouble with the concept of resizing a termi‐
582 nal. It assumes that once the text height and width are set, they will
583 never change; even across saves. This made sense when 24x80 terminals
584 were the norm and graphical user interfaces were mostly unknown. I'm
585 fairly sure there's a way around this problem, but for now, don't re‐
586 size an xterm in which frotz is running. Also, you should try to make
587 sure the terminal on which you restore a saved game has the same dimen‐
588 sions as the one on which you saved the game.
589
590
591 Audio latency might be unreasonably long depending on the settings of
592 your operating system. Linux generally has things right. The BSDs may
593 need some sysctl(8) settings adjusted. See the sound(4) or audio(4)
594 manpages for more information.
595
596
597 You can use a path like "/usr/local/games/zcode:$HOME/zcode" with
598 $ZCODE_PATH or $INFOCOM_PATH because the shell will digest that $HOME
599 variable for you before setting $ZCODE_PATH. While processing
600 frotz.conf and $HOME/.frotzrc, a shell is not used. Therefore you can‐
601 not use environmental variables in the "zcodepath" option within the
602 config files.
603
604
605 This manpage is not intended to tell users HOW to play interactive fic‐
606 tion. Refer to the file HOW_TO_PLAY included in the Unix Frotz docu‐
607 mentation or visit one of the following sites:
608 http://www.microheaven.com/ifguide/
609 http://www.brasslantern.org/beginners/
610 http://www.musicwords.net/if/how_to_play.htm
611 http://ifarchive.org/
612
613
614
616 This program has no bugs. no bugs. no bugs. no *WHAP* thank you. If
617 you find one, please report it to the Gitlab site referenced above in
618 FURTHER INFORMATION.
619
620
621
623 Frotz was written by Stefan Jokisch for MSDOS in 1995-7.
624 The Unix port was done by Galen Hazelwood.
625 The Unix port is currently maintained by David Griffith <dave@661.org>.
626
627
629 In 2019, a Kickstarter campaign was run to raise funds to pay Mark Mc‐
630 Curry to overhaul the audio subsystem for the curses port of Frotz.
631 The following people contributed $100 towards that effort:
632 Simon Martin
633 Dan Sanderson
634 Justin de Vesine
635 Daniel Sharpe
636
637
639 sfrotz(6) dfrotz(6) nitfol(6) rezrov(6) jzip(6) xzip(6) inform(1)
640
641
642
643Frotz v2.54 2021-06-21 FROTZ(6)