Solid-Gold Edition
authorhistoricalsource <historicalsoftware@textfiles.com>
Fri, 19 Apr 2019 03:01:30 +0000 (23:01 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Fri, 19 Apr 2019 03:01:30 +0000 (23:01 -0400)
41 files changed:
earth.zabstr [new file with mode: 0644]
earth.zap [new file with mode: 0644]
earth.zil [new file with mode: 0644]
globals.zabstr [new file with mode: 0644]
globals.zap [new file with mode: 0644]
globals.zil [new file with mode: 0644]
heart.zabstr [new file with mode: 0644]
heart.zap [new file with mode: 0644]
heart.zil [new file with mode: 0644]
hints.zabstr [new file with mode: 0644]
hints.zap [new file with mode: 0644]
hints.zil [new file with mode: 0644]
misc.zabstr [new file with mode: 0644]
misc.zap [new file with mode: 0644]
misc.zil [new file with mode: 0644]
nhitch.chart [new file with mode: 0644]
nhitch.errors [new file with mode: 0644]
nhitch.lowcore [new file with mode: 0644]
nhitch.record [new file with mode: 0644]
nhitch.serial [new file with mode: 0644]
nhitch.zap [new file with mode: 0644]
nhitch.zil [new file with mode: 0644]
nhitch.zip [new file with mode: 0644]
nhitchdat.zap [new file with mode: 0644]
nhitchfreq.zap [new file with mode: 0644]
nhitchpur.zap [new file with mode: 0644]
nhitchstr.zap [new file with mode: 0644]
parser.zabstr [new file with mode: 0644]
parser.zap [new file with mode: 0644]
parser.zil [new file with mode: 0644]
syntax.zil [new file with mode: 0644]
unearth.zabstr [new file with mode: 0644]
unearth.zap [new file with mode: 0644]
unearth.zil [new file with mode: 0644]
verbs.zabstr [new file with mode: 0644]
verbs.zap [new file with mode: 0644]
verbs.zil [new file with mode: 0644]
vogon.zabstr [new file with mode: 0644]
vogon.zap [new file with mode: 0644]
vogon.zil [new file with mode: 0644]
zip-to-xzip.txt [new file with mode: 0644]

diff --git a/earth.zabstr b/earth.zabstr
new file mode 100644 (file)
index 0000000..7a2332f
--- /dev/null
@@ -0,0 +1,238 @@
+
+<OBJECT HOME (LOC LOCAL-GLOBALS) (DESC "your home") (SYNONYM HOME) (ADJECTIVE
+MY YOUR) (FLAGS NARTICLEBIT) (ACTION HOME-F)> 
+<DEFINE-ROUTINE HOME-F> 
+<OBJECT HOUSE (LOC LOCAL-GLOBALS) (DESC "it") (SYNONYM HOUSE) (ADJECTIVE MY
+YOUR) (FLAGS NARTICLEBIT) (ACTION HOUSE-F)> 
+<DEFINE-ROUTINE HOUSE-F> 
+<OBJECT RUBBLE (LOC LOCAL-GLOBALS) (DESC "pile of rubble") (SYNONYM PILE RUBBLE
+DEBRIS) (FLAGS NDESCBIT) (ACTION HOME-F)> 
+<DEFINE-ROUTINE I-HOUSEWRECK> 
+<DEFINE-ROUTINE BETTER-LUCK> 
+<GLOBAL HOUSE-DEMOLISHED <>> 
+<GLOBAL HEADACHE T> 
+<GLOBAL SLEEVE-TIED <>> 
+<OBJECT HANGOVER (LOC GLOBAL-OBJECTS) (DESC "splitting headache") (SYNONYM
+HEADACHE HANGOVER THROBBER) (ADJECTIVE SPLITTING BIG BLINDING) (ACTION
+HANGOVER-F)> 
+<DEFINE-ROUTINE HANGOVER-F> 
+<ROOM BEDROOM (LOC 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 WATER) (ACTION BEDROOM-F)> 
+<OBJECT BEDROOM-PSEUDO (LOC BEDROOM) (SYNONYM BEDROOM) (ADJECTIVE SMALL) (DESC
+"bedroom") (FLAGS NDESCBIT) (ACTION GLOBAL-ROOM-F)> 
+<DEFINE-ROUTINE BEDROOM-F> 
+<DEFINE-ROUTINE BEDROOM-EXIT-F> 
+<OBJECT PHONE (LOC BEDROOM) (DESC "telephone") (SYNONYM PHONE TELEPHONE
+RECEIVER) (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT) (ACTION PHONE-F)> 
+<DEFINE-ROUTINE PHONE-F> 
+<OBJECT BEDROOM-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (SYNONYM DOOR) (FLAGS
+DOORBIT OPENBIT NDESCBIT)> 
+<OBJECT GLOBAL-BED (LOC LOCAL-GLOBALS) (DESC "bed") (SYNONYM BED) (FLAGS VEHBIT
+) (ACTION GLOBAL-BED-F)> 
+<DEFINE-ROUTINE GLOBAL-BED-F> 
+<OBJECT BED (LOC BEDROOM) (DESC "bed") (SYNONYM BED) (FLAGS VEHBIT CONTBIT
+SURFACEBIT SEARCHBIT OPENBIT NDESCBIT) (ACTION BED-F)> 
+<DEFINE-ROUTINE BED-F> 
+<OBJECT STUFF-UNDER-BED (LOC LOCAL-GLOBALS) (DESC "it") (SYNONYM BOOK COIN
+HANDKERCH COINS) (ADJECTIVE SOILED FOREIGN) (FLAGS NDESCBIT NARTICLEBIT) (
+ACTION UNIMPORTANT-THING-F)> 
+<OBJECT CURTAINS (LOC BEDROOM) (DESC "your curtains") (SYNONYM CURTAIN CURTAINS
+SHADE SHADES) (ADJECTIVE YOUR) (FLAGS NDESCBIT NARTICLEBIT) (ACTION CURTAINS-F)
+> 
+<DEFINE-ROUTINE CURTAINS-F> 
+<OBJECT GOWN (LOC BEDROOM) (DESC "your gown") (LDESC "Your gown is here.") (
+SYNONYM GOWN POCKET ROBE LOOP) (ADJECTIVE MY YOUR DRESSING TATTY FADED BATTERED
+) (FLAGS WEARBIT TRYTAKEBIT TAKEBIT CONTBIT NDESCBIT NARTICLEBIT SEARCHBIT) (
+SIZE 15) (CAPACITY 14) (ACTION GOWN-F)> 
+<DEFINE-ROUTINE GOWN-F> 
+<OBJECT SLEEVES (LOC GLOBAL-OBJECTS) (DESC "sleeve") (SYNONYM SLEEVE SLEEVES) (
+ACTION SLEEVES-F)> 
+<DEFINE-ROUTINE SLEEVES-F> 
+<DEFINE-ROUTINE TWO-TREES> 
+<OBJECT THING (LOC 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 200) (ACTION THING-F)> 
+<DEFINE-ROUTINE THING-F> 
+<DEFINE-ROUTINE I-THING> 
+<OBJECT POCKET-FLUFF (LOC GOWN) (DESC "pocket fluff") (SYNONYM FLUFF LINT) (
+ADJECTIVE POCKET) (FLAGS TAKEBIT NARTICLEBIT) (SIZE 1) (GENERIC POCKET-FLUFF)> 
+<OBJECT TABLET (LOC GOWN) (DESC "buffered analgesic") (SYNONYM ANALGESIC TABLET
+ASPIRIN PILL) (ADJECTIVE LARGE BUFFERED) (FLAGS TAKEBIT EATBIT) (SIZE 2) (
+ACTION TABLET-F)> 
+<DEFINE-ROUTINE TABLET-F> 
+<OBJECT SINK (LOC BEDROOM) (DESC "it") (SYNONYM BASIN WASHBASIN SINK) (
+ADJECTIVE WASH) (FLAGS NDESCBIT NARTICLEBIT) (ACTION UNIMPORTANT-THING-F)> 
+<OBJECT BEDROOM-FURNISHINGS (LOC BEDROOM) (DESC "it") (SYNONYM CARPET WALLPAPER
+PAPER CHAIR) (ADJECTIVE WALL FADED OLD) (FLAGS NDESCBIT NARTICLEBIT) (ACTION
+UNIMPORTANT-THING-F)> 
+<ROOM FRONT-PORCH (LOC ROOMS) (SYNONYM BEAM BEAMS) (ADJECTIVE MATTER TRANSFERE)
+(DESC "Front Porch") (LDESC
+"This is the enclosed front porch of your home. Your front garden lies to
+the south, and you can reenter your home to the north.") (UP TO BEDROOM) (NORTH
+TO BEDROOM) (SOUTH PER CLOTHES-EXIT-F) (OUT PER CLOTHES-EXIT-F) (FLAGS RLANDBIT
+ONBIT) (GLOBAL HOUSE HOME STAIRS THIRD-PLANET BEDROOM-DOOR)> 
+<OBJECT DOORMAT (LOC FRONT-PORCH) (SYNONYM DOORMAT MAT) (ADJECTIVE DOOR) (DESC
+"doormat") (FLAGS NDESCBIT) (ACTION UNIMPORTANT-THING-F)> 
+<DEFINE-ROUTINE CLOTHES-EXIT-F> 
+<OBJECT MAIL (LOC FRONT-PORCH) (DESC "loose pile of junk mail") (FDESC
+"On the doormat is a pile of junk mail.") (SYNONYM ORDER MAIL PILE LETTER
+LETTERS) (ADJECTIVE DEMOLISHI JUNK MY OFFICIAL 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)> 
+<DEFINE-ROUTINE MAIL-F> 
+<ROOM FRONT-OF-HOUSE (LOC ROOMS) (SYNONYM WOONBEAM) (ADJECTIVE GALAXIA) (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 TREE) (ACTION
+FRONT-OF-HOUSE-F)> 
+<OBJECT TREE (LOC LOCAL-GLOBALS) (SYNONYM TREE TREES) (DESC "tree") (ACTION
+TREE-PSEUDO)> 
+<DEFINE-ROUTINE HOUSE-ENTER-F> 
+<DEFINE-ROUTINE FRONT-OF-HOUSE-F> 
+<OBJECT ROSES (LOC FRONT-OF-HOUSE) (DESC "it") (SYNONYM ROSE ROSES ROSEBED BED)
+(ADJECTIVE ROSE) (FLAGS NDESCBIT NARTICLEBIT) (ACTION UNIMPORTANT-THING-F)> 
+<GLOBAL BULLDOZER-COUNTER 0> 
+<DEFINE-ROUTINE I-BULLDOZER> 
+<DEFINE-ROUTINE BRICK-DEATH> 
+<GLOBAL DEAD-COUNTER 0> 
+<OBJECT BULLDOZER-DRIVER (LOC FRONT-OF-HOUSE) (DESC "bulldozer driver") (
+SYNONYM DRIVER) (ADJECTIVE BULLDOZER DOZER) (FLAGS NDESCBIT ACTORBIT) (ACTION
+BULLDOZER-DRIVER-F)> 
+<DEFINE-ROUTINE BULLDOZER-DRIVER-F> 
+<OBJECT BULLDOZER (LOC LOCAL-GLOBALS) (DESC "bulldozer") (SYNONYM BULLDOZER
+DOZER) (ADJECTIVE LARGE YELLOW BULL HUGE) (FLAGS NDESCBIT INVISIBLE) (ACTION
+BULLDOZER-F)> 
+<DEFINE-ROUTINE BULLDOZER-F> 
+<GLOBAL PROSSER-COUNTER 0> 
+<GLOBAL PROSSER-LYING <>> 
+<GLOBAL GONE-AROUND <>> 
+<DEFINE-ROUTINE I-PROSSER> 
+<OBJECT PROSSER (LOC FRONT-OF-HOUSE) (DESC "Mr. Prosser") (DESCFCN
+PROSSER-DESCFCN) (SYNONYM PROSSER FOREMAN CREW) (ADJECTIVE WRECKING MR MISTER)
+(FLAGS NARTICLEBIT ACTORBIT CONTBIT OPENBIT) (ACTION PROSSER-F)> 
+<DEFINE-ROUTINE PROSSER-DESCFCN> 
+<DEFINE-ROUTINE PROSSER-F> 
+<DEFINE-ROUTINE STAND-ASIDE> 
+<OBJECT DIGITAL-WATCH (LOC PROSSER) (DESC "digital watch") (SYNONYM WATCH
+WATCHES) (ADJECTIVE DIGITAL) (FLAGS NDESCBIT TRYTAKEBIT) (ACTION
+DIGITAL-WATCH-F)> 
+<DEFINE-ROUTINE DIGITAL-WATCH-F> 
+<OBJECT TIME (LOC GLOBAL-OBJECTS) (DESC "time") (SYNONYM TIME)> 
+<OBJECT FORD (LOC LOCAL-GLOBALS) (DESC "Ford Prefect") (DESCFCN FORD-DESCFCN) (
+SYNONYM FORD PREFECT) (ADJECTIVE FORD) (FLAGS ACTORBIT CONTBIT SEARCHBIT
+OPENBIT NARTICLEBIT) (ACTION FORD-F)> 
+<DEFINE-ROUTINE FORD-DESCFCN> 
+<DEFINE-ROUTINE FORD-F> 
+<DEFINE-ROUTINE FORD-DECIDES> 
+<GLOBAL FORD-COUNTER 0> 
+<GLOBAL FORD-SLEEPING <>> 
+<GLOBAL GUARDS-COUNTER 0> 
+<GLOBAL HEART-COUNTER 0> 
+<DEFINE-ROUTINE I-FORD> 
+<OBJECT SATCHEL (LOC FORD) (DESC "satchel") (DESCFCN SATCHEL-DESCFCN) (SYNONYM
+SATCHEL) (ADJECTIVE BATTERED LEATHER BULKY) (FLAGS CONTBIT SEARCHBIT TAKEBIT
+TRYTAKEBIT) (CAPACITY 30) (SIZE 20) (ACTION SATCHEL-F)> 
+<DEFINE-ROUTINE SATCHEL-DESCFCN> 
+<DEFINE-ROUTINE ITEM-ON-SATCHEL-DESCRIPTION> 
+<DEFINE-ROUTINE SATCHEL-F> 
+<OBJECT SATCHEL-FLUFF (LOC SATCHEL) (DESC "satchel fluff") (SYNONYM FLUFF LINT)
+(ADJECTIVE SATCHEL) (FLAGS TAKEBIT NARTICLEBIT) (SIZE 1) (GENERIC POCKET-FLUFF)
+> 
+<GLOBAL FLUFF-TO-GOWN <>> 
+<GLOBAL TOWEL-MUDDY <>> 
+<GLOBAL TOWEL-OFFERED <>> 
+<OBJECT TOWEL (LOC FORD) (DESC "towel") (SYNONYM TOWEL TOWELS) (FLAGS TAKEBIT
+TRYTAKEBIT) (SIZE 7) (CAPACITY 40) (ACTION TOWEL-F)> 
+<DEFINE-ROUTINE TOWEL-F> 
+<ROOM BACK-OF-HOUSE (LOC ROOMS) (SYNONYM LIST QUESTION QUESTIONS) (ADJECTIVE
+GREAT UNANSWERE) (DESC "Back of House") (SE TO FRONT-OF-HOUSE) (SW TO
+FRONT-OF-HOUSE) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL HOUSE HOME
+THIRD-PLANET RUBBLE TREE) (ACTION BACK-OF-HOUSE-F)> 
+<OBJECT BIRDS (LOC BACK-OF-HOUSE) (SYNONYM BIRD BIRDS) (DESC "bird") (FLAGS
+NDESCBIT) (ACTION UNIMPORTANT-THING-F)> 
+<DEFINE-ROUTINE BACK-OF-HOUSE-F> 
+<DEFINE-ROUTINE TREE-PSEUDO> 
+<ROOM COUNTRY-LANE (LOC 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 TREE) (ACTION
+COUNTRY-LANE-F)> 
+<DEFINE-ROUTINE COUNTRY-LANE-F> 
+<DEFINE-ROUTINE I-DOG> 
+<OBJECT DOG (LOC LOCAL-GLOBALS) (DESC "dog") (SYNONYM DOG MONGREL) (ADJECTIVE
+SMALL SERENE IRRITABLE) (ACTION DOG-F)> 
+<DEFINE-ROUTINE DOG-F> 
+<OBJECT PUB-OBJECT (LOC LOCAL-GLOBALS) (DESC "Pub") (SYNONYM PUB GROOM) (
+ADJECTIVE HORSE \'N) (ACTION PUB-OBJECT-F)> 
+<DEFINE-ROUTINE PUB-OBJECT-F> 
+<ROOM PUB (LOC ROOMS) (SYNONYM ALCOHOL) (DESC "Pub") (EAST TO COUNTRY-LANE) (
+OUT TO COUNTRY-LANE) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL PUB-OBJECT
+WINDOW THIRD-PLANET PUB-FURNISHINGS PEOPLE) (ACTION PUB-F)> 
+<OBJECT PEOPLE (LOC LOCAL-GLOBALS) (SYNONYM PEOPLE) (DESC "people") (ACTION
+PEOPLE-PSEUDO)> 
+<DEFINE-ROUTINE PUB-F> 
+<OBJECT BAR (LOC PUB) (DESC "bar") (SYNONYM BAR COUNTER) (FLAGS NDESCBIT
+CONTBIT SURFACEBIT OPENBIT) (CAPACITY 60) (ACTION BAR-F)> 
+<DEFINE-ROUTINE BAR-F> 
+<OBJECT PUB-SHELF (LOC 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 SHELVES) (ACTION PUB-SHELF-F)> 
+<DEFINE-ROUTINE PUB-SHELF-F> 
+<OBJECT MUSIC (LOC PUB) (DESC "music") (SYNONYM MUSIC SONG SONGS) (FLAGS
+NARTICLEBIT NDESCBIT) (ACTION MUSIC-F)> 
+<DEFINE-ROUTINE MUSIC-F> 
+<OBJECT JUKEBOX (LOC PUB) (DESC "jukebox") (SYNONYM JUKEBOX BOX) (ADJECTIVE
+JUKE OLD) (FLAGS NDESCBIT LIGHTBIT ONBIT) (ACTION JUKEBOX-F)> 
+<DEFINE-ROUTINE JUKEBOX-F> 
+<OBJECT PUB-FURNISHINGS (LOC LOCAL-GLOBALS) (DESC "it") (SYNONYM BEERMAT
+BEERMATS GLASS GLASSES BOTTLE BOTTLES) (ADJECTIVE USUAL SOGGY) (FLAGS NDESCBIT
+NARTICLEBIT) (GENERIC MINERAL-WATER) (ACTION UNIMPORTANT-THING-F)> 
+<OBJECT BARMAN (LOC PUB) (DESC "barman") (LDESC
+"There is a barman serving at the bar.") (SYNONYM BARMAN BARTENDER) (FLAGS
+ACTORBIT) (ACTION BARMAN-F)> 
+<DEFINE-ROUTINE BARMAN-F> 
+<OBJECT BEER (LOC PUB) (DESC "lots of beer") (SYNONYM LOTS BITTER BITTERS PINT
+BEER) (FLAGS DRINKBIT NARTICLEBIT NDESCBIT) (ACTION BEER-F)> 
+<GLOBAL DRUNK-LEVEL 0> 
+<GLOBAL FORD-POINT 15> 
+<DEFINE-ROUTINE BEER-F> 
+<OBJECT PEANUTS (LOC PUB) (DESC "peanuts") (SYNONYM PACKET PEANUT PEANUTS NUT
+NUTS) (FLAGS TRYTAKEBIT NDESCBIT NARTICLEBIT EATBIT) (ACTION PEANUTS-F)> 
+<DEFINE-ROUTINE PEANUTS-F> 
+<OBJECT SANDWICH (LOC PUB) (DESC "cheese sandwich") (SYNONYM PLATE SANDWICH) (
+ADJECTIVE CHEESE UNINVITIN) (FLAGS NDESCBIT EATBIT TRYTAKEBIT) (SIZE 10) (
+ACTION SANDWICH-F)> 
+<DEFINE-ROUTINE SANDWICH-F> 
+<GLOBAL DOG-FED <>> 
+<GLOBAL PEANUTS-BOUGHT <>> 
+<GLOBAL SANDWICH-BOUGHT <>> 
+<GLOBAL VOGON-COUNTER 0> 
+<GLOBAL FORD-GONE <>> 
+<DEFINE-ROUTINE I-VOGONS> 
+<DEFINE-ROUTINE GO-TO-LANE> 
+<GLOBAL FORD-TABLE <TABLE 0 0 0 0 0 0>> 
+<OBJECT FLEET (LOC LOCAL-GLOBALS) (DESC "fleet of Vogon Constructor ships") (
+SYNONYM FLEET SHIP SHIPS SPACESHIP) (ADJECTIVE VOGON CONSTRUCT HUGE UGLY YELLOW
+) (FLAGS NDESCBIT) (ACTION FLEET-F)> 
+<DEFINE-ROUTINE FLEET-F> 
+<GLOBAL EARTH-DEMOLISHED <>> 
+<DEFINE-ROUTINE LEAVE-EARTH> 
+<OBJECT ARTHUR (LOC LOCAL-GLOBALS) (DESC "Arthur Dent") (LDESC
+"Arthur Dent is here.") (SYNONYM ARTHUR DENT) (ADJECTIVE ARTHUR) (FLAGS
+NARTICLEBIT VOWELBIT ACTORBIT) (ACTION ARTHUR-F)> 
+<DEFINE-ROUTINE ARTHUR-F> 
+<DEFINE-ROUTINE IDIOT?> 
+<GLOBAL UNEASY-COUNTER 0> 
+<GLOBAL IDENTITY-FLAG <>> 
+<DEFINE-ROUTINE I-UNEASY> 
+<DEFINE-ROUTINE I-ARTHUR> 
+<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.">> 
+<DEFINE-ROUTINE SCENE-THROUGH-WINDOW> 
\ No newline at end of file
diff --git a/earth.zap b/earth.zap
new file mode 100644 (file)
index 0000000..9458476
--- /dev/null
+++ b/earth.zap
@@ -0,0 +1,2074 @@
+
+
+       .FUNCT  HOME-F
+       ZERO?   HOUSE-DEMOLISHED /?CCL3
+       EQUAL?  PRSA,V?ENJOY \?CCL3
+       PRINT   ZEN
+       PRINTI  " You can't enjoy a "
+       PRINTD  RUBBLE
+       PRINTR  " 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."
+?CCL3: EQUAL?  PRSA,V?BOARD,V?WALK-TO,V?THROUGH \?CCL9
+       EQUAL?  HERE,FRONT-OF-HOUSE,FRONT-PORCH \?CCL12
+       CALL2   DO-WALK,P?NORTH
+       RSTACK  
+?CCL12:        EQUAL?  HERE,BEDROOM \?CCL14
+       PRINT   LOOK-AROUND
+       CRLF    
+       RTRUE   
+?CCL14:        CALL1   V-WALK-AROUND
+       RSTACK  
+?CCL9: EQUAL?  PRSA,V?DISEMBARK,V?EXIT,V?LEAVE \?CCL18
+       EQUAL?  HERE,FRONT-PORCH \?CCL21
+       CALL2   DO-WALK,P?SOUTH
+       RSTACK  
+?CCL21:        EQUAL?  HERE,BEDROOM \?PRG24
+       CALL1   V-WALK-AROUND
+       RSTACK  
+?PRG24:        PRINT   LOOK-AROUND
+       CRLF    
+       RTRUE   
+?CCL18:        EQUAL?  PRSA,V?LIE-DOWN \?CCL27
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL27
+       ZERO?   IN-FRONT-FLAG /?CCL27
+       ICALL   PERFORM,V?LIE-DOWN,GROUND
+       RTRUE   
+?CCL27:        EQUAL?  PRSA,V?EXAMINE \?CCL32
+       ZERO?   HOUSE-DEMOLISHED /?CCL32
+       PRINTI  "It is now a "
+       PRINTD  RUBBLE
+       PRINTR  "."
+?CCL32:        EQUAL?  IDENTITY-FLAG,FORD \FALSE
+       CALL1   UNIMPORTANT-THING-F
+       RSTACK  
+
+
+       .FUNCT  HOUSE-F
+       EQUAL?  PRSO,HOUSE \?CCL3
+       ICALL   PERFORM,PRSA,HOME,PRSI
+       RTRUE   
+?CCL3: ICALL   PERFORM,PRSA,PRSO,HOME
+       RTRUE   
+
+
+       .FUNCT  I-HOUSEWRECK
+       EQUAL?  HERE,BEDROOM,FRONT-PORCH \FALSE
+       CRLF    
+       PRINTI  "Astoundingly, a "
+       PRINTD  BULLDOZER
+       PRINTI  " pokes through your wall. However, you have no time for surprise because the ceiling is collapsing on you as"
+       CALL1   BETTER-LUCK
+       RSTACK  
+
+
+       .FUNCT  BETTER-LUCK
+       PRINTI  " 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"
+       ICALL1  MAKE-WAY-FOR
+       CRLF    
+       FSET?   BEDROOM,ONBIT /?CCL5
+       PRINTI  "Next time, try turning on the light."
+       CRLF    
+       JUMP    ?CND3
+?CCL5: FSET?   GOWN,OPENBIT /?PRG14
+       ZERO?   HEADACHE /?PRG14
+       PRINTI  "Too bad you never found an aspirin for your hangover."
+       CRLF    
+       JUMP    ?CND3
+?PRG14:        PRINTI  "Better luck next life."
+       CRLF    
+?CND3: CALL1   FINISH
+       RSTACK  
+
+
+       .FUNCT  HANGOVER-F
+       EQUAL?  PRSA,V?ASK-ABOUT \?CCL3
+       EQUAL?  PRSI,HANGOVER /FALSE
+?CCL3: ZERO?   HEADACHE \?CCL7
+       EQUAL?  IDENTITY-FLAG,ZAPHOD /?CCL7
+       PRINTI  "You can't feel any"
+       EQUAL?  HANGOVER,PRSO \?CCL14
+       ICALL1  PRSO-PRINT
+       JUMP    ?PRG15
+?CCL14:        ICALL1  PRSI-PRINT
+?PRG15:        PRINTR  " here."
+?CCL7: EQUAL?  PRSA,V?EXAMINE \?CCL18
+       CALL1   V-DIAGNOSE
+       RSTACK  
+?CCL18:        EQUAL?  PRSA,V?DROP,V?THROW,V?GIVE \FALSE
+       CALL1   V-COUNT
+       RSTACK  
+
+
+       .FUNCT  BEDROOM-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "The bedroom is a mess.
+It is a small bedroom with a faded carpet and old wallpaper. There is a washbasin, a chair"
+       FSET?   GOWN,NDESCBIT \?PRG10
+       PRINTI  " with a tatty dressing gown slung over it"
+?PRG10:        PRINTR  ", and a window with the curtains drawn. Near the exit leading south is a phone."
+
+
+       .FUNCT  BEDROOM-EXIT-F
+       FSET?   BEDROOM-DOOR,OPENBIT /?CCL3
+       PRINTI  "The door is closed."
+       CRLF    
+       SET     'P-IT-OBJECT,BEDROOM-DOOR
+       RFALSE  
+?CCL3: ZERO?   HEADACHE /?CCL7
+       PRINTI  "You miss the doorway by a good eighteen inches. The wall jostles you rather rudely."
+       CRLF    
+       RFALSE  
+?CCL7: FSET?   BULLDOZER,INVISIBLE \?PRG14
+       PRINTI  "You make your way down to the front porch."
+       CRLF    
+       CRLF    
+       JUMP    ?CND1
+?PRG14:        PRINTI  "You rush down the stairs in panic."
+       CRLF    
+       CRLF    
+?CND1: FCLEAR  LIGHT,LIGHTBIT
+       RETURN  FRONT-PORCH
+
+
+       .FUNCT  PHONE-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       FSET?   PHONE,TOUCHBIT \?CCL6
+       ICALL   PERFORM,V?CALL,DAIS
+       RTRUE   
+?CCL6: FSET    PHONE,TOUCHBIT
+       PRINTI  "You pick up the receiver."
+       PRINT   DIALING-TONE
+       FSET?   TOOTHBRUSH,TOUCHBIT \?CND9
+       ICALL1  TWO-TREES
+?CND9: CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?REPLY \FALSE
+       PRINTR  "It isn't ringing."
+
+
+       .FUNCT  GLOBAL-BED-F
+       EQUAL?  GLOBAL-BED,PRSO \?CCL3
+       ICALL   PERFORM,PRSA,BED,PRSI
+       RTRUE   
+?CCL3: ICALL   PERFORM,PRSA,PRSO,BED
+       RTRUE   
+
+
+       .FUNCT  BED-F,RARG
+       EQUAL?  RARG,M-BEG \?CCL3
+       EQUAL?  PRSA,V?TAKE \?CCL6
+       FSET?   PRSO,TAKEBIT \?CCL6
+       IN?     PRSO,BED /?CCL6
+       CALL2   HELD?,PRSO
+       ZERO?   STACK \?CCL6
+       PRINTI  "You can't reach it from the bed."
+       ZERO?   HEADACHE /?CND13
+       PRINTR  " The effort almost kills you."
+?CND13:        CRLF    
+       RTRUE   
+?CCL6: EQUAL?  PRSA,V?LOOK-INSIDE,V?OPEN \?CCL18
+       EQUAL?  PRSO,CURTAINS \?CCL18
+       ICALL   PERFORM,V?TAKE,PHONE
+       SET     'P-IT-OBJECT,CURTAINS
+       RTRUE   
+?CCL18:        EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL22
+       EQUAL?  PRSO,BEDROOM-DOOR \?CCL22
+       ICALL   PERFORM,V?TAKE,PHONE
+       SET     'P-IT-OBJECT,BEDROOM-DOOR
+       RTRUE   
+?CCL22:        EQUAL?  PRSA,V?WALK \FALSE
+       CALL2   OUT-OF-FIRST,BED
+       RSTACK  
+?CCL3: ZERO?   RARG \FALSE
+       EQUAL?  PRSA,V?DISEMBARK \?CCL30
+       ZERO?   HEADACHE /?CCL30
+       LOC     PROTAGONIST
+       EQUAL?  STACK,BED \?CCL30
+       MOVE    PROTAGONIST,HERE
+       SET     'OHERE,FALSE-VALUE
+       SET     'LYING-DOWN,FALSE-VALUE
+       PRINTR  "Very difficult, but you manage it. The room is still spinning. It dips and sways a little."
+?CCL30:        EQUAL?  PRSA,V?LOOK-UNDER \?CCL37
+       MOVE    STUFF-UNDER-BED,HERE
+       PRINTR  "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."
+?CCL37:        EQUAL?  PRSA,V?CLOSE,V?OPEN \FALSE
+       EQUAL?  PRSO,BED \FALSE
+       CALL1   TELL-ME-HOW
+       RSTACK  
+
+
+       .FUNCT  CURTAINS-F
+       EQUAL?  PRSA,V?LOOK-INSIDE,V?OPEN \FALSE
+       FCLEAR  BULLDOZER,INVISIBLE
+       PRINTI  "As you part "
+       PRINTD  CURTAINS
+       PRINTI  " you see that i"
+       PRINT   NICE-DAY
+       PRINTI  ", and a large yellow "
+       PRINTD  BULLDOZER
+       PRINTI  " is advancing on "
+       PRINTD  HOME
+       PRINTR  "."
+
+
+       .FUNCT  GOWN-F
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL3
+       FSET?   GOWN,WORNBIT /?CCL3
+       PRINTR  "It's hard to open or close the pocket unless you're wearing the gown."
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL9
+       PRINTI  "The dressing gown is faded and battered, and is clearly a garment which has seen better decades. It has a pocket which is "
+       FSET?   GOWN,OPENBIT \?PRG17
+       PRINTI  "open"
+       JUMP    ?CND12
+?PRG17:        PRINTI  "closed"
+?CND12:        ZERO?   GOWN-HUNG /?PRG24
+       PRINTI  ". It is hanging from a "
+       PRINTD  HOOK
+       PRINTC  46
+       JUMP    ?CND19
+?PRG24:        PRINTI  ", and a small loop at the back of the collar."
+?CND19:        ZERO?   SLEEVE-TIED /?CND26
+       PRINTR  " The sleeves are tied closed."
+?CND26:        CRLF    
+       RTRUE   
+?CCL9: EQUAL?  PRSA,V?TAKE \?CCL31
+       EQUAL?  GOWN,PRSO \?CCL31
+       ZERO?   HEADACHE /?CCL31
+       FCLEAR  GOWN,TRYTAKEBIT
+       FCLEAR  GOWN,NDESCBIT
+       MOVE    GOWN,PROTAGONIST
+       PRINTR  "Luckily, this is large enough for you to get hold of. You notice something in the pocket."
+?CCL31:        EQUAL?  PRSA,V?WEAR \?CCL38
+       ZERO?   SLEEVE-TIED /?CCL38
+       PRINTR  "You'll have to untie the sleeve first."
+?CCL38:        EQUAL?  PRSA,V?UNTIE,V?TIE \FALSE
+       ICALL   PERFORM,PRSA,SLEEVES
+       RTRUE   
+
+
+       .FUNCT  SLEEVES-F
+       CALL2   VISIBLE?,GOWN
+       ZERO?   STACK \?CCL3
+       CALL2   CANT-SEE,SLEEVES
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?TAKE,V?WEAR \?CCL5
+       ICALL   PERFORM,PRSA,GOWN
+       RTRUE   
+?CCL5: EQUAL?  PRSA,V?CLOSE,V?TIE \?CCL7
+       SET     'PRSO,GOWN
+       CALL1   IDROP
+       ZERO?   STACK \TRUE
+       ZERO?   SLEEVE-TIED /?CCL12
+       PRINTR  "It is."
+?CCL12:        SET     'SLEEVE-TIED,TRUE-VALUE
+       PRINTR  "The sleeves are now tied closed."
+?CCL7: EQUAL?  PRSA,V?OPEN,V?UNTIE \FALSE
+       ZERO?   SLEEVE-TIED /?PRG24
+       SET     'SLEEVE-TIED,FALSE-VALUE
+       PRINTR  "Untied."
+?PRG24:        PRINTR  "It isn't tied!"
+
+
+       .FUNCT  TWO-TREES
+       SET     'AWAITING-REPLY,9
+       CALL    QUEUE,I-REPLY,2
+       PUT     STACK,0,1
+       PRINTI  " Shouldn't you be taking more interest in events in the world around you? While you've got it...?"
+       RTRUE   
+
+
+       .FUNCT  THING-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "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,"
+       PRINT   GET-RID
+       CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?DROP \?CCL7
+       EQUAL?  HERE,MAZE,ACCESS-SPACE /?CCL7
+       MOVE    THING,HERE
+       PRINTR  "It falls to the ground with a light ""thunk."" It doesn't do anything else at all."
+?CCL7: EQUAL?  PRSA,V?CLOSE \FALSE
+       PRINTR  "Come to think of it, you vaguely remember an instruction booklet with directions for that. You never read it and lost it months ago."
+
+
+       .FUNCT  I-THING
+       RANDOM  4
+       ADD     4,STACK
+       CALL    QUEUE,I-THING,STACK
+       PUT     STACK,0,1
+       EQUAL?  IDENTITY-FLAG,ARTHUR \FALSE
+       EQUAL?  HERE,ENGINE-ROOM \?PRD5
+       LESS?   LOOK-COUNTER,3 /FALSE
+?PRD5: EQUAL?  HERE,DARK,ACCESS-SPACE,MAZE /FALSE
+       CALL2   VISIBLE?,THING
+       ZERO?   STACK \FALSE
+       CALL    HELD?,THING,PROTAGONIST
+       ZERO?   STACK \FALSE
+       IN?     FLEET,HERE /FALSE
+       FCLEAR  THING,NDESCBIT
+       FCLEAR  THING,INVISIBLE
+       RANDOM  100
+       LESS?   40,STACK /?CCL13
+       MOVE    THING,HERE
+       RFALSE  
+?CCL13:        FSET?   GOWN,WORNBIT \?CCL15
+       FSET?   GOWN,OPENBIT \?CCL15
+       RANDOM  100
+       LESS?   65,STACK /?CCL15
+       MOVE    THING,GOWN
+       RFALSE  
+?CCL15:        MOVE    THING,PROTAGONIST
+       RFALSE  
+
+
+       .FUNCT  TABLET-F
+       EQUAL?  PRSA,V?DRINK,V?TAKE,V?EAT \FALSE
+       MOVE    TABLET,LOCAL-GLOBALS
+       FCLEAR  SCREWDRIVER,TRYTAKEBIT
+       FCLEAR  TOOTHBRUSH,TRYTAKEBIT
+       SET     'HEADACHE,FALSE-VALUE
+       ADD     SCORE,10 >SCORE
+       PRINTR  "You swallow the tablet. After a few seconds the room begins to calm down and behave in an orderly manner. Your terrible headache goes."
+
+
+       .FUNCT  CLOTHES-EXIT-F
+       FSET?   GOWN,WORNBIT \?CCL3
+       RETURN  FRONT-OF-HOUSE
+?CCL3: SET     'AWAITING-REPLY,10
+       CALL    QUEUE,I-REPLY,2
+       PUT     STACK,0,1
+       PRINT   ARRESTED
+       CRLF    
+       RFALSE  
+
+
+       .FUNCT  MAIL-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       FSET?   MAIL,TOUCHBIT /?CCL3
+       FSET    MAIL,TOUCHBIT
+       FCLEAR  MAIL,TRYTAKEBIT
+       MOVE    MAIL,PROTAGONIST
+       PRINTR  "You gather up the pile of mail."
+?CCL3: EQUAL?  PRSA,V?OPEN \FALSE
+       ICALL   PERFORM,V?READ,MAIL
+       RTRUE   
+
+
+       .FUNCT  HOUSE-ENTER-F
+       ZERO?   HOUSE-DEMOLISHED /?CCL3
+       PRINTI  "You can't enter a "
+       PRINTD  RUBBLE
+       PRINTC  46
+       CRLF    
+       RFALSE  
+?CCL3: EQUAL?  IDENTITY-FLAG,FORD \?CCL7
+       EQUAL?  PRSA,V?THROUGH /?CND8
+       PRINTI  "Enter the house? "
+?CND8: ICALL2  PRIVATE,STR?68
+       RFALSE  
+?CCL7: ZERO?   PROSSER-LYING \?CCL13
+       PRINTI  "The "
+       PRINTD  BULLDOZER
+       ICALL2  JIGS-UP,STR?69
+       RFALSE  
+?CCL13:        CALL    QUEUE,I-HOUSEWRECK,5
+       PUT     STACK,0,1
+       RETURN  FRONT-PORCH
+
+
+       .FUNCT  FRONT-OF-HOUSE-F,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       FCLEAR  BULLDOZER,INVISIBLE
+       IN?     DOG,COUNTRY-LANE \?CCL6
+       ZERO?   DOG-FED \?CND7
+       ICALL1  I-DOG
+?CND7: CALL    QUEUE,I-VOGONS,3
+       PUT     STACK,0,1
+       PRINTI  "You reach the site of what was "
+       EQUAL?  IDENTITY-FLAG,FORD \?PRG16
+       PRINTI  "Arthur's"
+       JUMP    ?PRG18
+?PRG16:        PRINTI  "your"
+?PRG18:        PRINTI  " home. It is now a "
+       PRINTD  RUBBLE
+       PRINTI  ". "
+       PRINTD  PROSSER
+       PRINTI  " looks sheepishly triumphant, a trick few people can do, as it requires a lot of technically complex deltoid muscle work."
+       CRLF    
+       CRLF    
+       RTRUE   
+?CCL6: EQUAL?  IDENTITY-FLAG,FORD /FALSE
+       ZERO?   PROSSER-LYING \FALSE
+       CALL    QUEUE,I-BULLDOZER,-1
+       PUT     STACK,0,1
+       RFALSE  
+?CCL3: EQUAL?  RARG,M-LOOK \?CCL25
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL28
+       FSET?   FRONT-OF-HOUSE,NDESCBIT /?CCL28
+       FSET    BEER,NDESCBIT
+       SET     'DRUNK-LEVEL,0
+       FSET    ARTHUR,NDESCBIT
+       FSET    FRONT-OF-HOUSE,NDESCBIT
+       PRINTI  "Before you is the house of your friend, "
+       PRINTD  ARTHUR
+       PRINTI  ", who is lying in front of a "
+       PRINTD  BULLDOZER
+       PRINTI  "; 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."
+       JUMP    ?CND26
+?CCL28:        ZERO?   HOUSE-DEMOLISHED /?CCL35
+       PRINTI  "There is a huge "
+       PRINTD  RUBBLE
+       JUMP    ?PRG44
+?CCL35:        EQUAL?  IDENTITY-FLAG,FORD \?PRG42
+       PRINTI  "Arthur's house is"
+       JUMP    ?PRG44
+?PRG42:        PRINTI  "You can enter your home"
+?PRG44:        PRINTI  " to the north. A path leads around it to the northeast and northwest, and a country lane is visible to the south."
+?CND26:        FSET?   FRONT-OF-HOUSE,NDESCBIT /?CND46
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?CND46
+       FSET    FRONT-OF-HOUSE,NDESCBIT
+       PRINTI  " All that lies between your home and the huge yellow "
+       PRINTD  BULLDOZER
+       PRINTR  " bearing down on it is a few yards of mud."
+?CND46:        CRLF    
+       RTRUE   
+?CCL25:        EQUAL?  RARG,M-END \FALSE
+       EQUAL?  IDENTITY-FLAG,FORD \FALSE
+       FSET?   ARTHUR,NDESCBIT \FALSE
+       FCLEAR  ARTHUR,NDESCBIT
+       RFALSE  
+
+
+       .FUNCT  I-BULLDOZER
+       ZERO?   LYING-DOWN \?CCL2
+       ZERO?   HOUSE-DEMOLISHED /?CND1
+?CCL2: CALL2   INT,I-BULLDOZER
+       PUT     STACK,0,0
+       RFALSE  
+?CND1: FSET    PROSSER,TOUCHBIT
+       IGRTR?  'BULLDOZER-COUNTER,4 \?CCL7
+       CALL2   INT,I-BULLDOZER
+       PUT     STACK,0,0
+       PRINT   BULLDOZER-PILES
+       CRLF    
+       CALL1   BRICK-DEATH
+       RSTACK  
+?CCL7: EQUAL?  HERE,FRONT-OF-HOUSE \FALSE
+       CRLF    
+       PRINTI  "The "
+       PRINTD  BULLDOZER
+       PRINTR  " rumbles slowly toward your home."
+
+
+       .FUNCT  BRICK-DEATH
+       CRLF    
+       PRINTI  "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."
+?PRG3: CRLF    
+       CRLF    
+       PRINTC  62
+       PUTB    P-INBUF,1,0
+       READ    P-INBUF,P-LEXV
+       INC     'DEAD-COUNTER
+       EQUAL?  DEAD-COUNTER,1,2 \?CCL7
+       PRINTI  "You keep out of this, you're dead"
+       EQUAL?  DEAD-COUNTER,1 \?PRG15
+       PRINTI  ". An ambulance arrives."
+       JUMP    ?PRG3
+?PRG15:        PRINTI  " and should be concentrating on developing a good firm rigor mortis. You are put in the ambulance, which drives away."
+       JUMP    ?PRG3
+?CCL7: EQUAL?  DEAD-COUNTER,3 \?PRG3
+       PRINTI  "For a dead person you are talking too much. As the ambulance reaches the mortuary"
+       ICALL1  MAKE-WAY-FOR
+       ICALL1  FINISH
+       JUMP    ?PRG3
+
+
+       .FUNCT  BULLDOZER-DRIVER-F
+       EQUAL?  PRSA,V?HELLO,V?TELL \FALSE
+       PRINTI  "The "
+       PRINTD  BULLDOZER-DRIVER
+       PRINTI  ", perusing a booklet of union rules, ignores you."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+
+
+       .FUNCT  BULLDOZER-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "It's one of those really big "
+       PRINTD  BULLDOZER
+       PRINTI  "s that can actually crush other "
+       PRINTD  BULLDOZER
+       PRINTR  "s, let alone houses."
+?CCL3: EQUAL?  HERE,FRONT-OF-HOUSE /?CCL7
+       EQUAL?  PRSA,V?MOVE,V?PUSH,V?RUB /?PRG13
+       EQUAL?  PRSA,V?BLOCK,V?KICK,V?TAKE /?PRG13
+       EQUAL?  PRSA,V?WALK-AROUND \?CCL7
+?PRG13:        PRINTI  "The "
+       PRINTD  BULLDOZER
+       PRINTR  " isn't here."
+?CCL7: EQUAL?  PRSA,V?LIE-DOWN \?CCL16
+       ICALL   PERFORM,V?BLOCK,BULLDOZER
+       RTRUE   
+?CCL16:        EQUAL?  PRSA,V?BLOCK \?CCL18
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?CCL18
+       ZERO?   HOUSE-DEMOLISHED /?CCL23
+       PRINTR  "Too late now."
+?CCL23:        ZERO?   LYING-DOWN /?CCL27
+       ICALL   PERFORM,V?LIE-DOWN,GROUND
+       RTRUE   
+?CCL27:        ZERO?   PROSSER-LYING /?CCL29
+       PRINTR  "Prosser's doing that for you."
+?CCL29:        SET     'LYING-DOWN,TRUE-VALUE
+       SET     'OHERE,FALSE-VALUE
+       CALL    QUEUE,I-PROSSER,2
+       PUT     STACK,0,1
+       PRINTI  "You lie down in the path of the advancing "
+       PRINTD  BULLDOZER
+       PRINTR  ". Prosser yells at you to for crissake move!!!"
+?CCL18:        EQUAL?  PRSA,V?WALK-AROUND \?CCL35
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?CCL38
+       CALL1   V-DIG
+       RSTACK  
+?CCL38:        ZERO?   TOWEL-OFFERED \?CCL40
+       PRINTR  "Didn't you come here for a purpose? Something about a towel?"
+?CCL40:        ZERO?   GONE-AROUND /?CCL44
+       PRINTR  "You already did. It's not a merry-go-round."
+?CCL44:        SET     'GONE-AROUND,TRUE-VALUE
+       PRINTI  "You walk around the "
+       PRINTD  BULLDOZER
+       PRINTR  ". 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."
+?CCL35:        EQUAL?  PRSA,V?LISTEN \FALSE
+       CALL2   RUNNING?,I-PROSSER
+       ZERO?   STACK /FALSE
+       PRINTR  """Rumble...rumble..."""
+
+
+       .FUNCT  I-PROSSER
+       ZERO?   LYING-DOWN \?CND1
+       CALL2   INT,I-PROSSER
+       PUT     STACK,0,0
+       ICALL1  I-BULLDOZER
+       RTRUE   
+?CND1: CALL    QUEUE,I-PROSSER,-1
+       PUT     STACK,0,1
+       INC     'PROSSER-COUNTER
+       CRLF    
+       EQUAL?  PROSSER-COUNTER,1 \?CCL5
+       PRINTI  "The "
+       PRINTD  BULLDOZER
+       PRINTR  " thunders toward you. The ground is shaking beneath you as you lie in the mud."
+?CCL5: EQUAL?  PROSSER-COUNTER,2 \?CCL9
+       PRINTI  "The noise of the giant "
+       PRINTD  BULLDOZER
+       PRINTR  " 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."
+?CCL9: EQUAL?  PROSSER-COUNTER,3 \FALSE
+       CALL2   INT,I-PROSSER
+       PUT     STACK,0,0
+       CALL    QUEUE,I-FORD,-1
+       PUT     STACK,0,1
+       MOVE    FORD,HERE
+       SET     'P-IT-OBJECT,TOWEL
+       PRINTI  "With a terrible grinding of gears the "
+       PRINTD  BULLDOZER
+       PRINTI  " 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 "
+       PRINTD  FORD
+       PRINTR  " 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."
+
+
+       .FUNCT  PROSSER-DESCFCN,X
+       EQUAL?  IDENTITY-FLAG,FORD \?PRG8
+       FSET?   PROSSER,TOUCHBIT /?PRG8
+       FSET    PROSSER,TOUCHBIT
+       PRINTR  "Nearby stands an impatient man. There seems to be a bit of an atmosphere."
+?PRG8: PRINTD  PROSSER
+       PRINTI  ", from the local council, is "
+       ZERO?   PROSSER-LYING /?CCL12
+       PRINTI  "lying in front"
+       JUMP    ?PRG21
+?CCL12:        ZERO?   GONE-AROUND /?PRG19
+       PRINTI  "standing at the side"
+       JUMP    ?PRG21
+?PRG19:        PRINT   ON-OTHER-SIDE
+?PRG21:        PRINTI  " of the "
+       PRINTD  BULLDOZER
+       PRINTI  ". He seems to be wearing a "
+       PRINTD  DIGITAL-WATCH
+       PRINTC  46
+       FSET?   PROSSER,TOUCHBIT /?CND1
+       FSET    PROSSER,TOUCHBIT
+       PRINTR  " He looks startled to see you emerge, and yells at you to get out of the way."
+?CND1: CRLF    
+       RTRUE   
+
+
+       .FUNCT  PROSSER-F
+       EQUAL?  PROSSER,WINNER \?CCL3
+       IN?     FLEET,HERE \?CCL6
+       PRINTI  "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."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL6: EQUAL?  PRSA,V?TELL-ABOUT \?CCL10
+       EQUAL?  PRSO,ME \?CCL10
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,PROSSER,PRSI
+       SET     'WINNER,PROSSER
+       RTRUE   
+?CCL10:        EQUAL?  PRSA,V?HELLO \?CCL14
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?HELLO,PROSSER
+       SET     'WINNER,PROSSER
+       RTRUE   
+?CCL14:        EQUAL?  PRSA,V?WHAT \?CCL16
+       EQUAL?  PRSO,OBJECT-OF-GAME \?CCL16
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,PROSSER,OBJECT-OF-GAME
+       SET     'WINNER,PROSSER
+       RTRUE   
+?CCL16:        EQUAL?  PRSA,V?WHAT \?PRD22
+       EQUAL?  PRSO,TIME /?CTR19
+?PRD22:        EQUAL?  PRSA,V?TELL-TIME \?PRD25
+       EQUAL?  PRSO,ME \?PRD25
+       EQUAL?  PRSI,TIME /?CTR19
+?PRD25:        EQUAL?  PRSA,V?WHAT-TIME \?CCL20
+       EQUAL?  PRSO,TIME \?CCL20
+?CTR19:        SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-FOR,PROSSER,TIME
+       SET     'WINNER,PROSSER
+       RTRUE   
+?CCL20:        EQUAL?  PRSA,V?WHAT \?CCL32
+       EQUAL?  PRSO,OBJECT-OF-GAME \?CCL32
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,PROSSER,PRSO
+       SET     'WINNER,PROSSER
+       RTRUE   
+?CCL32:        EQUAL?  IDENTITY-FLAG,FORD \?CCL36
+       EQUAL?  PRSA,V?LIE-DOWN \?PRD41
+       EQUAL?  PRSO,BULLDOZER \?PRD41
+       ZERO?   IN-FRONT-FLAG \?CTR38
+?PRD41:        EQUAL?  PRSA,V?LIE-DOWN \?PRD45
+       EQUAL?  PRSO,ROOMS,GROUND \?PRD45
+       ZERO?   HOUSE-DEMOLISHED /?CTR38
+?PRD45:        EQUAL?  PRSA,V?REPLACE \?CCL39
+       EQUAL?  PRSO,ARTHUR \?CCL39
+       ZERO?   HOUSE-DEMOLISHED \?CCL39
+?CTR38:        ZERO?   PROSSER-LYING /?CND52
+       PRINTR  "He's already lying there!"
+?CND52:        SET     'PROSSER-LYING,TRUE-VALUE
+       CALL    QUEUE,I-ARTHUR,-1
+       PUT     STACK,0,1
+       PRINTR  "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."
+?CCL39:        ICALL1  STAND-ASIDE
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL36:        EQUAL?  PRSA,V?WHAT-ABOUT \?CCL59
+       EQUAL?  PRSO,HOME,HOUSE \?CCL59
+       ZERO?   HOUSE-DEMOLISHED /?CCL59
+       PRINTR  "Prosser explains the local planning regulations and says, by way of reassurance, that you will probably be rehoused within a couple of years."
+?CCL59:        EQUAL?  PRSA,V?BLOCK \?CCL66
+       EQUAL?  PRSO,BULLDOZER \?CCL66
+       CALL2   RUNNING?,I-BULLDOZER
+       ZERO?   STACK /?CCL66
+       CALL1   V-PROTEST
+       RSTACK  
+?CCL66:        ICALL1  STAND-ASIDE
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL3: ZERO?   GONE-AROUND \?CCL71
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL71
+       EQUAL?  PRSA,V?ASK-FOR,V?HELLO,V?TELL /?PRD75
+       EQUAL?  PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?CCL71
+?PRD75:        EQUAL?  PRSO,PROSSER \?CCL71
+       IN?     FLEET,HERE /?CCL71
+       PRINTI  "Prosser can't hear you from here."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL71:        EQUAL?  PRSA,V?SHOW,V?GIVE \?CCL82
+       EQUAL?  PRSO,THING \?CCL85
+       PRINTR  "He is much impressed and says, ""You must have the same aunt I have."""
+?CCL85:        EQUAL?  PRSO,TOWEL \?CCL89
+       SET     'TOWEL-MUDDY,TRUE-VALUE
+       PRINTR  "Prosser thanks you, wipes the mud off his boots, and hands it back."
+?CCL89:        EQUAL?  PRSO,GUIDE \?CCL93
+       PRINTI  "Prosser takes a quick look at "
+       PRINTD  GUIDE
+       PRINTR  ", says he doesn't read that kind of rubbish, and hands it back."
+?CCL93:        EQUAL?  PRSO,SATCHEL \FALSE
+       PRINTR  "Prosser says he wouldn't be seen dead with that kind of thing slung over his shoulder."
+?CCL82:        EQUAL?  PRSA,V?WALK-TO \?CCL101
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL101
+       EQUAL?  IDENTITY-FLAG,FORD \?PRG109
+       ZERO?   GONE-AROUND \?PRG109
+       ICALL   PERFORM,V?WALK-AROUND,BULLDOZER
+       RTRUE   
+?PRG109:       PRINTR  "You're already as close as any reasonable person would want to get."
+?CCL101:       EQUAL?  PRSA,V?KICK,V?KILL \?CCL112
+       ZERO?   LYING-DOWN /?CCL112
+       PRINT   WHILE-LYING
+       CRLF    
+       RTRUE   
+?CCL112:       EQUAL?  PRSA,V?KILL \?CCL118
+       EQUAL?  PRSO,PROSSER \?CCL118
+       ZERO?   HOUSE-DEMOLISHED /?CCL118
+       PRINTR  "You muck up all his fancy facial work. This is the last moment of satisfaction you will experience for some time."
+?CCL118:       EQUAL?  PRSA,V?KICK,V?KILL \?CCL125
+       EQUAL?  PRSO,PROSSER \?CCL125
+       PRINTR  "He dodges, insisting that this is incorrect procedure."
+?CCL125:       EQUAL?  PRSA,V?THROW \?CCL131
+       EQUAL?  PRSI,PROSSER \?CCL131
+       MOVE    PRSO,HERE
+       ICALL   PERFORM,V?KILL,PROSSER
+       RTRUE   
+?CCL131:       EQUAL?  PRSA,V?EXAMINE \?CCL135
+       CALL1   PROSSER-DESCFCN
+       RSTACK  
+?CCL135:       EQUAL?  PRSA,V?LISTEN \?CCL137
+       FSET?   CONVERSATION,INVISIBLE /?CCL137
+       ICALL   PERFORM,V?LISTEN,CONVERSATION
+       RTRUE   
+?CCL137:       EQUAL?  PRSA,V?ASK-ABOUT \?CCL141
+       EQUAL?  PRSI,OBJECT-OF-GAME \?CCL141
+       PRINTR  "Prosser pulls a booklet out of his back pocket. ""My game manual says that the goal is getting this here house knocked down."""
+?CCL141:       EQUAL?  PRSA,V?ASK-ABOUT \?CCL147
+       EQUAL?  PRSI,DIGITAL-WATCH \?CCL147
+       ICALL   PERFORM,V?ASK-FOR,PROSSER,TIME
+       RTRUE   
+?CCL147:       EQUAL?  PRSA,V?ASK-FOR \FALSE
+       EQUAL?  PRSI,TIME \FALSE
+       PRINTI  "Prosser shakes the "
+       PRINTD  DIGITAL-WATCH
+       PRINTI  ". ""Hasn't worked for months. I keep wearing it only because I think "
+       PRINTD  DIGITAL-WATCH
+       PRINTR  "es are neat."""
+
+
+       .FUNCT  STAND-ASIDE
+       ZERO?   PROSSER-LYING /?PRG5
+       PRINTR  """Leave me alone,"" Prosser whimpers miserably."
+?PRG5: PRINTI  """Please step aside as I need to be able to "
+       ZERO?   HOUSE-DEMOLISHED /?PRG12
+       PRINTI  "clear this "
+       PRINTD  RUBBLE
+       PRINTR  " away."""
+?PRG12:        PRINTI  "knock "
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?PRG19
+       PRINTI  "your"
+       JUMP    ?PRG21
+?PRG19:        PRINTI  "that"
+?PRG21:        PRINTR  " house down."""
+
+
+       .FUNCT  DIGITAL-WATCH-F
+       EQUAL?  PRSA,V?READ,V?TAKE \FALSE
+       CALL2   PRIVATE,STR?70
+       RSTACK  
+
+
+       .FUNCT  FORD-DESCFCN,X
+       ZERO?   FORD-SLEEPING /?PRG6
+       PRINTR  "Ford is in the corner, snoring loudly."
+?PRG6: PRINTD  FORD
+       PRINTR  " is here."
+
+
+       .FUNCT  FORD-F
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL3
+       EQUAL?  FORD,PRSO \?CCL6
+       ICALL   PERFORM,PRSA,ME,PRSI
+       RTRUE   
+?CCL6: ICALL   PERFORM,PRSA,PRSO,ME
+       RTRUE   
+?CCL3: EQUAL?  FORD,WINNER \?CCL8
+       IN?     FLEET,HERE \?CCL11
+       PRINT   ABOVE-NOISE
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL11:        EQUAL?  PRSI,HOUSE /?PRG18
+       EQUAL?  PRSO,HOUSE \?CCL15
+?PRG18:        PRINTI  """It's not a house, it's a home."" (Footnote 2)"
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL15:        EQUAL?  PRSA,V?TELL-ABOUT \?CCL21
+       EQUAL?  PRSO,ME \?CCL21
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,FORD,PRSI
+       SET     'WINNER,FORD
+       RTRUE   
+?CCL21:        EQUAL?  PRSA,V?HELLO \?CCL25
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?HELLO,FORD
+       SET     'WINNER,FORD
+       RTRUE   
+?CCL25:        EQUAL?  PRSA,V?WHAT \?CCL27
+       EQUAL?  PRSO,OBJECT-OF-GAME \?CCL27
+       PRINT   ASK-ABOUT-OBJECT
+       CRLF    
+       RTRUE   
+?CCL27:        EQUAL?  PRSA,V?WHAT-ABOUT \?CCL33
+       LESS?   FORD-COUNTER,2 \?CCL33
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL33
+       EQUAL?  PRSO,HOME \?CCL33
+       PRINTI  "Ford"
+       CALL1   FORD-DECIDES
+       RSTACK  
+?CCL33:        EQUAL?  PRSA,V?WHAT-ABOUT \?CCL41
+       EQUAL?  PRSO,THIRD-PLANET,HOME \?CCL41
+       ZERO?   EARTH-DEMOLISHED /?CCL41
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,FORD,THIRD-PLANET
+       SET     'WINNER,FORD
+       RTRUE   
+?CCL41:        ZERO?   EARTH-DEMOLISHED \?PRG73
+       LESS?   DRUNK-LEVEL,3 \?PRG54
+       EQUAL?  HERE,PUB \?PRG54
+       PRINTI  """Shut up and drink your beer. You're going to need it."""
+       CRLF    
+       JUMP    ?CND47
+?PRG54:        PRINTI  "Ford, busy "
+       EQUAL?  FORD-COUNTER,2 \?PRG61
+       PRINTI  "talking to Prosser"
+       JUMP    ?CND56
+?PRG61:        PRINTI  "scanning the sky "
+?CND56:        EQUAL?  HERE,PUB \?CCL65
+       PRINTI  "through the window"
+       JUMP    ?PRG71
+?CCL65:        EQUAL?  FORD-COUNTER,2 /?PRG71
+       PRINTI  "for something"
+?PRG71:        PRINTI  ", ignores you."
+       CRLF    
+?CND47:        CALL    QUEUE,I-FORD,2
+       PUT     STACK,0,1
+       RTRUE   
+?PRG73:        PRINTI  "Ford seems deep in thought."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL8: EQUAL?  PRSA,V?HELLO,V?TELL-ABOUT,V?TELL /?PRD78
+       EQUAL?  PRSA,V?ASK-ABOUT,V?ASK-FOR \?CCL76
+?PRD78:        EQUAL?  PRSO,FORD \?CCL76
+       ZERO?   FORD-SLEEPING /?CCL76
+       PRINTI  "Ford is sleeping!"
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL76:        EQUAL?  PRSA,V?GIVE \?CCL85
+       EQUAL?  PRSI,FORD \?CCL85
+       ZERO?   FORD-SLEEPING /?CCL85
+       ICALL   PERFORM,V?HELLO,FORD
+       RTRUE   
+?CCL85:        EQUAL?  FOLLOW-FLAG,1 \?CCL90
+       IN?     FORD,HERE /?CCL90
+       EQUAL?  PRSA,V?FOLLOW \?CCL90
+       PRINTI  "In a state of anxiety and confusion you follow Ford down the lane..."
+       CRLF    
+       CRLF    
+       LOC     FORD
+       CALL2   GOTO,STACK
+       RSTACK  
+?CCL90:        EQUAL?  FOLLOW-FLAG,3 \?CCL97
+       EQUAL?  PRSA,V?FOLLOW \?CCL97
+       CALL2   DO-WALK,P?WEST
+       RSTACK  
+?CCL97:        EQUAL?  PRSA,V?FOLLOW \?CCL101
+       EQUAL?  FOLLOW-FLAG,5 \?CCL101
+       CALL2   DO-WALK,P?SOUTH
+       RSTACK  
+?CCL101:       EQUAL?  PRSA,V?SHAKE,V?ALARM \?CCL105
+       ZERO?   FORD-SLEEPING /?CCL105
+       PRINTR  "Rather like trying to wake the dead."
+?CCL105:       EQUAL?  PRSA,V?ASK-ABOUT \?CCL111
+       EQUAL?  PRSI,OBJECT-OF-GAME \?CCL111
+       PRINT   ASK-ABOUT-OBJECT
+       CRLF    
+       RTRUE   
+?CCL111:       EQUAL?  PRSA,V?ASK-ABOUT \?CCL117
+       EQUAL?  PRSI,THIRD-PLANET \?CCL117
+       PRINTR  "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."
+?CCL117:       EQUAL?  PRSA,V?GIVE \?CCL123
+       EQUAL?  PRSO,THUMB \?CCL123
+       IN?     FLEET,HERE \?CCL123
+       PRINTR  "You can't reach him in this wind."
+?CCL123:       EQUAL?  PRSA,V?LISTEN \?CCL130
+       FSET?   CONVERSATION,INVISIBLE /?CCL133
+       ICALL   PERFORM,V?LISTEN,CONVERSATION
+       RTRUE   
+?CCL133:       ZERO?   FORD-SLEEPING /FALSE
+       PRINTR  """Zzzzzzz..."""
+?CCL130:       EQUAL?  PRSA,V?EXAMINE \?CCL139
+       ZERO?   FORD-SLEEPING /?CCL139
+       PRINTR  "He's sleeping."
+?CCL139:       EQUAL?  PRSA,V?ASK-FOR \FALSE
+       EQUAL?  PRSI,TOWEL \FALSE
+       EQUAL?  FORD-COUNTER,0,1 \FALSE
+       ICALL   PERFORM,V?TAKE,TOWEL
+       RTRUE   
+
+
+       .FUNCT  FORD-DECIDES
+       FCLEAR  CONVERSATION,INVISIBLE
+       CALL    QUEUE,I-FORD,2
+       PUT     STACK,0,1
+       SET     'FORD-COUNTER,2
+       PRINTI  " 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 "
+       PRINTD  BULLDOZER
+       PRINTI  " 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.
+
+"
+       ICALL2  BUT-THAT-MAN,STR?71
+       PRINTI  " 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 "
+       PRINTD  CONVERSATION
+       PRINTR  "."
+
+
+       .FUNCT  I-FORD
+       CALL    QUEUE,I-FORD,-1
+       PUT     STACK,0,1
+       CALL2   IN-HEART?,PROTAGONIST
+       ZERO?   STACK /?CCL3
+       INC     'HEART-COUNTER
+       EQUAL?  HEART-COUNTER,1 \?CCL6
+       MOVE    FORD,HERE
+       CRLF    
+       PRINTI  """This looks like that incredible new"
+       PRINT   IID
+       PRINTI  " spaceship, "
+       PRINTD  HEART-OF-GOLD
+       PRINTI  "!"" says Ford, with growing excitement."
+       CRLF    
+       CRLF    
+       PRINT   ANNOUNCEMENT
+       PRINTD  EDDIE
+       PRINTI  ". We have just picked up two hitchhikers"
+       ICALL2  FACTOR,STR?72
+       PRINTR  """"
+?CCL6: EQUAL?  HEART-COUNTER,2 \?CCL12
+       CRLF    
+       PRINTI  """Come on, let's look for the Bridge."" You follow Ford, and eventually come to the..."
+       CRLF    
+       CRLF    
+       ICALL2  GOTO,BRIDGE
+       MOVE    FORD,HERE
+       RTRUE   
+?CCL12:        EQUAL?  HEART-COUNTER,3 \?CCL16
+       EQUAL?  HERE,BRIDGE \FALSE
+       CRLF    
+       PRINTI  """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 "
+       PRINTD  TRILLIAN
+       PRINTR  """), 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."
+?CCL16:        EQUAL?  HEART-COUNTER,4 \FALSE
+       MOVE    FORD,LOCAL-GLOBALS
+       MOVE    ZAPHOD,LOCAL-GLOBALS
+       MOVE    TRILLIAN,LOCAL-GLOBALS
+       MOVE    HANDBAG,BRIDGE
+       MOVE    SATCHEL,BRIDGE
+       FCLEAR  HANDBAG,NDESCBIT
+       FCLEAR  HANDBAG,TRYTAKEBIT
+       CALL2   INT,I-FORD
+       PUT     STACK,0,0
+       CALL    QUEUE,I-MARVIN,-1
+       PUT     STACK,0,1
+       EQUAL?  HERE,BRIDGE \FALSE
+       SET     'FOLLOW-FLAG,3
+       CALL    QUEUE,I-FOLLOW,2
+       PUT     STACK,0,1
+       CRLF    
+       PRINTI  """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"
+       PRINT   LOST-PLANET
+       PRINTI  ". Let's go sit in the sauna while I explain."" Zaphod, Ford, and "
+       PRINTD  TRILLIAN
+       PRINTR  " all head off to port."
+?CCL3: EQUAL?  HERE,HOLD \?CCL29
+       FSET?   CAPTAINS-QUARTERS,TOUCHBIT \?CCL32
+       INC     'GUARDS-COUNTER
+       EQUAL?  GUARDS-COUNTER,1 \?CCL35
+       CRLF    
+       PRINTR  "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?"""
+?CCL35:        EQUAL?  GUARDS-COUNTER,6 \?PRG51
+       CALL2   INT,I-FORD
+       PUT     STACK,0,0
+       MOVE    SATCHEL,FORD
+       FCLEAR  SATCHEL,NDESCBIT
+       SET     'PANEL-BLOCKER,FALSE-VALUE
+       FSET    HOLD,REVISITBIT
+       CRLF    
+       PRINTI  "The guard says, """
+       CALL    HELD?,BABEL-FISH,PROTAGONIST
+       ZERO?   STACK /?PRG47
+       PRINTI  "Well, all things considered, I guess I like being a guard. Especially the shouting. Resistance is useless!"""
+       JUMP    ?PRG49
+?PRG47:        PRINTC  73
+       ICALL2  PRODUCE-GIBBERISH,3
+?PRG49:        PRINTI  " He throws you and Ford into the airlock and closes the door."
+       CRLF    
+       CRLF    
+       ICALL2  GOTO,AIRLOCK
+       MOVE    FORD,AIRLOCK
+       RTRUE   
+?PRG51:        CRLF    
+       PRINTR  "Ford continues trying to talk the guard into a sudden career change."
+?CCL32:        MOVE    GUIDE,PROTAGONIST
+       CALL2   INT,I-FORD
+       PUT     STACK,0,0
+       SET     'FORD-SLEEPING,TRUE-VALUE
+       IN?     MINERAL-WATER,FORD \?CND53
+       MOVE    MINERAL-WATER,SATCHEL
+?CND53:        IN?     TOWEL,FORD \?CND55
+       MOVE    TOWEL,HERE
+?CND55:        MOVE    SATCHEL,HERE
+       FCLEAR  SATCHEL,TRYTAKEBIT
+       CRLF    
+       PRINTI  "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 "
+       PRINT   GUIDE-NAME
+       PRINTI  """ (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 "
+       PRINTD  GUIDE
+       PRINTR  "."
+?CCL29:        ZERO?   FORD-COUNTER \?CCL60
+       SET     'FORD-COUNTER,1
+       CRLF    
+       PRINTR  "Ford glances uncomfortably at the sky. He offers you the towel again."
+?CCL60:        EQUAL?  FORD-COUNTER,1 \?CCL64
+       CRLF    
+       PRINTI  "Ford seems oblivious to your trouble, so you ask ""Ford, what about my home?"" He"
+       CALL1   FORD-DECIDES
+       RSTACK  
+?CCL64:        EQUAL?  FORD-COUNTER,2 \?CCL68
+       SET     'FORD-COUNTER,3
+       SET     'LYING-DOWN,FALSE-VALUE
+       SET     'PROSSER-LYING,TRUE-VALUE
+       CALL    QUEUE,I-FORD,2
+       PUT     STACK,0,1
+       FSET    CONVERSATION,INVISIBLE
+       CRLF    
+       PRINTI  "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 "
+       PRINTD  BULLDOZER
+       PRINTR  ". You stand up."
+?CCL68:        EQUAL?  FORD-COUNTER,3 \?CCL72
+       MOVE    FORD,COUNTRY-LANE
+       SET     'FORD-COUNTER,4
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL75
+       SET     'FOLLOW-FLAG,1
+       CALL    QUEUE,I-FOLLOW,2
+       PUT     STACK,0,1
+       CRLF    
+       PRINTR  "Ford, urging you to follow, hurries toward the country lane."
+?CCL75:        EQUAL?  HERE,COUNTRY-LANE \FALSE
+       CRLF    
+       PRINTR  "Ford enters from the north."
+?CCL72:        EQUAL?  FORD-COUNTER,4 \?CCL83
+       EQUAL?  HERE,COUNTRY-LANE \?CCL83
+       FSET?   PUB,TOUCHBIT /?CCL83
+       SET     'FORD-COUNTER,5
+       SET     'FOLLOW-FLAG,1
+       CALL    QUEUE,I-FOLLOW,2
+       PUT     STACK,0,1
+       MOVE    FORD,PUB
+       CRLF    
+       PRINTR  """Come along, Arthur,"" says Ford impatiently, and enters the Pub."
+?CCL83:        IN?     FORD,HERE /?CCL90
+       FSET?   PUB,TOUCHBIT \?CCL90
+       MOVE    FORD,HERE
+       CRLF    
+       PRINTR  "Ford hurries after you."
+?CCL90:        LESS?   DRUNK-LEVEL,3 \FALSE
+       EQUAL?  PRSO,BEER \?CCL99
+       EQUAL?  PRSA,V?ENJOY,V?DRINK /FALSE
+?CCL99:        EQUAL?  HERE,PUB \FALSE
+       FSET?   BEER,NDESCBIT /FALSE
+       CRLF    
+       PRINTI  """Drink the beer,"" urges Ford. ""It will help"
+       ICALL1  CUSHION
+       PRINTR  """"
+
+
+       .FUNCT  SATCHEL-DESCFCN,X
+       PRINTI  "There is a satchel here"
+       EQUAL?  PANEL-BLOCKER,SATCHEL \?PRG7
+       PRINTI  ", resting in front of the "
+       PRINTD  ROBOT-PANEL
+?PRG7: PRINTC  46
+       ICALL1  ITEM-ON-SATCHEL-DESCRIPTION
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  ITEM-ON-SATCHEL-DESCRIPTION
+       ZERO?   ITEM-ON-SATCHEL /FALSE
+       PRINTI  " Sitting on top of it is"
+       ICALL2  ARTICLE,ITEM-ON-SATCHEL
+       PRINTC  46
+       RTRUE   
+
+
+       .FUNCT  SATCHEL-F
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       EQUAL?  IDENTITY-FLAG,FORD /?CCL3
+       CALL2   PRIVATE,STR?73
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?PUT-ON \?CCL7
+       EQUAL?  SATCHEL,PRSI \?CCL7
+       CALL2   HELD?,SATCHEL
+       ZERO?   STACK /?CCL12
+       PRINTR  "Put down the satchel first."
+?CCL12:        ZERO?   ITEM-ON-SATCHEL /?CCL16
+       PRINTI  "But"
+       ICALL   ARTICLE,ITEM-ON-SATCHEL,TRUE-VALUE
+       PRINTR  " is already on the satchel."
+?CCL16:        SET     'ITEM-ON-SATCHEL,PRSO
+       MOVE    PRSO,HERE
+       FSET    PRSO,NDESCBIT
+       FSET    PRSO,TRYTAKEBIT
+       PRINTI  "Okay,"
+       ICALL   ARTICLE,PRSO,TRUE-VALUE
+       PRINTR  " is now sitting on the satchel."
+?CCL7: EQUAL?  PRSA,V?EXAMINE \?CCL26
+       PRINTI  "The satchel, which is "
+       FSET?   SATCHEL,OPENBIT \?PRG34
+       PRINTI  "open"
+       JUMP    ?PRG36
+?PRG34:        PRINTI  "closed"
+?PRG36:        PRINTI  ", is fairly bulky."
+       ICALL1  ITEM-ON-SATCHEL-DESCRIPTION
+       CRLF    
+       RTRUE   
+?CCL26:        EQUAL?  PRSA,V?TAKE \FALSE
+       IN?     SATCHEL,FORD \FALSE
+       PRINTI  "Ford says, ""Hey, Arthur, keep "
+       PRINTD  HANDS
+       PRINTR  "s off my satchel!"""
+
+
+       .FUNCT  TOWEL-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       FSET?   TOWEL,TRYTAKEBIT \?CCL3
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL3
+       ZERO?   LYING-DOWN /?CCL3
+       FCLEAR  TOWEL,TRYTAKEBIT
+       MOVE    TOWEL,PROTAGONIST
+       MOVE    FORD,LOCAL-GLOBALS
+       SET     'FORD-GONE,TRUE-VALUE
+       SET     'FOLLOW-FLAG,5
+       CALL    QUEUE,I-FOLLOW,2
+       PUT     STACK,0,1
+       CALL2   INT,I-FORD
+       PUT     STACK,0,0
+       PRINTI  "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 "
+       PRINTD  COUNTRY-LANE
+       PRINTR  "."
+?CCL3: EQUAL?  PRSA,V?MOVE,V?TAKE \?CCL11
+       EQUAL?  PRSO,TOWEL \?CCL11
+       FSET?   TOWEL,SURFACEBIT \?CCL11
+       FCLEAR  TOWEL,TRYTAKEBIT
+       FCLEAR  TOWEL,SURFACEBIT
+       ICALL   ROB,TOWEL,HERE
+       FCLEAR  TOWEL,CONTBIT
+       FCLEAR  TOWEL,OPENBIT
+       FCLEAR  TOWEL,NDESCBIT
+       EQUAL?  PRSA,V?MOVE \FALSE
+       PRINTR  "Okay, it's no longer covering the drain."
+?CCL11:        EQUAL?  PRSA,V?TIE,V?PUT-ON \?CCL21
+       EQUAL?  PRSI,BEAST \?CCL21
+       PRINTR  "The effect is decorative rather than helpful."
+?CCL21:        EQUAL?  PRSA,V?TIE,V?PUT-ON \?CCL27
+       EQUAL?  PRSI,EYES,HEAD \?CCL27
+       FSET?   TOWEL,WORNBIT \?CCL32
+       PRINTR  "It already is."
+?CCL32:        IN?     BEAST,HERE \?PRG39
+       FSET    TOWEL,WORNBIT
+       MOVE    TOWEL,PROTAGONIST
+       CALL    QUEUE,I-BEAST,11
+       PUT     STACK,0,1
+       PRINTI  "The "
+       PRINTD  BEAST
+       PRINTR  " 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."
+?PRG39:        PRINTI  "There's no need for that. It's not like there's a "
+       PRINTD  BEAST
+       PRINTR  " around, or something."
+?CCL27:        FSET?   TOWEL,WORNBIT \?CCL42
+       EQUAL?  PRSA,V?UNTIE,V?REMOVE,V?TAKE-OFF \?CCL42
+       FCLEAR  TOWEL,WORNBIT
+       PRINTI  "You unwrap the towel from your head."
+       FSET?   BEAST,MUNGEDBIT \?CND47
+       CRLF    
+       CRLF    
+       ICALL1  V-LOOK
+       RTRUE   
+?CND47:        ZERO?   BEARINGS-LOST /?PRG59
+       PRINTI  " You see that you have wandered in circles"
+       EQUAL?  HERE,OUTER-LAIR \?PRG57
+       PRINTI  " and ended right beside the "
+       PRINTD  MEMORIAL
+?PRG57:        PRINTC  46
+?PRG59:        PRINTI  " Unfortunately, the Beast has also caught sight of you again. All this fooling around has made it doubly angry and hungry. "
+       ICALL1  BEAST-DEATH
+       RTRUE   
+?CCL42:        EQUAL?  PRSA,V?EXAMINE \?CCL62
+       FSET?   TOWEL,SURFACEBIT \?CCL65
+       ICALL   PERFORM,V?EXAMINE,DRAIN
+       FIRST?  TOWEL /FALSE
+       RTRUE   
+?CCL65:        ZERO?   TOWEL-MUDDY /?PRG72
+       PRINTR  "It is caked with mud."
+?PRG72:        PRINTR  "It's covered with little pink and blue flowers."
+?CCL62:        EQUAL?  PRSA,V?LIE-DOWN \FALSE
+       FSET?   TOWEL,SURFACEBIT \FALSE
+       ICALL   PERFORM,V?STAND-BEFORE,HOOK
+       RTRUE   
+
+
+       .FUNCT  BACK-OF-HOUSE-F,RARG
+       EQUAL?  RARG,M-END \?CCL3
+       CALL2   RUNNING?,I-VOGONS
+       ZERO?   STACK \?CCL3
+       ZERO?   HOUSE-DEMOLISHED /?CCL3
+       ICALL1  I-VOGONS
+       CALL    QUEUE,I-VOGONS,2
+       PUT     STACK,0,1
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "The rear garden is a pleasant place. I"
+       PRINT   NICE-DAY
+       PRINTR  ", and it's a lovely day for a walk. A path leads around the house to the southeast and southwest."
+
+
+       .FUNCT  TREE-PSEUDO
+       EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE
+       PRINTR  "You were never very good at that."
+
+
+       .FUNCT  COUNTRY-LANE-F,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       ZERO?   PROSSER-LYING \?CCL6
+       ZERO?   HOUSE-DEMOLISHED \?CCL6
+       FSET?   HOLD,TOUCHBIT /?CCL6
+       SET     'BULLDOZER-COUNTER,3
+       CALL1   I-BULLDOZER
+       RSTACK  
+?CCL6: EQUAL?  IDENTITY-FLAG,FORD \?CCL11
+       ZERO?   HOUSE-DEMOLISHED /?CCL11
+       CALL    QUEUE,I-DOG,1
+       PUT     STACK,0,1
+       RFALSE  
+?CCL11:        EQUAL?  DRUNK-LEVEL,3 \?CCL15
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?CCL15
+       CALL    QUEUE,I-DOG,1
+       PUT     STACK,0,1
+       RFALSE  
+?CCL15:        FSET?   HOLD,TOUCHBIT \FALSE
+       FSET?   COUNTRY-LANE,NDESCBIT /FALSE
+       LOC     SATCHEL
+       PUT     FORD-TABLE,0,STACK
+       LOC     THUMB
+       PUT     FORD-TABLE,1,STACK
+       LOC     GUIDE
+       PUT     FORD-TABLE,2,STACK
+       LOC     TOWEL
+       PUT     FORD-TABLE,3,STACK
+       LOC     MINERAL-WATER
+       PUT     FORD-TABLE,5,STACK
+       FSET?   THUMB,MUNGEDBIT \?CND22
+       PUT     FORD-TABLE,4,TRUE-VALUE
+       FCLEAR  THUMB,MUNGEDBIT
+?CND22:        FSET    COUNTRY-LANE,NDESCBIT
+       ICALL   ROB,PROTAGONIST,MEMORIAL
+       MOVE    SATCHEL,PROTAGONIST
+       MOVE    THUMB,SATCHEL
+       MOVE    GUIDE,SATCHEL
+       MOVE    TOWEL,SATCHEL
+       MOVE    MINERAL-WATER,SATCHEL
+       MOVE    ARTHUR,FRONT-OF-HOUSE
+       SET     'IDENTITY-FLAG,FORD
+       MOVE    FORD,GLOBAL-OBJECTS
+       MOVE    PEANUTS,PUB
+       FSET    PEANUTS,TRYTAKEBIT
+       FSET    PEANUTS,NDESCBIT
+       SET     'PEANUTS-BOUGHT,FALSE-VALUE
+       SET     'DREAMING,TRUE-VALUE
+       CALL    QUEUE,I-VOGONS,38
+       PUT     STACK,0,1
+       PRINTI  "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"
+       PRINT   BEAM
+       PRINTC  46
+       CRLF    
+       CRLF    
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-END \?CCL27
+       FSET?   COUNTRY-LANE,REVISITBIT \?CCL27
+       SET     'DREAMING,TRUE-VALUE
+       CRLF    
+       PRINTI  "Suddenly, a shadow passes in front of the sun. You look up. The shadow is a "
+       PRINTD  FLEET
+       PRINTI  ". You fumble for "
+       ICALL2  JIGS-UP,STR?74
+       RTRUE   
+?CCL27:        EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "The road runs from "
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?PRG41
+       PRINTI  "your"
+       JUMP    ?PRG43
+?PRG41:        PRINTI  "Arthur's"
+?PRG43:        PRINTR  " home, to the north, toward the village Pub, to the west."
+
+
+       .FUNCT  I-DOG
+       EQUAL?  HERE,WAR-CHAMBER \?CCL3
+       INC     'DOG-COUNTER
+       LESS?   DOG-COUNTER,13 \?CND4
+       EQUAL?  PRSA,V?WAIT /FALSE
+?CND4: CRLF    
+       LESS?   DOG-COUNTER,13 \?CCL10
+       PRINTR  "The fleet continues to hurtle sunwards."
+?CCL10:        ZERO?   DOG-FED /?PRG17
+       SET     'LYING-DOWN,FALSE-VALUE
+       PRINTI  "Your simple act of kindness at a moment of great personal anxiety (you fed the dog, remember?) now brings rich rewards. "
+       PRINT   FLEET-PLUNGES
+       PRINTI  " spots the dog (which appears to them as a gigantic monster) cheerfully tucking into a "
+       PRINTD  SANDWICH
+       PRINTI  ".
+
+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 "
+       PRINTD  SANDWICH
+       PRINTI  " 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 "
+       PRINTD  HEART-OF-GOLD
+       PRINTI  " 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..."
+       CRLF    
+       CRLF    
+       CALL2   GOTO,MAZE
+       RSTACK  
+?PRG17:        PRINT   FLEET-PLUNGES
+       ICALL2  JIGS-UP,STR?75
+       RTRUE   
+?CCL3: EQUAL?  IDENTITY-FLAG,FORD \?CCL20
+       MOVE    DOG,HERE
+       CALL2   INT,I-DOG
+       PUT     STACK,0,0
+       PRINTI  "You run up the lane after Arthur. You pass a"
+       ZERO?   DOG-FED /?PRG28
+       PRINTR  " serene dog. Fate cannot harm him, he has dined today."
+?PRG28:        PRINTR  "n irritable dog who yaps at you."
+?CCL20:        IN?     DOG,HERE /?CCL31
+       IN?     FLEET,HERE /?CCL31
+       EQUAL?  HERE,COUNTRY-LANE \?CCL31
+       MOVE    DOG,HERE
+       CALL    QUEUE,I-DOG,2
+       PUT     STACK,0,1
+       PRINTI  "You see the huge "
+       PRINTD  BULLDOZER
+       PRINTI  " heaving itself among the cloud of brick dust which is all that remains of "
+       PRINTD  HOME
+       PRINTR  ". As you start up the lane, a small dog runs up to you, yapping."
+?CCL31:        ZERO?   DOG-FED \FALSE
+       IN?     DOG,HERE \FALSE
+       FSET?   DOG,TOUCHBIT /FALSE
+       FSET    DOG,TOUCHBIT
+       PRINTR  "The dog carries on yapping for a moment and then gulps uncomfortably."
+
+
+       .FUNCT  DOG-F
+       EQUAL?  PRSA,V?THROW,V?GIVE \?CCL3
+       EQUAL?  PRSO,SANDWICH \?CCL6
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL9
+       MOVE    SANDWICH,HERE
+       PRINTI  "The dog is in a bad mood and tries to bite "
+       PRINTD  HANDS
+       PRINTI  ". The "
+       PRINTD  SANDWICH
+       PRINTR  " lies ignored in the roadside dust."
+?CCL9: FSET?   DOG,TOUCHBIT \?CCL13
+       PRINTI  "The dog, which seems to have a slight case of indigestion, ignores the "
+       PRINTD  SANDWICH
+       PRINTR  "."
+?CCL13:        MOVE    SANDWICH,LOCAL-GLOBALS
+       SET     'DOG-FED,TRUE-VALUE
+       PRINTI  "The dog is deeply moved. With powerful sweeps of its tail it indicates that it regards this "
+       PRINTD  SANDWICH
+       PRINTI  " as one of the great "
+       PRINTD  SANDWICH
+       PRINTI  "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"
+       PRINT   WITH-PASSION
+       CRLF    
+       RTRUE   
+?CCL6: EQUAL?  PRSO,PEANUTS \FALSE
+       PRINTR  "This is a dog, not an elephant."
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL23
+       ZERO?   DOG-FED \?CCL23
+       PRINTR  "The mongrel looks hungry."
+?CCL23:        EQUAL?  PRSA,V?PUSH,V?KICK,V?RUB \FALSE
+       PRINTI  "The dog tries to bite your "
+       EQUAL?  PRSA,V?KICK \?PRG37
+       PRINTI  "foot"
+       JUMP    ?PRG39
+?PRG37:        PRINTI  "hand"
+?PRG39:        PRINTR  "."
+
+
+       .FUNCT  PUB-OBJECT-F
+       EQUAL?  PRSA,V?THROUGH,V?WALK-TO \?CCL3
+       EQUAL?  HERE,PUB \?CCL6
+       PRINT   LOOK-AROUND
+       CRLF    
+       RTRUE   
+?CCL6: EQUAL?  HERE,COUNTRY-LANE \?CCL10
+       CALL2   DO-WALK,P?WEST
+       RSTACK  
+?CCL10:        CALL1   V-WALK-AROUND
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \FALSE
+       EQUAL?  HERE,PUB \?PRG16
+       CALL2   DO-WALK,P?EAST
+       RSTACK  
+?PRG16:        PRINT   LOOK-AROUND
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  PUB-F,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       ZERO?   TOWEL-OFFERED \?CCL3
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL3
+       CALL    QUEUE,I-UNEASY,-1
+       PUT     STACK,0,1
+       RFALSE  
+?CCL3: EQUAL?  RARG,M-LOOK \?CCL8
+       PRINTR  "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."
+?CCL8: EQUAL?  RARG,M-END \FALSE
+       FSET?   BEER,NDESCBIT \FALSE
+       IN?     FORD,HERE \FALSE
+       EQUAL?  IDENTITY-FLAG,FORD /FALSE
+       FCLEAR  BEER,NDESCBIT
+       CALL    QUEUE,I-FORD,2
+       PUT     STACK,0,1
+       SET     'FORD-COUNTER,5
+       CRLF    
+       PRINTI  "Ford buys "
+       PRINTD  BEER
+       PRINTR  " and offers half to you. ""Muscle relaxant..."" he says, impenetrably."
+
+
+       .FUNCT  BAR-F
+       EQUAL?  PRSA,V?LOOK-BEHIND \FALSE
+       ICALL   PERFORM,V?EXAMINE,PUB-SHELF
+       RTRUE   
+
+
+       .FUNCT  PUB-SHELF-F
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       FSET    PUB-SHELF,NDESCBIT
+       PRINTI  "On the shelf behind the bar is the usual array of bottles, glasses and soggy beermats"
+       ZERO?   PEANUTS-BOUGHT \?CND6
+       FSET    PEANUTS,TAKEBIT
+       FSET    PEANUTS,TRYTAKEBIT
+       ZERO?   SANDWICH-BOUGHT /?PRG13
+       PRINTI  ", and"
+       JUMP    ?PRG15
+?PRG13:        PRINTC  44
+?PRG15:        PRINTI  " some packets of peanuts"
+?CND6: ZERO?   SANDWICH-BOUGHT \?PRG21
+       FSET    SANDWICH,TAKEBIT
+       FSET    SANDWICH,TRYTAKEBIT
+       PRINTI  ", and a plate of uninviting "
+       PRINTD  SANDWICH
+       PRINTI  "es"
+?PRG21:        PRINTR  "."
+
+
+       .FUNCT  MUSIC-F
+       EQUAL?  PRSA,V?ENJOY,V?LISTEN \FALSE
+       ICALL   PERFORM,V?LISTEN,JUKEBOX
+       RTRUE   
+
+
+       .FUNCT  JUKEBOX-F
+       EQUAL?  PRSA,V?LISTEN \?CCL3
+       PRINTI  "The song is "
+       RANDOM  100
+       LESS?   25,STACK /?CCL8
+       PRINTR  "a Walker Brothers single, ""The Sun Ain't Gonna Shine Anymore."""
+?CCL8: RANDOM  100
+       LESS?   33,STACK /?CCL12
+       PRINTR  """Get Back"" by the Beatles."
+?CCL12:        RANDOM  100
+       LESS?   50,STACK /?PRG19
+       PRINTR  """Hey Jude"" by the Beatles (Footnote 4). It's a particular favourite, and listening to it calms you down, and cheers you up."
+?PRG19:        PRINTI  """Tie a Yellow Ribbon."""
+       EQUAL?  IDENTITY-FLAG,FORD \?CND21
+       PRINTR  " You can't stand it, and are pleased to think that this is probably the last time it will ever be heard."
+?CND21:        CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?LAMP-OFF \FALSE
+       CALL2   PRIVATE,STR?77
+       RSTACK  
+
+
+       .FUNCT  BARMAN-F
+       EQUAL?  BARMAN,WINNER \?CCL3
+       EQUAL?  PRSA,V?TELL-ABOUT \?CCL6
+       EQUAL?  PRSO,ME \?CCL6
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,BARMAN,PRSI
+       SET     'WINNER,BARMAN
+       RTRUE   
+?CCL6: EQUAL?  PRSA,V?HELLO \?CCL10
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?HELLO,BARMAN
+       SET     'WINNER,BARMAN
+       RTRUE   
+?CCL10:        EQUAL?  PRSA,V?GIVE \?PRG16
+       EQUAL?  PRSO,ME \?PRG16
+       EQUAL?  PRSI,PEANUTS,BEER,SANDWICH \?PRG16
+       ICALL   PERFORM,V?BUY,PRSI
+       RTRUE   
+?PRG16:        PRINTR  "The barman ignores you and keeps polishing the other end of the bar."
+?CCL3: EQUAL?  PRSA,V?ASK-FOR \FALSE
+       EQUAL?  PRSI,PEANUTS,BEER,SANDWICH \FALSE
+       ICALL   PERFORM,V?BUY,PRSI
+       RTRUE   
+
+
+       .FUNCT  BEER-F
+       EQUAL?  PRSA,V?COUNT,V?ENJOY,V?DRINK /?PRD5
+       EQUAL?  PRSA,V?TAKE,V?RUB,V?SMELL \?CCL3
+?PRD5: FSET?   BEER,NDESCBIT \?CCL3
+       PRINTR  "You'd better buy some first."
+?CCL3: EQUAL?  PRSA,V?COUNT \?CCL11
+       PRINTR  "Lots."
+?CCL11:        EQUAL?  PRSA,V?TAKE \?CCL15
+       PRINTR  "Just drink it!"
+?CCL15:        EQUAL?  IDENTITY-FLAG,FORD \?CCL19
+       EQUAL?  PRSA,V?BUY \?CCL22
+       FSET?   BEER,NDESCBIT /?CND23
+       PRINTR  "You already did!"
+?CND23:        FCLEAR  BEER,NDESCBIT
+       IN?     ARTHUR,HERE \?PRG34
+       PRINTI  "You order six pints of bitter -- three for you, three for Arthur. According to "
+       PRINTD  GUIDE
+       PRINTI  " this should"
+       ICALL1  CUSHION
+       CRLF    
+       CRLF    
+       PRINTR  "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."
+?PRG34:        PRINTI  "You buy yourself three pints, which you calculate you will need to"
+       ICALL1  CUSHION
+       PRINTI  " This is a tip you picked up from "
+       PRINTD  GUIDE
+       PRINTR  "."
+?CCL22:        EQUAL?  PRSA,V?ENJOY,V?DRINK \FALSE
+       INC     'DRUNK-LEVEL
+       IN?     ARTHUR,HERE /?CCL42
+       PRINT   DOWN-WELL
+       CRLF    
+       RTRUE   
+?CCL42:        EQUAL?  DRUNK-LEVEL,1 \?CCL46
+       ADD     SCORE,FORD-POINT >SCORE
+       SET     'FORD-POINT,0
+       PRINT   DOWN-WELL
+       PRINTR  " 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."
+?CCL46:        EQUAL?  DRUNK-LEVEL,2 \?PRG53
+       PRINT   DOWN-WELL
+       CALL1   SCENE-THROUGH-WINDOW
+       RSTACK  
+?PRG53:        PRINTR  "You've had enough."
+?CCL19:        EQUAL?  PRSA,V?ENJOY,V?DRINK \?CCL57
+       ADD     SCORE,5 >SCORE
+       INC     'DRUNK-LEVEL
+       EQUAL?  DRUNK-LEVEL,4 \?CCL60
+       PRINTI  "You can hear the muffled noise of your home being demolished, and the taste of the beer sours in your mouth."
+       CRLF    
+       CRLF    
+       ICALL   PERFORM,V?GET-DRUNK,ROOMS
+       RTRUE   
+?CCL60:        EQUAL?  DRUNK-LEVEL,3 \?CCL64
+       CALL    QUEUE,I-FORD,-1
+       PUT     STACK,0,1
+       SET     'HOUSE-DEMOLISHED,TRUE-VALUE
+       SET     'PROSSER-LYING,FALSE-VALUE
+       PRINTR  "There is a distant crash which Ford explains is nothing to worry about, probably just your house being knocked down."
+?CCL64:        EQUAL?  DRUNK-LEVEL,2 \?CCL68
+       PRINTR  "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."
+?CCL68:        EQUAL?  DRUNK-LEVEL,1 \FALSE
+       PRINTR  "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?"""
+?CCL57:        EQUAL?  PRSA,V?BUY \FALSE
+       FSET?   BEER,NDESCBIT \?PRG80
+       ICALL   PERFORM,V?BUY,PEANUTS
+       RTRUE   
+?PRG80:        PRINTD  FORD
+       PRINTR  " has already bought an enormous quantity for you!"
+
+
+       .FUNCT  PEANUTS-F
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL3
+       EQUAL?  PRSA,V?BUY \?CCL3
+       ZERO?   PEANUTS-BOUGHT /?CND6
+       PRINTR  "You did!"
+?CND6: SET     'PEANUTS-BOUGHT,TRUE-VALUE
+       MOVE    PEANUTS,PROTAGONIST
+       FCLEAR  PEANUTS,TRYTAKEBIT
+       FCLEAR  PEANUTS,NDESCBIT
+       PRINTI  "You buy some peanuts, which you'll need to replace protein loss from the"
+       PRINT   BEAM
+       PRINTI  ", a tip you picked up from "
+       PRINTD  GUIDE
+       PRINTR  "."
+?CCL3: EQUAL?  PRSA,V?OPEN \?CCL13
+       PRINTR  "Just eat 'em."
+?CCL13:        EQUAL?  PRSA,V?ENJOY,V?EAT \?CCL17
+       ZERO?   EARTH-DEMOLISHED /?CCL17
+       ZERO?   GROGGY /?CCL17
+       SET     'GROGGY,FALSE-VALUE
+       MOVE    PEANUTS,PUB
+       FSET    PEANUTS,TRYTAKEBIT
+       FSET    PEANUTS,NDESCBIT
+       PRINTI  "You feel stronger as the peanuts replace some of the protein you lost in the"
+       PRINT   BEAM
+       PRINTR  "."
+?CCL17:        EQUAL?  PRSA,V?BUY \?CCL24
+       EQUAL?  HERE,PUB \?CCL24
+       PRINTR  "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."
+?CCL24:        EQUAL?  PRSA,V?EAT,V?TAKE \FALSE
+       FSET?   PEANUTS,TRYTAKEBIT \FALSE
+       EQUAL?  HERE,PUB \FALSE
+       PRINT   HANDS-OFF
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  SANDWICH-F
+       EQUAL?  PRSA,V?BUY \?CCL3
+       ZERO?   SANDWICH-BOUGHT \?CCL3
+       MOVE    SANDWICH,PROTAGONIST
+       FSET    SANDWICH,TAKEBIT
+       FCLEAR  SANDWICH,TRYTAKEBIT
+       FCLEAR  SANDWICH,NDESCBIT
+       SET     'SANDWICH-BOUGHT,TRUE-VALUE
+       PRINTI  "The barman gives you a "
+       PRINTD  SANDWICH
+       PRINTR  ". 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."
+?CCL3: EQUAL?  PRSA,V?BUY \?CCL9
+       PRINTR  "You already did."
+?CCL9: EQUAL?  PRSA,V?ENJOY,V?EAT,V?TAKE \?CCL13
+       FSET?   SANDWICH,TRYTAKEBIT \?CCL13
+       EQUAL?  HERE,PUB \?CCL13
+       PRINT   HANDS-OFF
+       CRLF    
+       RTRUE   
+?CCL13:        EQUAL?  PRSA,V?ENJOY,V?EAT \FALSE
+       MOVE    SANDWICH,LOCAL-GLOBALS
+       SUB     SCORE,30 >SCORE
+       EQUAL?  IDENTITY-FLAG,FORD \?PRG26
+       PRINTI  "You swallow with revulsion, astonished that life forms which have spent 4.6 billion years evolving cannot produce a better "
+       PRINTD  SANDWICH
+       PRINTR  " than this."
+?PRG26:        PRINTR  "It is one of the least rewarding taste experiences you can recall."
+
+
+       .FUNCT  I-VOGONS
+       CALL    QUEUE,I-VOGONS,-1
+       PUT     STACK,0,1
+       INC     'VOGON-COUNTER
+       EQUAL?  VOGON-COUNTER,1 \?CCL3
+       EQUAL?  HERE,PUB \?CND4
+       ICALL1  GO-TO-LANE
+?CND4: MOVE    FLEET,HERE
+       CRLF    
+       EQUAL?  IDENTITY-FLAG,FORD \?PRG11
+       MOVE    ARTHUR,HERE
+       PRINTI  "Right on schedule (according to the news you picked up last night on your Sub-Etha Sens-O-Matic), a huge "
+       PRINTD  FLEET
+       PRINTR  " 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."
+?PRG11:        PRINTI  "With a noise like a cross between Led Zeppelin's farewell concert and the eruption of Krakatoa, a huge "
+       PRINTD  FLEET
+       PRINTI  " flies overhead and announces that the Earth will be demolished to make way for a new hyperspace bypass in ""two of your Earth minutes."""
+       CRLF    
+       IN?     FORD,HERE \?CND13
+       ZERO?   FORD-COUNTER \?CND13
+       MOVE    FORD,LOCAL-GLOBALS
+       CALL2   INT,I-FORD
+       PUT     STACK,0,0
+       SET     'FORD-GONE,TRUE-VALUE
+       MOVE    TOWEL,HERE
+       FCLEAR  TOWEL,TRYTAKEBIT
+       CRLF    
+       PRINTI  "Ford drops the towel and dashes away."
+       CRLF    
+?CND13:        CALL2   HELD?,THING
+       ZERO?   STACK /FALSE
+       MOVE    THING,LOCAL-GLOBALS
+       CRLF    
+       PRINTI  "In all the turmoil, "
+       IN?     THING,GOWN \?PRG29
+       PRINTI  "the "
+       PRINTD  THING
+       PRINTI  " drops out of your pocket and rolls away."
+       JUMP    ?PRG31
+?PRG29:        PRINTI  "you drop the "
+       PRINTD  THING
+       PRINTI  " and it rolls away."
+?PRG31:        PRINTI  " It is the least of your worries. Anyway,"
+       PRINT   GET-RID
+       CRLF    
+       RTRUE   
+?CCL3: EQUAL?  VOGON-COUNTER,2 \?CCL34
+       CRLF    
+       PRINTI  "The vast yellow ships thunder across the sky, spreading waves of terror and panic in their wake. The voice of the "
+       PRINTD  VOGON-CAPTAIN
+       PRINTI  " 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    
+       ZERO?   FORD-GONE \TRUE
+       CRLF    
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL41
+       CALL    HELD?,THUMB,PROTAGONIST
+       ZERO?   STACK /?PRG54
+       IN?     THUMB,PROTAGONIST \?PRG50
+       PRINTI  "The "
+       PRINTD  THUMB
+       PRINTI  " in "
+       PRINTD  HANDS
+       PRINTI  " begins to whine."
+       JUMP    ?PRG52
+?PRG50:        PRINTI  "You remove the "
+       PRINTD  THUMB
+       PRINTI  " from your satchel."
+?PRG52:        PRINTI  " Lights pulsate across its surface. "
+       PRINT   THUMB-FUMBLE
+       MOVE    THUMB,HERE
+       SET     'P-IT-OBJECT,THUMB
+       JUMP    ?PRG56
+?PRG54:        PRINTI  "You wish you were holding your "
+       PRINTD  THUMB
+       PRINTC  46
+?PRG56:        PRINTR  " Arthur is struggling desperately towards you. The end of this planet is now only seconds away."
+?CCL41:        MOVE    THUMB,HERE
+       SET     'P-IT-OBJECT,THUMB
+       PRINTR  "Throughout the noise, Ford is shouting at you. He removes a small black device from his satchel, but accidentally drops it at your feet."
+?CCL34:        EQUAL?  VOGON-COUNTER,3 \?CCL61
+       CRLF    
+       PRINTI  "Fierce gales whip across the land, and thunder bangs continuously through the air in the wake of the giant ships. "
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?CCL66
+       ZERO?   FORD-GONE \?CCL66
+       PRINTI  "Ford fights to reach you, but the wind is too fierce. Further announcements from the "
+       PRINTD  VOGON-CAPTAIN
+       PRINTR  " make it clear that demolition will begin in just a few seconds.
+
+Through the blinding rain, you see lights flickering on the small device."
+?CCL66:        EQUAL?  IDENTITY-FLAG,FORD \?CCL72
+       IN?     THUMB,HERE \?CCL72
+       ZERO?   FLUFF-TO-GOWN /?PRG77
+       FSET    COUNTRY-LANE,REVISITBIT
+?PRG77:        PRINT   DRIVEN-BACK
+       PRINTI  " Fortunately, at this point, Arthur picks up the Thumb, and somehow manages to push the right button"
+       FSET?   THUMB,MUNGEDBIT \?PRG88
+       PRINTI  ". Unfortunately, the"
+       PRINT   THUMB-CLICKS
+       SET     'VOGON-COUNTER,4
+       PRINTC  32
+       ICALL1  I-VOGONS
+       RTRUE   
+?PRG88:        PRINTC  46
+       CRLF    
+       CRLF    
+       ICALL2  JIGS-UP,STR?79
+       RTRUE   
+?CCL72:        CRLF    
+       RTRUE   
+?CCL61:        EQUAL?  VOGON-COUNTER,5 \FALSE
+       PRINTI  "The Earth is destroyed by the "
+       PRINTD  FLEET
+       ZERO?   FLUFF-TO-GOWN /?CND94
+       FSET    COUNTRY-LANE,REVISITBIT
+?CND94:        ICALL2  JIGS-UP,STR?36
+       RTRUE   
+
+
+       .FUNCT  GO-TO-LANE
+       SET     'LYING-DOWN,FALSE-VALUE
+       CRLF    
+       PRINTI  "You hear sounds of panic from the street. You "
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL5
+       IN?     ARTHUR,HERE /?CCL5
+       PRINTI  "leave the Pub and run into Arthur..."
+       CRLF    
+       CRLF    
+       JUMP    ?CND3
+?CCL5: EQUAL?  IDENTITY-FLAG,FORD \?PRG15
+       PRINTI  "and Arthur"
+       JUMP    ?PRG17
+?PRG15:        PRINTI  "and Ford"
+?PRG17:        PRINTI  " rush outside..."
+       CRLF    
+       CRLF    
+?CND3: ICALL2  GOTO,COUNTRY-LANE
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL21
+       MOVE    ARTHUR,COUNTRY-LANE
+       RTRUE   
+?CCL21:        MOVE    FORD,COUNTRY-LANE
+       RTRUE   
+
+
+       .FUNCT  FLEET-F
+       EQUAL?  PRSA,V?ENJOY \?CCL3
+       PRINT   ZEN
+       CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?THROUGH,V?WALK-TO \?CCL7
+       SET     'AWAITING-REPLY,11
+       CALL    QUEUE,I-REPLY,2
+       PUT     STACK,0,1
+       PRINTR  "From here?"
+?CCL7: EQUAL?  PRSA,V?EXAMINE \FALSE
+       EQUAL?  HERE,HOLD,AIRLOCK,CAPTAINS-QUARTERS /FALSE
+       PRINTR  "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."
+
+
+       .FUNCT  LEAVE-EARTH
+       CALL2   INT,I-HOUSEWRECK
+       PUT     STACK,0,0
+       CALL2   INT,I-BULLDOZER
+       PUT     STACK,0,0
+       CALL2   INT,I-PROSSER
+       PUT     STACK,0,0
+       CALL2   INT,I-FORD
+       PUT     STACK,0,0
+       CALL2   INT,I-VOGONS
+       PUT     STACK,0,0
+       SET     'HEADACHE,FALSE-VALUE
+       SET     'BULLDOZER-COUNTER,0
+       SET     'PROSSER-COUNTER,0
+       SET     'PROSSER-LYING,FALSE-VALUE
+       SET     'FORD-COUNTER,0
+       SET     'DRUNK-LEVEL,0
+       SET     'HOUSE-DEMOLISHED,FALSE-VALUE
+       SET     'VOGON-COUNTER,0
+       SET     'EARTH-DEMOLISHED,TRUE-VALUE
+       SET     'IDENTITY-FLAG,ARTHUR
+       MOVE    ARTHUR,GLOBAL-OBJECTS
+       MOVE    DOG,LOCAL-GLOBALS
+       MOVE    FLEET,LOCAL-GLOBALS
+       MOVE    FORD,LOCAL-GLOBALS
+       CALL2   HELD?,SANDWICH
+       ZERO?   STACK \?CND1
+       ZERO?   SANDWICH-BOUGHT /?CND1
+       MOVE    SANDWICH,LOCAL-GLOBALS
+?CND1: FSET    BEER,NDESCBIT
+       FCLEAR  PROSSER,TOUCHBIT
+       FCLEAR  FRONT-OF-HOUSE,NDESCBIT
+       FCLEAR  FRONT-OF-HOUSE,TOUCHBIT
+       FCLEAR  COUNTRY-LANE,TOUCHBIT
+       RTRUE   
+
+
+       .FUNCT  ARTHUR-F
+       EQUAL?  IDENTITY-FLAG,ARTHUR \?CCL3
+       EQUAL?  ARTHUR,PRSO \?CCL6
+       ICALL   PERFORM,PRSA,ME,PRSI
+       RTRUE   
+?CCL6: ICALL   PERFORM,PRSA,PRSO,ME
+       RTRUE   
+?CCL3: EQUAL?  ARTHUR,WINNER \?CCL8
+       IN?     FLEET,HERE \?CCL11
+       PRINT   ABOVE-NOISE
+       CRLF    
+       JUMP    ?CND9
+?CCL11:        EQUAL?  PRSA,V?FOLLOW \?CCL15
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL15
+       EQUAL?  PRSO,ME \?CCL15
+       ZERO?   PROSSER-LYING /?CCL21
+       PRINTI  "Arthur seems willing to do so."
+       CRLF    
+       JUMP    ?CND9
+?CCL21:        ICALL2  BUT-THAT-MAN,STR?81
+       CRLF    
+       JUMP    ?CND9
+?CCL15:        EQUAL?  PRSA,V?DRINK \?PRG33
+       EQUAL?  PRSO,BEER \?PRG33
+       FSET?   BEER,NDESCBIT \?PRG31
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?DRINK,BEER
+       SET     'WINNER,ARTHUR
+       RTRUE   
+?PRG31:        PRINTI  "Arthur seems to be waiting to follow your lead."
+       CRLF    
+       JUMP    ?CND9
+?PRG33:        PRINTI  "Arthur looks too confused to respond."
+       CRLF    
+?CND9: CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL8: EQUAL?  PRSA,V?ASK-FOR,V?TELL,V?HELLO /?PRD38
+       EQUAL?  PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?CCL36
+?PRD38:        EQUAL?  IDENTITY-FLAG,TRILLIAN \?CCL36
+       EQUAL?  PRSO,ARTHUR \?CCL36
+       ZERO?   FLUFF-REMOVED /?PRG45
+       FSET    ARTHUR,RLANDBIT
+       ICALL1  I-ARTHUR
+       JUMP    ?CND42
+?PRG45:        PRINTI  "You approach Arthur. He seems to find your tone a little cool, smiles unhappily, and wanders to the other end of the room."
+       CRLF    
+?CND42:        CALL    QUEUE,I-ARTHUR,2
+       PUT     STACK,0,1
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL36:        EQUAL?  PRSA,V?ASK-FOR,V?ASK-ABOUT,V?TELL-ABOUT \?CCL48
+       EQUAL?  PRSO,ARTHUR \?CCL48
+       EQUAL?  IDENTITY-FLAG,TRILLIAN \?CCL48
+       ICALL   PERFORM,V?HELLO,ARTHUR
+       RTRUE   
+?CCL48:        EQUAL?  PRSA,V?CARVE \?CCL53
+       EQUAL?  PRSI,MEMORIAL \?CCL53
+       ICALL   PERFORM,V?CARVE,YOUR-NAME,MEMORIAL
+       RTRUE   
+?CCL53:        EQUAL?  PRSA,V?GIVE \?CCL57
+       EQUAL?  PRSO,TOWEL \?CCL57
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL57
+       ZERO?   TOWEL-OFFERED \?CCL57
+       SET     'TOWEL-OFFERED,TRUE-VALUE
+       PRINTI  "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 "
+       PRINTD  BULLDOZER
+       PRINTI  " 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?"
+       CALL1   IDIOT?
+       ZERO?   STACK /?PRG69
+       PRINTI  "Thank you. An idiot is exactly what you feel like."
+       JUMP    ?PRG71
+?PRG69:        PRINTI  "No, actually, ""idiot"" was the word I was looking for."
+?PRG71:        CRLF    
+       CRLF    
+       PRINTI  "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."
+       CRLF    
+       RETURN  2
+?CCL57:        EQUAL?  PRSO,SANDWICH \?CCL76
+       EQUAL?  PRSA,V?GIVE \?CCL76
+       MOVE    SANDWICH,ARTHUR
+       PRINTR  "Arthur takes it, sniffs it suspiciously, and wisely decides that it's safer in his pocket than in his stomach."
+?CCL76:        EQUAL?  PRSA,V?GIVE \?CCL82
+       EQUAL?  PRSO,SATCHEL-FLUFF \?CCL82
+       ZERO?   HOUSE-DEMOLISHED /?PRG90
+       MOVE    SATCHEL-FLUFF,LOCAL-GLOBALS
+       SET     'FLUFF-TO-GOWN,TRUE-VALUE
+       PRINTR  "Arthur hiccups, takes the fluff, and sticks it in his pocket."
+?PRG90:        PRINTR  "Arthur blinks several times, but doesn't take the fluff. Perhaps if he had a few drinks in him..."
+?CCL82:        EQUAL?  PRSA,V?EXAMINE \?CCL93
+       EQUAL?  IDENTITY-FLAG,TRILLIAN \?CCL93
+       PRINTI  "Arthur seems nice and well meaning, but also terribly shy."
+       ZERO?   FLUFF-REMOVED \?CND98
+       MOVE    JACKET-FLUFF,HERE
+       CALL    QUEUE,I-ARTHUR,-1
+       PUT     STACK,0,1
+       PRINTI  " He has tried to start a "
+       PRINTD  CONVERSATION
+       PRINTR  " with you several times, but still hasn't gotten past ""Hello."" He has an enormous, unsightly ball of fluff on his jacket."
+?CND98:        CRLF    
+       RTRUE   
+?CCL93:        EQUAL?  PRSA,V?FOLLOW \?CCL103
+       EQUAL?  FOLLOW-FLAG,4 \?CCL103
+       CALL2   DO-WALK,P?EAST
+       RSTACK  
+?CCL103:       EQUAL?  PRSA,V?PICK-UP \?CCL107
+       EQUAL?  IDENTITY-FLAG,TRILLIAN \?CCL107
+       ICALL   PERFORM,V?PICK-UP,ZAPHOD
+       RTRUE   
+?CCL107:       EQUAL?  PRSA,V?LISTEN \FALSE
+       EQUAL?  IDENTITY-FLAG,TRILLIAN \FALSE
+       ZERO?   FLUFF-REMOVED /FALSE
+       PRINTR  "Unfortunately, you seem to have no choice."
+
+
+       .FUNCT  IDIOT?
+       CRLF    
+       CRLF    
+       PRINTC  62
+       PUTB    P-INBUF,1,0
+       READ    P-INBUF,P-LEXV
+       GET     P-LEXV,1
+       EQUAL?  STACK,W?IDIOT /TRUE
+       RFALSE  
+
+
+       .FUNCT  I-UNEASY
+       INC     'UNEASY-COUNTER
+       EQUAL?  HERE,PUB /?CND1
+       CALL2   INT,I-UNEASY
+       PUT     STACK,0,0
+       RFALSE  
+?CND1: CRLF    
+       EQUAL?  UNEASY-COUNTER,1 \?CCL5
+       PRINTR  "You feel uneasy about something."
+?CCL5: EQUAL?  UNEASY-COUNTER,2,3,4 \?PRG12
+       PRINTR  "You still feel uneasy."
+?PRG12:        PRINTI  "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"
+       CRLF    
+       CRLF    
+       CRLF    
+       QUIT    
+       RTRUE   
+
+
+       .FUNCT  I-ARTHUR
+       CALL    QUEUE,I-ARTHUR,-1
+       PUT     STACK,0,1
+       EQUAL?  IDENTITY-FLAG,TRILLIAN \?CCL3
+       ZERO?   FLUFF-REMOVED /?CCL6
+       FSET?   ARTHUR,RLANDBIT /?CND7
+       CRLF    
+?CND7: FCLEAR  ARTHUR,RLANDBIT
+       IN?     ARTHUR,HERE /?PRG14
+       MOVE    ARTHUR,HERE
+       PRINTR  "Arthur follows you like an eager puppy."
+?PRG14:        PRINTI  "Arthur tries, unsuccessfully, to interest you by talking about "
+       CALL2   PICK-ONE,BORES
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL6: RANDOM  100
+       LESS?   20,STACK /FALSE
+       MOVE    ARTHUR,HERE
+       MOVE    JACKET-FLUFF,HERE
+       CRLF    
+       PRINTR  "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."
+?CCL3: IN?     ARTHUR,HERE /FALSE
+       MOVE    ARTHUR,HERE
+       PRINTR  "Arthur follows you."
+
+
+       .FUNCT  SCENE-THROUGH-WINDOW
+       MOVE    ARTHUR,FRONT-OF-HOUSE
+       CALL2   INT,I-ARTHUR
+       PUT     STACK,0,0
+       SET     'HOUSE-DEMOLISHED,TRUE-VALUE
+       SET     'PROSSER-LYING,FALSE-VALUE
+       SET     'FOLLOW-FLAG,4
+       CALL    QUEUE,I-FOLLOW,2
+       PUT     STACK,0,1
+       PRINTI  " 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, "
+       ZERO?   DOG-FED \?CTR4
+       IN?     SANDWICH,ARTHUR \?PRG10
+?CTR4: SET     'DOG-FED,TRUE-VALUE
+       PRINTI  "and he throws it a "
+       PRINTD  SANDWICH
+       PRINTI  ". The dog devours the sandwich"
+       PRINT   WITH-PASSION
+       CRLF    
+       RTRUE   
+?PRG10:        PRINTR  "but he ignores it. The dog gulps uncomfortably."
+
+       .ENDI
diff --git a/earth.zil b/earth.zil
new file mode 100644 (file)
index 0000000..dd9ac38
--- /dev/null
+++ b/earth.zil
@@ -0,0 +1,2491 @@
+"EARTH for
+                 THE HITCHHIKER'S GUIDE TO THE GALAXY
+       (c) Copyright 1984 Infocom, Inc.  All Rights Reserved."
+
+<OBJECT HOME
+       (LOC 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
+       (LOC 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
+       (LOC 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
+       (LOC GLOBAL-OBJECTS)
+       (DESC "splitting headache")
+       (SYNONYM HEADACHE HANGOVER THROBBER)
+       (ADJECTIVE SPLITTING BIG BLINDING)
+       (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
+      (LOC 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 WATER)
+      (ACTION BEDROOM-F)>
+
+<OBJECT BEDROOM-PSEUDO
+      (LOC BEDROOM)
+      (SYNONYM BEDROOM)
+      (ADJECTIVE SMALL)
+      (DESC "bedroom")
+      (FLAGS NDESCBIT)
+      (ACTION GLOBAL-ROOM-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
+       (LOC BEDROOM)
+       (DESC "telephone")
+       (SYNONYM PHONE TELEPHONE RECEIVER)
+       (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." ,DIALING-TONE>
+                      <COND (<FSET? ,TOOTHBRUSH ,TOUCHBIT>
+                             <TWO-TREES>)>
+                      <CRLF>)>)
+              (<VERB? REPLY>
+               <TELL "It isn't ringing." CR>)>>
+
+<OBJECT BEDROOM-DOOR
+       (LOC LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (FLAGS DOORBIT OPENBIT NDESCBIT)>
+
+<OBJECT GLOBAL-BED
+       (LOC 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
+       (LOC 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 OHERE <>>
+               <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
+       (LOC LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
+       (DESC "it")
+       (SYNONYM BOOK COIN HANDKERCH COINS)
+       (ADJECTIVE SOILED FOREIGN)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<OBJECT CURTAINS
+       (LOC BEDROOM)
+       (DESC "your curtains")
+       (SYNONYM CURTAIN CURTAINS 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
+       (LOC BEDROOM)
+       (DESC "your gown")
+       (LDESC "Your gown is here.")
+       (SYNONYM GOWN POCKET ROBE LOOP)
+       (ADJECTIVE MY YOUR DRESSING TATTY FADED BATTERED)
+        (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
+       (LOC GLOBAL-OBJECTS)
+       (DESC "sleeve")
+       (SYNONYM SLEEVE SLEEVES)
+       (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
+       (LOC 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 200)
+       (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>)>
+        <FCLEAR ,THING ,NDESCBIT>
+        <FCLEAR ,THING ,INVISIBLE>
+        <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
+       (LOC GOWN)
+       (DESC "pocket fluff")
+       (SYNONYM FLUFF LINT)
+       (ADJECTIVE POCKET)
+       (FLAGS TAKEBIT NARTICLEBIT)
+       (SIZE 1)
+       (GENERIC POCKET-FLUFF)>
+
+<OBJECT TABLET
+       (LOC GOWN)
+       (DESC "buffered analgesic")
+       (SYNONYM ANALGESIC TABLET ASPIRIN PILL)
+       (ADJECTIVE LARGE BUFFERED)
+       (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
+       (LOC BEDROOM)
+       (DESC "it")
+       (SYNONYM BASIN WASHBASIN SINK)
+       (ADJECTIVE WASH)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<OBJECT BEDROOM-FURNISHINGS
+       (LOC BEDROOM)
+       (DESC "it")
+       (SYNONYM CARPET WALLPAPER PAPER CHAIR)
+       (ADJECTIVE WALL FADED OLD)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<ROOM FRONT-PORCH
+      (LOC ROOMS)
+      (SYNONYM BEAM BEAMS)
+      (ADJECTIVE MATTER TRANSFERE)
+      (DESC "Front Porch")
+      (LDESC
+"This is the enclosed front porch of your home. Your front garden lies to
+the south, and you can reenter your home to the north.")
+      (UP TO BEDROOM)
+      (NORTH TO BEDROOM)
+      (SOUTH PER CLOTHES-EXIT-F)
+      (OUT PER CLOTHES-EXIT-F)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL HOUSE HOME STAIRS THIRD-PLANET BEDROOM-DOOR)>
+
+<OBJECT DOORMAT
+      (LOC FRONT-PORCH)
+      (SYNONYM DOORMAT MAT)
+      (ADJECTIVE DOOR)
+      (DESC "doormat")
+      (FLAGS NDESCBIT)
+      (ACTION UNIMPORTANT-THING-F)>
+<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
+       (LOC FRONT-PORCH)
+       (DESC "loose pile of junk mail")
+       (FDESC "On the doormat is a pile of junk mail.")
+       (SYNONYM ORDER MAIL PILE LETTER LETTERS)
+       (ADJECTIVE DEMOLISHI JUNK MY OFFICIAL 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
+      (LOC ROOMS)
+      (SYNONYM WOONBEAM)
+      (ADJECTIVE GALAXIA)
+      (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 TREE)
+      (ACTION FRONT-OF-HOUSE-F)>
+
+<OBJECT TREE
+      (LOC LOCAL-GLOBALS)
+      (SYNONYM TREE TREES)
+      (DESC "tree")
+      (ACTION TREE-PSEUDO)>
+
+<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>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <EQUAL? ,IDENTITY-FLAG ,FORD>
+                    <FSET? ,ARTHUR ,NDESCBIT>>
+               <FCLEAR ,ARTHUR ,NDESCBIT>
+               <RFALSE>)>>
+
+<OBJECT ROSES
+       (LOC FRONT-OF-HOUSE)
+       (DESC "it")
+       (SYNONYM ROSE ROSES ROSEBED 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 CR
+"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 ">">
+                <PUTB ,P-INBUF 1 0>
+                <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
+       (LOC FRONT-OF-HOUSE)
+       (DESC "bulldozer driver")
+       (SYNONYM DRIVER)
+       (ADJECTIVE BULLDOZER 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
+       (LOC LOCAL-GLOBALS)
+       (DESC "bulldozer")
+       (SYNONYM BULLDOZER 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>
+                      <SETG OHERE <>>
+                      <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
+       (LOC FRONT-OF-HOUSE)
+       (DESC "Mr. Prosser")
+       (DESCFCN PROSSER-DESCFCN)
+       (SYNONYM PROSSER FOREMAN CREW)
+       (ADJECTIVE WRECKING 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
+       (LOC PROSSER)
+       (DESC "digital watch")
+       (SYNONYM WATCH WATCHES)
+       (ADJECTIVE DIGITAL)
+       (FLAGS NDESCBIT TRYTAKEBIT)
+       (ACTION DIGITAL-WATCH-F)>
+
+<ROUTINE DIGITAL-WATCH-F ()
+        <COND (<VERB? TAKE READ>
+               <PRIVATE "Prosser">)>>
+
+<OBJECT TIME
+       (LOC GLOBAL-OBJECTS)
+       (DESC "time")
+       (SYNONYM TIME)>
+
+<OBJECT FORD
+       (LOC LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "Ford Prefect")
+       (DESCFCN FORD-DESCFCN)
+       (SYNONYM FORD PREFECT)
+       (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 CR
+"Ford, urging you to follow, hurries toward the country lane." CR>)
+                     (<EQUAL? ,HERE ,COUNTRY-LANE>
+                      <TELL CR "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
+       (LOC FORD)
+       (DESC "satchel")
+       (DESCFCN SATCHEL-DESCFCN)
+       (SYNONYM SATCHEL)
+       (ADJECTIVE BATTERED LEATHER 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
+       (LOC SATCHEL)
+       (DESC "satchel fluff")
+       (SYNONYM FLUFF LINT)
+       (ADJECTIVE SATCHEL)
+       (FLAGS TAKEBIT NARTICLEBIT)
+       (SIZE 1)
+       (GENERIC POCKET-FLUFF)>
+
+<GLOBAL FLUFF-TO-GOWN <>>
+
+<GLOBAL TOWEL-MUDDY <>>
+
+<GLOBAL TOWEL-OFFERED <>>
+
+<OBJECT TOWEL
+       (LOC 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
+      (LOC ROOMS)
+      (SYNONYM LIST QUESTION QUESTIONS)
+      (ADJECTIVE GREAT UNANSWERE)
+      (DESC "Back of House")
+      (SE TO FRONT-OF-HOUSE)
+      (SW TO FRONT-OF-HOUSE)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL HOUSE HOME THIRD-PLANET RUBBLE TREE)
+      (ACTION BACK-OF-HOUSE-F)>
+
+<OBJECT BIRDS
+      (LOC BACK-OF-HOUSE)
+      (SYNONYM BIRD BIRDS)
+      (DESC "bird")
+      (FLAGS NDESCBIT)
+      (ACTION UNIMPORTANT-THING-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
+      (LOC 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 TREE)
+      (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 CR
+"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
+       (LOC LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "dog")
+       (SYNONYM DOG MONGREL)
+       (ADJECTIVE SMALL SERENE IRRITABLE)
+        (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
+       (LOC 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
+      (LOC ROOMS)
+      (SYNONYM ALCOHOL)
+      (DESC "Pub")
+      (EAST TO COUNTRY-LANE)
+      (OUT TO COUNTRY-LANE)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL PUB-OBJECT WINDOW THIRD-PLANET PUB-FURNISHINGS PEOPLE)
+      (ACTION PUB-F)>
+
+<OBJECT PEOPLE
+      (LOC LOCAL-GLOBALS)
+      (SYNONYM PEOPLE)
+      (DESC "people")
+      (ACTION PEOPLE-PSEUDO)>
+
+<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
+       (LOC PUB)
+       (DESC "bar")
+       (SYNONYM BAR COUNTER)
+       (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
+       (LOC 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 SHELVES)
+       (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
+       (LOC 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
+       (LOC PUB)
+       (DESC "jukebox")
+       (SYNONYM JUKEBOX 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
+       (LOC LOCAL-GLOBALS)
+       (DESC "it")
+       (SYNONYM BEERMAT BEERMATS GLASS GLASSES BOTTLE BOTTLES)
+       (ADJECTIVE USUAL SOGGY)
+       (FLAGS NDESCBIT NARTICLEBIT)
+       (GENERIC MINERAL-WATER)
+       (ACTION UNIMPORTANT-THING-F)>
+
+<OBJECT BARMAN
+       (LOC PUB)
+       (DESC "barman")
+       (LDESC "There is a barman serving at the bar.")
+       (SYNONYM BARMAN BARTENDER)
+       (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
+       (LOC PUB)
+       (DESC "lots of beer")
+       (SYNONYM LOTS BITTER BITTERS 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
+       (LOC PUB)
+       (DESC "peanuts")
+       (SYNONYM PACKET PEANUT PEANUTS 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
+       (LOC PUB)
+       (DESC "cheese sandwich")
+       (SYNONYM PLATE SANDWICH)
+       (ADJECTIVE CHEESE UNINVITIN)
+       (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 0>>
+
+<OBJECT FLEET
+       (LOC LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
+       (DESC "fleet of Vogon Constructor ships")
+       (SYNONYM FLEET SHIP SHIPS SPACESHIP)
+       (ADJECTIVE VOGON CONSTRUCT 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
+       (LOC 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
+                      <FSET ,ARTHUR ,RLANDBIT> ;"prevent leading CR"
+                      <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 ">">
+        <PUTB ,P-INBUF 1 0>
+        <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
+                      <COND (<NOT <FSET? ,ARTHUR ,RLANDBIT>>
+                             <CRLF>)>
+                      <FCLEAR ,ARTHUR ,RLANDBIT>
+                      <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.zabstr b/globals.zabstr
new file mode 100644 (file)
index 0000000..c85393e
--- /dev/null
@@ -0,0 +1,338 @@
+
+<CONSTANT S-TEXT 0> 
+<CONSTANT S-WINDOW 1> 
+<CONSTANT H-NORMAL 0> 
+<CONSTANT H-INVERSE 1> 
+<CONSTANT H-BOLD 2> 
+<CONSTANT H-ITALIC 4> 
+<CONSTANT D-SCREEN-ON 1> 
+<CONSTANT D-SCREEN-OFF -1> 
+<CONSTANT D-PRINTER-ON 2> 
+<CONSTANT D-PRINTER-OFF -2> 
+<CONSTANT D-TABLE-ON 3> 
+<CONSTANT D-TABLE-OFF -3> 
+<CONSTANT D-RECORD-ON 4> 
+<CONSTANT D-RECORD-OFF -4> 
+<GLOBAL HOST:NUMBER 0> 
+<GLOBAL WIDTH:NUMBER 0> 
+<DEFINE-ROUTINE INIT-STATUS-LINE> 
+<CONSTANT SL-TABLE:TABLE <ITABLE NONE 80>> 
+<GLOBAL OHERE:OBJECT <>> 
+<GLOBAL OLD-LEN:NUMBER 0> 
+<DEFINE-ROUTINE UPDATE-STATUS-LINE> 
+<DEFINE-ROUTINE PRINT-SPACES> 
+<DEFINE-ROUTINE SAY-HERE> 
+<GLOBAL LYING-DOWN <>> 
+<GLOBAL HERE <>> 
+<GLOBAL LIT <>> 
+<GLOBAL MOVES 0> 
+<GLOBAL SCORE 0> 
+<CONSTANT INDENTS <PTABLE "" "  " "    " "      " "        " "          ">> 
+<OBJECT GLOBAL-OBJECTS (FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT
+REVISITBIT SEARCHBIT TRANSBIT WEARBIT MUNGEDBIT ONBIT RLANDBIT WORNBIT)> 
+<OBJECT LOCAL-GLOBALS (LOC GLOBAL-OBJECTS) (SYNONYM ZZMGCK) (DESCFCN 0) (GLOBAL
+GLOBAL-OBJECTS) (FDESC "F") (LDESC "F") (SIZE 0) (TEXT "") (CAPACITY 0)> 
+<OBJECT FOOBAR (LOC LOCAL-GLOBALS) (SYNONYM FOOBAR) (ACTION V-WALK)> 
+<OBJECT ROOMS (IN TO ROOMS)> 
+<OBJECT IT (LOC GLOBAL-OBJECTS) (SYNONYM IT THEM HER HIM) (DESC "it") (FLAGS
+VOWELBIT NARTICLEBIT NDESCBIT TOUCHBIT)> 
+<OBJECT INTNUM (LOC GLOBAL-OBJECTS) (DESC "number") (SYNONYM INTNUM) (ADJECTIVE
+NUMBER)> 
+<OBJECT NOT-HERE-OBJECT (DESC "it") (FLAGS NARTICLEBIT) (ACTION
+NOT-HERE-OBJECT-F)> 
+<DEFINE-ROUTINE NOT-HERE-OBJECT-F> 
+<DEFINE-ROUTINE FIND-NOT-HERE> 
+<DEFINE-ROUTINE NOT-HERE-PRINT> 
+<OBJECT LIGHT (LOC GLOBAL-OBJECTS) (DESC "light") (SYNONYM LIGHT LIGHTS LAMP) (
+FLAGS LIGHTBIT) (ACTION LIGHT-F)> 
+<DEFINE-ROUTINE LIGHT-F> 
+<OBJECT GLOBAL-SLEEP (LOC GLOBAL-OBJECTS) (DESC "sleep") (SYNONYM SLEEP NAP
+SNOOZE) (FLAGS NARTICLEBIT) (ACTION GLOBAL-SLEEP-F)> 
+<DEFINE-ROUTINE GLOBAL-SLEEP-F> 
+<OBJECT SPEECH (LOC GLOBAL-OBJECTS) (DESC "speech") (SYNONYM SPEECH) (ACTION
+SPEECH-F)> 
+<DEFINE-ROUTINE SPEECH-F> 
+<OBJECT GROUND (LOC GLOBAL-OBJECTS) (SYNONYM FLOOR GROUND MUD) (DESC "ground")
+(ACTION GROUND-F)> 
+<DEFINE-ROUTINE GROUND-F> 
+<OBJECT WALLS (LOC GLOBAL-OBJECTS) (FLAGS NDESCBIT TOUCHBIT) (DESC "wall") (
+SYNONYM WALL WALLS) (ACTION WALLS-F)> 
+<DEFINE-ROUTINE WALLS-F> 
+<OBJECT CEILING (LOC GLOBAL-OBJECTS) (FLAGS NDESCBIT TOUCHBIT) (DESC "ceiling")
+(SYNONYM CEILING ROOF) (ACTION CEILING-F)> 
+<DEFINE-ROUTINE CEILING-F> 
+<OBJECT WINDOW (LOC LOCAL-GLOBALS) (DESC "window") (SYNONYM WINDOW) (FLAGS
+TRANSBIT) (ACTION WINDOW-F)> 
+<DEFINE-ROUTINE WINDOW-F> 
+<OBJECT STAIRS (LOC LOCAL-GLOBALS) (DESC "stairs") (SYNONYM STAIR STAIRS
+STAIRWAY GANGWAY) (FLAGS NARTICLEBIT NDESCBIT) (ACTION STAIRS-F)> 
+<DEFINE-ROUTINE STAIRS-F> 
+<OBJECT AIR (LOC GLOBAL-OBJECTS) (DESC "air") (SYNONYM AIR) (FLAGS VOWELBIT)> 
+<OBJECT SKY (LOC GLOBAL-OBJECTS) (DESC "sky") (SYNONYM SKY) (ACTION SKY-F)> 
+<DEFINE-ROUTINE SKY-F> 
+<OBJECT STAR (LOC GLOBAL-OBJECTS) (DESC "sun") (SYNONYM STAR SUN SYSTEM SOL) (
+ADJECTIVE APPROACHI STAR SOLAR SMALL UNREGARDE YELLOW ORANGE) (FLAGS NDESCBIT)
+(ACTION STAR-F)> 
+<DEFINE-ROUTINE STAR-F> 
+<OBJECT HANDS (LOC GLOBAL-OBJECTS) (SYNONYM HANDS HAND) (ADJECTIVE BARE MY YOUR
+) (DESC "your hand") (FLAGS NDESCBIT TOUCHBIT NARTICLEBIT) (ACTION HANDS-F)> 
+<DEFINE-ROUTINE HANDS-F> 
+<OBJECT TEETH (LOC GLOBAL-OBJECTS) (DESC "your teeth") (SYNONYM TEETH TOOTH) (
+ADJECTIVE YOUR MY) (FLAGS NARTICLEBIT)> 
+<OBJECT HEAD (LOC GLOBAL-OBJECTS) (DESC "your head") (SYNONYM HEAD FACE) (
+ADJECTIVE YOUR MY) (FLAGS NARTICLEBIT)> 
+<OBJECT EYES (LOC GLOBAL-OBJECTS) (DESC "your eyes") (SYNONYM EYE EYES) (
+ADJECTIVE YOUR MY) (FLAGS NARTICLEBIT) (ACTION EYES-F)> 
+<DEFINE-ROUTINE EYES-F> 
+<OBJECT EARS (LOC GLOBAL-OBJECTS) (DESC "your ears") (SYNONYM EAR EARS) (
+ADJECTIVE YOUR MY) (FLAGS NARTICLEBIT)> 
+<OBJECT PROTAGONIST (SYNONYM PROTAGONI) (DESC "it") (FLAGS NDESCBIT INVISIBLE)
+(ACTION PROTAGONIST-F)> 
+<DEFINE-ROUTINE PROTAGONIST-F> 
+<OBJECT ME (LOC GLOBAL-OBJECTS) (SYNONYM I ME MYSELF SELF) (DESC "yourself") (
+FLAGS ACTORBIT TOUCHBIT NARTICLEBIT) (ACTION ME-F)> 
+<DEFINE-ROUTINE ME-F> 
+<OBJECT GLOBAL-ROOM (LOC GLOBAL-OBJECTS) (DESC "room") (SYNONYM ROOM CHAMBER
+PLACE HALL) (ADJECTIVE AREA) (ACTION GLOBAL-ROOM-F)> 
+<DEFINE-ROUTINE GLOBAL-ROOM-F> 
+<OBJECT OBJECT-OF-GAME (LOC GLOBAL-OBJECTS) (DESC "object of the game") (
+SYNONYM OBJECT GAME GOAL) (FLAGS VOWELBIT) (ACTION OBJECT-OF-GAME-F)> 
+<DEFINE-ROUTINE OBJECT-OF-GAME-F> 
+<OBJECT CONTROLS (LOC LOCAL-GLOBALS) (DESC "the controls") (SYNONYM CONTROLS
+PANEL CONSOLE) (ADJECTIVE CONTROL) (FLAGS NARTICLEBIT) (ACTION CONTROLS-F)> 
+<DEFINE-ROUTINE CONTROLS-F> 
+<OBJECT CONVERSATION (LOC LOCAL-GLOBALS) (DESC "conversation") (SYNONYM
+CONVERSAT) (FLAGS DARKBIT INVISIBLE) (ACTION CONVERSATION-F)> 
+<DEFINE-ROUTINE CONVERSATION-F> 
+<OBJECT GUARDS (LOC LOCAL-GLOBALS) (DESC "one of the guards") (SYNONYM ONE
+GUARD GUARDS) (ADJECTIVE VOGON) (FLAGS VOWELBIT NARTICLEBIT NDESCBIT ACTORBIT
+CONTBIT SEARCHBIT OPENBIT) (ACTION GUARDS-F)> 
+<DEFINE-ROUTINE GUARDS-F> 
+<DEFINE-ROUTINE WEAPON-PSEUDO> 
+<OBJECT FRUSTATION (LOC GLOBAL-OBJECTS) (DESC "problem") (SYNONYM FRUSTRATI
+PROBLEM PUZZLE) (ACTION FRUSTRATION-F)> 
+<DEFINE-ROUTINE FRUSTRATION-F> 
+<DEFINE-ROUTINE UNIMPORTANT-THING-F> 
+<DEFINE-ROUTINE DONT-F> 
+<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 (LOC ROOMS) (SYNONYM SUNGLASSE GLASSES JANTA) (ADJECTIVE JOO JANTA
+PERIL SENSITIVE) (DESC "Dark") (FLAGS RLANDBIT ONBIT) (ACTION DARK-F)> 
+<DEFINE-ROUTINE DARK-F> 
+<OBJECT DARK-OBJECT (LOC GLOBAL-OBJECTS) (DESC "darkness") (SYNONYM DARK
+DARKNESS NOTHING) (FLAGS NDESCBIT NARTICLEBIT)> 
+<OBJECT SHADOW (LOC LOCAL-GLOBALS) (DESC "shadow") (SYNONYM SHADOW) (FLAGS
+NDESCBIT)> 
+<OBJECT LIQUID (LOC LOCAL-GLOBALS) (DESC "liquid") (SYNONYM LIQUID) (ADJECTIVE
+HOT COLD WARM WET SQUISHY) (FLAGS NDESCBIT DRINKBIT)> 
+<OBJECT PAINFUL-LIGHT (LOC LOCAL-GLOBALS) (DESC "light") (SYNONYM LIGHT) (
+ADJECTIVE PAINFUL BRIGHT) (FLAGS NDESCBIT)> 
+<OBJECT STAR-DRIVE (LOC LOCAL-GLOBALS) (DESC "star drive") (SYNONYM DRIVE HUM)
+(ADJECTIVE STAR DEEP DISTANT) (FLAGS NDESCBIT)> 
+<DEFINE-ROUTINE DARK-FUNCTION> 
+<CONSTANT DARK-EXIT-TABLE <PTABLE HOLD COUNTRY-LANE LIVING-ROOM ENTRY-BAY LAIR
+SPEEDBOAT INSIDE-WHALE WAR-CHAMBER>> 
+<DEFINE-ROUTINE LEAVE-DARK> 
+<DEFINE-ROUTINE MISSING?> 
+<DEFINE-ROUTINE DARK-ONE> 
+<DEFINE-ROUTINE DARK-TWO> 
+<DEFINE-ROUTINE DARK-THREE> 
+<DEFINE-ROUTINE DARK-FOUR> 
+<DEFINE-ROUTINE BEAST-GUARD-FORD> 
+<DEFINE-ROUTINE I-BRAIN-DEATH> 
+<OBJECT TOOTHBRUSH (LOC BEDROOM) (DESC "toothbrush") (SYNONYM TOOTHBRUS BRUSH
+TOOL TOOLS) (ADJECTIVE TOOTH MY PROPER) (FLAGS TAKEBIT TRYTAKEBIT TOOLBIT) (
+SIZE 3) (GENERIC TWEEZERS) (ACTION TOOTHBRUSH-F)> 
+<DEFINE-ROUTINE TOOTHBRUSH-F> 
+<OBJECT SCREWDRIVER (LOC BEDROOM) (DESC "flathead screwdriver") (SYNONYM
+SCREWDRIV TOOL TOOLS) (ADJECTIVE FLATHEAD PROPER) (FLAGS TAKEBIT TRYTAKEBIT
+TOOLBIT) (SIZE 3) (GENERIC TWEEZERS)> 
+<OBJECT WRENCH (LOC TOOLBOX) (DESC "laser-assisted monkey wrench") (SYNONYM
+WRENCH TOOL TOOLS) (ADJECTIVE LASER ASSISTED LASER-ASS MONKEY PROPER) (FLAGS
+TAKEBIT TOOLBIT) (SIZE 3) (GENERIC TWEEZERS)> 
+<OBJECT CHISEL (LOC PANTRY) (DESC "thermo-fusion chisel") (SYNONYM CHISEL TOOL
+TOOLS) (ADJECTIVE THERMO FUSION THERMO-FU PROPER) (FLAGS TAKEBIT TOOLBIT) (SIZE
+3) (GENERIC TWEEZERS)> 
+<OBJECT AWL (LOC WAR-CHAMBER) (DESC "ultra-plasmic vacuum awl") (SYNONYM AWL
+TOOL TOOLS) (ADJECTIVE ULTRA PLASMIC ULTRA-PLA VACUUM PROPER) (FLAGS TAKEBIT
+VOWELBIT TOOLBIT) (SIZE 3) (GENERIC TWEEZERS)> 
+<OBJECT PLIERS (LOC LOCAL-GLOBALS) (DESC "pair of hypersonic pliers") (SYNONYM
+PAIR PLIERS TOOL TOOLS) (ADJECTIVE HYPERSONI PROPER) (FLAGS TAKEBIT TOOLBIT) (
+SIZE 3) (GENERIC TWEEZERS)> 
+<OBJECT TWEEZERS (LOC HANDBAG) (DESC "pair of tweezers") (SYNONYM TWEEZERS
+TWEEZER PAIR TOOL TOOLS) (ADJECTIVE PROPER) (FLAGS TAKEBIT TOOLBIT) (SIZE 3) (
+GENERIC TWEEZERS)> 
+<OBJECT PINCER (LOC BRIDGE) (DESC "molecular hyperwave pincer") (SYNONYM PINCER
+TOOL TOOLS) (ADJECTIVE MOLECULAR HYPERWAVE PROPER) (FLAGS TAKEBIT TOOLBIT) (
+SIZE 3) (GENERIC TWEEZERS)> 
+<OBJECT RASP (LOC LOCAL-GLOBALS) (DESC "ionic diffusion rasp") (SYNONYM RASP
+TOOL TOOLS) (ADJECTIVE IONIC DIFFUSION PROPER) (FLAGS TAKEBIT VOWELBIT TOOLBIT)
+(SIZE 3) (GENERIC TWEEZERS)> 
+<OBJECT CHIPPER (LOC LOCAL-GLOBALS) (DESC
+"number twelve asteroid paint chipper") (SYNONYM CHIPPER TOOL TOOLS) (ADJECTIVE
+NUMBER TWELVE ASTEROID PAINT PROPER) (FLAGS TAKEBIT TOOLBIT) (SIZE 3) (GENERIC
+TWEEZERS)> 
+<CONSTANT TOOL-LIST <PLTABLE SCREWDRIVER WRENCH CHISEL AWL PLIERS TWEEZERS
+PINCER RASP CHIPPER TOOTHBRUSH>> 
+<GLOBAL HOLDING-NO-TEA T> 
+<DEFINE-ROUTINE LIQUID-SPILL> 
+<DEFINE-ROUTINE ANTI-LITTER> 
+<OBJECT TEA (LOC PAD) (DESC "tea") (DESCFCN TEA-DESCFCN) (SYNONYM TEA CUP) (
+ADJECTIVE REAL NICE HOT) (FLAGS NARTICLEBIT TAKEBIT TRYTAKEBIT DRINKBIT) (
+ACTION TEA-F)> 
+<DEFINE-ROUTINE TEA-DESCFCN> 
+<DEFINE-ROUTINE DESCRIBE-DRINK> 
+<DEFINE-ROUTINE TEA-F> 
+<OBJECT NO-TEA (LOC GLOBAL-OBJECTS) (DESC "no tea") (SYNONYM TEA) (ADJECTIVE NO
+) (FLAGS NARTICLEBIT TRYTAKEBIT) (ACTION NO-TEA-F)> 
+<DEFINE-ROUTINE NO-TEA-F> 
+<DEFINE-ROUTINE TEA-PRINT> 
+<OBJECT THUMB (LOC SATCHEL) (DESC "electronic Sub-Etha signaling device") (
+SYNONYM THUMB DEVICE SENSO) (ADJECTIVE ELECTRONI SUB-ETHA SIGNALING SMALL BLACK
+LITTLE BLINKING) (SIZE 10) (FLAGS TAKEBIT VOWELBIT CONTBIT OPENBIT) (ACTION
+THUMB-F)> 
+<DEFINE-ROUTINE THUMB-F> 
+<OBJECT RED-BUTTON (LOC THUMB) (DESC "red button") (SYNONYM BUTTON) (ADJECTIVE
+RED SMALL) (FLAGS NDESCBIT INTEGRALBIT) (SIZE 1) (ACTION RED-BUTTON-F)> 
+<DEFINE-ROUTINE RED-BUTTON-F> 
+<OBJECT GREEN-BUTTON (LOC THUMB) (DESC "green button") (SYNONYM BUTTON) (
+ADJECTIVE GREEN SMALL HITCHHIKE) (FLAGS NDESCBIT INTEGRALBIT) (SIZE 1) (ACTION
+GREEN-BUTTON-F)> 
+<DEFINE-ROUTINE GREEN-BUTTON-F> 
+<OBJECT GUARANTEE (LOC THUMB) (DESC "guarantee") (SYNONYM GUARANTEE WARRANTY
+PLAQUE) (ADJECTIVE LIFETIME) (FLAGS NDESCBIT INTEGRALBIT) (SIZE 2) (ACTION
+GUARANTEE-F)> 
+<DEFINE-ROUTINE GUARANTEE-F> 
+<OBJECT ENGINEER (LOC LOCAL-GLOBALS) (DESC "Engineer robot") (SYNONYM ROBOT
+ENGINEER) (ADJECTIVE ENGINE) (FLAGS VOWELBIT ACTORBIT CONTBIT OPENBIT SEARCHBIT
+) (ACTION ENGINEER-F)> 
+<DEFINE-ROUTINE ENGINEER-F> 
+<GLOBAL ENGINEER-COUNTER 0> 
+<GLOBAL THUMB-SHOWN 0> 
+<DEFINE-ROUTINE ENGINEER-LEAVE> 
+<DEFINE-ROUTINE I-ENGINEER> 
+<OBJECT BIKE (LOC LOCAL-GLOBALS) (DESC "bike") (SYNONYM BIKE CYCLE) (ADJECTIVE
+ION) (FLAGS NDESCBIT TRYTAKEBIT)> 
+<OBJECT GUIDE (LOC SATCHEL) (DESC "The Hitchhiker's Guide") (DESCFCN
+GUIDE-DESCFCN) (SYNONYM COPY GUIDE) (ADJECTIVE HITCHHIKE SUB-ETHA) (SIZE 10) (
+FLAGS NARTICLEBIT TAKEBIT READBIT) (TEXT
+"Try: CONSULT GUIDE ABOUT (something).") (ACTION GUIDE-F)> 
+<DEFINE-ROUTINE GUIDE-DESCFCN> 
+<DEFINE-ROUTINE GUIDE-F> 
+<CONSTANT 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."> 
+<DEFINE-ROUTINE CANT-SEE> 
+<DEFINE-ROUTINE TELL-ME-HOW> 
+<DEFINE-ROUTINE OUT-OF-FIRST> 
+<DEFINE-ROUTINE PRIVATE> 
+<DEFINE-ROUTINE NOT-VERY-GOOD> 
+<DEFINE-ROUTINE FACTOR> 
+<DEFINE-ROUTINE REMOVING-BIT> 
+<DEFINE-ROUTINE PART-OF> 
+<DEFINE-ROUTINE BUT-THAT-MAN> 
+<DEFINE-ROUTINE CUSHION> 
+<DEFINE-ROUTINE FINE-PRODUCT> 
+<DEFINE-ROUTINE MAKE-WAY-FOR> 
+<DEFINE-ROUTINE OWN-FEET> 
+<CONSTANT DOWN-WELL "It goes down well."> 
+<CONSTANT NOT-PLUGGED "It's not plugged into anything!"> 
+<CONSTANT LYING-ABOUT-EXIT "(We were lying about the exit to port.) "> 
+<CONSTANT ROARS-OFF " roars off on his ion bike into the Sub-Etha"> 
+<CONSTANT FIDDLES
+"He fiddles with the Thumb for a moment or two before handing it back. "> 
+<CONSTANT LOOK-AROUND "Look around you."> 
+<CONSTANT TOO-DARK "It's too dark to see!"> 
+<CONSTANT CANT-GO "You can't go that way."> 
+<CONSTANT YOU-ARE "You already are!"> 
+<CONSTANT ALREADY-OPEN "It is already open."> 
+<CONSTANT ALREADY-CLOSED "It is already closed."> 
+<CONSTANT REFERRING "I don't see what you're referring to."> 
+<CONSTANT WHILE-LYING "You can't do that while you're lying down!"> 
+<CONSTANT WITH-TOWEL "With a towel wrapped around your head!?!"> 
+<CONSTANT ZEN "A brave, Zen-like effort. It fails."> 
+<CONSTANT BULLDOZER-PILES "The bulldozer piles into the side of your home."> 
+<CONSTANT IT-LOOKS-LIKE "It looks like"> 
+<CONSTANT CLAWS " its tungsten carbide Vast-Pain claws"> 
+<CONSTANT PRESIDENT " President of the Galaxy"> 
+<CONSTANT SCC "Sirius Cybernetics Corporation"> 
+<CONSTANT BEAM " matter transference beam"> 
+<CONSTANT FLEET-PLUNGES "The battle fleet plunges toward Earth and"> 
+<CONSTANT ABOVE-NOISE "He can't hear you above the noise."> 
+<CONSTANT BATTLE-SHORTS " black jewelled battle shorts, "> 
+<CONSTANT CLOUD-OF-STEAM " in a cloud of green, sweet-smelling steam. "> 
+<CONSTANT GUIDE-NAME "The Hitchhiker's Guide to the Galaxy"> 
+<CONSTANT ALREADY-KNOW-THAT
+" But then again you must already know that, since you bought one."> 
+<CONSTANT THUMB-CLICKS " Thumb merely makes a few feeble clicking noises."> 
+<CONSTANT BROWNIAN " Brownian motion"> 
+<CONSTANT 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.\""> 
+<CONSTANT DRIVEN-BACK
+"You struggle to reach the Thumb, but the wind is too
+fierce and you are driven back."> 
+<CONSTANT 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. "> 
+<CONSTANT GETTING-CLOSE " You're getting close, though."> 
+<CONSTANT GPP "Genuine People Personalities"> 
+<CONSTANT ALSO-SEE ". Also see the entries on "> 
+<CONSTANT JUST-AS
+"Just as the Beast is trying to work out where you've disappeared to, it "> 
+<CONSTANT BUDGE "It won't budge."> 
+<CONSTANT 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."> 
+<CONSTANT NOT-HOLDING "You're not holding"> 
+<CONSTANT WITH-PASSION
+" with passion, and ignores a passing microscopic space fleet."> 
+<CONSTANT DIALING-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."> 
+<CONSTANT ANNOUNCEMENT "\"Announcement, announcement. This is "> 
+<CONSTANT HANDS-OFF "The barman snaps \"Hands off until you pay for it!\""> 
+<CONSTANT ARRESTED "Do you want to get arrested for indecent exposure?"> 
+<CONSTANT AGENCY "Galactic Security Agency"> 
+<CONSTANT LOST-PLANET " the legendary lost planet of Magrathea"> 
+<CONSTANT DONT-MIX
+"Despite your hangover, you recall that Zaphod and water don't mix."> 
+<CONSTANT CROWD-CHEERS "The crowd cheers wildly! It thinks you're terrific."> 
+<CONSTANT HUMANS "Humans are so depressingly "> 
+<CONSTANT EYE-STALK "electronic eye stalk shoots up from the hood, "> 
+<CONSTANT 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."> 
+<CONSTANT IID " Infinite Improbability Drive"> 
+<CONSTANT FIG "finite Improbability Generator"> 
+<CONSTANT ROBOT-FLIES-IN
+"A small upper-half-of-the-room cleaning robot flies into the room, "> 
+<CONSTANT ON-OTHER-SIDE "standing on the other side"> 
+<CONSTANT MOP " the manual override receptacle"> 
+<CONSTANT NICE-DAY
+"t's a bright morning, the sun is shining, the birds are
+singing, the meadows are blooming"> 
+<CONSTANT GET-RID " you've been trying to get rid of it for years."> 
+<CONSTANT 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."> 
+<CONSTANT ENGAGED " all circuits are currently engaged by the "> 
\ No newline at end of file
diff --git a/globals.zap b/globals.zap
new file mode 100644 (file)
index 0000000..532c9f6
--- /dev/null
@@ -0,0 +1,1753 @@
+
+
+       .FUNCT  INIT-STATUS-LINE
+       LESS?   WIDTH,38 \?CND1
+       PRINTI  "[Screen too narrow.]"
+       CRLF    
+       QUIT    
+?CND1: SET     'OHERE,FALSE-VALUE
+       SET     'OLD-LEN,0
+       SPLIT   1
+       SCREEN  S-WINDOW
+       HLIGHT  H-INVERSE
+       CURSET  1,1
+       ICALL2  PRINT-SPACES,WIDTH
+       GRTR?   WIDTH,74 \?CND5
+       CURSET  1,51
+       PRINTI  "Score:"
+       CURSET  1,64
+       PRINTI  "Moves:"
+?CND5: HLIGHT  H-NORMAL
+       SCREEN  S-TEXT
+       RTRUE   
+
+
+       .FUNCT  UPDATE-STATUS-LINE
+       SCREEN  S-WINDOW
+       HLIGHT  H-NORMAL
+       HLIGHT  H-INVERSE
+       EQUAL?  HERE,OHERE /?CND1
+       SET     'OHERE,HERE
+       DIROUT  D-TABLE-ON,SL-TABLE
+       ICALL1  SAY-HERE
+       DIROUT  D-TABLE-OFF
+       CURSET  1,2
+       ICALL2  PRINT-SPACES,OLD-LEN
+       GET     SL-TABLE,0 >OLD-LEN
+       CURSET  1,2
+       ICALL1  SAY-HERE
+?CND1: GRTR?   WIDTH,74 \?CCL5
+       CURSET  1,58
+       PRINTN  SCORE
+       PRINTC  32
+       CURSET  1,71
+       PRINTN  MOVES
+       JUMP    ?CND3
+?CCL5: DIROUT  D-TABLE-ON,SL-TABLE
+       PRINTN  SCORE
+       PRINTC  47
+       PRINTN  MOVES
+       PRINTC  32
+       DIROUT  D-TABLE-OFF
+       GET     SL-TABLE,0
+       ADD     STACK,1
+       SUB     WIDTH,STACK
+       CURSET  1,STACK
+       PRINTN  SCORE
+       PRINTC  47
+       PRINTN  MOVES
+       PRINTC  32
+?CND3: HLIGHT  H-NORMAL
+       SCREEN  S-TEXT
+       RTRUE   
+
+
+       .FUNCT  PRINT-SPACES,CNT
+?PRG1: DLESS?  'CNT,0 /TRUE
+       PRINTC  32
+       JUMP    ?PRG1
+
+
+       .FUNCT  SAY-HERE
+       ZERO?   LIT \?PRG6
+       PRINTI  "Darkness"
+       RTRUE   
+?PRG6: PRINTD  HERE
+       GRTR?   WIDTH,74 \TRUE
+       IN?     PROTAGONIST,POETRY-APPRECIATION-CHAIR \?CCL12
+       PRINTI  ", in the chair"
+       RTRUE   
+?CCL12:        IN?     PROTAGONIST,HERE /?CCL16
+       PRINTI  ", in the "
+       LOC     PROTAGONIST
+       PRINTD  STACK
+       RTRUE   
+?CCL16:        ZERO?   LYING-DOWN /TRUE
+       PRINTI  ", lying down"
+       RTRUE   
+
+
+       .FUNCT  NOT-HERE-OBJECT-F,TBL,PRSO?,OBJ,X
+       SET     'PRSO?,TRUE-VALUE
+       EQUAL?  PRSO,NOT-HERE-OBJECT \?CCL3
+       EQUAL?  PRSI,NOT-HERE-OBJECT \?CCL3
+       PRINTR  "Those things aren't here!"
+?CCL3: EQUAL?  PRSO,NOT-HERE-OBJECT \?CCL9
+       SET     'TBL,P-PRSO
+       JUMP    ?CND1
+?CCL9: SET     'TBL,P-PRSI
+       SET     'PRSO?,FALSE-VALUE
+?CND1: ZERO?   PRSO? /?CCL12
+       EQUAL?  PRSA,V?FIND,V?FOLLOW,V?CALL /?CCL14
+       EQUAL?  PRSA,V?WHAT,V?WHERE,V?WHO /?CCL14
+       EQUAL?  PRSA,V?WAIT-FOR,V?WALK-TO,V?WHAT-ABOUT /?CCL14
+       EQUAL?  PRSA,V?I-AM,V?CARVE,V?CALL-WITH \?CND10
+?CCL14:        SET     'X,TRUE-VALUE
+       CALL    FIND-NOT-HERE,TBL,PRSO? >OBJ
+       ZERO?   OBJ /FALSE
+       EQUAL?  OBJ,NOT-HERE-OBJECT /?CND10
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?ASK-ABOUT,V?ASK-FOR,V?TELL-ABOUT /?CCL25
+       EQUAL?  PRSA,V?MY-NAME \?CND10
+?CCL25:        SET     'X,TRUE-VALUE
+       CALL    FIND-NOT-HERE,TBL,PRSO? >OBJ
+       ZERO?   OBJ /FALSE
+       EQUAL?  OBJ,NOT-HERE-OBJECT \TRUE
+?CND10:        ZERO?   X /?CCL35
+       PRINTI  "You'll have to be more specific, I'm afraid."
+       CRLF    
+       JUMP    ?CND33
+?CCL35:        EQUAL?  WINNER,PROTAGONIST \?CCL39
+       PRINTI  "You can't "
+       EQUAL?  P-XNAM,W?POEM,W?POETRY,W?CONVERSAT \?PRG47
+       PRINTI  "hear"
+       JUMP    ?CND42
+?PRG47:        PRINTI  "see"
+?CND42:        CALL2   NAME?,P-XNAM
+       ZERO?   STACK \?CND49
+       PRINTI  " any"
+?CND49:        ICALL2  NOT-HERE-PRINT,PRSO?
+       PRINTI  " here!"
+       CRLF    
+       JUMP    ?CND33
+?CCL39:        EQUAL?  WINNER,FORD \?PRD58
+       ZERO?   FORD-SLEEPING \FALSE
+?PRD58:        EQUAL?  WINNER,BEAST \?PRG63
+       FSET?   BEAST,MUNGEDBIT /FALSE
+?PRG63:        PRINTI  "Looking confused,"
+       ICALL   ARTICLE,WINNER,TRUE-VALUE
+       PRINTI  " says, ""I don't see"
+       CALL2   NAME?,P-XNAM
+       ZERO?   STACK \?CND67
+       PRINTI  " any"
+?CND67:        ICALL2  NOT-HERE-PRINT,PRSO?
+       PRINTI  " here!"""
+       CRLF    
+?CND33:        CALL1   FUCKING-CLEAR
+       RSTACK  
+
+
+       .FUNCT  FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ
+       CALL2   MOBY-FIND,TBL >M-F
+       EQUAL?  1,M-F \?CCL3
+       ZERO?   PRSO? /?CCL6
+       SET     'PRSO,P-MOBY-FOUND
+       RFALSE  
+?CCL6: SET     'PRSI,P-MOBY-FOUND
+       RFALSE  
+?CCL3: EQUAL?  P-XNAM,W?FLUFF \?CCL8
+       ZERO?   PRSO? /?CCL11
+       SET     'PRSO,POCKET-FLUFF
+       RFALSE  
+?CCL11:        SET     'PRSI,POCKET-FLUFF
+       RFALSE  
+?CCL8: EQUAL?  P-XNAM,W?TOOL,W?TOOLS \?CCL13
+       ZERO?   PRSO? /?CCL16
+       SET     'PRSO,TWEEZERS
+       RFALSE  
+?CCL16:        SET     'PRSI,TWEEZERS
+       RFALSE  
+?CCL13:        RETURN  NOT-HERE-OBJECT
+
+
+       .FUNCT  NOT-HERE-PRINT,PRSO?,?TMP1
+       ZERO?   P-OFLAG /?CCL3
+       ZERO?   P-XADJ /?CND4
+       PRINTC  32
+       PRINTB  P-XADJ
+?CND4: ZERO?   P-XNAM /FALSE
+       PRINTC  32
+       PRINTB  P-XNAM
+       RTRUE   
+?CCL3: ZERO?   PRSO? /?CCL14
+       GET     P-ITBL,P-NC1 >?TMP1
+       GET     P-ITBL,P-NC1L
+       CALL    BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
+       RSTACK  
+?CCL14:        GET     P-ITBL,P-NC2 >?TMP1
+       GET     P-ITBL,P-NC2L
+       CALL    BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
+       RSTACK  
+
+
+       .FUNCT  LIGHT-F
+       IN?     FLEET,HERE /?PRD5
+       EQUAL?  HERE,AIRLOCK,INSIDE-WHALE \?CCL3
+?PRD5: CALL2   VISIBLE?,THUMB
+       ZERO?   STACK /?CCL3
+       EQUAL?  LIGHT,PRSI \?CCL10
+       ICALL   PERFORM,PRSA,PRSO,THUMB
+       RTRUE   
+?CCL10:        ICALL   PERFORM,PRSA,THUMB,PRSI
+       RTRUE   
+?CCL3: EQUAL?  HERE,GALLEY \?CCL12
+       CALL1   UNIMPORTANT-THING-F
+       RSTACK  
+?CCL12:        EQUAL?  LIGHT,PRSO \?CCL14
+       EQUAL?  PRSA,V?WHAT,V?FOLLOW,V?FIND /FALSE
+       EQUAL?  PRSA,V?WHAT-ABOUT,V?WALK-TO,V?WHERE /FALSE
+?CCL14:        EQUAL?  LIGHT,PRSI \?CCL20
+       EQUAL?  PRSA,V?TELL-ABOUT,V?ASK-ABOUT /FALSE
+?CCL20:        EQUAL?  HERE,BEDROOM /?CCL24
+       CALL2   CANT-SEE,LIGHT
+       RSTACK  
+?CCL24:        EQUAL?  PRSA,V?LAMP-ON \?CCL26
+       FSET?   HERE,ONBIT \?CCL29
+       PRINTR  "It is."
+?CCL29:        SET     'LIT,TRUE-VALUE
+       FSET    HERE,ONBIT
+       FSET    DARK-OBJECT,DARKBIT
+       MOVE    DARK-OBJECT,DARK
+       PRINTI  "Good start to the day. Pity it's going to be the worst one of your life. The light is now on."
+       CRLF    
+       CRLF    
+       ICALL1  V-LOOK
+       SET     'OHERE,FALSE-VALUE
+       RTRUE   
+?CCL26:        EQUAL?  PRSA,V?LAMP-OFF \FALSE
+       CALL1   V-DIG
+       RSTACK  
+
+
+       .FUNCT  GLOBAL-SLEEP-F
+       EQUAL?  PRSA,V?TAKE,V?WALK-TO \FALSE
+       ICALL2  PERFORM,V?SLEEP
+       RTRUE   
+
+
+       .FUNCT  SPEECH-F
+       EQUAL?  PRSA,V?MAKE,V?GIVE \?CCL3
+       PRINTI  "This isn't the time"
+       EQUAL?  HERE,DAIS /?PRG10
+       PRINTI  " or the place"
+?PRG10:        PRINTR  " for making speeches."
+?CCL3: EQUAL?  PRSA,V?READ \FALSE
+       PRINTR  "It's extemporaneous."
+
+
+       .FUNCT  GROUND-F
+       EQUAL?  PRSA,V?THROUGH \?CCL3
+       EQUAL?  HERE,ACCESS-SPACE \?CCL3
+       PRINTR  "The mesh is too fine."
+?CCL3: EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-ON,V?CLIMB-UP /?CTR8
+       EQUAL?  PRSA,V?BOARD \?CCL9
+?CTR8: CALL1   V-DIG
+       RSTACK  
+?CCL9: EQUAL?  PRSA,V?LOOK-UNDER \?CCL13
+       CALL1   V-COUNT
+       RSTACK  
+?CCL13:        EQUAL?  PRSA,V?LEAVE \?CCL15
+       CALL2   DO-WALK,P?UP
+       RSTACK  
+?CCL15:        EQUAL?  PRSA,V?LIE-DOWN \?CCL17
+       IN?     PROTAGONIST,BED \?CCL20
+       CALL2   OUT-OF-FIRST,BED
+       RSTACK  
+?CCL20:        ZERO?   LYING-DOWN /?CCL22
+       PRINT   YOU-ARE
+       CRLF    
+       RTRUE   
+?CCL22:        EQUAL?  HERE,FRONT-OF-HOUSE \?CCL26
+       ICALL   PERFORM,V?BLOCK,BULLDOZER
+       SET     'P-IT-OBJECT,GROUND
+       RTRUE   
+?CCL26:        SET     'LYING-DOWN,TRUE-VALUE
+       SET     'OHERE,FALSE-VALUE
+       PRINTR  "You are now lying on the ground."
+?CCL17:        EQUAL?  PRSA,V?EXAMINE \?CCL30
+       EQUAL?  HERE,GUTS-ROOM \?CCL33
+       PRINTR  "The walls, floor, and ceiling are covered with little pieces of flesh and bone."
+?CCL33:        EQUAL?  HERE,ACCESS-SPACE \FALSE
+       PRINTR  "The floor is an open metal mesh, like the floor of a catwalk."
+?CCL30:        EQUAL?  PRSA,V?LOOK-INSIDE \?CCL41
+       EQUAL?  HERE,ACCESS-SPACE \?CCL41
+       ICALL   PERFORM,V?LOOK-INSIDE,FISH-HOLE
+       SET     'P-IT-OBJECT,GROUND
+       RTRUE   
+?CCL41:        EQUAL?  PRSA,V?ENJOY \FALSE
+       EQUAL?  HERE,FRONT-OF-HOUSE \FALSE
+       ZERO?   LYING-DOWN /FALSE
+       PRINTR  "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."
+
+
+       .FUNCT  WALLS-F
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       EQUAL?  HERE,GUTS-ROOM \FALSE
+       ICALL   PERFORM,V?EXAMINE,GROUND
+       RTRUE   
+
+
+       .FUNCT  CEILING-F
+       EQUAL?  PRSA,V?LOOK-UNDER \?CCL3
+       ICALL2  PERFORM,V?LOOK
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?EXAMINE \FALSE
+       EQUAL?  HERE,GUTS-ROOM \FALSE
+       ICALL   PERFORM,V?EXAMINE,GROUND
+       RTRUE   
+
+
+       .FUNCT  WINDOW-F
+       ZERO?   LIT \?CCL3
+       PRINT   TOO-DARK
+       CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?MUNG \?CCL7
+       ICALL   PERFORM,V?KILL,WINDOW
+       RTRUE   
+?CCL7: EQUAL?  HERE,BEDROOM \?CCL9
+       EQUAL?  PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL12
+       ICALL   PERFORM,V?OPEN,CURTAINS
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?CLOSE,V?OPEN \FALSE
+       PRINTR  "The bloody thing's been jammed shut for months, now."
+?CCL9: EQUAL?  PRSA,V?LOOK-INSIDE \?CCL18
+       PRINTR  "You see the country lane."
+?CCL18:        EQUAL?  PRSA,V?CLOSE,V?OPEN \FALSE
+       PRINT   BUDGE
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  STAIRS-F
+       EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-UP \?CCL3
+       CALL2   DO-WALK,P?UP
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?CLIMB-DOWN \FALSE
+       CALL2   DO-WALK,P?DOWN
+       RSTACK  
+
+
+       .FUNCT  SKY-F
+       FSET?   HERE,OUTSIDEBIT /?CCL3
+       CALL2   CANT-SEE,SKY
+       RSTACK  
+?CCL3: IN?     FLEET,HERE \FALSE
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTI  "The sky is filled with the ships of the "
+       PRINTD  FLEET
+       PRINTR  "."
+
+
+       .FUNCT  STAR-F
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       EQUAL?  HERE,WAR-CHAMBER \?CCL6
+       PRINTI  "The approaching star is a small, unregarded yellow sun, with nine planets of varying sizes. The "
+       PRINTD  THIRD-PLANET
+       PRINTR  " catches your attention."
+?CCL6: EQUAL?  HERE,DAIS,SPEEDBOAT \?CCL10
+       PRINTR  "The sun is a smallish orange star."
+?CCL10:        EQUAL?  HERE,FRONT-OF-HOUSE,COUNTRY-LANE,BACK-OF-HOUSE \?CCL14
+       PRINTR  "The sun is a smallish yellow star."
+?CCL14:        CALL2   CANT-SEE,STAR
+       RSTACK  
+
+
+       .FUNCT  HANDS-F,ACTOR
+       EQUAL?  PRSA,V?WAVE \?CCL3
+       SET     'PRSO,FALSE-VALUE
+       ICALL2  PERFORM,V?WAVE-AT
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?SHAKE \FALSE
+       CALL    FIND-IN,HERE,ACTORBIT >ACTOR
+       ZERO?   ACTOR /?PRG9
+       ICALL   PERFORM,V?THANK,ACTOR
+       RTRUE   
+?PRG9: PRINTR  "Pleased to meet you."
+
+
+       .FUNCT  EYES-F
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       PRINTR  "They are."
+?CCL3: EQUAL?  PRSA,V?CLOSE \FALSE
+       IN?     BEAST,HERE \?PRG13
+       PRINTI  "The Beast doesn't notice."
+       PRINT   GETTING-CLOSE
+       CRLF    
+       RTRUE   
+?PRG13:        PRINTR  "That won't help."
+
+
+       .FUNCT  PROTAGONIST-F
+       EQUAL?  PRSO,NO-TEA \FALSE
+       ZERO?   PRSI /FALSE
+       CALL1   NO-TEA-F
+       RSTACK  
+
+
+       .FUNCT  ME-F,OLIT
+       EQUAL?  PRSA,V?TELL \?CCL3
+       PRINTI  "Talking to yourself is a sign of impending mental collapse."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?LISTEN \?CCL7
+       PRINTR  "Yes?"
+?CCL7: EQUAL?  PRSA,V?ALARM \?CCL11
+       PRINT   YOU-ARE
+       CRLF    
+       RTRUE   
+?CCL11:        EQUAL?  PRSA,V?GIVE \?CCL15
+       EQUAL?  PRSI,ME \?CCL15
+       IN?     PRSO,PROTAGONIST \?CCL20
+       EQUAL?  PRSO,BABEL-FISH,NO-TEA /?CCL20
+       CALL1   PRE-TAKE
+       RSTACK  
+?CCL20:        ICALL   PERFORM,V?TAKE,PRSO
+       RTRUE   
+?CCL15:        EQUAL?  PRSA,V?MOVE \?CCL24
+       CALL1   V-WALK-AROUND
+       RSTACK  
+?CCL24:        EQUAL?  PRSA,V?SEARCH \?CCL26
+       ICALL1  V-INVENTORY
+       RTRUE   
+?CCL26:        EQUAL?  PRSA,V?MUNG,V?KILL /?CTR27
+       EQUAL?  PRSA,V?SHOOT \?CCL28
+       EQUAL?  PRSI,BLASTER \?CCL28
+?CTR27:        ICALL2  JIGS-UP,STR?169
+       RTRUE   
+?CCL28:        EQUAL?  PRSA,V?FIND \?CCL34
+       PRINTR  "You're right here!"
+?CCL34:        EQUAL?  PRSA,V?WHO \?CCL38
+       PRINTI  "You are "
+       PRINTD  IDENTITY-FLAG
+       PRINTR  "."
+?CCL38:        EQUAL?  PRSA,V?EXAMINE \?CCL42
+       EQUAL?  HERE,MAZE \?CCL42
+       PRINTR  "You look perfectly normal (except that you're two microns tall)."
+?CCL42:        EQUAL?  PRSA,V?PULL-TOGETHER \?CCL48
+       PRINT   ZEN
+       CRLF    
+       RTRUE   
+?CCL48:        EQUAL?  PRSA,V?FOLLOW \FALSE
+       PRINTR  "I'd like to, but like most computers I don't have legs."
+
+
+       .FUNCT  GLOBAL-ROOM-F
+       EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE,V?LOOK \?CCL3
+       ICALL1  V-LOOK
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?WALK-TO,V?THROUGH \?CCL5
+       CALL1   V-WALK-AROUND
+       RSTACK  
+?CCL5: EQUAL?  PRSA,V?EXIT,V?LEAVE \?CCL7
+       CALL2   DO-WALK,P?OUT
+       RSTACK  
+?CCL7: EQUAL?  PRSA,V?WALK-AROUND \?CCL9
+       EQUAL?  HERE,CAPTAINS-QUARTERS \?PRG13
+       CALL1   V-STAND
+       RSTACK  
+?PRG13:        PRINTR  "Walking around the room reveals nothing new. To move elsewhere, just type the desired direction."
+?CCL9: EQUAL?  PRSA,V?LAMP-ON \FALSE
+       ICALL   PERFORM,V?LAMP-ON,LIGHT
+       RTRUE   
+
+
+       .FUNCT  OBJECT-OF-GAME-F
+       EQUAL?  PRSA,V?WHAT \FALSE
+       PRINTR  "That's for me to know and you to find out."
+
+
+       .FUNCT  CONTROLS-F
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       EQUAL?  HERE,SPEEDBOAT \?CCL6
+       PRINTI  "The only control, other than those related to steering the boat, is the large red "
+       PRINTD  AUTOPILOT-BUTTON
+       PRINTC  46
+       ICALL1  FINE-PRODUCT
+       CRLF    
+       RTRUE   
+?CCL6: EQUAL?  HERE,BRIDGE \FALSE
+       PRINTI  "Most of the controls are beyond your comprehension. "
+       IN?     LARGE-RECEPTACLE,HERE \?PRG23
+       PRINTI  "The simplest one is a "
+       PRINTD  LARGE-RECEPTACLE
+       PRINTI  " of some kind."
+       ZERO?   DRIVE-TO-CONTROLS /?CCL20
+       PRINTC  32
+       ICALL   PERFORM,V?EXAMINE,LARGE-RECEPTACLE
+       RTRUE   
+?CCL20:        CRLF    
+       RTRUE   
+?PRG23:        PRINTR  "A fused spot shows where a receptacle once was."
+
+
+       .FUNCT  CONVERSATION-F
+       EQUAL?  PRSA,V?LISTEN \FALSE
+       EQUAL?  HERE,FRONT-OF-HOUSE \?CCL6
+       PRINTR  "You can't hear anything from here."
+?CCL6: ICALL   PERFORM,V?LISTEN,VLHURG
+       RTRUE   
+
+
+       .FUNCT  GUARDS-F
+       EQUAL?  GUARDS,WINNER \?CCL3
+       EQUAL?  PRSA,V?TELL-ABOUT \?CCL6
+       EQUAL?  PRSO,ME \?CCL6
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,GUARDS,PRSI
+       SET     'WINNER,GUARDS
+       RTRUE   
+?CCL6: EQUAL?  PRSA,V?HELLO \?CCL10
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?HELLO,GUARDS
+       SET     'WINNER,GUARDS
+       RTRUE   
+?CCL10:        EQUAL?  HERE,DAIS \?CCL12
+       IN?     RIFLES,GUARDS \?PRD17
+       EQUAL?  PRSA,V?SHOOT \?PRD17
+       ZERO?   DONT-FLAG \?CTR14
+?PRD17:        IN?     RIFLES,GUARDS \?CCL15
+       ZERO?   DONT-FLAG \?CCL15
+       EQUAL?  PRSA,V?DROP \?CCL15
+       EQUAL?  PRSO,RIFLES \?CCL15
+?CTR14:        FCLEAR  RIFLES,NDESCBIT
+       CALL    QUEUE,I-GUARDS,8
+       PUT     STACK,0,1
+       MOVE    RIFLES,HERE
+       FSET    RIFLES,TAKEBIT
+       FSET    RIFLES,TRYTAKEBIT
+       PRINTR  "The guards hesitate, then toss their photon rifles into a pile in front of you."
+?CCL15:        EQUAL?  PRSA,V?SHOOT \?CCL28
+       IN?     RIFLES,GUARDS \?PRG32
+       CALL2   JIGS-UP,STR?170
+       RSTACK  
+?PRG32:        PRINTR  "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."
+?CCL28:        EQUAL?  PRSA,V?TAKE \?CCL35
+       EQUAL?  PRSO,RIFLES \?CCL35
+       IN?     RIFLES,GUARDS \?CCL40
+       PRINTR  """We already have them!"""
+?CCL40:        MOVE    RIFLES,GUARDS
+       CALL    QUEUE,I-GUARDS,5
+       PUT     STACK,0,1
+       PRINTR  "They do so."
+?CCL35:        EQUAL?  PRSA,V?LEAVE \?PRG49
+       PRINTR  """We can't leave while you're in trouble, Mr. President!"""
+?PRG49:        PRINTI  "You have failed to issue one of the small set of commands that the guards' military intelligences are trained to understand."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL12:        CALL    HELD?,BABEL-FISH,PROTAGONIST
+       ZERO?   STACK /?PRG56
+       PRINTI  """Resistance is useless!"""
+       CRLF    
+       JUMP    ?CND51
+?PRG56:        PRINTI  """I"
+       ICALL2  PRODUCE-GIBBERISH,1
+       CRLF    
+?CND51:        CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL3: EQUAL?  HERE,CAPTAINS-QUARTERS \?CCL59
+       EQUAL?  PRSA,V?THANK,V?HELLO,V?TELL \?CCL59
+       ICALL   PERFORM,V?TELL,VOGON-CAPTAIN
+       RTRUE   
+?CCL59:        EQUAL?  HERE,CAPTAINS-QUARTERS \?CCL63
+       EQUAL?  PRSA,V?ASK-FOR,V?ASK-ABOUT \?CCL63
+       EQUAL?  GUARDS,PRSO \?CCL63
+       ICALL   PERFORM,V?TELL,VOGON-CAPTAIN
+       RTRUE   
+?CCL63:        EQUAL?  PRSA,V?EXAMINE \?CCL68
+       IN?     RIFLES,GUARDS \?CCL68
+       PRINTR  "They're holding their photon rifles."
+?CCL68:        EQUAL?  HERE,DAIS \?CCL74
+       EQUAL?  PRSA,V?SHOOT \?CCL74
+       CALL1   BLASTER-HOLD
+       ZERO?   STACK \TRUE
+       PRINT   GUARDS-REALIZE
+       ICALL2  JIGS-UP,STR?171
+       RTRUE   
+?CCL74:        EQUAL?  PRSA,V?GIVE \?CCL82
+       EQUAL?  PRSO,BLASTER \?CCL82
+       PRINTI  "The guards are more than glad to disarm you. They"
+       ICALL1  GUARD-DEATH
+       RTRUE   
+?CCL82:        EQUAL?  PRSA,V?COUNT \FALSE
+       EQUAL?  HERE,HOLD \?CCL91
+       PRINTR  "One."
+?CCL91:        EQUAL?  HERE,CAPTAINS-QUARTERS \?PRG98
+       PRINTR  "Several."
+?PRG98:        PRINTR  "Many."
+
+
+       .FUNCT  WEAPON-PSEUDO
+       IN?     GUARDS,HERE /?CCL3
+       PRINTR  "What weapon?"
+?CCL3: EQUAL?  PRSA,V?SHOOT \FALSE
+       PRINT   NOT-HOLDING
+       PRINTR  " it."
+
+
+       .FUNCT  FRUSTRATION-F
+       EQUAL?  PRSA,V?ENJOY \FALSE
+       PRINT   ZEN
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  UNIMPORTANT-THING-F
+       EQUAL?  PRSA,V?ASK-ABOUT \?PRG6
+       EQUAL?  PRSO,GUIDE /FALSE
+?PRG6: PRINTR  "That's not important; leave it alone."
+
+
+       .FUNCT  DONT-F
+       EQUAL?  PRSA,V?PANIC \?CCL3
+       RANDOM  100
+       LESS?   50,STACK /?PRG9
+       PRINTR  "Very clever. It looks like there's a lot you should be panicking about."
+?PRG9: PRINTR  "Why not? Your position appears quite hopeless."
+?CCL3: EQUAL?  PRSA,V?LOOK \?CCL12
+       SET     'DONT-FLAG,FALSE-VALUE
+       ICALL   PERFORM,V?CLOSE,EYES
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?WAIT \?CCL14
+       PRINTR  "Time doesn't pass..."
+?CCL14:        EQUAL?  PRSA,V?TAKE \?CCL18
+       PRINTR  "Not taken."
+?CCL18:        EQUAL?  PRSA,V?LISTEN \?PRG25
+       CALL2   VISIBLE?,POETRY
+       ZERO?   STACK /?PRG25
+       SET     'DONT-FLAG,FALSE-VALUE
+       ICALL   PERFORM,V?LISTEN,POETRY
+       RTRUE   
+?PRG25:        PRINTR  "Not done."
+
+
+       .FUNCT  DARK-F,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       PUTP    PROTAGONIST,P?ACTION,DARK-FUNCTION
+       ICALL   ROB,PROTAGONIST,DARK-OBJECT
+       FSET    CONVERSATION,INVISIBLE
+       SET     'DREAMING,FALSE-VALUE
+       SET     'LYING-DOWN,FALSE-VALUE
+?PRG4: RANDOM  100
+       LESS?   HEART-PROB,STACK /?CCL8
+       SET     'HEART-PROB,0
+       SET     'VOGON-PROB,10
+       SET     'DARK-FLAG,ENTRY-BAY
+       SET     'CURRENT-EXIT,3
+       JUMP    ?CND6
+?CCL8: RANDOM  100
+       LESS?   VOGON-PROB,STACK /?CCL10
+       SET     'VOGON-PROB,0
+       SET     'HEART-PROB,100
+       SET     'DARK-FLAG,HOLD
+       SET     'CURRENT-EXIT,0
+       JUMP    ?CND6
+?CCL10:        RANDOM  100
+       LESS?   TRAAL-PROB,STACK /?CCL12
+       EQUAL?  TRAAL-PROB,10 /?CND13
+       SET     'TRAAL-PROB,10
+       SET     'TRILLIAN-PROB,25
+       SET     'FORD-PROB,25
+       SET     'ZAPHOD-PROB,25
+?CND13:        SET     'DARK-FLAG,LAIR
+       SET     'CURRENT-EXIT,4
+       JUMP    ?CND6
+?CCL12:        RANDOM  100
+       LESS?   TRILLIAN-PROB,STACK /?CCL16
+       SET     'TRILLIAN-PROB,10
+       SET     'DARK-FLAG,LIVING-ROOM
+       SET     'CURRENT-EXIT,2
+       JUMP    ?CND6
+?CCL16:        RANDOM  100
+       LESS?   FORD-PROB,STACK /?CCL18
+       SET     'FORD-PROB,10
+       SET     'DARK-FLAG,COUNTRY-LANE
+       SET     'CURRENT-EXIT,1
+       JUMP    ?CND6
+?CCL18:        RANDOM  100
+       LESS?   ZAPHOD-PROB,STACK /?CCL20
+       SET     'ZAPHOD-PROB,10
+       SET     'DARK-FLAG,SPEEDBOAT
+       SET     'CURRENT-EXIT,5
+       JUMP    ?CND6
+?CCL20:        RANDOM  100
+       LESS?   FLEET-PROB,STACK /?CCL22
+       SET     'FLEET-PROB,10
+       SET     'DARK-FLAG,WAR-CHAMBER
+       SET     'CURRENT-EXIT,7
+       JUMP    ?CND6
+?CCL22:        RANDOM  100
+       LESS?   WHALE-PROB,STACK /?CND6
+       PRINTI  "Bug #60"
+       CRLF    
+       SET     'DARK-FLAG,INSIDE-WHALE
+       SET     'CURRENT-EXIT,6
+?CND6: ZERO?   DARK-FLAG /?PRG4
+       RFALSE  
+?CCL3: EQUAL?  RARG,M-LOOK /TRUE
+       RFALSE  
+
+
+       .FUNCT  DARK-FUNCTION
+       EQUAL?  PRSA,V?RESTORE,V?RESTART,V?QUIT /FALSE
+       EQUAL?  PRSA,V?SAVE,V?VERSION,V?SCORE /FALSE
+       EQUAL?  PRSA,V?BRIEF,V?VERBOSE,V?HINTS /FALSE
+       EQUAL?  PRSA,V?UNSCRIPT,V?SCRIPT,V?SUPERBRIEF /FALSE
+       EQUAL?  PRSA,V?FOOTNOTE /FALSE
+       ZERO?   DONT-FLAG \FALSE
+       EQUAL?  PRSA,V?YELL,V?PANIC \?CCL12
+       PRINTR  "You yell as loudly as you can, but no sound emerges."
+?CCL12:        EQUAL?  PRSA,V?RELAX /?PRG21
+       EQUAL?  PRSA,V?ENJOY \?CCL16
+       EQUAL?  PRSO,DARK-OBJECT \?CCL16
+?PRG21:        PRINTR  "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)."
+?CCL16:        EQUAL?  DARK-FLAG,ENTRY-BAY,WAR-CHAMBER \?CCL24
+       EQUAL?  PRSA,V?LISTEN \?CCL24
+       EQUAL?  PRSO,DARK-OBJECT \?CCL24
+       CALL1   MISSING?
+       ZERO?   STACK /?CCL24
+       MOVE    STAR-DRIVE,HERE
+       SET     'P-IT-OBJECT,STAR-DRIVE
+       PRINTI  "You hear the deep and distant hum of a "
+       PRINTD  STAR-DRIVE
+       PRINTI  " coming from far "
+       EQUAL?  DARK-FLAG,ENTRY-BAY \?PRG36
+       PRINTI  "above"
+       JUMP    ?PRG38
+?PRG36:        PRINTI  "below"
+?PRG38:        PRINTR  ". There is an exit to port."
+?CCL24:        EQUAL?  PRSA,V?WALK \?CCL41
+       CALL1   MISSING?
+       ZERO?   STACK /?CCL41
+       EQUAL?  DARK-FLAG,WAR-CHAMBER,ENTRY-BAY \?CCL41
+       IN?     STAR-DRIVE,HERE \?CCL41
+       EQUAL?  PRSO,P?SOUTH \?PRG55
+       LESS?   LYING-COUNTER,4 \?PRG53
+       PRINT   LYING-ABOUT-EXIT
+?PRG53:        PRINTI  "You emerge from a small doorway..."
+       CALL1   LEAVE-DARK
+       RSTACK  
+?PRG55:        PRINT   CANT-GO
+       EQUAL?  PRSO,P?WEST \?CND57
+       INC     'LYING-COUNTER
+       EQUAL?  LYING-COUNTER,4 \?CND57
+       PRINTC  32
+       PRINT   LYING-ABOUT-EXIT
+       PRINTR  "There is an exit aft..."
+?CND57:        CRLF    
+       RTRUE   
+?CCL41:        EQUAL?  PRSO,STAR-DRIVE /?PRD66
+       EQUAL?  PRSI,STAR-DRIVE \?CCL64
+?PRD66:        EQUAL?  PRSA,V?WALK /?CCL64
+       EQUAL?  DARK-FLAG,ENTRY-BAY,WAR-CHAMBER /?CCL71
+       CALL2   CANT-SEE,STAR-DRIVE
+       RSTACK  
+?CCL71:        EQUAL?  PRSA,V?LISTEN \FALSE
+       PRINTI  "The sound comes from far "
+       EQUAL?  DARK-FLAG,ENTRY-BAY \?PRG81
+       PRINTI  "above"
+       JUMP    ?PRG83
+?PRG81:        PRINTI  "below"
+?PRG83:        PRINTR  "."
+?CCL64:        EQUAL?  DARK-FLAG,COUNTRY-LANE,SPEEDBOAT \?CCL86
+       EQUAL?  PRSA,V?EXAMINE \?CCL86
+       EQUAL?  PRSO,DARK-OBJECT \?CCL86
+       CALL1   MISSING?
+       ZERO?   STACK /?CCL86
+       MOVE    PAINFUL-LIGHT,HERE
+       SET     'P-IT-OBJECT,PAINFUL-LIGHT
+       PRINTI  "You see a painfully bright light that stabs at the "
+       EQUAL?  DARK-FLAG,COUNTRY-LANE \?PRG98
+       PRINTI  "front"
+       JUMP    ?PRG100
+?PRG98:        PRINTI  "back"
+?PRG100:       PRINTR  " of your eyes."
+?CCL86:        EQUAL?  PRSO,PAINFUL-LIGHT /?PRD105
+       EQUAL?  PRSI,PAINFUL-LIGHT \?CCL103
+?PRD105:       EQUAL?  PRSA,V?WALK /?CCL103
+       EQUAL?  DARK-FLAG,SPEEDBOAT,COUNTRY-LANE /?CCL110
+       CALL2   CANT-SEE,PAINFUL-LIGHT
+       RSTACK  
+?CCL110:       EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTI  "The light resolves itself into the bright "
+       EQUAL?  DARK-FLAG,COUNTRY-LANE \?PRG120
+       PRINTI  "yellow Sun of Earth"
+       JUMP    ?PRG122
+?PRG120:       PRINTI  "orange Sun of "
+       PRINTD  DAMOGRAN
+?PRG122:       PRINTC  46
+       CALL1   LEAVE-DARK
+       RSTACK  
+?CCL103:       EQUAL?  DARK-FLAG,LIVING-ROOM,INSIDE-WHALE \?CCL125
+       EQUAL?  PRSA,V?RUB \?CCL125
+       EQUAL?  PRSO,DARK-OBJECT \?CCL125
+       CALL1   MISSING?
+       ZERO?   STACK /?CCL125
+       MOVE    LIQUID,HERE
+       SET     'P-IT-OBJECT,LIQUID
+       PRINTI  "It does feel a bit "
+       EQUAL?  DARK-FLAG,LIVING-ROOM \?PRG137
+       PRINTI  "cold"
+       JUMP    ?PRG139
+?PRG137:       PRINTI  "warm"
+?PRG139:       PRINTR  " and wet and squishy. There seems to be some liquid at your fingertips."
+?CCL125:       EQUAL?  PRSO,LIQUID /?PRD144
+       EQUAL?  PRSI,LIQUID \?CCL142
+?PRD144:       EQUAL?  PRSA,V?WALK /?CCL142
+       EQUAL?  DARK-FLAG,LIVING-ROOM,INSIDE-WHALE /?CCL149
+       CALL2   CANT-SEE,LIQUID
+       RSTACK  
+?CCL149:       EQUAL?  DARK-FLAG,LIVING-ROOM \?CCL151
+       EQUAL?  PRSA,V?RUB,V?EXAMINE \?CCL154
+       PRINTR  "It seems coldish."
+?CCL154:       EQUAL?  PRSA,V?DRINK,V?TASTE \FALSE
+       PRINTI  "It tastes just like wine. In fact, you realise with growing embarrassment that "
+       PRINTD  HANDS
+       PRINTI  " is sitting in a "
+       PRINTD  WINE
+       PRINTC  46
+       CALL1   LEAVE-DARK
+       RSTACK  
+?CCL151:       EQUAL?  DARK-FLAG,INSIDE-WHALE \FALSE
+       EQUAL?  PRSA,V?RUB,V?EXAMINE \?CCL165
+       PRINTR  "It seems warmish."
+?CCL165:       EQUAL?  PRSA,V?DRINK,V?TASTE \FALSE
+       PRINTI  "Yucchhh! You are jerked to your senses by the realisation that you are licking the lining of a whale's stomach."
+       CALL1   LEAVE-DARK
+       RSTACK  
+?CCL142:       EQUAL?  DARK-FLAG,HOLD,LAIR \?CCL173
+       EQUAL?  PRSA,V?SMELL \?CCL173
+       EQUAL?  PRSO,DARK-OBJECT \?CCL173
+       CALL1   MISSING?
+       ZERO?   STACK /?CCL173
+       MOVE    SHADOW,HERE
+       SET     'P-IT-OBJECT,SHADOW
+       PRINTI  "It does smell a bit. There's something pungent "
+       EQUAL?  DARK-FLAG,HOLD \?PRG185
+       PRINTI  "being waved"
+       JUMP    ?PRG187
+?PRG185:       PRINTI  "waving"
+?PRG187:       PRINTR  " under your nose. Your head begins to clear. You can make out a shadow moving in the dark."
+?CCL173:       EQUAL?  PRSO,SHADOW /?PRD192
+       EQUAL?  PRSI,SHADOW \?CCL190
+?PRD192:       EQUAL?  PRSA,V?WALK /?CCL190
+       EQUAL?  DARK-FLAG,HOLD,LAIR /?CCL197
+       CALL2   CANT-SEE,SHADOW
+       RSTACK  
+?CCL197:       EQUAL?  PRSA,V?EXAMINE \?CCL199
+       PRINTI  "The shadow is vaguely "
+       ICALL1  BEAST-GUARD-FORD
+       PRINTI  "-shaped."
+       CALL1   LEAVE-DARK
+       RSTACK  
+?CCL199:       EQUAL?  PRSA,V?RUB \?CCL205
+       PRINTI  "The shadow turns out to be a solid object of a "
+       ICALL1  BEAST-GUARD-FORD
+       PRINTI  "-like nature."
+       CALL1   LEAVE-DARK
+       RSTACK  
+?CCL205:       EQUAL?  PRSA,V?SMELL \FALSE
+       PRINTI  "The shadow has a sort of "
+       ICALL1  BEAST-GUARD-FORD
+       PRINTI  "y smell to it."
+       CALL1   LEAVE-DARK
+       RSTACK  
+?CCL190:       INC     'DARK-COUNTER
+       ZERO?   DARK-CONTROLLED /?CND216
+       INC     'CURRENT-EXIT
+       EQUAL?  CURRENT-EXIT,8 \?CND218
+       SET     'CURRENT-EXIT,0
+?CND218:       GET     DARK-EXIT-TABLE,CURRENT-EXIT >DARK-FLAG
+?CND216:       EQUAL?  PRSA,V?LOOK \?CND220
+       PRINTI  "Dark"
+       CRLF    
+?CND220:       RANDOM  100
+       LESS?   25,STACK /?CCL226
+       ICALL1  DARK-ONE
+       ICALL1  FUCKING-CLEAR
+       JUMP    ?CND224
+?CCL226:       RANDOM  100
+       LESS?   33,STACK /?CCL228
+       ICALL1  DARK-TWO
+       ICALL1  FUCKING-CLEAR
+       JUMP    ?CND224
+?CCL228:       RANDOM  100
+       LESS?   50,STACK /?CCL230
+       ICALL1  DARK-THREE
+       ICALL1  FUCKING-CLEAR
+       JUMP    ?CND224
+?CCL230:       ICALL1  DARK-FOUR
+       ICALL1  FUCKING-CLEAR
+?CND224:       EQUAL?  DARK-COUNTER,18 \?CCL233
+       CRLF    
+       PRINTR  "When will you come to your senses and solve this puzzle?"
+?CCL233:       EQUAL?  DARK-COUNTER,33 \?CCL237
+       CRLF    
+       PRINTR  "4 out of 5 sensitive people solve this puzzle right away."
+?CCL237:       EQUAL?  DARK-COUNTER,48 \?CCL241
+       CRLF    
+       PRINTR  "Don't count your senses before they hatch."
+?CCL241:       EQUAL?  DARK-COUNTER,63 \TRUE
+       EQUAL?  DARK-FLAG,HOLD \TRUE
+       CRLF    
+       PRINTR  "Something stinks around here, and I'm not just talking about your puzzle-solving ability!"
+
+
+       .FUNCT  LEAVE-DARK
+       CRLF    
+       CRLF    
+       PUTP    PROTAGONIST,P?ACTION,PROTAGONIST-F
+       SET     'DARK-COUNTER,0
+       SET     'LYING-COUNTER,0
+       SET     'DARK-CONTROLLED,FALSE-VALUE
+       ICALL   ROB,DARK-OBJECT,PROTAGONIST
+       ICALL   ROB,MEMORIAL,PROTAGONIST
+       MOVE    SHADOW,LOCAL-GLOBALS
+       MOVE    PAINFUL-LIGHT,LOCAL-GLOBALS
+       MOVE    LIQUID,LOCAL-GLOBALS
+       MOVE    STAR-DRIVE,LOCAL-GLOBALS
+       ZERO?   FLUFF-TO-GOWN /?CND1
+       MOVE    SATCHEL-FLUFF,GOWN
+       SET     'FLUFF-TO-GOWN,FALSE-VALUE
+?CND1: EQUAL?  DARK-FLAG,WAR-CHAMBER \?CCL5
+       FSET?   WAR-CHAMBER,REVISITBIT \?CCL5
+       CALL    QUEUE,I-BRAIN-DEATH,6
+       PUT     STACK,0,1
+       CALL2   META-LOC,SPARE-DRIVE >HERE
+       MOVE    PROTAGONIST,HERE
+       MOVE    NAME,HERE
+       SET     'OHERE,FALSE-VALUE
+       SET     'GUTS-ROOM,HERE
+       PRINTI  "There is a violent explosion around you, leaving you standing in"
+       ICALL   ARTICLE,HERE,TRUE-VALUE
+       PRINTI  ". "
+       ICALL   PERFORM,V?EXAMINE,GROUND
+       CRLF    
+       PRINTI  "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."
+       CRLF    
+       JUMP    ?CND3
+?CCL5: EQUAL?  DARK-FLAG,SPEEDBOAT \?CCL15
+       FSET?   SPEEDBOAT,REVISITBIT \?CCL15
+       ICALL2  GOTO,DAIS
+       JUMP    ?CND3
+?CCL15:        EQUAL?  DARK-FLAG,ENTRY-BAY /?CND18
+       MOVE    MAIN-DRIVE,LOCAL-GLOBALS
+?CND18:        ICALL2  GOTO,DARK-FLAG
+?CND3: SET     'DARK-FLAG,FALSE-VALUE
+       RTRUE   
+
+
+       .FUNCT  MISSING?
+       ZERO?   DARK-CONTROLLED \TRUE
+       GRTR?   DARK-COUNTER,3 /TRUE
+       RFALSE  
+
+
+       .FUNCT  DARK-ONE
+       PRINTI  "You can "
+       CALL1   MISSING?
+       ZERO?   STACK /?PRG7
+       EQUAL?  DARK-FLAG,WAR-CHAMBER,ENTRY-BAY /?CND3
+?PRG7: PRINTI  "hear nothing, "
+?CND3: CALL1   MISSING?
+       ZERO?   STACK /?PRG13
+       EQUAL?  DARK-FLAG,HOLD,LAIR /?PRG15
+?PRG13:        PRINTI  "smell nothing, "
+?PRG15:        PRINTI  "taste nothing, "
+       CALL1   MISSING?
+       ZERO?   STACK /?PRG21
+       EQUAL?  DARK-FLAG,COUNTRY-LANE,SPEEDBOAT /?CND17
+?PRG21:        PRINTI  "see nothing, "
+?CND17:        CALL1   MISSING?
+       ZERO?   STACK /?PRG27
+       EQUAL?  DARK-FLAG,LIVING-ROOM,INSIDE-WHALE /?PRG29
+?PRG27:        PRINTI  "feel nothing, "
+?PRG29:        PRINTR  "and are not even certain who you are."
+
+
+       .FUNCT  DARK-TWO
+       PRINTI  "You can "
+       CALL1   MISSING?
+       ZERO?   STACK /?PRG7
+       EQUAL?  DARK-FLAG,COUNTRY-LANE,SPEEDBOAT /?CND3
+?PRG7: PRINTI  "see nothing, "
+?CND3: CALL1   MISSING?
+       ZERO?   STACK /?PRG13
+       EQUAL?  DARK-FLAG,LIVING-ROOM,INSIDE-WHALE /?CND9
+?PRG13:        PRINTI  "feel nothing, "
+?CND9: CALL1   MISSING?
+       ZERO?   STACK /?PRG19
+       EQUAL?  DARK-FLAG,WAR-CHAMBER,ENTRY-BAY /?PRG21
+?PRG19:        PRINTI  "hear nothing, "
+?PRG21:        PRINTI  "taste nothing, "
+       CALL1   MISSING?
+       ZERO?   STACK /?PRG27
+       EQUAL?  DARK-FLAG,HOLD,LAIR /?PRG29
+?PRG27:        PRINTI  "smell nothing, "
+?PRG29:        PRINTR  "and are not entirely certain who you are."
+
+
+       .FUNCT  DARK-THREE
+       PRINTI  "You can't "
+       CALL1   MISSING?
+       ZERO?   STACK /?PRG7
+       EQUAL?  DARK-FLAG,WAR-CHAMBER,ENTRY-BAY /?CND3
+?PRG7: PRINTI  "hear anything, "
+?CND3: CALL1   MISSING?
+       ZERO?   STACK /?PRG13
+       EQUAL?  DARK-FLAG,COUNTRY-LANE,SPEEDBOAT /?CND9
+?PRG13:        PRINTI  "see anything, "
+?CND9: CALL1   MISSING?
+       ZERO?   STACK /?PRG19
+       EQUAL?  DARK-FLAG,HOLD,LAIR /?CND15
+?PRG19:        PRINTI  "smell anything, "
+?CND15:        CALL1   MISSING?
+       ZERO?   STACK /?PRG25
+       EQUAL?  DARK-FLAG,LIVING-ROOM,INSIDE-WHALE /?PRG27
+?PRG25:        PRINTI  "feel anything, "
+?PRG27:        PRINTR  "or taste anything, and do not even know where you are or who you are or how you got there."
+
+
+       .FUNCT  DARK-FOUR
+       PRINTI  "There's nothing you can taste, "
+       CALL1   MISSING?
+       ZERO?   STACK /?PRG7
+       EQUAL?  DARK-FLAG,COUNTRY-LANE,SPEEDBOAT /?CND3
+?PRG7: PRINTI  "nothing you can see, "
+?CND3: CALL1   MISSING?
+       ZERO?   STACK /?PRG13
+       EQUAL?  DARK-FLAG,WAR-CHAMBER,ENTRY-BAY /?CND9
+?PRG13:        PRINTI  "nothing you can hear, "
+?CND9: CALL1   MISSING?
+       ZERO?   STACK /?PRG19
+       EQUAL?  DARK-FLAG,LIVING-ROOM,INSIDE-WHALE /?CND15
+?PRG19:        PRINTI  "nothing you can feel, "
+?CND15:        CALL1   MISSING?
+       ZERO?   STACK /?PRG25
+       EQUAL?  DARK-FLAG,HOLD,LAIR /?PRG27
+?PRG25:        PRINTI  "nothing you can smell, "
+?PRG27:        PRINTR  "you do not even know who you are."
+
+
+       .FUNCT  BEAST-GUARD-FORD
+       EQUAL?  DARK-FLAG,LAIR \?CCL3
+       PRINTI  "Bugblatter Beast"
+       RTRUE   
+?CCL3: FSET?   HOLD,REVISITBIT \?PRG10
+       PRINTI  "guard"
+       RTRUE   
+?PRG10:        PRINTD  FORD
+       RTRUE   
+
+
+       .FUNCT  I-BRAIN-DEATH
+       CRLF    
+       PRINTI  "The "
+       PRINTD  ARTHUR
+       ICALL2  JIGS-UP,STR?172
+       RTRUE   
+
+
+       .FUNCT  TOOTHBRUSH-F
+       EQUAL?  PRSA,V?TAKE \FALSE
+       FSET?   TOOTHBRUSH,TOUCHBIT /FALSE
+       MOVE    TOOTHBRUSH,PROTAGONIST
+       FSET    TOOTHBRUSH,TOUCHBIT
+       FCLEAR  TOOTHBRUSH,TRYTAKEBIT
+       PRINTI  "As you pick up the "
+       PRINTD  TOOTHBRUSH
+       PRINTI  " a tree outside the window collapses. There is no causal relationship between these two events."
+       FSET?   PHONE,TOUCHBIT \?CND8
+       ICALL1  TWO-TREES
+?CND8: CRLF    
+       RTRUE   
+
+
+       .FUNCT  LIQUID-SPILL
+       EQUAL?  PRSI,PLANT,FLOWERPOT \?CCL3
+       ICALL   PERFORM,V?WATER,PRSI,PRSO
+       RTRUE   
+?CCL3: MOVE    PRSO,LOCAL-GLOBALS
+       EQUAL?  PRSO,BROWNIAN-SOURCE \?CCL6
+       SET     'BROWNIAN-SOURCE,FALSE-VALUE
+       JUMP    ?PRG8
+?CCL6: EQUAL?  PRSO,PANEL-BLOCKER \?PRG8
+       SET     'PANEL-BLOCKER,FALSE-VALUE
+?PRG8: PRINTI  "It spills all over and then evaporates."
+       EQUAL?  PRSO,MINERAL-WATER \?CCL12
+       ICALL2  ANTI-LITTER,STR?173
+       JUMP    ?CND10
+?CCL12:        ICALL2  ANTI-LITTER,STR?10
+?CND10:        CRLF    
+       RTRUE   
+
+
+       .FUNCT  ANTI-LITTER,STRING
+       PRINTI  " The "
+       PRINT   STRING
+       PRINTI  " itself vaporises, part of the Galactic Anti-Litter Program."
+       RTRUE   
+
+
+       .FUNCT  TEA-DESCFCN,X
+       CALL2   DESCRIBE-DRINK,TEA
+       RSTACK  
+
+
+       .FUNCT  DESCRIBE-DRINK,DRINK
+       PRINTI  "There is a nice, hot cup of "
+       PRINTD  DRINK
+       PRINTR  " here."
+
+
+       .FUNCT  TEA-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       EQUAL?  PRSO,TEA \?CCL3
+       MOVE    TEA,PROTAGONIST
+       SET     'HOLDING-NO-TEA,FALSE-VALUE
+       PRINTR  "no tea: Dropped."
+?CCL3: EQUAL?  PRSA,V?DROP \?CCL9
+       MOVE    TEA,HERE
+       EQUAL?  HERE,ACCESS-SPACE \?CCL12
+       SET     'HOLDING-NO-TEA,TRUE-VALUE
+       CALL1   V-DROP
+       RSTACK  
+?CCL12:        ZERO?   HOLDING-NO-TEA /?CCL14
+       PRINTR  "Dropped."
+?CCL14:        SET     'HOLDING-NO-TEA,TRUE-VALUE
+       PRINTR  "no tea: Taken."
+?CCL9: EQUAL?  PRSA,V?DRINK-FROM,V?ENJOY,V?DRINK \?CCL20
+       CALL2   HELD?,PRSO
+       ZERO?   STACK \?CND21
+       PRINT   NOT-HOLDING
+       PRINTR  " the cup!"
+?CND21:        ADD     SCORE,100 >SCORE
+       MOVE    TEA,LOCAL-GLOBALS
+       SET     'HOLDING-NO-TEA,TRUE-VALUE
+       EQUAL?  TEA,BROWNIAN-SOURCE \?PRG27
+       SET     'BROWNIAN-SOURCE,FALSE-VALUE
+?PRG27:        PRINTI  "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."
+       ICALL2  ANTI-LITTER,STR?10
+       CRLF    
+       RTRUE   
+?CCL20:        EQUAL?  PRSA,V?THROW,V?POUR \?CCL30
+       CALL1   LIQUID-SPILL
+       RSTACK  
+?CCL30:        EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
+       PRINT   IT-LOOKS-LIKE
+       PRINTI  " it has even more"
+       PRINT   BROWNIAN
+       PRINTI  " than "
+       PRINTD  SUBSTITUTE
+       PRINTC  33
+       EQUAL?  PRSO,BROWNIAN-SOURCE \?CCL37
+       PRINTC  32
+       ICALL   PERFORM,V?EXAMINE,DANGLY-BIT
+       RTRUE   
+?CCL37:        CRLF    
+       RTRUE   
+
+
+       .FUNCT  NO-TEA-F
+       EQUAL?  PRSA,V?DROP,V?PICK-UP,V?TAKE \?CCL3
+       EQUAL?  PRSO,NO-TEA \?CCL3
+       FSET?   PARTICLE,MUNGEDBIT /?CCL3
+       PRINTR  "Your common sense tells you that you can't do that."
+?CCL3: EQUAL?  PRSA,V?PICK-UP,V?TAKE \?CCL10
+       EQUAL?  PRSO,NO-TEA \?CCL10
+       ZERO?   HOLDING-NO-TEA \?CCL10
+       SET     'HOLDING-NO-TEA,TRUE-VALUE
+       PRINTR  "no tea: Taken."
+?CCL10:        EQUAL?  PRSA,V?GIVE,V?SHOW \?CCL17
+       EQUAL?  PRSI,SCREENING-DOOR /FALSE
+?CCL17:        EQUAL?  PRSA,V?ASK-ABOUT \?CCL21
+       EQUAL?  PRSO,GUIDE /FALSE
+?CCL21:        EQUAL?  PRSA,V?ASK-FOR \?PRG28
+       EQUAL?  PRSO,NUTRIMAT \?PRG28
+       ICALL   PERFORM,V?RUB,PAD
+       RTRUE   
+?PRG28:        PRINTR  "You're talking complete nonsense; pull yourself together."
+
+
+       .FUNCT  TEA-PRINT,OBJ
+       EQUAL?  OBJ,TEA,NO-TEA \TRUE
+       EQUAL?  PRSA,V?SHOW /TRUE
+       EQUAL?  OBJ,TEA \?CCL7
+       EQUAL?  PRSA,V?TAKE \?CCL10
+       CALL2   HELD?,TEA
+       ZERO?   STACK \TRUE
+       ZERO?   PRSI /FALSE
+       LOC     PRSO
+       EQUAL?  PRSI,STACK /FALSE
+       RTRUE   
+?CCL10:        EQUAL?  PRSA,V?DROP \FALSE
+       ZERO?   HOLDING-NO-TEA /FALSE
+       RFALSE  
+?CCL7: EQUAL?  OBJ,NO-TEA \TRUE
+       EQUAL?  PRSA,V?TAKE \TRUE
+       ZERO?   HOLDING-NO-TEA \TRUE
+       RFALSE  
+
+
+       .FUNCT  THUMB-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "The "
+       PRINTD  THUMB
+       PRINTI  " is shaped like a small fist with an extended thumb. Various lights along its ""knuckles"" are currently "
+       IN?     FLEET,HERE /?PRG11
+       EQUAL?  HERE,AIRLOCK,INSIDE-WHALE \?PRG13
+?PRG11:        PRINTI  "blinking wildly, indicating a spaceship in the vicinity"
+       JUMP    ?PRG15
+?PRG13:        PRINTI  "dark"
+?PRG15:        PRINTI  ". It has two small buttons, a red one labelled ""Call Engineer"" and a green one labelled ""Hitchhike."""
+       ICALL1  FINE-PRODUCT
+       PRINTI  " Affixed to the Thumb is a lifetime "
+       PRINTD  GUARANTEE
+       PRINTR  "."
+?CCL3: EQUAL?  PRSA,V?TAKE \?CCL20
+       EQUAL?  IDENTITY-FLAG,FORD \?CCL20
+       IN?     FLEET,HERE \?CCL20
+       IN?     THUMB,SATCHEL /?CCL20
+       PRINT   DRIVEN-BACK
+       CRLF    
+       RTRUE   
+?CCL20:        EQUAL?  PRSA,V?LOOK-INSIDE,V?CLOSE,V?OPEN \FALSE
+       PRINTR  "Impossible."
+
+
+       .FUNCT  RED-BUTTON-F
+       EQUAL?  PRSA,V?PUSH \FALSE
+       CALL2   HELD?,THUMB
+       ZERO?   STACK \?CCL6
+       ICALL   PERFORM,V?PUSH,GREEN-BUTTON
+       RTRUE   
+?CCL6: IN?     ENGINEER,HERE \?CCL8
+       PRINTI  "Another "
+       PRINTD  ENGINEER
+       PRINTR  " zips up, spots the first one, looks confused, and leaves again."
+?CCL8: MOVE    ENGINEER,HERE
+       MOVE    BIKE,HERE
+       CALL    QUEUE,I-ENGINEER,2
+       PUT     STACK,0,1
+       PRINTI  "With a screech of ion brakes a "
+       PRINT   SCC
+       PRINTR  " Repair Robot pulls up on a bike from out of the Sub-Etha."
+
+
+       .FUNCT  GREEN-BUTTON-F
+       EQUAL?  PRSA,V?PUSH \FALSE
+       CALL2   HELD?,THUMB
+       ZERO?   STACK \?CCL6
+       PRINT   NOT-HOLDING
+       PRINTI  " the "
+       PRINTD  THUMB
+       PRINTC  46
+       CRLF    
+       SET     'P-IT-OBJECT,THUMB
+       RETURN  P-IT-OBJECT
+?CCL6: EQUAL?  IDENTITY-FLAG,FORD \?CCL10
+       IN?     FLEET,HERE \?CCL10
+       MOVE    THUMB,HERE
+       PRINT   THUMB-FUMBLE
+       CRLF    
+       RTRUE   
+?CCL10:        FSET?   THUMB,MUNGEDBIT \?CCL16
+       PRINTI  "The"
+       PRINT   THUMB-CLICKS
+       CRLF    
+       RTRUE   
+?CCL16:        IN?     FLEET,HERE \?CCL20
+       EQUAL?  DRUNK-LEVEL,3 \?PRG26
+       PRINTI  "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..."
+       CRLF    
+       CRLF    
+       ICALL1  LEAVE-EARTH
+       CALL2   GOTO,DARK
+       RSTACK  
+?PRG26:        PRINTC  65
+       PRINT   BEAM
+       ICALL2  JIGS-UP,STR?174
+       RTRUE   
+?CCL20:        EQUAL?  HERE,AIRLOCK,INSIDE-WHALE \?CCL29
+       PRINTI  "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..."
+       CRLF    
+       CRLF    
+       SET     'HEART-PROB,100
+       CALL2   GOTO,DARK
+       RSTACK  
+?CCL29:        FSET    THUMB,MUNGEDBIT
+       PRINTR  "The Thumb winks and flashes for a second. Nothing further happens."
+
+
+       .FUNCT  GUARANTEE-F
+       EQUAL?  PRSA,V?EXAMINE,V?READ \FALSE
+       PRINTI  "The lifetime "
+       PRINTD  GUARANTEE
+       PRINTI  " states that the Thumb will be repaired on site by trained "
+       PRINT   SCC
+       PRINTR  " Field Engineers."
+
+
+       .FUNCT  ENGINEER-F
+       EQUAL?  ENGINEER,WINNER \?CCL3
+       CALL    QUEUE,I-ENGINEER,2
+       PUT     STACK,0,1
+       EQUAL?  PRSA,V?TELL-ABOUT \?CCL6
+       EQUAL?  PRSO,ME \?CCL6
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?ASK-ABOUT,ENGINEER,PRSI
+       SET     'WINNER,ENGINEER
+       RTRUE   
+?CCL6: EQUAL?  PRSA,V?HELLO \?CCL10
+       SET     'WINNER,PROTAGONIST
+       ICALL   PERFORM,V?HELLO,ENGINEER
+       SET     'WINNER,ENGINEER
+       RTRUE   
+?CCL10:        EQUAL?  PRSA,V?REPAIR \?CCL12
+       EQUAL?  PRSO,THUMB \?CCL12
+       IN?     THUMB,ENGINEER \?CND15
+       PRINTR  """I'm doing my best..."""
+?CND15:        SET     'WINNER,PROTAGONIST
+       MOVE    THUMB,PROTAGONIST
+       ICALL   PERFORM,V?GIVE,THUMB,ENGINEER
+       SET     'WINNER,ENGINEER
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?REPAIR \?CCL20
+       PRINTI  """I repair only "
+       PRINTD  THUMB
+       PRINTR  "s!"""
+?CCL20:        EQUAL?  PRSA,V?YES \?CCL24
+       EQUAL?  AWAITING-REPLY,12 \?CCL24
+       CALL1   V-YES
+       RSTACK  
+?CCL24:        EQUAL?  PRSA,V?NO \?PRG31
+       EQUAL?  AWAITING-REPLY,12 \?PRG31
+       CALL1   V-NO
+       RSTACK  
+?PRG31:        PRINTI  """Can't chat, pal, I'm attending to an important repair call."""
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?SHOW,V?GIVE \?CCL34
+       EQUAL?  PRSO,THUMB \?CCL34
+       FSET?   THUMB,MUNGEDBIT \?CCL39
+       CALL    QUEUE,I-ENGINEER,2
+       PUT     STACK,0,1
+       SET     'THUMB-SHOWN,1
+       MOVE    THUMB,ENGINEER
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTI  " takes it, looks at it with horror, shakes his head, sighs, and says, ""Who sold you this then?"""
+       CRLF    
+       CRLF    
+       PRINTC  62
+       PUTB    P-INBUF,1,0
+       READ    P-INBUF,P-LEXV
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTR  " 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."""
+?CCL39:        MOVE    THUMB,PROTAGONIST
+       ICALL1  ENGINEER-LEAVE
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTI  " 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"
+       PRINT   ROARS-OFF
+       PRINTR  "."
+?CCL34:        EQUAL?  PRSA,V?SHOW,V?GIVE \FALSE
+       EQUAL?  PRSO,GUARANTEE \FALSE
+       FSET?   THUMB,MUNGEDBIT /?CND50
+       ICALL   PERFORM,V?GIVE,THUMB,ENGINEER
+       RTRUE   
+?CND50:        FCLEAR  THUMB,MUNGEDBIT
+       ICALL1  ENGINEER-LEAVE
+       MOVE    THUMB,PROTAGONIST
+       ZERO?   THUMB-SHOWN \?CCL54
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTI  " looks quizzically at the "
+       PRINTD  GUARANTEE
+       PRINTI  " and says it's expired but he'll see what he can do. "
+       PRINT   FIDDLES
+       PRINTI  """Can't promise anything."" He"
+       PRINT   ROARS-OFF
+       PRINTR  "."
+?CCL54:        SET     'THUMB-SHOWN,0
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTI  " 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."""
+       CRLF    
+       CRLF    
+       PRINT   FIDDLES
+       PRINTI  """Best I can do for a 13X on an expired "
+       PRINTD  GUARANTEE
+       PRINTI  ","" he says. ""Can't promise anything."" He"
+       PRINT   ROARS-OFF
+       PRINTR  "."
+
+
+       .FUNCT  ENGINEER-LEAVE
+       IN?     THUMB,ENGINEER \?CND1
+       IN?     ENGINEER,HERE \?CCL5
+       MOVE    THUMB,PROTAGONIST
+       JUMP    ?CND1
+?CCL5: LOC     ENGINEER
+       MOVE    THUMB,STACK
+?CND1: MOVE    ENGINEER,LOCAL-GLOBALS
+       MOVE    BIKE,LOCAL-GLOBALS
+       CALL2   INT,I-ENGINEER
+       PUT     STACK,0,0
+       SET     'THUMB-SHOWN,0
+       SET     'ENGINEER-COUNTER,0
+       RETURN  ENGINEER-COUNTER
+
+
+       .FUNCT  I-ENGINEER
+       CALL    QUEUE,I-ENGINEER,-1
+       PUT     STACK,0,1
+       INC     'ENGINEER-COUNTER
+       IN?     ENGINEER,HERE /?CND1
+       ICALL1  ENGINEER-LEAVE
+       RFALSE  
+?CND1: CRLF    
+       EQUAL?  THUMB-SHOWN,1 \?CCL5
+       SET     'THUMB-SHOWN,2
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTR  " ignores you completely. ""See, this is the model with the 5kz booster,"" he says. ""Hopeless."" He shakes his head grimly."
+?CCL5: EQUAL?  THUMB-SHOWN,2 \?CCL9
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTI  " 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"
+       IN?     THUMB,ENGINEER \?CND12
+       PRINTI  " gives the defunct Thumb back and"
+?CND12:        ICALL1  ENGINEER-LEAVE
+       PRINT   ROARS-OFF
+       PRINTR  "."
+?CCL9: EQUAL?  ENGINEER-COUNTER,1 \?CCL19
+       SET     'AWAITING-REPLY,12
+       CALL    QUEUE,I-REPLY,2
+       PUT     STACK,0,1
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTR  " looks around. ""Somebody call the repair service?"""
+?CCL19:        EQUAL?  ENGINEER-COUNTER,2 \?CCL23
+       PRINTI  "The "
+       PRINTD  ENGINEER
+       PRINTR  " looks impatient and guns the throttle of his cycle."
+?CCL23:        ICALL1  ENGINEER-LEAVE
+       PRINTI  """Probably a kid playing around with someone else's Thumb,"" grumbles the "
+       PRINTD  ENGINEER
+       PRINTI  " and"
+       PRINT   ROARS-OFF
+       PRINTR  "."
+
+
+       .FUNCT  GUIDE-DESCFCN,X
+       PRINTI  "There is a copy of "
+       PRINT   GUIDE-NAME
+       PRINTR  " here."
+
+
+       .FUNCT  GUIDE-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTR  "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."
+?CCL3: EQUAL?  PRSA,V?ASK-ABOUT \FALSE
+       EQUAL?  PRSO,GUIDE \FALSE
+       FSET?   TOWEL,WORNBIT \?CCL12
+       PRINT   WITH-TOWEL
+       CRLF    
+       RTRUE   
+?CCL12:        EQUAL?  PRSI,ACCESS-SPACE \?PRG18
+       PRINTI  "Suddenly, agents of the "
+       PRINT   AGENCY
+       PRINTI  " pop in using Sub-Etha belts, rough you up a bit, tell you there's no such thing as the "
+       PRINT   AGENCY
+       PRINTI  " and never to consult "
+       PRINTD  GUIDE
+       PRINTI  " about the "
+       PRINT   AGENCY
+       PRINTR  " again; then they leave."
+?PRG18:        PRINTI  "The Guide checks through its Sub-Etha-Net database and eventually comes up with the following entry:"
+       CRLF    
+       CRLF    
+       EQUAL?  PRSI,GUIDE \?CCL22
+       PRINTD  GUIDE
+       PRINTI  " is a wholly remarkable product."
+       PRINT   ALREADY-KNOW-THAT
+       CRLF    
+       RTRUE   
+?CCL22:        EQUAL?  PRSI,LARGE-PLUG,SMALL-RECEPTACLE,DANGLY-BIT /?PRG29
+       EQUAL?  PRSI,RED-BUTTON,GREEN-BUTTON,SMALL-PLUG \?CCL26
+?PRG29:        PRINTI  "Part of"
+       EQUAL?  PRSI,LARGE-PLUG \?CCL33
+       IN?     LARGE-PLUG,SPARE-DRIVE /?CCL33
+       ICALL2  ARTICLE,SPARE-DRIVE
+       JUMP    ?PRG36
+?CCL33:        LOC     PRSI
+       ICALL2  ARTICLE,STACK
+?PRG36:        PRINTR  "."
+?CCL26:        EQUAL?  PRSI,WAR-CHAMBER \?CCL39
+       PRINTR  "If you have to consult the Guide about that, you're probably in serious shape. Consult a medic instead."
+?CCL39:        EQUAL?  PRSI,DAMOGRAN \?CCL43
+       PRINTD  DAMOGRAN
+       PRINTI  " is a planet whose surface is mostly water. It is a favourite spot for Presidential dedication ceremonies"
+       PRINT   ALSO-SEE
+       PRINTR  "France."
+?CCL43:        EQUAL?  PRSI,CLIFF \?CCL47
+       PRINTI  "France is the largest landmass on the planet "
+       PRINTD  DAMOGRAN
+       PRINTR  "."
+?CCL47:        EQUAL?  PRSI,HEART-OF-GOLD \?CCL51
+       PRINTI  "There is absolutely no such spaceship as "
+       PRINTD  HEART-OF-GOLD
+       PRINTI  " and anything you've ever read in this spot to the contrary was just a prank.
+   -- "
+       PRINT   AGENCY
+       CRLF    
+       RTRUE   
+?CCL51:        EQUAL?  PRSI,POETRY \?CCL55
+       PRINTD  POETRY
+       PRINTI  " 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 "
+       PRINTD  POETRY
+       PRINTR  " reading."
+?CCL55:        EQUAL?  PRSI,FLEET,VOGON-CAPTAIN \?CCL59
+       PRINTI  "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 "
+       PRINTD  BEAST
+       PRINT   ALSO-SEE
+       PRINTD  POETRY
+       PRINTI  " and the "
+       PRINTD  BEAST
+       PRINTR  "."
+?CCL59:        EQUAL?  PRSI,PUB,BEER \?CCL63
+       PRINTI  "Alcohol, in addition to its familiar enjoyable effects, also helps cushion the shock of"
+       PRINT   BEAM
+       PRINTR  "s."
+?CCL63:        EQUAL?  PRSI,BRIDGE \?CCL67
+       PRINTI  "The best randomness generator is simple"
+       PRINT   BROWNIAN
+       PRINTR  ". Any hot gas or liquid is a good source."
+?CCL67:        EQUAL?  PRSI,GALLEY \?CCL71
+       PRINTI  "The "
+       PRINT   SCC
+       PRINTR  " 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.)"
+?CCL71:        EQUAL?  PRSI,PANTRY \?CCL75
+       PRINTI  "Thirty million generations of philosophers have debated the definition of intelligence. The most popular definition appears in the "
+       PRINT   SCC
+       PRINTR  " 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."""
+?CCL75:        EQUAL?  PRSI,SCREENING-DOOR \?CCL79
+       PRINTI  "These "
+       PRINT   SCC
+       PRINTI  " doors screen visitors for such qualities as intelligence and ability to time travel"
+       PRINT   ALSO-SEE
+       PRINT   SCC
+       PRINTI  ", "
+       PRINT   GPP
+       PRINTR  ", Intelligence, and Time Travel."
+?CCL79:        EQUAL?  PRSI,EDDIE,MARVIN,HATCHWAY \?CCL83
+       PRINT   GPP
+       PRINTI  " are a misguided attempt by the "
+       PRINT   SCC
+       PRINTR  " to make their machines behave more like people. Among the more miserable failures: paranoid-depressive robots and overprotective computers."
+?CCL83:        EQUAL?  PRSI,DARK \?CCL87
+       PRINTR  "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."
+?CCL87:        EQUAL?  PRSI,RAMP \?CCL91
+       PRINTI  "According to legend, Magrathea was a planet that amassed incredible wealth by manufacturing "
+       PRINTD  OTHER-PLANETS
+       PRINTR  ". The legends also mention it as the setting of the very eagerly awaited second Infocom Hitchhiker's game."
+?CCL91:        EQUAL?  PRSI,SPARE-DRIVE,MAIN-DRIVE,ENGINE-ROOM \?CCL95
+       PRINTI  "Scientists have long known how to produce FINITE amounts of improbability, using a "
+       PRINT   FIG
+       PRINTI  ", an "
+       PRINTD  PLOTTER
+       PRINTI  " and a good source of"
+       PRINT   BROWNIAN
+       PRINTI  ". Recently, however, they have learned to generate INFINITE amounts, thanks to the invention of the In"
+       PRINT   FIG
+       PRINTI  ". It is rumored that an"
+       PRINT   IID
+       PRINTI  ", based on this new generator, is currently under development"
+       PRINT   ALSO-SEE
+       PRINTD  PLOTTER
+       PRINTI  " and"
+       PRINT   BROWNIAN
+       PRINTR  "."
+?CCL95:        EQUAL?  PRSI,PLOTTER \?CCL99
+       PRINTI  "The "
+       PRINTD  PLOTTER
+       PRINTR  " is one of the primary application devices of Improbability Physics."
+?CCL99:        EQUAL?  PRSI,HOLD,PEANUTS \?CCL103
+       PRINTI  "Sources of protein, such as the common peanut, are carried by all serious hitchhikers. Protein loss occurs in"
+       PRINT   BEAM
+       PRINTR  "s and you will become groggy unless you replace it immediately."
+?CCL103:       EQUAL?  PRSI,NUT-COM-INTERFACE,NUTRIMAT \?CCL107
+       PRINTI  "A typically unreliable "
+       PRINT   SCC
+       PRINTI  " product, the "
+       PRINTD  NUTRIMAT
+       PRINTR  " 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."
+?CCL107:       EQUAL?  PRSI,SATCHEL-FLUFF,JACKET-FLUFF,POCKET-FLUFF /?PRG114
+       EQUAL?  PRSI,CUSHION-FLUFF \?CCL111
+?PRG114:       PRINTR  "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."
+?CCL111:       EQUAL?  PRSI,ZAPHOD /?PRG122
+       EQUAL?  PRSI,ME \?CCL117
+       EQUAL?  IDENTITY-FLAG,ZAPHOD \?CCL117
+?PRG122:       PRINTD  ZAPHOD
+       PRINTI  " is the current"
+       PRINT   PRESIDENT
+       PRINTR  "."
+?CCL117:       EQUAL?  PRSI,BABEL-FISH \?CCL125
+       PRINTI  "A mind-bogglingly improbable creature. A "
+       PRINTD  BABEL-FISH
+       PRINTR  ", when placed in one's ear, allows one to understand any language."
+?CCL125:       EQUAL?  PRSI,TOWEL \?CCL129
+       PRINTR  "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."
+?CCL129:       EQUAL?  PRSI,GUARANTEE,THUMB \?CCL133
+       PRINTI  "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 "
+       PRINT   SCC
+       PRINTI  " lifetime "
+       PRINTD  GUARANTEE
+       PRINTR  "s."
+?CCL133:       EQUAL?  PRSI,MINERAL-WATER \?CCL137
+       PRINTR  "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."
+?CCL137:       EQUAL?  PRSI,BEAST \?CCL141
+       PRINTI  "The "
+       PRINTD  BEAST
+       PRINTR  " 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."
+?CCL141:       EQUAL?  PRSI,FRONT-PORCH \?CCL145
+       PRINTI  "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"
+       PRINT   ALSO-SEE
+       PRINTR  "Galaxia Woonbeam, Alcohol and Protein."
+?CCL145:       EQUAL?  PRSI,FRONT-OF-HOUSE \?CCL149
+       PRINTR  "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."
+?CCL149:       EQUAL?  PRSI,ENTRY-BAY \?CCL153
+       PRINTR  "The best drink in existence; somewhat like having your brains smashed out by a slice of lemon wrapped around a large gold brick."
+?CCL153:       EQUAL?  PRSI,MAZE,THIRD-PLANET \?CCL157
+       PRINTR  "Mostly harmless."
+?CCL157:       EQUAL?  PRSI,COUNTRY-LANE \?CCL161
+       PRINT   SPACE-TEXT
+       CRLF    
+       RTRUE   
+?CCL161:       FSET?   PRSI,TOOLBIT \?CCL165
+       PRINTR  "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."
+?CCL165:       EQUAL?  PRSI,BLASTER,RIFLES,BEDROOM /?PRG174
+       EQUAL?  PRSI,BEAST-GUN,NO-TEA,TEA /?PRG174
+       EQUAL?  PRSI,AIRLOCK,AFT-CORRIDOR,SUBSTITUTE /?PRG174
+       EQUAL?  PRSI,INSIDE-WHALE \?PRG176
+?PRG174:       PRINTR  "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."
+?PRG176:       PRINTR  "That is one of the Great Unanswered Questions. For a list of the others, consult the Guide."
+
+
+       .FUNCT  CANT-SEE,OBJ
+       PRINTI  "You can't see"
+       CALL2   NAME?,OBJ
+       ZERO?   STACK \?CND3
+       PRINTI  " any"
+?CND3: EQUAL?  OBJ,PRSO \?CCL9
+       ICALL1  PRSO-PRINT
+       JUMP    ?PRG10
+?CCL9: ICALL1  PRSI-PRINT
+?PRG10:        PRINTI  " here."
+       CRLF    
+       CALL1   FUCKING-CLEAR
+       RSTACK  
+
+
+       .FUNCT  TELL-ME-HOW
+       PRINTI  "You must tell me how to do that to"
+       ICALL2  ARTICLE,PRSO
+       PRINTR  "."
+
+
+       .FUNCT  OUT-OF-FIRST,VEHICLE
+       PRINTI  "You'll have to get out of the "
+       PRINTD  VEHICLE
+       PRINTR  " first."
+
+
+       .FUNCT  PRIVATE,STRING
+       PRINTI  "You can't. It's not yours. It's "
+       PRINT   STRING
+       PRINTR  "'s and it's private."
+
+
+       .FUNCT  NOT-VERY-GOOD,STRING
+       PRINTI  "It's not a very good "
+       PRINT   STRING
+       PRINTR  ", is it?"
+
+
+       .FUNCT  FACTOR,STRING
+       PRINTI  " at an improbability factor of 2 to the "
+       PRINT   STRING
+       PRINTI  "th power to 1 against."
+       RTRUE   
+
+
+       .FUNCT  REMOVING-BIT
+       PRINTI  "(removing the "
+       PRINTD  DANGLY-BIT
+       PRINTR  " first)"
+
+
+       .FUNCT  PART-OF
+       PRINTI  "You can't --"
+       ICALL   ARTICLE,PRSO,TRUE-VALUE
+       PRINTI  " is an integral part of"
+       LOC     PRSO
+       ICALL   ARTICLE,STACK,TRUE-VALUE
+       PRINTR  "."
+
+
+       .FUNCT  BUT-THAT-MAN,STRING
+       PRINTI  "Pointing toward Prosser, "
+       PRINT   STRING
+       PRINTI  ", ""But that man "
+       ZERO?   HOUSE-DEMOLISHED /?PRG8
+       PRINTI  "just knocked"
+       JUMP    ?PRG10
+?PRG8: PRINTI  "wants to knock"
+?PRG10:        PRINTI  " my house down!"""
+       RTRUE   
+
+
+       .FUNCT  CUSHION
+       PRINTI  " cushion your system against the coming shock of the"
+       PRINT   BEAM
+       PRINTC  46
+       RTRUE   
+
+
+       .FUNCT  FINE-PRODUCT
+       PRINTI  " It bears a small label which reads ""Another fine product of the "
+       PRINT   SCC
+       PRINTI  "."""
+       RTRUE   
+
+
+       .FUNCT  MAKE-WAY-FOR
+       PRINTI  " a "
+       PRINTD  FLEET
+       PRINTR  " unexpectedly arrives and demolishes the Earth to make way for a new hyperspace bypass."
+
+
+       .FUNCT  OWN-FEET
+       PRINTR  "You are now on your feet."
+
+       .ENDI
diff --git a/globals.zil b/globals.zil
new file mode 100644 (file)
index 0000000..ea808a3
--- /dev/null
@@ -0,0 +1,2304 @@
+"GLOBALS for
+                 THE HITCHHIKER'S GUIDE TO THE GALAXY
+       (c) Copyright 1984 Infocom, Inc.  All Rights Reserved."
+
+
+;"status line stuff"
+
+<CONSTANT S-TEXT 0>
+<CONSTANT S-WINDOW 1>
+
+<CONSTANT H-NORMAL 0>
+<CONSTANT H-INVERSE 1>
+<CONSTANT H-BOLD 2>
+<CONSTANT H-ITALIC 4>
+
+<CONSTANT D-SCREEN-ON 1>
+<CONSTANT D-SCREEN-OFF -1>
+<CONSTANT D-PRINTER-ON 2>
+<CONSTANT D-PRINTER-OFF -2>
+<CONSTANT D-TABLE-ON 3>
+<CONSTANT D-TABLE-OFF -3>
+<CONSTANT D-RECORD-ON 4>
+<CONSTANT D-RECORD-OFF -4>
+
+<GLOBAL HOST:NUMBER 0> "Host machine."
+<GLOBAL WIDTH:NUMBER 0> "Width of screen in chars."
+;<GLOBAL MIDSCREEN:NUMBER 0> "Center of screen."
+;<GLOBAL CWIDTH:NUMBER 0> "Pixel width of characters."
+;<GLOBAL CHEIGHT:NUMBER 0> "Pixel height of characters."
+
+<ROUTINE INIT-STATUS-LINE ()
+        <COND (<L? ,WIDTH 38>
+               <TELL "[Screen too narrow.]" CR>
+               <QUIT>)>
+        ;<SETG MIDSCREEN <+ </ ,WIDTH 2> 1>>
+        ;<SETG CHEIGHT <LOWCORE (FWRD 1)>>
+        <SETG OHERE <>>
+        <SETG OLD-LEN 0>
+        ;<SETG DO-WINDOW <>>
+        <SPLIT 1>
+        <SCREEN ,S-WINDOW>
+        <HLIGHT ,H-INVERSE>
+        <CURSET 1 1>    
+        ;<ERASE 1> ;"This semi by Jeff"
+        ;<PRINT-SPACES <LOWCORE SCRH>>
+        <PRINT-SPACES ,WIDTH>
+        <COND (<G? ,WIDTH 74>       ;"C-128 SCRH is 75 wide"
+               <CURSET 1 51>
+               <TELL "Score:">
+               <CURSET 1 64>
+               <TELL "Moves:">)>
+        <HLIGHT ,H-NORMAL>
+        <SCREEN ,S-TEXT>
+        <RTRUE>>
+
+<CONSTANT SL-TABLE:TABLE <ITABLE NONE 80>>   "status line constructed here"
+<GLOBAL OHERE:OBJECT <>>
+<GLOBAL OLD-LEN:NUMBER 0>
+
+;<GLOBAL MIDSCREEN:NUMBER 0>
+
+<ROUTINE UPDATE-STATUS-LINE ()
+        <SCREEN ,S-WINDOW>
+        ;<BUFOUT <>>
+        <HLIGHT ,H-NORMAL>
+        <HLIGHT ,H-INVERSE>
+        <COND (<NOT <EQUAL? ,HERE ,OHERE>>
+               <SETG OHERE ,HERE>
+               ;<DIROUT ,D-SCREEN-OFF>         ; "Screen off."
+               <DIROUT ,D-TABLE-ON ,SL-TABLE>  ; "Table on."
+               <SAY-HERE>
+               <DIROUT ,D-TABLE-OFF>           ; "Table off."
+               ;<DIROUT ,D-SCREEN-ON>          ; "Screen on."
+               <CURSET 1 2>
+               <PRINT-SPACES ,OLD-LEN>  ; "Erase old HERE desc"
+               <SETG OLD-LEN <GET ,SL-TABLE 0>> ; "Print new HERE desc."
+               <CURSET 1 2>
+               <SAY-HERE>)>
+        <COND (<G? ,WIDTH 74>      ;"C-128 is 75 wide"
+               <CURSET 1 58>
+               <TELL N ,SCORE " "> ;"space fixes 110 to 80 score bug"
+               <CURSET 1 71>
+               <TELL N ,MOVES>)
+              (T
+               <DIROUT ,D-TABLE-ON ,SL-TABLE>
+               <TELL N ,SCORE "/" N ,MOVES " "> ;"110 to 80 bug"
+               <DIROUT ,D-TABLE-OFF>
+               <CURSET 1 <- ,WIDTH <+ <GET ,SL-TABLE 0> 1>>>
+               <TELL N ,SCORE "/" N ,MOVES " ">)>  ;"110 to 80 bug"
+        <HLIGHT ,H-NORMAL>
+        <SCREEN ,S-TEXT>  ;"Back to main screen."
+        <RTRUE>>
+
+<ROUTINE PRINT-SPACES (CNT)
+        <REPEAT ()
+                <COND (<L? <SET CNT <- .CNT 1>> 0>
+                       <RETURN>)
+                      (T
+                       <PRINTC 32>)>>>
+
+<ROUTINE SAY-HERE ()
+        <COND (<ZERO? ,LIT>
+               <TELL "Darkness">)
+              (T
+               <TELL D ,HERE>
+               <COND (<G? ,WIDTH 74>
+                      <COND (<IN? ,PROTAGONIST ,POETRY-APPRECIATION-CHAIR>
+                             <TELL ", in the chair">)       
+                            (<NOT <IN? ,PROTAGONIST ,HERE>>
+                             <TELL ", in the " D <LOC ,PROTAGONIST>>)
+                            (,LYING-DOWN
+                             <TELL ", lying down">)>)>)>
+        <RTRUE>>
+
+<GLOBAL LYING-DOWN <>>
+
+<GLOBAL HERE <>>
+
+<GLOBAL LIT <>>
+
+<GLOBAL MOVES 0>
+
+<GLOBAL SCORE 0>
+
+<CONSTANT 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
+       (LOC GLOBAL-OBJECTS)
+       (SYNONYM ZZMGCK)
+       (DESCFCN 0)
+        (GLOBAL GLOBAL-OBJECTS)
+       (FDESC "F")
+       (LDESC "F")
+       (SIZE 0)
+       (TEXT "")
+       (CAPACITY 0)>
+;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
+
+<OBJECT FOOBAR
+       (LOC LOCAL-GLOBALS)
+       (SYNONYM FOOBAR)
+       (ACTION V-WALK)>
+
+<OBJECT ROOMS
+       (IN TO ROOMS)>
+
+<OBJECT IT
+       (LOC GLOBAL-OBJECTS)
+       (SYNONYM IT THEM HER HIM)
+       (DESC "it")
+       (FLAGS VOWELBIT NARTICLEBIT NDESCBIT TOUCHBIT)>
+
+<OBJECT INTNUM
+       (LOC GLOBAL-OBJECTS)
+       (DESC "number")
+       (SYNONYM INTNUM)
+       (ADJECTIVE NUMBER)>
+
+;<OBJECT PSEUDO-OBJECT
+       (DESC "pseudo")
+       (ACTION ME-F)>
+
+<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?CONVERSAT>
+                      <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-XADJ ;N ;"GTB">)>
+               <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
+       (LOC 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>
+                      <SET OHERE <>>
+                      <RTRUE>)>)
+              (<VERB? LAMP-OFF>
+               <V-DIG>)>>
+
+<OBJECT GLOBAL-SLEEP
+       (LOC 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
+       (LOC 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
+       (LOC 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>
+                      <SETG OHERE <>>
+                      <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
+       (LOC 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
+       (LOC GLOBAL-OBJECTS)
+       (FLAGS NDESCBIT TOUCHBIT)
+       (DESC "ceiling")
+       (SYNONYM CEILING 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
+       (LOC 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
+       (LOC LOCAL-GLOBALS)
+       (DESC "stairs")
+       (SYNONYM STAIR STAIRS STAIRWAY GANGWAY)
+       (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
+       (LOC GLOBAL-OBJECTS)
+       (DESC "air")
+       (SYNONYM AIR)
+       (FLAGS VOWELBIT)>
+
+<OBJECT SKY
+       (LOC 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
+       (LOC GLOBAL-OBJECTS)
+       (DESC "sun")
+       (SYNONYM STAR SUN SYSTEM SOL)
+       (ADJECTIVE APPROACHI STAR SOLAR SMALL UNREGARDE 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
+       (LOC 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
+       (LOC GLOBAL-OBJECTS)
+       (DESC "your teeth")
+       (SYNONYM TEETH TOOTH)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT HEAD
+       (LOC GLOBAL-OBJECTS)
+       (DESC "your head")
+       (SYNONYM HEAD FACE)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT EYES
+       (LOC 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
+       (LOC GLOBAL-OBJECTS)
+       (DESC "your ears")
+       (SYNONYM EAR EARS)
+       (ADJECTIVE YOUR MY)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT PROTAGONIST
+       (SYNONYM PROTAGONI)
+       (DESC "it")
+       (FLAGS NDESCBIT INVISIBLE)
+       (ACTION PROTAGONIST-F)>
+
+<ROUTINE PROTAGONIST-F ()
+        <COND (<AND <PRSO? ,NO-TEA>
+                    ,PRSI>
+               <NO-TEA-F>)>>
+
+<OBJECT ME
+       (LOC 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
+       (LOC 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
+       (LOC 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
+       (LOC LOCAL-GLOBALS)
+       (DESC "the controls")
+       (SYNONYM CONTROLS PANEL CONSOLE)
+       (ADJECTIVE CONTROL)
+       (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
+       (LOC LOCAL-GLOBALS)
+       (DESC "conversation")
+       (SYNONYM CONVERSAT)
+       (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
+       (LOC 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>
+                                      <NOT ,DONT-FLAG>
+                                      <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 photon rifles into a pile in front of you." CR>)
+                            (<VERB? SHOOT>
+                             <COND (<IN? ,RIFLES ,GUARDS>
+                                    <JIGS-UP
+"The air becomes thick with photon beams.">)
+                                   (T
+              &n