mirror of
https://github.com/historicalsource/zorkzero
synced 2024-04-24 13:19:28 +03:00
2733 lines
72 KiB
Plaintext
2733 lines
72 KiB
Plaintext
|
|
.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
|