.FUNCT RED-HERRING-F EQUAL? PRSA,V?ASK-ABOUT /FALSE CALL GLOBAL-NOT-HERE-PRINT,RED-HERRING RSTACK .FUNCT INTNUM-F EQUAL? PRSA,V?WITHDRAW,V?GIVE \?ELS5 ZERO? P-DOLLAR-FLAG \?ELS5 PRINTI "Next time, tell me what there's " PRINTN P-NUMBER PRINTI " of." CRLF SET 'CLOCK-WAIT,TRUE-VALUE RETURN 2 ?ELS5: ZERO? P-DOLLAR-FLAG /FALSE EQUAL? PRSA,V?ASK-FOR,V?TAKE,V?WITHDRAW /FALSE EQUAL? WINNER,PLAYER \FALSE GRTR? P-AMOUNT,POCKET-CHANGE \FALSE CALL TELL-DONT-HAVE,STR?2 RSTACK .FUNCT AIR-F EQUAL? PRSA,V?TASTE,V?SMELL \?ELS5 CALL AIRTIGHT-ROOM? ZERO? STACK /?ELS10 FSET? MASK,WORNBIT /?ELS10 PRINTR "The air is musty but breathable." ?ELS10: EQUAL? HERE,MM-ENGINE-ROOM,NW-ENGINE-ROOM \?ELS16 PRINTR "The air is heavy with diesel fumes." ?ELS16: GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS20 PRINTR "It feels a whole lot better than the water you could be breathing." ?ELS20: PRINTR "You find nothing special about the air." ?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS28 PRINTR "I think you're an air head." ?ELS28: EQUAL? PRSA,V?LOOK-INSIDE \?ELS32 CALL PERFORM,V?LOOK RTRUE ?ELS32: EQUAL? PRSI,AIR \FALSE EQUAL? PRSA,V?DROP,V?THROW \FALSE CALL PERFORM,PRSA,PRSO,GROUND RTRUE .FUNCT FLOOR-F EQUAL? PRSA,V?PUT,V?PUT-ON \FALSE EQUAL? PRSI,GROUND \FALSE CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT DECK-F EQUAL? PRSA,V?WALK-TO \?ELS5 CALL TELL-SHD-DIR RSTACK ?ELS5: EQUAL? PRSA,V?PUT,V?PUT-ON \FALSE EQUAL? PRSI,DECK \FALSE CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT FLOOR-HOLE-F EQUAL? PRSA,V?THROUGH \?ELS5 CALL DO-WALK,P?DOWN RTRUE ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS7 CALL TELL-YOU-CANT,STR?6 RSTACK ?ELS7: EQUAL? PRSA,V?EXAMINE \FALSE EQUAL? HERE,WRECK-5 \?ELS14 ZERO? WRECK-5-FLOODED \?ELS14 PRINTR "There's water on the other side." ?ELS14: CALL TELL-LOOKS-HOLE RSTACK .FUNCT TELL-LOOKS-HOLE PRINTR "It looks a lot like a hole." .FUNCT CEILING-HOLE-F EQUAL? PRSA,V?THROUGH \?ELS5 CALL DO-WALK,P?UP RTRUE ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS7 CALL TELL-YOU-CANT,STR?6 RSTACK ?ELS7: EQUAL? PRSA,V?EXAMINE \FALSE CALL TELL-LOOKS-HOLE RSTACK .FUNCT HOLE-F EQUAL? PRSA,V?DRILL /FALSE CALL GLOBAL-NOT-HERE-PRINT,HOLE RSTACK .FUNCT MAST-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "There are several rotting masts here." EQUAL? HERE,WRECK-1 \?CND8 PRINTI " The top of one has fallen into a hole at your feet." ?CND8: CRLF RTRUE ?ELS5: EQUAL? PRSA,V?CLIMB-FOO \FALSE PRINTR "None of the masts looks sturdy enough." .FUNCT LIGHTHOUSE-F EQUAL? HERE,WINDING-ROAD-1 \?ELS5 EQUAL? PRSA,V?OPEN,V?THROUGH \?ELS10 PRINTR "The door is locked." ?ELS10: EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "You can see the base of a " CALL DPRINT,LIGHTHOUSE PRINTI ". " CALL TELL-CLOSED,STR?7 RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS23 PRINTI "The " CALL DPRINT,LIGHTHOUSE PRINTI " towers over Hardscrabble Island from the island's northwest corner." GRTR? PRESENT-TIME,1200 /?THN29 LESS? PRESENT-TIME,480 \?CND26 ?THN29: PRINTI " Its light provides a beacon for ships." ?CND26: CRLF RTRUE ?ELS23: EQUAL? PRSA,V?WALK-TO \?ELS34 CALL TELL-SHD-DIR RSTACK ?ELS34: EQUAL? PRSA,V?FIND /FALSE EQUAL? PRSA,V?ASK-ABOUT \?ELS38 FSET? PRSO,VICBIT \FALSE PRINTR """It's been there forever.""" ?ELS38: PRINTR "That would be difficult from this distance." .FUNCT GLOBAL-TREASURE-F EQUAL? PRSA,V?TELL,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /FALSE EQUAL? PRSA,V?FIND \?ELS7 EQUAL? WINNER,PLAYER \?ELS12 CALL TELL-NOT-EASY RSTACK ?ELS12: PRINTR """I'd like to know where some is.""" ?ELS7: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-TREASURE RSTACK .FUNCT TRAWLER-F EQUAL? PRSA,V?EXAMINE \?ELS5 GETP HERE,P?LINE EQUAL? STACK,TRAWLER-LINE-C \?ELS10 PRINTI "The " CALL DPRINT,TRAWLER PRINTR " is in decent shape." ?ELS10: EQUAL? HERE,MM-WHEELHOUSE \?ELS14 ZERO? AT-SEA /?ELS14 CALL GLOBAL-NOT-HERE-PRINT,TRAWLER RSTACK ?ELS14: PRINTI "The " CALL DPRINT,TRAWLER CALL TELL-BOAT-DESC RSTACK ?ELS5: EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS22 EQUAL? HERE,WHARF \?ELS25 CALL DO-WALK,P?WEST RTRUE ?ELS25: EQUAL? HERE,UNDERWATER \?ELS27 EQUAL? DEPTH,50 \?ELS27 CALL DO-WALK,P?UP RTRUE ?ELS27: CALL TELL-YOU-CANT,STR?8 RTRUE ?ELS22: EQUAL? PRSA,V?DISEMBARK \?ELS33 ZERO? AT-SEA /?ELS38 CALL GLOBAL-IN?,RAILING,HERE ZERO? STACK /?ELS44 CALL PERFORM,V?DIVE RTRUE ?ELS44: CALL TELL-NO-EXIT RSTACK ?ELS38: EQUAL? HERE,NW-STARBOARD-DECK \?ELS48 CALL DO-WALK,P?EAST RSTACK ?ELS48: CALL TELL-NO-EXIT RSTACK ?ELS33: EQUAL? PRSA,V?LISTEN \?ELS52 ZERO? AT-SEA /?ELS52 CALL TELL-THRUM RSTACK ?ELS52: EQUAL? PRSA,V?LAUNCH \FALSE CALL TELL-YOU-CANT,STR?9 RSTACK .FUNCT TELL-NO-EXIT CALL TELL-HOW-THAT,STR?10,STR?11 RSTACK .FUNCT TELL-HOW-THAT,STR,LAST=0 PRINTI "How can you " PRINT STR PRINTI " that" ZERO? LAST /?CND3 PRINTI " " PRINT LAST ?CND3: PRINTR "?" .FUNCT TELL-BOAT-DESC PRINTR " looks weathered but not aged." .FUNCT TELL-THRUM PRINTR "You hear the powerful thrum of diesel engines." .FUNCT SALVAGER-F EQUAL? PRSA,V?EXAMINE \?ELS5 GETP HERE,P?LINE EQUAL? STACK,SALVAGER-LINE-C \?ELS10 PRINTI "The " CALL DPRINT,SALVAGER PRINTR " is shipshape." ?ELS10: EQUAL? HERE,NW-WHEELHOUSE \?ELS14 ZERO? AT-SEA /?ELS14 CALL GLOBAL-NOT-HERE-PRINT,SALVAGER RSTACK ?ELS14: PRINTI "The " CALL DPRINT,SALVAGER PRINTI " is a medium-size boat that" CALL TELL-BOAT-DESC RSTACK ?ELS5: EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS22 EQUAL? HERE,WHARF \?ELS25 CALL DO-WALK,P?EAST RTRUE ?ELS25: EQUAL? HERE,UNDERWATER \?ELS27 EQUAL? DEPTH,50 \?ELS27 CALL DO-WALK,P?UP RTRUE ?ELS27: CALL TELL-YOU-CANT,STR?8 RTRUE ?ELS22: EQUAL? PRSA,V?DISEMBARK \?ELS33 ZERO? AT-SEA /?ELS38 CALL GLOBAL-IN?,RAILING,HERE ZERO? STACK /?ELS44 CALL PERFORM,V?DIVE RTRUE ?ELS44: CALL TELL-NO-EXIT RSTACK ?ELS38: EQUAL? HERE,MM-PORT-DECK \?ELS48 CALL DO-WALK,P?WEST RSTACK ?ELS48: CALL TELL-NO-EXIT RSTACK ?ELS33: EQUAL? PRSA,V?LISTEN \?ELS52 ZERO? AT-SEA /?ELS52 CALL TELL-THRUM RSTACK ?ELS52: EQUAL? PRSA,V?LAUNCH \FALSE CALL TELL-YOU-CANT,STR?9 RSTACK .FUNCT SHIPWRECK-F EQUAL? PRSA,V?DISEMBARK \?ELS5 CALL TELL-NOT-EASY RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "It is what's left of a " EQUAL? WRECK-CHOSEN,1,3 \?ELS12 PRINTI "wooden" JUMP ?CND10 ?ELS12: PRINTI "steel" ?CND10: PRINTR " ship." .FUNCT GLOBAL-SLEEP-F EQUAL? PRSA,V?WALK-TO \?ELS5 CALL PERFORM,V?SLEEP RTRUE ?ELS5: PRINTR "Huh? Wake up!" .FUNCT FIELD-F EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS5 CALL TELL-YOU-CANT,STR?12 RSTACK ?ELS5: EQUAL? PRSA,V?LOOK-BEHIND \?ELS7 CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS7: EQUAL? PRSA,V?CUT \?ELS11 CALL TELL-DONT-HAVE,STR?13 RSTACK ?ELS11: EQUAL? PRSA,V?PLAY \?ELS13 PRINTR "Sounds exciting." ?ELS13: EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "This field was once productive farmland but hasn't been tended for many years." .FUNCT ROCKS-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "The rocks here are large, pointy, and impossible to get through." ?ELS5: EQUAL? PRSA,V?THROUGH,V?BOARD \FALSE CALL TELL-YOU-CANT,STR?14 RSTACK .FUNCT POCKET-F FSET? WET-SUIT,WORNBIT /?THN6 FSET? DEEP-SUIT,WORNBIT \?ELS5 ?THN6: PRINTR "Your diving gear is over the pocket." ?ELS5: EQUAL? PRSA,V?TAKE \?ELS11 EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY \?ELS11 CALL TELL-FLASHING-CASH RSTACK ?ELS11: EQUAL? PRSA,V?LOOK-INSIDE \?ELS15 PRINTI "There is $" PRINTN POCKET-CHANGE PRINTR " in it." ?ELS15: EQUAL? PRSA,V?EMPTY \?ELS19 PRINTR "You think better of the idea." ?ELS19: EQUAL? PRSA,V?OPEN \?ELS23 PRINTR "It's open enough." ?ELS23: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSI,POCKET \FALSE ZERO? P-DOLLAR-FLAG /?ELS34 EQUAL? PRSO,INTNUM \?ELS34 GRTR? P-AMOUNT,POCKET-CHANGE \?ELS34 CALL TELL-DONT-HAVE,STR?2 RSTACK ?ELS34: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?THN39 EQUAL? PRSO,INTNUM \?ELS38 ZERO? P-DOLLAR-FLAG /?ELS38 ?THN39: CALL TELL-ALREADY,STR?16 RSTACK ?ELS38: CALL TELL-NO-FIT RSTACK .FUNCT TELL-NO-FIT,STR=0 PRINTI "It won't fit" ZERO? STR /?CND3 PRINTI " " PRINT STR ?CND3: PRINTR "." .FUNCT PEOPLE-F EQUAL? HERE,SHANTY,FERRY-LANDING \?ELS5 PRINTR "Leave them alone. They're not bothering you." ?ELS5: IN? HERE,WEASEL /?THN10 IN? HERE,JOHNNY /?THN10 IN? HERE,PETE /?THN10 IN? HERE,SPEAR-CARRIER /?THN10 IN? HERE,DELIVERY-BOY \?ELS9 ?THN10: CALL TELL-REFER-INDIVIDUAL,STR?17 RSTACK ?ELS9: CALL GLOBAL-NOT-HERE-PRINT,PEOPLE RSTACK .FUNCT TELL-REFER-INDIVIDUAL,STR PRINTI "Refer to individual" PRINT STR PRINTR "." .FUNCT GLOBAL-SURFACE-F EQUAL? PRSA,V?OPEN \FALSE CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT MOVE-SHARED-OBJECTS,PLACE,CTR=0,SURFACE?=1,?TMP1 EQUAL? PLACE,LAST-S-O-T-PLACE /FALSE EQUAL? LAST-S-O-T-PLACE,MM-CREW-QTRS,NW-CREW-QTRS \?ELS5 SET 'SURFACE?,FALSE-VALUE CALL UNLOAD,UNDER-BUNK CALL UNLOAD,BUNK JUMP ?CND1 ?ELS5: EQUAL? LAST-S-O-T-PLACE,MM-GALLEY,NW-GALLEY \?ELS7 CALL UNLOAD,STOVE JUMP ?CND1 ?ELS7: EQUAL? LAST-S-O-T-PLACE,MM-LOUNGE,NW-LOUNGE \?CND1 CALL UNLOAD,LOUNGE-CHAIR ?CND1: ZERO? SURFACE? /?CND10 CALL UNLOAD,GLOBAL-SURFACE ?CND10: EQUAL? PLACE,MM-CREW-QTRS,NW-CREW-QTRS /?CND14 MOVE GLOBAL-SURFACE,PLACE ?CND14: SET 'LAST-S-O-T-PLACE,PLACE ?PRG17: GRTR? CTR,44 /TRUE ADD CTR,1 GET SHARED-OBJECT-TABLE,STACK EQUAL? STACK,PLACE \?CND19 GET SHARED-OBJECT-TABLE,CTR >?TMP1 ADD CTR,2 GET SHARED-OBJECT-TABLE,STACK MOVE ?TMP1,STACK PUT SHARED-OBJECT-TABLE,CTR,0 ADD CTR,1 PUT SHARED-OBJECT-TABLE,STACK,0 ADD CTR,2 PUT SHARED-OBJECT-TABLE,STACK,0 ?CND19: ADD CTR,3 >CTR JUMP ?PRG17 .FUNCT UNLOAD,OBJ,F,N FIRST? OBJ >F \FALSE NEXT? F >N /?KLU11 ?KLU11: CALL PUT-IN-TABLE,F,LAST-S-O-T-PLACE,OBJ ?PRG6: ZERO? N /TRUE SET 'F,N NEXT? F >N /?KLU12 ?KLU12: CALL PUT-IN-TABLE,F,LAST-S-O-T-PLACE,OBJ JUMP ?PRG6 .FUNCT PUT-IN-TABLE,OBJ,RM,SURF,CTR=0 EQUAL? OBJ,PLAYER /FALSE ?PRG4: GRTR? CTR,44 \?ELS8 JUMP ?REP5 ?ELS8: GET SHARED-OBJECT-TABLE,CTR ZERO? STACK \?ELS10 PUT SHARED-OBJECT-TABLE,CTR,OBJ ADD CTR,1 PUT SHARED-OBJECT-TABLE,STACK,RM ADD CTR,2 PUT SHARED-OBJECT-TABLE,STACK,SURF MOVE OBJ,LOCAL-GLOBALS RFALSE ?ELS10: ADD CTR,3 >CTR JUMP ?PRG4 ?REP5: PRINTR "[BUG: Too much on surfaces.]" .FUNCT GLOBAL-BANK-F EQUAL? HERE,BANK \?ELS5 EQUAL? PRSA,V?EXAMINE \?ELS10 CALL PERFORM,V?LOOK SET 'P-IT-OBJECT,GLOBAL-BANK RTRUE ?ELS10: EQUAL? PRSA,V?ROB \?ELS12 CALL ROBBERY-ENDING RSTACK ?ELS12: EQUAL? PRSA,V?EXIT,V?DROP \?ELS14 CALL DO-WALK,P?OUT RTRUE ?ELS14: EQUAL? PRSA,V?MUNG \FALSE PRINTR "This isn't Monte Carlo." ?ELS5: EQUAL? HERE,SHORE-ROAD-2 \?ELS20 EQUAL? PRSA,V?THROUGH \?ELS25 CALL DO-WALK,P?IN RTRUE ?ELS25: EQUAL? PRSA,V?EXAMINE \?ELS27 PRINTI "The " CALL DPRINT,BANK PRINTR " is an imposing granite building." ?ELS27: EQUAL? PRSA,V?ROB \FALSE ZERO? BUSINESS-HOURS? /?ELS36 CALL ROBBERY-ENDING RSTACK ?ELS36: CALL ROBBERY-ENDING,FALSE-VALUE RSTACK ?ELS20: EQUAL? PRSA,V?ASK-ABOUT \?ELS45 EQUAL? PRSI,GLOBAL-BANK /FALSE ?ELS45: EQUAL? PRSA,V?WALK-TO,V?FIND \?ELS41 EQUAL? PRSO,GLOBAL-BANK /FALSE ?ELS41: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-BANK RSTACK .FUNCT ROBBERY-ENDING,INSIDE?=1 ZERO? INSIDE? /?ELS3 PRINTI "The teller trips the alarm, and policemen come and drag you away. As you contemplate a stretch in prison, you consider that crime might not pay." CRLF JUMP ?CND1 ?ELS3: PRINTI "You don't realize your attempts have set off a silent alarm until the police arrive. At that point, you can only wonder if attempted robbery wasn't such a bright idea." CRLF ?CND1: CRLF CALL FINISH RSTACK .FUNCT GLOBAL-MONEY-F EQUAL? PRSA,V?STEP,V?ASK-ABOUT,V?ASK-FOR /FALSE EQUAL? PRSA,V?FOLLOW,V?WHAT /FALSE EQUAL? PRSA,V?FIND \?ELS9 CALL TELL-NOT-EASY RTRUE ?ELS9: GRTR? POCKET-CHANGE,0 \?ELS11 FSET? WET-SUIT,WORNBIT /?THN17 FSET? DEEP-SUIT,WORNBIT \?ELS16 ?THN17: CALL TELL-CANT-REACH,STR?21 RSTACK ?ELS16: EQUAL? PRSA,V?COUNT \?ELS20 PRINTI "You are carrying $" PRINTN POCKET-CHANGE PRINTR "." ?ELS20: EQUAL? PRSA,V?EXAMINE \?ELS24 PRINTI "It looks a lot like $" PRINTN POCKET-CHANGE PRINTR "." ?ELS24: EQUAL? PRSA,V?TAKE /FALSE CALL TELL-FLASHING-CASH RSTACK ?ELS11: EQUAL? HERE,BANK \?ELS30 PRINTR "Not surprisingly, the money here is not easily accessible." ?ELS30: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-MONEY RSTACK .FUNCT TELL-FLASHING-CASH PRINTR "Flashing your bankroll is not a good idea." .FUNCT FERRY-TOKEN-F IN? SPEAR-CARRIER,HERE \?ELS5 EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS11 EQUAL? PRSO,SPEAR-CARRIER /?THN8 ?ELS11: EQUAL? PRSA,V?BUY \?ELS5 ?THN8: CALL NO-TOKENS,HERE RSTACK ?ELS5: EQUAL? PRSA,V?ASK-ABOUT \?ELS13 FSET? PRSO,PERSON \?ELS13 PRINTR """You need them for the ferry.""" ?ELS13: EQUAL? PRSA,V?ASK-FOR,V?FIND /FALSE CALL GLOBAL-NOT-HERE-PRINT,FERRY-TOKEN RSTACK .FUNCT NO-TOKENS,PLACE EQUAL? PLACE,BANK \?ELS3 PRINTI "The teller says, ""We're out. Try Outfitters.""" JUMP ?CND1 ?ELS3: PRINTI "The " CALL DPRINT,SPEAR-CARRIER PRINTI " checks and then says, ""I'm afraid we're out of tokens. Try " CALL DPRINT,BANK PRINTI ".""" ?CND1: CRLF RTRUE .FUNCT GLOBAL-TIME-F EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR \?ELS5 EQUAL? PRSO,SPEAR-CARRIER \?ELS10 PRINTI "The " CALL DPRINT,PRSO PRINTI " checks and tells you it's " CALL TIME-PRINT,PRESENT-TIME CRLF RTRUE ?ELS10: FSET? PRSO,PERSON \FALSE PRINTR """I'm not sure.""" ?ELS5: EQUAL? PRSA,V?TELL \?ELS18 EQUAL? PRSO,GLOBAL-TIME \?ELS18 ZERO? PRSI \?ELS18 PRINTR "Didn't you learn that the little hand points to the hour and the big hand points to the minute?" ?ELS18: EQUAL? PRSA,V?EXAMINE \?ELS24 CALL PERFORM,V?TIME SET 'P-IT-OBJECT,GLOBAL-TIME RTRUE ?ELS24: EQUAL? PRSA,V?TELL \?ELS26 FSET? PRSO,VICBIT \?ELS26 EQUAL? PRSO,ME \FALSE ?ELS26: PRINTR "If you want to know the time, check your watch." .FUNCT GLOBAL-DAY-F EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR \?ELS9 FSET? PRSO,VICBIT /?THN6 ?ELS9: EQUAL? PRSA,V?WHAT \?ELS5 EQUAL? WINNER,PLAYER /?ELS5 ?THN6: PRINTR """Wednesday.""" ?ELS5: EQUAL? PRSA,V?WHAT \?ELS15 PRINTR "Ask somebody." ?ELS15: CALL TELL-SERIOUS RSTACK .FUNCT TELL-SERIOUS PRINTR "Be serious." .FUNCT ADVENTURER-F GRTR? BLOOD-ALCOHOL,25 \?ELS5 CALL JIGS-UP,STR?22 RSTACK ?ELS5: GRTR? HOW-THIRSTY,3 /?THN8 GRTR? BLOOD-ALCOHOL,15 /?THN8 GRTR? HOW-HUNGRY,3 /?THN8 EQUAL? HOW-TIRED,6 /?THN8 EQUAL? P-ADVERB,W?SLOWLY \?ELS7 ?THN8: EQUAL? PRSA,V?WAIT,V?SLEEP /?THN15 EQUAL? PRSA,V?TELL \?ELS18 ZERO? PRSI /?THN15 ?ELS18: CALL GAME-COMMAND? ZERO? STACK \?THN15 ZERO? WAITED? /?ELS14 ?THN15: SET 'WAITED?,2 EQUAL? PRSA,V?WALK \?ELS21 JUMP ?CND19 ?ELS21: ZERO? PRSO /?ELS23 CALL META-LOC,PRSO EQUAL? STACK,HERE /?ELS23 IN? PRSO,GLOBAL-OBJECTS /?ELS23 SET 'PRSO,NOT-HERE-OBJECT JUMP ?CND19 ?ELS23: ZERO? PRSI /?CND19 CALL META-LOC,PRSI EQUAL? STACK,HERE /?CND19 IN? PRSI,GLOBAL-OBJECTS /?CND19 SET 'PRSI,NOT-HERE-OBJECT ?CND19: EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \FALSE CALL NOT-HERE-OBJECT-F RSTACK ?ELS14: SET 'WAITED?,1 CALL CLOCKER EQUAL? STACK,M-FATAL \?ELS43 SET 'CLOCK-WAIT,TRUE-VALUE PRINTI "This interrupts what you're trying to do." CRLF RETURN 2 ?ELS43: EQUAL? PRSA,V?WALK \FALSE IN? PLAYER,UNDERWATER /FALSE IN? PLAYER,HERE \FALSE GRTR? BLOOD-ALCOHOL,15 \?ELS61 CALL TELL-YOURE-NOT,STR?23 CRLF CALL RANDOM-WALK RSTACK ?ELS61: RANDOM 100 GRTR? 40,STACK \FALSE PRINTI "You stop to sit down for a bit and then struggle back to your feet." CRLF RETURN 2 ?ELS7: FSET? FLIPPERS,WORNBIT \FALSE EQUAL? PRSA,V?WALK \FALSE ZERO? AT-SEA \FALSE GETP HERE,P?LINE LESS? STACK,TRAWLER-LINE-C /?THN72 EQUAL? HERE,MM-PORT-DECK \?ELS75 EQUAL? P-WALK-DIR,P?WEST /?THN72 ?ELS75: EQUAL? HERE,NW-STARBOARD-DECK \FALSE EQUAL? P-WALK-DIR,P?EAST \FALSE ?THN72: PRINTR "You'd look silly walking around in flippers." .FUNCT RANDOM-WALK,P,Z,L,S,D=0 SET 'P,0 ?PRG1: NEXTP HERE,P >P LESS? P,LOW-DIRECTION \?ELS5 ZERO? D /TRUE CALL DO-WALK,D RTRUE ?ELS5: GETPT HERE,P >Z PTSIZE Z >L EQUAL? L,UEXIT /?THN15 EQUAL? L,CEXIT \?ELS18 GETB Z,CEXITFLAG VALUE STACK ZERO? STACK \?THN15 ?ELS18: EQUAL? L,DEXIT \?PRG1 GETB Z,DEXITOBJ FSET? STACK,OPENBIT \?PRG1 ?THN15: ZERO? D \?ELS23 SET 'D,P JUMP ?PRG1 ?ELS23: RANDOM 100 GRTR? 50,STACK \?PRG1 SET 'D,P JUMP ?PRG1 .FUNCT DETECTOR-NOISE,LISTENING?=0,C,H,P,Z,L,R,LAST-R=0,?TMP1 CALL META-LOC,PLAYER >H ZERO? LISTENING? \?ELS5 EQUAL? PRSA,V?LISTEN \?ELS5 EQUAL? PRSO,METAL-DETECTOR /FALSE ?ELS5: CALL META-LOC,METAL-DETECTOR EQUAL? STACK,H \?ELS9 ZERO? DETECTOR-ON /?ELS9 ZERO? DETECTOR-POWERED /?ELS9 CALL COUNT-METAL,H >?TMP1 GETP H,P?DESCFCN ADD ?TMP1,STACK >C SET 'P,0 ?PRG12: NEXTP H,P >P ZERO? P \?ELS16 JUMP ?REP13 ?ELS16: LESS? P,LOW-DIRECTION /?PRG12 GETPT H,P >Z PTSIZE Z >L EQUAL? L,UEXIT,CEXIT,DEXIT \?ELS21 GETB Z,0 >R EQUAL? R,LAST-R /?PRG12 CALL COUNT-METAL,R DIV STACK,2 ADD C,STACK GETP R,P?DESCFCN DIV STACK,2 ADD STACK,STACK >C >C SET 'LAST-R,R JUMP ?PRG12 ?ELS21: EQUAL? L,FEXIT \?PRG12 GET Z,0 CALL STACK,FALSE-VALUE >R ZERO? R /?PRG12 EQUAL? R,LAST-R /?PRG12 CALL COUNT-METAL,R DIV STACK,2 ADD C,STACK GETP R,P?DESCFCN DIV STACK,2 ADD STACK,STACK >C >C SET 'LAST-R,R JUMP ?PRG12 ?REP13: ZERO? C \?CND36 ZERO? LISTENING? /FALSE PRINTI "The " CALL DPRINT,METAL-DETECTOR PRINTR " makes no noise." ?CND36: PRINTI "The " CALL DPRINT,METAL-DETECTOR PRINTI " is clicking " GRTR? C,100 \?ELS51 PRINTI "extremely fast" JUMP ?CND49 ?ELS51: GRTR? C,75 \?ELS55 PRINTI "quickly" JUMP ?CND49 ?ELS55: GRTR? C,50 \?ELS59 PRINTI "moderately" JUMP ?CND49 ?ELS59: GRTR? C,25 \?ELS63 PRINTI "slowly" JUMP ?CND49 ?ELS63: PRINTI "occasionally" ?CND49: PRINTR "." ?ELS9: ZERO? LISTENING? /FALSE PRINTI "The " CALL DPRINT,METAL-DETECTOR PRINTR " makes no noise." .FUNCT COUNT-METAL,R,F,V=0 FIRST? R >F /?KLU13 ?KLU13: ?PRG1: ZERO? F \?ELS5 RETURN V ?ELS5: FSET? F,INVISIBLE \?THN8 EQUAL? F,PLAYER \?CND3 ?THN8: GETP F,P?STATION ADD V,STACK >V FIRST? F \?CND3 CALL COUNT-METAL,F ADD V,STACK >V ?CND3: NEXT? F >F /?KLU14 ?KLU14: JUMP ?PRG1 .FUNCT CRETIN-F EQUAL? PRSO,WINNER,ME \FALSE EQUAL? PRSA,V?EAT \?ELS6 PRINTR "Stick to stew." ?ELS6: EQUAL? PRSA,V?DRINK \?ELS10 PRINTR "Stick to grog." ?ELS10: EQUAL? PRSA,V?ALARM \?ELS14 PRINTR "Good morning!" ?ELS14: EQUAL? PRSA,V?KILL,V?ATTACK,V?MUNG \?ELS18 PRINTR "Although it's not hard, I can't make it that simple." ?ELS18: EQUAL? PRSA,V?FIND \?ELS22 PRINTR "Have you tried asking the parrot?" ?ELS22: EQUAL? PRSA,V?LAMP-ON,V?TAKE /?THN27 EQUAL? PRSA,V?GIVE \?ELS26 EQUAL? PRSO,ME \?ELS26 ?THN27: PRINTR "You romantic fool!" ?ELS26: EQUAL? PRSA,V?EXAMINE \?ELS34 PRINTR "You look like a diver." ?ELS34: EQUAL? PRSA,V?LOOK-UNDER \?ELS38 PRINTR "I think the center of the earth is down there somewhere." ?ELS38: EQUAL? PRSA,V?RUB \?ELS42 PRINTR "You're starting to rub me the wrong way." ?ELS42: EQUAL? PRSA,V?PLAY \?ELS46 PRINTR "Don't expect an Oscar." ?ELS46: EQUAL? PRSA,V?THROUGH,V?BOARD,V?CLIMB-ON \?ELS50 PRINTR "I'm not impressed." ?ELS50: EQUAL? PRSA,V?SHAKE,V?CROSS \?ELS54 PRINTR "I'm much too kind." ?ELS54: EQUAL? PRSA,V?DROP \?ELS58 PRINTR "Like a hot potato." ?ELS58: EQUAL? PRSA,V?FOLLOW \?ELS62 PRINTR "What makes you think you know where you're going?" ?ELS62: EQUAL? PRSA,V?SEARCH \?ELS66 PRINTR "Okay. I found one empty head but a strong heart." ?ELS66: EQUAL? PRSA,V?PUSH,V?SMELL \?ELS70 PRINTR "I'd rather not." ?ELS70: EQUAL? PRSA,V?THROW \?ELS74 PRINTR "For a loop?" ?ELS74: EQUAL? PRSA,V?ROB \FALSE PRINTR "You wouldn't get much from anyone that stupid." .FUNCT GLOBAL-SELF-F EQUAL? WINNER,PLAYER \?CND1 EQUAL? PRSI,GLOBAL-SELF \?CND4 SET 'PRSI,ME ?CND4: EQUAL? PRSO,GLOBAL-SELF \?CND1 SET 'PRSO,ME ?CND1: CALL PERFORM,PRSA,PRSO,PRSI RTRUE .FUNCT GLOBAL-ROOM-F,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?24 RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 CALL PERFORM,V?LOOK SET 'P-IT-OBJECT,GLOBAL-ROOM RTRUE ?ELS7: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?DROP \?ELS9 CALL DO-WALK,P?OUT RTRUE ?ELS9: EQUAL? PRSA,V?THROUGH,V?ENTER \?ELS11 CALL DO-WALK,P?IN RTRUE ?ELS11: EQUAL? PRSA,V?ATTACK,V?MUNG \?ELS13 PRINTR "It's sturdier than you give it credit for." ?ELS13: EQUAL? PRSA,V?UNLOCK \?ELS17 PRINTR "Please be more specific about what you want to unlock." ?ELS17: EQUAL? PRSA,V?PUT \FALSE CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT WINDOW-F EQUAL? HERE,BEDROOM \?ELS5 EQUAL? PRSA,V?LOOK-INSIDE \?ELS10 PRINTI "You see an " CALL DPRINT,FIELD PRINTR " beyond the alley where the terrible events of last night transpired." ?ELS10: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE PRINTR "It's stuck shut." ?ELS5: EQUAL? HERE,BANK \?ELS18 EQUAL? PRSA,V?EXAMINE \?ELS23 PRINTR "It is a barred window about chest-high behind which the teller transacts his business." ?ELS23: EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-INSIDE \FALSE PRINTR "There is a teller there." ?ELS18: EQUAL? HERE,MM-WHEELHOUSE,NW-WHEELHOUSE \FALSE EQUAL? PRSA,V?LOOK-INSIDE \FALSE PRINTR "You can see the ocean beyond the deck." .FUNCT IN-WINDOW-F,L,?TMP1 EQUAL? PRSA,V?LOOK-INSIDE \FALSE PRINTI "You see " LOC JOHNNY >L EQUAL? L,MM-WHEELHOUSE,NW-WHEELHOUSE \?CND8 GETP HERE,P?LINE >?TMP1 GETP L,P?LINE EQUAL? ?TMP1,STACK \?CND8 PRINTI "Johnny in " ?CND8: PRINTR "the wheelhouse." .FUNCT BEDROOM-DOOR-F EQUAL? PRSA,V?OPEN \?ELS5 FSET? BEDROOM-DOOR,OPENBIT \?ELS10 CALL TELL-ALREADY,STR?25 RTRUE ?ELS10: EQUAL? HERE,UPSTAIRS-HALLWAY \?ELS12 ZERO? BEDROOM-DOOR-LOCKED /?ELS12 PRINTR "It's locked." ?ELS12: FSET BEDROOM-DOOR,OPENBIT SET 'BEDROOM-DOOR-LOCKED,FALSE-VALUE IN? WEASEL,UPSTAIRS-HALLWAY \?ELS21 PRINTI "You open the door and see " CALL DPRINT,WEASEL PRINTI ". He says, ""Oh. Hi. I was just wonderin' if you were gonna be at the meetin' at " CALL DPRINT,SHANTY PRINTI "."" He turns and heads down the steps." CRLF CALL ESTABLISH-GOAL,WEASEL,SHANTY CALL INT,I-WEASEL-TO-BEDROOM PUT STACK,0,0 RTRUE ?ELS21: CALL TELL-NOW,BEDROOM-DOOR,STR?25 RTRUE ?ELS5: EQUAL? PRSA,V?CLOSE \?ELS27 FSET? BEDROOM-DOOR,OPENBIT /?ELS32 CALL TELL-ALREADY,STR?26 RTRUE ?ELS32: FCLEAR BEDROOM-DOOR,OPENBIT CALL TELL-NOW,BEDROOM-DOOR,STR?26 RTRUE ?ELS27: EQUAL? PRSA,V?UNLOCK \FALSE ZERO? BEDROOM-DOOR-LOCKED /?ELS41 IN? PLAYER,BEDROOM /?THN48 EQUAL? PRSI,KEY \?ELS47 ?THN48: SET 'BEDROOM-DOOR-LOCKED,FALSE-VALUE CALL TELL-NOW,BEDROOM-DOOR,STR?27 RSTACK ?ELS47: ZERO? PRSI /?ELS51 CALL TELL-YOU-CANT,STR?28 RSTACK ?ELS51: PRINTR "Not without the key." ?ELS41: CALL TELL-ALREADY,STR?27 RSTACK .FUNCT OCEAN-F,L CALL AIRTIGHT-ROOM? ZERO? STACK /?ELS5 PRINTR "There's no water in here." ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS14 PRINTR "There is water all around you." ?ELS14: PRINTI "The ocean looks choppy" ZERO? AT-SEA /?ELS23 PRINTI ". Whitecaps rise and fall around the boat." JUMP ?CND21 ?ELS23: PRINTI ", and you know about the dangerous currents here." ?CND21: CRLF RTRUE ?ELS9: EQUAL? PRSA,V?LISTEN \?ELS32 PRINTR "You hear the crashing of the waves." ?ELS32: EQUAL? PRSA,V?SWIM,V?THROUGH,V?BOARD \?ELS36 GETP HERE,P?LINE >L EQUAL? L,UNDERWATER-LINE-C \?ELS41 PRINTR "You're already in it!" ?ELS41: EQUAL? L,TRAWLER-LINE-C,SALVAGER-LINE-C /?THN46 EQUAL? HERE,WHARF,FERRY-LANDING \?ELS45 ?THN46: ZERO? AT-SEA /?ELS52 CALL PERFORM,V?DIVE RTRUE ?ELS52: CALL JIGS-UP,STR?29 RSTACK ?ELS45: CALL TELL-NO-SHORELINE RSTACK ?ELS36: EQUAL? PRSA,V?THROW,V?DROP \?ELS59 EQUAL? PRSI,OCEAN \?ELS59 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS66 CALL PERFORM,V?DROP,PRSO RTRUE ?ELS66: CALL TELL-NO-LITTER RSTACK ?ELS59: EQUAL? PRSA,V?SMELL \?ELS70 PRINTR "It smells very salty, which is what you might expect from the sea." ?ELS70: EQUAL? PRSA,V?TASTE,V?DRINK \?ELS74 GETP HERE,P?LINE GRTR? STACK,BACK-ALLEY-LINE-C /?THN80 EQUAL? HERE,FERRY-LANDING,WHARF \?ELS79 ?THN80: PRINTR "Bleahhhh! You spit it out immediately!" ?ELS79: CALL TELL-NO-SHORELINE RSTACK ?ELS74: EQUAL? PRSA,V?RUB \FALSE GETP HERE,P?LINE GRTR? STACK,BACK-ALLEY-LINE-C /?THN93 EQUAL? HERE,FERRY-LANDING,WHARF \?ELS92 ?THN93: PRINTR "It's wet." ?ELS92: CALL TELL-NO-SHORELINE RSTACK .FUNCT TELL-NO-SHORELINE CALL TELL-YOU-CANT,STR?30 RSTACK .FUNCT TELL-NO-LITTER PRINTR "It would spoil the beauty of the sea." .FUNCT STAIRS-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "The carpeted stairway leads " EQUAL? HERE,UPSTAIRS-HALLWAY \?ELS10 PRINTI "down" JUMP ?CND8 ?ELS10: EQUAL? HERE,RED-BOAR-INN \?CND8 PRINTI "up" ?CND8: PRINTR "." ?ELS5: EQUAL? PRSA,V?CLIMB-FOO \FALSE EQUAL? HERE,UPSTAIRS-HALLWAY \?ELS23 CALL V-CLIMB-UP,P?DOWN RTRUE ?ELS23: CALL V-CLIMB-UP RTRUE .FUNCT LADDER-TOP-F EQUAL? PRSA,V?CLIMB-FOO \FALSE CALL DO-WALK,P?DOWN RTRUE .FUNCT LADDER-BOTTOM-F EQUAL? PRSA,V?CLIMB-FOO \FALSE CALL DO-WALK,P?UP RTRUE .FUNCT RAILING-F EQUAL? PRSA,V?CLIMB-FOO \?ELS5 PRINTR "You immediately climb back down." ?ELS5: EQUAL? PRSA,V?LEAP,V?DISEMBARK \FALSE CALL PERFORM,V?DIVE RTRUE .FUNCT BUNKS-F EQUAL? PRSA,V?SLEEP,V?BOARD \?ELS5 CALL TELL-BAD-SHAPE RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 PRINTR "These stacks of bunks look as though they were never comfortable. The work of time and the sea have made them fairly decrepit, incapable of supporting much weight." ?ELS7: EQUAL? PRSA,V?MUNG \FALSE PRINTR "Some pieces fall away, but the structure holds together." .FUNCT TELL-BAD-SHAPE PRINTR "They don't look as if they could support your weight." .FUNCT TIME-PRINT,NUM,HR,PM=0 DIV NUM,60 >HR GRTR? HR,12 \?ELS3 SUB HR,12 >HR SET 'PM,TRUE-VALUE JUMP ?CND1 ?ELS3: EQUAL? HR,12 \?ELS5 SET 'PM,TRUE-VALUE JUMP ?CND1 ?ELS5: ZERO? HR \?CND1 SET 'HR,12 ?CND1: PRINTN HR PRINTI ":" MOD NUM,60 >HR LESS? HR,10 \?CND10 PRINTI "0" ?CND10: PRINTN HR PRINTI " " ZERO? PM /?ELS23 PUSH STR?34 JUMP ?CND19 ?ELS23: PUSH STR?35 ?CND19: PRINT STACK RTRUE .FUNCT TABLE-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?36 RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 PRINTR "The table has a variety of forms and brochures you find boring." ?ELS7: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE EQUAL? PRSI,PSEUDO-OBJECT \FALSE PRINTI "A bank official scurries out, picks up the " CALL DPRINT,PRSO PRINTR ", and hands it to you, pointing out that the table is for bank business only." .FUNCT LIGHTHOUSE-LOCK-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?37 RTRUE ?ELS5: EQUAL? PRSA,V?PICK \?ELS7 PRINTR "You try for a while, but the lock won't give." ?ELS7: EQUAL? PRSA,V?UNLOCK \?ELS11 CALL TELL-NO-KEY RTRUE ?ELS11: EQUAL? PRSA,V?MUNG \?ELS13 PRINTR "You find that the door and lock withstand your attempts." ?ELS13: EQUAL? PRSA,V?LOCK \FALSE CALL TELL-ALREADY,STR?38 RTRUE .FUNCT WHEEL-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?39 RTRUE ?ELS5: EQUAL? PRSA,V?SPIN,V?TURN \FALSE IN? JOHNNY,HERE \?ELS12 CALL DPRINT,JOHNNY PRINTR " glares at you. You decide to leave the piloting to the captain." ?ELS12: PRINTR "The wheel spins." .FUNCT BOLT-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?40 RTRUE ?ELS5: PRINTR "The bolts are rusted firmly into place." .FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3 EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3 PRINTR "Those things aren't here." ?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS9 SET 'TBL,P-PRSO JUMP ?CND1 ?ELS9: SET 'TBL,P-PRSI SET 'PRSO?,FALSE-VALUE ?CND1: ZERO? PRSO? /?ELS14 EQUAL? PRSA,V?CLIMB-UP,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT /?THN19 EQUAL? PRSA,V?FOLLOW,V?FIND,V?EXAMINE /?THN19 EQUAL? PRSA,V?$CALL,V?WHAT,V?WAIT-FOR /?THN19 EQUAL? PRSA,V?THROUGH,V?MAKE,V?GIVE /?THN19 EQUAL? PRSA,V?WALK-TO \?CND12 ?THN19: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ ZERO? OBJ /FALSE EQUAL? OBJ,NOT-HERE-OBJECT \TRUE JUMP ?CND12 ?ELS14: EQUAL? PRSA,V?SGIVE,V?ASK-FOR,V?ASK-ABOUT /?THN34 EQUAL? PRSA,V?TELL \?CND12 ?THN34: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ ZERO? OBJ /FALSE EQUAL? OBJ,NOT-HERE-OBJECT \TRUE ?CND12: EQUAL? PRSA,V?$CALL \?ELS46 CALL V-CALL-LOSE SET 'CLOCK-WAIT,FALSE-VALUE JUMP ?CND44 ?ELS46: EQUAL? WINNER,ADVENTURER \?ELS48 CALL TELL-YOU-CANT,STR?41,FALSE-VALUE CALL NOT-HERE-PRINT,PRSO? PRINTI " here." CRLF JUMP ?CND44 ?ELS48: CALL START-SENTENCE,WINNER PRINTI " seems confused. ""I don't see any" CALL NOT-HERE-PRINT,PRSO? PRINTI " here!""" CRLF ?CND44: SET 'P-MOBY-FOUND,FALSE-VALUE SET 'PRSA,FALSE-VALUE SET 'PRSO,FALSE-VALUE SET 'PRSI,FALSE-VALUE RETURN 2 .FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ,CTR,PER,?TMP1 CALL MOBY-FIND,TBL >M-F GRTR? M-F,1 \?CND1 GET TBL,1 GETP STACK,P?GLOBAL >OBJ ZERO? OBJ /?CND1 SET 'M-F,1 SET 'P-MOBY-FOUND,OBJ ?CND1: EQUAL? 1,M-F \?ELS10 ZERO? PRSO? /?ELS13 EQUAL? PRSA,V?TELL \?ELS17 EQUAL? WINNER,PLAYER \?ELS17 FSET? P-MOBY-FOUND,VICBIT \?ELS17 SET 'P-CONT,FALSE-VALUE CALL TELL-NOT-HERE-TALK RTRUE ?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS21 FSET? P-MOBY-FOUND,PERSON \?ELS24 CALL META-LOC,PLAYER GETP STACK,P?CORRIDOR >?TMP1 LOC P-MOBY-FOUND GETP STACK,P?CORRIDOR BAND ?TMP1,STACK ZERO? STACK /?ELS24 PRINTI "You can see " CALL DPRINT,P-MOBY-FOUND PRINTR " in the distance." ?ELS24: EQUAL? PRSO,MCGINTY \?ELS30 IN? PLAYER,BACK-ALLEY-2 \?ELS30 IN? MCGINTY,MCGINTY-HQ \?ELS30 PRINTI "Looking through the window, you see " CALL DPRINT,MCGINTY PRINTR " in his office." ?ELS30: CALL GLOBAL-NOT-HERE-PRINT,PRSO RTRUE ?ELS21: SET 'PRSO,P-MOBY-FOUND JUMP ?CND11 ?ELS13: SET 'PRSI,P-MOBY-FOUND ?CND11: ZERO? P-XADJ /?ELS43 ZERO? P-XNAM \?ELS43 SET 'P-NONOUN,TRUE-VALUE RFALSE ?ELS43: SET 'P-NONOUN,FALSE-VALUE RFALSE ?ELS10: ZERO? PRSO? \?ELS49 EQUAL? PRSA,V?ASK-ABOUT /?THN55 EQUAL? PRSA,V?TELL \?ELS54 EQUAL? PRSO,ME \?ELS54 ?THN55: EQUAL? PRSO,ME \?ELS61 EQUAL? WINNER,PLAYER \?ELS64 ZERO? QCONTEXT /?ELS64 EQUAL? HERE,QCONTEXT-ROOM \?ELS64 SET 'PER,QCONTEXT JUMP ?CND59 ?ELS64: SET 'PER,WINNER JUMP ?CND59 ?ELS61: SET 'PER,PRSO ?CND59: FSET? PER,VICBIT \?ELS73 CALL SAY-CONFUSED,PER,PRSO? RTRUE ?ELS73: CALL SUDDENLY-REALIZE-TALKING,PER RTRUE ?ELS54: FSET? PRSO,VICBIT \?ELS77 CALL SAY-CONFUSED,PRSO,PRSO? RSTACK ?ELS77: PRINTI "You wouldn't find any" CALL NOT-HERE-PRINT,PRSO? PRINTR " there." ?ELS49: RETURN NOT-HERE-OBJECT .FUNCT GLOBAL-NOT-HERE-PRINT,OBJ ZERO? P-MULT /?ELS3 INC 'P-NOT-HERE JUMP ?CND1 ?ELS3: CALL TELL-YOU-CANT,STR?41,FALSE-VALUE EQUAL? OBJ,PRSO \?ELS9 CALL PRSO-PRINT JUMP ?CND7 ?ELS9: CALL PRSI-PRINT ?CND7: PRINTI " here." CRLF ?CND1: SET 'P-WON,FALSE-VALUE RTRUE .FUNCT SAY-CONFUSED,PER,PRSO? CALL START-SENTENCE,PER PRINTI " looks confused. ""I have no idea what" CALL NOT-HERE-PRINT,PRSO? PRINTR " you're talking about!""" .FUNCT NOT-HERE-PRINT,PRSO?,?TMP1 ZERO? P-OFLAG /?ELS3 ZERO? P-XADJ /?CND5 PRINTI " " PRINTB P-XADJN ?CND5: ZERO? P-XNAM /?CND1 PRINTI " " PRINTB P-XNAM JUMP ?CND1 ?ELS3: ZERO? PRSO? /?ELS18 GET P-ITBL,P-NC1 >?TMP1 GET P-ITBL,P-NC1L CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE JUMP ?CND1 ?ELS18: GET P-ITBL,P-NC2 >?TMP1 GET P-ITBL,P-NC2L CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE ?CND1: SET 'P-WON,FALSE-VALUE RETURN P-WON .FUNCT TELL-YOU-CANT,STR,FINISH=1 PRINTI "You can't " PRINT STR ZERO? FINISH /FALSE CRLF RTRUE .FUNCT TELL-ROPE-HIGH CALL TELL-CANT-REACH,STR?42 RSTACK .FUNCT TELL-CANT-REACH,STR CALL TELL-YOU-CANT,STR?43,FALSE-VALUE PRINT STR PRINTR "." .FUNCT TELL-NO-GO,PRINT? ZERO? PRINT? /FALSE CALL TELL-YOU-CANT,STR?44 RSTACK .FUNCT TELL-NO-NO CALL TELL-YOU-CANT,STR?45 RSTACK .FUNCT TELL-NO-AFFORD CALL TELL-YOU-CANT,STR?46 RSTACK .FUNCT TELL-TOO-BIG CALL TELL-YOU-CANT,STR?47 RSTACK .ENDI