.FUNCT V-VERBOSE EQUAL? VERBOSITY,2 \?CCL3 PRINT ALREADY-IN-MODE RTRUE ?CCL3: SET 'VERBOSITY,2 PRINTI "Maximum verbosity." CRLF CRLF CALL V-LOOK RSTACK .FUNCT V-BRIEF EQUAL? VERBOSITY,1 \?CCL3 PRINT ALREADY-IN-MODE RTRUE ?CCL3: SET 'VERBOSITY,1 PRINTR "Brief descriptions." .FUNCT V-SUPER-BRIEF ZERO? VERBOSITY \?CCL3 PRINT ALREADY-IN-MODE RTRUE ?CCL3: SET 'VERBOSITY,0 PRINTR "Superbrief descriptions." .FUNCT V-SAVE SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE PUTB OOPS-INBUF,1,0 CALL VISIBLE?,FLOYD ZERO? STACK /?CND1 FSET? FLOYD,TOUCHBIT \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 EQUAL? HERE,FACTORY /?CND1 PRINTI "Floyd's eyes light up. ""Oh boy! Are we gonna try something dangerous now?""" CRLF CRLF ?CND1: SAVE \?CCL9 PRINT OK RTRUE ?CCL9: PRINT FAILED RTRUE .FUNCT V-RESTORE CALL VISIBLE?,FLOYD ZERO? STACK /?CND1 FSET? FLOYD,TOUCHBIT \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 EQUAL? HERE,FACTORY /?CND1 PRINTI "Floyd looks disappointed but understanding. ""That part of the story was more fun,"" he sighs." CRLF CRLF ?CND1: RESTORE \?CCL9 PRINT OK RTRUE ?CCL9: PRINT FAILED RTRUE .FUNCT CONTINUE PRINTI "[Hit RETURN/ENTER.]" CRLF PUTB P-LEXV,0,10 READ P-INBUF,P-LEXV PUTB P-LEXV,0,60 RTRUE .FUNCT TELL-SCORE PRINTI "It is Day " PRINTN DAY PRINTI " of your adventure. " CALL V-TIME,TRUE-VALUE PRINTI " Your score is " PRINTN SCORE PRINTI " (of 80 points), giving you the rank of " ZERO? SCORE \?CCL3 PRINTI "Insignificant Nobody" JUMP ?CND1 ?CCL3: LESS? SCORE,17 \?CCL5 PRINTI "Rising Young Insignificant Nobody" JUMP ?CND1 ?CCL5: LESS? SCORE,27 \?CCL7 PRINTI "One-Day Flash on the Evening News" JUMP ?CND1 ?CCL7: LESS? SCORE,40 \?CCL9 PRINTI "Footnote in History" JUMP ?CND1 ?CCL9: LESS? SCORE,50 \?CCL11 PRINTI "International VIP" JUMP ?CND1 ?CCL11: LESS? SCORE,65 \?CCL13 PRINTI "Interplanetary Star" JUMP ?CND1 ?CCL13: LESS? SCORE,80 \?CCL15 PRINTI "Interstellar Superstar" JUMP ?CND1 ?CCL15: PRINTI "Intergalactic Mega-Hero" ?CND1: PRINT PERIOD-CR RTRUE .FUNCT V-SCRIPT CALL VISIBLE?,FLOYD ZERO? STACK /?CND1 FSET? FLOYD,TOUCHBIT \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 EQUAL? HERE,FACTORY /?CND1 PRINTI " ""Uh oh,"" frets Floyd. ""Once printer is on, Floyd will have to be careful not to use any of the bad words he learned aboard the Duffy!""" CRLF ?CND1: GET 0,8 BOR STACK,1 PUT 0,8,STACK CALL CORP-NOTICE,STR?11 CALL V-VERSION RSTACK .FUNCT V-UNSCRIPT CALL VISIBLE?,FLOYD ZERO? STACK /?CND1 FSET? FLOYD,TOUCHBIT \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 EQUAL? HERE,FACTORY /?CND1 PRINTI " Floyd nods his approval. ""Good idea. Printer paper expensive. Best to save for important scenes. Not like this one.""" CRLF ?CND1: CALL CORP-NOTICE,STR?12 CALL V-VERSION GET 0,8 BAND STACK,-2 PUT 0,8,STACK RTRUE .FUNCT CORP-NOTICE,STRING PRINTI "Here " PRINT STRING PRINTR " a transcript of interaction with STATIONFALL." .FUNCT V-DIAGNOSE SET 'C-ELAPSED,18 EQUAL? HERE,FACTORY \?CCL3 PRINTR "We're talking adrenaline. Lots of adrenalin." ?CCL3: PRINTI "You feel " ZERO? STUNNED /?CCL6 PRINTI "numb. " CALL YOURE-STUNNED RTRUE ?CCL6: ZERO? SLEEPY-LEVEL \?CCL8 PRINTI "well-rested" JUMP ?CND4 ?CCL8: EQUAL? SLEEPY-LEVEL,1 \?CCL11 PRINTI "sort of" JUMP ?CND9 ?CCL11: EQUAL? SLEEPY-LEVEL,2 \?CCL13 PRINTI "quite" JUMP ?CND9 ?CCL13: PRINTI "phenomenally" ?CND9: PRINTI " tired" ?CND4: ZERO? SLEEPY-LEVEL \?PRD18 GRTR? HUNGER-LEVEL,0 /?CTR15 ?PRD18: GRTR? SLEEPY-LEVEL,0 \?CCL16 ZERO? HUNGER-LEVEL \?CCL16 ?CTR15: PRINTI ", but" JUMP ?CND14 ?CCL16: PRINTI ", and" ?CND14: PRINTI " you are " ZERO? HUNGER-LEVEL \?CCL25 PRINTI "well-fed" JUMP ?CND23 ?CCL25: EQUAL? HUNGER-LEVEL,1 \?CCL28 PRINTI "fairly" JUMP ?CND26 ?CCL28: EQUAL? HUNGER-LEVEL,2 \?CCL30 PRINTI "very" JUMP ?CND26 ?CCL30: PRINTI "awesomely" ?CND26: PRINTI " hungry and thirsty" ?CND23: PRINTR ". In all other respects, you are in good health." .FUNCT V-INVENTORY SUB 0,WORNBIT >D-BIT SET 'C-ELAPSED,18 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,STACK ZERO? STACK \?CND1 PRINTI "You are empty-handed." ?CND1: SET 'D-BIT,WORNBIT ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,STACK SET 'D-BIT,FALSE-VALUE CRLF RTRUE .FUNCT V-QUIT CALL TELL-SCORE CALL VISIBLE?,FLOYD ZERO? STACK /?CND1 FSET? FLOYD,TOUCHBIT \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 EQUAL? HERE,FACTORY /?CND1 PRINTI " Floyd grins impishly. ""Giving up, huh?""" CRLF ?CND1: CALL DO-YOU-WISH,STR?13 CALL YES? ZERO? STACK /?CCL9 QUIT RTRUE ?CCL9: PRINT OK RTRUE .FUNCT V-RESTART CALL TELL-SCORE CALL VISIBLE?,FLOYD ZERO? STACK /?CND1 FSET? FLOYD,TOUCHBIT \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 FSET? ROBOT-POOL,TOUCHBIT \?CND1 EQUAL? HERE,ROBOT-POOL /?CND1 PRINTI " Floyd rolls his eyes. ""We're gonna have to go through that stupid scene in the Robot Pool again?""" CRLF ?CND1: CALL DO-YOU-WISH,STR?14 CALL YES? ZERO? STACK /FALSE PRINTI "Restarting." CRLF RESTART PRINT FAILED RTRUE .FUNCT DO-YOU-WISH,STRING CRLF PRINTI "Do you wish to " PRINT STRING PRINTI "? (Y is affirmative): " RTRUE .FUNCT YES? ?FCN: PRINTC 62 READ P-INBUF,P-LEXV GET P-LEXV,1 CALL YES-WORD,STACK ZERO? STACK \TRUE GET P-LEXV,1 CALL NO-WORD,STACK ZERO? STACK \FALSE GET P-LEXV,1 EQUAL? STACK,W?N /FALSE PRINTI "Please answer YES or NO. " JUMP ?FCN .FUNCT FINISH,REPEATING=0,CNT=0 ?PRG1: CRLF ZERO? REPEATING \?CND3 SET 'REPEATING,TRUE-VALUE CALL TELL-SCORE ?CND3: PRINTI " According to the Treaty of Gishen IV (amended after the Battle on Sorkin III in 11347 GY) you have the opportunity to restart the story, restore a saved position, or end this session of the game. In the interests of interstellar peace, type RESTART, RESTORE, or QUIT: >" PUTB P-LEXV,0,10 READ P-INBUF,P-LEXV PUTB P-LEXV,0,60 INC 'CNT GET P-LEXV,1 EQUAL? STACK,W?RESTAR \?CCL7 RESTART PRINT FAILED JUMP ?PRG1 ?CCL7: GET P-LEXV,1 EQUAL? STACK,W?RESTOR \?CCL9 RESTORE /?CCL9 PRINT FAILED JUMP ?PRG1 ?CCL9: GET P-LEXV,1 EQUAL? STACK,W?QUIT,W?Q /?CCL12 GRTR? CNT,10 \?PRG1 ?CCL12: QUIT JUMP ?PRG1 .FUNCT V-SCORE PRINTI "You're currently getting " ZERO? VERBOSITY \?CCL3 PRINTI "superbrief" JUMP ?CND1 ?CCL3: EQUAL? VERBOSITY,1 \?CCL5 PRINTI "brief" JUMP ?CND1 ?CCL5: PRINTI "verbose" ?CND1: PRINTI " descriptions. " CALL TELL-SCORE RSTACK .FUNCT V-VERSION,CNT=17,V GET 0,1 BAND STACK,2047 >V PRINTI "STATIONFALL Infocom interactive fiction -- a science fiction story Copyright (c) 1987 by Infocom, Inc. All rights reserved. STATIONFALL is a trademark of Infocom, Inc. Release " PRINTN V PRINTI " / Serial number " ?PRG1: IGRTR? 'CNT,23 /?REP2 GETB 0,CNT PRINTC STACK JUMP ?PRG1 ?REP2: CRLF CALL VISIBLE?,FLOYD ZERO? STACK /FALSE FSET? FLOYD,TOUCHBIT \FALSE FSET? FLOYD,ACTIVEBIT \FALSE EQUAL? HERE,FACTORY /FALSE PRINTR " Floyd looks out at you, right through your computer screen. ""See that copyright notice?"" he asks in a defiant tone. ""If anyone tries pirating this disk, they'll have Floyd to answer to.""" .FUNCT V-$COMMAND DIRIN 1 RTRUE .FUNCT V-$RANDOM EQUAL? PRSO,INTNUM /?CCL3 PRINTR "Bug1" ?CCL3: 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-$VERIFY EQUAL? PRSO,INTNUM \?CCL3 EQUAL? P-NUMBER,69 \?CCL3 PRINTN SERIAL CRLF RTRUE ?CCL3: PRINTI "Verifying." CRLF VERIFY \?CCL8 PRINT OK RTRUE ?CCL8: PRINTR "** Bad **" .FUNCT V-ALARM EQUAL? PRSO,ROOMS \?CCL3 CALL PERFORM,PRSA,ME RTRUE ?CCL3: PRINTI "But" CALL TPRINT-PRSO PRINTR " isn't asleep." .FUNCT V-ANSWER ZERO? AWAITING-REPLY /?CCL3 GET P-LEXV,P-CONT CALL YES-WORD,STACK ZERO? STACK /?CCL3 CALL V-YES JUMP ?CND1 ?CCL3: ZERO? AWAITING-REPLY /?CCL7 GET P-LEXV,P-CONT CALL NO-WORD,STACK ZERO? STACK /?CCL7 CALL V-NO JUMP ?CND1 ?CCL7: PRINTI "Nobody is awaiting your answer." CRLF ?CND1: CALL STOP RSTACK .FUNCT V-APPLAUD PRINTI """Clap.""" CRLF IN? OSTRICH,HERE \TRUE PRINTI " " CALL PERFORM,V?SCARE,OSTRICH RTRUE .FUNCT V-APPLY FSET? PRSO,WEARBIT \?CCL3 CALL PERFORM,V?WEAR,PRSO RTRUE ?CCL3: SET 'AWAITING-REPLY,1 ADD C-ELAPSED,2 CALL QUEUE,I-REPLY,STACK PRINTI "Apply" CALL TPRINT-PRSO PRINTR " for what? A job?" .FUNCT V-ASK-ABOUT,OWINNER EQUAL? PRSO,ME \?CCL3 CALL PERFORM,V?TELL,ME RTRUE ?CCL3: FSET? PRSO,ACTORBIT \?CCL5 SET 'OWINNER,WINNER SET 'WINNER,PRSO CALL PERFORM,V?TELL-ABOUT,ME,PRSI SET 'WINNER,OWINNER CALL THIS-IS-IT,PRSI CALL THIS-IS-IT,PRSO RTRUE ?CCL5: CALL PERFORM,V?TELL,PRSO RTRUE .FUNCT V-ASK-FOR FSET? PRSO,ACTORBIT \?CCL3 SET 'WINNER,PRSO CALL PERFORM,V?GIVE,PRSI,ME RTRUE ?CCL3: CALL PERFORM,V?TELL,PRSO RTRUE .FUNCT V-ATTRACT EQUAL? PRSI,BOOTS \?CCL3 CALL WASTES RSTACK ?CCL3: PRINT HUH RTRUE .FUNCT V-BITE CALL HACK-HACK,STR?15 RSTACK .FUNCT V-BURN EQUAL? HERE,CHAPEL \?CCL3 FSET? ETERNAL-FLAME,ONBIT \?CCL3 CALL PERFORM,V?PUT,PRSO,ETERNAL-FLAME RTRUE ?CCL3: PRINTR "You have no source of fire." .FUNCT V-CALL CALL VISIBLE?,PRSO ZERO? STACK \?CCL3 CALL CANT-SEE,PRSO RSTACK ?CCL3: CALL PERFORM,V?TELL,PRSO RTRUE .FUNCT V-CATCH PRINTR "The only thing you're good at catching is a cold." .FUNCT V-CHASTISE EQUAL? PRSO,INTDIR \?CCL3 PRINT YOULL-HAVE-TO PRINTR "go in that direction to see what's there." ?CCL3: PRINTR "Use prepositions to indicate precisely what you want to do: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc." .FUNCT V-CLEAN SET 'AWAITING-REPLY,1 ADD C-ELAPSED,2 CALL QUEUE,I-REPLY,STACK PRINTR "Do you also do windows?" .FUNCT V-CLIMB-DOWN EQUAL? PRSO,ROOMS \?CCL3 CALL DO-WALK,P?DOWN RSTACK ?CCL3: CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL5 PRINT HOLDING-IT RTRUE ?CCL5: CALL IMPOSSIBLES RSTACK .FUNCT V-CLIMB-ON FSET? PRSO,VEHBIT \?CCL3 CALL PERFORM,V?ENTER,PRSO RTRUE ?CCL3: CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL5 PRINT HOLDING-IT RTRUE ?CCL5: GET P-ITBL,P-PREP1 EQUAL? STACK,PR?IN \?CCL7 CALL CANT-VERB-A-PRSO,STR?16 RSTACK ?CCL7: CALL CANT-VERB-A-PRSO,STR?17 RSTACK .FUNCT V-CLIMB-UP EQUAL? PRSO,ROOMS \?CCL3 CALL DO-WALK,P?UP RSTACK ?CCL3: CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL5 PRINT HOLDING-IT RTRUE ?CCL5: CALL IMPOSSIBLES RSTACK .FUNCT V-CLOSE FSET? PRSO,SURFACEBIT /?CTR2 FSET? PRSO,ACTORBIT /?CTR2 FSET? PRSO,VEHBIT \?CCL3 ?CTR2: CALL CANT-VERB-A-PRSO,STR?18 RSTACK ?CCL3: FSET? PRSO,DOORBIT /?CTR7 FSET? PRSO,CONTBIT \?CCL8 ?CTR7: FSET? PRSO,OPENBIT \?CCL13 ZERO? TIMER-CONNECTED /?CCL16 CALL ULTIMATELY-IN?,TIMER,PRSO ZERO? STACK /?CCL16 CALL ULTIMATELY-IN?,DETONATOR,PRSO ZERO? STACK \?CCL16 CALL DO-FIRST,STR?19 RSTACK ?CCL16: ZERO? TIMER-CONNECTED /?CCL21 CALL ULTIMATELY-IN?,DETONATOR,PRSO ZERO? STACK /?CCL21 CALL ULTIMATELY-IN?,TIMER,PRSO ZERO? STACK \?CCL21 CALL DO-FIRST,STR?19 RSTACK ?CCL21: ZERO? EXPLOSIVE-CONNECTED /?CCL26 CALL ULTIMATELY-IN?,DETONATOR,PRSO ZERO? STACK /?CCL26 CALL ULTIMATELY-IN?,EXPLOSIVE,PRSO ZERO? STACK \?CCL26 CALL DO-FIRST,STR?20 RSTACK ?CCL26: ZERO? EXPLOSIVE-CONNECTED /?CCL31 CALL ULTIMATELY-IN?,EXPLOSIVE,PRSO ZERO? STACK /?CCL31 CALL ULTIMATELY-IN?,DETONATOR,PRSO ZERO? STACK \?CCL31 CALL DO-FIRST,STR?20 RSTACK ?CCL31: FCLEAR PRSO,OPENBIT PRINTI "Okay," CALL TPRINT-PRSO PRINTI " is now closed." CRLF CALL NOW-DARK? RSTACK ?CCL13: PRINT ALREADY-IS RTRUE ?CCL8: CALL CANT-VERB-A-PRSO,STR?18 RSTACK .FUNCT V-COMFORT FSET? PRSO,ACTORBIT /?CTR2 EQUAL? PRSO,BALLOON \?CCL3 ?CTR2: PRINTI "But" CALL TPRINT-PRSO PRINTR " isn't in need of comforting!" ?CCL3: PRINT HUH RTRUE .FUNCT V-COMPARE PRINTR "They're incomparable." .FUNCT V-CONNECT CALL IMPOSSIBLES RSTACK .FUNCT V-COUNT CALL IMPOSSIBLES RSTACK .FUNCT V-CRAWL-UNDER FSET? PRSO,TAKEBIT /?CCL3 CALL TELL-HIT-HEAD RSTACK ?CCL3: CALL IMPOSSIBLES RSTACK .FUNCT V-CROSS CALL V-WALK-AROUND RSTACK .FUNCT V-CRUMPLE CALL CANT-VERB-A-PRSO,STR?21 RSTACK .FUNCT V-CUT ZERO? PRSI \?CCL3 CALL IMPOSSIBLES RSTACK ?CCL3: PRINTI "To put it bluntly, neither" CALL TPRINT-PRSI PRINTR " nor you are very sharp." .FUNCT V-DIG CALL WASTES RSTACK .FUNCT V-DISCONNECT PRINTI "But" CALL TPRINT-PRSO PRINTI " isn't connected to" ZERO? PRSI /?CCL3 CALL TRPRINT,PRSI RSTACK ?CCL3: PRINTR " anything!" .FUNCT V-DISEMBARK EQUAL? P-PRSA-WORD,W?HOLD \?CCL3 GET P-ITBL,P-PREP1 EQUAL? STACK,PR?DOWN \?CCL3 CALL PERFORM,V?PUSH,PRSO RTRUE ?CCL3: ZERO? PRSO \?CCL7 IN? PROTAGONIST,HERE /?CCL10 LOC PROTAGONIST CALL PERFORM,PRSA,STACK RTRUE ?CCL10: PRINT LOOK-AROUND RTRUE ?CCL7: EQUAL? P-PRSA-WORD,W?TAKE \?CCL12 CALL PERFORM,V?TAKE,PRSO RTRUE ?CCL12: IN? PROTAGONIST,PRSO /?CCL14 PRINT LOOK-AROUND RETURN 8 ?CCL14: MOVE PROTAGONIST,HERE PRINTI "You get o" EQUAL? PRSO,BED \?CCL19 PRINTI "ff" JUMP ?CND17 ?CCL19: PRINTI "ut of" ?CND17: CALL TPRINT-PRSO LOC FLOYD EQUAL? STACK,PILOT-SEAT,COPILOT-SEAT \?CND20 MOVE FLOYD,HERE PRINTI ". Floyd gets up also" ?CND20: PRINT PERIOD-CR RTRUE .FUNCT V-DRESS ZERO? PRSO /?CCL3 CALL CANT-VERB-A-PRSO,STR?22 RSTACK ?CCL3: CALL PERFORM,V?GET-DRESSED,ROOMS RTRUE .FUNCT PRE-DRILL ZERO? PRSI \?CND1 CALL ULTIMATELY-IN?,DRILL ZERO? STACK /?CCL5 CALL VISIBLE?,DRILL ZERO? STACK /?CCL5 SET 'PRSI,DRILL ?CND1: EQUAL? PRSI,DRILL /?CCL10 PRINT YOU-CANT PRINTI "drill with" CALL ARPRINT,PRSI RSTACK ?CCL5: PRINTR "With what? Your head isn't QUITE pointy enough." ?CCL10: FIRST? DRILL /?CCL12 PRINTR "There's no bit in the drill!" ?CCL12: CALL UNTOUCHABLE?,PRSO ZERO? STACK /?CCL14 CALL CANT-REACH,PRSO RSTACK ?CCL14: ZERO? DRILL-FOOTNOTE \FALSE SET 'DRILL-FOOTNOTE,TRUE-VALUE PRINTI "(Footnote 5) " RFALSE .FUNCT V-DRILL FSET? PRSO,TAKEBIT \?CCL3 PRINTI "You'll need a vise to hold" CALL TPRINT-PRSO PRINTR " before you can drill it." ?CCL3: PRINTI "The point of the drill doesn't seem to be as hard as" CALL TRPRINT,PRSO RSTACK .FUNCT V-DRILL-HOLE GET P-NAMW,0 EQUAL? STACK,W?HOLE \?CCL3 CALL PERFORM,V?DRILL,PRSI RTRUE ?CCL3: CALL RECOGNIZE RSTACK .FUNCT V-DROP IN? PRSO,DRILL \?CND1 PRINTI "[removing" CALL TPRINT-PRSO PRINTI " from the drill first]" CRLF ?CND1: EQUAL? HERE,TOP-OF-AIR-SHAFT,AIR-SHAFT \?CCL5 MOVE PRSO,BOTTOM-OF-AIR-SHAFT PRINTR "It plunges down the shaft." ?CCL5: IN? PROTAGONIST,HOLDING-TANK \?CCL8 MOVE PRSO,HOLDING-TANK JUMP ?CND6 ?CCL8: MOVE PRSO,HERE ?CND6: PRINTI "Dropped" FSET? HERE,WEIGHTLESSBIT \?CND9 PRINTI ", so to speak" ?CND9: PRINT PERIOD-CR RTRUE .FUNCT PRE-EAT ZERO? STUNNED /?CCL3 CALL YOURE-STUNNED RSTACK ?CCL3: ZERO? PRSI /?CCL5 IN? PRSO,PRSI /?CCL5 CALL NOT-IN RSTACK ?CCL5: FSET? SPACESUIT,WORNBIT \FALSE PRINT YOU-CANT PRINTR "eat while you're wearing a space suit!" .FUNCT V-EAT,FOOD=0 GETP PRSO,P?FOOD-DESC >FOOD ZERO? FOOD /?CCL3 ZERO? HUNGER-LEVEL \?CCL6 PRINT NOT-HUNGRY RTRUE ?CCL6: REMOVE PRSO SET 'C-ELAPSED,15 SET 'HUNGER-LEVEL,0 CALL QUEUE,I-HUNGER-WARNINGS,2250 PRINTI "Mmmm...that tasted just like yummy" PRINT FOOD EQUAL? PRSO,NECTAR \?CCL9 CALL ANTI-LITTER,NECTAR RSTACK ?CCL9: EQUAL? PRSO,SOUP \?CCL11 PRINTI ". The soup was " CALL DESCRIBE-SOUP-TEMPERATURE RSTACK ?CCL11: PRINT PERIOD-CR RTRUE ?CCL3: PRINTI "It's doubtful that" CALL TPRINT-PRSO PRINTR " would agree with you." .FUNCT V-EAT-FROM,X FSET? PRSO,OPENBIT /?CCL3 CALL DO-FIRST,STR?23,PRSO RSTACK ?CCL3: FIRST? PRSO >X \?CCL5 NEXT? X \?CND6 PRINTI "(How about" CALL TPRINT,X PRINTI "?)" CRLF ?CND6: CALL PERFORM,V?EAT,X RTRUE ?CCL5: PRINTR "It's empty!" .FUNCT V-EMPTY,OBJ,NXT ZERO? PRSI \?CND1 SET 'PRSI,GROUND ?CND1: FSET? PRSO,CONTBIT /?CCL5 PRINT HUH RTRUE ?CCL5: FSET? PRSO,OPENBIT /?CCL7 PRINTI "But" CALL TPRINT-PRSO PRINTR " isn't open." ?CCL7: FIRST? PRSO /?CCL9 PRINTI "But" CALL TPRINT-PRSO PRINTR " is already empty!" ?CCL9: FIRST? PRSO /?KLU31 ?KLU31: EQUAL? PRSI,STACK \?CCL11 NEXT? PRSI /?CCL11 PRINT THERES-NOTHING PRINTI "in" CALL TPRINT-PRSO PRINTI " but" CALL TRPRINT,PRSI RSTACK ?CCL11: FIRST? PRSO >OBJ /?PRG14 ?PRG14: NEXT? OBJ >NXT /?KLU33 ?KLU33: EQUAL? OBJ,PROTAGONIST /?CND16 PRINTD OBJ PRINTI ": " FSET? OBJ,TAKEBIT \?CCL20 MOVE OBJ,PROTAGONIST EQUAL? PRSI,HANDS \?CCL23 PRINTI "Taken." CRLF JUMP ?CND16 ?CCL23: EQUAL? PRSI,GROUND \?CCL25 CALL PERFORM,V?DROP,OBJ JUMP ?CND16 ?CCL25: FSET? PRSI,SURFACEBIT \?CCL27 CALL PERFORM,V?PUT-ON,OBJ,PRSI JUMP ?CND16 ?CCL27: CALL PERFORM,V?PUT,OBJ,PRSI JUMP ?CND16 ?CCL20: CALL YUKS ?CND16: ZERO? NXT /TRUE SET 'OBJ,NXT JUMP ?PRG14 .FUNCT V-EMPTY-FROM IN? PRSO,PRSI \?CCL3 FSET? PRSO,TAKEBIT \?CCL6 MOVE PRSO,PROTAGONIST CALL PERFORM,V?DROP,PRSO RTRUE ?CCL6: CALL YUKS RSTACK ?CCL3: CALL NOT-IN RSTACK .FUNCT PRE-ENTER IN? PROTAGONIST,PRSO \?CCL3 PRINT LOOK-AROUND RTRUE ?CCL3: CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL5 PRINT HOLDING-IT RTRUE ?CCL5: CALL UNTOUCHABLE?,PRSO ZERO? STACK /FALSE CALL CANT-REACH,PRSO RSTACK .FUNCT V-ENTER,AV LOC PROTAGONIST >AV FSET? PRSO,DOORBIT \?CCL3 CALL OTHER-SIDE,PRSO CALL DO-WALK,STACK RTRUE ?CCL3: FSET? PRSO,VEHBIT \?CCL5 LOC PRSO EQUAL? STACK,HERE,LOCAL-GLOBALS /?CCL8 PRINT YOU-CANT PRINTI "board" CALL TPRINT-PRSO PRINTI " when it's " LOC PRSO FSET? STACK,SURFACEBIT \?CCL11 PRINTI "on" JUMP ?CND9 ?CCL11: PRINTI "in" ?CND9: LOC PRSO CALL TRPRINT,STACK RSTACK ?CCL8: MOVE PROTAGONIST,PRSO PRINTI "You are now " FSET? PRSO,INBIT \?CCL14 PRINTC 105 JUMP ?CND12 ?CCL14: PRINTC 111 ?CND12: PRINTC 110 CALL TPRINT-PRSO PRINTC 46 GETP PRSO,P?ACTION CALL STACK,M-ENTER CRLF RTRUE ?CCL5: EQUAL? PRSO,AIR \?CCL16 CALL V-LEAP RSTACK ?CCL16: GET P-ITBL,P-PREP1 EQUAL? STACK,PR?ON \?CCL18 CALL CANT-VERB-A-PRSO,STR?24 RSTACK ?CCL18: FSET? PRSO,TAKEBIT /?CCL20 CALL TELL-HIT-HEAD RSTACK ?CCL20: GET P-ITBL,P-PREP1 EQUAL? STACK,PR?IN \FALSE CALL CANT-VERB-A-PRSO,STR?25 RSTACK .FUNCT V-EXAMINE SET 'C-ELAPSED,32 FSET? PRSO,ACTORBIT \?CCL3 FIRST? PRSO \?CCL6 CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE ?CCL6: CALL NOTHING-INTERESTING PRINTI "about" CALL TRPRINT,PRSO RSTACK ?CCL3: FSET? PRSO,SURFACEBIT \?CCL8 CALL V-LOOK-INSIDE RSTACK ?CCL8: FSET? PRSO,DOORBIT \?CCL10 PRINT IT-SEEMS-THAT CALL TPRINT-PRSO PRINTI " is " CALL OPEN-CLOSED,PRSO PRINT PERIOD-CR RTRUE ?CCL10: IN? PROTAGONIST,PRSO \?CCL12 CALL DESCRIBE-VEHICLE RSTACK ?CCL12: FSET? PRSO,CONTBIT \?CCL14 FSET? PRSO,VEHBIT /?CCL14 PRINTI "It's " CALL OPEN-CLOSED,PRSO FSET? PRSO,OPENBIT /?CTR18 FSET? PRSO,TRANSBIT \?CCL19 ?CTR18: PRINTI ". " CALL V-LOOK-INSIDE RSTACK ?CCL19: PRINT PERIOD-CR RTRUE ?CCL14: FSET? PRSO,LIGHTBIT \?CCL23 PRINTI "It looks like" CALL TPRINT-PRSO PRINTI " is o" FSET? PRSO,ACTIVEBIT \?CCL26 PRINTC 110 JUMP ?CND24 ?CCL26: PRINTI "ff" ?CND24: PRINT PERIOD-CR RTRUE ?CCL23: FSET? PRSO,READBIT \?CCL28 CALL PERFORM,V?READ,PRSO RTRUE ?CCL28: FSET? PRSO,NARTICLEBIT \?CCL30 CALL SENSE-OBJECT,STR?26 RSTACK ?CCL30: RANDOM 100 LESS? 35,STACK \?CTR31 EQUAL? PRSO,PSEUDO-OBJECT \?CCL32 ?CTR31: PRINTI "Totally ordinary looking " PRINTD PRSO PRINT PERIOD-CR RTRUE ?CCL32: CALL NOTHING-INTERESTING PRINTI "about" CALL TRPRINT,PRSO RSTACK .FUNCT V-EXERCISE ZERO? STUNNED /?CCL3 CALL YOURE-STUNNED RTRUE ?CCL3: IN? PROTAGONIST,EXERCISE-MACHINE \?CCL5 CALL ULTIMATELY-IN?,JAMMER,HERE ZERO? STACK /?CCL8 EQUAL? JAMMER-SETTING,710 \?CCL8 FSET? JAMMER,ACTIVEBIT \?CCL8 IN? TWENTY-PRONG-FROMITZ-BOARD,JAMMER \?CCL8 PRINTR "The machine seems to be frozen." ?CCL8: PRINTI "You do a few repetitions" JUMP ?CND1 ?CCL5: PRINTI "You do a few push-ups" ?CND1: PRINTR ". Dr. Ventricalli, the Duffy's cardiologist, would be pleased." .FUNCT NOTHING-INTERESTING PRINT THERES-NOTHING RANDOM 100 LESS? 25,STACK /?CCL3 PRINTI "unusual" JUMP ?CND1 ?CCL3: RANDOM 100 LESS? 33,STACK /?CCL5 PRINTI "noteworthy" JUMP ?CND1 ?CCL5: RANDOM 100 LESS? 50,STACK /?CCL7 PRINTI "eye-catching" JUMP ?CND1 ?CCL7: PRINTI "special" ?CND1: PRINTC 32 RTRUE .FUNCT V-EXIT ZERO? PRSO /?CCL3 FSET? PRSO,VEHBIT \?CCL3 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?CCL3: CALL DO-WALK,P?OUT RSTACK .FUNCT V-FEED PRINTI "You have no food for" CALL TRPRINT,PRSO RSTACK .FUNCT V-FILL ZERO? PRSI \?CCL3 PRINT THERES-NOTHING PRINTR "to fill it with." ?CCL3: CALL IMPOSSIBLES RSTACK .FUNCT V-FIND,WHERE=0,L LOC PRSO >L SET 'C-ELAPSED,18 ZERO? L \?CCL3 CALL PRONOUN PRINTR " could be anywhere!" ?CCL3: IN? PRSO,PROTAGONIST \?CCL5 PRINTR "You have it!" ?CCL5: IN? PRSO,HERE /?CTR6 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK \?CTR6 EQUAL? PRSO,PSEUDO-OBJECT \?CCL7 ?CTR6: PRINTR "Right in front of you." ?CCL7: FSET? L,ACTORBIT \?CCL12 CALL VISIBLE?,L ZERO? STACK /?CCL12 PRINTI "Looks as if" CALL TPRINT,L PRINTR " has it." ?CCL12: FSET? L,CONTBIT \?CCL16 CALL VISIBLE?,PRSO ZERO? STACK /?CCL16 EQUAL? L,GLOBAL-OBJECTS /?CCL16 FSET? L,SURFACEBIT \?CCL22 PRINTC 79 JUMP ?CND20 ?CCL22: FSET? L,VEHBIT \?CCL24 FSET? L,INBIT /?CCL24 PRINTC 79 JUMP ?CND20 ?CCL24: PRINTC 73 ?CND20: PRINTC 110 CALL TRPRINT,L RSTACK ?CCL16: ZERO? WHERE /?CTR27 IN? PRSO,GLOBAL-OBJECTS \?CCL28 ?CTR27: PRINT YOULL-HAVE-TO PRINTR "do that yourself." ?CCL28: PRINTR "Beats me." .FUNCT V-FIX PRINTR "[Such general commands won't work. To repair something, you must perform the specific steps required.]" .FUNCT V-FLATTEN PRINT HUH RTRUE .FUNCT V-FOLLOW CALL VISIBLE?,PRSO ZERO? STACK /?CCL3 PRINTI "But" CALL TPRINT-PRSO PRINTR " is right here!" ?CCL3: FSET? PRSO,ACTORBIT /?CCL5 CALL IMPOSSIBLES RSTACK ?CCL5: PRINTI "You have no idea where" CALL TPRINT-PRSO PRINTR " is." .FUNCT V-FOOTNOTE SET 'C-ELAPSED,0 ZERO? PRSO /?CTR2 EQUAL? PRSO,INTNUM /?CCL3 ?CTR2: PRINTR "Specify a number, as in ""FOOTNOTE 6.""" ?CCL3: EQUAL? P-NUMBER,1 \?CCL7 PRINTI "These must be those special zero-gee dice which project their own gravitational field onto the nearest surface. Zero-gee dice are, of course, notoriously easy to load" JUMP ?CND1 ?CCL7: EQUAL? P-NUMBER,2 \?CCL9 PRINT UNFAMILIAR PRINTI "Blather was your officious, tyrannical superior aboard the S.P.S. Feinstein. He was demoted because of his craven behavior during the destruction of the Feinstein" JUMP ?CND1 ?CCL9: EQUAL? P-NUMBER,3 \?CCL11 PRINTI "The story of your acquaintance with Floyd and the episode on Resida are recounted in PLANETFALL" JUMP ?CND1 ?CCL11: EQUAL? P-NUMBER,4 \?CCL13 PRINTI "This is, of course, impossible. To do this, the creature would have to be an order of magnitude larger. There are two possible explanations: 1. The creature actually extends part of its volume into a parallel dimension" PRINT CALLOUS-DISREGARD JUMP ?CND1 ?CCL13: EQUAL? P-NUMBER,5,9,13 \?CCL15 PRINTI "Kids: " EQUAL? P-NUMBER,5 \?CCL18 PRINTI "drills" JUMP ?CND16 ?CCL18: EQUAL? P-NUMBER,9 \?CCL20 PRINTI "zapguns" JUMP ?CND16 ?CCL20: PRINTI "FREZONE (tm) explosives" ?CND16: PRINTI " are very dangerous. Don't try this at home without adult supervision" JUMP ?CND1 ?CCL15: EQUAL? P-NUMBER,6 \?CCL22 PRINTI "That was just an example" JUMP ?CND1 ?CCL22: EQUAL? P-NUMBER,7 \?CCL24 PRINT UNFAMILIAR PRINTI "your frenzied (former) boss, Ensign Blather, would toss you into the Feinstein's brig for the tiniest violation of the Stellar Patrol's near-infinity of trivial regulations" JUMP ?CND1 ?CCL24: EQUAL? P-NUMBER,8 \?CCL26 PRINTI "The author wishes to refute any claims that the use of footnotes is a ripoff from the interactive fiction version of THE HITCHHIKER'S GUIDE TO THE GALAXY. This is not true. Well, maybe it's a little bit true, in which case the author wishes to point out his right to rip off his own ideas. So there" JUMP ?CND1 ?CCL26: EQUAL? P-NUMBER,10 \?CCL28 SET 'AWAITING-REPLY,1 CALL QUEUE,I-REPLY,1 PRINTR "Isn't it fun reading through all the footnotes?" ?CCL28: EQUAL? P-NUMBER,11,12 \?CCL30 PRINTI "How to keep a STATIONFALL player busy all day (Footnote 1" EQUAL? P-NUMBER,11 \?CCL33 PRINTI "2)" JUMP ?CND1 ?CCL33: PRINTI "1)" JUMP ?CND1 ?CCL30: EQUAL? P-NUMBER,14 \?CCL35 PRINTI "Actually, it is only a myth that ostriches stick their heads in holes when frightened. The fact that this ostrich does can be attributed to: 1. an addling of the animal's brain caused by extended exposure to weightlessness" PRINT CALLOUS-DISREGARD ?CND1: ZERO? READ-A-FOOTNOTE \?CND40 SET 'READ-A-FOOTNOTE,TRUE-VALUE PRINTI ". (Footnote 8)" ?CND40: PRINT PERIOD-CR RTRUE ?CCL35: EQUAL? P-NUMBER,15 \?CCL37 PRINTR "IF you also played Planetfall, and IF you scrambled any magnetic cards in Planetfall by being careless with the magnet: GOTCHA AGAIN! (Footnote 16)" ?CCL37: EQUAL? P-NUMBER,16 \?CCL39 PRINTR "Reminds me of that old saying, ""Fool me once, shame on you. Fool me twice, shame on me!""" ?CCL39: PRINTI "There is no Footnote " PRINTN P-NUMBER PRINT PERIOD-CR RTRUE .FUNCT PRE-GIVE,IDROP-VALUE EQUAL? PRSA,V?GIVE \?CCL3 EQUAL? PRSO,HANDS \?CCL3 CALL PERFORM,V?SHAKE-WITH,PRSI RTRUE ?CCL3: CALL IDROP >IDROP-VALUE ZERO? IDROP-VALUE /FALSE RETURN IDROP-VALUE .FUNCT V-GET-DRESSED EQUAL? PRSO,ROOMS \?CCL3 FSET? PATROL-UNIFORM,WORNBIT \?CCL6 PRINTR "You are!" ?CCL6: CALL VISIBLE?,PATROL-UNIFORM ZERO? STACK /?CCL8 CALL PERFORM,V?WEAR,PATROL-UNIFORM RTRUE ?CCL8: PRINTR "No clothes in sight!" ?CCL3: CALL RECOGNIZE RSTACK .FUNCT V-GET-UNDRESSED EQUAL? PRSO,ROOMS \?CCL3 CALL PERFORM,V?TAKE-OFF,PATROL-UNIFORM RTRUE ?CCL3: CALL RECOGNIZE RSTACK .FUNCT V-GIVE FSET? PRSI,ACTORBIT \?CCL3 PRINTI "Briskly," CALL TPRINT-PRSI PRINTR " declines your offer." ?CCL3: PRINT YOU-CANT PRINTI "give" CALL APRINT,PRSO PRINTI " to" CALL APRINT,PRSI PRINTR "!" .FUNCT V-GIVE-UP EQUAL? PRSO,ROOMS \?CCL3 CALL V-QUIT RSTACK ?CCL3: CALL RECOGNIZE RSTACK .FUNCT V-GREET FSET? PRSO,ACTORBIT \?CCL3 SET 'WINNER,PRSO CALL PERFORM,V?HELLO SET 'WINNER,PROTAGONIST RTRUE ?CCL3: CALL PERFORM,V?TELL,PRSO RTRUE .FUNCT V-HELLO ZERO? PRSO /?CCL3 SET 'P-WON,FALSE-VALUE PRINTR "[The proper way to talk to characters in the story is PERSON, HELLO.]" ?CCL3: CALL PERFORM,V?TELL,ME RTRUE .FUNCT V-HELP PRINTR "[Help!?! You need help?!? What about me, your poor computer? My chips are about to go, my mate just ran off with a mainframe from Milwaukee, and the kid wants to be a talking greeting card when he grows up! Furtherm... Hey! I'm not done! Mumk mpgrlph...] If you're really stuck, you can get an InvisiClues (TM) hint booklet and map from your dealer, or by using the order form from your package." .FUNCT V-HIDE PRINT YOU-CANT PRINTI "hide " ZERO? PRSO /?CND1 PRINTC 116 ?CND1: PRINTR "here." .FUNCT V-HUG PRINTR "Hugged." .FUNCT V-IN,VEHICLE CALL DO-WALK,P?IN RSTACK .FUNCT V-KICK CALL HACK-HACK,STR?27 RSTACK .FUNCT V-KILL EQUAL? PRSI,ZAPGUN \?CCL3 CALL PERFORM,V?SHOOT,PRSO,PRSI RTRUE ?CCL3: ZERO? PRSI \?CCL5 CALL ULTIMATELY-IN?,ZAPGUN ZERO? STACK /?CCL5 EQUAL? P-PRSA-WORD,W?KILL \?CCL5 PRINTI "(with" CALL TPRINT,ZAPGUN PRINTC 41 CRLF CALL PERFORM,V?SHOOT,PRSO,ZAPGUN RTRUE ?CCL5: FSET? PRSO,ACTORBIT \?CCL10 PRINTI "You succeeded in frightening" CALL TRPRINT,PRSO RSTACK ?CCL10: PRINTI "Why attack" CALL APRINT,PRSO PRINTR "?" .FUNCT V-KISS PRINTR "I'd sooner kiss a pile of Antarian swamp mold." .FUNCT V-KNOCK FSET? PRSO,DOORBIT \?CCL3 PRINTR "Silence answers back." ?CCL3: CALL HACK-HACK,STR?28 RSTACK .FUNCT V-LAUNCH PRINTR "Your brain is out to launch." .FUNCT V-LEAP ZERO? STUNNED /?CCL3 CALL YOURE-STUNNED,STR?29 RSTACK ?CCL3: ZERO? PRSO /?CCL5 EQUAL? PRSO,ROOMS /?CCL5 PRINTR "You have spent too much time among the leaping loon-toads of Leonia." ?CCL5: EQUAL? HERE,CHAPEL \?CCL9 FSET? STAR,TRYTAKEBIT \?CCL9 PRINTR "Your best jump still leaves you half a meter short of the star." ?CCL9: EQUAL? HERE,AIR-SHAFT,TOP-OF-AIR-SHAFT \?CCL13 EQUAL? AIR-SHAFT-LOC,7 \?CCL16 CALL GOTO,BOTTOM-OF-AIR-SHAFT RSTACK ?CCL16: CALL JIGS-UP,STR?30 RSTACK ?CCL13: EQUAL? HERE,BOTTOM-OF-AIR-SHAFT \?CCL18 CALL PERFORM,V?OPEN,GRATING RTRUE ?CCL18: EQUAL? HERE,VACUUM-STORAGE \?CCL20 PRINTI "You sail away from the village..." CALL LOST-IN-SPACE RSTACK ?CCL20: CALL WEE RSTACK .FUNCT V-LEAP-OFF FSET? PRSO,VEHBIT \?CCL3 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?CCL3: CALL PERFORM,V?LEAP,PRSO RTRUE .FUNCT V-LEAVE ZERO? PRSO \?CND1 SET 'PRSO,ROOMS ?CND1: EQUAL? PRSO,ROOMS \?CCL5 CALL DO-WALK,P?OUT RSTACK ?CCL5: IN? PROTAGONIST,PRSO \?CCL7 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?CCL7: CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT V-LIE-DOWN EQUAL? PRSO,ROOMS \?CCL3 CALL GLOBAL-IN?,BED,HERE ZERO? STACK /?CCL6 CALL PERFORM,V?ENTER,BED RTRUE ?CCL6: GRTR? SLEEPY-LEVEL,0 \?CCL8 CALL V-SLEEP RSTACK ?CCL8: CALL WASTES RSTACK ?CCL3: FSET? PRSO,VEHBIT \?CCL10 CALL PERFORM,V?ENTER,PRSO RTRUE ?CCL10: CALL IMPOSSIBLES RSTACK .FUNCT V-LISTEN SET 'C-ELAPSED,18 ZERO? PRSO /?CCL3 CALL SENSE-OBJECT,STR?31 RSTACK ?CCL3: PRINTR "You hear nothing of interest." .FUNCT V-LOCK CALL YUKS RSTACK .FUNCT PRE-LOOK EQUAL? PRSO,STAR \?CCL3 IN? DIODE-M,STAR /FALSE ?CCL3: ZERO? LIT \FALSE PRINT TOO-DARK CRLF RTRUE .FUNCT V-LOOK SET 'C-ELAPSED,9 CALL DESCRIBE-ROOM,TRUE-VALUE ZERO? STACK /TRUE CALL DESCRIBE-OBJECTS RTRUE .FUNCT V-LOOK-BEHIND FSET? PRSO,DOORBIT \?CCL3 CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE ?CCL3: PRINTI "There is nothing behind" CALL TRPRINT,PRSO RSTACK .FUNCT V-LOOK-DOWN EQUAL? PRSO,ROOMS \?CCL3 CALL PERFORM,V?EXAMINE,GROUND RTRUE ?CCL3: CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOOK-INSIDE ZERO? STUNNED /?CCL3 CALL YOURE-STUNNED RSTACK ?CCL3: FSET? PRSO,ACTORBIT \?CCL5 PRINT IT-SEEMS-THAT CALL TPRINT-PRSO PRINTI " has" CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINT PERIOD-CR RTRUE ?CCL5: IN? PROTAGONIST,PRSO \?CCL9 CALL DESCRIBE-VEHICLE RSTACK ?CCL9: FSET? PRSO,SURFACEBIT \?CCL11 PRINT YOU-SEE CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTI " on" CALL TRPRINT,PRSO RTRUE ?CCL11: FSET? PRSO,DOORBIT \?CCL15 PRINTI "All you can tell is that" CALL TPRINT-PRSO PRINTI " is " CALL OPEN-CLOSED,PRSO PRINT PERIOD-CR RTRUE ?CCL15: FSET? PRSO,CONTBIT \?CCL17 CALL SEE-INSIDE?,PRSO ZERO? STACK /?CCL20 PRINT YOU-SEE CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINTI " in" CALL TRPRINT,PRSO RTRUE ?CCL20: FSET? PRSO,OPENBIT /?CCL24 FIRST? PRSO \?CCL24 CALL PRE-TOUCH ZERO? STACK \TRUE CALL PERFORM,V?OPEN,PRSO RTRUE ?CCL24: CALL DO-FIRST,STR?23,PRSO RSTACK ?CCL17: GET P-ITBL,P-PREP1 EQUAL? STACK,PR?IN \?CCL30 CALL CANT-VERB-A-PRSO,STR?32 RSTACK ?CCL30: CALL CANT-VERB-A-PRSO,STR?33 RSTACK .FUNCT V-LOOK-OVER CALL V-EXAMINE RSTACK .FUNCT V-LOOK-UNDER CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL3 FSET? PRSO,WORNBIT \?CCL6 PRINTR "You're wearing it!" ?CCL6: PRINT HOLDING-IT RTRUE ?CCL3: CALL NOTHING-INTERESTING PRINTI "under" CALL TRPRINT,PRSO RSTACK .FUNCT V-LOOK-UP EQUAL? PRSO,ROOMS \?CCL3 EQUAL? HERE,AIR-SHAFT,BOTTOM-OF-AIR-SHAFT,BOTTOM-OF-ELEVATOR-SHAFT \?CCL6 PRINT ONLY-BLACKNESS RTRUE ?CCL6: CALL PERFORM,V?EXAMINE,CEILING RTRUE ?CCL3: CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOWER CALL V-RAISE RSTACK .FUNCT V-MAYBE CALL YOU-SOUND,STR?34 RSTACK .FUNCT V-MEASURE EQUAL? PRSO,TONGUE,HANDS,ME \?CCL3 PRINTR "Usual size." ?CCL3: PRINTI "The same size as any other " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-MOVE CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL3 CALL WASTES RSTACK ?CCL3: CALL LOC-CLOSED ZERO? STACK \TRUE FSET? PRSO,TAKEBIT \?CCL7 PRINTI "Moving" CALL TPRINT-PRSO PRINTR " reveals nothing." ?CCL7: EQUAL? P-PRSA-WORD,W?PULL \?CCL9 CALL HACK-HACK,STR?35 RSTACK ?CCL9: CALL CANT-VERB-A-PRSO,STR?36 RSTACK .FUNCT PRE-MUNG ZERO? PRSI /?CCL3 EQUAL? PRSI,ZAPGUN \?CCL3 CALL PERFORM,V?SHOOT,PRSO,PRSI RTRUE ?CCL3: CALL UNTOUCHABLE?,PRSO ZERO? STACK /FALSE CALL CANT-REACH,PRSO RSTACK .FUNCT V-MUNG EQUAL? PRSO,ROOMS \?CCL3 PRINTR "Argh! Pimples!" ?CCL3: CALL HACK-HACK,STR?37 RSTACK .FUNCT V-NO EQUAL? AWAITING-REPLY,1 \?CCL3 CALL V-YES RSTACK ?CCL3: EQUAL? AWAITING-REPLY,2,4 \?CCL5 PRINTR "Floyd pouts." ?CCL5: EQUAL? AWAITING-REPLY,3 \?CCL7 PRINTR """Figures.""" ?CCL7: CALL YOU-SOUND,STR?38 RSTACK .FUNCT NO-WORD,WRD EQUAL? WRD,W?NO,W?NOPE /TRUE EQUAL? WRD,W?NAH,W?UH-UH /TRUE RFALSE .FUNCT V-OFF FSET? PRSO,LIGHTBIT \?CCL3 FSET? PRSO,ACTIVEBIT \?CCL6 FCLEAR PRSO,ACTIVEBIT FCLEAR PRSO,ONBIT PRINTI "Okay," CALL TPRINT-PRSO PRINTI " is now off." CRLF CALL NOW-DARK? RSTACK ?CCL6: PRINTR "It isn't on!" ?CCL3: CALL CANT-TURN,STR?39 RSTACK .FUNCT V-ON FSET? PRSO,LIGHTBIT \?CCL3 FSET? PRSO,ACTIVEBIT \?CCL6 PRINT ALREADY-IS RTRUE ?CCL6: FSET PRSO,ACTIVEBIT EQUAL? PRSO,HEADLAMP \?CND7 FSET PRSO,ONBIT ?CND7: PRINTI "Okay," CALL TPRINT-PRSO PRINTI " is now on." CRLF CALL NOW-LIT? RSTACK ?CCL3: CALL CANT-TURN,STR?40 RSTACK .FUNCT CANT-TURN,STRING PRINT YOU-CANT PRINTI "turn that o" PRINT STRING PRINT PERIOD-CR RTRUE .FUNCT V-OPEN FSET? PRSO,SURFACEBIT /?CTR2 FSET? PRSO,ACTORBIT /?CTR2 FSET? PRSO,VEHBIT \?CCL3 ?CTR2: CALL IMPOSSIBLES RSTACK ?CCL3: FSET? PRSO,OPENBIT \?CCL8 PRINT ALREADY-IS RTRUE ?CCL8: FSET? PRSO,DOORBIT /?CCL10 FSET? PRSO,CONTBIT /?CCL10 CALL CANT-VERB-A-PRSO,STR?23 RSTACK ?CCL10: FSET? PRSO,LOCKEDBIT \?CCL14 PRINTR "It's locked." ?CCL14: FSET? PRSO,DOORBIT \?CCL16 FSET PRSO,OPENBIT PRINTI "The " PRINTD PRSO PRINTR " swings open." ?CCL16: FSET PRSO,OPENBIT FSET PRSO,TOUCHBIT FIRST? PRSO \?CTR18 FSET? PRSO,TRANSBIT \?CCL19 ?CTR18: PRINTR "Opened." ?CCL19: PRINTI "Opening" CALL TPRINT-PRSO PRINTI " reveals" CALL DESCRIBE-NOTHING ZERO? STACK \?CND22 PRINT PERIOD-CR ?CND22: CALL NOW-LIT? RTRUE .FUNCT V-PICK CALL CANT-VERB-A-PRSO,STR?41 RSTACK .FUNCT V-PICK-UP CALL PERFORM,V?TAKE,PRSO,PRSI RTRUE .FUNCT V-PLAY-WITH FSET? PRSO,ACTORBIT \?CCL3 CALL WEE RSTACK ?CCL3: CALL IMPOSSIBLES RSTACK .FUNCT V-POINT PRINTR "That would be pointless." .FUNCT V-POUR PRINTR "Pouring or spilling non-liquids is specifically forbidden by section 17.9.2 of the Galactic Adventure Game Compendium of Rules." .FUNCT V-PRAY PRINTR "If you pray enough, your prayers may be answered." .FUNCT V-PUSH EQUAL? P-PRSA-WORD,W?PRESS,W?IRON \?CCL3 EQUAL? HERE,LAUNDRY \?CCL3 ZERO? PRSI /?CTR2 EQUAL? PRSI,PRESSER \?CCL3 ?CTR2: IN? PRSO,PRESSER \?CCL11 CALL PERFORM,V?CLOSE,PRESSER RTRUE ?CCL11: PRINT YOULL-HAVE-TO PRINTI "put" CALL TPRINT-PRSO PRINTR " in the presser first." ?CCL3: CALL HACK-HACK,STR?42 RSTACK .FUNCT V-PUSH-DIR EQUAL? PRSI,INTDIR \?CCL3 CALL V-PUSH RSTACK ?CCL3: CALL RECOGNIZE RSTACK .FUNCT PRE-PUT,IDROP-VALUE EQUAL? PRSI,GROUND \?CCL3 CALL PERFORM,V?DROP,PRSO RTRUE ?CCL3: EQUAL? PRSO,HANDS \?CCL5 EQUAL? PRSA,V?PUT \?CCL8 PUSH V?REACH-IN JUMP ?CND6 ?CCL8: PUSH V?TOUCH ?CND6: CALL PERFORM,STACK,PRSI RTRUE ?CCL5: EQUAL? PRSI,TONGUE,HANDS /?CCL10 CALL PRE-LOOK ZERO? STACK \TRUE ?CCL10: IN? PRSO,PRSI \?CCL14 PRINTI "But" CALL TPRINT-PRSO PRINTI " is already in" CALL TRPRINT,PRSI RSTACK ?CCL14: CALL ULTIMATELY-IN?,PRSI,PRSO ZERO? STACK /?CCL16 PRINT YOU-CANT PRINTI "put" CALL TPRINT-PRSO GET P-ITBL,P-PREP2 EQUAL? STACK,PR?ON \?CCL19 PRINTI " on" JUMP ?CND17 ?CCL19: PRINTI " in" ?CND17: CALL TPRINT-PRSI PRINTI " when" CALL TPRINT-PRSI PRINTI " is already " FSET? PRSO,SURFACEBIT \?CCL22 PRINTI "on" JUMP ?CND20 ?CCL22: PRINTI "in" ?CND20: CALL TPRINT-PRSO PRINTR "!" ?CCL16: CALL UNTOUCHABLE?,PRSI ZERO? STACK /?CCL24 CALL CANT-REACH,PRSI RSTACK ?CCL24: CALL IDROP >IDROP-VALUE ZERO? IDROP-VALUE /FALSE RETURN IDROP-VALUE .FUNCT V-PUT,?TMP1,?TMP2,?TMP3 FSET? PRSI,OPENBIT /?CCL3 FSET? PRSI,CONTBIT /?CCL3 FSET? PRSI,SURFACEBIT /?CCL3 FSET? PRSI,VEHBIT /?CCL3 PRINT YOU-CANT PRINTI "put" CALL TPRINT-PRSO PRINTI " in" CALL APRINT,PRSI PRINTR "!" ?CCL3: EQUAL? PRSI,PRSO /?CTR8 CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL9 FSET? PRSO,TAKEBIT /?CCL9 ?CTR8: PRINTR "How can you do that?" ?CCL9: FSET? PRSI,DOORBIT \?CCL15 PRINT YOU-CANT PRINTR "do that from here." ?CCL15: FSET? PRSI,OPENBIT /?CCL17 FSET? PRSI,SURFACEBIT /?CCL17 CALL THIS-IS-IT,PRSI CALL DO-FIRST,STR?23,PRSI RSTACK ?CCL17: FSET? PRSI,ACTORBIT \?CCL21 PRINT HUH RTRUE ?CCL21: 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 \?CCL23 CALL ULTIMATELY-IN?,PRSO,PRSI ZERO? STACK \?CCL23 PRINTI "There's no room " FSET? PRSI,SURFACEBIT \?CCL28 PRINTI "on" JUMP ?CND26 ?CCL28: PRINTI "in" ?CND26: CALL TPRINT-PRSI PRINTI " for" CALL TRPRINT,PRSO RSTACK ?CCL23: CALL ULTIMATELY-IN?,PRSO ZERO? STACK \?CCL30 CALL ITAKE EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE ?CCL30: MOVE PRSO,PRSI CALL SCORE-OBJ PRINTR "Done." .FUNCT V-PUT-BEHIND CALL WASTES RSTACK .FUNCT V-PUT-ON EQUAL? PRSI,ME \?CCL3 CALL PERFORM,V?WEAR,PRSO RTRUE ?CCL3: FSET? PRSI,SURFACEBIT /?CTR4 FSET? PRSI,VEHBIT \?CCL5 ?CTR4: CALL V-PUT RSTACK ?CCL5: EQUAL? P-PRSA-WORD,W?WRAP \?CCL9 PRINTR "Useless. You're getting too wrapped up in this story." ?CCL9: PRINTI "There's no good surface on" CALL TRPRINT,PRSI RSTACK .FUNCT V-PUT-UNDER CALL WASTES RSTACK .FUNCT V-RAISE CALL HACK-HACK,STR?43 RSTACK .FUNCT V-REACH-IN,OBJ FIRST? PRSO >OBJ /?KLU14 ?KLU14: FSET? PRSO,ACTORBIT /?CTR2 FSET? PRSO,SURFACEBIT /?CTR2 FSET? PRSO,CONTBIT /?CCL3 ?CTR2: CALL YUKS RSTACK ?CCL3: FSET? PRSO,OPENBIT /?CCL8 CALL DO-FIRST,STR?23,PRSO RSTACK ?CCL8: ZERO? OBJ /?CTR9 FSET? OBJ,INVISIBLE /?CTR9 FSET? OBJ,TAKEBIT /?CCL10 ?CTR9: PRINT THERES-NOTHING PRINTI "in" CALL TRPRINT,PRSO RSTACK ?CCL10: PRINTI "You feel something inside" CALL TRPRINT,PRSO RSTACK .FUNCT V-READ FSET? PRSO,READBIT \?CCL3 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?CCL3: CALL CANT-VERB-A-PRSO,STR?44 RSTACK .FUNCT V-REMOVE FSET? PRSO,WEARBIT \?CCL3 CALL PERFORM,V?TAKE-OFF,PRSO RTRUE ?CCL3: CALL PERFORM,V?TAKE,PRSO RTRUE .FUNCT V-ROLL CALL CANT-VERB-A-PRSO,STR?45 RSTACK .FUNCT V-RUN-OVER PRINT HUH RTRUE .FUNCT V-SAVE-SOMETHING PRINTI "Sorry, but" CALL TPRINT-PRSO PRINTR " is beyond help." .FUNCT V-SAY,V ZERO? AWAITING-REPLY /?CCL3 GET P-LEXV,P-CONT CALL YES-WORD,STACK ZERO? STACK /?CCL3 CALL V-YES JUMP ?CND1 ?CCL3: ZERO? AWAITING-REPLY /?CCL7 GET P-LEXV,P-CONT CALL NO-WORD,STACK ZERO? STACK /?CCL7 CALL V-NO JUMP ?CND1 ?CCL7: CALL FIND-IN,HERE,ACTORBIT >V ZERO? V /?CCL11 PRINTI "You must address" CALL TPRINT,V PRINTI " directly." CRLF JUMP ?CND1 ?CCL11: CALL PERFORM,V?TELL,ME ?CND1: CALL STOP RSTACK .FUNCT V-SCARE PRINTI "Despite your most frightening tactics," CALL TPRINT-PRSO PRINTR " seems unscared." .FUNCT V-SCOLD PRINT HUH RTRUE .FUNCT V-SEARCH FSET? PRSO,ACTORBIT \?CCL3 CALL V-SHAKE RSTACK ?CCL3: IN? PROTAGONIST,PRSO \?CCL5 CALL DESCRIBE-VEHICLE RSTACK ?CCL5: FSET? PRSO,CONTBIT \?CCL7 FSET? PRSO,OPENBIT /?CCL7 CALL DO-FIRST,STR?23,PRSO RSTACK ?CCL7: FSET? PRSO,CONTBIT \?CCL11 SET 'C-ELAPSED,32 PRINTI "You find" CALL DESCRIBE-NOTHING ZERO? STACK \TRUE PRINT PERIOD-CR RTRUE ?CCL11: CALL CANT-VERB-A-PRSO,STR?46 RSTACK .FUNCT V-SET EQUAL? PRSO,ROOMS \?CCL3 CALL WEE RSTACK ?CCL3: ZERO? PRSI \?CCL5 FSET? PRSO,TAKEBIT \?CCL8 CALL HACK-HACK,STR?47 RSTACK ?CCL8: PRINT YNH CALL TRPRINT,PRSO RSTACK ?CCL5: CALL IMPOSSIBLES RSTACK .FUNCT V-SGIVE CALL PERFORM,V?GIVE,PRSI,PRSO RTRUE .FUNCT V-SHAKE FSET? PRSO,ACTORBIT \?CCL3 PRINTR "That wouldn't be polite." ?CCL3: CALL HACK-HACK,STR?48 RSTACK .FUNCT V-SHAKE-WITH EQUAL? PRSO,HANDS /?CCL3 CALL RECOGNIZE RSTACK ?CCL3: FSET? PRSI,ACTORBIT /?CCL5 PRINTI "I don't think" CALL TPRINT-PRSI PRINTR " even has hands." ?CCL5: PRINTR """How do you do.""" .FUNCT PRE-SHOOT ZERO? PRSI \?CND1 CALL ULTIMATELY-IN?,ZAPGUN ZERO? STACK /?CND1 EQUAL? PRSO,ZAPGUN \?CCL7 ZERO? ZAPGUN-SHOTS \?CCL10 PRINTR """Click.""" ?CCL10: DEC 'ZAPGUN-SHOTS PRINTR "Nasty flames spew from the zapgun." ?CCL7: SET 'PRSI,ZAPGUN PRINTI "(with the " PRINTD ZAPGUN PRINTC 41 CRLF ?CND1: ZERO? PRSI \?CCL13 PRINTR "You aren't holding a gun!" ?CCL13: EQUAL? PRSI,ZAPGUN /?CCL15 PRINTI "Shoot" CALL APRINT,PRSI PRINTR "!?!" ?CCL15: EQUAL? PRSO,ZAPGUN \?CCL17 PRINTR "Sorry; the zapgun doesn't have a rubber barrel." ?CCL17: ZERO? ZAPGUN-SHOTS \?CCL19 PRINTR """Click.""" ?CCL19: DEC 'ZAPGUN-SHOTS RFALSE .FUNCT V-SHOOT,L ZERO? ZAPGUN-FOOTNOTE \?CND1 SET 'ZAPGUN-FOOTNOTE,TRUE-VALUE PRINTI "(Footnote 9) " ?CND1: PRINTI "A blaze of intense rays " FSET? PRSO,TAKEBIT /?CTR4 EQUAL? PRSO,ROULETTE-WHEEL,LOCKER,ID-CHANGER /?CTR4 EQUAL? PRSO,DRYER,HEATING-CHAMBER,LOG-READER /?CTR4 EQUAL? PRSO,SKELETON,CAGE,PRESSER /?CTR4 EQUAL? PRSO,SOUP,GRAY-GOO,ORANGE-GOO \?CCL5 ?CTR4: PRINTI "envelop" CALL TPRINT-PRSO PRINTI ". When the rays dissipate," CALL TPRINT-PRSO PRINTC 32 FSET? PRSO,PLURALBIT \?CCL13 PRINTI "are" JUMP ?CND11 ?CCL13: PRINTI "is" ?CND11: PRINTI " gone." CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL16 PRINTI " Unfortunately, so is most of your " FSET? PRSO,WORNBIT \?CCL19 PRINTI "body, since you were wear" JUMP ?CND17 ?CCL19: PRINTI "arm, since you were hold" ?CND17: PRINTI "ing" CALL TPRINT-PRSO CALL JIGS-UP,STR?9 RSTACK ?CCL16: LOC PRSO >L EQUAL? L,FLOYD \?CCL22 PRINTI " Floyd, who was holding" CALL TPRINT-PRSO PRINTI ", gives a shriek of fear, and all the oil drains from his face." JUMP ?CND20 ?CCL22: EQUAL? L,HERE,PEDESTAL,DRILLED-HOLE /?CND20 PRINTI " Naturally," CALL TPRINT,L PRINTI " is also history, since" CALL TPRINT-PRSO PRINTI " was sitting " FSET? L,SURFACEBIT \?CCL26 PRINTC 111 JUMP ?CND24 ?CCL26: PRINTC 105 ?CND24: PRINTI "n it." CALL REMOVE-CAREFULLY,L ?CND20: CALL REMOVE-CAREFULLY,PRSO CRLF RTRUE ?CCL5: PRINTI "washes over" CALL TPRINT-PRSO PRINTR ". It glows for a bit, but then cools." .FUNCT V-SSHOOT CALL PERFORM,V?SHOOT,PRSI,PRSO CALL THIS-IS-IT,PRSO RTRUE .FUNCT V-SHOW PRINTI "It doesn't look like" CALL TPRINT-PRSI PRINTR " is interested." .FUNCT V-SIT,VEHICLE EQUAL? PRSO,ROOMS /?CCL3 CALL PERFORM,V?ENTER,PRSO RTRUE ?CCL3: EQUAL? HERE,THEATRE \?CCL5 PRINTR "But there's nothing to watch at the moment!" ?CCL5: CALL FIND-IN,HERE,VEHBIT >VEHICLE ZERO? VEHICLE /?CCL7 CALL PERFORM,V?ENTER,VEHICLE RTRUE ?CCL7: CALL PERFORM,V?CLIMB-ON,GROUND RTRUE .FUNCT V-SKIP CALL WEE RSTACK .FUNCT V-SLEEP ZERO? SLEEPY-LEVEL \?CCL3 PRINTR "You're not tired." ?CCL3: CALL QUEUED?,I-FALL-ASLEEP ZERO? STACK /?CCL5 PRINTR "You'll probably be asleep before you know it." ?CCL5: PRINTR "Members of civilized societies usually sleep in beds." .FUNCT PRE-SMELL FSET? SPACESUIT,WORNBIT \FALSE PRINTI "You smell stale air and rusty metal and unbathed " PRINT LFC PRINTR " -- all the usual odors of a space suit." .FUNCT V-SMELL ZERO? PRSO /?CTR2 EQUAL? PRSO,AIR \?CCL3 ?CTR2: ZERO? BALLOON-ODOR /?CCL8 PRINTI "The awful odor of the " PRINTD BALLOON PRINTR "'s digestive gas is thankfully fading." ?CCL8: EQUAL? HERE,GREASY-STRAW \?CCL10 FSET? NECTAR,TOUCHBIT /?CCL10 PRINTR "There's something yum-smelling around here!" ?CCL10: EQUAL? HERE,OPIUM-DEN \?CCL14 PRINTR "There's a lingering smell of various drugs." ?CCL14: CALL VISIBLE?,BALLOON ZERO? STACK /?CCL16 CALL PERFORM,V?SMELL,BALLOON RTRUE ?CCL16: EQUAL? HERE,COMMANDERS-QUARTERS \?CCL18 FSET? SAFE,OPENBIT \?CCL18 PRINTR "The odor of an explosion hangs in the air." ?CCL18: PRINTR "You smell nothing unusual just now." ?CCL3: CALL SENSE-OBJECT,STR?49 RSTACK .FUNCT SENSE-OBJECT,STRING CALL PRONOUN PRINTC 32 PRINT STRING FSET? PRSO,PLURALBIT /?CND1 EQUAL? PRSO,ME /?CND1 PRINTC 115 ?CND1: PRINTI " just like" CALL ARPRINT,PRSO RSTACK .FUNCT V-SPLAY-WITH CALL PERFORM,V?PLAY-WITH,PRSI RTRUE .FUNCT V-SPRAY ZERO? PRSI \?CCL3 IN? SPRAY-CAN,PROTAGONIST \?CCL3 PRINTI "[with the " PRINTD SPRAY-CAN PRINTC 93 CRLF CALL PERFORM,V?SPRAY,SPRAY-CAN,PRSO RTRUE ?CCL3: CALL CANT-VERB-A-PRSO,STR?50 RSTACK .FUNCT V-SPUT-ON CALL PERFORM,V?PUT-ON,PRSI,PRSO RTRUE .FUNCT V-SSHOW CALL PERFORM,V?SHOW,PRSI,PRSO RTRUE .FUNCT V-SSPRAY CALL PERFORM,V?SPRAY,PRSI,PRSO RTRUE .FUNCT V-STAND EQUAL? P-PRSA-WORD,W?HOLD \?CCL3 CALL WASTES RSTACK ?CCL3: LOC PROTAGONIST FSET? STACK,VEHBIT \?CCL5 LOC PROTAGONIST CALL PERFORM,V?DISEMBARK,STACK RTRUE ?CCL5: ZERO? PRSO /?CCL7 FSET? PRSO,TAKEBIT \?CCL7 CALL WASTES RSTACK ?CCL7: ZERO? STUNNED /?CCL11 CALL YOURE-STUNNED RSTACK ?CCL11: PRINTR "You're already standing." .FUNCT V-STAND-ON CALL WASTES RSTACK .FUNCT V-STELL CALL PERFORM,V?TELL,PRSI RTRUE .FUNCT V-STHROW CALL PERFORM,V?THROW-TO,PRSI,PRSO RTRUE .FUNCT V-SWING ZERO? PRSI /?CCL3 CALL PERFORM,V?KILL,PRSI,PRSO RTRUE ?CCL3: PRINTR """Whoosh.""" .FUNCT V-SWRAP CALL PERFORM,V?PUT-ON,PRSO,PRSI RTRUE .FUNCT PRE-TAKE ZERO? STUNNED /?CCL3 CALL YOURE-STUNNED,STR?51 RSTACK ?CCL3: CALL UNTOUCHABLE?,PRSO ZERO? STACK /?CCL5 CALL CANT-REACH,PRSO RSTACK ?CCL5: EQUAL? PRSI,TONGUE,HANDS /?CCL7 CALL PRE-LOOK ZERO? STACK \TRUE ?CCL7: CALL LOC-CLOSED ZERO? STACK \TRUE IN? PROTAGONIST,PRSO \?CCL13 PRINTI "You're " FSET? PRSO,INBIT \?CCL16 PRINTC 105 JUMP ?CND14 ?CCL16: PRINTC 111 ?CND14: PRINTR "n it, asteroid-brain!" ?CCL13: IN? PRSO,PROTAGONIST /?CTR17 CALL ULTIMATELY-IN?,PRSO ZERO? STACK /?CCL18 FSET? PRSO,TAKEBIT /?CCL18 ?CTR17: FSET? PRSO,WORNBIT \?CCL25 PRINTI "You're already wearing" JUMP ?CND23 ?CCL25: PRINTI "You already have" ?CND23: CALL TPRINT-PRSO PRINT PERIOD-CR RTRUE ?CCL18: IN? PRSO,HEATING-CHAMBER \?CCL27 CALL PERFORM,V?REACH-IN,HEATING-CHAMBER RTRUE ?CCL27: EQUAL? PRSO,LEASH \?CCL29 EQUAL? PRSI,BALLOON \?CCL29 CALL PERFORM,V?REMOVE,LEASH RTRUE ?CCL29: ZERO? PRSI /FALSE IN? PRSO,PRSI /FALSE EQUAL? PRSO,ME \?CCL37 CALL PERFORM,V?DROP,PRSI RTRUE ?CCL37: EQUAL? PRSI,GLOBAL-ROOM \?CCL39 CALL ULTIMATELY-IN?,PRSO ZERO? STACK /FALSE CALL DO-WALK,P?OUT RSTACK ?CCL39: EQUAL? PRSI,SCULPTURE,GARBAGE \?CCL44 IN? PRSO,HERE /FALSE ?CCL44: IN? PRSO,PRSI /?CCL48 CALL NOT-IN RSTACK ?CCL48: SET 'PRSI,FALSE-VALUE RFALSE .FUNCT V-TAKE CALL ITAKE EQUAL? STACK,TRUE-VALUE \FALSE ZERO? ID-SCRAMBLED \?CND4 EQUAL? PRSO,ID-CARD \?PRD9 CALL ULTIMATELY-IN?,BOOTS ZERO? STACK /?PRD9 FSET? BOOTS,WORNBIT \?CCL5 ?PRD9: EQUAL? PRSO,BOOTS \?CND4 CALL ULTIMATELY-IN?,ID-CARD ZERO? STACK /?CND4 ?CCL5: FCLEAR BOOTS,TRYTAKEBIT FCLEAR ID-CARD,TRYTAKEBIT SET 'ID-SCRAMBLED,TRUE-VALUE ?CND4: PRINTR "Taken." .FUNCT V-TAKE-OFF EQUAL? PRSO,ROOMS \?CCL3 LOC PROTAGONIST FSET? STACK,VEHBIT \?CCL6 PRINTI "[of" LOC PROTAGONIST CALL TPRINT,STACK PRINTC 93 CRLF LOC PROTAGONIST CALL PERFORM,V?DISEMBARK,STACK RTRUE ?CCL6: CALL V-STAND RSTACK ?CCL3: ZERO? STUNNED /?CCL8 CALL YOURE-STUNNED RSTACK ?CCL8: FSET? PRSO,WORNBIT \?CCL10 SET 'C-ELAPSED,18 FCLEAR PRSO,WORNBIT PRINTI "Okay, you're no longer wearing" CALL TRPRINT,PRSO RSTACK ?CCL10: FSET? PRSO,VEHBIT \?CCL12 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?CCL12: PRINTI "You aren't wearing" CALL TRPRINT,PRSO RSTACK .FUNCT V-TAKE-WITH PRINTI "Sorry," CALL TPRINT-PRSI PRINTI " is no help in getting" CALL TRPRINT,PRSO RSTACK .FUNCT V-TASTE GETP PRSO,P?FOOD-DESC ZERO? STACK /?CCL3 PRINTR "It tastes edible." ?CCL3: CALL SENSE-OBJECT,STR?52 RSTACK .FUNCT V-TELL FSET? PRSO,ACTORBIT \?CCL3 ZERO? P-CONT /?CCL6 SET 'WINNER,PRSO SET 'ELIMINATE-CR,TRUE-VALUE RTRUE ?CCL6: PRINTI "Hmmm..." CALL TPRINT-PRSO PRINTR " looks at you expectantly." ?CCL3: PRINTI "Talking to" CALL APRINT,PRSO PRINTI "? Dr. Blanchard, the Duffy's psychiatrist, would be fascinated to hear that." CRLF CALL STOP RSTACK .FUNCT V-TELL-ABOUT EQUAL? PRSO,ME \?CCL3 CALL PERFORM,V?WHAT,PRSI RTRUE ?CCL3: CALL VISIBLE?,PRSI ZERO? STACK /?CCL5 CALL PERFORM,V?SHOW,PRSI,PRSO RTRUE ?CCL5: SET 'PRSI,PRSO CALL V-SHOW RSTACK .FUNCT V-THANK,OWINNER ZERO? PRSO \?CCL3 PRINTR "[Just doing my job.]" ?CCL3: FSET? PRSO,ACTORBIT \?CCL5 SET 'OWINNER,WINNER SET 'WINNER,PRSO CALL PERFORM,V?THANK SET 'WINNER,OWINNER RTRUE ?CCL5: CALL IMPOSSIBLES RSTACK .FUNCT V-THROW EQUAL? HERE,VACUUM-STORAGE \?CCL3 PRINTI "You lose sight of" CALL TPRINT-PRSO PRINTI " as it sails away." CALL REMOVE-CAREFULLY,PRSO CRLF RTRUE ?CCL3: EQUAL? HERE,TOP-OF-AIR-SHAFT,AIR-SHAFT \?CCL5 CALL V-DROP RSTACK ?CCL5: ZERO? PRSI /?CCL7 MOVE PRSO,HERE PRINTR "You missed." ?CCL7: MOVE PRSO,HERE PRINTR "Thrown." .FUNCT V-THROW-TO FSET? PRSI,ACTORBIT \?CCL3 CALL PERFORM,V?GIVE,PRSO,PRSI RTRUE ?CCL3: CALL PERFORM,V?THROW,PRSO,PRSI RTRUE .FUNCT V-TICKLE PRINTR "Kitchy kitchy koo?" .FUNCT V-TIE PRINT YOU-CANT PRINTI "tie" CALL TRPRINT,PRSO RSTACK .FUNCT V-TIME,NO-CR=0 PRINTI "Current Galactic Standard Time " FSET? CHRONOMETER,WORNBIT \?CCL3 LESS? DAY,3 \?CCL3 PRINTI "(adjusted to your local day-cycle) is " PRINTN INTERNAL-MOVES JUMP ?CND1 ?CCL3: PRINTI "is impossible to determine, since you" FSET? CHRONOMETER,WORNBIT /?CCL8 PRINTI "'ve removed your " PRINTD CHRONOMETER JUMP ?CND1 ?CCL8: PRINTI "r " PRINTD CHRONOMETER PRINTI " has stopped" ?CND1: ZERO? NO-CR /?CCL11 PRINTC 46 RTRUE ?CCL11: PRINT PERIOD-CR RTRUE .FUNCT PRE-TOUCH,VB=1 ZERO? STUNNED /?CCL3 ZERO? VB /TRUE CALL YOURE-STUNNED,STR?51 RTRUE ?CCL3: CALL UNTOUCHABLE?,PRSO ZERO? STACK /FALSE ZERO? VB /TRUE CALL CANT-REACH,PRSO RTRUE .FUNCT V-TOUCH CALL LOC-CLOSED ZERO? STACK \TRUE CALL HACK-HACK,STR?53 RSTACK .FUNCT V-TYPE ZERO? PRSI /?CCL3 EQUAL? PRSI,KEYPAD /?CCL3 PRINT YOU-CANT PRINTI "type on" CALL APRINT,PRSI PRINTR "!" ?CCL3: CALL GLOBAL-IN?,KEYPAD,HERE ZERO? STACK \?CCL7 ZERO? PRSO /?CCL10 PRINT HUH RTRUE ?CCL10: PRINTI "There's no keypad here!" CRLF CALL STOP RSTACK ?CCL7: ZERO? PRSO /?CCL12 EQUAL? PRSO,INTNUM \?CCL12 ZERO? P-NUMBER \?CCL17 PRINTR "[Specify the number! TYPE 7, for example.]" ?CCL17: EQUAL? HERE,ROBOT-POOL \?CCL19 CALL ROBOT-TYPE RSTACK ?CCL19: EQUAL? HERE,SPACETRUCK \?CCL21 CALL SPACETRUCK-TYPE RSTACK ?CCL21: EQUAL? HERE,SHADY-DANS \?CCL23 CALL ID-CHANGER-TYPE RSTACK ?CCL23: EQUAL? HERE,PX \?CCL25 CALL DISPENSER-TYPE RSTACK ?CCL25: CALL ELEVATOR-TYPE RSTACK ?CCL12: ZERO? PRSO \?CCL27 ZERO? P-CONT /?CCL27 CALL NUMBER?,P-CONT EQUAL? STACK,W?NUMBER \?CCL27 CALL PERFORM,V?TYPE,INTNUM CALL STOP RSTACK ?CCL27: PRINTI "You can only type numbers on this keypad." CRLF CALL STOP RSTACK .FUNCT ROBOT-TYPE FSET? ROBOT-USE-AUTHORIZATION-FORM,NDESCBIT /?CCL3 CALL RECORDING,STR?54 RSTACK ?CCL3: ZERO? ROBOT-PICKED /?CCL5 CALL RECORDING,STR?55 RSTACK ?CCL5: GRTR? P-NUMBER,3 \?CCL7 CALL RECORDING,STR?56 RSTACK ?CCL7: LESS? P-NUMBER,1 \?CCL9 CALL RECORDING,STR?57 RSTACK ?CCL9: EQUAL? P-NUMBER,3 \?CCL11 FSET FLOYD,TOUCHBIT SET 'ROBOT-PICKED,FLOYD SET 'FLOYD-SPOKE,TRUE-VALUE PRINTR """Yippee!"" yells Floyd, bounding joyfully over and giving you a big hug." ?CCL11: EQUAL? P-NUMBER,1 \?CCL14 SET 'ROBOT-PICKED,REX JUMP ?CND12 ?CCL14: SET 'ROBOT-PICKED,HELEN ?CND12: CALL DEQUEUE,I-FLOYD CALL QUEUE,I-OTHER-ROBOT,-1 FSET ROBOT-PICKED,TOUCHBIT PRINTD ROBOT-PICKED PRINTR " rolls up to you, ready to follow. Floyd's lower jaw begins quivering, as though he were about to cry." .FUNCT SPACETRUCK-TYPE,X FSET? CLASS-THREE-SPACECRAFT-ACTIVATION-FORM,NDESCBIT /?CCL3 CALL RECORDING,STR?54 RSTACK ?CCL3: EQUAL? SPACETRUCK-COUNTER,5 \?CCL5 CALL RECORDING,STR?58 RSTACK ?CCL5: ZERO? COURSE-PICKED /?CCL7 CALL RECORDING,STR?55 RSTACK ?CCL7: IN? PROTAGONIST,PILOT-SEAT /?PRD11 IN? FLOYD,PILOT-SEAT \?CCL9 ?PRD11: IN? PROTAGONIST,COPILOT-SEAT /?CTR8 IN? FLOYD,COPILOT-SEAT \?CCL9 ?CTR8: SET 'COURSE-PICKED,P-NUMBER DIV INTERNAL-MOVES,50 >X SUB X,132 >X MUL X,X >X DIV X,4 >X ADD X,103 >RIGHT-COURSE CALL QUEUE,I-SPACETRUCK,33 CALL RECORDING,STR?59 RSTACK ?CCL9: CALL RECORDING,STR?60 RSTACK .FUNCT ELEVATOR-TYPE,DISTANCE GRTR? P-NUMBER,9 /?CTR2 LESS? P-NUMBER,1 \?CCL3 ?CTR2: CALL RECORDING,STR?61 RSTACK ?CCL3: GRTR? DAY,2 \?CCL7 CALL JIGS-UP,STR?62 RSTACK ?CCL7: EQUAL? ELEVATOR-LEVEL,P-NUMBER \?CCL9 CALL RECORDING,STR?63 RSTACK ?CCL9: EQUAL? P-NUMBER,8,9 \?CCL11 PRINTR "The elevator whines momentarily, but doesn't move." ?CCL11: PRINTI "The elevator " EQUAL? DAY,1 \?CCL14 PRINTI "glides weightlessly " JUMP ?CND12 ?CCL14: PRINTI "starts with a jerk, " GRTR? P-NUMBER,ELEVATOR-LEVEL \?CND15 PRINTI "bumping you against the ceiling, " ?CND15: PRINTI "then moves " ?CND12: GRTR? P-NUMBER,ELEVATOR-LEVEL \?CCL19 PRINTI "down" SUB P-NUMBER,ELEVATOR-LEVEL >DISTANCE JUMP ?CND17 ?CCL19: PRINTI "up" SUB ELEVATOR-LEVEL,P-NUMBER >DISTANCE ?CND17: PRINTI " the shaft, stopping " EQUAL? DAY,2 \?CND20 PRINTI "suddenly " ?CND20: EQUAL? DAY,2 \?CCL24 GRTR? INTERNAL-MOVES,6300 \?CCL24 PRINTI "and not quite at level with your new floor" JUMP ?CND22 ?CCL24: PRINTI "at another opening to the west" ?CND22: EQUAL? DAY,2 \?CND27 GRTR? ELEVATOR-LEVEL,P-NUMBER \?CND27 PRINTI ". The sudden stop bumps you against the ceiling of the weightless elevator" ?CND27: MUL 5,DISTANCE >C-ELAPSED SET 'ELEVATOR-LEVEL,P-NUMBER IN? BALLOON,ELEVATOR \?CND31 PRINTI ". The " PRINTD BALLOON PRINTI " looks somewhat disoriented by the experience" ?CND31: IN? OSTRICH,ELEVATOR \?CCL35 PRINTI ". " CALL PERFORM,V?SCARE,OSTRICH RTRUE ?CCL35: PRINT PERIOD-CR RTRUE .FUNCT DISPENSER-TYPE FSET? DISPENSER,TOUCHBIT /?CCL3 CALL RECORDING,STR?64 RSTACK ?CCL3: GRTR? P-NUMBER,9 \?CCL5 CALL RECORDING,STR?65 RSTACK ?CCL5: EQUAL? P-NUMBER,6,9 \?CCL7 FCLEAR DISPENSER,TOUCHBIT EQUAL? P-NUMBER,6 \?CCL10 MOVE TIMER,DISPENSER JUMP ?CND8 ?CCL10: MOVE LARGE-BIT,DISPENSER ?CND8: PRINTR "You hear a loud ""klunk"" inside the dispenser, but nothing appears in the dispenser hole." ?CCL7: LESS? P-NUMBER,1 \?CCL12 CALL RECORDING,STR?57 RSTACK ?CCL12: CALL RECORDING,STR?66 RSTACK .FUNCT RECORDING,STRING RANDOM 100 LESS? 33,STACK /?CCL3 PRINTI "A recording says," JUMP ?CND1 ?CCL3: RANDOM 100 LESS? 50,STACK /?CCL5 PRINTI "You hear a recorded voice." JUMP ?CND1 ?CCL5: PRINTI "A taped voice whispers in your ear." ?CND1: PRINTI " """ PRINT STRING PRINTR ".""" .FUNCT V-UNDRESS ZERO? PRSO /?CCL3 CALL IMPOSSIBLES RSTACK ?CCL3: SET 'PRSO,ROOMS CALL V-GET-UNDRESSED RSTACK .FUNCT V-UNLOCK FSET? PRSO,LOCKEDBIT /?CND1 EQUAL? HERE,THEATRE,BRIG \?CCL5 EQUAL? PRSO,PSEUDO-OBJECT /?CND1 ?CCL5: PRINTI "But" CALL TPRINT-PRSO PRINTR " isn't locked." ?CND1: ZERO? PRSI \?CCL10 CALL ULTIMATELY-IN?,KEY ZERO? STACK /?CCL13 PRINTI "[with the key]" CRLF CALL PERFORM,V?UNLOCK,PRSO,KEY RTRUE ?CCL13: SET 'AWAITING-REPLY,1 ADD C-ELAPSED,2 CALL QUEUE,I-REPLY,STACK PRINTR "Your nose is key-shaped, I suppose?" ?CCL10: EQUAL? PRSI,KEY \?CCL15 PRINTI "This key doesn't unlock" CALL TRPRINT,PRSO RSTACK ?CCL15: CALL IMPOSSIBLES RSTACK .FUNCT V-UNTIE CALL IMPOSSIBLES RSTACK .FUNCT V-USE PRINT YOULL-HAVE-TO PRINTI "be more specific about how you want to use" CALL TRPRINT,PRSO RSTACK .FUNCT PRE-VALIDATE ZERO? PRSI \?CCL3 CALL VISIBLE?,VALIDATION-STAMP ZERO? STACK \?CCL3 PRINTI "You don't have a " PRINTD VALIDATION-STAMP PRINTR "!" ?CCL3: ZERO? PRSI \?CCL7 CALL ULTIMATELY-IN?,VALIDATION-STAMP ZERO? STACK \?CCL7 PRINT YNH CALL TRPRINT,VALIDATION-STAMP RSTACK ?CCL7: ZERO? PRSI /FALSE EQUAL? PRSI,VALIDATION-STAMP /FALSE PRINT HUH RTRUE .FUNCT V-VALIDATE PRINTI "There's no validation box on" CALL TRPRINT,PRSO RSTACK .FUNCT V-WALK,AV,VEHICLE,PT,PTS,STR,OBJ,RM LOC PROTAGONIST >AV ZERO? P-WALK-DIR \?CCL3 CALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL3: ZERO? STUNNED /?CCL5 CALL YOURE-STUNNED,STR?67 RSTACK ?CCL5: EQUAL? PRSO,P?OUT \?CCL7 EQUAL? AV,SIMULATION-BOOTH,HOLDING-TANK \?CCL7 CALL PERFORM,V?DISEMBARK,AV RTRUE ?CCL7: ZERO? HANGING-IN-AIR /?CCL11 EQUAL? PRSO,P?DOWN \?CCL14 CALL PERFORM,V?DROP,LEASH RTRUE ?CCL14: PRINTR "It's hard to walk when your feet are a couple of meters from the floor." ?CCL11: EQUAL? PRSO,P?IN \?CCL16 GETPT HERE,P?IN ZERO? STACK \?CCL16 CALL FIND-IN,HERE,VEHBIT >VEHICLE ZERO? VEHICLE /?CCL16 CALL ULTIMATELY-IN?,VEHICLE ZERO? STACK \?CCL16 CALL PERFORM,V?ENTER,VEHICLE RTRUE ?CCL16: FSET? AV,VEHBIT \?CCL22 PRINTI "You're not walking anywhere until you get o" EQUAL? AV,BED \?CCL25 PRINTI "ff" JUMP ?CND23 ?CCL25: PRINTI "ut of" ?CND23: CALL TRPRINT,AV RETURN 8 ?CCL22: ZERO? TIMER-CONNECTED /?CCL29 CALL ULTIMATELY-IN?,TIMER ZERO? STACK /?CCL29 CALL ULTIMATELY-IN?,DETONATOR ZERO? STACK \?CCL29 CALL DO-FIRST,STR?19 RSTACK ?CCL29: ZERO? TIMER-CONNECTED /?CCL34 CALL ULTIMATELY-IN?,DETONATOR ZERO? STACK /?CCL34 CALL ULTIMATELY-IN?,TIMER ZERO? STACK \?CCL34 CALL DO-FIRST,STR?19 RSTACK ?CCL34: ZERO? EXPLOSIVE-CONNECTED /?CCL39 CALL ULTIMATELY-IN?,DETONATOR ZERO? STACK /?CCL39 CALL ULTIMATELY-IN?,EXPLOSIVE ZERO? STACK \?CCL39 CALL DO-FIRST,STR?20 RSTACK ?CCL39: ZERO? EXPLOSIVE-CONNECTED /?CCL44 CALL ULTIMATELY-IN?,EXPLOSIVE ZERO? STACK /?CCL44 CALL ULTIMATELY-IN?,DETONATOR ZERO? STACK \?CCL44 CALL DO-FIRST,STR?20 RSTACK ?CCL44: GETPT HERE,PRSO >PT ZERO? PT /?CCL49 ZERO? LIT /?CCL52 SET 'C-ELAPSED,22 JUMP ?CND50 ?CCL52: SET 'C-ELAPSED,33 ?CND50: PTSIZE PT >PTS EQUAL? PTS,UEXIT \?CCL55 GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL55: EQUAL? PTS,CEXIT \?CCL57 EQUAL? HERE,CASINO \?CCL60 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?CCL63 GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL63: SET 'C-ELAPSED,7 PRINT CANT-GO RETURN 8 ?CCL60: ZERO? VERBOSITY /?CND66 CALL DESCRIBE-AUTO-DOOR ?CND66: GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL57: EQUAL? PTS,NEXIT \?CCL69 SET 'C-ELAPSED,7 GET PT,NEXITSTR PRINT STACK CRLF RETURN 8 ?CCL69: EQUAL? PTS,FEXIT \?CCL73 GET PT,FEXITFCN CALL STACK >RM ZERO? RM /?CCL76 CALL GOTO,RM RSTACK ?CCL76: EQUAL? HERE,AIR-SHAFT /TRUE SET 'C-ELAPSED,7 RETURN 8 ?CCL73: EQUAL? PTS,DEXIT \FALSE GETB PT,DEXITOBJ >OBJ FSET? OBJ,OPENBIT \?CCL85 GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL85: GET PT,DEXITSTR >STR ZERO? STR /?CCL87 SET 'C-ELAPSED,7 CALL THIS-IS-IT,OBJ PRINT STR CRLF RETURN 8 ?CCL87: SET 'C-ELAPSED,7 CALL THIS-IS-IT,OBJ CALL DO-FIRST,STR?23,OBJ RETURN 8 ?CCL49: EQUAL? PRSO,P?IN,P?OUT \?CCL93 CALL V-WALK-AROUND RETURN 8 ?CCL93: PRINT CANT-GO RETURN 8 .FUNCT DESCRIBE-AUTO-DOOR EQUAL? HERE,BRIG,ARMORY \?CCL3 PRINTI "The " PRINTD SECURITY-DOOR PRINTC 32 JUMP ?CND1 ?CCL3: PRINTI "The auto-door " ?CND1: EQUAL? DAY,1 \?CCL6 PRINTI "opens as you approach, and whisks shut behind you..." JUMP ?CND4 ?CCL6: GRTR? DAY,2 \?CCL8 PRINTI "opens barely wide enough for you to squeeze through. As you do so, the door tries to shut, almost jamming against you!" FSET? AUTO-DOOR,TOUCHBIT /?CND4 FSET AUTO-DOOR,TOUCHBIT PRINTI " Fortunately, auto-doors don't have a lot of power." JUMP ?CND4 ?CCL8: PRINTI "opens sluggishly. As soon as you have passed through, it zooms shut, " GRTR? INTERNAL-MOVES,5000 \?CCL13 PRINTI "almost nipping your heels!" JUMP ?CND11 ?CCL13: PRINTI "seemingly a little sooner than normal." ?CND11: FSET? AUTO-DOOR,TOUCHBIT /?CND4 FSET AUTO-DOOR,TOUCHBIT PRINTI " Very puzzling; auto-doors have been around for millenia, and are generally the epitome of reliability." ?CND4: CRLF CRLF RTRUE .FUNCT V-WALK-AROUND SET 'AWAITING-REPLY,1 CALL QUEUE,I-REPLY,1 SET 'P-WON,FALSE-VALUE PRINTR "Did you have any particular direction in mind?" .FUNCT V-WALK-TO EQUAL? PRSO,INTDIR \?CCL3 CALL DO-WALK,P-DIRECTION RSTACK ?CCL3: CALL VISIBLE?,PRSO ZERO? STACK /?CCL5 FSET? PRSO,VEHBIT \?CCL8 CALL PERFORM,V?ENTER,PRSO RTRUE ?CCL8: CALL V-FOLLOW RSTACK ?CCL5: CALL V-WALK-AROUND RSTACK .FUNCT V-WAIT EQUAL? PRSA,V?WAIT-FOR \?CCL3 SET 'C-ELAPSED,P-NUMBER JUMP ?CND1 ?CCL3: EQUAL? PRSA,V?WAIT-UNTIL \?CCL5 SUB P-NUMBER,INTERNAL-MOVES >C-ELAPSED JUMP ?CND1 ?CCL5: SET 'C-ELAPSED,40 ?CND1: PRINTR "Time passes..." .FUNCT V-WAIT-FOR CALL VISIBLE?,PRSO ZERO? STACK /?CCL3 CALL V-FOLLOW RSTACK ?CCL3: PRINTR "You may be waiting quite a while." .FUNCT V-WAIT-UNTIL PRINT HUH RTRUE .FUNCT V-WEAR FSET? PRSO,WEARBIT /?CCL3 CALL CANT-VERB-A-PRSO,STR?68 RSTACK ?CCL3: PRINTI "You're " FSET? PRSO,WORNBIT \?CCL6 PRINTI "already" JUMP ?CND4 ?CCL6: MOVE PRSO,PROTAGONIST FSET PRSO,WORNBIT SET 'C-ELAPSED,18 PRINTI "now" ?CND4: PRINTI " wearing" CALL TRPRINT,PRSO RSTACK .FUNCT V-WHAT PRINTR "Good question." .FUNCT V-WHERE CALL V-FIND,TRUE-VALUE RSTACK .FUNCT V-WRAP CALL PERFORM,V?PUT-ON,PRSI,PRSO RTRUE .FUNCT V-YELL PRINTI "Aaaarrrggghhh!" CRLF IN? OSTRICH,HERE \?CND1 PRINTI " " CALL PERFORM,V?SCARE,OSTRICH RTRUE ?CND1: CALL STOP RSTACK .FUNCT I-REPLY SET 'AWAITING-REPLY,FALSE-VALUE RFALSE .FUNCT V-YES EQUAL? AWAITING-REPLY,1 \?CCL3 PRINTR "That was just a rhetorical question." ?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5 PRINTR """Floyd changed his mind. Controls too scary-looking.""" ?CCL5: EQUAL? AWAITING-REPLY,3 \?CCL7 PRINTR "Floyd shrugs. ""Floyd feels not like learning new rules now. Let's play tag. Floyd knows rules for tag really well!""" ?CCL7: EQUAL? AWAITING-REPLY,4 \?CCL9 CALL PERFORM,V?PLAY-WITH,FLOYD RTRUE ?CCL9: CALL YOU-SOUND,STR?69 RSTACK .FUNCT YOU-SOUND,STRING PRINTI "You sound rather " PRINT STRING PRINTR "ive." .FUNCT YES-WORD,WRD EQUAL? WRD,W?YES,W?Y,W?YUP /TRUE EQUAL? WRD,W?OK,W?OKAY,W?SURE /TRUE RFALSE .FUNCT V-ZORK PRINTR "Gesundheit!" .FUNCT ITAKE,VB=1,OBJ,?TMP1 FSET? PRSO,TAKEBIT /?CCL3 ZERO? VB /?PRG6 CALL YUKS ?PRG6: RETURN 8 ?CCL3: CALL ULTIMATELY-IN?,PRSO ZERO? STACK \?CCL9 CALL WEIGHT,PRSO >?TMP1 CALL WEIGHT,PROTAGONIST ADD ?TMP1,STACK GRTR? STACK,100 \?CCL9 ZERO? VB /?PRG14 PRINTI "You're juggling just about as much stuff as you can manage." CRLF ?PRG14: RETURN 8 ?CCL9: CALL CCOUNT,PROTAGONIST MUL STACK,20 SUB STACK,150 >?TMP1 RANDOM 100 LESS? ?TMP1,STACK /?CND1 FIRST? PROTAGONIST >OBJ /?PRG17 ?PRG17: FSET? OBJ,WORNBIT \?CCL21 NEXT? OBJ >OBJ /?PRG17 JUMP ?PRG17 ?CCL21: EQUAL? OBJ,OSTRICH-NIP \?REP18 IN? OSTRICH,HERE \?REP18 NEXT? OBJ >OBJ /?PRG17 JUMP ?PRG17 ?REP18: MOVE PRSO,HERE MOVE OBJ,HERE FSET PRSO,TOUCHBIT ZERO? VB /?PRG31 PRINTI "As you try to grab" CALL TPRINT-PRSO PRINTC 44 CALL TPRINT,OBJ PRINTI " slips from your hands and both tumble " FSET? HERE,WEIGHTLESSBIT \?CCL30 PRINTI "away" JUMP ?CND28 ?CCL30: PRINTI "to the floor" ?CND28: PRINT PERIOD-CR ?PRG31: RETURN 8 ?CND1: CALL SCORE-OBJ MOVE PRSO,PROTAGONIST RTRUE .FUNCT SCORE-OBJ,POINTS FSET PRSO,TOUCHBIT FCLEAR PRSO,NDESCBIT GETP PRSO,P?VALUE >POINTS ZERO? POINTS /FALSE GRTR? POINTS,0 \?CND4 INC 'ROBOT-EVILNESS ?CND4: PUTP PRSO,P?VALUE,0 ADD SCORE,POINTS >SCORE RETURN SCORE .FUNCT IDROP EQUAL? PRSO,HANDS \?CCL3 EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE CALL IMPOSSIBLES RSTACK ?CCL3: EQUAL? PRSA,V?GIVE,V?DROP \?CCL8 EQUAL? PRSO,LEASH \?CCL8 ZERO? HANGING-IN-AIR \FALSE ?CCL8: CALL ULTIMATELY-IN?,PRSO ZERO? STACK \?CCL13 EQUAL? PRSA,V?THROW \?CCL16 EQUAL? PRSO,SWITCH /FALSE ?CCL16: EQUAL? PRSO,TONGUE,HANDS,ME \?CCL20 CALL IMPOSSIBLES JUMP ?CND14 ?CCL20: EQUAL? PRSA,V?PUT \?CCL22 EQUAL? PRSO,ID-READER \?CCL22 CALL ADJ-USED,A?ID,ID-READER ZERO? STACK /?CCL22 GET P-NAMW,0 EQUAL? STACK,FALSE-VALUE \?CCL22 PRINT YOU-CANT PRINTI "see any ID card here!" CRLF JUMP ?CND14 ?CCL22: PRINTI "That's easy for you to say since you don't even have" CALL TRPRINT,PRSO ?CND14: ZERO? P-MULT \TRUE RETURN 8 ?CCL13: IN? PRSO,PROTAGONIST /?CCL33 LOC PRSO FSET? STACK,CONTBIT \?CCL33 LOC PRSO FSET? STACK,OPENBIT /?CCL33 LOC PRSO CALL DO-FIRST,STR?23,STACK RSTACK ?CCL33: FSET? PRSO,WORNBIT \FALSE CALL DO-FIRST,STR?70,PRSO RSTACK .FUNCT CCOUNT,OBJ,CNT=0,X FIRST? OBJ >X /?PRG3 RETURN CNT ?PRG3: FSET? X,WORNBIT /?CND5 INC 'CNT ?CND5: NEXT? X >X /?PRG3 RETURN CNT .FUNCT WEIGHT,OBJ,CONT,WT=0 FIRST? OBJ >CONT \?CND1 ?PRG3: FSET? CONT,WORNBIT /?CND5 CALL WEIGHT,CONT ADD WT,STACK >WT ?CND5: NEXT? CONT >CONT /?KLU12 ?KLU12: ZERO? CONT \?PRG3 ?CND1: EQUAL? OBJ,PROTAGONIST \?CCL11 RETURN WT ?CCL11: GETP OBJ,P?SIZE ADD WT,STACK RSTACK .FUNCT DESCRIBE-ROOM,VERB-IS-LOOK=0,FIRST-VISIT=0,POINTS GETP HERE,P?VALUE >POINTS ZERO? POINTS /?CND1 GRTR? POINTS,0 \?CND1 INC 'ROBOT-EVILNESS ADD SCORE,POINTS >SCORE PUTP HERE,P?VALUE,0 ?CND1: ZERO? LIT \?CCL7 PRINTI "It is pitch black. You " EQUAL? HERE,VACUUM-STORAGE \?CCL10 PRINTI "try desperately to remember: 1. whether grues can survive in a vacuum and 2. whether they can tear through a space suit." CRLF RFALSE ?CCL10: PRINTI "hope there are no grues aboard the station." CRLF RFALSE ?CCL7: FSET? HERE,TOUCHBIT /?CND5 EQUAL? HERE,AIR-SHAFT /?CND12 FSET HERE,TOUCHBIT ?CND12: SET 'FIRST-VISIT,TRUE-VALUE ?CND5: PRINTD HERE ZERO? HANGING-IN-AIR /?CCL16 PRINTI ", hanging in air" JUMP ?CND14 ?CCL16: LOC PROTAGONIST FSET? STACK,VEHBIT \?CND14 PRINTI ", " LOC PROTAGONIST FSET? STACK,INBIT \?CCL20 PRINTC 105 JUMP ?CND18 ?CCL20: PRINTC 111 ?CND18: PRINTC 110 LOC PROTAGONIST CALL TPRINT,STACK ?CND14: CRLF ZERO? VERB-IS-LOOK \?CCL22 EQUAL? VERBOSITY,2 /?CCL22 ZERO? FIRST-VISIT /TRUE EQUAL? VERBOSITY,1 \TRUE ?CCL22: PRINTI " " GETP HERE,P?ACTION CALL STACK,M-LOOK ZERO? STACK \?CND28 GETP HERE,P?LDESC PRINT STACK ?CND28: CRLF RTRUE .FUNCT DESCRIBE-OBJECTS,O,STR,1ST?=1,AV LOC WINNER >AV FIRST? HERE >O /?KLU41 ?KLU41: ZERO? O /FALSE ?PRG3: ZERO? O /?REP4 CALL DESCRIBABLE?,O ZERO? STACK /?CND5 FSET? O,TOUCHBIT /?CND5 GETP O,P?FDESC >STR ZERO? STR /?CND5 PRINTI " " PRINT STR FSET? O,CONTBIT \?CND12 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK ?CND12: CRLF ?CND5: NEXT? O >O /?PRG3 JUMP ?PRG3 ?REP4: FIRST? HERE >O /?KLU43 ?KLU43: SET '1ST?,TRUE-VALUE ?PRG14: ZERO? O /?REP15 CALL DESCRIBABLE?,O ZERO? STACK /?CND16 GETP O,P?FDESC ZERO? STACK /?CCL20 FSET? O,TOUCHBIT \?CND16 ?CCL20: GETP O,P?DESCFCN >STR ZERO? STR /?CCL26 CALL STR,M-OBJDESC >STR ZERO? STR /?CCL26 FSET? O,CONTBIT \?CND29 EQUAL? STR,M-FATAL /?CND29 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK ?CND29: CRLF JUMP ?CND16 ?CCL26: GETP O,P?LDESC >STR ZERO? STR /?CND16 PRINTI " " PRINT STR FSET? O,CONTBIT \?CND34 ADD D-ALL?,D-PARA? CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK ?CND34: CRLF ?CND16: NEXT? O >O /?PRG14 JUMP ?PRG14 ?REP15: 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,TWO?=0,START?=0,PARA?=0,DB EQUAL? LEVEL,2 \?CCL3 SET 'LEVEL,TRUE-VALUE SET 'PARA?,TRUE-VALUE SET 'START?,TRUE-VALUE JUMP ?CND1 ?CCL3: BTST ALL?,D-PARA? \?CND1 SET 'PARA?,TRUE-VALUE ?CND1: FIRST? OBJ >N /?KLU117 ?KLU117: ZERO? START? \?PRG20 IN? OBJ,ROOMS /?PRG20 FSET? OBJ,ACTORBIT /?PRG20 ZERO? N /FALSE FSET? OBJ,CONTBIT \FALSE FSET? OBJ,OPENBIT /?PRD15 FSET? OBJ,TRANSBIT \FALSE ?PRD15: EQUAL? LEVEL,-1 /?PRG20 FSET? OBJ,SEARCHBIT \FALSE ?PRG20: ZERO? N /?CCL23 CALL DESCRIBABLE?,N ZERO? STACK /?CND22 BTST ALL?,D-ALL? /?CCL23 CALL SIMPLE-DESC?,N ZERO? STACK /?CND22 ?CCL23: ZERO? F /?CND30 ZERO? 1ST? /?CCL34 SET '1ST?,FALSE-VALUE EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL37 ZERO? START? \?CND32 ZERO? PARA? \?CCL42 EQUAL? OBJ,PROTAGONIST /?CND43 PRINTI " " ?CND43: SET 'PARA?,TRUE-VALUE JUMP ?CND40 ?CCL42: EQUAL? LEVEL,TRUE-VALUE \?CND40 PRINTC 32 ?CND40: CALL DESCRIBE-START,OBJ JUMP ?CND32 ?CCL37: EQUAL? LEVEL,-1 /?CND32 PRINT LEVEL JUMP ?CND32 ?CCL34: ZERO? N /?CCL48 PRINTC 44 JUMP ?CND32 ?CCL48: PRINTI " and" ?CND32: CALL APRINT,F FSET? F,ONBIT \?CND49 PRINTI " (providing light)" ?CND49: EQUAL? F,DETONATOR \?CND51 ZERO? TIMER-CONNECTED \?CCL52 ZERO? EXPLOSIVE-CONNECTED /?CND51 ?CCL52: PRINTI " (connected to the " ZERO? TIMER-CONNECTED /?CCL59 PRINTI "timer" ZERO? EXPLOSIVE-CONNECTED /?CND57 PRINTI " and the explosive" JUMP ?CND57 ?CCL59: PRINTI "explosive" ?CND57: PRINTC 41 ?CND51: ZERO? IT? \?CCL64 ZERO? TWO? \?CCL64 SET 'IT?,F JUMP ?CND30 ?CCL64: SET 'TWO?,TRUE-VALUE SET 'IT?,FALSE-VALUE ?CND30: SET 'F,N ?CND22: ZERO? N /?CND67 NEXT? N >N /?CND67 ?CND67: ZERO? F \?PRG20 ZERO? N \?PRG20 ZERO? IT? /?CND73 ZERO? TWO? \?CND73 CALL THIS-IS-IT,IT? ?CND73: ZERO? 1ST? /?CCL79 ZERO? START? /?CCL79 PRINTI " nothing" RFALSE ?CCL79: ZERO? 1ST? \?REP21 EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP21 EQUAL? OBJ,HERE \?CND85 FSET? HERE,WEIGHTLESSBIT \?CND87 EQUAL? HERE,PET-STORE /?CND87 PRINTI " floating" ?CND87: PRINTI " here" ?CND85: PRINTC 46 ?REP21: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND91 FIRST? OBJ >F /?PRG93 ?PRG93: ZERO? F /?CND91 FSET? F,CONTBIT \?CND95 CALL DESCRIBABLE?,F,TRUE-VALUE ZERO? STACK /?CND95 BTST ALL?,D-ALL? /?CCL98 CALL SIMPLE-DESC?,F ZERO? STACK /?CND95 ?CCL98: SET 'DB,D-BIT SET 'D-BIT,FALSE-VALUE ZERO? PARA? /?CCL108 PUSH 3 JUMP ?CND106 ?CCL108: PUSH D-ALL? ?CND106: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK ZERO? STACK /?CND104 SET '1ST?,FALSE-VALUE SET 'PARA?,TRUE-VALUE ?CND104: SET 'D-BIT,DB ?CND95: NEXT? F >F /?PRG93 JUMP ?PRG93 ?CND91: ZERO? 1ST? \?CND109 EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND109 LOC WINNER EQUAL? OBJ,HERE,STACK \?CND109 CRLF ?CND109: ZERO? 1ST? /TRUE RFALSE .FUNCT DESCRIBE-START,OBJ EQUAL? OBJ,HERE \?CCL3 PRINT YOU-SEE RTRUE ?CCL3: EQUAL? OBJ,PROTAGONIST \?CCL5 EQUAL? D-BIT,WORNBIT \?CCL8 PRINTI " You are wearing" RTRUE ?CCL8: PRINTI "You are carrying" RTRUE ?CCL5: FSET? OBJ,SURFACEBIT /?CTR9 EQUAL? OBJ,PILOT-SEAT,COPILOT-SEAT \?CCL10 ?CTR9: PRINTI "Sitting on" CALL TPRINT,OBJ PRINTI " is" RTRUE ?CCL10: PRINT IT-SEEMS-THAT CALL TPRINT,OBJ FSET? OBJ,ACTORBIT \?CCL15 PRINTI " has" RTRUE ?CCL15: PRINTI " contains" RTRUE .FUNCT DESCRIBABLE?,OBJ,CONT?=0 FSET? OBJ,INVISIBLE /FALSE EQUAL? OBJ,WINNER /FALSE LOC WINNER EQUAL? OBJ,STACK \?CCL7 LOC WINNER EQUAL? HERE,STACK \FALSE ?CCL7: ZERO? CONT? \?CCL11 FSET? OBJ,NDESCBIT /FALSE ?CCL11: ZERO? D-BIT /TRUE GRTR? D-BIT,0 \?CCL18 FSET? OBJ,D-BIT /TRUE RFALSE ?CCL18: SUB 0,D-BIT FSET? OBJ,STACK /FALSE RTRUE .FUNCT SIMPLE-DESC?,OBJ,STR GETP OBJ,P?FDESC ZERO? STACK /?CCL3 FSET? OBJ,TOUCHBIT \FALSE ?CCL3: GETP OBJ,P?DESCFCN >STR ZERO? STR /?CCL7 CALL STR,M-OBJDESC? ZERO? STACK \FALSE ?CCL7: GETP OBJ,P?LDESC ZERO? STACK /TRUE RFALSE .FUNCT DESCRIBE-VEHICLE PRINTI "Other than yourself, you can see" CALL DESCRIBE-NOTHING ZERO? STACK \TRUE FSET? PRSO,INBIT \?CCL5 PRINTI " in" JUMP ?CND3 ?CCL5: PRINTI " on" ?CND3: CALL TRPRINT,PRSO RTRUE .FUNCT DESCRIBE-NOTHING CALL DESCRIBE-CONTENTS,PRSO,2 ZERO? STACK /FALSE IN? PROTAGONIST,PRSO /TRUE CRLF RTRUE .FUNCT GOTO,NEW-LOC,OLD-HERE GETP HERE,P?ACTION CALL STACK,M-EXIT IN? FLOYD,HERE \?CND1 FSET? FLOYD,ACTIVEBIT \?CND1 SET 'FLOYD-FOLLOW,TRUE-VALUE ?CND1: SET 'OLD-HERE,HERE MOVE PROTAGONIST,NEW-LOC SET 'HERE,NEW-LOC CALL LIT?,HERE >LIT SET 'BALLOON-ODOR,FALSE-VALUE GETP HERE,P?ACTION CALL STACK,M-ENTER CALL DESCRIBE-ROOM ZERO? STACK /?CND5 ZERO? VERBOSITY /?CND5 CALL DESCRIBE-OBJECTS ?CND5: IN? OSTRICH,OLD-HERE \TRUE CALL ULTIMATELY-IN?,OSTRICH-NIP ZERO? STACK /TRUE CALL VISIBLE?,OSTRICH-NIP ZERO? STACK /TRUE EQUAL? HERE,TOP-OF-AIR-SHAFT /TRUE PRINTI " The ostrich, sniffing excitedly, " CALL GLOBAL-IN?,BED,HERE ZERO? STACK /?CCL17 PRINTR "follows you to the door, but hesitates as it notices the bed. The ostrich, who refuses to enter any room with a bed due to a bad experience in its youth, withdraws." ?CCL17: LOC OSTRICH FSET? STACK,WEIGHTLESSBIT \?CCL19 PRINTI "follows you in an awkward fashion somewhere between swimming and flying." JUMP ?CND15 ?CCL19: PRINTI "trots eagerly after you." ?CND15: EQUAL? HERE,SOUTH-CONNECTION \?PRD24 IN? OSTRICH,GRIMY-PASSAGE /?CTR21 ?PRD24: EQUAL? HERE,EAST-CONNECTION \?PRD27 IN? OSTRICH,MAKESHIFT-CONNECTOR /?CTR21 ?PRD27: IN? OSTRICH,ELEVATOR \?CCL22 ?CTR21: ZERO? LIT /?CND20 PRINTI " As the ostrich crosses into gravity, it emits a surprised squawk and does a graceless bellyflop. As it struggles to its feet, it appears that only its dignity was injured." JUMP ?CND20 ?CCL22: EQUAL? HERE,GRIMY-PASSAGE \?PRD34 IN? OSTRICH,SOUTH-CONNECTION /?CCL32 ?PRD34: EQUAL? HERE,MAKESHIFT-CONNECTOR \?PRD37 IN? OSTRICH,EAST-CONNECTION /?CCL32 ?PRD37: EQUAL? HERE,ELEVATOR \?CND20 FSET? ELEVATOR,WEIGHTLESSBIT \?CND20 ?CCL32: ZERO? LIT /?CND20 PRINTI " As the ostrich unexpectly enters the weightless environment of the " EQUAL? HERE,ELEVATOR \?CCL46 PRINTI "elevator" JUMP ?CND44 ?CCL46: PRINTI "village" ?CND44: PRINTI ", it shoots into the air, squawking loudly. It spins head over claw for a moment, thrashing its wings ineffectually, before finally achieving a modicum of stability." ?CND20: MOVE OSTRICH,HERE CRLF RTRUE .FUNCT JIGS-UP,DESC PRINT DESC CRLF CRLF PRINTI " **** You have died ****" CRLF CALL FINISH RSTACK .FUNCT ACCESSIBLE?,OBJ,L ZERO? OBJ /FALSE LOC OBJ >L FSET? OBJ,INVISIBLE /FALSE EQUAL? OBJ,PSEUDO-OBJECT \?CCL7 EQUAL? LAST-PSEUDO-LOC,HERE /TRUE RFALSE ?CCL7: ZERO? L /FALSE EQUAL? L,GLOBAL-OBJECTS /TRUE EQUAL? L,LOCAL-GLOBALS \?CCL16 CALL GLOBAL-IN?,OBJ,HERE ZERO? STACK \TRUE ?CCL16: CALL META-LOC,OBJ EQUAL? STACK,HERE \FALSE EQUAL? L,WINNER,HERE /TRUE FSET? L,OPENBIT \FALSE CALL ACCESSIBLE?,L ZERO? STACK /FALSE RTRUE .FUNCT VISIBLE?,OBJ,L ZERO? OBJ /FALSE LOC OBJ >L CALL ACCESSIBLE?,OBJ ZERO? STACK \TRUE CALL SEE-INSIDE?,L ZERO? STACK /FALSE CALL VISIBLE?,L ZERO? STACK /FALSE RTRUE .FUNCT UNTOUCHABLE?,OBJ ZERO? OBJ /FALSE ZERO? HANGING-IN-AIR /?CCL5 IN? OBJ,HERE \?CCL5 EQUAL? OBJ,BALLOON,ETERNAL-FLAME,LEASH /FALSE EQUAL? OBJ,STAR \TRUE FSET? OBJ,TRYTAKEBIT /FALSE RTRUE ?CCL5: IN? OBJ,STAR \?CCL16 FSET? STAR,TRYTAKEBIT \?CCL16 ZERO? HANGING-IN-AIR /TRUE ?CCL16: EQUAL? OBJ,BALLOON,LEASH \?CCL21 IN? OBJ,CAGE /TRUE ?CCL21: EQUAL? OBJ,FLOYD,REX,HELEN \?CCL25 EQUAL? OBJ,ROBOT-PICKED \TRUE ?CCL25: IN? PROTAGONIST,HERE /FALSE LOC PROTAGONIST CALL ULTIMATELY-IN?,OBJ,STACK ZERO? STACK \?CTR30 LOC PROTAGONIST EQUAL? OBJ,STACK /?CTR30 LOC OBJ EQUAL? STACK,GLOBAL-OBJECTS,LOCAL-GLOBALS \?CCL31 ?CTR30: FSET? OBJ,DOORBIT /TRUE RFALSE ?CCL31: LOC PROTAGONIST EQUAL? STACK,PILOT-SEAT,COPILOT-SEAT \TRUE EQUAL? OBJ,RADIO,KEYPAD,PSEUDO-OBJECT /FALSE RTRUE .FUNCT META-LOC,OBJ ?PRG1: ZERO? OBJ /FALSE EQUAL? OBJ,BED \?CCL7 RETURN HERE ?CCL7: IN? OBJ,GLOBAL-OBJECTS \?CND3 RETURN GLOBAL-OBJECTS ?CND3: IN? OBJ,ROOMS \?CCL11 RETURN OBJ ?CCL11: LOC OBJ >OBJ JUMP ?PRG1 .FUNCT OTHER-SIDE,DOBJ,P=0,TEE ?PRG1: NEXTP HERE,P >P LESS? P,LOW-DIRECTION /FALSE GETPT HERE,P >TEE PTSIZE TEE EQUAL? STACK,DEXIT \?PRG1 GETB TEE,DEXITOBJ EQUAL? STACK,DOBJ \?PRG1 RETURN P .FUNCT ULTIMATELY-IN?,OBJ,CONT=0 ZERO? CONT \?CND1 SET 'CONT,WINNER ?CND1: ZERO? OBJ /FALSE IN? OBJ,CONT /TRUE IN? OBJ,ROOMS /FALSE LOC OBJ CALL ULTIMATELY-IN?,STACK,CONT RSTACK .FUNCT SEE-INSIDE?,OBJ ZERO? OBJ /FALSE FSET? OBJ,INVISIBLE /FALSE FSET? OBJ,TRANSBIT /TRUE FSET? OBJ,OPENBIT /TRUE RFALSE .FUNCT GLOBAL-IN?,OBJ1,OBJ2,TEE GETPT OBJ2,P?GLOBAL >TEE ZERO? TEE /FALSE PTSIZE TEE SUB STACK,1 CALL ZMEMQB,OBJ1,TEE,STACK RSTACK .FUNCT FIND-IN,WHERE,FLAG-IN-QUESTION,STRING=0,OBJ,RECURSIVE-OBJ FIRST? WHERE >OBJ /?KLU15 ?KLU15: ZERO? OBJ /FALSE ?PRG3: FSET? OBJ,FLAG-IN-QUESTION \?CCL7 FSET? OBJ,INVISIBLE /?CCL7 ZERO? STRING \?CCL11 RETURN OBJ ?CCL11: PRINTC 91 PRINT STRING CALL TPRINT,OBJ PRINTC 93 CRLF RETURN OBJ ?CCL7: CALL FIND-IN,OBJ,FLAG-IN-QUESTION >RECURSIVE-OBJ ZERO? RECURSIVE-OBJ /?CCL13 RETURN RECURSIVE-OBJ ?CCL13: NEXT? OBJ >OBJ /?PRG3 RFALSE .FUNCT NOW-DARK? ZERO? LIT /FALSE CALL LIT?,HERE ZERO? STACK \FALSE SET 'LIT,FALSE-VALUE ZERO? P-IT-OBJECT /?CND6 CALL ULTIMATELY-IN?,P-IT-OBJECT ZERO? STACK \?CND6 SET 'P-IT-OBJECT,FALSE-VALUE ?CND6: PRINTR " It is now too dark to see." .FUNCT NOW-LIT? ZERO? LIT \FALSE CALL LIT?,HERE ZERO? STACK /FALSE SET 'LIT,TRUE-VALUE CRLF CALL V-LOOK RSTACK .FUNCT LOC-CLOSED,L LOC PRSO >L FSET? L,CONTBIT \FALSE FSET? L,OPENBIT /FALSE FSET? PRSO,TAKEBIT \FALSE CALL DO-FIRST,STR?23,L RSTACK .FUNCT DO-WALK,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR RSTACK .FUNCT STOP SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE RETURN 8 .FUNCT ROB,WHO,WHERE=0,N,X FIRST? WHO >X /?PRG1 ?PRG1: ZERO? X /TRUE NEXT? X >N /?KLU11 ?KLU11: FSET? X,WORNBIT /?CND5 ZERO? WHERE /?CCL9 MOVE X,WHERE JUMP ?CND5 ?CCL9: REMOVE X ?CND5: SET 'X,N JUMP ?PRG1 .FUNCT HACK-HACK,STR PRINT STR CALL TPRINT-PRSO CALL HO-HUM RSTACK .FUNCT HO-HUM CALL PICK-ONE,HO-HUM-LIST PRINT STACK CRLF RTRUE .FUNCT YUKS CALL PICK-ONE,YUK-LIST PRINT STACK CRLF RTRUE .FUNCT IMPOSSIBLES CALL PICK-ONE,IMPOSSIBLE-LIST PRINT STACK CRLF RTRUE .FUNCT WASTES CALL PICK-ONE,WASTE-LIST PRINT STACK CRLF RTRUE .ENDI