|
|
|
|
|
Z-Machine, opcodes,
objects, virtual processor?
In this glossary
you'll find technical terms related to Infocom games explained.
So, if you either looked at the technical specifications for
a title and encountered a term you didn't understand, or if
you are just interested in finding out how Infocom text adventures
work "behind the scenes", have a look.
When your head
is buzzing enough, you can close
this window or, if you came from somewhere else, visit the
main menu.
|
|
|
|
|
MDL
("Muddle")
The programming
language the original "Zork" was written in.
MDL was developed
at MIT's Laboratory for Computer Science ("LCS")
and took its roots in another programming language, LISP.
It was one of many
languages used at LCS and of course wasn't designed to run
text adventures. It just happened to be around when Dave Lebling
and Marc Blank, both part of LCS, happened to have the idea
to write their own game.
MDL became the
foundation for ZIL.
Back
to top.
|
|
|
Opcodes
A computer processor
understands only one language: 0s and 1s, commonly called
"binary system." A whole string of them, like 0111011001110001,
gives the processor a specific instruction.
Reading or programming
would be very difficult to do in this binary "code,"
so it is translated to "opcodes." operation codes,
also called "assembly" or "machine" language.
These are very short abbreviations to give a programmer an
idea what an instruction is good for.
Opcodes are the
closest a programmer can get when he wants to give commands
to a processor directly. The main advantages of doing this
are that you can write a program much more compact and achieve
effects you might not be able to get in any other programming
language.
For example, if
you use BASIC, LISP or any other programming language to write
a program, they all will still be translated to your computer's
assembly language.
As every processor
is different, they all have their very own opcodes, tailored
for use on them. Infocom's "Z-Machine"
processor, though it never was a "real" processor,
is no different.
And, you might
guess it, the more opcodes an Infocom adventure uses, the
longer and more complicated the adventure is.
Back
to top.
|
|
|
Objects
Actually anything
in a game that you can manipulate, including by looking at
it. But more commonly, and on each game's specifications on
this site, the term is used for things you can pick up.
Back
to top.
|
|
|
Parser
The parser is the
translator between you and the game. It analyzes your input
for what actions you want to do and to what and then tells
the game to do that.
For example, when
you type
>KILL TROLL WITH SWORD
the parser looks
at the first word, which always has to be a verb, except when
you want to address a person directly. In this case here the
verb is "kill." The parser checks if it knows this
verb and if yes, what kind of action can be done with it.
With "kill" the parser gets the instruction that
an object will follow you want to eradicate from the face
of the Earth and, if necessary, with what.
If, as another
example, you type in
>GO NORTH
the parser knows
that you want to move to another room
and therefore expects that the word after "go" will
be a direction.
The set of rules
the parser and you have to live by is rather strict, because
human language is very complicated and all its aspects could
never be included in a game.
Back
to top.
|
|
|
Product
Code
A three-letter
code to handle a title internally at Infocom. They are on
the boxes and disks.
The first letter
of this code always was an "I" (with the exception
of "Sherlock"), followed by either a "Z"
for fantasy games, "S" for science-fiction, "M"
for mystery, "A" for adventure, "C" for
comedy, "H" for horror, "E" for espionage,
"R" for romance and "L" for literature.
A couple of these were only used on one single title, and
especially "J" for the roleplaying game "Journey"
and "F" for "Quarterstaff" stand out.
A "T" was used for the trilogies.
This second letter
was followed by a number, indicating what number of title
a game was in its genre. For example, "Zork," being
Infocom's first fantasy game ever, was "IZ1."
(Is this of any
use to you? Well, you can now not only sort the games alphabetically
or chronologically on your shelf, but also genrelogically
AND releasologically at the SAME time! And all this for free!)
To handle orders
the code was extended to by another three letters to identify
a release of a game for a specific computer. For example "Suspect"
was "IM3" and the C64 version of it was "IM3-CO1."
The other codes
for specific computers were "AC1" (Apricot), "AP1"
(Apple II), "AP3" (Apple IIgs), "AT1"
(Atari 800/XL/XE), "AT2" (Atari ST), "CO4"
(Commodore Amiga), "CO5" (Commodore 128), "CP1"
(CP/M), "DE1" (PDP-11), "DE2" (DEC Rainbow),
"EP1" (Epson QX-10), "IB1" (IBM PC), "IB2"
(IBM PC & MS-DOS), "KA1" (Kaypro II), "MS1"
(MS-DOS 2.0), "NE1" (NEC PC-8000), "NE2"
(NEC APC), "OS1" (Osborne), "TA1" (TRS-80
Model 1), "TA3" (TRS-80 Model 3), "TA4"
(TRS-80 Color Computer), "TI1" (Texas Instruments
Professional), and "TI2" (Texas Instruments TI 99/4A).
Back
to top.
|
|
|
Release
Number
A majority of the
games underwent minor modifications even when they were finished.
To keep the different versions apart each had its own release
number.
These modifications
were usually of minor nature, only in the cases of the later
Solid Gold versions the release number had a huge impact,
as those had on-line hints incorporated (also see Z-Code).
The release number
is normally used in connection with the serial
number. A game will display its serial and release number
when you type "version."
Some games display
their release number as "version number" or, more
properly, "revision number."
Games with the
same release number can share savegames.
Back
to top.
|
|
|
Rooms
The number of different
locations a game internally handles.
To the player there
might be more or less rooms perceivable, but the number approximately
represents the locations according to the status
line.
Back
to top.
|
|
|
Serial
Number
The date a game
or a revision of a game was finished.
Just read it backwards
and you have the exact day an overworked imp finally said
"done!"
The serial number
is normally used in connection with the release
number.
A game will display
its serial and release number when you type "version".
Back
to top.
|
|
|
Status
Line
The bar at the
top of the screen, that tells you vital information like where
you currently are, what your score is, etc.
Infocom also had
a newspaper for fans called "The Status Line" (originally
it was called "The New Zork Times" but the name
had to be given up, because a feeling of copyright infringement
took hold with some people in New York. But that is another
story).
Back
to top.
|
|
|
|
|
Vocabulary
The number of words
the parser understands.
The amount becomes
quite impressive with the later games and compared to the
earlier ones, but note that a big number doesn't necessarily
mean the story of a game has to be much longer or elaborate
than in games with a smaller parser. Many words are just used
as synonyms for each other and refer to the same thing or
person within the game.
Back
to top.
|
|
|
Z-Code
Specifies what
version of the Z-Machine assembly
language a game is running on. There are six:
Version 1
was the earliest and simplest version. For example, it couldn't
yet understand synonyms for words and the status line was
only updated when input from from the keyboard was received.
Version 2
was the first to use six-digit serial numbers and added a
minor understanding of synonyms.
Version 3
became the base for the majority of games. It had a continously
updated status line, was optimized to get the most out of
the space available and handled synonyms very well. It even
allowed a mediocre form of screen-splitting for the sonar
in "Seastalker" and sound in "Lurking Horror."
Version 4's
biggest difference to the previous was that it allowed for
games to be bigger. While previous Z-Machines were optimized
for the early home computers, which had very limited memory
and storage capabilities, this one allowed to use many more
objects and take advantage of computers that emerged in the
mid-1980s. Not only that, but Version 4 also added character
graphics, more sound effects, the use of different fonts,
a further improved status bar.
Version 4 was used
on the "Infocom Plus" series of adventures ("A
Mind Forever Voyaging," "Trinity"), but as
the majority of computers used at that time were still those
that couldn't handle games that size, Version 3 remained in
use.
Version 5
added other new features, like the real-time handling of action
in "Border Zone," improved character graphics for
"Beyond Zork" and on-screen hints.
The "Solid
Gold" re-releases of earlier games were in Version 5
to incorporate hints.
Version 6
was what die-hard, text-only fans of Infocom would call the
most removed from the previous versions. It became the base
for the "Graphic Interactive Fiction" ("Shogun,"
"Arthur") and "RPG" ("Journey,"
"Zork Zero") series. It was able to handle on-screen
hints, graphics, maps and roleplaying-style character statistics.
Back
to top.
|
|
|
Z-Machine
Imagine you live
in 1979 and you just wrote a pretty neat program for one specific,
very big and powerful, kind of computer in a programming language
that computer understands and you'd like to bring your program
to all kinds of smaller computers with less memory and that
don't understand the language you used.
How would you do
it? Transform ("compile") it to the machine language
(see opcodes) of each computer, because
machine language is compact? What if it was still too big?
Shrink it? Certainly.
You'd leave out all the bits and pieces of the programming
language you used on the big computer that you don't need
and you'd basically come up with your own programming language.
Let's say your program is called "Zork" and because
it would be so neat, you call your "new" language
"ZIL," "Zork Implementation
Language."
Now you'd find
out that ZIL and the size of your game would still ask for
too much from the processors and the memory of the small computers.
You get the idea
that a processor just designed to run your program and ZIL
in its own machine language, which you call Z-Code, would
be best. No space would be taken up by anything you don't
need. You could also make it use the disk your program comes
on as memory, instead of loading your entire program into
the real memory of the small computers at once. And in Z-Code
your program would need much less space than in the machine
language of the real processors.
Of course you couldn't
go out and plug your processor into every small computer out
there. But because your processor, which you now call Z-machine
(Zork-Machine), is so specialized you can let the real processors
of the small computers mimic ("emulate") it. All
they have to worry about is emulating your processor, while
your processor does the real work. Ultimately, your processor
would never have to be built, it would be a "virtual
processor."
Now, instead of
rewriting your program for every computer processor out there,
you'd only need to give them a program, which you call "ZIP,"
"Zork Interpreter Program," that
lets them emulate your Z-Machine in their own assembly language.
This is just what
Joel Berez and Marc Blank did when they faced the same problem.
Back
to top.
|
|
|
Zork
Implementation Language ("ZIL")
A version of the
programming language MDL, stripped down
to the bits needed for running Zork.
MDL was designed
to be run on large computers available at universities, and
when the decision was made to bring Zork to the much smaller
home computers, it had to be reduced to the basics necessary
for Zork.
Back
to top.
|
|
|
Zork
Interpreter Program ("ZIP")
An emulator designed
for each computer to run the Z-Machine.
Every computer
model had its own ZIP.
Back
to top.
|
|
|
|