Release 296
authorhistoricalsource <historicalsoftware@textfiles.com>
Tue, 16 Apr 2019 13:52:54 +0000 (09:52 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Tue, 16 Apr 2019 13:52:54 +0000 (09:52 -0400)
81 files changed:
README.md [new file with mode: 0644]
castle.zabstr [new file with mode: 0644]
castle.zap [new file with mode: 0644]
castle.zil [new file with mode: 0644]
chess.zabstr [new file with mode: 0644]
chess.zap [new file with mode: 0644]
chess.zil [new file with mode: 0644]
clues.zap [new file with mode: 0644]
clues.zil [new file with mode: 0644]
constants.zil [new file with mode: 0644]
defs.zil [new file with mode: 0644]
defs2.zabstr [new file with mode: 0644]
defs2.zap [new file with mode: 0644]
defs2.zil [new file with mode: 0644]
fenshire.zabstr [new file with mode: 0644]
fenshire.zap [new file with mode: 0644]
fenshire.zil [new file with mode: 0644]
find.zap [new file with mode: 0644]
find.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]
gram.zil [new file with mode: 0644]
highway.zabstr [new file with mode: 0644]
highway.zap [new file with mode: 0644]
highway.zil [new file with mode: 0644]
hints.zil [new file with mode: 0644]
input.zabstr [new file with mode: 0644]
input.zap [new file with mode: 0644]
input.zil [new file with mode: 0644]
jester.zabstr [new file with mode: 0644]
jester.zap [new file with mode: 0644]
jester.zil [new file with mode: 0644]
lake.zabstr [new file with mode: 0644]
lake.zap [new file with mode: 0644]
lake.zil [new file with mode: 0644]
library.zabstr [new file with mode: 0644]
library.zap [new file with mode: 0644]
library.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]
oracle.zabstr [new file with mode: 0644]
oracle.zap [new file with mode: 0644]
oracle.zil [new file with mode: 0644]
parser.zap [new file with mode: 0644]
parser.zil [new file with mode: 0644]
pdefs.zil [new file with mode: 0644]
pic.zabstr [new file with mode: 0644]
pic.zap [new file with mode: 0644]
pic.zil [new file with mode: 0644]
picdef.zil [new file with mode: 0644]
pmem.zap [new file with mode: 0644]
pmem.zil [new file with mode: 0644]
prare.zap [new file with mode: 0644]
prare.zil [new file with mode: 0644]
prologue.zabstr [new file with mode: 0644]
prologue.zap [new file with mode: 0644]
prologue.zil [new file with mode: 0644]
pstack.zap [new file with mode: 0644]
pstack.zil [new file with mode: 0644]
reds.zap [new file with mode: 0644]
reds.zil [new file with mode: 0644]
syntax.zil [new file with mode: 0644]
top.zap [new file with mode: 0644]
top.zil [new file with mode: 0644]
verbs.zap [new file with mode: 0644]
verbs.zil [new file with mode: 0644]
village.zabstr [new file with mode: 0644]
village.zap [new file with mode: 0644]
village.zil [new file with mode: 0644]
zork0.errors [new file with mode: 0644]
zork0.pic [new file with mode: 0644]
zork0.zap [new file with mode: 0644]
zork0.zil [new file with mode: 0644]
zork0.zip [new file with mode: 0644]
zork0.zpic [new file with mode: 0644]
zork0dat.zap [new file with mode: 0644]
zork0freq.xzap [new file with mode: 0644]
zork0pur.zap [new file with mode: 0644]
zork0str.zap [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..2af701f
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# zorkzero
diff --git a/castle.zabstr b/castle.zabstr
new file mode 100644 (file)
index 0000000..d23159f
--- /dev/null
@@ -0,0 +1,1062 @@
+
+<BEGIN-SEGMENT CASTLE> 
+<ROOM GREAT-HALL (LOC ROOMS) (REGION "Flatheadia") (DESC "Great Hall") (LDESC
+"This is the huge central chamber of Dimwit's castle. The ceiling was
+lowered at some point in the past, which helped reduce the frequency of
+storm clouds forming in the upper regions of the hall. Arched openings
+lead off in the four cardinal directions. A wide stair leads up to the
+balcony, and an equally wide but ominously dark stair leads downward.") (NORTH
+TO ENTRANCE-HALL) (SOUTH TO AUDIENCE-CHAMBER) (EAST TO COURTYARD) (WEST TO
+FORMAL-GARDEN) (UP TO BALCONY) (DOWN PER LOWER-HALL-ENTER-F) (FLAGS RLANDBIT
+ONBIT) (GLOBAL STAIRS BANNER) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4
+MAP-GEN-X-5>)> 
+<DEFINE-ROUTINE LOWER-HALL-ENTER-F> 
+<OBJECT CALENDAR (DESC "calendar") (LDESC
+"A calendar for 883 GUE is lying here.") (SYNONYM CALENDAR) (FLAGS READBIT
+TAKEBIT) (SIZE 3) (TEXT
+"[This is the \"Lives of the Twelve Flatheads Calendar\" which you can find
+in your Zork Zero package.]")> 
+<OBJECT CALENDAR-ITEMS (LOC GENERIC-OBJECTS) (DESC "it") (SYNONYM POISON AX AXE
+COBRA SKULL KNIFE DAGGER TROPHY STICK BALL HELMET EPAULET EPAULETTE MEDAL
+TEMPLATE PENCIL TRIANGLE CRAYON COMPASS ELEPHANT VOLCANO BRUSH AVOCADO INKWELL
+RAVEN STAMP CIGAR BURNER CELERY MATCH BOWTIE) (ADJECTIVE HOCKEY RUBBER BUNSEN)>
+
+<OBJECT LOCKET-MOOSE (LOC GENERIC-OBJECTS) (DESC "it") (SYNONYM LOCKET MOOSE)> 
+<OBJECT PROCLAMATION (DESC "proclamation") (FDESC
+"A proclamation hangs on the wall.") (OWNER WALL) (SYNONYM PROCLAMATION DECREE)
+(FLAGS READBIT TAKEBIT BURNBIT TRYTAKEBIT) (SIZE 2) (TEXT
+"\"The one who can stop the Curse of Megaboz, and save the land from
+destruction, shall be rewarded with half the wealth of the Empire.|
+   (signed) Wurb Flathead|
+            King of Quendor|
+           Protector of the Empire|
+            Ruler of all the Known Lands\"") (ACTION PROCLAMATION-F)> 
+<DEFINE-ROUTINE PROCLAMATION-F> 
+<ROOM ENTRANCE-HALL (LOC ROOMS) (REGION "Flatheadia") (DESC "Entrance Hall") (
+NORTH TO INNER-BAILEY IF PORTCULLIS IS OPEN ELSE
+"The closed portcullis covers the doorway.") (SOUTH TO GREAT-HALL) (EAST TO
+BANQUET-HALL) (WEST TO PARLOR) (FLAGS RLANDBIT ONBIT) (GLOBAL PORTCULLIS) (
+RIDDLE "Some say I fly, but I'm not a bird; I'm often wasted, or so I've heard.
+Though I go on endlessly, there's never enough of me! What am I?\"") (MAP-LOC <
+PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>) (ACTION ENTRANCE-HALL-F)> 
+<DEFINE-ROUTINE ENTRANCE-HALL-F> 
+<OBJECT TIME-OBJECT (LOC GLOBAL-OBJECTS) (DESC "time") (SYNONYM TIME) (FLAGS
+NARTICLEBIT)> 
+<OBJECT DOORBELL (LOC ENTRANCE-HALL) (DESC "doorbell") (SYNONYM DOORBELL BELL)
+(ADJECTIVE DOOR) (FLAGS NDESCBIT) (GENERIC G-HAT-F) (ACTION DOORBELL-F)> 
+<DEFINE-ROUTINE DOORBELL-F> 
+<OBJECT PORTCULLIS (LOC LOCAL-GLOBALS) (DESC "portcullis") (SYNONYM PORTCULLIS)
+(ADJECTIVE STURDY HEAVY IRON) (FLAGS DOORBIT) (ACTION PORTCULLIS-F)> 
+<DEFINE-ROUTINE PORTCULLIS-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT VILLAGE> 
+<OBJECT MOAT (LOC LOCAL-GLOBALS) (DESC "moat") (SYNONYM MOAT) (FLAGS WATERBIT)
+(ACTION MOAT-F)> 
+<DEFINE-ROUTINE MOAT-F> 
+<ROOM INNER-BAILEY (LOC ROOMS) (REGION "Flatheadia") (DESC "Inner Bailey") (
+LDESC "You are on a narrow grassy strip between the castle (which can be entered
+to the south) and the moat. A young elm grows by the side of the moat. A
+causeway leads out into the moat to the northwest.") (SOUTH TO ENTRANCE-HALL IF
+PORTCULLIS IS OPEN) (NW TO CAUSEWAY) (FLAGS RLANDBIT OUTSIDEBIT ONBIT) (SYNONYM
+BAILEY) (ADJECTIVE INNER) (GLOBAL PORTCULLIS MOAT CAUSEWAY) (MAP-LOC <PTABLE
+VILLAGE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-6>) (ICON INNER-BAILEY-ICON) (ACTION
+INNER-BAILEY-F)> 
+<DEFINE-ROUTINE INNER-BAILEY-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT WORM (LOC INNER-BAILEY) (DESC "worm") (FDESC
+"A common earthworm is wriggling through the grass.") (SYNONYM WORM EARTHWORM
+PIECE RUBBER) (ADJECTIVE COMMON) (FLAGS TAKEBIT ANIMATEDBIT) (INANIMATE-DESC
+"piece of rubber") (WAND-TEXT "Instantly, the worm stops wriggling.") (
+ANIMATE-ROUTINE I-W-WORM) (SIZE 1) (ACTION WORM-F)> 
+<DEFINE-ROUTINE WORM-F> 
+<DEFINE-ROUTINE I-W-WORM> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT VILLAGE> 
+<OBJECT SMALL-ELM (LOC INNER-BAILEY) (DESC "small elm tree") (SYNONYM TREE ELM)
+(ADJECTIVE YOUNG SMALL ELM) (FLAGS NDESCBIT PLANTBIT) (ACTION TREE-F)> 
+<DEFINE-ROUTINE TREE-F> 
+<ROOM CAUSEWAY (LOC ROOMS) (REGION "Flatheadia") (DESC "Causeway") (LDESC
+"You are on a peninsula of dirt and gravel which extends into the moat from
+the southeast. A tall barbican towers over the end of the causeway, to the
+northwest.") (SE TO INNER-BAILEY) (NW TO BARBICAN) (FLAGS RLANDBIT OUTSIDEBIT
+ONBIT) (SYNONYM CAUSEWAY) (GLOBAL MOAT BARBICAN) (MAP-LOC <PTABLE
+VILLAGE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>) (ICON CAUSEWAY-ICON)> 
+<ROOM BARBICAN (LOC ROOMS) (REGION "Flatheadia") (DESC "Barbican") (NW TO
+DRAWBRIDGE IF DRAWBRIDGE IS OPEN) (SE TO CAUSEWAY) (UP TO UPPER-BARBICAN) (
+FLAGS RLANDBIT ONBIT) (SYNONYM BARBICAN TOWER GATE-TOWER) (ADJECTIVE TALL LOWER
+) (GLOBAL MOAT DRAWBRIDGE FIXED-LADDER UPPER-BARBICAN) (MAP-LOC <PTABLE
+VILLAGE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>) (ICON BARBICAN-ICON) (ACTION
+BARBICAN-F)> 
+<DEFINE-ROUTINE BARBICAN-F> 
+<ROOM UPPER-BARBICAN (LOC ROOMS) (REGION "Flatheadia") (DESC "Upper Barbican")
+(LDESC "This upper level is key to defending the outer perimeter of the castle, with
+its commanding view of the causeway, moat and baileys. The floor is filled
+with \"murder holes\" for dropping heavy cannonballs onto unwanted visitors
+who penetrate as far as the barbican's lower level, just below. A large cast
+iron wheel is mounted in the center of the room. The only exit is a ladder
+leading down.") (DOWN TO BARBICAN) (FLAGS RLANDBIT ONBIT) (SYNONYM BARBICAN
+TOWER) (ADJECTIVE UPPER) (GLOBAL FIXED-LADDER MOAT) (MAP-LOC <PTABLE
+VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON UPPER-BARBICAN-ICON)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT CANNONBALL (LOC UPPER-BARBICAN) (DESC "cannonball") (SYNONYM CANNONBALL
+BALL) (ADJECTIVE HEAVY) (FLAGS TAKEBIT) (SIZE 50) (ACTION CANNONBALL-F)> 
+<DEFINE-ROUTINE CANNONBALL-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT VILLAGE> 
+<OBJECT MURDER-HOLE (LOC UPPER-BARBICAN) (DESC "murder hole") (SYNONYM HOLE) (
+ADJECTIVE MURDER) (FLAGS NDESCBIT) (ACTION MURDER-HOLE-F)> 
+<DEFINE-ROUTINE MURDER-HOLE-F> 
+<OBJECT WHEEL (LOC UPPER-BARBICAN) (DESC "wheel") (SYNONYM WHEEL) (ADJECTIVE
+LARGE CAST IRON) (FLAGS NDESCBIT) (ACTION WHEEL-F)> 
+<DEFINE-ROUTINE WHEEL-F> 
+<ROOM DRAWBRIDGE (LOC ROOMS) (REGION "Flatheadia") (DESC "Drawbridge") (SE TO
+BARBICAN) (NW TO OUTER-BAILEY) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (SYNONYM
+BRIDGE DRAWBRIDGE) (ADJECTIVE DRAW STURDY WOODEN) (GLOBAL DRAWBRIDGE MOAT) (
+MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-3>) (ICON DRAWBRIDGE-ICON
+) (ACTION DRAWBRIDGE-F)> 
+<DEFINE-ROUTINE DRAWBRIDGE-F> 
+<END-SEGMENT> 
+\\f 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM PARLOR (LOC ROOMS) (REGION "Flatheadia") (DESC "Parlor") (LDESC
+"This is where many of Dimwit's guests would come and sit after dinner,
+for wine, conversation, and any other whim that might pop into Dimwit's
+head. There are doorways to the east, west and south.") (EAST TO ENTRANCE-HALL)
+(SOUTH TO FORMAL-GARDEN) (WEST TO TORCH-ROOM) (FLAGS RLANDBIT ONBIT) (SYNONYM
+PARLOR) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-4>) (ICON
+PARLOR-ICON) (ACTION PARLOR-F)> 
+<DEFINE-ROUTINE PARLOR-F> 
+<OBJECT FISH-TANK (LOC PARLOR) (DESC "fish tank") (SYNONYM TANK AQUARIUM) (
+ADJECTIVE FISH) (CAPACITY 50) (FLAGS CONTBIT SEARCHBIT OPENBIT TRYTAKEBIT
+WATERBIT) (ACTION FISH-TANK-F)> 
+<GLOBAL DESCRIBED-TANK-AS-LARGE <>> 
+<GLOBAL DESCRIBED-TANK-AS-SMALL <>> 
+<DEFINE-ROUTINE FISH-TANK-F> 
+<OBJECT SPENSEWEED (OWNER SPENSEWEED) (LOC FISH-TANK) (DESC
+"clump of spenseweed") (SYNONYM CLUMP SPENSEWEED WEED) (ADJECTIVE SPENSE) (
+FLAGS TRYTAKEBIT PLANTBIT) (RESEARCH
+"\"A deep-rooting underwater plant. Once established, it can usually only be
+removed by using certain spells of wilting. The misconception that spenseweed
+is a common roadside weed has been perpetuated by grossly inaccurate entries
+in the last several editions of THE LORE AND LEGENDS OF QUENDOR.\"") (ACTION
+SPENSEWEED-F)> 
+<DEFINE-ROUTINE SPENSEWEED-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT LOBSTER (LOC FISH-TANK) (DESC "lobster") (SYNONYM LOBSTER NUTCRACKER
+CRACKER) (ADJECTIVE NUT) (FLAGS TRYTAKEBIT TAKEBIT ANIMATEDBIT) (INANIMATE-DESC
+"nutcracker") (WAND-TEXT
+"The lobster stops moving. Frozen as it is, with pincers outstretched, it looks
+like nothing less than a large nutcracker. In fact, it IS a nutcracker!") (
+ANIMATE-ROUTINE I-W-LOBSTER) (ACTION LOBSTER-F)> 
+<DEFINE-ROUTINE LOBSTER-F> 
+<DEFINE-ROUTINE I-W-LOBSTER> 
+<DEFINE-ROUTINE I-LOBSTER-PINCH> 
+<OBJECT STARFISH (LOC FISH-TANK) (DESC "starfish") (PLURAL "starfish") (SYNONYM
+STARFISH FISH STAR) (ADJECTIVE STAR) (FLAGS TAKEBIT ANIMATEDBIT) (
+INANIMATE-DESC "star") (WAND-TEXT
+"The starfish, as still as it was before, becomes even more still.") (
+ANIMATE-ROUTINE I-W-STARFISH) (ACTION STARFISH-F)> 
+<DEFINE-ROUTINE STARFISH-F> 
+<DEFINE-ROUTINE I-W-STARFISH> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM TORCH-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Torch Room") (LDESC
+"This is a small room for the storage of torches. The torches kept here
+are generally short-lived, for the purpose of brief forays into the
+darker regions of the castle. To the east is the lone exit.") (EAST TO PARLOR)
+(OUT TO PARLOR) (FLAGS RLANDBIT ONBIT) (MAP-LOC <PTABLE MAIN-MAP-NUM
+MAP-GEN-Y-3 MAP-GEN-X-3>) (ICON TORCH-ROOM-ICON)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT BICKERING-TORCH (LOC TORCH-ROOM) (DESC "bickering torch") (PLURAL
+"torches") (SYNONYM TORCH TORCHES) (ADJECTIVE BICKERING) (FLAGS TAKEBIT
+TRYTAKEBIT) (ACTION BICKERING-TORCH-F)> 
+<DEFINE-ROUTINE BICKERING-TORCH-F> 
+<DEFINE-ROUTINE BURNED-OUT> 
+<DEFINE-ROUTINE I-BICKERING-TORCH> 
+<CONSTANT BITCHES <LTABLE 0 "All the other torches were picking on me."
+"Everyone likes the flickering torch better than me."
+"I saw the guttering torch wasting oil!"
+"How come I didn't get made out of top-quality wood like
+the other torches?"
+"The muttering torch was talking about burning down the castle.">> 
+<OBJECT FLICKERING-TORCH (LOC TORCH-ROOM) (SDESC "flickering torch") (PLURAL
+"torches") (SYNONYM TORCH TORCHES) (ADJECTIVE FLICKERING) (FLAGS TAKEBIT
+TRYTAKEBIT FLAMEBIT ONBIT) (ACTION FLICKERING-TORCH-F)> 
+<DEFINE-ROUTINE FLICKERING-TORCH-F> 
+<GLOBAL FLICKERING-TORCH-COUNT 0> 
+<DEFINE-ROUTINE I-FLICKERING-TORCH> 
+<DEFINE-ROUTINE IN-THE-SKY> 
+<OBJECT MUTTERING-TORCH (LOC TORCH-ROOM) (DESC "muttering torch") (PLURAL
+"torches") (SYNONYM TORCH TORCHES) (ADJECTIVE MUTTERING) (FLAGS TAKEBIT
+TRYTAKEBIT) (ACTION MUTTERING-TORCH-F)> 
+<DEFINE-ROUTINE MUTTERING-TORCH-F> 
+<DEFINE-ROUTINE I-MUTTERING-TORCH> 
+<CONSTANT MUTTERS <LTABLE 0 "human palm odors"
+"the unfairness of existence as a torch" "being held too tightly"
+"the callous discarding of burned-out torches"
+"the uncomfortableness of most sconces">> 
+<OBJECT GUTTERING-TORCH (LOC TORCH-ROOM) (SDESC "guttering torch") (PLURAL
+"torches") (SYNONYM TORCH TORCHES) (ADJECTIVE GUTTERING) (FLAGS TAKEBIT
+TRYTAKEBIT ONBIT FLAMEBIT) (ACTION GUTTERING-TORCH-F)> 
+<DEFINE-ROUTINE GUTTERING-TORCH-F> 
+<GLOBAL GUTTERING-TORCH-COUNT 0> 
+<DEFINE-ROUTINE I-GUTTERING-TORCH> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM FORMAL-GARDEN (LOC ROOMS) (REGION "Flatheadia") (DESC "Formal Garden") (
+LDESC "Dimwit designed this garden to match a fairy tale he enjoyed as a child,
+and subsequent kings added their own touches, creating a hugely confusing
+maze of flowers and shrubbery and statuary and trees and fountains and pools
+and bridges and gazebos. Now somewhat overgrown, the garden is seemingly
+endless, but you recall that the primary exits lie to the north, east, and
+southwest.") (NORTH TO PARLOR) (EAST TO GREAT-HALL) (SW TO WEST-HALL) (FLAGS
+RLANDBIT ONBIT OUTSIDEBIT) (SYNONYM GARDEN) (ADJECTIVE FORMAL) (MAP-LOC <PTABLE
+MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON FORMAL-GARDEN-ICON) (THINGS <>
+FLOWER GARDEN-FLOWER-PS)> 
+<DEFINE-ROUTINE GARDEN-FLOWER-PS> 
+<OBJECT FLORA (LOC FORMAL-GARDEN) (DESC "flora") (SYNONYM SHRUB SHRUBS
+SHRUBBERY TREE FLORA PLANT PLANTS) (FLAGS PLANTBIT NDESCBIT NARTICLEBIT
+PLURALBIT) (ACTION FLORA-F)> 
+<DEFINE-ROUTINE FLORA-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT FLAMINGO (LOC FORMAL-GARDEN) (DESC "flamingo") (FDESC
+"You spot a flash of pink amongst the flora. It's a flamingo!") (SYNONYM
+FLAMINGO BIRD ORNAMENT) (ADJECTIVE LAWN) (FLAGS TRYTAKEBIT TAKEBIT ANIMATEDBIT)
+(INANIMATE-DESC "lawn ornament") (WAND-TEXT "The flamingo becomes motionless.")
+(ANIMATE-ROUTINE I-W-FLAMINGO) (SIZE 10) (ACTION FLAMINGO-F)> 
+<DEFINE-ROUTINE FLAMINGO-F> 
+<DEFINE-ROUTINE I-W-FLAMINGO> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM COURTYARD (LOC ROOMS) (REGION "Flatheadia") (DESC "Courtyard") (NORTH TO
+BANQUET-HALL) (WEST TO GREAT-HALL) (SE TO EAST-HALL) (FLAGS RLANDBIT ONBIT
+OUTSIDEBIT) (SYNONYM COURTYARD) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4
+MAP-GEN-X-6>) (ACTION COURTYARD-F)> 
+<DEFINE-ROUTINE COURTYARD-F> 
+<ROOM BALCONY (LOC ROOMS) (REGION "Flatheadia") (DESC "Balcony") (LDESC
+"This wide balcony, itself larger than most castles, overlooks the Great
+Hall. Banners and pennants are draped from the railing into the hall below,
+which can be reached via the wide stair. A passage leads off to the south.") (
+DOWN TO GREAT-HALL) (SOUTH TO GALLERY) (FLAGS RLANDBIT ONBIT) (SYNONYM BALCONY)
+(GLOBAL STAIRS BANNER) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>)
+(ICON BALCONY-ICON)> 
+<OBJECT BANNER (LOC LOCAL-GLOBALS) (DESC "banner") (SYNONYM BANNER BANNERS
+PENNANT PENNANTS) (ADJECTIVE COLORFUL) (ACTION BANNER-F)> 
+<DEFINE-ROUTINE BANNER-F> 
+<ROOM GALLERY (LOC ROOMS) (REGION "Flatheadia") (DESC "Gallery") (LDESC
+"Twelve large paintings cover the walls of this long, tall room. The main
+exit is north, but there's also a small opening to the south.") (NORTH TO
+BALCONY) (SOUTH TO CLOSET) (FLAGS RLANDBIT ONBIT) (SYNONYM GALLERY) (MAP-LOC <
+PTABLE MAIN-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>) (ICON GALLERY-ICON)> 
+<OBJECT REBUS (LOC GALLERY) (DESC "rebus") (DESCFCN REBUS-F) (SYNONYM REBUS) (
+ADJECTIVE LARGE FRAMED) (FLAGS READBIT SEARCHBIT CONTBIT SURFACEBIT OPENBIT) (
+OWNER WALL) (RESEARCH
+"\"A rebus is an illustration whose component pictures spell out a word
+or words, usually through the addition and subtraction of sounds or letters.
+The most famous creator of rebuses was Frobesius Fublius.\"") (ACTION REBUS-F)>
+
+<DEFINE-ROUTINE REBUS-F> 
+<OBJECT REBUS-CAMEL (LOC REBUS) (DESC "flattened camel") (SYNONYM CAMEL ANIMAL
+REPRESENTATION) (ADJECTIVE FLATTENED LAYERED) (FLAGS NDESCBIT) (OWNER REBUS) (
+GENERIC G-CAMEL-F) (ACTION REBUS-ANIMAL-F)> 
+<OBJECT REBUS-MOUSE (LOC REBUS) (DESC "flattened mouse") (SYNONYM MOUSE ANIMAL
+REPRESENTATION) (ADJECTIVE FLATTENED LAYERED) (FLAGS NDESCBIT) (OWNER REBUS) (
+ACTION REBUS-ANIMAL-F)> 
+<OBJECT REBUS-SNAKE (LOC REBUS) (DESC "flattened snake") (SYNONYM SNAKE ANIMAL
+REPRESENTATION) (ADJECTIVE FLATTENED LAYERED) (FLAGS NDESCBIT) (OWNER REBUS) (
+ACTION REBUS-ANIMAL-F)> 
+<OBJECT REBUS-GOOSE (LOC REBUS) (DESC "flattened goose") (SYNONYM GOOSE ANIMAL
+REPRESENTATION) (ADJECTIVE FLATTENED LAYERED) (FLAGS NDESCBIT) (OWNER REBUS) (
+ACTION REBUS-ANIMAL-F)> 
+<OBJECT REBUS-FISH (LOC REBUS) (DESC "flattened fish") (SYNONYM FISH ANIMAL
+REPRESENTATION) (ADJECTIVE FLATTENED LAYERED) (FLAGS NDESCBIT) (OWNER REBUS) (
+ACTION REBUS-ANIMAL-F)> 
+<OBJECT REBUS-SLIME-MONSTER (LOC REBUS) (DESC "flattened slime monster") (
+SYNONYM MONSTER ANIMAL REPRESENTATION) (ADJECTIVE SLIME FLATTENED LAYERED) (
+FLAGS NDESCBIT) (OWNER REBUS) (ACTION REBUS-ANIMAL-F)> 
+<DEFINE-ROUTINE REBUS-ANIMAL-F> 
+<OBJECT PAINTINGS (LOC GALLERY) (DESC "twelve paintings") (SYNONYM PAINTINGS
+PORTRAITS) (ADJECTIVE TWELVE FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH
+EIGHTH NINTH TENTH ELEVENTH TWELVTH) (FLAGS NDESCBIT NARTICLEBIT TRYTAKEBIT) (
+GENERIC G-PAINTING-F) (OWNER WALL) (ACTION PAINTINGS-F)> 
+<DEFINE-ROUTINE PAINTINGS-F> 
+<OBJECT BABE-PORTRAIT (LOC GALLERY) (DESC "portrait of Babe Flathead") (SYNONYM
+PAINTING PORTRAIT BABE FLATHEAD) (ADJECTIVE BABE) (FLAGS NDESCBIT) (OWNER <
+TABLE (PURE LENGTH) WALL BABE-PORTRAIT>) (ACTION PAINTING-F)> 
+<OBJECT FRANK-LLOYD-PORTRAIT (LOC GALLERY) (DESC
+"portrait of Frank Lloyd Flathead") (SYNONYM PAINTING PORTRAIT FRANK LLOYD
+FLATHEAD) (ADJECTIVE FRANK LLOYD) (FLAGS NDESCBIT) (OWNER <TABLE (PURE LENGTH)
+WALL FRANK-LLOYD-PORTRAIT>) (ACTION PAINTING-F)> 
+<OBJECT JOHN-PAUL-PORTRAIT (LOC GALLERY) (DESC "portrait of John Paul Flathead"
+) (SYNONYM PAINTING PORTRAIT JOHN PAUL FLATHEAD) (ADJECTIVE JOHN PAUL) (FLAGS
+NDESCBIT) (OWNER <TABLE (PURE LENGTH) WALL JOHN-PAUL-PORTRAIT>) (ACTION
+PAINTING-F)> 
+<OBJECT RALPH-WALDO-PORTRAIT (LOC GALLERY) (DESC
+"portrait of Ralph Waldo Flathead") (SYNONYM PAINTING PORTRAIT RALPH WALDO
+FLATHEAD) (ADJECTIVE RALPH WALDO) (FLAGS NDESCBIT) (OWNER <TABLE (PURE LENGTH)
+WALL RALPH-WALDO-PORTRAIT>) (ACTION PAINTING-F)> 
+<OBJECT LUCREZIA-PORTRAIT (LOC GALLERY) (DESC "portrait of Lucrezia Flathead")
+(SYNONYM PAINTING PORTRAIT LUCREZIA FLATHEAD) (ADJECTIVE LUCREZIA) (FLAGS
+NDESCBIT) (OWNER <TABLE (PURE LENGTH) WALL LUCREZIA-PORTRAIT>) (ACTION
+PAINTING-F)> 
+<OBJECT LEONARDO-PORTRAIT (LOC GALLERY) (DESC "portrait of Leonardo Flathead")
+(SYNONYM PAINTING PORTRAIT SELF-PORTRAIT LEONARDO FLATHEAD) (ADJECTIVE LEONARDO
+) (FLAGS NDESCBIT) (OWNER <TABLE (PURE LENGTH) WALL LEONARDO-PORTRAIT>) (ACTION
+PAINTING-F)> 
+<OBJECT THOMAS-ALVA-PORTRAIT (LOC GALLERY) (DESC
+"portrait of Thomas Alva Flathead") (SYNONYM PAINTING PORTRAIT THOMAS ALVA
+FLATHEAD) (ADJECTIVE THOMAS ALVA) (FLAGS NDESCBIT) (OWNER <TABLE (PURE LENGTH)
+WALL THOMAS-ALVA-PORTRAIT>) (ACTION PAINTING-F)> 
+<OBJECT JOHN-D-PORTRAIT (LOC GALLERY) (DESC "portrait of John D. Flathead") (
+SYNONYM PAINTING PORTRAIT JOHN DAVISON FLATHEAD DOWN) (ADJECTIVE JOHN DAVISON
+DOWN) (FLAGS NDESCBIT) (OWNER <TABLE (PURE LENGTH) WALL JOHN-D-PORTRAIT>) (
+ACTION PAINTING-F)> 
+<OBJECT JOHANN-SEBASTIAN-PORTRAIT (LOC GALLERY) (DESC
+"portrait of Johann Sebastian Flathead") (SYNONYM PAINTING PORTRAIT JOHANN
+SEBASTIAN FLATHEAD) (ADJECTIVE JOHANN SEBASTIAN) (FLAGS NDESCBIT) (OWNER <TABLE
+(PURE LENGTH) WALL JOHANN-SEBASTIAN-PORTRAIT>) (ACTION PAINTING-F)> 
+<OBJECT STONEWALL-PORTRAIT (LOC GALLERY) (DESC "portrait of Stonewall Flathead"
+) (SYNONYM PAINTING PORTRAIT STONEWALL FLATHEAD) (ADJECTIVE STONEWALL) (FLAGS
+NDESCBIT) (OWNER <TABLE (PURE LENGTH) WALL STONEWALL-PORTRAIT>) (ACTION
+PAINTING-F)> 
+<OBJECT J-PIERPONT-PORTRAIT (LOC GALLERY) (OWNER <TABLE (PURE LENGTH) WALL
+J-PIERPONT-PORTRAIT>) (DESC "portrait of J. Pierpont Flathead") (SYNONYM
+PAINTING PORTRAIT J PIERPONT FLATHEAD) (ADJECTIVE J PIERPONT) (FLAGS NDESCBIT)
+(ACTION PAINTING-F)> 
+<OBJECT DIMWIT-PORTRAIT (LOC GALLERY) (DESC "portrait of Dimwit Flathead") (
+SYNONYM PAINTING PORTRAIT DIMWIT FLATHEAD) (ADJECTIVE DIMWIT LORD) (FLAGS
+NDESCBIT) (GENERIC G-DIMWIT-F) (OWNER <TABLE (PURE LENGTH) WALL DIMWIT-PORTRAIT
+>) (ACTION PAINTING-F)> 
+<DEFINE-ROUTINE PAINTING-F> 
+<ROOM CLOSET (LOC ROOMS) (REGION "Flatheadia") (DESC "Closet") (LDESC
+"You are in some sort of storage closet, which opens to the north. A ladder
+leads upward.") (NORTH TO GALLERY) (UP TO ROOF) (FLAGS RLANDBIT ONBIT) (SYNONYM
+CLOSET) (GLOBAL FIXED-LADDER) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-7
+MAP-GEN-X-4>) (THINGS <> SHADOW PHIL-SHADOW-PS)> 
+<OBJECT CLOSET-REBUS-BUTTON (LOC CLOSET) (SDESC "blinking key-shaped button") (
+FDESC "In the shadow of one of the shelves is a key-shaped button, which is blinking
+rhythmically.") (SYNONYM BUTTON) (ADJECTIVE KEY-SHAPED BLINKING) (ACTION
+REBUS-BUTTON-F)> 
+<BEGIN-SEGMENT ORACLE> 
+<BEGIN-SEGMENT LAKE> 
+<BEGIN-SEGMENT VILLAGE> 
+<DEFINE-ROUTINE REBUS-BUTTON-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT 0> 
+<OBJECT BAG (LOC CLOSET) (DESC "bag") (FDESC
+"The shelves are all dusty and bare -- except for one small bag with some
+printing on it.") (SYNONYM BAG PRINTING) (ADJECTIVE SMALL) (FLAGS TAKEBIT
+CONTBIT SEARCHBIT READBIT) (SIZE 2) (TEXT
+"\"Hello, Flamingo Owner! The enclosed food provides a balanced, nutritious
+diet for your flamingo. Our food is specially formulated for the finicky
+flamingo. WARNING: Poisonous to humans. Another fine product of the Frobozz
+Magic Flamingo Food Company.\"") (ACTION BAG-F)> 
+<DEFINE-ROUTINE BAG-F> 
+<OBJECT BAR-OF-FOOD (LOC BAG) (OWNER BAR-OF-FOOD) (DESC "bar of food") (PLURAL
+"bars of food") (SYNONYM BAR FOOD) (FLAGS TAKEBIT) (SIZE 3) (ACTION
+BAR-OF-FOOD-F)> 
+<DEFINE-ROUTINE BAR-OF-FOOD-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM ROOF (LOC ROOMS) (REGION "Flatheadia") (DESC "Roof") (LDESC
+"You stand atop the main building of the castle. A tall tower is visible to
+the south, but can't be reached from here. The only exit is down a ladder.") (
+DOWN TO CLOSET) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL FIXED-LADDER) (
+MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-3>) (ICON ROOF-ICON) (THINGS
+TALL TOWER TOWER-PS)> 
+<DEFINE-ROUTINE TOWER-PS> 
+<ROOM AUDIENCE-CHAMBER (LOC ROOMS) (REGION "Flatheadia") (DESC
+"Audience Chamber") (LDESC
+"This is a tremendous meeting room where thousands of visitors would queue up
+every day for an audience with Dimwit or one of his successors. Such visitors
+were usually wasting their time; Dimwit rarely had the patience to see even
+one person a day. A plush red carpet leads from the main doorway on the north
+wall to the golden throne, fringed with red tassels, which towers above the
+floor. Behind the throne, a smaller doorway leads south.") (NORTH TO GREAT-HALL
+) (SOUTH TO THRONE-ROOM) (FLAGS RLANDBIT ONBIT) (SYNONYM CHAMBER) (ADJECTIVE
+AUDIENCE) (GLOBAL CARPET) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-5
+>)> 
+<OBJECT LARGE-THRONE (LOC AUDIENCE-CHAMBER) (DESC "large golden throne") (
+SYNONYM THRONE TASSLES) (ADJECTIVE GOLDEN LARGE TOWERING RED) (CAPACITY 50) (
+FLAGS NDESCBIT VEHBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT) (ACTION THRONE-F)> 
+<ROOM THRONE-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Throne Room") (NORTH
+TO AUDIENCE-CHAMBER) (SOUTH TO SECRET-PASSAGE IF SECRET-PASSAGE-OPEN) (FLAGS
+RLANDBIT ONBIT) (SYNONYM ROOM) (ADJECTIVE THRONE) (MAP-LOC <PTABLE MAIN-MAP-NUM
+MAP-GEN-Y-6 MAP-GEN-X-5>) (ICON THRONE-ROOM-ICON) (ACTION THRONE-ROOM-F)> 
+<DEFINE-ROUTINE THRONE-ROOM-F> 
+<OBJECT SCEPTRE (LOC THRONE-ROOM) (DESC "sceptre") (FDESC
+"An overdone sceptre, ornamented with colored enamel and tapering to a sharp
+point, is lying by the throne.") (SYNONYM SCEPTRE SCEPTER) (ADJECTIVE SHARP
+ENAMELED ORNAMENTED OVERDONE) (FLAGS TAKEBIT MAGICBIT) (SIZE 5) (VALUE 12)> 
+<OBJECT SMALL-THRONE (LOC THRONE-ROOM) (DESC "small throne") (SYNONYM THRONE) (
+ADJECTIVE GAUDY SMALL COMFORTABLE) (CAPACITY 25) (FLAGS NDESCBIT VEHBIT
+SURFACEBIT CONTBIT OPENBIT SEARCHBIT) (ACTION THRONE-F)> 
+<DEFINE-ROUTINE THRONE-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<GLOBAL SECRET-PASSAGE-DISCOVERED <>> 
+<GLOBAL SECRET-PASSAGE-OPEN <>> 
+<GLOBAL SECRET-PASSAGE-SCORE 18> 
+<ROOM SECRET-PASSAGE (LOC ROOMS) (REGION "Flatheadia") (DESC "Secret Passage")
+(LDESC "You are in a secret passage running north and south.") (NORTH TO
+THRONE-ROOM IF SECRET-PASSAGE-OPEN ELSE "The passage ends at a blank wall!") (
+SOUTH TO TEE) (FLAGS RLANDBIT) (ICON SECRET-PASSAGE-ICON) (MAP-LOC <PTABLE
+SECRET-WING-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-7>) (THINGS <> SHADOW PHIL-SHADOW-PS)
+(ACTION SECRET-PASSAGE-F)> 
+<DEFINE-ROUTINE SECRET-PASSAGE-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT CANDLE (LOC SECRET-PASSAGE) (DESC "candle") (FDESC
+"Although no one has entered this secret passage in years, a lit candle is
+mounted here, its flame casting dancing shadows across the uneven walls.") (
+SYNONYM CANDLE) (FLAGS LIGHTBIT FLAMEBIT ONBIT TAKEBIT) (ACTION CANDLE-F)> 
+<DEFINE-ROUTINE CANDLE-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<ROOM TEE (LOC ROOMS) (REGION "Flatheadia") (DESC "Tee") (LDESC
+"A secret passage from the north ends here at this east-west corridor.") (NORTH
+TO SECRET-PASSAGE) (EAST TO TOP-OF-STAIR) (WEST TO FOREBLDG) (FLAGS RLANDBIT) (
+ICON TEE-ICON) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>)> 
+<ROOM FOREBLDG (LOC ROOMS) (REGION "Flatheadia") (DESC "Forebuilding") (LDESC
+"The secret passage from the east ends here. An easily defensible hallway
+rises into the keep, to the southwest.") (EAST TO TEE) (SW TO DONJON) (UP TO
+DONJON) (FLAGS RLANDBIT) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5
+MAP-GEN-X-6>)> 
+<ROOM DONJON (LOC ROOMS) (REGION "Flatheadia") (DESC "Donjon") (LDESC
+"You are in the lowest level of the castle's keep. A stone stair winds
+up into the keep, and a sloping passage leads northeast.") (NE TO FOREBLDG) (
+DOWN TO FOREBLDG) (UP TO SOLAR) (FLAGS RLANDBIT) (GLOBAL STAIRS) (MAP-LOC <
+PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>)> 
+<ROOM SOLAR (LOC ROOMS) (REGION "Flatheadia") (DESC "Solar") (LDESC
+"This is the king's solar, where he would bathe and dress and meet his
+most trusted advisors and intimate guests. Dim light enters through narrow,
+slitted windows. The solar has obviously lain unused for many decades. The
+circular stair continues up and down, and a doorway leads west.") (UP TO
+BASTION) (DOWN TO DONJON) (WEST TO DIMWITS-ROOM) (FLAGS RLANDBIT ONBIT) (
+SYNONYM SOLAR) (GLOBAL STAIRS WINDOW) (RIDDLE
+"You can find me at the beginning of youth, in the center of every eye,
+and at the end of eternity. What am I?\"") (MAP-LOC <PTABLE SECRET-WING-MAP-NUM
+MAP-GEN-Y-5 MAP-GEN-X-5>) (ACTION SOLAR-F)> 
+<DEFINE-ROUTINE SOLAR-F> 
+<OBJECT LETTER-Y (LOC GLOBAL-OBJECTS) (DESC "the letter y") (SYNONYM Y) (
+ADJECTIVE LETTER) (FLAGS NARTICLEBIT)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT EAST-KEY (LOC SOLAR) (DESC "iron key") (FDESC
+"Sitting on a cushioned window seat, illuminated by a shaft of sunlight, rests
+an ancient iron key.") (SYNONYM KEY) (ADJECTIVE ANCIENT IRON) (FLAGS KEYBIT
+TAKEBIT TRYTAKEBIT VOWELBIT) (SIZE 2) (ACTION EAST-KEY-F)> 
+<DEFINE-ROUTINE EAST-KEY-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<ROOM DIMWITS-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Dimwit's Room") (
+LDESC "You stare around in awe as you realize that you are within the private
+bedroom of Lord Dimwit Flathead. The canopied bed alone is larger than most
+of the farms in your home province. Light seeps in through slitted windows,
+and doorways lead east and south.") (EAST TO SOLAR) (SOUTH TO CLOTHES-CLOSET) (
+FLAGS RLANDBIT) (SYNONYM ROOM) (OWNER DIMWIT) (GLOBAL WINDOW) (ICON
+DIMWITS-ROOM-ICON) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4
+>)> 
+<OBJECT DIMWITS-BED (LOC DIMWITS-ROOM) (DESC "Dimwit's bed") (SYNONYM BED) (
+ADJECTIVE LARGE CANOPIED) (OWNER DIMWIT) (CAPACITY 250) (FLAGS NARTICLEBIT
+SEARCHBIT VEHBIT DROPBIT NDESCBIT CONTBIT OPENBIT SURFACEBIT)> 
+<ROOM CLOTHES-CLOSET (LOC ROOMS) (REGION "Flatheadia") (DESC
+"Magic Clothes Closet") (LDESC
+"This is a small closet. Well, it's small by the standards of this castle;
+in a pinch, it could probably sleep a few regiments. The only exit is north.")
+(NORTH TO DIMWITS-ROOM) (FLAGS RLANDBIT) (SYNONYM CLOSET) (ADJECTIVE MAGIC
+CLOTHES) (ICON MAGIC-CLOSET-ICON) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM
+MAP-GEN-Y-6 MAP-GEN-X-4>)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT CLOAK (LOC CLOTHES-CLOSET) (DESC "cloak") (SYNONYM CLOAK LABEL WRITING)
+(ADJECTIVE MAGIC) (FLAGS WEARBIT TAKEBIT) (OWNER CLOAK) (ACTION CLOAK-F)> 
+<GLOBAL CLOAK-LOC <>> 
+<DEFINE-ROUTINE CLOAK-F> 
+<OBJECT GLOVE (LOC CLOTHES-CLOSET) (DESC "glove") (SYNONYM GLOVE WRITING
+EMBROIDER) (ADJECTIVE TINY EMBROIDER) (SIZE 3) (FLAGS TAKEBIT WEARBIT READBIT)
+(OWNER GLOVE) (ACTION GLOVE-F)> 
+<DEFINE-ROUTINE GLOVE-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<ROOM BASTION (LOC ROOMS) (REGION "Flatheadia") (DESC "Bastion") (LDESC
+"This room occupies a taller tower rising from the corner of the keep.
+The slitted windows are wider here, presumably to accomodate the weaponry
+of the period. The stair winds up and down from here.") (UP TO PARAPET) (DOWN
+TO SOLAR) (FLAGS RLANDBIT ONBIT) (SYNONYM BASTION) (GLOBAL STAIRS WINDOW) (ICON
+BASTION-ICON) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-5>)> 
+<ROOM PARAPET (LOC ROOMS) (REGION "Flatheadia") (DESC "Parapet") (LDESC
+"You are on the roof of the tower, a virtual museum of state-of-the-art
+castle defense from the eighth century. A fortified parapet, resting on
+stone corbels, rims the roof. Machicolations, holes between the corbels,
+allow massive weights to be dropped on invaders below. (More often, they
+were dropped rather painfully on the soldier's own toe.) Crenellations
+are spaced around the parapet, providing openings for armaments and
+offering a commanding view of the castle grounds: the main castle just
+below, and beyond the moat, the castle's village and garrison. The sole
+exit is the stairway down.") (DOWN TO BASTION) (FLAGS RLANDBIT OUTSIDEBIT ONBIT
+) (SYNONYM PARAPET TOWER) (GLOBAL STAIRS MOAT VILLAGE) (ICON PARAPET-ICON) (
+MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>) (ACTION
+FLY-ROOM-F)> 
+<OBJECT MACHICOLATION (LOC PARAPET) (DESC "machicolation") (SYNONYM
+MACHICOLATION HOLE) (FLAGS NDESCBIT) (ACTION MACHICOLATION-F)> 
+<DEFINE-ROUTINE MACHICOLATION-F> 
+<ROOM TOP-OF-STAIR (LOC ROOMS) (REGION "Flatheadia") (DESC "Top of Stair") (
+LDESC "A secret passage from the west ends here, at the top of these dark,
+cobwebby stairs.") (WEST TO TEE) (DOWN TO BOTTOM-OF-STAIR) (FLAGS RLANDBIT) (
+GLOBAL STAIRS) (ICON TOP-OF-STAIR-ICON) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM
+MAP-GEN-Y-5 MAP-GEN-X-8>)> 
+<ROOM BOTTOM-OF-STAIR (LOC ROOMS) (REGION "Flatheadia") (DESC "Bottom of Stair"
+) (LDESC "You are in the center of a gloomy, north-south passage. A crude
+stairway leads upward.") (NORTH TO OUTSIDE-CRYPT) (SOUTH TO DUNGEON) (UP TO
+TOP-OF-STAIR) (FLAGS RLANDBIT) (GLOBAL STAIRS) (ICON BOTTOM-OF-STAIR-ICON) (
+MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-9>)> 
+<ROOM OUTSIDE-CRYPT (LOC ROOMS) (REGION "Flatheadia") (DESC "Outside Crypt") (
+LDESC "A hall from the south ends here at the entrance to a spooky crypt.") (
+SOUTH TO BOTTOM-OF-STAIR) (NORTH TO CRYPT) (IN TO CRYPT) (FLAGS RLANDBIT) (
+GLOBAL CRYPT) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-9>)> 
+<ROOM CRYPT (LOC ROOMS) (REGION "Flatheadia") (DESC "Crypt") (UP TO CHAPEL IF
+TRAP-DOOR IS OPEN) (DOWN PER ORACLE-ENTER-F) (SOUTH TO OUTSIDE-CRYPT) (OUT TO
+OUTSIDE-CRYPT) (FLAGS RLANDBIT) (SYNONYM CRYPT TOMB) (ADJECTIVE SPOOKY
+UNDERGROUND) (GLOBAL TRAP-DOOR SLIME BODIES) (MAP-LOC <PTABLE
+SECRET-WING-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-9>) (ACTION CRYPT-F)> 
+<DEFINE-ROUTINE CRYPT-F> 
+<OBJECT BODIES (LOC LOCAL-GLOBALS) (DESC "bodies") (SYNONYM BODIES REMAINS) (
+FLAGS PLURALBIT NDESCBIT NARTICLEBIT) (ACTION BODIES-F)> 
+<DEFINE-ROUTINE BODIES-F> 
+<DEFINE-ROUTINE ORACLE-ENTER-F> 
+<OBJECT FLATTEST-SLAB (LOC CRYPT) (DESC "flattest slab") (SYNONYM SLAB) (
+ADJECTIVE FLATTEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<OBJECT SHORTEST-SLAB (LOC CRYPT) (DESC "shortest slab") (SYNONYM SLAB) (
+ADJECTIVE SHORTEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<OBJECT LONGEST-SLAB (LOC CRYPT) (DESC "longest slab") (SYNONYM SLAB) (
+ADJECTIVE LONGEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<OBJECT DUSTIEST-SLAB (LOC CRYPT) (DESC "dustiest slab") (SYNONYM SLAB) (
+ADJECTIVE DUSTIEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<OBJECT DARKEST-SLAB (LOC CRYPT) (DESC "darkest slab") (SYNONYM SLAB) (
+ADJECTIVE DARKEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<OBJECT OLDEST-SLAB (LOC CRYPT) (DESC "oldest slab") (SYNONYM SLAB) (ADJECTIVE
+OLDEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<OBJECT NEWEST-SLAB (LOC CRYPT) (DESC "newest slab") (SYNONYM SLAB) (ADJECTIVE
+NEWEST) (FLAGS NDESCBIT) (ACTION SLAB-F)> 
+<DEFINE-ROUTINE SLAB-F> 
+<GLOBAL HOLEY-SLAB <>> 
+<CONSTANT SLAB-TABLE <PTABLE FLATTEST-SLAB SHORTEST-SLAB LONGEST-SLAB
+DUSTIEST-SLAB DARKEST-SLAB OLDEST-SLAB NEWEST-SLAB>> 
+<OBJECT TRAP-DOOR (LOC LOCAL-GLOBALS) (DESC "trap door") (SYNONYM DOOR TRAPDOOR
+) (ADJECTIVE SMALL TRAP) (FLAGS DOORBIT) (ACTION TRAP-DOOR-F)> 
+<DEFINE-ROUTINE TRAP-DOOR-F> 
+<ROOM DUNGEON (LOC ROOMS) (REGION "Flatheadia") (DESC "Dungeon") (LDESC
+"A century's worth of prisoners have languished in this dismal prison.
+In addition to a hole in the floor, passages lead north, southeast, and
+southwest.") (NORTH TO BOTTOM-OF-STAIR) (DOWN TO OUBLIETTE) (SE TO CELL) (SW TO
+TORTURE-CHAMBER) (FLAGS RLANDBIT) (SYNONYM DUNGEON) (ICON DUNGEON-ICON) (
+MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-9>)> 
+<OBJECT DUNGEON-HOLE (LOC DUNGEON) (DESC "hole") (SYNONYM HOLE) (ADJECTIVE
+SMALL) (FLAGS NDESCBIT) (OWNER GROUND) (ACTION DUNGEON-HOLE-F)> 
+<DEFINE-ROUTINE DUNGEON-HOLE-F> 
+<ROOM OUBLIETTE (LOC ROOMS) (REGION "Flatheadia") (DESC "Oubliette") (UP SORRY
+"You're trapped.") (OUT SORRY "You're trapped.") (FLAGS RLANDBIT) (SYNONYM
+OUBLIETTE) (RIDDLE
+"I look just like my brother; we have the same father and mother! We're
+identical in every way; we were born on the very same day. I'm younger
+by seconds, but as everyone reckons, I'm not a twin, and never have been.
+What am I?\"") (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-9>) (
+ACTION OUBLIETTE-F)> 
+<GLOBAL OUBLIETTE-SCORE 20> 
+<DEFINE-ROUTINE OUBLIETTE-F> 
+<OBJECT TRIPLET (LOC GLOBAL-OBJECTS) (DESC "triplet") (SYNONYM TRIPLET TRIPLETS
+QUADRUPLET QUINTUPLET)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT SEAMANS-CAP (LOC OUBLIETTE) (DESC "seaman's cap") (FDESC
+"The last prisoner in the oubliette must have been a sailor; an old seaman's
+cap lies discarded in the corner.") (SYNONYM CAP HAT) (ADJECTIVE OLD SEAMAN\'S
+SEAMAN) (FLAGS TAKEBIT WEARBIT MAGICBIT) (GENERIC G-HAT-F) (VALUE 12)> 
+<DEFINE-ROUTINE G-HAT-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<ROOM CELL (LOC ROOMS) (REGION "Flatheadia") (DESC "Cell") (NW TO DUNGEON) (OUT
+TO DUNGEON) (FLAGS RLANDBIT) (SYNONYM CELL) (ICON CELL-ICON) (MAP-LOC <PTABLE
+SECRET-WING-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-10>) (ACTION CELL-F)> 
+<DEFINE-ROUTINE CELL-F> 
+<OBJECT GIANT-SPIDERS (LOC CELL) (DESC "giant spider") (SYNONYM SPIDER SPIDERS)
+(ADJECTIVE LARGE) (FLAGS NDESCBIT) (ACTION GIANT-SPIDERS-F)> 
+<DEFINE-ROUTINE GIANT-SPIDERS-F> 
+<OBJECT COBWEBS (LOC CELL) (DESC "cobwebs") (SYNONYM COBWEBS WEB COBWEB WEBS) (
+ADJECTIVE THICK) (FLAGS NDESCBIT NARTICLEBIT PLURALBIT) (ACTION COBWEBS-F)> 
+<DEFINE-ROUTINE COBWEBS-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT FLASK (DESC "stoppered glass flask filled with liquid") (LDESC
+"A stoppered glass flask with a skull-and-crossbones marking is here.
+The flask is filled with some clear liquid.") (SYNONYM FLASK) (ADJECTIVE GLASS)
+(FLAGS TAKEBIT TRANSBIT READBIT MAGICBIT SEARCHBIT) (CAPACITY 5) (SIZE 5) (
+VALUE 0) (TEXT "There is a skull-and-crossbones engraved on the glass.") (
+ACTION FLASK-F)> 
+<DEFINE-ROUTINE FLASK-F> 
+<OBJECT LIQUID (LOC FLASK) (DESC "clear liquid") (SYNONYM LIQUID) (ADJECTIVE
+CLEAR) (FLAGS NDESCBIT) (ACTION LIQUID-F)> 
+<DEFINE-ROUTINE LIQUID-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<ROOM TORTURE-CHAMBER (LOC ROOMS) (REGION "Flatheadia") (DESC "Torture Chamber"
+) (LDESC "This room contains all your standard torture devices: an iron maiden,
+a water chamber, a snake pit, a comfy chair, and so forth. The only
+obvious exit is northeast.") (NE TO DUNGEON) (OUT TO DUNGEON) (FLAGS RLANDBIT)
+(SYNONYM CHAMBER) (ADJECTIVE TORTURE) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM
+MAP-GEN-Y-7 MAP-GEN-X-8>) (ACTION TORTURE-CHAMBER-F)> 
+<DEFINE-ROUTINE TORTURE-CHAMBER-F> 
+<DEFINE-ROUTINE METRONOME-TORTURE> 
+<BEGIN-SEGMENT 0> 
+<GLOBAL METRONOME-LOC <>> 
+<GLOBAL METRONOME-COUNTER 0> 
+<GLOBAL METRONOME-ON <>> 
+<OBJECT METRONOME (DESC "metronome") (SYNONYM METRONOME) (FLAGS TAKEBIT
+TRYTAKEBIT MAGICBIT) (VALUE 0) (ACTION METRONOME-F)> 
+<DEFINE-ROUTINE METRONOME-F> 
+<DEFINE-ROUTINE I-METRONOME> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT SECRET> 
+<OBJECT COMFY-CHAIR (LOC TORTURE-CHAMBER) (DESC "comfy chair") (SYNONYM CHAIR)
+(ADJECTIVE COMFY) (FLAGS NDESCBIT CONTBIT INBIT SEARCHBIT VEHBIT SURFACEBIT
+OPENBIT) (ACTION TORTURE-DEVICE-F)> 
+<OBJECT IRON-MAIDEN (LOC TORTURE-CHAMBER) (DESC "iron maiden") (SYNONYM MAIDEN)
+(ADJECTIVE IRON) (FLAGS NDESCBIT VOWELBIT INBIT CONTBIT SEARCHBIT VEHBIT) (
+ACTION TORTURE-DEVICE-F)> 
+<OBJECT WATER-CHAMBER (LOC TORTURE-CHAMBER) (DESC "water chamber") (SYNONYM
+CHAMBER) (ADJECTIVE WATER) (FLAGS NDESCBIT CONTBIT INBIT SEARCHBIT VEHBIT) (
+ACTION TORTURE-DEVICE-F)> 
+<OBJECT SNAKE-PIT (LOC TORTURE-CHAMBER) (DESC "snake pit") (SYNONYM PIT LID) (
+ADJECTIVE SNAKE) (FLAGS NDESCBIT CONTBIT INBIT SEARCHBIT VEHBIT) (ACTION
+TORTURE-DEVICE-F)> 
+<OBJECT THOUSANDS-OF-SNAKES (LOC SNAKE-PIT) (DESC "writhing mass of snakes") (
+SYNONYM SNAKE MASS) (ADJECTIVE WRITHING)> 
+<DEFINE-ROUTINE TORTURE-DEVICE-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM WEST-HALL (LOC ROOMS) (REGION "Flatheadia") (DESC "West Hall") (WEST TO
+WEST-WING IF WEST-DOOR IS OPEN) (NE TO FORMAL-GARDEN) (FLAGS RLANDBIT ONBIT) (
+GLOBAL WEST-DOOR LOCK-OBJECT) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5
+MAP-GEN-X-3>) (ACTION WEST-HALL-F)> 
+<DEFINE-ROUTINE WEST-HALL-F> 
+<OBJECT WEST-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (SYNONYM DOOR) (ADJECTIVE
+LARGE OAK) (FLAGS DOORBIT LOCKEDBIT) (ACTION WEST-DOOR-F)> 
+<DEFINE-ROUTINE WEST-DOOR-F> 
+<ROOM WEST-WING (LOC ROOMS) (REGION "Flatheadia") (DESC "West Wing") (EAST TO
+WEST-HALL IF WEST-DOOR IS OPEN) (WEST PER DIRIGIBLE-HANGAR-ENTER-F) (NORTH TO
+PEG-ROOM) (SOUTH TO GYM) (FLAGS RLANDBIT ONBIT) (GLOBAL WEST-DOOR LOCK-OBJECT)
+(VALUE 8) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-2>) (ICON
+WEST-WING-ICON) (ACTION WEST-WING-F)> 
+<DEFINE-ROUTINE WEST-WING-F> 
+<GLOBAL NUT-OPENED <>> 
+<GLOBAL NUT-SHOWN <>> 
+<GLOBAL NUT-EATEN <>> 
+<GLOBAL J-DISPOSED 0> 
+<DEFINE-ROUTINE DIRIGIBLE-HANGAR-ENTER-F> 
+\\f 
+<ROOM PEG-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Peg Room") (OUT TO
+WEST-WING) (SOUTH TO WEST-WING) (NORTH TO GAMING-ROOM IF PEG-PASSAGE-OPENED) (
+FLAGS RLANDBIT ONBIT) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-2>) (
+ICON PEG-ROOM-ICON) (ACTION PEG-ROOM-F)> 
+<DEFINE-ROUTINE PEG-ROOM-F> 
+<OBJECT PBOZ-OBJECT (LOC GLOBAL-OBJECTS) (DESC "Peggleboz") (SYNONYM PEGGLEBOZ)
+(ADJECTIVE GUSTAV) (RESEARCH
+"\"Peggleboz, a popular game of jumping pegs, is named after its creator,
+Gustav Peggleboz (399 - 456 GUE).\"") (ACTION PBOZ-OBJECT-F)> 
+<DEFINE-ROUTINE PBOZ-OBJECT-F> 
+<OBJECT PEGBOARD (LOC PEG-ROOM) (DESC "pegboard") (SYNONYM BOARD PEGBOARD) (
+ADJECTIVE PEG) (FLAGS NDESCBIT TRYTAKEBIT) (ACTION PEGBOARD-F)> 
+<DEFINE-ROUTINE PEGBOARD-F> 
+<OBJECT PEGBOARD-PEGS (LOC PEG-ROOM) (DESC "peg") (SYNONYM PEG) (FLAGS NDESCBIT
+TRYTAKEBIT) (ACTION PEGBOARD-PEGS-F)> 
+<DEFINE-ROUTINE PEGBOARD-PEGS-F> 
+<OBJECT SET-OF-INSTRUCTIONS (LOC PEG-ROOM) (OWNER SET-OF-INSTRUCTIONS) (DESC
+"set of instructions") (SYNONYM SET INSTRUCTIONS RULES) (FLAGS NDESCBIT READBIT
+) (TEXT "\"Rules for PEGGLEBOZ:|
+1. Pegs can only move by jumping another peg.|
+2. Pegs can only jump one peg per move.|
+3. Pegs jumped are removed.|
+4. Your goal is to end up with one peg in the starting hole.|
+5. To begin, simply type PLAY PEGGLEBOZ!\"")> 
+<CONSTANT PBOZ-PICSET-TBL <TABLE UNHL-PEG HL-PEG BG-A BG-B BG-C BG-D BG-E BG-F
+BG-G BG-H BG-I BG-J BG-K BG-L BG-M BG-N BG-O BG-P BG-Q BG-R BG-S BG-T BG-U
+RESTART-BOX EXIT-BOX SHOW-MOVES-BOX DIM-RESTART-BOX DIM-SHOW-MOVES-BOX 0>> 
+<DEFINE-ROUTINE PEG-GAME> 
+<DEFINE-ROUTINE PBOZ-CLICK> 
+<DEFINE-ROUTINE SETUP-PBOZ> 
+<CONSTANT PBOZ-PIC-TABLE <PTABLE ,PBOZ-A-LOC ,PBOZ-B-LOC ,PBOZ-C-LOC ,
+PBOZ-D-LOC ,PBOZ-E-LOC ,PBOZ-F-LOC ,PBOZ-G-LOC ,PBOZ-H-LOC ,PBOZ-I-LOC ,
+PBOZ-J-LOC ,PBOZ-K-LOC ,PBOZ-L-LOC ,PBOZ-M-LOC ,PBOZ-N-LOC ,PBOZ-O-LOC ,
+PBOZ-P-LOC ,PBOZ-Q-LOC ,PBOZ-R-LOC ,PBOZ-S-LOC ,PBOZ-T-LOC ,PBOZ-U-LOC>> 
+<CONSTANT BOARD-TABLE <ITABLE 44 0>> 
+<DEFINE-ROUTINE DRAW-PEGS> 
+<CONSTANT PEG-BG-PIC-TBL <PLTABLE BG-A BG-B BG-C BG-D BG-E BG-F BG-G BG-H BG-I
+BG-J BG-K BG-L BG-M BG-N BG-O BG-P BG-Q BG-R BG-S BG-T BG-U>> 
+<DEFINE-ROUTINE RESET-PEGBOARD> 
+<CONSTANT PEG-TABLE <TABLE 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1>> 
+<DEFINE-ROUTINE LEGAL-MOVE> 
+<CONSTANT LEGAL-MOVE-TABLE <PTABLE <PTABLE 0 0> <PTABLE 5 3 0 0 0 0 0 0> <
+PTABLE 4 3 0 0 0 0 0 0> <PTABLE 6 4 8 5 0 0 0 0> <PTABLE 2 3 9 6 11 7 0 0> <
+PTABLE 1 3 10 7 12 8 0 0> <PTABLE 3 4 8 7 14 9 16 10> <PTABLE 15 10 17 11 0 0 0
+0> <PTABLE 3 5 6 7 16 11 18 12> <PTABLE 4 6 11 10 20 14 0 0> <PTABLE 5 7 12 11
+0 0 0 0> <PTABLE 4 7 9 10 0 0 0 0> <PTABLE 5 8 10 11 21 18 0 0> <PTABLE 15 14 0
+0 0 0 0 0> <PTABLE 6 9 16 15 0 0 0 0> <PTABLE 7 10 13 14 17 16 0 0> <PTABLE 6
+10 8 11 14 15 18 17> <PTABLE 7 11 15 16 19 18 0 0> <PTABLE 8 12 16 17 0 0 0 0>
+<PTABLE 17 18 0 0 0 0 0 0> <PTABLE 9 14 0 0 0 0 0 0> <PTABLE 12 18 0 0 0 0 0 0>
+>> 
+<DEFINE-ROUTINE PBOZ-WIN-CHECK> 
+<DEFINE-ROUTINE PEG-COUNT> 
+<CONSTANT PEG-MOVE-TABLE <TABLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>> 
+<CONSTANT LETTER-OFFSET <- <ASCII !\A> 1>> 
+<GLOBAL PEG-MOVE-NUMBER 0> 
+<GLOBAL PEG-PASSAGE-OPENED <>> 
+<DEFINE-ROUTINE DISPLAY-MOVES> 
+<ROOM GAMING-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Gaming Room") (LDESC
+"This is a plushly carpeted room draped in deeply hued velvets and satins.
+The sole exit is south.") (SOUTH TO PEG-ROOM) (OUT TO WEST-WING) (FLAGS ONBIT
+RLANDBIT) (GLOBAL CARPET) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-2
+>) (ACTION GAMING-ROOM-F)> 
+<DEFINE-ROUTINE GAMING-ROOM-F> 
+<OBJECT CARPET (LOC LOCAL-GLOBALS) (DESC "carpet") (SYNONYM CARPET CARPETING) (
+ADJECTIVE PLUSH RED) (ACTION CARPET-F)> 
+<DEFINE-ROUTINE CARPET-F> 
+<ROOM GYM (LOC ROOMS) (REGION "Flatheadia") (DESC "Gym") (LDESC
+"Dimwit despised all forms of exercise; this room must have been a later
+addition by one of his successors. Doorways lead north and southwest.") (NORTH
+TO WEST-WING) (SW TO STEAM-BATH) (FLAGS RLANDBIT ONBIT) (SYNONYM GYM) (MAP-LOC
+<PTABLE MAIN-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-2>) (ICON GYM-ICON)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT DUMBBELL (LOC GYM) (DESC "dumbbell") (LDESC
+"A 100-ugh dumbbell is sitting here, looking heavy.") (SYNONYM DUMBBELL WEIGHTS
+SET) (ADJECTIVE HEAVY 100-UGH) (FLAGS TAKEBIT MAGICBIT) (SIZE 99) (VALUE 12) (
+ACTION DUMBELL-F)> 
+<DEFINE-ROUTINE DUMBELL-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM STEAM-BATH (LOC ROOMS) (REGION "Flatheadia") (DESC "Steam Bath") (LDESC
+"For generations, the Kings of Quendor have come here to sweat off excess
+pounds (which, given their excessive infatuation with chocolate truffles,
+was plenty often). The only exit is northeast.") (NE TO GYM) (OUT TO GYM) (
+FLAGS RLANDBIT ONBIT) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-1>)> 
+<ROOM EAST-HALL (LOC ROOMS) (REGION "Flatheadia") (DESC "East Hall") (EAST TO
+EAST-WING IF EAST-DOOR IS OPEN) (NW TO COURTYARD) (FLAGS RLANDBIT ONBIT) (
+GLOBAL EAST-DOOR LOCK-OBJECT) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5
+MAP-GEN-X-7>) (ACTION EAST-HALL-F)> 
+<DEFINE-ROUTINE EAST-HALL-F> 
+<OBJECT EAST-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (SYNONYM DOOR) (ADJECTIVE
+LARGE HEAVY OAK OAKEN) (FLAGS LOCKEDBIT DOORBIT) (ACTION EAST-DOOR-F)> 
+<DEFINE-ROUTINE EAST-DOOR-F> 
+<ROOM EAST-WING (LOC ROOMS) (REGION "Flatheadia") (DESC "East Wing") (LDESC
+"This wide corridor runs the length of the east wing of the castle. The
+corridor ends at a large door to the west. There are openings to the north,
+south and east.") (WEST TO EAST-HALL IF EAST-DOOR IS OPEN) (SOUTH TO CHAPEL) (
+NORTH TO LIBRARY) (EAST TO GUEST-ROOMS) (GLOBAL EAST-DOOR LOCK-OBJECT) (FLAGS
+RLANDBIT ONBIT) (VALUE 8) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8
+>) (ICON EAST-WING-ICON)> 
+<ROOM GUEST-ROOMS (LOC ROOMS) (REGION "Flatheadia") (DESC "Guest Rooms") (LDESC
+"This is where visitors to the castle would stay. Many stayed for decades.
+Passages lead east and west.") (EAST TO SERVANTS-QUARTERS) (WEST TO EAST-WING)
+(FLAGS RLANDBIT ONBIT) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-9>)>
+
+<BEGIN-SEGMENT 0> 
+<OBJECT WAND (LOC GUEST-ROOMS) (DESC "wand") (FDESC
+"It seems that a wizard must have been a recent guest at the castle, since
+a rather typical wizardly wand is lying here.") (SYNONYM WAND WANDS) (ADJECTIVE
+TYPICAL WIZARDLY INANIMATION MAGIC) (FLAGS TAKEBIT READBIT) (RESEARCH
+"\"Wands are among the most useful forms of magic; the wand is merely
+pointed at the object to be ensorcelled.\"") (SIZE 3) (ACTION WAND-F)> 
+<GLOBAL WAND-LIFE 5> 
+<DEFINE-ROUTINE WAND-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT CASTLE> 
+<ROOM SERVANTS-QUARTERS (LOC ROOMS) (REGION "Flatheadia") (DESC
+"Servants' Quarters") (LDESC
+"These are the spartan rooms where the servants lived (if you can actually call
+this \"living\"). A passage leads west and a narrow stair spirals upward.") (
+WEST TO GUEST-ROOMS) (UP TO JESTERS-QUARTERS) (FLAGS RLANDBIT) (SYNONYM
+QUARTERS) (ADJECTIVE SERVANT\'S) (GLOBAL STAIRS) (MAP-LOC <PTABLE MAIN-MAP-NUM
+MAP-GEN-Y-5 MAP-GEN-X-10>)> 
+<ROOM CHAPEL (LOC ROOMS) (REGION "Flatheadia") (DESC "Chapel") (LDESC
+"None of the Flatheads were particularly religious, but that didn't stop
+Dimwit from building the biggest chapel in all of Quendor. The exit is north,
+at the rear of the chapel. Just below the altar is a small trap door.") (NORTH
+TO EAST-WING) (DOWN TO CRYPT IF TRAP-DOOR IS OPEN) (SYNONYM CHAPEL) (GLOBAL
+TRAP-DOOR) (FLAGS RLANDBIT ONBIT) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-6
+MAP-GEN-X-8>) (ICON CHAPEL-ICON)> 
+<OBJECT CHAPEL-ALTAR (LOC CHAPEL) (DESC "altar") (SYNONYM ALTAR) (FLAGS
+NDESCBIT VOWELBIT SURFACEBIT SEARCHBIT CONTBIT OPENBIT)> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT LOWER> 
+<ROOM LOWER-HALL (LOC ROOMS) (REGION "Flatheadia") (DESC "Lower Hall") (LDESC
+"This large hall, barely illuminated by your light, has seen its better
+days; based on the dust and debris, the lower levels of the castle probably
+haven't been maintained since Dimwit's death. Stairs lead up and down; the
+latter stair looks particularly forbidding. Passages head off to the north,
+south, southeast, and southwest.") (NORTH TO LABORATORY) (SOUTH TO KENNELS) (SW
+TO G-U-HIGHWAY) (SE TO ROYAL-ZOO) (DOWN TO LOWEST-HALL) (UP TO GREAT-HALL) (
+FLAGS RLANDBIT) (GLOBAL STAIRS) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM
+MAP-GEN-Y-5 MAP-GEN-X-6>)> 
+<ROOM LABORATORY (LOC ROOMS) (REGION "Flatheadia") (DESC "Laboratory") (LDESC
+"You have entered the lab that was affectionately known as Froblo Park.
+The main exit is south, but there's a narrow doorway on the north wall.") (
+SOUTH TO LOWER-HALL) (NORTH TO TESTING-ROOM) (FLAGS RLANDBIT) (SYNONYM
+LABORATORY) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-6>) (
+ICON LABORATORY-ICON)> 
+<OBJECT SCREWDRIVER (LOC LABORATORY) (DESC "screwdriver") (FDESC
+"Sitting on the lab bench is an old screwdriver.") (SYNONYM SCREWDRIVER DRIVER)
+(ADJECTIVE SCREW OLD) (FLAGS TAKEBIT MAGICBIT) (VALUE 12)> 
+<ROOM TESTING-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Testing Room") (
+LDESC "This is where certain dangerous experiments would take place. There
+are two large booths, one on the left side of the room, the other on
+the right side. The only exit is south.") (SOUTH TO LABORATORY) (OUT TO
+LABORATORY) (FLAGS RLANDBIT) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-3
+MAP-GEN-X-6>)> 
+<OBJECT LEFT-BOOTH (LOC TESTING-ROOM) (DESC "left booth") (SYNONYM BOOTH) (
+ADJECTIVE LEFT) (FLAGS NDESCBIT VEHBIT INBIT DROPBIT CONTBIT OPENBIT SEARCHBIT)
+(GENERIC G-BOOTH-F) (CAPACITY 60) (ACTION BOOTH-F)> 
+<OBJECT RIGHT-BOOTH (LOC TESTING-ROOM) (DESC "right booth") (SYNONYM BOOTH) (
+ADJECTIVE RIGHT) (FLAGS NDESCBIT VEHBIT INBIT DROPBIT CONTBIT OPENBIT SEARCHBIT
+) (GENERIC G-BOOTH-F) (CAPACITY 60) (ACTION BOOTH-F)> 
+<DEFINE-ROUTINE G-BOOTH-F> 
+<DEFINE-ROUTINE BOOTH-F> 
+<OBJECT LEFT-BOOTH-BUTTON (LOC LEFT-BOOTH) (DESC "ominous black button") (
+SYNONYM BUTTON) (ADJECTIVE OMINOUS BLACK) (FLAGS NDESCBIT) (GENERIC G-BUTTON-F)
+(ACTION BOOTH-BUTTON-F)> 
+<OBJECT RIGHT-BOOTH-BUTTON (LOC RIGHT-BOOTH) (DESC "ominous black button") (
+SYNONYM BUTTON) (ADJECTIVE OMINOUS BLACK) (GENERIC G-BUTTON-F) (FLAGS NDESCBIT)
+(ACTION BOOTH-BUTTON-F)> 
+<DEFINE-ROUTINE G-BUTTON-F> 
+<GLOBAL TURNED-INTO <>> 
+<DEFINE-ROUTINE BOOTH-BUTTON-F> 
+<DEFINE-ROUTINE I-UNTURN> 
+<DEFINE-ROUTINE TO-SPEAK-OF> 
+<DEFINE-ROUTINE GOOD-MEAL> 
+<ROOM KENNELS (LOC ROOMS) (REGION "Flatheadia") (DESC "Kennels") (LDESC
+"This was once where the royal bloodhounds lived. Considering the size
+of the leash and collar fragments scattered around, the royal bloodhounds
+were BIG. Passages lead east and north.") (NORTH TO LOWER-HALL) (EAST TO
+ROYAL-ZOO) (FLAGS RLANDBIT) (SYNONYM KENNEL KENNELS) (MAP-LOC <PTABLE
+LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-6>) (ICON KENNELS-ICON)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT TOBOGGAN (LOC KENNELS) (DESC "toboggan") (SYNONYM TOBOGGAN SLED
+INSCRIPTION) (FLAGS TAKEBIT READBIT VEHBIT CONTBIT OPENBIT SEARCHBIT SURFACEBIT
+) (CAPACITY 30) (SIZE 20) (ACTION TOBOGGAN-F) (TEXT
+"A large inscription says, \"Made by the Frobozz Magic Toboggan Company.\"
+Below that is a faded image of a blooming morgia plant, with the name
+\"Morgiabud.\" It's possible that this sled may have once belonged to
+publishing giant William Randolph Flathead (a.k.a. \"Citizen Flathead\").")> 
+<DEFINE-ROUTINE TOBOGGAN-F> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT LOWER> 
+<ROOM ROYAL-ZOO (LOC ROOMS) (REGION "Flatheadia") (DESC "Royal Zoo") (LDESC
+"Dimwit loved zoos, because he loved imprisonment of any kind -- if the
+dungeons were full of prisoners he could at least get some joy from
+throwing a couple of minxes behind bars. This zoo, with 69,105 cages,
+is easily the largest in Quendor. There are passages to the west and
+northwest, and a wide tunnel leads east.") (NW TO LOWER-HALL) (WEST TO KENNELS)
+(EAST TO WEST-SHORE) (FLAGS RLANDBIT) (SYNONYM ZOO) (ADJECTIVE ROYAL) (MAP-LOC
+<PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-7>) (ICON ROYAL-ZOO-ICON)> 
+<OBJECT CAGE (LOC ROYAL-ZOO) (DESC "cage") (FDESC
+"The zoo has been extensively looted; only one of the many nearby cages
+still seems to be occupied.") (SYNONYM CAGE) (FLAGS CONTBIT SEARCHBIT TRANSBIT)
+(ACTION CAGE-F)> 
+<DEFINE-ROUTINE CAGE-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT SNAKE (LOC CAGE) (DESC "snake") (SYNONYM SNAKE ROPE) (FLAGS TAKEBIT
+ANIMATEDBIT) (INANIMATE-DESC "rope") (WAND-TEXT
+"The snake shivers and shimmers and is then still. Too still. You approach,
+tentatively at first, then with more conviction. The snake is gone, replaced
+by (or turned into!) a good, heavy rope.") (ANIMATE-ROUTINE I-W-SNAKE) (ACTION
+SNAKE-F)> 
+<DEFINE-ROUTINE SNAKE-F> 
+<DEFINE-ROUTINE I-W-SNAKE> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT LOWER> 
+<ROOM LOWEST-HALL (LOC ROOMS) (REGION "Flatheadia") (DESC "Lowest Hall") (LDESC
+"You get the feeling that no ray of light has touched these walls in ages.
+Few have even ventured down here since the Curse was laid upon the castle
+those many years ago. A decrepit stair leads upward, and there's an opening
+to the north. The bottom of a steep, gravelly passage is visible to the
+east. To the south is the most massively reinforced door you've ever seen.
+A rickety ladder can take you down to even lower domains.") (NORTH TO
+PASSAGE-STORAGE-ROOM) (SOUTH TO VAULT IF VAULT-DOOR IS OPEN) (EAST SORRY
+"You can't get a footing on the steep, gravelly passage.") (UP TO LOWER-HALL) (
+FLAGS RLANDBIT) (DOWN TO PITS) (GLOBAL VAULT VAULT-DOOR LOCK-OBJECT
+FIXED-LADDER STAIRS) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-5
+MAP-GEN-X-4>)> 
+<OBJECT VAULT-DOOR (LOC LOCAL-GLOBALS) (DESC "vault door") (SYNONYM DOOR) (
+ADJECTIVE VAULT) (FLAGS DOORBIT LOCKEDBIT) (ACTION VAULT-DOOR-F)> 
+<DEFINE-ROUTINE VAULT-DOOR-F> 
+<OBJECT DIAL (LOC LOWEST-HALL) (DESC "dial") (SYNONYM DIAL) (ADJECTIVE LARGE) (
+FLAGS NDESCBIT) (OWNER VAULT-DOOR) (ACTION DIAL-F)> 
+<GLOBAL DIAL-NUMBER 0> 
+<DEFINE-ROUTINE DIAL-F> 
+<ROOM VAULT (LOC ROOMS) (REGION "Flatheadia") (DESC "Vault") (LDESC
+"This was just the vault where Dimwit stored his trifles; his valuables
+were stored in a hidden vault buried seven miles under the Flathead
+Mountains, accessible only by a chain of sixty-three secret teleportation
+spells. The only exit is north.") (NORTH TO LOWEST-HALL IF VAULT-DOOR IS OPEN)
+(OUT TO LOWEST-HALL IF VAULT-DOOR IS OPEN) (FLAGS RLANDBIT) (GLOBAL VAULT-DOOR)
+(SYNONYM VAULT) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>)
+(ICON VAULT-ICON) (ACTION VAULT-F)> 
+<DEFINE-ROUTINE VAULT-F> 
+<OBJECT STOCK-CERTIFICATE (LOC VAULT) (DESC "stock certificate") (SYNONYM
+CERTIFICATE STOCK) (ADJECTIVE STOCK RARE) (FLAGS TAKEBIT BURNBIT READBIT
+MAGICBIT) (VALUE 12) (SIZE 2) (TEXT
+"The certificate reads \"FrobozzCo International -- 923,130,877 shares.\"")> 
+<ROOM PASSAGE-STORAGE-ROOM (LOC ROOMS) (REGION "Flatheadia") (DESC
+"Passage Storage Room") (LDESC
+"This is a tremendous warehouse where passageways and tunnels would be stored
+before being installed as part of the Great Underground Empire. The only exit
+is south.") (SOUTH TO LOWEST-HALL) (OUT TO LOWEST-HALL) (FLAGS RLANDBIT) (
+MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON
+PASSAGE-STORAGE-ICON)> 
+<BEGIN-SEGMENT 0> 
+<OBJECT NW-SE-PASSAGE (LOC PASSAGE-STORAGE-ROOM) (DESC
+"northwest-southeast passage") (SYNONYM PASSAGE PASSAGEWAY) (ADJECTIVE MAGIC NW
+NW-SE SLIGHTLY IRREGULAR) (FLAGS TAKEBIT TRYTAKEBIT) (DESCFCN NW-SE-PASSAGE-F)
+(OWNER <>) (SIZE 25) (ACTION PASSAGE-F)> 
+<DEFINE-ROUTINE NW-SE-PASSAGE-F> 
+<OBJECT N-S-PASSAGE (LOC PASSAGE-STORAGE-ROOM) (DESC "north-south passage") (
+SYNONYM PASSAGE PASSAGEWAY) (ADJECTIVE MAGIC NORTH-SOUTH N-S SLIGHTLY DAMAGED)
+(FLAGS TAKEBIT TRYTAKEBIT) (DESCFCN N-S-PASSAGE-F) (OWNER <>) (SIZE 25) (ACTION
+PASSAGE-F)> 
+<DEFINE-ROUTINE N-S-PASSAGE-F> 
+<DEFINE-ROUTINE PASSAGE-F> 
+<DEFINE-ROUTINE D-PASSAGE> 
+<GLOBAL N-S-PASSAGE-DIR <>> 
+<GLOBAL NW-SE-PASSAGE-DIR <>> 
+<GLOBAL N-S-PASSAGE-LOC <>> 
+<GLOBAL NW-SE-PASSAGE-LOC <>> 
+<OBJECT NOTICE (DESC "notice") (SYNONYM NOTICE) (FLAGS TAKEBIT BURNBIT READBIT)
+(SIZE 2) (TEXT "\"Hello, Builder!|
+   Your Magic Passage should last you for many useful years. To install,
+simply INSTALL THE PASSAGE IN THE _____ WALL. Remember, your Magic Passage,
+once installed, is not removable! Please contact your dealer with any
+questions or problems!|
+   Another fine product of the Frobozz Magic Passage Company.\"")> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT LOWER> 
+<ROOM PITS (LOC ROOMS) (DESC "Pits") (REGION "Flatheadia") (UP TO LOWEST-HALL)
+(DOWN PER PIT-ENTER-F) (FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL FIXED-LADDER
+PITS-OBJECT) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>) (
+THINGS <> SHADOW PHIL-SHADOW-PS) (ACTION PITS-F)> 
+<DEFINE-ROUTINE PITS-F> 
+<DEFINE-ROUTINE D-PITS-FLOOR> 
+<DEFINE-ROUTINE PIT-ENTER-F> 
+<OBJECT PITS-OBJECT (LOC LOCAL-GLOBALS) (DESC "bottomless pit") (SYNONYM PIT
+PITS) (ADJECTIVE BOTTOMLESS) (ACTION PITS-OBJECT-F)> 
+<DEFINE-ROUTINE PITS-OBJECT-F> 
+<BEGIN-SEGMENT 0> 
+<OBJECT LANTERN (LOC PITS) (DESC "brass lantern") (FDESC
+"At the far end of the cavern sits an ancient battery-powered brass
+lantern.") (SYNONYM LAMP LANTERN LIGHT MONOGRAM) (ADJECTIVE ANCIENT BRASS
+BATTERY-POWERED) (FLAGS TRYTAKEBIT TAKEBIT LIGHTBIT MAGICBIT READBIT) (SIZE 15)
+(VALUE 0) (TEXT "You can barely read the worn letters: \"T. A. F.\"") (ACTION
+LANTERN-F)> 
+<DEFINE-ROUTINE LANTERN-F> 
+<GLOBAL LANTERN-COUNTER 500> 
+<DEFINE-ROUTINE I-LANTERN> 
+<END-SEGMENT> 
+<BEGIN-SEGMENT LOWER> 
+<ROOM LEDGE-IN-PIT (LOC ROOMS) (DESC "Ledge in Bottomless Pit") (REGION
+"Region:  Unknown") (LDESC
+"This is a wide, irregular ledge, far below the lip of the pit. The ledge
+is strewn with the bones of creatures (including a few luckless humans)
+who fell into the pit and landed here, to be devoured by grues. Rough
+handholds, possibly natural, lead upward and downward.") (UP TO PITS) (DOWN TO
+MOUTH-OF-CAVE) (FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL BONES PITS-OBJECT) (
+MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-2>) (ICON
+LEDGE-IN-PIT-ICON) (THINGS WIDE LEDGE LEDGE-IN-PIT-PS)> 
+<DEFINE-ROUTINE LEDGE-IN-PIT-PS> 
+<ROOM MOUTH-OF-CAVE (LOC ROOMS) (DESC "Mouth of Cave") (REGION
+"Region:  Unknown") (LDESC
+"A narrow, slimy cave connects here with the bottomless pit, leading
+roughly northeast. The handholds in the rock walls of the pit, which have
+been fairly dependable down to here, seem to peter out just below you.") (UP TO
+LEDGE-IN-PIT) (DOWN SORRY "There are no more handholds!") (NE TO SLOPING-CAVE)
+(FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL PITS-OBJECT) (MAP-LOC <PTABLE
+LOWER-LEVEL-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-1>) (ICON MOUTH-OF-CAVE-ICON)> 
+<ROOM SLOPING-CAVE (LOC ROOMS) (DESC "Sloping Cave") (REGION "Region:  Unknown"
+) (LDESC "You are in a cramped cave with disgustingly sticky walls which press
+in against you. The cave drops sharply to the northeast, and rises
+sharply to the southwest.") (NE TO TOP-OF-WELL) (DOWN TO TOP-OF-WELL) (SW TO
+MOUTH-OF-CAVE) (UP TO MOUTH-OF-CAVE) (FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <
+PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-2>)> 
+<ROOM TOP-OF-WELL (LOC ROOMS) (DESC "Top of Well") (REGION "Region:  Unknown")
+(LDESC "The cave ends here at the opening of a natural well. The walls of the
+well look irregular enough to climb down. The sensation of being deep
+within the bowels of the earth is overpowering here; you feel as though
+you are farther down than anyone has ever been before.") (SW TO SLOPING-CAVE) (
+UP TO SLOPING-CAVE) (DOWN TO UNDER-THE-WORLD) (FLAGS RLANDBIT UNDERGROUNDBIT) (
+MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-3>)> 
+<ROOM UNDER-THE-WORLD (LOC ROOMS) (DESC "Under the World") (REGION
+"Region:  Unknown") (LDESC
+"This is surely the most incredible sight that any pair of eyes has ever
+gazed upon: You have reached the underside of the world, which hangs above
+you, an enormous slab of dirt and rock which stretches as far as you can see
+in all directions! A glowing white haze stretches below you.|
+   To the west, you can see the head and shoulders of a muscular brogmoid;
+the rest of his body seems to be lost in the haze. As your mind adjusts to the
+scale of this place, you realize that the brogmoid is tremendous beyond
+description, and that he is holding the world upon his shoulder and upper
+back.|
+   Thanks to some hardy roots which hang below the world, it looks like you
+could swing over to the shoulder of the brogmoid. Above you, a hole leads
+up into the world.") (UP TO TOP-OF-WELL) (DOWN SORRY
+"There's nothing there -- literally.") (WEST TO HANGING-FROM-ROOTS) (FLAGS
+RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL BROGMOID ROOTS) (MAP-LOC <PTABLE
+LOWER-LEVEL-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-3>) (ACTION UNDER-THE-WORLD-F)> 
+<DEFINE-ROUTINE UNDER-THE-WORLD-F> 
+<ROOM HANGING-FROM-ROOTS (LOC ROOMS) (DESC "Hanging From Roots") (REGION
+"Region:  Unknown") (LDESC
+"You are clutching some hardy tree roots, between a seemingly infinite plane
+of earth above you, and a seemingly infinite haze below. To the east, a tiny
+black spot indicates the opening of a well leading upward. To the west, part
+of the shoulder, neck, and ear of an incredibly gigantic brogmoid fills your
+view.") (UP SORRY "The world is in the way.") (DOWN SORRY
+"There's nothing there -- literally.") (WEST TO SHOULDER) (EAST TO
+UNDER-THE-WORLD) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL BROGMOID ROOTS) (
+MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-2>) (ICON ROOTS-ICON)
+> 
+<OBJECT ROOTS (LOC LOCAL-GLOBALS) (DESC "root") (SYNONYM ROOTS ROOT) (ADJECTIVE
+HARDY TREE) (ACTION ROOTS-F)> 
+<DEFINE-ROUTINE ROOTS-F> 
+<ROOM SHOULDER (LOC ROOMS) (DESC "Shoulder") (REGION "Region:  Unknown") (LDESC
+"You have landed on a shoulder of mind-numbing dimension. The hairs of the
+shoulder are like mighty trees, the pores like deep craters. Thanks to the
+thickness of the hair/trees, you could probably climb up the neck to the
+ear which looms above you. A series of underhanging roots make it possible
+to swing off to the east.") (EAST TO HANGING-FROM-ROOTS) (UP TO EAR) (FLAGS
+RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL BROGMOID ROOTS) (MAP-LOC <PTABLE
+LOWER-LEVEL-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-1>)> 
+<ROOM EAR (LOC ROOMS) (DESC "Ear") (REGION "Region:  Unknown") (IN TO INNER-EAR
+IF EAR-PASSAGE-OPEN ELSE "The mound of ear fungus blocks entry into the ear.")
+(DOWN TO SHOULDER) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL BROGMOID) (MAP-LOC
+<PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-1 MAP-GEN-X-1>) (ICON EAR-ICON) (ACTION
+EAR-F)> 
+<DEFINE-ROUTINE EAR-F> 
+<GLOBAL EAR-PASSAGE-OPEN <>> 
+<OBJECT EAR-FUNGUS (LOC EAR) (DESC "ear fungus") (SYNONYM FUNGUS FUNGI) (
+ADJECTIVE EAR) (FLAGS VOWELBIT NDESCBIT PLANTBIT) (GENERIC G-FUNGUS-F) (
+RESEARCH "\"A class of saprophytic parasitical plants which lack chlorophyll and are
+frequently found in the less hygienic cavities of brogmoids.\"") (ACTION
+EAR-FUNGUS-F)> 
+<DEFINE-ROUTINE EAR-FUNGUS-F> 
+<DEFINE-ROUTINE G-FUNGUS-F> 
+<GLOBAL FUNGUS-NUMBER 12> 
+<CONSTANT FUNGUS-TABLE <PTABLE "Seymour" "Sherman" "Irving" "Sammy" "Myron"
+"Boris" "Melvin" "Lester" "Julius" "Ricardo" "Omar" "Barnaby">> 
+<CONSTANT FUNGUS-WORDS <PTABLE <VOC "SEYMOUR" <>> <VOC "SHERMAN" <>> <VOC
+"IRVING" <>> <VOC "SAMMY" <>> <VOC "MYRON" <>> <VOC "BORIS" <>> <VOC "MELVIN" <
+>> <VOC "LESTER" <>> <VOC "JULIUS" <>> <VOC "RICARDO" <>> <VOC "OMAR" <>> <VOC
+"BARNABY" <>>>> 
+<OBJECT BROGMOID (LOC LOCAL-GLOBALS) (DESC "giant brogmoid") (SYNONYM BROGMOID
+BROGMOIDS SHOULDER EAR TOE) (ADJECTIVE LARGE) (ACTION BROGMOID-F)> 
+<DEFINE-ROUTINE BROGMOID-F> 
+<ROOM INNER-EAR (LOC ROOMS) (DESC "Inner Ear") (REGION "Region:  Unknown") (
+LDESC "You have reached the brogmoid's eardrum, which prevents any farther travel
+inward. A passage through a forest of fungus leads back out.") (IN SORRY
+"The membrane of the eardrum is tougher than most walls.") (OUT TO EAR) (FLAGS
+RLANDBIT OUTSIDEBIT) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-1
+EAR-ICON-LOC>)> 
+<OBJECT EARWAX (LOC INNER-EAR) (OWNER EARWAX) (DESC "hunk of brogmoid ear wax")
+(SYNONYM HUNK WAX EARWAX) (ADJECTIVE BROGMOID EAR) (FLAGS TAKEBIT)> 
+<END-SEGMENT> 
\ No newline at end of file
diff --git a/castle.zap b/castle.zap
new file mode 100644 (file)
index 0000000..c0280eb
--- /dev/null
@@ -0,0 +1,2732 @@
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  LOWER-HALL-ENTER-F,RARG
+       FSET?   OUTER-GATE,OPENBIT /?CTR2
+       ZERO?   TIME-STOPPED /?CCL3
+?CTR2: ZERO?   RARG \FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "Near the bottom of the flight, the steps are blocked by newly-fallen rubble!"
+       CRLF    
+       RFALSE  
+?CCL3: RETURN  LOWER-HALL
+
+
+       .FUNCT  PROCLAMATION-F
+       EQUAL?  PRSA,V?TAKE \FALSE
+       FSET?   PROCLAMATION,TRYTAKEBIT \FALSE
+       CALL2   ITAKE,TRUE-VALUE
+       EQUAL?  STACK,M-FATAL /TRUE
+       PUTP    PROCLAMATION,P?ACTION,FALSE-VALUE
+       PUTP    PROCLAMATION,P?OWNER,FALSE-VALUE
+       FCLEAR  PROCLAMATION,TRYTAKEBIT
+       PRINTR  "You rip the decree from the wall."
+
+
+       .FUNCT  ENTRANCE-HALL-F,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "This is where visitors enter the castle proper, through the wide doorway to the north. "
+       FSET?   PORTCULLIS,OPENBIT /?CND4
+       PRINTI  "The doorway is currently blocked by a sturdy portcullis. "
+?CND4: PRINTI  "Oddly, there is a doorbell on the inside of the doorway. Other doorways lead east, west, and south."
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-END \FALSE
+       IN?     JESTER,HERE \FALSE
+       FSET?   PORTCULLIS,OPENBIT /FALSE
+       CALL2   SETUP-ORPHAN,STR?44
+       RSTACK  
+
+
+       .FUNCT  DOORBELL-F
+       EQUAL?  PRSA,V?TOUCH,V?PUSH \FALSE
+       PRINTI  """Ding, dong!"""
+       CRLF    
+       IN?     JESTER,HERE /TRUE
+       SET     'DO-J,TRUE-VALUE
+       ICALL2  I-JESTER,TRUE-VALUE
+       RTRUE   
+
+
+       .FUNCT  PORTCULLIS-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "The portcullis, which is a heavy iron latticework used to block this entrance doorway, is "
+       ICALL2  OPEN-CLOSED,PORTCULLIS
+       PRINT   PERIOD-CR
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?OPEN \?CCL5
+       FSET?   PORTCULLIS,OPENBIT /?CCL5
+       PRINTR  "You try to lift the portcullis, but with no effect (aside from nearly breaking your back)."
+?CCL5: EQUAL?  PRSA,V?CLOSE \FALSE
+       FSET?   PORTCULLIS,OPENBIT \FALSE
+       PRINT   WONT-BUDGE
+       RTRUE   
+
+       .ENDSEG
+
+       .SEGMENT "VILLAGE"
+
+
+       .FUNCT  MOAT-F
+       CALL2   TOUCHING?,MOAT
+       ZERO?   STACK /FALSE
+       EQUAL?  HERE,PARAPET,UPPER-BARBICAN \FALSE
+       CALL2   CANT-REACH,MOAT
+       RSTACK  
+
+
+       .FUNCT  INNER-BAILEY-F,RARG
+       ZERO?   DEMO-VERSION? /FALSE
+       EQUAL?  RARG,M-END \FALSE
+       CALL1   END-DEMO
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  WORM-F
+       EQUAL?  PRSA,V?EAT \?CCL3
+       EQUAL?  TURNED-INTO,ROOSTER \?CCL6
+       CALL2   GOOD-MEAL,WORM
+       RSTACK  
+?CCL6: PRINTR  "Yukko!"
+?CCL3: EQUAL?  PRSA,V?RESEARCH \FALSE
+       CALL    NOUN-USED?,WORM,W?WORM,W?EARTHWORM
+       ZERO?   STACK /FALSE
+       PRINTR  """A low form of ground-dwelling animal life."""
+
+
+       .FUNCT  I-W-WORM,L
+       LOC     WORM >L
+       FSET    WORM,ANIMATEDBIT
+       IN?     WORM,LAKE-BOTTOM \?CCL3
+       REMOVE  WORM
+       RTRUE   
+?CCL3: CALL2   META-LOC,WORM
+       EQUAL?  STACK,HERE \?CCL5
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "   The worm "
+       EQUAL?  L,PROTAGONIST,HERE /?CCL8
+       FSET?   L,DROPBIT /?CCL8
+       MOVE    WORM,HERE
+       FSET    L,OPENBIT
+       PRINTI  "wriggles out of"
+       ICALL2  TPRINT,L
+       JUMP    ?CND6
+?CCL8: PRINTI  "has resumed wriggling"
+?CND6: PRINT   PERIOD-CR
+       RTRUE   
+?CCL5: CALL2   META-LOC,WORM
+       MOVE    WORM,STACK
+       RFALSE  
+
+       .ENDSEG
+
+       .SEGMENT "VILLAGE"
+
+
+       .FUNCT  TREE-F,ARG
+       EQUAL?  ARG,M-WINNER \?CCL3
+       CALL1   PLANT-STUNNED
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?GET-NEAR \?CCL5
+       PRINTR  "You are now standing at the base of the tree."
+?CCL5: EQUAL?  PRSA,V?LISTEN \?CCL7
+       ZERO?   PLANT-TALKER /?CCL7
+       EQUAL?  PRSO,MIGHTY-ELM \?CCL12
+       PRINTR  "The mighty elm rumbles in a voice that bespeaks great age and weariness. It seems to be pining for its simple, happier, younger days. Most particularly, it seems to be fondly recalling a playful squirrel named ""Rosebud."""
+?CCL12:        EQUAL?  PRSO,SMALL-ELM \?CCL14
+       PRINTR  "The little elm's roots have, apparently, just reached down to a particularly yummy patch of decayed mulch, and the young elm is humming rhapsodically about the yumminess of the minerals therein."
+?CCL14:        PRINTR  "The two elms are exchanging off-color jokes, most of which seem to involve various methods of pollen transfer."
+?CCL7: EQUAL?  PRSA,V?CLIMB-UP,V?CLIMB \?CCL16
+       EQUAL?  PRSO,SMALL-ELM \?CCL19
+       PRINTR  "Your weight is too much for this little tree."
+?CCL19:        PRINT   POORLY-CONFIGURED
+       RTRUE   
+?CCL16:        EQUAL?  PRSA,V?LISTEN \?CCL21
+       ZERO?   PLANT-TALKER /?CCL21
+       PRINTR  "The tree's speech is very childlike and difficult to understand, but it seems to be fantasizing about the day when it will be tall enough to see over the castle walls."
+?CCL21:        EQUAL?  PRSA,V?MEASURE \FALSE
+       PRINTI  "You can"
+       EQUAL?  PRSO,MIGHTY-ELM \?CCL28
+       PRINTI  "'t come close to getting"
+       JUMP    ?CND26
+?CCL28:        EQUAL?  PRSO,SMALL-ELM \?CCL31
+       PRINTI  " easily"
+       JUMP    ?CND29
+?CCL31:        PRINTI  " just barely"
+?CND29:        PRINTI  " get"
+?CND26:        PRINTR  " your arms around the tree."
+
+
+       .FUNCT  BARBICAN-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This dimly lit room is the bottom level of the gate-tower which guards the castle's drawbridge. It lies at the tip of a peninsula into the moat; the rest of the peninsula is to the southeast. A drawbridge to the northwest is "
+       ICALL2  OPEN-CLOSED,DRAWBRIDGE
+       PRINTI  ", and a ladder leads to an upper level."
+       RTRUE   
+
+       .SEGMENT "0"
+
+
+       .FUNCT  CANNONBALL-F
+       EQUAL?  PRSA,V?PUT-ON \FALSE
+       EQUAL?  P-PRSA-WORD,W?DROP \FALSE
+       EQUAL?  PRSO,CANNONBALL \FALSE
+       MOVE    CANNONBALL,HERE
+       FSET?   PRSI,PARTBIT \?CCL9
+       PRINTR  "Ouch!!!"
+?CCL9: GETP    PRSI,P?SIZE
+       GRTR?   STACK,10 \?CCL11
+       PRINTR  "This has no effect."
+?CCL11:        PRINTI  "Miraculously,"
+       ICALL1  TPRINT-PRSI
+       PRINTR  " survives."
+
+       .ENDSEG
+
+       .SEGMENT "VILLAGE"
+
+
+       .FUNCT  MURDER-HOLE-F,TAKER
+       EQUAL?  PRSA,V?LOOK-INSIDE \?CCL3
+       PRINTR  "You can just make out the barbican below."
+?CCL3: EQUAL?  PRSA,V?REACH-IN \?CCL5
+       PRINT   NOTHING-IN-REACH
+       RTRUE   
+?CCL5: EQUAL?  PRSA,V?PUT-THROUGH,V?PUT \FALSE
+       EQUAL?  PRSI,MURDER-HOLE \FALSE
+       EQUAL?  PRSO,CANNONBALL \?CCL12
+       CALL2   VISIBLE?,CANDLE
+       ZERO?   STACK /?CCL12
+       FSET?   CANDLE,ONBIT \?CCL12
+       CALL2   ULTIMATELY-IN?,CANDLE
+       ZERO?   STACK \?CND16
+       MOVE    CANDLE,PROTAGONIST
+?CND16:        PRINTI  "As you drop the cannonball through the murder hole, you hear a sickening ""splat,"" followed by a woman's scream!
+   ""Emily, what is it!""
+   ""It's Victor -- he's been murdered!""
+   ""I'll summon the Inspector! Ah, here he is now!"" You hear whispered questions and answers from the room below, followed by footsteps on the stairs. The jester enters, wearing a trenchcoat and smoking a large pipe.
+   ""I'm afraid I'm going to have to order Sgt. Duffy to place you under arrest, sir."" You grow dizzy with confusion, and your surroundings swirl wildly about you"
+       PRINT   ELLIPSIS
+       ICALL2  GOTO,DUNGEON
+       JUMP    ?CND10
+?CCL12:        PRINTI  "You hear a ""thunk"" from down below."
+       CRLF    
+?CND10:        CALL    FIND-IN,BARBICAN,WHITEBIT >TAKER
+       ZERO?   TAKER \?CTR19
+       CALL    FIND-IN,BARBICAN,BLACKBIT >TAKER
+       ZERO?   TAKER /?CCL20
+?CTR19:        MOVE    PRSO,TAKER
+       EQUAL?  PRSO,PIGEON \TRUE
+       ICALL2  MOVE-TO-PERCH,TAKER
+       RTRUE   
+?CCL20:        MOVE    PRSO,BARBICAN
+       RTRUE   
+
+
+       .FUNCT  WHEEL-F
+       EQUAL?  PRSA,V?SET-DIR,V?SET \FALSE
+       FSET?   DRAWBRIDGE,OPENBIT \?CCL6
+       FCLEAR  DRAWBRIDGE,OPENBIT
+       JUMP    ?CND4
+?CCL6: FSET    DRAWBRIDGE,OPENBIT
+?CND4: FSET    BARBICAN,REDESCBIT
+       PRINTI  "You hear a clattering clanking noise from below."
+       CRLF    
+       ICALL   ROB,DRAWBRIDGE,BARBICAN
+       RTRUE   
+
+
+       .FUNCT  DRAWBRIDGE-F,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "You are standing on a sturdy wooden drawbridge across a moat. "
+       ZERO?   TIME-STOPPED \?CND4
+       PRINTI  "The surface of the moat roils from the thrashing of countless ravenous beasts. "
+?CND4: PRINTI  "The drawbridge runs from a tall barbican at the southeast to a wide meadow at the northwest."
+       RTRUE   
+?CCL3: ZERO?   RARG \FALSE
+       EQUAL?  PRSA,V?EXAMINE \?CCL9
+       PRINTI  "The drawbridge is "
+       ICALL2  OPEN-CLOSED,DRAWBRIDGE
+       PRINT   PERIOD-CR
+       RTRUE   
+?CCL9: EQUAL?  PRSA,V?LOWER,V?OPEN \?PRD13
+       FSET?   DRAWBRIDGE,OPENBIT \?CCL11
+?PRD13:        EQUAL?  PRSA,V?RAISE,V?CLOSE \FALSE
+       FSET?   DRAWBRIDGE,OPENBIT \FALSE
+?CCL11:        PRINTR  "There's no apparent way to do that."
+
+       .ENDSEG
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  PARLOR-F,RARG
+       EQUAL?  RARG,M-ENTER \FALSE
+       MOVE    SPENSEWEED,FISH-TANK
+       FCLEAR  SPENSEWEED,NDESCBIT
+       RTRUE   
+
+
+       .FUNCT  FISH-TANK-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       EQUAL?  PRSO,FISH-TANK \?CCL3
+       ZERO?   DESCRIBED-TANK-AS-SMALL /?CCL8
+       PRINTR  "The fish tank is much too large to carry! [Okay, I was exaggerating when I called the tank ""itsy-bitsy.""]"
+?CCL8: SET     'DESCRIBED-TANK-AS-LARGE,TRUE-VALUE
+       PRINTR  "This tank is bigger than a lot of swimming pools!"
+?CCL3: EQUAL?  PRSO,FLAMINGO,ROOSTER,FOX \FALSE
+       FSET?   PRSO,ANIMATEDBIT \FALSE
+       PRINTI  "The "
+       ICALL2  DPRINT,PRSO
+       PRINTR  " raises such a fuss that it becomes impossible."
+
+
+       .FUNCT  SPENSEWEED-F,ARG
+       EQUAL?  ARG,M-WINNER \?CCL3
+       CALL1   PLANT-STUNNED
+       RSTACK  
+?CCL3: IN?     PROTAGONIST,DB \?CCL5
+       CALL2   TOUCHING?,SPENSEWEED
+       ZERO?   STACK /?CCL5
+       CALL2   CANT-REACH,SPENSEWEED
+       RSTACK  
+?CCL5: EQUAL?  PRSA,V?DIG,V?TAKE \?CCL9
+       EQUAL?  PRSO,SPENSEWEED \?CCL9
+       PRINT   DEEPLY-ROOTED
+       RTRUE   
+?CCL9: EQUAL?  PRSA,V?LISTEN \FALSE
+       ZERO?   PLANT-TALKER /FALSE
+       PRINTR  "It's difficult to interpret the gurgly voice of the spenseweed, but it seems to be fretting about the possibility of plant-eating fish being introduced into the aquarium."
+
+       .SEGMENT "0"
+
+
+       .FUNCT  LOBSTER-F
+       EQUAL?  PRSA,V?RESEARCH \?CCL3
+       CALL    NOUN-USED?,LOBSTER,W?LOBSTER
+       ZERO?   STACK /?CCL3
+       PRINT   STR?304
+       CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?TAKE \?CCL7
+       FSET?   LOBSTER,ANIMATEDBIT \?CCL7
+       ZERO?   TIME-STOPPED /?CCL12
+       ICALL   QUEUE,I-LOBSTER-PINCH,-1
+       RFALSE  
+?CCL12:        FSET?   GLOVE,WORNBIT \?CCL14
+       ICALL   QUEUE,I-LOBSTER-PINCH,2
+       MOVE    LOBSTER,PROTAGONIST
+       PRINTR  "Your gloved hand moves with blazing speed, lifting the lobster and avoiding its snapping pincers."
+?CCL14:        PRINTR  "The lobster snaps its pincers at you. You snatch your hand away just in time."
+?CCL7: EQUAL?  PRSA,V?MUNG,V?KILL \?CCL16
+       EQUAL?  PRSI,HAMMER,CANNONBALL \?CCL16
+       PRINTR  "You pulverize the lobster into invisible jelly. Heartless; but then again, I understand there are a large group of people who release boiling these creatures alive."
+?CCL16:        EQUAL?  PRSA,V?EAT \FALSE
+       FSET?   LOBSTER,ANIMATEDBIT \FALSE
+       PRINTR  "1) It's not cooked. 2) It would probably bite your nose off if you tried. 3) You don't have any tableware. 4) You don't have any melted butter. 5) It isn't kosher."
+
+
+       .FUNCT  I-W-LOBSTER
+       ZERO?   TIME-STOPPED /?CND1
+       ICALL   QUEUE,I-W-LOBSTER,3
+       RFALSE  
+?CND1: FSET    LOBSTER,ANIMATEDBIT
+       IN?     LOBSTER,LAKE-BOTTOM \?CCL5
+       REMOVE  LOBSTER
+       RTRUE   
+?CCL5: IN?     LOBSTER,PROTAGONIST \?CCL7
+       IN?     LOBSTER,WALDO /?CCL7
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "   Youch! The nutcracker just pinched you! As you drop it, you realize that it has turned back into a lobster."
+       EQUAL?  HERE,HANGING-FROM-ROOTS,UNDER-THE-WORLD \?CCL12
+       REMOVE  LOBSTER
+       PRINTR  " The poor creature plunges into the void."
+?CCL12:        MOVE    LOBSTER,HERE
+       CRLF    
+       RTRUE   
+?CCL7: CALL2   VISIBLE?,LOBSTER
+       ZERO?   STACK /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTR  "   You notice the nutcracker waving its pincers. It seems that the nutcracker is once again a lobster."
+
+
+       .FUNCT  I-LOBSTER-PINCH
+       ZERO?   TIME-STOPPED \FALSE
+       FSET?   LOBSTER,ANIMATEDBIT \FALSE
+       ICALL2  DEQUEUE,I-LOBSTER-PINCH
+       CALL2   ULTIMATELY-IN?,LOBSTER
+       ZERO?   STACK /FALSE
+       IN?     LOBSTER,WALDO /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "   Youch! The lobster gives you a painful nip, and you drop it like a hot potato."
+       EQUAL?  HERE,HANGING-FROM-ROOTS,UNDER-THE-WORLD \?CCL12
+       REMOVE  LOBSTER
+       PRINTR  " The poor creature plunges into the void."
+?CCL12:        MOVE    LOBSTER,HERE
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  STARFISH-F
+       EQUAL?  PRSA,V?RESEARCH \FALSE
+       CALL    NOUN-USED?,STARFISH,W?STARFISH
+       ZERO?   STACK /FALSE
+       PRINT   STR?304
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  I-W-STARFISH
+       ZERO?   TIME-STOPPED /?CND1
+       ICALL   QUEUE,I-W-STARFISH,3
+       RFALSE  
+?CND1: FSET    STARFISH,ANIMATEDBIT
+       IN?     STARFISH,LAKE-BOTTOM \?CCL5
+       REMOVE  STARFISH
+       RTRUE   
+?CCL5: CALL2   VISIBLE?,STARFISH
+       ZERO?   STACK /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTR  "   With the tiniest wiggle, the star gives evidence that it is once again a starfish."
+
+       .ENDSEG
+
+       .SEGMENT "0"
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  BICKERING-TORCH-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       ICALL   QUEUE,I-BICKERING-TORCH,-1
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?BURN,V?ON,V?EXAMINE \FALSE
+       CALL2   BURNED-OUT,BICKERING-TORCH
+       RSTACK  
+
+
+       .FUNCT  BURNED-OUT,OBJ
+       PRINTI  "The "
+       ICALL2  DPRINT,OBJ
+       PRINTR  " has burned out and cannot be rekindled."
+
+
+       .FUNCT  I-BICKERING-TORCH
+       ZERO?   TIME-STOPPED \FALSE
+       CALL2   ULTIMATELY-IN?,BICKERING-TORCH
+       ZERO?   STACK \?CCL5
+       ICALL2  DEQUEUE,I-BICKERING-TORCH
+       RFALSE  
+?CCL5: RANDOM  100
+       LESS?   30,STACK /FALSE
+       EQUAL?  CURRENT-SPLIT,MAP-TOP-LEFT-LOC /FALSE
+       PRINTI  "   The bickering torch says, """
+       CALL2   PICK-ONE,BITCHES
+       PRINT   STACK
+       PRINTR  """"
+
+
+       .FUNCT  FLICKERING-TORCH-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       FSET?   FLICKERING-TORCH,ONBIT \?CCL3
+       ZERO?   FLICKERING-TORCH-COUNT \?CCL3
+       RANDOM  3
+       ADD     STACK,9 >FLICKERING-TORCH-COUNT
+       ICALL   QUEUE,I-FLICKERING-TORCH,-1
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?OFF \?CCL8
+       FSET?   FLICKERING-TORCH,ONBIT \?CCL8
+       FCLEAR  FLICKERING-TORCH,ONBIT
+       FCLEAR  FLICKERING-TORCH,FLAMEBIT
+       ICALL2  DEQUEUE,I-FLICKERING-TORCH
+       PRINTI  """Pffft."""
+       CRLF    
+       CALL1   NOW-DARK?
+       RSTACK  
+?CCL8: EQUAL?  PRSA,V?OFF,V?ON,V?EXAMINE /?PRD14
+       EQUAL?  PRSA,V?BURN \FALSE
+?PRD14:        FSET?   FLICKERING-TORCH,ONBIT /FALSE
+       CALL2   BURNED-OUT,FLICKERING-TORCH
+       RSTACK  
+
+
+       .FUNCT  I-FLICKERING-TORCH
+       DEC     'FLICKERING-TORCH-COUNT
+       FSET?   FLICKERING-TORCH,ONBIT /?CCL3
+       PUTP    FLICKERING-TORCH,P?SDESC,STR?316
+       ICALL2  DEQUEUE,I-FLICKERING-TORCH
+       RFALSE  
+?CCL3: ZERO?   FLICKERING-TORCH-COUNT \?CND1
+       PUTP    FLICKERING-TORCH,P?SDESC,STR?316
+       FCLEAR  FLICKERING-TORCH,ONBIT
+       FCLEAR  FLICKERING-TORCH,FLAMEBIT
+       ICALL2  DEQUEUE,I-FLICKERING-TORCH
+?CND1: CALL2   VISIBLE?,FLICKERING-TORCH
+       ZERO?   STACK /FALSE
+       FSET?   FLICKERING-TORCH,ONBIT /?CCL9
+       ICALL1  RETURN-FROM-MAP
+       CALL2   IN-THE-SKY,STR?317
+       RSTACK  
+?CCL9: RANDOM  100
+       LESS?   40,STACK /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTR  "   The flame of the flickering torch dances wildly on the brink of extinction."
+
+
+       .FUNCT  IN-THE-SKY,STRING
+       PRINTI  "   The "
+       PRINT   STRING
+       PRINTI  "ering torch gives its last "
+       PRINT   STRING
+       PRINTI  "er before going to that great Torch Room in the sky."
+       CRLF    
+       CALL1   NOW-DARK?
+       RSTACK  
+
+
+       .FUNCT  MUTTERING-TORCH-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       ICALL   QUEUE,I-MUTTERING-TORCH,-1
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?BURN,V?ON,V?EXAMINE \FALSE
+       CALL2   BURNED-OUT,MUTTERING-TORCH
+       RSTACK  
+
+
+       .FUNCT  I-MUTTERING-TORCH
+       ZERO?   TIME-STOPPED \FALSE
+       CALL2   ULTIMATELY-IN?,MUTTERING-TORCH
+       ZERO?   STACK \?CCL5
+       ICALL2  DEQUEUE,I-MUTTERING-TORCH
+       RFALSE  
+?CCL5: RANDOM  100
+       LESS?   30,STACK /FALSE
+       EQUAL?  CURRENT-SPLIT,MAP-TOP-LEFT-LOC /FALSE
+       PRINTI  "   The muttering torch mutters something about "
+       CALL2   PICK-ONE,MUTTERS
+       PRINT   STACK
+       PRINT   PERIOD-CR
+       RTRUE   
+
+
+       .FUNCT  GUTTERING-TORCH-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       FSET?   GUTTERING-TORCH,ONBIT \?CCL3
+       ZERO?   GUTTERING-TORCH-COUNT \?CCL3
+       RANDOM  3
+       ADD     STACK,9 >GUTTERING-TORCH-COUNT
+       ICALL   QUEUE,I-GUTTERING-TORCH,-1
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?OFF \?CCL8
+       FSET?   GUTTERING-TORCH,ONBIT \?CCL8
+       FCLEAR  GUTTERING-TORCH,ONBIT
+       FCLEAR  GUTTERING-TORCH,FLAMEBIT
+       ICALL2  DEQUEUE,I-GUTTERING-TORCH
+       PRINTI  """Pffft."""
+       CRLF    
+       CALL1   NOW-DARK?
+       RSTACK  
+?CCL8: EQUAL?  PRSA,V?OFF,V?ON,V?EXAMINE /?PRD14
+       EQUAL?  PRSA,V?BURN \FALSE
+?PRD14:        FSET?   GUTTERING-TORCH,ONBIT /FALSE
+       CALL2   BURNED-OUT,GUTTERING-TORCH
+       RSTACK  
+
+
+       .FUNCT  I-GUTTERING-TORCH
+       DEC     'GUTTERING-TORCH-COUNT
+       FSET?   GUTTERING-TORCH,ONBIT /?CCL3
+       PUTP    GUTTERING-TORCH,P?SDESC,STR?324
+       ICALL2  DEQUEUE,I-GUTTERING-TORCH
+       RFALSE  
+?CCL3: ZERO?   GUTTERING-TORCH-COUNT \?CND1
+       PUTP    GUTTERING-TORCH,P?SDESC,STR?324
+       FCLEAR  GUTTERING-TORCH,ONBIT
+       FCLEAR  GUTTERING-TORCH,FLAMEBIT
+       ICALL2  DEQUEUE,I-GUTTERING-TORCH
+?CND1: CALL2   VISIBLE?,GUTTERING-TORCH
+       ZERO?   STACK /FALSE
+       FSET?   GUTTERING-TORCH,ONBIT /?CCL9
+       ICALL1  RETURN-FROM-MAP
+       CALL2   IN-THE-SKY,STR?325
+       RSTACK  
+?CCL9: RANDOM  100
+       LESS?   40,STACK /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTR  "   The guttering torch sputters on the verge of burning out, but then decides to keep burning for at least another minute."
+
+       .ENDSEG
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  GARDEN-FLOWER-PS
+       EQUAL?  PRSA,V?PICK \?CCL3
+       PRINTR  "Ouch! Thorns!"
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL5
+       PRINTR  "Breathtakingly beautiful."
+?CCL5: EQUAL?  PRSA,V?LISTEN \FALSE
+       ZERO?   PLANT-TALKER /FALSE
+       CALL2   PERFORM-PRSA,FLORA
+       RSTACK  
+
+
+       .FUNCT  FLORA-F,ARG
+       EQUAL?  ARG,M-WINNER \?CCL3
+       CALL1   PLANT-STUNNED
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL5
+       PRINTR  "Breathtakingly beautiful."
+?CCL5: EQUAL?  PRSA,V?LISTEN \FALSE
+       ZERO?   PLANT-TALKER /FALSE
+       PRINTR  "The many shrub and trees and flowers create a cacophony of plant-talk that makes it impossible to understand any of it!"
+
+       .SEGMENT "0"
+
+
+       .FUNCT  FLAMINGO-F,ARG
+       FSET?   FLAMINGO,ANIMATEDBIT \FALSE
+       EQUAL?  PRSA,V?RESEARCH \?CCL5
+       CALL    NOUN-USED?,FLAMINGO,W?FLAMINGO
+       ZERO?   STACK /?CCL5
+       PRINTR  """A common garden animal."""
+?CCL5: EQUAL?  PRSA,V?FEED \?CCL9
+       CALL2   ULTIMATELY-IN?,BAR-OF-FOOD
+       ZERO?   STACK /?CCL9
+       ICALL   PERFORM,V?GIVE,BAR-OF-FOOD,FLAMINGO
+       RTRUE   
+?CCL9: EQUAL?  PRSA,V?SHOW \?CCL13
+       EQUAL?  PRSO,BAR-OF-FOOD \?CCL13
+       PRINTR  "The flamingo feigns disinterest, but vast volumes of drool betray its true feelings."
+?CCL13:        EQUAL?  PRSA,V?GIVE \?CCL17
+       EQUAL?  PRSO,BAR-OF-FOOD \?CCL17
+       REMOVE  BAR-OF-FOOD
+       PRINTI  "The flamingo greedily snatches"
+       ICALL2  TPRINT,BAR-OF-FOOD
+       PRINTR  " in its beak and gulps it down."
+?CCL17:        ZERO?   TIME-STOPPED \FALSE
+       EQUAL?  PRSA,V?CATCH,V?TAKE \?CCL23
+       PRINTR  "The flamingo prances away, leaving you clutching at air."
+?CCL23:        EQUAL?  PRSA,V?TOUCH \FALSE
+       PRINTR  "The bird nearly nips off a finger."
+
+
+       .FUNCT  I-W-FLAMINGO,L
+       LOC     FLAMINGO >L
+       ZERO?   TIME-STOPPED /?CND1
+       ICALL   QUEUE,I-W-FLAMINGO,3
+       RFALSE  
+?CND1: FSET    FLAMINGO,ANIMATEDBIT
+       IN?     FLAMINGO,LAKE-BOTTOM \?CCL5
+       REMOVE  FLAMINGO
+       RTRUE   
+?CCL5: CALL2   META-LOC,FLAMINGO
+       EQUAL?  STACK,HERE \?CCL7
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "   Based on its angry squawks, the lawn ornament has returned to its former state"
+       IN?     FLAMINGO,FISH-TANK \?CCL10
+       PRINTI  ". The flamingo sprays you with water as it leaps out of the fish tank"
+       JUMP    ?CND8
+?CCL10:        EQUAL?  L,PROTAGONIST,HERE /?CCL12
+       FSET?   L,DROPBIT /?CCL12
+       MOVE    FLAMINGO,HERE
+       FSET    L,OPENBIT
+       PRINTI  " and popped out of"
+       ICALL2  TPRINT,L
+       JUMP    ?CND8
+?CCL12:        CALL2   ULTIMATELY-IN?,FLAMINGO
+       ZERO?   STACK /?CND8
+       IN?     FLAMINGO,WALDO /?CND8
+       PRINTI  ". The flamingo gives you a vicious peck and hops to the ground"
+?CND8: CALL2   ULTIMATELY-IN?,FLAMINGO
+       ZERO?   STACK /?CCL20
+       LOC     PROTAGONIST
+       FSET?   STACK,DROPBIT \?CCL20
+       LOC     PROTAGONIST
+       MOVE    FLAMINGO,STACK
+       JUMP    ?CND18
+?CCL20:        LOC     FLAMINGO
+       FSET?   STACK,DROPBIT /?CND18
+       MOVE    FLAMINGO,HERE
+?CND18:        PRINT   PERIOD-CR
+       RTRUE   
+?CCL7: CALL2   ULTIMATELY-IN?,FLAMINGO
+       ZERO?   STACK /?CCL26
+       LOC     PROTAGONIST
+       FSET?   STACK,DROPBIT \?CCL26
+       LOC     PROTAGONIST
+       MOVE    FLAMINGO,STACK
+       RFALSE  
+?CCL26:        LOC     FLAMINGO
+       FSET?   STACK,DROPBIT /FALSE
+       CALL2   META-LOC,FLAMINGO
+       MOVE    FLAMINGO,STACK
+       RFALSE  
+
+       .ENDSEG
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  COURTYARD-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This open area is paved with marble and surrounded by imposing stone walls. "
+       CALL2   RUNNING?,I-PROLOGUE
+       ZERO?   STACK /?CCL6
+       PRINTI  "Servants are cleaning up after a tremendous carnival"
+       JUMP    ?CND4
+?CCL6: PRINTI  "Dimwit would occasionally order carnivals to be set up in this court, on totally cloudless days"
+?CND4: PRINTI  ". At the distant edges of the courtyard, you can see exits to the north, west, and southeast."
+       RTRUE   
+
+
+       .FUNCT  BANNER-F
+       EQUAL?  PRSA,V?EXAMINE,V?READ \?CCL3
+       PRINTR  "These colorful banners display various royal crests and insignias."
+?CCL3: EQUAL?  PRSA,V?CLIMB-DOWN \FALSE
+       PRINTI  "Okay, but for future reference, the stairs are easier"
+       PRINT   ELLIPSIS
+       CALL2   GOTO,GREAT-HALL
+       RSTACK  
+
+
+       .FUNCT  REBUS-F,OARG,CNT
+       CALL2   CCOUNT,REBUS >CNT
+       ZERO?   OARG /?CCL3
+       EQUAL?  OARG,M-OBJDESC? /TRUE
+       PRINTI  "   A large framed rebus occupies a central position at the far end of the gallery. It appears to have been recently hung."
+       GRTR?   CNT,0 \TRUE
+       PRINTI  " The rebus is "
+       GRTR?   CNT,3 \?CCL10
+       PRINTI  "mostly"
+       JUMP    ?CND8
+?CCL10:        PRINTI  "partially"
+?CND8: PRINTI  " obscured by a"
+       EQUAL?  CNT,1 \?CCL13
+       PRINTI  "n animal -- or a representation of an animal"
+       JUMP    ?CND11
+?CCL13:        PRINTI  " number of animals -- or representations of animals"
+?CND11:        PRINTI  " -- which appear"
+       EQUAL?  CNT,1 \?CND14
+       PRINTC  115
+?CND14:        PRINTI  " to be magically layered onto its surface:"
+       FCLEAR  REBUS-CAMEL,NDESCBIT
+       FCLEAR  REBUS-MOUSE,NDESCBIT
+       FCLEAR  REBUS-GOOSE,NDESCBIT
+       FCLEAR  REBUS-SNAKE,NDESCBIT
+       FCLEAR  REBUS-FISH,NDESCBIT
+       FCLEAR  REBUS-SLIME-MONSTER,NDESCBIT
+       ICALL   D-CONTENTS,REBUS,2
+       FSET    REBUS-CAMEL,NDESCBIT
+       FSET    REBUS-MOUSE,NDESCBIT
+       FSET    REBUS-GOOSE,NDESCBIT
+       FSET    REBUS-SNAKE,NDESCBIT
+       FSET    REBUS-FISH,NDESCBIT
+       FSET    REBUS-SLIME-MONSTER,NDESCBIT
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL17
+       PRINT   HUH
+       RTRUE   
+?CCL17:        EQUAL?  PRSA,V?PUT-ON,V?PUT \?CCL19
+       EQUAL?  PRSI,REBUS \?CCL19
+       PRINT   HUH
+       RTRUE   
+?CCL19:        EQUAL?  PRSA,V?EXAMINE,V?READ \FALSE
+       CLEAR   -1
+       SCREEN  S-FULL
+       IN?     REBUS-MOUSE,REBUS \?CCL26
+       PUSH    REBUS-6
+       JUMP    ?CND24
+?CCL26:        IN?     REBUS-GOOSE,REBUS \?CCL28
+       PUSH    REBUS-5
+       JUMP    ?CND24
+?CCL28:        IN?     REBUS-SLIME-MONSTER,REBUS \?CCL30
+       PUSH    REBUS-4
+       JUMP    ?CND24
+?CCL30:        IN?     REBUS-CAMEL,REBUS \?CCL32
+       PUSH    REBUS-3
+       JUMP    ?CND24
+?CCL32:        IN?     REBUS-SNAKE,REBUS \?CCL34
+       PUSH    REBUS-2
+       JUMP    ?CND24
+?CCL34:        IN?     REBUS-FISH,REBUS \?CCL36
+       PUSH    REBUS-1
+       JUMP    ?CND24
+?CCL36:        PUSH    REBUS-0
+?CND24:        DISPLAY STACK,1,1
+       ZERO?   DEMO-VERSION? /?CCL39
+       ICALL2  INPUT-DEMO,1
+       JUMP    ?CND37
+?CCL39:        INPUT   1
+?CND37:        ICALL1  MOUSE-INPUT?
+       ICALL1  V-$REFRESH
+       RTRUE   
+
+
+       .FUNCT  REBUS-ANIMAL-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTR  " seems to be magically flattened upon the rebus surface."
+?CCL3: EQUAL?  PRSA,V?MOVE,V?TAKE \?CCL5
+       PRINT   WONT-BUDGE
+       RTRUE   
+?CCL5: EQUAL?  PRSA,V?TOUCH \FALSE
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTR  " feels cold to the touch."
+
+
+       .FUNCT  PAINTINGS-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTR  "These are Leonardo Flathead's famous portraits of the Twelve Flatheads, including his own self-portrait, which been have reproduced in many places [such as the ""Lives of the Twelve Flatheads Calendar"" which you'll find in your Zork Zero package]."
+?CCL3: EQUAL?  PRSA,V?MOVE,V?TAKE \?CCL5
+       PRINTR  "The portraits are all securely fastened to the wall."
+?CCL5: EQUAL?  PRSA,V?COUNT \FALSE
+       PRINTR  "12."
+
+
+       .FUNCT  PAINTING-F
+       EQUAL?  PRSA,V?MOVE,V?TAKE,V?EXAMINE \?CCL3
+       CALL2   PERFORM-PRSA,PAINTINGS
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?RESEARCH \FALSE
+       PRINTR  """One of the Twelve Flatheads. For more information, we recommend Boswell Barwell's 'The Lives of the Twelve Flatheads.'"" [Excerpts of which can be found in the calendar from your Zork Zero package.]"
+
+       .SEGMENT "VILLAGE"
+
+       .SEGMENT "LAKE"
+
+       .SEGMENT "ORACLE"
+
+
+       .FUNCT  REBUS-BUTTON-F
+       EQUAL?  PRSA,V?PUSH \FALSE
+       FSET?   PRSO,TOUCHBIT /?CTR5
+       ZERO?   TIME-STOPPED /?CCL6
+?CTR5: PRINT   NOTHING-HAPPENS
+       RTRUE   
+?CCL6: FSET    PRSO,TOUCHBIT
+       PUTP    PRSO,P?SDESC,STR?270
+       PRINTI  "The button produces a "
+       IN?     REBUS-MOUSE,REBUS \?CCL11
+       REMOVE  REBUS-MOUSE
+       PRINTI  "squeak"
+       JUMP    ?CND9
+?CCL11:        IN?     REBUS-GOOSE,REBUS \?CCL13
+       REMOVE  REBUS-GOOSE
+       PRINTI  "honk"
+       JUMP    ?CND9
+?CCL13:        IN?     REBUS-SLIME-MONSTER,REBUS \?CCL15
+       REMOVE  REBUS-SLIME-MONSTER
+       PRINTI  "squish"
+       JUMP    ?CND9
+?CCL15:        IN?     REBUS-CAMEL,REBUS \?CCL17
+       REMOVE  REBUS-CAMEL
+       PRINTI  "bray"
+       JUMP    ?CND9
+?CCL17:        IN?     REBUS-SNAKE,REBUS \?CCL19
+       REMOVE  REBUS-SNAKE
+       PRINTI  "hiss"
+       JUMP    ?CND9
+?CCL19:        REMOVE  REBUS-FISH
+       PRINTI  "splash"
+?CND9: PRINTR  "ing noise and stops blinking."
+
+       .ENDSEG
+
+       .SEGMENT "0"
+
+
+       .FUNCT  BAG-F
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTI  "There's writing on the outside of the bag. "
+       RFALSE  
+
+
+       .FUNCT  BAR-OF-FOOD-F
+       EQUAL?  PRSA,V?EAT \FALSE
+       EQUAL?  TURNED-INTO,FLAMINGO \?CCL6
+       CALL2   GOOD-MEAL,BAR-OF-FOOD
+       RSTACK  
+?CCL6: CALL2   JIGS-UP,STR?339
+       RSTACK  
+
+       .ENDSEG
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  TOWER-PS
+       CALL2   TOUCHING?,PSEUDO-OBJECT
+       ZERO?   STACK /FALSE
+       CALL2   CANT-REACH,PSEUDO-OBJECT
+       RSTACK  
+
+
+       .FUNCT  THRONE-ROOM-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This is a smaller version of the room to the north, meaning that a person can walk all the way across it without stopping to rest. The throne, though smaller and more comfortable looking, is just as gaudy. It is in this chamber that Dimwit would meet with his ""advisors,"" raising taxes and plotting grandiose schemes. A doorway leads north"
+       ZERO?   SECRET-PASSAGE-OPEN /?CND4
+       PRINTI  ", and a secret passage is open to the south"
+?CND4: PRINTC  46
+       RTRUE   
+
+
+       .FUNCT  THRONE-F,VARG
+       ZERO?   DEMO-VERSION? /?CCL3
+       EQUAL?  VARG,M-ENTER \?CCL3
+       EQUAL?  PRSO,SMALL-THRONE \?CCL3
+       PRINTC  32
+       ICALL1  OPEN-SECRET-PASSAGE?
+       RETURN  2
+?CCL3: ZERO?   VARG \FALSE
+       EQUAL?  PRSA,V?CLIMB-UP \?CCL12
+       ICALL   PERFORM,V?ENTER,PRSO
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?LOOK-BEHIND \FALSE
+       PRINTI  "Behind the throne"
+       EQUAL?  HERE,AUDIENCE-CHAMBER \?CCL17
+       PRINTR  ", a doorway leads south."
+?CCL17:        ZERO?   SECRET-PASSAGE-OPEN /?CCL19
+       PRINTR  ", a secret passage beckons to the south!"
+?CCL19:        PRINTR  " is nothing but a blank wall."
+
+       .ENDSEG
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  SECRET-PASSAGE-F,RARG
+       ZERO?   DEMO-VERSION? /FALSE
+       EQUAL?  RARG,M-END \FALSE
+       CALL1   END-DEMO
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  CANDLE-F,FLAME
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       FSET?   CANDLE,ONBIT \?CCL6
+       PRINTR  "The flame burns tall and bright."
+?CCL6: PRINTR  "The candle has been snuffed."
+?CCL3: EQUAL?  PRSA,V?ON \FALSE
+       FSET?   CANDLE,FLAMEBIT /FALSE
+       CALL    FIND-IN,HERE,FLAMEBIT,STR?202 >FLAME
+       ZERO?   FLAME /?CCL13
+       FSET    CANDLE,FLAMEBIT
+       FSET    CANDLE,ONBIT
+       PRINTR  "You re-light the candle."
+?CCL13:        PRINTR  "You have no flame to light the candle."
+
+       .ENDSEG
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  SOLAR-F,RARG
+       EQUAL?  RARG,M-END \FALSE
+       IN?     EAST-KEY,JESTER \FALSE
+       IN?     JESTER,HERE \FALSE
+       CALL2   SETUP-ORPHAN,STR?44
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  EAST-KEY-F
+       EQUAL?  PRSA,V?TAKE \FALSE
+       FSET?   EAST-KEY,TRYTAKEBIT \FALSE
+       IN?     EAST-KEY,JESTER \?CCL8
+       PRINT   ANSWER-MY-RIDDLE
+       RTRUE   
+?CCL8: PRINTI  "You begin reaching for the key..."
+       CRLF    
+       SET     'DO-J,TRUE-VALUE
+       CALL1   I-JESTER
+       RSTACK  
+
+       .ENDSEG
+
+       .SEGMENT "0"
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  CLOAK-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       CALL    NOUN-USED?,CLOAK,W?CLOAK
+       ZERO?   STACK /?CCL6
+       PRINTR  "The colors of the cloak seem to shimmer like a Mithican chameleon. There's a small label with writing on it."
+?CCL6: ICALL   PERFORM,V?READ,CLOAK
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?READ \?CCL8
+       PRINTR  """Frobozz Magic Cloak Company."""
+?CCL8: EQUAL?  HERE,OUBLIETTE \?CCL10
+       EQUAL?  PRSA,V?TAKE-OFF,V?WEAR \?CCL10
+       PRINTR  "There's not enough elbow room here."
+?CCL10:        EQUAL?  PRSA,V?WEAR \?CCL14
+       EQUAL?  HERE,PLAIN /?CCL14
+       FSET?   CLOAK,WORNBIT /?CCL14
+       FSET?   OUTER-GATE,OPENBIT /?CCL14
+       IN?     CLOAK,WALDO /?CCL14
+       ZERO?   TIME-STOPPED \?CCL14
+       EQUAL?  HERE,CONSTRUCTION \?CCL23
+       ICALL   STORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC,CONSTRUCTION
+       JUMP    ?CND21
+?CCL23:        EQUAL?  HERE,FR-OFFICES \?CCL25
+       ICALL   STORE,OFFICES-OFFSET,FLOOR-NUMBER,FR-OFFICES
+       JUMP    ?CND21
+?CCL25:        EQUAL?  HERE,OFFICES-NORTH \?CCL27
+       ICALL   STORE,OFFICES-N-OFFSET,FLOOR-NUMBER,OFFICES-NORTH
+       JUMP    ?CND21
+?CCL27:        EQUAL?  HERE,OFFICES-SOUTH \?CCL29
+       ICALL   STORE,OFFICES-S-OFFSET,FLOOR-NUMBER,OFFICES-SOUTH
+       JUMP    ?CND21
+?CCL29:        EQUAL?  HERE,OFFICES-EAST \?CCL31
+       ICALL   STORE,OFFICES-E-OFFSET,FLOOR-NUMBER,OFFICES-EAST
+       JUMP    ?CND21
+?CCL31:        EQUAL?  HERE,OFFICES-WEST \?CND21
+       ICALL   STORE,OFFICES-W-OFFSET,FLOOR-NUMBER,OFFICES-WEST
+?CND21:        FSET    CLOAK,WORNBIT
+       LOC     PROTAGONIST
+       FSET?   STACK,TAKEBIT \?CCL35
+       SET     'CLOAK-LOC,HERE
+       JUMP    ?CND33
+?CCL35:        LOC     PROTAGONIST >CLOAK-LOC
+?CND33:        MOVE    PROTAGONIST,HERE
+       DIV     PLAIN-LOC,8
+       ADD     STACK,1 >RANK
+       MOD     PLAIN-LOC,8
+       ADD     STACK,1 >FILE
+       ICALL1  CAST-HUNGER-SPELL
+       PRINTI  "As you wrap the cloak around you, the world changes"
+       PRINT   ELLIPSIS
+       ICALL   UNSTORE,PLAIN-OFFSET,PLAIN-LOC,PLAIN
+       CALL2   GOTO,PLAIN
+       RSTACK  
+?CCL14:        EQUAL?  PRSA,V?TAKE-OFF \FALSE
+       FSET?   CLOAK,WORNBIT \FALSE
+       EQUAL?  HERE,PLAIN \FALSE
+       FCLEAR  CLOAK,WORNBIT
+       ICALL   STORE,PLAIN-OFFSET,PLAIN-LOC,PLAIN
+       PRINTI  "As the cloak is removed, the world changes again"
+       PRINT   ELLIPSIS
+       EQUAL?  CLOAK-LOC,CONSTRUCTION \?CCL43
+       DIV     CONSTRUCTION-LOC,8
+       ADD     STACK,1 >RANK
+       MOD     CONSTRUCTION-LOC,8
+       ADD     STACK,1 >FILE
+       ICALL   UNSTORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC,CLOAK-LOC
+       JUMP    ?CND41
+?CCL43:        EQUAL?  CLOAK-LOC,FR-OFFICES,OFFICES-NORTH,OFFICES-SOUTH /?CCL44
+       EQUAL?  CLOAK-LOC,OFFICES-EAST,OFFICES-WEST \?CND41
+?CCL44:        ICALL2  OFFICE-UNSTORE,FLOOR-NUMBER
+?CND41:        ICALL2  GOTO,CLOAK-LOC
+       EQUAL?  CLOAK-LOC,ORACLE-OBJECT \TRUE
+       IN?     RUBY,DEPRESSION \TRUE
+       PRINTI  "   You have only a moment to take in your surroundings. "
+       ICALL   PERFORM,V?ENTER,ORACLE-OBJECT
+       RTRUE   
+
+
+       .FUNCT  GLOVE-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       FSET?   GOGGLES,WORNBIT \?CCL6
+       FSET?   GLOVE,WORNBIT \?CCL6
+       ICALL1  DISCOVER-X-RAY
+       PRINTR  "You can see your hand within the glove."
+?CCL6: CALL    NOUN-USED?,GLOVE,W?GLOVE
+       ZERO?   STACK /?CCL10
+       PRINTR  "Tiny writing is embroidered at the edge of the glove."
+?CCL10:        ICALL   PERFORM,V?READ,GLOVE
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?READ \FALSE
+       PRINTR  """Frobozz Magic Glove Company."""
+
+       .ENDSEG
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  MACHICOLATION-F
+       EQUAL?  PRSA,V?PUT-THROUGH,V?PUT \?CCL3
+       EQUAL?  PRSI,MACHICOLATION \?CCL3
+       REMOVE  PRSO
+       EQUAL?  PRSO,PERCH /?CCL7
+       CALL    ULTIMATELY-IN?,PERCH,PRSO
+       ZERO?   STACK /?CND6
+?CCL7: SET     'REMOVED-PERCH-LOC,GROUND
+?CND6: PRINTI  "You hear a distant ""thunk,"" as"
+       ICALL1  TPRINT-PRSO
+       PRINTR  " imbeds itself into the ground. The lack of an accompanying distant ""ouch!"" would seem to indicate that there are no invaders below."
+?CCL3: EQUAL?  PRSA,V?LOOK-INSIDE \?CCL11
+       PRINT   YOU-SEE
+       PRINTR  " light at the bottom of the hole."
+?CCL11:        EQUAL?  PRSA,V?REACH-IN \FALSE
+       PRINT   NOTHING-IN-REACH
+       RTRUE   
+
+
+       .FUNCT  CRYPT-F,RARG
+       ZERO?   DEMO-VERSION? /?CCL3
+       EQUAL?  RARG,M-END \?CCL3
+       CALL1   END-DEMO
+       RSTACK  
+?CCL3: EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "The remains of generations of royalty lie arranged on slabs through this underground tomb. A passage leads off to the south. In the center of the low ceiling is a small trap door, which is "
+       ICALL2  OPEN-CLOSED,TRAP-DOOR
+       FSET?   HOLEY-SLAB,TOUCHBIT \?CND8
+       PRINTI  ". Barely visible beneath one of the slabs, a dark moist opening leads downward"
+?CND8: PRINTC  46
+       RTRUE   
+
+
+       .FUNCT  BODIES-F
+       CALL2   TOUCHING?,BODIES
+       ZERO?   STACK /FALSE
+       CALL2   PERFORM-PRSA,BONES
+       RSTACK  
+
+
+       .FUNCT  ORACLE-ENTER-F,RARG
+       FSET?   OUTER-GATE,OPENBIT /?CTR2
+       ZERO?   TIME-STOPPED /?CCL3
+?CTR2: ZERO?   RARG \FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "The hole under the slab has vanished!"
+       CRLF    
+       RFALSE  
+?CCL3: FSET?   HOLEY-SLAB,TOUCHBIT \?CCL9
+       RETURN  ORACLE
+?CCL9: ZERO?   RARG \FALSE
+       ICALL1  CANT-GO
+       RFALSE  
+
+
+       .FUNCT  SLAB-F
+       EQUAL?  PRSA,V?LOOK-UNDER \FALSE
+       EQUAL?  PRSO,HOLEY-SLAB \FALSE
+       FSET?   OUTER-GATE,OPENBIT /?CTR7
+       ZERO?   TIME-STOPPED /?CCL8
+?CTR7: CALL2   DO-WALK,P?DOWN
+       RSTACK  
+?CCL8: FSET    HOLEY-SLAB,TOUCHBIT
+       SET     'COMPASS-CHANGED,TRUE-VALUE
+       PRINTR  "Under the slab is a craggy hole, dripping with slime, leading downward. It looks just barely large enough to enter."
+
+
+       .FUNCT  TRAP-DOOR-F
+       EQUAL?  PRSA,V?OPEN \FALSE
+       FSET?   TRAP-DOOR,OPENBIT /FALSE
+       EQUAL?  HERE,CRYPT \FALSE
+       PRINTR  "The trap door can't be opened from this side."
+
+
+       .FUNCT  DUNGEON-HOLE-F
+       EQUAL?  PRSA,V?LOOK-INSIDE \?CCL3
+       CALL2   LIT?,OUBLIETTE
+       ZERO?   STACK /?CCL6
+       PRINT   SOME-LIGHT
+       RTRUE   
+?CCL6: PRINT   ONLY-BLACKNESS
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?PUT \?CCL8
+       GETP    PRSO,P?SIZE
+       GRTR?   STACK,4 \?CCL11
+       EQUAL?  PRSO,PERCH /?CCL13
+       CALL    ULTIMATELY-IN?,PERCH,PRSO
+       ZERO?   STACK /?CND12
+?CCL13:        SET     'REMOVED-PERCH-LOC,OUBLIETTE
+?CND12:        REMOVE  PRSO
+       JUMP    ?CND9
+?CCL11:        MOVE    PRSO,OUBLIETTE
+?CND9: PRINTR  "Done."
+?CCL8: EQUAL?  PRSA,V?EXAMINE \?CCL17
+       PRINTR  "It's big enough to drop through, but a return trip doesn't look at all assured."
+?CCL17:        EQUAL?  PRSA,V?REACH-IN \?CCL19
+       PRINT   NOTHING-IN-REACH
+       RTRUE   
+?CCL19:        EQUAL?  PRSA,V?ENTER \FALSE
+       CALL2   DO-WALK,P?DOWN
+       RSTACK  
+
+
+       .FUNCT  OUBLIETTE-F,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "You're trapped in a narrow prison cell accessible only from above. The upper portion of the cell is lost in gloom. The floor is muddy, and you sink almost to your "
+       ZERO?   ALLIGATOR /?CCL6
+       PRINTI  "alligatorish nostrils."
+       RTRUE   
+?CCL6: PRINTI  "knees."
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-ENTER \?CCL8
+       ZERO?   TIME-STOPPED \?CCL8
+       SET     'DO-J,TRUE-VALUE
+       CALL    QUEUE,I-JESTER,3
+       RSTACK  
+?CCL8: EQUAL?  RARG,M-END \FALSE
+       IN?     JESTER,HERE \FALSE
+       CALL2   SETUP-ORPHAN,STR?44
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  G-HAT-F,TBL,LEN,?TMP1
+       ADD     TBL,8 >?TMP1
+       GET     TBL,1
+       INTBL?  DOORBELL,?TMP1,STACK \?CCL3
+       RETURN  DOORBELL
+?CCL3: EQUAL?  PRSA,V?REMOVE,V?TAKE-OFF \?CCL5
+       FSET?   HARDHAT,WORNBIT \?CCL8
+       FSET?   SEAMANS-CAP,WORNBIT /FALSE
+?CCL8: FSET?   HARDHAT,WORNBIT \?CCL12
+       RETURN  HARDHAT
+?CCL12:        FSET?   SEAMANS-CAP,WORNBIT \FALSE
+       RETURN  SEAMANS-CAP
+?CCL5: ADD     TBL,8 >?TMP1
+       GET     TBL,1
+       INTBL?  J-HAT,?TMP1,STACK \FALSE
+       EQUAL?  HERE,GAMING-ROOM \FALSE
+       RETURN  J-HAT
+
+       .ENDSEG
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  CELL-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This cell is the height of luxury for this dungeon -- the floor isn't covered with spikes, and there are actually a few corners which aren't dominated by giant spiders."
+       IN?     COBWEBS,HERE \?CND4
+       PRINTC  32
+       PRINT   CELL-WALL-DESC
+?CND4: PRINTI  " The only exit is northwest."
+       RTRUE   
+
+
+       .FUNCT  GIANT-SPIDERS-F
+       CALL2   TOUCHING?,GIANT-SPIDERS
+       ZERO?   STACK /FALSE
+       PRINTR  "There's only one thing you need to remember in connection with giant spiders: You leave them alone, they'll leave you alone."
+
+
+       .FUNCT  COBWEBS-F
+       EQUAL?  PRSA,V?ENTER \?CCL3
+       PRINTR  "Walk face first into a thick wall of yukko cobwebs? Mucho disgusto! Maybe if you cleared them away, first..."
+?CCL3: EQUAL?  PRSA,V?CLEAN,V?TAKE-WITH,V?REMOVE /?CCL5
+       EQUAL?  PRSA,V?MOVE \FALSE
+?CCL5: ZERO?   PRSI \?CND8
+       CALL2   ULTIMATELY-IN?,BROOM
+       ZERO?   STACK /?CND8
+       SET     'PRSI,BROOM
+?CND8: ZERO?   PRSI \?CCL14
+       PRINTI  "Yuk! Bleh! Ukky-poo! T"
+       FSET?   GLOVE,WORNBIT /?CND15
+       PRINTI  "hese cobwebs are way too gross to touch with your bare hands. Furthermore, t"
+?CND15:        PRINTR  "here are way too many to clean away without some kind of cleaning accessory."
+?CCL14:        EQUAL?  PRSI,BROOM /?CCL18
+       PRINTR  "Don't bother to apply for any jobs as a maid."
+?CCL18:        REMOVE  COBWEBS
+       ICALL2  THIS-IS-IT,FLASK
+       MOVE    FLASK,HERE
+       PRINTI  "It's a dirty job, but someone's gotta do it. You clear away most of the cobwebs, revealing a blank wall. Sitting at the base of the wall is a "
+       PRINTD  FLASK
+       PRINTC  33
+       CRLF    
+       CALL2   INC-SCORE,12
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  FLASK-F
+       EQUAL?  PRSA,V?LOOK-INSIDE \?CCL3
+       PRINTR  "You notice that objects behind the flask appear to be magnified."
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL5
+       EQUAL?  PRSI,FLASK \?CCL5
+       PRINTI  "The flask distorts and magnifies the "
+       ICALL2  DPRINT,PRSO
+       PRINTI  ", showing details not noticed earlier."
+       CRLF    
+       PRINTI  "   "
+       RFALSE  
+?CCL5: EQUAL?  PRSA,V?DRINK-FROM \?CCL9
+       CALL    DO-FIRST,STR?140,FLASK
+       RSTACK  
+?CCL9: EQUAL?  PRSA,V?THROW,V?MUNG,V?OPEN \FALSE
+       EQUAL?  PRSA,V?OPEN /?CCL14
+       PRINTI  "The flask breaks into pieces. "
+       JUMP    ?CND12
+?CCL14:        PRINTI  "You remove the stopper. "
+?CND12:        PRINTI  "As you pass out, you realize that the vapors from the flask's contents are "
+       FSET?   CLOWN-NOSE,WORNBIT \?CND15
+       PRINTI  "potent enough to get past your clown nose, and are also quite "
+?CND15:        CALL2   JIGS-UP,STR?365
+       RSTACK  
+
+
+       .FUNCT  LIQUID-F
+       EQUAL?  PRSA,V?DRINK \FALSE
+       CALL    DO-FIRST,STR?140,FLASK
+       RSTACK  
+
+       .ENDSEG
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  TORTURE-CHAMBER-F,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       ZERO?   METRONOME-LOC \?CND4
+       RANDOM  100
+       LESS?   33,STACK /?CCL8
+       SET     'METRONOME-LOC,IRON-MAIDEN
+       JUMP    ?CND4
+?CCL8: RANDOM  100
+       LESS?   50,STACK /?CCL10
+       SET     'METRONOME-LOC,SNAKE-PIT
+       JUMP    ?CND4
+?CCL10:        SET     'METRONOME-LOC,WATER-CHAMBER
+?CND4: SET     'METRONOME-COUNTER,0
+       RETURN  METRONOME-COUNTER
+?CCL3: EQUAL?  RARG,M-END \FALSE
+       FSET?   METRONOME,TRYTAKEBIT \FALSE
+       CALL2   METRONOME-TORTURE,TRUE-VALUE
+       RSTACK  
+
+
+       .FUNCT  METRONOME-TORTURE,INDENT
+       INC     'METRONOME-COUNTER
+       EQUAL?  METRONOME-COUNTER,1 /FALSE
+       ICALL1  RETURN-FROM-MAP
+       ZERO?   INDENT /?CND3
+       PRINTI  "   "
+?CND3: EQUAL?  METRONOME-COUNTER,2 \?CCL7
+       PRINTR  "You hear a ticking sound."
+?CCL7: EQUAL?  METRONOME-COUNTER,3 \?CCL9
+       PRINTR  "The ticking grows louder."
+?CCL9: EQUAL?  METRONOME-COUNTER,4 \?CCL11
+       PRINTR  "The ticking is really getting to you. It seems to be controlling your heartbeat!"
+?CCL11:        PRINTI  "The ticking is unbearably deafening! You run screaming from the Torture Chamber!"
+       CRLF    
+       CRLF    
+       CALL2   GOTO,DUNGEON
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  METRONOME-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "The metronome is"
+       ZERO?   METRONOME-ON /?CCL6
+       PRINTR  " ticking insistently."
+?CCL6: PRINTR  "n't on."
+?CCL3: EQUAL?  PRSA,V?ON \?CCL8
+       ZERO?   METRONOME-ON /?CCL11
+       PRINTR  "It is!"
+?CCL11:        SET     'METRONOME-ON,TRUE-VALUE
+       ICALL   QUEUE,I-METRONOME,-1
+       PRINTR  "The metronome begins to tick."
+?CCL8: EQUAL?  PRSA,V?OFF \FALSE
+       ZERO?   METRONOME-ON /?CCL16
+       SET     'METRONOME-ON,FALSE-VALUE
+       ICALL2  DEQUEUE,I-METRONOME
+       PRINTR  "The metronome stops ticking."
+?CCL16:        PRINTR  "It is!"
+
+
+       .FUNCT  I-METRONOME,CALLED-BY-LISTEN,CNT
+       LOC     METRONOME
+       EQUAL?  STACK,FALSE-VALUE \?CND1
+       ICALL2  DEQUEUE,I-METRONOME
+?CND1: CALL2   VISIBLE?,METRONOME
+       ZERO?   STACK /FALSE
+       EQUAL?  CURRENT-SPLIT,MAP-TOP-LEFT-LOC /FALSE
+       RANDOM  30
+       ADD     3,STACK >CNT
+       ZERO?   CALLED-BY-LISTEN \?CND8
+       PRINTI  "   "
+?CND8: PRINTI  "The metronome insistently declares, ""Tick"
+?PRG10:        PRINTI  ", tick"
+       DEC     'CNT
+       ZERO?   CNT \?PRG10
+       PRINTR  "."""
+
+       .ENDSEG
+
+       .SEGMENT "SECRET"
+
+
+       .FUNCT  TORTURE-DEVICE-F
+       EQUAL?  PRSA,V?ENTER \?CCL3
+       EQUAL?  PRSO,COMFY-CHAIR /?CND4
+       FSET?   PRSO,OPENBIT /?CND4
+       ICALL   DO-FIRST,STR?140,PRSO
+       RTRUE   
+?CND4: PRINTI  "You climb into the "
+       PRINTD  PRSO
+       PRINTI  ". "
+       EQUAL?  PRSO,COMFY-CHAIR \?CCL10
+       CALL2   JIGS-UP,STR?367
+       RSTACK  
+?CCL10:        EQUAL?  PRSO,IRON-MAIDEN \?CCL12
+       CALL2   JIGS-UP,STR?368
+       RSTACK  
+?CCL12:        EQUAL?  PRSO,WATER-CHAMBER \?CCL14
+       CALL2   JIGS-UP,STR?369
+       RSTACK  
+?CCL14:        CALL2   JIGS-UP,STR?370
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL16
+       EQUAL?  PRSO,COMFY-CHAIR \?CCL19
+       PRINTR  "It sure looks comfortable!"
+?CCL19:        EQUAL?  PRSO,WATER-CHAMBER \?CCL21
+       PRINTI  "It's a small chamber where water is slowly dripped onto the victim's head until he or she goes mad."
+       JUMP    ?CND17
+?CCL21:        EQUAL?  PRSO,IRON-MAIDEN \?CCL23
+       PRINTI  "It's similar to a suit of armor, except that the inside is lined with sharp spikes."
+       JUMP    ?CND17
+?CCL23:        FSET?   SNAKE-PIT,OPENBIT /?CCL26
+       PRINTI  "Beneath the lid of the snake pit y"
+       JUMP    ?CND24
+?CCL26:        PRINTC  89
+?CND24:        PRINTI  "ou hear the hissing of a thousand hungry snakes."
+?CND17:        PRINTI  " The "
+       PRINTD  PRSO
+       PRINTI  " is "
+       ICALL2  OPEN-CLOSED,PRSO
+       PRINT   PERIOD-CR
+       RTRUE   
+?CCL16:        EQUAL?  PRSA,V?LOOK-INSIDE \?CCL28
+       FSET?   METRONOME,TRYTAKEBIT \?CCL28
+       EQUAL?  PRSO,METRONOME-LOC \?CCL33
+       ICALL   PERFORM,V?OPEN,PRSO
+       RTRUE   
+?CCL33:        EQUAL?  PRSO,COMFY-CHAIR \?CCL35
+       PRINTR  "There's no one in the chair."
+?CCL35:        FSET    PRSO,OPENBIT
+       PRINTI  "You open"
+       ICALL1  TPRINT-PRSO
+       PRINTR  ", and find no one within."
+?CCL28:        EQUAL?  PRSA,V?OPEN \?CCL37
+       EQUAL?  PRSO,METRONOME-LOC \?CCL37
+       FSET?   METRONOME,TRYTAKEBIT \?CCL37
+       FCLEAR  METRONOME,TRYTAKEBIT
+       MOVE    METRONOME,HERE
+       FSET    PRSO,OPENBIT
+       PRINTI  "As you open the "
+       PRINTD  PRSO
+       PRINTI  ", a metronome falls from the shadowy recesses of the ceiling and lands with a muffled thud in the center of the room."
+       GRTR?   METRONOME-COUNTER,1 \?CND41
+       PRINTI  " Thankfully, the fall seems to have shut it off."
+?CND41:        CRLF    
+       CALL2   INC-SCORE,12
+       RSTACK  
+?CCL37:        EQUAL?  PRSA,V?OPEN \FALSE
+       ZERO?   TIME-STOPPED /FALSE
+       PRINT   WONT-BUDGE
+       RTRUE   
+
+       .ENDSEG
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  WEST-HALL-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "The castle's newest wing can be found beyond the huge oak door which lies "
+       ICALL2  OPEN-CLOSED,WEST-DOOR
+       PRINTI  " to the west. The only other exit is northeast."
+       RTRUE   
+
+
+       .FUNCT  WEST-DOOR-F
+       EQUAL?  PRSA,V?UNLOCK \?CCL3
+       FSET?   WEST-DOOR,LOCKEDBIT \?CCL3
+       EQUAL?  PRSI,WEST-KEY \?CCL3
+       FCLEAR  WEST-DOOR,LOCKEDBIT
+       CALL    LOCKED-UNLOCKED,WEST-DOOR,TRUE-VALUE
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?LOCK \FALSE
+       FSET?   WEST-DOOR,LOCKEDBIT /FALSE
+       EQUAL?  PRSI,WEST-KEY \FALSE
+       FSET    WEST-DOOR,LOCKEDBIT
+       CALL2   LOCKED-UNLOCKED,WEST-DOOR
+       RSTACK  
+
+
+       .FUNCT  WEST-WING-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This wing exhibits more recent styling: smoothly dressed stone inlaid with marble patterns. Through the "
+       ICALL2  OPEN-CLOSED,WEST-DOOR
+       PRINTI  " oak door to the east lie the primary halls of the castle. Other exits lead north, west, and south. "
+       PRINT   FUDGE
+       RTRUE   
+
+
+       .FUNCT  DIRIGIBLE-HANGAR-ENTER-F,RARG
+       ZERO?   NUT-EATEN /?CCL3
+       RETURN  DIRIGIBLE-HANGAR
+?CCL3: ZERO?   RARG \FALSE
+       IN?     JESTER,HERE /?CCL7
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "An invisible hand seems to stop you"
+       SUB     MOVES,J-DISPOSED
+       LESS?   STACK,4 \?CCL10
+       PRINTI  ", and a familiar voice says, ""Surely you didn't think you'd be rid of me so easily!"""
+       CRLF    
+       JUMP    ?CND8
+?CCL10:        PRINT   PERIOD-CR
+?CND8: SET     'DO-J,TRUE-VALUE
+       ICALL1  I-JESTER
+       RFALSE  
+?CCL7: ICALL1  RETURN-FROM-MAP
+       PRINT   ERE-YOU-PASS
+       RFALSE  
+
+
+       .FUNCT  PEG-ROOM-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You're in a nondescript room with an exit to the south. "
+       ZERO?   PEG-PASSAGE-OPENED /?CND4
+       PRINTI  "A previously hidden passage leads north. "
+?CND4: PRINTI  "In the center of the room is a pegboard. Hanging on the wall are a set of instructions."
+       RTRUE   
+
+
+       .FUNCT  PBOZ-OBJECT-F
+       EQUAL?  PRSA,V?PLAY \FALSE
+       EQUAL?  HERE,PEG-ROOM \?CCL6
+       ICALL1  PEG-GAME
+       RTRUE   
+?CCL6: PRINT   YOU-CANT
+       PRINTR  "play Peggleboz without a pegboard!"
+
+
+       .FUNCT  PEGBOARD-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTR  "The board has 21 holes, 20 of them filled with pegs. The holes are arranged in a roughly triangular shape."
+?CCL3: EQUAL?  PRSA,V?TAKE \FALSE
+       PRINTR  "The pegboard is an unmovable feature of the room."
+
+
+       .FUNCT  PEGBOARD-PEGS-F
+       EQUAL?  PRSA,V?TAKE,V?MOVE \FALSE
+       PRINTR  "It would behoove you to read the instructions that are posted on the wall here."
+
+
+       .FUNCT  PEG-GAME,FIRST-MOVE,PEG-SELECTED,CHAR,JUMPED-PEG,DONT-CLEAR,WON,CNT,?TMP2,?TMP1
+       SET     'FIRST-MOVE,TRUE-VALUE
+       CLEAR   S-FULL
+       ICALL   SPLIT-BY-PICTURE,PBOZ-SPLIT,TRUE-VALUE
+       ICALL2  ADJUST-TEXT-WINDOW,PBOZ-BOTTOM
+       ICALL1  SETUP-PBOZ
+?PRG1: ZERO?   WON \?CND3
+       ZERO?   PEG-SELECTED /?CCL7
+       ZERO?   DONT-CLEAR \?CCL10
+       CLEAR   S-TEXT
+       JUMP    ?CND8
+?CCL10:        SET     'DONT-CLEAR,FALSE-VALUE
+?CND8: PRINTI  "You are moving the peg at letter "
+       HLIGHT  H-BOLD
+       ADD     LETTER-OFFSET,PEG-SELECTED
+       PRINTC  STACK
+       HLIGHT  H-NORMAL
+       PRINTI  ". Select the letter for the destination point of that peg, or hit "
+       HLIGHT  H-BOLD
+       ADD     LETTER-OFFSET,PEG-SELECTED
+       PRINTC  STACK
+       HLIGHT  H-NORMAL
+       PRINTI  " again to ""unselect"" that peg."
+       JUMP    ?CND3
+?CCL7: ZERO?   FIRST-MOVE \?CND11
+       ZERO?   DONT-CLEAR \?CND11
+       CLEAR   S-TEXT
+?CND11:        ZERO?   DONT-CLEAR \?CND3
+       CALL1   PEG-COUNT
+       EQUAL?  STACK,1 \?CCL19
+       PRINTI  "Type X to exit, Y to display your moves, and Z to start again"
+       ZERO?   ACTIVE-MOUSE /?CND20
+       PRINTI  " (or simply click on the appropriate spot with your mouse)"
+?CND20:        PRINTC  46
+       JUMP    ?CND3
+?CCL19:        PRINTI  "Type the letter corresponding to the peg you'd like to move"
+       ZERO?   ACTIVE-MOUSE /?CND22
+       PRINTI  ", or use your mouse to click on it"
+?CND22:        PRINTC  46
+       ZERO?   FIRST-MOVE /?CND3
+       SET     'FIRST-MOVE,FALSE-VALUE
+       PRINTI  " Type X to exit Peggleboz, Y to display your moves so far, Z to reset the board"
+       ZERO?   ACTIVE-MOUSE /?CND26
+       PRINTI  " (or you can use your mouse to click on the appropriate spot)"
+?CND26:        PRINTC  46
+?CND3: SET     'DONT-CLEAR,FALSE-VALUE
+       ZERO?   PEG-SELECTED /?CCL30
+       MUL     PEG-SELECTED,2
+       GET     BOARD-TABLE,STACK >?TMP1
+       MUL     PEG-SELECTED,2
+       ADD     STACK,1
+       GET     BOARD-TABLE,STACK
+       CALL    BLINK,UNHL-PEG,HL-PEG,?TMP1,STACK,S-WINDOW >CHAR
+       JUMP    ?CND28
+?CCL30:        ZERO?   DEMO-VERSION? /?CCL33
+       CALL2   INPUT-DEMO,1 >CHAR
+       JUMP    ?CND28
+?CCL33:        INPUT   1 >CHAR
+?CND28:        ICALL1  MOUSE-INPUT?
+       EQUAL?  CHAR,CLICK1,CLICK2 \?CND34
+       CALL1   PBOZ-CLICK >CHAR
+?CND34:        GRTR?   CHAR,96 \?CND36
+       LESS?   CHAR,123 \?CND36
+       SUB     CHAR,32 >CHAR
+?CND36:        EQUAL?  CHAR,88 \?CCL42
+       ICALL1  RESET-PEGBOARD
+       ICALL2  INIT-SL-WITH-SPLIT,TEXT-WINDOW-PIC-LOC
+       CLEAR   S-TEXT
+       RTRUE   
+?CCL42:        EQUAL?  CHAR,89 \?CCL44
+       SET     'DONT-CLEAR,TRUE-VALUE
+       ICALL1  DISPLAY-MOVES
+       JUMP    ?PRG1
+?CCL44:        EQUAL?  CHAR,90 \?CCL46
+       ICALL1  RESET-PEGBOARD
+       SET     'WON,FALSE-VALUE
+       SET     'CNT,4
+       SCREEN  S-WINDOW
+       ICALL1  DRAW-PEGS
+       SCREEN  S-TEXT
+       CLEAR   S-TEXT
+       SET     'PEG-SELECTED,FALSE-VALUE
+       JUMP    ?PRG1
+?CCL46:        ZERO?   PEG-SELECTED \?CCL48
+       SUB     CHAR,64 >PEG-SELECTED
+       GRTR?   PEG-SELECTED,21 /?CTR50
+       LESS?   PEG-SELECTED,1 \?CCL51
+?CTR50:        CLEAR   S-TEXT
+       SOUND   1
+       SET     'PEG-SELECTED,FALSE-VALUE
+       SET     'DONT-CLEAR,TRUE-VALUE
+       PRINTI  "Illegal choice. Type a letter from A thru U to select a peg. Or, type X to exit, Y to display your moves, or Z to reset the board."
+       JUMP    ?PRG1
+?CCL51:        GET     PEG-TABLE,PEG-SELECTED
+       ZERO?   STACK \?PRG1
+       CLEAR   S-TEXT
+       SOUND   1
+       SET     'DONT-CLEAR,TRUE-VALUE
+       PRINTI  "There's no peg at point "
+       ADD     LETTER-OFFSET,PEG-SELECTED
+       PRINTC  STACK
+       PRINTC  46
+       SET     'PEG-SELECTED,FALSE-VALUE
+       JUMP    ?PRG1
+?CCL48:        SUB     CHAR,64
+       EQUAL?  PEG-SELECTED,STACK \?CCL56
+       SET     'DONT-CLEAR,TRUE-VALUE
+       SET     'PEG-SELECTED,FALSE-VALUE
+       CLEAR   S-TEXT
+       PRINTI  "Unselected."
+       JUMP    ?PRG1
+?CCL56:        CALL    LEGAL-MOVE,PEG-SELECTED,CHAR >JUMPED-PEG
+       ZERO?   JUMPED-PEG /?CCL58
+       PUT     PEG-MOVE-TABLE,PEG-MOVE-NUMBER,PEG-SELECTED
+       ADD     PEG-MOVE-NUMBER,1 >?TMP1
+       SUB     CHAR,64
+       PUT     PEG-MOVE-TABLE,?TMP1,STACK
+       ADD     PEG-MOVE-NUMBER,2 >PEG-MOVE-NUMBER
+       PUT     PEG-TABLE,JUMPED-PEG,0
+       PUT     PEG-TABLE,PEG-SELECTED,0
+       SUB     CHAR,64
+       PUT     PEG-TABLE,STACK,1
+       SCREEN  S-WINDOW
+       GET     PEG-BG-PIC-TBL,PEG-SELECTED >?TMP2
+       MUL     PEG-SELECTED,2
+       GET     BOARD-TABLE,STACK >?TMP1
+       MUL     PEG-SELECTED,2
+       ADD     STACK,1
+       GET     BOARD-TABLE,STACK
+       DISPLAY ?TMP2,?TMP1,STACK
+       GET     PEG-BG-PIC-TBL,JUMPED-PEG >?TMP2
+       MUL     JUMPED-PEG,2
+       GET     BOARD-TABLE,STACK >?TMP1
+       MUL     JUMPED-PEG,2
+       ADD     STACK,1
+       GET     BOARD-TABLE,STACK
+       DISPLAY ?TMP2,?TMP1,STACK
+       SUB     CHAR,64
+       MUL     STACK,2
+       GET     BOARD-TABLE,STACK >?TMP1
+       SUB     CHAR,64
+       MUL     STACK,2
+       ADD     STACK,1
+       GET     BOARD-TABLE,STACK
+       DISPLAY UNHL-PEG,?TMP1,STACK
+       EQUAL?  PEG-MOVE-NUMBER,2 \?CND59
+       ZERO?   ACTIVE-MOUSE /?CND59
+       ICALL2  PICINF-PLUS-ONE,PBOZ-RESTART-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY RESTART-BOX,?TMP1,STACK
+       ICALL2  PICINF-PLUS-ONE,PBOZ-SHOW-MOVES-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY SHOW-MOVES-BOX,?TMP1,STACK
+?CND59:        SET     'PEG-SELECTED,FALSE-VALUE
+       SCREEN  S-TEXT
+       CLEAR   S-TEXT
+       CALL1   PBOZ-WIN-CHECK
+       ZERO?   STACK /?PRG1
+       SET     'WON,TRUE-VALUE
+       SET     'PEG-PASSAGE-OPENED,TRUE-VALUE
+       SOUND   1
+       SOUND   1
+       SOUND   1
+       PRINTI  "A secret doorway to the north slides open. (Hit X to exit)."
+       CRLF    
+       ICALL2  INC-SCORE,16
+       JUMP    ?PRG1
+?CCL58:        SET     'DONT-CLEAR,TRUE-VALUE
+       JUMP    ?PRG1
+
+
+       .FUNCT  PBOZ-CLICK,TL-X,TL-Y,BR-X,BR-Y,CNT,PEG-WIDTH,PEG-HEIGHT,EXPAND-X,EXPAND-Y
+       SET     'CNT,2
+       ICALL2  PICINF-PLUS-ONE,PBOZ-RESTART-BOX-LOC
+       GET     PICINF-TBL,1 >TL-X
+       GET     PICINF-TBL,0 >TL-Y
+       PICINF  RESTART-BOX,PICINF-TBL /?BOGUS1
+?BOGUS1:       GET     PICINF-TBL,1
+       ADD     TL-X,STACK >BR-X
+       GET     PICINF-TBL,0
+       ADD     TL-Y,STACK >BR-Y
+       CALL    WITHIN?,TL-X,TL-Y,BR-X,BR-Y
+       ZERO?   STACK /?CND2
+       RETURN  90
+?CND2: ICALL2  PICINF-PLUS-ONE,PBOZ-SHOW-MOVES-BOX-LOC
+       GET     PICINF-TBL,1 >TL-X
+       GET     PICINF-TBL,0 >TL-Y
+       PICINF  SHOW-MOVES-BOX,PICINF-TBL /?BOGUS4
+?BOGUS4:       GET     PICINF-TBL,1
+       ADD     TL-X,STACK >BR-X
+       GET     PICINF-TBL,0
+       ADD     TL-Y,STACK >BR-Y
+       CALL    WITHIN?,TL-X,TL-Y,BR-X,BR-Y
+       ZERO?   STACK /?CND5
+       RETURN  89
+?CND5: ICALL2  PICINF-PLUS-ONE,PBOZ-EXIT-BOX-LOC
+       GET     PICINF-TBL,1 >TL-X
+       GET     PICINF-TBL,0 >TL-Y
+       PICINF  EXIT-BOX,PICINF-TBL /?BOGUS7
+?BOGUS7:       GET     PICINF-TBL,1
+       ADD     TL-X,STACK >BR-X
+       GET     PICINF-TBL,0
+       ADD     TL-Y,STACK >BR-Y
+       CALL    WITHIN?,TL-X,TL-Y,BR-X,BR-Y
+       ZERO?   STACK /?CND8
+       RETURN  88
+?CND8: PICINF  EXPAND-HOT-SPOT,PICINF-TBL /?BOGUS10
+?BOGUS10:      GET     PICINF-TBL,0 >EXPAND-Y
+       GET     PICINF-TBL,1 >EXPAND-X
+       PICINF  UNHL-PEG,PICINF-TBL /?BOGUS11
+?BOGUS11:      GET     PICINF-TBL,0 >PEG-HEIGHT
+       GET     PICINF-TBL,1 >PEG-WIDTH
+?PRG12:        GET     BOARD-TABLE,CNT >TL-Y
+       ADD     CNT,1
+       GET     BOARD-TABLE,STACK >TL-X
+       ADD     TL-Y,PEG-HEIGHT >BR-Y
+       ADD     TL-X,PEG-WIDTH >BR-X
+       SUB     TL-X,EXPAND-X >TL-X
+       ADD     BR-X,EXPAND-X >BR-X
+       ADD     BR-Y,EXPAND-Y >BR-Y
+       CALL    WITHIN?,TL-X,TL-Y,BR-X,BR-Y
+       ZERO?   STACK \?REP13
+       ADD     CNT,2 >CNT
+       GRTR?   CNT,43 \?PRG12
+       SOUND   1
+?REP13:        GRTR?   CNT,43 \?CCL20
+       RETURN  CLICK1
+?CCL20:        DIV     CNT,2
+       ADD     STACK,64
+       RSTACK  
+
+
+       .FUNCT  SETUP-PBOZ,I,TT,?TMP1
+       SET     'I,2
+       FSET    PBOZ-OBJECT,TOUCHBIT
+       SET     'TT,PBOZ-PIC-TABLE
+?PRG1: GET     TT,0
+       ICALL2  PICINF-PLUS-ONE,STACK
+       GET     PICINF-TBL,0
+       PUT     BOARD-TABLE,I,STACK
+       ADD     I,1 >?TMP1
+       GET     PICINF-TBL,1
+       PUT     BOARD-TABLE,?TMP1,STACK
+       ADD     I,2 >I
+       GRTR?   I,43 /?REP2
+       ADD     TT,2 >TT
+       JUMP    ?PRG1
+?REP2: SCREEN  S-FULL
+       DISPLAY PBOZ-BORDER,1,1
+       SCREEN  S-WINDOW
+       PICSET  PBOZ-PICSET-TBL
+       ICALL1  DRAW-PEGS
+       ZERO?   ACTIVE-MOUSE /?CND5
+       ICALL2  PICINF-PLUS-ONE,PBOZ-RESTART-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY DIM-RESTART-BOX,?TMP1,STACK
+       ICALL2  PICINF-PLUS-ONE,PBOZ-SHOW-MOVES-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY DIM-SHOW-MOVES-BOX,?TMP1,STACK
+       ICALL2  PICINF-PLUS-ONE,PBOZ-EXIT-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY EXIT-BOX,?TMP1,STACK
+?CND5: SCREEN  S-TEXT
+       RTRUE   
+
+
+       .FUNCT  DRAW-PEGS,NUM,?TMP2,?TMP1
+       SET     'NUM,1
+?PRG1: GET     PEG-TABLE,NUM
+       EQUAL?  STACK,1 \?CCL5
+       MUL     NUM,2
+       GET     BOARD-TABLE,STACK >?TMP1
+       MUL     NUM,2
+       ADD     STACK,1
+       GET     BOARD-TABLE,STACK
+       DISPLAY UNHL-PEG,?TMP1,STACK
+       JUMP    ?CND3
+?CCL5: GET     PEG-BG-PIC-TBL,NUM >?TMP2
+       MUL     NUM,2
+       GET     BOARD-TABLE,STACK >?TMP1
+       MUL     NUM,2
+       ADD     STACK,1
+       GET     BOARD-TABLE,STACK
+       DISPLAY ?TMP2,?TMP1,STACK
+?CND3: IGRTR?  'NUM,21 \?PRG1
+       RTRUE   
+
+
+       .FUNCT  RESET-PEGBOARD,CNT,?TMP1
+       ZERO?   ACTIVE-MOUSE /?CND1
+       SCREEN  S-WINDOW
+       ICALL2  PICINF-PLUS-ONE,PBOZ-RESTART-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY DIM-RESTART-BOX,?TMP1,STACK
+       ICALL2  PICINF-PLUS-ONE,PBOZ-SHOW-MOVES-BOX-LOC
+       GET     PICINF-TBL,0 >?TMP1
+       GET     PICINF-TBL,1
+       DISPLAY DIM-SHOW-MOVES-BOX,?TMP1,STACK
+       SCREEN  S-TEXT
+?CND1: SET     'PEG-MOVE-NUMBER,0
+       PUT     PEG-TABLE,1,1
+       ADD     PEG-TABLE,2 >?TMP1
+       ADD     PEG-TABLE,4
+       COPYT   ?TMP1,STACK,-40
+       PUT     PEG-TABLE,7,0
+       COPYT   PEG-MOVE-TABLE,0,80
+       RTRUE   
+
+
+       .FUNCT  LEGAL-MOVE,SELECTED-PEG,CHAR,TBL,TBL-SPOT,JUMPED-PEG
+       SUB     CHAR,64 >CHAR
+       GET     LEGAL-MOVE-TABLE,SELECTED-PEG >TBL
+       GET     TBL,0
+       EQUAL?  STACK,CHAR \?CCL3
+       SET     'TBL-SPOT,0
+       JUMP    ?CND1
+?CCL3: GET     TBL,2
+       EQUAL?  STACK,CHAR \?CCL5
+       SET     'TBL-SPOT,2
+       JUMP    ?CND1
+?CCL5: GET     TBL,4
+       EQUAL?  STACK,CHAR \?CCL7
+       SET     'TBL-SPOT,4
+       JUMP    ?CND1
+?CCL7: GET     TBL,6
+       EQUAL?  STACK,CHAR \?CCL9
+       SET     'TBL-SPOT,6
+?CND1: ADD     TBL-SPOT,1
+       GET     TBL,STACK >JUMPED-PEG
+       GET     PEG-TABLE,CHAR
+       EQUAL?  STACK,1 \?CCL12
+       CLEAR   S-TEXT
+       SOUND   1
+       PRINTI  "Illegal move. There's already a peg at spot "
+       ADD     LETTER-OFFSET,CHAR
+       PRINTC  STACK
+       PRINTC  46
+       RFALSE  
+?CCL9: CLEAR   S-TEXT
+       SOUND   1
+       PRINTI  "Illegal move. You can jump a peg only to a spot which is two spots away."
+       RFALSE  
+?CCL12:        GET     PEG-TABLE,JUMPED-PEG
+       ZERO?   STACK /?CCL13
+       RETURN  JUMPED-PEG
+?CCL13:        CLEAR   S-TEXT
+       SOUND   1
+       PRINTI  "Illegal move. There's no peg at spot "
+       ADD     LETTER-OFFSET,JUMPED-PEG
+       PRINTC  STACK
+       PRINTI  " to jump."
+       RFALSE  
+
+
+       .FUNCT  PBOZ-WIN-CHECK,CNT,PEG-NUM
+       SET     'CNT,1
+       ZERO?   PEG-PASSAGE-OPENED \FALSE
+?PRG3: EQUAL?  CNT,22 /?REP4
+       GET     PEG-TABLE,CNT
+       EQUAL?  STACK,1 \?CND7
+       INC     'PEG-NUM
+?CND7: INC     'CNT
+       JUMP    ?PRG3
+?REP4: EQUAL?  PEG-NUM,1 \FALSE
+       GET     PEG-TABLE,7
+       EQUAL?  STACK,1 /TRUE
+       RFALSE  
+
+
+       .FUNCT  PEG-COUNT,CNT,PEG-NUM
+       SET     'CNT,1
+?PRG1: EQUAL?  CNT,22 /?REP2
+       GET     PEG-TABLE,CNT
+       EQUAL?  STACK,1 \?CND5
+       INC     'PEG-NUM
+?CND5: INC     'CNT
+       JUMP    ?PRG1
+?REP2: RETURN  PEG-NUM
+
+
+       .FUNCT  DISPLAY-MOVES,X,Y,CNT
+       CLEAR   S-TEXT
+       ZERO?   PEG-MOVE-NUMBER \?CND1
+       PRINTI  "You haven't moved yet!"
+       RTRUE   
+?CND1: FONT    4
+?PRG3: MOD     CNT,10
+       DIV     STACK,2
+       ADD     STACK,1 >Y
+       DIV     CNT,10
+       MUL     STACK,12
+       ADD     STACK,1 >X
+       ICALL   CCURSET,Y,X
+       DIV     CNT,2
+       ADD     STACK,1
+       PRINTN  STACK
+       PRINTI  ") "
+       GET     PEG-MOVE-TABLE,CNT
+       ADD     LETTER-OFFSET,STACK
+       PRINTC  STACK
+       PRINTI  " -> "
+       ADD     CNT,1
+       GET     PEG-MOVE-TABLE,STACK
+       ADD     LETTER-OFFSET,STACK
+       PRINTC  STACK
+       SUB     PEG-MOVE-NUMBER,2
+       EQUAL?  CNT,STACK /?REP4
+       ADD     CNT,2 >CNT
+       JUMP    ?PRG3
+?REP4: FONT    1
+       RSTACK  
+
+
+       .FUNCT  GAMING-ROOM-F,RARG
+       EQUAL?  RARG,M-ENTER \FALSE
+       FSET?   ZORKMID-BILL,TOUCHBIT /FALSE
+       SET     'DO-J,TRUE-VALUE
+       CALL    QUEUE,I-JESTER,1
+       RSTACK  
+
+
+       .FUNCT  CARPET-F
+       EQUAL?  PRSA,V?RAISE,V?LOOK-UNDER,V?MOVE /?CCL3
+       EQUAL?  PRSA,V?ROLL \FALSE
+?CCL3: PRINTR  "The carpet is quite well attached to the floor."
+
+       .SEGMENT "0"
+
+
+       .FUNCT  DUMBELL-F
+       EQUAL?  PRSA,V?RAISE \?CCL3
+       PRINTR  "You can barely get them off the ground, let alone press them."
+?CCL3: EQUAL?  PRSA,V?PUSH-DIR \?CCL5
+       ICALL   PERFORM,V?ROLL-DIR,PRSO,PRSI
+       RTRUE   
+?CCL5: EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTR  "It's a set of 100-ugh weights, small enough to hold in one hand (but unless you a pretty awesome athleter, not nearly light enough to hold in one hand)."
+
+       .ENDSEG
+
+       .SEGMENT "CASTLE"
+
+
+       .FUNCT  EAST-HALL-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "The castle's east wing lies through a massive door to the east, which is "
+       ICALL2  OPEN-CLOSED,EAST-DOOR
+       PRINTI  ". The only other exit from the hall is northwest."
+       RTRUE   
+
+
+       .FUNCT  EAST-DOOR-F
+       EQUAL?  PRSA,V?UNLOCK \?CCL3
+       FSET?   EAST-DOOR,LOCKEDBIT \?CCL3
+       EQUAL?  PRSI,EAST-KEY \?CCL3
+       FCLEAR  EAST-DOOR,LOCKEDBIT
+       CALL    LOCKED-UNLOCKED,EAST-DOOR,TRUE-VALUE
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?LOCK \FALSE
+       FSET?   EAST-DOOR,LOCKEDBIT /FALSE
+       EQUAL?  PRSI,EAST-KEY \FALSE
+       FSET    EAST-DOOR,LOCKEDBIT
+       CALL2   LOCKED-UNLOCKED,EAST-DOOR
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  WAND-F
+       EQUAL?  PRSA,V?READ,V?EXAMINE \?CCL3
+       PRINTR  "The name ""Fisha"" is engraved on the wand in tiny script, followed by the phrase ""16 minute model."""
+?CCL3: EQUAL?  PRSA,V?POINT \FALSE
+       EQUAL?  PRSO,WAND \FALSE
+       MOVE    WAND,PROTAGONIST
+       EQUAL?  PRSI,WAND \?CCL10
+       PRINTR  "Point the wand at itself!?! It isn't made of rubber!"
+?CCL10:        ZERO?   TIME-STOPPED /?CCL12
+       PRINTR  "The wand's magic seems as frozen as time itself."
+?CCL12:        ZERO?   WAND-LIFE \?CND8
+       PRINTR  "Nothing. The wand seems to be used up."
+?CND8: DEC     'WAND-LIFE
+       GETP    PRSI,P?INANIMATE-DESC
+       ZERO?   STACK /?CCL16
+       FSET?   PRSI,ANIMATEDBIT \?CCL16
+       EQUAL?  PRSI,FOX \?CND19
+       FSET    PRSI,WEARBIT
+?CND19:        GETP    PRSI,P?ANIMATE-ROUTINE
+       ICALL   QUEUE,STACK,17
+       FCLEAR  PRSI,ANIMATEDBIT
+       FCLEAR  PRSI,ACTORBIT
+       FSET    PRSI,TOUCHBIT
+       ICALL2  THIS-IS-IT,PRSI
+       GETP    PRSI,P?WAND-TEXT
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL16:        FSET?   PRSI,BLACKBIT /?CTR21
+       FSET?   PRSI,WHITEBIT \?CCL22
+?CTR21:        PRINTI  "The "
+       ICALL2  DPRINT,PRSO
+       PRINTR  " seems to grow sluggish for a moment, but there is no other effect."
+?CCL22:        EQUAL?  PRSA,V?POINT \?CCL26
+       EQUAL?  PRSI,JESTER \?CCL26
+       PRINTI  "The jester's expression turns stony. In fact, the jester himself turns stony, as he becomes a statue! After a moment, hairline cracks begin forming across the statue. The cracks widen and multiply, and the entire statue collapses into a cloud of dust! You hear an echo of laughter as the dust disperses."
+       IN?     SHELL-TABLE,HERE \?CND29
+       PRINTI  " The table and shells disappear as well."
+?CND29:        CRLF    
+       ICALL1  REMOVE-J
+       SET     'J-DISPOSED,MOVES
+       RTRUE   
+?CCL26:        EQUAL?  PRSI,BEDBUG \?CCL32
+       REMOVE  BEDBUG
+       PRINTR  "The bedbug freezes, becoming a small armored tank. You are surrounded by raucous laughter from an invisible source, and the bedbug/tank disappears!"
+?CCL32:        EQUAL?  PRSI,EVEN-LARGER-FLY,LARGER-FLY,LARGE-FLY /?CTR33
+       EQUAL?  PRSI,LARGEST-FLY \?CCL34
+?CTR33:        PRINTR  "Zap! A bolt of magic just misses the fly. Oh, well. It seems that even though it's large for a fly, it's small for a magic wand target."
+?CCL34:        EQUAL?  PRSI,OTTO \?CCL38
+       REMOVE  OTTO
+       ICALL   QUEUE,I-STONE-TO-OTTO,17
+       PRINTI  "Otto "
+       FSET?   SPYGLASS,TRYTAKEBIT \?CND39
+       IN?     SPYGLASS,OTTO /?CND39
+       MOVE    SPYGLASS,OTTO
+       PRINTI  "grabs the spyglass just before he "
+?CND39:        PRINTR  "transforms into a massive stone toad, just like the ones that flank the Flatheadia Courthouse. His weight is now too much for even the largest of lily pads to bear, and he sinks into the swamp with a sickening slurp."
+?CCL38:        EQUAL?  PRSI,BROGMOID \?CCL44
+       PRINTR  "A few of the brogmoid's cells may have frozen; if the wand were twenty bloits long, it might have a chance of affecting this enormous brogmoid."
+?CCL44:        EQUAL?  PRSI,PRICKLY-WITCH,SICKLY-WITCH \?CCL46
+       PRINTR  "A magical shield springs up around the witch. ""Your weak powers are useless against us, simple adventurer!"" cackles the crone."
+?CCL46:        FSET?   PRSI,PLANTBIT \?CCL48
+       PRINTI  "No effect;"
+       ICALL1  TPRINT-PRSI
+       PRINTR  " wasn't all that animate to begin with."
+?CCL48:        EQUAL?  PRSI,UNICORNS \?CCL50
+       CALL2   JIGS-UP,STR?381
+       RSTACK  
+?CCL50:        EQUAL?  PRSI,THOUSANDS-OF-SNAKES \?CCL52
+       PRINTR  "One of the snakes stops moving, but is instantly swallowed up by the writhing mass."
+?CCL52:        EQUAL?  PRSI,ME \?CCL54
+       CALL2   JIGS-UP,STR?382
+       RSTACK  
+?CCL54:        EQUAL?  PRSI,EXECUTIONER \?CCL56
+       CALL2   JIGS-UP,STR?383
+       RSTACK  
+?CCL56:        PRINTI  "You feel a crackle of magical energy, but there doesn't seem to be any effect on"
+       CALL2   TRPRINT,PRSI
+       RSTACK  
+
+       .ENDSEG
+
+       .SEGMENT "LOWER"
+
+
+       .FUNCT  G-BOOTH-F,TBL,LEN
+       IN?     PROTAGONIST,LEFT-BOOTH \?CCL3
+       RETURN  LEFT-BOOTH
+?CCL3: IN?     PROTAGONIST,RIGHT-BOOTH \FALSE
+       RETURN  RIGHT-BOOTH
+
+
+       .FUNCT  BOOTH-F,VARG
+       ZERO?   VARG /?CCL3
+       EQUAL?  VARG,M-ENTER \FALSE
+?CCL3: ZERO?   VARG /?CCL7
+       FSET?   PRSO,TOUCHBIT /FALSE
+       PRINTC  32
+       ICALL   PERFORM,V?EXAMINE,PRSO
+       RTRUE   
+?CCL7: EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTR  "The only feature of the booth is an ominous black button."
+
+
+       .FUNCT  G-BUTTON-F,TBL,LEN
+       IN?     PROTAGONIST,RIGHT-BOOTH \?CCL3
+       RETURN  RIGHT-BOOTH-BUTTON
+?CCL3: IN?     PROTAGONIST,LEFT-BOOTH \?CCL5
+       RETURN  LEFT-BOOTH-BUTTON
+?CCL5: RETURN  NOT-HERE-OBJECT
+
+
+       .FUNCT  BOOTH-BUTTON-F,OTHER-BOOTH,THE-FLY
+       EQUAL?  PRSA,V?PUSH \FALSE
+       ZERO?   ALLIGATOR /?CND4
+       PRINTR  "Impossible, in your current state."
+?CND4: REMOVE  LEFT-BOOTH-BUTTON
+       REMOVE  RIGHT-BOOTH-BUTTON
+       IN?     PROTAGONIST,RIGHT-BOOTH \?CCL8
+       SET     'OTHER-BOOTH,LEFT-BOOTH
+       JUMP    ?CND6
+?CCL8: SET     'OTHER-BOOTH,RIGHT-BOOTH
+?CND6: FIRST?  OTHER-BOOTH >THE-FLY /?BOGUS9
+?BOGUS9:       ZERO?   THE-FLY /?CTR11
+       NEXT?   THE-FLY \?CCL12
+?CTR11:        PRINT   NOTHING-HAPPENS
+       JUMP    ?CND10
+?CCL12:        ICALL   QUEUE,I-UNTURN,5
+       SET     'TURNED-INTO,THE-FLY
+       ICALL2  DEQUEUE,I-UNALLIGATOR
+       PRINTI  "You turn into"
+       ICALL2  APRINT,THE-FLY
+       EQUAL?  THE-FLY,WORM \?CCL17
+       CALL2   VISIBLE?,ROOSTER
+       ZERO?   STACK /?CCL17
+       FSET?   ROOSTER,ANIMATEDBIT \?CCL17
+       ICALL2  JIGS-UP,STR?390
+       JUMP    ?CND15
+?CCL17:        EQUAL?  THE-FLY,ROOSTER \?CCL22
+       CALL2   VISIBLE?,FOX
+       ZERO?   STACK /?CCL22
+       FSET?   FOX,ANIMATEDBIT \?CCL22
+       ICALL2  JIGS-UP,STR?391
+       JUMP    ?CND15
+?CCL22:        FIRST?  PROTAGONIST \?CCL27
+       PRINTI  ", dropping your possessions."
+       LOC     PROTAGONIST
+       ICALL   ROB,PROTAGONIST,STACK
+       JUMP    ?CND15
+?CCL27:        PRINTC  46
+?CND15:        CRLF    
+?CND10:        MOVE    LEFT-BOOTH-BUTTON,LEFT-BOOTH
+       MOVE    RIGHT-BOOTH-BUTTON,RIGHT-BOOTH
+       RTRUE   
+
+
+       .FUNCT  I-UNTURN
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "   Waves of relief. You're no longer"
+       ICALL2  ARPRINT,TURNED-INTO
+       SET     'TURNED-INTO,FALSE-VALUE
+       RTRUE   
+
+
+       .FUNCT  TO-SPEAK-OF,STRING
+       PRINTI  "Ummm..."
+       ICALL2  APRINT,TURNED-INTO
+       PRINTI  " has no "
+       PRINT   STRING
+       PRINTR  " to speak of."
+
+
+       .FUNCT  GOOD-MEAL,OBJ
+       REMOVE  OBJ
+       PRINTI  "Yum!"
+       GRTR?   HUNGER-COUNT,0 \?CCL3
+       PRINTI  " Your hunger fades."
+       CRLF    
+       ICALL2  DEQUEUE,I-HUNGER
+       SET     'HUNGER-COUNT,0
+       CALL2   INC-SCORE,20
+       RSTACK  
+?CCL3: CRLF    
+       RTRUE   
+
+       .SEGMENT "0"
+
+
+       .FUNCT  TOBOGGAN-F,VARG
+       ZERO?   VARG \FALSE
+       EQUAL?  PRSA,V?EXAMINE \?CCL5
+       CALL    NOUN-USED?,TOBOGGAN,W?INSCRIPTION
+       ZERO?   STACK /?CCL8
+       ICALL   PERFORM,V?READ,TOBOGGAN
+       RTRUE   
+?CCL8: PRINTI  "This one-person sled bears a small inscription. "
+       RFALSE  
+?CCL5: EQUAL?  PRSA,V?ENTER \FALSE
+       EQUAL?  HERE,GLACIER \FALSE
+       MOVE    TOBOGGAN,MIRROR-LAKE
+       ZERO?   ENCHANTED-ORB \?CND13
+       RANDOM  100
+       LESS?   25,STACK /?CCL17
+       SET     'ENCHANTED-ORB,MILKY-ORB
+       JUMP    ?CND13
+?CCL17:        RANDOM  100
+       LESS?   33,STACK /?CCL19
+       SET     'ENCHANTED-ORB,SMOKY-ORB
+       JUMP    ?CND13
+?CCL19:        RANDOM  100
+       LESS?   50,STACK /?CCL21
+       SET     'ENCHANTED-ORB,FIERY-ORB
+       JUMP    ?CND13
+?CCL21:        SET     'ENCHANTED-ORB,GLITTERY-ORB
+?CND13:        PRINTI  "As you sit on the toboggan, it begins to slide down the mountain, gathering speed as it goes. The passing landscape begins to blur, and then even the blur is gone as the icy wind forces your eyes shut. Suddenly, with a jolt like a mighty hand grabbing you, you are still! You open your eyes"
+       PRINT   ELLIPSIS
+       CALL2   GOTO,TOBOGGAN
+       RSTACK  
+
+       .ENDSEG
+
+       .SEGMENT "LOWER"
+
+
+       .FUNCT  CAGE-F
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       IN?     SNAKE,CAGE \?CCL6
+       FSET?   SNAKE,ANIMATEDBIT \?CCL6
+       CALL2   JIGS-UP,STR?396
+       RSTACK  
+?CCL6: FSET    CAGE,TOUCHBIT
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?COUNT \?CCL10
+       PRINTR  "Thousands."
+?CCL10:        EQUAL?  PRSA,V?ENTER \FALSE
+       PRINTR  "The cage is too small for a human."
+
+       .SEGMENT "0"
+
+
+       .FUNCT  SNAKE-F
+       EQUAL?  PRSA,V?RESEARCH \?CCL3
+       CALL    NOUN-USED?,SNAKE,W?SNAKE
+       ZERO?   STACK /?CCL3
+       PRINTR  """A common animal, best kept caged."""
+?CCL3: FSET?   SNAKE,ANIMATEDBIT \?CCL7
+       EQUAL?  PRSA,V?LET-OUT \?CCL10
+       ICALL   PERFORM,V?OPEN,CAGE
+       RTRUE   
+?CCL10:        EQUAL?  PRSA,V?MEASURE,V?EXAMINE \FALSE
+       PRINTR  "The snake is thin and perhaps as much as twenty feet long."
+?CCL7: EQUAL?  PRSA,V?TIE \?CCL14
+       EQUAL?  PRSO,SNAKE \?CCL14
+       EQUAL?  PRSI,SPIRE \?CCL19
+       SET     'ROPE-PLACED,TRUE-VALUE
+       MOVE    SNAKE,HERE
+       PRINTR  "You tie the rope to the spire, dropping the other end down the cliff face. It reaches most of the way toward the lower ledge."
+?CCL19:        FSET?   PRSI,PLANTBIT \?CCL21
+       CALL1   WASTES
+       RSTACK  
+?CCL21:        PRINT   YOU-CANT
+       PRINTI  "tie the rope to"
+       CALL2   TRPRINT,PRSI
+       RSTACK  
+?CCL14:        EQUAL?  PRSA,V?UNTIE \?CCL23
+       ZERO?   ROPE-PLACED /?CCL23
+       SET     'ROPE-PLACED,FALSE-VALUE
+       PRINTR  "You untie the rope from the spire."
+?CCL23:        EQUAL?  PRSA,V?CLIMB-DOWN \?CCL27
+       ZERO?   ROPE-PLACED /?CCL27
+       CALL2   DO-WALK,P?DOWN
+       RSTACK  
+?CCL27:        EQUAL?  PRSA,V?MEASURE,V?EXAMINE \FALSE
+       PRINTR  "The rope is about twenty feet long."
+
+
+       .FUNCT  I-W-SNAKE,TOLD
+       FSET    SNAKE,ANIMATEDBIT
+       IN?     SNAKE,LAKE-BOTTOM \?CCL3
+       REMOVE  SNAKE
+       JUMP    ?CND1
+?CCL3: CALL2   VISIBLE?,SNAKE
+       ZERO?   STACK /?CCL5
+       ICALL1  RETURN-FROM-MAP
+       SET     'TOLD,TRUE-VALUE
+       PRINTI  "   The rope ripples with increasing force. It has returned to the form of a snake! The snake squirms with anger"
+       EQUAL?  HERE,UPPER-LEDGE \?CCL8
+       ZERO?   ROPE-PLACED /?CCL8
+       PRINTI  ", uncurls from the spire, and drops out of sight!"
+       CRLF    
+       JUMP    ?CND1
+?CCL8: IN?     SNAKE,CAGE \?CCL12
+       FSET?   CAGE,OPENBIT /?CCL12
+       PRINT   PERIOD-CR
+       JUMP    ?CND1
+?CCL12:        CALL2   ULTIMATELY-IN?,SNAKE
+       ZERO?   STACK /?CCL16
+       IN?     SNAKE,WALDO /?CCL16
+       ICALL2  JIGS-UP,STR?399
+       JUMP    ?CND1
+?CCL16:        LOC     SNAKE
+       FSET?   STACK,ACTORBIT \?CND19
+       PRINTI  ", nearly bites"
+       LOC     SNAKE
+       ICALL2  TPRINT,STACK
+       PRINTI  " on the wrist, drops to the ground,"
+?CND19:        PRINTI  " and wriggles quickly out of sight."
+       CRLF    
+       JUMP    ?CND1
+?CCL5: EQUAL?  HERE,LOWER-LEDGE \?CND1
+       ZERO?   ROPE-PLACED /?CND1
+       ICALL1  RETURN-FROM-MAP
+       SET     'TOLD,TRUE-VALUE
+       PRINTI  "   A writhing snake drops from above! It strikes out at you but, fortunately, misses. Hissing angrily, it disappears into a narrow crack."
+       CRLF    
+?CND1: SET     'ROPE-PLACED,FALSE-VALUE
+       IN?     SNAKE,CAGE \?CCL25
+       FSET?   CAGE,OPENBIT \?CND24
+?CCL25:        REMOVE  SNAKE
+?CND24:        ZERO?   TOLD \TRUE
+       RFALSE  
+
+       .ENDSEG
+
+       .SEGMENT "LOWER"
+
+
+       .FUNCT  VAULT-DOOR-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       EQUAL?  HERE,LOWEST-HALL \?CCL3
+       PRINTI  "A large dial is set into the center of the door. "
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?LOCK \?CCL7
+       EQUAL?  PRSO,VAULT-DOOR \?CCL7
+       FSET?   VAULT-DOOR,OPENBIT \?CCL12
+       CALL    DO-FIRST,STR?402,VAULT-DOOR
+       RSTACK  
+?CCL12:        FSET?   VAULT-DOOR,LOCKEDBIT \?CCL14
+       PRINTR  "It is!"
+?CCL14:        RANDOM  2570 >P-NUMBER
+       ICALL   PERFORM,V?SET,DIAL,INTNUM
+       RTRUE   
+?CCL7: EQUAL?  PRSA,V?UNLOCK \FALSE
+       FSET?   PRSI,KEYBIT \FALSE
+       PRINTR  "This is a combination lock, not a key lock."
+
+
+       .FUNCT  DIAL-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTI  "The dial is currently turned to "
+       PRINTN  DIAL-NUMBER
+       PRINTR  ". It can be set to any number between 1 and 2570."
+?CCL3: EQUAL?  PRSA,V?SET-DIR \?CCL5
+       EQUAL?  PRSI,LEFT-RIGHT \?CCL5
+       ICALL   PERFORM,V?SET,DIAL
+       RTRUE   
+?CCL5: EQUAL?  PRSA,V?SET \FALSE
+       ZERO?   PRSI \?CCL12
+       PRINTR  "[You must say what number to turn the dial to, as in TURN DIAL TO 920.]"
+?CCL12:        EQUAL?  PRSI,INTNUM /?CCL14
+       CALL1   IMPOSSIBLES
+       RSTACK  
+?CCL14:        GRTR?   P-NUMBER,2570 /?CTR15
+       LESS?   P-NUMBER,1 \?CCL16
+?CTR15:        PRINTR  "That's not one of the numbers on the dial."
+?CCL16:        EQUAL?  DIAL-NUMBER,P-NUMBER \?CCL20
+       PRINTI  "The dial is already set to "
+       PRINTN  P-NUMBER
+       PRINT   PERIOD-CR
+       RTRUE   
+?CCL20:        FSET?   VAULT-DOOR,OPENBIT /?CCL22
+       FSET?   VAULT-DOOR,LOCKEDBIT /?CCL22
+       SET     'DIAL-NUMBER,P-NUMBER
+       FSET    VAULT-DOOR,LOCKEDBIT
+       PRINTR  "The tumblers tumble as the vault door re-locks."
+?CCL22:        FSET?   GLOVE,WORNBIT \?CCL26
+       FSET?   VAULT-DOOR,LOCKEDBIT \?CCL26
+       RANDOM  2570 >DIAL-NUMBER
+       FCLEAR  VAULT-DOOR,LOCKEDBIT
+       PRINTI  "As you turn the dial with your gloved hand, you can almost feel the tumblers turning as though they were an extension of your own fingers! Fascinated, you keep spinning, and as you pass "
+       PRINTN  DIAL-NUMBER
+       PRINTR  ", you feel a sense of tactile perfection, and stop. A faint click ripples up your arm."
+?CCL26:        SET     'DIAL-NUMBER,P-NUMBER
+       PRINTI  "The dial is now set to "
+       PRINTN  DIAL-NUMBER
+       PRINT   PERIOD-CR
+       RTRUE   
+
+
+       .FUNCT  VAULT-F,RARG
+       ZERO?   RARG \FALSE
+       EQUAL?  PRSA,V?LOCK,V?CLOSE,V?OPEN /?PRD7
+       EQUAL?  PRSA,V?UNLOCK \FALSE
+?PRD7: EQUAL?  PRSO,GLOBAL-HERE,VAULT \FALSE
+       CALL    PERFORM-PRSA,VAULT-DOOR,PRSI
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  NW-SE-PASSAGE-F,OARG
+       EQUAL?  OARG,M-OBJDESC? /TRUE
+       PRINTI  "   "
+       CALL2   D-PASSAGE,NW-SE-PASSAGE
+       RSTACK  
+
+
+       .FUNCT  N-S-PASSAGE-F,OARG
+       EQUAL?  OARG,M-OBJDESC? /TRUE
+       PRINTI  "   "
+       CALL2   D-PASSAGE,N-S-PASSAGE
+       RSTACK  
+
+
+       .FUNCT  PASSAGE-F
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       FSET?   PRSO,TRYTAKEBIT \?CCL3
+       MOVE    PRSO,PROTAGONIST
+       MOVE    NOTICE,HERE
+       FCLEAR  N-S-PASSAGE,TRYTAKEBIT
+       FCLEAR  NW-SE-PASSAGE,TRYTAKEBIT
+       FSET    PRSO,TOUCHBIT
+       PRINTI  "As you take"
+       ICALL1  TPRINT-PRSO
+       PRINTR  ", a notice flutters to the ground."
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL7
+       FSET?   PRSO,TAKEBIT \?CCL10
+       PRINTR  "The passage is made out of the same material as donut holes. Once installed, it should be wide enough to walk through, and it's probably about a hundredth of a bloit long."
+?CCL10:        ICALL2  D-PASSAGE,PRSO
+       CRLF    
+       RTRUE   
+?CCL7: EQUAL?  PRSA,V?ENTER \FALSE
+       FSET?   PRSO,TAKEBIT \?CCL15
+       PRINTR  "The passage hasn't been installed yet!"
+?CCL15:        EQUAL?  PRSO,N-S-PASSAGE \?CCL17
+       CALL2   DO-WALK,N-S-PASSAGE-DIR
+       RSTACK  
+?CCL17:        CALL2   DO-WALK,NW-SE-PASSAGE-DIR
+       RSTACK  
+
+
+       .FUNCT  D-PASSAGE,PASSAGE,?TMP1
+       FSET?   PASSAGE,TOUCHBIT /?CCL3
+       EQUAL?  PASSAGE,N-S-PASSAGE \?CCL6
+       PRINTI  "Discarded in the corner is a north-south passage, slightly damaged but perfectly usable."
+       RTRUE   
+?CCL6: PRINTI  "A northwest-southeast passage is lying here. It is marked as being slightly irregular, but nobody other than one of the bureaucratic Passage Inspectors would ever notice."
+       RTRUE   
+?CCL3: FSET?   PASSAGE,TAKEBIT \?CCL8
+       PRINTI  "A magic "
+       ICALL2  DPRINT,PASSAGE
+       PRINTI  " is just lying around in the middle of the room, uninstalled."
+       RTRUE   
+?CCL8: PRINTI  "A magic "
+       ICALL2  DPRINT,PASSAGE
+       PRINTI  " has been installed in the "
+       EQUAL?  PASSAGE,N-S-PASSAGE \?CCL11
+       EQUAL?  HERE,CONSTRUCTION \?CCL14
+       GET     NORTH-EXITS,0 >?TMP1
+       ADD     CONSTRUCTION-LOC,100
+       EQUAL?  ?TMP1,STACK \?CCL17
+       PRINTI  "north"
+       JUMP    ?CND9
+?CCL17:        PRINTI  "south"
+       JUMP    ?CND9
+?CCL14:        EQUAL?  N-S-PASSAGE-DIR,P?NORTH \?CCL19
+       PRINTI  "north"
+       JUMP    ?CND9
+?CCL19:        PRINTI  "south"
+       JUMP    ?CND9
+?CCL11:        EQUAL?  HERE,CONSTRUCTION \?CCL22
+       GET     SE-EXITS,0 >?TMP1
+       ADD     CONSTRUCTION-LOC,100
+       EQUAL?  ?TMP1,STACK \?CCL25
+       PRINTI  "southeast"
+       JUMP    ?CND9
+?CCL25:        PRINTI  "northwest"
+       JUMP    ?CND9
+?CCL22:        EQUAL?  NW-SE-PASSAGE-DIR,P?NW \?CCL27
+       PRINTI  "northwest"
+       JUMP    ?CND9
+?CCL27:        PRINTI  "southeast"
+?CND9: PRINTI  " wall."
+       RTRUE   
+
+       .ENDSEG
+
+       .SEGMENT "LOWER"
+
+
+       .FUNCT  PITS-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This cavern, deep in the bowels of the Great Underground Empire, "
+       ICALL1  D-PITS-FLOOR
+       PRINTI  ". A rickety ladder leads upward."
+       RTRUE   
+
+
+       .FUNCT  D-PITS-FLOOR
+       FSET?   LANTERN,TRYTAKEBIT \?CCL3
+       PRINTI  "is spotted with an incredible quantity of pits. Judging from the closest of them, the pits are bottomless"
+       RTRUE   
+?CCL3: PRINTI  "has a large number of bottomless pits, all of which have been filled in"
+       FSET?   HERE,TOUCHBIT \?CCL6
+       PRINTI  ", except one."
+       JUMP    ?CND4
+?CCL6: PRINTI  " -- no, wait! It seems that one pit did not become filled in!"
+?CND4: PRINTI  " The open pit seems to have handholds leading downward"
+       RTRUE   
+
+
+       .FUNCT  PIT-ENTER-F,RARG
+       FSET?   LANTERN,TRYTAKEBIT \?CCL3
+       ZERO?   RARG \FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "Entering a bottomless pit means certain death!"
+       CRLF    
+       RFALSE  
+?CCL3: RETURN  LEDGE-IN-PIT
+
+
+       .FUNCT  PITS-OBJECT-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       EQUAL?  HERE,PITS \?CCL3
+       PRINTI  "The floor "
+       ICALL1  D-PITS-FLOOR
+       PRINT   PERIOD-CR
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL7
+       PRINTR  "The pit looks bottomless."
+?CCL7: EQUAL?  PRSA,V?PUT,V?THROW \?CCL9
+       EQUAL?  P-PRSA-WORD,W?THROW,W?HURL,W?TOSS /?PRD12
+       EQUAL?  P-PRSA-WORD,W?CAST \?CCL9
+?PRD12:        EQUAL?  PRSO,PIT-BOMB \?CCL9
+       ICALL   PERFORM,V?THROW,PIT-BOMB,FALSE-VALUE
+       RTRUE   
+?CCL9: EQUAL?  PRSA,V?PUT,V?THROW \?CCL16
+       EQUAL?  PRSI,PITS-OBJECT \?CCL16
+       REMOVE  PRSO
+       EQUAL?  PRSO,PERCH /?CCL20
+       CALL    ULTIMATELY-IN?,PERCH,PRSO
+       ZERO?   STACK /?CND19
+?CCL20:        SET     'REMOVED-PERCH-LOC,BROGMOID
+?CND19:        PRINTI  "Bottomless or not, the pit swallows"
+       ICALL1  TPRINT-PRSO
+       PRINTR  " forever."
+?CCL16:        EQUAL?  PRSA,V?LEAP /?CTR23
+       EQUAL?  PRSA,V?ENTER \?CCL24
+       EQUAL?  P-PRSA-WORD,W?JUMP,W?LEAP \?CCL24
+?CTR23:        CALL2   JIGS-UP,STR?407
+       RSTACK  
+?CCL24:        EQUAL?  PRSA,V?ENTER \FALSE
+       CALL2   DO-WALK,P?DOWN
+       RSTACK  
+
+       .SEGMENT "0"
+
+
+       .FUNCT  LANTERN-F
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       FSET?   LANTERN,TRYTAKEBIT \?CCL6
+       PRINTR  "You can't see much from this distance."
+?CCL6: CALL    NOUN-USED?,LANTERN,W?MONOGRAM
+       ZERO?   STACK /?CCL8
+       ICALL   PERFORM,V?READ,LANTERN
+       RTRUE   
+?CCL8: FSET?   LANTERN,LIGHTBIT /?CCL10
+       PRINTR  "The lamp is either broken or burned out."
+?CCL10:        PRINTI  "There seems to be a faint monogram engraved on it. "
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?READ \?CCL12
+       FSET?   LANTERN,TRYTAKEBIT \?CCL12
+       ICALL   PERFORM,V?EXAMINE,LANTERN
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?WALK-TO,V?TAKE \?CCL16
+       FSET?   LANTERN,TRYTAKEBIT \?CCL16
+       PRINTR  "The pits make the cavern uncrossable; ergo, you can't reach the lantern."
+?CCL16:        EQUAL?  PRSA,V?THROW-TO,V?THROW \?CCL20
+       EQUAL?  PRSI,LANTERN \?CCL20
+       FSET?   LANTERN,TRYTAKEBIT \?CCL20
+       REMOVE  PRSO
+       EQUAL?  PRSO,PERCH /?CCL25
+       CALL    ULTIMATELY-IN?,PERCH,PRSO
+       ZERO?   STACK /?CND24
+?CCL25:        SET     'REMOVED-PERCH-LOC,BROGMOID
+?CND24:        PRINTI  "Sigh. Your throw is just short of the lamp, and"
+       ICALL1  TPRINT-PRSO
+       PRINTR  " disappears into one of the pits."
+?CCL20:        EQUAL?  PRSA,V?THROW \?CCL29
+       EQUAL?  PRSO,LANTERN \?CCL29
+       ICALL2  DEQUEUE,I-LANTERN
+       FCLEAR  LANTERN,ONBIT
+       FCLEAR  LANTERN,LIGHTBIT
+       PRINTI  "The lamp smashes into the floor, breaking it."
+       CRLF    
+       CALL1   NOW-DARK?
+       RSTACK  
+?CCL29:        EQUAL?  PRSA,V?ON \FALSE
+       FSET?   LANTERN,LIGHTBIT \?CCL36
+       ICALL   QUEUE,I-LANTERN,-1
+       RFALSE  
+?CCL36:        PRINTR  "The lamp refuses to light."
+
+
+       .FUNCT  I-LANTERN
+       FSET?   LANTERN,ONBIT /?CND1
+       ICALL2  DEQUEUE,I-LANTERN
+       RFALSE  
+?CND1: DEC     'LANTERN-COUNTER
+       ZERO?   LANTERN-COUNTER \?CND3
+       FCLEAR  LANTERN,ONBIT
+       FCLEAR  LANTERN,LIGHTBIT
+?CND3: EQUAL?  LANTERN-COUNTER,200,100,50 /?PRD9
+       EQUAL?  LANTERN-COUNTER,25,0 \FALSE
+?PRD9: CALL2   VISIBLE?,LANTERN
+       ZERO?   STACK /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "   "
+       EQUAL?  LANTERN-COUNTER,200 \?CCL14
+       PRINTR  "The lamp appears a bit dimmer."
+?CCL14:        EQUAL?  LANTERN-COUNTER,100 \?CCL16
+       PRINTR  "The lamp is definitely dimmer now."
+?CCL16:        EQUAL?  LANTERN-COUNTER,50 \?CCL18
+       PRINTR  "The lamp is nearly out."
+?CCL18:        EQUAL?  LANTERN-COUNTER,25 \?CCL20
+       PRINTI  "You'd better have more light than from the "
+       ICALL2  DPRINT,LANTERN
+       PRINT   PERIOD-CR
+       RTRUE   
+?CCL20:        PRINTI  "The lantern flickers and dies."
+       CRLF    
+       CALL1   NOW-DARK?
+       RSTACK  
+
+       .ENDSEG
+
+       .SEGMENT "LOWER"
+
+
+       .FUNCT  LEDGE-IN-PIT-PS
+       EQUAL?  PRSA,V?EXIT \FALSE
+       CALL1   V-WALK-AROUND
+       RSTACK  
+
+
+       .FUNCT  UNDER-THE-WORLD-F,RARG
+       EQUAL?  RARG,M-ENTER \FALSE
+       ZERO?   ALLIGATOR /?CCL6
+       ICALL1  RETURN-FROM-MAP
+       CALL2   JIGS-UP,STR?418
+       RSTACK  
+?CCL6: FSET?   UNDER-THE-WORLD,TOUCHBIT /FALSE
+       ICALL1  RETURN-FROM-MAP
+       PRINTI  "The well suddenly opens onto a vast abyss! You grab onto a few protruding roots, preventing a terrible fall..."
+       CRLF    
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  ROOTS-F
+       EQUAL?  HERE,OUTER-BAILEY \?CCL3
+       CALL2   PERFORM-PRSA,TREE-STUMP
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?TELL,V?LISTEN \FALSE
+       ZERO?   PLANT-TALKER /FALSE
+       PRINTR  "It is as unlikely for these roots to speak as it is for your toes to begin conversing with each other."
+
+
+       .FUNCT  EAR-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You are sitting in one of the folds of a giant ear belonging to the giant brogmoid who is holding up the world. A wide channel leading deeper into the ear is blocked by a virtual forest of ear fungus"
+       ZERO?   EAR-PASSAGE-OPEN /?CND4
+       PRINTI  ", except for a small tunnel through the fungus which leads farther in"
+?CND4: PRINTI  ". The only exit is down."
+       RTRUE   
+
+
+       .FUNCT  EAR-FUNGUS-F,ARG
+       EQUAL?  ARG,M-WINNER \?CCL3
+       CALL1   PLANT-STUNNED
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?PUSH,V?CLEAN,V?MOVE /?CTR4
+       EQUAL?  PRSA,V?MUNG,V?KICK \?CCL5
+?CTR4: PRINTR  "The fungi wall doesn't budge."
+?CCL5: EQUAL?  PRSA,V?LISTEN \FALSE
+       ZERO?   PLANT-TALKER /FALSE
+       EQUAL?  FUNGUS-NUMBER,12 \?CND12
+       RANDOM  12
+       SUB     STACK,1 >FUNGUS-NUMBER
+?CND12:        PRINTI  "You hear a vast murmur of fungi, discussing such topics as the woeful lack of moisture within this ear"
+       ZERO?   EAR-PASSAGE-OPEN \?CND14
+       PRINTI  ". One conversation catches your attention: a family of fungi bewailing their long lost cousin, "
+       GET     FUNGUS-TABLE,FUNGUS-NUMBER
+       PRINT   STACK
+?CND14:        PRINT   PERIOD-CR
+       RTRUE   
+
+
+       .FUNCT  G-FUNGUS-F,STR,LEN
+       EQUAL?  PRSA,V?RESEARCH \FALSE
+       RETURN  EAR-FUNGUS
+
+
+       .FUNCT  BROGMOID-F
+       EQUAL?  PRSA,V?WALK-TO,V?ENTER \?CCL3
+       EQUAL?  HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS \?CCL6
+       CALL2   DO-WALK,P?EAST
+       RSTACK  
+?CCL6: EQUAL?  HERE,SHOULDER \?CCL8
+       CALL2   DO-WALK,P?UP
+       RSTACK  
+?CCL8: CALL2   DO-WALK,P?IN
+       RSTACK  
+?CCL3: CALL2   TOUCHING?,BROGMOID
+       ZERO?   STACK /?CCL10
+       EQUAL?  HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS \?CCL10
+       CALL2   CANT-REACH,BROGMOID
+       RSTACK  
+?CCL10:        EQUAL?  PRSA,V?EXAMINE \?CCL14
+       EQUAL?  HERE,ON-TOP-OF-THE-WORLD \?CCL17
+       PRINTR  "Most of the brogmoid is lost in the mists which stretch above the world."
+?CCL17:        PRINTR  "The brogmoid is fairly ordinary, other than the fact that it's about a zillion times as large as any brogmoid you've ever seen before."
+?CCL14:        EQUAL?  PRSA,V?CLEAN \?CCL19
+       CALL    NOUN-USED?,BROGMOID,W?EAR
+       ZERO?   STACK /?CCL19
+       ICALL   PERFORM,V?CLEAN,EAR-FUNGUS
+       RTRUE   
+?CCL19:        EQUAL?  PRSA,V?RESEARCH \FALSE
+       CALL    NOUN-USED?,BROGMOID,W?BROGMOID,W?BROGMOIDS
+       ZERO?   STACK /FALSE
+       PRINTR  """In rare cases, these squat creatures can achieve the intelligence levels of a three-year-old human. Domesticated brogmoids are tame and can even be taught to perform simple tasks. In the wild, they can be seen in huge packs sorting through rock piles for edible rocks. (See also BROGMOIDISM.)"""
+
+       .ENDSEG
+
+       .ENDI
diff --git a/castle.zil b/castle.zil
new file mode 100644 (file)
index 0000000..53a62bf
--- /dev/null
@@ -0,0 +1,4823 @@
+"CASTLE for
+
+                              ZORK ZERO
+       (c) Copyright 1988 Infocom, Inc.  All Rights Reserved."
+
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM GREAT-HALL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Great Hall")
+      (LDESC
+"This is the huge central chamber of Dimwit's castle. The ceiling was
+lowered at some point in the past, which helped reduce the frequency of
+storm clouds forming in the upper regions of the hall. Arched openings
+lead off in the four cardinal directions. A wide stair leads up to the
+balcony, and an equally wide but ominously dark stair leads downward.")
+      (NORTH TO ENTRANCE-HALL)
+      (SOUTH TO AUDIENCE-CHAMBER)
+      (EAST TO COURTYARD)
+      (WEST TO FORMAL-GARDEN)
+      (UP TO BALCONY)
+      (DOWN PER LOWER-HALL-ENTER-F)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL STAIRS BANNER)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-5>)>
+
+<ROUTINE LOWER-HALL-ENTER-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
+        <COND (<OR <FSET? ,OUTER-GATE ,OPENBIT>
+                   ,TIME-STOPPED>
+               <COND (<NOT .RARG>
+                      <RETURN-FROM-MAP>
+                      <TELL
+"Near the bottom of the flight, the steps are blocked by
+newly-fallen rubble!" CR>)>
+               <RFALSE>)
+              (T
+               ,LOWER-HALL)>>
+
+<OBJECT CALENDAR
+       (DESC "calendar")
+       (LDESC "A calendar for 883 GUE is lying here.")
+       (SYNONYM CALENDAR)
+       (FLAGS READBIT TAKEBIT)
+       (SIZE 3)
+       (TEXT
+"[This is the \"Lives of the Twelve Flatheads Calendar\" which you can find
+in your Zork Zero package.]")>
+
+<OBJECT CALENDAR-ITEMS ;"vocab. for items in calendar pics but not in game"
+       (LOC GENERIC-OBJECTS)
+       (DESC "it")
+       (SYNONYM POISON AX AXE COBRA SKULL KNIFE DAGGER TROPHY
+                STICK BALL HELMET EPAULET EPAULETTE MEDAL TEMPLATE PENCIL
+                TRIANGLE CRAYON COMPASS ELEPHANT VOLCANO BRUSH AVOCADO INKWELL
+                RAVEN STAMP CIGAR BURNER CELERY MATCH BOWTIE)
+       (ADJECTIVE HOCKEY RUBBER BUNSEN)>
+
+<OBJECT LOCKET-MOOSE
+       (LOC GENERIC-OBJECTS)
+       (DESC "it")
+       (SYNONYM LOCKET MOOSE)>
+
+<OBJECT PROCLAMATION
+       (DESC "proclamation")
+       (FDESC "A proclamation hangs on the wall.")
+       (OWNER WALL)
+       (SYNONYM PROCLAMATION DECREE)
+       (FLAGS READBIT TAKEBIT BURNBIT TRYTAKEBIT)
+       (SIZE 2)
+       (TEXT
+"\"The one who can stop the Curse of Megaboz, and save the land from
+destruction, shall be rewarded with half the wealth of the Empire.|
+   (signed) Wurb Flathead|
+            King of Quendor|
+           Protector of the Empire|
+            Ruler of all the Known Lands\"")
+       (ACTION PROCLAMATION-F)>
+
+;<BEGIN-SEGMENT 0>
+
+<ROUTINE PROCLAMATION-F ()
+        <COND (<AND <VERB? TAKE>
+                    <FSET? ,PROCLAMATION ,TRYTAKEBIT>>
+               <COND (<EQUAL? <ITAKE T> ,M-FATAL>
+                      <RTRUE>)
+                     (T
+                      <PUTP ,PROCLAMATION ,P?ACTION <>>
+                      <PUTP ,PROCLAMATION ,P?OWNER <>>
+                      <FCLEAR ,PROCLAMATION ,TRYTAKEBIT>
+                      <TELL "You rip the decree from the wall." CR>)>)>>
+
+;<END-SEGMENT>
+
+;<BEGIN-SEGMENT CASTLE>
+
+<ROOM ENTRANCE-HALL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Entrance Hall")
+      (NORTH TO INNER-BAILEY IF PORTCULLIS IS OPEN ELSE
+               "The closed portcullis covers the doorway.")
+      (SOUTH TO GREAT-HALL)
+      (EAST TO BANQUET-HALL)
+      (WEST TO PARLOR)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL PORTCULLIS)
+      (RIDDLE
+"Some say I fly, but I'm not a bird; I'm often wasted, or so I've heard.
+Though I go on endlessly, there's never enough of me! What am I?\"")
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>)
+      (ACTION ENTRANCE-HALL-F)>
+
+<ROUTINE ENTRANCE-HALL-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is where visitors enter the castle proper, through the wide
+doorway to the north. ">
+               <COND (<NOT <FSET? ,PORTCULLIS ,OPENBIT>>
+                      <TELL
+"The doorway is currently blocked by a sturdy portcullis. ">)>
+               <TELL
+"Oddly, there is a doorbell on the inside of the doorway. Other doorways
+lead east, west, and south.">)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <IN? ,JESTER ,HERE>
+                    <NOT <FSET? ,PORTCULLIS ,OPENBIT>>>
+               <SETUP-ORPHAN "answer">)>>
+
+<OBJECT TIME-OBJECT
+       (LOC GLOBAL-OBJECTS)
+       (DESC "time")
+       (SYNONYM TIME)
+       (FLAGS NARTICLEBIT)>
+
+<OBJECT DOORBELL
+       (LOC ENTRANCE-HALL)
+       (DESC "doorbell")
+       (SYNONYM DOORBELL BELL)
+       (ADJECTIVE DOOR)
+       (FLAGS NDESCBIT)
+       (GENERIC G-HAT-F) ;"jester's hat has synonym BELL"
+       (ACTION DOORBELL-F)>
+
+<ROUTINE DOORBELL-F ()
+        <COND (<VERB? PUSH TOUCH>
+               <TELL "\"Ding, dong!\"" CR>
+               <COND (<NOT <IN? ,JESTER ,HERE>>
+                      <SETG DO-J T>
+                      <I-JESTER T>)>
+               <RTRUE>)>>
+
+<OBJECT PORTCULLIS
+       (LOC LOCAL-GLOBALS)
+       (DESC "portcullis")
+       (SYNONYM PORTCULLIS)
+       (ADJECTIVE STURDY HEAVY IRON)
+       (FLAGS DOORBIT)
+       (ACTION PORTCULLIS-F)>
+
+<ROUTINE PORTCULLIS-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The portcullis, which is a heavy iron latticework used to block this
+entrance doorway, is ">
+               <OPEN-CLOSED ,PORTCULLIS>
+               <TELL ,PERIOD-CR>)
+              (<AND <VERB? OPEN>
+                    <NOT <FSET? ,PORTCULLIS ,OPENBIT>>>
+               <TELL
+"You try to lift the portcullis, but with no effect (aside from nearly
+breaking your back)." CR>)
+              (<AND <VERB? CLOSE>
+                    <FSET? ,PORTCULLIS ,OPENBIT>>
+               <TELL ,WONT-BUDGE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT VILLAGE>
+
+<OBJECT MOAT
+       (LOC LOCAL-GLOBALS)
+       (DESC "moat")
+       (SYNONYM MOAT)
+       (FLAGS WATERBIT)
+       (ACTION MOAT-F)>
+
+<ROUTINE MOAT-F ()
+        <COND (<AND <TOUCHING? ,MOAT>
+                    <EQUAL? ,HERE ,PARAPET ,UPPER-BARBICAN>>
+               <CANT-REACH ,MOAT>)>>
+
+<ROOM INNER-BAILEY
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Inner Bailey")
+      (LDESC
+"You are on a narrow grassy strip between the castle (which can be entered
+to the south) and the moat. A young elm grows by the side of the moat. A
+causeway leads out into the moat to the northwest.")
+      (SOUTH TO ENTRANCE-HALL IF PORTCULLIS IS OPEN)
+      (NW TO CAUSEWAY)
+      (FLAGS RLANDBIT OUTSIDEBIT ONBIT)
+      (SYNONYM BAILEY)
+      (ADJECTIVE INNER)
+      (GLOBAL PORTCULLIS MOAT CAUSEWAY)
+      (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-6>)
+      (ICON INNER-BAILEY-ICON)
+      (ACTION INNER-BAILEY-F)>
+
+<ROUTINE INNER-BAILEY-F ("OPT" (RARG <>))
+        <COND (<AND ,DEMO-VERSION? <EQUAL? .RARG ,M-END>>
+               <END-DEMO>)>>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT WORM
+       (LOC INNER-BAILEY)
+       (DESC "worm")
+       (FDESC "A common earthworm is wriggling through the grass.")
+       (SYNONYM WORM EARTHWORM PIECE RUBBER)
+       (ADJECTIVE COMMON)
+       (FLAGS TAKEBIT ANIMATEDBIT)
+       (INANIMATE-DESC "piece of rubber")
+       (WAND-TEXT "Instantly, the worm stops wriggling.")
+       (ANIMATE-ROUTINE I-W-WORM)
+       (SIZE 1)
+       (ACTION WORM-F)>
+
+<ROUTINE WORM-F ()
+        <COND (<VERB? EAT>
+               <COND (<EQUAL? ,TURNED-INTO ,ROOSTER>
+                      <GOOD-MEAL ,WORM>)
+                     (T
+                      <TELL "Yukko!" CR>)>)
+              (<AND <VERB? RESEARCH>
+                    <NOUN-USED? ,WORM ,W?WORM ,W?EARTHWORM>>
+               <TELL "\"A low form of ground-dwelling animal life.\"" CR>)>>
+
+<ROUTINE I-W-WORM ("AUX" (L <LOC ,WORM>))
+        <FSET ,WORM ,ANIMATEDBIT>
+        <COND (<IN? ,WORM ,LAKE-BOTTOM>
+               <REMOVE ,WORM>)
+              (<EQUAL? <META-LOC ,WORM> ,HERE>
+               <RETURN-FROM-MAP>
+               <TELL "   The worm ">
+               <COND (<AND <NOT <EQUAL? .L ,PROTAGONIST ,HERE>>
+                           <NOT <FSET? .L ,DROPBIT>>>
+                      <MOVE ,WORM ,HERE>
+                      <FSET .L ,OPENBIT>
+                      <TELL "wriggles out of" T .L>)
+                     (T
+                      <TELL "has resumed wriggling">)>
+               <TELL ,PERIOD-CR>)
+              (T
+               <MOVE ,WORM <META-LOC ,WORM>>
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT VILLAGE>
+
+<OBJECT SMALL-ELM
+       (LOC INNER-BAILEY)
+       (DESC "small elm tree")
+       (SYNONYM TREE ELM)
+       (ADJECTIVE YOUNG SMALL ELM)
+       (FLAGS NDESCBIT PLANTBIT)
+       (ACTION TREE-F)>
+
+<ROUTINE TREE-F ("OPTIONAL" (ARG <>))
+        <COND (<EQUAL? .ARG ,M-WINNER>
+               <PLANT-STUNNED>)
+              (<VERB? GET-NEAR>
+               <TELL "You are now standing at the base of the tree." CR>)
+              (<AND <VERB? LISTEN>
+                    ,PLANT-TALKER>
+               <COND (<PRSO? ,MIGHTY-ELM>
+                      <TELL
+"The mighty elm rumbles in a voice that bespeaks great age and weariness. It
+seems to be pining for its simple, happier, younger days. Most particularly,
+it seems to be fondly recalling a playful squirrel named \"Rosebud.\"" CR>)
+                     (<PRSO? ,SMALL-ELM>
+                      <TELL
+"The little elm's roots have, apparently, just reached down to a particularly
+yummy patch of decayed mulch, and the young elm is humming rhapsodically about
+the yumminess of the minerals therein." CR>)
+                     (T
+                      <TELL
+"The two elms are exchanging off-color jokes, most of which seem to involve
+various methods of pollen transfer." CR>)>)
+              (<VERB? CLIMB CLIMB-UP>
+               <COND (<PRSO? ,SMALL-ELM>
+                      <TELL
+"Your weight is too much for this little tree." CR>)
+                     (T
+                      <TELL ,POORLY-CONFIGURED>)>)
+              (<AND <VERB? LISTEN>
+                    ,PLANT-TALKER>
+               <TELL
+"The tree's speech is very childlike and difficult to understand, but it
+seems to be fantasizing about the day when it will be tall enough to see
+over the castle walls." CR>)
+              (<VERB? MEASURE>
+               <TELL "You can">
+               <COND (<PRSO? ,MIGHTY-ELM>
+                      <TELL "'t come close to getting">)
+                     (T
+                      <COND (<PRSO? ,SMALL-ELM>
+                             <TELL " easily">)
+                            (T
+                             <TELL " just barely">)>
+                      <TELL " get">)>
+               <TELL " your arms around the tree." CR>)>>
+
+<ROOM CAUSEWAY
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Causeway")
+      (LDESC
+"You are on a peninsula of dirt and gravel which extends into the moat from
+the southeast. A tall barbican towers over the end of the causeway, to the
+northwest.")
+      (SE TO INNER-BAILEY)
+      (NW TO BARBICAN)
+      (FLAGS RLANDBIT OUTSIDEBIT ONBIT)
+      (SYNONYM CAUSEWAY)
+      (GLOBAL MOAT BARBICAN)
+      (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>)
+      (ICON CAUSEWAY-ICON)>
+
+<ROOM BARBICAN
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Barbican")
+      (NW TO DRAWBRIDGE IF DRAWBRIDGE IS OPEN)
+      (SE TO CAUSEWAY)
+      (UP TO UPPER-BARBICAN)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM BARBICAN TOWER GATE-TOWER)
+      (ADJECTIVE TALL LOWER)
+      (GLOBAL MOAT DRAWBRIDGE FIXED-LADDER UPPER-BARBICAN)
+      (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>)
+      (ICON BARBICAN-ICON)
+      (ACTION BARBICAN-F)>
+
+<ROUTINE BARBICAN-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This dimly lit room is the bottom level of the gate-tower which guards the
+castle's drawbridge. It lies at the tip of a peninsula into the moat; the rest
+of the peninsula is to the southeast. A drawbridge to the northwest is ">
+               <OPEN-CLOSED ,DRAWBRIDGE>
+               <TELL ", and a ladder leads to an upper level.">)>>
+
+<ROOM UPPER-BARBICAN
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Upper Barbican")
+      (LDESC
+"This upper level is key to defending the outer perimeter of the castle, with
+its commanding view of the causeway, moat and baileys. The floor is filled
+with \"murder holes\" for dropping heavy cannonballs onto unwanted visitors
+who penetrate as far as the barbican's lower level, just below. A large cast
+iron wheel is mounted in the center of the room. The only exit is a ladder
+leading down.")
+      (DOWN TO BARBICAN)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM BARBICAN TOWER)
+      (ADJECTIVE UPPER)
+      (GLOBAL FIXED-LADDER MOAT)
+      (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>)
+      (ICON UPPER-BARBICAN-ICON)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT CANNONBALL
+       (LOC UPPER-BARBICAN)
+       (DESC "cannonball")
+       (SYNONYM CANNONBALL BALL)
+       (ADJECTIVE HEAVY)
+       (FLAGS TAKEBIT)
+       (SIZE 50)
+       (ACTION CANNONBALL-F)>
+
+<ROUTINE CANNONBALL-F ()
+        <COND (<AND <VERB? PUT-ON>
+                    <EQUAL? ,P-PRSA-WORD ,W?DROP>
+                    <PRSO? ,CANNONBALL>>
+               <MOVE ,CANNONBALL ,HERE>
+               <COND (<FSET? ,PRSI ,PARTBIT>
+                      <TELL "Ouch!!!" CR>)
+                     (<G? <GETP ,PRSI ,P?SIZE> 10>
+                      <TELL "This has no effect." CR>)
+                     (T
+                      <TELL "Miraculously," T ,PRSI " survives." CR>)>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT VILLAGE>
+
+<OBJECT MURDER-HOLE
+       (LOC UPPER-BARBICAN)
+       (DESC "murder hole")
+       (SYNONYM HOLE)
+       (ADJECTIVE MURDER)
+       (FLAGS NDESCBIT)
+       (ACTION MURDER-HOLE-F)>
+
+<ROUTINE MURDER-HOLE-F ("AUX" TAKER)
+        <COND (<VERB? LOOK-INSIDE>
+               <TELL "You can just make out the barbican below." CR>)
+              (<VERB? REACH-IN>
+               <TELL ,NOTHING-IN-REACH>)
+              (<AND <VERB? PUT PUT-THROUGH>
+                    <PRSI? ,MURDER-HOLE>>
+               <COND (<AND <PRSO? ,CANNONBALL>
+                           <VISIBLE? ,CANDLE>
+                           <FSET? ,CANDLE ,ONBIT>>
+                      <COND (<NOT <ULTIMATELY-IN? ,CANDLE>>
+                             <MOVE ,CANDLE ,PROTAGONIST>)>
+                      <TELL
+"As you drop the cannonball through the murder hole, you hear a sickening
+\"splat,\" followed by a woman's scream!|
+   \"Emily, what is it!\"|
+   \"It's Victor -- he's been murdered!\"|
+   \"I'll summon the Inspector! Ah, here he is now!\" You hear whispered
+questions and answers from the room below, followed by footsteps on the
+stairs. The jester enters, wearing a trenchcoat and smoking a large pipe.|
+   \"I'm afraid I'm going to have to order Sgt. Duffy to place you under
+arrest, sir.\" You grow dizzy with confusion, and your surroundings swirl
+wildly about you" ,ELLIPSIS>
+                      <GOTO ,DUNGEON>)
+                     (T
+                      <TELL "You hear a \"thunk\" from down below." CR>)>
+               <COND (<OR <SET TAKER <FIND-IN ,BARBICAN ,WHITEBIT>>
+                          <SET TAKER <FIND-IN ,BARBICAN ,BLACKBIT>>>
+                      <MOVE ,PRSO .TAKER>
+                      <COND (<PRSO? ,PIGEON>
+                             <MOVE-TO-PERCH .TAKER>)>)
+                     (T
+                      <MOVE ,PRSO ,BARBICAN>)>
+               <RTRUE>)>>
+
+<OBJECT WHEEL
+       (LOC UPPER-BARBICAN)
+       (DESC "wheel")
+       (SYNONYM WHEEL)
+       (ADJECTIVE LARGE CAST IRON)
+       (FLAGS NDESCBIT)
+       (ACTION WHEEL-F)>
+
+<ROUTINE WHEEL-F ()
+        <COND (<VERB? SET SET-DIR>
+               <COND (<FSET? ,DRAWBRIDGE ,OPENBIT>
+                      <FCLEAR ,DRAWBRIDGE ,OPENBIT>)
+                     (T
+                      <FSET ,DRAWBRIDGE ,OPENBIT>)>
+               <FSET ,BARBICAN ,REDESCBIT>
+               <TELL "You hear a clattering clanking noise from below." CR>
+               <ROB ,DRAWBRIDGE ,BARBICAN>
+               <RTRUE>)>>
+
+<ROOM DRAWBRIDGE
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Drawbridge")
+      (SE TO BARBICAN)
+      (NW TO OUTER-BAILEY)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (SYNONYM BRIDGE DRAWBRIDGE)
+      (ADJECTIVE DRAW STURDY WOODEN)
+      (GLOBAL DRAWBRIDGE MOAT)
+      (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-3>)
+      (ICON DRAWBRIDGE-ICON)
+      (ACTION DRAWBRIDGE-F)>
+
+<ROUTINE DRAWBRIDGE-F ("OPTIONAL" RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You are standing on a sturdy wooden drawbridge across a moat. ">
+               <COND (<NOT ,TIME-STOPPED>
+                      <TELL
+"The surface of the moat roils from the thrashing of countless
+ravenous beasts. ">)>
+               <TELL
+"The drawbridge runs from a tall barbican at the southeast to a wide meadow
+at the northwest.">)
+              (.RARG
+               <RFALSE>)
+              (<VERB? EXAMINE>
+               <TELL "The drawbridge is ">
+               <OPEN-CLOSED ,DRAWBRIDGE>
+               <TELL ,PERIOD-CR>)
+              (<OR <AND <VERB? OPEN LOWER>
+                        <NOT <FSET? ,DRAWBRIDGE ,OPENBIT>>>
+                   <AND <VERB? CLOSE RAISE>
+                        <FSET? ,DRAWBRIDGE ,OPENBIT>>>
+               <TELL "There's no apparent way to do that." CR>)>>
+
+<END-SEGMENT>
+\\f
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM PARLOR
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Parlor")
+      (LDESC
+"This is where many of Dimwit's guests would come and sit after dinner,
+for wine, conversation, and any other whim that might pop into Dimwit's
+head. There are doorways to the east, west and south.")
+      (EAST TO ENTRANCE-HALL)
+      (SOUTH TO FORMAL-GARDEN)
+      (WEST TO TORCH-ROOM)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM PARLOR)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-4>)
+      (ICON PARLOR-ICON)
+      (ACTION PARLOR-F)>
+
+<ROUTINE PARLOR-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-ENTER> ;"spenseweed shared with Lake Bottom"
+               <MOVE ,SPENSEWEED ,FISH-TANK>
+               <FCLEAR ,SPENSEWEED ,NDESCBIT>)>> 
+
+<OBJECT FISH-TANK
+       (LOC PARLOR)
+       (DESC "fish tank")
+       (SYNONYM TANK AQUARIUM)
+       (ADJECTIVE FISH)
+       (CAPACITY 50)
+       (FLAGS CONTBIT SEARCHBIT OPENBIT TRYTAKEBIT WATERBIT)
+       (ACTION FISH-TANK-F)>
+
+<GLOBAL DESCRIBED-TANK-AS-LARGE <>>
+
+<GLOBAL DESCRIBED-TANK-AS-SMALL <>>
+
+<ROUTINE FISH-TANK-F ()
+        <COND (<AND <VERB? TAKE>
+                    <PRSO? ,FISH-TANK>>
+               <COND (,DESCRIBED-TANK-AS-SMALL
+                      <TELL
+"The fish tank is much too large to carry! [Okay, I was exaggerating
+when I called the tank \"itsy-bitsy.\"]" CR>)
+                     (T
+                      <SETG DESCRIBED-TANK-AS-LARGE T>
+                      <TELL
+"This tank is bigger than a lot of swimming pools!" CR>)>)
+              (<AND <PRSO? ,FOX ,ROOSTER ,FLAMINGO>
+                    <FSET? ,PRSO ,ANIMATEDBIT>>
+               <TELL
+"The " D ,PRSO " raises such a fuss that it becomes impossible." CR>)>>
+
+<OBJECT SPENSEWEED
+       (OWNER SPENSEWEED)
+       (LOC FISH-TANK)
+       (DESC "clump of spenseweed")
+       (SYNONYM CLUMP SPENSEWEED WEED)
+       (ADJECTIVE SPENSE)
+       (FLAGS TRYTAKEBIT PLANTBIT)
+       (RESEARCH
+"\"A deep-rooting underwater plant. Once established, it can usually only be
+removed by using certain spells of wilting. The misconception that spenseweed
+is a common roadside weed has been perpetuated by grossly inaccurate entries
+in the last several editions of THE LORE AND LEGENDS OF QUENDOR.\"")
+       (ACTION SPENSEWEED-F)>
+
+<ROUTINE SPENSEWEED-F ("OPTIONAL" (ARG <>))
+        <COND (<EQUAL? .ARG ,M-WINNER>
+               <PLANT-STUNNED>)
+              (<AND <IN? ,PROTAGONIST ,DB>
+                    <TOUCHING? ,SPENSEWEED>>
+               <CANT-REACH ,SPENSEWEED>)
+              (<AND <VERB? TAKE DIG>
+                    <PRSO? ,SPENSEWEED>>
+               <TELL ,DEEPLY-ROOTED>)
+              (<AND <VERB? LISTEN>
+                    ,PLANT-TALKER>
+               <TELL
+"It's difficult to interpret the gurgly voice of the spenseweed, but it seems
+to be fretting about the possibility of plant-eating fish being introduced into
+the aquarium." CR>)>>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT LOBSTER
+       (LOC FISH-TANK)
+       (DESC "lobster")
+       (SYNONYM LOBSTER NUTCRACKER CRACKER)
+       (ADJECTIVE NUT)
+       (FLAGS TRYTAKEBIT TAKEBIT ANIMATEDBIT)
+       (INANIMATE-DESC "nutcracker")
+       (WAND-TEXT
+"The lobster stops moving. Frozen as it is, with pincers outstretched, it looks
+like nothing less than a large nutcracker. In fact, it IS a nutcracker!")
+       (ANIMATE-ROUTINE I-W-LOBSTER)
+       (ACTION LOBSTER-F)>
+
+<ROUTINE LOBSTER-F ()
+        <COND (<AND <VERB? RESEARCH>
+                    <NOUN-USED? ,LOBSTER ,W?LOBSTER>>
+               <PRINT "\"A common aquarium pet.\"">
+               <CRLF>)
+              (<AND <VERB? TAKE>
+                    <FSET? ,LOBSTER ,ANIMATEDBIT>>
+               <COND (,TIME-STOPPED
+                      <QUEUE I-LOBSTER-PINCH -1>
+                      <RFALSE>)
+                     (<FSET? ,GLOVE ,WORNBIT>
+                      <QUEUE I-LOBSTER-PINCH 2>
+                      <MOVE ,LOBSTER ,PROTAGONIST>
+                      <TELL
+"Your gloved hand moves with blazing speed, lifting the lobster and
+avoiding its snapping pincers." CR>)
+                     (T
+                      <TELL
+"The lobster snaps its pincers at you. You snatch your hand away
+just in time." CR>)>)
+              (<AND <VERB? KILL MUNG>
+                    <PRSI? ,CANNONBALL ,HAMMER>>
+               <TELL
+"You pulverize the lobster into invisible jelly. Heartless; but then again,
+I understand there are a large group of people who release boiling these
+creatures alive." CR>)
+              (<AND <VERB? EAT>
+                    <FSET? ,LOBSTER ,ANIMATEDBIT>>
+               <TELL
+"1) It's not cooked. 2) It would probably bite your nose off if you tried. 3)
+You don't have any tableware. 4) You don't have any melted butter. 5) It isn't
+kosher." CR>)>>
+
+<ROUTINE I-W-LOBSTER ()
+        <COND (,TIME-STOPPED
+               <QUEUE I-W-LOBSTER 3>
+               <RFALSE>)>
+        <FSET ,LOBSTER ,ANIMATEDBIT>
+        <COND (<IN? ,LOBSTER ,LAKE-BOTTOM>
+               <REMOVE ,LOBSTER>)
+              (<AND <IN? ,LOBSTER ,PROTAGONIST>
+                    <NOT <IN? ,LOBSTER ,WALDO>>>
+               <RETURN-FROM-MAP>
+               <TELL
+"   Youch! The nutcracker just pinched you! As you drop it, you realize that it
+has turned back into a lobster.">
+               <COND (<EQUAL? ,HERE ,HANGING-FROM-ROOTS ,UNDER-THE-WORLD>
+                      <REMOVE ,LOBSTER>
+                      <TELL " The poor creature plunges into the void.">)
+                     (T
+                      <MOVE ,LOBSTER ,HERE>)>
+               <CRLF>)
+              (<VISIBLE? ,LOBSTER>
+               <RETURN-FROM-MAP>
+               <TELL
+"   You notice the nutcracker waving its pincers. It seems that the
+nutcracker is once again a lobster." CR>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-LOBSTER-PINCH ()
+        <COND (,TIME-STOPPED
+               <RFALSE>)
+              (<NOT <FSET? ,LOBSTER ,ANIMATEDBIT>>
+               <RFALSE>)>
+        <DEQUEUE I-LOBSTER-PINCH>
+        <COND (<AND <ULTIMATELY-IN? ,LOBSTER>
+                    <NOT <IN? ,LOBSTER ,WALDO>>>
+               <RETURN-FROM-MAP>
+               <TELL
+"   Youch! The lobster gives you a painful nip, and you drop it
+like a hot potato.">
+               <COND (<EQUAL? ,HERE ,HANGING-FROM-ROOTS ,UNDER-THE-WORLD>
+                      <REMOVE ,LOBSTER>
+                      <TELL " The poor creature plunges into the void.">)
+                     (T
+                      <MOVE ,LOBSTER ,HERE>)>
+               <CRLF>)
+              (T
+               <RFALSE>)>>
+
+<OBJECT STARFISH
+       (LOC FISH-TANK)
+       (DESC "starfish")
+       (PLURAL "starfish")
+       (SYNONYM STARFISH FISH STAR)
+       (ADJECTIVE STAR)
+       (FLAGS TAKEBIT ANIMATEDBIT)
+       (INANIMATE-DESC "star")
+       (WAND-TEXT
+"The starfish, as still as it was before, becomes even more still.")
+       (ANIMATE-ROUTINE I-W-STARFISH)
+       (ACTION STARFISH-F)>
+
+<ROUTINE STARFISH-F ()
+        <COND (<AND <VERB? RESEARCH>
+                    <NOUN-USED? ,STARFISH ,W?STARFISH>>
+               <PRINT "\"A common aquarium pet.\"">
+               <CRLF>)>>
+
+<ROUTINE I-W-STARFISH ()
+        <COND (,TIME-STOPPED
+               <QUEUE I-W-STARFISH 3>
+               <RFALSE>)>
+        <FSET ,STARFISH ,ANIMATEDBIT>
+        <COND (<IN? ,STARFISH ,LAKE-BOTTOM>
+               <REMOVE ,STARFISH>)
+              (<VISIBLE? ,STARFISH>
+               <RETURN-FROM-MAP>
+               <TELL
+"   With the tiniest wiggle, the star gives evidence that it is once again
+a starfish." CR>)
+              (T
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM TORCH-ROOM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Torch Room")
+      (LDESC
+"This is a small room for the storage of torches. The torches kept here
+are generally short-lived, for the purpose of brief forays into the
+darker regions of the castle. To the east is the lone exit.")
+      (EAST TO PARLOR)
+      (OUT TO PARLOR)
+      (FLAGS RLANDBIT ONBIT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-3>)
+      (ICON TORCH-ROOM-ICON)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT BICKERING-TORCH
+       (LOC TORCH-ROOM)
+       (DESC "bickering torch")
+       (PLURAL "torches")
+       (SYNONYM TORCH TORCHES)
+       (ADJECTIVE BICKERING)
+       (FLAGS TAKEBIT TRYTAKEBIT)
+       (ACTION BICKERING-TORCH-F)>
+
+<ROUTINE BICKERING-TORCH-F ()
+        <COND (<VERB? TAKE>
+               <QUEUE I-BICKERING-TORCH -1>
+               <RFALSE>)
+              (<VERB? EXAMINE ON BURN>
+               <BURNED-OUT ,BICKERING-TORCH>)>>
+
+<ROUTINE BURNED-OUT (OBJ)
+        <TELL "The " D .OBJ " has burned out and cannot be rekindled." CR>>
+
+<ROUTINE I-BICKERING-TORCH ()
+        <COND (,TIME-STOPPED
+               <RFALSE>)
+              (<NOT <ULTIMATELY-IN? ,BICKERING-TORCH>>
+               <DEQUEUE I-BICKERING-TORCH>
+               <RFALSE>)
+              (<AND <PROB 30>
+                    <NOT <EQUAL? ,CURRENT-SPLIT ,MAP-TOP-LEFT-LOC>>>
+               <TELL
+"   The bickering torch says, \"" <PICK-ONE ,BITCHES> "\"" CR>)
+              (T
+               <RFALSE>)>>
+
+<CONSTANT BITCHES
+       <LTABLE
+        0
+        "All the other torches were picking on me."
+        "Everyone likes the flickering torch better than me."
+        "I saw the guttering torch wasting oil!"
+        "How come I didn't get made out of top-quality wood like
+the other torches?"
+        "The muttering torch was talking about burning down the castle.">>
+
+<OBJECT FLICKERING-TORCH
+       (LOC TORCH-ROOM)
+       (SDESC "flickering torch")
+       (PLURAL "torches")
+       (SYNONYM TORCH TORCHES)
+       (ADJECTIVE FLICKERING)
+       (FLAGS TAKEBIT TRYTAKEBIT FLAMEBIT ONBIT)
+       (ACTION FLICKERING-TORCH-F)>
+
+<ROUTINE FLICKERING-TORCH-F ()
+        <COND (<AND <VERB? TAKE>
+                    <FSET? ,FLICKERING-TORCH ,ONBIT>
+                    <EQUAL? ,FLICKERING-TORCH-COUNT 0>>
+               <SETG FLICKERING-TORCH-COUNT <+ <RANDOM 3> 9>>
+               <QUEUE I-FLICKERING-TORCH -1>
+               <RFALSE>)
+              (<AND <VERB? OFF>
+                    <FSET? ,FLICKERING-TORCH ,ONBIT>>
+               <FCLEAR ,FLICKERING-TORCH ,ONBIT>
+               <FCLEAR ,FLICKERING-TORCH ,FLAMEBIT>
+               <DEQUEUE I-FLICKERING-TORCH>
+               <TELL "\"Pffft.\"" CR>
+               <NOW-DARK?>)
+              (<AND <VERB? EXAMINE ON OFF BURN>
+                    <NOT <FSET? ,FLICKERING-TORCH ,ONBIT>>>
+               <BURNED-OUT ,FLICKERING-TORCH>)>>
+
+<GLOBAL FLICKERING-TORCH-COUNT 0>
+
+<ROUTINE I-FLICKERING-TORCH ()
+        <SETG FLICKERING-TORCH-COUNT <- ,FLICKERING-TORCH-COUNT 1>>
+        <COND (<NOT <FSET? ,FLICKERING-TORCH ,ONBIT>> ;"e.g. dunked in water"
+               <PUTP ,FLICKERING-TORCH ,P?SDESC "formerly flickering torch">
+               <DEQUEUE I-FLICKERING-TORCH>
+               <RFALSE>)
+              (<EQUAL? ,FLICKERING-TORCH-COUNT 0>
+               <PUTP ,FLICKERING-TORCH ,P?SDESC "formerly flickering torch">
+               <FCLEAR ,FLICKERING-TORCH ,ONBIT>
+               <FCLEAR ,FLICKERING-TORCH ,FLAMEBIT>
+               <DEQUEUE I-FLICKERING-TORCH>)>
+        <COND (<NOT <VISIBLE? ,FLICKERING-TORCH>>
+               <RFALSE>)
+              (<NOT <FSET? ,FLICKERING-TORCH ,ONBIT>>
+               <RETURN-FROM-MAP>
+               <IN-THE-SKY "flick">)
+              (<PROB 40>
+               <RETURN-FROM-MAP>
+               <TELL
+"   The flame of the flickering torch dances wildly on the
+brink of extinction." CR>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE IN-THE-SKY (STRING)
+        <TELL
+"   The " .STRING "ering torch gives its last " .STRING "er before going to
+that great Torch Room in the sky." CR>
+        <NOW-DARK?>>
+
+<OBJECT MUTTERING-TORCH
+       (LOC TORCH-ROOM)
+       (DESC "muttering torch")
+       (PLURAL "torches")
+       (SYNONYM TORCH TORCHES)
+       (ADJECTIVE MUTTERING)
+       (FLAGS TAKEBIT TRYTAKEBIT)
+       (ACTION MUTTERING-TORCH-F)>
+
+<ROUTINE MUTTERING-TORCH-F ()
+        <COND (<VERB? TAKE>
+               <QUEUE I-MUTTERING-TORCH -1>
+               <RFALSE>)               
+              (<VERB? EXAMINE ON BURN>
+               <BURNED-OUT ,MUTTERING-TORCH>)>>
+
+<ROUTINE I-MUTTERING-TORCH ()
+        <COND (,TIME-STOPPED
+               <RFALSE>)
+              (<NOT <ULTIMATELY-IN? ,MUTTERING-TORCH>>
+               <DEQUEUE I-MUTTERING-TORCH>
+               <RFALSE>)
+              (<AND <PROB 30>
+                    <NOT <EQUAL? ,CURRENT-SPLIT ,MAP-TOP-LEFT-LOC>>>
+               <TELL
+"   The muttering torch mutters something about "
+<PICK-ONE ,MUTTERS> ,PERIOD-CR>)
+              (T
+               <RFALSE>)>>
+
+<CONSTANT MUTTERS
+       <LTABLE
+        0
+        "human palm odors"
+        "the unfairness of existence as a torch"
+        "being held too tightly"
+        "the callous discarding of burned-out torches"
+        "the uncomfortableness of most sconces">>
+
+<OBJECT GUTTERING-TORCH
+       (LOC TORCH-ROOM)
+       (SDESC "guttering torch")
+       (PLURAL "torches")
+       (SYNONYM TORCH TORCHES)
+       (ADJECTIVE GUTTERING)
+       (FLAGS TAKEBIT TRYTAKEBIT ONBIT FLAMEBIT)
+       (ACTION GUTTERING-TORCH-F)>
+
+<ROUTINE GUTTERING-TORCH-F ()
+        <COND (<AND <VERB? TAKE>
+                    <FSET? ,GUTTERING-TORCH ,ONBIT>
+                    <EQUAL? ,GUTTERING-TORCH-COUNT 0>>
+               <SETG GUTTERING-TORCH-COUNT <+ <RANDOM 3> 9>>
+               <QUEUE I-GUTTERING-TORCH -1>
+               <RFALSE>)
+              (<AND <VERB? OFF>
+                    <FSET? ,GUTTERING-TORCH ,ONBIT>>
+               <FCLEAR ,GUTTERING-TORCH ,ONBIT>
+               <FCLEAR ,GUTTERING-TORCH ,FLAMEBIT>
+               <DEQUEUE I-GUTTERING-TORCH>
+               <TELL "\"Pffft.\"" CR>
+               <NOW-DARK?>)
+              (<AND <VERB? EXAMINE ON OFF BURN>
+                    <NOT <FSET? ,GUTTERING-TORCH ,ONBIT>>>
+               <BURNED-OUT ,GUTTERING-TORCH>)>>
+
+<GLOBAL GUTTERING-TORCH-COUNT 0>
+
+<ROUTINE I-GUTTERING-TORCH ()
+        <SETG GUTTERING-TORCH-COUNT <- ,GUTTERING-TORCH-COUNT 1>>
+        <COND (<NOT <FSET? ,GUTTERING-TORCH ,ONBIT>> ;"e.g. dunked in water"
+               <PUTP ,GUTTERING-TORCH ,P?SDESC "formerly guttering torch">
+               <DEQUEUE I-GUTTERING-TORCH>
+               <RFALSE>)
+              (<EQUAL? ,GUTTERING-TORCH-COUNT 0>
+               <PUTP ,GUTTERING-TORCH ,P?SDESC "formerly guttering torch">
+               <FCLEAR ,GUTTERING-TORCH ,ONBIT>
+               <FCLEAR ,GUTTERING-TORCH ,FLAMEBIT>
+               <DEQUEUE I-GUTTERING-TORCH>)>
+        <COND (<NOT <VISIBLE? ,GUTTERING-TORCH>>
+               <RFALSE>)
+              (<NOT <FSET? ,GUTTERING-TORCH ,ONBIT>>
+               <RETURN-FROM-MAP>
+               <IN-THE-SKY "gutt">)
+              (<PROB 40>
+               <RETURN-FROM-MAP>
+               <TELL
+"   The guttering torch sputters on the verge of burning out, but
+then decides to keep burning for at least another minute." CR>)
+              (T
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM FORMAL-GARDEN
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Formal Garden")
+      (LDESC
+"Dimwit designed this garden to match a fairy tale he enjoyed as a child,
+and subsequent kings added their own touches, creating a hugely confusing
+maze of flowers and shrubbery and statuary and trees and fountains and pools
+and bridges and gazebos. Now somewhat overgrown, the garden is seemingly
+endless, but you recall that the primary exits lie to the north, east, and
+southwest.")
+      (NORTH TO PARLOR)
+      (EAST TO GREAT-HALL)
+      (SW TO WEST-HALL)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (SYNONYM GARDEN)
+      (ADJECTIVE FORMAL)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>)
+      (ICON FORMAL-GARDEN-ICON)
+      (THINGS <> FLOWER GARDEN-FLOWER-PS)>
+
+<ROUTINE GARDEN-FLOWER-PS ()
+        <COND (<VERB? PICK>
+               <TELL "Ouch! Thorns!" CR>)
+              (<VERB? EXAMINE>
+               <TELL "Breathtakingly beautiful." CR>)
+              (<AND <VERB? LISTEN>
+                    ,PLANT-TALKER>
+               <PERFORM-PRSA ,FLORA>)>>
+
+<OBJECT FLORA
+       (LOC FORMAL-GARDEN)
+       (DESC "flora")
+       (SYNONYM SHRUB SHRUBS SHRUBBERY TREE FLORA PLANT PLANTS)
+       (FLAGS PLANTBIT NDESCBIT NARTICLEBIT PLURALBIT)
+       (ACTION FLORA-F)>
+
+<ROUTINE FLORA-F ("OPTIONAL" (ARG <>))
+        <COND (<EQUAL? .ARG ,M-WINNER>
+               <PLANT-STUNNED>)
+              (<VERB? EXAMINE>
+               <TELL "Breathtakingly beautiful." CR>)
+              (<AND <VERB? LISTEN>
+                    ,PLANT-TALKER>
+               <TELL
+"The many shrub and trees and flowers create a cacophony of plant-talk
+that makes it impossible to understand any of it!" CR>)>>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT FLAMINGO
+       (LOC FORMAL-GARDEN)
+       (DESC "flamingo")
+       (FDESC
+"You spot a flash of pink amongst the flora. It's a flamingo!")
+       (SYNONYM FLAMINGO BIRD ORNAMENT)
+       (ADJECTIVE LAWN)
+       (FLAGS TRYTAKEBIT TAKEBIT ANIMATEDBIT)
+       (INANIMATE-DESC "lawn ornament")
+       (WAND-TEXT "The flamingo becomes motionless.")
+       (ANIMATE-ROUTINE I-W-FLAMINGO)
+       (SIZE 10)
+       (ACTION FLAMINGO-F)>
+
+<ROUTINE FLAMINGO-F ("OPT" (ARG <>))
+        <COND (<NOT <FSET? ,FLAMINGO ,ANIMATEDBIT>>
+               <RFALSE>)
+              (<AND <VERB? RESEARCH>
+                    <NOUN-USED? ,FLAMINGO ,W?FLAMINGO>>
+               <TELL "\"A common garden animal.\"" CR>)
+              (<AND <VERB? FEED>
+                    <ULTIMATELY-IN? ,BAR-OF-FOOD>>
+               <PERFORM ,V?GIVE ,BAR-OF-FOOD ,FLAMINGO>
+               <RTRUE>)
+              (<AND <VERB? SHOW>
+                    <PRSO? ,BAR-OF-FOOD>>
+               <TELL
+"The flamingo feigns disinterest, but vast volumes of drool betray its
+true feelings." CR>)
+              (<AND <VERB? GIVE>
+                    <PRSO? ,BAR-OF-FOOD>>
+               <REMOVE ,BAR-OF-FOOD>
+               <TELL
+"The flamingo greedily snatches" T ,BAR-OF-FOOD " in its beak and
+gulps it down." CR>)
+              (,TIME-STOPPED
+               <RFALSE>)
+              (<VERB? TAKE CATCH>
+               <TELL
+"The flamingo prances away, leaving you clutching at air." CR>)
+              (<VERB? TOUCH>
+               <TELL "The bird nearly nips off a finger." CR>)>>
+
+<ROUTINE I-W-FLAMINGO ("AUX" (L <LOC ,FLAMINGO>))
+        <COND (,TIME-STOPPED
+               <QUEUE I-W-FLAMINGO 3>
+               <RFALSE>)>
+        <FSET ,FLAMINGO ,ANIMATEDBIT>
+        <COND (<IN? ,FLAMINGO ,LAKE-BOTTOM>
+               <REMOVE ,FLAMINGO>)
+              (<EQUAL? <META-LOC ,FLAMINGO> ,HERE>
+               <RETURN-FROM-MAP>
+               <TELL
+"   Based on its angry squawks, the lawn ornament has returned to
+its former state">
+               <COND (<IN? ,FLAMINGO ,FISH-TANK>
+                      <TELL
+". The flamingo sprays you with water as it leaps out of the fish tank">)
+                     (<AND <NOT <EQUAL? .L ,PROTAGONIST ,HERE>>
+                           <NOT <FSET? .L ,DROPBIT>>>
+                      <MOVE ,FLAMINGO ,HERE>
+                      <FSET .L ,OPENBIT>
+                      <TELL " and popped out of" T .L>)
+                     (<AND <ULTIMATELY-IN? ,FLAMINGO>
+                           <NOT <IN? ,FLAMINGO ,WALDO>>>
+                      <TELL
+". The flamingo gives you a vicious peck and hops to the ground">)>
+               <COND (<AND <ULTIMATELY-IN? ,FLAMINGO>
+                           <FSET? <LOC ,PROTAGONIST> ,DROPBIT>>
+                      <MOVE ,FLAMINGO <LOC ,PROTAGONIST>>)
+                     (<NOT <FSET? <LOC ,FLAMINGO> ,DROPBIT>>
+                      <MOVE ,FLAMINGO ,HERE>)>
+               <TELL ,PERIOD-CR>)
+              (T
+               <COND (<AND <ULTIMATELY-IN? ,FLAMINGO>
+                           <FSET? <LOC ,PROTAGONIST> ,DROPBIT>>
+                      <MOVE ,FLAMINGO <LOC ,PROTAGONIST>>)
+                     (<NOT <FSET? <LOC ,FLAMINGO> ,DROPBIT>>
+                      <MOVE ,FLAMINGO <META-LOC ,FLAMINGO>>)>
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT CASTLE> 
+
+<ROOM COURTYARD
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Courtyard")
+      (NORTH TO BANQUET-HALL)
+      (WEST TO GREAT-HALL)
+      (SE TO EAST-HALL)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (SYNONYM COURTYARD)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-6>)
+      (ACTION COURTYARD-F)>
+
+<ROUTINE COURTYARD-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This open area is paved with marble and surrounded by imposing stone walls. ">
+               <COND (<RUNNING? ,I-PROLOGUE>
+                      <TELL
+"Servants are cleaning up after a tremendous carnival">)
+                     (T
+                      <TELL
+"Dimwit would occasionally order carnivals to be set up in this court,
+on totally cloudless days">)>
+               <TELL
+". At the distant edges of the courtyard, you can see exits to the north,
+west, and southeast.">)>>
+
+<ROOM BALCONY
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Balcony")
+      (LDESC
+"This wide balcony, itself larger than most castles, overlooks the Great
+Hall. Banners and pennants are draped from the railing into the hall below,
+which can be reached via the wide stair. A passage leads off to the south.")
+      (DOWN TO GREAT-HALL)
+      (SOUTH TO GALLERY)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM BALCONY)
+      (GLOBAL STAIRS BANNER)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>)
+      (ICON BALCONY-ICON)>
+
+<OBJECT BANNER
+        (LOC LOCAL-GLOBALS)
+        (DESC "banner")
+        (SYNONYM BANNER BANNERS PENNANT PENNANTS)
+        (ADJECTIVE COLORFUL)
+        (ACTION BANNER-F)>
+
+<ROUTINE BANNER-F ()
+        <COND (<VERB? READ EXAMINE>
+               <TELL
+"These colorful banners display various royal crests and insignias." CR>)
+              (<VERB? CLIMB-DOWN>
+               <TELL
+"Okay, but for future reference, the stairs are easier" ,ELLIPSIS>
+               <GOTO ,GREAT-HALL>)>>
+
+<ROOM GALLERY
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Gallery")
+      (LDESC
+"Twelve large paintings cover the walls of this long, tall room. The main
+exit is north, but there's also a small opening to the south.")
+      (NORTH TO BALCONY)
+      (SOUTH TO CLOSET)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM GALLERY)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>)
+      (ICON GALLERY-ICON)>
+
+<OBJECT REBUS
+       (LOC GALLERY)
+       (DESC "rebus")
+       (DESCFCN REBUS-F)
+       (SYNONYM REBUS)
+       (ADJECTIVE LARGE FRAMED)
+       (FLAGS READBIT SEARCHBIT CONTBIT SURFACEBIT OPENBIT)
+       (OWNER WALL)
+       (RESEARCH
+"\"A rebus is an illustration whose component pictures spell out a word
+or words, usually through the addition and subtraction of sounds or letters.
+The most famous creator of rebuses was Frobesius Fublius.\"")
+       (ACTION REBUS-F)>
+
+<ROUTINE REBUS-F ("OPTIONAL" (OARG <>) "AUX" CNT)
+        <SET CNT <CCOUNT ,REBUS>>
+        <COND (.OARG
+               <COND (<EQUAL? .OARG ,M-OBJDESC?>
+                      <RTRUE>)>
+               <TELL
+"   A large framed rebus occupies a central position at the far end of
+the gallery. It appears to have been recently hung.">
+               <COND (<G? .CNT 0>
+                      <TELL " The rebus is ">
+                      <COND (<G? .CNT 3>
+                             <TELL "mostly">)
+                            (T
+                             <TELL "partially">)>
+                      <TELL " obscured by a">
+                      <COND (<EQUAL? .CNT 1>
+                             <TELL
+"n animal -- or a representation of an animal">)
+                            (T
+                             <TELL
+" number of animals -- or representations of animals">)>
+                      <TELL " -- which appear">
+                      <COND (<EQUAL? .CNT 1>
+                             <TELL "s">)>
+                      <TELL " to be magically layered onto its surface:">
+                      <FCLEAR ,REBUS-CAMEL ,NDESCBIT>
+                      <FCLEAR ,REBUS-MOUSE ,NDESCBIT>
+                      <FCLEAR ,REBUS-GOOSE ,NDESCBIT>
+                      <FCLEAR ,REBUS-SNAKE ,NDESCBIT>
+                      <FCLEAR ,REBUS-FISH ,NDESCBIT>
+                      <FCLEAR ,REBUS-SLIME-MONSTER ,NDESCBIT>
+                      <D-CONTENTS ,REBUS 2>
+                      <FSET ,REBUS-CAMEL ,NDESCBIT>
+                      <FSET ,REBUS-MOUSE ,NDESCBIT>
+                      <FSET ,REBUS-GOOSE ,NDESCBIT>
+                      <FSET ,REBUS-SNAKE ,NDESCBIT>
+                      <FSET ,REBUS-FISH ,NDESCBIT>
+                      <FSET ,REBUS-SLIME-MONSTER ,NDESCBIT>)>
+               <RTRUE>)
+              (<VERB? OPEN CLOSE>
+               <TELL ,HUH>)
+              (<AND <VERB? PUT PUT-ON>
+                    <PRSI? ,REBUS>>
+               <TELL ,HUH>)
+              (<VERB? READ EXAMINE>
+               <CLEAR -1>
+               <SCREEN ,S-FULL>
+               <DISPLAY <COND (<IN? ,REBUS-MOUSE ,REBUS> ,REBUS-6)
+                              (<IN? ,REBUS-GOOSE ,REBUS> ,REBUS-5)
+                              (<IN? ,REBUS-SLIME-MONSTER ,REBUS> ,REBUS-4)
+                              (<IN? ,REBUS-CAMEL ,REBUS> ,REBUS-3)
+                              (<IN? ,REBUS-SNAKE ,REBUS> ,REBUS-2)
+                              (<IN? ,REBUS-FISH ,REBUS> ,REBUS-1)
+                              (T ,REBUS-0)> 1 1>
+               <COND (,DEMO-VERSION?
+                      <INPUT-DEMO 1>)
+                     (T
+                      <INPUT 1>)>
+               <MOUSE-INPUT?>
+               <V-$REFRESH>
+               <RTRUE>)>>
+
+<OBJECT REBUS-CAMEL
+       (LOC REBUS)
+       (DESC "flattened camel")
+       (SYNONYM CAMEL ANIMAL REPRESENTATION)
+       (ADJECTIVE FLATTENED LAYERED)
+       (FLAGS NDESCBIT)
+       (OWNER REBUS)
+       (GENERIC G-CAMEL-F)
+       (ACTION REBUS-ANIMAL-F)>
+
+<OBJECT REBUS-MOUSE
+       (LOC REBUS)
+       (DESC "flattened mouse")
+       (SYNONYM MOUSE ANIMAL REPRESENTATION)
+       (ADJECTIVE FLATTENED LAYERED)
+       (FLAGS NDESCBIT)
+       (OWNER REBUS)
+       (ACTION REBUS-ANIMAL-F)>
+
+<OBJECT REBUS-SNAKE
+       (LOC REBUS)
+       (DESC "flattened snake")
+       (SYNONYM SNAKE ANIMAL REPRESENTATION)
+       (ADJECTIVE FLATTENED LAYERED)
+       (FLAGS NDESCBIT)
+       (OWNER REBUS)
+       (ACTION REBUS-ANIMAL-F)>
+
+<OBJECT REBUS-GOOSE
+       (LOC REBUS)
+       (DESC "flattened goose")
+       (SYNONYM GOOSE ANIMAL REPRESENTATION)
+       (ADJECTIVE FLATTENED LAYERED)
+       (FLAGS NDESCBIT)
+       (OWNER REBUS)
+       (ACTION REBUS-ANIMAL-F)>
+
+<OBJECT REBUS-FISH
+       (LOC REBUS)
+       (DESC "flattened fish")
+       (SYNONYM FISH ANIMAL REPRESENTATION)
+       (ADJECTIVE FLATTENED LAYERED)
+       (FLAGS NDESCBIT)
+       (OWNER REBUS)
+       (ACTION REBUS-ANIMAL-F)>
+
+<OBJECT REBUS-SLIME-MONSTER
+       (LOC REBUS)
+       (DESC "flattened slime monster")
+       (SYNONYM MONSTER ANIMAL REPRESENTATION)
+       (ADJECTIVE SLIME FLATTENED LAYERED)
+       (FLAGS NDESCBIT)
+       (OWNER REBUS)
+       (ACTION REBUS-ANIMAL-F)>
+
+<ROUTINE REBUS-ANIMAL-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The " 'PRSO " seems to be magically flattened upon the rebus surface." CR>)
+              (<VERB? TAKE MOVE>
+               <TELL ,WONT-BUDGE>)
+              (<VERB? TOUCH>
+               <TELL "The " 'PRSO " feels cold to the touch." CR>)>>
+
+<OBJECT PAINTINGS
+       (LOC GALLERY)
+       (DESC "twelve paintings")
+       (SYNONYM PAINTINGS PORTRAITS)
+       (ADJECTIVE TWELVE FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH
+                  NINTH TENTH ELEVENTH TWELVTH)
+       (FLAGS NDESCBIT NARTICLEBIT TRYTAKEBIT)
+       (GENERIC G-PAINTING-F)
+       (OWNER WALL)
+       (ACTION PAINTINGS-F)>
+
+<ROUTINE PAINTINGS-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"These are Leonardo Flathead's famous portraits of the Twelve Flatheads,
+including his own self-portrait, which been have reproduced in many places
+[such as the \"Lives of the Twelve Flatheads Calendar\" which you'll find
+in your Zork Zero package]." CR>)
+              (<VERB? TAKE MOVE>
+               <TELL
+"The portraits are all securely fastened to the wall." CR>)
+              (<VERB? COUNT>
+               <TELL "12." CR>)>>
+
+<OBJECT BABE-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Babe Flathead")
+       (SYNONYM PAINTING PORTRAIT BABE FLATHEAD)
+       (ADJECTIVE BABE)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL BABE-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT FRANK-LLOYD-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Frank Lloyd Flathead")
+       (SYNONYM PAINTING PORTRAIT FRANK LLOYD FLATHEAD)
+       (ADJECTIVE FRANK LLOYD)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL FRANK-LLOYD-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT JOHN-PAUL-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of John Paul Flathead")
+       (SYNONYM PAINTING PORTRAIT JOHN PAUL FLATHEAD)
+       (ADJECTIVE JOHN PAUL)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL JOHN-PAUL-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT RALPH-WALDO-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Ralph Waldo Flathead")
+       (SYNONYM PAINTING PORTRAIT RALPH WALDO FLATHEAD)
+       (ADJECTIVE RALPH WALDO)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL RALPH-WALDO-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT LUCREZIA-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Lucrezia Flathead")
+       (SYNONYM PAINTING PORTRAIT LUCREZIA FLATHEAD)
+       (ADJECTIVE LUCREZIA)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL LUCREZIA-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT LEONARDO-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Leonardo Flathead")
+       (SYNONYM PAINTING PORTRAIT SELF-PORTRAIT LEONARDO FLATHEAD)
+       (ADJECTIVE LEONARDO)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL LEONARDO-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT THOMAS-ALVA-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Thomas Alva Flathead")
+       (SYNONYM PAINTING PORTRAIT THOMAS ALVA FLATHEAD)
+       (ADJECTIVE THOMAS ALVA)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL THOMAS-ALVA-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT JOHN-D-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of John D. Flathead")
+       (SYNONYM PAINTING PORTRAIT JOHN DAVISON FLATHEAD DOWN)
+       (ADJECTIVE JOHN DAVISON DOWN ;"for middle initial")
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL JOHN-D-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT JOHANN-SEBASTIAN-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Johann Sebastian Flathead")
+       (SYNONYM PAINTING PORTRAIT JOHANN SEBASTIAN FLATHEAD)
+       (ADJECTIVE JOHANN SEBASTIAN)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL JOHANN-SEBASTIAN-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT STONEWALL-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Stonewall Flathead")
+       (SYNONYM PAINTING PORTRAIT STONEWALL FLATHEAD)
+       (ADJECTIVE STONEWALL)
+       (FLAGS NDESCBIT)
+       (OWNER <TABLE (PURE LENGTH) WALL STONEWALL-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<OBJECT J-PIERPONT-PORTRAIT
+       (LOC GALLERY)
+       (OWNER <TABLE (PURE LENGTH) WALL J-PIERPONT-PORTRAIT>)
+       (DESC "portrait of J. Pierpont Flathead")
+       (SYNONYM PAINTING PORTRAIT J PIERPONT FLATHEAD)
+       (ADJECTIVE J PIERPONT)
+       (FLAGS NDESCBIT)
+       (ACTION PAINTING-F)>
+
+<OBJECT DIMWIT-PORTRAIT
+       (LOC GALLERY)
+       (DESC "portrait of Dimwit Flathead")
+       (SYNONYM PAINTING PORTRAIT DIMWIT FLATHEAD)
+       (ADJECTIVE DIMWIT LORD)
+       (FLAGS NDESCBIT)
+       (GENERIC G-DIMWIT-F)
+       (OWNER <TABLE (PURE LENGTH) WALL DIMWIT-PORTRAIT>)
+       (ACTION PAINTING-F)>
+
+<ROUTINE PAINTING-F ()
+        <COND (<VERB? EXAMINE TAKE MOVE>
+               <PERFORM-PRSA ,PAINTINGS>)
+              (<VERB? RESEARCH>
+               <TELL
+"\"One of the Twelve Flatheads. For more information, we recommend Boswell
+Barwell's 'The Lives of the Twelve Flatheads.'\" [Excerpts of which can be
+found in the calendar from your Zork Zero package.]" CR>)>>
+
+<ROOM CLOSET
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Closet")
+      (LDESC
+"You are in some sort of storage closet, which opens to the north. A ladder
+leads upward.")
+      (NORTH TO GALLERY)
+      (UP TO ROOF)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM CLOSET)
+      (GLOBAL FIXED-LADDER)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-4>)
+      (THINGS <> SHADOW PHIL-SHADOW-PS)>
+
+<OBJECT CLOSET-REBUS-BUTTON
+       (LOC CLOSET)
+       (SDESC "blinking key-shaped button")
+       (FDESC
+"In the shadow of one of the shelves is a key-shaped button, which is blinking
+rhythmically.")
+       (SYNONYM BUTTON)
+       (ADJECTIVE KEY-SHAPED BLINKING)
+       (ACTION REBUS-BUTTON-F)>
+
+;<BEGIN-SEGMENT 0>
+<BEGIN-SEGMENT ORACLE>
+<BEGIN-SEGMENT LAKE>
+<BEGIN-SEGMENT VILLAGE>
+
+<ROUTINE REBUS-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (<OR <FSET? ,PRSO ,TOUCHBIT>
+                          ,TIME-STOPPED>
+                      <TELL ,NOTHING-HAPPENS>)
+                     (T
+                      <FSET ,PRSO ,TOUCHBIT>
+                      <PUTP ,PRSO ,P?SDESC "key-shaped button">
+                      <TELL "The button produces a ">
+                      <COND (<IN? ,REBUS-MOUSE ,REBUS>
+                             <REMOVE ,REBUS-MOUSE>
+                             <TELL "squeak">)
+                            (<IN? ,REBUS-GOOSE ,REBUS>
+                             <REMOVE ,REBUS-GOOSE>
+                             <TELL "honk">)
+                            (<IN? ,REBUS-SLIME-MONSTER ,REBUS>
+                             <REMOVE ,REBUS-SLIME-MONSTER>
+                             <TELL "squish">)
+                            (<IN? ,REBUS-CAMEL ,REBUS>
+                             <REMOVE ,REBUS-CAMEL>
+                             <TELL "bray">)
+                            (<IN? ,REBUS-SNAKE ,REBUS>
+                             <REMOVE ,REBUS-SNAKE>
+                             <TELL "hiss">)
+                            (T
+                             <REMOVE ,REBUS-FISH>
+                             <TELL "splash">)>
+                      <TELL "ing noise and stops blinking." CR>)>)>>
+
+<END-SEGMENT>
+<BEGIN-SEGMENT 0>
+
+<OBJECT BAG
+       (LOC CLOSET)
+       (DESC "bag")
+       (FDESC
+"The shelves are all dusty and bare -- except for one small bag with some
+printing on it.")
+       (SYNONYM BAG PRINTING)
+       (ADJECTIVE SMALL)
+       (FLAGS TAKEBIT CONTBIT SEARCHBIT READBIT)
+       (SIZE 2)
+       (TEXT
+"\"Hello, Flamingo Owner! The enclosed food provides a balanced, nutritious
+diet for your flamingo. Our food is specially formulated for the finicky
+flamingo. WARNING: Poisonous to humans. Another fine product of the Frobozz
+Magic Flamingo Food Company.\"")
+       (ACTION BAG-F)>
+
+<ROUTINE BAG-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL "There's writing on the outside of the bag. ">
+               <RFALSE> ;"open-closed")>>
+
+<OBJECT BAR-OF-FOOD
+       (LOC BAG)
+       (OWNER BAR-OF-FOOD)
+       (DESC "bar of food")
+       (PLURAL "bars of food")
+       (SYNONYM BAR FOOD)
+       (FLAGS TAKEBIT)
+       (SIZE 3)
+       (ACTION BAR-OF-FOOD-F)>
+
+<ROUTINE BAR-OF-FOOD-F ()
+        <COND (<VERB? EAT>
+               <COND (<EQUAL? ,TURNED-INTO ,FLAMINGO>
+                      <GOOD-MEAL ,BAR-OF-FOOD>)
+                     (T
+                      <JIGS-UP "Aarrgghh! Poison!">)>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM ROOF
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Roof")
+      (LDESC
+"You stand atop the main building of the castle. A tall tower is visible to
+the south, but can't be reached from here. The only exit is down a ladder.")
+      (DOWN TO CLOSET)
+      (FLAGS RLANDBIT ONBIT OUTSIDEBIT)
+      (GLOBAL FIXED-LADDER)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-3>)
+      (ICON ROOF-ICON)
+      (THINGS TALL TOWER TOWER-PS)>
+
+<ROUTINE TOWER-PS ()
+        <COND (<TOUCHING? ,PSEUDO-OBJECT>
+               <CANT-REACH ,PSEUDO-OBJECT>)>>
+
+<ROOM AUDIENCE-CHAMBER
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Audience Chamber")
+      (LDESC
+"This is a tremendous meeting room where thousands of visitors would queue up
+every day for an audience with Dimwit or one of his successors. Such visitors
+were usually wasting their time; Dimwit rarely had the patience to see even
+one person a day. A plush red carpet leads from the main doorway on the north
+wall to the golden throne, fringed with red tassels, which towers above the
+floor. Behind the throne, a smaller doorway leads south.")
+      (NORTH TO GREAT-HALL)
+      (SOUTH TO THRONE-ROOM)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM CHAMBER)
+      (ADJECTIVE AUDIENCE)
+      (GLOBAL CARPET)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-5>)>
+
+<OBJECT LARGE-THRONE
+       (LOC AUDIENCE-CHAMBER)
+       (DESC "large golden throne")
+       (SYNONYM THRONE TASSLES)
+       (ADJECTIVE GOLDEN LARGE TOWERING RED)
+       (CAPACITY 50)
+       (FLAGS NDESCBIT VEHBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT)
+       (ACTION THRONE-F)>
+
+<ROOM THRONE-ROOM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Throne Room")
+      (NORTH TO AUDIENCE-CHAMBER)
+      (SOUTH TO SECRET-PASSAGE IF SECRET-PASSAGE-OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM ROOM)
+      (ADJECTIVE THRONE)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>)
+      (ICON THRONE-ROOM-ICON)
+      (ACTION THRONE-ROOM-F)>
+
+<ROUTINE THRONE-ROOM-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a smaller version of the room to the north, meaning that a person
+can walk all the way across it without stopping to rest. The throne, though
+smaller and more comfortable looking, is just as gaudy. It is in this chamber
+that Dimwit would meet with his \"advisors,\" raising taxes and plotting
+grandiose schemes. A doorway leads north">
+               <COND (,SECRET-PASSAGE-OPEN
+                      <TELL ", and a secret passage is open to the south">)>
+               <TELL ".">)>>
+
+<OBJECT SCEPTRE
+       (LOC THRONE-ROOM)
+       (DESC "sceptre")
+       (FDESC
+"An overdone sceptre, ornamented with colored enamel and tapering to a sharp
+point, is lying by the throne.")
+       (SYNONYM SCEPTRE SCEPTER)
+       (ADJECTIVE SHARP ENAMELED ORNAMENTED OVERDONE)
+       (FLAGS TAKEBIT MAGICBIT)
+       (SIZE 5)
+       (VALUE 12)>
+
+<OBJECT SMALL-THRONE
+       (LOC THRONE-ROOM)
+       (DESC "small throne")
+       (SYNONYM THRONE)
+       (ADJECTIVE GAUDY SMALL COMFORTABLE)
+       (CAPACITY 25)
+       (FLAGS NDESCBIT VEHBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT)
+       (ACTION THRONE-F)>
+
+<ROUTINE THRONE-F ("OPTIONAL" (VARG <>))
+        <COND (<AND ,DEMO-VERSION?
+                    <EQUAL? .VARG ,M-ENTER>
+                    <EQUAL? ,PRSO ,SMALL-THRONE>>
+               <TELL !\ >
+               <OPEN-SECRET-PASSAGE?>
+               <RFATAL>)
+              (.VARG
+               <RFALSE>)
+              (<VERB? CLIMB-UP> ;"for CLIMB UP ON THRONE"
+               <PERFORM ,V?ENTER ,PRSO>
+               <RTRUE>)
+              (<VERB? LOOK-BEHIND>
+               <TELL "Behind the throne">
+               <COND (<EQUAL? ,HERE ,AUDIENCE-CHAMBER>
+                      <TELL ", a doorway leads south." CR>)
+                     (,SECRET-PASSAGE-OPEN
+                      <TELL ", a secret passage beckons to the south!" CR>)
+                     (T
+                      <TELL " is nothing but a blank wall." CR>)>)>>
+
+<END-SEGMENT>
+\f
+<BEGIN-SEGMENT SECRET>
+
+;"secret passage and beyond"
+
+<GLOBAL SECRET-PASSAGE-DISCOVERED <>>
+
+<GLOBAL SECRET-PASSAGE-OPEN <>>
+
+<GLOBAL SECRET-PASSAGE-SCORE 18>
+
+<ROOM SECRET-PASSAGE
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Secret Passage")
+      (LDESC "You are in a secret passage running north and south.")
+      (NORTH TO THRONE-ROOM IF SECRET-PASSAGE-OPEN ELSE
+       "The passage ends at a blank wall!")
+      (SOUTH TO TEE)
+      (FLAGS RLANDBIT)
+      (ICON SECRET-PASSAGE-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-7>)
+      (THINGS <> SHADOW PHIL-SHADOW-PS)
+      (ACTION SECRET-PASSAGE-F)>
+
+<ROUTINE SECRET-PASSAGE-F ("OPT" (RARG <>))
+        <COND (<AND ,DEMO-VERSION? <EQUAL? .RARG ,M-END>>
+               <END-DEMO>)>>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT CANDLE
+       (LOC SECRET-PASSAGE)
+       (DESC "candle")
+       (FDESC
+"Although no one has entered this secret passage in years, a lit candle is
+mounted here, its flame casting dancing shadows across the uneven walls.")
+       (SYNONYM CANDLE)
+       (FLAGS LIGHTBIT FLAMEBIT ONBIT TAKEBIT)
+       (ACTION CANDLE-F)>
+
+<ROUTINE CANDLE-F ("AUX" FLAME)
+        <COND (<VERB? EXAMINE>
+               <COND (<FSET? ,CANDLE ,ONBIT>
+                      <TELL "The flame burns tall and bright." CR>)
+                     (T
+                      <TELL "The candle has been snuffed." CR>)>)
+              (<AND <VERB? ON>
+                    <NOT <FSET? ,CANDLE ,FLAMEBIT>>>
+               <COND (<SET FLAME <FIND-IN ,HERE ,FLAMEBIT "with">>
+                      <FSET ,CANDLE ,FLAMEBIT>
+                      <FSET ,CANDLE ,ONBIT>
+                      <TELL "You re-light the candle." CR>)
+                     (T
+                      <TELL "You have no flame to light the candle." CR>)>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT SECRET>
+
+<ROOM TEE
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Tee")
+      (LDESC
+"A secret passage from the north ends here at this east-west corridor.")
+      (NORTH TO SECRET-PASSAGE)
+      (EAST TO TOP-OF-STAIR)
+      (WEST TO FOREBLDG)
+      (FLAGS RLANDBIT)
+      (ICON TEE-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>)>
+
+<ROOM FOREBLDG
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Forebuilding")
+      (LDESC
+"The secret passage from the east ends here. An easily defensible hallway
+rises into the keep, to the southwest.")
+      (EAST TO TEE)
+      (SW TO DONJON)
+      (UP TO DONJON)
+      (FLAGS RLANDBIT)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-6>)>
+
+<ROOM DONJON
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Donjon")
+      (LDESC
+"You are in the lowest level of the castle's keep. A stone stair winds
+up into the keep, and a sloping passage leads northeast.")
+      (NE TO FOREBLDG)
+      (DOWN TO FOREBLDG)
+      (UP TO SOLAR)
+      (FLAGS RLANDBIT)
+      (GLOBAL STAIRS)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>)>
+
+<ROOM SOLAR
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Solar")
+      (LDESC
+"This is the king's solar, where he would bathe and dress and meet his
+most trusted advisors and intimate guests. Dim light enters through narrow,
+slitted windows. The solar has obviously lain unused for many decades. The
+circular stair continues up and down, and a doorway leads west.")
+      (UP TO BASTION)
+      (DOWN TO DONJON)
+      (WEST TO DIMWITS-ROOM)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM SOLAR)
+      (GLOBAL STAIRS WINDOW) 
+      (RIDDLE
+"You can find me at the beginning of youth, in the center of every eye,
+and at the end of eternity. What am I?\"")
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-5>)
+      (ACTION SOLAR-F)>
+
+<ROUTINE SOLAR-F ("OPT" (RARG <>))
+        <COND (<AND <EQUAL? .RARG ,M-END>
+                    <IN? ,EAST-KEY ,JESTER>
+                    <IN? ,JESTER ,HERE>>
+               <SETUP-ORPHAN "answer">)>>
+
+<OBJECT LETTER-Y
+       (LOC GLOBAL-OBJECTS)
+       (DESC "the letter y")
+       (SYNONYM Y)
+       (ADJECTIVE LETTER)
+       (FLAGS NARTICLEBIT)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT EAST-KEY
+       (LOC SOLAR)
+       (DESC "iron key")
+       (FDESC
+"Sitting on a cushioned window seat, illuminated by a shaft of sunlight, rests
+an ancient iron key.")
+       (SYNONYM KEY)
+       (ADJECTIVE ANCIENT IRON)
+       (FLAGS KEYBIT TAKEBIT TRYTAKEBIT VOWELBIT)
+       (SIZE 2)
+       (ACTION EAST-KEY-F)>
+
+<ROUTINE EAST-KEY-F ()
+        <COND (<AND <VERB? TAKE>
+                    <FSET? ,EAST-KEY ,TRYTAKEBIT>>
+               <COND (<IN? ,EAST-KEY ,JESTER>
+                      <TELL ,ANSWER-MY-RIDDLE>)
+                     (T
+                      <TELL "You begin reaching for the key..." CR>
+                      <SETG DO-J T>
+                      <I-JESTER>)>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT SECRET>
+
+<ROOM DIMWITS-ROOM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Dimwit's Room")
+      (LDESC
+"You stare around in awe as you realize that you are within the private
+bedroom of Lord Dimwit Flathead. The canopied bed alone is larger than most
+of the farms in your home province. Light seeps in through slitted windows,
+and doorways lead east and south.")
+      (EAST TO SOLAR)
+      (SOUTH TO CLOTHES-CLOSET)
+      (FLAGS RLANDBIT)
+      (SYNONYM ROOM)
+      (OWNER DIMWIT)
+      (GLOBAL WINDOW)
+      (ICON DIMWITS-ROOM-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>)>
+
+<OBJECT DIMWITS-BED
+       (LOC DIMWITS-ROOM)
+       (DESC "Dimwit's bed")
+       (SYNONYM BED)
+       (ADJECTIVE LARGE CANOPIED)
+       (OWNER DIMWIT)
+       (CAPACITY 250)
+       (FLAGS NARTICLEBIT SEARCHBIT VEHBIT DROPBIT NDESCBIT CONTBIT
+              OPENBIT SURFACEBIT)>
+
+<ROOM CLOTHES-CLOSET
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Magic Clothes Closet")
+      (LDESC
+"This is a small closet. Well, it's small by the standards of this castle;
+in a pinch, it could probably sleep a few regiments. The only exit is north.")
+      (NORTH TO DIMWITS-ROOM)
+      (FLAGS RLANDBIT)
+      (SYNONYM CLOSET)
+      (ADJECTIVE MAGIC CLOTHES)
+      (ICON MAGIC-CLOSET-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT CLOAK
+       (LOC CLOTHES-CLOSET)
+       (DESC "cloak")
+       (SYNONYM CLOAK LABEL WRITING)
+       (ADJECTIVE MAGIC)
+       (FLAGS WEARBIT TAKEBIT)
+       (OWNER CLOAK) ;"read writing on cloak"
+       (ACTION CLOAK-F)>
+
+<GLOBAL CLOAK-LOC <>> ;"set to CLOTHES-CLOSET in GO as a default"
+
+<ROUTINE CLOAK-F ()
+        <COND (<VERB? EXAMINE>
+               <COND (<NOUN-USED? ,CLOAK ,W?CLOAK>
+                      <TELL
+"The colors of the cloak seem to shimmer like a Mithican chameleon. There's
+a small label with writing on it." CR>)
+                     (T
+                      <PERFORM ,V?READ ,CLOAK>
+                      <RTRUE>)>)
+              (<VERB? READ>
+               <TELL "\"Frobozz Magic Cloak Company.\"" CR>)
+              (<AND <EQUAL? ,HERE ,OUBLIETTE>
+                    <VERB? WEAR TAKE-OFF>>
+               <TELL "There's not enough elbow room here." CR>)
+              (<AND <VERB? WEAR>
+                    <NOT <EQUAL? ,HERE ,PLAIN>>
+                    <NOT <FSET? ,CLOAK ,WORNBIT>>
+                    <NOT <FSET? ,OUTER-GATE ,OPENBIT>>
+                    <NOT <IN? ,CLOAK ,WALDO>>
+                    <NOT ,TIME-STOPPED>>
+               <COND (<EQUAL? ,HERE ,CONSTRUCTION>
+                      <STORE ,CONSTRUCTION-OFFSET
+                             ,CONSTRUCTION-LOC ,CONSTRUCTION>)
+                     (<EQUAL? ,HERE ,FR-OFFICES>
+                      <STORE ,OFFICES-OFFSET ,FLOOR-NUMBER ,FR-OFFICES>)
+                     (<EQUAL? ,HERE ,OFFICES-NORTH>
+                      <STORE ,OFFICES-N-OFFSET ,FLOOR-NUMBER ,OFFICES-NORTH>)
+                     (<EQUAL? ,HERE ,OFFICES-SOUTH>
+                      <STORE ,OFFICES-S-OFFSET ,FLOOR-NUMBER ,OFFICES-SOUTH>)
+                     (<EQUAL? ,HERE ,OFFICES-EAST>
+                      <STORE ,OFFICES-E-OFFSET ,FLOOR-NUMBER ,OFFICES-EAST>)
+                     (<EQUAL? ,HERE ,OFFICES-WEST>
+                      <STORE ,OFFICES-W-OFFSET ,FLOOR-NUMBER ,OFFICES-WEST>)>
+               <FSET ,CLOAK ,WORNBIT>
+               <SETG CLOAK-LOC
+                     <COND (<FSET? <LOC ,PROTAGONIST> ,TAKEBIT> ,HERE)
+                           (T <LOC ,PROTAGONIST>)>>
+               ;"otherwise you can end up (for example) in toboggan in knight"
+               <MOVE ,PROTAGONIST ,HERE>
+               <SETG RANK <+ </ ,PLAIN-LOC 8> 1>>
+               <SETG FILE <+ <MOD ,PLAIN-LOC 8> 1>>
+               <CAST-HUNGER-SPELL>
+               <TELL
+"As you wrap the cloak around you, the world changes" ,ELLIPSIS>
+               <UNSTORE ,PLAIN-OFFSET ,PLAIN-LOC ,PLAIN>
+               <GOTO ,PLAIN>)
+              (<AND <VERB? TAKE-OFF>
+                    <FSET? ,CLOAK ,WORNBIT>
+                    <EQUAL? ,HERE ,PLAIN>>
+               <FCLEAR ,CLOAK ,WORNBIT>
+               <STORE ,PLAIN-OFFSET ,PLAIN-LOC ,PLAIN>
+               <TELL
+"As the cloak is removed, the world changes again" ,ELLIPSIS>
+               ;<COND (<AND <EQUAL? ,CLOAK-LOC ,DRAWBRIDGE>
+                           <NOT <FSET? ,DRAWBRIDGE ,OPENBIT>>>
+                       ;"no longer possible"
+                      <JIGS-UP
+"You appear in midair, a few feet above a moat, just about where a drawbridge
+might be if it were open. You thrash about (in a manner that in some later
+era would make animated cartoonists jealous), but despite your best effort,
+you plunge into the moat and are devoured by ravenous alligators.">)>
+               <COND (<EQUAL? ,CLOAK-LOC ,CONSTRUCTION>
+                      <SETG RANK <+ </ ,CONSTRUCTION-LOC 8> 1>>
+                      <SETG FILE <+ <MOD ,CONSTRUCTION-LOC 8> 1>>
+                      <UNSTORE ,CONSTRUCTION-OFFSET
+                               ,CONSTRUCTION-LOC ,CLOAK-LOC>)
+                     (<OR <EQUAL? ,CLOAK-LOC ,FR-OFFICES
+                                             ,OFFICES-NORTH ,OFFICES-SOUTH>
+                          <EQUAL? ,CLOAK-LOC ,OFFICES-EAST ,OFFICES-WEST>>
+                      <OFFICE-UNSTORE ,FLOOR-NUMBER>)>
+               <GOTO ,CLOAK-LOC>
+               <COND (<AND <EQUAL? ,CLOAK-LOC ,ORACLE-OBJECT>
+                           <IN? ,RUBY ,DEPRESSION>> ;"yes, this is possible"
+                      <TELL
+"   You have only a moment to take in your surroundings. ">
+                      <PERFORM ,V?ENTER ,ORACLE-OBJECT>)>
+               <RTRUE>)>>
+
+<OBJECT GLOVE
+       (LOC CLOTHES-CLOSET)
+       (DESC "glove")
+       (SYNONYM GLOVE WRITING EMBROIDER)
+       (ADJECTIVE TINY EMBROIDER)
+       (SIZE 3)
+       (FLAGS TAKEBIT WEARBIT READBIT)
+       (OWNER GLOVE) ;"read writing on glove"
+       (ACTION GLOVE-F)>
+
+<ROUTINE GLOVE-F ()
+        <COND (<VERB? EXAMINE>
+               <COND (<AND <FSET? ,GOGGLES ,WORNBIT>
+                           <FSET? ,GLOVE ,WORNBIT>>
+                      <DISCOVER-X-RAY>
+                      <TELL "You can see your hand within the glove." CR>)
+                     (<NOUN-USED? ,GLOVE ,W?GLOVE>
+                      <TELL
+"Tiny writing is embroidered at the edge of the glove." CR>)
+                     (T
+                      <PERFORM ,V?READ ,GLOVE>
+                      <RTRUE>)>)
+              (<VERB? READ>
+               <TELL "\"Frobozz Magic Glove Company.\"" CR>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT SECRET>
+
+<ROOM BASTION
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Bastion")
+      (LDESC
+"This room occupies a taller tower rising from the corner of the keep.
+The slitted windows are wider here, presumably to accomodate the weaponry
+of the period. The stair winds up and down from here.")
+      (UP TO PARAPET)
+      (DOWN TO SOLAR)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM BASTION)
+      (GLOBAL STAIRS WINDOW)
+      (ICON BASTION-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-5>)>
+
+<ROOM PARAPET
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Parapet")
+      (LDESC
+"You are on the roof of the tower, a virtual museum of state-of-the-art
+castle defense from the eighth century. A fortified parapet, resting on
+stone corbels, rims the roof. Machicolations, holes between the corbels,
+allow massive weights to be dropped on invaders below. (More often, they
+were dropped rather painfully on the soldier's own toe.) Crenellations
+are spaced around the parapet, providing openings for armaments and
+offering a commanding view of the castle grounds: the main castle just
+below, and beyond the moat, the castle's village and garrison. The sole
+exit is the stairway down.")
+      (DOWN TO BASTION)
+      (FLAGS RLANDBIT OUTSIDEBIT ONBIT)
+      (SYNONYM PARAPET TOWER)
+      (GLOBAL STAIRS MOAT VILLAGE)
+      (ICON PARAPET-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>)
+      (ACTION FLY-ROOM-F)>
+
+<OBJECT MACHICOLATION
+       (LOC PARAPET)
+       (DESC "machicolation")
+       (SYNONYM MACHICOLATION HOLE)
+       (FLAGS NDESCBIT)
+       (ACTION MACHICOLATION-F)>
+
+<ROUTINE MACHICOLATION-F ()
+        <COND (<AND <VERB? PUT PUT-THROUGH>
+                    <PRSI? ,MACHICOLATION>>
+               <REMOVE ,PRSO>
+               <COND (<OR <PRSO? ,PERCH>
+                          <ULTIMATELY-IN? ,PERCH ,PRSO>>
+                      <SETG REMOVED-PERCH-LOC ,GROUND>)>
+               <TELL
+"You hear a distant \"thunk,\" as" T ,PRSO " imbeds itself into the ground.
+The lack of an accompanying distant \"ouch!\" would seem to indicate that
+there are no invaders below." CR>)
+              (<VERB? LOOK-INSIDE>
+               <TELL ,YOU-SEE " light at the bottom of the hole." CR>)
+              (<VERB? REACH-IN>
+               <TELL ,NOTHING-IN-REACH>)>>
+
+<ROOM TOP-OF-STAIR
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Top of Stair")
+      (LDESC
+"A secret passage from the west ends here, at the top of these dark,
+cobwebby stairs.")
+      (WEST TO TEE)
+      (DOWN TO BOTTOM-OF-STAIR)
+      (FLAGS RLANDBIT)
+      (GLOBAL STAIRS)
+      (ICON TOP-OF-STAIR-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8>)>
+
+<ROOM BOTTOM-OF-STAIR
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Bottom of Stair")
+      (LDESC
+"You are in the center of a gloomy, north-south passage. A crude
+stairway leads upward.")
+      (NORTH TO OUTSIDE-CRYPT)
+      (SOUTH TO DUNGEON)
+      (UP TO TOP-OF-STAIR)
+      (FLAGS RLANDBIT)
+      (GLOBAL STAIRS)
+      (ICON BOTTOM-OF-STAIR-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-9>)>
+
+<ROOM OUTSIDE-CRYPT
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Outside Crypt")
+      (LDESC
+"A hall from the south ends here at the entrance to a spooky crypt.")
+      (SOUTH TO BOTTOM-OF-STAIR)
+      (NORTH TO CRYPT)
+      (IN TO CRYPT)
+      (FLAGS RLANDBIT)
+      (GLOBAL CRYPT)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-9>)>
+
+<ROOM CRYPT
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Crypt")
+      (UP TO CHAPEL IF TRAP-DOOR IS OPEN)
+      (DOWN PER ORACLE-ENTER-F)
+      (SOUTH TO OUTSIDE-CRYPT)
+      (OUT TO OUTSIDE-CRYPT)
+      (FLAGS RLANDBIT)
+      (SYNONYM CRYPT TOMB)
+      (ADJECTIVE SPOOKY UNDERGROUND)
+      (GLOBAL TRAP-DOOR SLIME BODIES)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-9>)
+      (ACTION CRYPT-F)>
+
+<ROUTINE CRYPT-F ("OPT" (RARG <>))
+        <COND (<AND ,DEMO-VERSION? <EQUAL? .RARG ,M-END>>
+               <END-DEMO>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The remains of generations of royalty lie arranged on slabs through this
+underground tomb. A passage leads off to the south. In the center of the
+low ceiling is a small trap door, which is ">
+               <OPEN-CLOSED ,TRAP-DOOR>
+               <COND (<FSET? ,HOLEY-SLAB ,TOUCHBIT>
+                      <TELL
+". Barely visible beneath one of the slabs, a dark moist opening
+leads downward">)>
+               <TELL ".">)>>
+
+<OBJECT BODIES
+       (LOC LOCAL-GLOBALS)
+       (DESC "bodies")
+       (SYNONYM BODIES REMAINS)
+       (FLAGS PLURALBIT NDESCBIT NARTICLEBIT)
+       (ACTION BODIES-F)>
+
+<ROUTINE BODIES-F ()
+        <COND (<TOUCHING? ,BODIES>
+               <PERFORM-PRSA ,BONES>)>>
+
+<ROUTINE ORACLE-ENTER-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
+        <COND (<OR <FSET? ,OUTER-GATE ,OPENBIT>
+                   ,TIME-STOPPED>
+               <COND (<NOT .RARG>
+                      <RETURN-FROM-MAP>
+                      <TELL "The hole under the slab has vanished!" CR>)>
+               <RFALSE>)
+              (<FSET? ,HOLEY-SLAB ,TOUCHBIT>
+               ,ORACLE)
+              (T
+               <COND (<NOT .RARG>
+                      <CANT-GO>)>
+               <RFALSE>)>>
+
+<OBJECT FLATTEST-SLAB
+       (LOC CRYPT)
+       (DESC "flattest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE FLATTEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<OBJECT SHORTEST-SLAB
+       (LOC CRYPT)
+       (DESC "shortest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE SHORTEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<OBJECT LONGEST-SLAB
+       (LOC CRYPT)
+       (DESC "longest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE LONGEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<OBJECT DUSTIEST-SLAB
+       (LOC CRYPT)
+       (DESC "dustiest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE DUSTIEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<OBJECT DARKEST-SLAB
+       (LOC CRYPT)
+       (DESC "darkest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE DARKEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<OBJECT OLDEST-SLAB
+       (LOC CRYPT)
+       (DESC "oldest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE OLDEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<OBJECT NEWEST-SLAB
+       (LOC CRYPT)
+       (DESC "newest slab")
+       (SYNONYM SLAB)
+       (ADJECTIVE NEWEST)
+       (FLAGS NDESCBIT)
+       (ACTION SLAB-F)>
+
+<ROUTINE SLAB-F ()
+        <COND (<AND <VERB? LOOK-UNDER>
+                    <PRSO? ,HOLEY-SLAB>>
+               <COND (<OR <FSET? ,OUTER-GATE ,OPENBIT>
+                          ,TIME-STOPPED>
+                      <DO-WALK ,P?DOWN>)
+                     (T
+                      <FSET ,HOLEY-SLAB ,TOUCHBIT>
+                      <SETG COMPASS-CHANGED T>
+                      <TELL
+"Under the slab is a craggy hole, dripping with slime, leading
+downward. It looks just barely large enough to enter." CR>)>)>>
+
+<GLOBAL HOLEY-SLAB <>>
+
+<CONSTANT SLAB-TABLE
+       <PTABLE FLATTEST-SLAB
+              SHORTEST-SLAB
+              LONGEST-SLAB
+              DUSTIEST-SLAB
+              DARKEST-SLAB
+              OLDEST-SLAB
+              NEWEST-SLAB>>
+
+<OBJECT TRAP-DOOR
+       (LOC LOCAL-GLOBALS)
+       (DESC "trap door")
+       (SYNONYM DOOR TRAPDOOR)
+       (ADJECTIVE SMALL TRAP)
+       (FLAGS DOORBIT)
+       (ACTION TRAP-DOOR-F)>
+
+<ROUTINE TRAP-DOOR-F ()
+        <COND (<AND <VERB? OPEN>
+                    <NOT <FSET? ,TRAP-DOOR ,OPENBIT>>
+                    <EQUAL? ,HERE ,CRYPT>>
+               <TELL "The trap door can't be opened from this side." CR>)>>
+
+<ROOM DUNGEON
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Dungeon")
+      (LDESC
+"A century's worth of prisoners have languished in this dismal prison.
+In addition to a hole in the floor, passages lead north, southeast, and
+southwest.")
+      (NORTH TO BOTTOM-OF-STAIR)
+      (DOWN TO OUBLIETTE)
+      (SE TO CELL)
+      (SW TO TORTURE-CHAMBER)
+      (FLAGS RLANDBIT)
+      (SYNONYM DUNGEON)
+      (ICON DUNGEON-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-9>)>
+
+<OBJECT DUNGEON-HOLE
+       (LOC DUNGEON)
+       (DESC "hole")
+       (SYNONYM HOLE)
+       (ADJECTIVE SMALL)
+       (FLAGS NDESCBIT)
+       (OWNER GROUND)
+       (ACTION DUNGEON-HOLE-F)>
+
+<ROUTINE DUNGEON-HOLE-F ()
+        <COND (<VERB? LOOK-INSIDE>
+               <COND (<LIT? ,OUBLIETTE>
+                      <TELL ,SOME-LIGHT>)
+                     (T
+                      <TELL ,ONLY-BLACKNESS>)>)
+              (<VERB? PUT>
+               <COND (<G? <GETP ,PRSO ,P?SIZE> 4>
+                      <COND (<OR <PRSO? ,PERCH>
+                                 <ULTIMATELY-IN? ,PERCH ,PRSO>>
+                             <SETG REMOVED-PERCH-LOC ,OUBLIETTE>)>
+                      <REMOVE ,PRSO>)
+                     (T
+                      <MOVE ,PRSO ,OUBLIETTE>)>
+               <TELL "Done." CR>)      
+              (<VERB? EXAMINE>
+               <TELL
+"It's big enough to drop through, but a return trip doesn't look
+at all assured." CR>)
+              (<VERB? REACH-IN>
+               <TELL ,NOTHING-IN-REACH>)
+              (<VERB? ENTER>
+               <DO-WALK ,P?DOWN>)>>
+
+<ROOM OUBLIETTE
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Oubliette")
+      (UP SORRY "You're trapped.")
+      (OUT SORRY "You're trapped.")
+      (FLAGS RLANDBIT)
+      (SYNONYM OUBLIETTE)
+      (RIDDLE
+"I look just like my brother; we have the same father and mother! We're
+identical in every way; we were born on the very same day. I'm younger
+by seconds, but as everyone reckons, I'm not a twin, and never have been.
+What am I?\"")
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-9>)
+      (ACTION OUBLIETTE-F)>
+
+<GLOBAL OUBLIETTE-SCORE 20>
+
+<ROUTINE OUBLIETTE-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You're trapped in a narrow prison cell accessible only from above. The
+upper portion of the cell is lost in gloom. The floor is muddy, and you
+sink almost to your ">
+               <COND (,ALLIGATOR
+                      <TELL "alligatorish nostrils.">)
+                     (T
+                      <TELL "knees.">)>)
+              (<AND <EQUAL? .RARG ,M-ENTER>
+                    <NOT ,TIME-STOPPED>>
+               <SETG DO-J T>
+               <QUEUE I-JESTER 3>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <IN? ,JESTER ,HERE>>
+               <SETUP-ORPHAN "answer">)>>
+
+<OBJECT TRIPLET
+       (LOC GLOBAL-OBJECTS)
+       (DESC "triplet")
+       (SYNONYM TRIPLET TRIPLETS QUADRUPLET QUINTUPLET)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT SEAMANS-CAP
+       (LOC OUBLIETTE)
+       (DESC "seaman's cap")
+       (FDESC
+"The last prisoner in the oubliette must have been a sailor; an old seaman's
+cap lies discarded in the corner.")
+       (SYNONYM CAP HAT)
+       (ADJECTIVE OLD SEAMAN\'S SEAMAN)
+       (FLAGS TAKEBIT WEARBIT MAGICBIT)
+       (GENERIC G-HAT-F)
+       (VALUE 12)>
+
+<ROUTINE G-HAT-F (TBL LEN)
+        <COND (<INTBL? ,DOORBELL <REST-TO-SLOT .TBL FIND-RES-OBJ1>
+                                 <FIND-RES-COUNT .TBL>>
+               ;"confusion was between door bell and bell on jester's hat"
+               ,DOORBELL)
+              (<VERB? TAKE-OFF REMOVE>
+               <COND (<AND <FSET? ,HARDHAT ,WORNBIT>
+                           <FSET? ,SEAMANS-CAP ,WORNBIT>>
+                      <RFALSE>)
+                     (<FSET? ,HARDHAT ,WORNBIT>
+                      ,HARDHAT)
+                     (<FSET? ,SEAMANS-CAP ,WORNBIT>
+                      ,SEAMANS-CAP)
+                     (T
+                      <RFALSE>)>)
+              (<AND <INTBL? ,J-HAT <REST-TO-SLOT .TBL FIND-RES-OBJ1>
+                                        <FIND-RES-COUNT .TBL>>
+                    <EQUAL? ,HERE ,GAMING-ROOM>>
+               ,J-HAT)
+              (T
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT SECRET>
+
+<ROOM CELL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Cell")
+      (NW TO DUNGEON)
+      (OUT TO DUNGEON)
+      (FLAGS RLANDBIT)
+      (SYNONYM CELL)
+      (ICON CELL-ICON)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-10>)
+      (ACTION CELL-F)>
+
+<ROUTINE CELL-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This cell is the height of luxury for this dungeon -- the floor isn't
+covered with spikes, and there are actually a few corners which aren't
+dominated by giant spiders.">
+               <COND (<IN? ,COBWEBS ,HERE>
+                      <TELL " " ,CELL-WALL-DESC>)>
+               <TELL " The only exit is northwest.">)>>
+
+<OBJECT GIANT-SPIDERS
+       (LOC CELL)
+       (DESC "giant spider")
+       (SYNONYM SPIDER SPIDERS)
+       (ADJECTIVE LARGE)
+       (FLAGS NDESCBIT)
+       (ACTION GIANT-SPIDERS-F)>
+
+<ROUTINE GIANT-SPIDERS-F ()
+        <COND (<TOUCHING? ,GIANT-SPIDERS>
+               <TELL
+"There's only one thing you need to remember in connection with giant spiders:
+You leave them alone, they'll leave you alone." CR>)>>
+
+<OBJECT COBWEBS
+       (LOC CELL)
+       (DESC "cobwebs")
+       (SYNONYM COBWEBS WEB COBWEB WEBS)
+       (ADJECTIVE THICK)
+       (FLAGS NDESCBIT NARTICLEBIT PLURALBIT)
+       (ACTION COBWEBS-F)>
+
+<ROUTINE COBWEBS-F ()
+        <COND (<VERB? ENTER>
+               <TELL
+"Walk face first into a thick wall of yukko cobwebs? Mucho disgusto! Maybe if
+you cleared them away, first..." CR>)
+              (<VERB? REMOVE TAKE-WITH CLEAN MOVE>
+               <COND (<AND <NOT ,PRSI>
+                           <ULTIMATELY-IN? ,BROOM>>
+                      <SETG PRSI ,BROOM>)>
+               <COND (<NOT ,PRSI>
+                      <TELL "Yuk! Bleh! Ukky-poo! T">
+                      <COND (<NOT <FSET? ,GLOVE ,WORNBIT>>
+                             <TELL
+"hese cobwebs are way too gross to touch with your
+bare hands. Furthermore, t">)>
+                      <TELL
+"here are way too many to clean away without some
+kind of cleaning accessory." CR>)
+                     (<NOT <PRSI? ,BROOM>>
+                      <TELL
+"Don't bother to apply for any jobs as a maid." CR>)
+                     (T
+                      <REMOVE ,COBWEBS>
+                      <THIS-IS-IT ,FLASK>
+                      <MOVE ,FLASK ,HERE>
+                      <TELL
+"It's a dirty job, but someone's gotta do it. You clear away most
+of the cobwebs, revealing a blank wall. Sitting at the base of the
+wall is a " 'FLASK "!" CR>
+                      <INC-SCORE 12>)>)>>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT FLASK
+       (DESC "stoppered glass flask filled with liquid")
+       (LDESC
+"A stoppered glass flask with a skull-and-crossbones marking is here.
+The flask is filled with some clear liquid.")
+       (SYNONYM FLASK)
+       (ADJECTIVE GLASS)
+       (FLAGS TAKEBIT TRANSBIT READBIT MAGICBIT SEARCHBIT)
+       (CAPACITY 5)
+       (SIZE 5)
+       (VALUE 0) ;"12 points given elsewhere"
+       (TEXT "There is a skull-and-crossbones engraved on the glass.")
+       (ACTION FLASK-F)>
+
+<ROUTINE FLASK-F ()
+        <COND (<VERB? LOOK-INSIDE>
+               <TELL
+"You notice that objects behind the flask appear to be magnified." CR>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,PRSI ,FLASK>>
+               <TELL
+"The flask distorts and magnifies the " D ,PRSO ", showing details
+not noticed earlier." CR "   ">
+               <RFALSE>)
+              (<VERB? DRINK-FROM>
+               <DO-FIRST "open" ,FLASK>)
+              (<VERB? OPEN MUNG THROW>
+               <COND (<NOT <VERB? OPEN>>
+                      <TELL "The flask breaks into pieces. ">)
+                     (T
+                      <TELL "You remove the stopper. ">)>
+               <TELL
+"As you pass out, you realize that the vapors from the
+flask's contents are ">
+               <COND (<FSET? ,CLOWN-NOSE ,WORNBIT>
+                      <TELL
+"potent enough to get past your clown nose, and are also quite ">)>
+               <JIGS-UP "fatal.">)>>
+
+<OBJECT LIQUID
+       (LOC FLASK)
+       (DESC "clear liquid")
+       (SYNONYM LIQUID)
+       (ADJECTIVE CLEAR)
+       (FLAGS NDESCBIT)
+       (ACTION LIQUID-F)>
+
+<ROUTINE LIQUID-F ()
+        <COND (<VERB? DRINK>
+               <DO-FIRST "open" ,FLASK>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT SECRET>
+
+<ROOM TORTURE-CHAMBER
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Torture Chamber")
+      (LDESC
+"This room contains all your standard torture devices: an iron maiden,
+a water chamber, a snake pit, a comfy chair, and so forth. The only
+obvious exit is northeast.")
+      (NE TO DUNGEON)
+      (OUT TO DUNGEON)
+      (FLAGS RLANDBIT)
+      (SYNONYM CHAMBER)
+      (ADJECTIVE TORTURE)
+      (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-8>)
+      (ACTION TORTURE-CHAMBER-F)>
+
+<ROUTINE TORTURE-CHAMBER-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <COND (<NOT ,METRONOME-LOC>
+                      <SETG METRONOME-LOC <COND (<PROB 33> ,IRON-MAIDEN)
+                                                (<PROB 50> ,SNAKE-PIT)
+                                                (T ,WATER-CHAMBER)>>)>
+               <SETG METRONOME-COUNTER 0>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <FSET? ,METRONOME ,TRYTAKEBIT>>
+               <METRONOME-TORTURE T>)>>
+
+<ROUTINE METRONOME-TORTURE ("OPTIONAL" (INDENT <>))
+        <SETG METRONOME-COUNTER <+ ,METRONOME-COUNTER 1>>
+        <COND (<EQUAL? ,METRONOME-COUNTER 1>
+               <RFALSE>)>
+        <RETURN-FROM-MAP>
+        <COND (.INDENT
+               <TELL "   ">)>
+        <COND (<EQUAL? ,METRONOME-COUNTER 2>
+               <TELL "You hear a ticking sound." CR>)
+              (<EQUAL? ,METRONOME-COUNTER 3>
+               <TELL "The ticking grows louder." CR>)
+              (<EQUAL? ,METRONOME-COUNTER 4>
+               <TELL
+"The ticking is really getting to you. It seems to be
+controlling your heartbeat!" CR>)
+              (T
+               <TELL
+"The ticking is unbearably deafening! You run screaming from
+the Torture Chamber!" CR CR>
+               <GOTO ,DUNGEON>)>>
+
+<BEGIN-SEGMENT 0>
+
+<GLOBAL METRONOME-LOC <>>
+
+<GLOBAL METRONOME-COUNTER 0>
+
+<GLOBAL METRONOME-ON <>>
+
+<OBJECT METRONOME
+       (DESC "metronome")
+       (SYNONYM METRONOME)
+       (FLAGS TAKEBIT TRYTAKEBIT MAGICBIT)
+       (VALUE 0) ;"12 points given elsewhere"
+       (ACTION METRONOME-F)>
+
+<ROUTINE METRONOME-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL "The metronome is">
+               <COND (,METRONOME-ON
+                      <TELL " ticking insistently." CR>)
+                     (T
+                      <TELL "n't on." CR>)>)
+              (<VERB? ON>
+               <COND (,METRONOME-ON
+                      <TELL "It is!" CR>)
+                     (T
+                      <SETG METRONOME-ON T>
+                      <QUEUE I-METRONOME -1>
+                      <TELL "The metronome begins to tick." CR>)>)
+              (<VERB? OFF>
+               <COND (,METRONOME-ON
+                      <SETG METRONOME-ON <>>
+                      <DEQUEUE I-METRONOME>
+                      <TELL "The metronome stops ticking." CR>)
+                     (T
+                      <TELL "It is!" CR>)>)>>
+
+<ROUTINE I-METRONOME ("OPTIONAL" (CALLED-BY-LISTEN <>) "AUX" CNT)
+        <COND (<EQUAL? <LOC ,METRONOME> <>>
+               <DEQUEUE I-METRONOME>)>
+        <COND (<AND <VISIBLE? ,METRONOME>
+                    <NOT <EQUAL? ,CURRENT-SPLIT ,MAP-TOP-LEFT-LOC>>>
+               <SET CNT <+ 3 <RANDOM 30>>>
+               <COND (<NOT .CALLED-BY-LISTEN>
+                      <TELL "   ">)>
+               <TELL "The metronome insistently declares, \"Tick">
+               <REPEAT ()
+                       <TELL ", tick">
+                       <SET CNT <- .CNT 1>>
+                       <COND (<EQUAL? .CNT 0>
+                              <RETURN>)>>
+               <TELL ".\"" CR>)
+              (T
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT SECRET>
+
+<OBJECT COMFY-CHAIR
+       (LOC TORTURE-CHAMBER)
+       (DESC "comfy chair")
+       (SYNONYM CHAIR)
+       (ADJECTIVE COMFY)
+       (FLAGS NDESCBIT CONTBIT INBIT SEARCHBIT VEHBIT SURFACEBIT OPENBIT)
+       (ACTION TORTURE-DEVICE-F)>
+
+<OBJECT IRON-MAIDEN
+       (LOC TORTURE-CHAMBER)
+       (DESC "iron maiden")
+       (SYNONYM MAIDEN)
+       (ADJECTIVE IRON)
+       (FLAGS NDESCBIT VOWELBIT INBIT CONTBIT SEARCHBIT VEHBIT)
+       (ACTION TORTURE-DEVICE-F)>
+
+<OBJECT WATER-CHAMBER
+       (LOC TORTURE-CHAMBER)
+       (DESC "water chamber")
+       (SYNONYM CHAMBER)
+       (ADJECTIVE WATER)
+       (FLAGS NDESCBIT CONTBIT INBIT SEARCHBIT VEHBIT)
+       (ACTION TORTURE-DEVICE-F)>
+
+<OBJECT SNAKE-PIT
+       (LOC TORTURE-CHAMBER)
+       (DESC "snake pit")
+       (SYNONYM PIT LID)
+       (ADJECTIVE SNAKE)
+       (FLAGS NDESCBIT CONTBIT INBIT SEARCHBIT VEHBIT)
+       (ACTION TORTURE-DEVICE-F)>
+
+<OBJECT THOUSANDS-OF-SNAKES
+       (LOC SNAKE-PIT)
+       (DESC "writhing mass of snakes")
+       (SYNONYM SNAKE MASS)
+       (ADJECTIVE WRITHING)>
+
+<ROUTINE TORTURE-DEVICE-F ()
+        <COND (<VERB? ENTER>
+               <COND (<AND <NOT <PRSO? ,COMFY-CHAIR>>
+                           <NOT <FSET? ,PRSO ,OPENBIT>>>
+                      <DO-FIRST "open" ,PRSO>
+                      <RTRUE>)>
+               <TELL "You climb into the " 'PRSO ". ">
+               <COND (<PRSO? ,COMFY-CHAIR>
+                      <JIGS-UP
+"It's so, so comfy that you can't get up, and you sit there comfortably
+until you starve to death.">)
+                     (<PRSO? ,IRON-MAIDEN>
+                      <JIGS-UP
+"It shuts around you, piercing you with its sharp spikes.">)
+                     (<PRSO? ,WATER-CHAMBER>
+                      <JIGS-UP
+"Immediately, the chamber locks behind you, and water begins
+rhythmically dripping onto your head. Sometime later you go mad,
+and rip yourself into small pieces.">)
+                     (T
+                      <JIGS-UP
+"A thousand snakes converge on you. In their overeagerness to dine,
+they skip right over the part where they kill you, and instead get
+right to the part where they eat you.">)>)
+              (<VERB? EXAMINE>
+               <COND (<PRSO? ,COMFY-CHAIR>
+                      <TELL "It sure looks comfortable!" CR>
+                      <RTRUE>)
+                     (<PRSO? ,WATER-CHAMBER>
+                      <TELL
+"It's a small chamber where water is slowly dripped onto the victim's head
+until he or she goes mad.">)
+                     (<PRSO? ,IRON-MAIDEN>
+                      <TELL
+"It's similar to a suit of armor, except that the inside is
+lined with sharp spikes.">)
+                     (T
+                      <COND (<NOT <FSET? ,SNAKE-PIT ,OPENBIT>>
+                             <TELL "Beneath the lid of the snake pit y">)
+                            (T
+                             <TELL "Y">)>
+                      <TELL
+"ou hear the hissing of a thousand hungry snakes.">)>
+               <TELL " The " 'PRSO " is ">
+               <OPEN-CLOSED ,PRSO>
+               <TELL ,PERIOD-CR>)
+              (<AND <VERB? LOOK-INSIDE>
+                    <FSET? ,METRONOME ,TRYTAKEBIT>>
+               <COND (<PRSO? ,METRONOME-LOC>
+                      <PERFORM ,V?OPEN ,PRSO>
+                      <RTRUE>)
+                     (<PRSO? ,COMFY-CHAIR>
+                      <TELL "There's no one in the chair." CR>)
+                     (T
+                      <FSET ,PRSO ,OPENBIT>
+                      <TELL
+"You open" T ,PRSO ", and find no one within." CR>)>) 
+              (<AND <VERB? OPEN>
+                    <PRSO? ,METRONOME-LOC>
+                    <FSET? ,METRONOME ,TRYTAKEBIT>>
+               <FCLEAR ,METRONOME ,TRYTAKEBIT>
+               <MOVE ,METRONOME ,HERE>
+               <FSET ,PRSO ,OPENBIT>
+               <TELL
+"As you open the " 'PRSO ", a metronome falls from the shadowy recesses
+of the ceiling and lands with a muffled thud in the center of the room.">
+               <COND (<G? ,METRONOME-COUNTER 1>
+                      <TELL
+" Thankfully, the fall seems to have shut it off.">)>
+               <CRLF>
+               <INC-SCORE 12>)
+              (<AND <VERB? OPEN>
+                    ,TIME-STOPPED>
+               <TELL ,WONT-BUDGE>)>>
+
+<END-SEGMENT>
+\f
+<BEGIN-SEGMENT CASTLE>
+
+;"west wing"
+
+<ROOM WEST-HALL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "West Hall")
+      (WEST TO WEST-WING IF WEST-DOOR IS OPEN)
+      (NE TO FORMAL-GARDEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL WEST-DOOR LOCK-OBJECT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>)
+      (ACTION WEST-HALL-F)>
+
+<ROUTINE WEST-HALL-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The castle's newest wing can be found beyond the huge oak door which lies ">
+               <OPEN-CLOSED ,WEST-DOOR>
+               <TELL " to the west. The only other exit is northeast.">)>>
+
+<OBJECT WEST-DOOR
+       (LOC LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (ADJECTIVE LARGE OAK)
+       (FLAGS DOORBIT LOCKEDBIT)
+       (ACTION WEST-DOOR-F)>
+
+<ROUTINE WEST-DOOR-F ()
+        <COND (<AND <VERB? UNLOCK>
+                    <FSET? ,WEST-DOOR ,LOCKEDBIT>
+                    <PRSI? ,WEST-KEY>>
+               <FCLEAR ,WEST-DOOR ,LOCKEDBIT>
+               <LOCKED-UNLOCKED ,WEST-DOOR T>)
+              (<AND <VERB? LOCK>
+                    <NOT <FSET? ,WEST-DOOR ,LOCKEDBIT>>
+                    <PRSI? ,WEST-KEY>>
+               <FSET ,WEST-DOOR ,LOCKEDBIT>
+               <LOCKED-UNLOCKED ,WEST-DOOR>)>>
+
+<ROOM WEST-WING
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "West Wing")
+      (EAST TO WEST-HALL IF WEST-DOOR IS OPEN)
+      (WEST PER DIRIGIBLE-HANGAR-ENTER-F)
+      (NORTH TO PEG-ROOM)
+      (SOUTH TO GYM)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL WEST-DOOR LOCK-OBJECT)
+      (VALUE 8)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-2>)
+      (ICON WEST-WING-ICON)
+      (ACTION WEST-WING-F)>
+
+<ROUTINE WEST-WING-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This wing exhibits more recent styling: smoothly dressed stone inlaid with
+marble patterns. Through the ">
+               <OPEN-CLOSED ,WEST-DOOR>
+               <TELL
+" oak door to the east lie the primary halls of the castle. Other exits lead
+north, west, and south. " ,FUDGE>)>>
+
+<GLOBAL NUT-OPENED <>>
+
+<GLOBAL NUT-SHOWN <>>
+
+<GLOBAL NUT-EATEN <>>
+
+<GLOBAL J-DISPOSED 0>
+
+<ROUTINE DIRIGIBLE-HANGAR-ENTER-F ("OPT" (RARG <>)) ;"called by NEXT-ROOM?"
+        <COND (,NUT-EATEN
+               ,DIRIGIBLE-HANGAR)
+              (.RARG
+               <RFALSE>)
+              (<NOT <IN? ,JESTER ,HERE>>
+               <RETURN-FROM-MAP>
+               <TELL "An invisible hand seems to stop you">
+               <COND (<L? <- ,MOVES ,J-DISPOSED> 4>
+                      <TELL
+", and a familiar voice says, \"Surely you didn't think you'd
+be rid of me so easily!\"" CR>)
+                     (T
+                      <TELL ,PERIOD-CR>)>
+               <SETG DO-J T>
+               <I-JESTER>
+               <RFALSE>)
+              (T
+               <RETURN-FROM-MAP>
+               <TELL ,ERE-YOU-PASS>
+               <RFALSE>)>>
+\\f 
+;"peggleboz"
+
+<ROOM PEG-ROOM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Peg Room")
+      (OUT TO WEST-WING)
+      (SOUTH TO WEST-WING)
+      (NORTH TO GAMING-ROOM IF PEG-PASSAGE-OPENED)
+      (FLAGS RLANDBIT ONBIT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-2>)
+      (ICON PEG-ROOM-ICON)
+      (ACTION PEG-ROOM-F)>
+
+<ROUTINE PEG-ROOM-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You're in a nondescript room with an exit to the south. ">
+               <COND (,PEG-PASSAGE-OPENED
+                      <TELL "A previously hidden passage leads north. ">)>
+               <TELL
+"In the center of the room is a pegboard. Hanging on the wall are a set of
+instructions.">)>>
+
+<OBJECT PBOZ-OBJECT
+       (LOC GLOBAL-OBJECTS)
+       (DESC "Peggleboz")
+       (SYNONYM PEGGLEBOZ)
+       (ADJECTIVE GUSTAV)
+       (RESEARCH
+"\"Peggleboz, a popular game of jumping pegs, is named after its creator,
+Gustav Peggleboz (399 - 456 GUE).\"")
+       (ACTION PBOZ-OBJECT-F)>
+
+<ROUTINE PBOZ-OBJECT-F ()
+        <COND (<VERB? PLAY>
+               <COND (<EQUAL? ,HERE ,PEG-ROOM>
+                      <PEG-GAME>
+                      <RTRUE>)
+                     (T
+                      <TELL
+,YOU-CANT "play Peggleboz without a pegboard!" CR>)>)>>
+
+<OBJECT PEGBOARD
+       (LOC PEG-ROOM)
+       (DESC "pegboard")
+       (SYNONYM BOARD PEGBOARD)
+       (ADJECTIVE PEG)
+       (FLAGS NDESCBIT TRYTAKEBIT)
+       (ACTION PEGBOARD-F)>
+
+<ROUTINE PEGBOARD-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The board has 21 holes, 20 of them filled with pegs. The holes are
+arranged in a roughly triangular shape." CR>)
+              (<VERB? TAKE>
+               <TELL
+"The pegboard is an unmovable feature of the room." CR>)>>
+
+<OBJECT PEGBOARD-PEGS
+       (LOC PEG-ROOM)
+       (DESC "peg")
+       (SYNONYM PEG)
+       (FLAGS NDESCBIT TRYTAKEBIT)
+       (ACTION PEGBOARD-PEGS-F)>
+
+<ROUTINE PEGBOARD-PEGS-F ()
+        <COND (<VERB? MOVE TAKE>
+               <TELL
+"It would behoove you to read the instructions that are posted on the wall
+here." CR>)>>
+
+<OBJECT SET-OF-INSTRUCTIONS
+       (LOC PEG-ROOM)
+       (OWNER SET-OF-INSTRUCTIONS)
+       (DESC "set of instructions")
+       (SYNONYM SET INSTRUCTIONS RULES)
+       (FLAGS NDESCBIT READBIT)
+       (TEXT
+"\"Rules for PEGGLEBOZ:|
+1. Pegs can only move by jumping another peg.|
+2. Pegs can only jump one peg per move.|
+3. Pegs jumped are removed.|
+4. Your goal is to end up with one peg in the starting hole.|
+5. To begin, simply type PLAY PEGGLEBOZ!\"")>
+
+<CONSTANT PBOZ-PICSET-TBL
+         <TABLE UNHL-PEG
+                HL-PEG
+                BG-A
+                BG-B
+                BG-C
+                BG-D
+                BG-E
+                BG-F
+                BG-G
+                BG-H
+                BG-I
+                BG-J
+                BG-K
+                BG-L
+                BG-M
+                BG-N
+                BG-O
+                BG-P
+                BG-Q
+                BG-R
+                BG-S
+                BG-T
+                BG-U
+                RESTART-BOX
+                EXIT-BOX
+                SHOW-MOVES-BOX
+                DIM-RESTART-BOX
+                DIM-SHOW-MOVES-BOX
+                0>>
+
+<ROUTINE PEG-GAME ("AUX" (FIRST-MOVE T) (PEG-SELECTED <>) CHAR JUMPED-PEG
+                        (DONT-CLEAR <>) (WON <>) CNT)
+        <CLEAR ,S-FULL>
+        <SPLIT-BY-PICTURE ,PBOZ-SPLIT T>
+        <ADJUST-TEXT-WINDOW ,PBOZ-BOTTOM>
+        <SETUP-PBOZ>
+        <REPEAT ()
+                <COND (.WON T)
+                      (.PEG-SELECTED
+                       <COND (<NOT .DONT-CLEAR>
+                              <CLEAR ,S-TEXT>)
+                             (T
+                              <SET DONT-CLEAR <>>)>
+                       <TELL "You are moving the peg at letter ">
+                       <HLIGHT ,H-BOLD>
+                       <TELL C <+ ,LETTER-OFFSET .PEG-SELECTED>>
+                       <HLIGHT ,H-NORMAL>
+                       <TELL
+". Select the letter for the destination point of that peg, or hit ">
+                       <HLIGHT ,H-BOLD>
+                       <TELL C <+ ,LETTER-OFFSET .PEG-SELECTED>>
+                       <HLIGHT ,H-NORMAL>
+                       <TELL " again to \"unselect\" that peg.">)
+                      (T
+                       <COND (<AND <NOT .FIRST-MOVE>
+                                   <NOT .DONT-CLEAR>>
+                              <CLEAR ,S-TEXT>)>
+                       <COND (<NOT .DONT-CLEAR>
+                              <COND (<EQUAL? <PEG-COUNT> 1>
+                                     <TELL
+"Type X to exit, Y to display your moves, and Z to start again">
+                                     <COND (,ACTIVE-MOUSE
+                                            <TELL
+" (or simply click on the appropriate spot with your mouse)">)>
+                                     <TELL ".">)
+                                    (T
+                                     <TELL
+"Type the letter corresponding to the peg you'd like to move">
+                                     <COND (,ACTIVE-MOUSE
+                                            <TELL
+", or use your mouse to click on it">)>
+                                     <TELL ".">
+                                     <COND (.FIRST-MOVE
+                                            <SET FIRST-MOVE <>>
+                                            <TELL
+" Type X to exit Peggleboz, Y to display your moves so far, Z to reset the
+board">
+                                            <COND (,ACTIVE-MOUSE
+                                                   <TELL
+" (or you can use your mouse to click on the appropriate spot)">)>
+                                            <TELL ".">)>)>)>)>
+                <SET DONT-CLEAR <>>
+                <SET CHAR
+                     <COND (.PEG-SELECTED
+                            <BLINK ,UNHL-PEG ,HL-PEG
+                                  <GET ,BOARD-TABLE <* .PEG-SELECTED 2>>
+                                  <GET ,BOARD-TABLE <+ <* .PEG-SELECTED 2> 1>>
+                                 ,S-WINDOW>)
+                           (T
+                            <COND (,DEMO-VERSION?
+                                   <INPUT-DEMO 1>)
+                                  (T
+                                   <INPUT 1>)>)>>
+                <MOUSE-INPUT?>
+                <COND (<EQUAL? .CHAR ,CLICK1 ,CLICK2>
+                       <SET CHAR <PBOZ-CLICK>>)>
+                <COND (<AND <G? .CHAR 96>
+                            <L? .CHAR 123>> ;"convert lower to upper case"
+                       <SET CHAR <- .CHAR 32>>)>
+                <COND (<EQUAL? .CHAR !\X>
+                       <RESET-PEGBOARD>
+                       <INIT-SL-WITH-SPLIT ,TEXT-WINDOW-PIC-LOC>
+                       <CLEAR ,S-TEXT>
+                       <RETURN>)
+                      (<EQUAL? .CHAR !\Y>
+                       <SET DONT-CLEAR T>
+                       <DISPLAY-MOVES>)
+                      (<EQUAL? .CHAR !\Z>
+                       <RESET-PEGBOARD>
+                       <SET WON <>>
+                       <SET CNT 4>
+                       <SCREEN ,S-WINDOW>
+                       <DRAW-PEGS>
+                       <SCREEN ,S-TEXT>
+                       <CLEAR ,S-TEXT>
+                       <SET PEG-SELECTED <>>)
+                      (<NOT .PEG-SELECTED>
+                       <SET PEG-SELECTED <- .CHAR 64>>
+                       <COND (<OR <G? .PEG-SELECTED 21>
+                                  <L? .PEG-SELECTED 1>>
+                              <CLEAR ,S-TEXT>
+                              <SOUND 1>
+                              <SET PEG-SELECTED <>>
+                              <SET DONT-CLEAR T>
+                              <TELL
+"Illegal choice. Type a letter from A thru U to select a peg. Or, type X
+to exit, Y to display your moves, or Z to reset the board.">)
+                             (<EQUAL? <GET ,PEG-TABLE .PEG-SELECTED> 0>
+                              <CLEAR ,S-TEXT>
+                              <SOUND 1>
+                              <SET DONT-CLEAR T>
+                              <TELL
+"There's no peg at point " C <+ ,LETTER-OFFSET .PEG-SELECTED> ".">
+                              <SET PEG-SELECTED <>>)>) 
+                      (<EQUAL? .PEG-SELECTED <- .CHAR 64>>
+                       <SET DONT-CLEAR T>
+                       <SET PEG-SELECTED <>>
+                       <CLEAR ,S-TEXT>
+                       <TELL "Unselected.">)
+                      (<SET JUMPED-PEG <LEGAL-MOVE .PEG-SELECTED .CHAR>>
+                       ;"record move for later display"
+                       <PUT ,PEG-MOVE-TABLE ,PEG-MOVE-NUMBER .PEG-SELECTED>
+                       <PUT ,PEG-MOVE-TABLE <+ ,PEG-MOVE-NUMBER 1>
+                                            <- .CHAR 64>>
+                       <SETG PEG-MOVE-NUMBER <+ ,PEG-MOVE-NUMBER 2>>
+                       ;"record move in storage tables"
+                       <PUT ,PEG-TABLE .JUMPED-PEG 0>
+                       <PUT ,PEG-TABLE .PEG-SELECTED 0>
+                       <PUT ,PEG-TABLE <- .CHAR 64> 1>
+                       <SCREEN ,S-WINDOW>
+                       <DISPLAY <GET ,PEG-BG-PIC-TBL .PEG-SELECTED>
+                                <GET ,BOARD-TABLE <* .PEG-SELECTED 2>>
+                                <GET ,BOARD-TABLE <+ <* .PEG-SELECTED 2> 1>>>
+                       <DISPLAY <GET ,PEG-BG-PIC-TBL .JUMPED-PEG>
+                                <GET ,BOARD-TABLE <* .JUMPED-PEG 2>>
+                                <GET ,BOARD-TABLE <+ <* .JUMPED-PEG 2> 1>>>
+                       <DISPLAY ,UNHL-PEG
+                                <GET ,BOARD-TABLE <* <- .CHAR 64> 2>>
+                                <GET ,BOARD-TABLE <+ <* <- .CHAR 64> 2> 1>>>
+                       <COND (<AND <EQUAL? ,PEG-MOVE-NUMBER 2>
+                                   ,ACTIVE-MOUSE>
+                              <PICINF-PLUS-ONE ,PBOZ-RESTART-BOX-LOC>
+                              <DISPLAY ,RESTART-BOX
+                                  <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
+                              <PICINF-PLUS-ONE ,PBOZ-SHOW-MOVES-BOX-LOC>
+                              <DISPLAY ,SHOW-MOVES-BOX
+                                  <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>)>
+                       <SET PEG-SELECTED <>>
+                       <SCREEN ,S-TEXT>
+                       <CLEAR ,S-TEXT>
+                       <COND (<PBOZ-WIN-CHECK>
+                              <SET WON T>
+                              <SETG PEG-PASSAGE-OPENED T>
+                              <SOUND 1> <SOUND 1> <SOUND 1>
+                              <TELL
+"A secret doorway to the north slides open. (Hit X to exit)." CR>
+                              <INC-SCORE 16>)>)
+                      (T ;"LEGAL-MOVE printed and RFALSEd"
+                       <SET DONT-CLEAR T>)>>>
+
+<ROUTINE PBOZ-CLICK
+     ("AUX" TL-X TL-Y BR-X BR-Y (CNT 2) PEG-WIDTH PEG-HEIGHT EXPAND-X EXPAND-Y)
+         <PICINF-PLUS-ONE ,PBOZ-RESTART-BOX-LOC>
+        <SET TL-X <GET ,PICINF-TBL 1>>
+        <SET TL-Y <GET ,PICINF-TBL 0>>
+        <PICINF ,RESTART-BOX ,PICINF-TBL>
+        <SET BR-X <+ .TL-X <GET ,PICINF-TBL 1>>>
+        <SET BR-Y <+ .TL-Y <GET ,PICINF-TBL 0>>>
+        <COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
+               <RETURN !\Z>)>
+        <PICINF-PLUS-ONE ,PBOZ-SHOW-MOVES-BOX-LOC>
+        <SET TL-X <GET ,PICINF-TBL 1>>
+        <SET TL-Y <GET ,PICINF-TBL 0>>
+        <PICINF ,SHOW-MOVES-BOX ,PICINF-TBL>
+        <SET BR-X <+ .TL-X <GET ,PICINF-TBL 1>>>
+        <SET BR-Y <+ .TL-Y <GET ,PICINF-TBL 0>>>
+        <COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
+               <RETURN !\Y>)>
+        <PICINF-PLUS-ONE ,PBOZ-EXIT-BOX-LOC>
+        <SET TL-X <GET ,PICINF-TBL 1>>
+        <SET TL-Y <GET ,PICINF-TBL 0>>
+        <PICINF ,EXIT-BOX ,PICINF-TBL>
+        <SET BR-X <+ .TL-X <GET ,PICINF-TBL 1>>>
+        <SET BR-Y <+ .TL-Y <GET ,PICINF-TBL 0>>>
+        <COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
+               <RETURN !\X>)>
+        <PICINF ,EXPAND-HOT-SPOT ,PICINF-TBL>
+         <SET EXPAND-Y <GET ,PICINF-TBL 0>>
+        <SET EXPAND-X <GET ,PICINF-TBL 1>>
+        <PICINF ,UNHL-PEG ,PICINF-TBL>
+        <SET PEG-HEIGHT <GET ,PICINF-TBL 0>>
+        <SET PEG-WIDTH <GET ,PICINF-TBL 1>>
+        <REPEAT ()
+                <SET TL-Y <GET ,BOARD-TABLE .CNT>>
+                <SET TL-X <GET ,BOARD-TABLE <+ .CNT 1>>>
+                <SET BR-Y <+ .TL-Y .PEG-HEIGHT>>
+                <SET BR-X <+ .TL-X .PEG-WIDTH>>
+                ;"expand the hot spot"
+                <SET TL-X <- .TL-X .EXPAND-X>>
+                <SET BR-X <+ .BR-X .EXPAND-X>>
+                <SET BR-Y <+ .BR-Y .EXPAND-Y>>
+                <COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
+                       <RETURN>)>
+                <SET CNT <+ .CNT 2>>
+                <COND (<G? .CNT 43>
+                       <SOUND 1>
+                       <RETURN>)>>
+        <COND (<G? .CNT 43>
+               <RETURN ,CLICK1>)
+              (T ;"divide in half and convert to ASCII"
+               <RETURN <+ </ .CNT 2> 64>>)>>
+
+<ROUTINE SETUP-PBOZ ("AUX" (I 2))
+        <FSET ,PBOZ-OBJECT ,TOUCHBIT>
+        <REPEAT ((TT ,PBOZ-PIC-TABLE))
+                <PICINF-PLUS-ONE <ZGET .TT 0>>
+                <ZPUT ,BOARD-TABLE .I <ZGET ,PICINF-TBL 0>>
+                <ZPUT ,BOARD-TABLE <+ .I 1> <ZGET ,PICINF-TBL 1>>
+                <SET I <+ .I 2>>
+                <COND (<G? .I 43>
+                       <RETURN>)>
+                <SET TT <ZREST .TT 2>>>
+        <SCREEN ,S-FULL>
+        <DISPLAY ,PBOZ-BORDER 1 1>
+        <SCREEN ,S-WINDOW>
+        <PICSET ,PBOZ-PICSET-TBL>
+        <DRAW-PEGS>
+        <COND (,ACTIVE-MOUSE
+               <PICINF-PLUS-ONE ,PBOZ-RESTART-BOX-LOC>
+               <DISPLAY ,DIM-RESTART-BOX
+                        <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
+               <PICINF-PLUS-ONE ,PBOZ-SHOW-MOVES-BOX-LOC>
+               <DISPLAY ,DIM-SHOW-MOVES-BOX
+                        <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
+               <PICINF-PLUS-ONE ,PBOZ-EXIT-BOX-LOC>
+               <DISPLAY ,EXIT-BOX <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>)>
+        <SCREEN ,S-TEXT>>
+
+<CONSTANT PBOZ-PIC-TABLE
+         <PTABLE ,PBOZ-A-LOC
+                 ,PBOZ-B-LOC
+                 ,PBOZ-C-LOC
+                 ,PBOZ-D-LOC
+                 ,PBOZ-E-LOC
+                 ,PBOZ-F-LOC
+                 ,PBOZ-G-LOC
+                 ,PBOZ-H-LOC
+                 ,PBOZ-I-LOC
+                 ,PBOZ-J-LOC
+                 ,PBOZ-K-LOC
+                 ,PBOZ-L-LOC
+                 ,PBOZ-M-LOC
+                 ,PBOZ-N-LOC
+                 ,PBOZ-O-LOC
+                 ,PBOZ-P-LOC
+                 ,PBOZ-Q-LOC
+                 ,PBOZ-R-LOC
+                 ,PBOZ-S-LOC
+                 ,PBOZ-T-LOC
+                 ,PBOZ-U-LOC>>
+
+<CONSTANT BOARD-TABLE ;"Y and X locations of each peg spot"
+       <ITABLE 44 0>>
+
+<ROUTINE DRAW-PEGS ("AUX" (NUM 1))
+        <REPEAT ()
+                <COND (<EQUAL? <GET ,PEG-TABLE .NUM> 1>
+                       <DISPLAY ,UNHL-PEG
+                                <GET ,BOARD-TABLE <* .NUM 2>>
+                                <GET ,BOARD-TABLE <+ <* .NUM 2> 1>>>)
+                      (T
+                       <DISPLAY <GET ,PEG-BG-PIC-TBL .NUM>
+                                <GET ,BOARD-TABLE <* .NUM 2>>
+                                <GET ,BOARD-TABLE <+ <* .NUM 2> 1>>>)>
+                <COND (<G? <SET NUM <+ .NUM 1>> 21>
+                       <RETURN>)>>>
+
+<CONSTANT PEG-BG-PIC-TBL
+         <PLTABLE BG-A
+                  BG-B
+                  BG-C
+                  BG-D
+                  BG-E
+                  BG-F
+                  BG-G
+                  BG-H
+                  BG-I
+                  BG-J
+                  BG-K
+                  BG-L
+                  BG-M
+                  BG-N
+                  BG-O
+                  BG-P
+                  BG-Q
+                  BG-R
+                  BG-S
+                  BG-T
+                  BG-U>>
+
+<ROUTINE RESET-PEGBOARD ("AUX" CNT)
+        <COND (,ACTIVE-MOUSE
+               <SCREEN ,S-WINDOW>
+               <PICINF-PLUS-ONE ,PBOZ-RESTART-BOX-LOC>
+               <DISPLAY ,DIM-RESTART-BOX
+                        <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
+               <PICINF-PLUS-ONE ,PBOZ-SHOW-MOVES-BOX-LOC>
+               <DISPLAY ,DIM-SHOW-MOVES-BOX
+                        <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
+               <SCREEN ,S-TEXT>)>
+        <SETG PEG-MOVE-NUMBER 0>
+        <PUT ,PEG-TABLE 1 1>
+        <COPYT <REST ,PEG-TABLE 2> <REST ,PEG-TABLE 4> -40>
+        <PUT ,PEG-TABLE 7 0>
+        <COPYT ,PEG-MOVE-TABLE 0 80>>
+
+<CONSTANT PEG-TABLE
+       <TABLE 0 ;"zeroth element not used"
+              1 1 1 1 1 1 0
+              1 1 1 1 1 1 1
+              1 1 1 1 1 1 1>>
+
+<ROUTINE LEGAL-MOVE (SELECTED-PEG CHAR "AUX" TBL TBL-SPOT JUMPED-PEG)
+        <SET CHAR <- .CHAR 64>>
+        <SET TBL <GET ,LEGAL-MOVE-TABLE .SELECTED-PEG>>
+         <COND (<EQUAL? <GET .TBL 0> .CHAR>
+               <SET TBL-SPOT 0>)
+              (<EQUAL? <GET .TBL 2> .CHAR>
+               <SET TBL-SPOT 2>)
+              (<EQUAL? <GET .TBL 4> .CHAR>
+               <SET TBL-SPOT 4>)
+              (<EQUAL? <GET .TBL 6> .CHAR>
+               <SET TBL-SPOT 6>)
+              (T
+               <CLEAR ,S-TEXT>
+               <SOUND 1>
+               <TELL
+"Illegal move. You can jump a peg only to a spot which is two spots away.">
+               <RFALSE>)>
+        <SET JUMPED-PEG <GET .TBL <+ .TBL-SPOT 1>>>
+        <COND (<EQUAL? <GET ,PEG-TABLE .CHAR> 1> ;"already peg in destination"
+               <CLEAR ,S-TEXT>
+               <SOUND 1>
+               <TELL
+"Illegal move. There's already a peg at spot " C <+ ,LETTER-OFFSET .CHAR> ".">
+               <RFALSE>)
+              (<EQUAL? <GET ,PEG-TABLE .JUMPED-PEG> 0>
+               <CLEAR ,S-TEXT>
+               <SOUND 1>
+               <TELL
+"Illegal move. There's no peg at spot "
+C <+ ,LETTER-OFFSET .JUMPED-PEG> " to jump.">
+               <RFALSE>)>
+        <RETURN .JUMPED-PEG>>
+
+<CONSTANT LEGAL-MOVE-TABLE
+       <PTABLE ;"0"     <PTABLE 0 0> ;"not used"
+               ;"1 = A" <PTABLE 5 3 0 0 0 0 0 0>
+               ;"2 = B" <PTABLE 4 3 0 0 0 0 0 0>
+               ;"3 = C" <PTABLE 6 4 8 5 0 0 0 0>
+               ;"4 = D" <PTABLE 2 3 9 6 11 7 0 0>
+               ;"5 = E" <PTABLE 1 3 10 7 12 8 0 0>
+               ;"6 = F" <PTABLE 3 4 8 7 14 9 16 10>
+               ;"7 = G" <PTABLE 15 10 17 11 0 0 0 0>
+               ;"8 = H" <PTABLE 3 5 6 7 16 11 18 12>
+               ;"9 = I" <PTABLE 4 6 11 10 20 14 0 0>
+              ;"10 = J" <PTABLE 5 7 12 11 0 0 0 0>
+              ;"11 = K" <PTABLE 4 7 9 10 0 0 0 0>
+              ;"12 = L" <PTABLE 5 8 10 11 21 18 0 0>
+              ;"13 = M" <PTABLE 15 14 0 0 0 0 0 0>
+              ;"14 = N" <PTABLE 6 9 16 15 0 0 0 0>
+              ;"15 = O" <PTABLE 7 10 13 14 17 16 0 0>
+              ;"16 = P" <PTABLE 6 10 8 11 14 15 18 17>
+              ;"17 = Q" <PTABLE 7 11 15 16 19 18 0 0>
+              ;"18 = R" <PTABLE 8 12 16 17 0 0 0 0>
+              ;"19 = S" <PTABLE 17 18 0 0 0 0 0 0>
+              ;"20 = T" <PTABLE 9 14 0 0 0 0 0 0>
+              ;"21 = U" <PTABLE 12 18 0 0 0 0 0 0>>>
+
+<ROUTINE PBOZ-WIN-CHECK ("AUX" (CNT 1) (PEG-NUM 0))
+        <COND (,PEG-PASSAGE-OPENED ;"since you can play it even after winning"
+               <RFALSE>)>
+        <REPEAT ()
+                <COND (<EQUAL? .CNT 22>
+                       <RETURN>)>
+                <COND (<EQUAL? <GET ,PEG-TABLE .CNT> 1>
+                       <SET PEG-NUM <+ .PEG-NUM 1>>)>
+                <SET CNT <+ .CNT 1>>>
+        <COND (<AND <EQUAL? .PEG-NUM 1>
+                    <EQUAL? <GET ,PEG-TABLE 7> 1>>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE PEG-COUNT ("AUX" (CNT 1) (PEG-NUM 0))
+        <REPEAT ()
+                <COND (<EQUAL? .CNT 22>
+                       <RETURN>)>
+                <COND (<EQUAL? <GET ,PEG-TABLE .CNT> 1>
+                       <SET PEG-NUM <+ .PEG-NUM 1>>)>
+                <SET CNT <+ .CNT 1>>>
+        <RETURN .PEG-NUM>>
+
+<CONSTANT PEG-MOVE-TABLE
+       <TABLE 0 0 0 0 0 0 0 0 0 0
+              0 0 0 0 0 0 0 0 0 0
+              0 0 0 0 0 0 0 0 0 0
+              0 0 0 0 0 0 0 0 0 0>>
+
+<CONSTANT LETTER-OFFSET <- <ASCII !\A> 1>>
+
+<GLOBAL PEG-MOVE-NUMBER 0>
+
+<GLOBAL PEG-PASSAGE-OPENED <>>
+
+<ROUTINE DISPLAY-MOVES ("AUX" X Y (CNT 0))
+        <CLEAR ,S-TEXT>
+        <COND (<EQUAL? ,PEG-MOVE-NUMBER 0>
+               <TELL "You haven't moved yet!">
+               <RTRUE>)>
+        <FONT 4> ;"non-proportional spacing"
+        <REPEAT ()
+                <SET Y <+ </ <MOD .CNT 10> 2> 1>>
+                <SET X <+ <* </ .CNT 10> 12> 1>>
+                <CCURSET .Y .X>
+                <TELL
+N <+ </ .CNT 2> 1> ") " C <+ ,LETTER-OFFSET <GET ,PEG-MOVE-TABLE .CNT>> " -> "
+C <+ ,LETTER-OFFSET <GET ,PEG-MOVE-TABLE <+ .CNT 1>>>>
+                <COND (<EQUAL? .CNT <- ,PEG-MOVE-NUMBER 2>>
+                       <RETURN>)
+                      (T
+                       <SET CNT <+ .CNT 2>>)>>
+        <FONT 1> ;"proportional spacing">
+
+<ROOM GAMING-ROOM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Gaming Room")
+      (LDESC
+"This is a plushly carpeted room draped in deeply hued velvets and satins.
+The sole exit is south.")
+      (SOUTH TO PEG-ROOM)
+      (OUT TO WEST-WING)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL CARPET)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-2>)
+      (ACTION GAMING-ROOM-F)>
+
+<ROUTINE GAMING-ROOM-F ("OPT" (RARG <>))
+        <COND (<AND <EQUAL? .RARG ,M-ENTER>
+                    <NOT <FSET? ,ZORKMID-BILL ,TOUCHBIT>>>
+               <SETG DO-J T>
+               <QUEUE I-JESTER 1>)>>
+
+<OBJECT CARPET
+       (LOC LOCAL-GLOBALS) ;"Audience Chamber and Gaming Room"
+       (DESC "carpet")
+       (SYNONYM CARPET CARPETING)
+       (ADJECTIVE PLUSH RED)
+       (ACTION CARPET-F)>
+
+<ROUTINE CARPET-F ()
+        <COND (<VERB? MOVE LOOK-UNDER RAISE ROLL>
+               <TELL
+"The carpet is quite well attached to the floor." CR>)>>
+
+<ROOM GYM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Gym")
+      (LDESC
+"Dimwit despised all forms of exercise; this room must have been a later
+addition by one of his successors. Doorways lead north and southwest.")
+      (NORTH TO WEST-WING)
+      (SW TO STEAM-BATH)
+      (FLAGS RLANDBIT ONBIT)
+      (SYNONYM GYM)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-2>)
+      (ICON GYM-ICON)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT DUMBBELL
+       (LOC GYM)
+       (DESC "dumbbell")
+       (LDESC
+"A 100-ugh dumbbell is sitting here, looking heavy.")
+       (SYNONYM DUMBBELL WEIGHTS SET)
+       (ADJECTIVE HEAVY 100-UGH)
+       (FLAGS ;PLURALBIT TAKEBIT MAGICBIT)
+       (SIZE 99)
+       (VALUE 12)
+       (ACTION DUMBELL-F)>
+
+<ROUTINE DUMBELL-F ()
+        <COND (<VERB? RAISE> ;"lift"
+               <TELL
+"You can barely get them off the ground, let alone press them." CR>)
+              (<VERB? PUSH-DIR>
+               <PERFORM ,V?ROLL-DIR ,PRSO ,PRSI>
+               <RTRUE>)
+              (<VERB? EXAMINE>
+               <TELL
+"It's a set of 100-ugh weights, small enough to hold in one hand (but
+unless you a pretty awesome athleter, not nearly light enough to hold
+in one hand)." CR>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM STEAM-BATH
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Steam Bath")
+      (LDESC
+"For generations, the Kings of Quendor have come here to sweat off excess
+pounds (which, given their excessive infatuation with chocolate truffles,
+was plenty often). The only exit is northeast.")
+      (NE TO GYM)
+      (OUT TO GYM)
+      (FLAGS RLANDBIT ONBIT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-1>)>
+\f
+;"east wing"
+
+<ROOM EAST-HALL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "East Hall")
+      (EAST TO EAST-WING IF EAST-DOOR IS OPEN)
+      (NW TO COURTYARD)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL EAST-DOOR LOCK-OBJECT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>)
+      (ACTION EAST-HALL-F)>
+
+<ROUTINE EAST-HALL-F ("OPT" (RARG <>))
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The castle's east wing lies through a massive door to the east, which is ">
+               <OPEN-CLOSED ,EAST-DOOR>
+               <TELL ". The only other exit from the hall is northwest.">)>>
+
+<OBJECT EAST-DOOR
+       (LOC LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (ADJECTIVE LARGE HEAVY OAK OAKEN)
+       (FLAGS LOCKEDBIT DOORBIT)
+       (ACTION EAST-DOOR-F)>
+
+<ROUTINE EAST-DOOR-F ()
+        <COND (<AND <VERB? UNLOCK>
+                    <FSET? ,EAST-DOOR ,LOCKEDBIT>
+                    <PRSI? ,EAST-KEY>>
+               <FCLEAR ,EAST-DOOR ,LOCKEDBIT>
+               <LOCKED-UNLOCKED ,EAST-DOOR T>)
+              (<AND <VERB? LOCK>
+                    <NOT <FSET? ,EAST-DOOR ,LOCKEDBIT>>
+                    <PRSI? ,EAST-KEY>>
+               <FSET ,EAST-DOOR ,LOCKEDBIT>
+               <LOCKED-UNLOCKED ,EAST-DOOR>)>>
+
+<ROOM EAST-WING
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "East Wing")
+      (LDESC
+"This wide corridor runs the length of the east wing of the castle. The
+corridor ends at a large door to the west. There are openings to the north,
+south and east.")
+      (WEST TO EAST-HALL IF EAST-DOOR IS OPEN)
+      (SOUTH TO CHAPEL)
+      (NORTH TO LIBRARY)
+      (EAST TO GUEST-ROOMS)
+      (GLOBAL EAST-DOOR LOCK-OBJECT)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 8)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8>)
+      (ICON EAST-WING-ICON)>
+
+<ROOM GUEST-ROOMS
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Guest Rooms")
+      (LDESC
+"This is where visitors to the castle would stay. Many stayed for decades.
+Passages lead east and west.")
+      (EAST TO SERVANTS-QUARTERS)
+      (WEST TO EAST-WING)
+      (FLAGS RLANDBIT ONBIT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-9>)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT WAND
+       (LOC GUEST-ROOMS)
+       (DESC "wand")
+       (FDESC
+"It seems that a wizard must have been a recent guest at the castle, since
+a rather typical wizardly wand is lying here.")
+       (SYNONYM WAND WANDS)
+       (ADJECTIVE TYPICAL WIZARDLY INANIMATION MAGIC)
+       (FLAGS TAKEBIT READBIT)
+       (RESEARCH
+"\"Wands are among the most useful forms of magic; the wand is merely
+pointed at the object to be ensorcelled.\"")
+       (SIZE 3)
+       (ACTION WAND-F)>
+
+<GLOBAL WAND-LIFE 5>
+
+<ROUTINE WAND-F ()
+        <COND (<VERB? EXAMINE READ>
+               <TELL
+"The name \"Fisha\" is engraved on the wand in tiny script, followed
+by the phrase \"16 minute model.\"" CR>)
+              (<AND <VERB? POINT>
+                    <PRSO? ,WAND>>
+               <MOVE ,WAND ,PROTAGONIST> ;"in case it's in a container"
+               <COND (<PRSI? ,WAND>
+                      <TELL
+"Point the wand at itself!?! It isn't made of rubber!" CR>
+                      <RTRUE>)
+                     (,TIME-STOPPED
+                      <TELL
+"The wand's magic seems as frozen as time itself." CR>
+                      <RTRUE>)
+                     (<EQUAL? ,WAND-LIFE 0>
+                      <TELL "Nothing. The wand seems to be used up." CR>
+                      <RTRUE>)>
+               <SETG WAND-LIFE <- ,WAND-LIFE 1>>
+               <COND (<AND <GETP ,PRSI ,P?INANIMATE-DESC>
+                           <FSET? ,PRSI ,ANIMATEDBIT>>
+                      <COND (<PRSI? ,FOX>
+                             <FSET ,PRSI ,WEARBIT>)>
+                      <QUEUE <GETP ,PRSI ,P?ANIMATE-ROUTINE> 17>
+                      <FCLEAR ,PRSI ,ANIMATEDBIT>
+                      <FCLEAR ,PRSI ,ACTORBIT>
+                      <FSET ,PRSI ,TOUCHBIT>
+                      <THIS-IS-IT ,PRSI>
+                      <TELL <GETP ,PRSI ,P?WAND-TEXT> CR>)
+                     (<OR <FSET? ,PRSI ,BLACKBIT>
+                          <FSET? ,PRSI ,WHITEBIT>>
+                      <TELL
+"The " D ,PRSO " seems to grow sluggish for a moment, but
+there is no other effect." CR>)
+                     (<AND <VERB? POINT>
+                           <PRSI? ,JESTER>>
+                      <TELL
+"The jester's expression turns stony. In fact, the jester himself turns stony,
+as he becomes a statue! After a moment, hairline cracks begin forming across
+the statue. The cracks widen and multiply, and the entire statue collapses into
+a cloud of dust! You hear an echo of laughter as the dust disperses.">
+                      <COND (<IN? ,SHELL-TABLE ,HERE>
+                             <TELL
+" The table and shells disappear as well.">)>
+                      <CRLF>
+                      <REMOVE-J>
+                      <SETG J-DISPOSED ,MOVES>
+                      <RTRUE>)
+                     (<PRSI? ,BEDBUG>
+                      <REMOVE ,BEDBUG>
+                      <TELL
+"The bedbug freezes, becoming a small armored tank. You are
+surrounded by raucous laughter from an invisible source, and
+the bedbug/tank disappears!" CR>)
+                     (<PRSI? ,LARGE-FLY ,LARGER-FLY ,EVEN-LARGER-FLY
+                             ,LARGEST-FLY>
+                      <TELL
+"Zap! A bolt of magic just misses the fly. Oh, well. It seems that even
+though it's large for a fly, it's small for a magic wand target." CR>)
+                     (<PRSI? ,OTTO>
+                      <REMOVE ,OTTO>
+                      <QUEUE I-STONE-TO-OTTO 17>
+                      <TELL "Otto ">
+                      <COND (<AND <FSET? ,SPYGLASS ,TRYTAKEBIT>
+                                  <NOT <IN? ,SPYGLASS ,OTTO>>>
+                             <MOVE ,SPYGLASS ,OTTO>
+                             <TELL "grabs the spyglass just before he ">)>
+                      <TELL
+"transforms into a massive stone toad, just like the ones that flank the
+Flatheadia Courthouse. His weight is now too much for even the largest of
+lily pads to bear, and he sinks into the swamp with a sickening slurp." CR>)
+                     (<PRSI? ,BROGMOID>
+                      <TELL
+"A few of the brogmoid's cells may have frozen; if the wand were twenty
+bloits long, it might have a chance of affecting this enormous brogmoid." CR>)
+                     (<PRSI? ,SICKLY-WITCH ,PRICKLY-WITCH>
+                      <TELL
+"A magical shield springs up around the witch. \"Your weak powers are
+useless against us, simple adventurer!\" cackles the crone." CR>)
+                     (<FSET? ,PRSI ,PLANTBIT>
+                      <TELL
+"No effect;" T ,PRSI " wasn't all that animate to begin with." CR>)
+                     (<PRSI? ,UNICORNS>
+                      <JIGS-UP
+"One of the unicorns stiffens; its mate is understandably disturbed and, in an
+un-unicorn-like display of temper, impales you on the tip of a pointy horn.">)
+                     (<PRSI? ,THOUSANDS-OF-SNAKES>
+                      <TELL
+"One of the snakes stops moving, but is instantly swallowed up
+by the writhing mass." CR>)
+                     (<PRSI? ,ME>
+                      <JIGS-UP
+"You turn into a handsome statue of yourself. A pigeon swoops down, lands on
+your head, and gives a pigeony whistle which translates roughly to, \"Hey,
+guys, I've found a really great new statue for shitting on!\" Several thousand
+additional pigeons swoop down, and you're crushed to dust under the resultant
+tonnage of excrement.">)
+                     (<PRSI? ,EXECUTIONER>
+                      <JIGS-UP
+"The executioner solidifies into a stone statue of himself! After a pair
+of grunting guards finish dragging him away and a replacement executioner
+arrives, you are led into a back room, where people who deserve something
+even worse than hanging are taken.">)
+                     (T
+                      <TELL
+"You feel a crackle of magical energy, but there doesn't seem to be any
+effect on" TR ,PRSI>)>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT CASTLE>
+
+<ROOM SERVANTS-QUARTERS
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Servants' Quarters")
+      (LDESC
+"These are the spartan rooms where the servants lived (if you can actually call
+this \"living\"). A passage leads west and a narrow stair spirals upward.")
+      (WEST TO GUEST-ROOMS)
+      (UP TO JESTERS-QUARTERS)
+      (FLAGS RLANDBIT)
+      (SYNONYM QUARTERS)
+      (ADJECTIVE SERVANT\'S)
+      (GLOBAL STAIRS)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-10>)>
+
+<ROOM CHAPEL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Chapel")
+      (LDESC
+"None of the Flatheads were particularly religious, but that didn't stop
+Dimwit from building the biggest chapel in all of Quendor. The exit is north,
+at the rear of the chapel. Just below the altar is a small trap door.")
+      (NORTH TO EAST-WING)
+      (DOWN TO CRYPT IF TRAP-DOOR IS OPEN)
+      (SYNONYM CHAPEL)
+      (GLOBAL TRAP-DOOR)
+      (FLAGS RLANDBIT ONBIT)
+      (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-8>)
+      (ICON CHAPEL-ICON)>
+
+<OBJECT CHAPEL-ALTAR
+       (LOC CHAPEL)
+       (DESC "altar")
+       (SYNONYM ALTAR)
+       (FLAGS NDESCBIT VOWELBIT SURFACEBIT SEARCHBIT CONTBIT OPENBIT)>
+
+<END-SEGMENT>
+\f
+<BEGIN-SEGMENT LOWER>
+
+"lower level"
+
+<ROOM LOWER-HALL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Lower Hall")
+      (LDESC
+"This large hall, barely illuminated by your light, has seen its better
+days; based on the dust and debris, the lower levels of the castle probably
+haven't been maintained since Dimwit's death. Stairs lead up and down; the
+latter stair looks particularly forbidding. Passages head off to the north,
+south, southeast, and southwest.")
+      (NORTH TO LABORATORY)
+      (SOUTH TO KENNELS)
+      (SW TO G-U-HIGHWAY)
+      (SE TO ROYAL-ZOO)
+      (DOWN TO LOWEST-HALL)
+      (UP TO GREAT-HALL)
+      (FLAGS RLANDBIT)
+      (GLOBAL STAIRS)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-6>)>
+
+<ROOM LABORATORY
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Laboratory")
+      (LDESC
+"You have entered the lab that was affectionately known as Froblo Park.
+The main exit is south, but there's a narrow doorway on the north wall.")
+      (SOUTH TO LOWER-HALL)
+      (NORTH TO TESTING-ROOM)
+      (FLAGS RLANDBIT)
+      (SYNONYM LABORATORY)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-6>)
+      (ICON LABORATORY-ICON)>
+
+<OBJECT SCREWDRIVER
+       (LOC LABORATORY)
+       (DESC "screwdriver")
+       (FDESC "Sitting on the lab bench is an old screwdriver.")
+       (SYNONYM SCREWDRIVER DRIVER)
+       (ADJECTIVE SCREW OLD)
+       (FLAGS TAKEBIT MAGICBIT)
+       (VALUE 12)>
+
+<ROOM TESTING-ROOM
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Testing Room")
+      (LDESC
+"This is where certain dangerous experiments would take place. There
+are two large booths, one on the left side of the room, the other on
+the right side. The only exit is south.")
+      (SOUTH TO LABORATORY)
+      (OUT TO LABORATORY)
+      (FLAGS RLANDBIT)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-6>)>
+
+<OBJECT LEFT-BOOTH
+       (LOC TESTING-ROOM)
+       (DESC "left booth")
+       (SYNONYM BOOTH)
+       (ADJECTIVE LEFT)
+       (FLAGS NDESCBIT VEHBIT INBIT DROPBIT CONTBIT OPENBIT SEARCHBIT)
+       (GENERIC G-BOOTH-F)
+       (CAPACITY 60)
+       (ACTION BOOTH-F)>
+
+<OBJECT RIGHT-BOOTH
+       (LOC TESTING-ROOM)
+       (DESC "right booth")
+       (SYNONYM BOOTH)
+       (ADJECTIVE RIGHT)
+       (FLAGS NDESCBIT VEHBIT INBIT DROPBIT CONTBIT OPENBIT SEARCHBIT)
+       (GENERIC G-BOOTH-F)
+       (CAPACITY 60)
+       (ACTION BOOTH-F)>
+
+<ROUTINE G-BOOTH-F (TBL LEN)
+        <COND (<IN? ,PROTAGONIST ,LEFT-BOOTH>
+               ,LEFT-BOOTH)
+              (<IN? ,PROTAGONIST ,RIGHT-BOOTH>
+               ,RIGHT-BOOTH)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE BOOTH-F ("OPTIONAL" (VARG <>))
+        <COND (<AND .VARG
+                    <NOT <EQUAL? .VARG ,M-ENTER>>>
+               <RFALSE>)
+              (.VARG
+               <COND (<FSET? ,PRSO ,TOUCHBIT>
+                      <RFALSE>)
+                     (T
+                      <TELL " ">
+                      <PERFORM ,V?EXAMINE ,PRSO>
+                      <RTRUE>)>)
+              (<VERB? EXAMINE>
+               <TELL
+"The only feature of the booth is an ominous black button." CR>)>>
+
+<OBJECT LEFT-BOOTH-BUTTON
+       (LOC LEFT-BOOTH)
+       (DESC "ominous black button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE OMINOUS BLACK)
+       (FLAGS NDESCBIT)
+       (GENERIC G-BUTTON-F)
+       (ACTION BOOTH-BUTTON-F)>
+
+<OBJECT RIGHT-BOOTH-BUTTON
+       (LOC RIGHT-BOOTH)
+       (DESC "ominous black button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE OMINOUS BLACK)
+       (GENERIC G-BUTTON-F)
+       (FLAGS NDESCBIT)
+       (ACTION BOOTH-BUTTON-F)>
+
+<ROUTINE G-BUTTON-F (TBL LEN)
+        <COND (<IN? ,PROTAGONIST ,RIGHT-BOOTH>
+               ,RIGHT-BOOTH-BUTTON)
+              (<IN? ,PROTAGONIST ,LEFT-BOOTH>
+               ,LEFT-BOOTH-BUTTON)
+              (T
+               ;<TELL ,YOU-CANT-SEE-ANY "button here.]" CR>
+               ,NOT-HERE-OBJECT ;,ROOMS)>>
+
+<GLOBAL TURNED-INTO <>>
+
+<ROUTINE BOOTH-BUTTON-F ("AUX" OTHER-BOOTH THE-FLY)
+       <COND (<VERB? PUSH>
+              <COND (,ALLIGATOR
+                     <TELL "Impossible, in your current state." CR>
+                     <RTRUE>)>
+              <REMOVE ,LEFT-BOOTH-BUTTON>
+              <REMOVE ,RIGHT-BOOTH-BUTTON>
+              <SET OTHER-BOOTH <COND (<IN? ,PROTAGONIST ,RIGHT-BOOTH>
+                                      ,LEFT-BOOTH)
+                                     (T
+                                      ,RIGHT-BOOTH)>>
+              <SET THE-FLY <FIRST? .OTHER-BOOTH>>
+              <COND (<OR <NOT .THE-FLY> ;"other booth is empty"
+                         <NEXT? .THE-FLY>> ;"two things in other booth"
+                     <TELL ,NOTHING-HAPPENS>)
+                    (T
+                     <QUEUE I-UNTURN 5>
+                     <SETG TURNED-INTO .THE-FLY>
+                     <DEQUEUE I-UNALLIGATOR>
+                     <TELL "You turn into" A .THE-FLY>
+                     <COND (<AND <EQUAL? .THE-FLY ,WORM>
+                                 <VISIBLE? ,ROOSTER>
+                                 <FSET? ,ROOSTER ,ANIMATEDBIT>>
+                            <JIGS-UP
+". The rooster happily nibbles you up for a snack.">)
+                           (<AND <EQUAL? .THE-FLY ,ROOSTER>
+                                 <VISIBLE? ,FOX>
+                                 <FSET? ,FOX ,ANIMATEDBIT>>
+                            <JIGS-UP
+". The fox is only too glad to make you its dinner.">)
+                           (<FIRST? ,PROTAGONIST>
+                            <TELL ", dropping your possessions.">
+                            <ROB ,PROTAGONIST <LOC ,PROTAGONIST>>)
+                           (T
+                            <TELL ".">)>
+                     <CRLF>)> 
+              <MOVE ,LEFT-BOOTH-BUTTON ,LEFT-BOOTH>
+              <MOVE ,RIGHT-BOOTH-BUTTON ,RIGHT-BOOTH>)>>
+
+<ROUTINE I-UNTURN ()
+        <RETURN-FROM-MAP>
+        <TELL
+"   Waves of relief. You're no longer" AR ,TURNED-INTO>
+        <SETG TURNED-INTO <>>
+        <RTRUE>>
+
+<ROUTINE TO-SPEAK-OF (STRING)
+        <TELL "Ummm..." A ,TURNED-INTO " has no " .STRING " to speak of." CR>>
+
+<ROUTINE GOOD-MEAL (OBJ)
+        <REMOVE .OBJ>
+        <TELL "Yum!">
+        <COND (<G? ,HUNGER-COUNT 0>
+               <TELL " Your hunger fades." CR>
+               <DEQUEUE I-HUNGER>
+               <SETG HUNGER-COUNT 0>
+               <INC-SCORE 20>)
+              (T
+               <CRLF>)>>
+
+<ROOM KENNELS
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Kennels")
+      (LDESC
+"This was once where the royal bloodhounds lived. Considering the size
+of the leash and collar fragments scattered around, the royal bloodhounds
+were BIG. Passages lead east and north.")
+      (NORTH TO LOWER-HALL)
+      (EAST TO ROYAL-ZOO)
+      (FLAGS RLANDBIT)
+      (SYNONYM KENNEL KENNELS)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-6>)
+      (ICON KENNELS-ICON)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT TOBOGGAN
+       (LOC KENNELS)
+       (DESC "toboggan")
+       (SYNONYM TOBOGGAN SLED INSCRIPTION)
+       (FLAGS TAKEBIT READBIT VEHBIT CONTBIT OPENBIT SEARCHBIT SURFACEBIT)
+       (CAPACITY 30)
+       (SIZE 20)
+       (ACTION TOBOGGAN-F)
+       (TEXT
+"A large inscription says, \"Made by the Frobozz Magic Toboggan Company.\"
+Below that is a faded image of a blooming morgia plant, with the name
+\"Morgiabud.\" It's possible that this sled may have once belonged to
+publishing giant William Randolph Flathead (a.k.a. \"Citizen Flathead\").")>
+
+<ROUTINE TOBOGGAN-F ("OPTIONAL" VARG)
+        <COND (.VARG
+               <RFALSE>)
+              (<VERB? EXAMINE>
+               <COND (<NOUN-USED? ,TOBOGGAN ,W?INSCRIPTION>
+                      <PERFORM ,V?READ ,TOBOGGAN>
+                      <RTRUE>)
+                     (T
+                      <TELL
+"This one-person sled bears a small inscription. ">
+                      <RFALSE> ;"there's no one on the toboggan, etc.")>)
+              (<AND <VERB? ENTER>
+                    <EQUAL? ,HERE ,GLACIER>>
+               <MOVE ,TOBOGGAN ,MIRROR-LAKE>
+               <COND (<NOT ,ENCHANTED-ORB>
+                      <SETG ENCHANTED-ORB <COND (<PROB 25> ,MILKY-ORB)
+                                                (<PROB 33> ,SMOKY-ORB)
+                                                (<PROB 50> ,FIERY-ORB)
+                                                (T ,GLITTERY-ORB)>>)>
+               <TELL
+"As you sit on the toboggan, it begins to slide down the mountain, gathering
+speed as it goes. The passing landscape begins to blur, and then even the blur
+is gone as the icy wind forces your eyes shut. Suddenly, with a jolt like a
+mighty hand grabbing you, you are still! You open your eyes" ,ELLIPSIS>
+               <GOTO ,TOBOGGAN>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT LOWER>
+
+<ROOM ROYAL-ZOO
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Royal Zoo")
+      (LDESC
+"Dimwit loved zoos, because he loved imprisonment of any kind -- if the
+dungeons were full of prisoners he could at least get some joy from
+throwing a couple of minxes behind bars. This zoo, with 69,105 cages,
+is easily the largest in Quendor. There are passages to the west and
+northwest, and a wide tunnel leads east.")
+      (NW TO LOWER-HALL)
+      (WEST TO KENNELS)
+      (EAST TO WEST-SHORE)
+      (FLAGS RLANDBIT)
+      (SYNONYM ZOO)
+      (ADJECTIVE ROYAL)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-7>)
+      (ICON ROYAL-ZOO-ICON)>
+
+<OBJECT CAGE
+       (LOC ROYAL-ZOO)
+       (DESC "cage")
+       (FDESC
+"The zoo has been extensively looted; only one of the many nearby cages
+still seems to be occupied.")
+       (SYNONYM CAGE)
+       (FLAGS CONTBIT SEARCHBIT TRANSBIT)
+       (ACTION CAGE-F)>
+
+<ROUTINE CAGE-F ()
+        <COND (<VERB? OPEN>
+               <COND (<AND <IN? ,SNAKE ,CAGE>
+                           <FSET? ,SNAKE ,ANIMATEDBIT>>
+                      <JIGS-UP
+"As you open the door, the snake, with blurring speed, strikes at your hand.
+Tendrils of poison reach through your veins and grab your heart...">)
+                     (T
+                      <FSET ,CAGE ,TOUCHBIT>
+                      <RFALSE>)>)
+              (<VERB? COUNT>
+               <TELL "Thousands." CR>)
+              (<VERB? ENTER>
+               <TELL "The cage is too small for a human." CR>)>>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT SNAKE
+       (LOC CAGE)
+       (DESC "snake")
+       (SYNONYM SNAKE ROPE)
+       (FLAGS TAKEBIT ANIMATEDBIT)
+       (INANIMATE-DESC "rope")
+       (WAND-TEXT
+"The snake shivers and shimmers and is then still. Too still. You approach,
+tentatively at first, then with more conviction. The snake is gone, replaced
+by (or turned into!) a good, heavy rope.")
+       (ANIMATE-ROUTINE I-W-SNAKE)
+       (ACTION SNAKE-F)>
+
+<ROUTINE SNAKE-F ()
+        <COND (<AND <VERB? RESEARCH>
+                    <NOUN-USED? ,SNAKE ,W?SNAKE>>
+               <TELL "\"A common animal, best kept caged.\"" CR>)
+              (<FSET? ,SNAKE ,ANIMATEDBIT>
+               <COND (<VERB? LET-OUT>
+                      <PERFORM ,V?OPEN ,CAGE>
+                      <RTRUE>)
+                     (<VERB? EXAMINE MEASURE>
+                      <TELL
+"The snake is thin and perhaps as much as twenty feet long." CR>)>)
+              ;"clause from here on down are for the rope"
+              (<AND <VERB? TIE>
+                    <PRSO? ,SNAKE>>
+               <COND (<PRSI? ,SPIRE>
+                      <SETG ROPE-PLACED T>
+                      <MOVE ,SNAKE ,HERE>
+                      <TELL
+"You tie the rope to the spire, dropping the other end down the cliff face.
+It reaches most of the way toward the lower ledge." CR>)
+                     (<FSET? ,PRSI ,PLANTBIT> ;"trees"
+                      <WASTES>)
+                     (T
+                      <TELL ,YOU-CANT "tie the rope to" TR ,PRSI>)>)
+              (<AND <VERB? UNTIE>
+                    ,ROPE-PLACED>
+               <SETG ROPE-PLACED <>>
+               <TELL "You untie the rope from the spire." CR>)
+              (<AND <VERB? CLIMB-DOWN>
+                    ,ROPE-PLACED>
+               <DO-WALK ,P?DOWN>)
+              (<VERB? EXAMINE MEASURE>
+               <TELL "The rope is about twenty feet long." CR>)>>
+
+<ROUTINE I-W-SNAKE ("AUX" (TOLD <>))
+        <FSET ,SNAKE ,ANIMATEDBIT>
+        <COND (<IN? ,SNAKE ,LAKE-BOTTOM>
+               <REMOVE ,SNAKE>)
+              (<VISIBLE? ,SNAKE>
+               <RETURN-FROM-MAP>
+               <SET TOLD T>
+               <TELL
+"   The rope ripples with increasing force. It has returned to the form of
+a snake! The snake squirms with anger">
+               <COND (<AND <EQUAL? ,HERE ,UPPER-LEDGE>
+                           ,ROPE-PLACED>
+                      <TELL
+", uncurls from the spire, and drops out of sight!" CR>)
+                     (<AND <IN? ,SNAKE ,CAGE>
+                           <NOT <FSET? ,CAGE ,OPENBIT>>>
+                      <TELL ,PERIOD-CR>)
+                     (<AND <ULTIMATELY-IN? ,SNAKE>
+                           <NOT <IN? ,SNAKE ,WALDO>>>
+                      <JIGS-UP " and bites you viciously on the wrist.">)
+                     (T
+                      <COND (<FSET? <LOC ,SNAKE> ,ACTORBIT>
+                             <TELL
+", nearly bites" T <LOC ,SNAKE> " on the wrist, drops to the ground,">)>
+                      <TELL " and wriggles quickly out of sight." CR>)>)
+              (<AND <EQUAL? ,HERE ,LOWER-LEDGE>
+                    ,ROPE-PLACED>
+               <RETURN-FROM-MAP>
+               <SET TOLD T>
+               <TELL
+"   A writhing snake drops from above! It strikes out at you but, fortunately,
+misses. Hissing angrily, it disappears into a narrow crack." CR>)>
+        <SETG ROPE-PLACED <>>
+        <COND (<OR <NOT <IN? ,SNAKE ,CAGE>>
+                   <FSET? ,CAGE ,OPENBIT>>
+               <REMOVE ,SNAKE>)>
+        <COND (.TOLD
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<END-SEGMENT>
+
+<BEGIN-SEGMENT LOWER>
+
+<ROOM LOWEST-HALL
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Lowest Hall")
+      (LDESC
+"You get the feeling that no ray of light has touched these walls in ages.
+Few have even ventured down here since the Curse was laid upon the castle
+those many years ago. A decrepit stair leads upward, and there's an opening
+to the north. The bottom of a steep, gravelly passage is visible to the
+east. To the south is the most massively reinforced door you've ever seen.
+A rickety ladder can take you down to even lower domains.")
+      (NORTH TO PASSAGE-STORAGE-ROOM)
+      (SOUTH TO VAULT IF VAULT-DOOR IS OPEN)
+      (EAST SORRY "You can't get a footing on the steep, gravelly passage.")
+      (UP TO LOWER-HALL)
+      (FLAGS RLANDBIT)
+      (DOWN TO PITS)
+      (GLOBAL VAULT VAULT-DOOR LOCK-OBJECT FIXED-LADDER STAIRS)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>)>
+
+<OBJECT VAULT-DOOR
+       (LOC LOCAL-GLOBALS)
+       (DESC "vault door")
+       (SYNONYM DOOR)
+       (ADJECTIVE VAULT)
+       (FLAGS DOORBIT LOCKEDBIT)
+       (ACTION VAULT-DOOR-F)>
+
+<ROUTINE VAULT-DOOR-F ()
+        <COND (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,LOWEST-HALL>>
+               <TELL "A large dial is set into the center of the door. ">
+               <RFALSE>)
+              (<AND <VERB? LOCK>
+                    <PRSO? ,VAULT-DOOR>>
+               <COND (<FSET? ,VAULT-DOOR ,OPENBIT>
+                      <DO-FIRST "close" ,VAULT-DOOR>)
+                     (<FSET? ,VAULT-DOOR ,LOCKEDBIT>
+                      <TELL "It is!" CR>)
+                     (T
+                      <SETG P-NUMBER <RANDOM 2570>>
+                      <PERFORM ,V?SET ,DIAL ,INTNUM>
+                      <RTRUE>)>)
+              (<AND <VERB? UNLOCK>
+                    <FSET? ,PRSI ,KEYBIT>>
+               <TELL "This is a combination lock, not a key lock." CR>)>>
+
+<OBJECT DIAL
+       (LOC LOWEST-HALL)
+       (DESC "dial")
+       (SYNONYM DIAL)
+       (ADJECTIVE LARGE)
+       (FLAGS NDESCBIT)
+       (OWNER VAULT-DOOR)
+       (ACTION DIAL-F)>
+
+<GLOBAL DIAL-NUMBER 0>
+
+<ROUTINE DIAL-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The dial is currently turned to " N ,DIAL-NUMBER ". It can be set to any
+number between 1 and 2570." CR>)
+              (<AND <VERB? SET-DIR>
+                    <PRSI? ,LEFT-RIGHT>>
+               <PERFORM ,V?SET ,DIAL>
+               <RTRUE>)
+              (<VERB? SET>
+               <COND (<NOT ,PRSI>
+                      <TELL
+"[You must say what number to turn the dial to, as in TURN DIAL TO 920.]" CR>)
+                     (<NOT <PRSI? ,INTNUM>>
+                      <IMPOSSIBLES>)
+                     (<OR <G? ,P-NUMBER 2570>
+                          <L? ,P-NUMBER 1>>
+                      <TELL "That's not one of the numbers on the dial." CR>)
+                     (<EQUAL? ,DIAL-NUMBER ,P-NUMBER>
+                      <TELL
+"The dial is already set to " N ,P-NUMBER ,PERIOD-CR>)
+                     (<AND <NOT <FSET? ,VAULT-DOOR ,OPENBIT>>
+                           <NOT <FSET? ,VAULT-DOOR ,LOCKEDBIT>>>
+                      <SETG DIAL-NUMBER ,P-NUMBER>
+                      <FSET ,VAULT-DOOR ,LOCKEDBIT>
+                      <TELL
+"The tumblers tumble as the vault door re-locks." CR>)
+                     (<AND <FSET? ,GLOVE ,WORNBIT>
+                           <FSET? ,VAULT-DOOR ,LOCKEDBIT>>
+                      <SETG DIAL-NUMBER <RANDOM 2570>>
+                      <FCLEAR ,VAULT-DOOR ,LOCKEDBIT>
+                      <TELL
+"As you turn the dial with your gloved hand, you can almost feel the tumblers
+turning as though they were an extension of your own fingers! Fascinated, you
+keep spinning, and as you pass " N ,DIAL-NUMBER ", you feel a sense of tactile
+perfection, and stop. A faint click ripples up your arm." CR>) 
+                     (T
+                      <SETG DIAL-NUMBER ,P-NUMBER>
+                      <TELL
+"The dial is now set to " N ,DIAL-NUMBER ,PERIOD-CR>)>)>>
+
+<ROOM VAULT
+      (LOC ROOMS)
+      (REGION "Flatheadia")
+      (DESC "Vault")
+      (LDESC
+"This was just the vault where Dimwit stored his trifles; his valuables
+were stored in a hidden vault buried seven miles under the Flathead
+Mountains, accessible only by a chain of sixty-three secret teleportation
+spells. The only exit is north.")
+      (NORTH TO LOWEST-HALL IF VAULT-DOOR IS OPEN)
+      (OUT TO LOWEST-HALL IF VAULT-DOOR IS OPEN)
+      (FLAGS RLANDBIT)
+      (GLOBAL VAULT-DOOR)
+      (SYNONYM VAULT)
+      (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>)
+      (ICON VAULT-ICON)
+      (ACTION VAULT-F)>
+
+<ROUTINE VAULT-F ("OPT" (RARG <>))
+        <COND (.RARG
+               <RFALSE>)
+              (<AND <VERB? OPEN CLOSE LOCK UNLOCK>
+                    <PRSO? ,VAULT ,GLOBAL-HERE>>
+               <PERFORM-PRSA ,VAULT-DOOR ,PRSI>)>>
+
+<OBJECT STOCK-CERTIFICATE
+       (LOC VAULT)
+       (DESC "stock certificate")
+       (SYNONYM CERTIFICATE STOCK)
+       (ADJECTIVE STOCK RARE)
+       (FLAGS TAKEBIT BURNBIT READBIT MAGICBIT)
+       (VALUE 12)
+       (SIZE 2)
+       (TEXT
+"The certificate reads \"FrobozzCo International -- 923,130,877 shares.\"")>
+
+<ROOM PASSAGE-STORAGE-ROOM
+       (LOC ROOMS)
+        (REGION "Flatheadia")
+       (DESC "Passage Storage Room")
+       (LDESC
+"This is a tremendous warehouse where passageways and tunnels would be stored
+before being installed as part of the Great Underground Empire. The only exit
+is south.")
+       (SOUTH TO LOWEST-HALL)
+       (OUT TO LOWEST-HALL)
+       (FLAGS RLANDBIT)
+       (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>)
+       (ICON PASSAGE-STORAGE-ICON)>
+
+<BEGIN-SEGMENT 0>
+
+<OBJECT NW-SE-PASSAGE
+       (LOC PASSAGE-STORAGE-ROOM)
+       (DESC "northwest-southeast passage")
+       (SYNONYM PASSAGE PASSAGEWAY)
+       (ADJECTIVE MAGIC NW ;NORTHWEST NW-SE SLIGHTLY IRREGULAR)
+       (FLAGS TAKEBIT TRYTAKEBIT)
+       (DESCFCN NW-SE-PASSAGE-F)
+       (OWNER <>)
+       (SIZE 25)
+       (ACTION PASSAGE-F)>
+
+<ROUTINE NW-SE-PASSAGE-F (OARG)
+        <COND (<EQUAL? .OARG ,M-OBJDESC?>
+               <RTRUE>)>
+        <TELL "   ">
+        <D-PASSAGE ,NW-SE-PASSAGE>>
+
+<OBJECT N-S-PASSAGE
+       (LOC PASSAGE-STORAGE-ROOM)
+       (DESC "north-south passage")
+       (SYNONYM PASSAGE PASSAGEWAY)
+       (ADJECTIVE MAGIC NORTH-SOUTH N-S SLIGHTLY DAMAGED)
+       (FLAGS TAKEBIT TRYTAKEBIT)
+       (DESCFCN N-S-PASSAGE-F)
+       (OWNER <>)
+       (SIZE 25)
+       (ACTION PASSAGE-F)>
+
+<ROUTINE N-S-PASSAGE-F (OARG)
+        <COND (<EQUAL? .OARG ,M-OBJDESC?>
+               <RTRUE>)>
+        <TELL "   ">
+        <D-PASSAGE ,N-S-PASSAGE>>
+
+<ROUTINE PASSAGE-F ()
+        <COND (<AND <VERB? TAKE>
+                    <FSET? ,PRSO ,TRYTAKEBIT>>
+               <MOVE ,PRSO ,PROTAGONIST>
+               <MOVE ,NOTICE ,HERE>
+               <FCLEAR ,N-S-PASSAGE ,TRYTAKEBIT>
+               <FCLEAR ,NW-SE-PASSAGE ,TRYTAKEBIT>
+               <FSET ,PRSO ,TOUCHBIT>
+               <TELL
+"As you take" T ,PRSO ", a notice flutters to the ground." CR>)
+              (<VERB? EXAMINE>
+               <COND (<FSET? ,PRSO ,T