---
name: "inform6"
section: "1"
platform: "linux"
package: "inform6-compiler"
version: "6.42-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/inform6"
---

# inform6(1)

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

## 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-language (without hex dumps; see **-t**)

- **-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**

  frequencies mode: show how useful abbreviations are

- **-g**

  traces calls to functions (except in the library)

- **-g2**

  traces calls to all functions

- **--help, -h, -h1, -h2**

  print usage information

- **-i**

  ignore default switches set within the file

- **-j**

  list objects as constructed

- **-k**

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

- **-l**

  list every statement run through Inform

- **-m**

  say how much memory has been allocated

- **-n**

  print numbers of properties, attributes and actions

- **-o**

  print offset addresses

- **-p**

  give percentage breakdown of story file

- **-q**

  keep quiet about obsolete usages

- **-r**

  record all the text to "gametext.txt"

- **-s**

  give statistics

- **-t**

  trace assembly-language (with full hex dumps; see **-a**)

- **-u**

  work out most useful abbreviations (very very slowly)

- **-v*n***

  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

- **-y**

  trace linking system

- **-z**

  print memory map of the Z-machine

- **-B**

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

- **-C*n***

  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

- **-E*n***

  select error message style (default is Archimedes):

  - **0**

    Archimedes-style error messages

  - **1**

    Microsoft-style error messages

  - **2**

    Macintosh MPW-style error messages

- **-F1**

  use temporary files to reduce memory consumption

- **-G**

  compile a Glulx game file

- **-H**

  use Huffman encoding to compress Glulx strings

- **-M**

  compile as a Module for future linking

- **-S**

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

- **-U**

  insert "Constant USE\_MODULES;" automatically

- **-V**

  display version and exit

- **-W*n***

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

- **-X**

  compile with INFIX debugging facilities present

### 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 cannot be used with Glulx and are deprecated for Z-Machine.

## DOCUMENTATION

The canonical documentation for **Inform6** is the **Inform\_Designer's Manual**.  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/*\>

Another noteworthy and somewhat more up-to-date resource is the **Inform Beginner's Guide**.  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.
