-
Notifications
You must be signed in to change notification settings - Fork 4
/
appc.html
359 lines (299 loc) · 14.1 KB
/
appc.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
<!DOCTYPE html>
<html>
<head>
<title>The Z-Machine Standards Document</title>
<link rel="stylesheet" type="text/css" href="zspec.css">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body class="appendix">
<img class="icon" src="images/iconac.gif" alt="">
<h1>Appendix C. Resources available</h1>
<blockquote>
<p>...the dead hand of the academy had yet to stifle the unbridled
enthusiasms of a small band of amateurs in Europe and America.
</p>
<p>Michael D. Coe, <strong>Breaking the Maya Code</strong></p>
</blockquote>
<p>[Note: these links have not been updated since the 20th June 1997 revision of
this document, and as such are very likely to be incorrect.]
</p>
<p>The resources below are mainly available from the
<a href="ftp://ftp.gmd.de/if-archive/">if-archive</a>
at the anonymous FTP site <B>ftp.gmd.de</B> in Germany,
maintained by Volker Blasius. [Some mirrors of this site
are listed at the
<a href="http://www.gnelson.demon.co.uk/inform.html">Inform home page</a>.
</p>
<hr>
<h2>Public Interpreters</h2>
<p><em>At least eleven essentially different
<a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters">interpreters</a>
are publically available, of which six are in modern use:</em>
</p>
<ol>
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/frotz">Frotz</a>,
by Stefan Jokisch (1996-), was written in a
successful attempt to implement a Standard-compliant interpreter
from scratch, rather than repair old interpreter cores. It covers
all Versions and ports are available for: DOS, Amiga, Windows CE,
Acorn RISC OS, Windows 95/NT, OS/2, Unix, HP-UX.
</li>
<li>
<ol>
<li><strong>Zplet</strong>, by Matthew Russotto (1996-), is an almost
Standard-compliant Java applet to interpret Versions 3, 5 and 8.
</li>
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/zax">Zax</a>,
by Matt Kimmel (1997-), is an almost
Standard-compliant Java application to interpret all Versions other
than 6. (Note that <strong>Zax</strong> and <strong>Zplet</strong>
are quite independent of each other:
as one runs in a browser, the other as a stand-alone application, they
may be seen as complementary.)
</li>
</ol>
</li>
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/zip">Zip</a>,
by Mark Howell (1991-), is a good, almost entirely accurate interpreter
across Versions 1 to 5. The core has evolved into many extended versions,
often covering Version 8 or even implementing this Standard; Stefan
Jokisch has written a document listing bugs and omissions in the original.
Noteworthy ports include: Kevin Bracey's Standard-compliant
<a href="http://www.ifarchive.org/if-archive/infocom/interpreters/zip2000/Acorn_Zip2000_141_Std1.0.spk">!Zip2000</a>,
(Acorn RISC OS only), which fully supports even Version 6;
Rick Bram's
<a href="http://www.palmglyph.com/zip.html">Pilot Zip</a> (1997):
the PalmPilot is a pocket-sized, battery-powered personal organiser
without even a keyboard; Andrew Plotkin's <strong>MaxZip</strong>,
for System 7 Macintoshes, and <strong>XZip</strong>, for X-Windows;
Matthew Russotto's <strong>Zip Infinity</strong>, also for Macintosh; John Holder's
<strong>JZip</strong> for PCs (itself ported to the Atari ST and Bebox); Greg Ewing's
<strong>macZeX</strong>, which extends the Z-machine specification to include textual
formatting information loosely based on TeX, but which has not been
used by designers; and other ports including to MS Windows, DOS,
BSD Unix, Amiga, OS/2, Apple IIgs.
</li>
<li>The <a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/itf">
InfoTaskForce</a> (or ITF) interpreter (1987-92) is almost as
good, but slower and less accurate on some Version 5 features. It is no
longer maintained by its original authors (David Beazley,
George Janczuk, Peter Lisle, Russell Hoare and Chris Tham)
and the final version was 4.01
(ported to Acorn RISC OS, Atari ST, OS/2, Macintosh, DOS, Amiga); a beta
test of version 4.02 was never widely distributed. However,
Bryan Scattergood has given <strong>ITF</strong> a new lease of life by updating
it to much more accurate and reliable interpreters for Acorn RISC OS,
the Psion Series 3, Unix/X11 and Windows.
</li>
<li>Apple Newton users can at present play Version 3 games only, using
the shareware interpreter
<a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/yazi">YAZI</a>,
Yet Another Z-Machine Interpreter, by George Madrid and Sanjay Vankil
(1994-).
</li>
<li>Another Version-3-only interpreter,
<a href="http://www.work.de/nocash/infgmb.htm">Infocom Interpreter</a>
by Martin Korth (1993) is noteworthy for two reasons: first, because
Mr Korth seems to have worked by reverse-engineering the Infocom CP/M
interpreter (in isolation from the main groups of Infocom hackers of
the period), and in this way wrote the only known Z-machine in Pascal
(source available at his site); second, because he then wrote an
assembly-language version for the keyboard-less Nintendo Gameboy.
To use this, one appends the story file to the interpreter, burns the
result into an EPROM and plugs it in: it's probably the nearest thing
to a "hardware Z-machine" yet devised.
</li>
</ol>
<p><em>The other four interpreters are obsolescent and now hardly used, but
ought not to be forgotten, if only for their contribution to the gradual
process of decipherment.</em>
</p>
<ol start="7">
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/old/pinfocom">
Pinfocom</a> (1992), derived from an early form of <B>ITF</B>, and
released by Paul Smith as a Version 3 (only) interpreter;
final version 3.0 (ported to Amiga and Atari ST).
</li>
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/old/zmachine">
Zmachine</a> (1988-90), by Matthias Pfaller: briefly in limited
circulation (again, for Version 3 only; ported to Amiga and Atari ST).
</li>
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/old/zipdebug">
ZIPDebug</a> (1991-3), by Frank Lancaster, supporting
Versions 1 to 5 and offering some debugger facilities.
</li>
<li><a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/old/zterp">
Zterp</a> (1992), by Charles M. Hannum, for Versions 3 to 5:
reputedly very fast.
</li>
</ol>
<hr>
<h2>Testing compliance</h2>
<p>Andrew Plotkin has written a story file to torture interpreters into
revealing non-Standard behaviour, with the appropriately contrived
name of
<a href="ftp://ftp.gmd.de/if-archive/infocom/interpreters/tools/etude.tar.Z">TerpEtude</a> [an archive containing the source code and compiled
story file]. It supersedes the handful of smaller programs
previously attached to versions of this document.
</p>
<hr>
<h2>Compilers</h2>
<p>Infocom's original compiler <strong>Zilch</strong> no longer exists: nor is any of its
language, <strong>ZIL</strong>, documented anywhere
(though this is similar to <strong>MDL</strong>, which
is documented): no continuous part of the source code of any of
Infocom's games is in the public domain [but see
<a href="ftp://ftp.gmd.de/if-archive/infocom/articles/NZT-Zorkhistory.txt">
Stu Galley's chapter of an Infocom history article</a>, and the IEEE
article, for fragments].
</p>
<p><a href="http://www.gnelson.demon.co.uk/inform.html">Inform</a>
is the only other compiler to have existed. It is freeware and
comes with full documentation (of which this document is a part).
</p>
<hr>
<h2>Debugger</h2>
<p>A source-level debugger for Inform games, called <strong>Infix</strong>, has been
on the drawing boards for some years now. A group of authors is
currently developing an implementation.
</p>
<hr>
<h2>Utility programs</h2>
<p>Mark Howell has written a toolkit of
<a href="ftp://ftp.gmd.de/if-archive/infocom/tools/ztools/">
Ztools</a>, or utility programs (1991-5, updated 1997), which includes:
</p>
<ol>
<li><strong>Txd</strong>, a disassembler for Versions 1 to 8. (Uses the
same opcode names as Inform and this document, and has an option to
disassemble in Inform assembly-language syntax.)
</li>
<li><strong>Infodump</strong>, capable of printing the header information,
object tree (with properties and attributes), dictionary and grammar
tables of any Infocom or Inform-compiled game. (Understands all four
varieties of grammar table: Infocom pre-Version 6, Infocom Version 6,
Inform GV1 and GV2.)
</li>
<li><strong>Pix2gif</strong>, for converting Version 6 picture data
to GIF files.
</li>
<li><strong>Check</strong>, for verifying Infocom or Inform story files.
</li>
</ol>
<p>These continue to be maintained (by Matthew Russotto) and the first two
are extremely useful. <strong>Infodump</strong> largely supersedes Mike Threepoint's vocabulary
dumper <strong>Zorkword</strong> (1991-2), which was important in its day (and
which this author found extremely helpful when writing Inform 1).
</p>
<hr>
<h2>Story files</h2>
<ol>
<li><a href="ftp://ftp.gmd.de/if-archive/games/infocom/">
Numerous Inform-compiled story files</a> are publically available:
games such as 'Curses', 'Christminster', 'Theatre', 'Busted', 'Balances',
'Advent', 'Adventureland' and so on. [For an annotated selection see the
<a href="http://www.gnelson.demon.co.uk/inform.html">Inform home page</a>.]
</li>
<li>A few Infocom story files are public, notably two 4-in-1 sample
games (released for advertising purposes:
<a href="ftp://ftp.gmd.de/if-archive/infocom/demos/sampler1_R55.z3">
55.850823</a>
and
<a href="ftp://ftp.gmd.de/if-archive/infocom/demos/sampler2.z3">
97.870601</a>) and
<a href="ftp://ftp.gmd.de/if-archive/infocom/demos/minizork.z3">
Minizork</a> (a heavily
abbreviated form of Zork I released with a Commodore magazine).
</li>
<li>Almost all Infocom's games remain commercially available in
anthologies published by
<a href="http://www.activision.com">Activision</a>.
Copyright resides in them and they should not available by FTP
from any site.
</li>
<li>A few other Infocom story files have existed but are neither
on sale nor released from copyright: this applies to several of the
Version 6 games, those games involving literary rights or other
legal issues ('Shogun', 'Hitch-Hiker's Guide To The Galaxy') and
ephemera such as beta-test versions (notably the German version
of 'Zork I') which have somehow passed into private circulation.
</li>
</ol>
<p>Most of the Infocom games exist in
<a href="appf.html">several different releases</a>, and some
were written for one Version and then ported to later ones. 'Zork I', for
instance, has at least 11 releases, 2 early, 8 in Version 3
(with release numbers between 5 to 88 in chronological order) and one in
Version 5 (release 52 -- the releases go back to 1 when the version changes).
</p>
<p>Version 1 and 2 games are extinct, though there are a few fossils
in the hands of collectors.
</p>
<hr>
<h2>Documents</h2>
<p>The definitive guide to all Infocom story files known to exist, and an
indispensable reference for anyone interested in Infocom, is Paul David
Doherty's
<a href="ftp://ftp.gmd.de/if-archive/infocom/info/fact-sheet.txt">
Infocom fact sheet</a>, which is regularly updated, concise and
precise. This supersedes Paul Smith's "Infocom Game Information" file.
</p>
<p>Stefan Jokisch has written a
<a href="ftp://ftp.gmd.de/if-archive/infocom/info/sound_format.txt">
brief specification of Infocom-format sound effects files</a>.
</p>
<p>Martin Frost is the author of the
<a href="../quetzal/index.html">Quetzal</a>
standard for saved-game files. Patches to adapt <strong>Zip</strong>-based
interpreters to use <strong>Quetzal</strong> are now available.
</p>
<p>Andrew Plotkin is drafting the <strong>Blorb</strong> standard for packaging up
images and sounds with new Z-machine games.
</p>
<p>The <a href="http://www.inform-fiction.org/source/tm/TechMan.txt">
Inform Technical Manual</a> documents the format of parsing tables
used in Inform games.
</p>
<p>Most of the contents of the original Infocom game manuals are still on
sale with the games themselves: the "samplers" (sample transcripts of
play) are not, but an
<a href="ftp://ftp.gmd.de/if-archive/infocom/shipped-documentation/">
archive of them</a> is publically available. So is
<a href="ftp://ftp.gmd.de/if-archive/infocom/articles/">
an interesting historical archive of magazine articles</a> concerning
Infocom, and articles from Infocom's own publicity magazine
[indexed
<a href="http://www.ifarchive.org/if-archive/infocom/NZT+TSL/NZT+TSL.list">
here</a>].
</p>
<hr>
<h2>Mailing list</h2>
<p>A Z-Machine mailing list, organised by
Marnix Klooster ([email protected]),
enables debates on this document, discussion of what interpreters
should do, collaboration on new programs and so on.
</p>
<hr>
<p>
<a href="index.html">Contents</a> /
<a href="preface.html">Preface</a> /
<a href="overview.html">Overview</a>
</p>
<p>Section
<a href="sect01.html">1</a> / <a href="sect02.html">2</a> /
<a href="sect03.html">3</a> / <a href="sect04.html">4</a> /
<a href="sect05.html">5</a> / <a href="sect06.html">6</a> /
<a href="sect07.html">7</a> / <a href="sect08.html">8</a> /
<a href="sect09.html">9</a> / <a href="sect10.html">10</a> /
<a href="sect11.html">11</a> / <a href="sect12.html">12</a> /
<a href="sect13.html">13</a> / <a href="sect14.html">14</a> /
<a href="sect15.html">15</a> / <a href="sect16.html">16</a>
</p>
<p>Appendix
<a href="appa.html">A</a> / <a href="appb.html">B</a> /
<a href="appc.html">C</a> / <a href="appd.html">D</a> /
<a href="appe.html">E</a> / <a href="appf.html">F</a>
</p>
<hr>
</body>
</html>