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

NAME

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

SYNOPSIS

11       frotz [options] file [blorbfile]
12
13       At  least  one file must be specified on the command line.  This can be
14       either a plain Z-code file or a Blorb file.  A Z-code file  is  a  com‐
15       piled  executable  for  the  Z-Machine.   A  Blorb file contains audio,
16       graphics, and other things in addition to the game wrapped  up  into  a
17       single  file.  It can also optionally contain the Z-Machine executable.
18       If a plain Z-code file is supplied, then Frotz will check for  a  Blorb
19       file  with  the  same  base  name  but an extension of .blb, .blorb, or
20       .zblorb and load it if found.
21
22       If the file supplied on the command line is a Blorb  file,  then  Frotz
23       will  check to see if a Z-code file is contained within.  If not found,
24       then Frotz will complain and exit.
25
26       An alternatively-named Blorb file can be supplied as the optional  sec‐
27       ond parameter to the command line invocation.
28
29
30

DESCRIPTION

32       Frotz  is  a Z-Machine interpreter.  The Z-machine is a virtual machine
33       designed by Infocom to run all  of  their  text  adventures.   It  went
34       through  multiple revisions during the lifetime of the company, and two
35       further revisions (V7 and V8) were created by Graham Nelson  after  the
36       company's demise.  The specification is now quite well documented; this
37       version of Frotz supports version 1.0.
38
39       This version of Frotz fully supports  all  these  versions  of  the  Z-
40       Machine  except for version 6.  Version 6 is semi-supported by display‐
41       ing the outlines of V6 graphics with the picture number in the  bottom-
42       right corner.
43
44
45

OPTIONS

47       -a     Watch  attribute setting.  Setting and clearing of attributes on
48              objects will be noted in debugging messages.
49
50
51       -A     Watch attribute testing.  Every  time  the  Z-machine  tests  an
52              attribute value, the test and the result will be reported.
53
54
55       -b <colorname>
56              Sets  the  default background color.  <colorname> corresponds to
57              one of the Z-machine colors, which are as follows:
58              black red green yellow blue magenta cyan white
59              If color support is disabled or not available on your  terminal,
60              this option does nothing.
61
62
63       -c N   Sets  the  number  of  context  lines used.  By default, after a
64              ``[MORE]'' prompt, and assuming there is enough output  pending,
65              Frotz  will  allow all the currently visible lines to scroll off
66              the screen before prompting again.  This  switch  specifies  how
67              many  lines  of text Frotz will hold over and display at the top
68              of the next screen.
69
70
71       -d     Disable color.
72
73
74       -e     Enable sound.  If you've disabled sound in  a  config  file  and
75              want to hear sound effects, use this.
76
77
78       -f <colorname>
79              Sets  the  default foreground color.  <colorname> corresponds to
80              one of the Z-machine colors, which are as follows
81              black red green yellow blue magenta cyan white
82              If color support is disabled or is not available on your  termi‐
83              nal, this option does nothing.
84
85
86       -F     Force color mode.  If you've disabled color in a config file and
87              want to Frotz to display colors, use this.
88
89
90       -h N   Manually sets the text height.  Though most curses libraries are
91              intelligent  enough to determine the current width from the ter‐
92              minal, it may sometimes be necessary to use this option to over‐
93              ride the default.
94
95
96       -i     Ignore  fatal  errors.   If a Z-Machine interpreter encounters a
97              zcode error such as division-by-zero or  addressing  an  illegal
98              object, the proper response is to abort execution.  This is done
99              because the zcode program doesn't have a clear idea of  what  is
100              going  on.   There  are  some  games  out there that cause fatal
101              errors because the authors were careless and used an interpreter
102              that  didn't properly check for errors.  This option is intended
103              to get around such bugs, but be warned that Strange  Things  may
104              happen if fatal errors are not caught.
105
106
107       -I N   Set the interpreter number.  Infocom designed the Z-machine such
108              that a game could tell on what kind of machine  the  interpreter
109              was running.  See INTERPRETER NUMBER below.
110
111
112       -l N   Sets  the left margin, for those who might have specific format‐
113              ting needs.
114
115
116       -L <filename>
117              When the game starts, load this saved game file.
118
119
120       -o     Watch object movement.  This option enables  debugging  messages
121              from the interpreter which describe the moving of objects in the
122              object tree.
123
124
125       -O     Watch object location.   These  debugging  messages  detail  the
126              locations of objects in the object tree.
127
128
129       -p     Plain  ASCII  output only.  This inhibits the output of accented
130              letters and other characters from  the  Latin-1  character  set,
131              replacing them with reasonable alternatives.  This may be neces‐
132              sary on devices lacking these characters.
133
134
135       -P     Alter the piracy opcode.  The piracy opcode was  never  used  by
136              Infocom.   This  switch is really only useful for those who like
137              to toy around with Z-code.
138
139
140       -q     Quiet.  Turns off sound effects.  Useful when running Frotz on a
141              remote  machine  and you don't want to bother whoever's near the
142              console with weird noises.
143
144
145       -r N   Sets the right margin.
146
147
148       -R <path>
149              Restricted  read/write.   Reading  and  writing  files  will  be
150              restricted  only  to  the  provided  path. Ordinarily Frotz will
151              write or read its saves, transcripts,  and  move  recordings  in
152              whatever  path  or  directory  the  user provides when the SAVE,
153              SCRIPT, or RECORDING commands are given.  This can  be  undesir‐
154              able  if  Frotz  is  run in a restricted environment, by a front
155              end, or by a chatbot.  This option will cause Frotz to write  or
156              read  only to the provided path and nowhere else.  Then the con‐
157              trolling process can then watch that directory for  changes  and
158              need  not  worry about someone scribbling or snooping who-knows-
159              where.
160
161
162       -s N   Set the random number seed value.  The given seed value is  used
163              as  the initial seed value on every restart. This is helpful for
164              testing games like Curses which make random decisions before the
165              first input (such that the hot key Alt-S does not really help).
166
167
168       -S N   Set  the transcript width.  By default your transcript files are
169              formatted to a width of 80 columns per line, regardless  of  the
170              current  text width.  This switch allows you to change this set‐
171              ting. In particular, use  -S  0  to  deactivate  automatic  line
172              splitting in transcript files.
173
174
175       -t     Sets the Z-machine's Tandy bit, which may affect the behavior of
176              certain Infocom games.  For example, Zork I pretends not to have
177              sequels, and Witness has its language toned down.
178
179
180       -u N   Sets  the  number  of  slots available for Frotz's multiple undo
181              hotkey (see below).  This defaults to twenty,  which  should  be
182              sufficient  for  most  purposes.  Setting too high a number here
183              may be dangerous on machines with limited memory.
184
185
186       -w N   Manually sets the text width.
187
188
189       -x     Expand the abbreviations "g", "x", and "z"  to  "again",  "exam‐
190              ine", and "wait".  This switch is for use with old Infocom games
191              that lack these common abbreviations which  were  introduced  in
192              later  games.   Use  it with caution: A few games might use "g",
193              "x" or "z" for different purposes.
194
195
196       -Z N   Error checking mode.
197              0 = don't report errors.
198              1 = report first instance of an error.
199              2 = report all errors.
200              3 = exit after any error.
201              Default is 1 (report first instance of an error).
202
203
204

HOT KEYS

206       These hot keys are enabled only when the Z-machine is waiting for  line
207       input (for Z-machine experts: the @read opcode).
208
209
210       Alt-D  Set debugging options.
211
212
213       Alt-H  Help (print the list of hot keys).
214
215
216       Alt-N  New game (restart).
217
218
219       Alt-P  Playback on.
220
221
222       Alt-R  Recording on/off.
223
224
225       Alt-S  Set random number seed.
226
227
228       Alt-U  Undo one turn.
229
230
231       Alt-X  Exit game (after confirmation).
232
233
234

INTERPRETER NUMBER

236       The  interpreter  number  is a setting in the Z-machine header which is
237       used to tell the game on what sort of machine the interpreter  is  run‐
238       ning. Frotz will automatically choose the most appropriate number for a
239       given Infocom-produced game.  Should you want to override  the  number,
240       the -I option is available.
241
242       An  interpreter  should choose the interpreter number most suitable for
243       the machine it will run on.  In Versions up to 5, the  main  considera‐
244       tion  is that the behaviour of 'Beyond Zork' depends on the interpreter
245       number (in terms of its usage of the character graphics font). In  Ver‐
246       sion  6,  the decision is more serious, as existing Infocom story files
247       depend on interpreter number in many ways: moreover, some  story  files
248       expect  to  be  run  only on the interpreters for a particular machine.
249       There are, for instance, specifically Amiga versions.  The DECSystem-20
250       was Infocom's own in-house mainframe.
251
252       Infocom used the following interpreter numbers:
253
254
255       1   DECSystem 20
256
257
258       2   Apple IIe
259
260
261       3   Macintosh
262
263
264       4   Amiga
265
266
267       5   Atari ST
268
269
270       6   IBM PC
271
272
273       7   Commodore128
274
275
276       8   Commodore64
277
278
279       9   Apple IIc
280
281
282       10   Apple IIgs
283
284
285       11   Tandy Color
286
287
288

CONFIGURATION FILES

290       On  startup,  frotz  will  first  check  the  system's  frotz.conf then
291       $HOME/.frotzrc for configuration information.  The  configuration  file
292       uses a simple syntax of
293       <variable> <whitespace> <value>
294
295
296       Color names may be any of the following:
297       black | red | green | blue | magenta | cyan | white
298
299
300
301       ascii   on | off
302       Use plain ASCII only.  Default is "off".
303
304
305       background   <colorname>
306       Set background color.  Default is terminal's default background color.
307
308
309       color   yes | no
310       Use color text.  Default is "yes" if supported.
311
312
313       errormode   never | once | always | fatal
314       Set error reporting mode.
315       never Don't report any errors except for fatal ones.
316       once Report only the first instance of an error.
317       always Report every instance of an error.
318       fatal Abort on any error, even non-fatal ones.
319       Default is "once".
320
321
322       expand_abb   on | off
323       Expand  abbreviations.   Default is off.  Expand the abbreviations "g",
324       "x", and "z" to "again", "examine", and "wait".  This switch is for use
325       with  old Infocom games that lack these common abbreviations which were
326       introduced in later games.  Use it with caution.  A few games might use
327       the "g", "x", or "z" for different purposes.
328
329
330       foreground   <colorname>
331       Set foreground color.  Default is terminal's default forground color.
332
333
334       ignore_fatal   on | off
335       Ignore  fatal  errors.   If  a Z-Machine interpreter encounters a zcode
336       error such as division-by-zero or addressing  an  illegal  object,  the
337       proper  response is to abort execution.  This is done because the zcode
338       program doesn't have a clear idea of what is going on.  There are  some
339       games  out there that cause fatal errors because the authors were care‐
340       less and used an interpreter that didn't  properly  check  for  errors.
341       This  option  is  intended  to get around such bugs, but be warned that
342       Strange Things may happen if fatal errors are not caught.
343       Default is "off"
344
345
346       piracy   on | off
347       Alter the piracy opcode.  Default is off.  The piracy opcode was  never
348       used  by  Infocom. This option is only useful for those who like to toy
349       around with Z-code.
350
351
352       randseed   <integer>
353       Set random number seed.  Default comes from the Unix epoch.
354
355
356       sound   on | off
357       Turn sound effects on or off.  Default is "on".
358
359
360       tandy   on | off
361       Set the machine's Tandy bit.  This may affect the behavior  of  certain
362       Infocom  games.   For example, Zork I pretends not to have sequels, and
363       Witness has its language toned down.  Default is "off".
364
365
366       undo_slots   <integer>
367       Set number of undo slots.  Default is 500.
368
369
370       zcode_path   /path/to/zcode/files:/another/path
371       Set path to search for zcode game files.  This is just like  the  $PATH
372       environmental  variable  except  that you can't put environmental vari‐
373       ables  in  the   path   or   use   other   shortcuts.    For   example,
374       "$HOME/games/zcode"  is  illegal because the shell can't interpret that
375       $HOME variable.
376
377
378       The following options are really only useful for weird terminals, weird
379       curses  libraries  or if you want to force a certain look (like play in
380       40-column mode).
381
382
383       context_lines   <integer>
384       Set the number of context lines used.  By default, after  a  ``[MORE]''
385       prompt,  and  assuming there is enough output pending, frotz will allow
386       all the currently visible lines to scroll off the screen before prompt‐
387       ing  again.   This  switch  specifies how many lines of text frotz will
388       hold over and display at the top of the next screen.  Default is "0".
389
390
391       left_margin   <integer>
392       Set the left margin.  This is for those who might have special  format‐
393       ting needs.
394
395
396       right_margin   <integer>
397       Set the right margin.  This is for those who might have special format‐
398       ting needs.
399
400
401       text_height   <integer>
402       Manually set text height.  Most curses libraries are intelligent enough
403       to  determine  the  current width of the terminal.  You may need to use
404       this option to override the default.
405
406
407       text_width   <integer>
408       Manually set text width.  Again, this should not be necessary except in
409       special circumstances.
410
411
412       script_width   <integer>
413       Set  the  transcript width.  Default is 80 columns per line, regardless
414       of the current text width.  This switch allows you to change this  set‐
415       ting.   You  may set this to "0" to deactivate automatic line-splitting
416       in transcript files.
417
418
419       The following options are mainly useful for debugging or cheating.
420
421
422       attrib_set   on | off
423       Watch attribute setting.  Setting and clearing of attributes on objects
424       will be noted in debugging messages.  Default is "off"
425
426
427       attrib_test   on | off
428       Watch  attribute  testing.  Every time the Z-machine tests an attribute
429       value, the test and the result will be reported.  Default is "off".
430
431
432       obj_loc   on | off
433       Watch object location.  These debugging messages detail  the  locations
434       of objects in the object tree.  Default is "off".
435
436
437       obj_move   on | off
438       Watch object movement.  This option enables debugging messages from the
439       interpreter which describe the movement of objects in the object  tree.
440       Default is "off".
441
442

COLOR

444       Whether or not Frotz will display color depends upon the curses library
445       and the terminal.  In general, an xterm  or  other  X11-based  terminal
446       emulator will support color.  Sometimes the value of $TERM will need to
447       be set to something like "xterm-color" or "rxvt-256color".  For a Linux
448       console,  $TERM  is  almost  always  set to "linux".  This will support
449       color.  For a NetBSD or OpenBSD console on an x86 or amd64, the default
450       value  of  $TERM is "vt100".  To get color supported there, you need to
451       set $TERM to "pc3".  A FreeBSD console's $TERM is "xterm" and will sup‐
452       port color.  Color on text consoles on machines other than x86 or amd64
453       is untested.
454
455       On some operating systems, Xterm will not change the  cursor  color  to
456       match  that  of  the text.  To fix this, add the following line to your
457       .Xresources file and type xrdb -merge $HOME/.Xresources
458
459       xterm*cursorColor:      *XtDefaultForeground
460
461       This can also be added to  a  systemwide  file  such  as  /etc/X11/Xre‐
462       sources/x11-common or /etc/X11/app-defaults/XTerm.  The names and loca‐
463       tions of the system-wide files can vary from OS to OS.
464
465

UNICODE

467       Frotz supports Unicode glyphs by way of UTF-8 if the terminal used sup‐
468       ports UTF-8.  If you prefer using xterm, start it as uxterm.  This is a
469       wrapper script that sets up xterm with UTF-8 locale.  You can also man‐
470       ually  tell  an xterm to switch into UTF-8 mode by holding CTRL and the
471       right mouse button to bring up the VT FONTS  menu.   Depending  on  how
472       xterm was installed, you may see an option for "UTF-8 Fonts" which will
473       allow Unicode to be properly displayed.
474
475       Getting normal xterm to behave like this all the  time  can  vary  from
476       system  to  system.   Other  terminal  emulators have their own ways of
477       being set to use UTF-8 character encoding.
478
479
480   LOCALE
481       An important means of ensuring the system knows to use UTF-8 is to make
482       sure  the  locale  is  set appropriately.  This is valid only when Dumb
483       Frotz runs under Unix-ish systems.
484
485       Using the command locale will tell you what is currently in use.  Using
486       locale -a
487
488       will  show you what's available.  Then set your LANG evironmental vari‐
489       able to something appropriate by using one of these commands:
490
491           export LANG=C.UTF-8
492           export LANG=en_US.utf8
493
494       This can be put in your  shell  configuration  file,  be  it  .profile,
495       .bash_profile, .login, .bashrc, or whatever.
496
497       It can also be set system-wide in the equivalent files in /etc.
498
499
500   SEE ALSO
501       ash(1) bash(1) csh(1) ksh(1) sh(1) zsh(1)
502
503
504

ENVIRONMENT

506       If  the ZCODE_PATH environmental variable is defined, frotz will search
507       that path for game files.  If that doesn't exist, INFOCOM_PATH will  be
508       searched.
509
510       For  the  Alt key to be read correctly in an Xterm, the following lines
511       should be in your .Xresources file:
512
513       XTerm*metaSendsEscape: true
514       XTerm*eightBitInput: false
515
516
517

FURTHER INFORMATION

519       The Frotz homepage is at https://661.org/proj/if/frotz/.
520
521       A git(1) repository of all versions of  Unix  Frotz  back  to  2.32  is
522       available for public perusal here:
523       https://gitlab.com/DavidGriffith/frotz/.
524
525       The bleeding edge of Frotz development may be followed there.
526
527       The  Interactive  Fiction Archive is a good place to find games to play
528       with Frotz.  Various ports and builds for Frotz may also be found here.
529       Here is its URL:
530       http://www.ifarchive.org/
531
532       Most  distributions  of  Linux  and  BSD include Frotz in their package
533       repositories.
534
535
536

CAVEATS

538       The Z Machine itself has trouble with the concept of resizing a  termi‐
539       nal.  It assumes that once the text height and width are set, they will
540       never change; even across saves.  This made sense when 24x80  terminals
541       were  the  norm and graphical user interfaces were mostly unknown.  I'm
542       fairly sure there's a way around  this  problem,  but  for  now,  don't
543       resize  an  xterm  in  which frotz is running.  Also, you should try to
544       make sure the terminal on which you restore a saved game has  the  same
545       dimensions as the one on which you saved the game.
546
547
548       Audio  latency  might be unreasonably long depending on the settings of
549       your operating system.  Linux generally has things right.  The BSDs may
550       need  some  sysctl(8)  settings adjusted.  See the sound(4) or audio(4)
551       manpages for more information.
552
553
554       You can  use  a  path  like  "/usr/local/games/zcode:$HOME/zcode"  with
555       $ZCODE_PATH  or  $INFOCOM_PATH because the shell will digest that $HOME
556       variable  for  you  before  setting   $ZCODE_PATH.   While   processing
557       frotz.conf  and $HOME/.frotzrc, a shell is not used. Therefore you can‐
558       not use environmental variables in the "zcodepath"  option  within  the
559       config files.
560
561
562       This manpage is not intended to tell users HOW to play interactive fic‐
563       tion.  Refer to the file HOW_TO_PLAY included in the Unix  Frotz  docu‐
564       mentation or visit one of the following sites:
565       http://www.microheaven.com/ifguide/
566       http://www.brasslantern.org/beginners/
567       http://www.musicwords.net/if/how_to_play.htm
568       http://ifarchive.org/
569
570
571

BUGS

573       This program has no bugs.  no bugs.  no bugs.  no *WHAP* thank you.  If
574       you find one, please report it to the Gitlab site referenced  above  in
575       FURTHER INFORMATION.
576
577
578

AUTHORS

580       Frotz was written by Stefan Jokisch for MSDOS in 1995-7.
581       The Unix port was done by Galen Hazelwood.
582       The Unix port is currently maintained by David Griffith <dave@661.org>.
583
584

CONTRIBUTORS

586       In  2019,  a  Kickstarter  campaign  was run to raise funds to pay Mark
587       McCurry to overhaul the audio subsystem for the curses port  of  Frotz.
588       The following people contributed $100 towards that effort:
589       Simon Martin
590       Dan Sanderson
591       Justin de Vesine
592       Daniel Sharpe
593
594

SEE ALSO

596       sfrotz(6) dfrotz(6) nitfol(6) rezrov(6) jzip(6) xzip(6) inform(1)
597
598
599
600                                     2.51                             FROTZ(6)
Impressum