Revision 58 (Original Source)
authorhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 06:17:21 +0000 (02:17 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 06:17:21 +0000 (02:17 -0400)
12 files changed:
README.md [new file with mode: 0644]
earth.zil [new file with mode: 0644]
globals.zil [new file with mode: 0644]
heart.zil [new file with mode: 0644]
misc.zil [new file with mode: 0644]
parser.zil [new file with mode: 0644]
s4.zil [new file with mode: 0644]
s4.zip [new file with mode: 0644]
syntax.zil [new file with mode: 0644]
unearth.zil [new file with mode: 0644]
verbs.zil [new file with mode: 0644]
vogon.zil [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..23b46f5
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# hitchhikersguide
diff --git a/earth.zil b/earth.zil
new file mode 100644 (file)
index 0000000..fed0ce1
--- /dev/null
+++ b/earth.zil
@@ -0,0 +1,2454 @@
+"EARTH for
+                 THE HITCHHIKER'S GUIDE TO THE GALAXY
+       (c) Copyright 1984 Infocom, Inc.  All Rights Reserved."
+
+<OBJECT HOME
+       (IN LOCAL-GLOBALS)
+       (DESC "your home")
+       (SYNONYM HOME)
+       (ADJECTIVE MY YOUR)
+       (FLAGS NARTICLEBIT)
+       (ACTION HOME-F)>
+
+<ROUTINE HOME-F ()
+        <COND (<AND ,HOUSE-DEMOLISHED
+                    <VERB? ENJOY>>
+               <TELL
+,ZEN " You can't enjoy a " D ,RUBBLE " properly till it's at least a hundred
+years old. Also, you are haunted by the tragic vision of your favourite teapot
+lying shattered among the dust.|
+There is also the matter of all your clothes." CR>)
+              (<VERB? THROUGH WALK-TO BOARD>
+               <COND (<EQUAL? ,HERE ,FRONT-OF-HOUSE ,FRONT-PORCH>
+                      <DO-WALK ,P?NORTH>)
+                     (<EQUAL? ,HERE ,BEDROOM>
+                      <TELL ,LOOK-AROUND CR>)
+                     (T
+                      <V-WALK-AROUND>)>)
+              (<VERB? LEAVE EXIT DISEMBARK>
+               <COND (<EQUAL? ,HERE ,FRONT-PORCH>
+                      <DO-WALK ,P?SOUTH>)
+                     (<EQUAL? ,HERE ,BEDROOM>
+                      <V-WALK-AROUND>)
+                     (T
+                      <TELL ,LOOK-AROUND CR>)>)
+              (<AND <VERB? LIE-DOWN>
+                    <EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                    ,IN-FRONT-FLAG>
+               <PERFORM ,V?LIE-DOWN ,GROUND>
+               <RTRUE>)
+              (<AND <VERB? EXAMINE>
+                    ,HOUSE-DEMOLISHED>
+               <TELL "It is now a " D ,RUBBLE "." CR>)
+              (<EQUAL? ,IDENTITY-FLAG ,FORD> ;"since DESC is YOUR HOME"
+               <UNIMPORTANT-THING-F>)>>
+
+<OBJECT HOUSE
+       (IN LOCAL-GLOBALS)
+       (DESC "it")
+       (SYNONYM HOUSE)
+       (ADJECTIVE MY YOUR)
+       (FLAGS NARTICLEBIT)
+       (ACTION HOUSE-F)>
+
+<ROUTINE HOUSE-F ()
+        <COND (<PRSO? ,HOUSE>
+               <PERFORM ,PRSA ,HOME ,PRSI>
+               <RTRUE>)
+              (T
+               <PERFORM ,PRSA ,PRSO ,HOME>
+               <RTRUE>)>>
+
+<OBJECT RUBBLE
+       (IN LOCAL-GLOBALS)
+       (DESC "pile of rubble")
+       (SYNONYM PILE RUBBLE DEBRIS)
+       (FLAGS NDESCBIT)
+       (ACTION HOME-F)>
+
+<ROUTINE I-HOUSEWRECK ()
+        <COND (<EQUAL? ,HERE ,BEDROOM ,FRONT-PORCH>
+               <TELL CR
+"Astoundingly, a " D ,BULLDOZER " pokes through your wall. However, you have
+no time for surprise because the ceiling is collapsing on you as">
+               <BETTER-LUCK>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE BETTER-LUCK ()
+        <TELL
+" your home is unexpectedly demolished to make way for a new bypass. You are
+seriously injured in the process, but on your way to the hospital">
+        <MAKE-WAY-FOR>
+        <CRLF>
+        <COND (<NOT <FSET? ,BEDROOM ,ONBIT>>
+               <TELL "Next time, try turning on the light." CR>)
+              (<AND <NOT <FSET? ,GOWN ,OPENBIT>>
+                    ,HEADACHE> 
+               <TELL
+"Too bad you never found an aspirin for your hangover." CR>)
+              (T
+               <TELL "Better luck next life." CR>)>
+        <FINISH>>
+
+<GLOBAL HOUSE-DEMOLISHED <>>
+
+<GLOBAL HEADACHE T>
+
+<GLOBAL SLEEVE-TIED <>>
+
+<OBJECT HANGOVER
+       (IN GLOBAL-OBJECTS)
+       (DESC "splitting headache")
+       (SYNONYM HEADAC HANGOV THROBB)
+       (ADJECTIVE SPLITT BIG BLINDI)
+       (ACTION HANGOVER-F)>
+
+<ROUTINE HANGOVER-F ()
+        <COND (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,HANGOVER>>
+               <RFALSE>)
+              (<AND <NOT ,HEADACHE>
+                    <NOT <EQUAL? ,IDENTITY-FLAG ,ZAPHOD>>>
+               <TELL "You can't feel any">
+               <COND (<EQUAL? ,HANGOVER ,PRSO>
+                      <PRSO-PRINT>)
+                     (T
+                      <PRSI-PRINT>)>
+               <TELL " here." CR>)
+              (<VERB? EXAMINE>
+               <V-DIAGNOSE>)
+              (<VERB? GIVE THROW DROP>
+               <V-COUNT>)>>
+
+<ROOM BEDROOM
+      (IN ROOMS)
+      (SYNONYM TRAVEL)
+      (ADJECTIVE TIME)
+      (DESC "Bedroom")
+      (SOUTH PER BEDROOM-EXIT-F)
+      (OUT PER BEDROOM-EXIT-F)
+      (DOWN PER BEDROOM-EXIT-F)
+      (FLAGS RLANDBIT)
+      (GLOBAL HOUSE HOME GLOBAL-BED BULLDOZER WINDOW STAIRS
+                     BEDROOM-DOOR THIRD-PLANET)
+      (PSEUDO "WATER" UNIMPORTANT-THING-F "BEDROO" GLOBAL-ROOM-F)
+      (ACTION BEDROOM-F)>
+
+<ROUTINE BEDROOM-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The bedroom is a mess.|
+It is a small bedroom with a faded carpet and old wallpaper. There is a
+washbasin, a chair">
+               <COND (<FSET? ,GOWN ,NDESCBIT>
+                      <TELL " with a tatty dressing gown slung over it">)>
+               <TELL
+", and a window with the curtains drawn. Near the exit leading south is a
+phone." CR>)>>
+
+<ROUTINE BEDROOM-EXIT-F ()
+        <COND (<NOT <FSET? ,BEDROOM-DOOR ,OPENBIT>>
+               <TELL "The door is closed." CR>
+               <SETG P-IT-OBJECT ,BEDROOM-DOOR>
+               <RFALSE>)
+              (,HEADACHE
+               <TELL
+"You miss the doorway by a good eighteen inches. The wall jostles you
+rather rudely." CR>
+               <RFALSE>)
+              (<FSET? ,BULLDOZER ,INVISIBLE>
+               <TELL "You make your way down to the front porch." CR CR>)
+              (T
+               <TELL "You rush down the stairs in panic." CR CR>)>
+        <FCLEAR ,LIGHT ,LIGHTBIT>
+        ,FRONT-PORCH>
+
+<OBJECT PHONE
+       (IN BEDROOM)
+       (DESC "telephone")
+       (SYNONYM PHONE TELEPH RECEIV)
+       (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT)
+       (ACTION PHONE-F)>
+
+<ROUTINE PHONE-F ()
+        <COND (<VERB? TAKE>
+               <COND (<FSET? ,PHONE ,TOUCHBIT>
+                      <PERFORM ,V?CALL ,DAIS>
+                      <RTRUE>)
+                     (T
+                      <FSET ,PHONE ,TOUCHBIT>
+                      <TELL "You pick up the receiver." ,DIALLING-TONE>
+                      <COND (<FSET? ,TOOTHBRUSH ,TOUCHBIT>
+                             <TWO-TREES>)>
+                      <CRLF>)>)
+              (<VERB? REPLY>
+               <TELL "It isn't ringing." CR>)>>
+
+<OBJECT BEDROOM-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (FLAGS DOORBIT OPENBIT NDESCBIT)>
+
+<OBJECT GLOBAL-BED
+       (IN LOCAL-GLOBALS)
+       (DESC "bed")
+       (SYNONYM BED)
+       (FLAGS VEHBIT)
+       (ACTION GLOBAL-BED-F)>
+
+<ROUTINE GLOBAL-BED-F ()
+        <COND (<EQUAL? ,GLOBAL-BED ,PRSO>
+               <PERFORM ,PRSA ,BED ,PRSI>
+               <RTRUE>)
+              (T
+               <PERFORM ,PRSA ,PRSO ,BED>
+               <RTRUE>)>>
+
+<OBJECT BED
+       (IN BEDROOM)
+       (DESC "bed")
+       (SYNONYM BED)
+       (FLAGS VEHBIT CONTBIT SURFACEBIT SEARCHBIT OPENBIT NDESCBIT)
+       (ACTION BED-F)>
+
+<ROUTINE BED-F ("OPTIONAL" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-BEG>
+               <COND (<AND <VERB? TAKE>
+                           <FSET? ,PRSO ,TAKEBIT>
+                           <NOT <IN? ,PRSO ,BED>>
+                           <NOT <HELD? ,PRSO>>>
+                      <TELL "You can't reach it from the bed.">
+                      <COND (,HEADACHE
+                             <TELL " The effort almost kills you.">)>
+                      <CRLF>)
+                     (<AND <VERB? OPEN LOOK-INSIDE>
+                           <PRSO? ,CURTAINS>>
+                      <PERFORM ,V?TAKE ,PHONE>
+                      <SETG P-IT-OBJECT ,CURTAINS>
+                      <RTRUE>)
+                     (<AND <VERB? OPEN CLOSE>
+                           <PRSO? ,BEDROOM-DOOR>>
+                      <PERFORM ,V?TAKE ,PHONE>
+                      <SETG P-IT-OBJECT ,BEDROOM-DOOR>
+                      <RTRUE>)
+                     (<VERB? WALK>
+                      <OUT-OF-FIRST ,BED>)>)
+              (.RARG
+               <RFALSE>)
+              (<AND <VERB? DISEMBARK>
+                    ,HEADACHE
+                    <EQUAL? <LOC ,PROTAGONIST> ,BED>>
+               <MOVE ,PROTAGONIST ,HERE>
+               <SETG LYING-DOWN <>>
+               <TELL
+"Very difficult, but you manage it. The room is still spinning.
+It dips and sways a little." CR>)
+              (<VERB? LOOK-UNDER>
+               <MOVE ,STUFF-UNDER-BED ,HERE>
+               <TELL
+"There's nothing there. Well, there are a few soiled handkerchiefs, a book you
+thought you'd lost, a couple of foreign coins, and something else which can't
+be fully described in a family game, but nothing you'd actually want." CR>)
+              (<AND <VERB? OPEN CLOSE>
+                    <PRSO? ,BED>>
+               <TELL-ME-HOW>)>>
+
+<OBJECT STUFF-UNDER-BED
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "it")
+       (SYNONYM BOOK COIN HANDKE COINS)
+       (ADJECTIVE SOILED FOREIG)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<OBJECT CURTAINS
+       (IN BEDROOM)
+       (DESC "your curtains")
+       (SYNONYM CURTAI SHADE SHADES)
+       (ADJECTIVE YOUR)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION CURTAINS-F)>
+
+<ROUTINE CURTAINS-F ()
+        <COND (<VERB? OPEN LOOK-INSIDE>
+               <FCLEAR ,BULLDOZER ,INVISIBLE>
+               <TELL
+"As you part " D ,CURTAINS " you see that i" ,NICE-DAY ", and a large yellow "
+D ,BULLDOZER " is advancing on " D ,HOME "." CR>)>>
+
+<OBJECT GOWN
+       (IN BEDROOM)
+       (DESC "your gown")
+       (LDESC "Your gown is here.")
+       (SYNONYM GOWN POCKET ROBE LOOP)
+       (ADJECTIVE MY YOUR DRESSI TATTY FADED BATTER)
+        (FLAGS
+        WEARBIT TRYTAKEBIT TAKEBIT CONTBIT NDESCBIT NARTICLEBIT SEARCHBIT)
+       (SIZE 15)
+       (CAPACITY 14)
+       (ACTION GOWN-F)>
+
+<ROUTINE GOWN-F ()
+        <COND (<AND <VERB? OPEN CLOSE>
+                    <NOT <FSET? ,GOWN ,WORNBIT>>>
+               <TELL
+"It's hard to open or close the pocket unless you're wearing the gown." CR>)
+              (<VERB? EXAMINE>
+               <TELL "The dressing gown is faded and battered, and is
+clearly a garment which has seen better decades. It has a pocket which is ">
+               <COND (<FSET? ,GOWN ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL "closed">)>
+               <COND (,GOWN-HUNG
+                      <TELL ". It is hanging from a " D ,HOOK ".">)
+                     (T
+                      <TELL ", and a small loop at the back of the collar.">)>
+               <COND (,SLEEVE-TIED
+                      <TELL " The sleeves are tied closed.">)>
+               <CRLF>)
+              (<AND <VERB? TAKE>
+                    <EQUAL? ,GOWN ,PRSO>
+                    ,HEADACHE>
+               <FCLEAR ,GOWN ,TRYTAKEBIT>
+               <FCLEAR ,GOWN ,NDESCBIT>
+               <MOVE ,GOWN ,PROTAGONIST>
+               <TELL
+"Luckily, this is large enough for you to get hold of. You notice something
+in the pocket." CR>)
+              (<AND <VERB? WEAR>
+                    ,SLEEVE-TIED>
+               <TELL "You'll have to untie the sleeve first." CR>)
+              (<VERB? TIE UNTIE>
+               <PERFORM ,PRSA ,SLEEVES>
+               <RTRUE>)>>
+
+<OBJECT SLEEVES
+       (IN GLOBAL-OBJECTS)
+       (DESC "sleeve")
+       (SYNONYM SLEEVE)
+       (ACTION SLEEVES-F)>
+
+<ROUTINE SLEEVES-F ()
+        <COND (<NOT <VISIBLE? ,GOWN>>
+               <CANT-SEE ,SLEEVES>)
+              (<VERB? WEAR TAKE>
+               <PERFORM ,PRSA ,GOWN>
+               <RTRUE>)
+              (<VERB? TIE CLOSE>
+               <SETG PRSO ,GOWN>
+               <COND (<IDROP>
+                      <RTRUE>)
+                     (,SLEEVE-TIED
+                      <TELL "It is." CR>)
+                     (T
+                      <SETG SLEEVE-TIED T>
+                      <TELL "The sleeves are now tied closed." CR>)>)
+              (<VERB? UNTIE OPEN>
+               <COND (,SLEEVE-TIED
+                      <SETG SLEEVE-TIED <>>
+                      <TELL "Untied." CR>)
+                     (T
+                      <TELL "It isn't tied!" CR>)>)>>
+
+<ROUTINE TWO-TREES ()
+        <SETG AWAITING-REPLY 9>
+        <ENABLE <QUEUE I-REPLY 2>>
+        <TELL
+" Shouldn't you be taking more interest in events in the world around you?
+While you've got it...?">>
+
+<OBJECT THING
+       (IN GOWN)
+       (DESC "thing your aunt gave you which you don't know what it is")
+       (SYNONYM THING GIFT)
+       (ADJECTIVE AUNT\'S)
+       (FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT)
+       (SIZE 6)
+       (CAPACITY 90)
+       (ACTION THING-F)>
+
+<ROUTINE THING-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"Apart from a label on the bottom saying \"Made in Ibiza\" it furnishes you
+with no clue as to its purpose, if indeed it has one. You are surprised to see
+it because you thought you'd thrown it away. Like most gifts from your aunt,"
+,GET-RID CR>)
+              (<AND <VERB? DROP>
+                    <NOT <EQUAL? ,HERE ,MAZE ,ACCESS-SPACE>>>
+               <MOVE ,THING ,HERE>
+               <TELL
+"It falls to the ground with a light \"thunk.\" It doesn't do anything
+else at all." CR>)
+              (<VERB? CLOSE>
+               <TELL
+"Come to think of it, you vaguely remember an instruction booklet with
+directions for that. You never read it and lost it months ago." CR>)>>
+
+<ROUTINE I-THING ()
+        <ENABLE <QUEUE I-THING <+ 4 <RANDOM 4>>>>
+        <COND (<OR <NOT <EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
+                   <AND <EQUAL? ,HERE ,ENGINE-ROOM>
+                        <L? ,LOOK-COUNTER 3>>
+                   <EQUAL? ,HERE ,DARK ,ACCESS-SPACE ,MAZE>
+                   <VISIBLE? ,THING>
+                   <HELD? ,THING ,PROTAGONIST>
+                   <IN? ,FLEET ,HERE>>
+               <RFALSE>)>
+        <COND (<PROB 40>
+               <MOVE ,THING ,HERE>)
+              (<AND <FSET? ,GOWN ,WORNBIT>
+                    <FSET? ,GOWN ,OPENBIT>
+                    <PROB 65>>
+               <MOVE ,THING ,GOWN>)
+              (T
+               <MOVE ,THING ,PROTAGONIST>)>
+        <RFALSE>>
+
+<OBJECT POCKET-FLUFF
+       (IN GOWN)
+       (DESC "pocket fluff")
+       (SYNONYM FLUFF LINT)
+       (ADJECTIVE POCKET)
+       (FLAGS TAKEBIT NARTICLEBIT)
+       (SIZE 1)
+       (GENERIC POCKET-FLUFF)>
+
+<OBJECT TABLET
+       (IN GOWN)
+       (DESC "buffered analgesic")
+       (SYNONYM ANALGE TABLET ASPIRI PILL)
+       (ADJECTIVE LARGE BUFFER)
+       (FLAGS TAKEBIT EATBIT)
+        (SIZE 2)
+       (ACTION TABLET-F)>
+
+<ROUTINE TABLET-F ()
+        <COND (<VERB? EAT TAKE DRINK> ;"SWALLOW is synonym of DRINK"
+               <MOVE ,TABLET ,LOCAL-GLOBALS>
+               <FCLEAR ,SCREWDRIVER ,TRYTAKEBIT>
+               <FCLEAR ,TOOTHBRUSH ,TRYTAKEBIT>
+               <SETG HEADACHE <>>
+               <SETG SCORE <+ ,SCORE 10>>
+               <TELL
+"You swallow the tablet. After a few seconds the room begins to calm
+down and behave in an orderly manner. Your terrible headache goes." CR>)>>
+
+<OBJECT SINK
+       (IN BEDROOM)
+       (DESC "it")
+       (SYNONYM BASIN WASHBA SINK)
+       (ADJECTIVE WASH)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<OBJECT BEDROOM-FURNISHINGS
+       (IN BEDROOM)
+       (DESC "it")
+       (SYNONYM CARPET WALLPA PAPER CHAIR)
+       (ADJECTIVE WALL FADED OLD)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<ROOM FRONT-PORCH
+      (IN ROOMS)
+      (SYNONYM BEAM BEAMS)
+      (ADJECTIVE MATTER TRANSF)
+      (DESC "Front Porch")
+      (LDESC
+"This is the enclosed front porch of your home. Your front garden lies to
+the south, and you can re-enter your home to the north.")
+      (UP TO BEDROOM)
+      (NORTH TO BEDROOM)
+      (SOUTH PER CLOTHES-EXIT-F)
+      (OUT PER CLOTHES-EXIT-F)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "DOORMA" UNIMPORTANT-THING-F "MAT" UNIMPORTANT-THING-F)
+      (GLOBAL HOUSE HOME STAIRS THIRD-PLANET BEDROOM-DOOR)>
+
+<ROUTINE CLOTHES-EXIT-F ()
+        <COND (<FSET? ,GOWN ,WORNBIT>
+               ,FRONT-OF-HOUSE)
+              (T
+               <SETG AWAITING-REPLY 10>
+               <ENABLE <QUEUE I-REPLY 2>>
+               <TELL ,ARRESTED CR>
+               <RFALSE>)>>
+
+<OBJECT MAIL
+       (IN FRONT-PORCH)
+       (DESC "loose pile of junk mail")
+       (FDESC "On the doormat is a pile of junk mail.")
+       (SYNONYM ORDER MAIL PILE LETTER)
+       (ADJECTIVE DEMOLI JUNK MY OFFICI LOOSE)
+       (FLAGS TAKEBIT READBIT TRYTAKEBIT)
+       (SIZE 4)
+       (TEXT
+"There are many pieces of mail. Most are from some computer company called
+Infocom which wants you to buy their games. Hidden underneath is an official
+letter from the local council, dated some two years ago and inexplicably not
+delivered till now, explaining that a demolition order has been served on your
+home. The date of demolition is today's date.")
+       (ACTION MAIL-F)>
+
+<ROUTINE MAIL-F ()
+        <COND (<AND <VERB? TAKE>
+                    <NOT <FSET? ,MAIL ,TOUCHBIT>>>
+               <FSET ,MAIL ,TOUCHBIT>
+               <FCLEAR ,MAIL ,TRYTAKEBIT>
+               <MOVE ,MAIL ,PROTAGONIST>
+               <TELL "You gather up the pile of mail." CR>)
+              (<VERB? OPEN>
+               <PERFORM ,V?READ ,MAIL>
+               <RTRUE>)>>
+
+<ROOM FRONT-OF-HOUSE
+      (IN ROOMS)
+      (SYNONYM WOONBE)
+      (ADJECTIVE GALAXI)
+      (DESC "Front of House")
+      (NORTH PER HOUSE-ENTER-F)
+      (SOUTH TO COUNTRY-LANE)
+      (NE TO BACK-OF-HOUSE)
+      (NW TO BACK-OF-HOUSE)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL HOUSE HOME BULLDOZER CONVERSATION THIRD-PLANET RUBBLE)
+      (PSEUDO "TREE" TREE-PSEUDO)
+      (ACTION FRONT-OF-HOUSE-F)>
+
+<ROUTINE HOUSE-ENTER-F ()
+        <COND (,HOUSE-DEMOLISHED
+               <TELL "You can't enter a " D ,RUBBLE "." CR>
+               <RFALSE>)
+              (<EQUAL? ,IDENTITY-FLAG ,FORD>
+               <COND (<NOT <VERB? THROUGH>>
+                      <TELL "Enter the house? ">)>
+               <PRIVATE "Arthur">
+               <RFALSE>)
+              (<NOT ,PROSSER-LYING>
+               <TELL "The " D ,BULLDOZER>
+               <JIGS-UP
+", which you may have noticed outside, just pushed your home down
+on top of you.">
+               <RFALSE>)
+              (T
+               <ENABLE <QUEUE I-HOUSEWRECK 5>>
+               ,FRONT-PORCH)>>
+
+<ROUTINE FRONT-OF-HOUSE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <FCLEAR ,BULLDOZER ,INVISIBLE>
+               <COND (<IN? ,DOG ,COUNTRY-LANE>
+                      <COND (<NOT ,DOG-FED>
+                             <I-DOG>)>
+                      <ENABLE <QUEUE I-VOGONS 3>>
+                      <TELL "You reach the site of what was ">
+                      <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                             <TELL "Arthur's">)
+                            (T
+                             <TELL "your">)>
+                      <TELL
+" home. It is now a " D ,RUBBLE ". " D ,PROSSER " looks sheepishly
+triumphant, a trick few people can do, as it requires a lot of
+technically complex deltoid muscle work." CR CR>)
+                     (<AND <NOT <EQUAL? ,IDENTITY-FLAG ,FORD>>
+                           <NOT ,PROSSER-LYING>>
+                      <ENABLE <QUEUE I-BULLDOZER -1>>
+                      <RFALSE>)>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                           <NOT <FSET? ,FRONT-OF-HOUSE ,NDESCBIT>>>
+                      <FSET ,BEER ,NDESCBIT>
+                      <SETG DRUNK-LEVEL 0>
+                      <FSET ,ARTHUR ,NDESCBIT>
+                      <FSET ,FRONT-OF-HOUSE ,NDESCBIT>
+                      <TELL
+"Before you is the house of your friend, " D ,ARTHUR ", who is lying in front
+of a " D ,BULLDOZER "; you have no idea why. You have no idea about most things
+about Arthur, even why you regard him as a friend, but you do, and must
+therefore return his towel before you leave.">)
+                     (T
+                      <COND (,HOUSE-DEMOLISHED
+                             <TELL "There is a huge " D ,RUBBLE>)
+                            (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                             <TELL "Arthur's house is">)
+                            (T
+                             <TELL "You can enter your home">)>
+                      <TELL
+" to the north. A path leads around it to the northeast and northwest,
+and a country lane is visible to the south.">)>
+               <COND (<AND <NOT <FSET? ,FRONT-OF-HOUSE ,NDESCBIT>>
+                           <EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
+                      <FSET ,FRONT-OF-HOUSE ,NDESCBIT>
+                      <TELL
+" All that lies between your home and the huge yellow " D ,BULLDOZER " bearing
+down on it is a few yards of mud.">)>
+               <CRLF> <CRLF>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <FSET? ,ARTHUR ,NDESCBIT>>
+               <FCLEAR ,ARTHUR ,NDESCBIT>
+               <RFALSE>)>>
+
+<OBJECT ROSES
+       (IN FRONT-OF-HOUSE)
+       (DESC "it")
+       (SYNONYM ROSE ROSES ROSEBE BED)
+       (ADJECTIVE ROSE)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<GLOBAL BULLDOZER-COUNTER 0>
+
+<ROUTINE I-BULLDOZER ()
+        <COND (<OR ,LYING-DOWN
+                   ,HOUSE-DEMOLISHED>
+               <DISABLE <INT I-BULLDOZER>>
+               <RFALSE>)>
+        <FSET ,PROSSER ,TOUCHBIT>
+        <SETG BULLDOZER-COUNTER <+ ,BULLDOZER-COUNTER 1>>
+        <COND (<G? ,BULLDOZER-COUNTER 4>
+               <DISABLE <INT I-BULLDOZER>>
+               <TELL ,BULLDOZER-PILES CR>
+               <BRICK-DEATH>)
+              (<EQUAL? ,HERE ,FRONT-OF-HOUSE>
+               <TELL
+"The " D ,BULLDOZER " rumbles slowly toward your home." CR>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE BRICK-DEATH ()
+        <TELL CR
+"Your home collapses in a cloud of dust, and a stray flying brick hits you
+squarely on the back of the head. You try to think of some suitable last words,
+but what with the confusion of the moment and the spinning of your head, you
+are unable to compose anything pithy and expire in silence.">
+        <REPEAT ()
+                <CRLF> <CRLF>
+                <PRINTI ">">
+                <READ ,P-INBUF ,P-LEXV>
+                <SETG DEAD-COUNTER <+ ,DEAD-COUNTER 1>>
+                <COND (<EQUAL? ,DEAD-COUNTER 1 2>
+                       <TELL "You keep out of this, you're dead">
+                       <COND (<EQUAL? ,DEAD-COUNTER 1>
+                              <TELL ". An ambulance arrives.">)
+                             (T
+                              <TELL
+" and should be concentrating on developing a good firm rigor mortis. You
+are put in the ambulance, which drives away.">)>)
+                     (<EQUAL? ,DEAD-COUNTER 3>
+                      <TELL
+"For a dead person you are talking too much.
+As the ambulance reaches the mortuary">
+                      <MAKE-WAY-FOR>
+                      <FINISH>)>>>
+
+<GLOBAL DEAD-COUNTER 0>
+
+<OBJECT BULLDOZER-DRIVER
+       (IN FRONT-OF-HOUSE)
+       (DESC "bulldozer driver")
+       (SYNONYM DRIVER)
+       (ADJECTIVE BULLDO DOZER)
+       (FLAGS NDESCBIT ACTORBIT)
+       (ACTION BULLDOZER-DRIVER-F)>
+
+<ROUTINE BULLDOZER-DRIVER-F ()
+        <COND (<VERB? TELL HELLO>
+               <TELL "The " D ,BULLDOZER-DRIVER
+", perusing a booklet of union rules, ignores you." CR>
+               <FUCKING-CLEAR>)>>
+
+<OBJECT BULLDOZER
+       (IN LOCAL-GLOBALS)
+       (DESC "bulldozer")
+       (SYNONYM BULLDO DOZER)
+       (ADJECTIVE LARGE YELLOW BULL HUGE)
+       (FLAGS NDESCBIT INVISIBLE)
+       (ACTION BULLDOZER-F)>
+
+<ROUTINE BULLDOZER-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"It's one of those really big " D ,BULLDOZER "s that can actually crush other "
+D ,BULLDOZER "s, let alone houses." CR>)
+              (<AND <NOT <EQUAL? ,HERE ,FRONT-OF-HOUSE>>
+                    <VERB? RUB PUSH MOVE TAKE KICK BLOCK WALK-AROUND>>
+               <TELL "The " D ,BULLDOZER " isn't here." CR>)
+              (<VERB? LIE-DOWN>
+               <PERFORM ,V?BLOCK ,BULLDOZER>
+               <RTRUE>)
+              (<AND <VERB? BLOCK>
+                    <EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
+               <COND (,HOUSE-DEMOLISHED
+                      <TELL "Too late now." CR>)
+                     (,LYING-DOWN
+                      <PERFORM ,V?LIE-DOWN ,GROUND>
+                      <RTRUE>)
+                     (,PROSSER-LYING
+                      <TELL "Prosser's doing that for you." CR>)
+                     (T
+                      <SETG LYING-DOWN T>
+                      <ENABLE <QUEUE I-PROSSER 2>>
+                      <TELL
+"You lie down in the path of the advancing " D ,BULLDOZER ". Prosser yells
+at you to for crissake move!!!" CR>)>)
+              (<VERB? WALK-AROUND>
+               <COND (<EQUAL? ,IDENTITY-FLAG ,ARTHUR>
+                      <V-DIG>)
+                     (<NOT ,TOWEL-OFFERED>
+                      <TELL
+"Didn't you come here for a purpose? Something about a towel?" CR>)
+                     (,GONE-AROUND
+                      <TELL "You already did. It's not a merry-go-round." CR>)
+                     (T
+                      <SETG GONE-AROUND T>
+                      <TELL
+"You walk around the " D ,BULLDOZER ". Prosser is standing here, looking cross
+and frustrated. Realising that you are a friend of Arthur's he starts to talk
+at you. He says that this sort of protest is all very well, but what Mr. Dent
+must realise is that he's had plenty of time to make a formal protest at the
+proper time and place, and that spending months going through the appropriate
+official channels, filling in the appropriate official forms, and going to the
+appropriate official public hearings is the right way of going about it, and
+lying around whimsically in the mud is not. He says that he personally hates
+mud and despises the sort of people who lie in it." CR>)>)
+              (<AND <VERB? LISTEN>
+                    <RUNNING? ,I-PROSSER>>
+               <TELL "\"Rumble...rumble...\"" CR>)>>
+
+<GLOBAL PROSSER-COUNTER 0>
+
+<GLOBAL PROSSER-LYING <>>
+
+<GLOBAL GONE-AROUND <>>
+
+<ROUTINE I-PROSSER ()
+        <COND (<NOT ,LYING-DOWN>
+               <DISABLE <INT I-PROSSER>>
+               <I-BULLDOZER>
+               <RTRUE>)>
+        <ENABLE <QUEUE I-PROSSER -1>>
+        <SETG PROSSER-COUNTER <+ ,PROSSER-COUNTER 1>>
+        <CRLF>
+        <COND (<EQUAL? ,PROSSER-COUNTER 1>
+               <TELL
+"The " D ,BULLDOZER " thunders toward you. The ground is shaking beneath you
+as you lie in the mud." CR>)
+              (<EQUAL? ,PROSSER-COUNTER 2>
+               <TELL
+"The noise of the giant " D ,BULLDOZER " is now so violently loud that you
+can't even hear Prosser yelling to warn you that you will be killed if you
+don't get the hell out of the way. You just see him gesticulating wildly." CR>)
+              (<EQUAL? ,PROSSER-COUNTER 3>
+               <DISABLE <INT I-PROSSER>>
+               <ENABLE <QUEUE I-FORD -1>>
+               <MOVE ,FORD ,HERE>
+               <SETG P-IT-OBJECT ,TOWEL>
+               <TELL
+"With a terrible grinding of gears the " D ,BULLDOZER" comes to an abrupt halt
+just in front of you. It shakes, shudders, and emits noxious substances all
+over your rose bed. Prosser is incoherent with rage.|
+|
+Moments later, your friend " D ,FORD " arrives. He hardly seems to notice
+your predicament, but keeps glancing nervously at the sky. He says \"Hello,
+Arthur,\" takes a towel from his battered leather satchel, and offers it to
+you." CR>)>>
+
+<OBJECT PROSSER
+       (IN FRONT-OF-HOUSE)
+       (DESC "Mr. Prosser")
+       (DESCFCN PROSSER-DESCFCN)
+       (SYNONYM PROSSE FOREMA CREW)
+       (ADJECTIVE WRECKI MR MISTER)
+       (FLAGS NARTICLEBIT ACTORBIT CONTBIT OPENBIT)
+       (ACTION PROSSER-F)>
+
+<ROUTINE PROSSER-DESCFCN ("OPTIONAL" X)
+        <COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <NOT <FSET? ,PROSSER ,TOUCHBIT>>>
+               <FSET ,PROSSER ,TOUCHBIT>
+               <TELL
+"Nearby stands an impatient man. There seems to be a bit of an atmosphere.">)
+              (T
+               <TELL D ,PROSSER ", from the local council, is ">
+               <COND (,PROSSER-LYING
+                      <TELL "lying in front">)
+                     (,GONE-AROUND
+                      <TELL "standing at the side">)
+                     (T
+                      <TELL ,ON-OTHER-SIDE>)>
+               <TELL
+" of the " D ,BULLDOZER ". He seems to be wearing a " D ,DIGITAL-WATCH ".">
+               <COND (<NOT <FSET? ,PROSSER ,TOUCHBIT>>
+                      <FSET ,PROSSER ,TOUCHBIT>
+                      <TELL
+" He looks startled to see you emerge, and yells at you to get out of
+the way.">)>)>
+        <CRLF>>
+
+<ROUTINE PROSSER-F ()
+        <COND (<EQUAL? ,PROSSER ,WINNER>
+               <COND (<IN? ,FLEET ,HERE>
+                      <TELL
+"Prosser is too preoccupied with recent events to give your remarks much
+consideration. He is running off and saying a number of things about his
+mother in a high voice." CR>
+                      <FUCKING-CLEAR>)
+                     (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,PROSSER ,PRSI>
+                      <SETG WINNER ,PROSSER>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,PROSSER>
+                      <SETG WINNER ,PROSSER>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,PROSSER ,OBJECT-OF-GAME>
+                      <SETG WINNER ,PROSSER>
+                      <RTRUE>)
+                     (<OR <AND <VERB? WHAT>
+                               <PRSO? ,TIME>>
+                          <AND <VERB? TELL-TIME>
+                               <PRSO? ,ME>
+                               <PRSI? ,TIME>>
+                          <AND <VERB? WHAT-TIME>
+                               <PRSO? ,TIME>>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-FOR ,PROSSER ,TIME>
+                      <SETG WINNER ,PROSSER>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,PROSSER ,PRSO>
+                      <SETG WINNER ,PROSSER>
+                      <RTRUE>)
+                     (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                      <COND (<OR <AND <VERB? LIE-DOWN>
+                                      <PRSO? ,BULLDOZER>
+                                      ,IN-FRONT-FLAG>
+                                 <AND <VERB? LIE-DOWN>
+                                      <PRSO? ,GROUND ,ROOMS>
+                                      <NOT ,HOUSE-DEMOLISHED>>
+                                 <AND <VERB? REPLACE>
+                                      <PRSO? ,ARTHUR>
+                                      <NOT ,HOUSE-DEMOLISHED>>>
+                             <COND (,PROSSER-LYING
+                                    <TELL "He's already lying there!" CR>
+                                    <RTRUE>)>
+                             <SETG PROSSER-LYING T>
+                             <ENABLE <QUEUE I-ARTHUR -1>>
+                             <TELL
+"Prosser blinks in astonishment. \"You mean, go and lie in the mud in his
+place...?\" You explain that Arthur will only move if someone else takes over
+for him. Prosser shakes his head in such a manner as to suggest that he is very
+weary of the world, and you tactfully forebear from mentioning that it won't be
+troubling him much longer. Reluctantly, he follows you back toward Arthur.|
+|
+You rapidly conclude the business. Prosser lies in the mud. Arthur, bewildered,
+nevertheless stands up and appears ready to follow you to the Pub." CR>)
+                            (T
+                             <STAND-ASIDE>
+                             <FUCKING-CLEAR>)>)
+                           (<AND <VERB? WHAT-ABOUT>
+                                 <PRSO? ,HOUSE ,HOME>
+                                 ,HOUSE-DEMOLISHED>
+                            <TELL
+"Prosser explains the local planning regulations and says, by way of
+reassurance, that you will probably be rehoused within a couple of years." CR>)
+                           (<AND <VERB? BLOCK>
+                                 <PRSO? ,BULLDOZER>
+                                 <RUNNING? ,I-BULLDOZER>>
+                            <V-PROTEST>)
+                           (T
+                            <STAND-ASIDE>
+                            <FUCKING-CLEAR>)>)
+              (<AND <NOT ,GONE-AROUND>
+                    <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <VERB? TELL HELLO ASK-FOR ASK-ABOUT TELL-ABOUT>
+                    <PRSO? ,PROSSER>
+                    <NOT <IN? ,FLEET ,HERE>>>
+               <TELL "Prosser can't hear you from here." CR>
+               <FUCKING-CLEAR>)
+              (<VERB? GIVE SHOW>
+               <COND (<PRSO? ,THING>
+                      <TELL
+"He is much impressed and says, \"You must have the same aunt I have.\"" CR>)
+                     (<PRSO? ,TOWEL>
+                      <SETG TOWEL-MUDDY T>
+                      <TELL
+"Prosser thanks you, wipes the mud off his boots, and hands it back." CR>)
+                     (<PRSO? ,GUIDE>
+                      <TELL
+"Prosser takes a quick look at " D ,GUIDE ", says he doesn't read that kind of
+rubbish, and hands it back." CR>)
+                     (<PRSO? ,SATCHEL>
+                      <TELL
+"Prosser says he wouldn't be seen dead with that kind of thing slung over his
+shoulder." CR>)>)
+              (<AND <VERB? WALK-TO>
+                    <EQUAL? ,HERE ,FRONT-OF-HOUSE>>
+               <COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                           <NOT ,GONE-AROUND>>
+                      <PERFORM ,V?WALK-AROUND ,BULLDOZER>
+                      <RTRUE>)
+                     (T
+                      <TELL
+"You're already as close as any reasonable person would want to get." CR>)>)
+              (<AND <VERB? KILL KICK>
+                    ,LYING-DOWN>
+               <TELL ,WHILE-LYING CR>)
+              (<AND <VERB? KILL>
+                    <PRSO? ,PROSSER>
+                    ,HOUSE-DEMOLISHED>
+               <TELL
+"You muck up all his fancy facial work. This is the last moment of
+satisfaction you will experience for some time." CR>)
+              (<AND <VERB? KILL KICK>
+                    <PRSO? ,PROSSER>>
+               <TELL
+"He dodges, insisting that this is incorrect procedure." CR>)
+              (<AND <VERB? THROW>
+                    <PRSI? ,PROSSER>>
+               <MOVE ,PRSO ,HERE>
+               <PERFORM ,V?KILL ,PROSSER>
+               <RTRUE>)
+              (<VERB? EXAMINE>
+               <PROSSER-DESCFCN>)
+              (<AND <VERB? LISTEN>
+                    <NOT <FSET? ,CONVERSATION ,INVISIBLE>>>
+               <PERFORM ,V?LISTEN ,CONVERSATION>
+               <RTRUE>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL
+"Prosser pulls a booklet out of his back pocket. \"My game manual says that the
+goal is getting this here house knocked down.\"" CR>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,DIGITAL-WATCH>>
+               <PERFORM ,V?ASK-FOR ,PROSSER ,TIME>
+               <RTRUE>)
+              (<AND <VERB? ASK-FOR>
+                    <PRSI? ,TIME>>
+               <TELL
+"Prosser shakes the " D ,DIGITAL-WATCH ". \"Hasn't worked for months. I keep
+wearing it only because I think " D ,DIGITAL-WATCH "es are neat.\"" CR>)>>
+
+<ROUTINE STAND-ASIDE ()
+        <COND (,PROSSER-LYING
+               <TELL "\"Leave me alone,\" Prosser whimpers miserably." CR>
+               <RTRUE>)>
+        <TELL "\"Please step aside as I need to be able to ">
+        <COND (,HOUSE-DEMOLISHED
+               <TELL "clear this " D ,RUBBLE " away.\"" CR>)
+              (T
+               <TELL "knock ">
+               <COND (<EQUAL? ,IDENTITY-FLAG ,ARTHUR>
+                      <TELL "your">)
+                     (T
+                      <TELL "that">)>
+               <TELL " house down.\"" CR>)>>
+
+<OBJECT DIGITAL-WATCH
+       (IN PROSSER)
+       (DESC "digital watch")
+       (SYNONYM WATCH WATCHE)
+       (ADJECTIVE DIGITA)
+       (FLAGS NDESCBIT TRYTAKEBIT)
+       (ACTION DIGITAL-WATCH-F)>
+
+<ROUTINE DIGITAL-WATCH-F ()
+        <COND (<VERB? TAKE READ>
+               <PRIVATE "Prosser">)>>
+
+<OBJECT TIME
+       (IN GLOBAL-OBJECTS)
+       (DESC "time")
+       (SYNONYM TIME)>
+
+<OBJECT FORD
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "Ford Prefect")
+       (DESCFCN FORD-DESCFCN)
+       (SYNONYM FORD PREFEC)
+       (ADJECTIVE FORD)
+       (FLAGS ACTORBIT CONTBIT SEARCHBIT OPENBIT NARTICLEBIT)
+       (ACTION FORD-F)>
+
+<ROUTINE FORD-DESCFCN ("OPTIONAL" X)
+        <COND (,FORD-SLEEPING
+               <TELL "Ford is in the corner, snoring loudly." CR>)
+              (T
+               <TELL D ,FORD " is here." CR>)>>
+
+<ROUTINE FORD-F ()
+        <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+               <COND (<EQUAL? ,FORD ,PRSO>
+                      <PERFORM ,PRSA ,ME ,PRSI>
+                      <RTRUE>)
+                     (T
+                      <PERFORM ,PRSA ,PRSO ,ME>
+                      <RTRUE>)>)
+              (<EQUAL? ,FORD ,WINNER>
+               <COND (<IN? ,FLEET ,HERE>
+                      <TELL ,ABOVE-NOISE CR>
+                      <FUCKING-CLEAR>)
+                     (<OR <PRSI? ,HOUSE>
+                          <PRSO? ,HOUSE>>
+                      <TELL
+"\"It's not a house, it's a home.\" (Footnote 2)" CR>
+                      <FUCKING-CLEAR>)
+                     (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,FORD ,PRSI>
+                      <SETG WINNER ,FORD>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,FORD>
+                      <SETG WINNER ,FORD>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <TELL ,ASK-ABOUT-OBJECT CR>)
+                     (<AND <VERB? WHAT-ABOUT>
+                           <L? ,FORD-COUNTER 2>
+                           <EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                           <PRSO? ,HOME>>
+                      <TELL "Ford">
+                      <FORD-DECIDES>)
+                     (<AND <VERB? WHAT-ABOUT>
+                           <PRSO? ,HOME ,THIRD-PLANET>
+                           ,EARTH-DEMOLISHED>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,FORD ,THIRD-PLANET>
+                      <SETG WINNER ,FORD>
+                      <RTRUE>)
+                     (<NOT ,EARTH-DEMOLISHED>
+                      <COND (<AND <L? ,DRUNK-LEVEL 3>
+                                  <EQUAL? ,HERE ,PUB>>
+                             <TELL
+"\"Shut up and drink your beer. You're going to need it.\"" CR>)
+                            (T
+                             <TELL "Ford, busy ">
+                             <COND (<EQUAL? ,FORD-COUNTER 2>
+                                    <TELL "talking to Prosser">)
+                                   (T
+                                    <TELL "scanning the sky ">)>
+                             <COND (<EQUAL? ,HERE ,PUB>
+                                    <TELL "through the window">)
+                                   (<NOT <EQUAL? ,FORD-COUNTER 2>>
+                                    <TELL "for something">)>
+                             <TELL ", ignores you." CR>)>
+                      <ENABLE <QUEUE I-FORD 2>>)
+                     (T
+                      <TELL "Ford seems deep in thought." CR>
+                      <FUCKING-CLEAR>)>)
+              (<AND <VERB? TELL TELL-ABOUT HELLO ASK-FOR ASK-ABOUT>
+                    <PRSO? ,FORD>
+                    ,FORD-SLEEPING>
+               <TELL "Ford is sleeping!" CR>
+               <FUCKING-CLEAR>)
+              (<AND <VERB? GIVE>
+                    <PRSI? ,FORD>
+                    ,FORD-SLEEPING>
+               <PERFORM ,V?HELLO ,FORD>
+               <RTRUE>)
+              (<AND <EQUAL? ,FOLLOW-FLAG 1>
+                    <NOT <IN? ,FORD ,HERE>>
+                    <VERB? FOLLOW>>
+               <TELL
+"In a state of anxiety and confusion you follow Ford down the lane..." CR CR>
+               <GOTO <LOC ,FORD>>)
+              (<AND <EQUAL? ,FOLLOW-FLAG 3>
+                    <VERB? FOLLOW>>
+               <DO-WALK ,P?WEST>)
+              (<AND <VERB? FOLLOW>
+                    <EQUAL? ,FOLLOW-FLAG 5>>
+               <DO-WALK ,P?SOUTH>)
+              (<AND <VERB? ALARM SHAKE>
+                    ,FORD-SLEEPING>
+               <TELL "Rather like trying to wake the dead." CR>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL ,ASK-ABOUT-OBJECT CR>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,THIRD-PLANET>>
+               <TELL
+"Ford explains that the Earth has been demolished. To cheer you up, he points
+out that there are an awful lot of little planets like that around, and the
+Earth wasn't even a particularly nice one." CR>)
+              (<AND <VERB? GIVE>
+                    <PRSO? ,THUMB>
+                    <IN? ,FLEET ,HERE>>
+               <TELL "You can't reach him in this wind." CR>)
+              (<VERB? LISTEN>
+               <COND (<NOT <FSET? ,CONVERSATION ,INVISIBLE>>
+                      <PERFORM ,V?LISTEN ,CONVERSATION>
+                      <RTRUE>)
+                     (,FORD-SLEEPING
+                      <TELL "\"Zzzzzzz...\"" CR>)>)
+              (<AND <VERB? EXAMINE>
+                    ,FORD-SLEEPING>
+               <TELL "He's sleeping." CR>)
+              (<AND <VERB? ASK-FOR>
+                    <PRSI? ,TOWEL>
+                    <EQUAL? ,FORD-COUNTER 0 1>>
+               <PERFORM ,V?TAKE ,TOWEL>
+               <RTRUE>)>>
+
+<ROUTINE FORD-DECIDES ()
+        <FCLEAR ,CONVERSATION ,INVISIBLE>
+        <ENABLE <QUEUE I-FORD 2>>
+        <SETG FORD-COUNTER 2>
+        <TELL
+" looks startled, then guilty. He starts to say something and stops.
+He starts to say something else and stops. Suddenly he seems to see the "
+D ,BULLDOZER " for the first time, stops starting to say things and starts.|
+|
+He seems to come to a momentous decision, says he has something of
+Earth-shattering importance to tell you, and stresses the importance
+of a quick drink at the Horse 'n Groom.||">
+        <BUT-THAT-MAN "you exclaim">
+        <TELL
+" Ford goes off for a quiet word with Prosser. From where you're lying,
+you cannot hear what's happening, although they seem deeply engrossed in "
+D ,CONVERSATION "." CR>>
+
+<GLOBAL FORD-COUNTER 0>
+
+<GLOBAL FORD-SLEEPING <>>
+
+<GLOBAL GUARDS-COUNTER 0>
+
+<GLOBAL HEART-COUNTER 0>
+
+<ROUTINE I-FORD ()
+        <ENABLE <QUEUE I-FORD -1>>
+        <COND (<IN-HEART? ,PROTAGONIST>
+               <SETG HEART-COUNTER <+ ,HEART-COUNTER 1>>
+               <COND (<EQUAL? ,HEART-COUNTER 1>
+                      <MOVE ,FORD ,HERE>
+                      <TELL CR
+"\"This looks like that incredible new" ,IID " spaceship, " D ,HEART-OF-GOLD
+"!\" says Ford, with growing excitement." CR CR ,ANNOUNCEMENT D ,EDDIE ". We
+have just picked up two hitchhikers">
+                      <FACTOR "21,914">
+                      <TELL "\"" CR>)
+                     (<EQUAL? ,HEART-COUNTER 2>
+                      <TELL CR
+"\"Come on, let's look for the Bridge.\" You follow Ford, and eventually
+come to the..." CR CR>
+                      <GOTO ,BRIDGE>
+                      <MOVE ,FORD ,HERE>)
+                     (<EQUAL? ,HEART-COUNTER 3>
+                      <COND (<NOT <EQUAL? ,HERE ,BRIDGE>>
+                                  <RFALSE>)>
+                      <TELL CR
+"\"Hey, Zaphod, how ya doing?\" says Ford. He's cool. \"Not bad, Ford. Great to
+see you,\" replies Zaphod. He's cooler. You suddenly realise that the woman is
+Tricia MacMillan (\"Call me " D ,TRILLIAN "\"), whom you were trying to pick up
+at a party in Islington just a few weeks ago, and that Zaphod is the guy she
+eventually left the party with! Odd." CR>)
+                     (<EQUAL? ,HEART-COUNTER 4>
+                      <MOVE ,FORD ,LOCAL-GLOBALS>
+                      <MOVE ,ZAPHOD ,LOCAL-GLOBALS>
+                      <MOVE ,TRILLIAN ,LOCAL-GLOBALS>
+                      <MOVE ,HANDBAG ,BRIDGE>
+                      <MOVE ,SATCHEL ,BRIDGE>
+                      <FCLEAR ,HANDBAG ,NDESCBIT>
+                      <FCLEAR ,HANDBAG ,TRYTAKEBIT>
+                      <DISABLE <INT I-FORD>>
+                      <ENABLE <QUEUE I-MARVIN -1>>
+                      <COND (<EQUAL? ,HERE ,BRIDGE>
+                             <SETG FOLLOW-FLAG 3>
+                             <ENABLE <QUEUE I-FOLLOW 2>>
+                             <TELL CR
+"\"Like my spaceship, Ford?\" Zaphod asks. \"YOUR spaceship?\" says Ford,
+losing his cool for a second. \"Yeah, I stole it,\" Zaphod admits. \"I'm gonna
+use it to find" ,LOST-PLANET ". Let's go sit in the sauna while I explain.\"
+Zaphod, Ford, and " D ,TRILLIAN " all head off to port." CR>)
+                            (T
+                             <RFALSE>)>)>)
+              (<EQUAL? ,HERE ,HOLD>
+               <COND (<FSET? ,CAPTAINS-QUARTERS ,TOUCHBIT>
+                      <SETG GUARDS-COUNTER <+ ,GUARDS-COUNTER 1>>
+                      <COND (<EQUAL? ,GUARDS-COUNTER 1>
+                             <TELL CR
+"The guard releases you and Ford and begins cycling the air in the
+airlock. \"Hey, guard!\" shouts Ford, \"do you really enjoy this sort
+of thing? Shouting, stomping around, shooting people, is it really a
+fulfilling career?\"" CR>)
+                            (<EQUAL? ,GUARDS-COUNTER 6>
+                             <DISABLE <INT I-FORD>>
+                             <MOVE ,SATCHEL ,FORD>
+                             <FCLEAR ,SATCHEL ,NDESCBIT>
+                             <SETG PANEL-BLOCKER <>>
+                             <FSET ,HOLD ,REVISITBIT>
+                             <TELL CR "The guard says, \"">
+                             <COND (<HELD? ,BABEL-FISH ,PROTAGONIST>
+                                    <TELL
+"Well, all things considered, I guess I like being a guard. Especially
+the shouting. Resistance is useless!\"">)
+                                   (T
+                                    <TELL "I">
+                                    <PRODUCE-GIBBERISH 3>)>
+                             <TELL
+" He throws you and Ford into the airlock and closes the door." CR CR>
+                             <GOTO ,AIRLOCK>
+                             <MOVE ,FORD ,AIRLOCK>)
+                            (T
+                             <TELL CR
+"Ford continues trying to talk the guard into a sudden career change." CR>)>)
+                     (T
+                      <MOVE ,GUIDE ,PROTAGONIST>
+                      <DISABLE <INT I-FORD>>
+                      <SETG FORD-SLEEPING T>
+                      <COND (<IN? ,MINERAL-WATER ,FORD>
+                             <MOVE ,MINERAL-WATER ,SATCHEL>)>
+                      <COND (<IN? ,TOWEL ,FORD>
+                             <MOVE ,TOWEL ,HERE>)>
+                      <MOVE ,SATCHEL ,HERE>
+                      <FCLEAR ,SATCHEL ,TRYTAKEBIT>
+                      <TELL CR
+"Ford yawns. \"Matter transference always tires me out. I'm going to take a
+nap.\" He places something on top of his satchel. \"If you have any questions,
+here's " ,GUIDE-NAME "\" (Footnote 14). Ford lowers his voice to a whisper.
+\"I'm not supposed to tell you this, but you'll never be able to finish the
+game without consulting the Guide about lots of stuff.\" As he curls up in a
+corner and begins snoring, you pick up " D ,GUIDE "." CR>)>)
+              (<EQUAL? ,FORD-COUNTER 0>
+               <SETG FORD-COUNTER 1>
+               <TELL CR
+"Ford glances uncomfortably at the sky. He offers you the towel again." CR>)
+              (<EQUAL? ,FORD-COUNTER 1>
+               <TELL CR "Ford seems oblivious to your trouble, so you ask
+\"Ford, what about my home?\" He">
+               <FORD-DECIDES>)
+              (<EQUAL? ,FORD-COUNTER 2>
+               <SETG FORD-COUNTER 3>
+               <SETG LYING-DOWN <>>
+               <SETG PROSSER-LYING T>
+               <ENABLE <QUEUE I-FORD 2>>
+               <FSET ,CONVERSATION ,INVISIBLE>
+               <TELL CR
+"Ford and Prosser stop talking and approach you. Ford says that Prosser has
+agreed to lie in your place so that the two of you can go off to the Pub.
+Reluctantly, Prosser steps forward and lies down in front of the " D ,BULLDOZER
+". You stand up." CR>)
+              (<EQUAL? ,FORD-COUNTER 3>
+               <MOVE ,FORD ,COUNTRY-LANE>
+               <SETG FORD-COUNTER 4>
+               <COND (<EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                      <SETG FOLLOW-FLAG 1>
+                      <ENABLE <QUEUE I-FOLLOW 2>>
+                      <TELL
+"Ford, urging you to follow, hurries toward the country lane." CR>)
+                     (<EQUAL? ,HERE ,COUNTRY-LANE>
+                      <TELL "Ford enters from the north." CR>)
+                     (T
+                      <RFALSE>)>)
+              (<AND <EQUAL? ,FORD-COUNTER 4>
+                    <EQUAL? ,HERE ,COUNTRY-LANE>
+                    <NOT <FSET? ,PUB ,TOUCHBIT>>>
+               <SETG FORD-COUNTER 5>
+               <SETG FOLLOW-FLAG 1>
+               <ENABLE <QUEUE I-FOLLOW 2>>
+               <MOVE ,FORD ,PUB>
+               <TELL CR
+"\"Come along, Arthur,\" says Ford impatiently, and enters the Pub." CR>)
+              (<AND <NOT <IN? ,FORD ,HERE>>
+                    <FSET? ,PUB ,TOUCHBIT>>
+               <MOVE ,FORD ,HERE>
+               <TELL CR "Ford hurries after you." CR>)
+              (<L? ,DRUNK-LEVEL 3>
+               <COND (<AND <PRSO? ,BEER>
+                           <VERB? DRINK ENJOY>>
+                      <RFALSE>)
+                     (<AND <EQUAL? ,L-PRSO ,BEER>
+                           <VERB? AGAIN>
+                           <EQUAL? ,L-PRSA ,V?DRINK ,V?ENJOY>>
+                      <RFALSE>)
+                     (<NOT <EQUAL? ,HERE ,PUB>>
+                      <RFALSE>)
+                     (<FSET? ,BEER ,NDESCBIT>
+                      <RFALSE>)>
+               <TELL CR "\"Drink the beer,\" urges Ford. \"It will help">
+               <CUSHION>
+               <TELL "\"" CR>)
+              (T
+               <RFALSE>)>>
+
+<OBJECT SATCHEL
+       (IN FORD)
+       (DESC "satchel")
+       (DESCFCN SATCHEL-DESCFCN)
+       (SYNONYM SATCHE)
+       (ADJECTIVE BATTER LEATHE BULKY)
+       (FLAGS CONTBIT SEARCHBIT TAKEBIT TRYTAKEBIT)
+       (CAPACITY 30)
+       (SIZE 20)
+       (ACTION SATCHEL-F)>
+
+<ROUTINE SATCHEL-DESCFCN ("OPTIONAL" X)
+        <TELL "There is a satchel here">
+        <COND (<EQUAL? ,PANEL-BLOCKER ,SATCHEL>
+               <TELL ", resting in front of the " D ,ROBOT-PANEL>)>
+        <TELL ".">
+        <ITEM-ON-SATCHEL-DESCRIPTION>
+        <CRLF>
+        <RTRUE>>
+
+<ROUTINE ITEM-ON-SATCHEL-DESCRIPTION ()
+        <COND (,ITEM-ON-SATCHEL
+               <TELL " Sitting on top of it is">
+               <ARTICLE ,ITEM-ON-SATCHEL>
+               <TELL ".">)>>
+
+<ROUTINE SATCHEL-F ()
+        <COND (<AND <VERB? OPEN>
+                    <NOT <EQUAL? ,IDENTITY-FLAG ,FORD>>>
+               <PRIVATE "Ford">)
+              (<AND <VERB? PUT-ON>
+                    <EQUAL? ,SATCHEL ,PRSI>>
+               <COND (<HELD? ,SATCHEL>
+                      <TELL "Put down the satchel first." CR>)
+                     (,ITEM-ON-SATCHEL
+                      <TELL "But">
+                      <ARTICLE ,ITEM-ON-SATCHEL T>
+                      <TELL " is already on the satchel." CR>)
+                     (T
+                      <SETG ITEM-ON-SATCHEL ,PRSO>
+                      <MOVE ,PRSO ,HERE>
+                      <FSET ,PRSO ,NDESCBIT>
+                      <FSET ,PRSO ,TRYTAKEBIT>
+                      <TELL "Okay,">
+                      <ARTICLE ,PRSO T>
+                      <TELL " is now sitting on the satchel." CR>)>)
+              (<VERB? EXAMINE>
+               <TELL "The satchel, which is ">
+               <COND (<FSET? ,SATCHEL ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL "closed">)>
+               <TELL ", is fairly bulky.">
+               <ITEM-ON-SATCHEL-DESCRIPTION>
+               <CRLF>)
+              (<AND <VERB? TAKE>
+                    <IN? ,SATCHEL ,FORD>>
+               <TELL
+"Ford says, \"Hey, Arthur, keep " D ,HANDS "s off my satchel!\"" CR>)>>
+
+<OBJECT SATCHEL-FLUFF
+       (IN SATCHEL)
+       (DESC "satchel fluff")
+       (SYNONYM FLUFF LINT)
+       (ADJECTIVE SATCHE)
+       (FLAGS TAKEBIT NARTICLEBIT)
+       (SIZE 1)
+       (GENERIC POCKET-FLUFF)>
+
+<GLOBAL FLUFF-TO-GOWN <>>
+
+<GLOBAL TOWEL-MUDDY <>>
+
+<GLOBAL TOWEL-OFFERED <>>
+
+<OBJECT TOWEL
+       (IN FORD)
+       (DESC "towel")
+        (SYNONYM TOWEL TOWELS)
+       (FLAGS TAKEBIT TRYTAKEBIT)
+       (SIZE 7)
+       (CAPACITY 40)
+       (ACTION TOWEL-F)>
+
+<ROUTINE TOWEL-F ()
+        <COND (<AND <VERB? TAKE>
+                    <FSET? ,TOWEL ,TRYTAKEBIT>
+                    <EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                    ,LYING-DOWN>
+               <FCLEAR ,TOWEL ,TRYTAKEBIT>
+               <MOVE ,TOWEL ,PROTAGONIST>
+               <MOVE ,FORD ,LOCAL-GLOBALS>
+               <SETG FORD-GONE T>
+               <SETG FOLLOW-FLAG 5>
+               <ENABLE <QUEUE I-FOLLOW 2>>
+               <DISABLE <INT I-FORD>>
+               <TELL
+"As you take it, Ford says \"Er, look, thanks for lending me the towel...
+been nice knowing you... got to go now...\" He smiles oddly and walks down
+the " D ,COUNTRY-LANE "." CR>)
+              (<AND <VERB? TAKE MOVE>
+                    <PRSO? ,TOWEL>
+                    <FSET? ,TOWEL ,SURFACEBIT>>
+               <FCLEAR ,TOWEL ,TRYTAKEBIT>
+               <FCLEAR ,TOWEL ,SURFACEBIT>
+               <ROB ,TOWEL ,HERE>
+               <FCLEAR ,TOWEL ,CONTBIT>
+               <FCLEAR ,TOWEL ,OPENBIT>
+               <FCLEAR ,TOWEL ,NDESCBIT>
+               <COND (<VERB? MOVE>
+                      <TELL "Okay, it's no longer covering the drain." CR>)
+                     (T
+                      <RFALSE>)>)
+              (<AND <VERB? PUT-ON TIE>
+                    <PRSI? ,BEAST>>
+               <TELL "The effect is decorative rather than helpful." CR>)
+              (<AND <VERB? PUT-ON TIE>
+                    <PRSI? ,HEAD ,EYES>>
+               <COND (<FSET? ,TOWEL ,WORNBIT>
+                      <TELL "It already is." CR>)
+                     (<IN? ,BEAST ,HERE>
+                      <FSET ,TOWEL ,WORNBIT>
+                      <MOVE ,TOWEL ,PROTAGONIST>
+                      <ENABLE <QUEUE I-BEAST 11>>
+                      <TELL
+"The " D ,BEAST " is completely bewildered. It is so dim it thinks that
+if you can't see it, it can't see you. You have a few seconds before it
+realises its mistake." CR>)
+                     (T
+                      <TELL
+"There's no need for that. It's not like there's a " D ,BEAST " around,
+or something." CR>)>)
+              (<AND <FSET? ,TOWEL ,WORNBIT>
+                    <VERB? TAKE-OFF REMOVE UNTIE>>
+               <FCLEAR ,TOWEL ,WORNBIT>
+               <TELL "You unwrap the towel from your head.">
+               <COND (<FSET? ,BEAST ,MUNGEDBIT>
+                      <CRLF> <CRLF>
+                      <V-LOOK>
+                      <RTRUE>)>
+               <COND (,BEARINGS-LOST
+                      <TELL " You see that you have wandered in circles">
+                      <COND (<EQUAL? ,HERE ,OUTER-LAIR>
+                             <TELL
+" and ended right beside the " D ,MEMORIAL>)>
+                      <TELL ".">)>
+               <TELL
+" Unfortunately, the Beast has also caught sight of you again. All this
+fooling around has made it doubly angry and hungry. ">
+               <BEAST-DEATH>
+               <RTRUE>)
+              (<VERB? EXAMINE>
+               <COND (<FSET? ,TOWEL ,SURFACEBIT>
+                      <PERFORM ,V?EXAMINE ,DRAIN>
+                      <COND (<FIRST? ,TOWEL>
+                             <RFALSE>)>
+                      <RTRUE>)
+                     (,TOWEL-MUDDY
+                      <TELL "It is caked with mud." CR>)
+                     (T
+                      <TELL
+"It's covered with little pink and blue flowers." CR>)>)
+              (<AND <VERB? LIE-DOWN>
+                    <FSET? ,TOWEL ,SURFACEBIT>>
+               <PERFORM ,V?STAND-BEFORE ,HOOK>
+               <RTRUE>)>>
+
+<ROOM BACK-OF-HOUSE
+      (IN ROOMS)
+      (SYNONYM LIST QUESTI)
+      (ADJECTIVE GREAT UNANSW)
+      (DESC "Back of House")
+      (SE TO FRONT-OF-HOUSE)
+      (SW TO FRONT-OF-HOUSE)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL HOUSE HOME THIRD-PLANET RUBBLE)
+      (PSEUDO "TREE" TREE-PSEUDO "BIRDS" UNIMPORTANT-THING-F)
+      (ACTION BACK-OF-HOUSE-F)>
+
+<ROUTINE BACK-OF-HOUSE-F (RARG)
+        <COND (<AND <EQUAL? .RARG ,M-END>
+                    <NOT <RUNNING? ,I-VOGONS>>
+                    ,HOUSE-DEMOLISHED>
+               <I-VOGONS>
+               <ENABLE <QUEUE I-VOGONS 2>>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The rear garden is a pleasant place. I" ,NICE-DAY ", and it's a lovely day for
+a walk. A path leads around the house to the southeast and southwest." CR>)>>
+
+<ROUTINE TREE-PSEUDO ()
+        <COND (<VERB? CLIMB-UP CLIMB-FOO>
+               <TELL "You were never very good at that." CR>)>>
+
+<ROOM COUNTRY-LANE
+      (IN ROOMS)
+      (SYNONYM SPACE)
+      (DESC "Country Lane")
+      (NORTH TO FRONT-OF-HOUSE)
+      (WEST TO PUB)
+      (IN TO PUB)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL HOUSE HOME PUB-OBJECT BULLDOZER THIRD-PLANET)
+      (PSEUDO "TREE" TREE-PSEUDO)
+      (ACTION COUNTRY-LANE-F)>
+
+<ROUTINE COUNTRY-LANE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <COND (<AND <NOT ,PROSSER-LYING>
+                           <NOT ,HOUSE-DEMOLISHED>
+                           <NOT <FSET? ,HOLD ,TOUCHBIT>>>
+                      <SETG BULLDOZER-COUNTER 3>
+                      <I-BULLDOZER>)
+                     (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                           ,HOUSE-DEMOLISHED>
+                      <ENABLE <QUEUE I-DOG 1>>
+                      <RFALSE>)
+                     (<AND <EQUAL? ,DRUNK-LEVEL 3>
+                           <EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
+                      <ENABLE <QUEUE I-DOG 1>>
+                      <RFALSE>)
+                     (<AND <FSET? ,HOLD ,TOUCHBIT>
+                           <NOT <FSET? ,COUNTRY-LANE ,NDESCBIT>>>
+                      <PUT ,FORD-TABLE 0 <LOC ,SATCHEL>>
+                      <PUT ,FORD-TABLE 1 <LOC ,THUMB>>
+                      <PUT ,FORD-TABLE 2 <LOC ,GUIDE>>
+                      <PUT ,FORD-TABLE 3 <LOC ,TOWEL>>
+                      <PUT ,FORD-TABLE 5 <LOC ,MINERAL-WATER>>
+                      <COND (<FSET? ,THUMB ,MUNGEDBIT>
+                             <PUT ,FORD-TABLE 4 T>
+                             <FCLEAR ,THUMB ,MUNGEDBIT>)>
+                      <FSET ,COUNTRY-LANE ,NDESCBIT>
+                      <ROB ,PROTAGONIST ,MEMORIAL>
+                      <MOVE ,SATCHEL ,PROTAGONIST>
+                      <MOVE ,THUMB ,SATCHEL>
+                      <MOVE ,GUIDE ,SATCHEL>
+                      <MOVE ,TOWEL ,SATCHEL>
+                      <MOVE ,MINERAL-WATER ,SATCHEL>
+                      <MOVE ,ARTHUR ,FRONT-OF-HOUSE>
+                      <SETG IDENTITY-FLAG ,FORD>
+                      <MOVE ,FORD ,GLOBAL-OBJECTS>
+                      <MOVE ,PEANUTS ,PUB>
+                      <FSET ,PEANUTS ,TRYTAKEBIT>
+                      <FSET ,PEANUTS ,NDESCBIT>
+                      <SETG PEANUTS-BOUGHT <>>
+                      <SETG DREAMING T>
+                      <ENABLE <QUEUE I-VOGONS 38>>
+                      <TELL
+"You are hurrying up a country lane. The sky is light and clear, but you keep
+glancing at it with apprehension because you know that it will shortly be torn
+apart by Vogon ships, and that the hills and trees around you will just burn
+up and blow away, and you hope there's time for a quick drink beforehand.|
+|
+You want to hitch a ride aboard the Vogon fleet, but are anxious because it's
+so long since you were through a" ,BEAM "." CR CR>)>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <FSET? ,COUNTRY-LANE ,REVISITBIT>>
+               <SETG DREAMING T>
+               <TELL
+"Suddenly a shadow passes in front of the sun. You look up. The shadow is a "
+D ,FLEET ". You fumble for ">
+               <JIGS-UP
+"your Thumb, but before you can hitch a ride the planet is destroyed.">
+               <RTRUE>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <TELL "The road runs from ">
+               <COND (<EQUAL? ,IDENTITY-FLAG ,ARTHUR>
+                      <TELL "your">)
+                     (T
+                      <TELL "Arthur's">)>
+               <TELL
+" home, to the north, toward the village Pub, to the west." CR>)>>
+
+<ROUTINE I-DOG ()
+        <COND (<EQUAL? ,HERE ,WAR-CHAMBER>
+               <SETG DOG-COUNTER <+ ,DOG-COUNTER 1>>
+               <COND (<AND <L? ,DOG-COUNTER 13>
+                           <VERB? WAIT>>
+                      <RFALSE>)>
+               <CRLF>
+               <COND (<L? ,DOG-COUNTER 13>
+                      <TELL "The fleet continues to hurtle sunwards." CR>)
+                     (,DOG-FED
+                      <SETG LYING-DOWN <>>
+                      <TELL
+"Your simple act of kindness at a moment of great personal anxiety (you fed
+the dog, remember?) now brings rich rewards. " ,FLEET-PLUNGES " spots the dog
+(which appears to them as a gigantic monster) cheerfully tucking into a
+" D ,SANDWICH ".|
+|
+The Vl'Hurgs and the G'Gugvunts are moved by this simple picture of happiness,
+compared with the furious savagery of their own lives. They think back to a day
+when they used to relax over an odd " D ,SANDWICH " themselves, often at sunset
+after a hearty day working in the fields back in Vl'Hurgon and G'Gugvia, and
+decide to return and rebuild their homes in a new spirit of harmony and
+cooperation.|
+|
+Grateful, they offer to drop you at " D ,HEART-OF-GOLD " on the way home.
+After a brief 900 parsec trip, you are escorted into the Transporter Chamber
+of the warship. The transporter glows, and your surroundings change..." CR CR>
+                      <GOTO ,MAZE>)
+                     (T
+                      <TELL ,FLEET-PLUNGES>
+                      <JIGS-UP 
+", due to a terrible miscalculation in scale, is swallowed by a small dog.">
+                      <RTRUE>)>)
+              (<EQUAL? ,IDENTITY-FLAG ,FORD>
+               <MOVE ,DOG ,HERE>
+               <DISABLE <INT I-DOG>>
+               <TELL "You run up the lane after Arthur. You pass a">
+               <COND (,DOG-FED
+                      <TELL
+" serene dog. Fate cannot harm him, he has dined today." CR>)
+                     (T
+                      <TELL "n irritable dog who yaps at you." CR>)>)
+              (<AND <NOT <IN? ,DOG ,HERE>>
+                    <NOT <IN? ,FLEET ,HERE>>
+                    <EQUAL? ,HERE ,COUNTRY-LANE>>
+               <MOVE ,DOG ,HERE>
+               <ENABLE <QUEUE I-DOG 2>>
+               <TELL
+"You see the huge " D ,BULLDOZER " heaving itself among the cloud of brick dust
+which is all that remains of " D ,HOME ". As you start up the lane, a small dog
+runs up to you, yapping." CR>)
+              (<AND <NOT ,DOG-FED>
+                    <IN? ,DOG ,HERE>
+                    <NOT <FSET? ,DOG ,TOUCHBIT>>>
+               <FSET ,DOG ,TOUCHBIT>
+               <TELL
+"The dog carries on yapping for a moment and then gulps uncomfortably." CR>)
+              (T
+               <RFALSE>)>>
+
+<OBJECT DOG
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "dog")
+       (SYNONYM DOG MONGRE)
+       (ADJECTIVE SMALL SERENE IRRITA)
+        (ACTION DOG-F)>
+
+<ROUTINE DOG-F ()
+        <COND (<VERB? GIVE THROW>
+               <COND (<PRSO? ,SANDWICH>
+                      <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                             <MOVE ,SANDWICH ,HERE>
+                             <TELL
+"The dog is in a bad mood and tries to bite " D ,HANDS ". The " D ,SANDWICH
+" lies ignored in the roadside dust." CR>)
+                            (<FSET? ,DOG ,TOUCHBIT> ;"already swallowed fleet"
+                             <TELL
+"The dog, which seems to have a slight case of indigestion,
+ignores the " D ,SANDWICH "." CR>)
+                            (T
+                             <MOVE ,SANDWICH ,LOCAL-GLOBALS>
+                             <SETG DOG-FED T>
+                             <TELL
+"The dog is deeply moved. With powerful sweeps of its tail it indicates that
+it regards this " D ,SANDWICH " as one of the great " D ,SANDWICH "es. Nine
+out of ten pet owners could happen by at this point expressing any preference
+they pleased, but this dog would spurn both them and all their tins. This is
+a dog which has met its main sandwich. It eats" ,WITH-PASSION CR>)>)
+                     (<PRSO? ,PEANUTS>
+                      <TELL "This is a dog, not an elephant." CR>)>)
+              (<AND <VERB? EXAMINE>
+                    <NOT ,DOG-FED>>
+               <TELL "The mongrel looks hungry." CR>)
+              (<VERB? RUB KICK PUSH>
+               <TELL "The dog tries to bite your ">
+               <COND (<VERB? KICK>
+                      <TELL "foot">)
+                     (T
+                      <TELL "hand">)>
+               <TELL "." CR>)>>
+
+<OBJECT PUB-OBJECT
+       (IN LOCAL-GLOBALS)
+       (DESC "Pub")
+       (SYNONYM PUB GROOM)
+       (ADJECTIVE HORSE \'N)
+       (ACTION PUB-OBJECT-F)>
+
+<ROUTINE PUB-OBJECT-F ()
+        <COND (<VERB? WALK-TO THROUGH>
+               <COND (<EQUAL? ,HERE ,PUB>
+                      <TELL ,LOOK-AROUND CR>)
+                     (<EQUAL? ,HERE ,COUNTRY-LANE>
+                      <DO-WALK ,P?WEST>)
+                     (T
+                      <V-WALK-AROUND>)>)
+              (<VERB? EXIT LEAVE DISEMBARK>
+               <COND (<EQUAL? ,HERE ,PUB>
+                      <DO-WALK ,P?EAST>)
+                     (T
+                      <TELL ,LOOK-AROUND CR>)>)>>
+
+<ROOM PUB
+      (IN ROOMS)
+      (SYNONYM ALCOHO)
+      (DESC "Pub")
+      (EAST TO COUNTRY-LANE)
+      (OUT TO COUNTRY-LANE)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL PUB-OBJECT WINDOW THIRD-PLANET PUB-FURNISHINGS)
+      (PSEUDO "PEOPLE" UNIMPORTANT-THING-F)
+      (ACTION PUB-F)>
+
+<ROUTINE PUB-F (RARG)
+        <COND (<AND <EQUAL? .RARG ,M-ENTER>
+                    <NOT ,TOWEL-OFFERED>
+                    <AND <EQUAL? ,IDENTITY-FLAG ,FORD>>>
+               <ENABLE <QUEUE I-UNEASY -1>>
+               <RFALSE>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The Pub is pleasant and cheerful and full of pleasant and cheerful people who
+don't know they've got about twelve minutes to live and are therefore having a
+spot of lunch. Some music is playing on an old jukebox. The exit is east." CR>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <FSET? ,BEER ,NDESCBIT>
+                    <IN? ,FORD ,HERE>
+                    <NOT <EQUAL? ,IDENTITY-FLAG ,FORD>>>
+               <FCLEAR ,BEER ,NDESCBIT>
+               <ENABLE <QUEUE I-FORD 2>>
+               <SETG FORD-COUNTER 5>
+               <CRLF>
+               <TELL
+"Ford buys " D ,BEER " and offers half to you. \"Muscle relaxant...\" he
+says, impenetrably." CR>)>>
+
+<OBJECT BAR
+       (IN PUB)
+       (DESC "bar")
+       (SYNONYM BAR COUNTE)
+       (FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)
+       (CAPACITY 60)
+       (ACTION BAR-F)>
+
+<ROUTINE BAR-F ()
+        <COND (<VERB? LOOK-BEHIND>
+               <PERFORM ,V?EXAMINE ,PUB-SHELF>
+               <RTRUE>)>>
+
+<OBJECT PUB-SHELF
+       (IN PUB)
+       (DESC "shelf of items")
+       (LDESC
+"Behind the bar is a shelf. It is full of the sort of items you find on shelves
+behind bars in pubs.")
+       (SYNONYM SHELF ITEMS SHELVE)
+       (ACTION PUB-SHELF-F)>
+
+<ROUTINE PUB-SHELF-F ()
+        <COND (<VERB? EXAMINE>
+               <FSET ,PUB-SHELF ,NDESCBIT>
+               <TELL
+"On the shelf behind the bar is the usual array of bottles, glasses
+and soggy beermats">
+               <COND (<NOT ,PEANUTS-BOUGHT>
+                      <FSET ,PEANUTS ,TAKEBIT>
+                      <FSET ,PEANUTS ,TRYTAKEBIT>
+                      <COND (,SANDWICH-BOUGHT
+                             <TELL ", and">)
+                            (T
+                             <TELL ",">)>
+                      <TELL " some packets of peanuts">)>
+               <COND (<NOT ,SANDWICH-BOUGHT>
+                      <FSET ,SANDWICH ,TAKEBIT>
+                      <FSET ,SANDWICH ,TRYTAKEBIT>
+                      <TELL ", and a plate of uninviting " D ,SANDWICH "es">)>
+               <TELL "." CR>)>>
+
+<OBJECT MUSIC
+       (IN PUB)
+       (DESC "music")
+       (SYNONYM MUSIC SONG SONGS)
+       (FLAGS NARTICLEBIT NDESCBIT)
+       (ACTION MUSIC-F)>
+
+<ROUTINE MUSIC-F ()
+        <COND (<VERB? LISTEN ENJOY>
+               <PERFORM ,V?LISTEN ,JUKEBOX>
+               <RTRUE>)>>
+
+<OBJECT JUKEBOX
+       (IN PUB)
+       (DESC "jukebox")
+       (SYNONYM JUKEBO BOX)
+       (ADJECTIVE JUKE OLD)
+       (FLAGS NDESCBIT LIGHTBIT ONBIT)
+       (ACTION JUKEBOX-F)>
+
+<ROUTINE JUKEBOX-F ()
+        <COND (<VERB? LISTEN>
+               <TELL "The song is ">
+               <COND (<PROB 25>
+                      <TELL
+"a Walker Brothers single, \"The Sun Ain't Gonna Shine Anymore.\"" CR>)
+                     (<PROB 33>
+                      <TELL
+"\"Get Back\" by the Beatles." CR>)
+                     (<PROB 50>
+                      <TELL
+"\"Hey Jude\" by the Beatles (Footnote 4). It's a particular favourite, and
+listening to it calms you down, and cheers you up." CR>)
+                     (T
+                      <TELL "\"Tie a Yellow Ribbon.\"">
+                      <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                             <TELL
+" You can't stand it, and are pleased to think that this is probably the
+last time it will ever be heard.">)>
+                      <CRLF>)>)
+              (<VERB? LAMP-OFF>
+               <PRIVATE "the Pub">)>>
+
+<OBJECT PUB-FURNISHINGS
+       (IN LOCAL-GLOBALS)
+       (DESC "it")
+       (SYNONYM BEERMA GLASSE BOTTLE GLASS)
+       (ADJECTIVE USUAL SOGGY)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (GENERIC MINERAL-WATER)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<OBJECT BARMAN
+       (IN PUB)
+       (DESC "barman")
+       (LDESC "There is a barman serving at the bar.")
+       (SYNONYM BARMAN BARTEN)
+       (FLAGS ACTORBIT)
+       (ACTION BARMAN-F)>
+
+<ROUTINE BARMAN-F ()
+        <COND (<EQUAL? ,BARMAN ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,BARMAN ,PRSI>
+                      <SETG WINNER ,BARMAN>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,BARMAN>
+                      <SETG WINNER ,BARMAN>
+                      <RTRUE>)
+                     (<AND <VERB? GIVE>
+                           <PRSO? ,ME>
+                           <PRSI? ,SANDWICH ,BEER ,PEANUTS>>
+                      <PERFORM ,V?BUY ,PRSI>
+                      <RTRUE>)
+                     (T
+                      <TELL
+"The barman ignores you and keeps polishing the other end of the bar." CR>)>)
+              (<AND <VERB? ASK-FOR>
+                    <PRSI? ,SANDWICH ,BEER ,PEANUTS>>
+               <PERFORM ,V?BUY ,PRSI>
+               <RTRUE>)>>
+
+<OBJECT BEER
+       (IN PUB)
+       (DESC "lots of beer")
+       (SYNONYM LOTS BITTER PINT BEER)
+       (FLAGS DRINKBIT NARTICLEBIT NDESCBIT)
+       (ACTION BEER-F)>
+
+<GLOBAL DRUNK-LEVEL 0>
+
+<GLOBAL FORD-POINT 15>
+
+<ROUTINE BEER-F ()
+        <COND (<AND <VERB? DRINK ENJOY COUNT SMELL RUB TAKE>
+                    <FSET? ,BEER ,NDESCBIT>>
+               <TELL "You'd better buy some first." CR>)
+              (<VERB? COUNT>
+               <TELL "Lots." CR>)
+              (<VERB? TAKE>
+               <TELL "Just drink it!" CR>)
+              (<EQUAL? ,IDENTITY-FLAG ,FORD>
+               <COND (<VERB? BUY>
+                      <COND (<NOT <FSET? ,BEER ,NDESCBIT>>
+                             <TELL "You already did!" CR>
+                             <RTRUE>)>
+                      <FCLEAR ,BEER ,NDESCBIT>
+                      <COND (<IN? ,ARTHUR ,HERE>
+                             <TELL
+"You order six pints of bitter -- three for you, three for Arthur. According
+to " D ,GUIDE " this should">
+                             <CUSHION>
+                             <TELL CR CR
+"As you drink the first pint, you mention to Arthur that you are from a
+different planet, but it makes little impression. This surprises you, because
+you thought it was the sort of thing that would interest people." CR>)
+                            (T
+                             <TELL
+"You buy yourself three pints, which you calculate you will need to">
+                             <CUSHION>
+                             <TELL
+" This is a tip you picked up from " D ,GUIDE "." CR>)>)
+                     (<VERB? DRINK ENJOY>
+                      <SETG DRUNK-LEVEL <+ ,DRUNK-LEVEL 1>>
+                      <COND (<NOT <IN? ,ARTHUR ,HERE>>
+                             <TELL ,DOWN-WELL>
+                             <CRLF>)
+                            (<EQUAL? ,DRUNK-LEVEL 1>
+                             <SETG SCORE <+ ,SCORE ,FORD-POINT>>
+                             <SETG FORD-POINT 0>
+                             <TELL
+,DOWN-WELL " At least they managed to get something right on this benighted
+planet. You decide it's time to tell Arthur that the world is about to end.
+You tell him. Arthur is completely unperturbed. Curious. You wonder what sort
+of news it would take to disturb him." CR>)
+                            (<EQUAL? ,DRUNK-LEVEL 2>
+                             <TELL ,DOWN-WELL>
+                             <SCENE-THROUGH-WINDOW>)
+                            (T
+                             <TELL "You've had enough." CR>)>)>)
+              (T
+               <COND (<VERB? DRINK ENJOY>
+                      <SETG SCORE <+ ,SCORE 5>>
+                      <SETG DRUNK-LEVEL <+ ,DRUNK-LEVEL 1>>
+                      <COND (<EQUAL? ,DRUNK-LEVEL 4>
+                             <TELL
+"You can hear the muffled noise of your home being demolished, and the
+taste of the beer sours in your mouth." CR CR>
+                             <PERFORM ,V?GET-DRUNK ,ROOMS>
+                             <RTRUE>)
+                            (<EQUAL? ,DRUNK-LEVEL 3>
+                             <ENABLE <QUEUE I-FORD -1>>
+                             <SETG HOUSE-DEMOLISHED T>
+                             <SETG PROSSER-LYING <>>
+                             <TELL
+"There is a distant crash which Ford explains is nothing to worry about,
+probably just your house being knocked down." CR>)
+                            (<EQUAL? ,DRUNK-LEVEL 2>
+                             <TELL
+"It is really very pleasant stuff, with a very good dry, nutty flavour, some
+light froth on top, and a deep colour. It is at exactly room temperature. You
+reflect that the world cannot be all bad when there are such pleasures in it.|
+|
+Ford mentions that the world is going to end in about twelve minutes." CR>)
+                            (<EQUAL? ,DRUNK-LEVEL 1>
+                             <TELL
+"It's very good beer, brewed by a small local company. You particularly like
+its flavour, which is why you woke up feeling so wretched this morning. You
+were at somebody's birthday party here in the Pub last night.|
+|
+You begin to relax and enjoy yourself, so when Ford mentions that he's from a
+small planet in the vicinity of Betelgeuse, not from Guildford as he usually
+claims, you take it in your stride, and say \"Oh yes, which part?\"" CR>)>)
+                     (<VERB? BUY>
+                      <COND (<FSET? ,BEER ,NDESCBIT>
+                             <PERFORM ,V?BUY ,PEANUTS>
+                             <RTRUE>)
+                            (T
+                             <TELL
+D ,FORD " has already bought an enormous quantity for you!" CR>)>)>)>>
+
+<OBJECT PEANUTS
+       (IN PUB)
+       (DESC "peanuts")
+       (SYNONYM PACKET PEANUT NUT NUTS)
+       (FLAGS TRYTAKEBIT NDESCBIT NARTICLEBIT EATBIT)
+       (ACTION PEANUTS-F)>
+
+<ROUTINE PEANUTS-F ()
+        <COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <VERB? BUY>>
+               <COND (,PEANUTS-BOUGHT
+                      <TELL "You did!" CR>
+                      <RTRUE>)>
+               <SETG PEANUTS-BOUGHT T>
+               <MOVE ,PEANUTS ,PROTAGONIST>
+               <FCLEAR ,PEANUTS ,TRYTAKEBIT>
+               <FCLEAR ,PEANUTS ,NDESCBIT>
+               <TELL
+"You buy some peanuts, which you'll need to replace protein loss from the"
+,BEAM ", a tip you picked up from " D ,GUIDE "." CR>)
+              (<VERB? OPEN>
+               <TELL "Just eat 'em." CR>)
+              (<AND <VERB? EAT ENJOY>
+                    ,EARTH-DEMOLISHED
+                    ,GROGGY>
+               <SETG GROGGY <>>
+               <MOVE ,PEANUTS ,PUB>
+               <FSET ,PEANUTS ,TRYTAKEBIT>
+               <FSET ,PEANUTS ,NDESCBIT>
+               <TELL
+"You feel stronger as the peanuts replace some of the protein you lost
+in the" ,BEAM "." CR>)
+              (<AND <VERB? BUY>
+                    <EQUAL? ,HERE ,PUB>>
+               <TELL
+"However much you clear your throat, wave your forefinger, or wiggle your
+eyebrows, the barman pays no attention, but carries on wiping another part
+of the bar." CR>)
+              (<AND <VERB? TAKE EAT>
+                    <FSET? ,PEANUTS ,TRYTAKEBIT>
+                    <EQUAL? ,HERE ,PUB>>
+               <TELL ,HANDS-OFF CR>)>>
+
+<OBJECT SANDWICH
+       (IN PUB)
+       (DESC "cheese sandwich")
+       (SYNONYM PLATE SANDWI)
+       (ADJECTIVE CHEESE UNINVI)
+       (FLAGS NDESCBIT EATBIT TRYTAKEBIT)
+       (SIZE 10)
+       (ACTION SANDWICH-F)>
+
+<ROUTINE SANDWICH-F ()
+        <COND (<AND <VERB? BUY>
+                    <NOT ,SANDWICH-BOUGHT>>
+               <MOVE ,SANDWICH ,PROTAGONIST>
+               <FSET ,SANDWICH ,TAKEBIT>
+               <FCLEAR ,SANDWICH ,TRYTAKEBIT>
+               <FCLEAR ,SANDWICH ,NDESCBIT>
+               <SETG SANDWICH-BOUGHT T>
+               <TELL
+"The barman gives you a " D ,SANDWICH ". The bread is like the stuff that
+stereos come packed in, the cheese would be great for rubbing out spelling
+mistakes, and margarine and pickle have performed an unedifying chemical
+reaction to produce something that shouldn't be, but is, turquoise. Since
+it is clearly unfit for human consumption you are grateful to be charged
+only a pound for it." CR>)
+              (<VERB? BUY>
+               <TELL "You already did." CR>)
+              (<AND <VERB? TAKE EAT ENJOY>
+                    <FSET? ,SANDWICH ,TRYTAKEBIT>
+                    <EQUAL? ,HERE ,PUB>>
+               <TELL ,HANDS-OFF CR>)
+              (<VERB? EAT ENJOY>
+               <MOVE ,SANDWICH ,LOCAL-GLOBALS>
+               <SETG SCORE <- ,SCORE 30>>
+               <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                      <TELL
+"You swallow with revulsion, astonished that life forms which have spent 4.6
+billion years evolving cannot produce a better " D ,SANDWICH " than this." CR>)
+                     (T
+                      <TELL
+"It is one of the least rewarding taste experiences you can recall." CR>)>)>>
+
+<GLOBAL DOG-FED <>>
+
+<GLOBAL PEANUTS-BOUGHT <>>
+
+<GLOBAL SANDWICH-BOUGHT <>>
+
+<GLOBAL VOGON-COUNTER 0>
+
+<GLOBAL FORD-GONE <>>
+
+<ROUTINE I-VOGONS ()
+        <ENABLE <QUEUE I-VOGONS -1>>
+        <SETG VOGON-COUNTER <+ ,VOGON-COUNTER 1>>
+        <COND (<EQUAL? ,VOGON-COUNTER 1>
+               <COND (<EQUAL? ,HERE ,PUB>
+                             <GO-TO-LANE>)>
+               <MOVE ,FLEET ,HERE>
+               <CRLF>
+               <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                      <MOVE ,ARTHUR ,HERE>
+                      <TELL
+"Right on schedule (according to the news you picked up last night on your
+Sub-Etha Sens-O-Matic), a huge " D ,FLEET " hurtles noisily through the sky.
+Time is very, very short. Storms break in the wake of the ships, the wind
+whips at you and makes it difficult to stand. You grab hold of a tree." CR>)
+                     (T
+                      <TELL
+"With a noise like a cross between Led Zeppelin's farewell concert and the
+eruption of Krakatoa, a huge " D ,FLEET " flies overhead and announces that
+the Earth will be demolished to make way for a new hyperspace bypass in \"two
+of your Earth minutes.\"" CR>
+                      <COND (<AND <IN? ,FORD ,HERE>
+                                  <EQUAL? ,FORD-COUNTER 0>>
+                             <MOVE ,FORD ,LOCAL-GLOBALS>
+                             <DISABLE <INT I-FORD>>
+                             <SETG FORD-GONE T>
+                             <MOVE ,TOWEL ,HERE>
+                             <FCLEAR ,TOWEL ,TRYTAKEBIT>
+                             <TELL CR
+"Ford drops the towel and dashes away." CR>)>
+                      <COND (<HELD? ,THING>
+                             <MOVE ,THING ,LOCAL-GLOBALS>
+                             <TELL CR "In all the turmoil, ">
+                             <COND (<IN? ,THING ,GOWN>
+                                    <TELL
+"the " D ,THING " drops out of your pocket and rolls away.">)
+                                   (T
+                                    <TELL
+"you drop the " D ,THING " and it rolls away.">)>
+                             <TELL
+" It is the least of your worries. Anyway," ,GET-RID CR>)>)>)
+              (<EQUAL? ,VOGON-COUNTER 2>
+               <CRLF>
+               <TELL
+"The vast yellow ships thunder across the sky, spreading waves of terror and
+panic in their wake. The voice of the " D ,VOGON-CAPTAIN " slams across the
+country, insisting that the planning charts and demolition orders have been
+available at the local planning office in Alpha Centauri for fifty years and
+it's too late to start making a fuss about it now.">
+               <CRLF>
+               <COND (,FORD-GONE
+                      <RTRUE>)>
+               <CRLF>
+               <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                      <COND (<HELD? ,THUMB ,PROTAGONIST>
+                             <COND (<IN? ,THUMB ,PROTAGONIST>
+                                    <TELL
+"The " D ,THUMB " in " D ,HANDS " begins to whine.">)
+                                   (T
+                                    <TELL
+"You remove the " D ,THUMB " from your satchel.">)>
+                             <TELL
+" Lights pulsate across its surface. " ,THUMB-FUMBLE>
+                             <MOVE ,THUMB ,HERE>
+                             <SETG P-IT-OBJECT ,THUMB>)
+                            (T
+                             <TELL
+"You wish you were holding your " D ,THUMB ".">)>
+                      <TELL
+" Arthur is struggling desperately towards you. The end of this planet is
+now only seconds away." CR>)
+                     (T
+                      <MOVE ,THUMB ,HERE>
+                      <SETG P-IT-OBJECT ,THUMB>
+                      <TELL 
+"Throughout the noise, Ford is shouting at you. He removes a small black
+device from his satchel, but accidentally drops it at your feet." CR>)>)
+              (<EQUAL? ,VOGON-COUNTER 3>
+               <CRLF>
+               <TELL
+"Fierce gales whip across the land, and thunder bangs continuously through
+the air in the wake of the giant ships. ">
+               <COND (<AND <EQUAL? ,IDENTITY-FLAG ,ARTHUR>
+                           <NOT ,FORD-GONE>>
+                      <TELL
+"Ford fights to reach you, but the wind is too fierce. Further announcements
+from the " D ,VOGON-CAPTAIN " make it clear that demolition will begin in
+just a few seconds.|
+|
+Through the blinding rain, you see lights flickering on the small device." CR>)
+                     (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                           <IN? ,THUMB ,HERE>>
+                      <COND (,FLUFF-TO-GOWN
+                             <FSET ,COUNTRY-LANE ,REVISITBIT>)>
+                      <TELL ,DRIVEN-BACK>
+                      <TELL
+" Fortunately, at this point, Arthur picks up the Thumb, and somehow
+manages to push the right button">
+                      <COND (<FSET? ,THUMB ,MUNGEDBIT>
+                             <TELL ". Unfortunately, the" ,THUMB-CLICKS>
+                             <SETG VOGON-COUNTER 4>
+                             <TELL " ">
+                             <I-VOGONS>
+                             <RTRUE>)
+                            (T
+                             <TELL "." CR CR>
+                             <JIGS-UP
+"However often you do it, you are still stunned by the shock of
+dematerialisation. The scene around is ripped away like a flimsy backcloth.">
+                             <RTRUE>)>)
+                     (T
+                      <CRLF>)>)
+              (<EQUAL? ,VOGON-COUNTER 5>
+               <TELL "The Earth is destroyed by the " D ,FLEET>
+               <COND (,FLUFF-TO-GOWN
+                      <FSET ,COUNTRY-LANE ,REVISITBIT>)>
+               <JIGS-UP ".">
+               <RTRUE>)>>
+
+<ROUTINE GO-TO-LANE ()
+        <SETG LYING-DOWN <>>
+        <TELL CR "You hear sounds of panic from the street. You ">
+        <COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <NOT <IN? ,ARTHUR ,HERE>>>
+               <TELL "leave the Pub and run into Arthur..." CR CR>)
+              (T
+               <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+                      <TELL "and Arthur">)
+                     (T
+                      <TELL "and Ford">)>
+               <TELL " rush outside..." CR CR>)>
+        <GOTO ,COUNTRY-LANE>
+        <COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
+               <MOVE ,ARTHUR ,COUNTRY-LANE>)
+              (T
+               <MOVE ,FORD ,COUNTRY-LANE>)>>
+
+<GLOBAL FORD-TABLE
+       <TABLE 0 0 0 0 0>>
+
+<OBJECT FLEET
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "fleet of Vogon Constructor ships")
+       (SYNONYM FLEET SHIP SHIPS SPACES)
+       (ADJECTIVE VOGON CONSTR HUGE UGLY YELLOW)
+       (FLAGS NDESCBIT)
+       (ACTION FLEET-F)>
+
+<ROUTINE FLEET-F ()
+        <COND (<VERB? ENJOY>
+               <TELL ,ZEN CR>)
+              (<VERB? WALK-TO THROUGH>
+               <SETG AWAITING-REPLY 11>
+               <ENABLE <QUEUE I-REPLY 2>>
+               <TELL "From here?" CR>)
+              (<AND <VERB? EXAMINE>
+                    <NOT <EQUAL? ,HERE ,HOLD ,AIRLOCK ,CAPTAINS-QUARTERS>>>
+               <TELL
+"The fleet consists of terrifying numbers of huge, ugly, yellow ships, all
+scarred with the results of many such past demolition jobs. Chicago's John
+Hancock tower, knocked about a bit and painted yellow, is what they each look
+like. That is, knocked about a bit, painted yellow, and flying." CR>)>>
+
+<GLOBAL EARTH-DEMOLISHED <>>
+
+<ROUTINE LEAVE-EARTH ()
+        <DISABLE <INT I-HOUSEWRECK>>
+        <DISABLE <INT I-BULLDOZER>>
+        <DISABLE <INT I-PROSSER>>
+        <DISABLE <INT I-FORD>>
+        <DISABLE <INT I-VOGONS>>
+        <SETG HEADACHE <>>
+        <SETG BULLDOZER-COUNTER 0>
+        <SETG PROSSER-COUNTER 0>
+        <SETG PROSSER-LYING <>>
+        <SETG FORD-COUNTER 0>
+        <SETG DRUNK-LEVEL 0>
+        <SETG HOUSE-DEMOLISHED <>>
+        <SETG VOGON-COUNTER 0>
+        <SETG EARTH-DEMOLISHED T>
+        <SETG IDENTITY-FLAG ,ARTHUR>
+        <MOVE ,ARTHUR ,GLOBAL-OBJECTS>
+        <MOVE ,DOG ,LOCAL-GLOBALS>
+        <MOVE ,FLEET ,LOCAL-GLOBALS>
+        <MOVE ,FORD ,LOCAL-GLOBALS>
+        <COND (<AND <NOT <HELD? ,SANDWICH>>
+                    ,SANDWICH-BOUGHT>
+               <MOVE ,SANDWICH ,LOCAL-GLOBALS>)>
+        <FSET ,BEER ,NDESCBIT>
+        <FCLEAR ,PROSSER ,TOUCHBIT>
+        <FCLEAR ,FRONT-OF-HOUSE ,NDESCBIT>
+        <FCLEAR ,FRONT-OF-HOUSE ,TOUCHBIT>
+        <FCLEAR ,COUNTRY-LANE ,TOUCHBIT>>
+
+;"second time around"
+
+<OBJECT ARTHUR
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "Arthur Dent")
+       (LDESC "Arthur Dent is here.")
+       (SYNONYM ARTHUR DENT)
+       (ADJECTIVE ARTHUR)
+       (FLAGS NARTICLEBIT VOWELBIT ACTORBIT)
+       (ACTION ARTHUR-F)>
+
+<ROUTINE ARTHUR-F ()
+        <COND (<EQUAL? ,IDENTITY-FLAG ,ARTHUR>
+               <COND (<EQUAL? ,ARTHUR ,PRSO>
+                      <PERFORM ,PRSA ,ME ,PRSI>
+                      <RTRUE>)
+                     (T
+                      <PERFORM ,PRSA ,PRSO ,ME>
+                      <RTRUE>)>)
+              (<EQUAL? ,ARTHUR ,WINNER>
+               <COND (<IN? ,FLEET ,HERE>
+                      <TELL ,ABOVE-NOISE CR>)
+                     (<AND <VERB? FOLLOW>
+                           <EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                           <PRSO? ,ME>>
+                      <COND (,PROSSER-LYING
+                             <TELL "Arthur seems willing to do so." CR>)
+                            (T
+                             <BUT-THAT-MAN "Arthur exclaims">
+                             <CRLF>)>)
+                     (<AND <VERB? DRINK>
+                           <PRSO? ,BEER>>
+                      <COND (<FSET? ,BEER ,NDESCBIT>
+                             <SETG WINNER ,PROTAGONIST>
+                             <PERFORM ,V?DRINK ,BEER>
+                             <SETG WINNER ,ARTHUR>
+                             <RTRUE>)
+                            (T
+                             <TELL
+"Arthur seems to be waiting to follow your lead." CR>)>)
+                     (T
+                      <TELL "Arthur looks too confused to respond." CR>)>
+               <FUCKING-CLEAR>)
+              (<AND <VERB? HELLO TELL ASK-FOR ASK-ABOUT TELL-ABOUT>
+                    <EQUAL? ,IDENTITY-FLAG ,TRILLIAN>
+                    <PRSO? ,ARTHUR>>
+               <COND (,FLUFF-REMOVED
+                      <I-ARTHUR>)
+                     (T
+                      <TELL
+"You approach Arthur. He seems to find your tone a little cool, smiles
+unhappily, and wanders to the other end of the room." CR>)>
+               <ENABLE <QUEUE I-ARTHUR 2>>
+               <FUCKING-CLEAR>)
+              (<AND <VERB? TELL-ABOUT ASK-ABOUT ASK-FOR>
+                    <PRSO? ,ARTHUR>
+                    <EQUAL? ,IDENTITY-FLAG ,TRILLIAN>>
+               <PERFORM ,V?HELLO ,ARTHUR>
+               <RTRUE>)
+              (<AND <VERB? CARVE>
+                    <PRSI? ,MEMORIAL>>
+               <PERFORM ,V?CARVE ,YOUR-NAME ,MEMORIAL>
+               <RTRUE>)
+              (<AND <VERB? GIVE>
+                    <PRSO? ,TOWEL>
+                    <EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                    <NOT ,TOWEL-OFFERED>>
+               <SETG TOWEL-OFFERED T>
+               <TELL
+"Inexplicably, Arthur takes no notice of the towel which, magnificently, you
+are trying to return to him. Instead, he says, \"Ford, what about my home?\"|
+|
+You start guiltily. Does he actually KNOW that the Earth is about to be
+destroyed? You start to ask him, then stop. If he knows, what the Zark is he
+doing lying here in the mud in front of...|
+|
+You look around. You notice the " D ,BULLDOZER " properly for the first time.
+You notice Arthur's house. You notice the workmen. The penny drops. His HOUSE
+is about to be demolished. You feel like a complete...what's the word?">
+               <COND (<IDIOT?>
+                      <TELL
+"Thank you. An idiot is exactly what you feel like.">)
+                     (T
+                      <TELL
+"No, actually, \"idiot\" was the word I was looking for.">)>
+               <TELL CR CR
+"In a reckless moment you go completely mad and decide that you ought to take
+Arthur with you. You try to tell Arthur about the importance of getting a
+drink, but he's rambling on about a man called Prosser." CR>
+               <RFATAL>)
+              (<AND <PRSO? ,SANDWICH>
+                    <VERB? GIVE>>
+               <MOVE ,SANDWICH ,ARTHUR>
+               <TELL
+"Arthur takes it, sniffs it suspiciously, and wisely decides that it's
+safer in his pocket than in his stomach." CR>)
+              (<AND <VERB? GIVE>
+                    <PRSO? ,SATCHEL-FLUFF>>
+               <COND (,HOUSE-DEMOLISHED
+                      <MOVE ,SATCHEL-FLUFF ,LOCAL-GLOBALS>
+                      <SETG FLUFF-TO-GOWN T>
+                      <TELL
+"Arthur hiccups, takes the fluff, and sticks it in his pocket." CR>)
+                     (T
+                      <TELL
+"Arthur blinks several times, but doesn't take the fluff. Perhaps if he
+had a few drinks in him..." CR>)>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,IDENTITY-FLAG ,TRILLIAN>>
+               <TELL
+"Arthur seems nice and well meaning, but also terribly shy.">
+               <COND (<NOT ,FLUFF-REMOVED>
+                      <MOVE ,JACKET-FLUFF ,HERE>
+                      <ENABLE <QUEUE I-ARTHUR -1>>
+                      <TELL
+" He has tried to start a " D ,CONVERSATION " with you several times, but still
+hasn't gotten past \"Hello.\" He has an enormous, unsightly ball of fluff
+on his jacket.">)>
+               <CRLF>)
+              (<AND <VERB? FOLLOW>
+                    <EQUAL? ,FOLLOW-FLAG 4>>
+               <DO-WALK ,P?EAST>)
+              (<AND <VERB? PICK-UP>
+                    <EQUAL? ,IDENTITY-FLAG ,TRILLIAN>>
+               <PERFORM ,V?PICK-UP ,ZAPHOD>
+               <RTRUE>)
+              (<AND <VERB? LISTEN>
+                    <EQUAL? ,IDENTITY-FLAG ,TRILLIAN>
+                    ,FLUFF-REMOVED>
+               <TELL "Unfortunately, you seem to have no choice." CR>)>> 
+
+<ROUTINE IDIOT? ()
+        <CRLF> <CRLF>
+        <PRINTI ">">
+        <READ ,P-INBUF ,P-LEXV>
+        <COND (<EQUAL? <GET ,P-LEXV 1> ,W?IDIOT>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<GLOBAL UNEASY-COUNTER 0>
+
+<GLOBAL IDENTITY-FLAG <>>
+
+<ROUTINE I-UNEASY ()
+        <SETG UNEASY-COUNTER <+ ,UNEASY-COUNTER 1>>
+        <COND (<NOT <EQUAL? ,HERE ,PUB>>
+               <DISABLE <INT I-UNEASY>>
+               <RFALSE>)>
+        <CRLF>
+        <COND (<EQUAL? ,UNEASY-COUNTER 1>
+               <TELL "You feel uneasy about something." CR>)
+              (<EQUAL? ,UNEASY-COUNTER 2 3 4>
+               <TELL "You still feel uneasy." CR>)
+              (T
+               <TELL
+"The sense of uneasiness you've been so busy ignoring now utterly engulfs you,
+as you realise that you've broken the fundamental rule of time travel: \"Do as
+you would have done by.\" The rational foundation of the Universe crashes and
+within a few seconds the whole of creation ceases ever to have exis" CR CR CR>
+               <QUIT>)>>
+
+<ROUTINE I-ARTHUR ()
+        <ENABLE <QUEUE I-ARTHUR -1>>
+        <COND (<EQUAL? ,IDENTITY-FLAG ,TRILLIAN>
+               <COND (,FLUFF-REMOVED
+                      <CRLF>
+                      <COND (<NOT <IN? ,ARTHUR ,HERE>>
+                             <MOVE ,ARTHUR ,HERE>
+                             <TELL
+"Arthur follows you like an eager puppy." CR>)
+                            (T
+                             <TELL
+"Arthur tries, unsuccessfully, to interest you by talking about "
+<PICK-ONE ,BORES> CR>)>)
+                     (<PROB 20>
+                      <MOVE ,ARTHUR ,HERE>
+                      <MOVE ,JACKET-FLUFF ,HERE>
+                      <TELL CR
+"Arthur walks up and says \"Hello, again.\" He looks shy, embarrassed and stuck
+for anything else to say, and quickly walks to the other end of the room." CR>)
+                     (T
+                      <RFALSE>)>)
+              (<IN? ,ARTHUR ,HERE>
+               <RFALSE>)
+              (T
+               <MOVE ,ARTHUR ,HERE>
+               <TELL "Arthur follows you." CR>)>>
+
+<GLOBAL BORES
+       <PLTABLE
+"newts he has known."
+"cricket."
+"how badly Americans make tea."
+"the deteriorating condition of the motorways."
+"a recent visit to Tiverton."
+"a new book by Douglas Adams."
+"computers.">>
+
+<ROUTINE SCENE-THROUGH-WINDOW ()
+        <MOVE ,ARTHUR ,FRONT-OF-HOUSE>
+        <DISABLE <INT I-ARTHUR>>
+        <SETG HOUSE-DEMOLISHED T>
+        <SETG PROSSER-LYING <>>
+        <SETG FOLLOW-FLAG 4>
+        <ENABLE <QUEUE I-FOLLOW 2>>
+        <TELL
+" You hear a muffled crash. It's probably Arthur's little house getting knocked
+down, which you tell him. This DOES upset him, and he tears out the door.|
+|
+Through the window, you see him running up the lane. A small dog chases after
+him, yapping, ">
+        <COND (<OR ,DOG-FED
+                   <IN? ,SANDWICH ,ARTHUR>>
+               <SETG DOG-FED T>
+               <TELL "and he throws it a " D ,SANDWICH
+". The dog devours the sandwich" ,WITH-PASSION CR>)
+              (T
+               <TELL "but he ignores it. The dog gulps uncomfortably." CR>)>>
\ No newline at end of file
diff --git a/globals.zil b/globals.zil
new file mode 100644 (file)
index 0000000..8280612
--- /dev/null
@@ -0,0 +1,2187 @@
+"GLOBALS for
+                 THE HITCHHIKER'S GUIDE TO THE GALAXY
+       (c) Copyright 1984 Infocom, Inc.  All Rights Reserved."
+
+<DIRECTIONS ;"Do not change the order of the first 8 without consulting MARC!"
+           NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
+
+<GLOBAL LYING-DOWN <>>
+
+<GLOBAL HERE <>>
+
+<GLOBAL LIT <>>
+
+<GLOBAL MOVES 0>
+
+<GLOBAL SCORE 0>
+
+<GLOBAL INDENTS
+       <PTABLE ""
+               "  "
+               "    "
+               "      "
+               "        "
+               "          ">>
+
+;"global objects and associated routines"
+
+<OBJECT GLOBAL-OBJECTS
+       (FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT REVISITBIT
+              SEARCHBIT TRANSBIT WEARBIT MUNGEDBIT ONBIT RLANDBIT WORNBIT)>
+
+<OBJECT LOCAL-GLOBALS
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM ZZMGCK)
+       (DESCFCN 0)
+        (GLOBAL GLOBAL-OBJECTS)
+       (FDESC "F")
+       (LDESC "F")
+       (PSEUDO "FOOBAR" V-WALK)
+       (SIZE 0)
+       (TEXT "")
+       (CAPACITY 0)>
+;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
+
+<OBJECT ROOMS
+       (IN TO ROOMS)>
+
+<OBJECT INTNUM
+       (IN GLOBAL-OBJECTS)
+       (DESC "number")
+       (SYNONYM INTNUM)
+       (ADJECTIVE NUMBER)>
+
+<OBJECT PSEUDO-OBJECT
+       (DESC "pseudo")
+       (ACTION ME-F)>
+
+<OBJECT IT
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM IT THEM HER HIM)
+       (DESC "it")
+       (FLAGS VOWELBIT NARTICLEBIT NDESCBIT TOUCHBIT)>
+
+<OBJECT NOT-HERE-OBJECT
+       (DESC "it")
+       (FLAGS NARTICLEBIT)
+       (ACTION NOT-HERE-OBJECT-F)>
+
+<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ (X <>))
+        <COND (<AND <PRSO? ,NOT-HERE-OBJECT>
+                    <PRSI? ,NOT-HERE-OBJECT>>
+               <TELL "Those things aren't here!" CR>
+               <RTRUE>)
+              (<PRSO? ,NOT-HERE-OBJECT>
+               <SET TBL ,P-PRSO>)
+              (T
+               <SET TBL ,P-PRSI>
+               <SET PRSO? <>>)>
+        <COND (.PRSO?
+               <COND (<OR <EQUAL? ,PRSA ,V?FIND ,V?FOLLOW ,V?CALL>
+                          <EQUAL? ,PRSA ,V?WHAT ,V?WHERE ,V?WHO>
+                          <EQUAL? ,PRSA ,V?WAIT-FOR ,V?WALK-TO ,V?WHAT-ABOUT>
+                          <EQUAL? ,PRSA ,V?I-AM ,V?CARVE ,V?CALL-WITH>>
+                      <SET X T>
+                      <COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
+                             <COND (<NOT <EQUAL? .OBJ ,NOT-HERE-OBJECT>>
+                                    <RTRUE>)>)
+                            (T
+                             <RFALSE>)>)>)
+              
+              (T
+               <COND (<OR <EQUAL? ,PRSA ,V?ASK-ABOUT ,V?ASK-FOR ,V?TELL-ABOUT>
+                          <EQUAL? ,PRSA ,V?MY-NAME>>
+                      <SET X T>
+                      <COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
+                             <COND (<NOT <EQUAL? .OBJ ,NOT-HERE-OBJECT>>
+                                    <RTRUE>)>)
+                            (T
+                             <RFALSE>)>)>)>
+;"Here is the default 'cant see any' printer"
+        <COND (.X
+               <TELL "You'll have to be more specific, I'm afraid." CR>)
+              (<EQUAL? ,WINNER ,PROTAGONIST>
+               <TELL "You can't ">
+               <COND (<EQUAL? ,P-XNAM ,W?POEM ,W?POETRY ,W?CONVER>
+                      <TELL "hear">)
+                     (T
+                      <TELL "see">)>
+               <COND (<NOT <NAME? ,P-XNAM>>
+                      <TELL " any">)> 
+               <NOT-HERE-PRINT .PRSO?>
+               <TELL " here!" CR>)
+              (<OR <AND <EQUAL? ,WINNER ,FORD>
+                        ,FORD-SLEEPING>
+                   <AND <EQUAL? ,WINNER ,BEAST>
+                        <FSET? ,BEAST ,MUNGEDBIT>>>
+               <RFALSE>)
+              (T
+               <TELL "Looking confused,">
+               <ARTICLE ,WINNER T>
+               <TELL " says, \"I don't see">
+               <COND (<NOT <NAME? ,P-XNAM>>
+                      <TELL " any">)>
+               <NOT-HERE-PRINT .PRSO?>
+               <TELL " here!\"" CR>)>
+        <FUCKING-CLEAR>>
+
+<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
+;"Special-case code goes here. <MOBY-FIND .TBL> returns # of matches. If 1,
+then P-MOBY-FOUND is it. You can treat the 0 and >1 cases alike or differently.
+Always return RFALSE (not handled) if you have resolved the problem."
+       <SET M-F <MOBY-FIND .TBL>>
+       ;<COND (,DEBUG
+              <TELL "[Found " N .M-F " obj]" CR>)>
+       <COND (<EQUAL? 1 .M-F>
+              ;<COND (,DEBUG
+                     <TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>
+              <COND (.PRSO?
+                     <SETG PRSO ,P-MOBY-FOUND>)
+                    (T
+                     <SETG PRSI ,P-MOBY-FOUND>)>
+              <RFALSE>)
+             (<EQUAL? ,P-XNAM ,W?FLUFF>
+              <COND (.PRSO?
+                     <SETG PRSO ,POCKET-FLUFF>)
+                    (T
+                     <SETG PRSI ,POCKET-FLUFF>)>
+              <RFALSE>)
+             (<EQUAL? ,P-XNAM ,W?TOOL ,W?TOOLS>
+              <COND (.PRSO?
+                     <SETG PRSO ,TWEEZERS>)
+                    (T
+                     <SETG PRSI ,TWEEZERS>)>
+              <RFALSE>)
+             (T
+              ,NOT-HERE-OBJECT)>>
+
+<ROUTINE NOT-HERE-PRINT (PRSO?)
+        <COND ;(<NAME? ,P-XNAM>
+               <TELL "one by that name">)
+              (,P-OFLAG
+               <COND (,P-XADJ
+                      <TELL " ">
+                      <PRINTB ,P-XADJN>)>
+               <COND (,P-XNAM
+                      <TELL " ">
+                      <PRINTB ,P-XNAM>)>)
+               (.PRSO?
+               <BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
+               (T
+               <BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
+
+<OBJECT LIGHT
+       (IN GLOBAL-OBJECTS)
+       (DESC "light")
+       (SYNONYM LIGHT LIGHTS LAMP)
+       (FLAGS LIGHTBIT)
+        (ACTION LIGHT-F)>
+
+<ROUTINE LIGHT-F ()
+        <COND (<AND <OR <IN? ,FLEET ,HERE>
+                        <EQUAL? ,HERE ,AIRLOCK ,INSIDE-WHALE>>
+                    <VISIBLE? ,THUMB>>
+               <COND (<EQUAL? ,LIGHT ,PRSI>
+                      <PERFORM ,PRSA ,PRSO ,THUMB>
+                      <RTRUE>)
+                     (T
+                      <PERFORM ,PRSA ,THUMB ,PRSI>
+                      <RTRUE>)>)
+              (<EQUAL? ,HERE ,GALLEY>
+               <UNIMPORTANT-THING-F>)
+              (<AND <EQUAL? ,LIGHT ,PRSO>
+                    <VERB? FIND FOLLOW WHAT WHERE WALK-TO WHAT-ABOUT>>
+               <RFALSE>)
+              (<AND <EQUAL? ,LIGHT ,PRSI>
+                    <VERB? ASK-ABOUT TELL-ABOUT>>
+               <RFALSE>)
+              (<NOT <EQUAL? ,HERE ,BEDROOM>>
+               <CANT-SEE ,LIGHT>)
+              (<VERB? LAMP-ON>
+               <COND (<FSET? ,HERE ,ONBIT>
+                      <TELL "It is." CR>)
+                     (T
+                      <SETG LIT T>
+                      <FSET ,HERE ,ONBIT>
+                      <FSET ,DARK-OBJECT ,DARKBIT>
+                      <MOVE ,DARK-OBJECT ,DARK>
+                      <TELL
+"Good start to the day. Pity it's going to be the worst one of your
+life. The light is now on." CR CR>
+                      <V-LOOK>)>)
+              (<VERB? LAMP-OFF>
+               <V-DIG>)>>
+
+<OBJECT GLOBAL-SLEEP
+       (IN GLOBAL-OBJECTS)
+       (DESC "sleep")
+       (SYNONYM SLEEP NAP SNOOZE)
+       (FLAGS NARTICLEBIT)
+       (ACTION GLOBAL-SLEEP-F)>
+
+<ROUTINE GLOBAL-SLEEP-F ()
+        <COND (<VERB? WALK-TO TAKE>
+               <PERFORM ,V?SLEEP>
+               <RTRUE>)>>
+
+<OBJECT SPEECH
+       (IN GLOBAL-OBJECTS)
+       (DESC "speech")
+       (SYNONYM SPEECH)
+       (ACTION SPEECH-F)>
+
+<ROUTINE SPEECH-F ()
+        <COND (<VERB? GIVE MAKE>
+               <TELL "This isn't the time">
+               <COND (<NOT <EQUAL? ,HERE ,DAIS>>
+                      <TELL " or the place">)>
+               <TELL " for making speeches." CR>)
+              (<VERB? READ>
+               <TELL "It's extemporaneous." CR>)>>
+
+<OBJECT GROUND
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM FLOOR GROUND MUD)
+       (DESC "ground")
+       (ACTION GROUND-F)>
+
+<ROUTINE GROUND-F ()
+        <COND (<AND <VERB? THROUGH>
+                    <EQUAL? ,HERE ,ACCESS-SPACE>>
+               <TELL "The mesh is too fine." CR>)
+              (<VERB? CLIMB-UP CLIMB-ON CLIMB-FOO BOARD>
+               <V-DIG>)
+              (<VERB? LOOK-UNDER>
+               <V-COUNT>)
+              (<VERB? LEAVE>
+               <DO-WALK ,P?UP>)
+              (<VERB? LIE-DOWN>
+               <COND (<IN? ,PROTAGONIST ,BED>
+                      <OUT-OF-FIRST ,BED>)
+                     (,LYING-DOWN
+                      <TELL ,YOU-ARE CR>)
+                     (<EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                      <PERFORM ,V?BLOCK ,BULLDOZER>
+                      <SETG P-IT-OBJECT ,GROUND>
+                      <RTRUE>)
+                     (T
+                      <SETG LYING-DOWN T>
+                      <TELL "You are now lying on the ground." CR>)>)
+              (<VERB? EXAMINE>
+               <COND (<EQUAL? ,HERE ,GUTS-ROOM>
+                      <TELL
+"The walls, floor, and ceiling are covered with little pieces of
+flesh and bone." CR>)
+                     (<EQUAL? ,HERE ,ACCESS-SPACE>
+                      <TELL
+"The floor is an open metal mesh, like the floor of a catwalk." CR>)>)
+              (<AND <VERB? LOOK-INSIDE>
+                    <EQUAL? ,HERE ,ACCESS-SPACE>>
+               <PERFORM ,V?LOOK-INSIDE ,FISH-HOLE>
+               <SETG P-IT-OBJECT ,GROUND>
+               <RTRUE>)
+              (<AND <VERB? ENJOY>
+                    <EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                    ,LYING-DOWN>
+               <TELL
+"It occurs to you that you've never deliberately lain in any mud before and
+that it's actually a pleasant sort of squishy sensation. You let the mud ooze
+between your toes. You may be here for some time, so you may as well make the
+most of it." CR>)>>
+
+<OBJECT WALLS
+       (IN GLOBAL-OBJECTS)
+       (FLAGS NDESCBIT TOUCHBIT)
+       (DESC "wall")
+       (SYNONYM WALL WALLS)
+       (ACTION WALLS-F)>
+
+<ROUTINE WALLS-F ()
+        <COND (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,GUTS-ROOM>>
+               <PERFORM ,V?EXAMINE ,GROUND>
+               <RTRUE>)>>
+
+<OBJECT CEILING
+       (IN GLOBAL-OBJECTS)
+       (FLAGS NDESCBIT TOUCHBIT)
+       (DESC "ceiling")
+       (SYNONYM CEILIN ROOF)
+       (ACTION CEILING-F)>
+
+<ROUTINE CEILING-F ()
+        <COND (<VERB? LOOK-UNDER>
+               <PERFORM ,V?LOOK>
+               <RTRUE>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,GUTS-ROOM>>
+               <PERFORM ,V?EXAMINE ,GROUND>
+               <RTRUE>)>>
+
+<OBJECT WINDOW
+       (IN LOCAL-GLOBALS)
+       (DESC "window")
+       (SYNONYM WINDOW)
+       (FLAGS TRANSBIT)
+       (ACTION WINDOW-F)>
+
+<ROUTINE WINDOW-F ()
+        <COND (<NOT ,LIT>
+               <TELL ,TOO-DARK CR>)
+              (<VERB? MUNG>
+               <PERFORM ,V?KILL ,WINDOW>
+               <RTRUE>)
+              (<EQUAL? ,HERE ,BEDROOM>
+               <COND (<VERB? LOOK-INSIDE EXAMINE>
+                      <PERFORM ,V?OPEN ,CURTAINS>
+                      <RTRUE>)
+                     (<VERB? OPEN CLOSE>
+                      <TELL
+"The bloody thing's been jammed shut for months, now." CR>)>)
+              (<VERB? LOOK-INSIDE>
+               <TELL "You see the country lane." CR>)
+              (<VERB? OPEN CLOSE>
+               <TELL ,BUDGE CR>)>>
+
+<OBJECT STAIRS
+       (IN LOCAL-GLOBALS)
+       (DESC "stairs")
+       (SYNONYM STAIR STAIRS STAIRW GANGWA)
+       (FLAGS NARTICLEBIT NDESCBIT)
+       (ACTION STAIRS-F)>
+
+<ROUTINE STAIRS-F ()
+        <COND (<VERB? CLIMB-UP CLIMB-FOO>
+               <DO-WALK ,P?UP>)
+              (<VERB? CLIMB-DOWN>
+               <DO-WALK ,P?DOWN>)>>
+
+<OBJECT AIR
+       (IN GLOBAL-OBJECTS)
+       (DESC "air")
+       (SYNONYM AIR)
+       (FLAGS VOWELBIT)>
+
+<OBJECT SKY
+       (IN GLOBAL-OBJECTS)
+       (DESC "sky")
+       (SYNONYM SKY)
+       (ACTION SKY-F)>
+
+<ROUTINE SKY-F ()
+        <COND (<NOT <FSET? ,HERE ,OUTSIDEBIT>>
+               <CANT-SEE ,SKY>)
+              (<AND <IN? ,FLEET ,HERE>
+                    <VERB? EXAMINE>>
+               <TELL
+"The sky is filled with the ships of the " D ,FLEET "." CR>)>>
+
+<OBJECT STAR
+       (IN GLOBAL-OBJECTS)
+       (DESC "sun")
+       (SYNONYM STAR SUN SYSTEM SOL)
+       (ADJECTIVE APPROA STAR SOLAR SMALL UNREGA YELLOW ORANGE)
+       (FLAGS NDESCBIT)
+       (ACTION STAR-F)>
+
+<ROUTINE STAR-F ()
+     <COND (<VERB? EXAMINE>
+           <COND (<EQUAL? ,HERE ,WAR-CHAMBER>
+                  <TELL
+"The approaching star is a small, unregarded yellow sun, with nine planets of
+varying sizes. The " D ,THIRD-PLANET " catches your attention.">
+                  <CRLF>)
+                 (<EQUAL? ,HERE ,DAIS ,SPEEDBOAT>
+                  <TELL "The sun is a smallish orange star." CR>)
+                 (<EQUAL? ,HERE ,FRONT-OF-HOUSE ,COUNTRY-LANE ,BACK-OF-HOUSE>
+                  <TELL "The sun is a smallish yellow star." CR>)
+                 (T
+                  <CANT-SEE ,STAR>)>)>>
+
+<OBJECT HANDS
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM HANDS HAND)
+       (ADJECTIVE BARE MY YOUR)
+       (DESC "your hand")
+       (FLAGS NDESCBIT TOUCHBIT NARTICLEBIT)
+       (ACTION HANDS-F)>
+
+<ROUTINE HANDS-F (ACTOR)
+        <COND (<VERB? WAVE>
+               <SETG PRSO <>>
+               <PERFORM ,V?WAVE-AT>
+               <RTRUE>)
+              (<VERB? SHAKE>
+               <COND (<SET ACTOR <FIND-IN ,HERE ,ACTORBIT>>
+                      <PERFORM ,V?THANK .ACTOR>
+                      <RTRUE>)
+                     (T
+                      <TELL "Pleased to meet you." CR>)>)>>
+
+<OBJECT TEETH
+       (IN GLOBAL-OBJECTS)
+       (DESC "your teeth")
+       (SYNONYM TEETH)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT HEAD
+       (IN GLOBAL-OBJECTS)
+       (DESC "your head")
+       (SYNONYM HEAD FACE)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT EYES
+       (IN GLOBAL-OBJECTS)
+       (DESC "your eyes")
+       (SYNONYM EYE EYES)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)
+       (ACTION EYES-F)>
+
+<ROUTINE EYES-F ()
+        <COND (<VERB? OPEN>
+               <TELL "They are." CR>)
+              (<VERB? CLOSE>
+               <COND (<IN? ,BEAST ,HERE>
+                      <TELL "The Beast doesn't notice." ,GETTING-CLOSE CR>)
+                     (T
+                      <TELL "That won't help." CR>)>)>>
+
+<OBJECT EARS
+       (IN GLOBAL-OBJECTS)
+       (DESC "your ears")
+       (SYNONYM EAR EARS)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT PROTAGONIST
+       (SYNONYM PROTAG)
+       (DESC "it")
+       (FLAGS NDESCBIT INVISIBLE)
+       (ACTION PROTAGONIST-F)>
+
+<ROUTINE PROTAGONIST-F ()
+        <COND (<AND <PRSO? ,NO-TEA>
+                    ,PRSI>
+               <NO-TEA-F>)>>
+
+<OBJECT ME
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM I ME MYSELF SELF)
+       (DESC "yourself")
+       (FLAGS ACTORBIT TOUCHBIT NARTICLEBIT)
+       (ACTION ME-F)>
+
+<ROUTINE ME-F ("AUX" OLIT) 
+        <COND (<VERB? TELL>
+               <TELL
+"Talking to yourself is a sign of impending mental collapse." CR>
+               <FUCKING-CLEAR>)
+              (<VERB? LISTEN>
+               <TELL "Yes?" CR>)
+              (<VERB? ALARM>
+               <TELL ,YOU-ARE CR>)
+              (<AND <VERB? GIVE>
+                    <PRSI? ,ME>>
+               <COND (<AND <IN? ,PRSO ,PROTAGONIST>
+                           <NOT <PRSO? ,NO-TEA ,BABEL-FISH>>>
+                      <PRE-TAKE>)
+                     (T
+                      <PERFORM ,V?TAKE ,PRSO>
+                      <RTRUE>)>)
+              (<VERB? MOVE>
+               <V-WALK-AROUND>)
+              (<VERB? SEARCH>
+               <V-INVENTORY>
+               <RTRUE>)
+              (<OR <VERB? KILL MUNG>
+                   <AND <VERB? SHOOT>
+                        <PRSI? ,BLASTER>>>
+               <JIGS-UP "Done.">
+               <RTRUE>)
+              (<VERB? FIND>
+               <TELL "You're right here!" CR>)
+              (<VERB? WHO>
+               <TELL "You are " D ,IDENTITY-FLAG "." CR>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,MAZE>>
+               <TELL
+"You look perfectly normal (except that you're two microns tall)." CR>)
+              (<VERB? PULL-TOGETHER>
+               <TELL ,ZEN CR>)
+              (<VERB? FOLLOW>
+               <TELL
+"I'd like to, but like most computers I don't have legs." CR>)>>
+
+<OBJECT GLOBAL-ROOM
+       (IN GLOBAL-OBJECTS)
+       (DESC "room")
+       (SYNONYM ROOM CHAMBER PLACE HALL)
+       (ADJECTIVE AREA)
+       (ACTION GLOBAL-ROOM-F)>
+
+<ROUTINE GLOBAL-ROOM-F ()
+        <COND (<VERB? LOOK EXAMINE LOOK-INSIDE>
+               <V-LOOK>
+               <RTRUE>)
+              (<VERB? THROUGH WALK-TO>
+               <V-WALK-AROUND>)
+              (<VERB? LEAVE EXIT>
+               <DO-WALK ,P?OUT>)
+              (<VERB? WALK-AROUND>
+               <COND (<EQUAL? ,HERE ,CAPTAINS-QUARTERS>
+                      <V-STAND>)
+                     (T
+                      <TELL
+"Walking around the room reveals nothing new. To move elsewhere, just type
+the desired direction." CR>)>)
+              (<VERB? LAMP-ON>
+               <PERFORM ,V?LAMP-ON ,LIGHT>
+               <RTRUE>)>>
+
+<OBJECT OBJECT-OF-GAME
+       (IN GLOBAL-OBJECTS)
+       (DESC "object of the game")
+       (SYNONYM OBJECT GAME GOAL)
+       (FLAGS VOWELBIT)
+       (ACTION OBJECT-OF-GAME-F)>
+
+<ROUTINE OBJECT-OF-GAME-F ()
+        <COND (<VERB? WHAT>
+               <TELL "That's for me to know and you to find out." CR>)>>
+
+<OBJECT CONTROLS
+       (IN LOCAL-GLOBALS)
+       (DESC "the controls")
+       (SYNONYM CONTRO PANEL CONSOL)
+       (ADJECTIVE CONTRO)
+       (FLAGS NARTICLEBIT)
+       (ACTION CONTROLS-F)>
+
+<ROUTINE CONTROLS-F ()
+        <COND (<VERB? EXAMINE>
+               <COND (<EQUAL? ,HERE ,SPEEDBOAT>
+                      <TELL
+"The only control, other than those related to steering the boat, is the large
+red " D ,AUTOPILOT-BUTTON ".">
+                      <FINE-PRODUCT>
+                      <CRLF>)
+                     (<EQUAL? ,HERE ,BRIDGE>
+                      <TELL
+"Most of the controls are beyond your comprehension. ">
+                      <COND (<IN? ,LARGE-RECEPTACLE ,HERE>
+                             <TELL
+"The simplest one is a " D ,LARGE-RECEPTACLE " of some kind.">
+                             <COND (,DRIVE-TO-CONTROLS
+                                    <TELL " ">
+                                    <PERFORM ,V?EXAMINE ,LARGE-RECEPTACLE>
+                                    <RTRUE>)
+                                   (T
+                                    <CRLF>)>)
+                            (T
+                             <TELL
+"A fused spot shows where a receptacle once was." CR>)>)>)>>
+
+<OBJECT CONVERSATION
+       (IN LOCAL-GLOBALS)
+       (DESC "conversation")
+       (SYNONYM CONVER)
+       (FLAGS DARKBIT INVISIBLE)
+       (ACTION CONVERSATION-F)>
+
+<ROUTINE CONVERSATION-F ()
+        <COND (<VERB? LISTEN>
+               <COND (<EQUAL? ,HERE ,FRONT-OF-HOUSE>
+                      <TELL "You can't hear anything from here." CR>)
+                     (T
+                      <PERFORM ,V?LISTEN ,VLHURG>
+                      <RTRUE>)>)>>
+
+<OBJECT GUARDS
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "one of the guards")
+       (SYNONYM ONE GUARD GUARDS)
+       (ADJECTIVE VOGON)
+        (FLAGS VOWELBIT NARTICLEBIT NDESCBIT ACTORBIT
+              CONTBIT SEARCHBIT OPENBIT)
+       (ACTION GUARDS-F)>
+
+<ROUTINE GUARDS-F ()
+        <COND (<EQUAL? ,GUARDS ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,GUARDS ,PRSI>
+                      <SETG WINNER ,GUARDS>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,GUARDS>
+                      <SETG WINNER ,GUARDS>
+                      <RTRUE>)
+                     (<EQUAL? ,HERE ,DAIS>
+                      <COND (<OR <AND <IN? ,RIFLES ,GUARDS>
+                                      <VERB? SHOOT>
+                                      ,DONT-FLAG>
+                                 <AND <IN? ,RIFLES ,GUARDS>
+                                      <VERB? DROP>
+                                      <PRSO? ,RIFLES>>>
+                             <FCLEAR ,RIFLES ,NDESCBIT>
+                             <ENABLE <QUEUE I-GUARDS 8>>
+                             <MOVE ,RIFLES ,HERE>
+                             <FSET ,RIFLES ,TAKEBIT>
+                             <FSET ,RIFLES ,TRYTAKEBIT>
+                             <TELL "The guards hesitate, then toss their "
+D ,RIFLES "s into a pile in front of you." CR>)
+                            (<VERB? SHOOT>
+                             <COND (<IN? ,RIFLES ,GUARDS>
+                                    <JIGS-UP
+"The air becomes thick with photon beams.">)
+                                   (T
+                                    <TELL
+"Someone around here is being very stupid. Let's say it's the guards,
+since they're only fictitious characters and therefore not potential
+Infocom customers. The poor fictitious saps don't understand how they
+can shoot without rifles." CR>)>)
+                            (<AND <VERB? TAKE>
+                                  <PRSO? ,RIFLES>>
+                             <COND (<IN? ,RIFLES ,GUARDS>
+                                    <TELL "\"We already have them!\"" CR>)
+                                   (T
+                                    <MOVE ,RIFLES ,GUARDS>
+                                    <ENABLE <QUEUE I-GUARDS 5>>
+                                    <TELL "They do so." CR>)>)
+                            (<VERB? LEAVE>
+                             <TELL
+"\"We can't leave while you're in trouble, Mr. President!\"" CR>)
+                            (T
+                             <TELL
+"You have failed to issue one of the small set of commands that the
+guards' military intelligences are trained to understand." CR>
+                             <FUCKING-CLEAR>)>)
+                     (T
+                      <COND (<HELD? ,BABEL-FISH ,PROTAGONIST>
+                             <TELL "\"Resistance is useless!\"" CR>)
+                            (T
+                             <TELL "\"I">
+                             <PRODUCE-GIBBERISH 1>
+                             <CRLF>)>
+                      <FUCKING-CLEAR>)>)
+              (<AND <EQUAL? ,HERE ,CAPTAINS-QUARTERS>
+                    <VERB? TELL HELLO THANK>>
+               <PERFORM ,V?TELL ,VOGON-CAPTAIN>
+               <RTRUE>)
+              (<AND <EQUAL? ,HERE ,CAPTAINS-QUARTERS>
+                    <AND <VERB? ASK-ABOUT ASK-FOR>
+                         <EQUAL? ,GUARDS ,PRSO>>>
+               <PERFORM ,V?TELL ,VOGON-CAPTAIN>
+               <RTRUE>)
+              (<AND <VERB? EXAMINE>
+                    <IN? ,RIFLES ,GUARDS>>
+               <TELL "They're holding " D ,RIFLES "s." CR>)
+              (<AND <EQUAL? ,HERE ,DAIS>                    
+                    <VERB? SHOOT>>
+               <COND (<BLASTER-HOLD>
+                      <RTRUE>)>
+               <TELL ,GUARDS-REALIZE>
+               <JIGS-UP
+"Although you incinerate many, other guards arrive and incinerate you.">
+               <RTRUE>)
+              (<AND <VERB? GIVE>
+                    <PRSO? ,BLASTER>>
+               <TELL "The guards are more than glad to disarm you. They">
+               <GUARD-DEATH>
+               <RTRUE>)
+              (<VERB? COUNT>
+               <COND (<EQUAL? ,HERE ,HOLD>
+                      <TELL "One." CR>)
+                     (<EQUAL? ,HERE ,CAPTAINS-QUARTERS>
+                      <TELL "Several." CR>)
+                     (T
+                      <TELL "Many." CR>)>)>>
+
+<ROUTINE WEAPON-PSEUDO ()
+        <COND (<NOT <IN? ,GUARDS ,HERE>>
+               <TELL "What weapon?" CR>)
+              (<VERB? SHOOT>
+               <TELL ,NOT-HOLDING " it." CR>)>>
+
+<OBJECT FRUSTATION
+       (IN GLOBAL-OBJECTS)
+       (DESC "problem")
+       (SYNONYM FRUSTR PROBLE PUZZLE)
+       (ACTION FRUSTRATION-F)>
+
+<ROUTINE FRUSTRATION-F ()
+        <COND (<VERB? ENJOY>
+               <TELL ,ZEN CR>)>>
+
+<ROUTINE UNIMPORTANT-THING-F ()
+        <COND (<AND <VERB? ASK-ABOUT>
+                    <PRSO? ,GUIDE>>
+               <RFALSE>)
+              (T
+               <TELL "That's not important; leave it alone." CR>)>>
+
+;"DONT stuff"
+
+<ROUTINE DONT-F ()
+        <COND (<VERB? PANIC>
+               <COND (<PROB 50>
+                      <TELL 
+"Very clever. It looks like there's a lot you should be panicking about." CR>)
+                     (T
+                      <TELL
+"Why not? Your position appears quite hopeless." CR>)>)
+              (<VERB? LOOK>
+               <SETG DONT-FLAG <>>
+               <PERFORM ,V?CLOSE ,EYES>
+               <RTRUE>)
+              (<VERB? WAIT>
+               <TELL "Time doesn't pass..." CR>)
+              (<VERB? TAKE>
+               <TELL "Not taken." CR>)
+              (<AND <VERB? LISTEN>
+                    <VISIBLE? ,POETRY>>
+               <SETG DONT-FLAG <>>
+               <PERFORM ,V?LISTEN ,POETRY>
+               <RTRUE>)
+              (T
+               <TELL "Not done." CR>)>>
+
+;"DARK stuff"
+
+<GLOBAL VOGON-PROB 100>
+
+<GLOBAL HEART-PROB 0>
+
+<GLOBAL TRAAL-PROB 60>
+
+<GLOBAL FLEET-PROB 0>
+
+<GLOBAL WHALE-PROB 0>
+
+<GLOBAL TRILLIAN-PROB 15>
+
+<GLOBAL ZAPHOD-PROB 0>
+
+<GLOBAL FORD-PROB 15>
+
+<GLOBAL DREAMING <>>
+
+<GLOBAL DARK-COUNTER 0>
+
+<GLOBAL DARK-FLAG <>>
+
+<GLOBAL CURRENT-EXIT 0>
+
+<GLOBAL GROGGY <>>
+
+<GLOBAL LYING-COUNTER 0>
+
+<GLOBAL GUTS-ROOM <>>
+
+<ROOM DARK
+      (IN ROOMS)
+      (SYNONYM SUNGLA GLASSE JANTA)
+      (ADJECTIVE JOO JANTA PERIL SENSIT)
+      (DESC "Dark")
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION DARK-F)>
+
+<ROUTINE DARK-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <PUTP ,PROTAGONIST ,P?ACTION ,DARK-FUNCTION>
+               <ROB ,PROTAGONIST ,DARK-OBJECT>
+               <FSET ,CONVERSATION ,INVISIBLE>
+               <SETG DREAMING <>>
+               <SETG LYING-DOWN <>>
+               <REPEAT ()
+                       <COND (<PROB ,HEART-PROB>
+                              <SETG HEART-PROB 0>
+                              <SETG VOGON-PROB 10>
+                              <SETG DARK-FLAG ,ENTRY-BAY>
+                              <SETG CURRENT-EXIT 3>)
+                             (<PROB ,VOGON-PROB>
+                              <SETG VOGON-PROB 0>
+                              <SETG HEART-PROB 100>
+                              <SETG DARK-FLAG ,HOLD>
+                              <SETG CURRENT-EXIT 0>)
+                             (<PROB ,TRAAL-PROB>
+                              <COND (<NOT <EQUAL? ,TRAAL-PROB 10>>
+                                     <SETG TRAAL-PROB 10>
+                                     <SETG TRILLIAN-PROB 25>
+                                     <SETG FORD-PROB 25>
+                                     <SETG ZAPHOD-PROB 25>)>
+                              <SETG DARK-FLAG ,LAIR>
+                              <SETG CURRENT-EXIT 4>)
+                             (<PROB ,TRILLIAN-PROB>
+                              <SETG TRILLIAN-PROB 10>
+                              <SETG DARK-FLAG ,LIVING-ROOM>
+                              <SETG CURRENT-EXIT 2>)
+                             (<PROB ,FORD-PROB>
+                              <SETG FORD-PROB 10>
+                              <SETG DARK-FLAG ,COUNTRY-LANE>
+                              <SETG CURRENT-EXIT 1>)
+                             (<PROB ,ZAPHOD-PROB>
+                              <SETG ZAPHOD-PROB 10>
+                              <SETG DARK-FLAG ,SPEEDBOAT>
+                              <SETG CURRENT-EXIT 5>)
+                             (<PROB ,FLEET-PROB>
+                              <SETG FLEET-PROB 10>
+                              <SETG DARK-FLAG ,WAR-CHAMBER>
+                              <SETG CURRENT-EXIT 7>)
+                             (<PROB ,WHALE-PROB> ;"this should always be 0"
+                              <TELL "Bug #60" CR>
+                              <SETG DARK-FLAG ,INSIDE-WHALE>
+                              <SETG CURRENT-EXIT 6>)>
+                       <COND (,DARK-FLAG
+                              <RETURN>)>>
+               <RFALSE>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <RTRUE>)>>
+
+<OBJECT DARK-OBJECT
+       (IN GLOBAL-OBJECTS) ;"gets moved to Dark when you turn on the light"
+       (DESC "darkness")
+       (SYNONYM DARK DARKNE NOTHIN)
+       (FLAGS NDESCBIT NARTICLEBIT)>
+
+<OBJECT SHADOW
+       (IN LOCAL-GLOBALS)
+       (DESC "shadow")
+       (SYNONYM SHADOW)
+       (FLAGS NDESCBIT)>
+
+<OBJECT LIQUID
+       (IN LOCAL-GLOBALS)
+       (DESC "liquid")
+       (SYNONYM LIQUID)
+       (ADJECTIVE HOT COLD WARM WET SQUISH)
+       (FLAGS NDESCBIT DRINKBIT)>
+
+<OBJECT PAINFUL-LIGHT
+       (IN LOCAL-GLOBALS)
+       (DESC "light")
+       (SYNONYM LIGHT)
+       (ADJECTIVE PAINFU BRIGHT)
+       (FLAGS NDESCBIT)>
+
+<OBJECT STAR-DRIVE
+       (IN LOCAL-GLOBALS)
+       (DESC "star drive")
+       (SYNONYM DRIVE HUM)
+       (ADJECTIVE STAR DEEP DISTANT)
+       (FLAGS NDESCBIT)>
+
+<ROUTINE DARK-FUNCTION ()
+        <COND (<VERB? QUIT RESTART RESTORE SCORE VERSION SAVE AGAIN HELP
+                      VERBOSE BRIEF SUPER-BRIEF SCRIPT UNSCRIPT FOOTNOTE>
+               <>)
+              (,DONT-FLAG
+               <>)
+              (<VERB? PANIC YELL>
+               <TELL
+"You yell as loudly as you can, but no sound emerges." CR>)
+              (<OR <VERB? RELAX>
+                   <AND <VERB? ENJOY>
+                        <PRSO? ,DARK-OBJECT>>>
+               <TELL
+"You achieve a state of Negative Capability, and are able to be in
+uncertainties, mysteries, doubts, without any irritable searching
+after fact and reason (Footnote 1)." CR>)
+              (<AND <EQUAL? ,DARK-FLAG ,ENTRY-BAY ,WAR-CHAMBER>
+                    <VERB? LISTEN>
+                    <PRSO? ,DARK-OBJECT>
+                    <MISSING?>>                
+               <MOVE ,STAR-DRIVE ,HERE>
+               <SETG P-IT-OBJECT ,STAR-DRIVE>
+               <TELL
+"You hear the deep and distant hum of a " D ,STAR-DRIVE " coming from far ">
+               <COND (<EQUAL? ,DARK-FLAG ,ENTRY-BAY>
+                      <TELL "above">)
+                     (T
+                      <TELL "below">)>
+               <TELL ". There is an exit to port." CR>)
+              (<AND <VERB? WALK>
+                    <MISSING?>
+                    <EQUAL? ,DARK-FLAG ,WAR-CHAMBER ,ENTRY-BAY>
+                    <IN? ,STAR-DRIVE ,HERE>>
+               <COND (<PRSO? ,P?SOUTH>
+                      <COND (<L? ,LYING-COUNTER 4>
+                             <TELL ,LYING-ABOUT-EXIT>)>
+                      <TELL "You emerge from a small doorway...">
+                      <LEAVE-DARK>)
+                     (T
+                      <TELL ,CANT-GO>
+                      <COND (<PRSO? ,P?WEST>
+                             <SETG LYING-COUNTER <+ ,LYING-COUNTER 1>>
+                             <COND (<EQUAL? ,LYING-COUNTER 4>
+                                    <TELL
+" " ,LYING-ABOUT-EXIT "There is an exit aft...">)>)>
+                      <CRLF>)>)
+              (<AND <OR <PRSO? ,STAR-DRIVE>
+                        <PRSI? ,STAR-DRIVE>>
+                    <NOT <VERB? WALK>>>
+               <COND (<NOT <EQUAL? ,DARK-FLAG ,ENTRY-BAY ,WAR-CHAMBER>>
+                      <CANT-SEE ,STAR-DRIVE>)
+                     (<VERB? LISTEN>
+                      <TELL "The sound comes from far ">
+                      <COND (<EQUAL? ,DARK-FLAG ,ENTRY-BAY>
+                             <TELL "above">)
+                            (T
+                             <TELL "below">)>
+                      <TELL "." CR>)
+                     (T
+                      <>)>)
+              (<AND <EQUAL? ,DARK-FLAG ,COUNTRY-LANE ,SPEEDBOAT>
+                    <VERB? EXAMINE>
+                    <PRSO? ,DARK-OBJECT>
+                    <MISSING?>>
+               <MOVE ,PAINFUL-LIGHT ,HERE>
+               <SETG P-IT-OBJECT ,PAINFUL-LIGHT>
+               <TELL "You see a painfully bright light that stabs at the ">
+               <COND (<EQUAL? ,DARK-FLAG ,COUNTRY-LANE>
+                      <TELL "front">)
+                     (T
+                      <TELL "back">)>
+               <TELL " of your eyes." CR>)
+              (<AND <OR <PRSO? ,PAINFUL-LIGHT>
+                        <PRSI? ,PAINFUL-LIGHT>>
+                    <NOT <VERB? WALK>>>
+               <COND (<NOT <EQUAL? ,DARK-FLAG ,SPEEDBOAT ,COUNTRY-LANE>>
+                      <CANT-SEE ,PAINFUL-LIGHT>)
+                     (<VERB? EXAMINE>
+                      <TELL "The light resolves itself into the bright ">
+                      <COND (<EQUAL? ,DARK-FLAG ,COUNTRY-LANE>
+                             <TELL "yellow Sun of Earth">)
+                            (T
+                             <TELL "orange Sun of " D ,DAMOGRAN>)>
+                      <TELL ".">
+                      <LEAVE-DARK>)>)
+              (<AND <EQUAL? ,DARK-FLAG ,LIVING-ROOM ,INSIDE-WHALE>
+                    <VERB? RUB>
+                    <PRSO? ,DARK-OBJECT>
+                    <MISSING?>>
+               <MOVE ,LIQUID ,HERE>
+               <SETG P-IT-OBJECT ,LIQUID>
+               <TELL "It does feel a bit ">
+               <COND (<EQUAL? ,DARK-FLAG ,LIVING-ROOM>
+                      <TELL "cold">)
+                     (T
+                      <TELL "warm">)>
+               <TELL
+" and wet and squishy. There seems to be some liquid at your fingertips." CR>)
+              (<AND <OR <PRSO? ,LIQUID>
+                        <PRSI? ,LIQUID>>
+                    <NOT <VERB? WALK>>>
+               <COND (<NOT <EQUAL? ,DARK-FLAG ,LIVING-ROOM ,INSIDE-WHALE>>
+                      <CANT-SEE ,LIQUID>)
+                     (<EQUAL? ,DARK-FLAG ,LIVING-ROOM>
+                      <COND (<VERB? EXAMINE RUB>
+                             <TELL "It seems coldish." CR>)
+                            (<VERB? TASTE DRINK>
+                             <TELL
+"It tastes just like wine. In fact, you realise with growing embarrassment
+that " D ,HANDS " is sitting in a " D ,WINE ".">
+                             <LEAVE-DARK>)>)
+                     (<EQUAL? ,DARK-FLAG ,INSIDE-WHALE>
+                      <COND (<VERB? EXAMINE RUB>
+                             <TELL "It seems warmish." CR>)
+                            (<VERB? TASTE DRINK>
+                             <TELL
+"Yucchhh! You are jerked to your senses by the realisation that you are
+licking the lining of a whale's stomach.">
+                             <LEAVE-DARK>)>)>)
+              (<AND <EQUAL? ,DARK-FLAG ,HOLD ,LAIR>
+                    <VERB? SMELL>
+                    <PRSO? ,DARK-OBJECT>
+                    <MISSING?>>
+               <MOVE ,SHADOW ,HERE>
+               <SETG P-IT-OBJECT ,SHADOW>
+               <TELL "It does smell a bit. There's something pungent ">
+               <COND (<EQUAL? ,DARK-FLAG ,HOLD>
+                      <TELL "being waved">)
+                     (T
+                      <TELL "waving">)>
+               <TELL
+" under your nose. Your head begins to clear. You can make out a shadow
+moving in the dark." CR>)
+              (<AND <OR <PRSO? ,SHADOW>
+                        <PRSI? ,SHADOW>>
+                    <NOT <VERB? WALK>>>
+               <COND (<NOT <EQUAL? ,DARK-FLAG ,HOLD ,LAIR>>
+                      <CANT-SEE ,SHADOW>)
+                     (<VERB? EXAMINE>
+                      <TELL "The shadow is vaguely ">
+                      <BEAST-GUARD-FORD>
+                      <TELL "-shaped.">
+                      <LEAVE-DARK>)
+                     (<VERB? RUB>
+                      <TELL "The shadow turns out to be a solid object of a ">
+                      <BEAST-GUARD-FORD>
+                      <TELL "-like nature.">
+                      <LEAVE-DARK>)
+                     (<VERB? SMELL>
+                      <TELL "The shadow has a sort of ">
+                      <BEAST-GUARD-FORD>
+                      <TELL "y smell to it.">
+                      <LEAVE-DARK>)
+                     (T
+                      <>)>)
+              (T
+               <SETG DARK-COUNTER <+ ,DARK-COUNTER 1>>
+               <COND (,DARK-CONTROLLED
+                      <SETG CURRENT-EXIT <+ ,CURRENT-EXIT 1>>
+                      <COND (<EQUAL? ,CURRENT-EXIT 8>
+                             <SETG CURRENT-EXIT 0>)>
+                      <SETG DARK-FLAG <GET ,DARK-EXIT-TABLE ,CURRENT-EXIT>>)>
+               <COND (<VERB? LOOK>
+                      <TELL "Dark" CR>)>
+               <COND (<PROB 25>
+                      <DARK-ONE>
+                      <FUCKING-CLEAR>)
+                     (<PROB 33>
+                      <DARK-TWO>
+                      <FUCKING-CLEAR>)
+                     (<PROB 50>
+                      <DARK-THREE>
+                      <FUCKING-CLEAR>)
+                     (T
+                      <DARK-FOUR>
+                      <FUCKING-CLEAR>)>
+               <COND (<EQUAL? ,DARK-COUNTER 18>
+                      <TELL CR
+"When will you come to your senses and solve this puzzle?" CR>)
+                     (<EQUAL? ,DARK-COUNTER 33>
+                      <TELL CR
+"4 out of 5 sensitive people solve this puzzle right away." CR>)
+                     (<EQUAL? ,DARK-COUNTER 48>
+                      <TELL CR
+"Don't count your senses before they hatch." CR>)
+                     (<AND <EQUAL? ,DARK-COUNTER 63>
+                           <EQUAL? ,DARK-FLAG ,HOLD>>
+                      <TELL CR
+"Something stinks around here, and I'm not just talking about your
+puzzle-solving ability!" CR>)
+                     (T
+                      <RTRUE>)>)>>  
+
+<GLOBAL DARK-EXIT-TABLE
+       <PTABLE
+        HOLD
+        COUNTRY-LANE
+        LIVING-ROOM
+        ENTRY-BAY
+        LAIR
+        SPEEDBOAT
+        INSIDE-WHALE
+        WAR-CHAMBER>>
+
+<ROUTINE LEAVE-DARK ()
+        <CRLF> <CRLF>
+        <PUTP ,PROTAGONIST ,P?ACTION ,PROTAGONIST-F>
+        <SETG DARK-COUNTER 0>
+        <SETG LYING-COUNTER 0>
+        <SETG DARK-CONTROLLED <>>
+        <ROB ,DARK-OBJECT ,PROTAGONIST>
+        <ROB ,MEMORIAL ,PROTAGONIST>
+        <MOVE ,SHADOW ,LOCAL-GLOBALS>
+        <MOVE ,PAINFUL-LIGHT ,LOCAL-GLOBALS>
+        <MOVE ,LIQUID ,LOCAL-GLOBALS>
+        <MOVE ,STAR-DRIVE ,LOCAL-GLOBALS>
+        <COND (,FLUFF-TO-GOWN
+               <MOVE ,SATCHEL-FLUFF ,GOWN>
+               <SETG FLUFF-TO-GOWN <>>)>
+        <COND (<AND <EQUAL? ,DARK-FLAG ,WAR-CHAMBER>
+                    <FSET? ,WAR-CHAMBER ,REVISITBIT>>
+               <ENABLE <QUEUE I-BRAIN-DEATH 6>>
+               <SETG HERE <META-LOC ,SPARE-DRIVE>>
+               <MOVE ,PROTAGONIST ,HERE>
+               <MOVE ,NAME ,HERE>
+               <SETG GUTS-ROOM ,HERE>
+               <TELL
+"There is a violent explosion around you, leaving you standing in">
+               <ARTICLE ,HERE T>
+               <TELL ". ">
+               <PERFORM ,V?EXAMINE ,GROUND>
+               <TELL CR
+"Apparently, you just materialised inside your own brain. This is very very
+very nasty. You have two choices: quit now, or experience this materialisation
+from the other end, in about five turns." CR>)
+              (<AND <EQUAL? ,DARK-FLAG ,SPEEDBOAT>
+                    <FSET? ,SPEEDBOAT ,REVISITBIT>>
+               <GOTO ,DAIS>)
+              (T
+               <COND (<NOT <EQUAL? ,DARK-FLAG ,ENTRY-BAY>>
+                      <MOVE ,MAIN-DRIVE ,LOCAL-GLOBALS>)>
+               <GOTO ,DARK-FLAG>)>
+        <SETG DARK-FLAG <>>
+        <RTRUE>>
+
+<ROUTINE MISSING? ()
+        <COND (<OR ,DARK-CONTROLLED
+                   <G? ,DARK-COUNTER 3>>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE DARK-ONE ()
+        <TELL "You can ">
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,WAR-CHAMBER ,ENTRY-BAY>>>
+               <TELL "hear nothing, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,HOLD ,LAIR>>>
+               <TELL "smell nothing, ">)>
+        <TELL "taste nothing, ">
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,COUNTRY-LANE ,SPEEDBOAT>>>
+               <TELL "see nothing, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,LIVING-ROOM ,INSIDE-WHALE>>>
+               <TELL "feel nothing, ">)>
+        <TELL "and are not even certain who you are." CR>>
+
+<ROUTINE DARK-TWO ()
+        <TELL "You can ">
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,COUNTRY-LANE ,SPEEDBOAT>>>
+               <TELL "see nothing, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,LIVING-ROOM ,INSIDE-WHALE>>>
+               <TELL "feel nothing, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,WAR-CHAMBER ,ENTRY-BAY>>>
+               <TELL "hear nothing, ">)>
+        <TELL "taste nothing, ">
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,HOLD ,LAIR>>>
+               <TELL "smell nothing, ">)>
+        <TELL "and are not entirely certain who you are." CR>>
+
+<ROUTINE DARK-THREE ()
+        <TELL "You can't ">
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,WAR-CHAMBER ,ENTRY-BAY>>>
+               <TELL "hear anything, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,COUNTRY-LANE ,SPEEDBOAT>>>
+               <TELL "see anything, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,HOLD ,LAIR>>>
+               <TELL "smell anything, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,LIVING-ROOM ,INSIDE-WHALE>>>
+               <TELL "feel anything, ">)>
+        <TELL "or taste anything, and do not even know where you are
+or who you are or how you got there." CR>>
+
+<ROUTINE DARK-FOUR ()
+        <TELL "There's nothing you can taste, ">
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,COUNTRY-LANE ,SPEEDBOAT>>>
+               <TELL "nothing you can see, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,WAR-CHAMBER ,ENTRY-BAY>>>
+               <TELL "nothing you can hear, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,LIVING-ROOM ,INSIDE-WHALE>>>
+               <TELL "nothing you can feel, ">)>
+        <COND (<NOT <AND <MISSING?>
+                         <EQUAL? ,DARK-FLAG ,HOLD ,LAIR>>>
+               <TELL "nothing you can smell, ">)>
+        <TELL "you do not even know who you are." CR>>
+
+<ROUTINE BEAST-GUARD-FORD ()
+        <COND (<EQUAL? ,DARK-FLAG ,LAIR>
+               <TELL "Bugblatter Beast">)
+              (<FSET? ,HOLD ,REVISITBIT>
+               <TELL "guard">)
+              (T
+               <TELL D ,FORD>)>>
+
+<ROUTINE I-BRAIN-DEATH ()
+        <TELL "The " D ,ARTHUR>
+        <JIGS-UP
+" of five turns ago suddenly materialises inside your brain. There is an
+incredibly nasty cracking, scrunching noise, and blood and bone fly everywhere
+as your head, to be perfectly frank about this, explodes. We did warn you.">
+        <RTRUE>>
+
+;"tools"
+
+<OBJECT TOOTHBRUSH
+       (IN BEDROOM)
+       (DESC "toothbrush")
+       (SYNONYM TOOTHB BRUSH TOOL TOOLS)
+       (ADJECTIVE TOOTH MY PROPER)
+       (FLAGS TAKEBIT TRYTAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)
+       (ACTION TOOTHBRUSH-F)>
+
+<ROUTINE TOOTHBRUSH-F ()
+        <COND (<AND <VERB? TAKE>
+                    <NOT <FSET? ,TOOTHBRUSH ,TOUCHBIT>>>
+               <MOVE ,TOOTHBRUSH ,PROTAGONIST>
+               <FSET ,TOOTHBRUSH ,TOUCHBIT>
+               <FCLEAR ,TOOTHBRUSH ,TRYTAKEBIT>
+               <TELL
+"As you pick up the " D ,TOOTHBRUSH " a tree outside the window collapses.
+There is no causal relationship between these two events.">
+               <COND (<FSET? ,PHONE ,TOUCHBIT>
+                      <TWO-TREES>)>
+               <CRLF>)>>
+
+<OBJECT SCREWDRIVER
+       (IN BEDROOM)
+       (DESC "flathead screwdriver")
+       (SYNONYM SCREWD TOOL TOOLS)
+       (ADJECTIVE FLATHE PROPER)
+       (FLAGS TAKEBIT TRYTAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT WRENCH
+       (IN TOOLBOX)
+       (DESC "laser-assisted monkey wrench")
+       (SYNONYM WRENCH TOOL TOOLS)
+       (ADJECTIVE LASER ASSIST MONKEY PROPER)
+       (FLAGS TAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT CHISEL
+       (IN PANTRY)
+       (DESC "thermo-fusion chisel")
+       (SYNONYM CHISEL TOOL TOOLS)
+       (ADJECTIVE THERMO FUSION PROPER)
+       (FLAGS TAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT AWL
+       (IN WAR-CHAMBER)
+       (DESC "ultra-plasmic vacuum awl")
+       (SYNONYM AWL TOOL TOOLS)
+       (ADJECTIVE ULTRA PLASMI VACUUM PROPER)
+       (FLAGS TAKEBIT VOWELBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT PLIERS
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "pair of hypersonic pliers")
+       (SYNONYM PAIR PLIERS TOOL TOOLS)
+       (ADJECTIVE HYPERS PROPER)
+       (FLAGS TAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT TWEEZERS
+       (IN HANDBAG)
+       (DESC "pair of tweezers")
+       (SYNONYM TWEEZE PAIR TOOL TOOLS)
+       (ADJECTIVE PROPER)
+       (FLAGS TAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT PINCER
+       (IN BRIDGE)
+       (DESC "molecular hyperwave pincer")
+       (SYNONYM PINCER TOOL TOOLS)
+       (ADJECTIVE MOLECU HYPERW PROPER)
+       (FLAGS TAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<OBJECT RASP
+       (IN LOCAL-GLOBALS) ;"for the sake of MOBY-FIND"
+       (DESC "ionic diffusion rasp")
+       (SYNONYM RASP TOOL TOOLS)
+       (ADJECTIVE IONIC DIFFUS PROPER)
+       (FLAGS TAKEBIT VOWELBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)> 
+
+<OBJECT CHIPPER
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "number twelve asteroid paint chipper")
+       (SYNONYM CHIPPE TOOL TOOLS)
+       (ADJECTIVE NUMBER TWELVE ASTERO PAINT PROPER)
+       (FLAGS TAKEBIT TOOLBIT)
+       (SIZE 3)
+       (GENERIC TWEEZERS)>
+
+<GLOBAL TOOL-LIST
+       <PLTABLE
+        SCREWDRIVER
+        WRENCH
+        CHISEL
+        AWL
+        PLIERS
+        TWEEZERS
+        PINCER
+        RASP
+        CHIPPER
+        TOOTHBRUSH>>
+
+;"TEA stuff"
+
+<GLOBAL HOLDING-NO-TEA T>
+
+<ROUTINE LIQUID-SPILL ()
+        <COND (<PRSI? ,FLOWERPOT ,PLANT>
+               <PERFORM ,V?WATER ,PRSI ,PRSO>
+               <RTRUE>)
+              (T
+               <MOVE ,PRSO ,LOCAL-GLOBALS>
+               <COND (<EQUAL? ,PRSO ,BROWNIAN-SOURCE>
+                      <SETG BROWNIAN-SOURCE <>>)
+                     (<EQUAL? ,PRSO ,PANEL-BLOCKER>
+                      <SETG PANEL-BLOCKER <>>)>
+               <TELL "It spills all over and then evaporates.">
+               <COND (<PRSO? ,MINERAL-WATER>
+                      <ANTI-LITTER "bottle">)
+                     (T
+                      <ANTI-LITTER "cup">)>
+               <CRLF>)>>
+
+<ROUTINE ANTI-LITTER (STRING)
+        <TELL " The " .STRING
+" itself vaporises, part of the Galactic Anti-Litter Program.">>
+
+<OBJECT TEA
+       (IN PAD)
+        (DESC "tea")
+       (DESCFCN TEA-DESCFCN)
+       (SYNONYM TEA CUP)
+       (ADJECTIVE REAL NICE HOT)
+       (FLAGS NARTICLEBIT TAKEBIT TRYTAKEBIT DRINKBIT)
+       (ACTION TEA-F)>
+
+<ROUTINE TEA-DESCFCN ("OPTIONAL" X)
+        <DESCRIBE-DRINK ,TEA>>
+
+<ROUTINE DESCRIBE-DRINK (DRINK)
+        <TELL "There is a nice, hot cup of " D .DRINK " here." CR>>
+
+<ROUTINE TEA-F ()
+        <COND (<AND <VERB? TAKE>
+                    <PRSO? ,TEA>>
+               <MOVE ,TEA ,PROTAGONIST>
+               <SETG HOLDING-NO-TEA <>>
+               <TELL "no tea: Dropped." CR>)
+              (<VERB? DROP>
+               <MOVE ,TEA ,HERE>
+               <COND (<EQUAL? ,HERE ,ACCESS-SPACE>
+                      <SETG HOLDING-NO-TEA T>
+                      <V-DROP>)
+                     (,HOLDING-NO-TEA
+                      <TELL "Dropped." CR>)
+                     (T
+                      <SETG HOLDING-NO-TEA T>
+                      <TELL "no tea: Taken." CR>)>)
+              (<VERB? DRINK ENJOY DRINK-FROM>
+               <COND (<NOT <HELD? ,PRSO>>
+                      <TELL ,NOT-HOLDING " the cup!" CR>
+                      <RTRUE>)>
+               <SETG SCORE <+ ,SCORE 100>>
+               <MOVE ,TEA ,LOCAL-GLOBALS>
+               <SETG HOLDING-NO-TEA T>
+               <COND (<EQUAL? ,TEA ,BROWNIAN-SOURCE>
+                      <SETG BROWNIAN-SOURCE <>>)>
+               <TELL
+"It is the finest tea you have ever tasted. It has almost made this
+entire misadventure seem worthwhile. You experience several moments
+of complete happiness and relaxation.">
+               <ANTI-LITTER "cup">
+               <CRLF>)
+              (<VERB? POUR THROW>
+               <LIQUID-SPILL>)
+              (<VERB? EXAMINE LOOK-INSIDE>
+               <TELL
+,IT-LOOKS-LIKE " it has even more" ,BROWNIAN " than " D ,SUBSTITUTE "!">
+               <COND (<PRSO? ,BROWNIAN-SOURCE>
+                      <TELL " ">
+                      <PERFORM ,V?EXAMINE ,DANGLY-BIT>
+                      <RTRUE>)
+                     (T
+                      <CRLF>)>)>>
+
+<OBJECT NO-TEA
+       (IN GLOBAL-OBJECTS)
+       (DESC "no tea")
+       (SYNONYM TEA)
+       (ADJECTIVE NO)
+       (FLAGS NARTICLEBIT TRYTAKEBIT)
+       (ACTION NO-TEA-F)>
+
+<ROUTINE NO-TEA-F ()
+        <COND (<AND <VERB? TAKE DROP>
+                    <PRSO? ,NO-TEA>
+                    <NOT <FSET? ,PARTICLE ,MUNGEDBIT>>>
+               <TELL
+"Your common sense tells you that you can't do that." CR>)
+              (<AND <VERB? TAKE>
+                    <PRSO? ,NO-TEA>
+                    <NOT ,HOLDING-NO-TEA>>
+               <SETG HOLDING-NO-TEA T>
+               <TELL "no tea: Taken." CR>)
+              (<AND <VERB? SHOW GIVE>
+                    <PRSI? ,SCREENING-DOOR>>
+               <RFALSE>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSO? ,GUIDE>>
+               <RFALSE>)
+              (<AND <VERB? ASK-FOR>
+                    <PRSO? ,NUTRIMAT>>
+               <PERFORM ,V?RUB ,PAD>
+               <RTRUE>)
+              (T
+               <TELL
+"You're talking complete nonsense; pull yourself together." CR>)>>
+
+<ROUTINE TEA-PRINT (OBJ) ;"tells MAIN-LOOP when to print OBJ: with VERB ALL"
+        <COND (<NOT <EQUAL? .OBJ ,TEA ,NO-TEA>>
+               <RTRUE>)
+              (<VERB? SHOW>
+               <RTRUE>)
+              (<EQUAL? .OBJ ,TEA>
+               <COND (<VERB? TAKE>
+                      <COND (<HELD? ,TEA>
+                             <RTRUE>)
+                            (<AND ,PRSI
+                                  <NOT <EQUAL? ,PRSI <LOC ,PRSO>>>>
+                             <RTRUE>)
+                            (T
+                             <RFALSE>)>)
+                     (<AND <VERB? DROP>
+                           <NOT ,HOLDING-NO-TEA>>
+                      <RFALSE>)>)
+              (<AND <EQUAL? .OBJ ,NO-TEA>
+                    <VERB? TAKE>
+                    <NOT ,HOLDING-NO-TEA>>
+               <RFALSE>)
+              (T
+               <RTRUE>)>>
+
+;"THUMB and GUIDE stuff"
+
+<OBJECT THUMB
+       (IN SATCHEL)
+       (DESC "electronic Sub-Etha signaling device")
+       (SYNONYM THUMB DEVICE SENSO)
+       (ADJECTIVE ELECTR SUB-E SIGNAL SMALL BLACK LITTLE BLINKI)
+       (SIZE 10)
+       (FLAGS TAKEBIT VOWELBIT CONTBIT OPENBIT)
+       (ACTION THUMB-F)>
+
+<ROUTINE THUMB-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The " D ,THUMB " is shaped like a small fist with an extended thumb. Various
+lights along its \"knuckles\" are currently ">
+               <COND (<OR <IN? ,FLEET ,HERE>
+                          <EQUAL? ,HERE ,AIRLOCK ,INSIDE-WHALE>>
+                      <TELL
+"blinking wildly, indicating a spaceship in the vicinity">)
+                     (T
+                      <TELL "dark">)>
+               <TELL
+". It has two small buttons, a red one labelled \"Call Engineer\" and a green
+one labelled \"Hitchhike.\"">
+               <FINE-PRODUCT>
+               <TELL
+" Affixed to the Thumb is a lifetime " D ,GUARANTEE "." CR>)
+              (<AND <VERB? TAKE>
+                    <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <IN? ,FLEET ,HERE>
+                    <NOT <IN? ,THUMB ,SATCHEL>>>
+               <TELL ,DRIVEN-BACK CR>)
+              (<VERB? OPEN CLOSE LOOK-INSIDE>
+               <TELL "Impossible." CR>)>>
+
+<OBJECT RED-BUTTON
+       (IN THUMB)
+       (DESC "red button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE RED SMALL)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (SIZE 1)
+       (ACTION RED-BUTTON-F)>
+
+<ROUTINE RED-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (<NOT <HELD? ,THUMB>>
+                      <PERFORM ,V?PUSH ,GREEN-BUTTON>
+                      <RTRUE>)
+                     (<IN? ,ENGINEER ,HERE>
+                      <TELL
+"Another " D ,ENGINEER " zips up, spots the first one, looks confused,
+and leaves again." CR>)
+                     (T
+                      <MOVE ,ENGINEER ,HERE>
+                      <MOVE ,BIKE ,HERE>
+                      <ENABLE <QUEUE I-ENGINEER 2>>
+                      <TELL
+"With a screech of ion brakes a " ,SCC " Repair Robot pulls up on a bike
+from out of the Sub-Etha." CR>)>)>>
+
+<OBJECT GREEN-BUTTON
+       (IN THUMB)
+       (DESC "green button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE GREEN SMALL HITCHH)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (SIZE 1)
+       (ACTION GREEN-BUTTON-F)>
+
+<ROUTINE GREEN-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (<NOT <HELD? ,THUMB>>
+                      <TELL ,NOT-HOLDING " the " D ,THUMB "." CR>
+                      <SETG P-IT-OBJECT ,THUMB>)
+                     (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
+                           <IN? ,FLEET ,HERE>>
+                      <MOVE ,THUMB ,HERE>
+                      <TELL ,THUMB-FUMBLE CR>)
+                     (<FSET? ,THUMB ,MUNGEDBIT>
+                      <TELL "The" ,THUMB-CLICKS CR>)
+                     (<IN? ,FLEET ,HERE>
+                      <COND (<EQUAL? ,DRUNK-LEVEL 3>
+                             <TELL
+"Lights whirl sickeningly around your head, the ground arches away beneath
+your feet, and every atom of your being is scrambled, an experience you're
+probably going to have to get used to. You are in..." CR CR>
+                             <LEAVE-EARTH>
+                             <GOTO ,DARK>)
+                            (T
+                             <TELL "A" ,BEAM>
+                             <JIGS-UP
+" is certainly a shock to the system. Too bad you didn't consume
+enough alcohol to withstand it.">
+                             <RTRUE>)>)
+                     (<EQUAL? ,HERE ,AIRLOCK ,INSIDE-WHALE>
+                      <TELL
+"Every molecule in your body gets pulled away from every other molecule.
+Then suddenly they snap back together again like elastic, and you find,
+with a dizzy head and very sore molecules, that you are in..." CR CR>
+                      <SETG HEART-PROB 100>
+                      <GOTO ,DARK>)
+                     (T
+                      <FSET ,THUMB ,MUNGEDBIT>
+                      <TELL
+"The Thumb winks and flashes for a second. Nothing further happens." CR>)>)>>
+
+<OBJECT GUARANTEE
+       (IN THUMB)
+       (DESC "guarantee")
+       (SYNONYM GUARAN WARRAN PLAQUE)
+       (ADJECTIVE LIFETI)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (SIZE 2)
+       (ACTION GUARANTEE-F)>
+
+<ROUTINE GUARANTEE-F ()
+        <COND (<VERB? READ EXAMINE>
+               <TELL
+"The lifetime " D ,GUARANTEE " states that the Thumb will be repaired on site
+by trained " ,SCC " Field Engineers." CR>)>>
+
+<OBJECT ENGINEER
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "Engineer robot")
+       (SYNONYM ROBOT ENGINE)
+       (ADJECTIVE ENGINE)
+       (FLAGS VOWELBIT ACTORBIT CONTBIT OPENBIT SEARCHBIT)
+       (ACTION ENGINEER-F)>
+
+<ROUTINE ENGINEER-F ()
+        <COND (<EQUAL? ,ENGINEER ,WINNER>
+               <ENABLE <QUEUE I-ENGINEER 2>>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,ENGINEER ,PRSI>
+                      <SETG WINNER ,ENGINEER>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,ENGINEER>
+                      <SETG WINNER ,ENGINEER>
+                      <RTRUE>)
+                     (<AND <VERB? REPAIR>
+                           <PRSO? ,THUMB>>
+                      <COND (<IN? ,THUMB ,ENGINEER>
+                             <TELL "\"I'm doing my best...\"" CR>
+                             <RTRUE>)>
+                      <SETG WINNER ,PROTAGONIST>
+                      <MOVE ,THUMB ,PROTAGONIST>
+                      <PERFORM ,V?GIVE ,THUMB ,ENGINEER>
+                      <SETG WINNER ,ENGINEER>
+                      <RTRUE>)
+                     (<VERB? REPAIR>
+                      <TELL "\"I repair only " D ,THUMB "s!\"" CR>)
+                     (<AND <VERB? YES>
+                           <EQUAL? ,AWAITING-REPLY 12>>
+                      <V-YES>)
+                     (<AND <VERB? NO>
+                           <EQUAL? ,AWAITING-REPLY 12>>
+                      <V-NO>)
+                     (T
+                      <TELL
+"\"Can't chat, pal, I'm attending to an important repair call.\"" CR>
+                      <FUCKING-CLEAR>)>)
+              (<AND <VERB? GIVE SHOW>
+                    <PRSO? ,THUMB>>
+               <COND (<FSET? ,THUMB ,MUNGEDBIT>
+                      <ENABLE <QUEUE I-ENGINEER 2>>
+                      <SETG THUMB-SHOWN 1>
+                      <MOVE ,THUMB ,ENGINEER>
+                      <TELL
+"The " D ,ENGINEER " takes it, looks at it with horror, shakes his head, sighs,
+and says \"Who sold you this then?\"" CR CR>
+                      <PRINTI ">">
+                      <READ ,P-INBUF ,P-LEXV>
+                      <TELL
+"The " D ,ENGINEER " ignores your reply and shakes the Thumb despondently.
+\"This is a model 13X,\" he says. \"Not meant for this sort of job. Anyway,
+it's discontinued. Can't get the parts.\"" CR>)
+                     (T
+                      <MOVE ,THUMB ,PROTAGONIST>
+                      <ENGINEER-LEAVE>
+                      <TELL
+"The " D ,ENGINEER " takes the Thumb, shakes it, looks it up and down.
+\"Seems to be working OK to me. Unusual for a 13X.\" He hands it back
+and" ,ROARS-OFF "." CR>)>)
+              (<AND <VERB? GIVE SHOW>
+                    <PRSO? ,GUARANTEE>>
+               <COND (<NOT <FSET? ,THUMB ,MUNGEDBIT>>
+                      <PERFORM ,V?GIVE ,THUMB ,ENGINEER>
+                      <RTRUE>)>
+               <FCLEAR ,THUMB ,MUNGEDBIT>
+               <ENGINEER-LEAVE>
+               <MOVE ,THUMB ,PROTAGONIST>
+               <COND (<EQUAL? ,THUMB-SHOWN 0>
+                      <TELL
+"The " D ,ENGINEER " looks quizzically at the " D ,GUARANTEE " and says it's
+expired but he'll see what he can do. " ,FIDDLES "\"Can't promise anything.\"
+He" ,ROARS-OFF "." CR>)
+                     (T
+                      <SETG THUMB-SHOWN 0>
+                      <TELL
+"The " D, ENGINEER " looks at it sceptically. \"Guaranteed to work normally for
+life,\" he mutters. \"Well, it's perfectly normal for a 13X to break down. And
+this one's reached the end of its life anyway. But I'll see what I can do.\""
+CR CR ,FIDDLES "\"Best I can do for a 13X on an expired " D ,GUARANTEE ",\" he
+says. \"Can't promise anything.\" He" ,ROARS-OFF "." CR>)>)>>
+
+<GLOBAL ENGINEER-COUNTER 0>
+
+<GLOBAL THUMB-SHOWN 0>
+
+<ROUTINE ENGINEER-LEAVE ()
+        <COND (<IN? ,THUMB ,ENGINEER>
+               <COND (<IN? ,ENGINEER ,HERE>
+                      <MOVE ,THUMB ,PROTAGONIST>)
+                     (T
+                      <MOVE ,THUMB <LOC ,ENGINEER>>)>)>
+        <MOVE ,ENGINEER ,LOCAL-GLOBALS>
+        <MOVE ,BIKE ,LOCAL-GLOBALS>
+        <DISABLE <INT I-ENGINEER>>
+        <SETG THUMB-SHOWN 0>
+        <SETG ENGINEER-COUNTER 0>>
+
+<ROUTINE I-ENGINEER ()
+        <ENABLE <QUEUE I-ENGINEER -1>>
+        <SETG ENGINEER-COUNTER <+ ,ENGINEER-COUNTER 1>>
+        <COND (<NOT <IN? ,ENGINEER ,HERE>>
+               <ENGINEER-LEAVE>
+               <RFALSE>)>
+        <CRLF>
+        <COND (<EQUAL? ,THUMB-SHOWN 1>
+               <SETG THUMB-SHOWN 2>
+               <TELL
+"The " D ,ENGINEER " ignores you completely. \"See, this is the model with
+the 5kz booster,\" he says. \"Hopeless.\" He shakes his head grimly." CR>)
+              (<EQUAL? ,THUMB-SHOWN 2>
+               <TELL
+"The " D ,ENGINEER " ignores you. \"What you want, you see, is one of the new
+Mk7's. Only you can't get them. Out of stock till Zarkmas. Sorry.\" He">
+               <COND (<IN? ,THUMB ,ENGINEER>
+                      <TELL " gives the defunct Thumb back and">)>
+               <ENGINEER-LEAVE>
+               <TELL ,ROARS-OFF "." CR>)
+              (<EQUAL? ,ENGINEER-COUNTER 1>
+               <SETG AWAITING-REPLY 12>
+               <ENABLE <QUEUE I-REPLY 2>>
+               <TELL
+"The " D, ENGINEER " looks around. \"Somebody call the repair service?\"" CR>)
+              (<EQUAL? ,ENGINEER-COUNTER 2>
+               <TELL
+"The " D ,ENGINEER " looks impatient and guns the throttle of his cycle." CR>)
+              (T
+               <ENGINEER-LEAVE>
+               <TELL
+"\"Probably a kid playing around with someone else's Thumb,\" grumbles the "
+D ,ENGINEER " and" ,ROARS-OFF "." CR>)>>
+
+<OBJECT BIKE
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "bike")
+       (SYNONYM BIKE CYCLE)
+       (ADJECTIVE ION)
+       (FLAGS NDESCBIT TRYTAKEBIT)>
+
+<OBJECT GUIDE
+       (IN SATCHEL)
+       (DESC "The Hitchhiker's Guide")
+       (DESCFCN GUIDE-DESCFCN)
+       (SYNONYM COPY GUIDE)
+       (ADJECTIVE HITCHH SUB-E)
+       (SIZE 10)
+       (FLAGS NARTICLEBIT TAKEBIT READBIT)
+       (TEXT "Try: CONSULT GUIDE ABOUT (something).")
+       (ACTION GUIDE-F)>
+
+<ROUTINE GUIDE-DESCFCN ("OPTIONAL" X)
+        <TELL "There is a copy of " ,GUIDE-NAME " here." CR>>
+
+<ROUTINE GUIDE-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The Guide is a Mark II model. Its only resemblance to the Mark IV pictured
+in the brochure in your game package is the large, friendly \"Don't Panic!\"
+on its cover.|
+|
+The Guide is a Sub-Etha Relay. You can use it to tap information from a huge
+and distant data bank by consulting the Guide about some item or subject." CR>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSO? ,GUIDE>>
+               <COND (<FSET? ,TOWEL ,WORNBIT>
+                      <TELL ,WITH-TOWEL CR>
+                      <RTRUE>)
+                     (<PRSI? ,ACCESS-SPACE>
+                      <TELL
+"Suddenly, agents of the " ,AGENCY " pop in using Sub-Etha belts, rough you up
+a bit, tell you there's no such thing as the " ,AGENCY " and never to consult "
+D ,GUIDE " about the " ,AGENCY " again; then they leave." CR>
+                      <RTRUE>)>
+               <TELL
+"The Guide checks through its Sub-Etha-Net database and eventually comes
+up with the following entry:" CR CR>
+               <COND (<PRSI? ,GUIDE>
+                      <TELL
+D ,GUIDE " is a wholly remarkable product." ,ALREADY-KNOW-THAT CR>)
+                     (<PRSI? ,DANGLY-BIT ,SMALL-RECEPTACLE ,LARGE-PLUG
+                             ,SMALL-PLUG ,GREEN-BUTTON ,RED-BUTTON>
+                      <TELL "Part of">
+                      <COND (<AND <PRSI? ,LARGE-PLUG>
+                                  <NOT <IN? ,LARGE-PLUG ,SPARE-DRIVE>>>
+                             <ARTICLE ,SPARE-DRIVE>)
+                            (T
+                             <ARTICLE <LOC ,PRSI>>)>
+                      <TELL "." CR>)
+                     (<PRSI? ,WAR-CHAMBER>
+                      <TELL
+"If you have to consult the Guide about that, you're probably in serious
+shape. Consult a medic instead." CR>)
+                     (<PRSI? ,DAMOGRAN>
+                      <TELL
+D ,DAMOGRAN " is a planet whose surface is mostly water. It is a favourite
+spot for Presidential dedication ceremonies" ,ALSO-SEE "France." CR>)
+                     (<PRSI? ,CLIFF>
+                      <TELL
+"France is the largest landmass on the planet " D ,DAMOGRAN "." CR>)
+                     (<PRSI? ,HEART-OF-GOLD>
+                      <TELL
+"There is absolutely no such spaceship as " D ,HEART-OF-GOLD " and anything
+you've ever read in this spot to the contrary was just a prank.|
+   -- " ,AGENCY CR>) 
+                     (<PRSI? ,POETRY>
+                      <TELL
+D ,POETRY " is so awful that even the Sarkopsi of Burphon XII, whose religion
+strictly forbids the taking of one's life, consider suicide a preferable
+alternative to a " D ,POETRY " reading." CR>)
+                     (<PRSI? ,VOGON-CAPTAIN ,FLEET>
+                      <TELL
+"Vogons, whose specialties are bureaucracy and planet-smashing, are the most
+unpleasant race in the Galaxy. They wouldn't think twice about throwing someone
+into space, and wouldn't lift a finger to save their own grandmother from the "
+D ,BEAST ,ALSO-SEE D ,POETRY " and the " D ,BEAST "." CR>)
+                     (<PRSI? ,BEER ,PUB>
+                      <TELL
+"Alcohol, in addition to its familiar enjoyable effects, also helps cushion
+the shock of" ,BEAM "s." CR>)
+                     (<PRSI? ,BRIDGE>
+                      <TELL
+"The best randomness generator is simple" ,BROWNIAN ". Any hot gas or
+liquid is a good source." CR>)
+                     (<PRSI? ,GALLEY>
+                      <TELL
+"The " ,SCC " incompetently produces a wide range of inefficient and unreliable
+high-tech machinery. However, thanks to SCC's ruthless marketing division, this
+junk accounts for over 95% of the high-tech machinery sold in the Galaxy.
+(SCC's marketing division will be the first against the wall when the
+revolution comes.)" CR>)
+                     (<PRSI? ,PANTRY>
+                      <TELL
+"Thirty million generations of philosophers have debated the definition of
+intelligence. The most popular definition appears in the " ,SCC " android
+manuals: \"Intelligence is the ability to reconcile totally contradictory
+situations without going completely bonkers -- for example, having a stomach
+ache and not having a stomach ache at the same time, holding a hole without
+the doughnut, having good luck and bad luck simultaneously, or seeing a real
+estate agent waive his fee.\"" CR>)
+                     (<PRSI? ,SCREENING-DOOR>
+                      <TELL
+"These " ,SCC " doors screen visitors for such qualities as intelligence
+and ability to time travel" ,ALSO-SEE ,SCC ", " ,GPP ", Intelligence,
+and Time Travel." CR>)
+                     (<PRSI? ,HATCHWAY ,MARVIN ,EDDIE>
+                      <TELL
+,GPP " are a misguided attempt by the " ,SCC " to make their machines behave
+more like people. Among the more miserable failures: paranoid-depressive
+robots and over-protective computers." CR>)
+                     (<PRSI? ,DARK>
+                      <TELL
+"A must for the serious hitchhiker, peril-sensitive sunglasses darken at the
+first hint of danger, thus shielding the wearer from seeing anything alarming.
+Recommended brand: Joo Janta." CR>)   
+                     (<PRSI? ,RAMP>
+                      <TELL
+"According to legend, Magrathea was a planet that amassed incredible wealth by
+manufacturing " D ,OTHER-PLANETS ". The legends also mention it as the setting
+of the very eagerly awaited second Infocom Hitchhiker's game." CR>)
+                     (<PRSI? ,ENGINE-ROOM ,MAIN-DRIVE ,SPARE-DRIVE>
+                      <TELL
+"Scientists have long known how to produce FINITE amounts of improbability,
+using a " ,FIG ", an " D ,PLOTTER " and a good source of" ,BROWNIAN ".
+Recently, however, they have learned to generate INFINITE amounts, thanks to
+the invention of the In" ,FIG ". It is rumored that an" ,IID ", based on this
+new generator, is currently under development" ,ALSO-SEE D ,PLOTTER " and"
+,BROWNIAN "." CR>)
+                     (<PRSI? ,PLOTTER>
+                      <TELL
+"The " D ,PLOTTER " is one of the primary application devices of
+Improbability Physics." CR>)
+                     (<PRSI? ,PEANUTS ,HOLD>
+                      <TELL
+"Sources of protein, such as the common peanut, are carried by all serious
+hitchhikers. Protein loss occurs in" ,BEAM "s and you will become groggy
+unless you replace it immediately." CR>)
+                     (<PRSI? ,NUTRIMAT ,NUT-COM-INTERFACE>
+                      <TELL
+"A typically unreliable " ,SCC " product, the " D ,NUTRIMAT " analyses
+the user's neural paths to provide the (supposedly) ideal offering. Its
+computing power is frankly abysmal, so the optional computer interface
+is a good thing to go for.">
+                      <CRLF>)
+                     (<PRSI? ,POCKET-FLUFF ,JACKET-FLUFF
+                             ,SATCHEL-FLUFF ,CUSHION-FLUFF>
+                      <TELL
+"Fluff is interesting stuff: a deadly poison on Bodega Minor, the diet staple
+of Frazelon V, the unit of currency on the moons of the Blurfoid system, and
+the major crop of the laundry supplies planet, Blastus III.|
+One ancient legend claims that four pieces of fluff lie scattered around the
+Galaxy; each forming one-quarter of the seedling of a tree with amazing
+properties, the sole survivor of the tropical planet Fuzzbol (Footnote 8).|
+The ultimate source of fluff is still a mystery, with the scientific community
+torn between the Big Lint Bang theory and the White Lint Hole theory." CR>) 
+                     (<OR <PRSI? ,ZAPHOD>
+                          <AND <PRSI? ,ME>
+                               <EQUAL? ,IDENTITY-FLAG ,ZAPHOD>>>
+                      <TELL D ,ZAPHOD " is the current" ,PRESIDENT "." CR>) 
+                     (<PRSI? ,BABEL-FISH>
+                      <TELL
+"A mind-bogglingly improbable creature. A " D ,BABEL-FISH ", when placed in
+one's ear, allows one to understand any language." CR>)
+                     (<PRSI? ,TOWEL>
+                      <TELL
+"A towel is the most useful thing (besides the Guide) a Galactic hitchhiker
+can have. Its uses include travel, combat, communications, protection from the
+elements, hand-drying and reassurance. Towels have great symbolic value, with
+many associated points of honour. Never mock the towel of another, even if it
+has little pink and blue flowers on it. Never do something to somebody else's
+towel that you would not want them to do to yours. And, if you borrow the towel
+of another, you MUST return it before leaving their world." CR>)
+                     (<PRSI? ,THUMB ,GUARANTEE>
+                      <TELL
+"The Electronic Sub-Etha Auto Hitching Thumb is a wonderful thing, but should
+not be mistreated. If used while a ship is near, you will be transported there.
+If no ship is in the vicinity, you will place a heavy strain on the Thumb's
+logic circuits, which could lead to malfunction. The Thumb carries the usual "
+,SCC " lifetime " D ,GUARANTEE "s." CR>)
+                     (<PRSI? ,MINERAL-WATER>
+                      <TELL
+"A strong body of opinion holds that this is not water at all, despite the
+claims on the label about how pure the spring is, and all that tosh about
+sparkling babbling brooks and so on. There is something highly suspect about
+the water on Santraginus Five, as anyone who's ever met any of their fish
+will tell you." CR>)
+                     (<PRSI? ,BEAST>
+                      <TELL
+"The " D ,BEAST " is a mind-bogglingly stupid animal. It has almost no capacity
+for learning from experience and is therefore surprised by virtually everything
+that happens to it. Here is an example of how stupid it is: it thinks that if
+you can't see it, it can't see you.|
+Its behaviour would be quite endearing if it wasn't spoilt by this one
+thing: it is the most violently carnivorous creature in the Galaxy. Avoid,
+avoid, avoid." CR>)
+                     (<PRSI? ,FRONT-PORCH>
+                      <TELL
+"A thoroughly unpleasant means of travelling which involves tearing you apart
+in one place and slamming you back together in another. (Of course, it's
+better than the older method, where disassembled people would be transmitted
+down phone lines and arrive in a garbled and sometimes completely disconnected
+state.) You should have a drink or two or three before going through one"
+,ALSO-SEE "Galaxia Woonbeam, Alcohol, and Protein." CR>)
+                     (<PRSI? ,FRONT-OF-HOUSE>
+                      <TELL
+"Galaxia Woonbeam is the author of \"Slimmer's Guide to Weightloss During
+Matter Disassembly Transition.\" This text is currently the subject of the
+biggest suit for criminal negligence damages in history and is unavailable
+at this time." CR>)
+                     (<PRSI? ,ENTRY-BAY>
+                      <TELL
+"The best drink in existence; somewhat like having your brains smashed out by
+a slice of lemon wrapped around a large gold brick." CR>)
+                     (<PRSI? ,THIRD-PLANET ,MAZE>
+                      <TELL "Mostly harmless." CR>)
+                     (<PRSI? ,COUNTRY-LANE>
+                      <TELL ,SPACE-TEXT CR>)
+                     (<FSET? ,PRSI ,TOOLBIT>
+                      <TELL
+"The editor responsible for entries under this heading has been out to lunch
+for a couple of years but is expected back soon, at which point there will be
+rapid updates. Until then, don't panic, unless your situation is really a life
+or death one, in which case, sure, go ahead, panic." CR>)
+                     (<PRSI? ,BEDROOM ,RIFLES ,BLASTER ,TEA ,NO-TEA ,BEAST-GUN
+                             ,SUBSTITUTE ,AFT-CORRIDOR ,AIRLOCK ,INSIDE-WHALE>
+                      <TELL
+"Sorry, that portion of our Sub-Etha database was accidentally deleted last
+night during a wild office party. The lost data will be restored as soon as
+we find someone who knows where the back-up tapes are kept, if indeed any
+are kept at all." CR>)
+                     (T
+                      <TELL
+"That is one of the Great Unanswered Questions. For a list of the others,
+consult the Guide." CR>)>)>>
+
+<GLOBAL SPACE-TEXT
+"If you hyperventilate and then empty your lungs, you will last about thirty
+seconds in the vacuum of space. However, because space is so vastly hugely
+mind-bogglingly big, getting picked up by another ship within those thirty
+seconds is almost infinitely improbable.">
+
+;"shared stuff"
+
+<ROUTINE CANT-SEE (OBJ)
+        <TELL "You can't see">
+        <COND (<NOT <NAME? .OBJ>>
+               <TELL " any">)>
+        <COND (<EQUAL? .OBJ ,PRSO>
+               <PRSO-PRINT>)
+              (T
+               <PRSI-PRINT>)>
+        <TELL " here." CR>
+        <FUCKING-CLEAR>>
+
+<ROUTINE TELL-ME-HOW ()
+        <TELL "You must tell me how to do that to">
+        <ARTICLE ,PRSO>
+        <TELL "." CR>>
+
+<ROUTINE OUT-OF-FIRST (VEHICLE)
+        <TELL "You'll have to get out of the " D .VEHICLE " first." CR>>
+
+<ROUTINE PRIVATE (STRING)
+        <TELL
+"You can't. It's not yours. It's " .STRING "'s and it's private." CR>>
+
+<ROUTINE NOT-VERY-GOOD (STRING)
+        <TELL "It's not a very good " .STRING ", is it?" CR>>
+
+<ROUTINE FACTOR (STRING)
+        <TELL
+" at an improbability factor of 2 to the " .STRING "th power to 1 against.">>
+
+<ROUTINE REMOVING-BIT ()
+        <TELL "(removing the " D ,DANGLY-BIT " first)" CR>>
+
+<ROUTINE PART-OF ()
+        <TELL "You can't --">
+        <ARTICLE ,PRSO T>
+        <TELL " is an integral part of">
+        <ARTICLE <LOC ,PRSO> T>
+        <TELL "." CR>>
+
+<ROUTINE BUT-THAT-MAN (STRING)
+        <TELL
+"Pointing toward Prosser, " .STRING " \"But that man ">
+        <COND (,HOUSE-DEMOLISHED
+               <TELL "just knocked">)
+              (T
+               <TELL "wants to knock">)>
+        <TELL " my house down!\"">>
+
+<ROUTINE CUSHION ()
+        <TELL
+" cushion your system against the coming shock of the" ,BEAM ".">>
+
+<ROUTINE FINE-PRODUCT ()
+        <TELL " It bears a small label which reads \"Another fine product
+of the " ,SCC ".\"">>
+
+<ROUTINE MAKE-WAY-FOR ()
+        <TELL
+" a " D ,FLEET " unexpectedly arrives and demolishes the Earth to make way
+for a new hyperspace bypass." CR>>
+
+<ROUTINE OWN-FEET ()
+        <TELL "You are now on your feet." CR>>
+
+<GLOBAL DOWN-WELL "It goes down well.">
+
+<GLOBAL NOT-PLUGGED "It's not plugged into anything!">
+
+<GLOBAL LYING-ABOUT-EXIT "(We were lying about the exit to port.) ">
+
+<GLOBAL ROARS-OFF " roars off on his ion bike into the Sub-Etha">
+
+<GLOBAL FIDDLES
+"He fiddles with the Thumb for a moment or two before handing it back. ">
+
+<GLOBAL LOOK-AROUND "Look around you.">
+
+<GLOBAL TOO-DARK "It's too dark to see!">
+
+<GLOBAL CANT-GO "You can't go that way.">
+
+<GLOBAL YOU-ARE "You already are!">
+
+<GLOBAL ALREADY-OPEN "It is already open.">
+
+<GLOBAL ALREADY-CLOSED "It is already closed.">
+
+<GLOBAL REFERRING "I don't see what you're referring to.">
+
+<GLOBAL WHILE-LYING "You can't do that while you're lying down!">
+
+<GLOBAL WITH-TOWEL "With a towel wrapped around your head!?!">
+
+<GLOBAL ZEN "A brave, Zen-like effort. It fails.">
+
+<GLOBAL BULLDOZER-PILES "The bulldozer piles into the side of your home.">
+
+<GLOBAL IT-LOOKS-LIKE "It looks like">
+
+<GLOBAL CLAWS " its tungsten carbide Vast-Pain claws">
+
+<GLOBAL PRESIDENT " President of the Galaxy">
+
+<GLOBAL SCC "Sirius Cybernetics Corporation">
+
+<GLOBAL BEAM " matter transference beam">
+
+<GLOBAL FLEET-PLUNGES "The battle fleet plunges toward Earth and">
+
+<GLOBAL ABOVE-NOISE "He can't hear you above the noise." >
+
+<GLOBAL BATTLE-SHORTS " black jewelled battle shorts, ">
+
+<GLOBAL CLOUD-OF-STEAM " in a cloud of green, sweet-smelling steam. ">
+
+<GLOBAL GUIDE-NAME "The Hitchhiker's Guide to the Galaxy">
+
+<GLOBAL ALREADY-KNOW-THAT 
+" But then again you must already know that, since you bought one.">
+
+<GLOBAL THUMB-CLICKS " Thumb merely makes a few feeble clicking noises.">
+
+<GLOBAL BROWNIAN " Brownian motion">
+
+<GLOBAL ASK-ABOUT-OBJECT "\"Oh...you're trying to figure that out also? The
+manual's not much help, is it? By the way, do you know your score? I don't.
+My computer doesn't have a status line.\"">
+
+<GLOBAL DRIVEN-BACK "You struggle to reach the Thumb, but the wind is too
+fierce and you are driven back.">
+
+<GLOBAL GUARDS-REALIZE "A wisp of an inkling of a thought penetrates the
+three-inch thickness of solid bone surrounding the guards' very tiny brains
+that something suspicious is going on. ">
+
+<GLOBAL GETTING-CLOSE " You're getting close, though.">
+
+<GLOBAL GPP "Genuine People Personalities">
+
+<GLOBAL ALSO-SEE ". Also see the entries on ">
+
+<GLOBAL JUST-AS 
+"Just as the Beast is trying to work out where you've disappeared to, it ">
+
+<GLOBAL BUDGE "It won't budge.">
+
+<GLOBAL BEAST-DESC
+"You notice the Beast's Lasero-Zap eyes, its Swivel Shear Teeth, and its
+several dozen tungsten carbide Vast-Pain claws, forged in the sun furnaces
+of Zangrijad. It has skin like a motorway and breath like a 747.">
+
+<GLOBAL NOT-HOLDING "You're not holding">
+
+<GLOBAL WITH-PASSION
+" with passion, and ignores a passing microscopic space fleet.">
+
+<GLOBAL DIALLING-TONE " A moment later, the dialing tone is suddenly cut off.
+Glancing through the window you can't help but notice the large old oak tree of
+which you are particularly fond crashing down through the phone cable.">
+
+<GLOBAL ANNOUNCEMENT "\"Announcement, announcement. This is ">
+
+<GLOBAL HANDS-OFF "The barman snaps \"Hands off until you pay for it!\"">
+
+<GLOBAL ARRESTED "Do you want to get arrested for indecent exposure?">
+
+<GLOBAL AGENCY "Galactic Security Agency">
+
+<GLOBAL LOST-PLANET " the legendary lost planet of Magrathea">
+
+<GLOBAL DONT-MIX
+"Despite your hangover, you recall that Zaphod and water don't mix.">
+
+<GLOBAL CROWD-CHEERS "The crowd cheers wildly! It thinks you're terrific.">
+
+<GLOBAL HUMANS "Humans are so depressingly ">
+
+<GLOBAL EYE-STALK "electronic eye stalk shoots up from the hood, ">
+
+<GLOBAL SLOWLY-DAWNS
+" Slowly it dawns on the creature that someone is trying to make a fool
+of it. It starts to look for you again.">
+
+<GLOBAL IID " Infinite Improbability Drive">
+
+<GLOBAL FIG "finite Improbability Generator">
+
+<GLOBAL ROBOT-FLIES-IN
+"A small upper-half-of-the-room cleaning robot flies into the room, ">
+
+<GLOBAL ON-OTHER-SIDE "standing on the other side">
+
+<GLOBAL MOP " the manual override receptacle">
+
+<GLOBAL NICE-DAY "t's a bright morning, the sun is shining, the birds are
+singing, the meadows are blooming">
+
+<GLOBAL GET-RID " you've been trying to get rid of it for years.">
+
+<GLOBAL THUMB-FUMBLE "You fumble with the Thumb as you hold onto the tree
+against the fierce wind. It falls to the ground near Arthur's feet.">
+
+<GLOBAL ENGAGED " all circuits are currently engaged by the ">
\ No newline at end of file
diff --git a/heart.zil b/heart.zil
new file mode 100644 (file)
index 0000000..f529f35
--- /dev/null
+++ b/heart.zil
@@ -0,0 +1,1978 @@
+"HEART for
+                 THE HITCHHIKER'S GUIDE TO THE GALAXY
+       (c) Copyright 1984 Infocom, Inc.  All Rights Reserved."
+
+<ROUTINE IN-HEART? (OBJ)
+   <COND (<OR <EQUAL? <META-LOC .OBJ> ,ENTRY-BAY ,FORE-CORRIDOR ,AFT-CORRIDOR>
+             <EQUAL? <META-LOC .OBJ> ,GALLEY ,BRIDGE ,ENGINE-ROOM>
+             <EQUAL? <META-LOC .OBJ> ,HATCHWAY ,PANTRY ,ACCESS-SPACE>>
+         <RTRUE>)
+        (T
+         <RFALSE>)>>
+
+<OBJECT HEART-OF-GOLD
+       (IN LOCAL-GLOBALS)
+       (DESC "the Heart of Gold")
+       (SYNONYM HEART GOLD SHIP SPACES)
+       (ADJECTIVE SPACE INCRED NEW)
+       (FLAGS NARTICLEBIT)
+       (ACTION HEART-OF-GOLD-F)>
+
+<ROUTINE HEART-OF-GOLD-F ()
+        <COND (<VERB? LEAVE EXIT DISEMBARK>
+               <COND (<EQUAL? ,HERE ,HATCHWAY>
+                      <DO-WALK ,P?DOWN>)
+                     (<EQUAL? ,HERE ,DAIS>
+                      <TELL ,LOOK-AROUND CR>)
+                     (T
+                      <V-WALK-AROUND>)>)
+              (<VERB? THROUGH WALK-TO BOARD>
+               <COND (<EQUAL? ,HERE ,DAIS>
+                      <DO-WALK ,P?EAST>)
+                     (<IN-HEART? ,PROTAGONIST>
+                      <TELL ,LOOK-AROUND CR>)>)>>
+
+<GLOBAL TEA-SHOWN <>>
+
+<GLOBAL SUBSTITUTE-DRUNK <>>
+
+<ROOM PANTRY
+      (IN ROOMS)
+      (SYNONYM INTELL)
+      (DESC "Marvin's Pantry")
+      (LDESC "This is a small closet with an exit to starboard.")
+      (EAST TO AFT-CORRIDOR)
+      (OUT TO AFT-CORRIDOR)
+      (FLAGS RLANDBIT ONBIT NARTICLEBIT)
+      (PSEUDO "PANTRY" GLOBAL-ROOM-F "CLOSET" GLOBAL-ROOM-F)
+      (GLOBAL HEART-OF-GOLD SCREENING-DOOR)
+      (ACTION PANTRY-F)>
+
+<ROUTINE PANTRY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <COND (<NOT ,LANDED>
+                      <MOVE ,MARVIN ,HERE>
+                      <DISABLE <INT I-MARVIN>>)>
+               <COND (<FSET? ,SCREENING-DOOR ,MUNGEDBIT>
+                      <TELL
+"As you pass the door, it slams against you, bruising your upper arm, and then
+opens again. \"Take that, door-kicker.\"" CR CR>)>
+               <TELL
+"Upon entering the room, you are battered by tidal waves of depression. ">
+               <COND (<L? ,SCORE 300>
+                      <JIGS-UP "In fact, a lethal dose.">
+                      <RTRUE>)
+                     (T
+                      <COND (<NOT <FSET? ,PANTRY ,REVISITBIT>>
+                             <FSET ,PANTRY ,REVISITBIT>
+                             <SETG SCORE <+ ,SCORE 25>>)>
+                      <TELL
+"However, the happiness derived from your high score and that thoroughly
+excellent cup of tea you had recently help you to survive." CR CR>)>)>> 
+
+<OBJECT SCREENING-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "screening door")
+       (SYNONYM DOOR)
+       (ADJECTIVE SCREEN)
+       (FLAGS DOORBIT NDESCBIT ACTORBIT)
+       (ACTION SCREENING-DOOR-F)>
+
+<ROUTINE SCREENING-DOOR-F ()
+        <COND (<EQUAL? ,SCREENING-DOOR ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,SCREENING-DOOR ,PRSI>
+                      <SETG WINNER ,SCREENING-DOOR>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,SCREENING-DOOR>
+                      <SETG WINNER ,SCREENING-DOOR>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,SCREENING-DOOR ,OBJECT-OF-GAME>
+                      <SETG WINNER ,SCREENING-DOOR>
+                      <RTRUE>)
+                     (T
+                      <TELL
+"\"Unless you're here to show me some clear sign of your intelligence, please
+leave me alone. I'm a very busy door.\"" CR>
+                      <FUCKING-CLEAR>)>)
+              (<AND <FSET? ,SCREENING-DOOR ,OPENBIT>
+                    <VERB? SHOW GIVE KNOCK OPEN>>
+               <TELL "You already induced the door to open." CR>)
+              (<AND <FSET? ,SCREENING-DOOR ,OPENBIT>
+                    <VERB? CLOSE>>
+               <TELL
+"The door snaps, \"Hey! I'm resting. I've had a very busy day.\"" CR>)
+              (<VERB? KICK>
+               <FSET ,SCREENING-DOOR ,MUNGEDBIT>
+               <TELL
+"\"I suppose you think that since you have legs and I have not, you can get
+away with that sort of thing. Well,\" the door continues stiffly, \"maybe you
+can and maybe you can't.\"" CR>)
+              (<VERB? SHOW GIVE>
+               <COND (<AND <PRSO? ,TEA ,NO-TEA>
+                           ,TEA-SHOWN
+                           <HELD? ,TEA>
+                           ,HOLDING-NO-TEA
+                           <NOT <PRSO? ,TEA-SHOWN>>>
+                      <PERFORM ,V?KNOCK ,SCREENING-DOOR>
+                      <RTRUE>)
+                     (T
+                      <COND (<PRSO? ,TEA ,NO-TEA>
+                             <SETG TEA-SHOWN ,PRSO>)>
+                      <COND (<PROB 50>
+                             <TELL
+"The door says \"Big deal. Anyone can have">
+                             <ARTICLE ,PRSO>
+                             <TELL ".\"" CR>)
+                            (T
+                             <TELL "The door yawns." CR>)>)>)
+              (<VERB? OPEN KNOCK>
+               <COND (<AND <HELD? ,TEA>
+                           ,HOLDING-NO-TEA>
+                      <FSET ,SCREENING-DOOR ,OPENBIT>
+                      <TELL
+"The door is almost speechless with admiration. \"Wow. Simultaneous tea
+and no tea. My apologies. You are clearly a heavy-duty philosopher.\" It
+opens respectfully." CR>)
+                     (T
+                      <TELL
+"The door explains, in a haughty tone, that the room is occupied by a
+super-intelligent robot and that lesser beings (by which it means you)
+are not to be admitted. \"Show me some tiny example of your intelligence,\"
+it says, \"and maybe, just maybe, I might reconsider.\"" CR>)>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL "\"To keep out sub-intelligent beings.\"" CR>)
+              (<VERB? THROUGH>
+               <COND (<EQUAL? ,HERE ,PANTRY>
+                      <DO-WALK ,P?EAST>)
+                     (T
+                      <DO-WALK ,P?WEST>)>)
+              (<VERB? EXAMINE>
+               <FCLEAR ,SCREENING-DOOR ,ACTORBIT>
+               <V-LOOK-INSIDE>
+               <FSET ,SCREENING-DOOR ,ACTORBIT>)>>
+
+<OBJECT MARVIN
+       (IN PANTRY)
+       (DESC "Marvin")
+       (LDESC "Marvin, the Paranoid Android, is here.")
+       (SYNONYM MARVIN MARV ROBOT ANDROI)
+       (ADJECTIVE DEPRES PARANO)
+       (FLAGS NARTICLEBIT ACTORBIT)
+       (ACTION MARVIN-F)>
+
+<ROUTINE MARVIN-F ()
+        <COND (<EQUAL? ,MARVIN ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,MARVIN ,PRSI>
+                      <SETG WINNER ,MARVIN>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,MARVIN>
+                      <SETG WINNER ,MARVIN>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,MARVIN ,OBJECT-OF-GAME>
+                      <SETG WINNER ,MARVIN>
+                      <RTRUE>)
+                     (<EQUAL? ,HERE ,PANTRY>
+                      <COND (<AND <VERB? REPAIR OPEN>
+                                  <PRSO? ,HATCH ,MECHANISM>>
+                             <COND (<NOT ,LANDED>
+                                    <TELL
+"\"" ,HUMANS "stupid. Are you aware,\" he asks, \"that this ship is in
+space, that space is an almost perfect vacuum, and that the hatch is the
+only thing holding in all the air?\"" CR>)
+                                   (<EQUAL? ,MARVIN-COUNTER 3>
+                                    <TELL
+"\"After the help I got last time? " ,HUMANS "ungrateful. Go away.\""CR>)
+                                   (<EQUAL? ,MARVIN-COUNTER 4>
+                                    <TELL "\"I did.\"" CR>)
+                                   (<G? ,MARVIN-COUNTER 0>
+                                    <TELL
+"\"Yes, I said I'd do it! " ,HUMANS "repetitious.\"" CR>)
+                                   (T
+                                    <SETG MARVIN-COUNTER 1>
+                                    <ENABLE <QUEUE I-MARVIN 12>>
+                                    <TELL
+"\"" ,HUMANS "demanding. Do this. Pick up that. Unjam the opening mechanism
+of the other. Meet me in the hatchway " D ,ACCESS-SPACE " in twelve turns. I
+suppose,\" he mutters, \"you can count up to twelve. So hard to know with
+morons. And don't forget to bring the proper tool.\"" CR>)>)
+                            (<AND <VERB? WHAT>
+                                  <PRSO? ,TWEEZERS>
+                                  <G? ,MARVIN-COUNTER 0>>
+                             <TELL
+"Marvin looks scornful. \"How did you get past my door if you're so
+primordially benighted that you don't even know which tool is needed
+for a job like this?\"" CR>)
+                            (T
+                             <TELL "\"Please don't feel you have
+to take any notice of me. I'm just a menial robot.\"" CR>
+                             <FUCKING-CLEAR>)>) 
+                     (T
+                      <TELL
+"\"I think you ought to know I'm feeling very depressed.\"" CR>
+                      <FUCKING-CLEAR>)>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL
+"\"Being clever doesn't always make you happy, you know. Look at me, brain
+the size of a planet, how many points do you think I've got? Minus thirty
+zillion at the last count.\"" CR>)
+              (<AND <VERB? FOLLOW>
+                    <EQUAL? ,FOLLOW-FLAG 2>>
+               <COND (<IN? ,MARVIN ,PANTRY>
+                      <DO-WALK ,P?WEST>)
+                     (T
+                      <GOTO <LOC ,MARVIN>>)>)
+              (<AND <VERB? FOLLOW>
+                    <EQUAL? ,FOLLOW-FLAG 7>>
+               <DO-WALK ,P?WEST>)
+              (<AND <VERB? GIVE>
+                    <EQUAL? ,MARVIN-COUNTER 2>>
+               <COND (<PRSO? ,TOOL-REQUIRED>
+                      <SETG SCORE <+ ,SCORE 25>>
+                      <SETG MARVIN-COUNTER 4>
+                      <SETG FOLLOW-FLAG 7>
+                      <ENABLE <QUEUE I-FOLLOW 2>>
+                      <DISABLE <INT I-MARVIN>>
+                      <FSET ,HATCH ,OPENBIT>
+                      <MOVE ,MARVIN ,PANTRY>
+                      <MOVE ,TOOL-REQUIRED ,MARVIN>
+                      <TELL
+"Marvin fiddles inside the " D ,MECHANISM " with the " D ,TOOL-REQUIRED " for
+about three-tenths of a second. You hear the hatchway slide open. \"I don't
+expect you to be grateful,\" says Marvin, \"or even interested, but that was
+probably more complicated than every single action you'll ever perform in your
+entire life put together.\" He limps away. \"And me,\" you hear him mutter as
+he goes, \"with this terrible pain in all the diodes down my left side.\"" CR>)
+                     (T
+                      <TELL "\"That's not">
+                      <ARTICLE ,TOOL-REQUIRED>
+                      <TELL ".\"" CR>)>)>>
+
+<ROUTINE I-MARVIN ()
+        <ENABLE <QUEUE I-MARVIN -1>>
+        <COND (<EQUAL? ,MARVIN-COUNTER 2>
+               <SETG MARVIN-COUNTER 3>
+               <CRLF>
+               <COND (<EQUAL? ,HERE ,HATCHWAY>
+                      <TELL "Marvin emerges from the " D, ACCESS-SPACE ". ">)>
+               <TELL "\"">
+               <MARVIN-BITCH>
+               <SETG MARVIN-COUNTER 3>)
+              (<IN? ,MARVIN ,ACCESS-SPACE>
+               <COND (<EQUAL? ,HERE ,ACCESS-SPACE>
+                      <COND (<NOT ,TOOL-REQUIRED>
+                             <REPEAT ()
+                              <SETG TOOL-REQUIRED <PICK-ONE ,TOOL-LIST>>
+                              <COND (<NOT <HELD? ,TOOL-REQUIRED ,PROTAGONIST>>
+                                     <RETURN>)>>)>
+                      <SETG MARVIN-COUNTER 2>
+                      <TELL "Marvin, looking bored, says \"Hand me">
+                      <ARTICLE ,TOOL-REQUIRED>
+                      <TELL ".\"" CR>)
+                     (T
+                      <TELL CR "Marvin wanders up to you. \"I went to the "
+D ,ACCESS-SPACE " but you never showed up. ">
+                      <MARVIN-BITCH>
+                      <SETG MARVIN-COUNTER 3>)>)
+              (<EQUAL? ,MARVIN-COUNTER 1>
+               <MOVE ,MARVIN ,ACCESS-SPACE>
+               <COND (<EQUAL? ,HERE ,ACCESS-SPACE>
+                      <TELL "Marvin shambles in." CR>)
+                     (T
+                      <RFALSE>)>)
+              (<IN? ,MARVIN ,HERE>
+               <ENABLE <QUEUE I-FOLLOW 2>>
+               <SETG FOLLOW-FLAG 2>
+               <CRLF>
+               <COND (<OR <EQUAL? ,HERE ,HATCHWAY ,GALLEY ,ENTRY-BAY>
+                          <EQUAL? ,HERE ,FORE-CORRIDOR ,ENGINE-ROOM ,BRIDGE>>
+                      <TELL "Marvin wanders off." CR>
+                      <COND (<EQUAL? ,HERE ,FORE-CORRIDOR 
+                                           ,ENGINE-ROOM ,HATCHWAY>
+                             <MOVE ,MARVIN ,AFT-CORRIDOR>)
+                            (T
+                             <MOVE ,MARVIN ,FORE-CORRIDOR>)>)
+                     (<EQUAL? ,HERE ,AFT-CORRIDOR>
+                      <MOVE ,MARVIN ,PANTRY>
+                      <TELL
+"Marvin enters a room to port, and the door closes behind him." CR>)
+                     (T
+                      <TELL "Bug #17">)>)
+              (<NOT <IN? ,MARVIN ,PANTRY>>
+               <MOVE ,MARVIN ,PANTRY>
+               <RFALSE>)
+              (<OR <NOT <IN-HEART? ,PROTAGONIST>>
+                   <EQUAL? ,HERE ,ACCESS-SPACE>
+                   <FSET? ,SCREENING-DOOR ,OPENBIT>
+                   ,AWAITING-REPLY>
+               <RFALSE>)
+              (<AND <EQUAL? ,HERE ,ENGINE-ROOM>
+                    <L? ,LOOK-COUNTER 3>>
+               <RFALSE>)
+              (<PROB 8>
+               <MOVE ,MARVIN ,HERE>
+               <TELL CR
+"You feel a wave of depression sweep over you, and you turn to see that
+Marvin the robot has stalked miserably into the room." CR>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE MARVIN-BITCH ()
+        <DISABLE <INT I-MARVIN>>
+        <MOVE ,MARVIN ,PANTRY>
+        <TELL
+"Ah. I was misled into thinking that you wanted me to open the hatch,
+probably by the fact that you asked me to. Obviously you changed your mind
+or I misunderstood you or you are a moronic imbecile. I wonder which">
+        <COND (<NOT <EQUAL? ,HERE ,PANTRY>>
+               <TELL
+". I'm going back to my pantry to be alone with my grief">)>
+        <TELL ".\" Marvin stalks miserably away." CR>>
+
+<GLOBAL MARVIN-COUNTER 0>
+;"1 = Marvin's been asked to fix hatch.
+  2 = Marvin's waiting for you to hand him the right tool.
+  3 = Marvin's pissed because you weren't there or gave him the wrong tool.
+  4 = Marvin's already opened the hatch."
+
+<GLOBAL TOOL-REQUIRED <>>
+
+<GLOBAL FLUFF-COUNTER 0>
+
+<GLOBAL PLANT-BLOOMED <>>
+
+<OBJECT FLOWERPOT
+       (IN INSIDE-WHALE)
+       (DESC "flowerpot")
+       (SYNONYM FLOWER POT SOIL DIRT)
+       (ADJECTIVE FLOWER FERTIL)
+       (CAPACITY 1)
+       (SIZE 15)
+       (FLAGS TAKEBIT CONTBIT OPENBIT)
+       (ACTION FLOWERPOT-F)>
+
+<ROUTINE FLOWERPOT-F ()
+        <COND (<AND <VERB? WATER>
+                    <PRSO? ,FLOWERPOT>
+                    <IN? ,PLANT ,FLOWERPOT>>
+               <PERFORM ,V?WATER ,PLANT ,PRSI>
+               <RTRUE>)
+              (<VERB? EXAMINE READ LOOK-INSIDE>
+               <TELL "The pot is filled with fertile soil">
+               <COND (<IN? ,PLANT ,FLOWERPOT>
+                      <TELL ", out of which has sprouted a ">
+                      <COND (,PLANT-BLOOMED
+                             <TELL "large, leafy plant">)
+                            (T
+                             <TELL "tiny plant stalk">)>)
+                     (T
+                      <TELL
+". It is inscribed \"Inertial Guidance System -- Magrathean Missile Company.\"
+It must have been created by the same burst of improbability that created
+the whale itself">)>
+               <TELL "." CR>)
+              (<AND <VERB? PUT>
+                    <PRSO? ,POCKET-FLUFF ,JACKET-FLUFF
+                           ,SATCHEL-FLUFF ,CUSHION-FLUFF>>
+               <MOVE ,PRSO ,LOCAL-GLOBALS>
+               <SETG FLUFF-COUNTER <+ ,FLUFF-COUNTER 1>>
+               <COND (<EQUAL? ,FLUFF-COUNTER 4>
+                      <ENABLE <QUEUE I-PLANT 10>>)>
+               <TELL
+"You dig a " D ,FISH-HOLE ", gingerly place the fluff at the bottom, and
+cover it over." CR>)
+              (<AND <VERB? OPEN CLOSE>
+                    <PRSO? ,FLOWERPOT>>
+               <TELL-ME-HOW>)>>
+
+<ROUTINE I-PLANT ()
+        <MOVE ,PLANT ,FLOWERPOT>
+        <COND (<VISIBLE? ,FLOWERPOT>
+               <TELL CR
+"You notice a tiny movement from the " D ,FLOWERPOT ". You look closely, and
+see a tiny sprout poking out of the soil." CR>)
+              (T
+               <RFALSE>)>>
+
+<OBJECT PLANT
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "plant")
+       (SYNONYM PLANT SPROUT STEM STALK)
+       (ADJECTIVE SMALL LARGE LEAFY)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (ACTION PLANT-F)>
+
+<ROUTINE PLANT-F ()
+        <COND (<VERB? EXAMINE>
+               <COND (,PLANT-BLOOMED
+                      <TELL "The plant is now large and leafy.">
+                      <COND (<AND <FSET? ,FRUIT ,NDESCBIT>
+                                  <VISIBLE? ,FRUIT>>
+                             <TELL
+" Hanging from it is a large, succulent fruit.">)>
+                      <CRLF>)
+                     (T
+                      <TELL "The plant is just a tiny stem." CR>)>)
+              (<AND <VERB? TAKE DROP>
+                    <PRSO? ,PLANT>>
+               <COND (,PRSI
+                      <PART-OF>)
+                     (T
+                      <PERFORM ,PRSA ,FLOWERPOT ,PRSI>
+                      <RTRUE>)>)
+              (<AND <VERB? WATER>
+                    <NOT ,PLANT-BLOOMED>
+                    <PRSI? ,MINERAL-WATER ,SUBSTITUTE ,TEA>>
+               <MOVE ,PRSI ,LOCAL-GLOBALS>
+               <MOVE ,PLANT ,LOCAL-GLOBALS>
+               <TELL "After several seconds, the plant shrivels up.">
+               <ANTI-LITTER "cup">
+               <CRLF>)>>
+
+<OBJECT FRUIT
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "fruit")
+       (SYNONYM FRUIT)
+       (ADJECTIVE LARGE SUCCUL)
+       (FLAGS NDESCBIT TRYTAKEBIT TAKEBIT EATBIT)
+       (ACTION FRUIT-F)>
+
+<ROUTINE FRUIT-F ("AUX" X)
+        <COND (<AND <VERB? TAKE PICK>
+                    <FSET? ,FRUIT ,TRYTAKEBIT>>
+               <FCLEAR ,FRUIT ,TRYTAKEBIT>
+               <FCLEAR ,FRUIT ,NDESCBIT>
+               <MOVE ,FRUIT ,PROTAGONIST>
+               <TELL "Done." CR>)
+              (<AND <VERB? DROP THROW>
+                    <FSET? ,FRUIT ,TRYTAKEBIT>>
+               <FCLEAR ,FRUIT ,TRYTAKEBIT>
+               <FCLEAR ,FRUIT ,NDESCBIT>
+               <MOVE ,FRUIT ,HERE>
+               <COND (<VERB? DROP>
+                      <TELL "Dropped." CR>)
+                     (T
+                      <TELL "Thrown." CR>)>)
+              (<VERB? EAT>
+               <REPEAT ()
+                       <SETG TOOL-REQUIRED <PICK-ONE ,TOOL-LIST>>
+                       <SET X <+ .X 1>>
+                       <COND (<OR <NOT <IN-HEART? ,TOOL-REQUIRED>>
+                                  <G? .X 50>>
+                              <RETURN>)>>
+               <MOVE ,FRUIT ,LOCAL-GLOBALS>
+               <TELL
+"The fruit has a zesty taste, and you devour it greedily. Suddenly, your vision
+wavers, and you see yourself, as though from a distance, standing near Marvin,
+who asks you for">
+               <ARTICLE ,TOOL-REQUIRED>
+               <TELL
+". Then, the image vanishes like a movie when the film breaks, and you find
+yourself still in">
+               <ARTICLE ,HERE T>
+               <TELL ".|
+|
+It seems that this plant is a rare horticultural phenomenon long thought to
+be extinct: The Tree of Foreknowledge." CR>)>>
+
+<ROOM GALLEY
+      (IN ROOMS)
+      (SYNONYM CORPOR SCC)
+      (ADJECTIVE SIRIUS CYBERN)
+      (DESC "Galley")
+      (EAST TO FORE-CORRIDOR)
+      (OUT TO FORE-CORRIDOR)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "GALLEY" GLOBAL-ROOM-F)
+      (GLOBAL HEART-OF-GOLD)
+      (ACTION GALLEY-F)>
+
+<ROUTINE GALLEY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You are in the Galley area of the ship, containing a machine which is the
+state of the art in Nutritional Technology, a " ,SCC " " D ,NUTRIMAT ". There
+is an exit to starboard." CR>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <NOT <RUNNING? ,I-TEA>>
+                    <PROB 3>>
+               <SETG FOLLOW-FLAG 6>
+               <ENABLE <QUEUE I-FOLLOW 2>>
+               <TELL CR
+D ,ZAPHOD " walks in and presses the " D ,PAD ". The " D ,NUTRIMAT
+" produces a huge, ice-cold Pan-Galactic Gargle Blaster. Zaphod heads off
+toward the sauna, sipping loudly." CR>)>>
+
+<OBJECT NUTRIMAT
+       (IN GALLEY)
+       (DESC "Nutrimat")
+       (SYNONYM NUTRIM MACHIN PANEL)
+       (ADJECTIVE SERVIC)
+       (FLAGS NDESCBIT ACTORBIT CONTBIT LIGHTBIT SEARCHBIT)
+       (ACTION NUTRIMAT-F)>
+
+<ROUTINE NUTRIMAT-F ()
+        <COND (<EQUAL? ,NUTRIMAT ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,NUTRIMAT ,PRSI>
+                      <SETG WINNER ,NUTRIMAT>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,NUTRIMAT>
+                      <SETG WINNER ,NUTRIMAT>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,NUTRIMAT ,OBJECT-OF-GAME>
+                      <SETG WINNER ,NUTRIMAT>
+                      <RTRUE>)
+                     (<OR <AND <VERB? SGIVE>
+                               <PRSO? ,ME>>
+                          <AND <VERB? GIVE>
+                               <PRSI? ,ME>>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-FOR ,NUTRIMAT ,PRSI>
+                      <SETG WINNER ,NUTRIMAT>
+                      <RTRUE>)
+                     (<AND <VERB? MAKE>
+                           <PRSO? ,TEA ,NO-TEA>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?RUB ,PAD>
+                      <SETG WINNER ,NUTRIMAT>
+                      <RTRUE>)
+                     (T
+                      <TELL "The " D ,NUTRIMAT " ignores you." CR>
+                      <FUCKING-CLEAR>)>)
+              (<VERB? EXAMINE>
+               <TELL
+"The " D ,NUTRIMAT " has a " D ,PAD ", a dispensing slot, and a
+service panel which is ">
+               <COND (<FSET? ,NUTRIMAT ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL "closed">)>
+               <TELL ".">
+               <FINE-PRODUCT>
+               <COND (<RUNNING? ,I-TEA>
+                      <TELL " ">
+                      <PERFORM ,V?LISTEN ,NUTRIMAT>
+                      <RTRUE>)
+                     (T
+                      <CRLF>)>)
+              (<AND <VERB? LISTEN>
+                    <RUNNING? ,I-TEA>>
+               <TELL
+"The " D ,NUTRIMAT " is making a faint whirring noise." CR>)
+              (<AND <VERB? ASK-FOR>
+                    <PRSI? ,TEA ,SUBSTITUTE>>
+               <PERFORM ,V?RUB ,PAD>
+               <RTRUE>)
+              (<VERB? LAMP-ON>
+               <PERFORM ,V?RUB ,PAD>
+               <RTRUE>)
+              (<AND <VERB? LAMP-OFF>
+                    <RUNNING? ,I-TEA>>
+               <PERFORM ,V?RUB ,PAD>
+               <RTRUE>)
+              (<AND <VERB? KILL KICK SHAKE>
+                    ,SUBSTITUTE-DRUNK>
+               <TELL "The " D ,NUTRIMAT " says ">
+               <COND (<PROB 50>
+                      <TELL "\"Share and Enjoy.\"" CR>)
+                     (T
+                      <TELL
+"\"If you have enjoyed the experience of this drink, why not share it with
+your friends?\"" CR>)>)
+              (<AND <VERB? PUT PLUG>
+                    <PRSI? ,NUTRIMAT>>
+               <COND (<NOT <FSET? ,NUTRIMAT ,OPENBIT>>
+                      <TELL "The panel is closed." CR>)
+                     (<FIRST? ,NUTRIMAT>
+                      <TELL "There's no room." CR>)
+                     (<PRSO? ,BOARD ,NUT-COM-INTERFACE>
+                      <MOVE ,PRSO ,NUTRIMAT>
+                      <TELL "Done." CR>)
+                     (T
+                      <V-PLUG>)>)
+              (<VERB? LOOK-INSIDE>
+               <COND (<NOT <FSET? ,NUTRIMAT ,OPENBIT>>
+                      <PERFORM ,V?OPEN ,NUTRIMAT>
+                      <RTRUE>)
+                     (<IN? ,BOARD ,NUTRIMAT>
+                      <TELL "There is a " D ,BOARD " there." CR>)
+                     (<IN? ,NUT-COM-INTERFACE ,NUTRIMAT>
+                      <TELL "There is a " D ,NUT-COM-INTERFACE " there." CR>)
+                     (T
+                      <TELL "There's nothing in the " D ,NUTRIMAT "." CR>)>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL
+"\"To provide a nutritious and flavour-enhanced diet.\"" CR>)>>
+
+<OBJECT PAD
+       (IN GALLEY)
+       (DESC "touch-sensitive pad")
+       (SYNONYM PAD)
+       (ADJECTIVE TOUCH SENSIT)
+       (FLAGS NDESCBIT)
+       (ACTION PAD-F)>
+
+<ROUTINE PAD-F ()
+        <COND (<VERB? RUB PUSH>
+               <COND (<IN? ,NUT-COM-INTERFACE ,NUTRIMAT>
+                      <COND (<RUNNING? ,I-TEA>
+                             <TELL
+"\"Please wait..." D ,NUTRIMAT " engaged.\"" CR>)
+                            (<IN? ,TEA ,PAD>
+                             <ENABLE <QUEUE I-TEA -1>>
+                             <TELL
+"The " D ,NUTRIMAT " is puzzled that you want something made by pouring
+boiling water on dead leaves and squirting stuff from a cow in it, and
+says that it will need some help from " D ,EDDIE "." CR>)
+                            (T
+                             <TELL
+"\"I won't go through that again. If " D ,SUBSTITUTE " isn't good
+enough, too bad.\"" CR>)>)
+                     (<IN? ,SUBSTITUTE ,PAD>
+                      <MOVE ,SUBSTITUTE ,SLOT>
+                      <SETG P-IT-OBJECT ,SUBSTITUTE>
+                      <TELL
+"The " D ,NUTRIMAT " makes an instant but highly detailed examination of
+your taste buds, a spectroscopic analysis of your metabolism and
+sends tiny experimental signals down your neural pathways to see
+what you like.|
+A cupful of " D ,SUBSTITUTE " appears in the dispensing slot." CR>)
+                     (T
+                      <TELL
+"\"You still haven't drunk the nutritious and flavour-enhanced cupful of "
+D ,SUBSTITUTE " I already gave you,\" scolds the " D ,NUTRIMAT "." CR>)>)>>
+
+<OBJECT SLOT
+       (IN GALLEY)
+       (DESC "slot")
+       (SYNONYM SLOT)
+       (ADJECTIVE DISPEN)
+       (FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)
+       (CAPACITY 20)
+       (ACTION SLOT-F)>
+
+<ROUTINE SLOT-F ()
+        <COND (<AND <VERB? OPEN CLOSE>
+                    <PRSO? ,SLOT>>
+               <TELL-ME-HOW>)>>
+
+<OBJECT BOARD
+       (IN NUTRIMAT)
+       (DESC "circuit board")
+       (SYNONYM BOARD MESSAG LETTER MICROC)
+       (ADJECTIVE CIRCUI MICROS PRINTE)
+       (FLAGS TAKEBIT CONTBIT TRANSBIT)
+       (ACTION BOARD-F)>
+
+<ROUTINE BOARD-F ()
+        <COND (<AND <VERB? OPEN CLOSE>
+                    <PRSO? ,BOARD>>
+               <TELL-ME-HOW>)
+              (<VERB? EXAMINE>
+               <TELL
+"The " D ,PRSO " is square, about ten inches on each side. It has a number
+of microchips, some printed circuitry, and a message printed in microscopic
+letters. There are also eight " D ,DIPSWITCH "es, marked:|
+  1  Cholesterol Register|
+  2  MSG Specifier|
+  3  Thiamin Stack|
+  4  Piquant-O-Mat|
+  5  Flavour Dump|
+  6  Vitamin Interrupts|
+  7  Nose Sequencer|
+  8  Bouquet Arbitration Bus" CR>)
+              (<VERB? MUNG>
+               <MOVE ,BOARD ,LOCAL-GLOBALS>
+               <TELL
+"It's all the device deserves. It shatters with a satisfying crunch." CR>)
+              (<AND <VERB? READ EXAMINE-THROUGH>
+                    <PRSI? ,MAGNIFYING-GLASS>>
+               <TELL
+"The message reads \"This is just a satirical device. It has no
+practical function.\"" CR>)
+              (<VERB? READ>
+               <TELL "The message is too small for you to read." CR>)>>
+
+<OBJECT DIPSWITCH
+       (IN BOARD)
+       (DESC "dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENT EIGHTH)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+<ROUTINE DIPSWITCH-F ()
+        <COND (<VERB? TURN THROW LAMP-ON LAMP-OFF PUSH MOVE>
+               <TELL "Switched.">
+               <COND (<IN? ,BOARD ,NUTRIMAT>
+                      <TELL
+" Some lights on the " D ,NUTRIMAT " flash briefly. A promising hum
+quickly dies away." CR>)
+                     (T
+                      <CRLF>
+                      <RTRUE>)>)>>
+
+;<OBJECT DIPSWITCH-8
+       (IN BOARD)
+       (DESC "eighth dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE EIGHTH DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+;<OBJECT DIPSWITCH-7
+       (IN BOARD)
+       (DESC "seventh dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE SEVENTH DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+;<OBJECT DIPSWITCH-6
+       (IN BOARD)
+       (DESC "sixth dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE SIXTH DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+;<OBJECT DIPSWITCH-5
+       (IN BOARD)
+       (DESC "fifth dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE FIFTH DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+;<OBJECT DIPSWITCH-4
+       (IN BOARD)
+       (DESC "fourth dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE FOURTH DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+;<OBJECT DIPSWITCH-3
+       (IN BOARD)
+       (DESC "third dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE THIRD DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+;<OBJECT DIPSWITCH-2
+       (IN BOARD)
+       (DESC "second dipswitch")
+       (SYNONYM SWITCH DIPSWI)
+       (ADJECTIVE SECOND DIP)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (ACTION DIPSWITCH-F)>
+
+<OBJECT SUBSTITUTE
+       (IN PAD)
+       (DESC "Advanced Tea Substitute")
+       (DESCFCN SUBSTITUTE-DESCFCN)
+       (SYNONYM CUP CUPFUL SUBSTI ATS)
+       (ADJECTIVE TEA ADVANC NICE HOT)
+       (FLAGS NARTICLEBIT VOWELBIT TAKEBIT DRINKBIT)
+       (ACTION SUBSTITUTE-F)>
+
+<ROUTINE SUBSTITUTE-DESCFCN ("OPTIONAL" X)
+        <DESCRIBE-DRINK ,SUBSTITUTE>>
+
+<ROUTINE SUBSTITUTE-F ()
+        <COND (<VERB? DRINK ENJOY DRINK-FROM>
+               <COND (<NOT <HELD? ,SUBSTITUTE>>
+                      <TELL ,NOT-HOLDING " the cup!" CR>
+                      <RTRUE>)
+                     (<G? ,SCORE 300>
+                      <TELL
+"You'd rather continue savouring that delicious tea." CR>
+                      <RTRUE>)
+                     (,SUBSTITUTE-DRUNK
+                      <SETG SCORE <- ,SCORE 30>>
+                      <SETG DREAMING <>>
+                      <TELL "That last gulp of the vile " D ,SUBSTITUTE>
+                      <JIGS-UP
+" was a bit too much for you. You expire from sheer misery and unhappiness.">
+                      <RTRUE>)>
+               <COND (<EQUAL? ,SUBSTITUTE ,BROWNIAN-SOURCE>
+                      <SETG BROWNIAN-SOURCE <>>)>
+               <SETG SUBSTITUTE-DRUNK T>
+               <SETG SCORE <- ,SCORE 30>>
+               <MOVE ,SUBSTITUTE ,PAD>
+               <TELL
+"It tastes almost, but not quite, entirely unlike tea. It's absolutely
+disgusting.">
+               <ANTI-LITTER "cup">
+               <COND (<EQUAL? ,HERE ,GALLEY>
+                      <TELL " ">
+                      <PERFORM ,V?KILL ,NUTRIMAT>
+                      <RTRUE>)>
+               <CRLF>)
+              (<VERB? EXAMINE LOOK-INSIDE>
+               <TELL
+"About the only characteristic it shares with tea is that of" ,BROWNIAN ".">
+               <COND (<PRSO? ,BROWNIAN-SOURCE>
+                      <TELL " ">
+                      <PERFORM ,V?EXAMINE ,DANGLY-BIT>
+                      <RTRUE>)
+                     (T
+                      <CRLF>)>)
+              (<VERB? POUR THROW>
+               <LIQUID-SPILL>)>>
+
+<OBJECT INTERFACE-BOX
+       (IN GALLEY)
+       (DESC "shipping carton")
+       (LDESC
+"A carton labelled \"Nutrimat/Computer Interface\" is sitting here.")
+       (SYNONYM CARTON BOX)
+       (ADJECTIVE SHIPPI)
+       (FLAGS CONTBIT TAKEBIT SEARCHBIT READBIT)
+       (SIZE 15)
+       (CAPACITY 14)
+       (ACTION INTERFACE-BOX-F)>
+
+<ROUTINE INTERFACE-BOX-F ()
+        <COND (<VERB? READ EXAMINE>
+               <TELL
+"The carton is labelled \"" D ,NUT-COM-INTERFACE ".\"" CR>
+               <COND (<VERB? EXAMINE>
+                      <RFALSE>)
+                     (T
+                      <RTRUE>)>)>> 
+
+<OBJECT BEAST-GUN
+       (IN INTERFACE-BOX)
+       (DESC "strange gun")
+       (SYNONYM GUN WEAPON)
+       (ADJECTIVE STRANGE RAY ANTI- BEAST)
+       (FLAGS TAKEBIT)
+       (SIZE 4)
+       (ACTION BEAST-GUN-F)>
+
+<ROUTINE BEAST-GUN-F ()
+        <COND (<VERB? EXAMINE READ>
+               <TELL
+"The gun has a large label which reads \"Anti-Bugblatter Beast Ray Gun.\"">
+               <FINE-PRODUCT>
+               <CRLF>)>>
+
+<GLOBAL GUN-COUNTER 0>
+
+<GLOBAL TEA-COUNTER 0>
+
+<GLOBAL LANDED <>>
+
+<ROUTINE I-TEA ()
+        <SETG TEA-COUNTER <+ ,TEA-COUNTER 1>>
+        <COND (<AND <NOT <EQUAL? ,HERE ,GALLEY>>
+                    <L? ,TEA-COUNTER 7>>
+               <RFALSE>)>
+        <CRLF>
+        <COND (<EQUAL? ,TEA-COUNTER 1>
+               <TELL "The nutrimat begins to whirr." CR>)
+              (<EQUAL? ,TEA-COUNTER 2>
+               <TELL
+"A red sign lights up saying:|
+   MEMORY OVERLOAD" CR>)
+              (<EQUAL? ,TEA-COUNTER 3>
+               <TELL
+"Another red sign lights up saying:|
+   RESERVE MEMORY OVERLOAD" CR>)
+              (<EQUAL? ,TEA-COUNTER 4>
+               <TELL
+"A third sign lights up:|
+   PROCESSOR OVERLOAD,|
+   SWITCH TO TERMINAL MODE" CR>)
+              (<EQUAL? ,TEA-COUNTER 5>
+               <TELL
+"A blue sign lights up:|
+   NUTRIMAT GOING ON LINE" CR>)
+              (<EQUAL? ,TEA-COUNTER 6>
+               <TELL
+"More and more signs light up:|
+   SHIPBOARD COMPUTER ACCESSED|
+   MAIN MEMORY OVERLOAD|
+   RESERVE MEMORY ACCESSED|
+   PARALLEL PROCESSORS ON LINE|
+|
+   ****************************|
+   ** NUMBERS BEING CRUNCHED **|
+   ****************************" CR>)
+              (<EQUAL? ,TEA-COUNTER 7>
+               <FSET ,THUMB ,MUNGEDBIT>
+               <TELL ,ANNOUNCEMENT D ,EDDIE
+". Emergency situation! Nuclear missiles have just been launched at us from the
+approaching planet, which my data banks indicate is" ,LOST-PLANET ". I cannot
+perform evasive maneuvers because" ,ENGAGED D ,NUTRIMAT ". The missiles will
+turn this ship into a huge atomic fireball in approximately eight turns. By
+the way, somebody didn't finish their spinach at dinner.\"" CR>)
+              (<L? ,TEA-COUNTER 15>
+               <TELL
+"You hear distant sounds of panic: shouts of anger, cries of alarm,
+pounding feet." CR>)
+              (T
+               <DISABLE <INT I-TEA>>
+               <TELL "It seems that the missiles struck " D ,HEART-OF-GOLD>
+               <JIGS-UP
+" about three nanoseconds ago. Sure enough, here comes that huge atomic fireb">
+               <RTRUE>)>>
+
+<ROUTINE I-LANDING ()
+        <COND (<NOT <IN-HEART? ,PROTAGONIST>>
+               <ENABLE <QUEUE I-LANDING 12>>
+               <RFALSE>)
+              (T
+               <MOVE ,MARVIN ,PANTRY>
+               <DISABLE <INT I-MARVIN>>
+               <SETG LANDED T>
+               <TELL CR ,ANNOUNCEMENT D ,EDDIE
+". We have just landed on" ,LOST-PLANET ". I don't want anyone going outside
+until I've checked the atmosphere, climatic conditions, existence of dangerous
+wildlife, airborne diseases, volcanic activity, presence of real estate agents,
+and more than eight thousand other possible dangers. This routine check will
+take 14.9 years. And don't even think about leaving until I finish, because
+I'm jamming the hatch.\"" CR>)>>
+
+<ROOM BRIDGE
+      (IN ROOMS)
+      (SYNONYM MOVEME MOTION RANDOM)
+      (ADJECTIVE BROWNI)
+      (DESC "Bridge")
+      (DOWN TO FORE-CORRIDOR)
+      (WEST PER SAUNA-ENTER-F)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL STAIRS CONTROLS HEART-OF-GOLD)
+      (PSEUDO "SAUNA" SAUNA-PSEUDO "PEOPLE" PEOPLE-PSEUDO)
+      (ACTION BRIDGE-F)>
+
+<ROUTINE SAUNA-ENTER-F ()
+        <UNPLUG-HELD-STUFF>
+        <SETG MOVES <+ ,MOVES <+ 10 <RANDOM 12>>>>
+        <TELL "You enter the sauna. After several ">
+        <COND (<RUNNING? ,I-FORD>
+               <TELL "minutes">)
+              (T
+               <TELL "hours">)>
+        <TELL ", you come out a changed man.">
+        <COND (<AND <HELD? ,FLOWERPOT>
+                    <IN? ,PLANT ,FLOWERPOT>
+                    <NOT ,PLANT-BLOOMED>>
+               <SETG PLANT-BLOOMED T>
+               <SETG SCORE <+ ,SCORE 25>>
+               <MOVE ,FRUIT ,FLOWERPOT>
+               <TELL " You have with you a changed plant.">)>
+        <CRLF>
+        <COND (<IN? ,MARVIN ,BRIDGE>
+               <MOVE ,MARVIN ,PANTRY>)>
+        <RFALSE>>
+
+<ROUTINE BRIDGE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is the bridge of " D ,HEART-OF-GOLD ". A gangway leads down, and steam
+comes from an entrance to port. Next to the control console is " D ,EDDIE ".">
+               <COND (,DRIVE-TO-CONTROLS
+                      <TELL " ">
+                      <PERFORM ,V?EXAMINE ,LARGE-RECEPTACLE>)
+                     (T
+                      <CRLF>)>
+               <COND (<NOT <FSET? ,BRIDGE ,NDESCBIT>>
+                      <FSET ,BRIDGE ,NDESCBIT>
+                      <TELL CR
+"At the controls, apparently expecting you and Ford, are a man with more than
+the usual number of heads (the name \"Zaphod\" is stitched on his shirt) and a
+dark-haired woman, holding a handbag. Both seem somehow familiar." CR>)>)>>
+
+<ROUTINE SAUNA-PSEUDO ()
+        <COND (<AND <VERB? THROUGH WALK-TO BOARD>
+                    <EQUAL? ,HERE ,BRIDGE>>
+               <DO-WALK ,P?WEST>)>>
+
+<ROUTINE PEOPLE-PSEUDO ()
+        <COND (<NOT <IN? ,ZAPHOD ,HERE>>
+               <TELL "What people?" CR>)
+              (<VERB? EXAMINE>
+               <PERFORM ,V?EXAMINE ,ZAPHOD>
+               <PERFORM ,V?EXAMINE ,TRILLIAN>
+               <RTRUE>)>>
+
+<OBJECT EDDIE
+       (IN BRIDGE)
+       (DESC "Eddie (the shipboard computer)")
+       (SYNONYM EDDIE ED COMPUT)
+       (ADJECTIVE SHIP\'S SHIPBO)
+       (FLAGS VOWELBIT NARTICLEBIT NDESCBIT ACTORBIT LIGHTBIT ONBIT)
+       (ACTION EDDIE-F)>
+
+<ROUTINE EDDIE-F ()
+        <COND (<EQUAL? ,EDDIE ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,EDDIE ,PRSI>
+                      <SETG WINNER ,EDDIE>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,EDDIE>
+                      <SETG WINNER ,EDDIE>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,EDDIE ,OBJECT-OF-GAME>
+                      <SETG WINNER ,EDDIE>
+                      <RTRUE>)
+                     (<AND <VERB? LAMP-ON>
+                           <PRSO? ,MAIN-DRIVE ,SPARE-DRIVE>>
+                      <COND (<RUNNING? ,I-TEA>
+                             <TELL
+"\"Sorry," ,ENGAGED D ,NUTRIMAT ". I can't do everything, you know.\"" CR>)
+                            (T
+                             <TELL "\"Sorry, current course for"
+,LOST-PLANET " can be countermanded only by " D ,ZAPHOD ".\"" CR>)>)
+                     (<AND <VERB? REPAIR OPEN>
+                           <PRSO? ,HATCH>
+                           ,LANDED>
+                      <TELL
+"\"Not until I completely check out the safety of this planet. Please
+wait approximately fourteen years. In the meantime, have you brushed
+your teeth lately?\"" CR>)
+                     (<AND <VERB? YES>
+                           <EQUAL? ,AWAITING-REPLY 18>>
+                      <V-YES>)
+                     (<AND <VERB? NO>
+                           <EQUAL? ,AWAITING-REPLY 18>>
+                      <V-NO>) 
+                     (T
+                      <SETG AWAITING-REPLY 18>
+                      <ENABLE <QUEUE I-REPLY 2>>
+                      <TELL
+"Eddie sighs deeply. \"I can't talk right now. Do you know how difficult it is
+to pilot a ship as complicated as this one?\"" CR>
+                      <FUCKING-CLEAR>)>)
+              (<VERB? LAMP-OFF>
+               <TELL "You don't know how (fortunately)." CR>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <SETG AWAITING-REPLY 19>
+               <ENABLE <QUEUE I-REPLY 2>>
+               <TELL
+"\"To pilot " D ,HEART-OF-GOLD ", process data requests from the " D ,NUTRIMAT
+" and keep the crew healthy. Read your manual! How do you expect to get
+anywhere in life? But don't read unless there's enough light.\"" CR>)>>
+
+<OBJECT LARGE-RECEPTACLE
+       (IN BRIDGE)
+       (DESC "large receptacle")
+       (SYNONYM RECEPT)
+       (ADJECTIVE LARGE MANUAL OVERRI)
+       (FLAGS NDESCBIT)
+       (ACTION LARGE-RECEPTACLE-F)>
+
+<ROUTINE LARGE-RECEPTACLE-F ()
+        <COND (<AND ,DRIVE-TO-CONTROLS
+                    <VERB? EXAMINE>>
+               <TELL
+"A " D ,SPARE-DRIVE " is plugged into the large receptacle." CR>)>>
+
+<OBJECT PHIL
+       (IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "Phil")
+       (LDESC "Phil is here.")
+       (SYNONYM PHIL)
+       (FLAGS NARTICLEBIT ACTORBIT)
+       (ACTION ZAPHOD-F)>
+
+<OBJECT ZAPHOD
+       (IN BRIDGE)
+       (DESC "Zaphod Beeblebrox")
+       (SYNONYM BEEBLE ZAPHOD PRESID)
+       (ADJECTIVE ZAPHOD PRESID)
+       (FLAGS NARTICLEBIT ACTORBIT NDESCBIT)
+       (ACTION ZAPHOD-F)>
+
+<ROUTINE ZAPHOD-F ()
+        <COND (<EQUAL? ,IDENTITY-FLAG ,ZAPHOD>
+               <COND (<EQUAL? ,ZAPHOD ,PRSO>
+                      <PERFORM ,PRSA ,ME ,PRSI>
+                      <RTRUE>)
+                     (T
+                      <PERFORM ,PRSA ,PRSO ,ME>
+                      <RTRUE>)>)
+              (<EQUAL? ,WINNER ,ZAPHOD>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,ZAPHOD ,PRSI>
+                      <SETG WINNER ,ZAPHOD>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,ZAPHOD>
+                      <SETG WINNER ,ZAPHOD>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <TELL ,ASK-ABOUT-OBJECT CR>)
+                     (T
+                      <TELL "\"Shut up, Earthman.\"" CR>
+                      <FUCKING-CLEAR>)>)
+              (<EQUAL? ,IDENTITY-FLAG ,TRILLIAN>
+               <COND (<AND <PRSI? ,PHIL>
+                           <VERB? SHOW GIVE>>
+                      <PERFORM ,V?HELLO ,PHIL>
+                      <RTRUE>)
+                     (<AND <VERB? SGIVE HELLO TELL ASK-ABOUT ASK-FOR>
+                           <PRSO? ,PHIL>>
+                      <COND (<NOT <IN? ,PHIL ,HERE>>
+                             ;"fixes GIVE ALL TO PHIL case"
+                             <TELL "Phil's not here anymore!" CR>
+                             <RTRUE>)>
+                      <COND (<NOT <FSET? ,JACKET-FLUFF ,TRYTAKEBIT>>
+                             <ENABLE <QUEUE I-ZAPHOD 3>>)>
+                      <TELL
+"Phil must not have noticed you, because he just moved into the ">
+                      <COND (<EQUAL? ,HERE ,LIVING-ROOM>
+                             <MOVE ,PHIL ,DINING-ROOM>
+                             <MOVE ,CAGE ,DINING-ROOM>
+                             <TELL D ,DINING-ROOM>)
+                            (<EQUAL? ,HERE ,DINING-ROOM>
+                             <MOVE ,PHIL ,KITCHEN>
+                             <MOVE ,CAGE ,KITCHEN>
+                             <TELL D ,KITCHEN>)
+                            (T
+                             <MOVE ,PHIL ,LIVING-ROOM>
+                             <MOVE ,CAGE ,LIVING-ROOM>
+                             <TELL D ,LIVING-ROOM>)>
+                      <TELL "." CR>
+                      <FUCKING-CLEAR>)
+                     (<VERB? EXAMINE>
+                      <TELL
+"He is very attractive, if a little weird, and has a slight other-worldly
+look. You suspect he's a party-crasher, an impression reinforced by his
+inappropriate garb; he seems clothed for a fancy dress party or something,
+because he has what appears to be a large birdcage on his shoulder with a
+black drape over it. The bird inside must be asleep, because you can hear
+snoring coming from inside it." CR>)
+                     (<VERB? PICK-UP>
+                      <TELL "You're not that kind of girl." CR>)>)
+              (<VERB? EXAMINE>
+               <TELL "Zaphod has two heads." CR>)
+              (<VERB? FOLLOW>
+               <COND (<EQUAL? ,FOLLOW-FLAG 3>
+                      <DO-WALK ,P?WEST>)
+                     (<EQUAL? ,FOLLOW-FLAG 6>
+                      <DO-WALK ,P?EAST>)>)
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL ,ASK-ABOUT-OBJECT CR>)>>
+
+<ROUTINE I-ZAPHOD ()
+        <COND (,ITEM-DROPPED-AT-PARTY
+               <ENABLE <QUEUE I-ZAPHOD 3>>
+               <COND (<RUNNING? ,I-HOSTESS>
+                      <MOVE ,PHIL ,HERE>
+                      <MOVE ,CAGE ,HERE>
+                      <TELL CR
+"Out of the corner of your eye, you see Phil leering at you. He starts
+to approach, but then notices the hostess with you and veers away." CR>)>)
+              (T
+               <SETG SCORE <+ ,SCORE 25>>
+               <FSET ,LIVING-ROOM ,REVISITBIT>
+               <FSET ,HOSTESS ,NDESCBIT>
+               <CRLF>
+               <JIGS-UP
+"Phil comes up and grips your shoulder. \"Hey babe, this guy boring you? Why
+not come with me instead? I'm from a different planet.\" He takes you out to
+the parking lot, where his flashy inter-orbital ion scooter is parked between
+two Volkswagens. After mounting it, the scooter accelerates at such a great
+speed that you black out almost immediately.">
+               <RTRUE>)>>
+
+<OBJECT TRILLIAN
+       (IN BRIDGE)
+       (DESC "Trillian")
+       (SYNONYM TRILLI MCMILL WOMAN TRICIA)
+       (ADJECTIVE TRICIA DARK- DARK HAIRED)
+       (FLAGS NARTICLEBIT ACTORBIT NDESCBIT CONTBIT OPENBIT)
+       (ACTION TRILLIAN-F)>
+
+<ROUTINE TRILLIAN-F ()
+        <COND (<EQUAL? ,IDENTITY-FLAG ,TRILLIAN>
+               <COND (<EQUAL? ,TRILLIAN ,PRSO>
+                      <PERFORM ,PRSA ,ME ,PRSI>
+                      <RTRUE>)
+                     (T
+                      <PERFORM ,PRSA ,PRSO ,ME>
+                      <RTRUE>)>)
+              (<EQUAL? ,TRILLIAN ,WINNER>
+               <COND (<AND <VERB? TELL-ABOUT>
+                           <PRSO? ,ME>>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?ASK-ABOUT ,TRILLIAN ,PRSI>
+                      <SETG WINNER ,TRILLIAN>
+                      <RTRUE>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?HELLO ,TRILLIAN>
+                      <SETG WINNER ,TRILLIAN>
+                      <RTRUE>)
+                     (<AND <VERB? WHAT>
+                           <PRSO? ,OBJECT-OF-GAME>>
+                      <TELL ,ASK-ABOUT-OBJECT CR>)
+                     (<OR <AND <VERB? SHOOT>
+                               <IN? ,BLASTER ,TRILLIAN>
+                               <PRSO? ,RIFLES>>
+                          <AND <VERB? SSHOOT>
+                               <IN? ,BLASTER ,TRILLIAN>
+                               <PRSI? ,RIFLES>>>
+                      <MOVE ,BLASTER ,PROTAGONIST>
+                      <SETG WINNER ,PROTAGONIST>
+                      <PERFORM ,V?SHOOT ,RIFLES ,BLASTER>
+                      <SETG WINNER ,TRILLIAN>
+                      <MOVE ,BLASTER ,TRILLIAN>
+                      <RTRUE>)
+                     (<EQUAL? ,IDENTITY-FLAG ,ZAPHOD>
+                      <TELL "\"Shut up, you jerk!\" hisses " D ,TRILLIAN
+". \"Just get on with the plan.\"" CR>
+                      <FUCKING-CLEAR>)
+                     (T
+                      <TELL
+D ,TRILLIAN " smiles disinterestedly at you and looks away." CR>
+                      <FUCKING-CLEAR>)>)
+              (<AND <VERB? SHOOT>
+                    <PRSI? ,BLASTER>>
+               <TELL
+"How heartless! Fortunately, justice prevails as the guards">
+               <GUARD-DEATH>
+               <RTRUE>) 
+              (<AND <VERB? ASK-ABOUT>
+                    <PRSI? ,OBJECT-OF-GAME>>
+               <TELL ,ASK-ABOUT-OBJECT CR>)
+              (<AND <EQUAL? ,FOLLOW-FLAG 3>
+                    <VERB? FOLLOW>>
+               <DO-WALK ,P?WEST>)
+              (<AND <VERB? EXAMINE>
+                    <IN? ,BLASTER ,TRILLIAN>>
+               <TELL "She's holding a blaster at your head." CR>)>>
+
+<OBJECT HANDBAG
+       (IN TRILLIAN)
+       (DESC "handbag")
+       (SYNONYM HANDBA BAG PURSE)
+       (FLAGS CONTBIT TAKEBIT TRYTAKEBIT SEARCHBIT NDESCBIT)
+       (SIZE 15)
+       (CAPACITY 10)
+       (ACTION HANDBAG-F)>
+
+<ROUTINE HANDBAG-F ()
+        <COND (<AND <VERB? DROP THROW>
+                    <EQUAL? ,IDENTITY-FLAG ,TRILLIAN>>
+               <DROP-AT-PARTY>)
+              (<AND <VERB? TAKE>
+                    <IN? ,HANDBAG ,TRILLIAN>>
+               <TELL D ,TRILLIAN " pulls it away." CR>)>>
+
+<ROOM FORE-CORRIDOR
+      (IN ROOMS)
+      (DESC "Corridor, Fore End")
+      (UP TO BRIDGE)
+      (NORTH TO ENTRY-BAY)
+      (WEST TO GALLEY)
+      (SOUTH TO AFT-CORRIDOR)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL STAIRS HEART-OF-GOLD)
+      (ACTION FORE-CORRIDOR-F)>
+
+<ROUTINE FORE-CORRIDOR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL "This is one end of a short corridor that continues ">
+               <COND (<EQUAL? ,HERE ,FORE-CORRIDOR>
+                      <TELL "aft">)
+                     (T
+                      <TELL "fore">)>
+               <TELL
+" along the main deck of " D ,HEART-OF-GOLD ". Doorways lead to ">
+               <COND (<EQUAL? ,HERE ,FORE-CORRIDOR>
+                      <TELL "fore">)
+                     (T
+                      <TELL "aft">)>
+               <TELL " and port. In addition, a gangway leads ">
+               <COND (<EQUAL? ,HERE ,FORE-CORRIDOR>
+                      <TELL "up">)
+                     (T
+                      <TELL "down">)>
+               <TELL "ward." CR>)>>
+
+<ROOM AFT-CORRIDOR
+      (IN ROOMS)
+      (SYNONYM ROBOT ROBOTS)
+      (ADJECTIVE CLEANI UPPER LOWER)
+      (DESC "Corridor, Aft End")
+      (SOUTH PER ENGINE-ROOM-ENTER-F)
+      (NORTH TO FORE-CORRIDOR)
+      (WEST TO PANTRY IF SCREENING-DOOR IS OPEN)
+      (DOWN TO HATCHWAY)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL STAIRS HEART-OF-GOLD SCREENING-DOOR)
+      (ACTION AFT-CORRIDOR-F)>
+
+<ROUTINE AFT-CORRIDOR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <FCLEAR ,HATCH ,DOORBIT>
+               <RFALSE>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <FORE-CORRIDOR-F ,M-LOOK>)>>
+
+<ROUTINE I-REPLY ()
+        <SETG AWAITING-REPLY <>>
+        <RFALSE>>
+
+<GLOBAL AWAITING-REPLY <>>
+
+<GLOBAL ARGUMENT-COUNTER 0>
+
+<GLOBAL LOOK-COUNTER 0>
+
+<ROUTINE ENGINE-ROOM-ENTER-F ()
+        <SETG ARGUMENT-COUNTER <+ ,ARGUMENT-COUNTER 1>>
+        <COND (<EQUAL? ,ARGUMENT-COUNTER 1>
+               <SETG AWAITING-REPLY 1>
+               <ENABLE <QUEUE I-ARGUMENT 2>>
+               <TELL
+"That entrance leads to the" ,IID " chamber. It's supposed to be a terribly
+dangerous area of the ship. Are you sure you want to go in there?" CR>
+               <RFALSE>)
+              (<EQUAL? ,ARGUMENT-COUNTER 2>
+               <SETG AWAITING-REPLY 1>
+               <ENABLE <QUEUE I-ARGUMENT 2>>
+               <TELL "Absolutely sure?" CR>
+               <RFALSE>)
+              (<EQUAL? ,ARGUMENT-COUNTER 3>
+               <DISABLE <INT I-ARGUMENT>>
+               <SETG AWAITING-REPLY 100>
+               <ENABLE <QUEUE I-REPLY 2>>
+               <TELL
+"I can tell you don't want to really. You stride away with a spring in your
+step, wisely leaving the Drive Chamber safely behind you. Telegrams arrive from
+well-wishers in all corners of the Galaxy congratulating you on your prudence
+and wisdom, cheering you up immensely." CR>
+               <RFALSE>)
+              (<EQUAL? ,ARGUMENT-COUNTER 4>
+               <ENABLE <QUEUE I-ARGUMENT 2>>
+               <ENABLE <QUEUE I-REPLY 2>>
+               <SETG AWAITING-REPLY 2>
+               <TELL
+"What? You're joking, of course. Can I ask you to reconsider?" CR>
+               <RFALSE>)
+              (<G? ,ARGUMENT-COUNTER 4>
+               <DISABLE <INT I-ARGUMENT>>
+               <SETG AWAITING-REPLY <>>
+               ,ENGINE-ROOM)>>
+
+<ROUTINE I-ARGUMENT ()
+        <COND (<OR <AND <VERB? NO>
+                        <EQUAL? ,AWAITING-REPLY 1>>
+                   <AND <VERB? YES>
+                        <EQUAL? ,AWAITING-REPLY 2>>>
+               T)
+              (T
+               <CRLF>)>
+        <SETG AWAITING-REPLY <>>
+        <SETG ARGUMENT-COUNTER 0>
+        <TELL
+"I knew you weren't serious about entering that extremely dangerous area." CR>>
+
+<ROOM ENTRY-BAY
+      (IN ROOMS)
+      (SYNONYM BLASTE)
+      (ADJECTIVE PAN-GA GARGLE)
+      (DESC "Entry Bay Number Two")
+      (LDESC
+"This is an entry bay for the Heart of Gold. A corridor lies aft of here.")
+      (SOUTH TO FORE-CORRIDOR)
+      (FLAGS RLANDBIT ONBIT NARTICLEBIT)
+      (GLOBAL HEART-OF-GOLD)
+      (ACTION ENTRY-BAY-F)>
+
+<ROUTINE ENTRY-BAY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <SETG IDENTITY-FLAG ,ARTHUR>
+               <MOVE ,HATCH ,GLOBAL-OBJECTS> ;"so you can ask Marv to fix it"
+               <MOVE ,MECHANISM ,GLOBAL-OBJECTS> ;"ditto"
+               <MOVE ,ARTHUR ,GLOBAL-OBJECTS>
+               <COND (<FSET? ,ENTRY-BAY ,NDESCBIT>
+                      <MOVE ,FORD ,LOCAL-GLOBALS>
+                      <MOVE ,TRILLIAN ,LOCAL-GLOBALS>
+                      <MOVE ,ZAPHOD ,LOCAL-GLOBALS>)
+                     (T
+                      <FSET ,ENTRY-BAY ,NDESCBIT>
+                      <ENABLE <QUEUE I-FORD 1>>)>
+               <RFALSE>)>>
+
+<OBJECT SALES-BROCHURE
+       (IN ENTRY-BAY)
+       (DESC "sales brochure")
+       (SYNONYM BROCHURE)
+       (ADJECTIVE SALES)
+       (FLAGS TAKEBIT READBIT)
+       (ACTION SALES-BROCHURE-F)>
+
+<ROUTINE SALES-BROCHURE-F ()
+        <COND (<VERB? READ>
+               <TELL
+"\"Equipped with a sensational breakthrough in Improbability Physics, "
+D ,HEART-OF-GOLD " will make you the envy of every major government. When the
+ship's" ,IID " is activated, " D ,HEART-OF-GOLD " passes through every point in
+the universe simultaneously, making travel to any single location a breeze!\"|
+|
+The " D ,SALES-BROCHURE " goes on to describe the ship's complement of " ,SCC
+"-designed robots and computers, all equipped with GPP (" ,GPP ")." CR>)>>  
+
+<ROOM ENGINE-ROOM
+      (IN ROOMS)
+      (SYNONYM IMPROB PHYSIC DRIVES PROBAB)
+      (ADJECTIVE IMPROB INFINI)
+      (DESC "Engine Room")
+      (NORTH TO AFT-CORRIDOR)
+      (OUT TO AFT-CORRIDOR)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL HEART-OF-GOLD)
+      (ACTION ENGINE-ROOM-F)>
+
+<ROUTINE ENGINE-ROOM-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <SETG LOOK-COUNTER <+ ,LOOK-COUNTER 1>>
+               <COND (<EQUAL? ,LOOK-COUNTER 1>
+                      <TELL
+"You're in the" ,IID " chamber. Nothing happens; there is nothing to see." CR>)
+                     (<EQUAL? ,LOOK-COUNTER 2>
+                      <TELL "I mean it! There's nothing to see here!" CR>)
+                     (<G? ,LOOK-COUNTER 2>
+                      <COND (<EQUAL? ,LOOK-COUNTER 3>
+                             <MOVE ,MAIN-DRIVE ,GLOBAL-OBJECTS>
+                                       ;"so you can ask Ed to turn it on"
+                             <MOVE ,SPARE-DRIVE ,HERE>
+                             <MOVE ,PLIERS ,HERE>
+                             <MOVE ,RASP ,HERE>
+                             <SETG SCORE <+ ,SCORE 25>>
+                             <TELL
+"Okay, okay, there are a FEW things to see here. ">)>
+                      <TELL
+"This is the room that houses the powerful In" ,FIG
+" that drives " D ,HEART-OF-GOLD ". An exit lies fore of here." CR>)>)
+              (<AND <EQUAL? ,RARG ,M-END>
+                    <EQUAL? ,LOOK-COUNTER 3>>
+               <SETG LOOK-COUNTER 4>
+               <TELL CR "(Footnote 10)" CR>)>>
+
+<OBJECT MAIN-DRIVE
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "main Improbability Drive")
+       (SYNONYM DRIVE GENERA)
+       (ADJECTIVE MAIN INFINI IMPROB)
+       (FLAGS NDESCBIT LIGHTBIT)
+       (GENERIC SPARE-DRIVE)
+       (ACTION MAIN-DRIVE-F)>
+
+<ROUTINE MAIN-DRIVE-F ()
+        <COND (<AND <VERB? EXAMINE RUB>
+                    <NOT <EQUAL? ,HERE ,ENGINE-ROOM>>>
+               <CANT-SEE ,MAIN-DRIVE>)
+              (<VERB? LAMP-ON>
+               <TELL "Only " D ,EDDIE " can activate the drive." CR>)>>
+
+<GLOBAL DRIVE-TO-CONTROLS <>>
+
+<GLOBAL DRIVE-TO-PLOTTER <>>
+
+<GLOBAL BROWNIAN-SOURCE <>>
+
+<GLOBAL DARK-CONTROLLED <>>
+
+<OBJECT SPARE-DRIVE
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "spare Improbability Drive")
+       (FDESC
+"Sitting in the corner is a spare, portable Improbability Generator.")
+       (SYNONYM DRIVE GENERA)
+       (ADJECTIVE SPARE PORTAB INFINI IMPROB)
+       (FLAGS TAKEBIT TRANSBIT CONTBIT LIGHTBIT)
+       (SIZE 50)
+       (GENERIC SPARE-DRIVE)
+       (ACTION SPARE-DRIVE-F)>
+
+<ROUTINE SPARE-DRIVE-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL "The " D ,SPARE-DRIVE " has a switch">
+               <COND (<IN? ,LARGE-PLUG ,SPARE-DRIVE>
+                      <TELL ", a long cord ">
+                      <COND (,DRIVE-TO-CONTROLS
+                             <TELL "plugged into the control console,">)
+                            (T
+                             <TELL "ending with a " D ,LARGE-PLUG ",">)>)
+                     (T
+                      <TELL ", a fused spot where a long cord once began,">)>
+               <TELL " and a short cord ">
+               <COND (,DRIVE-TO-PLOTTER
+                      <TELL "plugged into the " D ,PLOTTER>)
+                     (T
+                      <TELL "ending with a " D ,SMALL-PLUG>)>
+               <TELL ".">
+               <FINE-PRODUCT>
+               <CRLF>)
+              (<OR <AND <VERB? PLUG TIE>
+                        <PRSO? ,SPARE-DRIVE>>
+                   <AND <VERB? PUT>
+                        <PRSI? ,LARGE-RECEPTACLE ,SMALL-RECEPTACLE>>>
+               <COND (<IN? ,LARGE-PLUG ,SPARE-DRIVE>
+                      <TELL
+"In case you hadn't noticed, there are two connections leading from the "
+D ,SPARE-DRIVE "..." CR>)
+                     (T
+                      <PERFORM ,V?PLUG ,SMALL-PLUG ,PRSI>
+                      <RTRUE>)>)
+              (<VERB? UNPLUG>
+               <COND (<OR ,DRIVE-TO-CONTROLS ,DRIVE-TO-PLOTTER>
+                      <SETG DRIVE-TO-PLOTTER <>>
+                      <SETG DRIVE-TO-CONTROLS <>>
+                      <FCLEAR ,SPARE-DRIVE ,NDESCBIT>
+                      <TELL "Done." CR>)
+                     (T
+                      <TELL ,NOT-PLUGGED CR>)>)
+              (<VERB? LAMP-ON>
+               <PERFORM ,V?LAMP-ON ,SWITCH>
+               <RTRUE>)
+              (<VERB? OPEN CLOSE>
+               <V-CARVE>)>>
+
+<OBJECT LARGE-PLUG
+       (IN SPARE-DRIVE)
+       (DESC "large plug")
+       (SYNONYM CORD PLUG)
+       (ADJECTIVE LARGE LONG)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (SIZE 1)
+       (ACTION LARGE-PLUG-F)>
+
+<ROUTINE LARGE-PLUG-F ()
+        <COND (<AND <VERB? PLUG PUT TIE>
+                    <PRSI? ,LARGE-RECEPTACLE ,CONTROLS>>
+               <COND (,DRIVE-TO-CONTROLS
+                      <TELL "It already is!" CR>
+                      <RTRUE>)>
+               <SETG DRIVE-TO-CONTROLS T>
+               <FSET ,SPARE-DRIVE ,NDESCBIT>
+               <TELL "Plugged.">
+               <COND (<NOT <RUNNING? ,I-TEA>>
+                      <TELL
+" " D ,EDDIE " says \"You shouldn't be playing around with a " D ,SPARE-DRIVE
+". Who knows where it's been?\"" CR CR ,ANNOUNCEMENT D ,EDDIE ". Someone has
+connected a " D ,SPARE-DRIVE " to" ,MOP ". Better be an emergency, that's all
+I have to say.\"">)>
+               <CRLF>)
+              (<AND <VERB? TAKE>
+                    <PRSI? ,CONTROLS>>
+               <PERFORM ,V?UNPLUG ,LARGE-PLUG>
+               <RTRUE>)
+              (<VERB? UNPLUG REMOVE>
+               <COND (,DRIVE-TO-CONTROLS
+                      <SETG DRIVE-TO-CONTROLS <>>
+                      <FCLEAR ,SPARE-DRIVE ,NDESCBIT>
+                      <TELL "Done." CR>)
+                     (T
+                      <TELL ,NOT-PLUGGED CR>)>)>>
+
+<OBJECT SMALL-PLUG
+       (IN SPARE-DRIVE)
+       (DESC "small plug")
+       (SYNONYM CORD PLUG)
+       (ADJECTIVE SMALL SHORT)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (SIZE 1)
+       (ACTION SMALL-PLUG-F)>
+
+<ROUTINE SMALL-PLUG-F ()
+        <COND (<AND <VERB? PLUG PUT TIE>
+                    <PRSI? ,SMALL-RECEPTACLE ,PLOTTER>>
+               <COND (,DRIVE-TO-PLOTTER
+                      <TELL "It already is!" CR>
+                      <RTRUE>)>
+               <SETG DRIVE-TO-PLOTTER T>
+               <TELL "Plugged." CR>)
+              (<AND <VERB? TAKE>
+                    <PRSI? ,PLOTTER>>
+               <PERFORM ,V?UNPLUG ,SMALL-PLUG>
+               <RTRUE>)
+              (<VERB? UNPLUG REMOVE>
+               <COND (,DRIVE-TO-PLOTTER
+                      <SETG DRIVE-TO-PLOTTER <>>
+                      <TELL "Done." CR>)
+                     (T
+                      <TELL ,NOT-PLUGGED CR>)>)>>
+
+<OBJECT SWITCH
+       (IN SPARE-DRIVE)
+       (DESC "generator switch")
+       (SYNONYM SWITCH)
+       (ADJECTIVE GENERA)
+       (FLAGS NDESCBIT SWITCHBIT)
+       (SIZE 1)
+       (ACTION SWITCH-F)>
+
+<ROUTINE SWITCH-F ()
+        <COND (<VERB? LAMP-ON TURN PUSH MOVE THROW>
+               <COND (<AND ,DRIVE-TO-PLOTTER
+                           ,BROWNIAN-SOURCE>
+                      <MOVE ,SPARE-DRIVE ,HERE>
+                      <MOVE ,PLOTTER ,HERE>
+                      <MOVE ,BROWNIAN-SOURCE ,HERE>
+                      <COND (<EQUAL? ,BROWNIAN-SOURCE ,TEA>
+                             <SETG HOLDING-NO-TEA T>)>
+                      <COND (,DRIVE-TO-CONTROLS
+                             <TELL
+"As you flip the switch, sparks fly from the large receptacle. ">
+                             <COND (<AND <RUNNING? ,I-TEA>
+                                         <G? ,TEA-COUNTER 6>>
+                                    <TELL
+"\"My new control console!\" wails " D ,EDDIE ". \"This is the thanks I get">)
+                                   (T
+                                    <TELL
+"\"Now look what you've done. You've destroyed" ,MOP ". Don't you
+know it's only for emergencies">)>
+                             <TELL "?\"" CR CR>
+                             <SETG DRIVE-TO-CONTROLS <>>
+                             <FCLEAR ,SPARE-DRIVE ,NDESCBIT>
+                             <MOVE ,LARGE-PLUG ,LOCAL-GLOBALS>
+                             <MOVE ,LARGE-RECEPTACLE ,LOCAL-GLOBALS>
+                             <COND (<AND <RUNNING? ,I-TEA>
+                                         <G? ,TEA-COUNTER 6>>
+                                    <MOVE ,TEA ,SLOT>
+                                    <DISABLE <INT I-TEA>>
+                                    <ENABLE <QUEUE I-LANDING 24>>
+                                    <SETG FOLLOW-FLAG 3>
+                                    <ENABLE <QUEUE I-FOLLOW 2>>
+                                    <TELL
+"The universe goes crazy for a moment." CR CR ,ANNOUNCEMENT D ,EDDIE ". The
+missiles have turned into a sperm whale">
+                                    <FACTOR "39,745">
+                                    <TELL
+" The whale is currently plummeting toward" ,LOST-PLANET ". I hope this will
+teach you to listen to me when I say that legendary lost planets can be
+dangerous. I am proceeding with the pre-set landing instructions.\"|
+|
+Ford, Zaphod, and " D ,TRILLIAN " saunter by on their way back to the sauna.
+\"Good work, kid,\" says Zaphod, slamming you on the back." CR>)
+                                   (T
+                                    <DISABLE <INT I-TEA>>
+                                    <SETG SCORE <- ,SCORE 30>>
+                                    <TELL
+,ANNOUNCEMENT D ,EDDIE ". Someone has activated a " D ,SPARE-DRIVE " at"
+,MOP ", moving us 8 billion parsecs away from our destination, adding seven
+weeks to our trip. As if that isn't bad enough, all 300 members of the
+Fronurbdi Planetary Senate appeared in the " D ,HATCHWAY>
+                                    <FACTOR "79,818">
+                                    <TELL
+" I'm flushing them into space now, but who knows what sort of germs they've
+dragged into the ship? Everyone should take extra vitamins today.\"" CR>)>)
+                            (<RUNNING? ,I-TEA>
+                             <SETG DREAMING T>
+                             <DISABLE <INT I-TEA>>
+                             <JIGS-UP
+"Everything becomes dark! But no, not quite everything ... There's a big bright
+planet below, just visible behind your mighty tail fin. Air begins rushing by,
+tickling your snout and dorsal fins ... you suddenly realise that, improbably
+enough, you've turned yourself into a sperm whale and are plummeting through
+the atmosphere of a planet! You begin experimenting with your new body, opening
+and closing your spout and wagging your enormous tail. Just as you are getting
+used to being a whale, the ground rushes up and hits you at about 200 mph.">
+                             <RTRUE>)
+                            (T
+                             <COND (<EQUAL? ,BROWNIAN-SOURCE ,TEA>
+                                    <SETG DARK-CONTROLLED T>)>
+                             <MOVE ,HATCH ,LOCAL-GLOBALS>
+                             <MOVE ,MECHANISM ,LOCAL-GLOBALS>
+                             <TELL <PICK-ONE ,DARK-ENTRANCES> CR CR>
+                             <GOTO ,DARK>
+                             <RTRUE>)>)
+                     (T
+                      <TELL "Nothing happens." CR>)>)>>
+
+<GLOBAL DARK-ENTRANCES
+       <PLTABLE
+"You are disoriented. Blackness swims toward you like a shoal of eels who
+have just seen something that eels like a lot..."
+"Like fog rolling in off the ocean, a shroud of blackness billows toward
+you. Unlike fog rolling in off the ocean, the blackness hits you like
+a sixteen-tonne truck..." 
+"A mist spins round your head. You fall into what seems like a bottomless
+pit. Suddenly, you hit the bottom so hard that you wish it had been
+bottomless...">>
+
+<OBJECT PLOTTER
+       (IN GLASS-CASE)
+       (DESC "atomic vector plotter")
+       (DESCFCN PLOTTER-DESCFCN)
+       (SYNONYM PLOTTE)
+       (ADJECTIVE ATOMIC VECTOR)
+       (FLAGS VOWELBIT TAKEBIT CONTBIT TRANSBIT TRYTAKEBIT)
+       (SIZE 20)
+       (ACTION PLOTTER-F)>
+
+<ROUTINE PLOTTER-DESCFCN ("OPTIONAL" X)
+        <TELL "Lying on the deck is a plotter">
+        <COND (,DRIVE-TO-PLOTTER
+               <TELL " connected to a " D ,SPARE-DRIVE ".">)
+              (T
+               <TELL ".">)>
+        <COND (,BROWNIAN-SOURCE
+               <TELL
+" The plotter's " D ,DANGLY-BIT " is submerged in " D ,BROWNIAN-SOURCE ".">)>
+        <CRLF>>
+
+<ROUTINE PLOTTER-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The " D ,PRSO " has a " D ,SMALL-RECEPTACLE " and a " D ,DANGLY-BIT>
+               <COND (,BROWNIAN-SOURCE
+                      <TELL " which is sitting in " D ,BROWNIAN-SOURCE>)>
+               <COND (,DRIVE-TO-PLOTTER
+                      <TELL
+". The short cord from the " D ,SPARE-DRIVE " is plugged in the receptacle">)>
+               <TELL ".">
+               <FINE-PRODUCT>
+               <CRLF>)
+              (<AND <VERB? PLUG>
+                    <PRSI? ,SPARE-DRIVE>>
+               <PERFORM ,V?PLUG ,SPARE-DRIVE ,PLOTTER>
+               <RTRUE>)
+              (<VERB? UNPLUG>
+               <COND (,DRIVE-TO-PLOTTER
+                      <SETG DRIVE-TO-PLOTTER <>>
+                      <TELL "Unplugged." CR>)
+                     (T
+                      <TELL ,NOT-PLUGGED CR>)>)
+              (<VERB? OPEN CLOSE>
+               <V-CARVE>)>>
+
+<OBJECT SMALL-RECEPTACLE
+       (IN PLOTTER)
+       (DESC "small receptacle")
+       (SYNONYM RECEPT)
+       (ADJECTIVE SMALL)
+       (SIZE 1)
+       (FLAGS NDESCBIT INTEGRALBIT)>
+
+<OBJECT DANGLY-BIT
+       (IN PLOTTER)
+       (DESC "long, dangly bit")
+       (SYNONYM BIT)
+       (ADJECTIVE LONG DANGLY)
+       (FLAGS NDESCBIT INTEGRALBIT)
+       (SIZE 1)
+       (ACTION DANGLY-BIT-F)>
+
+<ROUTINE DANGLY-BIT-F ()
+        <COND (<AND <VERB? PUT>
+                    <PRSI? ,SUBSTITUTE ,TEA>>
+               <COND (,BROWNIAN-SOURCE
+                      <TELL "But the " D ,DANGLY-BIT " is already in">
+                      <ARTICLE ,BROWNIAN-SOURCE T>
+                      <TELL "!" CR>
+                      <RTRUE>)>
+               <SETG BROWNIAN-SOURCE ,PRSI>
+               <COND (<AND <PRSI? ,TEA>
+                           <NOT ,CARELESS-WORDS-FLAG>>
+                      <SETG CARELESS-WORDS-FLAG T>
+                      <SAVE-INPUT ,FIRST-BUFFER>
+                      <ENABLE <QUEUE I-CARELESS-WORDS 3>>)>
+               <TELL "Done." CR>)
+              (<AND <VERB? EXAMINE>
+                    ,BROWNIAN-SOURCE>
+               <TELL
+"The " D ,DANGLY-BIT " is suspended in the cup of " D ,BROWNIAN-SOURCE "." CR>)
+              (<AND <VERB? REMOVE>
+                    ,BROWNIAN-SOURCE>
+               <TELL "The " D ,DANGLY-BIT " is no longer suspended in">
+               <ARTICLE ,BROWNIAN-SOURCE T>
+               <TELL "." CR>
+               <SETG BROWNIAN-SOURCE <>>
+               <RTRUE>)>>
+
+<ROOM HATCHWAY
+      (IN ROOMS)
+      (SYNONYM GPP PERSON)
+      (ADJECTIVE GENUIN PEOPLE)
+      (DESC "Hatchway")
+      (UP TO AFT-CORRIDOR)
+      (DOWN TO RAMP IF HATCH IS OPEN)
+      (OUT TO RAMP IF HATCH IS OPEN)
+      (EAST PER ACCESS-SPACE-ENTER-F)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL STAIRS HEART-OF-GOLD)
+      (ACTION HATCHWAY-F)>
+
+<ROUTINE HATCHWAY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You are at the bottom of a gangway. A hatch below you is ">
+               <COND (<FSET? ,HATCH ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL "closed">)>
+               <TELL ". There is a small access space to starboard." CR>)
+              (<EQUAL? .RARG ,M-ENTER>
+               <FSET ,HATCH ,DOORBIT>
+               <RFALSE>)>>
+
+<ROUTINE ACCESS-SPACE-ENTER-F ()
+        <COND (<G? <ACCESS-SPACE-LOOP ,PROTAGONIST> 1>
+               <TELL
+"That entrance is so narrow that you probably couldn't pass by holding
+anything. Well, maybe ONE thing." CR>
+               <RFALSE>)
+              (T
+               <FCLEAR ,HATCH ,DOORBIT>
+               ,ACCESS-SPACE)>>
+
+<ROUTINE ACCESS-SPACE-LOOP (CONT "AUX" X NUMBER)
+        <SET X <FIRST? .CONT>>
+        <REPEAT ()
+                <COND (<NOT .X>
+                       <RETURN>)>
+                <COND (<AND <NOT <FSET? .X ,WORNBIT>>
+                            <NOT <FSET? .X ,INTEGRALBIT>>
+                            <NOT <EQUAL? .X ,BABEL-FISH>>>
+                       <SET NUMBER <+ .NUMBER 1>>)>
+                <COND (<FIRST? .X>
+                       <SET NUMBER <+ .NUMBER <ACCESS-SPACE-LOOP .X>>>)>
+                <SET X <NEXT? .X>>>
+        <RETURN .NUMBER>>
+
+<OBJECT HATCH
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "hatch")
+       (SYNONYM HATCH HATCHW)
+       (ACTION HATCH-F)>
+
+<ROUTINE HATCH-F ()
+        <COND (<AND <NOT <EQUAL? ,HERE ,HATCHWAY>>
+                    <VERB? OPEN CLOSE EXAMINE RUB>>
+               <CANT-SEE ,HATCH>)
+              (<AND <VERB? OPEN THROUGH>
+                    <NOT ,LANDED>>
+               <TELL
+"Loud sirens blare, fantastically bright red lights flash from all sides, and
+a soft female voice mentions that opening this hatch in space will evacuate
+the air from the ship." CR>)
+              (<AND <VERB? OPEN THROUGH>
+                    <NOT <FSET? ,HATCH ,OPENBIT>>>
+               <TELL "The hatch appears to be jammed shut." CR>)>>
+
+<OBJECT MECHANISM
+       (IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "mechanism")
+       (SYNONYM MECHAN)
+       (ADJECTIVE HATCH HATCHW)
+       (ACTION MECHANISM-F)>
+
+<ROUTINE MECHANISM-F ()
+        <COND (<AND <NOT <EQUAL? ,HERE ,ACCESS-SPACE>>
+                    <VERB? EXAMINE SMELL RUB REPAIR>>
+               <CANT-SEE ,MECHANISM>)
+              (<VERB? REPAIR>
+               <PERFORM ,V?REPAIR ,HATCH>
+               <RTRUE>)
+              (<VERB? EXAMINE>
+               <TELL
+"I don't even understand it, and I'm a computer!" CR>)>>
+
+<ROOM ACCESS-SPACE
+      (IN ROOMS)
+      (SYNONYM AGENCY)
+      (ADJECTIVE GALACT SECURI)
+      (DESC "Access Space")
+      (OUT TO HATCHWAY)
+      (WEST TO HATCHWAY)
+      (FLAGS ONBIT RLANDBIT)
+      (PSEUDO "MESH" MESH-PSEUDO)
+      (GLOBAL HEART-OF-GOLD)
+      (ACTION ACCESS-SPACE-F)>
+
+<ROUTINE ACCESS-SPACE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This tiny area, with an exit to port, is for working on the hatch
+" D ,MECHANISM ", which is vastly more complicated than your rather
+ordinary intelligence can comprehend. ">
+               <PERFORM ,V?EXAMINE ,GROUND>
+               <RTRUE>)>>
+
+<ROUTINE MESH-PSEUDO ()
+        <COND (<PRSI? ,PSEUDO-OBJECT>
+               <PERFORM ,PRSA ,PRSO ,GROUND>
+               <RTRUE>)
+              (T
+               <PERFORM ,PRSA ,GROUND ,PRSI>
+               <RTRUE>)>>
+
+<ROOM RAMP
+      (IN ROOMS)
+      (SYNONYM PLANET MAGRAT)
+      (ADJECTIVE LEGEND)
+      (DESC "Ramp")
+      (LDESC
+"The wind moans. Dust drifts across the surface of the alien world. Zaphod,
+Ford, and Trillian appear and urge you forward.")
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION RAMP-F)>
+
+<ROUTINE RAMP-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <TELL
+"You step onto the landing ramp leading down toward the surface of"
+,LOST-PLANET ". " ,ANNOUNCEMENT D ,EDDIE ". Someone is leaving the ship
+on a strange planet without wrapping up all nice and warm. It'll all end
+in tears, I just know it...\" The voice fades behind you." CR CR>)
+              (<EQUAL? .RARG ,M-END>
+               <TELL CR
+"Slowly, nervously, you step downwards, the cold thin air rasping in your
+lungs. You set one single foot on the ancient dust -- and almost instantly
+the most incredible adventure starts which you'll have to buy the next game
+to find out about." CR CR>
+               <V-SCORE>
+               <TELL CR
+"By the way, there WAS a causal relationship between your taking the "
+D ,TOOTHBRUSH " and the tree collapsing at the very beginning of the game.
+We apologise for this slight inaccuracy." CR>
+               <QUIT>)>>
\ No newline at end of file
diff --git a/misc.zil b/misc.zil
new file mode 100644 (file)
index 0000000..1c26fb5
--- /dev/null
+++ b/misc.zil
@@ -0,0 +1,616 @@
+"MISC for
+                 THE HITCHHIKER'S GUIDE TO THE GALAXY
+            (c) 1984 by Infocom, Inc.  All Rights Reserved."
+
+;"former MACROS.ZIL stuff"
+
+<ZSTR-OFF>
+
+<SETG C-ENABLED? 0>
+
+<SETG C-ENABLED 1>
+
+<SETG C-DISABLED 0>
+
+;<ROUTINE ENABLED? (RTN "AUX" C E)
+        <SET E <REST ,C-TABLE ,C-TABLELEN>>
+        <SET C <REST ,C-TABLE ,C-INTS>>
+        <REPEAT ()
+                <COND (<==? .C .E> <RFALSE>)
+                      (<EQUAL? <GET .C ,C-RTN> .RTN>
+                       <COND (<0? <GET .C ,C-ENABLED?>>
+                              <RFALSE>)
+                             (T
+                              <RTRUE>)>)>
+                <SET C <REST .C ,C-INTLEN>>>>
+
+;<ROUTINE QUEUED? (RTN "AUX" C E)
+        <SET E <REST ,C-TABLE ,C-TABLELEN>>
+        <SET C <REST ,C-TABLE ,C-INTS>>
+        <REPEAT ()
+                <COND (<==? .C .E> <RFALSE>)
+                      (<EQUAL? <GET .C ,C-RTN> .RTN>
+                       <COND (<OR <0? <GET .C ,C-ENABLED?>>
+                                  <0? <GET .C ,C-TICK>>>
+                              <RFALSE>)
+                             (T <RTRUE>)>)>
+                <SET C <REST .C ,C-INTLEN>>>>
+
+<ROUTINE RUNNING? (RTN "AUX" C E TICK)
+        <SET E <REST ,C-TABLE ,C-TABLELEN>>
+        <SET C <REST ,C-TABLE ,C-INTS>>
+        <REPEAT ()
+                <COND (<==? .C .E> <RFALSE>)
+                      (<EQUAL? <GET .C ,C-RTN> .RTN>
+                       <COND (<OR <0? <GET .C ,C-ENABLED?>>
+                                  <0? <SET TICK <GET .C ,C-TICK>>>
+                                  <G? .TICK 1>>
+                              <RFALSE>)
+                             (T <RTRUE>)>)>
+                <SET C <REST .C ,C-INTLEN>>>>
+
+<DEFMAC TELL ("ARGS" A)
+       <FORM PROG ()
+             !<MAPF ,LIST
+                    <FUNCTION ("AUX" E P O)
+                         <COND (<EMPTY? .A> <MAPSTOP>)
+                               (<SET E <NTH .A 1>>
+                                <SET A <REST .A>>)>
+                         <COND (<TYPE? .E ATOM>
+                                <COND (<OR <=? <SET P <SPNAME .E>>
+                                               "CRLF">
+                                           <=? .P "CR">>
+                                       <MAPRET '<CRLF>>)
+                                      (<EMPTY? .A>
+                                       <ERROR INDICATOR-AT-END? .E>)
+                                      (ELSE
+                                       <SET O <NTH .A 1>>
+                                       <SET A <REST .A>>
+                                       <COND (<OR <=? <SET P <SPNAME .E>>
+                                                      "DESC">
+                                                  <=? .P "D">
+                                                  <=? .P "OBJ">
+                                                  <=? .P "O">>
+                                              <MAPRET <FORM PRINTD .O>>)
+                                             (<OR <=? .P "NUM">
+                                                  <=? .P "N">>
+                                              <MAPRET <FORM PRINTN .O>>)
+                                             (<OR <=? .P "CHAR">
+                                                  <=? .P "CHR">
+                                                  <=? .P "C">>
+                                              <MAPRET <FORM PRINTC .O>>)
+                                             (ELSE
+                                              <MAPRET
+                                                <FORM PRINT
+                                                      <FORM GETP .O .E>>>)>)>)
+                               (<TYPE? .E STRING ZSTRING>
+                                <MAPRET <FORM PRINTI .E>>)
+                               (<TYPE? .E FORM LVAL GVAL>
+                                <MAPRET <FORM PRINT .E>>)
+                               (ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
+
+<DEFMAC VERB? ("ARGS" ATMS)
+       <MULTIFROB PRSA .ATMS>>
+
+<DEFMAC PRSO? ("ARGS" ATMS)
+       <MULTIFROB PRSO .ATMS>>
+
+<DEFMAC PRSI? ("ARGS" ATMS)
+       <MULTIFROB PRSI .ATMS>>
+
+<DEFMAC ROOM? ("ARGS" ATMS)
+       <MULTIFROB HERE .ATMS>>
+
+<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM) 
+       <REPEAT ()
+               <COND (<EMPTY? .ATMS>
+                      <RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
+                                      (<LENGTH? .OO 2> <NTH .OO 2>)
+                                      (ELSE <CHTYPE .OO FORM>)>>)>
+               <REPEAT ()
+                       <COND (<EMPTY? .ATMS> <RETURN!->)>
+                       <SET ATM <NTH .ATMS 1>>
+                       <SET L
+                            (<COND (<TYPE? .ATM ATOM>
+                                    <FORM GVAL
+                                          <COND (<==? .X PRSA>
+                                                 <PARSE
+                                                   <STRING "V?"
+                                                           <SPNAME .ATM>>>)
+                                                (ELSE .ATM)>>)
+                                   (ELSE .ATM)>
+                             !.L)>
+                       <SET ATMS <REST .ATMS>>
+                       <COND (<==? <LENGTH .L> 3> <RETURN!->)>>
+               <SET O <REST <PUTREST .O (<FORM EQUAL? <FORM GVAL .X> !.L>)>>>
+               <SET L ()>>>
+
+<DEFMAC BSET ('OBJ "ARGS" BITS)
+       <MULTIBITS FSET .OBJ .BITS>>
+
+<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
+       <MULTIBITS FCLEAR .OBJ .BITS>>
+
+<DEFMAC BSET? ('OBJ "ARGS" BITS)
+       <MULTIBITS FSET? .OBJ .BITS>>
+
+<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM) 
+       <REPEAT ()
+               <COND (<EMPTY? .ATMS>
+                      <RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
+                                      (<EQUAL? .X FSET?> <FORM OR !.O>)
+                                      (ELSE <FORM PROG () !.O>)>>)>
+               <SET ATM <NTH .ATMS 1>>
+               <SET ATMS <REST .ATMS>>
+               <SET O
+                    (<FORM .X
+                           .OBJ
+                           <COND (<TYPE? .ATM FORM> .ATM)
+                                 (ELSE <FORM GVAL .ATM>)>>
+                     !.O)>>>
+
+<DEFMAC RFATAL ()
+       '<PROG () <PUSH 2> <RSTACK>>>
+
+<DEFMAC PROB ('BASE?)
+       <FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
+
+<ROUTINE PICK-ONE (FROB)
+        <GET .FROB <RANDOM <GET .FROB 0>>>>
+
+<DEFMAC ENABLE ('INT)
+       <FORM PUT .INT ,C-ENABLED? 1>>
+
+<DEFMAC DISABLE ('INT)
+       <FORM PUT .INT ,C-ENABLED? 0>>
+
+<ZSTR-ON>
+
+\f
+;"former MAIN.ZIL stuff"
+
+<GLOBAL PLAYER <>>
+
+<GLOBAL P-WON <>>
+
+<CONSTANT M-FATAL 2>
+<CONSTANT M-BEG 1>
+<CONSTANT M-END 6>
+<CONSTANT M-ENTER 2>
+<CONSTANT M-LOOK 3>
+<CONSTANT M-FLASH 4>
+<CONSTANT M-OBJDESC 5>
+
+<ROUTINE GO () 
+        <PUTB ,P-LEXV 0 59>
+;"put interrupts on clock chain"
+        <ENABLE <QUEUE I-HOUSEWRECK 20>>
+        <ENABLE <QUEUE I-THING 21>>
+        <ENABLE <QUEUE I-VOGONS 50>>    
+;"set up and go"
+        <SETG WINNER ,PROTAGONIST>
+        <SETG PLAYER ,PROTAGONIST>
+        <SETG HERE ,BEDROOM>
+        <SETG IDENTITY-FLAG ,ARTHUR>
+        <MOVE ,ARTHUR ,GLOBAL-OBJECTS>
+        <SETG LYING-DOWN T>
+        <MOVE ,PROTAGONIST ,BED>
+        <V-VERSION>
+        <CRLF>
+        <TELL
+"You wake up. The room is spinning very gently round your head. Or at least
+it would be if you could see it which you can't." CR CR>
+        <V-LOOK>
+        <MAIN-LOOP>
+        <AGAIN>>    
+
+<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
+   <REPEAT ()
+     <SET CNT 0>
+     <SET OBJ <>>
+     <SET PTBL T>
+     <COND (<SETG P-WON <PARSER>>
+           <SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
+           <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
+           <COND (<AND ,P-IT-OBJECT <ACCESSIBLE? ,P-IT-OBJECT>>
+                  <SET TMP <>>
+                  <REPEAT ()
+                          <COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
+                                 <RETURN>)
+                                (T
+                                 <COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
+                                        <PUT ,P-PRSI .CNT ,P-IT-OBJECT>
+                                        <SET TMP T>
+                                        <RETURN>)>)>>
+                  <COND (<NOT .TMP>
+                         <SET CNT 0>
+                         <REPEAT ()
+                          <COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
+                                 <RETURN>)
+                                (T
+                                 <COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
+                                        <PUT ,P-PRSO .CNT ,P-IT-OBJECT>
+                                        <RETURN>)>)>>)>
+                  <SET CNT 0>)>
+           <SET NUM
+                <COND (<0? .OCNT> .OCNT)
+                      (<G? .OCNT 1>
+                       <SET TBL ,P-PRSO>
+                       <COND (<0? .ICNT> <SET OBJ <>>)
+                             (T <SET OBJ <GET ,P-PRSI 1>>)>
+                       .OCNT)
+                      (<G? .ICNT 1>
+                       <SET PTBL <>>
+                       <SET TBL ,P-PRSI>
+                       <SET OBJ <GET ,P-PRSO 1>>
+                       .ICNT)
+                      (T 1)>>
+           <COND (<AND <NOT .OBJ>
+                       <1? .ICNT>>
+                  <SET OBJ <GET ,P-PRSI 1>>)>
+           <COND (<EQUAL? ,PRSA ,V?WALK> <SET V <PERFORM ,PRSA ,PRSO>>)
+                 (<0? .NUM>
+                  <COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
+                         <SET V <PERFORM ,PRSA>>
+                         <SETG PRSO <>>)
+                        (<NOT ,LIT>
+                         <TELL ,TOO-DARK CR>
+                         <FUCKING-CLEAR>)
+                        (T
+                         <TELL "There isn't anything to ">
+                         <SET TMP <GET ,P-ITBL ,P-VERBN>>
+                         <COND (<VERB? TELL>
+                                <TELL "talk to">)
+                               (<OR ,P-OFLAG ,P-MERGED>
+                                <PRINTB <GET .TMP 0>>)
+                               (T
+                                <WORD-PRINT <GETB .TMP 2>
+                                            <GETB .TMP 3>>)>
+                         <TELL "!" CR>
+                         <SET V <>>
+                         <FUCKING-CLEAR>)>)
+                 (T
+                  <SETG P-NOT-HERE 0>
+                  <SETG P-MULT <>>
+                  <COND (<G? .NUM 1> <SETG P-MULT T>)>
+                  <SET TMP <>>
+                  <REPEAT ()
+                          <COND (<G? <SET CNT <+ .CNT 1>> .NUM>
+                                 <COND (<G? ,P-NOT-HERE 0>
+                                        <TELL "The ">
+                                        <COND (<NOT <EQUAL? ,P-NOT-HERE .NUM>>
+                                               <TELL "other ">)>
+                                        <TELL "object">
+                                        <COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
+                                               <TELL "s">)>
+                                        <TELL " that you mentioned ">
+                                        <COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
+                                               <TELL "are">)
+                                              (T <TELL "is">)>
+                                        <TELL "n't here." CR>)
+                                       (<NOT .TMP>
+                                        <TELL ,REFERRING CR>)>
+                                 <RETURN>)
+                                (T
+                                 <COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
+                                       (T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
+                                 <SETG PRSO <COND (.PTBL .OBJ1) (T .OBJ)>>
+                                 <SETG PRSI <COND (.PTBL .OBJ) (T .OBJ1)>>
+                                 <COND (<OR <G? .NUM 1>
+                                   &