367 lines
8.3 KiB
Plaintext
367 lines
8.3 KiB
Plaintext
|
|
|
|
.FUNCT RIDDLE-ROOM-F,RARG
|
|
EQUAL? RARG,M-LOOK \?CCL3
|
|
PRINTI "This bare room has an exit in the northwest corner. To the east is a great "
|
|
FSET? RIDDLE-DOOR,OPENBIT \?PRG11
|
|
PRINTI "open"
|
|
JUMP ?PRG13
|
|
?PRG11: PRINTI "closed"
|
|
?PRG13: PRINTI " door of stone. Above it is written: ""No one shall pass without solving this riddle:"
|
|
CRLF
|
|
CRLF
|
|
PRINT RIDDLE-TEXT
|
|
RTRUE
|
|
?CCL3: EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?SAY \FALSE
|
|
FSET? RIDDLE-DOOR,OPENBIT /FALSE
|
|
GET P-LEXV,P-CONT
|
|
EQUAL? STACK,W?WELL /?CTR23
|
|
ADD P-CONT,2
|
|
GET P-LEXV,STACK
|
|
EQUAL? STACK,W?WELL \?PRG29
|
|
?CTR23: ADD SCORE,5 >SCORE
|
|
FSET RIDDLE-DOOR,OPENBIT
|
|
PRINTI "With a deafening clap of thunder, the door opens."
|
|
CRLF
|
|
JUMP ?CND20
|
|
?PRG29: PRINTI "A hollow laugh comes from the door."
|
|
CRLF
|
|
?CND20: SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RIDDLE-PSEUDO
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
|
PRINT RIDDLE-TEXT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RIDDLE-DOOR-F
|
|
EQUAL? PRSA,V?OPEN \?PRD5
|
|
FSET? RIDDLE-DOOR,OPENBIT \?PRG10
|
|
?PRD5: EQUAL? PRSA,V?CLOSE \FALSE
|
|
FSET? RIDDLE-DOOR,OPENBIT \FALSE
|
|
?PRG10: PRINTR "It won't budge."
|
|
|
|
|
|
.FUNCT BUCKET-CONT
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
IN? WINNER,BUCKET /FALSE
|
|
PRINTR "You must get in the bucket to reach it."
|
|
|
|
|
|
.FUNCT BUCKET-F,RARG=M-BEG
|
|
EQUAL? RARG,M-BEG \?CCL3
|
|
EQUAL? PRSA,V?BURN \?CCL6
|
|
EQUAL? PRSO,BUCKET \?CCL6
|
|
PRINTR "The bucket appears to be fireproof."
|
|
?CCL6: EQUAL? PRSA,V?PUT,V?DROP \?CCL12
|
|
EQUAL? PRSO,WATER \?CCL12
|
|
EQUAL? PRSI,BUCKET \?CCL12
|
|
IN? BUCKET,CIRCULAR-ROOM \?CCL12
|
|
IN? WINNER,BUCKET /?CCL12
|
|
MOVE BUCKET,TOP-OF-WELL
|
|
MOVE WATER,BUCKET
|
|
SET 'BUCKET-TOP-FLAG,TRUE-VALUE
|
|
CALL QUEUE,I-BUCKET,100
|
|
PUT STACK,0,1
|
|
PRINTR "The bucket swiftly rises up, and is gone."
|
|
?CCL12: EQUAL? PRSA,V?KICK \FALSE
|
|
CALL JIGS-UP,STR?172
|
|
RSTACK
|
|
?CCL3: EQUAL? RARG,M-END \?CCL23
|
|
IN? WATER,BUCKET \?CCL26
|
|
ZERO? BUCKET-TOP-FLAG \?CCL26
|
|
SET 'BUCKET-TOP-FLAG,TRUE-VALUE
|
|
SET 'EVAPORATED,FALSE-VALUE
|
|
CALL PASS-THE-BUCKET,TOP-OF-WELL
|
|
CALL QUEUE,I-BUCKET,100
|
|
PUT STACK,0,1
|
|
PRINTI "The bucket rises and"
|
|
PRINT STOPS
|
|
RTRUE
|
|
?CCL26: ZERO? BUCKET-TOP-FLAG /FALSE
|
|
IN? WATER,BUCKET /FALSE
|
|
ZERO? EVAPORATED /?PRG40
|
|
PRINTI "The last of the water evaporates, and the bucket descends."
|
|
CRLF
|
|
CRLF
|
|
JUMP ?CND35
|
|
?PRG40: PRINTI "The bucket descends and"
|
|
PRINT STOPS
|
|
?CND35: SET 'BUCKET-TOP-FLAG,FALSE-VALUE
|
|
CALL PASS-THE-BUCKET,CIRCULAR-ROOM
|
|
RSTACK
|
|
?CCL23: EQUAL? PRSA,V?CLIMB-ON \FALSE
|
|
CALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PASS-THE-BUCKET,R
|
|
MOVE BUCKET,R
|
|
IN? WINNER,BUCKET \FALSE
|
|
CALL GOTO,R
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-BUCKET
|
|
IN? WATER,BUCKET \FALSE
|
|
SET 'EVAPORATED,TRUE-VALUE
|
|
REMOVE WATER
|
|
RFALSE
|
|
|
|
|
|
.FUNCT WELL-F
|
|
EQUAL? PRSA,V?DROP,V?PUT,V?THROW \?CCL3
|
|
FSET? PRSO,TAKEBIT \?CCL3
|
|
MOVE PRSO,CIRCULAR-ROOM
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is now at the bottom of the well."
|
|
?CCL3: EQUAL? PRSA,V?CLIMB-DOWN,V?CLIMB \FALSE
|
|
PRINTR "You can't climb the well."
|
|
|
|
|
|
.FUNCT CRACK-PSEUDO
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "It's a small, uninteresting crack."
|
|
|
|
|
|
.FUNCT ROBOT-F,RARG=M-OBJECT
|
|
EQUAL? WINNER,ROBOT \?CCL3
|
|
EQUAL? PRSA,V?SGIVE /FALSE
|
|
EQUAL? PRSA,V?FOLLOW \?CCL8
|
|
PRINTR """I'm too primitive. I can walk in any direction you order, though."""
|
|
?CCL8: EQUAL? PRSA,V?MOVE,V?TAKE,V?RAISE \?CCL12
|
|
EQUAL? PRSO,CAGE-OBJECT \?CCL12
|
|
PRINTI "The robots pulverizes the cage to dust."
|
|
CRLF
|
|
CRLF
|
|
CALL INT,I-CAGE-DEATH
|
|
PUT STACK,0,0
|
|
SET 'WINNER,ADVENTURER
|
|
FCLEAR ROBOT,NDESCBIT
|
|
FSET PALANTIR-1,TAKEBIT
|
|
MOVE ROBOT,DINGY-CLOSET
|
|
SET 'CAGE-SOLVE-FLAG,TRUE-VALUE
|
|
CALL GOTO,DINGY-CLOSET
|
|
RSTACK
|
|
?CCL12: EQUAL? PRSA,V?THROW,V?PUT,V?DROP \?CCL18
|
|
CALL ACCESSIBLE?,ROBOT
|
|
ZERO? STACK /FALSE
|
|
PRINT B-W-C
|
|
IN? PRSO,ROBOT \?PRG29
|
|
PRINTC 34
|
|
CRLF
|
|
RFALSE
|
|
?PRG29: PRINTR " I don't have that!"""
|
|
?CCL18: EQUAL? PRSA,V?WALK /?CTR31
|
|
EQUAL? PRSA,V?PUSH,V?TAKE \?CCL32
|
|
FSET? PRSO,ACTORBIT /?CCL32
|
|
?CTR31: CALL ACCESSIBLE?,ROBOT
|
|
ZERO? STACK /FALSE
|
|
PRINT B-W-C
|
|
PRINTC 34
|
|
CRLF
|
|
RFALSE
|
|
?CCL32: CALL ACCESSIBLE?,ROBOT
|
|
ZERO? STACK /TRUE
|
|
PRINTR """My programming is insufficient for that task."""
|
|
?CCL3: EQUAL? PRSA,V?CLOSE,V?LOOK-INSIDE,V?OPEN \?CCL47
|
|
PRINTR "The robot has no access panel."
|
|
?CCL47: EQUAL? PRSA,V?GIVE \?CCL51
|
|
EQUAL? PRSI,ROBOT \?CCL51
|
|
MOVE PRSO,ROBOT
|
|
PRINTI "The robot accepts the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL51: EQUAL? PRSA,V?MUNG,V?THROW \FALSE
|
|
PRINTI "The robot (being of shoddy construction) disintegrates before your eyes."
|
|
CRLF
|
|
EQUAL? PRSA,V?THROW \?CCL62
|
|
PUSH PRSI
|
|
JUMP ?CND60
|
|
?CCL62: PUSH PRSO
|
|
?CND60: REMOVE STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TRIANGULAR-BUTTON-F
|
|
EQUAL? PRSA,V?PUSH \FALSE
|
|
EQUAL? WINNER,ADVENTURER \?CCL6
|
|
CALL JIGS-UP,STR?178
|
|
RSTACK
|
|
?CCL6: ZERO? CAROUSEL-ON /?PRT7
|
|
SET 'CAROUSEL-ON,0
|
|
JUMP ?PRE9
|
|
?PRT7: SET 'CAROUSEL-ON,1
|
|
?PRE9: FSET? VIOLIN,INVISIBLE \?PRG15
|
|
FCLEAR VIOLIN,INVISIBLE
|
|
FCLEAR CAROUSEL-ROOM,TOUCHBIT
|
|
PRINTR "You hear a distant thump."
|
|
?PRG15: PRINTR "Click."
|
|
|
|
|
|
.FUNCT CAGE-F,RARG
|
|
ZERO? CAGE-SOLVE-FLAG /FALSE
|
|
SET 'HERE,DINGY-CLOSET
|
|
RETURN HERE
|
|
|
|
|
|
.FUNCT I-CAGE-DEATH
|
|
EQUAL? HERE,DINGY-CLOSET,CAGE \FALSE
|
|
FSET PALANTIR-1,INVISIBLE
|
|
CALL JIGS-UP,STR?181
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ALICE-HOLE
|
|
EQUAL? PRSA,V?EXAMINE,V?ENTER \?CCL3
|
|
CALL DO-WALK,P?EAST
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \?CCL5
|
|
PRINT ONLY-DARKNESS
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSA,V?PUT \FALSE
|
|
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
|
|
PRINTR "It doesn't fit."
|
|
|
|
|
|
.FUNCT GREEN-CAKE-F,F,N
|
|
EQUAL? PRSA,V?EAT \?CCL3
|
|
EQUAL? PRSO,GREEN-CAKE \?CCL3
|
|
EQUAL? HERE,TEA-ROOM \?CCL3
|
|
REMOVE GREEN-CAKE
|
|
FSET ALICE-TABLE,INVISIBLE
|
|
FSET ROBOT,INVISIBLE
|
|
FIRST? HERE >F /?PRG8
|
|
?PRG8: ZERO? F /?PRG17
|
|
NEXT? F >N /?BOGUS12
|
|
?BOGUS12: EQUAL? F,ADVENTURER /?CND13
|
|
FSET? F,TAKEBIT \?CND13
|
|
FSET F,NONLANDBIT
|
|
FSET F,TRYTAKEBIT
|
|
MOVE F,POSTS-ROOM
|
|
?CND13: SET 'F,N
|
|
JUMP ?PRG8
|
|
?PRG17: PRINTI "Suddenly, the room becomes huge (although your possessions retain their normal size)."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,POSTS-ROOM
|
|
RSTACK
|
|
?CCL3: CALL CAKE-CRUMBLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CAKE-F,F,N
|
|
EQUAL? PRSA,V?READ \?CCL3
|
|
FSET? PRSO,NONLANDBIT \?PRG9
|
|
PRINTR "The cake is now too tall to read."
|
|
?PRG9: PRINTI "The letters are tiny; all you can make out is ""E"
|
|
EQUAL? PRSO,RED-CAKE \?CCL13
|
|
PRINTI "VA"
|
|
JUMP ?PRG22
|
|
?CCL13: EQUAL? PRSO,ORANGE-CAKE \?PRG20
|
|
PRINTI "XP"
|
|
JUMP ?PRG22
|
|
?PRG20: PRINTI "NL"
|
|
?PRG22: PRINTR """."
|
|
?CCL3: EQUAL? PRSA,V?EAT \?CCL25
|
|
EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?CCL25
|
|
EQUAL? PRSO,ORANGE-CAKE \?CCL30
|
|
REMOVE PRSO
|
|
CALL JIGS-UP,STR?186
|
|
RSTACK
|
|
?CCL30: EQUAL? PRSO,RED-CAKE \?CCL32
|
|
REMOVE PRSO
|
|
CALL JIGS-UP,STR?187
|
|
RSTACK
|
|
?CCL32: EQUAL? PRSO,BLUE-CAKE \FALSE
|
|
REMOVE PRSO
|
|
PRINTI "The room shrinks."
|
|
CRLF
|
|
CRLF
|
|
EQUAL? HERE,POSTS-ROOM \?CCL39
|
|
FCLEAR ROBOT,INVISIBLE
|
|
FCLEAR ALICE-TABLE,INVISIBLE
|
|
FSET POSTS,INVISIBLE
|
|
FIRST? HERE >F /?PRG41
|
|
?PRG41: ZERO? F /?REP42
|
|
NEXT? F >N /?BOGUS45
|
|
?BOGUS45: EQUAL? F,ADVENTURER /?CND46
|
|
FSET? F,TAKEBIT \?CND46
|
|
FCLEAR F,NONLANDBIT
|
|
FCLEAR F,TRYTAKEBIT
|
|
MOVE F,TEA-ROOM
|
|
?CND46: SET 'F,N
|
|
JUMP ?PRG41
|
|
?REP42: CALL GOTO,TEA-ROOM
|
|
RSTACK
|
|
?CCL39: CALL JIGS-UP,STR?188
|
|
RSTACK
|
|
?CCL25: EQUAL? PRSA,V?PUT,V?THROW \?CCL51
|
|
EQUAL? PRSO,ORANGE-CAKE \?CCL51
|
|
EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?CCL51
|
|
REMOVE PRSO
|
|
CALL JIGS-UP,STR?186
|
|
RSTACK
|
|
?CCL51: EQUAL? PRSA,V?PUT,V?THROW \?CCL56
|
|
EQUAL? PRSI,POOL \?CCL56
|
|
EQUAL? PRSO,BLUE-CAKE,ORANGE-CAKE \?CND59
|
|
PRINTI """Splash!"""
|
|
CRLF
|
|
REMOVE PRSO
|
|
RTRUE
|
|
?CND59: MOVE PRSO,HERE
|
|
REMOVE PRSI
|
|
FCLEAR CANDY,INVISIBLE
|
|
PRINTR "The pool evaporates, leaving a damp (but still valuable) package of rare candies."
|
|
?CCL56: CALL CAKE-CRUMBLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CAKE-CRUMBLE,CAKE
|
|
FSET? PRSO,FOODBIT \?CCL3
|
|
SET 'CAKE,PRSO
|
|
JUMP ?CND1
|
|
?CCL3: SET 'CAKE,PRSI
|
|
?CND1: EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM /FALSE
|
|
EQUAL? HERE,MACHINE-ROOM,DINGY-CLOSET,TOP-OF-WELL /FALSE
|
|
EQUAL? HERE,CAGE /FALSE
|
|
REMOVE CAKE
|
|
PRINTI "The "
|
|
PRINTD CAKE
|
|
PRINTR " crumbles to dust."
|
|
|
|
|
|
.FUNCT POSTS-ROOM-F,RARG
|
|
EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
FSET? PRSO,NONLANDBIT \FALSE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is now huge. You have no hope of taking it."
|
|
|
|
|
|
.FUNCT POOL-F
|
|
EQUAL? PRSA,V?DRINK \?CCL3
|
|
CALL PERFORM,V?DRINK,WATER
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?LOOK-UNDER \?CCL5
|
|
PRINTR "You can't make out what's below the surface."
|
|
?CCL5: EQUAL? PRSA,V?ENTER \FALSE
|
|
CALL V-SWIM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CANDY-F
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \?CCL3
|
|
PRINTR """Frobozz Magic Candy Company -- Special Assortment! Candied Grasshoppers, Chocolated Ants, and Worms Glacee!"""
|
|
?CCL3: EQUAL? PRSA,V?OPEN,V?EAT \FALSE
|
|
PRINTR "It's too rich for your tastes."
|
|
|
|
.ENDI
|