zorkzero/lake.zap

1352 lines
36 KiB
Plaintext

.SEGMENT "LAKE"
.FUNCT WEST-SHORE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "What's a castle without a lake? Dimwit loved lakes, but hated to go outside, so he had one constructed in his extensive cellars. Once a lovely lake, teeming with life, its waters have grown stagnant. The scummy surface stretches off to the east, and a tunnel leads west."
RTRUE
.FUNCT NORTH-SHORE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "Stretching off to the south is an impressive sight: a large lake, completely contained within the castle. A red dock protrudes into the lake"
IN? YACHT,HERE \?CND4
PRINT YACHT-MOORED
?CND4: PRINTI ". Tunnels lead north and northeast."
RTRUE
.FUNCT EAST-SHORE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "A narrow beach lies between the lake, to the west, and a tall mountain, to the east. It's hard to remember that you're still within the castle. A blue dock juts out into the lake"
IN? YACHT,HERE \?CND4
PRINT YACHT-MOORED
?CND4: PRINTC 46
RTRUE
.FUNCT SOUTH-SHORE-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
PRINTI "The sandy beach on the south side of the lake is very wide -- in fact, it simply blends into a wide desert to the south. To the north, a green dock extends into the lake"
IN? YACHT,HERE \?CND4
PRINT YACHT-MOORED
?CND4: PRINTI ". The shore curves around toward the west."
RTRUE
?CCL3: EQUAL? RARG,M-END \FALSE
IN? PROTAGONIST,CAMEL \FALSE
FSET? CAMEL,TOUCHBIT /FALSE
ZERO? CAMEL-THIRSTY /FALSE
FSET CAMEL,TOUCHBIT
ICALL1 RETURN-FROM-MAP
PRINTR " The camel takes one look at the scummy water and wheezes mournfully through parched lips."
.FUNCT DOCK-F,VARG
EQUAL? PRSA,V?ENTER \FALSE
IN? BEDBUG,HERE \FALSE
ZERO? TIME-STOPPED \FALSE
CALL2 DO-WALK,P?NORTH
RSTACK
.FUNCT YACHT-F,VARG
ZERO? VARG /?CCL3
EQUAL? VARG,M-ENTER \FALSE
FSET? PRSO,TOUCHBIT \?CCL8
SET 'COMPASS-CHANGED,TRUE-VALUE
RFALSE
?CCL8: SET 'COMPASS-CHANGED,TRUE-VALUE
PRINTR " The controls seem worthy of closer examination. A gangway leads belowdecks."
?CCL3: EQUAL? PRSA,V?ENTER \?CCL10
IN? PROTAGONIST,HERE \?CCL10
PRINTR "You can only board the yacht from the dock."
?CCL10: EQUAL? PRSA,V?EXIT \?CCL14
EQUAL? HERE,LAKE-FLATHEAD \?CND15
ICALL PERFORM,V?ENTER,LAKE-FLATHEAD
RTRUE
?CND15: EQUAL? HERE,WEST-SHORE \?CCL19
PUSH WEST-DOCK
JUMP ?CND17
?CCL19: EQUAL? HERE,NORTH-SHORE \?CCL21
PUSH NORTH-DOCK
JUMP ?CND17
?CCL21: EQUAL? HERE,EAST-SHORE \?CCL23
PUSH EAST-DOCK
JUMP ?CND17
?CCL23: PUSH SOUTH-DOCK
?CND17: MOVE PROTAGONIST,STACK
SET 'OLD-HERE,FALSE-VALUE
SET 'COMPASS-CHANGED,TRUE-VALUE
PRINTI "You step off the boat, onto the dock."
CRLF
EQUAL? VERBOSITY,1 \?CCL26
CRLF
ICALL1 SAY-HERE
CRLF
RTRUE
?CCL26: EQUAL? VERBOSITY,2 \TRUE
CRLF
ICALL1 V-LOOK
RTRUE
?CCL14: EQUAL? PRSA,V?SINK \?CCL29
SET 'AWAITING-REPLY,1
ICALL QUEUE,I-REPLY,2
PRINTR "You have a torpedo, maybe?"
?CCL29: EQUAL? PRSA,V?SET \?CCL31
EQUAL? P-PRSA-WORD,W?STEER \?CCL31
PRINTR "There's no wheel."
?CCL31: EQUAL? PRSA,V?THROW-FROM \FALSE
EQUAL? PRSI,YACHT \FALSE
ICALL PERFORM,V?PUT,PRSO,WATER
RTRUE
.FUNCT YACHT-CONTROLS-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The controls are quite simple, consisting of a small brass plaque and an ornate compass rose. There are buttons on the four cardinal points of the rose: a red button at the north point, blue at the east, green south, and yellow west. A fifth button, white, is at the center of the rose."
.FUNCT YACHT-BUTTON-F
EQUAL? PRSA,V?PUSH \FALSE
FSET? OUTER-GATE,OPENBIT /?CTR5
ZERO? TIME-STOPPED /?CCL6
?CTR5: PRINT NOTHING-HAPPENS
RTRUE
?CCL6: FSET? SEAMANS-CAP,WORNBIT /?CCL10
PRINTI "You meet an invisible resistance. A peal of laughter from behind turns out to be the jester. ""The button may seem like a demon, telling landlubber from seaman; but the truth's not so queer -- you need nautical gear!"""
ICALL1 J-EXITS
RTRUE
?CCL10: EQUAL? PRSO,WHITE-BUTTON \?CCL12
EQUAL? HERE,LAKE-FLATHEAD \?CCL15
ICALL2 DEQUEUE,I-YACHT
PRINT NOTHING-HAPPENS
RTRUE
?CCL15: SET 'YACHT-DESTINATION,LAKE-FLATHEAD
ICALL2 I-YACHT,TRUE-VALUE
RTRUE
?CCL12: IN? DB,HOLD /?CCL17
PRINTR "A message flashes: ""Warning -- diving bell lowered!"""
?CCL17: EQUAL? PRSO,RED-BUTTON \?CCL19
EQUAL? HERE,NORTH-SHORE \?CCL22
PRINT NOTHING-HAPPENS
RTRUE
?CCL22: SET 'YACHT-DESTINATION,NORTH-SHORE
ICALL2 I-YACHT,TRUE-VALUE
RTRUE
?CCL19: EQUAL? PRSO,GREEN-BUTTON \?CCL24
EQUAL? HERE,SOUTH-SHORE \?CCL27
PRINT NOTHING-HAPPENS
RTRUE
?CCL27: SET 'YACHT-DESTINATION,SOUTH-SHORE
ICALL2 I-YACHT,TRUE-VALUE
RTRUE
?CCL24: EQUAL? PRSO,BLUE-BUTTON \?CCL29
EQUAL? HERE,EAST-SHORE \?CCL32
PRINT NOTHING-HAPPENS
RTRUE
?CCL32: SET 'YACHT-DESTINATION,EAST-SHORE
ICALL2 I-YACHT,TRUE-VALUE
RTRUE
?CCL29: EQUAL? HERE,WEST-SHORE \?CCL35
PRINT NOTHING-HAPPENS
RTRUE
?CCL35: SET 'YACHT-DESTINATION,WEST-SHORE
ICALL2 I-YACHT,TRUE-VALUE
RTRUE
.FUNCT I-YACHT,CALLED-BY-BUTTON-F
ZERO? CALLED-BY-BUTTON-F /?CND1
ICALL QUEUE,I-YACHT,2
EQUAL? HERE,LAKE-FLATHEAD \?CCL5
EQUAL? YACHT-DESTINATION,LAKE-FLATHEAD /?CCL5
PRINTI "The boat heads for the "
ICALL2 DPRINT,YACHT-DESTINATION
PRINT PERIOD-CR
JUMP ?CND1
?CCL5: PRINTI "The yacht moves away from the dock, toward the middle of the lake."
CRLF
CRLF
?CND1: IN? YACHT,LAKE-FLATHEAD \?CCL10
MOVE YACHT,YACHT-DESTINATION
ICALL1 RETURN-FROM-MAP
IN? PROTAGONIST,YACHT \?CND8
PRINTI " The yacht reaches the "
ICALL2 DPRINT,YACHT-DESTINATION
PRINTI " and docks magically."
CRLF
CRLF
ICALL2 GOTO,YACHT
JUMP ?CND8
?CCL10: MOVE YACHT,LAKE-FLATHEAD
IN? PROTAGONIST,YACHT \?CND8
ICALL1 RETURN-FROM-MAP
ICALL2 GOTO,YACHT
PRINTI " The boat reaches the middle of the lake"
EQUAL? YACHT-DESTINATION,LAKE-FLATHEAD \?CCL17
PRINTI ", slows, and stops"
JUMP ?CND15
?CCL17: PRINTI " and heads straight for the dock on the "
ICALL2 DPRINT,YACHT-DESTINATION
?CND15: PRINT PERIOD-CR
?CND8: IN? YACHT,YACHT-DESTINATION \TRUE
ICALL2 DEQUEUE,I-YACHT
RTRUE
.FUNCT YACHT-ENTER-F,RARG
ZERO? RARG \FALSE
ICALL2 GOTO,YACHT
RFALSE
.FUNCT DB-ENTER-F,RARG
ZERO? RARG \FALSE
FSET? DB,OPENBIT \?CCL5
ICALL PERFORM,V?ENTER,DB
RFALSE
?CCL5: ICALL1 RETURN-FROM-MAP
ICALL2 THIS-IS-IT,DB
ICALL2 DO-FIRST,STR?566
RFALSE
.FUNCT DB-F,VARG
ZERO? VARG /?CCL3
EQUAL? VARG,M-ENTER \FALSE
?CCL3: ZERO? VARG /?CCL7
ZERO? DB-CONTROLS-DESCRIBED \FALSE
SET 'DB-CONTROLS-DESCRIBED,TRUE-VALUE
PRINTC 32
ICALL PERFORM,V?EXAMINE,DB
RTRUE
?CCL7: EQUAL? PRSA,V?EXAMINE \?CCL12
IN? PROTAGONIST,DB \?CCL15
PRINTI "This is a cramped diving bell. The door is "
ICALL2 OPEN-CLOSED,DB
PRINTR ". A brass plaque is mounted next to a small porthole. You may want to examine the controls."
?CCL15: PRINTI "The diving bell is "
ICALL2 OPEN-CLOSED,DB
PRINTR ". Mounted on the outside of it is a claw-like waldo."
?CCL12: EQUAL? PRSA,V?ENTER \?CCL17
IN? PROTAGONIST,DB /?CCL17
FSET? DB,OPENBIT /?CCL17
CALL2 DO-WALK,P?IN
RSTACK
?CCL17: EQUAL? PRSA,V?EXIT \?CCL22
IN? PROTAGONIST,DB \?CCL22
ZERO? HAND-IN-WALDO /?CCL27
CALL2 DO-FIRST,STR?567
RSTACK
?CCL27: FSET? DB,OPENBIT /?CCL29
ICALL2 THIS-IS-IT,DB
CALL2 DO-FIRST,STR?566
RSTACK
?CCL29: IN? RUBY,WALDO \FALSE
FCLEAR RUBY,TRYTAKEBIT
RFALSE
?CCL22: EQUAL? PRSA,V?LOWER,V?RAISE \?CCL33
IN? PROTAGONIST,DB \?CCL36
PRINT YOULL-HAVE-TO
PRINTR "use the controls."
?CCL36: PRINTR "You can't do that from out here."
?CCL33: EQUAL? PRSA,V?OPEN \FALSE
EQUAL? HERE,HOLD /FALSE
CALL2 JIGS-UP,STR?568
RSTACK
.FUNCT DB-CONTROLS-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The controls seem simple enough: an up-down lever, an exterior light, and a hand-hole for controlling the exterior waldo."
.FUNCT G-DB-HOLE-F,TBL,F
GET F,6
EQUAL? STACK,W?CONTROL \?CCL3
RETURN DB-CONTROLS
?CCL3: RETURN HAND-HOLE
.FUNCT PORTHOLE-F
EQUAL? PRSA,V?LOOK-INSIDE \FALSE
CALL1 V-LOOK
RSTACK
.FUNCT WALDO-F
FSET? EXTERIOR-LIGHT,ONBIT /?CCL3
EQUAL? HERE,HOLD /?CCL3
CALL2 HANDLE,WALDO
ZERO? STACK /?CCL3
CALL2 CANT-SEE,WALDO
RSTACK
?CCL3: EQUAL? PRSA,V?REACH-IN \?CCL8
IN? PROTAGONIST,DB \?CCL8
ICALL PERFORM,V?REACH-IN,HAND-HOLE
RTRUE
?CCL8: EQUAL? PRSA,V?DROP \?CCL12
PRINTR "Although you can manipulate the waldo, you aren't holding it. [If you want to remove your hand, try REMOVE HAND.]"
?CCL12: EQUAL? PRSA,V?PUT \?CCL14
MOVE PRSO,HERE
PRINT YOU-CANT
PRINTI "budge the waldo's claw, so"
ICALL1 TPRINT-PRSO
PRINTR " falls right out."
?CCL14: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL16
ZERO? HAND-IN-WALDO /?CCL19
FIRST? WALDO \?CCL22
EQUAL? PRSA,V?OPEN \?CCL25
FIRST? WALDO /?BOGUS26
?BOGUS26: ICALL PERFORM,V?DROP,STACK
RTRUE
?CCL25: PRINTI "The waldo IS closed! It's holding"
FIRST? WALDO /?BOGUS27
?BOGUS27: CALL2 ARPRINT,STACK
RSTACK
?CCL22: PRINTR "The claws of the waldo open and close."
?CCL19: PRINTR "The claws of the waldo won't budge."
?CCL16: EQUAL? PRSA,V?TAKE-WITH \FALSE
EQUAL? PRSI,WALDO \FALSE
EQUAL? PRSO,WALDO,DB \?CCL34
CALL1 IMPOSSIBLES
RSTACK
?CCL34: ZERO? HAND-IN-WALDO /?CCL36
SET 'PRSI,FALSE-VALUE
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL36: PRINTR "Your hand isn't in the hand-hole!"
.FUNCT HAND-HOLE-F
IN? PROTAGONIST,DB /?CCL3
CALL2 CANT-REACH,HAND-HOLE
RSTACK
?CCL3: EQUAL? PRSA,V?REACH-IN \?CCL5
PRINTI "Your hand is "
ZERO? HAND-IN-WALDO /?CCL8
PRINTR "already in the hand-hole!"
?CCL8: SET 'HAND-IN-WALDO,TRUE-VALUE
PRINTI "now in the hand-hole"
FSET? WALDO,TOUCHBIT /?CND9
FSET WALDO,TOUCHBIT
PRINTI ". The waldo feels like an extension of your own hand. You flex your fingers a few times"
FSET? EXTERIOR-LIGHT,ONBIT /?CCL12
EQUAL? HERE,HOLD \?CND9
?CCL12: PRINTI ", and through the viewport, you see the waldo flex correspondingly"
?CND9: PRINT PERIOD-CR
RTRUE
?CCL5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
ZERO? HAND-IN-WALDO /?CCL19
PRINTR "Your hand is in the hole."
?CCL19: PRINT ONLY-BLACKNESS
RTRUE
.FUNCT WALDO-TAKE
EQUAL? PRSI,WALDO \?CCL3
EQUAL? P-PRSA-WORD,W?REMOVE \?CCL6
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL6: CALL2 CANT-REACH,PRSO
RSTACK
?CCL3: FIRST? WALDO \?CCL8
PRINTI "There's already"
FIRST? WALDO /?BOGUS9
?BOGUS9: ICALL2 APRINT,STACK
PRINTR " in the waldo."
?CCL8: EQUAL? HERE,LAKE-BOTTOM \?CCL11
IN? SQUID-REPELLENT,LAKE-BOTTOM /?CCL11
PRINTI "Before the waldo can grab"
ICALL1 TPRINT-PRSO
PRINTI ", a baby squid swims into view and snatches"
ICALL1 TPRINT-PRSO
PRINTI ". The squid playfully squirts black ink toward the porthole, and by the time the view clears, the squid is gone"
FSET? PRSO,TAKEBIT \?CND14
PRINTI " and"
ICALL1 TPRINT-PRSO
PRINTI " is lying right where it was before"
?CND14: PRINT PERIOD-CR
RTRUE
?CCL11: FSET? PRSO,TAKEBIT \?CCL17
MOVE PRSO,WALDO
FSET PRSO,TOUCHBIT
PRINTI "You pick up"
ICALL1 TPRINT-PRSO
PRINTR " in the waldo."
?CCL17: EQUAL? PRSO,SPENSEWEED \?CCL19
PRINT DEEPLY-ROOTED
RTRUE
?CCL19: EQUAL? PRSO,J-POCKET,J-HAT,JESTER /?CTR20
EQUAL? PRSO,J-SHOE \?CCL21
?CTR20: PRINTR "Your attempt ends up giving the jester a pinch with the waldo. ""Please!"" he exclaims. ""I'm not that sort of jester!"""
?CCL21: CALL1 YUKS
RSTACK
.FUNCT LEVER-F,X
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTI "The lever is in the "
EQUAL? DB-DIRECTION,1 \?CCL6
PRINTI "up"
JUMP ?CND4
?CCL6: EQUAL? DB-DIRECTION,-1 \?CCL8
PRINTI "down"
JUMP ?CND4
?CCL8: PRINTI "neutral"
?CND4: PRINTI " position"
ZERO? DB-DIRECTION \?CCL11
PRINTR ", from which it can be raised or lowered."
?CCL11: PRINT PERIOD-CR
RTRUE
?CCL3: EQUAL? PRSA,V?RAISE \?CCL13
EQUAL? DB-DIRECTION,1 \?CCL16
PRINTR "The lever is already raised."
?CCL16: EQUAL? HERE,HOLD \?CCL18
PRINT NOTHING-HAPPENS
RTRUE
?CCL18: SET 'DB-DIRECTION,1
ICALL QUEUE,I-DB,2
PRINTI "The bathysphere ascends."
EQUAL? HERE,LAKE-BOTTOM \?CCL21
SET 'DB-DEPTH,4
MOVE DB,UNDERWATER
MOVE WALDO,UNDERWATER
CALL1 GLANCE
RSTACK
?CCL21: CRLF
RTRUE
?CCL13: EQUAL? PRSA,V?LOWER \FALSE
EQUAL? DB-DIRECTION,-1 \?CCL26
PRINTR "The lever is already lowered."
?CCL26: EQUAL? DB-DEPTH,4 /?CTR27
IN? YACHT,LAKE-FLATHEAD /?CCL28
?CTR27: PRINT NOTHING-HAPPENS
RTRUE
?CCL28: FIRST? WALDO >X \?CCL32
EQUAL? X,FOX,FLAMINGO,ROOSTER /?CTR31
EQUAL? X,SNAKE \?CCL32
?CTR31: PRINTI "You'd drown the poor "
PRINTD X
PRINTR "!"
?CCL32: FSET? DB,OPENBIT \?CCL38
CALL2 JIGS-UP,STR?573
RSTACK
?CCL38: SET 'DB-DIRECTION,-1
ICALL QUEUE,I-DB,2
PRINTI "The bathysphere descends into the waters of the lake"
CALL FIND-IN,WALDO,FLAMEBIT >X
ZERO? X /?CND39
FCLEAR X,ONBIT
FCLEAR X,FLAMEBIT
CALL2 VISIBLE?,X
ZERO? STACK /?CND39
PRINTI ", extinguishing"
ICALL2 TPRINT,X
?CND39: PRINTC 46
EQUAL? HERE,HOLD \?CCL45
SET 'DB-DEPTH,0
MOVE DB,UNDERWATER
MOVE WALDO,UNDERWATER
CALL1 GLANCE
RSTACK
?CCL45: CRLF
RTRUE
.FUNCT GLANCE
PRINTI " You glance out the porthole"
PRINT ELLIPSIS
CALL2 GOTO,DB
RSTACK
.FUNCT I-DB
ICALL QUEUE,I-DB,-1
SUB DB-DEPTH,DB-DIRECTION >DB-DEPTH
IN? PROTAGONIST,DB \?CND1
ICALL1 RETURN-FROM-MAP
PRINTI " The bathysphere "
?CND1: LESS? DB-DEPTH,1 \?CCL5
ICALL2 DEQUEUE,I-DB
SET 'DB-DIRECTION,0
MOVE DB,HOLD
MOVE WALDO,HOLD
IN? PROTAGONIST,DB \?CCL8
PRINTI "rises into the yacht's hold and stops."
ICALL1 GLANCE
RTRUE
?CCL8: EQUAL? HERE,HOLD \FALSE
ICALL1 RETURN-FROM-MAP
PRINTR " A diving bell rises into the Hold."
?CCL5: GRTR? DB-DEPTH,3 \?CCL12
ICALL2 DEQUEUE,I-DB
SET 'DB-DIRECTION,0
MOVE DB,LAKE-BOTTOM
MOVE WALDO,LAKE-BOTTOM
IN? PROTAGONIST,DB \FALSE
PRINTI "bumps against the bottom of the lake."
ICALL1 GLANCE
RTRUE
?CCL12: IN? PROTAGONIST,DB \FALSE
PRINTI "continues to "
EQUAL? DB-DIRECTION,-1 \?CCL20
PRINTI "de"
JUMP ?CND18
?CCL20: EQUAL? DB-DIRECTION,1 \?CND18
PRINTC 97
?CND18: PRINTI "scend."
CRLF
GRTR? PIECE-DROWNED,0 \TRUE
RANDOM 100
LESS? PIECE-DROWNED,STACK /?CCL26
SET 'PIECE-DROWNED,1
PRINTR " The drowned carcass of a chess piece drifts momentarily through the beam of the exterior light."
?CCL26: ADD PIECE-DROWNED,10 >PIECE-DROWNED
RTRUE
.FUNCT LAKE-FLATHEAD-F,RARG
ZERO? RARG \FALSE
EQUAL? PRSA,V?ENTER,V?DRINK-FROM,V?DRINK /?CTR4
EQUAL? PRSA,V?REACH-IN,V?LOOK-UNDER \?CCL5
?CTR4: CALL PERFORM-PRSA,WATER,PRSI
RSTACK
?CCL5: EQUAL? PRSA,V?PUT,V?FILL \?CCL9
EQUAL? PRSI,GLOBAL-HERE \?CCL9
CALL PERFORM-PRSA,PRSO,WATER
RSTACK
?CCL9: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
PRINTR "The water is scummy and murky."
.FUNCT LAKE-BOTTOM-F,RARG
EQUAL? RARG,M-ENTER \?CCL3
MOVE SPENSEWEED,HERE
FSET SPENSEWEED,NDESCBIT
RTRUE
?CCL3: EQUAL? RARG,M-END \FALSE
IN? WORM,WALDO \FALSE
REMOVE WORM
ICALL1 RETURN-FROM-MAP
PRINTR " A fish snatches the worm from the waldo and swims away with it."
.FUNCT LAKE-BOTTOM-FISH-F
CALL2 TOUCHING?,LAKE-BOTTOM-FISH
ZERO? STACK /FALSE
CALL2 CANT-REACH,LAKE-BOTTOM-FISH
RSTACK
.FUNCT G-U-MOUNTAIN-ENTER-F,RARG
IN? PROTAGONIST,CAMEL \?CCL3
ZERO? RARG \FALSE
ICALL1 RETURN-FROM-MAP
PRINTI "Like most camels, this one isn't very good at mountain climbing."
CRLF
RFALSE
?CCL3: RETURN G-U-MOUNTAIN
.FUNCT STABLE-F,RARG
EQUAL? RARG,M-ENTER \FALSE
FSET? STABLE,TOUCHBIT /FALSE
CALL QUEUE,I-ROOSTER,-1
RSTACK
.FUNCT STALL-PS
EQUAL? PRSA,V?ENTER,V?EXAMINE \FALSE
PRINTR "The stalls are all empty."
.SEGMENT "0"
.FUNCT SADDLE-F
EQUAL? PRSA,V?PUT-ON \FALSE
EQUAL? PRSO,SADDLE \FALSE
PRINTI "You'd be kicked out of riding school -- imagine, trying to saddle"
ICALL2 APRINT,PRSI
PRINTR "!"
.FUNCT ROOSTER-F
EQUAL? PRSA,V?RESEARCH \?CCL3
CALL NOUN-USED?,ROOSTER,W?ROOSTER
ZERO? STACK /?CCL3
PRINTR """A common barnyard animal."""
?CCL3: FSET? ROOSTER,ANIMATEDBIT \FALSE
EQUAL? PRSA,V?EAT \?CCL9
EQUAL? TURNED-INTO,FOX \?CCL12
CALL2 GOOD-MEAL,ROOSTER
RSTACK
?CCL12: PRINTR "Unfortunately, you have no training in the butchering and culinary techniques involved in turning live poultry into edible meals."
?CCL9: EQUAL? PRSA,V?EXAMINE \?CCL14
PRINTR "It is a handsome, mature rooster, with a full red comb."
?CCL14: EQUAL? PRSA,V?TOUCH \?CCL16
PRINTR "The bird pecks at your hand."
?CCL16: EQUAL? PRSA,V?TAKE \?CCL18
FSET? ROOSTER,ANIMATEDBIT \?CCL18
CALL2 ITAKE,TRUE-VALUE
EQUAL? STACK,M-FATAL /TRUE
MOVE ROOSTER,PROTAGONIST
PRINTR "The bird flaps angrily, but you manage to pick it up."
?CCL18: EQUAL? PRSA,V?GIVE \?CCL25
EQUAL? PRSO,WORM \?CCL25
REMOVE WORM
PRINTR "The bird sucks down the worm and crows happily."
?CCL25: EQUAL? PRSA,V?FEED \FALSE
CALL2 ULTIMATELY-IN?,WORM
ZERO? STACK /FALSE
CALL WOULDNT-MIND,ROOSTER,WORM
RSTACK
.FUNCT I-W-ROOSTER,L
LOC ROOSTER >L
FSET ROOSTER,ANIMATEDBIT
IN? ROOSTER,LAKE-BOTTOM \?CCL3
REMOVE ROOSTER
RTRUE
?CCL3: CALL2 META-LOC,ROOSTER
EQUAL? STACK,HERE \?CCL5
ICALL1 RETURN-FROM-MAP
PRINTI " The air is split by a loud ""Cock-a-doodle-doo!"" as the weather vane once again becomes a rooster"
EQUAL? L,PROTAGONIST,HERE /?CND6
FSET? L,DROPBIT /?CND6
MOVE ROOSTER,HERE
FSET L,OPENBIT
PRINTI " and pops out of"
ICALL2 TPRINT,L
?CND6: PRINT PERIOD-CR
RTRUE
?CCL5: CALL2 META-LOC,ROOSTER
MOVE ROOSTER,STACK
RFALSE
.FUNCT I-ROOSTER,L
FSET? ROOSTER,ANIMATEDBIT \FALSE
CALL2 VISIBLE?,ROOSTER
ZERO? STACK \?CCL5
LOC ROOSTER >L
ZERO? L /FALSE
LOC WORM
EQUAL? L,STACK \FALSE
FSET? WORM,ANIMATEDBIT \FALSE
FSET? L,ACTORBIT /FALSE
SET 'ROOSTER-BURP,TRUE-VALUE
REMOVE WORM
RFALSE
?CCL5: ZERO? ROOSTER-BURP /?CCL13
SET 'ROOSTER-BURP,FALSE-VALUE
ICALL1 RETURN-FROM-MAP
PRINTR " The rooster fails to hide a satisfied burp."
?CCL13: CALL2 VISIBLE?,WORM
ZERO? STACK /FALSE
FSET? WORM,ANIMATEDBIT \FALSE
RANDOM 100
LESS? ROOSTER-PROB,STACK /?CCL19
ICALL1 RETURN-FROM-MAP
SET 'ROOSTER-PROB,0
PRINTR " The rooster hungrily eyes the worm."
?CCL19: ADD ROOSTER-PROB,10 >ROOSTER-PROB
RFALSE
.ENDSEG
.SEGMENT "LAKE"
.FUNCT G-U-MOUNTAIN-F,RARG
EQUAL? RARG,M-ENTER \?CCL3
GRTR? ORACLE-EXIT-NUMBER,4 \?CCL3
RANDOM 5
SUB STACK,1 >ORACLE-EXIT-NUMBER
CALL QUEUE,I-AMULET,4
RSTACK
?CCL3: EQUAL? RARG,M-LOOK \FALSE
PRINTI "The mountain crests with a tiny plateau. The view is inspiring; it's easy to see why Dimwit climbed this mountain with such frequency. (Some quibblers insisted that it's hardly ""mountain climbing"" to be carried up in a plush sedan chair, but those quibblers were all tortured to death years ago.) Off to the west are the placid waters of Lake Flathead; to the southwest is a vast indoor desert; to the south spreads a verdant forest. The ceiling of the castle is just a few feet above your head. "
IN? BOULDER,HERE \?CCL10
PRINTI "An enormous boulder is balanced precariously at the western edge of the plateau"
JUMP ?CND8
?CCL10: PRINTI "A small cave opens to the north"
?CND8: PRINTI ". A trail leads down the mountain to the west."
RTRUE
.FUNCT CAVE-ENTER-F,RARG
IN? BOULDER,HERE \?CCL3
ZERO? RARG \FALSE
ICALL1 CANT-GO
RFALSE
?CCL3: RETURN GROTTO
.FUNCT BOULDER-F
EQUAL? PRSA,V?KICK,V?MOVE,V?PUSH /?CTR2
EQUAL? PRSA,V?ROLL \?CCL3
?CTR2: REMOVE BOULDER
SET 'COMPASS-CHANGED,TRUE-VALUE
MOVE CAVE-OBJECT,HERE
PRINTI "You give the boulder a shove. It lurches and begins careening down the mountain. Picking up speed, it flattens several trees, hits an outcropping, and shoots into the air, toward the lake. It lands "
IN? YACHT,EAST-SHORE \?CCL8
PRINTI "right on the yacht"
JUMP ?CND6
?CCL8: PRINTI "in the lake with a tremendous splash, just missing the blue dock"
?CND6: PRINTI "! The rock "
IN? YACHT,EAST-SHORE \?CCL11
REMOVE YACHT
CALL ULTIMATELY-IN?,PERCH,YACHT
ZERO? STACK \?CCL13
CALL ULTIMATELY-IN?,PERCH,HOLD
ZERO? STACK /?CND12
?CCL13: SET 'REMOVED-PERCH-LOC,WATER
REMOVE PERCH
?CND12: PRINTI "and the yacht vanish"
JUMP ?CND9
?CCL11: PRINTI "disappears"
?CND9: PRINTI " beneath the water, leaving only a series of widening ripples. As you recuperate from the excitement, you notice a feature that was formerly blocked by the boulder: a small cave leading north into the mountain."
CRLF
CALL2 INC-SCORE,6
RSTACK
?CCL3: EQUAL? PRSA,V?LOWER \?CCL17
EQUAL? P-PRSA-WORD,W?PUSH \?CCL17
ICALL PERFORM,V?PUSH,BOULDER
RTRUE
?CCL17: EQUAL? PRSA,V?PUSH-DIR \FALSE
EQUAL? PRSI,INTDIR \FALSE
CALL NOUN-USED?,INTDIR,W?WEST
ZERO? STACK /FALSE
ICALL PERFORM,V?PUSH,BOULDER
RTRUE
.FUNCT CAVE-OBJECT-F
EQUAL? PRSA,V?ENTER \FALSE
CALL2 GOTO,GROTTO
RSTACK
.FUNCT LOWEST-HALL-ENTER-F,RARG,CURRENT-GRAVEL,SPILL
ZERO? RARG /?CND1
RETURN LOWEST-HALL
?CND1: ICALL1 RETURN-FROM-MAP
PRINTI "You lose your footing on the gravel, drop your possessions, and begin sliding down the dark tunnel! Finally, you land on a hard floor"
IN? GRAVEL,LOCAL-GLOBALS \?PRD6
SET 'CURRENT-GRAVEL,GRAVEL
ZERO? CURRENT-GRAVEL \?CCL4
?PRD6: IN? MORE-GRAVEL,LOCAL-GLOBALS \?PRD9
SET 'CURRENT-GRAVEL,MORE-GRAVEL
ZERO? CURRENT-GRAVEL \?CCL4
?PRD9: IN? EVEN-MORE-GRAVEL,LOCAL-GLOBALS \?CND3
SET 'CURRENT-GRAVEL,EVEN-MORE-GRAVEL
ZERO? CURRENT-GRAVEL /?CND3
?CCL4: PRINTI "; a shower of gravel lands on top of you"
?CND3: CALL2 ULTIMATELY-IN?,LARGE-VIAL
ZERO? STACK /?CND14
GRTR? LARGE-VIAL-GLOOPS,0 \?CND14
SET 'LARGE-VIAL-GLOOPS,0
REMOVE LARGE-VIAL-WATER
SET 'SPILL,TRUE-VALUE
?CND14: CALL2 ULTIMATELY-IN?,SMALL-VIAL
ZERO? STACK /?CND18
GRTR? SMALL-VIAL-GLOOPS,0 \?CND18
SET 'SMALL-VIAL-GLOOPS,0
REMOVE SMALL-VIAL-WATER
SET 'SPILL,TRUE-VALUE
?CND18: CALL2 ULTIMATELY-IN?,CUP
ZERO? STACK /?CND22
IN? POTION,CUP \?CND22
REMOVE POTION
SET 'SPILL,TRUE-VALUE
?CND22: ZERO? SPILL /?CND26
PRINTI ". You seem to have spilled something, also"
?CND26: PRINTC 46
ZERO? CURRENT-GRAVEL /?CND28
MOVE CURRENT-GRAVEL,PROTAGONIST
?CND28: SET 'HERE,LOWEST-HALL
ICALL ROB,PROTAGONIST,LOWEST-HALL,TRUE-VALUE
CRLF
CRLF
RETURN LOWEST-HALL
.SEGMENT "0"
.FUNCT G-GRAVEL-F,TBL,LEN,?TMP1
ADD TBL,8 >?TMP1
GET TBL,1
INTBL? GRAVEL,?TMP1,STACK \?CCL3
RETURN GRAVEL
?CCL3: RETURN MORE-GRAVEL
.FUNCT GRAVEL-F
EQUAL? PRSA,V?TAKE \?CCL3
ICALL2 ORDER-GRAVEL,PROTAGONIST
RFALSE
?CCL3: EQUAL? PRSA,V?DROP \?CCL5
ICALL2 ORDER-GRAVEL,HERE
RFALSE
?CCL5: EQUAL? PRSA,V?COUNT,V?MEASURE,V?EXAMINE \?CCL7
PRINTR "It's about a handful."
?CCL7: EQUAL? PRSA,V?POUR \FALSE
EQUAL? PRSO,EVEN-MORE-GRAVEL,MORE-GRAVEL,GRAVEL \FALSE
ICALL PERFORM,V?PUT,PRSO,PRSI
RTRUE
.ENDSEG
.SEGMENT "LAKE"
.FUNCT IDOL-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The idol has been carved into the cave wall by the hand of a master sculptor (who obviously spent far more time on the project than a saint of Foobus' stature deserves)."
.FUNCT BOWL-F,CNT
CALL1 GRAVEL-COUNT >CNT
EQUAL? PRSA,V?CLOSE \?CCL3
PRINT HUH
RTRUE
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTI "The bowl is tall and narrow, like a large drinking glass. "
ICALL PERFORM,V?LOOK-INSIDE,BOWL
RTRUE
?CCL5: EQUAL? PRSA,V?LOOK-INSIDE \?CCL7
PRINTI "It is "
ZERO? CNT \?CCL10
PRINTI "less than a quarter"
JUMP ?CND8
?CCL10: EQUAL? CNT,1 \?CCL12
PRINTI "more than a quarter"
JUMP ?CND8
?CCL12: EQUAL? CNT,2 \?CCL14
PRINTI "less than half"
JUMP ?CND8
?CCL14: PRINTI "more than half"
?CND8: PRINTR " full with a milky elixir."
?CCL7: EQUAL? PRSA,V?REACH-IN \?CCL16
EQUAL? CNT,3 \?CCL19
PRINTI "Your fingers are just long enough to touch the elixir. "
CALL1 TOUCH-ELIXIR
RSTACK
?CCL19: PRINTI "Because the bowl is so narrow, you can only get your fingers halfway to the bottom, "
ZERO? CNT \?CCL22
PRINTI "well"
JUMP ?CND20
?CCL22: EQUAL? CNT,1 \?CCL24
PRINTI "somewhat"
JUMP ?CND20
?CCL24: EQUAL? CNT,2 \?CND20
PRINTI "a smidgeon"
?CND20: PRINTR " short of the elixir."
?CCL16: EQUAL? PRSA,V?PUT \?CCL27
EQUAL? PRSI,BOWL \?CCL27
EQUAL? PRSO,EVEN-MORE-GRAVEL,MORE-GRAVEL,GRAVEL \?CCL32
MOVE PRSO,BOWL
FCLEAR PRSO,TAKEBIT
PRINTI "The gravel sinks to the bottom of the bowl, thus raising the level of the elixir. It is now "
INC 'CNT
EQUAL? CNT,1 \?CCL35
PRINTI "somewhat more than one-quarter"
JUMP ?CND33
?CCL35: EQUAL? CNT,2 \?CCL37
PRINTI "just less than half"
JUMP ?CND33
?CCL37: PRINTI "a bit over half"
?CND33: PRINTR "way to the brim."
?CCL32: EQUAL? PRSO,STRAW \?CCL39
MOVE STRAW,BOWL
PRINTR "The straw extends just above the rim of the bowl."
?CCL39: EQUAL? PRSO,EAST-KEY,ZORKMID-COIN,RING /?CTR40
EQUAL? PRSO,SQUID-REPELLENT,RUSTY-KEY,WEST-KEY /?CTR40
EQUAL? PRSO,NUT,NUT-SHELL,UNOPENED-NUT /?CTR40
EQUAL? PRSO,SAPPHIRE,RUBY \?CCL41
?CTR40: MOVE PRSO,BOWL
FCLEAR PRSO,TAKEBIT
PRINTI "With a tiny splash,"
ICALL1 TPRINT-PRSO
PRINTR " sinks to the bottom of the bowl. It's not clear how you'll ever get it out again..."
?CCL41: PRINTR "The rim of the bowl is too narrow."
?CCL27: EQUAL? PRSA,V?TIP,V?MOVE,V?TAKE /?PRD49
EQUAL? PRSA,V?TIP-OVER \FALSE
?PRD49: EQUAL? PRSO,BOWL \FALSE
PRINTR "The bowl is affixed to the cave floor."
.FUNCT GRAVEL-COUNT,CNT
SET 'CNT,0
IN? GRAVEL,BOWL \?CND1
INC 'CNT
?CND1: IN? MORE-GRAVEL,BOWL \?CND3
INC 'CNT
?CND3: IN? EVEN-MORE-GRAVEL,BOWL /?CCL6
RETURN CNT
?CCL6: INC 'CNT
RETURN CNT
.FUNCT ELIXIR-F
EQUAL? PRSA,V?REACH-IN,V?TOUCH \?CCL3
ICALL PERFORM,V?REACH-IN,BOWL
RTRUE
?CCL3: EQUAL? PRSA,V?TASTE,V?DRINK \?CCL5
IN? STRAW,BOWL \?CCL8
ICALL PERFORM,V?DRINK-WITH,ELIXIR,STRAW
RTRUE
?CCL8: PRINTR "The elixir is at the bottom of a bowl which is affixed to the cave floor."
?CCL5: EQUAL? PRSA,V?CLEAN \?CCL10
EQUAL? P-PRSA-WORD,W?SOAK \?CCL10
EQUAL? PRSI,ELIXIR \?CCL10
ICALL PERFORM,V?PUT,PRSO,ELIXIR
RTRUE
?CCL10: EQUAL? PRSA,V?PUT \?CCL15
EQUAL? PRSI,ELIXIR \?CCL15
ICALL PERFORM,V?PUT,PRSO,BOWL
RTRUE
?CCL15: EQUAL? PRSA,V?EXAMINE \?CCL19
PRINTR "The milky liquid swirls with secret energies."
?CCL19: EQUAL? PRSA,V?FILL \FALSE
EQUAL? PRSI,ELIXIR \FALSE
EQUAL? PRSO,STRAW \?CCL26
PRINTR "You'll have to be more specific about how you propose to do that."
?CCL26: PRINTI "The bowl's narrowness prevents you from filling"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT LAIR-EXIT-F,RARG
ZERO? RARG \?CCL2
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CND1
?CCL2: RETURN G-U-WOODS
?CND1: PRINTI "You lose your footing on the treacherous path, and tumble painfully down a steep incline. "
FIRST? PROTAGONIST \?CND5
PRINTI "Amazingly, you hold on to everything you have. "
?CND5: PRINTI "You roll to a stop as dim green light filters around you"
PRINT ELLIPSIS
RETURN G-U-WOODS
.FUNCT G-U-WOODS-F,RARG
EQUAL? RARG,M-ENTER \FALSE
FSET? G-U-WOODS,TOUCHBIT /FALSE
CALL QUEUE,I-FOX,-1
RSTACK
.SEGMENT "0"
.FUNCT FOX-F
EQUAL? PRSA,V?RESEARCH \?CCL3
CALL NOUN-USED?,FOX,W?FOX
ZERO? STACK /?CCL3
PRINTR """A common animal."""
?CCL3: FSET? FOX,ANIMATEDBIT \FALSE
EQUAL? PRSA,V?TAKE \?CCL9
FSET? FOX,ANIMATEDBIT \?CCL9
CALL2 ITAKE,TRUE-VALUE
EQUAL? STACK,M-FATAL /TRUE
MOVE FOX,PROTAGONIST
PRINTR "The fox slyly allows himself to be picked up."
?CCL9: EQUAL? PRSA,V?GIVE \?CCL16
EQUAL? PRSO,ROOSTER \?CCL16
REMOVE ROOSTER
PRINTR "The fox must be thinking that you're Santa Claus and this is Christmas (but of course he's too sly to let you see that he's thinking that). After a few messy moments, the rooster is history."
?CCL16: EQUAL? PRSA,V?FEED \FALSE
CALL2 ULTIMATELY-IN?,ROOSTER
ZERO? STACK /FALSE
CALL WOULDNT-MIND,FOX,ROOSTER
RSTACK
.FUNCT WOULDNT-MIND,EATER,EATEE
PRINTI "The "
ICALL2 DPRINT,EATER
PRINTI " looks as though he wouldn't mind eating the "
ICALL2 DPRINT,EATEE
PRINTR "..."
.FUNCT I-W-FOX,L
LOC FOX >L
FSET FOX,ANIMATEDBIT
FCLEAR FOX,WEARBIT
FCLEAR FOX,WORNBIT
IN? FOX,LAKE-BOTTOM \?CCL3
REMOVE FOX
RTRUE
?CCL3: CALL2 META-LOC,FOX
EQUAL? STACK,HERE \?CCL5
ICALL1 RETURN-FROM-MAP
PRINTI " The fox suddenly "
EQUAL? L,PROTAGONIST,HERE /?CND6
FSET? L,DROPBIT /?CND6
MOVE FOX,HERE
FSET L,OPENBIT
PRINTI "pops out of"
ICALL2 TPRINT,L
PRINTI " and "
?CND6: PRINTR "shakes its bushy tail."
?CCL5: CALL2 META-LOC,FOX
MOVE FOX,STACK
RFALSE
.FUNCT I-FOX,L
FSET? FOX,ANIMATEDBIT \FALSE
CALL2 VISIBLE?,FOX
ZERO? STACK \?CCL5
LOC FOX >L
ZERO? L /FALSE
LOC ROOSTER
EQUAL? L,STACK \FALSE
FSET? ROOSTER,ANIMATEDBIT \FALSE
FSET? L,ACTORBIT /FALSE
SET 'FOX-BURP,TRUE-VALUE
REMOVE ROOSTER
RFALSE
?CCL5: ZERO? FOX-BURP /?CCL13
SET 'FOX-BURP,FALSE-VALUE
ICALL1 RETURN-FROM-MAP
PRINTR " The fox produces a deep and very sly burp."
?CCL13: CALL2 VISIBLE?,ROOSTER
ZERO? STACK /FALSE
FSET? ROOSTER,ANIMATEDBIT \FALSE
RANDOM 100
LESS? FOX-PROB,STACK /?CCL19
SET 'FOX-PROB,0
ICALL1 RETURN-FROM-MAP
PRINTR " The fox stares at the rooster and smacks its lips."
?CCL19: ADD FOX-PROB,10 >FOX-PROB
RFALSE
.ENDSEG
.SEGMENT "LAKE"
.FUNCT UNICORNS-F
EQUAL? PRSA,V?SIT,V?CLIMB-ON,V?ENTER \?CCL3
PRINTR "As you approach, the unicorns move gracefully away."
?CCL3: EQUAL? PRSA,V?PUT-ON \FALSE
EQUAL? PRSO,SADDLE \FALSE
ICALL PERFORM,V?ENTER,UNICORNS
RTRUE
.FUNCT BRIDGE-F
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "The bridge looks odd, perhaps because of its unusual green color."
?CCL3: EQUAL? PRSA,V?STAND-ON,V?ENTER,V?CROSS \FALSE
CALL2 DO-WALK,P?WEST
RSTACK
.FUNCT BRIDGE-ENTER-F,RARG
ZERO? RARG \FALSE
IN? BRIDGE,HERE \?CCL5
IN? PROTAGONIST,CAMEL \?CCL8
ICALL1 RETURN-FROM-MAP
PRINTI "The bridge is too small for the huge, lumbering camel."
CRLF
RFALSE
?CCL8: ICALL1 RETURN-FROM-MAP
REMOVE BRIDGE
ICALL2 DEQUEUE,I-JESTER
MOVE JESTER,HERE
ICALL2 THIS-IS-IT,JESTER
MOVE DIPLOMA,JESTER
FCLEAR DIPLOMA,NDESCBIT
ICALL2 SETUP-ORPHAN,STR?44
PRINTI "As you step onto the bridge, it begins transforming and withdrawing from the opposite bank of the stream. When the transformation ends, the bridge has become the jester, who is on all fours, and you are standing in the center of his back! With clumsy haste and muttered apologies, you dismount. The jester straightens up, and laughs, ""No hard feelings! I'll be fit as a fiddle, once you answer this riddle:"
GETP STREAM,P?RIDDLE
PRINT STACK
CRLF
RFALSE
?CCL5: PRINTI "Without a bridge, the stream is uncrossable."
CRLF
RFALSE
.FUNCT MUSIC-F
EQUAL? PRSA,V?PLAY \?CCL3
CALL2 PERFORM-PRSA,LULLABY
RSTACK
?CCL3: EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "[You can't hear any music right here!]"
.FUNCT STREAM-OBJECT-F
EQUAL? PRSA,V?CROSS \FALSE
CALL2 DO-WALK,P?WEST
RSTACK
.FUNCT CAMEL-DRINK-ROOM-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
EQUAL? HERE,OASIS \?CCL6
PRINTI "An underground spring bubbles up through the sands, forming a pool of clear, cold water. A hot wind blows off the desert to the southwest."
RTRUE
?CCL6: PRINTI "A wide stream gurgles out of the rocks, feeding the waters of the lake. "
FSET? DIPLOMA,NDESCBIT \?CND7
PRINTI "A strange green bridge spans the stream to the west. At the far end of the bridge, you can see a framed document of some sort. "
?CND7: PRINTI "A path follows the shoreline to the east."
RTRUE
?CCL3: EQUAL? RARG,M-ENTER \?CCL10
EQUAL? HERE,STREAM \?CCL10
FSET? DIPLOMA,TRYTAKEBIT \?CCL10
MOVE BRIDGE,HERE
FSET DIPLOMA,NDESCBIT
MOVE DIPLOMA,HERE
RTRUE
?CCL10: EQUAL? RARG,M-END \FALSE
EQUAL? HERE,STREAM \?CND16
IN? JESTER,HERE \?CND16
FSET? DIPLOMA,TRYTAKEBIT \?CND16
ICALL2 SETUP-ORPHAN,STR?44
?CND16: IN? CAMEL,HERE \FALSE
FSET? CAMEL,ANIMATEDBIT \FALSE
ZERO? CAMEL-THIRSTY /FALSE
SET 'CAMEL-THIRSTY,FALSE-VALUE
ICALL1 RETURN-FROM-MAP
PRINTI " The camel lumbers over to the "
EQUAL? HERE,OASIS \?CCL29
PRINTI "oasis"
JUMP ?CND27
?CCL29: PRINTI "stream"
?CND27: PRINTR " and takes an amazingly long sip."
.SEGMENT "0"
.FUNCT DIPLOMA-F
EQUAL? PRSA,V?TAKE \FALSE
FSET? DIPLOMA,TRYTAKEBIT \FALSE
IN? DIPLOMA,JESTER \?CCL8
PRINT ANSWER-MY-RIDDLE
RTRUE
?CCL8: CALL2 DO-FIRST,STR?602
RSTACK
.ENDSEG
.SEGMENT "LAKE"
.FUNCT G-CAMEL-F,X,Y
RETURN CAMEL
.FUNCT CAMEL-F,VARG
FSET? CAMEL,ANIMATEDBIT \FALSE
EQUAL? VARG,M-WINNER \?CCL5
EQUAL? PRSA,V?WALK \?CCL8
IN? PROTAGONIST,CAMEL \?CCL11
SET 'WINNER,PROTAGONIST
ICALL2 DO-WALK,PRSO
SET 'WINNER,CAMEL
RTRUE
?CCL11: PRINTI "Perhaps if you were ON the camel..."
CRLF
JUMP ?CND6
?CCL8: EQUAL? PRSA,V?DRINK \?CCL13
EQUAL? PRSO,LAKE-FLATHEAD,WATER \?CCL13
EQUAL? HERE,SOUTH-SHORE,EAST-SHORE \?CCL13
PRINTI "You can lead a camel to water, but you can't make him drink."
CRLF
JUMP ?CND6
?CCL13: RANDOM 100
LESS? 33,STACK /?CCL18
PRINTI """Snort."""
CRLF
JUMP ?CND6
?CCL18: RANDOM 100
LESS? 50,STACK /?CCL20
PRINTI """Grunt."""
CRLF
JUMP ?CND6
?CCL20: PRINTI """Groan."""
CRLF
?CND6: CALL1 STOP
RSTACK
?CCL5: ZERO? VARG \FALSE
EQUAL? PRSA,V?TOUCH \?CCL24
EQUAL? P-PRSA-WORD,W?PAT,W?PET \?CCL24
PRINTR "The camel emits an (almost) endearing bray."
?CCL24: EQUAL? PRSA,V?EXAMINE \?CCL28
PRINTI "The camel looks "
ZERO? CAMEL-THIRSTY /?CCL31
PRINTI "thirsty"
JUMP ?CND29
?CCL31: PRINTI "sated"
?CND29: PRINT PERIOD-CR
RTRUE
?CCL28: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "Never look a gift camel in the mouth."
.FUNCT I-W-CAMEL
ZERO? TIME-STOPPED /?CND1
ICALL QUEUE,I-W-CAMEL,3
RFALSE
?CND1: FSET CAMEL,ANIMATEDBIT
FSET CAMEL,ACTORBIT
CALL2 VISIBLE?,CAMEL
ZERO? STACK /FALSE
ICALL1 RETURN-FROM-MAP
PRINTR " The camel's garish colors fade once again to the color of sand. His tail begins swishing around, and he emits a forlorn bray."
.FUNCT DESERT-ENTER-F,RARG
ZERO? RARG /?CCL3
RETURN G-U-DESERT
?CCL3: IN? PROTAGONIST,CAMEL \?CCL5
ZERO? CAMEL-THIRSTY /?CCL5
ICALL1 RETURN-FROM-MAP
PRINTI "The camel takes one look at the vast desert, gives a dry croak, and refuses to budge."
CRLF
RFALSE
?CCL5: IN? PROTAGONIST,CAMEL \?CND8
SET 'CAMEL-THIRSTY,TRUE-VALUE
?CND8: RETURN G-U-DESERT
.FUNCT CACTI-F
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "All the cacti look particularly prickly."
?CCL3: EQUAL? PRSA,V?LISTEN \?CCL5
ZERO? PLANT-TALKER /?CCL5
PRINTR "The cacti, in parched voices, are exchanging wry witticisms. It seems that all cacti have a very dry sense of humor."
?CCL5: CALL2 TOUCHING?,CACTI
ZERO? STACK /FALSE
PRINTR "Youch! Nasty cactus pricks!"
.FUNCT DESERT-ROOM-F,RARG
EQUAL? RARG,M-ENTER \?CCL3
IN? PROTAGONIST,CAMEL /?CCL3
INC 'DESERT-DEATH
ICALL QUEUE,I-DESERT-RESET,-1
ICALL1 RETURN-FROM-MAP
PRINTI "You trudge along beneath the searing gaze of an artificial desert sun"
EQUAL? DESERT-DEATH,4 \?CCL8
PRINTI ". Wavering dizziness threatens your every step"
JUMP ?CND6
?CCL8: EQUAL? DESERT-DEATH,3 \?CND6
PRINTI ". You won't last much longer in this dry heat"
?CND6: PRINT ELLIPSIS
RTRUE
?CCL3: EQUAL? RARG,M-END \FALSE
EQUAL? DESERT-DEATH,5 \FALSE
ICALL1 RETURN-FROM-MAP
CALL2 JIGS-UP,STR?610
RSTACK
.FUNCT I-DESERT-RESET
FSET? HERE,DESERTBIT /FALSE
SET 'DESERT-DEATH,0
ICALL2 DEQUEUE,I-DESERT-RESET
RFALSE
.FUNCT PHIL-HALL-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This was the visually impressive but acoustically abysmal home of the royal orchestra, but the musicians (like everyone else) have fled the eastlands. Uncountable rows of velvet-covered seats extend into the shadows beyond your light. Gilt-trimmed balconies hang above the huge wooden stage. "
IN? CONDUCTOR-STAND,HERE \?CND4
PRINTI "A lone spotlight illuminates the conductor's stand. "
?CND4: PRINTI "Passages lead east, north and south."
RTRUE
.FUNCT PHIL-SHADOW-PS
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Like most shadows, a little creepy."
.FUNCT SPOTLIGHT-PS
EQUAL? PRSA,V?EXAMINE \?CCL3
IN? CONDUCTOR-STAND,HERE \?CCL3
PRINTR "The spotlight bathes the conductor's stand in a circle of light."
?CCL3: EQUAL? PRSA,V?ENTER \FALSE
IN? PROTAGONIST,CONDUCTOR-STAND \?CCL10
PRINT LOOK-AROUND
RTRUE
?CCL10: IN? CONDUCTOR-STAND,HERE \?CCL12
ICALL PERFORM,V?ENTER,CONDUCTOR-STAND
RTRUE
?CCL12: PRINTR "You stand in the center of the circle of light, to little effect."
.FUNCT CONDUCTOR-STAND-F,OARG
ZERO? OARG \FALSE
EQUAL? PRSA,V?STAND-ON,V?ENTER \?CCL5
ZERO? TIME-STOPPED \?CCL5
PRINTI "The "
ICALL2 DPRINT,CONDUCTOR-STAND
PRINTI " plunges "
EQUAL? HERE,CONDUCTOR-PIT \?CCL10
PRINTI "up"
JUMP ?CND8
?CCL10: PRINTI "down"
?CND8: PRINTI "ward, and you along with it"
PRINT ELLIPSIS
EQUAL? HERE,CONDUCTOR-PIT \?CCL13
FSET CONDUCTOR-STAND,NDESCBIT
PUSH PHIL-HALL
JUMP ?CND11
?CCL13: FCLEAR CONDUCTOR-STAND,NDESCBIT
PUSH CONDUCTOR-PIT
?CND11: MOVE CONDUCTOR-STAND,STACK
CALL2 GOTO,CONDUCTOR-STAND
RSTACK
?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The stand is a rectangular platform about a foot high."
FIRST? CONDUCTOR-STAND \?CCL18
PRINTC 32
RFALSE
?CCL18: CRLF
RTRUE
.FUNCT CONDUCTOR-PIT-F,RARG
EQUAL? RARG,M-ENTER \FALSE
IN? CONDUCTOR-STAND,CONDUCTOR-PIT /FALSE
FSET VIOLIN,TOUCHBIT
RTRUE
.SEGMENT "0"
.FUNCT VIOLIN-F
EQUAL? PRSA,V?PLAY \?CCL3
PRINTR "An amazingly offensive noise issues from the violin."
?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "This is a beautiful instrument which, in the right hands, would certainly produce magnificent music."
.ENDSEG
.SEGMENT "LAKE"
.FUNCT DIMWIT-BOX-PS
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "Plush. Very plush."
?CCL3: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \?CCL5
ICALL PERFORM,V?SEARCH,GLOBAL-HERE
RTRUE
?CCL5: EQUAL? PRSA,V?PUT \?CCL7
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL7: EQUAL? PRSA,V?CLIMB-ON,V?ENTER \FALSE
PRINTR "Why bother? No show tonight."
.ENDSEG
.ENDI