Zork Zcode Interpreters Appear Out Of Nowhere

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.

26 thoughts on “Zork Zcode Interpreters Appear Out Of Nowhere

  1. 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.

  2. 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).

    1. 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.

  3. “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.

      1. 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.

  4. 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.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.