*BSD News Article 51710


Return to BSD News archive

Newsgroups: alt.folklore.computers,rec.games.int-fiction,comp.unix.bsd.misc
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.uwa.edu.au!classic.iinet.com.au!news.uoregon.edu!usenet.eel.ufl.edu!news.ultranet.com!news.sprintlink.net!dfw.nkn.net!vortex.fastlane.net!rowdy.lonestar.org!nemesis!uhclem
From: uhclem@nemesis.lonestar.org (Frank Durda IV)
Subject: Re: xyzzy
X-Newsreader: Tin 1.1 PL5
Organization: The Big Blue Box
Message-ID: <DF8FM4.3AJ@nemesis.lonestar.org>
References: <43n91t$4nh@gap.cco.caltech.edu>
Date: Thu, 21 Sep 1995 01:46:51 GMT
Lines: 53
Xref: euryale.cc.adfa.oz.au alt.folklore.computers:88451 rec.games.int-fiction:7436 comp.unix.bsd.misc:235

The REAL original ZORK ran on DECsystem-10 and 20 systems, using
this bizzare language called MDL.  Think of LISP with C data structures
and you are partly on the way to MDL.  And make it an interpreter.

The game was actually started by "restoring" a MDL session to a
previous state.  So the creators got things in the environment ready
and then did the equivalent of a Holodeck "Freeze Program".   When you
played the game later, you did a "Resume Program".  I think they did
it this way to prevent you from dumping out the code.

One of the authors gave me the file "PARSER.MUD" from ZORK, circa 1979.
Uh, the code isn't that clear (even after reading the MDL primer), but it
looks impressive.  Stuff like:

<COND (<AND .ADJ
	    <COND (<AND <SET OBJ <GET-OBJECT <CHTYPE .ADJ PSTRING> <>>>
			<SET OS <STUFF-OBJ .OBJ .PREP .PREPVEC .PVR .VB>>>
		   <SET PREPVEC <1 .OS>>
		   <SET PVR <2 .OS>>
		   <SET PREP <SET ADJ <>>>)
		  (<OR .OBJ
		       <OR .VB
			   <TELL "I can't see any "
				 1
				 <LCIFY <STRINGP.ADJ>>
				 " here.">>>
			<RETURN <> >SPAROUT>)>>)
				    
(I used to scare the Survey of Languages courses with this code fragment.)

The original version said "Welcome to the dungeon", but came on the
tape from MIT named ZORK, but the actual program file was MADADV.SAV
or something like that. "ZORK" was simply a front end that started 
MDL and shoved the restore command into the interpreter.  The ZORK
executable also provided a way to block access to the game during prime
system hours, at least for people who didn't know how to run MDL directly.

I was really disappointed by the PC (and before that Z80) versions.
The mazes and puzzles were scaled way back from the original to make it
fit, and the parser was much stupider than the MDL one.  Even the
FORTRAN port by the unnamed DEC engineer (not me) never got things to
work as well as the MDL version worked.

Of course, one of the guys that worked on the Infocom PC port now goes
around telling people he was one of the original authors of ZORK, but he
was really working at GE at the time....


Frank Durda IV <uhclem@nemesis.lonestar.org>|"$ mdl104
or uhclem%nemesis@fw.ast.com (Fastest Route)| restor <madadv.sav>$"
...letni!rwsys!nemesis!uhclem               |or something like that.
...decvax!fw.ast.com!nemesis!uhclem         |