HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
itafroma
zork-mdl
OPEN SOURCE2015–2025
itafroma / zork-mdl

zork-mdl

Original MDL source code for MIT's version of Zork

2Distinct people
12Mentions
1Explicit recommenders
82GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Original MDL source code for MIT's version of Zork

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

After some experimentation, I hypothesized that there was a troll flag in Zork, and once I finally discovered the source code decades later, I found out there actually was,…

DonHopkins used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year12 dated mentions

Observed mentions: 2015-02-15 10:24:13 UTC to 2025-05-10 10:14:33 UTC.

0123452015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC303
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC505
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202

What Hacker News says

12 sources
DonHopkins·May 10, 2025Recommendation phrase
After some experimentation, I hypothesized that there was a troll flag in Zork, and once I finally discovered the source code decades later, I found out there actually was, called "TROLL-FLAG!-FLAG"! https://github.com/itafroma/zork-mdl https://news.ycombinator.com/item?id=31846457 DonHopkins on June 23, 2022 | parent | context | favorite | on: Random Ultima Online anecdote #2 – Horses inside p... My favorite object containment related ZORK bug (which I discovered in the origin ZORK on MIT-DM, but which persisted in the InfoCom version), involves the troll holding an axe, blocking the door to the depths of the dungeon, who eats anything you give to him: >GIVE AXE TO TROLL The troll, who is not overly proud, graciously accepts the gift and not having the most discriminating tastes, gleefully eats it. The troll, disarmed,
Read the rest
cowers in terror, pleading for his life in the guttural tongue of the trolls. To have killed him in cold blood then would have been cruel, so I tried something else: >GIVE TROLL TO TROLL The troll, who is not overly proud, graciously accepts the gift and not having the most discriminating tastes, gleefully eats it. POOF! No more troll! (I've actually been able to successfully apply this technique of giving HN trolls their own weapons (quoting their own words back to them), then giving them to themselves (pointing them back to their previous posts), to make them disappear from HN!) But giving the troll to itself triggered another bug, because apparently it forgot to clear the TROLL flag, so you could still not leave the room, because when you tried to go through the exit the troll previously blocked, it said that "The troll fends you off with a menacing gesture." even though there was no troll in the room. Decades later I finally found the Zork source code, and it turns out there was actually a troll flag called "TROLL-FLAG!-FLAG" that it forgot to clear, which the exit depended on. I wrote up the bug in more details, with links to the source code: https://news.ycombinator.com/item?id=19672436 DonHopkins on April 16, 2019 | prev | next [–] I wrote some comments on the Wikipedia Zork talk page: https://en.wikipedia.org/wiki/Talk:Zork/Archive_1#h-Link_to_... Link to the original Zork source code in MDL I suggest linking to the original Zork source code in MDL which is available here: http://retro.co.za/adventure/zork-mdl/ Is it OK to link to that source code from Wikipedia? I don't know who officially owns it, though. It was never a commercial product, and was developed at MIT. As the Zork article mentions, the Zork source code was leaked way back in 1977, so the cat's been out of the bag for a long time. A link to the actual source code would be a nice thing to cite in that section. It is fascinating to read, and really beautiful code, quite understandable even if you don't know MDL, and practically a form of literature. I played the original Zork on MIT-DM and also the Infocom versions of course. Reading the source code is like seeing the behind-the-scenes underground rooms and passages at Disneyland! While I was playing Zork, I found a bug. First some context: when you're battling the troll, you can give things to him, and he eats them! Sometimes he drops his axe, and you can pick it up and kill him with it. He blocks the exits until you kill him. So I tried "give axe to troll," and he ate his own axe, then cowered in terror: "The troll, disarmed, cowers in terror, pleading for his life in the guttural tongue of the trolls." Not satisfied with that, I tried "give troll to troll", and he devoured himself: "The troll, who is remarkably coordinated, catches the troll and not having the most discriminating tastes, gleefully eats it." ...Except that I still could not get out of the exit, because every time I tried, it said "The troll fends you off with a menacing gesture." I figured there must be a troll flag that wasn't getting cleared when the troll devoured itself. And sure enough, I found it in the code, and it's called "TROLL-FLAG!-FLAG"! Here is an excerpt of the MDL troll code, where you can see the bug, where it should clear the troll flag when the troll devours itself, but doesn't (well that's how I would fix it!): <COND (<VERB? "THROW" "GIVE"> <COND (<VERB? "THROW"> <TELL "The troll, who is remarkably coordinated, catches the " 1 <ODESC2 <PRSO>>>) (<TELL "The troll, who is not overly proud, graciously accepts the gift">)> <COND (<==? <PRSO> <SFIND-OBJ "KNIFE">> <TELL "and being for the moment sated, throws it back. Fortunately, the troll has poor control, and the knife falls to the floor. He does not look pleased." ,LONG-TELL1> <TRO .T ,FIGHTBIT>) (<TELL "and not having the most discriminating tastes, gleefully eats it."> <REMOVE-OBJECT <PRSO>>)>) (<VERB? "TAKE" "MOVE"> <TELL "The troll spits in your face, saying \"Better luck next time.\"">) (<VERB? "MUNG"> <TELL "The troll laughs at your puny gesture.">)>) (<AND ,TROLL-FLAG!-FLAG <VERB? "HELLO">> <TELL "Unfortunately, the troll can't hear you.">)>>
In Inventing the Adventure Game (1984)
https://news.ycombinator.com/item?id=15080221 DonHopkins on Aug 23, 2017 | parent | context | favorite | on: The Enduring Legacy of Zork “The MIT machines were a nerd magnet for kids who had access to the ARPANET,” Zork is how and why I got on the ARPANET as a nerdy kid. And I wasn't even a Russian Spy! [1] Connecting to the ARPANET and getting an account on DM was an adventure in itself, almost like the beginning of the game itself. At the time there were no passwords or anything but security through obscurity on the ARPANET TIPs. And the MIT-AI Lab was kind enough to hand out free after-work-hours "TURIST Accounts" [2] to anyone who asked nicely with the right magic words. Some dude named Bruce who had a BBS (Bruce's NorthStar Horizon in Northern Virginia) told me how to do it step by step: 1) After 8PM EST, dial up the NBS TIP at (301)
Read the rest
948 3850 [3] at 300 baud, typed "E" to get the banner, then "@L 134" to connect to AI. (NCP host ids were only 8 bits, before TCP/IP's vast 32 bit address space!) 2) Make up an account name (I chose A2DEH). 3) Try to log in with that name, like ":LOGIN A2DEH". 4) If it asks for a password, somebody already has that account. In that case, think of another name and try again. (RMS's password was famously "RMS", after they forced everyone to use a password over his objections). 5) If it doesn't recognize your user name, it asks "Do you want to apply for an account?" Answer YES. When it asks "Why do you want to use the MIT-AI Lab's PDP-10?" answer "Learning LISP." (Which, as it turns out, is a long incremental process pursued over a lifetime, since there are so many implementations of LISP on the inside with names like MDL and JavaScript on the outside.) 6) When the account is approved, now all ITS systems know about you (ITS had network file and account sharing long before NFS and YP), and although you still can't log into DM directly, you could log into AI to learn LISP (and EMACS). 7) The MIT-AI Lab staff would kindly and patiently go out of their way to help you learn LISP and EMACS. (Many thanks to KMP for writing TEACH-LISP and answering my clueless tasteless questions like "how to you set the value of a variable?"). 8) To play Zork, dial up the TIP after 8PM and connect to DM with "@L 70". 9) Log in as "URANUS" with password "RINGS". 10) So as not to look suspicious (3 kids from all over the country [4] logged in as URANUS, URANU0, URANU1 at the same time all playing Zork or watching each other play), change your user name to your own with ":CHUNAME A2DEH". 11) Only two people could play ZORK at once, so hang out chatting with other people waiting to play ZORK, or spying (in a socially acceptable manner) on whoever's playing ZORK via ":OS PDL" (for "Output Spy Paul David Lebling"), or snooping around trying to find the Zork source code [5], which was well hidden. 12) There was no file security, so you could snoop around Marvin Minsky's home directory and hurt your brain trying to understand what appears to be line noise, but is actually the Universal Turing Machine he implemented in TECO. [6] 13) When somebody from USER-ACCOUNTS sends you a "nice private message" telling your they know what you're up to with ZORK, and that you should really learn LISP like you said you would because it's such a great language, instead of demanding you commit "seppuku" and "dumping you off the net and be done with it", you simply start learning LISP instead of acting like an entitled dick [7] by whining about how the people who gave you a free account that you bragged about in BYTE magazine are a bunch of communists and threatening to get some Proxmire type to start inquiring into its operations by seeing if your "Pentagon friends can upset them. Or perhaps some reporter friends. Or both., Or even the House Armed Services Committee." [1] https://www.youtube.com/watch?v=hVth6T3gMa0 [2] http://www.art.net/~hopkins/Don/text/tourist-policy.html [3] https://www.saildart.org/TIPS[P,DOC]3 [4] https://archive.org/details/getlamp-rgriffiths [5] https://github.com/itafroma/zork-mdl [6] https://news.ycombinator.com/item?id=13514918 [7] http://www.stormtiger.org/bob/humor/pournell/story.html kabdib on Aug 23, 2017 | next [–] Oh, you are A2DEH. "Hi" from 1979 or 1980, from ZEMON. I saw you online a lot, playing Zork on MIT-AI, and I probably :os'd a few of your sessions. I too was using the NBS TIP. Later, I actually worked at NBS and became "legal". I first learned Emacs at 300 baud; I'll spare you the whole story, but it involves a lot of assembly language and some soldering... DonHopkins on Aug 24, 2017 | parent | next [–] Of course I remember your cool UNAME standing out in all those :WHOJ's! ;) Do you remember Rob Griffiths, aka ROBG? I really enjoyed his full interview from Get Lamp -- he really nailed what it was like at that time, making a pilgrimage to 545 Tech Square as a 15-year-old kid! https://archive.org/details/getlamp-rgriffiths He and you are a couple of the people who I was thinking of when I described kids from all over the country hanging out chatting and spying and waiting to play Zork! kabdib on Aug 24, 2017 | root | parent | next [–] My best friend in high school went to MIT and I ... didn't (it's okay, the state college I wound up going to was about my academic speed, and I would have been toast in a couple of semesters at MIT). I also did a pilgrimage to MIT and saw the DEC-10s. Printed out a school project on the LGP, played around with a Lisp Machine for a few hours. MIT's friendly, unparanoid attitude towards people using their systems and basically just digging their technology was very formative in my career. Zork was the hook. I came to play adventure games, I stayed to learn Emacs and a bit about networking and PDP-10s, and LISP. I don't use PDP-10s anymore, but I work in the games industry, use Emacs every hour of my working day, and wish I could write more production LISP (though if you squint at Javascript just right...)
In Zork: The Great Inner Workings (2020)
Keith F. Lynch wrote up some interesting history of the net from his perspective: http://keithlynch.net/history.net.html MIT AI Lab Tourist Policy https://donhopkins.medium.com/mit-ai-lab-tourist-policy-f73b... I posted this earlier: https://news.ycombinator.com/item?id=15080221 “The MIT machines were a nerd magnet for kids who had access to the ARPANET,” Zork is how and why I got on the ARPANET as a nerdy kid. And I wasn't even a Russian Spy! [1] Connecting to the ARPANET and getting an account on DM was an adventure in itself, almost like the beginning of the game itself. At the time there were no passwords or anything but security through obscurity on the ARPANET TIPs. And the MIT-AI Lab was kind enough to hand out free after-work-hours "TURIST Accounts" [2] to anyone who asked nicely with the right magic words. Some dude named Bruce w
Read the rest
ho had a BBS (Bruce's NorthStar Horizon in Northern Virginia) told me how to do it step by step: 1) After 8PM EST, dial up the NBS TIP at (301) 948 3850 [3] at 300 baud, typed "E" to get the banner, then "@L 134" to connect to AI. (NCP host ids were only 8 bits, before TCP/IP's vast 32 bit address space!) 2) Make up an account name (I chose A2DEH). 3) Try to log in with that name, like ":LOGIN A2DEH". 4) If it asks for a password, somebody already has that account. In that case, think of another name and try again. (RMS's password was famously "RMS", after they forced everyone to use a password over his objections). 5) If it doesn't recognize your user name, it asks "Do you want to apply for an account?" Answer YES. When it asks "Why do you want to use the MIT-AI Lab's PDP-10?" answer "Learning LISP." (Which, as it turns out, is a long incremental process pursued over a lifetime, since there are so many implementations of LISP on the inside with names like MDL and JavaScript on the outside.) 6) When the account is approved, now all ITS systems know about you (ITS had network file and account sharing long before NFS and YP), and although you still can't log into DM directly, you could log into AI to learn LISP (and EMACS). 7) The MIT-AI Lab staff would kindly and patiently go out of their way to help you learn LISP and EMACS. (Many thanks to KMP for writing TEACH-LISP and answering my clueless tasteless questions like "how to you set the value of a variable?"). 8) To play Zork, dial up the TIP after 8PM and connect to DM with "@L 70". 9) Log in as "URANUS" with password "RINGS". 10) So as not to look suspicious (3 kids from all over the country [4] logged in as URANUS, URANU0, URANU1 at the same time all playing Zork or watching each other play), change your user name to your own with ":CHUNAME A2DEH". 11) Only two people could play ZORK at once, so hang out chatting with other people waiting to play ZORK, or spying (in a socially acceptable manner) on whoever's playing ZORK via ":OS PDL" (for "Output Spy Paul David Lebling"), or snooping around trying to find the Zork source code [5], which was well hidden. 12) There was no file security, so you could snoop around Marvin Minsky's home directory and hurt your brain trying to understand what appears to be line noise, but is actually the Universal Turing Machine he implemented in TECO. [6] 13) When somebody from USER-ACCOUNTS sends you a "nice private message" telling your they know what you're up to with ZORK, and that you should really learn LISP like you said you would because it's such a great language, instead of demanding you commit "seppuku" and "dumping you off the net and be done with it", you simply start learning LISP instead of acting like an entitled dick [7] by whining about how the people who gave you a free account that you bragged about in BYTE magazine are a bunch of communists and threatening to get some Proxmire type to start inquiring into its operations by seeing if your "Pentagon friends can upset them. Or perhaps some reporter friends. Or both., Or even the House Armed Services Committee." [1] https://www.youtube.com/watch?v=hVth6T3gMa0 [2] http://www.art.net/~hopkins/Don/text/tourist-policy.html [3] https://www.saildart.org/TIPS[P,DOC]3 [4] https://archive.org/details/getlamp-rgriffiths [5] https://github.com/itafroma/zork-mdl [6] https://news.ycombinator.com/item?id=13514918 [7] http://www.stormtiger.org/bob/humor/pournell/story.html
In Ask HN: What was it like to use BBS?
Zork was implemented in a dialect of LISP called "MDL" aka "MIT Design Language" aka "Muddle" [1], which ZIL was based on. Here's the original MDL source code, that people should study in school, which reads like an epic poem about heroic adventures such as Beowulf! [2] I'd love for some academic egghead literary critic type to deconstruct [3] the Zork MDL source code, like Chaim Gingold deconstructed SimCity for their PhD thesis. [4] [1] https://en.wikipedia.org/wiki/MDL_(programming_language) [2] https://github.com/itafroma/zork-mdl [3] http://www.fudco.com/chip/deconstr.html [4] https://pqdtopen.proquest.com/doc/1806122688.html?FMT=ABS http://pqdtopen.proquest.com/doc/1806122688.html?FMT=AI https://docs.google.com/document/d/1DNAvqvKsuLGih8dWz9feEjea...
In The Enduring Legacy of Zork
“The MIT machines were a nerd magnet for kids who had access to the ARPANET,” Zork is how and why I got on the ARPANET as a nerdy kid. And I wasn't even a Russian Spy! [1] Connecting to the ARPANET and getting an account on DM was an adventure in itself, almost like the beginning of the game itself. At the time there were no passwords or anything but security through obscurity on the ARPANET TIPs. And the MIT-AI Lab was kind enough to hand out free after-work-hours "TURIST Accounts" [2] to anyone who asked nicely with the right magic words. Some dude named Bruce who had a BBS (Bruce's NorthStar Horizon in Northern Virginia) told me how to do it step by step: 1) After 8PM EST, dial up the NBS TIP at (301) 948 3850 [3] at 300 baud, typed "E" to get the banner, then "@L 134" to connect to AI. (NCP host ids were only 8 bits, before TCP/IP's v
Read the rest
ast 32 bit address space!) 2) Make up an account name (I chose A2DEH). 3) Try to log in with that name, like ":LOGIN A2DEH". 4) If it asks for a password, somebody already has that account. In that case, think of another name and try again. (RMS's password was famously "RMS", after they forced everyone to use a password over his objections). 5) If it doesn't recognize your user name, it asks "Do you want to apply for an account?" Answer YES. When it asks "Why do you want to use the MIT-AI Lab's PDP-10?" answer "Learning LISP." (Which, as it turns out, is a long incremental process pursued over a lifetime, since there are so many implementations of LISP on the inside with names like MDL and JavaScript on the outside.) 6) When the account is approved, now all ITS systems know about you (ITS had network file and account sharing long before NFS and YP), and although you still can't log into DM directly, you could log into AI to learn LISP (and EMACS). 7) The MIT-AI Lab staff would kindly and patiently go out of their way to help you learn LISP and EMACS. (Many thanks to KMP for writing TEACH-LISP and answering my clueless tasteless questions like "how to you set the value of a variable?"). 8) To play Zork, dial up the TIP after 8PM and connect to DM with "@L 70". 9) Log in as "URANUS" with password "RINGS". 10) So as not to look suspicious (3 kids from all over the country [4] logged in as URANUS, URANU0, URANU1 at the same time all playing Zork or watching each other play), change your user name to your own with ":CHUNAME A2DEH". 11) Only two people could play ZORK at once, so hang out chatting with other people waiting to play ZORK, or spying (in a socially acceptable manner) on whoever's playing ZORK via ":OS PDL" (for "Output Spy Paul David Lebling"), or snooping around trying to find the Zork source code [5], which was well hidden. 12) There was no file security, so you could snoop around Marvin Minsky's home directory and hurt your brain trying to understand what appears to be line noise, but is actually the Universal Turing Machine he implemented in TECO. [6] 13) When somebody from USER-ACCOUNTS sends you a "nice private message" telling your they know what you're up to with ZORK, and that you should really learn LISP like you said you would because it's such a great language, instead of demanding you commit "seppuku" and "dumping you off the net and be done with it", you simply start learning LISP instead of acting like an entitled dick [7] by whining about how the people who gave you a free account that you bragged about in BYTE magazine are a bunch of communists and threatening to get some Proxmire type to start inquiring into its operations by seeing if your "Pentagon friends can upset them. Or perhaps some reporter friends. Or both., Or even the House Armed Services Committee." [1] https://www.youtube.com/watch?v=hVth6T3gMa0 [2] http://www.art.net/~hopkins/Don/text/tourist-policy.html [3] https://www.saildart.org/TIPS[P,DOC]3 [4] https://archive.org/details/getlamp-rgriffiths [5] https://github.com/itafroma/zork-mdl [6] https://news.ycombinator.com/item?id=13514918 [7] http://www.stormtiger.org/bob/humor/pournell/story.html
In The Enduring Legacy of Zork
You're welcome, and thanks for checking out the code! Since releasing the X11/TCL/Tk version for OLPC, we've stripped out the user interface, cleaned up and refactored and doxygenated the city simulator engine code into C++, and wrapped it with SWIG so it plugs into Python and other scripting languages. It's not as "authentic", but it has more comments and is easier to read than the old C code: https://github.com/SimHacker/micropolis/tree/master/Micropol... Here's a talk about it: HAR 2009 Lightning Talk Transcript: Constructionist Educational Open Source SimCity, by Don Hopkins http://micropolisonline.com/static/documentation/HAR2009Tran... I got hooked on computer games by playing Zork at MIT-DM, and it really blew my mind to finally be able to read the original Zork source code in MDL. Reading the source code takes you backstage behind
Read the rest
the scenes of a world you visited years ago, like the Disney's Keys to the Kingdom Tour! https://github.com/itafroma/zork-mdl
In Development content accidentally shipped on a DOS CD-ROM game from 1993
The problem with trying to map Zork by dropping objects around, is that the damn thief comes along and picks them up. (Think of the thief as an incremental garbage collector, but not conservative because he also steals objects from your inventory that are still in use!) https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222... ; "SUBTITLE A SEEDY LOOKING GENTLEMAN..." So if you want to make a map by dropping objects, be sure to kill the thief first, otherwise he will rob you blind and take all the objects you dropped. (<NOT .DEAD?> <COND (<MEMQ .STILL <HOBJS .HACK>> <PUT .HACK ,HOBJS <SPLICE-OUT .STILL <HOBJS .HACK>>> <PUT .HOBJ ,OCONTENTS (.STILL)> <PUT .STILL ,OCAN .HOBJ>)> <PUT .HACK ,HOBJS <SET HH <ROB-ROOM .RM .HH 100>>>
Read the rest
<PUT .HACK ,HOBJS <SET HH <ROB-ADV .WIN .HH>>> <PUT .HACK ,HFLAG T> <COND (<AND <N==? .OBJT .HH> <NOT .HERE?>> <TELL "A seedy-looking individual with a large bag just wandered through the room. On the way through, he quietly abstracted all valuables from the room and from your possession, mumbling something about \"Doing unto others before..\"" ,LONG-TELL1>) (.HERE? <SNARF-OBJECT .HOBJ .STILL> <COND (<N==? .OBJT .HH> <TELL "The other occupant just left, still carrying his large bag. You may not have noticed that he robbed you blind first.">) (<TELL "The other occupant (he of the large bag), finding nothing of value, left disgusted.">)> <REMOVE-OBJECT .HOBJ> <SET HERE? <>>) But first be sure to hand him (or let him steal) the jewel encrusted egg before you kill him, since he's the only one with nimble enough fingers to open the egg without breaking it, to get to the clockwork canary inside. Once you retrieve the opened egg from his lair, take the canary to the tree and wind it, and you will receive a beautiful brass bauble! <SET EGG <SFIND-OBJ "EGG">> <MAPF <> <FUNCTION (X) #DECL ((X) OBJECT) <COND (<G? <OTVAL .X> 0> <PUT .HACK ,HOBJS <SET HH <SPLICE-OUT .X .HH>>> <INSERT-OBJECT .X .RM> <COND (<==? .X .EGG> <SETG EGG-SOLVE!-FLAG T> <TRO .X ,OPENBIT>)>)>> https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222... <OBJECT ["EGG"] ["BIRDS" "ENCRU"] "jewel-encrusted egg" <+ ,OVISON ,TAKEBIT ,CONTBIT> EGG-OBJECT (<GET-OBJ "GCANA">) (OFVAL 5 OTVAL 5 ODESC1 "There is a jewel-encrusted egg here." OCAPAC 6 ODESCO "In the bird's nest is a large egg encrusted with precious jewels, apparently scavenged somewhere by a childless songbird. The egg is covered with fine gold inlay, and ornamented in lapis lazuli and mother-of-pearl. Unlike most eggs, this one is hinged and has a delicate looking clasp holding it closed. The egg appears extremely fragile.")> <OBJECT ["BEGG" "EGG"] ["BROKE" "BIRDS" "ENCRU"] "broken jewel-encrusted egg" <+ ,OVISON ,TAKEBIT ,CONTBIT ,OPENBIT> <> (<GET-OBJ "BCANA">) (OCAPAC 6 ODESC1 "There is a somewhat ruined egg here.")> <OBJECT ["GCANA" "CANAR"] ["CLOCK" "MECHA" "GOLD" "GOLDE"] "clockwork canary" <+ ,OVISON ,TAKEBIT> CANARY-OBJECT () (OFVAL 6 OTVAL 2 ODESC1 "There is golden clockwork canary here." ODESCO "There is a golden clockwork canary nestled in the egg. It has ruby eyes and a silver beak. Through a crystal window below its left wing you can see intricate machinery inside. It appears to have wound down.")> <OBJECT ["BCANA" "CANAR"] ["BROKE" "CLOCK" "MECHA" "GOLD" "GOLDE"] "broken clockwork canary" <+ ,OVISON ,TAKEBIT> CANARY-OBJECT () (ODESC1 "There is a non-functional canary here." ODESCO https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222... <DEFINE EGG-OBJECT ("AUX" (BEGG <SFIND-OBJ "BEGG">) (EGG <SFIND-OBJ "EGG">)) #DECL ((BEGG) OBJECT) <COND (<AND <VERB? "OPEN"> <==? <PRSO> .EGG>> <COND (<TRNN <PRSO> ,OPENBIT> <TELL "The egg is already open.">) (<EMPTY? <PRSI>> <TELL "There is no obvious way to open the egg.">) (<==? <PRSI> <SFIND-OBJ "HANDS">> <TELL "I doubt you could do that without damaging it.">) (<TRNN <PRSI> <+ ,WEAPONBIT ,TOOLBIT>> <TELL "The egg is now open, but the clumsiness of your attempt has seriously compromised its esthetic appeal."> <BAD-EGG .BEGG>) (<TRNN <PRSO> ,FIGHTBIT> <TELL "Not to say that using the " 1 <ODESC2 <PRSI>> " isn't original too...">) (<TELL "The concept of using a " 1 <ODESC2 <PRSI>> " is certainly original."> <TRO <PRSO> ,FIGHTBIT>)>) (<VERB? "OPEN" "POKE" "MUNG"> <TELL "Your rather indelicate handling of the egg has caused it some damage. The egg is now open."> <BAD-EGG .BEGG>)>> https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222... <DEFINE CANARY-OBJECT ("AUX" (HERE ,HERE) (TREE <SFIND-ROOM "TREE">)) #DECL ((HERE TREE) ROOM) <COND (<VERB? "WIND"> <COND (<==? <PRSO> <SFIND-OBJ "CANAR">> <COND (<AND <NOT ,SING-SONG!-FLAG> <OR <MEMBER "FORE" <STRINGP <RID .HERE>>> <==? .HERE .TREE>>> <TELL ,OPERA> <SETG SING-SONG!-FLAG T> <INSERT-OBJECT <SFIND-OBJ "BAUBL"> <COND (<==? .HERE .TREE> <SFIND-ROOM "FORE3">) (.HERE)>>) (<TELL "The canary chirps blithely, if somewhat tinnily, for a short time.">)>) (<TELL "There is an unpleasant grinding noise from inside the canary.">)>)>> https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222... <PSETG OPERA "The canary chirps, slightly off-key, an aria from a forgotten opera. From out of the greenery flies a lovely songbird. It perches on a limb just over your head and opens its beak to sing. As it does so a beautiful brass bauble drops from its mouth, bounces off the top of your head, and lands glimmering in the grass. As the canary winds down, the songbird flies away.">
In Eaten by a Grue: podcast on Infocom games, text adventures and interactive fiction
The original Zork source code in MDL which is available here: http://retro.co.za/adventure/zork-mdl/ It's also here on github: https://github.com/itafroma/zork-mdl It is fascinating to read, and really beautiful code, quite understandable even if you don't know MDL, and practically a form of literature. I played the original Zork on MIT-DM and also the Infocom versions of course. Reading the source code is like seeing the behind-the-scenes underground rooms and passages at Disneyland! While I was playing Zork, I found a bug. First some context: when you're battling the troll, you can give things to him, and he eats them! Sometimes he drops his axe, and you can pick it up and kill him with it. He blocks the exits until you kill him. So I tried "give axe to troll," and he ate his own axe, then cowered in terror: "The troll, disarmed, cowers
Read the rest
in terror, pleading for his life in the guttural tongue of the trolls." Not satisfied with that, I tried "give troll to troll", and he devoured himself: "The troll, who is remarkably coordinated, catches the troll and not having the most discriminating tastes, gleefully eats it." ...Except that I still could not get out of the exit, because every time I tried, it said "The troll fends you off with a menacing gesture." I figured there must be a troll flag that wasn't getting cleared when the troll devoured itself. And sure enough, I found it in the code, and it's called "TROLL-FLAG!-FLAG"! Here is an excerpt of the MDL troll code, where you can see the bug, where it should clear the troll flag when the troll devours itself, but doesn't (well that's how I would fix it!): https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222... <COND (<VERB? "THROW" "GIVE"> <COND (<VERB? "THROW"> <TELL "The troll, who is remarkably coordinated, catches the " 1 <ODESC2 <PRSO>>>) (<TELL "The troll, who is not overly proud, graciously accepts the gift">)> <COND (<==? <PRSO> <SFIND-OBJ "KNIFE">> <TELL "and being for the moment sated, throws it back. Fortunately, the troll has poor control, and the knife falls to the floor. He does not look pleased." ,LONG-TELL1> <TRO .T ,FIGHTBIT>) (<TELL "and not having the most discriminating tastes, gleefully eats it."> <REMOVE-OBJECT <PRSO>>)>) (<VERB? "TAKE" "MOVE"> <TELL "The troll spits in your face, saying \"Better luck next time.\"">) (<VERB? "MUNG"> <TELL "The troll laughs at your puny gesture.">)>) (<AND ,TROLL-FLAG!-FLAG <VERB? "HELLO">> <TELL "Unfortunately, the troll can't hear you.">)>> The troll bugs are also in Zork I! Here's a newspaper article from January 8 1985 about "Infocom Glitches Bug Game Players"! http://articles.sun-sentinel.com/1985-01-18/features/8501020... And here's another article from March 29, 1985: "Zork I Fuddles Mental Health With Choices": http://articles.sun-sentinel.com/1985-03-29/features/8501120...
In Eaten by a Grue: podcast on Infocom games, text adventures and interactive fiction

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.