.FUNCT MATCHBOX-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "You see a picture of Santa Claus in his sleigh. The sleigh is filled with computer games from Infocom, and the reindeer pulling it look strained." ?ELS5: EQUAL? PRSA,V?TAKE \FALSE FCLEAR MATCHBOX,NDESCBIT RFALSE .FUNCT WAX-COAT-F EQUAL? PRSA,V?SCRAPE-OFF \FALSE EQUAL? PRSI,GREEN-MATCH,RED-MATCH \FALSE FSET? PRSI,WAXED-BIT \FALSE FCLEAR PRSI,WAXED-BIT IN? PRSO,PRSI \?ELS13 REMOVE PRSO JUMP ?CND8 ?ELS13: REMOVE WAX-COAT-2 ?CND8: PRINTI "You scrape the wax coating off" CALL TRPRINT,PRSI RSTACK .FUNCT MATCH-F,WAXED EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "It's the wooden, self-lighting variety of match. The " CALL DPRINT,PRSO FSET? PRSO,WAXED-BIT \?ELS8 PRINTI " head is coated with a thin layer of wax" JUMP ?CND6 ?ELS8: FSET? PRSO,WETBIT \?ELS10 PRINTI " is wet" JUMP ?CND6 ?ELS10: PRINTI " is " FSET? PRSO,ONBIT /?CND13 PRINTI "not " ?CND13: PRINTI "lit" ?CND6: PRINTR "." ?ELS5: EQUAL? PRSA,V?KILL,V?LAMP-ON \?ELS17 IN? PRSO,PLAYER /?ELS22 PRINTI "You're not holding" CALL TRPRINT,PRSO RSTACK ?ELS22: FSET? PRSO,FLAMEBIT \?ELS24 PRINTR "It's already lit." ?ELS24: GETP PRSO,P?MATCH-LIFE ZERO? STACK \?ELS26 PRINTR "You can't. It's all used up." ?ELS26: FSET? PRSO,WETBIT \?ELS28 PRINTR "It's wet. It won't light now." ?ELS28: EQUAL? HERE,IN-POOL-1,IN-POOL-2,UNDERPASS-1 /?THN31 EQUAL? HERE,UNDERPASS-2 \?ELS30 ?THN31: PRINTR "Not even Uncle Buddy's best special effects men could light a match under water!" ?ELS30: EQUAL? HERE,ON-POOL-1,ON-POOL-2,INLET \?ELS34 PRINTR "You'd better find some dry land first." ?ELS34: CALL QUEUE,I-MATCH-BURN,-1 FSET PRSO,ONBIT IN? WAX-COAT-1,PRSO \?ELS39 REMOVE WAX-COAT-1 JUMP ?CND37 ?ELS39: IN? WAX-COAT-2,PRSO \?CND37 REMOVE WAX-COAT-2 ?CND37: FSET PRSO,FLAMEBIT FSET? PRSO,WAXED-BIT \?ELS44 FCLEAR PRSO,WAXED-BIT PRINTI "The wax coating melts away as you light" CALL TRPRINT,PRSO JUMP ?CND42 ?ELS44: PRINTI "Okay," CALL TPRINT,PRSO PRINTI " is now lit." CRLF ?CND42: CALL NOW-LIT? RTRUE ?ELS17: EQUAL? PRSA,V?LAMP-OFF \?ELS48 FSET? PRSO,ONBIT \?ELS53 CALL BLOW-OUT-MATCH,PRSO RSTACK ?ELS53: PRINTR "It's not lit." ?ELS48: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE CALL CANT-OPEN-CLOSE RSTACK .FUNCT I-MATCH-BURN FSET? RED-MATCH,ONBIT \?CND1 CALL MATCH-BURN,RED-MATCH ?CND1: FSET? GREEN-MATCH,ONBIT \FALSE CALL MATCH-BURN,GREEN-MATCH RSTACK .FUNCT MATCH-BURN,OBJ GETP OBJ,P?MATCH-LIFE ZERO? STACK \?ELS5 CALL BLOW-OUT-MATCH,OBJ,TRUE-VALUE RSTACK ?ELS5: GETP OBJ,P?MATCH-LIFE SUB STACK,1 PUTP OBJ,P?MATCH-LIFE,STACK RTRUE .FUNCT BLOW-OUT-MATCH,OBJ,ADD-CR=0 FCLEAR OBJ,ONBIT FCLEAR OBJ,FLAMEBIT FSET? RED-MATCH,ONBIT /?CND1 FSET? GREEN-MATCH,ONBIT /?CND1 CALL DEQUEUE,I-MATCH-BURN ?CND1: CALL VISIBLE?,OBJ ZERO? STACK /FALSE ZERO? ADD-CR /?CND11 CRLF ?CND11: PRINTI "The " CALL DPRINT,OBJ PRINTI " goes out, turns to ashes, falls to the ground and disappears." CRLF CALL SAY-IF-NOT-LIT REMOVE OBJ RTRUE .FUNCT BOAT-DOCK-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a large grotto standing on a boat dock. Moonlight trickling through the grotto's opening to the north reflects off the water, dimly illuminating this area. A wooden walkway leads north out of the grotto. A pool of sea water covers the bottom of the grotto." RTRUE .FUNCT PORTABLE-WATER-F EQUAL? PRSA,V?ENTER,V?SWIM \?ELS5 CALL GLOBAL-IN?,WATER,HERE ZERO? STACK /?ELS10 CALL PERFORM,PRSA,WATER RTRUE ?ELS10: PRINTI "You'd never fit into" LOC PORTABLE-WATER CALL TPRINT,STACK PRINTR "!" ?ELS5: EQUAL? PRSA,V?TASTE,V?DRINK-FROM,V?DRINK \?ELS14 CALL NOT-HOLDING-WATER? ZERO? STACK \TRUE PRINTR "You take a sip." ?ELS14: EQUAL? PRSA,V?EMPTY,V?DROP,V?THROW /?THN26 EQUAL? PRSA,V?POUR,V?PUT,V?PUT-ON \?ELS23 ?THN26: EQUAL? PRSO,PORTABLE-WATER \?ELS23 CALL NOT-HOLDING-WATER? ZERO? STACK \TRUE REMOVE PORTABLE-WATER FCLEAR PORTABLE-WATER,NDESCBIT SET 'AMOUNT-OF-WATER,0 CALL DEQUEUE,I-DRIP EQUAL? PRSA,V?EMPTY \?CND35 PRINTR "You pour the water out of the bucket." ?CND35: ZERO? PRSI /?ELS42 FSET PRSI,WETBIT FSET? PRSI,FLAMEBIT \?CND44 FCLEAR PRSI,FLAMEBIT FCLEAR PRSI,ONBIT EQUAL? PRSI,RED-CANDLE \?ELS49 CALL STOP-RED-BURNING JUMP ?CND47 ?ELS49: EQUAL? PRSI,WHITE-CANDLE \?ELS51 CALL STOP-WHITE-BURNING JUMP ?CND47 ?ELS51: EQUAL? PRSI,BLUE-CANDLE \?ELS53 CALL STOP-BLUE-BURNING JUMP ?CND47 ?ELS53: EQUAL? PRSI,GREEN-MATCH,RED-MATCH \?CND47 CALL DEQUEUE,I-MATCH-BURN ?CND47: PRINTR "You douse the flame with water." ?CND44: PRINTR "You pour water over it, making a mess." ?ELS42: REMOVE PORTABLE-WATER PRINTR "The water pours out, making a mess." ?ELS23: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS59 EQUAL? PRSI,PORTABLE-WATER \?ELS59 IN? PORTABLE-WATER,BUCKET \?ELS59 CALL PERFORM,V?PUT,PRSO,BUCKET RTRUE ?ELS59: EQUAL? PRSA,V?GIVE \?ELS63 EQUAL? PRSO,PORTABLE-WATER \?ELS63 FSET? PRSI,ACTORBIT \?ELS63 CALL PERFORM,V?POUR,PORTABLE-WATER RTRUE ?ELS63: EQUAL? PRSA,V?EXAMINE,V?SEARCH,V?LOOK-INSIDE \FALSE LOC PORTABLE-WATER CALL PERFORM,PRSA,STACK RTRUE .FUNCT WATER-F EQUAL? HERE,UPSTAIRS-BATHROOM,KITCHEN,LADIES-ROOM /?THN6 EQUAL? HERE,MENS-ROOM \?ELS5 ?THN6: PRINTR "Hmmm. It seems the water has been turned off." ?ELS5: EQUAL? PRSA,V?DISEMBARK \?ELS9 CALL DO-WALK,P?OUT RTRUE ?ELS9: EQUAL? PRSA,V?ENTER,V?SWIM \?ELS11 EQUAL? HERE,NORTH-GARDEN \?ELS14 PRINTR "The pond's too shallow for swimming." ?ELS14: FSET? SKIS,WORNBIT \?ELS16 PRINT DOG-PADDLE CRLF RTRUE ?ELS16: CALL ULTIMATELY-IN?,LADDER ZERO? STACK /?ELS18 PRINTI "You won't be able to swim carrying" CALL TRPRINT,LADDER RTRUE ?ELS18: EQUAL? HERE,INLET,ON-POOL-1,IN-POOL-1 /?THN21 EQUAL? HERE,UNDERPASS-1,UNDERPASS-2,IN-POOL-2 /?THN21 EQUAL? HERE,ON-POOL-2 \?CND12 ?THN21: PRINTR "You swim a few yards." ?CND12: CALL ALL-WET,PLAYER PRINTI "As you enter the chilly water, goose bumps cover your body and your teeth chatter a bit." CRLF CRLF IN? BUCKET,PLAYER \?CND23 MOVE PORTABLE-WATER,BUCKET CALL QUEUE,I-DRIP,1 ?CND23: EQUAL? HERE,BOAT-DOCK \?ELS28 CALL GOTO,ON-POOL-1 JUMP ?CND26 ?ELS28: EQUAL? HERE,LEDGE \?ELS30 CALL GOTO,ON-POOL-2 JUMP ?CND26 ?ELS30: CALL GOTO,INLET ?CND26: CALL ULTIMATELY-IN?,FLASHLIGHT ZERO? STACK /?CND33 FSET? FLASHLIGHT,ONBIT \?CND33 FCLEAR FLASHLIGHT,ONBIT CRLF PRINTI "Oops! Your flashlight went out. The water ruined it." CRLF ?CND33: CALL ULTIMATELY-IN?,RED-CANDLE ZERO? STACK /?CND38 FSET? RED-CANDLE,ONBIT \?CND38 CALL BLOW-OUT-CANDLE,RED-CANDLE ?CND38: CALL ULTIMATELY-IN?,WHITE-CANDLE ZERO? STACK /?CND43 FSET? WHITE-CANDLE,ONBIT \?CND43 CALL BLOW-OUT-CANDLE,WHITE-CANDLE ?CND43: CALL ULTIMATELY-IN?,BLUE-CANDLE ZERO? STACK /?CND48 FSET? BLUE-CANDLE,ONBIT \?CND48 CALL BLOW-OUT-CANDLE,BLUE-CANDLE ?CND48: CALL ULTIMATELY-IN?,GREEN-MATCH ZERO? STACK /?CND53 FSET? GREEN-MATCH,FLAMEBIT \?CND53 CALL ULTIMATELY-IN?,RED-MATCH ZERO? STACK /?CND53 FSET? RED-MATCH,FLAMEBIT \?CND53 FCLEAR RED-MATCH,ONBIT FCLEAR RED-MATCH,FLAMEBIT REMOVE RED-MATCH FCLEAR GREEN-MATCH,ONBIT FCLEAR GREEN-MATCH,FLAMEBIT REMOVE GREEN-MATCH PRINTI "You drop the lit " CALL DPRINT,GREEN-MATCH PRINTI " and the lit " CALL DPRINT,RED-MATCH PRINTC 46 CRLF ?CND53: CALL ULTIMATELY-IN?,RED-MATCH ZERO? STACK /?CND58 FSET? RED-MATCH,FLAMEBIT \?CND58 FCLEAR RED-MATCH,ONBIT FCLEAR RED-MATCH,FLAMEBIT REMOVE RED-MATCH PRINTI "You drop the lit " CALL DPRINT,RED-MATCH PRINTC 46 CRLF ?CND58: CALL ULTIMATELY-IN?,GREEN-MATCH ZERO? STACK /TRUE FSET? GREEN-MATCH,FLAMEBIT \TRUE FCLEAR GREEN-MATCH,ONBIT FCLEAR GREEN-MATCH,FLAMEBIT REMOVE GREEN-MATCH PRINTI "You drop the lit " CALL DPRINT,GREEN-MATCH PRINTR "." ?ELS11: EQUAL? PRSA,V?TAKE \?ELS69 EQUAL? PRSO,WATER \?ELS69 IN? BUCKET,PLAYER \?ELS69 CALL PERFORM,V?FILL,BUCKET,WATER RTRUE ?ELS69: EQUAL? PRSA,V?PUT \?ELS73 EQUAL? PRSI,WATER \?ELS73 EQUAL? HERE,NORTH-GARDEN \?ELS80 CALL PERFORM,V?PUT,PRSO,POND RTRUE ?ELS80: REMOVE PRSO PRINTI "The " CALL DPRINT,PRSO PRINTR " disappears into the ocean water." ?ELS73: EQUAL? PRSA,V?LOOK-INSIDE \?ELS84 EQUAL? HERE,NORTH-GARDEN \?ELS89 CALL PERFORM,V?LOOK-INSIDE,POND RTRUE ?ELS89: PRINTR "You see nothing unusual about sea water." ?ELS84: EQUAL? PRSA,V?DRINK \FALSE EQUAL? PRSO,WATER \FALSE PRINTR "You take a sip." .FUNCT ALL-WET,THING,OBJ FSET THING,WETBIT FIRST? THING >OBJ /?KLU17 ?KLU17: ?PRG1: ZERO? OBJ /?REP2 FSET OBJ,WETBIT FIRST? OBJ \?CND6 CALL ALL-WET,OBJ ?CND6: NEXT? OBJ >OBJ /?PRG1 JUMP ?PRG1 ?REP2: FSET? RED-MATCH,WAXED-BIT \?CND9 FCLEAR RED-MATCH,WETBIT ?CND9: FSET? GREEN-MATCH,WAXED-BIT \FALSE FCLEAR GREEN-MATCH,WETBIT RTRUE .FUNCT TO-BOAT-DOCK EQUAL? HERE,ON-POOL-1 \FALSE PRINTI "You climb out of the pool and onto the boat dock. The night air makes you shiver." CRLF CRLF RETURN BOAT-DOCK .FUNCT UNDER-WATER-F PRINTI "You take a deep breath then plunge down." CRLF CRLF EQUAL? HERE,ON-POOL-1 \?ELS3 CALL GOTO,IN-POOL-1 JUMP ?CND1 ?ELS3: CALL GOTO,IN-POOL-2 ?CND1: SET 'BREATH,6 CALL QUEUE,I-BREATH,-1 RFALSE .FUNCT I-BREATH DEC 'BREATH EQUAL? BREATH,3 \?ELS5 CRLF PRINTR "You feel pressure building in your chest. You won't be able to hold your breath much longer." ?ELS5: EQUAL? BREATH,2 \?ELS7 CRLF PRINTR "The pressure is increasing. Your feel as if your lungs are going to rupture!" ?ELS7: EQUAL? BREATH,1 \?ELS9 CRLF PRINTR "You can't hold the air in your lungs any longer. You open your mouth and the air bursts out." ?ELS9: ZERO? BREATH \FALSE CRLF PRINTI "As you gasp for your next breath, you suck in a mouthful of cold sea water. You swim frantically a short distance then pass out. Later you awake to find yourself on the beach." CRLF CRLF CALL GOTO,BEACH RSTACK .FUNCT OUT-OF-WATER-F CALL DEQUEUE,I-BREATH PRINTI "You come to the surface and catch your breath." CRLF CRLF EQUAL? HERE,IN-POOL-1 \?ELS5 RETURN ON-POOL-1 ?ELS5: EQUAL? HERE,IN-POOL-2 \FALSE RETURN ON-POOL-2 .FUNCT TO-UNDERPASS-EAST PRINTI "You swim east through a narrow, jagged passage." CRLF CRLF RETURN UNDERPASS-1 .FUNCT TO-UNDERPASS-WEST PRINTI "You swim west through a narrow, jagged passage." CRLF CRLF RETURN UNDERPASS-2 .FUNCT IN-POOL-2-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are swimming underwater. In the darkness, you can't make out your surroundings here." CALL LIT?,ON-POOL-2 ZERO? STACK /TRUE PRINTI " However you do notice a faint light above you." RTRUE .FUNCT ON-POOL-2-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are swimming on the surface of a pool " CALL LIT?,HERE ZERO? STACK /?ELS10 PRINTI "inside a small grotto. To the north is a small ledge." RTRUE ?ELS10: PRINTI "in the dark. From the sound of your breathing you can tell this is a fairly small area." RTRUE .FUNCT BOMB-SHELTER-F,RARG EQUAL? RARG,M-LOOK \?ELS5 PRINTI "With its concrete walls and floor this room looks as if it might be a bomb shelter. A heavy-duty sawhorse has" CALL APRINT,PLANK PRINTI " across it. " FSET? BS-SAFE,ON-GROUND-BIT \?ELS8 PRINTI "A " CALL DPRINT,BS-SAFE PRINTI " is on" CALL TPRINT,LEFT-END JUMP ?CND6 ?ELS8: PRINTI "Suspended above the left end of the plank by" CALL APRINT,ROPE EQUAL? ROPE-LIFE,1,2 \?CND11 PRINTI ", which is burning," ?CND11: PRINTI " is" CALL APRINT,BS-SAFE PRINTI ". The rope stretches from the safe, through a pulley in the ceiling, to the floor where it is tied to a pipe running along the wall" ?CND6: PRINTI ". In the ceiling above" CALL TPRINT,RIGHT-END PRINTI " there is a" FSET? HATCH,OPENBIT \?ELS16 PRINTI "n open" JUMP ?CND14 ?ELS16: PRINTI " closed" ?CND14: PRINTI " hatch. A long chain hangs down from" CALL TPRINT,HATCH PRINTI ". Just beneath" CALL TPRINT,HATCH PRINTI " there is a " FSET? LADDER,HUNG-BIT \?CND19 CALL DPRINT,LADDER PRINTI " hanging from a " ?CND19: PRINTI "pair of heavy-duty metal hooks protruding from the wall. There is a doorway leading south." RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?HANG-UP \FALSE ZERO? PRSI \FALSE CALL PERFORM,V?HANG-UP,PRSO,HOOKS RTRUE .FUNCT HATCH-F EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,HATCH \?ELS5 FSET? HATCH,OPENBIT \?ELS12 CALL PERFORM,V?PUT,PRSO,HATCH-HOLE RTRUE ?ELS12: PRINTR "The hatch is closed!" ?ELS5: EQUAL? PRSA,V?OPEN \?ELS16 FSET? HATCH,OPENBIT /?ELS16 EQUAL? HERE,BOMB-SHELTER \?ELS23 PRINTR "That's for you to figure out." ?ELS23: PRINTR "There doesn't seem to be any way to open it from this side." ?ELS16: EQUAL? PRSA,V?EXAMINE \?ELS27 FSET? HATCH,OPENBIT \?ELS27 PRINTI "The " CALL DPRINT,HATCH PRINTR " is open, revealing a hole about the size of a manhole." ?ELS27: EQUAL? PRSA,V?CLOSE \?ELS31 FSET? HATCH,OPENBIT \?ELS31 EQUAL? HERE,BOMB-SHELTER \?ELS38 PRINTR "That's for you to figure out." ?ELS38: FCLEAR HATCH,OPENBIT FSET HATCH-HOLE,INVISIBLE PRINTR "With a show of strength which would make Aunt Hildegarde proud, you manage to close the heavy hatch." ?ELS31: EQUAL? PRSA,V?ENTER \FALSE EQUAL? HERE,CLIFF \?ELS47 CALL DO-WALK,P?DOWN RSTACK ?ELS47: CALL DO-WALK,P?UP RSTACK .FUNCT CHAIN-F EQUAL? PRSA,V?CLIMB-UP,V?PULL \?ELS5 PRINTI "You pull on the " CALL DPRINT,CHAIN EQUAL? PRSA,V?CLIMB-UP \?CND6 PRINTI " as you attempt to climb" ?CND6: PRINTI " and" CALL TPRINT,HATCH FSET? HATCH,OPENBIT \?ELS11 PRINTI " drops, covering the" FCLEAR HATCH,OPENBIT FSET HATCH-HOLE,INVISIBLE JUMP ?CND9 ?ELS11: PRINTI " pops up, revealing a" FSET HATCH,OPENBIT FCLEAR HATCH-HOLE,INVISIBLE ?CND9: PRINTI " hole in the ceiling." EQUAL? PRSA,V?CLIMB-UP \?CND14 PRINTI " The chain is too slippery to climb." ?CND14: CRLF RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS18 PRINTI "The " CALL DPRINT,CHAIN PRINTR " hangs down to about eye-level from the hatch above." ?ELS18: EQUAL? PRSA,V?TAKE \FALSE PRINTR "You can't take the chain; it's attached to the hatch." .FUNCT ENDS-F,RARG=0 EQUAL? RARG,M-BEG \?ELS5 CALL TOUCHING?,PRSO ZERO? STACK /?ELS5 LOC PLAYER CALL ULTIMATELY-IN?,PRSO,STACK ZERO? STACK \?ELS5 PRINT YOU-CANT PRINTI "reach it from here. You'll have to step off" LOC PLAYER CALL TPRINT,STACK PRINTR " first." ?ELS5: ZERO? RARG \FALSE EQUAL? PRSA,V?EXAMINE \?ELS12 PRINTI "The " CALL DPRINT,PRSO PRINTI " is " EQUAL? PRSO,RIGHT-END \?ELS19 EQUAL? WHICH-END-IS-UP,RIGHT-END /?THN16 ?ELS19: EQUAL? PRSO,LEFT-END \?ELS15 EQUAL? WHICH-END-IS-UP,LEFT-END \?ELS15 ?THN16: PRINTI "in the air" JUMP ?CND13 ?ELS15: PRINTI "on the ground" ?CND13: PRINTR "." ?ELS12: EQUAL? PRSA,V?LOWER,V?PUSH-DOWN \?ELS25 ZERO? PRSI \?ELS25 EQUAL? PRSO,WHICH-END-IS-UP /?ELS32 CALL ITS-ALREADY,STR?173 RSTACK ?ELS32: FSET? BS-SAFE,ON-GROUND-BIT \?ELS34 PRINTR "It won't budge. The safe is on the other end. You should have eaten more carrots as Aunt Hildegarde told you to, instead of feeding them to the dog. It might have improved your eyesight." ?ELS34: LOC PLAYER EQUAL? PRSO,STACK \?ELS36 PRINTI "How can you do that to" CALL TPRINT,PRSO PRINTR " when you're standing on it?" ?ELS36: EQUAL? PRSO,WHICH-END-IS-UP \?ELS38 IN? PLAYER,LEFT-END /?THN41 IN? PLAYER,RIGHT-END \?ELS38 ?THN41: PRINTI "You can't lower" CALL TPRINT,PRSO PRINTI " when you're standing on" LOC PLAYER CALL TRPRINT,STACK RSTACK ?ELS38: PRINTI "You push down the " EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS47 SET 'WHICH-END-IS-UP,LEFT-END PRINTI "right" JUMP ?CND45 ?ELS47: SET 'WHICH-END-IS-UP,RIGHT-END PRINTI "left" ?CND45: PRINTR " end of the plank and the other end goes up." ?ELS25: EQUAL? PRSA,V?RAISE \?ELS51 ZERO? PRSI \?ELS51 EQUAL? PRSO,WHICH-END-IS-UP \?ELS58 CALL ITS-ALREADY,STR?174 RSTACK ?ELS58: LOC PLAYER EQUAL? PRSO,STACK \?ELS60 PRINTI "How can you raise" CALL TPRINT,PRSO PRINTR " when you're standing on it?" ?ELS60: EQUAL? PRSO,LEFT-END \?ELS62 FSET? BS-SAFE,ON-GROUND-BIT \?ELS62 PRINTR "You can't raise the left end when the safe is on it." ?ELS62: PRINTI "You raise the " EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS69 SET 'WHICH-END-IS-UP,LEFT-END PRINTI "left" JUMP ?CND67 ?ELS69: SET 'WHICH-END-IS-UP,RIGHT-END PRINTI "right" ?CND67: PRINTR " end of the plank and the other end goes down." ?ELS51: EQUAL? PRSA,V?CLIMB-ON,V?STAND-ON \?ELS73 EQUAL? WHICH-END-IS-UP,PRSO \?ELS78 CALL IN-AIR RSTACK ?ELS78: FSET? BS-SAFE,ON-GROUND-BIT \?ELS80 PRINT YOU-CANT PRINTI "do that. The " CALL DPRINT,BS-SAFE PRINTR " is already there." ?ELS80: FSET? SKIS,WORNBIT \?ELS82 PRINTI "You step onto" CALL TPRINT,PLANK PRINTR " but ski right off." ?ELS82: CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS73: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE CALL SLIDES-OFF RSTACK .FUNCT IN-AIR PRINTR "It's in the air. How can you stand on it?" .FUNCT GENERIC-PLANK-F EQUAL? PRSA,V?CLIMB-ON,V?STAND-ON /FALSE RETURN PLANK .FUNCT PLANK-F EQUAL? PRSA,V?CLIMB-ON,V?STAND-ON \?ELS5 ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 PRINTI "The " CALL DPRINT,PLANK PRINTI " is about 12 feet long and several inches thick. The right end of the plank is " EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS12 PRINTI "in the air " JUMP ?CND10 ?ELS12: PRINTI "on the ground " ?CND10: PRINTI "and the left end is " EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS17 PRINTI "on the ground" FSET? BS-SAFE,ON-GROUND-BIT \?CND15 PRINTI " with" CALL APRINT,BS-SAFE PRINTI " sitting on it" JUMP ?CND15 ?ELS17: PRINTI "in the air" ?CND15: PRINTR "." ?ELS9: EQUAL? PRSA,V?DISEMBARK \?ELS24 IN? PLAYER,RIGHT-END /?THN27 IN? PLAYER,LEFT-END \?ELS24 ?THN27: LOC PLAYER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?ELS24: EQUAL? PRSA,V?PUSH-DOWN \?ELS30 ZERO? PRSI \?ELS30 CALL ENDS-F RSTACK ?ELS30: EQUAL? PRSA,V?TAKE \?ELS34 PRINT SPINACH CRLF RTRUE ?ELS34: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE CALL SLIDES-OFF RSTACK .FUNCT SLIDES-OFF PRINTI "The " CALL DPRINT,PRSO PRINTI " slides off onto the ground." CRLF MOVE PRSO,HERE RTRUE .FUNCT PULLEY-PSEUDO EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "The pulley is firmly attached to the ceiling." .FUNCT PIPE-F EQUAL? PRSA,V?UNTIE \?ELS5 PRINTR "You can't even loosen the knot because of the weight of the safe." ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "The " CALL DPRINT,PIPE PRINTI " runs along a wall of the bomb shelter" ZERO? ROPE-LIFE /?CND8 PRINTI ". There is a rope tied to it" ?CND8: PRINTR "." .FUNCT BS-SAFE-F EQUAL? PRSA,V?TURN-RIGHT,V?TURN-LEFT \?ELS5 EQUAL? PRSI,INTNUM \?ELS5 FSET? BS-SAFE,ON-GROUND-BIT /?ELS12 PRINTR "You can't reach the safe from here." ?ELS12: GRTR? P-NUMBER,10 \?ELS19 PRINTR "The dial only goes to 10." ?ELS19: SET 'BS-SAFE-DIAL-NUMBER,P-NUMBER PRINTI "You turn the dial to " PRINTN BS-SAFE-DIAL-NUMBER PRINTC 46 FSET? BS-SAFE,OPENBIT /?ELS24 ZERO? STEPS-THROUGH-BS-SAFE \?ELS24 EQUAL? PRSA,V?TURN-LEFT \?ELS24 EQUAL? BS-SAFE-DIAL-NUMBER,4 \?ELS24 SET 'STEPS-THROUGH-BS-SAFE,1 JUMP ?CND22 ?ELS24: FSET? BS-SAFE,OPENBIT /?ELS28 EQUAL? STEPS-THROUGH-BS-SAFE,1 \?ELS28 EQUAL? PRSA,V?TURN-RIGHT \?ELS28 EQUAL? BS-SAFE-DIAL-NUMBER,5 \?ELS28 SET 'STEPS-THROUGH-BS-SAFE,2 JUMP ?CND22 ?ELS28: FSET? BS-SAFE,OPENBIT /?ELS32 EQUAL? STEPS-THROUGH-BS-SAFE,2 \?ELS32 EQUAL? PRSA,V?TURN-LEFT \?ELS32 EQUAL? BS-SAFE-DIAL-NUMBER,7 \?ELS32 SET 'STEPS-THROUGH-BS-SAFE,3 FCLEAR BS-SAFE,LOCKEDBIT PRINTI " You hear a faint click." JUMP ?CND22 ?ELS32: SET 'STEPS-THROUGH-BS-SAFE,0 ?CND22: CRLF RTRUE ?ELS5: EQUAL? PRSA,V?TURN-LEFT,V?TURN-RIGHT,V?TURN \?ELS38 FSET? BS-SAFE,ON-GROUND-BIT /?ELS43 PRINTR "You can't reach the safe from here." ?ELS43: EQUAL? PRSI,FALSE-VALUE,ROOMS \?ELS50 PRINTR "You didn't say what number you wanted to turn the dial to, or the direction." ?ELS50: EQUAL? PRSI,INTNUM \?ELS52 PRINTI "You didn't say whether you wanted to turn the dial RIGHT to " PRINTN P-NUMBER PRINTI " or LEFT to " PRINTN P-NUMBER PRINTR "." ?ELS52: PRINTR "Huh?" ?ELS38: EQUAL? PRSA,V?EXAMINE \?ELS56 PRINTI "The " CALL DPRINT,BS-SAFE PRINTI " is " FSET? BS-SAFE,ON-GROUND-BIT \?ELS59 PRINTI "sitting on" CALL TPRINT,LEFT-END PRINTI ". There is a dial on the safe which can be set to any number between 0 and 10. The dial is set to " PRINTN BS-SAFE-DIAL-NUMBER JUMP ?CND57 ?ELS59: PRINTI "suspended overhead by" CALL APRINT,ROPE ?CND57: PRINTI ". There is a small plaque on the front of" CALL TPRINT,BS-SAFE PRINTI ". " RFALSE ?ELS56: EQUAL? PRSA,V?CLOSE \FALSE FSET? BS-SAFE,OPENBIT \FALSE FSET BS-SAFE,LOCKEDBIT RFALSE .FUNCT PLAQUE-F FSET? BS-SAFE,ON-GROUND-BIT /?ELS5 PRINTI "It's up too high. " PRINT YOU-CANT PRINTR "read it from here." ?ELS5: EQUAL? PRSA,V?READ \FALSE CALL FIXED-FONT-ON PRINTI " LEVY, REGAN, LEBLING SAFE COMPANY UPPER SANDUSKY, OHIO 1936" CALL FIXED-FONT-OFF RSTACK .FUNCT CORPSE-LINE-F EQUAL? PRSA,V?EXAMINE \?ELS5 IN? CORPSE-LINE,FILM-PROJECTOR \?ELS10 FSET? FILM-PROJECTOR,ONBIT \?ELS10 CALL PERFORM,V?EXAMINE,PROJECTION-SCREEN RTRUE ?ELS10: PRINTR "It's a copy of the film ""A Corpse Line,"" on a large film reel." ?ELS5: EQUAL? PRSA,V?TAKE \?ELS16 IN? CORPSE-LINE,FILM-PROJECTOR \FALSE FSET? FILM-PROJECTOR,ONBIT \FALSE PRINTI "Even a nonunion projectionist like yourself should know how dangerous it is to try to take film from" CALL APRINT,FILM-PROJECTOR PRINTR " while it's running." ?ELS16: EQUAL? PRSA,V?PUT \?ELS25 FSET? FILM-PROJECTOR,ONBIT \?ELS25 EQUAL? PRSI,FILM-PROJECTOR \?ELS25 PRINTI "You start to put" CALL TPRINT,CORPSE-LINE PRINTI " in" CALL TPRINT,FILM-PROJECTOR PRINTI ", but glance up at a sign on the wall. The sign states: Remember, Perry Projectionist sez, ""Never try to put film in" CALL APRINT,FILM-PROJECTOR PRINTR " that's turned on.""" ?ELS25: EQUAL? PRSA,V?SHOW \FALSE PRINTR "It is a little more complicated than that." .FUNCT RUBBER-STAMP-F EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "It's the large rubber stamp Buck Palace used to mail the POW's to the Pentagon in Uncle Buddy's ""Address Unknown.""" .FUNCT ROPE-F EQUAL? PRSA,V?UNTIE,V?TIE,V?TAKE \?ELS5 EQUAL? ROPE-LIFE,1,2 \?ELS10 PRINTR "You'd burn your hand. It's on fire!" ?ELS10: PRINTI "You can't even loosen the knot because of the weight of" CALL TRPRINT,BS-SAFE RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS14 EQUAL? ROPE-LIFE,2 \?ELS19 PRINTI "One end of" CALL TPRINT,ROPE PRINTI " is tied around" CALL TPRINT,BS-SAFE PRINTR " and the other end is tied to a pipe running along the wall." ?ELS19: EQUAL? ROPE-LIFE,1 \FALSE PRINTI "The rope is burning and is tied to" CALL TRPRINT,BS-SAFE RSTACK ?ELS14: EQUAL? PRSA,V?PUT-UNDER \?ELS23 EQUAL? PRSO,WHITE-CANDLE,BLUE-CANDLE,RED-CANDLE \?ELS23 FSET? PRSO,FLAMEBIT \?ELS23 CALL PERFORM,V?BURN,ROPE,PRSO RTRUE ?ELS23: EQUAL? PRSA,V?BURN \?ELS27 CALL SET-FLAME-SOURCE ZERO? STACK \TRUE FSET? PRSI,FLAMEBIT /?ELS34 PRINTR "Huh?" ?ELS34: LESS? ROPE-LIFE,3 \?ELS36 CALL ITS-ALREADY,STR?175 RSTACK ?ELS36: EQUAL? ROPE-LIFE,3 \FALSE PRINTI "You touch the flame to the rope then pull it back. The rope catches fire and begins to burn." CRLF SET 'ROPE-LIFE,2 FSET ROPE,ONBIT CALL QUEUE,I-ROPE-BURN,2 RSTACK ?ELS27: EQUAL? PRSA,V?PULL \?ELS40 FSET? BS-SAFE,ON-GROUND-BIT /?ELS40 PRINTI "You pull on" CALL TPRINT,ROPE PRINTR " but nothing happens." ?ELS40: EQUAL? PRSA,V?TIE \?ELS44 PRINT YOU-CANT PRINTI " do that. The " CALL DPRINT,ROPE PRINTI " is already tied to" CALL TRPRINT,BS-SAFE RSTACK ?ELS44: EQUAL? PRSA,V?CLIMB-UP \FALSE PRINTR "You climb the rope, almost reaching the safe, then lose your grip and drop to the ground." .FUNCT I-ROPE-BURN DEC 'ROPE-LIFE ZERO? ROPE-LIFE \?ELS5 CRLF CALL DEQUEUE,I-ROPE-BURN CALL BURN-THROUGH-ROPE RSTACK ?ELS5: CRLF PRINTI "The " CALL DPRINT,ROPE PRINTI " continues to burn." CRLF CALL QUEUE,I-ROPE-BURN,-1 RTRUE .FUNCT BURN-THROUGH-ROPE EQUAL? HERE,TUNNEL /?THN4 EQUAL? HERE,LEDGE \?ELS3 ?THN4: PRINTI "You hear a crash echo from the bomb shelter." CRLF JUMP ?CND1 ?ELS3: EQUAL? HERE,BOMB-SHELTER \?CND1 PRINTI "As the flame burns through" CALL TPRINT,ROPE PRINTI " it snaps and" CALL TPRINT,BS-SAFE PRINTI " crashes down on" CALL TPRINT,LEFT-END LOC PLAYER EQUAL? STACK,RIGHT-END \?ELS10 PRINTI ". The " CALL DPRINT,RIGHT-END PRINTI " catapults you up" FSET? HATCH,OPENBIT \?ELS13 PRINTI " through the opening in the ceiling. The thrilling sensation of flying ends as you land on your feet on a cliff." CRLF CRLF CALL GOTO,CLIFF JUMP ?CND1 ?ELS13: CALL JIGS-UP,STR?176 JUMP ?CND1 ?ELS10: LOC PLAYER EQUAL? STACK,LEFT-END \?ELS17 CALL JIGS-UP,STR?177 JUMP ?CND1 ?ELS17: PRINTI ". The rope burns up and turns to ashes." CRLF ?CND1: FSET BS-SAFE,ON-GROUND-BIT SET 'ROPE-LIFE,0 FCLEAR ROPE,ONBIT REMOVE ROPE SET 'WHICH-END-IS-UP,RIGHT-END RETURN WHICH-END-IS-UP .FUNCT I-SUNRISE FSET? HERE,OUTDOORSBIT /?THN6 GETP HERE,P?CAPACITY EQUAL? STACK,20 \FALSE ?THN6: EQUAL? MOVES,547 \?ELS12 CALL QUEUE,I-SUNRISE,10 CALL DEQUEUE,I-NOISE CRLF PRINTR "The sun begins to rise over the colony." ?ELS12: EQUAL? MOVES,557 \FALSE FSET GAME-ROOM,ONBIT FSET SHORT-HALL,ONBIT FSET OUTSIDE-PARLOR,ONBIT FSET FOYER,ONBIT FSET LIVING-ROOM,ONBIT FSET KITCHEN,ONBIT FSET DINING-ROOM,ONBIT FSET BEDROOM-1,ONBIT FSET BEDROOM-2,ONBIT FSET BEDROOM-3,ONBIT FSET UPSTAIRS-HALL-EAST,ONBIT FSET UPSTAIRS-HALL-MIDDLE,ONBIT FSET UPSTAIRS-HALL-WEST,ONBIT CRLF PRINTR "The sun rises in the sky, signalling a new day in Malibu." .ENDI