Some of our readers may know about Zork (and 1, 2, 3), the 1977 text adventure originally written for the PDP-10. The game has been public domain for a while now, but recently, the interpreters for several classic 1980s machines have also appeared on the internet.
What’s the difference? Zork is not a PDP-10 executable, it’s actually a virtual machine executable, which is in turn run by an interpreter written for the PDP-10. For example, Java compiles to Java bytecode, which runs on the Java virtual machine (but not directly on any CPU). In the same way, Zork was compiled to “Z-machine” program files, called ZIP (which was of course used in 1990 by the much more well known PKZIP). To date, the compiler, “Zilch” has not been released, but the language specification and ZIP specifications have, which has led some people to write custom ZIP compilers, though with a different input language.
For more on the VM, check out Maya’s Zork retrospective. (And dig the featured art. Subtle!)
Of course, that’s not the only type of interpreter. Some programming languages are interpreted directly from source, like this BASIC hidden in the ESP32’s ROM.
I have been looking into the lineage of Dungeons and Drangons-1 “DND1” It has been claimed to be written originally on a PDP11 in BASIC but it looks more like PDP10 . The problem I have is that the FILE command syntax and the BASE command don’t seem to match any PDP11 BASIC interpreters or PDP8e BASICs or PDP10 “DEC SYSTEM10″BASIC interpreters.. The files I am working from include the DND1 PDF on github.
Is there an original printout of ZORK for PDP10 that I can get my hands on as I am super keen to look at the syntax to determine if there were variations of syntax between versions of BASIC.
I don’t think Zork was ever written in Basic? I thought it went MDL -> Fortran -> C. There is an MDL version here: https://github.com/MITDDC/zork But I don’t think that’ll help…
“I really wish the journos would actually do more than 5 seconds of background research.”
And how much time should they spend for $16 per article?
Enough to get it right.
“For example, Java compiles to Java bytecode, which runs on the Java virtual machine (but not directly on any CPU)”
Err… https://en.wikipedia.org/wiki/Jazelle – and I’m sure there have been others.
Even with normal Java, the bytecode gets taken to native by the just-in-time compiler. It hasn’t been straight-up interpreted by the VM in ages.
Actually, there are some cases where modern JVMs will interpret bytecode, such as starting up (prior to native compilation) for faster app start, etc.
Quick correction: Zilch was never actually formally released, but it did kinda escape. See https://github.com/ZoBoRf/ZILCH-How-to for all the gory details. It’s written in MDL which means it looks like Lisp and HTML got really drunk one night, but it does actually function. There is also a modern reimplementation of a ZIL compiler called ZILF, written in C-sharp: https://foss.heptapod.net/zilf/zilf
Both of these are capable of compiling Infocom’s original source code (which also kinda escaped).
There is also an MDL interpreter called Confusion, which can run the original Zork.
https://github.com/heasm66/mdlzork/tree/master/confusion_patched
There has been a cottage industry in the FPGA world writing cores that actually implements the Z machine directly for example :
https://virtuallyfun.com/2014/12/03/zork-cpu-implemented-in-fpga/
Despite the similar name, PKZIP is not related to Infocom ZIP files.
Yeah, that got me stumped for a minute too. I think it’s a clumsy rehash of this sentence from Wikipedia: “ Infocom itself used extensions of .dat (Data) and .zip (ZIP = Z-machine Interpreter Program), but the latter clashed with the widespread use of .zip for PKZIP-compatible archive files starting in the 1990s.”
I blame ChatGPT.
RIP Phil Katz.
The fact they “appeared out of nowhere” on Andrew Plotkin’s github is itself pretty telling. Zarf is one of the most important figures in interactive fiction.
Here’s a blog post from zarf with the story of how it came about:
https://blog.zarfhome.com/2023/11/infocom-interpreters
Not quite on topic but Amazon used to have an internal version of this called “Amazork” on the “fun” section on their wiki (long dead).
I thought it was lost forever until just now! Someone actually has a website for it at:
http://www.amazork.com
Similarly, there was a DEC-specific text adventure called ZK, which took the player through DIGITAL’s Spitbrook Software Engineering complex (ZK01, ZK02, etc) in Nashua, NH.
“Zork, the iconic 1977 text adventure game that captivated generations, continues to intrigue enthusiasts across the globe. […] Contrary to popular belief, Zork is not merely a program executable for the PDP-10 computer. Instead, it exists as a virtual machine executable”
This is incorrect. The 1977-1980 version of the game is indeed a PDP-10 executable, compiled from MDL source code. The virtual machine was invented later, for running Zork on microcomputers.
I was thinking the original was called, “Adventure”. I recall Fortran source named Adventure that was submitted to the HP User’s Group library back in the 80s.
In 1980, I used to play Adventure on the PDP-10.
Zork came later, and while similar to and obviously inspired by Adventure, it was its own game.
Right, Colossal Cave / Adventure was written in Fortran, and was released onto the Arpanet in 1976. A copy found its way to MIT, where it was a direct inspiration for Zork. Zork was begun summer 1977, and finished roughly 1979.
Ted Hess got hold of a copy of Zork in 1978; Bob Supnik ported it to Fortran during the blizzard of 78. This version is often called Dungeon, and was ported to C in the 1980s.
Ok anyone with their Indiana Jones Hat and Whip, ready for another deep archeology challenge?
I would like to find the original 1970s source code for original Hack(pre nethack). The earliest currently available is the compiled binary for an IBM PC port from the early 80s but it had existed on dec computers years earlier. I heard there was an decius archive of an earlier version, but haven’t been able to track it down.
hack103 was posted on comp.sources.unix forever ago but I doubt anyone has a Usenet archive that old. still it’s stuff to add to your search query.
You can find it here:
https://homepages.cwi.nl/~aeb/games/hack/hack.html
I’m pretty sure it’s in UTZOO as well
So Z Machine runs Zork faster than the original VM’d Infocom runtime?
Infocom’s original VM *is* the Z Machine, right?
I had Frotz running in DOS nearly 30 years ago. Winfrotz has been around since 3.1.1. Heck, there was even a Z Machine extension for Chrome for a while. How is this news?