Zork
Zork is one of the most popular, and ported games for mini and personal computers. Zork was written in MIT (Marc Blanc, Joel Berez and others) in the MDL language. It was VERY popular and was ported to various other langauges and systems. The Fortran port by Bub Supnik is perhaps one of the more popular versions.
A better introduction can be found here:
http://www.csd.uwo.ca/Infocom/dungeon.html
Contents
Introduction
Zork started the genre that would be better known as interactive fiction. You simply type in what you would want to do, and the story unfolds..
# ./zork You are in an open field west of a big white house with a boarded front door. There is a small mailbox here. >open mailbox Opening the mailbox reveals: A leaflet. >take leaflet Taken. >read leaflet Welcome to Dungeon! Dungeon is a game of adventure, danger, and low cunning. In it you will explore some of the most amazing territory ever seen by mortal man. Hardened adventurers have run screaming from the terrors contained within. In Dungeon, the intrepid explorer delves into the forgotten secrets of a lost labyrinth deep in the bowels of the earth, searching for vast treasures long hidden from prying eyes, treasures guarded by fearsome monsters and diabolical traps! No DECsystem should be without one! Dungeon was created at the Programming Technology Division of the MIT Laboratory for Computer Science by Tim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling. It was inspired by the Adventure game of Crowther and Woods, and the Dungeons and Dragons game of Gygax and Arneson. The original version was written in MDL (alias MUDDLE). The current version was translated from MDL into FORTRAN IV by a somewhat paranoid DEC engineer who prefers to remain anonymous. On-line information may be obtained with the commands HELP and INFO. >
Source code
The MDL source code is available from the SIMH software site here. Likewise, Bob's port to Fortran is available here. The Fortran version was last updated from 1990.
Various versions can be retrieved from http://ftp.giga.or.at/pub/ifarchive/games/source/
Source Code | Description |
---|---|
Dungeon_source.sit | C source code for Dungeon (the more or less public domain version of the original MIT Zork) for the Macintosh. |
dungeon-2.5.6.tar.gz | FORTRAN source code of Dungeon, the more or less public domain version of the original MIT Zork, version 2.5A, 30-Aug-90. This version is Robert M. Supnik's DECUS version 2.5A (18-Jul-80), ported to Linux with f2c. |
dungeon-3.2A.tar.Z | Dungeon version 3.2A, 1-Oct-94; contains all the rooms and puzzles of the original MIT Zork. DEC FORTRAN source code by Robert M. Supnik; see dungn32b.zip for a port to DOS. |
dungeon-3.2B.patch | Source code patch by Robert M. Supnik to upgrade Dungeon version 3.2A to version 3.2B. |
dungeon-3.2B.unidiff | Same patch, converted to Larry Wall's 'patch' utility format (unified diff) by David Bristow. |
dungeon-glk.tar.Z | and added the Glk interface. |
dungn26b-src.zip | version is Robert M. Supnik's DECUS version 2.6A (18-Oct-80), ported to MS-DOS by Kevin Black. (an MS-DOS executable of this |version is in games/pc/dungn26b.zip) |
dungn27s.zip | executable of this version is in games/pc/dungn27a.zip, an Amiga port is in games/amiga/Dungeon.lzh, and a port to the Acorn |Archimedes is in games/archimedes/dungeon.spk) |
dungn32b.zip | FORTRAN source code, ported from DEC FORTRAN to GNU G77 FORTRAN by Volker Blasius and David Kinder. The original source code is in |dungeon-32A.tar.Z (file is linked to games/pc/dungn32b.zip) |
Notable Platforms
Zork running on ITS
Zork's MDL source on ITS for the PDP-10. Keep checking back....
Zork on RT-11
I've managed to track back some source & binaries for this RT-11 version. Also the fabled manual was recently found, sold and scanned. It's even autographed.
Geocities link Since it's geocities I guess we should wget it as I think they are shutting down...?
This version can be converted to disk images with putr, which you can then copy to a larger disk and run it. At the moment this is the oldest known runnable version of Zork.
RT-11SJ V04.00C .D 56=5015 .TYPE V4USER.TXT Welcome to RT-11 Version 4. RT-11 V04 provides new hardware support and some major enhancements over Version 3B. Please use the HELP command; it describes the new options in many of the utilities. If you are using a terminal that requires fill characters, modify location 56 with a Deposit command before proceeding with system installation. LA36 DECwriter II and VT52 DECscope terminals do NOT require such modification. .D 56=0 .RUN DUNGEO Welcome to Dungeon. This version created 10-AUG-78. You are in an open field west of a big white house with a boarded front door. There is a small mailbox here. >HISTORY Revision history: 10-AUG-78 DECUS version. 14-JUL-78 Bug fixes. 6-JUL-78 Multiple system play test version. 28-JUN-78 Complete play test version. 18-JUN-78 Play test public version. 14-JUN-78 Initial public version. 4-MAR-78 Initial version.
There is also some rx50 disk images, here here dungeon1,dungeon2 & asc are the disks needed for dungeon. This version however is the source code version, but I'm lost as to how to install the fortran enviroment as it's not a simple copy. Extracting the strings I see this for the history portion:
10-OCT-78 Puzzle Room (V2.1A) 10-SEP-78 Endgame (V2.0A). 10-AUG-78 DECUS version (V1.1B). 14-JUN-78 Public version with parser (V1.1A). 4-MAR-78 Debugging version (V1.0A).
I've also managed to track back the source to a newer version, and setup some instructions on how to build it with RT-11 in the tutorial aptly named Compiling Dungeon on RT-11.
Zork on the PDP-11 running BSD
This version of Zork contains the following readme, with some information as to the history of Zork on the mini's:
This is a patched up RT-11 binary which ran on an LSI-11. This program was originally distributed on a Purdue mailing and was full of bugs. Many bugs in that distribution have been fixed. This is not a pristine, elegent implemention but it works! DUNGEON expects following files: /usr/chris/dungeon/zork UNIX a.out file for Dungeon root segment and RT-11 Fortran Runtime /usr/chris/dungeon/dtext.dat Text file in random access-format /usr/chris/dungeon/dindex.dat Indicies (probably into dtext.dat) /usr/chris/dungeon/doverlay Original RT-11 DUNGEO.SAV (reads overlays from here) If you don't like these pathnames, "dungeon.c" may be modified to reflect the desired names. Pathnames were originally in "o.s" but "dungeon.c" was implemented at Purdue as an easier way to change them than patching binaries. However, we have standardized the d/o.s interface. It now would be an simple task to put pathnames in o.s if one so desired. Other files of interest: dungeon.c C program with date and UID check and exec of dungeon. o.s Assembler driver to make dungeon run under UNIX. Loads overlays, save/restore games, etc. This must be relocated to 0146000 and stuck on the end of the dungeon binary file "d". (We don't have sources) p1 sh file to patch up a.out file "dung" so interface between "d" and "o.s" works. 1.s kludge file to achive . = .+ 0146000 mkovl sh file to make overlay driver, attach it to "d", and make a UNIX a.out file by attaching the proper header. --ccw
Zork on BSD/VAX
This version is infact the same version that runs on the PDP-11 versions of BSD Unix. What is interesting is that this version uses a PDP/11 emulator to run the above binary. It's also worth nothing from the VAX's readme:
!cmd (the usual shell escape convention) > (to save a game) < (to restore a game)
Using the save/restore commands will cause the program to crash.
The following is a quick session of the 4.2 BSD version of zork. I think this was the same under all 4.x BSD vax releases.
myname# zork You are in an open field west of a big white house with a boarded front door. There is a small mailbox here. >history Revision history: 10-SEP-78 Endgame (V2.0a). 10-AUG-78 DECUS version (V1.1b). 14-JUN-78 Public version with parser (V1.1a). 4-MAR-78 Debugging version (V1.0a). >
Zork on micro's
Zork was also available on various microprocessors, including z80, 6502, 8086.
TRS-80
Zork was first available on the TRS-80 requiring 32kb of ram, and a floppy disk drive!
You can download it from here:
http://www.classic-computers.org.nz/system-80/disks/zork1_80sssd_jv1.DSK
z80 CP/M
Zork was made available on the z80 running CP/M. You can run this game on SIMH
You can download this version here:
http://www.retroarchive.org/cpm/games/zork123_80.zip
Were there other CP/M machines able to run Zork?
6502
Of the 6502 based micro's the Apple II, and the Commodore 64 both possesed ports of the interpeter required to run Zork.
- Zork for the Commodore 64.
8086
The IBM PC was also able to run Zork, as shipped from Infocom.
History of Zork
The History of Zork can be found here http://www.csd.uwo.ca/Infocom/Articles/NZT/zorkhist.html
The GDT command
The FORTRAN version of zork was interesting as it included a built in debugger. Depending how old they are, the question would be different.
For example some of the earlier ones look like this:
.RUN DUNGEO Welcome to Dungeon. This version created 6-JUL-78. You are in an open field west of a big white house with a boarded front door. There is a small mailbox here. >HISTORY Revision history: 6-JUL-78 Multiple system play test version. 28-JUN-78 Complete play test version. 18-JUN-78 Play test public version. 14-JUN-78 Initial public version. 4-MAR-78 Initial version. >GDT A booming voice calls out, "Who summons the right hand of the translator? State your name, cat, and serial number!" SUPNIK,BARNEY,70524 At your service! GDT>
And as Bob put it on a mailing list:
Barney was the name of the cat I had when I did the bulk of the porting work. I'm fairly sure that 70524 was my DEC badge number. So I guess my cat was working for DEC, indirectly. /Bob
And more on the nature of GDT:
GDT dates from a very early version of the game, in fact, before the game was actually finished. I realized early on that debugging an interactive program with the traditional PRINT statements was going to be very cumbersome, and that the interactive debug tools of the day (1978) had no semantic understanding of the program. GDT was the answer. It enabled me to track when things went wrong, and to simulate parts of the game that hadn't been implemented yet. Originally, GDT was just a command like any other. Once the game was released, players quickly realized that it offered a simple way to short circuit the game and to undo mistakes. Lost something to the thief? Take it back. Getting killed too often? Turn on immortality mode. So I implemented a variety of challenges to prevent players from entering GDT without making the mechanism too difficult for me to remember. I think the INCANT mechanism might have been the final PDP-11 challenge. When I did the VAX version, I abandoned all that and went back to GDT as universally enabled, under control of a run time flag, GDTFLG. I think I intended to turn GDTFLG off before releasing the VAX version, so that it would be impossible to get into GDT without patching the binaries; but in fact the final VAX sources have GDTFLG=1. /Bob