minizork2-1988/alice.zap

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