.SEGMENT "0" .FUNCT INTNUM-F,X EQUAL? HERE,CONSTRUCTION \FALSE CALL NOUN-USED?,INTNUM,W?NUMBER ZERO? STACK /FALSE PRINTI "The number engraved on the wall is """ PRINTN CONSTRUCTION-LOC PRINTR ".""" .ENDSEG .SEGMENT "0" .FUNCT LEFT-RIGHT-F EQUAL? PRSA,V?CHASTISE \?CCL3 PRINTR "You see nothing unusual." ?CCL3: EQUAL? PRSA,V?ENTER,V?WALK-TO,V?WALK \?CCL5 EQUAL? HERE,WEIRD \?CCL8 CALL NOUN-USED?,LEFT-RIGHT,W?LEFT ZERO? STACK /?CCL8 EQUAL? TOWER-BEATEN,PYRAMID-L \?CCL8 CALL2 DO-WALK,P?WEST RSTACK ?CCL8: EQUAL? HERE,WEIRD \?CCL13 CALL NOUN-USED?,LEFT-RIGHT,W?RIGHT ZERO? STACK /?CCL13 EQUAL? TOWER-BEATEN,PYRAMID-R \?CCL13 CALL2 DO-WALK,P?EAST RSTACK ?CCL13: EQUAL? HERE,TESTING-ROOM \?CCL18 CALL NOUN-USED?,LEFT-RIGHT,W?RIGHT ZERO? STACK /?CCL21 PUSH RIGHT-BOOTH JUMP ?CND19 ?CCL21: PUSH LEFT-BOOTH ?CND19: CALL PERFORM,V?ENTER,STACK RSTACK ?CCL18: CALL1 V-WALK-AROUND RSTACK ?CCL5: EQUAL? PRSA,V?SET \FALSE PRINTR "You turn ninety degrees, with little effect." .ENDSEG .SEGMENT "0" .FUNCT GRUE-F EQUAL? PRSA,V?FIND,V?EXAMINE \FALSE FSET? LANTERN,TRYTAKEBIT \?CCL6 PRINTR "Don't be silly! There haven't been grues around for centuries!" ?CCL6: PRINTI "There is no grue here, but I'm sure there is at least one lurking in the darkness nearby." CALL FIND-IN,PROTAGONIST,ONBIT ZERO? STACK /FALSE FSET? HERE,ONBIT /FALSE PRINTR " I wouldn't let my light go out if I were you!" .FUNCT SAILOR-F,ARG EQUAL? ARG,M-WINNER \?CCL3 EQUAL? PRSA,V?HELLO \?CCL6 PRINTR "Nothing happens here." ?CCL6: CALL2 CANT-SEE,SAILOR RSTACK ?CCL3: EQUAL? PRSA,V?WAIT-FOR \?CCL8 PRINTR "You are liable to be waiting for several sequels." ?CCL8: CALL2 HANDLE,SAILOR ZERO? STACK /FALSE EQUAL? PRSA,V?HELLO,V?TELL /FALSE CALL2 CANT-SEE,SAILOR RSTACK .FUNCT GLOBAL-SLEEP-F EQUAL? PRSA,V?TAKE,V?WALK-TO \?CCL3 CALL1 V-SLEEP RSTACK ?CCL3: EQUAL? PRSA,V?PUT-TO \FALSE EQUAL? PRSI,GLOBAL-SLEEP \FALSE EQUAL? PRSO,BEDBUG \?CCL10 PRINTI "You sing a brief lullaby. " CALL2 REMOVE-BEDBUG,STR?194 RSTACK ?CCL10: PRINTR "You're not a hypnotist." .FUNCT LULLABY-F,ACTOR EQUAL? PRSA,V?SING \?CCL3 ZERO? PRSI \?CND4 IN? BEDBUG,HERE \?CCL8 SET 'PRSI,BEDBUG JUMP ?CND4 ?CCL8: CALL FIND-IN,HERE,ACTORBIT >ACTOR ZERO? ACTOR /?CCL10 SET 'PRSI,ACTOR ?CND4: EQUAL? PRSI,BEDBUG \?CCL13 ICALL PERFORM,V?PUT-TO,BEDBUG,GLOBAL-SLEEP RTRUE ?CCL10: PRINTR "[If you put me to sleep, you'd have a heck of a time communicating with the game! By the way, don't expect any offers from the Borphee Opera Company.]" ?CCL13: FSET? PRSI,ACTORBIT \?CCL15 PRINTI "Despite your best rendition," ICALL1 TPRINT-PRSI PRINTR " remains awake." ?CCL15: PRINTI "Amazingly," ICALL1 TPRINT-PRSI PRINTR " is now motionless! You must have put it right to sleep! Incredible! What a talent!" ?CCL3: EQUAL? PRSA,V?PLAY \FALSE IN? BEDBUG,HERE \?CCL20 CALL NOUN-USED?,LULLABY,W?LULLABY,W?LULLABYE ZERO? STACK /?CCL20 ICALL PERFORM,V?PUT-TO,BEDBUG,GLOBAL-SLEEP RTRUE ?CCL20: CALL ULTIMATELY-IN?,VIOLIN,PROTAGONIST ZERO? STACK /?CCL24 PRINTI "[with" ICALL2 TPRINT,VIOLIN PRINTC 93 CRLF CALL2 PERFORM-PRSA,VIOLIN RSTACK ?CCL24: IN? HARMONICA,PROTAGONIST \?CCL26 PRINTI "[with" ICALL2 TPRINT,HARMONICA PRINTC 93 CRLF CALL2 PERFORM-PRSA,HARMONICA RSTACK ?CCL26: PRINTR "You have no instrument to play it on." .FUNCT GROUND-F ICALL1 SET-GROUND-DESC EQUAL? PRSA,V?EXAMINE \?CCL3 EQUAL? HERE,OUBLIETTE \?CCL6 PRINTR "Mud. Squishy mud." ?CCL6: EQUAL? HERE,PITS \?CCL8 ICALL PERFORM,V?EXAMINE,PITS-OBJECT RTRUE ?CCL8: EQUAL? HERE,TIGHT-SQUEEZE \FALSE PRINTR "You see a man-sized opening through which cool air seems to flow." ?CCL3: EQUAL? PRSA,V?LOOK-UNDER \?CCL12 CALL1 IMPOSSIBLES RSTACK ?CCL12: EQUAL? PRSA,V?CLIMB,V?CLIMB-ON,V?CLIMB-UP /?CTR13 EQUAL? PRSA,V?ENTER \?CCL14 ?CTR13: CALL1 WASTES RSTACK ?CCL14: EQUAL? PRSA,V?LEAVE \FALSE CALL2 DO-WALK,P?UP RSTACK .FUNCT SET-GROUND-DESC FSET? HERE,OUTSIDEBIT \?CCL3 PUTP GROUND,P?SDESC,STR?195 RTRUE ?CCL3: FSET? HERE,DESERTBIT \?CCL5 PUTP GROUND,P?SDESC,STR?196 RTRUE ?CCL5: PUTP GROUND,P?SDESC,STR?197 RTRUE .FUNCT GLOBAL-HOLE-F EQUAL? PRSA,V?DIG \?CCL3 EQUAL? PRSO,GLOBAL-HOLE \?CCL3 ZERO? PRSI /?CCL8 EQUAL? PRSI,SHOVEL \?CCL11 CALL PERFORM-PRSA,GROUND,SHOVEL RSTACK ?CCL11: CALL2 ULTIMATELY-IN?,SHOVEL ZERO? STACK /?CCL13 PRINTI "[with the shovel]" CRLF CALL PERFORM-PRSA,PRSI,SHOVEL RSTACK ?CCL13: PRINTI "[with your hands]" CRLF CALL PERFORM-PRSA,PRSI,HANDS RSTACK ?CCL8: CALL2 ULTIMATELY-IN?,SHOVEL ZERO? STACK /?CCL15 PRINTI "[with the shovel]" CRLF CALL PERFORM-PRSA,GROUND,SHOVEL RSTACK ?CCL15: PRINTI "[with your hands]" CRLF CALL PERFORM-PRSA,GROUND,HANDS RSTACK ?CCL3: CALL2 HANDLE,GLOBAL-HOLE ZERO? STACK /FALSE CALL2 CANT-SEE,GLOBAL-HOLE RSTACK .FUNCT WALL-F,CNT EQUAL? PRSA,V?EXAMINE,V?READ \?CCL3 EQUAL? HERE,CHURCH \?CCL6 ICALL PERFORM,V?READ,TENET RTRUE ?CCL6: EQUAL? HERE,CELL \FALSE IN? COBWEBS,CELL \FALSE PRINT CELL-WALL-DESC CRLF RTRUE ?CCL3: EQUAL? PRSA,V?CLEAN \?CCL12 EQUAL? HERE,CELL \?CCL12 CALL ADJ-USED?,WALL,W?REAR ZERO? STACK /?CCL12 IN? COBWEBS,CELL \?CCL12 ICALL PERFORM,V?CLEAN,COBWEBS RTRUE ?CCL12: EQUAL? PRSA,V?THROW-OVER \?CCL18 EQUAL? HERE,PERIMETER-WALL \?CCL21 PRINTR "Babe Flathead himself couldn't toss something over this towering wall!" ?CCL21: PRINTR "The wall joins the ceiling!" ?CCL18: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE EQUAL? PRSO,NW-SE-PASSAGE,N-S-PASSAGE \FALSE CALL ADJ-USED?,WALL,FALSE-VALUE ZERO? STACK /?CCL28 SET 'P-WON,FALSE-VALUE PRINTR "[You didn't specify which wall you meant: EAST WALL for example.]" ?CCL28: EQUAL? PRSO,N-S-PASSAGE \?PRD32 CALL ADJ-USED?,WALL,W?NORTH,W?N ZERO? STACK \?PRD32 CALL ADJ-USED?,WALL,W?SOUTH,W?S ZERO? STACK /?CTR29 ?PRD32: EQUAL? PRSO,NW-SE-PASSAGE \?CCL30 CALL ADJ-USED?,WALL,W?NORTHWEST,W?NW ZERO? STACK \?CCL30 CALL ADJ-USED?,WALL,W?SOUTHEAST,W?SE ZERO? STACK \?CCL30 ?CTR29: PRINT YOU-CANT PRINTI "install the passage on that wall--it's" CALL2 ARPRINT,PRSO RSTACK ?CCL30: CALL1 PASSAGE-THERE ZERO? STACK \TRUE EQUAL? HERE,GONDOLA,HOLD /?CTR41 LOC PROTAGONIST EQUAL? STACK,YACHT,DB \?CCL42 ?CTR41: PRINTR "A built-in safety feature prevents the passage from being installed in a vehicle." ?CCL42: MOVE PRSO,HERE FCLEAR PRSO,TAKEBIT SET 'COMPASS-CHANGED,TRUE-VALUE PUTP PRSO,P?OWNER,WALL PRINTI "There's now a passage leading " EQUAL? PRSO,N-S-PASSAGE \?CCL47 EQUAL? HERE,CONSTRUCTION \?CND48 SET 'N-S-PASSAGE-LOC,CONSTRUCTION-LOC ?CND48: CALL ADJ-USED?,WALL,W?NORTH,W?N ZERO? STACK /?CCL52 SET 'N-S-PASSAGE-DIR,P?NORTH EQUAL? HERE,CONSTRUCTION \?CND53 LESS? CONSTRUCTION-LOC,8 /?CND53 ADD CONSTRUCTION-LOC,100 PUT NORTH-EXITS,0,STACK ?PRG57: GET STORAGE-TABLE,CNT ZERO? STACK \?CCL61 SUB CONSTRUCTION-LOC,8 ADD STACK,CONSTRUCTION-OFFSET PUT STORAGE-TABLE,CNT,STACK ADD CNT,1 PUT STORAGE-TABLE,STACK,N-S-PASSAGE ?CND53: PRINTI "nor" JUMP ?CND50 ?CCL61: ADD CNT,2 >CNT JUMP ?PRG57 ?CCL52: SET 'N-S-PASSAGE-DIR,P?SOUTH EQUAL? HERE,CONSTRUCTION \?CND62 GRTR? CONSTRUCTION-LOC,55 /?CND62 ADD CONSTRUCTION-LOC,108 PUT NORTH-EXITS,0,STACK ?PRG66: GET STORAGE-TABLE,CNT ZERO? STACK \?CCL70 ADD CONSTRUCTION-LOC,8 ADD STACK,CONSTRUCTION-OFFSET PUT STORAGE-TABLE,CNT,STACK ADD CNT,1 PUT STORAGE-TABLE,STACK,N-S-PASSAGE ?CND62: PRINTI "sou" ?CND50: PRINTR "th from the room." ?CCL70: ADD CNT,2 >CNT JUMP ?PRG66 ?CCL47: EQUAL? HERE,CONSTRUCTION \?CND71 SET 'NW-SE-PASSAGE-LOC,CONSTRUCTION-LOC ?CND71: CALL ADJ-USED?,WALL,W?NORTHWEST,W?NW ZERO? STACK /?CCL75 SET 'NW-SE-PASSAGE-DIR,P?NW EQUAL? HERE,CONSTRUCTION \?CND76 MOD CONSTRUCTION-LOC,8 ZERO? STACK /?CND76 LESS? CONSTRUCTION-LOC,8 /?CND76 ADD CONSTRUCTION-LOC,91 PUT SE-EXITS,0,STACK ?PRG82: GET STORAGE-TABLE,CNT ZERO? STACK \?CCL86 SUB CONSTRUCTION-LOC,9 ADD STACK,CONSTRUCTION-OFFSET PUT STORAGE-TABLE,CNT,STACK ADD CNT,1 PUT STORAGE-TABLE,STACK,NW-SE-PASSAGE ?CND76: PRINTI "northwe" JUMP ?CND73 ?CCL86: ADD CNT,2 >CNT JUMP ?PRG82 ?CCL75: SET 'NW-SE-PASSAGE-DIR,P?SE EQUAL? HERE,CONSTRUCTION \?CND87 MOD CONSTRUCTION-LOC,8 EQUAL? STACK,7 /?CND87 GRTR? CONSTRUCTION-LOC,55 /?CND87 ADD CONSTRUCTION-LOC,100 PUT SE-EXITS,0,STACK ?PRG93: GET STORAGE-TABLE,CNT ZERO? STACK \?CCL97 ADD CONSTRUCTION-LOC,9 ADD STACK,CONSTRUCTION-OFFSET PUT STORAGE-TABLE,CNT,STACK ADD CNT,1 PUT STORAGE-TABLE,STACK,NW-SE-PASSAGE ?CND87: PRINTI "southea" ?CND73: PRINTR "st from the room." ?CCL97: ADD CNT,2 >CNT JUMP ?PRG93 .FUNCT PASSAGE-THERE,PASSAGE? CALL ADJ-USED?,WALL,W?NORTH,W?N ZERO? STACK /?CCL3 EQUAL? HERE,PEG-ROOM \?CCL6 ZERO? PEG-PASSAGE-OPENED \?CCL9 ICALL2 REPELLED,STR?198 SET 'PASSAGE?,M-FATAL JUMP ?CND1 ?CCL9: SET 'PASSAGE?,FALSE-VALUE JUMP ?CND1 ?CCL6: EQUAL? HERE,SECRET-PASSAGE \?CCL11 ZERO? SECRET-PASSAGE-OPEN \?CCL14 ICALL2 REPELLED,STR?198 SET 'PASSAGE?,M-FATAL JUMP ?CND1 ?CCL14: SET 'PASSAGE?,FALSE-VALUE JUMP ?CND1 ?CCL11: EQUAL? HERE,CONSTRUCTION \?CCL16 INTBL? NORTH-EXITS,CONSTRUCTION-LOC,11 \?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL16: EQUAL? HERE,WEIRD \?CCL20 EQUAL? TOWER-BEATEN,PYRAMID /?CCL20 ICALL2 REPELLED,STR?198 SET 'PASSAGE?,M-FATAL JUMP ?CND1 ?CCL20: EQUAL? HERE,G-U-MOUNTAIN \?CCL24 IN? BOULDER,HERE \?CCL27 ICALL2 REPELLED,STR?198 SET 'PASSAGE?,M-FATAL JUMP ?CND1 ?CCL27: SET 'PASSAGE?,FALSE-VALUE JUMP ?CND1 ?CCL24: GETPT HERE,P?NORTH ZERO? STACK /?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL3: CALL ADJ-USED?,WALL,W?SOUTH,W?S ZERO? STACK /?CCL30 EQUAL? HERE,CONSTRUCTION \?CCL33 ADD CONSTRUCTION-LOC,8 INTBL? NORTH-EXITS,STACK,11 \?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL33: EQUAL? HERE,THRONE-ROOM \?CCL37 ZERO? SECRET-PASSAGE-OPEN \?CCL40 ICALL2 REPELLED,STR?199 SET 'PASSAGE?,M-FATAL JUMP ?CND1 ?CCL40: SET 'PASSAGE?,FALSE-VALUE JUMP ?CND1 ?CCL37: GETPT HERE,P?SOUTH ZERO? STACK /?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL30: CALL ADJ-USED?,WALL,W?NORTHWEST,W?NW ZERO? STACK /?CCL43 EQUAL? HERE,CONSTRUCTION \?CCL46 SUB CONSTRUCTION-LOC,9 INTBL? SE-EXITS,STACK,7 \?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL46: EQUAL? HERE,PERIMETER-WALL \?CCL50 SET 'PASSAGE?,FALSE-VALUE JUMP ?CND1 ?CCL50: GETPT HERE,P?NW ZERO? STACK /?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL43: CALL ADJ-USED?,WALL,W?SOUTHEAST,W?SE ZERO? STACK /?CND1 EQUAL? HERE,CONSTRUCTION \?CCL55 INTBL? SE-EXITS,CONSTRUCTION-LOC,7 \?CND1 SET 'PASSAGE?,TRUE-VALUE JUMP ?CND1 ?CCL55: GETPT HERE,P?SE ZERO? STACK /?CND1 SET 'PASSAGE?,TRUE-VALUE ?CND1: EQUAL? PASSAGE?,M-FATAL /TRUE ZERO? PASSAGE? /FALSE PRINTR "There's already an exit in that direction!" .FUNCT REPELLED,STRING PRINTI "Strangely, the passage seems repelled by the " PRINT STRING PRINTR " wall, as though two inconsistent types of magic were at work in the same place." .FUNCT GLOBAL-PASSAGE-F EQUAL? PRSA,V?ENTER \FALSE CALL1 V-WALK-AROUND RSTACK .FUNCT CEILING-F CALL NOUN-USED?,CEILING,W?ROOF ZERO? STACK /?CCL3 EQUAL? HERE,ROOF,PARAPET \?CCL3 EQUAL? PRSA,V?THROW-FROM \?CCL8 REMOVE PRSO EQUAL? PRSO,PERCH /?CCL10 CALL ULTIMATELY-IN?,PERCH,PRSO ZERO? STACK /?CND9 ?CCL10: SET 'REMOVED-PERCH-LOC,GROUND ?CND9: PRINTI "You hear a ""splat"" as" ICALL1 TPRINT-PRSO PRINTR " sinks into the ground far below." ?CCL8: EQUAL? PRSO,CEILING \?CCL14 CALL PERFORM-PRSA,GLOBAL-HERE,PRSI RSTACK ?CCL14: CALL PERFORM-PRSA,PRSO,GLOBAL-HERE RSTACK ?CCL3: FSET? HERE,OUTSIDEBIT \?CCL16 CALL2 HANDLE,CEILING ZERO? STACK /?CCL16 CALL2 CANT-SEE,CEILING RSTACK ?CCL16: EQUAL? PRSA,V?EXAMINE \?CCL20 EQUAL? HERE,BARBICAN \?CCL23 PRINTR "It's too gloomy in here to make out any of the features of the ceiling." ?CCL23: EQUAL? HERE,MEGABOZ-HUT \FALSE PRINT MEGABOZ-CEILING-DESC CRLF RTRUE ?CCL20: EQUAL? PRSA,V?LOOK-UNDER \FALSE ICALL2 PERFORM,V?LOOK RTRUE .FUNCT SLIME-F EQUAL? PRSA,V?EAT,V?TOUCH,V?TASTE \FALSE PRINTR "Mega-yucko!" .FUNCT WATER-F,X CALL1 FIND-WATER >X ZERO? X \?CND1 CALL2 VISIBLE?,LARGE-VIAL ZERO? STACK /?CCL5 CALL2 VISIBLE?,SMALL-VIAL ZERO? STACK /?CCL5 GRTR? LARGE-VIAL-GLOOPS,0 \?CCL5 GRTR? SMALL-VIAL-GLOOPS,0 \?CCL5 PRINT WHICH-WATER RTRUE ?CCL5: CALL2 VISIBLE?,LARGE-VIAL ZERO? STACK /?CCL11 GRTR? LARGE-VIAL-GLOOPS,0 \?CCL11 SET 'X,LARGE-VIAL JUMP ?CND1 ?CCL11: CALL2 VISIBLE?,SMALL-VIAL ZERO? STACK /?CCL15 GRTR? SMALL-VIAL-GLOOPS,0 \?CCL15 SET 'X,SMALL-VIAL ?CND1: EQUAL? PRSA,V?COUNT \?CCL22 CALL NOUN-USED?,WATER,W?GLOOPS ZERO? STACK /?CCL22 CALL2 VISIBLE?,LARGE-VIAL ZERO? STACK /?CND25 PRINTI "The large vial " ZERO? LARGE-VIAL-GLOOPS \?CCL29 PRINTI "is empty" JUMP ?CND27 ?CCL15: CALL2 HANDLE,WATER ZERO? STACK /FALSE PRINT YOU-CANT-SEE-ANY PRINTR "water here.]" ?CCL29: PRINTI "contains " PRINTN LARGE-VIAL-GLOOPS PRINTI " gloop" EQUAL? LARGE-VIAL-GLOOPS,1 /?CND27 PRINTC 115 ?CND27: CALL2 VISIBLE?,SMALL-VIAL ZERO? STACK /?CCL34 PRINTI ". " JUMP ?CND25 ?CCL34: PRINT PERIOD-CR ?CND25: CALL2 VISIBLE?,SMALL-VIAL ZERO? STACK /FALSE PRINTI "The small vial " ZERO? SMALL-VIAL-GLOOPS \?CCL40 PRINTI "is empty" JUMP ?CND38 ?CCL40: PRINTI "contains " PRINTN SMALL-VIAL-GLOOPS PRINTI " gloop" EQUAL? SMALL-VIAL-GLOOPS,1 /?CND38 PRINTC 115 ?CND38: PRINT PERIOD-CR RTRUE ?CCL22: EQUAL? PRSA,V?FILL \?CCL44 EQUAL? PRSI,WATER \?CCL44 EQUAL? PRSO,LARGE-VIAL,SMALL-VIAL \?CCL49 EQUAL? X,LARGE-VIAL \?CCL52 ICALL PERFORM,V?FILL,PRSO,LARGE-VIAL RTRUE ?CCL52: EQUAL? X,SMALL-VIAL \FALSE ICALL PERFORM,V?FILL,PRSO,SMALL-VIAL RTRUE ?CCL49: EQUAL? PRSO,CUP \?CCL56 PRINTR "The water evaporates in a puff of smoke as soon as it touches the cup. A strong magic is at work here!" ?CCL56: CALL1 IMPOSSIBLES RSTACK ?CCL44: EQUAL? PRSA,V?EMPTY,V?REMOVE \?CCL58 ZERO? PRSI \?CCL58 CALL NOUN-USED?,WATER,W?GLOOP,W?GLOOPS ZERO? STACK /?CCL58 CALL2 VISIBLE?,LARGE-VIAL ZERO? STACK \?CTR57 CALL2 VISIBLE?,SMALL-VIAL ZERO? STACK /?CCL58 ?CTR57: CALL2 VISIBLE?,LARGE-VIAL ZERO? STACK /?CCL67 CALL2 VISIBLE?,SMALL-VIAL ZERO? STACK /?CCL67 ZERO? LARGE-VIAL-GLOOPS /?CCL72 ZERO? SMALL-VIAL-GLOOPS /?CCL72 PRINTR "There's water in both vials." ?CCL72: ZERO? LARGE-VIAL-GLOOPS /?CCL76 SET 'PRSI,LARGE-VIAL JUMP ?CND65 ?CCL76: ZERO? SMALL-VIAL-GLOOPS /?CCL78 SET 'PRSI,SMALL-VIAL JUMP ?CND65 ?CCL78: PRINTR "Neither vial contains water!" ?CCL67: CALL2 VISIBLE?,LARGE-VIAL ZERO? STACK /?CCL80 SET 'PRSI,LARGE-VIAL JUMP ?CND65 ?CCL80: SET 'PRSI,SMALL-VIAL ?CND65: ICALL PERFORM,V?EMPTY-FROM,WATER,PRSI RTRUE ?CCL58: EQUAL? PRSA,V?DRINK \?CCL82 PRINTR "You're not thirsty." ?CCL82: EQUAL? PRSA,V?EXAMINE,V?LOOK-UNDER,V?LOOK-INSIDE \?CCL84 PRINTR "You see nothing of interest." ?CCL84: EQUAL? PRSA,V?TOUCH,V?REACH-IN \?CCL86 PRINTI "Your hand is now wet" EQUAL? HERE,OASIS \?CND87 PRINTI " and cold" ?CND87: PRINT PERIOD-CR RTRUE ?CCL86: EQUAL? PRSA,V?PUT-ON,V?PUT \?CCL90 EQUAL? PRSI,WATER \?CCL90 IN? PROTAGONIST,DB \?CCL95 PRINTR "You can't reach the water -- the bathysphere is closed! (Fortunately.)" ?CCL95: EQUAL? HERE,PARLOR \?CCL97 MOVE PRSO,FISH-TANK JUMP ?CND93 ?CCL97: EQUAL? HERE,LAKE-FLATHEAD \?CCL99 FSET? PRSO,ANIMATEDBIT \?CCL102 REMOVE PRSO JUMP ?CND93 ?CCL102: MOVE PRSO,LAKE-BOTTOM JUMP ?CND93 ?CCL99: EQUAL? PRSO,PERCH /?CCL104 CALL ULTIMATELY-IN?,PERCH,PRSO ZERO? STACK /?CND103 ?CCL104: SET 'REMOVED-PERCH-LOC,WATER ?CND103: REMOVE PRSO ?CND93: PRINTI "With a ""p" EQUAL? PRSO,FLICKERING-TORCH,GUTTERING-TORCH,CANDLE \?CCL109 FSET? PRSO,ONBIT \?CCL109 FCLEAR PRSO,ONBIT FCLEAR PRSO,FLAMEBIT EQUAL? PRSO,GUTTERING-TORCH \?CCL114 ICALL2 DEQUEUE,I-GUTTERING-TORCH JUMP ?CND112 ?CCL114: EQUAL? PRSO,FLICKERING-TORCH \?CND112 ICALL2 DEQUEUE,I-FLICKERING-TORCH ?CND112: PRINTI "ffft" JUMP ?CND107 ?CCL109: PRINTI "lunk" ?CND107: PRINTI ",""" ICALL1 TPRINT-PRSO PRINTI " sinks into the water" EQUAL? PRSO,FOX,ROOSTER \?CND116 PRINTI ", you heartless animal drowner, you" ?CND116: PRINT PERIOD-CR RTRUE ?CCL90: EQUAL? PRSA,V?SWIM,V?ENTER \?CCL119 EQUAL? X,SWAMP \?CCL122 PRINTR "You're already ankle-deep in the swampy water, which is yucky enough." ?CCL122: EQUAL? X,FRIGID-RIVER \?CCL124 PRINTR "The Frigid River is known for its unpredictable currents." ?CCL124: EQUAL? X,FLATHEAD-OCEAN \?CCL126 PRINTR "The pounding surf would kill you in a moment." ?CCL126: EQUAL? X,LAKE-FLATHEAD \?CCL128 ZERO? ALLIGATOR /?CCL131 CALL2 JIGS-UP,STR?200 RSTACK ?CCL131: PRINTR "These waters are known for their hungry denizens." ?CCL128: EQUAL? X,STREAM-OBJECT \?CCL133 CALL2 DO-WALK,P?WEST RSTACK ?CCL133: EQUAL? X,OASIS-OBJECT \?CCL135 PRINTR "Only a Polar Gumffbeast could swim in such cold water!" ?CCL135: EQUAL? X,FISH-TANK \?CCL137 ZERO? DESCRIBED-TANK-AS-LARGE /?CCL140 PRINTR "There's no way you could fit into this fish tank! [All right, I'll admit that I went a little overboard when I described the fish tank as ""bigger than a swimming pool.""]" ?CCL140: SET 'DESCRIBED-TANK-AS-SMALL,TRUE-VALUE PRINTR "What? Swim in an itsy-bitsy fish tank like this one?!?" ?CCL137: EQUAL? X,MOAT \FALSE ZERO? ALLIGATOR /?CCL145 CALL2 JIGS-UP,STR?201 RSTACK ?CCL145: PRINTR "Not recommended. Moats tend to be populated with big, nasty alligators." ?CCL119: EQUAL? PRSO,WATER \?CCL147 CALL PERFORM-PRSA,X,PRSI RSTACK ?CCL147: CALL PERFORM-PRSA,PRSO,X RSTACK .FUNCT FIND-WATER CALL GLOBAL-IN?,MOAT,HERE ZERO? STACK /?CCL3 RETURN MOAT ?CCL3: EQUAL? HERE,STREAM \?CCL5 RETURN STREAM-OBJECT ?CCL5: EQUAL? HERE,PARLOR \?CCL7 RETURN FISH-TANK ?CCL7: EQUAL? HERE,RIVERS-END \?CCL9 RETURN FRIGID-RIVER ?CCL9: CALL GLOBAL-IN?,FLATHEAD-OCEAN,HERE ZERO? STACK /?CCL11 RETURN FLATHEAD-OCEAN ?CCL11: EQUAL? HERE,LAKE-FLATHEAD /?CTR12 CALL GLOBAL-IN?,LAKE-FLATHEAD,HERE ZERO? STACK /?CCL13 ?CTR12: RETURN LAKE-FLATHEAD ?CCL13: CALL GLOBAL-IN?,SWAMP,HERE ZERO? STACK /?CCL17 RETURN SWAMP ?CCL17: CALL GLOBAL-IN?,FJORD,HERE ZERO? STACK /?CCL19 RETURN FJORD ?CCL19: EQUAL? HERE,OASIS \FALSE RETURN OASIS-OBJECT .FUNCT VIAL-WATER-F EQUAL? PRSA,V?TAKE \FALSE EQUAL? P-PRSA-WORD,W?REMOVE \FALSE EQUAL? PRSO,LARGE-VIAL-WATER \?CCL8 PUSH LARGE-VIAL JUMP ?CND6 ?CCL8: PUSH SMALL-VIAL ?CND6: CALL PERFORM,V?EMPTY-FROM,WATER,STACK RSTACK .FUNCT G-VIAL-WATER-F,SR,F,ADJ,VB GET F,5 >ADJ ZERO? ADJ /?CND1 CALL2 CONVERT-NUMBER,ADJ >ADJ ?CND1: LESS? LARGE-VIAL-GLOOPS,ADJ \?CCL5 LESS? SMALL-VIAL-GLOOPS,ADJ /FALSE RETURN SMALL-VIAL-WATER ?CCL5: LESS? SMALL-VIAL-GLOOPS,ADJ \FALSE RETURN LARGE-VIAL-WATER .FUNCT HANDS-F,ACTOR EQUAL? PRSA,V?CLEAN \?CCL3 CALL1 WASTES RSTACK ?CCL3: EQUAL? PRSA,V?SHAKE \?CCL5 CALL FIND-IN,HERE,ACTORBIT,STR?202 >ACTOR ZERO? ACTOR /?CCL8 ICALL PERFORM,V?SHAKE-WITH,HANDS,ACTOR RTRUE ?CCL8: PRINTR "There's no one here to shake hands with." ?CCL5: EQUAL? PRSA,V?COUNT \?CCL10 CALL NOUN-USED?,HANDS,W?FINGER,W?FINGERS ZERO? STACK /?CCL13 PRINTI "Ten" JUMP ?CND11 ?CCL13: PRINTI "Two" ?CND11: PRINTR ", as usual." ?CCL10: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL15 ZERO? HAND-IN-WALDO /?CCL15 ICALL2 PERFORM-PRSA,WALDO RTRUE ?CCL15: EQUAL? PRSA,V?TAKE-OFF,V?REMOVE \?CCL19 ZERO? HAND-IN-WALDO /?CCL22 SET 'HAND-IN-WALDO,FALSE-VALUE PRINTR "You withdraw your hand." ?CCL22: ZERO? FINGER-ON-STRAW /?CCL24 SET 'FINGER-ON-STRAW,FALSE-VALUE SET 'ELIXIR-TRAPPED,FALSE-VALUE PRINTR "You remove your finger from the end of the straw." ?CCL24: PRINTR "To quote an old song, ""The hand bone's connected to the wrist bone...""" ?CCL19: EQUAL? PRSA,V?PUT-ON \?CCL26 EQUAL? PRSO,GLOVE \?CCL26 ICALL PERFORM,V?WEAR,GLOVE RTRUE ?CCL26: EQUAL? PRSA,V?TAKE-WITH \?CCL30 EQUAL? PRSI,HANDS \?CCL30 ICALL PERFORM,V?TAKE,PRSO RTRUE ?CCL30: EQUAL? PRSA,V?SNAP \FALSE CALL NOUN-USED?,HANDS,W?FINGER,W?FINGERS ZERO? STACK /FALSE ZERO? TIME-STOPPED \FALSE IN? PROTAGONIST,SMALL-THRONE \?CCL40 CALL1 OPEN-SECRET-PASSAGE? RSTACK ?CCL40: PRINTR """Snap!""" .FUNCT OPEN-SECRET-PASSAGE? ZERO? SECRET-PASSAGE-OPEN /?CCL3 SET 'SECRET-PASSAGE-OPEN,FALSE-VALUE SET 'COMPASS-CHANGED,TRUE-VALUE PRINTR "The secret passage closes!" ?CCL3: ZERO? SECRET-PASSAGE-DISCOVERED /?CCL5 SET 'SECRET-PASSAGE-OPEN,TRUE-VALUE SET 'COMPASS-CHANGED,TRUE-VALUE PRINTR "The secret passage opens once again." ?CCL5: SET 'SECRET-PASSAGE-OPEN,TRUE-VALUE SET 'SECRET-PASSAGE-DISCOVERED,TRUE-VALUE SET 'COMPASS-CHANGED,TRUE-VALUE PRINTI "Behind the throne, accompanied by a puff of dust, a secret passage grinds open, leading south into darkness!" IN? JESTER,HERE \?CND6 PRINTI " The jester applauds you, howling with mysterious delight." ?CND6: CRLF ICALL2 INC-SCORE,SECRET-PASSAGE-SCORE SET 'SECRET-PASSAGE-SCORE,0 RTRUE .FUNCT FEET-F EQUAL? PRSA,V?ENTER \FALSE EQUAL? P-PRSA-WORD,W?GET \FALSE SET 'P-PRSA-WORD,W?STAND SET 'PRSO,FALSE-VALUE CALL1 V-STAND RSTACK .FUNCT EYES-F,WHOSE-EYE CALL ADJ-USED?,EYES,W?MY,W?MINE ZERO? STACK /?CCL3 SET 'WHOSE-EYE,PROTAGONIST JUMP ?CND1 ?CCL3: CALL ADJ-USED?,EYES,W?ORACLE'S ZERO? STACK /?CCL5 SET 'WHOSE-EYE,ORACLE-OBJECT JUMP ?CND1 ?CCL5: CALL ADJ-USED?,EYES,W?AMULET'S ZERO? STACK /?CCL7 SET 'WHOSE-EYE,AMULET JUMP ?CND1 ?CCL7: EQUAL? HERE,ORACLE \?CCL9 SET 'WHOSE-EYE,ORACLE-OBJECT JUMP ?CND1 ?CCL9: CALL2 VISIBLE?,AMULET ZERO? STACK /?CCL11 SET 'WHOSE-EYE,AMULET JUMP ?CND1 ?CCL11: SET 'WHOSE-EYE,PROTAGONIST ?CND1: CALL ADJ-USED?,EYES,W?THREE,W?FOUR ZERO? STACK \?PRD16 CALL ADJ-USED?,EYES,W?THIRD,W?FOURTH ZERO? STACK /?CCL14 ?PRD16: EQUAL? WHOSE-EYE,PROTAGONIST \?CCL14 CALL2 CANT-SEE,EYES RSTACK ?CCL14: EQUAL? PRSA,V?COUNT \?CCL20 EQUAL? WHOSE-EYE,PROTAGONIST \?CCL23 PRINTR "Two, unless you've been careless with pointy sticks lately." ?CCL23: PRINTR "Four." ?CCL20: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL25 EQUAL? WHOSE-EYE,ORACLE-OBJECT,AMULET \?CCL25 PRINTR "There's no way to do that yourself." ?CCL25: EQUAL? PRSA,V?CLOSE \?CCL29 ICALL2 PERFORM,V?SLEEP RTRUE ?CCL29: EQUAL? PRSA,V?OPEN \FALSE PRINTR "Your eyes ARE open!" .FUNCT NOSE-F EQUAL? PRSA,V?PICK \FALSE PRINTR "Oh, gross!" .FUNCT MOUTH-F EQUAL? PRSA,V?PUT \?CCL3 EQUAL? PRSI,MOUTH \?CCL3 EQUAL? PRSO,STRAW \?CCL8 PRINTR "Other than perhaps satisfying some primitive phallic urge of yours, this accomplishes nothing. [If you want to drink something with the straw, just try DRINK THING WITH STRAW!]" ?CCL8: ICALL PERFORM,V?EAT,PRSO RTRUE ?CCL3: EQUAL? PRSA,V?ENTER \FALSE PRINTR "That would involve quite a contortion!" .ENDSEG .SEGMENT "0" .FUNCT ME-F EQUAL? PRSA,V?CALL,V?YELL,V?TELL \?CCL3 PRINTI "Talking to yourself is a sign of impending mental collapse." CRLF CALL1 STOP RSTACK ?CCL3: EQUAL? PRSA,V?ALARM \?CCL5 PRINTR "You are already awake." ?CCL5: EQUAL? PRSA,V?EAT \?CCL7 PRINTR "Auto-cannibalism is not the answer." ?CCL7: EQUAL? PRSA,V?EXAMINE \?CCL9 CALL1 V-DIAGNOSE RSTACK ?CCL9: EQUAL? PRSA,V?GIVE \?CCL11 EQUAL? PRSI,ME \?CCL11 ICALL PERFORM,V?TAKE,PRSO RTRUE ?CCL11: EQUAL? PRSA,V?SHOW \?CCL15 EQUAL? PRSI,ME \?CCL15 ICALL PERFORM,V?EXAMINE,PRSO RTRUE ?CCL15: EQUAL? PRSA,V?MOVE \?CCL19 CALL1 V-WALK-AROUND RSTACK ?CCL19: EQUAL? PRSA,V?SEARCH \?CCL21 ICALL1 V-INVENTORY RTRUE ?CCL21: EQUAL? PRSA,V?KICK,V?MUNG,V?KILL \?CCL23 EQUAL? P-PRSA-WORD,W?KILL,W?MURDER \?CCL26 CALL2 JIGS-UP,STR?204 RSTACK ?CCL26: PRINTI "[If you're really into masochistic fantasies, perhaps you'd be more at home playing Infocom's " HLIGHT H-ITALIC PRINTI "LEATHER GODDESSES OF PHOBOS" HLIGHT H-NORMAL PRINTR " (tm).]" ?CCL23: EQUAL? PRSA,V?FIND \FALSE PRINTI "You're in" CALL2 TRPRINT,HERE RSTACK .FUNCT GLOBAL-HERE-F EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?LOOK \?CCL3 CALL1 V-LOOK RSTACK ?CCL3: EQUAL? PRSA,V?WALK-TO,V?ENTER \?CCL5 EQUAL? HERE,LAKE-FLATHEAD \?CCL8 ICALL PERFORM,V?SWIM,LAKE-FLATHEAD RTRUE ?CCL8: PRINT LOOK-AROUND RTRUE ?CCL5: EQUAL? PRSA,V?EXIT,V?LEAVE \?CCL10 CALL2 DO-WALK,P?OUT RSTACK ?CCL10: EQUAL? PRSA,V?SEARCH \?CCL12 PRINT NOTHING-NEW RTRUE ?CCL12: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE EQUAL? PRSI,GLOBAL-HERE \FALSE EQUAL? P-PRSA-WORD,W?THROW \?CCL19 ICALL PERFORM,V?THROW,PRSO RTRUE ?CCL19: ICALL PERFORM,V?DROP,PRSO RTRUE .FUNCT GLOBAL-BLDG-F EQUAL? PRSA,V?ENTER \?CCL3 EQUAL? HERE,FISHING-VILLAGE,WHARF \?CCL3 CALL2 DO-WALK,P?NORTH RSTACK ?CCL3: EQUAL? PRSA,V?LEAVE,V?EXIT \FALSE CALL2 DO-WALK,P?OUT RSTACK .FUNCT ARCH-F EQUAL? PRSA,V?ENTER \FALSE CALL1 V-WALK-AROUND RSTACK .FUNCT WINDOW-F EQUAL? PRSA,V?LOOK-INSIDE \?CCL3 EQUAL? HERE,GONDOLA \?CCL6 ZERO? DIRIGIBLE-COUNTER \?CCL9 PRINTR "The dirigible is moored in a hangar." ?CCL9: EQUAL? DESTINATION,SMALLER-HANGAR \?CCL11 SUB DIRIGIBLE-COUNTER,2 GET DIRIGIBLE-TRIP-DESCS,STACK PRINT STACK CRLF RTRUE ?CCL11: SUB 5,DIRIGIBLE-COUNTER GET DIRIGIBLE-TRIP-DESCS,STACK PRINT STACK CRLF RTRUE ?CCL6: EQUAL? HERE,DIMWITS-ROOM,BASTION,SOLAR \?CCL13 PRINTR "The window offers a splendid view of the castle grounds." ?CCL13: EQUAL? HERE,HOTHOUSE \?CCL15 PRINTR "You see a ruined castle." ?CCL15: EQUAL? HERE,FR-PENTHOUSE,OFFICES-NORTH,OFFICES-SOUTH /?CTR16 EQUAL? HERE,OFFICES-EAST,OFFICES-WEST \?CCL17 ?CTR16: EQUAL? HERE,FR-PENTHOUSE /?CTR21 GRTR? FLOOR-NUMBER,20 \?CCL22 ?CTR21: PRINTR "You can't see much; the air is pretty smoggy today." ?CCL22: PRINTR "The window offers a good view of Flatheadia." ?CCL17: PRINTR "Bug 29." ?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL26 EQUAL? HERE,HOTHOUSE \?CCL29 PRINTR "There's not much left of the windows." ?CCL29: EQUAL? HERE,DIMWITS-ROOM,BASTION,SOLAR \?CCL31 PRINTR "The window is just a narrow slit in the stone wall; there's no way to open or close it." ?CCL31: PRINTR "The window is unopenable." ?CCL26: EQUAL? PRSA,V?LEAP-OFF,V?EXIT,V?ENTER \?CCL33 EQUAL? HERE,HOTHOUSE \?CCL36 PRINTR "You cut yourself to ribbons on the broken glass." ?CCL36: EQUAL? HERE,DIMWITS-ROOM,BASTION,SOLAR \?CCL38 PRINTR "These slitted windows are narrower than your body." ?CCL38: CALL DO-FIRST,STR?140,WINDOW RSTACK ?CCL33: EQUAL? PRSA,V?PUT-THROUGH \?CCL40 EQUAL? HERE,HOTHOUSE,DIMWITS-ROOM,SOLAR /?CTR42 EQUAL? HERE,BASTION \?CCL43 ?CTR42: REMOVE PRSO PRINTI "You hear a ""splat"" as" ICALL1 TPRINT-PRSO PRINTI " sinks into the " EQUAL? HERE,HOTHOUSE \?CCL48 EQUAL? PRSO,PERCH /?CCL50 CALL ULTIMATELY-IN?,PERCH,PRSO ZERO? STACK /?CND49 ?CCL50: SET 'REMOVED-PERCH-LOC,WATER ?CND49: PRINTI "swamp outside" JUMP ?CND46 ?CCL48: EQUAL? PRSO,PERCH /?CCL54 CALL ULTIMATELY-IN?,PERCH,PRSO ZERO? STACK /?CND53 ?CCL54: SET 'REMOVED-PERCH-LOC,GROUND ?CND53: PRINTI "ground far below" ?CND46: PRINT PERIOD-CR RTRUE ?CCL43: CALL DO-FIRST,STR?140,WINDOW RSTACK ?CCL40: EQUAL? PRSA,V?EXAMINE \FALSE EQUAL? HERE,HOTHOUSE \FALSE PRINTR "Many of the window panes are shattered." .FUNCT LOCK-OBJECT-F CALL NOUN-USED?,LOCK-OBJECT,W?KEYHOLE ZERO? STACK /?CCL3 EQUAL? HERE,LOWEST-HALL \?CCL3 CALL2 CANT-SEE,LOCK-OBJECT RSTACK ?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7 EQUAL? HERE,LOWEST-HALL \?CCL10 PRINTR "It's a large combination dial lock." ?CCL10: PRINTR "It's your basic keyhole lock." ?CCL7: EQUAL? PRSA,V?LOOK-INSIDE \?CCL12 PRINTR "You see nothing of interest, you shameless Peeping Tom you." ?CCL12: EQUAL? PRSA,V?PICK \?CCL14 PRINTR "You have neither the tools nor the expertise." ?CCL14: EQUAL? PRSA,V?LOCK,V?UNLOCK,V?OPEN \FALSE EQUAL? PRSO,LOCK-OBJECT \FALSE CALL GLOBAL-IN?,EAST-DOOR,HERE ZERO? STACK /?CCL21 CALL PERFORM-PRSA,EAST-DOOR,PRSI RSTACK ?CCL21: CALL GLOBAL-IN?,WEST-DOOR,HERE ZERO? STACK /?CCL23 CALL PERFORM-PRSA,WEST-DOOR,PRSI RSTACK ?CCL23: CALL GLOBAL-IN?,VAULT-DOOR,HERE ZERO? STACK /?CCL25 CALL PERFORM-PRSA,VAULT-DOOR,PRSI RSTACK ?CCL25: EQUAL? HERE,ATTIC \FALSE CALL PERFORM-PRSA,TRUNK,PRSI RSTACK .FUNCT SIGN-F,NUM EQUAL? PRSA,V?EXAMINE,V?READ \FALSE EQUAL? HERE,EXIT \?CCL6 PRINTR """ROCKVILLE ESTATES: The new, prestigious address for the discriminating Young Underground Professional 64 units, Occupancy Spring 881 Frobozz Magic Construction Company Quizbo Frotzwit, Managing Foreman""" ?CCL6: EQUAL? HERE,CROSSROADS \?CCL8 PRINTR """JUNCTION of GUH-90 and GUH-95 NORTH: Flatheadia, 1 bloit SOUTH: Shadowland, 15 bloits Royal Museum, 17 bloits Fublio Valley, 90 bloits EAST: White Cliffs Beach, 4 bloits Flood Control Dam #3, 4 bloits Aragain Falls, 5 bloits WEST: Port Foozle, 9 bloits Quilbozza Beach, 9 bloits""" ?CCL8: EQUAL? HERE,FISHING-VILLAGE \?CCL10 PRINTR """Sinners: Enter here for purification!""" ?CCL10: EQUAL? HERE,INQUISITION \?CCL12 PRINTR """Sinners, take note! 1. We cannot execute everyone at once! Please take a number! 2. Everyone is permitted a final request. 3. Tell the executioner your request when your number is called. 4. If we cannot grant your final wish, we shall be quick and merciful. We will behead you. 5. If we CAN grant your final wish, we will hang you. Please note that this is slow and excruciatingly painful.""" ?CCL12: EQUAL? HERE,NORTH-OF-ANTHAR \?CCL14 PRINTR """We've got as many refugees from the Eastlands as we can handle! Go somewhere else!""" ?CCL14: EQUAL? HERE,MINE-ENTRANCE \?CCL16 PRINTR """Warning! Falling rock zone!""" ?CCL16: EQUAL? HERE,TOLL-PLAZA \?CCL18 PRINTR """Exact Change Only: 1 Zorkmid (coins only)."" Below the sign is a basket." ?CCL18: EQUAL? HERE,OUTSIDE-HOVEL \?CCL20 PRINTR """Korboz the Magnificent""" ?CCL20: EQUAL? HERE,OUTSIDE-SHACK \?CCL22 PRINTR """Warning! This shack is protected against looting by powerful magic!""" ?CCL22: EQUAL? HERE,WARNING-ROOM \?CCL24 PRINTR """Warning! This area is populated by three races: the Veritassi (who always tell the truth), the Prevaricons (who always lie), and the Wishyfoo (who alternate with every statement). Be aware that visitors to Veritass and Prevaricon areas are immediately fed to ravenous hellhounds.""" ?CCL24: PRINTI "Bug 49" RTRUE .FUNCT STAIRS-F EQUAL? HERE,NORTH-SHORE,EAST-SHORE,SOUTH-SHORE /?PRD5 EQUAL? HERE,WEST-SHORE \?CCL3 ?PRD5: IN? PROTAGONIST,YACHT /?CCL3 CALL2 CANT-SEE,STAIRS RSTACK ?CCL3: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB \?CCL9 CALL2 DO-WALK,P?UP RSTACK ?CCL9: EQUAL? PRSA,V?CLIMB-DOWN \FALSE CALL2 DO-WALK,P?DOWN RSTACK .FUNCT FIXED-LADDER-F EQUAL? PRSA,V?CLIMB-UP,V?CLIMB \?CCL3 CALL2 DO-WALK,P?UP RSTACK ?CCL3: EQUAL? PRSA,V?CLIMB-DOWN \?CCL5 CALL2 DO-WALK,P?DOWN RSTACK ?CCL5: EQUAL? PRSA,V?TAKE \FALSE PRINTR "The ladder is attached to the wall." .FUNCT BONES-F CALL2 TOUCHING?,BONES ZERO? STACK /FALSE PRINTR "Let the dead lie in peace." .FUNCT CLEAR-BORDER,X,Y,WRD,?TMP1 SCREEN S-WINDOW COLOR FG-COLOR,BG-COLOR ICALL2 PICINF-PLUS-ONE,TEXT-WINDOW-PIC-LOC GET PICINF-TBL,0 >Y GET PICINF-TBL,1 >X WINPOS S-WINDOW,1,1 GET 0,17 WINSIZE S-WINDOW,Y,STACK CLEAR 1 GRTR? X,1 \?CND1 ADD Y,1 WINPOS S-WINDOW,STACK,1 GET 0,18 SUB STACK,Y >?TMP1 SUB X,1 WINSIZE S-WINDOW,?TMP1,STACK CLEAR 1 ADD Y,1 >?TMP1 GET 0,17 SUB STACK,X ADD STACK,1 WINPOS S-WINDOW,?TMP1,STACK GET 0,18 SUB STACK,Y WINSIZE S-WINDOW,STACK,X CLEAR 1 ?CND1: SET 'SL-SCORE,-1 SET 'OLD-REGION,FALSE-VALUE SET 'OLD-HERE,FALSE-VALUE SET 'COMPASS-CHANGED,TRUE-VALUE COLOR 1,1 SCREEN S-TEXT RTRUE .FUNCT ADJUST-TEXT-WINDOW,ID,SCRY,WINY,ADJ GET 0,18 >SCRY ZERO? ID /?CND1 PICINF ID,PICINF-TBL /?BOGUS3 ?BOGUS3: GET PICINF-TBL,0 >ADJ ?CND1: WINGET S-TEXT,WTOP SUB STACK,1 SUB SCRY,STACK SUB STACK,ADJ >WINY DIV WINY,FONT-Y MUL FONT-Y,STACK >WINY WINGET S-TEXT,WWIDE WINSIZE S-TEXT,WINY,STACK RTRUE .FUNCT SPLIT-BY-PICTURE,ID,CLEAR-SCREEN?,Y,X,YS,XS,?TMP2,?TMP1 SET 'CURRENT-SPLIT,ID ZERO? CLEAR-SCREEN? /?CND1 CLEAR -1 ?CND1: PICINF ID,PICINF-TBL /?BOGUS3 ?BOGUS3: GET PICINF-TBL,0 >Y ADD Y,1 >?TMP1 ZERO? BORDER-ON \?CCL6 EQUAL? ID,TEXT-WINDOW-PIC-LOC \?CCL6 PUSH 1 JUMP ?CND4 ?CCL6: GET PICINF-TBL,1 >X ADD X,1 ?CND4: WINPOS S-TEXT,?TMP1,STACK GET 0,18 SUB STACK,Y >?TMP1 ZERO? BORDER-ON \?CCL11 EQUAL? ID,TEXT-WINDOW-PIC-LOC \?CCL11 MUL WIDTH,FONT-X JUMP ?CND9 ?CCL11: GET 0,17 >?TMP2 MUL X,2 SUB ?TMP2,STACK ?CND9: WINSIZE S-TEXT,?TMP1,STACK WINPOS S-WINDOW,1,1 GET 0,17 WINSIZE S-WINDOW,Y,STACK RTRUE .FUNCT INIT-SL-WITH-SPLIT,WHICH,DONT-CLEAR,YFUDGE ZERO? WHICH /?CND1 SET 'CURRENT-SPLIT,WHICH ?CND1: CALL2 INIT-STATUS-LINE,DONT-CLEAR RSTACK .FUNCT INIT-STATUS-LINE,DONT-CLEAR,NUM,X,Y,?TMP2,?TMP1 SET 'NUM,1 SET 'OLD-HERE,FALSE-VALUE SET 'OLD-REGION,FALSE-VALUE SET 'SL-SCORE,-1 SET 'COMPASS-CHANGED,TRUE-VALUE ZERO? DONT-CLEAR \?CND1 CLEAR -1 ?CND1: ICALL2 SPLIT-BY-PICTURE,CURRENT-SPLIT EQUAL? CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC \?CCL5 ICALL2 ADJUST-TEXT-WINDOW,0 SCREEN S-FULL ZERO? BORDER-ON /?CCL10 CALL1 SET-BORDER DISPLAY STACK,1,1 PICSET COMPASS-PICSET-TBL JUMP ?CND8 ?CCL5: EQUAL? CURRENT-SPLIT,F-SPLIT \?CCL7 ICALL2 ADJUST-TEXT-WINDOW,F-BOTTOM RTRUE ?CCL7: ICALL2 ADJUST-TEXT-WINDOW,PBOZ-BOTTOM RTRUE ?CCL10: HLIGHT H-INVERSE ICALL2 INVERSE-LINE,1 ICALL2 INVERSE-LINE,2 ICALL2 INVERSE-LINE,3 ?CND8: SCREEN S-WINDOW FONT 4 ICALL2 PICINF-PLUS-ONE,HERE-LOC GET PICINF-TBL,0 ADD STACK,FONT-Y >?TMP1 GET PICINF-TBL,1 CURSET ?TMP1,STACK GETB 0,30 EQUAL? STACK,DEC-20 /?CCL12 ZERO? BORDER-ON \?CND11 ?CCL12: HLIGHT H-INVERSE ?CND11: ZERO? BORDER-ON /?CND15 COLOR 1,-1 ?CND15: PRINTI "Moves:" ICALL2 PICINF-PLUS-ONE,REGION-LOC GET PICINF-TBL,0 ADD STACK,FONT-Y >?TMP1 GET PICINF-TBL,1 >?TMP2 MUL FONT-X,10 SUB ?TMP2,STACK CURSET ?TMP1,STACK PRINTI "Score:" ZERO? BORDER-ON /?CND17 COLOR 1,1 ?CND17: FONT 1 GETB 0,30 EQUAL? STACK,DEC-20 \?CND19 HLIGHT H-NORMAL ?CND19: SCREEN S-TEXT RFALSE .FUNCT SET-BORDER EQUAL? HERE,GONDOLA \?CCL3 GRTR? DIRIGIBLE-COUNTER,0 \?CCL3 RETURN OUTSIDE-BORDER ?CCL3: EQUAL? HERE,FORMAL-GARDEN,COURTYARD \?CCL7 RETURN CASTLE-BORDER ?CCL7: EQUAL? HERE,BARBICAN,UPPER-BARBICAN,GARRISON \?CCL9 RETURN OUTSIDE-BORDER ?CCL9: FSET? HERE,OUTSIDEBIT \?CCL11 RETURN OUTSIDE-BORDER ?CCL11: FSET? HERE,UNDERGROUNDBIT /?CTR12 RETURN CASTLE-BORDER ?CTR12: RETURN UNDERGROUND-BORDER .FUNCT PRINT-SPACES,CNT ?PRG1: DLESS? 'CNT,0 /TRUE PRINTC 32 JUMP ?PRG1 .FUNCT UPDATE-STATUS-LINE,?TMP2,?TMP1 SCREEN S-WINDOW FONT 4 GETB 0,30 EQUAL? STACK,DEC-20 /?CCL2 ZERO? BORDER-ON \?CND1 ?CCL2: HLIGHT H-INVERSE ?CND1: PICINF HERE-LOC,PICINF-TBL /?BOGUS5 ?BOGUS5: GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 CURSET ?TMP1,STACK ZERO? BORDER-ON /?CND6 COLOR 1,-1 ?CND6: EQUAL? HERE,OLD-HERE /?CND8 SET 'OLD-HERE,HERE ICALL2 PICINF-PLUS-ONE,HERE-LOC GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 CURSET ?TMP1,STACK ICALL2 PRINT-SPACES,24 GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 CURSET ?TMP1,STACK EQUAL? HERE,PHIL-HALL \?CCL12 PRINTI "Philharmonic Hall" JUMP ?CND8 ?CCL12: EQUAL? HERE,G-U-MOUNTAIN \?CCL14 PRINTI "Great Undergd. Mountain" JUMP ?CND8 ?CCL14: EQUAL? HERE,G-U-SAVANNAH \?CCL16 PRINTI "Great Undergd. Savannah" JUMP ?CND8 ?CCL16: EQUAL? HERE,G-U-HIGHWAY \?CCL18 PRINTI "Great Undergd. Highway" JUMP ?CND8 ?CCL18: ICALL2 DPRINT,HERE ?CND8: GETP HERE,P?REGION EQUAL? STACK,OLD-REGION /?CND19 GETP HERE,P?REGION >OLD-REGION ICALL2 PICINF-PLUS-ONE,REGION-LOC GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 >?TMP2 MUL FONT-X,23 SUB ?TMP2,STACK CURSET ?TMP1,STACK ICALL2 PRINT-SPACES,23 DIROUT D-TABLE-ON,SLINE PUT SLINE,0,0 PRINT OLD-REGION DIROUT D-TABLE-OFF GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 >?TMP2 GET SLINE,0 MUL FONT-X,STACK SUB ?TMP2,STACK CURSET ?TMP1,STACK PRINT OLD-REGION ?CND19: ICALL2 PICINF-PLUS-ONE,HERE-LOC GET PICINF-TBL,0 ADD STACK,FONT-Y >?TMP1 GET PICINF-TBL,1 >?TMP2 MUL FONT-X,8 ADD ?TMP2,STACK CURSET ?TMP1,STACK ICALL2 PRINT-SPACES,5 GET PICINF-TBL,0 ADD STACK,FONT-Y >?TMP1 GET PICINF-TBL,1 >?TMP2 MUL FONT-X,8 ADD ?TMP2,STACK CURSET ?TMP1,STACK PRINTN MOVES EQUAL? SCORE,SL-SCORE /?CND21 SET 'SL-SCORE,SCORE ICALL2 PICINF-PLUS-ONE,REGION-LOC GET PICINF-TBL,0 ADD STACK,FONT-Y >?TMP1 GET PICINF-TBL,1 >?TMP2 MUL FONT-X,4 SUB ?TMP2,STACK CURSET ?TMP1,STACK ICALL2 PRINT-SPACES,4 GET PICINF-TBL,0 ADD STACK,FONT-Y >?TMP1 GET PICINF-TBL,1 >?TMP2 GRTR? SCORE,999 /?CTR24 LESS? SCORE,-99 \?CCL25 ?CTR24: PUSH 4 JUMP ?CND23 ?CCL25: GRTR? SCORE,99 /?CTR28 LESS? SCORE,-9 \?CCL29 ?CTR28: PUSH 3 JUMP ?CND23 ?CCL29: GRTR? SCORE,9 /?CTR32 LESS? SCORE,0 \?CCL33 ?CTR32: PUSH 2 JUMP ?CND23 ?CCL33: PUSH 1 ?CND23: MUL FONT-X,STACK SUB ?TMP2,STACK CURSET ?TMP1,STACK PRINTN SCORE ?CND21: ZERO? BORDER-ON /?CND36 COLOR 1,1 ?CND36: GETB 0,30 EQUAL? STACK,DEC-20 /?CCL39 ZERO? BORDER-ON \?CND38 ?CCL39: HLIGHT H-NORMAL ?CND38: ZERO? COMPASS-CHANGED /?CND42 ZERO? BORDER-ON /?CND42 GETB 0,30 EQUAL? STACK,DEC-20 /?CND42 SET 'COMPASS-CHANGED,FALSE-VALUE ICALL2 PICINF-PLUS-ONE,COMPASS-PIC-LOC ICALL DRAW-COMPASS-ROSE,P?NORTH,N-HL,N-UNHL ICALL DRAW-COMPASS-ROSE,P?NE,NE-HL,NE-UNHL ICALL DRAW-COMPASS-ROSE,P?EAST,E-HL,E-UNHL ICALL DRAW-COMPASS-ROSE,P?SE,SE-HL,SE-UNHL ICALL DRAW-COMPASS-ROSE,P?SOUTH,S-HL,S-UNHL ICALL DRAW-COMPASS-ROSE,P?SW,SW-HL,SW-UNHL ICALL DRAW-COMPASS-ROSE,P?WEST,W-HL,W-UNHL ICALL DRAW-COMPASS-ROSE,P?NW,NW-HL,NW-UNHL ICALL2 PICINF-PLUS-ONE,U-BOX-LOC CALL SHOW-DIRECTION?,HERE,P?UP,FALSE-VALUE ZERO? STACK /?CCL49 ZERO? LIT /?CCL49 SET '?TMP2,U-BOX JUMP ?CND47 ?CCL49: SET '?TMP2,BOX-COVER ?CND47: GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY ?TMP2,?TMP1,STACK ICALL2 PICINF-PLUS-ONE,D-BOX-LOC CALL SHOW-DIRECTION?,HERE,P?DOWN,FALSE-VALUE ZERO? STACK /?CCL54 ZERO? LIT /?CCL54 SET '?TMP2,D-BOX JUMP ?CND52 ?CCL54: SET '?TMP2,BOX-COVER ?CND52: GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY ?TMP2,?TMP1,STACK ?CND42: FONT 1 SCREEN S-TEXT RFALSE .FUNCT DRAW-COMPASS-ROSE,DIR,HIGHLIGHT-PIC,UNHIGHLIGHT-PIC,?TMP1,?TMP2 CALL SHOW-DIRECTION?,HERE,DIR,FALSE-VALUE ZERO? STACK /?CCL3 ZERO? LIT /?CCL3 SET '?TMP2,HIGHLIGHT-PIC JUMP ?CND1 ?CCL3: SET '?TMP2,UNHIGHLIGHT-PIC ?CND1: GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY ?TMP2,?TMP1,STACK RTRUE .FUNCT SHOW-DIRECTION?,RM,DIR,MAPPING,PTS ASSIGNED? 'MAPPING /?CND1 SET 'MAPPING,TRUE-VALUE ?CND1: IN? N-S-PASSAGE,RM \?CCL5 EQUAL? RM,CONSTRUCTION /?CCL5 EQUAL? N-S-PASSAGE-DIR,DIR /TRUE ?CCL5: IN? NW-SE-PASSAGE,RM \?CCL10 EQUAL? RM,CONSTRUCTION /?CCL10 EQUAL? NW-SE-PASSAGE-DIR,DIR /TRUE ?CCL10: IN? PROTAGONIST,YACHT \?CCL15 EQUAL? DIR,P?DOWN /TRUE ?CCL15: FSET? RM,DELTABIT \?CCL19 EQUAL? DIR,P?UP,P?DOWN /FALSE EQUAL? RM,DELTA-1 \TRUE EQUAL? DIR,P?SOUTH \TRUE ZERO? MAPPING \FALSE RTRUE ?CCL19: EQUAL? RM,CONSTRUCTION \?CCL29 EQUAL? DIR,P?UP,P?DOWN /FALSE EQUAL? DIR,P?NORTH \?PRD36 INTBL? CONSTRUCTION-LOC,NORTH-EXITS,11 /TRUE ?PRD36: EQUAL? DIR,P?NE \?PRD39 INTBL? CONSTRUCTION-LOC,NE-EXITS,17 /TRUE ?PRD39: EQUAL? DIR,P?EAST \?PRD42 INTBL? CONSTRUCTION-LOC,EAST-EXITS,15 /TRUE ?PRD42: EQUAL? DIR,P?SE \?PRD45 INTBL? CONSTRUCTION-LOC,SE-EXITS,7 /TRUE ?PRD45: EQUAL? DIR,P?SOUTH \?PRD48 ADD CONSTRUCTION-LOC,8 INTBL? STACK,NORTH-EXITS,11 /TRUE ?PRD48: EQUAL? DIR,P?SW \?PRD51 ADD CONSTRUCTION-LOC,7 INTBL? STACK,NE-EXITS,17 /TRUE ?PRD51: EQUAL? DIR,P?WEST \?PRD54 SUB CONSTRUCTION-LOC,1 INTBL? STACK,EAST-EXITS,15 /TRUE ?PRD54: EQUAL? DIR,P?NW \?PRD57 SUB CONSTRUCTION-LOC,9 INTBL? STACK,SE-EXITS,7 /TRUE ?PRD57: EQUAL? DIR,P?EAST \?CCL34 EQUAL? CONSTRUCTION-LOC,47 /TRUE ?CCL34: IN? N-S-PASSAGE,RM \?CCL63 FSET? N-S-PASSAGE,TAKEBIT /?CCL63 EQUAL? DIR,P?NORTH,P?SOUTH \?CCL63 EQUAL? CONSTRUCTION-LOC,N-S-PASSAGE-LOC \?CCL69 EQUAL? N-S-PASSAGE-DIR,DIR /TRUE ?CCL69: EQUAL? CONSTRUCTION-LOC,N-S-PASSAGE-LOC /FALSE EQUAL? N-S-PASSAGE-DIR,DIR /FALSE RTRUE ?CCL63: IN? NW-SE-PASSAGE,RM \FALSE FSET? NW-SE-PASSAGE,TAKEBIT /FALSE EQUAL? DIR,P?NW,P?SE \FALSE EQUAL? CONSTRUCTION-LOC,NW-SE-PASSAGE-LOC \?CCL83 EQUAL? NW-SE-PASSAGE-DIR,DIR /TRUE ?CCL83: EQUAL? CONSTRUCTION-LOC,NW-SE-PASSAGE-LOC /FALSE EQUAL? NW-SE-PASSAGE-DIR,DIR /FALSE RTRUE ?CCL29: EQUAL? RM,PLAIN \?CCL91 EQUAL? DIR,P?UP,P?DOWN /FALSE EQUAL? DIR,P?NORTH,P?NE,P?NW \?PRD98 EQUAL? RANK,1 /FALSE ?PRD98: EQUAL? DIR,P?EAST,P?NE,P?SE \?PRD101 EQUAL? FILE,8 /FALSE ?PRD101: EQUAL? DIR,P?SOUTH,P?SE,P?SW \?PRD104 EQUAL? RANK,8 /FALSE ?PRD104: EQUAL? DIR,P?WEST,P?SW,P?NW \TRUE EQUAL? FILE,1 /FALSE RTRUE ?CCL91: EQUAL? RM,MIRROR-LAKE \?CCL110 EQUAL? DIR,P?UP,P?DOWN \TRUE ?CCL110: EQUAL? RM,WISHYFOO-TERRITORY \?CCL114 EQUAL? DIR,P?SW \?CCL114 ZERO? MAPPING /TRUE ?CCL114: EQUAL? RM,STREAM \?CCL119 EQUAL? DIR,P?WEST \?CCL119 IN? BRIDGE,STREAM \FALSE ?CCL119: GETPT RM,DIR >PTS ZERO? PTS /FALSE PTSIZE PTS EQUAL? STACK,NEXIT /FALSE EQUAL? RM,THRONE-ROOM \?CCL129 EQUAL? DIR,P?SOUTH \?CCL129 ZERO? SECRET-PASSAGE-OPEN /FALSE ?CCL129: EQUAL? RM,G-U-MOUNTAIN \?CCL134 EQUAL? DIR,P?NORTH \?CCL134 IN? BOULDER,RM /FALSE ?CCL134: EQUAL? RM,HOLLOW \?CCL139 EQUAL? DIR,P?SOUTH \?CCL139 ZERO? IRON-MINE-OPEN /FALSE ?CCL139: EQUAL? RM,PEG-ROOM \?CCL144 EQUAL? DIR,P?NORTH \?CCL144 ZERO? PEG-PASSAGE-OPENED /FALSE ?CCL144: EQUAL? RM,CRYPT \?CCL149 EQUAL? DIR,P?DOWN \?CCL149 FSET? HOLEY-SLAB,TOUCHBIT \FALSE ?CCL149: EQUAL? RM,RUINED-HALL \?CCL154 EQUAL? DIR,P?EAST \?CCL154 ZERO? SECRET-ROOM-REVEALED /FALSE ?CCL154: EQUAL? RM,MARSH \?CCL159 EQUAL? DIR,P?NORTH \?CCL159 ZERO? STEPPING-STONES-VISIBLE /FALSE ?CCL159: EQUAL? RM,WEIRD \?CCL164 EQUAL? DIR,P?NORTH,P?EAST,P?WEST \?CCL164 EQUAL? DIR,P?NORTH \?CCL169 EQUAL? TOWER-BEATEN,PYRAMID /TRUE FSET? PYRAMID,TOUCHBIT \FALSE ZERO? MAPPING \TRUE RFALSE ?CCL169: EQUAL? DIR,P?EAST \?CCL178 EQUAL? TOWER-BEATEN,PYRAMID-R /TRUE FSET? PYRAMID-R,TOUCHBIT \FALSE ZERO? MAPPING \TRUE RFALSE ?CCL178: EQUAL? TOWER-BEATEN,PYRAMID-L /TRUE FSET? PYRAMID-L,TOUCHBIT \FALSE ZERO? MAPPING \TRUE RFALSE ?CCL164: ZERO? MAPPING /TRUE EQUAL? RM,COURTROOM \?CCL196 EQUAL? DIR,P?SOUTH /FALSE ?CCL196: EQUAL? RM,TAX-OFFICE \?CCL200 EQUAL? DIR,P?SOUTH /FALSE ?CCL200: EQUAL? RM,JESTERS-QUARTERS \?CCL204 EQUAL? DIR,P?SOUTH /FALSE ?CCL204: EQUAL? RM,BASE-OF-MOUNTAIN \?CCL208 EQUAL? DIR,P?EAST /FALSE ?CCL208: EQUAL? RM,G-U-MOUNTAIN \?CCL212 EQUAL? DIR,P?WEST /FALSE ?CCL212: EQUAL? RM,FOOTHILLS \?CCL216 EQUAL? DIR,P?SOUTH /FALSE ?CCL216: EQUAL? RM,BASE-OF-MOUNTAINS \TRUE EQUAL? DIR,P?NORTH /FALSE RTRUE .FUNCT COMPASS-CLICK,PIC1,PIC2,TL-X,TL-Y,BR-X,BR-Y,CENTER-X,CENTER-Y,DIR EQUAL? PIC1,COMPASS-PIC-LOC \?CND1 ICALL2 PICINF-PLUS-ONE,U-BOX-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y PICINF U-BOX,PICINF-TBL /?BOGUS3 ?BOGUS3: 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 /?CND4 RETURN P?UP ?CND4: ICALL2 PICINF-PLUS-ONE,D-BOX-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y PICINF D-BOX,PICINF-TBL /?BOGUS6 ?BOGUS6: 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 /?CND1 RETURN P?DOWN ?CND1: ICALL2 PICINF-PLUS-ONE,PIC1 GET PICINF-TBL,0 >TL-Y GET PICINF-TBL,1 >TL-X PICINF PIC2,PICINF-TBL /?BOGUS9 ?BOGUS9: GET PICINF-TBL,0 ADD STACK,TL-Y >BR-Y GET PICINF-TBL,1 ADD STACK,TL-X >BR-X GET PICINF-TBL,1 DIV STACK,2 ADD TL-X,STACK >CENTER-X GET PICINF-TBL,0 DIV STACK,2 ADD TL-Y,STACK >CENTER-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CCL12 GETB 0,30 EQUAL? STACK,MACINTOSH \?CCL15 CALL1 MAC-II? ZERO? STACK /?CCL18 CALL MAC-II-CLICK,CENTER-X,CENTER-Y >DIR JUMP ?CND13 ?CCL18: CALL MAC-CLICK,CENTER-X,CENTER-Y,TL-X,TL-Y >DIR ?CND13: ZERO? DIR /?CCL21 RETURN DIR ?CCL15: SOUND 1 PRINTI "[Sorry, clicking on the compass rose is not yet implemented on this machine.]" CRLF RFALSE ?CCL21: SOUND 1 RFALSE ?CCL12: SOUND 1 RFALSE .FUNCT MAC-CLICK,CENTER-X,CENTER-Y,TL-X,TL-Y,X,Y,DIR,?TMP3,?TMP1,?TMP2 ADD TL-X,25 >?TMP2 ADD TL-X,35 >?TMP1 ADD TL-Y,20 CALL WITHIN?,?TMP2,TL-Y,?TMP1,STACK ZERO? STACK /?CCL3 SET 'DIR,P?NORTH RETURN DIR ?CCL3: ADD TL-X,25 >?TMP3 ADD TL-Y,36 >?TMP2 ADD TL-X,35 >?TMP1 ADD TL-Y,58 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /?CCL5 SET 'DIR,P?SOUTH RETURN DIR ?CCL5: ADD TL-X,38 >?TMP3 ADD TL-Y,23 >?TMP2 ADD TL-X,60 >?TMP1 ADD TL-Y,33 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /?CCL7 SET 'DIR,P?EAST RETURN DIR ?CCL7: ADD TL-Y,23 >?TMP2 ADD TL-X,22 >?TMP1 ADD TL-Y,33 CALL WITHIN?,TL-X,?TMP2,?TMP1,STACK ZERO? STACK /?CCL9 SET 'DIR,P?WEST RETURN DIR ?CCL9: ADD TL-X,37 >?TMP3 ADD TL-Y,10 >?TMP2 ADD TL-X,48 >?TMP1 ADD TL-Y,21 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /?CCL11 SET 'DIR,P?NE RETURN DIR ?CCL11: ADD TL-X,37 >?TMP3 ADD TL-Y,35 >?TMP2 ADD TL-X,48 >?TMP1 ADD TL-Y,46 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /?CCL13 SET 'DIR,P?SE RETURN DIR ?CCL13: ADD TL-X,12 >?TMP3 ADD TL-Y,35 >?TMP2 ADD TL-X,23 >?TMP1 ADD TL-Y,46 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /?CCL15 SET 'DIR,P?SW RETURN DIR ?CCL15: ADD TL-X,12 >?TMP3 ADD TL-Y,10 >?TMP2 ADD TL-X,23 >?TMP1 ADD TL-Y,21 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /?CCL17 SET 'DIR,P?NW RETURN DIR ?CCL17: ADD TL-X,23 >?TMP3 ADD TL-Y,21 >?TMP2 ADD TL-X,37 >?TMP1 ADD TL-Y,35 CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK ZERO? STACK /FALSE GRTR? MOUSE-LOC-X,CENTER-X \?CCL22 LESS? MOUSE-LOC-Y,CENTER-Y \?CCL22 SUB MOUSE-LOC-X,CENTER-X >X SUB CENTER-Y,MOUSE-LOC-Y >Y GRTR? X,Y \?CCL27 SET 'DIR,P?EAST RETURN DIR ?CCL27: SET 'DIR,P?NORTH RETURN DIR ?CCL22: GRTR? MOUSE-LOC-X,CENTER-X \?CCL29 SUB MOUSE-LOC-X,CENTER-X >X SUB MOUSE-LOC-Y,CENTER-Y >Y GRTR? X,Y \?CCL32 SET 'DIR,P?EAST RETURN DIR ?CCL32: SET 'DIR,P?SOUTH RETURN DIR ?CCL29: GRTR? MOUSE-LOC-Y,CENTER-Y \?CCL34 SUB CENTER-X,MOUSE-LOC-X >X SUB MOUSE-LOC-Y,CENTER-Y >Y GRTR? X,Y \?CCL37 SET 'DIR,P?WEST RETURN DIR ?CCL37: SET 'DIR,P?SOUTH RETURN DIR ?CCL34: SUB CENTER-X,MOUSE-LOC-X >X SUB CENTER-Y,MOUSE-LOC-Y >Y GRTR? X,Y \?CCL40 SET 'DIR,P?WEST RETURN DIR ?CCL40: SET 'DIR,P?NORTH RETURN DIR .FUNCT MAC-II-CLICK,CENTER-X,CENTER-Y,X,Y,DIR,?TMP1 GRTR? MOUSE-LOC-X,CENTER-X \?CCL3 LESS? MOUSE-LOC-Y,CENTER-Y \?CCL3 SUB MOUSE-LOC-X,CENTER-X >X SUB CENTER-Y,MOUSE-LOC-Y >Y MUL X,TANGENT-VALUE >?TMP1 MUL Y,100 GRTR? ?TMP1,STACK \?CCL8 SET 'DIR,P?EAST RETURN DIR ?CCL8: MUL Y,TANGENT-VALUE >?TMP1 MUL X,100 GRTR? ?TMP1,STACK \?CCL10 SET 'DIR,P?NORTH RETURN DIR ?CCL10: SET 'DIR,P?NE RETURN DIR ?CCL3: GRTR? MOUSE-LOC-X,CENTER-X \?CCL12 SUB MOUSE-LOC-X,CENTER-X >X SUB MOUSE-LOC-Y,CENTER-Y >Y MUL X,TANGENT-VALUE >?TMP1 MUL Y,100 GRTR? ?TMP1,STACK \?CCL15 SET 'DIR,P?EAST RETURN DIR ?CCL15: MUL Y,TANGENT-VALUE >?TMP1 MUL X,100 GRTR? ?TMP1,STACK \?CCL17 SET 'DIR,P?SOUTH RETURN DIR ?CCL17: SET 'DIR,P?SE RETURN DIR ?CCL12: GRTR? MOUSE-LOC-Y,CENTER-Y \?CCL19 SUB CENTER-X,MOUSE-LOC-X >X SUB MOUSE-LOC-Y,CENTER-Y >Y MUL X,TANGENT-VALUE >?TMP1 MUL Y,100 GRTR? ?TMP1,STACK \?CCL22 SET 'DIR,P?WEST RETURN DIR ?CCL22: MUL Y,TANGENT-VALUE >?TMP1 MUL X,100 GRTR? ?TMP1,STACK \?CCL24 SET 'DIR,P?SOUTH RETURN DIR ?CCL24: SET 'DIR,P?SW RETURN DIR ?CCL19: SUB CENTER-X,MOUSE-LOC-X >X SUB CENTER-Y,MOUSE-LOC-Y >Y MUL X,TANGENT-VALUE >?TMP1 MUL Y,100 GRTR? ?TMP1,STACK \?CCL27 SET 'DIR,P?WEST RETURN DIR ?CCL27: MUL Y,TANGENT-VALUE >?TMP1 MUL X,100 GRTR? ?TMP1,STACK \?CCL29 SET 'DIR,P?NORTH RETURN DIR ?CCL29: SET 'DIR,P?NW RETURN DIR .FUNCT SAY-HERE,X ICALL2 DPRINT,HERE LOC PROTAGONIST >X IN? PROTAGONIST,CARD-TABLE \?CCL3 PRINTI ", at" ICALL2 TPRINT,X RTRUE ?CCL3: EQUAL? X,HERE /?CCL5 FSET? X,VEHBIT \?CCL5 PRINTI ", " FSET? X,INBIT \?CCL10 PRINTC 105 JUMP ?CND8 ?CCL10: PRINTC 111 ?CND8: PRINTC 110 ICALL2 TPRINT,X RTRUE ?CCL5: ZERO? UNDER-TABLE /TRUE PRINTI ", under the table" RTRUE .FUNCT CENTER-1,STR,BOLD,Y,X,LEN CURGET SLINE GET SLINE,0 >Y WINGET S-TEXT,WWIDE DIV STACK,2 >X ZERO? BOLD /?CND1 HLIGHT H-BOLD ?CND1: DIROUT D-TABLE-ON,SLINE,-80 PRINT STR DIROUT D-TABLE-OFF GET 0,24 >LEN DIV LEN,2 SUB X,STACK CURSET Y,STACK PRINT STR HLIGHT H-NORMAL CRLF RTRUE .FUNCT CENTER-2,STR1,STR2,Y,X1,X2,LEN CURGET SLINE GET SLINE,0 >Y WINGET S-TEXT,WWIDE DIV STACK,3 >X1 MUL X1,2 >X2 DIROUT D-TABLE-ON,SLINE,-80 PRINT STR1 DIROUT D-TABLE-OFF GET 0,24 >LEN DIV LEN,2 SUB X1,STACK CURSET Y,STACK PRINT STR1 DIROUT D-TABLE-ON,SLINE,-80 PRINT STR2 DIROUT D-TABLE-OFF GET 0,24 >LEN DIV LEN,2 SUB X2,STACK CURSET Y,STACK PRINT STR2 CRLF RTRUE .FUNCT CENTER-3,STR1,STR2,STR3,Y,X1,X2,X3,LEN CURGET SLINE GET SLINE,0 >Y WINGET S-TEXT,WWIDE DIV STACK,4 >X1 MUL X1,2 >X2 MUL X1,3 >X3 DIROUT D-TABLE-ON,SLINE,-80 PRINT STR1 DIROUT D-TABLE-OFF GET 0,24 >LEN DIV LEN,2 SUB X1,STACK CURSET Y,STACK PRINT STR1 DIROUT D-TABLE-ON,SLINE,-80 PRINT STR2 DIROUT D-TABLE-OFF GET 0,24 >LEN DIV LEN,2 SUB X2,STACK CURSET Y,STACK PRINT STR2 DIROUT D-TABLE-ON,SLINE,-80 PRINT STR3 DIROUT D-TABLE-OFF GET 0,24 >LEN DIV LEN,2 SUB X3,STACK CURSET Y,STACK PRINT STR3 CRLF RTRUE .FUNCT TOUCHING?,THING EQUAL? PRSO,THING \?CCL3 EQUAL? PRSA,V?BITE,V?CLEAN,V?CLIMB /TRUE EQUAL? PRSA,V?CLIMB-DOWN,V?CLIMB-ON,V?CLIMB-UP /TRUE EQUAL? PRSA,V?CLOSE,V?CUT,V?EAT /TRUE EQUAL? PRSA,V?ENTER,V?KICK,V?KILL /TRUE EQUAL? PRSA,V?KISS,V?KNOCK,V?LOCK /TRUE EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-INSIDE,V?LOOK-UNDER /TRUE EQUAL? PRSA,V?MOVE,V?MUNG,V?OFF /TRUE EQUAL? PRSA,V?ON,V?OPEN,V?PUSH /TRUE EQUAL? PRSA,V?RAISE,V?REACH-IN,V?SEARCH /TRUE EQUAL? PRSA,V?SET,V?SHAKE,V?STAND-ON /TRUE EQUAL? PRSA,V?SWIM,V?TASTE,V?TAKE /TRUE EQUAL? PRSA,V?THROW,V?TIE,V?TOUCH /TRUE EQUAL? PRSA,V?UNLOCK /TRUE ?CCL3: EQUAL? PRSI,THING \FALSE EQUAL? PRSA,V?PUT-ON,V?PUT,V?GIVE /TRUE RFALSE .FUNCT HANDLE,OBJ EQUAL? OBJ,PRSO \?PRD5 CALL2 EVERYWHERE-VERB?,1 ZERO? STACK \FALSE ?PRD5: EQUAL? OBJ,PRSI \TRUE CALL2 EVERYWHERE-VERB?,2 ZERO? STACK /TRUE RFALSE .FUNCT CANT-SEE,OBJ,STRING,WRD CALL2 GET-NP,OBJ >WRD ZERO? WRD /?CND1 GET WRD,2 >WRD ?CND1: SET 'P-WON,FALSE-VALUE PRINTC 91 PRINT YOU-CANT PRINTI "see" ZERO? OBJ /?CCL4 ZERO? WRD /?CND3 CALL2 CAPITAL-NOUN?,WRD ZERO? STACK \?CND3 ?CCL4: PRINTI " any" ?CND3: ZERO? OBJ \?CCL11 PRINTC 32 PRINT STRING JUMP ?CND9 ?CCL11: EQUAL? OBJ,PRSI \?CCL13 ICALL1 PRSI-PRINT JUMP ?CND9 ?CCL13: ICALL1 PRSO-PRINT ?CND9: PRINTI " here.]" CRLF CALL1 STOP RSTACK .FUNCT PRSO-PRINT,PTR CALL NOUN-USED?,PRSO,W?IT ZERO? STACK /?CCL3 PRINTC 32 CALL2 DPRINT,PRSO RSTACK ?CCL3: PRINTC 32 CALL2 GET-NP,PRSO CALL2 NP-PRINT,STACK RSTACK .FUNCT PRSI-PRINT,PTR CALL NOUN-USED?,PRSI,W?IT ZERO? STACK /?CCL3 PRINTC 32 CALL2 DPRINT,PRSI RSTACK ?CCL3: PRINTC 32 CALL2 GET-NP,PRSI CALL2 NP-PRINT,STACK RSTACK .FUNCT CANT-VERB-A-PRSO,STRING PRINT YOU-CANT PRINT STRING ICALL2 APRINT,PRSO PRINTR "!" .FUNCT TELL-HIT-HEAD PRINTI "You hit your head against" ICALL1 TPRINT-PRSO PRINTR " as you attempt this feat." .FUNCT OPEN-CLOSED,OBJ FSET? OBJ,OPENBIT \?CCL3 PRINTI "open" RTRUE ?CCL3: PRINTI "closed" RTRUE .FUNCT CANT-REACH,OBJ ZERO? HAND-IN-WALDO /?CCL3 EQUAL? OBJ,WALDO /?CCL3 IN? OBJ,HERE \?CCL3 PRINTR "The waldo doesn't seem capable of that." ?CCL3: ZERO? UNDER-TABLE /?CCL8 PRINT YOULL-HAVE-TO PRINTR "get out from under the table in order to reach it." ?CCL8: PRINT YOU-CANT PRINTI "reach" ICALL2 TPRINT,OBJ IN? PROTAGONIST,HERE /?CND9 PRINTI " from" LOC PROTAGONIST ICALL2 TPRINT,STACK ?CND9: PRINT PERIOD-CR RTRUE .FUNCT DO-FIRST,STRING,OBJ PRINT YOULL-HAVE-TO PRINT STRING ZERO? OBJ /?CND1 ICALL2 TPRINT,OBJ ?CND1: PRINTR " first." .FUNCT NOT-IN PRINTI "But" ICALL2 IS-ARE-PRINT,PRSO PRINTI "not " FSET? PRSI,ACTORBIT \?CCL3 PRINTI "being held by" JUMP ?CND1 ?CCL3: FSET? PRSI,SURFACEBIT \?CCL5 PRINTI "on" JUMP ?CND1 ?CCL5: PRINTI "in" ?CND1: CALL2 TRPRINT,PRSI RSTACK .FUNCT PART-OF PRINT YOU-CANT PRINTI "--" ICALL2 IS-ARE-PRINT,PRSO PRINTI "an integral part of" LOC PRSO CALL2 TRPRINT,STACK RSTACK .FUNCT RECOGNIZE SET 'P-WON,FALSE-VALUE PRINTR "[Sorry, but I don't understand. Please rephrase that or try something else.]" .FUNCT PRONOUN EQUAL? PRSO,ME \?CCL3 PRINTI "You" RTRUE ?CCL3: EQUAL? PRSO,WHITE-CASTLE \?CCL5 CALL NOUN-USED?,WHITE-CASTLE,W?MAN ZERO? STACK \?CCL5 PRINTI "It" RTRUE ?CCL5: FSET? PRSO,PLURALBIT \?CCL9 PRINTI "They" RTRUE ?CCL9: FSET? PRSO,FEMALEBIT \?CCL11 PRINTI "She" RTRUE ?CCL11: FSET? PRSO,ACTORBIT \?CCL13 PRINTI "He" RTRUE ?CCL13: PRINTI "It" RTRUE .FUNCT HIT-ANY-KEY,STRING PRINTI "[Hit any key to " ZERO? STRING /?CCL3 PRINTI "begin playing " PRINT STRING JUMP ?CND1 ?CCL3: PRINTI "continue" ?CND1: PRINTI ".]" DIROUT D-SCREEN-OFF CRLF DIROUT D-SCREEN-ON ZERO? DEMO-VERSION? /?CCL6 ICALL2 INPUT-DEMO,1 JUMP ?CND4 ?CCL6: INPUT 1 ?CND4: CALL1 MOUSE-INPUT? RSTACK .FUNCT LOCKED-UNLOCKED,OBJ,UN PRINTI "A faint click indicates that" ICALL2 TPRINT,OBJ PRINTI " is now " ZERO? UN /?CND1 PRINTI "un" ?CND1: PRINTR "locked." .FUNCT CANT-TURN,STRING PRINT YOU-CANT PRINTI "turn that o" PRINT STRING PRINT PERIOD-CR RTRUE .FUNCT YOU-MUST-TELL-ME PRINTI "You must tell me how to do that to" CALL2 ARPRINT,PRSO RSTACK .FUNCT GRUE-PIT-WARNING IN? PROTAGONIST,DB /?CND1 ZERO? TIME-STOPPED \?CND1 EQUAL? HERE,PIT-BOMB-LOC /?CND1 PRINTI " You are likely to " FSET? LANTERN,TRYTAKEBIT \?CCL8 PRINTR "fall into a bottomless pit." ?CCL8: PRINTR "be eaten by a grue." ?CND1: CRLF RTRUE .FUNCT DARK-DEATH PRINTI "Oh, no! You have " FSET? LANTERN,TRYTAKEBIT \?CCL3 PRINTI "fallen into a bottomless pit" JUMP ?CND1 ?CCL3: PRINTI "walked into the slavering fangs of a lurking grue" ?CND1: CALL2 JIGS-UP,STR?135 RSTACK .ENDSEG .ENDI