Glossary

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")

Opcodes

Objects

Parser

Product Code

Release Number

Rooms

Serial Number

Status Line

Virtual Processor

Vocabulary

Z-Code

Z-Machine

Zork Implementation Language ("ZIL")

Z-Machine Interpreter Program ("ZIP")

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.

Virtual Processor

See Z-Machine.

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.