Visible Zorker: March status report
Tuesday, March 17, 2026
Comments: 8 (latest 3 days later)
Tagged: if, interactive fiction, zork, infocom, zil, zarf, visible zorker, patreon, zork 3, deadline
Here's where we are:
Zork 3 is complete and available to Patreon supporters. It will go public on the Visible Zorker page on May 1st.
Deadline is now in progress! Except it's barely started, because I'm still catching up from my GDC trip. I'll have the early-access build of Deadline for Patreon supporters on April 1st. (Super-early access starts today, except there's nothing to look at yet -- see below.) The world gets Deadline for free on June 1st.
If nothing catches fire, I'll be back in mid-April to talk about Starcross.
Now, Deadline is proving to be a bit of a trip.
As usual, I've selected the release from the Masterpieces of Infocom CD for my work -- that's release 27, serial 831005. But as soon as I grabbed deadline-r27.zip off my Infocom page, I realized that it was incomplete! The verbs.zil file is simply missing.
If you look at the historicalsource repo, you'll see verbs.zil -- but that's from release 28. The r27 and r28 source directories are similar but not identical. Scroll back to the r27 view and the file is gone.
My only option is to paste in the r28 verbs.zil and run with it.
I can disassemble the r27 and r28 game files (we have both) and compare the functions from that file. So I'll be able to see how much was changed. Hopefully not too much. I know no verbs were added or removed (the syntax.zil file is identical between the releases) so it should be just bug fixes.
Of course there's other hitches as well. I figure every new Infocom game will throw me a new twist. In this case, it's this line:
<CONSTANT MG-LENGTH <* 3 2>>
This is a perfectly sensible line of ZIL -- it defines the constant MG-LENGTH as 6. (Prefix operators, so <* 3 2> is 6.) But my hacked-up ZIL parser doesn't support constant arithmetic. I didn't realize it was legal! I guess that's the first thing I add tomorrow night.
(The Visible Zorker doesn't execute ZIL statements. It displays ZIL while executing the compiled Z-code. However, I need to evaluate certain ZIL forms that have meaning at compile time. For example, %<COND> lets you discard certain lines at compile time, like #ifdef in C. I need to evaluate that for correct syntax coloring. Constants are another example.)
Anyhow, that's where we are. Deadline isn't even slightly functional yet, but I should have the basics in place this weekend. Forward, Sergeant Duffy!
Comments from Mastodon
@zarfeblong The changes I *think* I saw:
In V-READ, the old line may have been:
<TELL "You cannot read the" PRSO "?">
That should have called PRINT-PRSO, which r27 seems to do, and is consistent with other routines e.g. V-LOOK-UNDER.
In V-SHAKE, the line <FSET .X ,TOUCHBIT> appears to have been added in r28.
ROOM-PEEK may have had an explicit <RTRUE>, or just T, after <SETG HERE .OHERE>.
But please don't take my word for that being complete or correct!
@zarfeblong For authentic formatting, there are some other games that have a V-SHAKE that doesn't set TOUCHBIT,. e.g. Infidel and Starcross.
Starcross seems to have a buggy version though: objects in the container are moved to PRSO, not HERE. (Wasn't there a bug in some Infocom game where shaking a container could hang it?)
I also noticed that goal.zil references a non-existing SHALL-3. Should perhaps be ROURKE-BATH instead?
@et_andersson Yeah, I saw those changes. Plus one more: in V-TELL, the first case is missing an RTRUE after <SETG QCONTEXT-ROOM ,HERE>.
I'll annotate those lines heavily once I get that far. (I'm still going through the object/global/attribute/property numbers right now.)
@et_andersson Why would they remove a couple of RTRUEs? I guess someone saw that the autoreturned value was a room number in both cases, so they could save a line of code and still be sure of returning a nonzero value.
But whoever didn't rememeber that this would compile to a RET opcode rather than RTRUE, thus *wasting* a byte in the game file!
@et_andersson Another change that isn't obvious until you compare the string lists: r28 adds the word “registered" to “DEADLINE is a trademark of Infocom, Inc.”
@zarfeblong I wonder how many other lost files could (or will have to) be recreated this way. You may have to add a new category to your Obsessively Complete Infocom Catalogue. 😀
@zarfeblong There are a couple of other games where you may have to reconstruct the source code changes, unfortunately. Let's hope the differences are small enough.
Which reminds me of this line from the magick.zil file in wishbringer-invclues-rarler:
"Reconstructed from .ZAP files 5/23/88 by Prof."
I guess you're in good company. 🙂


Update: there's only four opcodes different between the verbs.zil files of r27 and r28. I should be able to reverse-compile the changes back into the source code.