.FUNCT DESCRIBE-ROOM,VERB-IS-LOOK=0,FIRST-VISIT=0 ZERO? LIT \?CND1 EQUAL? HERE,ON-POOL-2 /?CND1 CALL NOW-BLACK CRLF RFALSE ?CND1: FSET? HERE,TOUCHBIT /?CND6 FSET HERE,TOUCHBIT SET 'FIRST-VISIT,TRUE-VALUE ?CND6: CALL DPRINT,HERE LOC PLAYER FSET? STACK,VEHBIT \?CND9 PRINTI ", on" LOC PLAYER CALL TPRINT,STACK ?CND9: CRLF ZERO? VERB-IS-LOOK \?THN15 EQUAL? VERBOSITY,2 /?THN15 ZERO? FIRST-VISIT /TRUE EQUAL? VERBOSITY,1 \TRUE ?THN15: GETP HERE,P?ACTION CALL STACK,M-LOOK ZERO? STACK \?CND19 GETP HERE,P?LDESC PRINT STACK ?CND19: CRLF RTRUE .FUNCT DESCRIBE-OBJECTS,O,STR,1ST?=1,AV LOC WINNER >AV FIRST? HERE >O /?KLU48 ?KLU48: ZERO? O /FALSE ?PRG4: ZERO? O /?REP5 CALL DESCRIBABLE?,O ZERO? STACK /?CND6 FSET? O,TOUCHBIT /?CND6 GETP O,P?FDESC >STR ZERO? STR /?CND6 CRLF PRINT STR FSET? O,CONTBIT \?CND13 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK ?CND13: CRLF ?CND6: NEXT? O >O /?PRG4 JUMP ?PRG4 ?REP5: FIRST? HERE >O /?KLU50 ?KLU50: SET '1ST?,TRUE-VALUE ?PRG16: ZERO? O /?REP17 CALL DESCRIBABLE?,O ZERO? STACK /?CND18 GETP O,P?FDESC ZERO? STACK /?ELS22 FSET? O,TOUCHBIT \?CND18 ?ELS22: GETP O,P?DESCFCN >STR ZERO? STR /?ELS28 CALL STR,M-OBJDESC >STR ZERO? STR /?ELS28 FSET? O,CONTBIT \?CND31 EQUAL? STR,M-FATAL /?CND31 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK ?CND31: CRLF JUMP ?CND18 ?ELS28: GETP O,P?LDESC >STR ZERO? STR /?CND18 PRINT STR FSET? O,CONTBIT \?CND38 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK ?CND38: CRLF ?CND18: NEXT? O >O /?PRG16 JUMP ?PRG16 ?REP17: CALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,0 ZERO? AV /FALSE EQUAL? HERE,AV /FALSE CALL DESCRIBE-CONTENTS,AV,FALSE-VALUE,0 RSTACK .FUNCT DESCRIBE-CONTENTS,OBJ,LEVEL=-1,ALL?=D-ALL?,F=0,N,1ST?=1,IT?=0,START?=0,TWO?=0,PARA?=0 EQUAL? LEVEL,2 \?ELS3 SET 'LEVEL,TRUE-VALUE SET 'PARA?,TRUE-VALUE SET 'START?,TRUE-VALUE JUMP ?CND1 ?ELS3: BTST ALL?,D-PARA? \?CND1 SET 'PARA?,TRUE-VALUE ?CND1: FIRST? OBJ >N /?KLU145 ?KLU145: ZERO? START? \?THN11 IN? OBJ,ROOMS /?THN11 FSET? OBJ,ACTORBIT /?THN11 FSET? OBJ,CONTBIT \FALSE FSET? OBJ,OPENBIT /?THN15 FSET? OBJ,TRANSBIT \FALSE ?THN15: FSET? OBJ,SEARCHBIT \FALSE ZERO? N /FALSE ?THN11: ?PRG17: ZERO? N /?THN26 CALL DESCRIBABLE?,N ZERO? STACK /?CND19 BTST ALL?,D-ALL? /?THN26 CALL SIMPLE-DESC?,N ZERO? STACK /?CND19 ?THN26: ZERO? F /?CND28 ZERO? 1ST? /?ELS34 SET '1ST?,FALSE-VALUE EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?ELS38 ZERO? START? \?CND32 ZERO? PARA? \?ELS44 EQUAL? OBJ,PLAYER /?CND45 CRLF ?CND45: SET 'PARA?,TRUE-VALUE JUMP ?CND42 ?ELS44: EQUAL? LEVEL,TRUE-VALUE \?CND42 PRINTC 32 ?CND42: EQUAL? OBJ,HERE \?ELS52 PRINT YOU-SEE JUMP ?CND32 ?ELS52: EQUAL? OBJ,PLAYER \?ELS54 PRINTI "You have" JUMP ?CND32 ?ELS54: FSET? OBJ,SURFACEBIT \?ELS56 PRINTI "Sitting on" CALL TPRINT,OBJ PRINTI " is" JUMP ?CND32 ?ELS56: PRINTI "It looks as if" CALL TPRINT,OBJ FSET? OBJ,ACTORBIT \?ELS61 PRINTI " has" JUMP ?CND32 ?ELS61: PRINTI " contains" JUMP ?CND32 ?ELS38: EQUAL? LEVEL,-1 /?CND32 PRINT LEVEL JUMP ?CND32 ?ELS34: ZERO? N /?ELS70 PRINTC 44 JUMP ?CND32 ?ELS70: PRINTI " and" ?CND32: CALL APRINT,F FSET? F,WORNBIT \?ELS76 PRINTI " (being worn)" JUMP ?CND74 ?ELS76: FSET? F,ONBIT \?CND74 PRINTI " (providing light)" ?CND74: ZERO? IT? \?ELS84 ZERO? TWO? \?ELS84 SET 'IT?,F JUMP ?CND28 ?ELS84: SET 'TWO?,TRUE-VALUE SET 'IT?,FALSE-VALUE ?CND28: SET 'F,N ?CND19: ZERO? N /?CND89 NEXT? N >N /?CND89 ?CND89: ZERO? F \?PRG17 ZERO? N \?PRG17 ZERO? IT? /?CND98 ZERO? TWO? \?CND98 CALL THIS-IS-IT,IT? ?CND98: ZERO? 1ST? /?CND103 ZERO? START? /?CND103 PRINTI " nothing" RFALSE ?CND103: ZERO? 1ST? \?REP18 EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP18 EQUAL? OBJ,HERE \?CND113 PRINTI " here" ?CND113: PRINTC 46 ?REP18: FIRST? OBJ >F /?KLU147 ?KLU147: ?PRG116: ZERO? F /?REP117 FSET? F,CONTBIT \?CND118 CALL DESCRIBABLE?,F,TRUE-VALUE ZERO? STACK /?CND118 BTST ALL?,D-ALL? /?THN125 CALL SIMPLE-DESC?,F ZERO? STACK /?CND118 ?THN125: ZERO? PARA? /?ELS134 PUSH 3 JUMP ?CND130 ?ELS134: PUSH D-ALL? ?CND130: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK ZERO? STACK /?CND118 SET '1ST?,FALSE-VALUE SET 'PARA?,TRUE-VALUE ?CND118: NEXT? F >F /?PRG116 JUMP ?PRG116 ?REP117: ZERO? 1ST? \?CND138 EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND138 LOC WINNER EQUAL? OBJ,HERE,STACK \?CND138 CRLF ?CND138: ZERO? 1ST? \FALSE RTRUE .FUNCT DESCRIBABLE?,OBJ,CONT?=0 FSET? OBJ,INVISIBLE /FALSE EQUAL? OBJ,WINNER /FALSE LOC WINNER EQUAL? OBJ,STACK \?ELS9 LOC WINNER EQUAL? HERE,STACK \FALSE ?ELS9: ZERO? CONT? \TRUE FSET? OBJ,NDESCBIT \TRUE RFALSE .FUNCT SIMPLE-DESC?,OBJ,STR GETP OBJ,P?FDESC ZERO? STACK /?ELS5 FSET? OBJ,TOUCHBIT \FALSE ?ELS5: GETP OBJ,P?DESCFCN >STR ZERO? STR /?ELS9 CALL STR,M-OBJDESC? ZERO? STACK \FALSE ?ELS9: GETP OBJ,P?LDESC ZERO? STACK /TRUE RFALSE .FUNCT DESCRIBE-NOTHING CALL DESCRIBE-CONTENTS,PRSO,2 ZERO? STACK /FALSE IN? PLAYER,PRSO /TRUE CRLF RTRUE .FUNCT V-ALARM EQUAL? PRSO,ME,ROOMS \?ELS3 PRINTI "But you're " JUMP ?CND1 ?ELS3: FSET? PRSO,ACTORBIT \?ELS5 CALL BUT-THE,PRSO PRINTI "is " JUMP ?CND1 ?ELS5: CALL WHAT-A-CONCEPT RTRUE ?CND1: PRINTR "already wide awake!" .FUNCT ALREADY-OPEN CALL ITS-ALREADY,STR?23 RSTACK .FUNCT ALREADY-CLOSED CALL ITS-ALREADY,STR?24 RSTACK .FUNCT V-ASK-ABOUT FSET? PRSO,ACTORBIT \?ELS5 SET 'WINNER,PRSO CALL PERFORM,V?TELL,PRSO SET 'WINNER,PLAYER RTRUE ?ELS5: CALL V-ASK-FOR RSTACK .FUNCT V-ASK-FOR EQUAL? PRSO,ME,ROOMS \?ELS3 CALL PERFORM,V?TELL,ME JUMP ?CND1 ?ELS3: CALL NOT-LIKELY,PRSO,STR?25 ?CND1: CALL PCLEAR RETURN 2 .FUNCT V-BITE CALL HACK-HACK,STR?26 RSTACK .FUNCT V-BLOW-INTO FSET? PRSO,ACTORBIT \?ELS5 CALL PERFORM,V?USE,PRSO RTRUE ?ELS5: CALL HACK-HACK,STR?27 RSTACK .FUNCT PRE-BOARD LOC PLAYER EQUAL? PRSO,STACK \?ELS5 PRINTR "Look around you." ?ELS5: CALL ULTIMATELY-IN?,PRSO ZERO? STACK /FALSE PRINTR "You're holding it!" .FUNCT V-BOARD FSET? PRSO,VEHBIT \?ELS5 MOVE PLAYER,PRSO PRINTI "You are now on" CALL TPRINT,PRSO PRINTR "." ?ELS5: PRINTI "You can't get into" CALL TPRINT,PRSO PRINTR "!" .FUNCT V-BURN FSET? PRSI,FLAMEBIT \?ELS5 FSET? PRSO,BURNBIT \?ELS10 REMOVE PRSO PRINTI "The " CALL DPRINT,PRSO PRINTR " catches fire and is reduced to ashes." ?ELS10: PRINT PYRO RTRUE ?ELS5: PRINTI "With" CALL APRINT,PRSI PRINTI "? " CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT V-BUY CALL VISIBLE?,PRSO ZERO? STACK \?ELS5 CALL CANT-SEE-ANY,PRSO RTRUE ?ELS5: FSET? PRSO,TAKEBIT /?ELS7 FSET? PRSO,TRYTAKEBIT /?ELS7 PRINT YOU-CANT PRINTR "buy that!" ?ELS7: CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?ELS11 PRINTR "You already have one." ?ELS11: ZERO? PRSI /?ELS13 CALL NOT-LIKELY,PRSI,STR?31 RSTACK ?ELS13: PRINTR "You don't have any money." .FUNCT CANT-CLOSE-THAT PRINT YOU-CANT PRINTR "close that!" .FUNCT CANT-GO PRINT YOU-CANT PRINTR "go that way." .FUNCT CANT-LOCK,UN?=0 PRINT YOU-CANT ZERO? UN? /?CND1 PRINTI "un" ?CND1: PRINTI "lock" CALL TPRINT,PRSO PRINTR "!" .FUNCT V-CHASTISE ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: EQUAL? PRSO,INTDIR \?ELS7 PRINTR "You'll have to go in that direction to see what's there." ?ELS7: PRINTR "Use prepositions to indicate precisely what you want to do. For example, LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc." .FUNCT V-CLEAN CALL NOT-A,STR?32 RSTACK .FUNCT V-CLIMB CALL PERFORM,V?CLIMB-UP,PRSO RTRUE .FUNCT V-CLIMB-DOWN EQUAL? PRSO,ROOMS \?ELS5 CALL DO-WALK,P?DOWN RSTACK ?ELS5: CALL WHAT-A-CONCEPT RSTACK .FUNCT V-CLIMB-ON EQUAL? P-PRSA-WORD,W?HOLD \?ELS5 CALL PERFORM,V?TAKE,PRSO RTRUE ?ELS5: PRINT YOU-CANT PRINTR "climb onto that." .FUNCT V-CLIMB-OVER EQUAL? PRSO,ROOMS \?ELS5 CALL V-WALK-AROUND RSTACK ?ELS5: PRINT YOU-CANT PRINTR "climb over that." .FUNCT V-CLIMB-UP EQUAL? PRSO,ROOMS \?ELS5 CALL DO-WALK,P?UP RSTACK ?ELS5: CALL WHAT-A-CONCEPT RSTACK .FUNCT V-CLOSE FSET? PRSO,ACTORBIT \?ELS5 CALL NOT-A,STR?33 RSTACK ?ELS5: FSET? PRSO,SURFACEBIT \?ELS7 CALL CANT-CLOSE-THAT RSTACK ?ELS7: FSET? PRSO,CONTBIT /?ELS9 FSET? PRSO,DOORBIT /?ELS9 CALL PERFORM,V?OPEN,PRSO RTRUE ?ELS9: FSET? PRSO,SURFACEBIT /?ELS13 GETP PRSO,P?CAPACITY ZERO? STACK /?ELS13 FSET? PRSO,OPENBIT \?ELS20 CALL NOW-CLOSED-OR-OPEN,PRSO CALL SAY-IF-NOT-LIT RSTACK ?ELS20: CALL ALREADY-CLOSED RSTACK ?ELS13: FSET? PRSO,DOORBIT \?ELS24 FSET? PRSO,OPENBIT \?ELS29 FCLEAR PRSO,OPENBIT CALL SAY-THE,PRSO PRINTC 32 CALL PICK-ONE,DOOR-NOISES PRINT STACK PRINTR " as it closes." ?ELS29: CALL ALREADY-CLOSED RSTACK ?ELS24: CALL CANT-CLOSE-THAT RSTACK .FUNCT V-COMPARE PRINTR "You compare the two items and find nothing interesting." .FUNCT V-COUNT CALL WASTE-OF-TIME RSTACK .FUNCT V-COVER CALL PERFORM,V?PUT-ON,PRSI,PRSO RTRUE .FUNCT V-CROSS PRINT YOU-CANT PRINTR "cross that!" .FUNCT V-CUT CALL NOT-LIKELY,PRSI,STR?34 RSTACK .FUNCT V-$DEBUG ZERO? DEBUG /?ELS5 SET 'DEBUG,FALSE-VALUE PRINTR "Debug off." ?ELS5: SET 'DEBUG,TRUE-VALUE PRINTR "Debug on." .FUNCT V-DIAGNOSE PRINTI "You're in good health" RANDOM 100 LESS? 50,STACK /?CND1 PRINTI "... at the moment" ?CND1: PRINTR "." .FUNCT V-DIG-WITH CALL PERFORM,V?DIG,GROUND,PRSO RTRUE .FUNCT V-DIG ZERO? PRSI \?CND1 IN? SHOVEL,PLAYER \?ELS6 SET 'PRSI,SHOVEL PRINTI "[with the shovel]" CRLF JUMP ?CND1 ?ELS6: SET 'PRSI,HANDS PRINTI "[with your hands]" CRLF ?CND1: EQUAL? PRSO,SAND,GROUND \?ELS13 EQUAL? PRSI,SHOVEL /?ELS18 PRINTR "I suppose you also excavate tunnels with a teaspoon." ?ELS18: EQUAL? PRSO,SAND /?THN21 EQUAL? HERE,BEACH \?ELS20 ?THN21: PRINTR "You find nothing, so you fill in the hole." ?ELS20: GETP HERE,P?CAPACITY EQUAL? STACK,2 \?ELS24 PRINTR "You attempt to dig in the stone path, but it proves too tough for your efforts." ?ELS24: GETP HERE,P?CAPACITY ZERO? STACK \?ELS26 PRINTR "The ground is too hard here." ?ELS26: GETP HERE,P?CAPACITY EQUAL? STACK,10 /?THN29 GETP HERE,P?CAPACITY EQUAL? STACK,20 \?ELS28 ?THN29: PRINTR "You can't dig a hole here!" ?ELS28: EQUAL? HERE,HEART-OF-MAZE \?ELS37 IN? HEART-OF-MAZE-HOLE,HEART-OF-MAZE \?ELS42 PRINTR "You already dug a hole here." ?ELS42: PRINTI "You dig a hole and uncover" CALL ARPRINT,RUBBER-STAMP MOVE HEART-OF-MAZE-HOLE,HEART-OF-MAZE RTRUE ?ELS37: GETP HERE,P?CAPACITY EQUAL? STACK,1 \?ELS51 GETB HM-TABLE,HM-ROOM GRTR? STACK,15 \?ELS51 PRINTR "You've already dug a hole here." ?ELS51: GETP HERE,P?CAPACITY EQUAL? STACK,1 \FALSE MOVE MAZE-HOLE,HERE GETB HM-TABLE,HM-ROOM BOR STACK,X-H PUTB HM-TABLE,HM-ROOM,STACK GETB HM-TABLE,HM-ROOM >HM-BITS PRINTR "You dig a good sized hole, but find nothing." ?ELS13: CALL WASTE-OF-TIME RSTACK .FUNCT V-DISEMBARK LOC PLAYER EQUAL? STACK,PRSO /?ELS5 PRINTI "Look around you." CRLF RETURN 2 ?ELS5: MOVE WINNER,HERE PRINTI "You are no longer on" CALL TPRINT,PRSO PRINTR "." .FUNCT V-DRINK PRINT YOU-CANT PRINTR "drink that!" .FUNCT V-DRINK-FROM CALL WHAT-A-CONCEPT RSTACK .FUNCT SPECIAL-DROP EQUAL? HERE,ROOF-1,ROOF-2 \?ELS5 EQUAL? PRSO,FINCH \?ELS12 FSET? FINCH,BROKEN-BIT \?THN9 ?ELS12: CALL ULTIMATELY-IN?,FINCH,PRSO ZERO? STACK /?CND6 FSET? FINCH,BROKEN-BIT /?CND6 ?THN9: CALL BREAK-FINCH,TRUE-VALUE ?CND6: EQUAL? PRSO,BLUE-CANDLE,WHITE-CANDLE,RED-CANDLE \?CND15 FSET? PRSO,FLAMEBIT \?CND15 CALL BLOW-OUT-CANDLE,PRSO,TRUE-VALUE ?CND15: MOVE PRSO,PATIO PRINTI "The " CALL DPRINT,PRSO PRINTR " slides off the roof." ?ELS5: EQUAL? HERE,ON-POOL-1,ON-POOL-2,INLET /?THN22 EQUAL? HERE,IN-POOL-1,IN-POOL-2 \?ELS21 ?THN22: CALL PERFORM,V?PUT,PRSO,WATER RTRUE ?ELS21: EQUAL? HERE,CHIMNEY-2 /?THN26 EQUAL? HERE,CHIMNEY-1 \FALSE ?THN26: CALL PERFORM,V?PUT,PRSO,CHIMNEY RTRUE .FUNCT V-DROP CALL SPECIAL-DROP ZERO? STACK \TRUE CALL IDROP ZERO? STACK /FALSE PRINTR "Dropped." .FUNCT IDROP CALL DONT-HAVE?,PRSO ZERO? STACK \FALSE IN? PRSO,WINNER /?ELS5 LOC PRSO FSET? STACK,OPENBIT /?ELS5 PRINT YOU-CANT PRINTI "do that while" CALL TPRINT,PRSO CALL IS-CLOSED CRLF RFALSE ?ELS5: FSET? PRSO,WORNBIT \?ELS9 PRINTI "You'll have to take off" CALL TPRINT,PRSO PRINTI " first." CRLF RFALSE ?ELS9: MOVE PRSO,HERE RTRUE .FUNCT V-EAT CALL NOT-LIKELY,PRSO,STR?35 RSTACK .FUNCT V-EMPTY,OBJ,NXT FSET? PRSO,CONTBIT \?ELS3 FSET? PRSO,OPENBIT \?ELS6 FIRST? PRSO >OBJ /?KLU28 ?KLU28: ZERO? OBJ /?ELS9 ?PRG11: ZERO? OBJ /TRUE NEXT? OBJ >NXT /?KLU29 ?KLU29: FSET? OBJ,NARTICLEBIT /?CND17 PRINTI "The " ?CND17: CALL DPRINT,OBJ PRINTI ": " CALL PERFORM,V?TAKE,OBJ,PRSO SET 'OBJ,NXT JUMP ?PRG11 ?ELS9: CALL BUT-THE,PRSO PRINTR "is already empty!" ?ELS6: CALL ITS-CLOSED,PRSO RTRUE ?ELS3: PRINT YOU-CANT PRINTR "empty that!" .FUNCT V-ENTER EQUAL? PRSO,ROOMS \?ELS5 CALL DO-WALK,P?IN RSTACK ?ELS5: FSET? PRSO,DOORBIT \?ELS7 CALL OTHER-SIDE,PRSO CALL DO-WALK,STACK RSTACK ?ELS7: IN? PRSO,WINNER \?ELS9 PRINTR "That would involve quite a contortion!" ?ELS9: FSET? PRSO,WEARBIT \?ELS11 CALL PRESUMABLY-YOU-WANT-TO,STR?36,PRSO CALL PERFORM,V?WEAR,PRSO RTRUE ?ELS11: FSET? PRSO,VEHBIT \?ELS13 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS13: PRINTI "You hit your head against" CALL TPRINT,PRSO PRINTR " as you attempt this feat." .FUNCT PRE-EXAMINE ZERO? LIT \FALSE CALL TOO-DARK RTRUE .FUNCT V-EXAMINE FSET? PRSO,DOORBIT \?ELS5 PRINTI "It looks as if" CALL TPRINT,PRSO PRINTI " is " FSET? PRSO,OPENBIT \?ELS8 PRINTI "open" JUMP ?CND6 ?ELS8: PRINTI "closed" ?CND6: PRINTR "." ?ELS5: FSET? PRSO,SURFACEBIT \?ELS12 CALL V-LOOK-ON RSTACK ?ELS12: FSET? PRSO,CONTBIT \?ELS14 FSET? PRSO,OPENBIT /?THN20 FSET? PRSO,TRANSBIT \?ELS19 ?THN20: CALL V-LOOK-INSIDE RSTACK ?ELS19: CALL ITS-CLOSED,PRSO RSTACK ?ELS14: FSET? PRSO,READBIT \?ELS25 CALL PERFORM,V?READ,PRSO RSTACK ?ELS25: PRINTI "You see nothing " CALL PICK-ONE,YAWNS PRINT STACK PRINTI " about" CALL TRPRINT,PRSO RSTACK .FUNCT V-EXIT CALL DO-WALK,P?OUT RSTACK .FUNCT FAILED PRINTR "Failed." .FUNCT V-FILL ZERO? PRSI \?ELS5 CALL GLOBAL-IN?,WATER,HERE ZERO? STACK /?ELS10 CALL PERFORM,V?FILL,PRSO,WATER RTRUE ?ELS10: FSET? PRSO,CONTBIT \?ELS12 PRINTR "There's nothing to fill it with." ?ELS12: CALL V-STAND-UNDER RSTACK ?ELS5: EQUAL? PRSI,PORTABLE-WATER,WATER \?ELS16 CALL GLOBAL-IN?,WATER,HERE ZERO? STACK \?ELS21 CALL CANT-SEE-ANY,WATER RSTACK ?ELS21: EQUAL? PRSO,BUCKET /?ELS23 CALL V-STAND-UNDER RSTACK ?ELS23: FIRST? BUCKET \?ELS25 FIRST? BUCKET /?KLU34 ?KLU34: EQUAL? STACK,PORTABLE-WATER /?ELS25 PRINTR "That would get the stuff in the bucket all wet." ?ELS25: MOVE PORTABLE-WATER,BUCKET CALL QUEUE,I-DRIP,2 SET 'AMOUNT-OF-WATER,26 PRINTI "You fill" CALL TPRINT,BUCKET PRINTR ", which naturally leaks slowly." ?ELS16: EQUAL? PRSI,PORTABLE-WATER \?ELS31 CALL PERFORM,V?POUR,PORTABLE-WATER,PRSO CALL THIS-IS-IT,PRSO RTRUE ?ELS31: CALL V-STAND-UNDER RSTACK .FUNCT V-FIND,L LOC PRSO >L EQUAL? PRSO,ME,HANDS \?ELS3 PRINTI "You're right here" JUMP ?CND1 ?ELS3: IN? PRSO,PLAYER \?ELS5 PRINTI "You're holding it" JUMP ?CND1 ?ELS5: IN? PRSO,HERE /?THN8 EQUAL? PRSO,PSEUDO-OBJECT \?ELS7 ?THN8: CALL BUT-THE,PRSO PRINTI "is right in front of you" JUMP ?CND1 ?ELS7: IN? PRSO,LOCAL-GLOBALS \?ELS11 CALL HOW? RTRUE ?ELS11: FSET? L,ACTORBIT \?ELS13 CALL VISIBLE?,L ZERO? STACK /?ELS13 PRINTI "It looks as if" CALL TPRINT,L PRINTI " has it" JUMP ?CND1 ?ELS13: CALL SEE-INSIDE?,L ZERO? STACK /?ELS17 CALL VISIBLE?,L ZERO? STACK /?ELS17 PRINTI "It's " FSET? L,SURFACEBIT \?ELS22 PRINTI "on" JUMP ?CND20 ?ELS22: PRINTI "in" ?CND20: CALL TPRINT,L JUMP ?CND1 ?ELS17: PRINTI "You'll have to do that yourself" ?CND1: PRINTR "." .FUNCT FIND-IN,WHERE,WHAT,W FIRST? WHERE >W /?KLU11 ?KLU11: ZERO? W /FALSE ?PRG4: FSET? W,WHAT \?ELS8 RETURN W ?ELS8: NEXT? W >W /?PRG4 RFALSE .FUNCT FINISH,REPEATING=0,WORD CRLF ZERO? REPEATING \?CND1 CALL V-SCORE CRLF ?CND1: PRINTI "Do you want to restart the story, restore a saved position, or quit? (Please type RESTART, RESTORE or QUIT.) >" READ P-INBUF,P-LEXV GET P-LEXV,1 >WORD EQUAL? WORD,W?RESTAR \?ELS8 RESTART CALL FAILED CALL FINISH,TRUE-VALUE RSTACK ?ELS8: EQUAL? WORD,W?RESTOR \?ELS10 RESTORE \?ELS15 CALL SAY-OKAY RSTACK ?ELS15: CALL FAILED CALL FINISH,TRUE-VALUE RSTACK ?ELS10: EQUAL? WORD,W?QUIT,W?Q \?ELS19 QUIT RTRUE ?ELS19: CALL FINISH,TRUE-VALUE RSTACK .FUNCT V-FLY PRINTR "That's not in the script!" .FUNCT V-FOCUS PRINTR "It's your thinking that's out of focus." .FUNCT V-FOLLOW,WHERE LOC PRSO >WHERE CALL BUT-THE,PRSO PRINTI "is " EQUAL? WHERE,HERE /?THN4 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?ELS3 ?THN4: PRINTI "right here in front of you" JUMP ?CND1 ?ELS3: EQUAL? WHERE,PLAYER \?ELS7 PRINTI "in" CALL DPRINT,HANDS PRINTC 115 JUMP ?CND1 ?ELS7: IN? WHERE,PLAYER \?ELS9 PRINTI "in" CALL TPRINT,WHERE JUMP ?CND1 ?ELS9: PRINTI "nowhere to be seen" ?CND1: PRINTR "!" .FUNCT PRE-GIVE ZERO? PRSO /?THN6 ZERO? PRSI \?ELS5 ?THN6: CALL REFERRING RTRUE ?ELS5: IN? PRSO,LOCAL-GLOBALS /?THN10 IN? PRSO,PSEUDO-OBJECT \?ELS9 ?THN10: CALL NOT-HOLDING RTRUE ?ELS9: CALL DONT-HAVE?,PRSO ZERO? STACK \TRUE FSET? PRSI,ACTORBIT /?ELS15 PRINT YOU-CANT PRINTR "give anything to that!" ?ELS15: FSET? PRSO,WORNBIT \FALSE CALL TAKE-OFF-PRSO-FIRST RSTACK .FUNCT V-GIVE FSET? PRSI,ACTORBIT \FALSE PRINTI "Politely," CALL TPRINT,PRSI PRINTR " refuses your offer." .FUNCT V-SGIVE CALL PERFORM,V?GIVE,PRSI,PRSO RTRUE .FUNCT GOTO,RM,V?=1,OLIT,OHERE,X GETP HERE,P?ACTION CALL STACK,M-EXIT >X SET 'OHERE,HERE SET 'OLIT,LIT MOVE WINNER,RM SET 'HERE,RM CALL LIT?,HERE >LIT GETP HERE,P?ACTION CALL STACK,M-ENTER CALL DESCRIBE-ROOM ZERO? STACK /TRUE ZERO? VERBOSITY /TRUE CALL DESCRIBE-OBJECTS RTRUE .FUNCT HACK-HACK,STR PRINT STR CALL TPRINT,PRSO PRINTC 32 CALL PICK-ONE,HO-HUM PRINT STACK PRINTR "." .FUNCT PRE-HANG-UP CALL ULTIMATELY-IN?,PRSO ZERO? STACK \FALSE EQUAL? PRSO,PHONE /FALSE CALL NOT-HOLDING,PRSO RSTACK .FUNCT V-HANG-UP ZERO? PRSI \?ELS5 EQUAL? HERE,CLOSET \?ELS10 PRINTR "Next time, say which peg to hang it on." ?ELS10: PRINTR "There's no place to hang it up." ?ELS5: PRINTI "You can't hang something on" CALL ARPRINT,PRSI RSTACK .FUNCT V-HELLO,WHO ZERO? PRSO /?ELS3 SET 'WHO,PRSO JUMP ?CND1 ?ELS3: CALL ANYONE-HERE? >WHO ZERO? WHO /?CND1 CALL SPOKEN-TO,WHO CALL PERFORM,V?HELLO,WHO RTRUE ?CND1: ZERO? WHO /?ELS15 FSET? WHO,ACTORBIT \?ELS21 PRINTI "It's apparent that" CALL TPRINT,WHO PRINTR " didn't expect you to say that." ?ELS21: CALL NOT-LIKELY,WHO,STR?25 RSTACK ?ELS15: CALL TALK-TO-SELF RSTACK .FUNCT V-HELP PRINTR "[If you're really stuck, maps and InvisiClues (TM) hint booklets are available using the order form that came in your HOLLYWOOD HIJINX package.]" .FUNCT V-HIDE PRINTR "There aren't any good hiding places here." .FUNCT V-INVENTORY CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE ZERO? STACK \?CND1 PRINTI "You are empty-handed." ?CND1: CRLF RTRUE .FUNCT ITS-ALREADY,STR PRINTI "It's already " PRINT STR PRINTR "." .FUNCT JIGS-UP,REASON=0 ZERO? REASON /?CND1 PRINT REASON CRLF ?CND1: CALL KILL-INTERRUPTS CRLF PRINTI "Fade to black: **** You have died ****" CRLF CALL FINISH RSTACK .FUNCT V-KICK CALL HACK-HACK,STR?44 RSTACK .FUNCT V-KILL FSET? PRSO,ACTORBIT /?ELS3 PRINT YOU-CANT PRINTI "attack" CALL TPRINT,PRSO PRINTC 33 JUMP ?CND1 ?ELS3: PRINTI "Attacking" CALL TPRINT,PRSO ZERO? PRSI /?CND6 PRINTI " with" CALL TPRINT,PRSI ?CND6: PRINTI " isn't likely to help matters." ?CND1: CRLF RTRUE .FUNCT KILL-INTERRUPTS RTRUE .FUNCT V-KISS PRINTR "Smack!" .FUNCT V-KNOCK FSET? PRSO,DOORBIT \?ELS5 CALL NO-ANSWER RSTACK ?ELS5: FSET? PRSO,ACTORBIT \?ELS7 CALL PERFORM,V?USE,PRSO RTRUE ?ELS7: CALL WASTE-OF-TIME RSTACK .FUNCT V-LAMP-OFF EQUAL? P-PRSA-WORD,W?BLOW \?ELS5 EQUAL? PRSO,FLASHLIGHT,COMPUTER,FILM-PROJECTOR /?THN8 EQUAL? PRSO,SLIDE-PROJECTOR \?ELS5 ?THN8: CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS5: FSET? PRSO,LIGHTBIT /?THN12 FSET? PRSO,BURNBIT \?ELS11 ?THN12: FSET? PRSO,ONBIT \?ELS18 FCLEAR PRSO,ONBIT PRINTI "Okay," CALL TPRINT,PRSO PRINTI " is now off." CRLF CALL SAY-IF-NOT-LIT RTRUE ?ELS18: PRINTR "It isn't on!" ?ELS11: CALL CANT-TURN,STR?46 RSTACK .FUNCT V-LAMP-ON FSET? PRSO,LIGHTBIT \?ELS5 FSET? PRSO,ONBIT \?ELS10 CALL ITS-ALREADY,STR?47 RSTACK ?ELS10: FSET PRSO,ONBIT PRINTI "Okay," CALL TPRINT,PRSO PRINTI " is now on." CRLF CALL NOW-LIT? RSTACK ?ELS5: FSET? PRSO,BURNBIT \?ELS14 CALL SET-FLAME-SOURCE ZERO? STACK \TRUE CALL PERFORM,V?BURN,PRSO,PRSI RTRUE ?ELS14: CALL CANT-TURN,STR?48 RSTACK .FUNCT CANT-TURN,STRING PRINT YOU-CANT PRINTI "turn that o" PRINT STRING PRINTR "." .FUNCT V-LEAP EQUAL? PRSO,ROOMS /?ELS5 PRINTR "That'd be a cute trick." ?ELS5: EQUAL? HERE,IN-POOL-1,IN-POOL-2,ON-POOL-1 /?THN8 EQUAL? HERE,ON-POOL-2,INLET,UNDERPASS-1 /?THN8 EQUAL? HERE,UNDERPASS-2 \?ELS7 ?THN8: CALL DO-WALK,P?DOWN RSTACK ?ELS7: CALL GLOBAL-IN?,WATER,HERE ZERO? STACK /?ELS11 CALL PERFORM,V?SWIM,WATER RTRUE ?ELS11: CALL WASTE-OF-TIME RSTACK .FUNCT V-LEAVE EQUAL? PRSO,ROOMS /?THN4 FSET? PRSO,TAKEBIT /?ELS3 ?THN4: CALL DO-WALK,P?OUT RTRUE ?ELS3: CALL DONT-HAVE?,PRSO ZERO? STACK \TRUE CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT V-LET-GO CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT V-LIE-DOWN PRINTR "This is no time for resting." .FUNCT V-LISTEN EQUAL? PRSO,ROOMS \?ELS5 EQUAL? HERE,CLOSET \?ELS10 ZERO? BUCKET-PEG /?ELS10 PRINTR """Hummm.""" ?ELS10: PRINTR "You hear nothing special." ?ELS5: PRINTI "At the moment," CALL TPRINT,PRSO PRINTR " makes no sound." .FUNCT V-LOCK FSET? PRSO,DOORBIT /?THN6 FSET? PRSO,CONTBIT \?ELS5 ?THN6: FSET? HERE,LOCKEDBIT /?ELS12 PRINT YOU-CANT PRINTR "lock it from here." ?ELS12: FSET? PRSO,OPENBIT \?ELS14 PRINTI "You can't lock" CALL TPRINT,PRSO PRINTR " when it's open. You should have eaten more fish (brain food) as Aunt Hildegarde told you to." ?ELS14: FSET? PRSO,LOCKEDBIT \?ELS16 PRINTI "You attempt to lock" CALL TPRINT,PRSO PRINTR " and find it's already locked." ?ELS16: ZERO? PRSI /?ELS18 PRINTI "When was the last time you locked something with" CALL ARPRINT,PRSI RSTACK ?ELS18: FSET? HERE,LOCKEDBIT \?ELS21 FSET PRSO,LOCKEDBIT PRINTI "You lock" CALL TRPRINT,PRSO RSTACK ?ELS21: CALL THING-WONT-LOCK,PRSI,PRSO RSTACK ?ELS5: CALL CANT-LOCK RSTACK .FUNCT THING-WONT-LOCK,THING,CLOSED-THING,UN?=0 PRINTI "A quick test shows that" CALL TPRINT,THING PRINTI " won't " ZERO? UN? /?CND1 PRINTI "un" ?CND1: PRINTI "lock" CALL TRPRINT,CLOSED-THING RSTACK .FUNCT V-LOOK CALL DESCRIBE-ROOM,TRUE-VALUE ZERO? STACK /TRUE CALL DESCRIBE-OBJECTS RTRUE .FUNCT V-LOOK-BEHIND ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: PRINTI "There's nothing behind" CALL TRPRINT,PRSO RSTACK .FUNCT V-LOOK-DOWN ZERO? LIT \?ELS3 CALL TOO-DARK RTRUE ?ELS3: EQUAL? HERE,UPPER-BEACH-STAIRS,LOWER-BEACH-STAIRS \?ELS5 CALL PERFORM,V?LOOK-INSIDE,GAP RTRUE ?ELS5: EQUAL? PRSO,ROOMS \?ELS7 CALL PERFORM,V?EXAMINE,GROUND RTRUE ?ELS7: CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOOK-INSIDE ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: FSET? PRSO,ACTORBIT \?ELS7 CALL NOT-A,STR?33 RSTACK ?ELS7: FSET? PRSO,DOORBIT \?ELS9 EQUAL? PRSO,UPSTAIRS-CD,FOYER-CD,CELLAR-CD /?THN17 EQUAL? PRSO,ATTIC-CD \?ELS14 ?THN17: EQUAL? HERE,CLOSET /?ELS14 FSET? PRSO,OPENBIT \?ELS14 CALL PERFORM,V?LOOK-INSIDE,CLOSET-REF RTRUE ?ELS14: CALL PERFORM,V?EXAMINE,PRSO RTRUE ?ELS9: FSET? PRSO,CONTBIT \?ELS22 LOC WINNER EQUAL? PRSO,STACK \?ELS27 CALL V-LOOK RSTACK ?ELS27: FSET? PRSO,OPENBIT /?ELS29 FSET? PRSO,TRANSBIT /?ELS29 CALL ITS-CLOSED,PRSO RSTACK ?ELS29: PRINT YOU-SEE CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTI " in" CALL TRPRINT,PRSO RTRUE ?ELS22: PRINT YOU-CANT PRINTI "look inside" CALL ARPRINT,PRSO RSTACK .FUNCT V-LOOK-ON ZERO? LIT \?CND1 CALL TOO-DARK RTRUE ?CND1: PRINT YOU-SEE FSET? PRSO,SURFACEBIT \?ELS8 CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTI " on" CALL TRPRINT,PRSO RTRUE ?ELS8: PRINTI " nothing " CALL PICK-ONE,YAWNS PRINT STACK PRINTI " on" CALL TRPRINT,PRSO RSTACK .FUNCT V-LOOK-THRU ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: ZERO? PRSI /?ELS7 FSET? PRSI,TRANSBIT /?ELS7 PRINT YOU-CANT PRINTR "look through that!" ?ELS7: CALL NOTHING-INTERESTING,TRUE-VALUE RSTACK .FUNCT V-LOOK-UNDER ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: IN? PRSO,PLAYER \?ELS7 PRINTI "You're already " FSET? PRSO,WORNBIT \?ELS10 PRINTI "wear" JUMP ?CND8 ?ELS10: PRINTI "hold" ?CND8: PRINTR "ing that!" ?ELS7: CALL NOTHING-INTERESTING,TRUE-VALUE RSTACK .FUNCT V-LOOK-UP ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: EQUAL? HERE,UPSTAIRS-HALL-MIDDLE \?ELS7 FSET? ATTIC-DOOR,OPENBIT \?ELS12 PRINTR "You see an opening in the ceiling previously covered by the small panel. A ladder attached to the small door hangs down from the opening." ?ELS12: PRINTR "You see the outline of a small panel in the ceiling." ?ELS7: EQUAL? HERE,CLOSET-TOP \?ELS16 PRINTR "The shaft continues upward." ?ELS16: EQUAL? HERE,SHAFT-BOTTOM \?ELS18 PRINTI "You see the bottom of the closet " EQUAL? CLOSET-FLOOR,UPSTAIRS-HALL-MIDDLE,ATTIC \?CND19 PRINTI "far " ?CND19: PRINTR "above you." ?ELS18: EQUAL? HERE,FIREPLACE,CHIMNEY-1,CHIMNEY-2 /?THN24 EQUAL? HERE,CHIMNEY-3 /?THN24 FSET? HERE,OUTDOORSBIT \?ELS23 ?THN24: GRTR? MOVES,556 \?ELS30 PRINTR "You see the blue sky of a new day." ?ELS30: PRINTR "You see the night's sky." ?ELS23: PRINTR "You begin to get a stiff neck." .FUNCT V-LOWER CALL V-RAISE RSTACK .FUNCT V-MOVE EQUAL? PRSO,ROOMS \?ELS5 CALL V-WALK-AROUND RSTACK ?ELS5: FSET? PRSO,TAKEBIT \?ELS7 PRINTI "Moving" CALL TPRINT,PRSO PRINTI " reveals nothing " CALL PICK-ONE,YAWNS PRINT STACK PRINTR "." ?ELS7: PRINT YOU-CANT PRINTI "move" CALL TRPRINT,PRSO RSTACK .FUNCT V-MUNG PRINTR "Let's leave the violence to the movies." .FUNCT NO-ANSWER PRINTR "There's no answer." .FUNCT NOT-A,STR PRINTI "You're not a " PRINT STR PRINTR "!" .FUNCT NOTHING-INTERESTING,SEE?=0 PRINTI "You " ZERO? SEE? /?ELS3 PRINTI "see" JUMP ?CND1 ?ELS3: PRINTI "find" ?CND1: PRINTI " nothing " CALL PICK-ONE,YAWNS PRINT STACK PRINTR "." .FUNCT NOW-BLACK PRINTI "It is pitch black." RTRUE .FUNCT NOW-CLOSED-OR-OPEN,THING,OPEN?=0 CALL THIS-IS-IT,THING PRINT OKAY PRINTI "the " CALL DPRINT,PRSO PRINTI " is now " ZERO? OPEN? /?ELS3 FSET THING,OPENBIT PRINTI "open" JUMP ?CND1 ?ELS3: FCLEAR THING,OPENBIT PRINTI "closed" ?CND1: PRINTR "." .FUNCT V-OPEN,F,STR FSET? PRSO,ACTORBIT \?ELS5 CALL NOT-A,STR?33 RSTACK ?ELS5: FSET? PRSO,SURFACEBIT /?THN8 FSET? PRSO,VEHBIT \?ELS7 ?THN8: PRINTR "Huh?" ?ELS7: FSET? PRSO,CONTBIT /?ELS11 FSET? PRSO,DOORBIT /?ELS11 PRINTI "How can you do that to" CALL APRINT,PRSO PRINTR "?" ?ELS11: FSET? PRSO,OPENBIT \?ELS15 CALL ALREADY-OPEN RSTACK ?ELS15: FSET? PRSO,LOCKEDBIT \?ELS17 PRINTR "You'll have to unlock it first." ?ELS17: FSET? PRSO,CONTBIT \?ELS19 FSET PRSO,OPENBIT FSET PRSO,TOUCHBIT FIRST? PRSO \?THN25 FSET? PRSO,TRANSBIT \?ELS24 ?THN25: CALL NOW-CLOSED-OR-OPEN,PRSO,TRUE-VALUE RSTACK ?ELS24: PRINTI "Opening" CALL TPRINT,PRSO PRINTI " reveals" CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTR "." ?ELS19: FSET PRSO,OPENBIT CALL SAY-THE,PRSO ZERO? MYSTERY-GUEST /?ELS38 EQUAL? PRSO,OAK-DOOR \?ELS38 SET 'MYSTERY-GUEST,FALSE-VALUE PRINTR " opens with a long squeal, and you hear hurried footsteps several rooms away." ?ELS38: PRINTC 32 CALL PICK-ONE,DOOR-NOISES PRINT STACK PRINTR " as it opens." .FUNCT CANT-OPEN-CLOSE PRINTI "You can't " EQUAL? PRSA,V?OPEN \?ELS3 PRINTI "open" JUMP ?CND1 ?ELS3: PRINTI "close" ?CND1: CALL APRINT,PRSO PRINTR "!" .FUNCT OTHER-SIDE,DOBJ,P=0,T ?PRG1: NEXTP HERE,P >P LESS? P,LOW-DIRECTION /FALSE GETPT HERE,P >T PTSIZE T EQUAL? STACK,DEXIT \?PRG1 GETB T,DEXITOBJ EQUAL? STACK,DOBJ \?PRG1 RETURN P .FUNCT V-PICK FSET? PRSO,DOORBIT \?ELS5 CALL NOT-A,STR?56 RSTACK ?ELS5: CALL WHAT-A-CONCEPT RSTACK .FUNCT V-PLAY,WD,PTR ADD P-SENTENCE,P-LEXELEN >PTR GET P-LEXV,PTR >WD EQUAL? WD,W?QUOTE \?CND1 ADD PTR,P-LEXELEN GET P-LEXV,STACK >WD ?CND1: ZERO? PRSI /?ELS8 EQUAL? PRSI,PIANO /?ELS8 PRINTI "You can't play" CALL ARPRINT,PRSI RSTACK ?ELS8: ZERO? PRSO /?ELS12 EQUAL? PRSO,PIANO /?ELS12 PRINTI "You can't play" CALL ARPRINT,PRSO RSTACK ?ELS12: IN? PIANO,HERE /?ELS16 PRINTI "There's not a musical instrument in sight." CRLF CALL PCLEAR RSTACK ?ELS16: ZERO? SONG-NUMBER \?ELS18 EQUAL? WD,W?YESTER \?ELS18 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS18: EQUAL? SONG-NUMBER,1 \?ELS22 EQUAL? WD,W?GREENS \?ELS22 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS22: EQUAL? SONG-NUMBER,2 \?ELS26 EQUAL? WD,W?CAMELO \?ELS26 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS26: EQUAL? SONG-NUMBER,3 \?ELS30 EQUAL? WD,W?STARDU \?ELS30 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS30: EQUAL? SONG-NUMBER,4 \?ELS34 EQUAL? WD,W?MISTY \?ELS34 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS34: EQUAL? SONG-NUMBER,5 \?ELS38 EQUAL? WD,W?PEOPLE \?ELS38 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS38: EQUAL? SONG-NUMBER,6 \?ELS42 EQUAL? WD,W?FEELIN \?ELS42 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS42: EQUAL? SONG-NUMBER,7 \?ELS46 EQUAL? WD,W?TOMORR \?ELS46 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS46: EQUAL? SONG-NUMBER,8 \?ELS50 EQUAL? WD,W?TONIGH \?ELS50 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS50: EQUAL? SONG-NUMBER,9 \?ELS54 EQUAL? WD,W?OKLAHO \?ELS54 CALL OPEN-CRAWL-SPACE-DOOR? CALL PCLEAR RSTACK ?ELS54: ZERO? PRSO \?CND59 ZERO? PRSI \?CND59 PRINTI "[on the piano]" CRLF ?CND59: PRINTI "You play for a few moments. It's very beautiful and melodious." CRLF CALL PCLEAR RSTACK .FUNCT OPEN-CRAWL-SPACE-DOOR? ZERO? SONG-PLAYED /?ELS5 PRINTI "You play """ GET SONGS,SONG-NUMBER PRINT STACK PRINTR """ again. You tell yourself you're getting better and promise to begin taking lessons again soon." ?ELS5: FSET CRAWL-SPACE-DOOR,OPENBIT SET 'SONG-PLAYED,TRUE-VALUE PRINTI "Although a little rusty, you begin to play """ GET SONGS,SONG-NUMBER PRINT STACK PRINTR "."" Just as you start to seriously consider taking lessons again, a door in the floor opens." .FUNCT V-POUR PRINT YOU-CANT PRINTR "pour that!" .FUNCT V-PULL CALL HACK-HACK,STR?57 RSTACK .FUNCT V-PUSH CALL HACK-HACK,STR?58 RSTACK .FUNCT V-PUSH-DOWN ZERO? PRSI /?ELS5 PRINT YOU-CANT PRINTR "push things down that." ?ELS5: CALL HACK-HACK,STR?59 RSTACK .FUNCT V-PUSH-TO PRINT YOU-CANT PRINTR "push things to that." .FUNCT V-PUSH-UP CALL HACK-HACK,STR?60 RSTACK .FUNCT PRE-PUT EQUAL? PRSO,WHITE-WAX,RED-WAX,BLUE-WAX \?ELS5 EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS5 CALL ULTIMATELY-IN?,PRSO ZERO? STACK \FALSE ?ELS5: EQUAL? PRSO,YOUR-FEET \?ELS9 EQUAL? PRSI,BRICK-HOLE \?ELS9 PRINTR "If you want to climb up the chimney, say so." ?ELS9: EQUAL? PRSO,WATER,PORTABLE-WATER /FALSE CALL ULTIMATELY-IN?,PRSI,PRSO ZERO? STACK /?ELS15 PRINT YOU-CANT PRINTI "put" CALL TPRINT,PRSO GET P-ITBL,P-PREP2 EQUAL? STACK,PR?ON \?ELS18 PRINTI " on" JUMP ?CND16 ?ELS18: PRINTI " in" ?CND16: CALL TPRINT,PRSI PRINTI " when" CALL TPRINT,PRSI PRINTI " is already " FSET? PRSO,SURFACEBIT \?ELS23 PRINTI "on" JUMP ?CND21 ?ELS23: PRINTI "in" ?CND21: CALL TPRINT,PRSO PRINTR "!" ?ELS15: IN? PRSO,GLOBAL-OBJECTS /?THN28 FSET? PRSO,TAKEBIT /?ELS27 ?THN28: CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS27: CALL DONT-HAVE?,PRSO ZERO? STACK \TRUE EQUAL? PRSI,GROUND \?ELS33 CALL PERFORM,V?DROP,PRSO RTRUE ?ELS33: ZERO? PRSI /?ELS35 CALL ACCESSIBLE?,PRSI ZERO? STACK \?ELS35 CALL CANT-SEE-ANY,PRSI RTRUE ?ELS35: FSET? PRSO,WORNBIT \FALSE CALL TAKE-OFF-PRSO-FIRST RSTACK .FUNCT V-PUT,?TMP1,?TMP2,?TMP3 EQUAL? PRSO,SKIS \?ELS5 EQUAL? PRSI,BS-SAFE,WALL-SAFE,SACK /?THN8 EQUAL? PRSI,COMPARTMENT \?ELS5 ?THN8: PRINTR "The skis can't possibly fit in there." ?ELS5: ZERO? PRSI /?ELS11 FSET? PRSI,OPENBIT /?ELS11 FSET? PRSI,DOORBIT /?ELS11 FSET? PRSI,CONTBIT /?ELS11 FSET? PRSI,SURFACEBIT /?ELS11 PRINT YOU-CANT PRINTR "possibly do that!" ?ELS11: FSET? PRSI,OPENBIT /?ELS15 FSET? PRSI,SURFACEBIT /?ELS15 CALL BUT-THE,PRSI PRINTI "isn't open!" CRLF CALL THIS-IS-IT,PRSI RSTACK ?ELS15: EQUAL? PRSI,PRSO \?ELS19 CALL WHAT-A-CONCEPT RSTACK ?ELS19: IN? PRSO,PRSI \?ELS21 CALL BUT-THE,PRSO PRINTI "is already " FSET? PRSI,SURFACEBIT \?ELS24 PRINTI "on " JUMP ?CND22 ?ELS24: PRINTI "in " ?CND22: CALL TPRINT,PRSI PRINTR "!" ?ELS21: FSET? PRSI,BURNBIT \?ELS28 FSET? PRSO,FLAMEBIT \?ELS28 CALL PERFORM,V?BURN,PRSI,PRSO RTRUE ?ELS28: CALL WEIGHT,PRSI >?TMP3 CALL WEIGHT,PRSO ADD ?TMP3,STACK >?TMP2 GETP PRSI,P?SIZE SUB ?TMP2,STACK >?TMP1 GETP PRSI,P?CAPACITY GRTR? ?TMP1,STACK \?ELS32 PRINTR "There's no room." ?ELS32: IN? PRSO,PLAYER /?ELS34 CALL ITAKE EQUAL? STACK,FALSE-VALUE,M-FATAL /TRUE ?ELS34: MOVE PRSO,PRSI FSET PRSO,TOUCHBIT PRINTR "Done." .FUNCT V-PUT-BEHIND PRINTR "That hiding place is too obvious." .FUNCT V-PUT-ON EQUAL? PRSI,ME \?ELS5 CALL PERFORM,V?WEAR,PRSO RTRUE ?ELS5: FSET? PRSI,SURFACEBIT \?ELS7 CALL V-PUT RSTACK ?ELS7: EQUAL? PRSI,FILM-PROJECTOR \?ELS9 CALL V-PUT RSTACK ?ELS9: PRINTI "There's no good surface on" ZERO? PRSI /?ELS14 CALL TPRINT,PRSI JUMP ?CND12 ?ELS14: PRINTI " that" ?CND12: PRINTR "." .FUNCT V-PUT-UNDER PRINT YOU-CANT PRINTR "put anything under that." .FUNCT V-QUESTION CALL V-ASK-FOR RSTACK .FUNCT V-QUIT,ASK?=1 CALL V-SCORE ZERO? ASK? /?ELS5 CALL SAY-SURE PRINTI "leave the story now?" CALL YES? ZERO? STACK /?ELS11 CRLF PRINTI "Cut! That's a take." CRLF QUIT RTRUE ?ELS11: PRINT OKAY PRINTR "continuing." ?ELS5: QUIT RTRUE .FUNCT V-RAPE PRINTR "What a wholesome idea." .FUNCT V-RAISE EQUAL? PRSO,ROOMS \?ELS5 CALL PERFORM,V?STAND,ROOMS RTRUE ?ELS5: CALL HACK-HACK,STR?61 RSTACK .FUNCT V-REACH-IN,OBJ FIRST? PRSO >OBJ /?KLU16 ?KLU16: FSET? PRSO,ACTORBIT \?ELS5 CALL NOT-A,STR?33 RSTACK ?ELS5: FSET? PRSO,CONTBIT /?ELS7 CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS7: FSET? PRSO,OPENBIT /?ELS9 PRINTR "It's not open." ?ELS9: ZERO? OBJ /?THN12 FSET? OBJ,INVISIBLE /?THN12 FSET? OBJ,TAKEBIT /?ELS11 ?THN12: PRINTR "It's empty." ?ELS11: PRINTI "You reach into" CALL TPRINT,PRSO PRINTR " and feel something." .FUNCT V-READ FSET? PRSO,READBIT \?ELS5 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?ELS5: CALL CANT-VERB-A-PRSO,STR?62 RSTACK .FUNCT CANT-VERB-A-PRSO,STRING PRINT YOU-CANT PRINT STRING CALL APRINT,PRSO PRINTR "!" .FUNCT V-READ-TO ZERO? LIT \?ELS5 CALL TOO-DARK RSTACK ?ELS5: FSET? PRSO,READBIT /?ELS7 CALL HOW-READ PRINTI " to" CALL APRINT,PRSI PRINTR "?" ?ELS7: CALL NOT-LIKELY,PRSI,STR?63 RSTACK .FUNCT HOW-READ PRINTI "How can you read" CALL APRINT,PRSO RSTACK .FUNCT V-REMOVE FSET? PRSO,WORNBIT \?ELS5 CALL PERFORM,V?TAKE-OFF,PRSO RTRUE ?ELS5: CALL PERFORM,V?TAKE,PRSO RTRUE .FUNCT V-REMOVE-FROM EQUAL? PRSO,WAX-COAT-2,WAX-COAT-1 \?ELS5 EQUAL? PRSI,GREEN-MATCH,RED-MATCH \?ELS5 CALL PERFORM,V?SCRAPE-OFF,PRSO,PRSI RTRUE ?ELS5: CALL PERFORM,V?TAKE,PRSO,PRSI RTRUE .FUNCT V-REPLACE EQUAL? PRSO,ME \?ELS3 PRINTI "That's easy" JUMP ?CND1 ?ELS3: CALL BUT-THE,PRSO PRINTI "doesn't need replacement" ?CND1: PRINTR "." .FUNCT V-REPLY CALL NOT-LIKELY,PRSO,STR?64 CALL PCLEAR RETURN 2 .FUNCT V-RESCUE EQUAL? PRSO,ME \?ELS5 CALL V-HELP RSTACK ?ELS5: CALL BUT-THE,PRSO PRINTR "doesn't need any help." .FUNCT V-RESET PRINTR "You don't need to reset that." .FUNCT V-RESTART CALL V-SCORE CALL SAY-SURE PRINTI "restart the story?" CALL YES? ZERO? STACK /FALSE RESTART CALL FAILED RSTACK .FUNCT V-RESTORE RESTORE \?ELS5 CALL SAY-OKAY RSTACK ?ELS5: CALL FAILED RSTACK .FUNCT V-RIDE FSET? PRSO,ACTORBIT \?ELS3 CALL NOT-LIKELY,PRSO,STR?65 JUMP ?CND1 ?ELS3: PRINT YOU-CANT PRINTI "ride that!" CRLF ?CND1: CRLF RTRUE .FUNCT ROB,WHO,WHERE,N,X FIRST? WHO >X /?KLU12 ?KLU12: ?PRG1: ZERO? X /TRUE NEXT? X >N /?KLU13 ?KLU13: FSET? X,TAKEBIT \?CND7 MOVE X,WHERE ?CND7: SET 'X,N JUMP ?PRG1 .FUNCT V-ROLL-UP PRINT YOU-CANT PRINTI "roll up" CALL APRINT,PRSO PRINTR "." .FUNCT V-RUB CALL HACK-HACK,STR?66 RSTACK .FUNCT V-SAVE PRINTI "You can almost hear Buck Palace saying, ""Wimp!""" CRLF CRLF SAVE \?ELS5 CALL SAY-OKAY RSTACK ?ELS5: CALL FAILED RSTACK .FUNCT V-SAY CALL ANYONE-HERE? ZERO? STACK /?ELS5 CALL WAY-TO-TALK CALL PCLEAR RETURN 2 ?ELS5: CALL TALK-TO-SELF RSTACK .FUNCT SAY-IF-NOT-LIT CALL LIT?,HERE >LIT ZERO? LIT \FALSE CRLF CALL NOW-BLACK CRLF RTRUE .FUNCT SAY-OKAY PRINT OKAY PRINTR "done." .FUNCT SAY-SURE PRINTI "Are you sure you want to " RTRUE .FUNCT V-SCORE PRINTI "Your score is " PRINTN SCORE PRINTI " point" EQUAL? SCORE,1 /?CND1 PRINTC 115 ?CND1: PRINTI " out of " PRINTN SCORE-MAX PRINTI ", in " PRINTN MOVES PRINTI " move" EQUAL? MOVES,1 /?CND4 PRINTC 115 ?CND4: PRINTR "." .FUNCT V-SCRAPE-OFF ZERO? PRSI /?ELS5 PRINTI "You can't scrape" CALL TPRINT,PRSO PRINTI " off" CALL TPRINT,PRSI PRINTR "!" ?ELS5: PRINTI "There's nothing to scrape off" CALL TRPRINT,PRSO RSTACK .FUNCT V-SCRIPT GET 0,8 BOR STACK,1 PUT 0,8,STACK CALL TRANSCRIPT,STR?67 RTRUE .FUNCT V-UNSCRIPT CALL TRANSCRIPT,STR?68 GET 0,8 BAND STACK,-2 PUT 0,8,STACK RTRUE .FUNCT TRANSCRIPT,STR PRINTI "Here " PRINT STR PRINTI "s a transcript of interaction with" CRLF CALL V-VERSION RSTACK .FUNCT V-SEARCH EQUAL? PRSO,ME \?ELS5 CALL V-HELP RSTACK ?ELS5: FSET? PRSO,CONTBIT \?ELS7 FSET? PRSO,OPENBIT /?ELS12 FSET? PRSO,TRANSBIT /?ELS12 CALL YOUD-HAVE-TO,STR?23,PRSO RSTACK ?ELS12: PRINTI "You find" CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTR "." ?ELS7: FSET? PRSO,SURFACEBIT \?ELS21 PRINTI "You find" CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTR "." ?ELS21: FSET? PRSO,ACTORBIT \?ELS26 CALL PERFORM,V?USE,PRSO RTRUE ?ELS26: CALL NOTHING-INTERESTING RSTACK .FUNCT V-SHAKE,X FSET? PRSO,ACTORBIT \?ELS5 CALL PERFORM,V?ALARM,PRSO RTRUE ?ELS5: FSET? PRSO,TAKEBIT /?ELS7 FSET? PRSO,TRYTAKEBIT /?ELS7 CALL HACK-HACK,STR?69 RSTACK ?ELS7: CALL WASTE-OF-TIME RSTACK .FUNCT V-SHOOT ZERO? PRSI \?ELS5 CALL ULTIMATELY-IN?,GUN ZERO? STACK /?ELS5 CALL PERFORM,V?SHOOT,GUN,PRSO RTRUE ?ELS5: FSET? PRSO,ACTORBIT \?ELS9 PRINTR "You haven't got a gun." ?ELS9: PRINTR "You can't shoot that." .FUNCT V-SSHOOT CALL PERFORM,V?SHOOT,PRSI,PRSO RTRUE .FUNCT V-SHOW PRINTI "It isn't likely that" CALL TPRINT,PRSI PRINTR " is interested." .FUNCT V-SSHOW CALL PERFORM,V?SHOW,PRSI,PRSO RTRUE .FUNCT V-SIT,VEHICLE EQUAL? PRSO,ROOMS \?ELS5 CALL GLOBAL-IN?,SEAT,HERE ZERO? STACK /?ELS5 CALL PERFORM,V?BOARD,SEAT RTRUE ?ELS5: CALL WASTE-OF-TIME RSTACK .FUNCT PRE-SKI FSET? SKIS,WORNBIT /FALSE PRINTR "You're not wearing skis!" .FUNCT V-SKI EQUAL? PRSO,INTDIR \?ELS5 EQUAL? P-DIRECTION,P?UP \?ELS10 PRINTR "There's no tow rope here." ?ELS10: CALL DO-WALK,P-DIRECTION RSTACK ?ELS5: PRINTR "You can't ski down that!" .FUNCT V-SLEEP PRINTR "Maybe you should've had a nap before the lawyer dropped you off." .FUNCT V-SMELL EQUAL? PRSO,ROOMS \?ELS3 PRINTI "You smell nothing " CALL PICK-ONE,YAWNS PRINT STACK JUMP ?CND1 ?ELS3: PRINTI "It smells just like" CALL APRINT,PRSO ?CND1: PRINTR "." .FUNCT V-SPLICE PRINT YOU-CANT PRINTR "splice that!" .FUNCT V-SQUEEZE CALL WASTE-OF-TIME RSTACK .FUNCT V-STAND ZERO? PRSO /?THN6 EQUAL? PRSO,ROOMS \?ELS5 ?THN6: PRINTR "You're already standing." ?ELS5: PRINT YOU-CANT PRINTR "stand that up." .FUNCT V-STAND-ON CALL WASTE-OF-TIME RSTACK .FUNCT V-STAND-UNDER CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT V-SWING ZERO? PRSI \?ELS5 PRINTR "Whoosh!" ?ELS5: CALL PERFORM,V?KILL,PRSI,PRSO RTRUE .FUNCT V-SWIM ZERO? PRSO /?ELS5 EQUAL? PRSO,INTDIR \?ELS11 FSET? PLAYER,WETBIT \?ELS16 CALL DO-WALK,P-DIRECTION RSTACK ?ELS16: PRINTR "You'd be swimming in air." ?ELS11: PRINTI "You can't swim in" CALL ARPRINT,PRSO RSTACK ?ELS5: CALL GLOBAL-IN?,WATER,HERE ZERO? STACK /?ELS22 CALL PERFORM,V?SWIM,WATER RTRUE ?ELS22: PRINT YOU-CANT PRINTR "swim here!" .FUNCT V-SWIM-UP CALL DO-WALK,P?UP RSTACK .FUNCT V-SWIM-DOWN CALL DO-WALK,P?DOWN RSTACK .FUNCT PRE-TAKE,CONTAINER LOC PRSO >CONTAINER IN? PRSO,WINNER \?ELS5 PRINTI "You're already " FSET? PRSO,WORNBIT \?ELS8 PRINTI "wear" JUMP ?CND6 ?ELS8: PRINTI "hold" ?CND6: PRINTR "ing it." ?ELS5: ZERO? CONTAINER /?ELS12 FSET? CONTAINER,CONTBIT \?ELS12 FSET? CONTAINER,OPENBIT /?ELS12 PRINT YOU-CANT PRINTI "reach into" CALL TPRINT,CONTAINER PRINTR ". It's closed." ?ELS12: ZERO? PRSI /?ELS16 EQUAL? PRSO,ME \?ELS20 CALL PERFORM,V?DROP,PRSI RTRUE ?ELS20: EQUAL? PRSO,WATER \?ELS22 EQUAL? PRSI,POND /FALSE ?ELS22: IN? PRSO,PRSI /?ELS26 EQUAL? PRSO,RING \?ELS29 EQUAL? PRSI,DOG \?ELS29 FSET? DOG,CLUTCHING-BIT /FALSE ?ELS29: EQUAL? PRSO,LADDER \?ELS33 EQUAL? PRSI,HATCH-HOLE \?ELS33 FSET? LADDER,HUNG-BIT /FALSE ?ELS33: EQUAL? PRSO,LENS-CAP \?CND27 EQUAL? PRSI,FILM-PROJECTOR-LENS \?CND27 FSET? LENS-CAP,NDESCBIT /FALSE ?CND27: FSET? PRSI,ACTORBIT /?THN43 EQUAL? PRSI,DOG \?ELS42 ?THN43: CALL BUT-THE,PRSI PRINTI "doesn't have" CALL APRINT,PRSO JUMP ?CND40 ?ELS42: CALL BUT-THE,PRSO PRINTI "isn't in" CALL TPRINT,PRSI ?CND40: PRINTR "." ?ELS26: CALL ULTIMATELY-IN?,PRSO,BUCKET ZERO? STACK /FALSE ZERO? BUCKET-PEG /FALSE PRINT PEG-IN-WAY RTRUE ?ELS16: CALL ULTIMATELY-IN?,PRSO,BUCKET ZERO? STACK /?ELS54 ZERO? BUCKET-PEG /?ELS54 PRINT PEG-IN-WAY RTRUE ?ELS54: LOC WINNER EQUAL? PRSO,STACK \FALSE PRINTR "You're in it!" .FUNCT V-TAKE CALL ITAKE ZERO? STACK /FALSE PRINTR "Taken." .FUNCT ITAKE,VB=1 CALL THIS-IS-IT,PRSO FSET? PRSO,TAKEBIT /?ELS5 ZERO? VB /FALSE CALL PICK-ONE,YUKS PRINT STACK CRLF RFALSE ?ELS5: CALL TOO-MUCH-JUNK?,VB ZERO? STACK \FALSE CALL BOKS-BIG-ONE,PRSO ZERO? STACK /?ELS13 EQUAL? TREASURES-FOUND,10 /FALSE ?ELS13: MOVE PRSO,WINNER FSET PRSO,TOUCHBIT FCLEAR PRSO,NDESCBIT RTRUE .FUNCT BOKS-BIG-ONE,T-OBJ GETP T-OBJ,P?VALUE ZERO? STACK /FALSE GETP T-OBJ,P?VALUE ADD SCORE,STACK >SCORE PUTP T-OBJ,P?VALUE,0 INC 'TREASURES-FOUND EQUAL? TREASURES-FOUND,10 \TRUE LOC T-OBJ MOVE PEG-0,STACK LOC T-OBJ MOVE NOTE,STACK EQUAL? T-OBJ,FINCH /?CND9 MOVE T-OBJ,WINNER ?CND9: FSET T-OBJ,TOUCHBIT FCLEAR T-OBJ,NDESCBIT EQUAL? T-OBJ,RING \?ELS14 PRINTI "As you take" CALL TPRINT,PRSO PRINTI ", a small peg and a note drop out from under the model." CRLF MOVE PEG-0,HERE MOVE NOTE,HERE RTRUE ?ELS14: PRINTI "As you " PRINTB P-PRSA-WORD CALL TPRINT,PRSO PRINTI " you notice a wooden peg and a note " EQUAL? T-OBJ,CORPSE-LINE,GRATER,PARKING-METER \?ELS19 PRINTI "behind" JUMP ?CND17 ?ELS19: EQUAL? T-OBJ,FINCH \?ELS21 PRINTI "next to" CALL ARPRINT,FINCH RTRUE ?ELS21: PRINTI "beneath" ?CND17: PRINTR " it." .FUNCT V-TAKE-OFF,WHERE EQUAL? P-PRSA-WORD,W?GET \?ELS5 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?ELS5: IN? PRSO,PLAYER \?ELS7 FSET? PRSO,WORNBIT \?ELS7 FCLEAR PRSO,WORNBIT PRINT OKAY PRINTI "you're no longer wearing" CALL TRPRINT,PRSO RSTACK ?ELS7: PRINTR "You aren't wearing that!" .FUNCT TAKE-OFF-PRSO-FIRST PRINTI "You'll have to remove" CALL TPRINT,PRSO PRINTR " first." .FUNCT V-TASTE CALL PERFORM,V?EAT,PRSO RTRUE .FUNCT V-TELL EQUAL? PRSO,ME,ROOMS \?ELS5 CALL TALK-TO-SELF RSTACK ?ELS5: FSET? PRSO,ACTORBIT \?ELS7 ZERO? P-CONT /?ELS12 SET 'WINNER,PRSO LOC WINNER >HERE RETURN HERE ?ELS12: CALL NO-ANSWER RSTACK ?ELS7: PRINT YOU-CANT PRINTI "talk to" CALL APRINT,PRSO PRINTC 33 CRLF CALL PCLEAR RETURN 2 .FUNCT TELL-TIME,MINUTES,HOURS,PM=0 ADD MOVES,1260 >MINUTES GRTR? MINUTES,1439 \?CND1 SUB MINUTES,1440 >MINUTES ?CND1: DIV MINUTES,60 >HOURS GRTR? HOURS,11 \?CND4 SET 'PM,TRUE-VALUE SUB HOURS,12 >HOURS ?CND4: ZERO? HOURS \?CND7 SET 'HOURS,12 ?CND7: PRINTN HOURS PRINTC 58 MOD MINUTES,60 >MINUTES LESS? MINUTES,10 \?CND10 PRINTC 48 ?CND10: PRINTN MINUTES ZERO? PM /?ELS17 PRINTI " pm" RTRUE ?ELS17: PRINTI " am" RTRUE .FUNCT V-TIME PRINTI "It's " CALL TELL-TIME PRINTR "." .FUNCT V-THROW CALL IDROP ZERO? STACK /FALSE CALL SPECIAL-DROP ZERO? STACK \TRUE ZERO? PRSI /?ELS12 PRINTR "You missed." ?ELS12: PRINTR "Thrown." .FUNCT V-THROW-OFF CALL WASTE-OF-TIME RSTACK .FUNCT V-TIE PRINT YOU-CANT PRINTI "tie" CALL TPRINT,PRSO PRINTR " to that." .FUNCT V-TIE-UP PRINT YOU-CANT PRINTR "tie anything with that!" .FUNCT TOO-DARK PRINTR "It's too dark to see!" .FUNCT TOO-MUCH-JUNK?,VB=1,?TMP1 LOC PRSO IN? STACK,WINNER /FALSE CALL WEIGHT,PRSO >?TMP1 CALL WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,LOAD-ALLOWED \FALSE ZERO? VB /TRUE FIRST? PLAYER \?ELS14 PRINTI "Your load is" JUMP ?CND12 ?ELS14: PRINTI "It's a little" ?CND12: PRINTR " too heavy." .FUNCT V-TURN FSET? PRSO,TAKEBIT /?ELS5 FSET? PRSO,TRYTAKEBIT /?ELS5 CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS5: CALL HACK-HACK,STR?72 RSTACK .FUNCT V-TURN-LEFT CALL V-TURN RSTACK .FUNCT V-TURN-RIGHT CALL V-TURN RSTACK .FUNCT V-USE FSET? PRSO,ACTORBIT \?ELS5 CALL BUT-THE,PRSO PRINTR "might resent that." ?ELS5: CALL HOW? RSTACK .FUNCT V-VERBOSE SET 'VERBOSITY,2 PRINTI "[Maximum verbosity.]" CRLF CRLF CALL V-LOOK RSTACK .FUNCT V-BRIEF SET 'VERBOSITY,1 PRINTR "[Brief descriptions.]" .FUNCT V-SUPER-BRIEF SET 'VERBOSITY,0 PRINTR "[Superbrief descriptions.]" .FUNCT V-VERSION,CNT=17,V GET 0,1 BAND STACK,2047 >V CRLF PRINTI "HOLLYWOOD HIJINX Infocom interactive fiction -- a zany treasure hunt Copyright (C) 1986 Infocom, Inc. All rights reserved. " GETB 0,1 BAND STACK,8 ZERO? STACK /?CND1 PRINTI "Licensed to Tandy Corporation. Version 00.00." PRINTN V CRLF ?CND1: PRINTI "HOLLYWOOD HIJINX is a trademark of Infocom, Inc. Release " PRINTN V PRINTI " / Serial Number " ?PRG4: IGRTR? 'CNT,23 /?REP5 GETB 0,CNT PRINTC STACK JUMP ?PRG4 ?REP5: CRLF RTRUE .FUNCT V-$VERIFY ZERO? PRSO /?ELS5 EQUAL? PRSO,INTNUM \?ELS11 EQUAL? P-NUMBER,57 \?ELS11 PRINTN SERIAL CRLF RTRUE ?ELS11: CALL DONT-UNDERSTAND RSTACK ?ELS5: PRINTI "Verifying disk." CRLF VERIFY \?ELS22 PRINTR "Correct." ?ELS22: CALL FAILED RSTACK .FUNCT V-$COMMAND DIRIN 1 RTRUE .FUNCT V-$RANDOM EQUAL? PRSO,INTNUM /?ELS5 PRINTR "Illegal." ?ELS5: SUB 0,P-NUMBER RANDOM STACK RTRUE .FUNCT V-$RECORD DIROUT D-RECORD-ON RTRUE .FUNCT V-$UNRECORD DIROUT D-RECORD-OFF RTRUE .FUNCT V-UNLOCK FSET? PRSO,DOORBIT /?THN6 FSET? PRSO,CONTBIT \?ELS5 ?THN6: FSET? PRSO,OPENBIT \?ELS12 PRINTI "The " CALL DPRINT,PRSO PRINTR " is already open. You should have eaten more carrots as Aunt Hildegarde always told you." ?ELS12: FSET? PRSO,LOCKEDBIT /?ELS14 PRINTI "You attempt to unlock" CALL TPRINT,PRSO PRINTR " and find it isn't locked." ?ELS14: ZERO? PRSI /?ELS16 PRINTI "When was the last time you unlocked something with" CALL APRINT,PRSI PRINTR "?" ?ELS16: FSET? PRSO,DOORBIT \?ELS19 FSET? HERE,LOCKEDBIT /?ELS24 PRINT YOU-CANT PRINTR "unlock it from this side." ?ELS24: PRINTI "With a click you unlock" CALL TRPRINT,PRSO FCLEAR PRSO,LOCKEDBIT RTRUE ?ELS19: FSET? PRSO,CONTBIT \?ELS28 FSET? PRSO,LOCKEDBIT \?ELS28 PRINTR "Perhaps if you had the combination..." ?ELS28: CALL THING-WONT-LOCK,PRSI,PRSO,TRUE-VALUE RSTACK ?ELS5: CALL CANT-LOCK,TRUE-VALUE RSTACK .FUNCT V-UNROLL PRINT YOU-CANT PRINTI "unroll" CALL ARPRINT,PRSO RSTACK .FUNCT V-UNTIE PRINTR "You don't need to untie it. It's not tied to anything." .FUNCT DO-WALK,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR RTRUE .FUNCT V-WALK,PT,PTS,STR,OBJ,RM FSET? SKIS,WORNBIT \?ELS5 EQUAL? PRSO,P?DOWN /?ELS5 PRINTI "These are downhill skis, not cross-country skis!" CRLF RETURN 2 ?ELS5: ZERO? P-WALK-DIR \?ELS11 ZERO? PRSO /?ELS14 CALL PRESUMABLY-YOU-WANT-TO,STR?73,PRSO CALL PERFORM,V?WALK-TO,PRSO RTRUE ?ELS14: CALL V-WALK-AROUND RTRUE ?ELS11: LOC PLAYER EQUAL? STACK,HERE /?ELS19 PRINTI "You're not going anywhere while you're on" LOC PLAYER CALL TRPRINT,STACK RETURN 2 ?ELS19: GETPT HERE,PRSO >PT ZERO? PT /?ELS23 PTSIZE PT >PTS EQUAL? PTS,UEXIT \?ELS28 GETB PT,REXIT CALL GOTO,STACK RSTACK ?ELS28: EQUAL? PTS,NEXIT \?ELS30 GET PT,NEXITSTR PRINT STACK CRLF RETURN 2 ?ELS30: EQUAL? PTS,FEXIT \?ELS34 GET PT,FEXITFCN CALL STACK >RM ZERO? RM /?ELS39 CALL GOTO,RM RSTACK ?ELS39: RETURN 2 ?ELS34: EQUAL? PTS,CEXIT \?ELS45 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?ELS50 GETB PT,REXIT CALL GOTO,STACK RSTACK ?ELS50: GET PT,CEXITSTR >STR ZERO? STR /?ELS52 PRINT STR CRLF RETURN 2 ?ELS52: CALL CANT-GO RETURN 2 ?ELS45: EQUAL? PTS,DEXIT \FALSE GETB PT,DEXITOBJ >OBJ FSET? OBJ,OPENBIT \?ELS65 GETB PT,REXIT CALL GOTO,STACK RSTACK ?ELS65: GET PT,DEXITSTR >STR ZERO? STR /?ELS67 PRINT STR CRLF CALL THIS-IS-IT,OBJ RETURN 2 ?ELS67: CALL ITS-CLOSED,OBJ RETURN 2 ?ELS23: EQUAL? P-WALK-DIR,P?IN,P?OUT \?ELS80 PRINTR "Please use compass directions." ?ELS80: CALL CANT-GO RETURN 2 .FUNCT V-WALK-AROUND PRINTR "[Do you have any particular direction in mind?]" .FUNCT V-WALK-TO EQUAL? PRSO,INTDIR \?ELS5 CALL DO-WALK,P-DIRECTION RSTACK ?ELS5: CALL V-WALK-AROUND RSTACK .FUNCT V-WAIT,NUM=3 PRINTI "Time passes." CRLF ?PRG1: DLESS? 'NUM,0 /?REP2 CALL CLOCKER ZERO? STACK /?PRG1 ?REP2: SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT .FUNCT V-$WAIT,NUM EQUAL? PRSO,INTNUM \?ELS5 SET 'NUM,P-NUMBER PRINTI "Time passes." CRLF ?PRG6: DLESS? 'NUM,0 /?REP7 CALL CLOCKER ZERO? STACK /?PRG6 ?REP7: SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT ?ELS5: PRINTR "Youse should use a numba." .FUNCT V-WAIT-FOR LOC PRSO EQUAL? STACK,HERE,WINNER \?ELS3 CALL BUT-THE,PRSO PRINTI "is already here!" JUMP ?CND1 ?ELS3: PRINTI "You may be waiting quite a while." ?CND1: CRLF RTRUE .FUNCT PRE-WATER ZERO? PRSI /?ELS5 EQUAL? PRSI,PORTABLE-WATER /FALSE EQUAL? PRSI,BUCKET \?ELS13 IN? PORTABLE-WATER,BUCKET \?ELS13 SET 'PRSI,PORTABLE-WATER RFALSE ?ELS13: PRINTI "As the word implies, you can only water" CALL APRINT,PRSO PRINTR " with water." ?ELS5: CALL ULTIMATELY-IN?,PORTABLE-WATER ZERO? STACK /?ELS24 SET 'PRSI,PORTABLE-WATER RFALSE ?ELS24: PRINTI "You don't have any water to water" CALL TPRINT,PRSO PRINTR " with!" .FUNCT V-WATER PRINTI "A nice thought, but" CALL TPRINT,PRSO PRINTR " doesn't need watering." .FUNCT V-WAVE-AT CALL V-ASK-FOR RSTACK .FUNCT V-WEAR FSET? PRSO,WORNBIT \?ELS5 PRINTI "You're already wearing" CALL TRPRINT,PRSO RSTACK ?ELS5: FSET? PRSO,WEARBIT /?ELS7 PRINT YOU-CANT PRINTI "wear" CALL ARPRINT,PRSO RSTACK ?ELS7: CALL DONT-HAVE?,PRSO ZERO? STACK \TRUE FSET PRSO,WORNBIT EQUAL? PRSO,TOUPEE \?ELS16 PRINTI "You put on " CALL DPRINT,TOUPEE PRINTR " in an attempt to cover that Burbank bald spot." ?ELS16: EQUAL? PRSO,MASK \?ELS18 PRINTI "You slip on" CALL TPRINT,MASK PRINTR " and feel an unexplainable urge to go to summer camp." ?ELS18: PRINT OKAY PRINTI "you're now wearing" CALL TRPRINT,PRSO RSTACK .FUNCT WEIGHT,THING,OBJ,WT=0 FIRST? THING >OBJ /?KLU16 ?KLU16: ?PRG1: ZERO? OBJ /?REP2 EQUAL? THING,PLAYER \?ELS9 FSET? OBJ,WORNBIT \?ELS9 INC 'WT JUMP ?CND7 ?ELS9: CALL WEIGHT,OBJ ADD WT,STACK >WT ?CND7: NEXT? OBJ >OBJ /?PRG1 JUMP ?PRG1 ?REP2: GETP THING,P?SIZE ADD WT,STACK >WT RETURN WT .FUNCT V-YELL CALL PCLEAR CALL ANYONE-HERE? ZERO? STACK /?ELS5 CALL WAY-TO-TALK RETURN 2 ?ELS5: PRINTR "You begin to get a sore throat." .FUNCT YES?,WORD CRLF ?PRG1: CRLF PRINTI "(Please type YES or NO.) >" PUTB YES-LEXV,0,4 READ YES-INBUF,YES-LEXV GET YES-LEXV,P-LEXSTART >WORD GETB YES-LEXV,P-LEXWORDS ZERO? STACK /?PRG1 ZERO? WORD /?PRG1 EQUAL? WORD,W?YES,W?Y,W?YUP /TRUE EQUAL? WORD,W?OKAY,W?OK,W?AYE /TRUE EQUAL? WORD,W?SURE,W?AFFIRM,W?POSITI /TRUE EQUAL? WORD,W?NO,W?N,W?NOPE /FALSE EQUAL? WORD,W?NAY,W?NAW,W?NEGATIVE \?PRG1 RFALSE .FUNCT NOW-LIT? ZERO? LIT \FALSE CALL LIT?,HERE ZERO? STACK /FALSE SET 'LIT,TRUE-VALUE CRLF CALL V-LOOK RSTACK .FUNCT WASTE-OF-TIME CALL PICK-ONE,USELESSNESS PRINT STACK PRINTR "." .ENDI