1FROTZ(6)                         Games Manual                         FROTZ(6)
2
3
4

NAME

6       frotz - interpreter for Infocom and other Z-Machine games
7
8

SYNOPSIS

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

DESCRIPTION

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

OPTIONS

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

HOT KEYS

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

INTERPRETER NUMBER

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

CONFIGURATION FILES

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

COLOR

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

UNICODE

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

NON ASCII CHARACTERS

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

ENVIRONMENT

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

FURTHER INFORMATION

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

CAVEATS

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

BUGS

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

AUTHORS

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

CONTRIBUTORS

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

SEE ALSO

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)
Impressum