INFORM(1)

NAME
inform - compile Inform interactive fiction story files to Z-machine or Glulx bytecode

SYNOPSIS
inform [options...] infile [outfile]

DESCRIPTION
inform compiles an Inform version 6 story file (usually with the extension .inf) into Z-machine or Glulx bytecode which can then be executed by a variety of Z-machine or Glulx emulators. If the output filename is not explicitly given on the command line, it will be constructed from the input filename.

inform's mode of operation can be controlled with switches (one or two-character expressions preceded by a dash), path modifiers (starting with a plus sign) and memory strategy modifiers (starting with a dollar sign).

  SWITCHES

-a  trace assembly (same as --trace ASM)

-c  more concise error messages

-d  contract double spaces after full stops in text

-d2 contract double spaces after exclamation and question marks, too

-e  economy mode (slower): make use of declared abbreviations

-f  show how useful abbreviations are (same as --trace FREQ)

-g  show function calls at runtime (same as --trace RUNTIME) traces calls to all functions

--help, -h, -h1, -h2
    print usage information

-i  ignore default switches set within the file

-k  output Infix debugging information to "gameinfo.dbg" (and switch -D on)

-q  keep quiet about obsolete usages

-r  record all the text to "gametext.txt"

-s  give compilation statistics (same as --trace STATS)

-u  output computed abbreviations. See --trace FINDABBREVS or --trace FINDABBREVS=2 for verbose calculations.

-vn compile to a specific Z-code version; the default is 5. Available versions are:

    3   version-3 ("Standard") story file

    4   version-4 ("Plus") story file

    5   version-5 ("Advanced") story file

    6   version-6 (graphical) story file

    8   version-8 (expanded "Advanced") story file

-w  disable warning messages

-x  print # for every 100 lines compiled

-z  print memory map of the Z-machine (same as --trace MAP)

-B  use big memory model (for large version-6/version-7 files)

-Cn select text character set (defaults to 1):

    0   plain ASCII only

    1   ISO 8859-1 (Latin1)

    2   ISO 8859-2 (Latin2)

    3   ISO 8859-3 (Latin3)

    4   ISO 8859-4 (Latin4)

    5   ISO 8859-5 (Cyrillic)

    6   ISO 8859-6 (Arabic)

    7   ISO 8859-7 (Greek)

    8   ISO 8859-8 (Hebrew)

    9   ISO 8859-9 (Latin5)

    u   Unicode (UTF-8)

-D  insert "Constant DEBUG;" automatically

-En select error message style (default is Archimedes):

    0   Archimedes-style error messages

    1   Microsoft-style error messages

    2   Macintosh MPW-style error messages

-G  compile a Glulx game file

-H  use Huffman encoding to compress Glulx strings

-S  compile strict error-checking at run-time (on by default)

-V  display version and exit

-Wn header extension table is at least n words (n = 3 to 99)

-X  compile with INFIX debugging facilities present

  TRACE OPTIONS

The various command line arguments that produce tracing or statistical
    information are consoludated into a single argument:
    --trace TRACEOPT or --trace TRACEOPT=N
You can also use --helptrace to list all available trace options. Trace option names are case-insensitive. The optional N is always an integer. 0 always means off, 1 is the base level, 2 or more may increase verbosity. As a general rule, setting N to a high number is not an error; it just does the same thing as the highest supported number for that option. This lets us add more verbosity levels to any option wihtout worrying about compatibility errors. Four trace settings can be changed in mid-compile with the Trace directive. This has always been true but now it is handled consistently. Trace assembly, Trace expressions, trace tokens, and Trace linker are equivalent to --trace asm, --trace expr, --trace tokens, and --trace linker , respectively. As with the command-line versions, you can optionally specify 0 to turn off that settins or 2 or more for more verbosity. Four more trace directives do an immediate information dump: Trace dictionary, Trace objects, Trace symbols, and Trace verbs. The command-line equivalents --trace dict, --trace objects, --trace symbols, and --trace verbs do the same at the end of compilation.

  PATH MODIFIERS

--path PATH=dir
    change PATH to this directory

--addpath PATH=dir
    add this directory to the PATH

  PATH MODIFIERS (old style)

+dir
    set Include_Path to this directory

++dir
    add this directory to Include_Path

+PATH=dir
    change PATH to this directory

++PATH=dir
    add this directory to the PATH

  MEMORY SETTINGS

--list
    List current memory allocation settings.

--helpopt SETTING
    explain briefly what SETTING is for

--opt SETTING=number
    change SETTING to given number

--define SYMBOL=number
    define define SYMBOL as a constant in this story

--config filename.icl
    read in a list of commands (in the format above) from this setup file. See INFORM COMMAND LANGUAGE below

  MEMORY STRATEGY MODIFIERS (old style)
Note: it may be necessary to quote these parameters to prevent your shell from expanding them.

$list
    list current memory allocation settings

$?SETTING
    explain memory setting SETTING (see $list for available parameters)

$SETTING=number
    manually set SETTING to given number

$#SYMBOL=number
    define SYMBOL as a constant in the story

(filename.icl)
    read in a list of commands (in the format above) from this setup file. See INFORM COMMAND LANGUAGE below

INFORM COMMAND LANGUAGE
The Switches directive, which enables certain compiler switches to be set from within the source file rather than on the compiler command line, has been superseded by a more powerful mechanism. The special comment characters "!%", occurring on the very first line or lines of the source file, enable you to specify Inform Command Language (ICL) commands to control the compilation. For example:
    !% -E1G    ! Glulx, 'Microsoft' errors
    !% -~S    ! disable Strict mode
    !% +include_path=./test,./,../lib/contrib ! look in 'test' library
    !% $MAX_STATIC_MEMORY=20000
    Constant STORY "RUINS";
    ... ICL is described in Section 39 of the Inform Designer's Manual. In brief: each line specifies a single command, starting with "-" to define one or more switches, "+" to define a path variable, or "$" to define a memory setting. Comments are introduced by "$". The ICL command "compile" is not permitted at the head of a source file.

CAVEATS
inform is not capable of creating story files conforming to versions 1 or 2 of the Z-Machine.
Modules are no longer supported.
The Switches directive is deprecated.
The Version directive is deprecated.

DOCUMENTATION
The canonical documentation for Inform6 is the Inform_Designer's Manual (4th edition, 2001). This work can be browsed at
<http://inform-fiction.org/manual/html/contents.html> downloaded from
<http://inform-fiction.org/manual/DM4.pdf> and purchased in hardcopy at
<http://amazon.com/> Since the latest edition of the Inform Designers Manual was published in 2001, it has become somewhat out of date. For an up-to-date document on changes, see the Inform 6 Reference Addendum at
<http://www.inform-fiction.org/manual/I6-Addendum.html> Another noteworthy resource is the Inform Beginner's Guide (3rd edition, 2004). This work can be downloaded at
<http://inform-fiction.org/manual/download_ibg.html>

SEE ALSO
zcode-interpreter(6) and the manuals and language reference which can be found online at
<http://inform-fiction.org/manual/>
and
<http://inform-fiction.org/inform6.html>.

AUTHOR
The various iterations of the Inform language were created by Graham Nelson in 1993. This manpage was written by Jan Nordholz <hesso@pool.math.tu-berlin.de> for the Debian Project and altered by David Griffith <dave@661.org>.

DISTRIBUTION
The compiler and standard library for Inform6 are licensed under

1)  The traditional Inform license as described by the DM4, or

2)  The Artistic License 2.0 .
Here is the relevant bit from the Inform Designer's Manual, 4th edition: Copyright on Inform, the program and its source code, its example games and documentation (including this book) is retained by Graham Nelson, who asserts the moral right to be identified as the author under the Copyrights, Designs and Patents Act 1988. Having said this, I am happy for it to be freely distributed to anybody who wants a copy, provided that: (a) distributed copies are not substantially different from those archived by the author, (b) this and other copyright messages are always retained in full, and (c) no profit is involved. (Exceptions to these rules must be negotiated directly with the author.) However, a story file produced with the Inform compiler (and libraries) then belongs to its author, and may be sold for profit if desired, provided that its game banner contains the information that it was compiled by Inform, and the Inform version number. The Artistic License 2.0 can be found at
https://opensource.org/licenses/Artistic-2.0
and the file ARTISTIC in the Inform6 distribution archive.