.FUNCT V-VERBOSE SET 'VERBOSITY,2 SET 'ELAPSED-TIME,0 PRINTI "Maximum verbosity." CRLF CRLF CALL1 V-LOOK RSTACK .FUNCT V-BRIEF SET 'VERBOSITY,1 SET 'ELAPSED-TIME,0 PRINTR "Brief descriptions." .FUNCT V-SUPER-BRIEF SET 'ELAPSED-TIME,0 SET 'VERBOSITY,0 PRINTR "Super-brief descriptions." .FUNCT V-DIAGNOSE GRTR? AIR-CONDITIONING-COUNTER,34 \?ELS5 CRLF ZERO? SIMULATING /?ELS10 PRINTR "You feel as if you're burning up with fever: weak, hot, and sweaty." ?ELS10: PRINTR "You detect a throbbing feeling, almost like a dull pain or a wave of heat, which is severely impairing your functioning." ?ELS5: GRTR? AIR-CONDITIONING-COUNTER,19 \?ELS19 CRLF ZERO? SIMULATING /?ELS24 PRINTR "Despite the coolness of the air, you feel hot and flushed, almost as though you were running a slight fever." ?ELS24: PRINTR "You feel a strange sensation, a physical disturbance, which you cannot seem to pin down." ?ELS19: ZERO? SIMULATING \?ELS33 PRINTR "All your systems seem to be functioning properly." ?ELS33: ZERO? BRUISED /?ELS37 PRINTI "You have some tender bruises from the beating you received." ZERO? MUGGED /?CND41 PRINTI " Also, y" PRINT HEAD-THROBS ?CND41: CRLF RTRUE ?ELS37: ZERO? MUGGED /?ELS48 PRINTI "Y" PRINT HEAD-THROBS CRLF RTRUE ?ELS48: EQUAL? SYEAR,2081 \?ELS53 CALL2 SCORE,40 PRINTI "You are weak from hunger, a dangerous condition at your age. Your last meal was... you can't even remember. You remember picking at the remains of a squirrel, but that might have been weeks ago. Your memories are jumbled." FSET? CEMETERY,ONBIT \?CND56 PRINTI " In addition, your jaw is throbbing from that attack in the cemetery." ?CND56: CRLF RTRUE ?ELS53: PRINTR "You are in good health." .FUNCT V-INVENTORY,SPARE-KLUDGE ZERO? SIMULATING \?ELS5 SET 'YES-NO-FLAG,1 CALL QUEUE,I-YES-NO,2 PRINTR "You have no appendages, remember?" ?ELS5: FIRST? PLAYER /?ELS9 PRINTR "You are empty-handed." ?ELS9: PRINTI "You are carrying:" CRLF CALL2 PRINT-CONT,PLAYER RSTACK .FUNCT V-QUIT PRINTI "Do you really want to quit?" CALL1 YES? ZERO? STACK /?ELS7 QUIT RTRUE ?ELS7: SET 'ELAPSED-TIME,0 PRINTR "Ok." .FUNCT V-RESTART SET 'ELAPSED-TIME,0 PRINTI "Do you wish to restart?" CALL1 YES? ZERO? STACK /?ELS7 PRINTI "Restarting." CRLF RESTART PRINTR "Failed." ?ELS7: PRINTR "Ok." .FUNCT FINISH PUTB P-INBUF,0,20 CRLF PRINTI "Would you like to start over, restore a saved position, or end this session? (Type RESTART, RESTORE, or QUIT): >" READ P-INBUF,P-LEXV PUTB P-INBUF,0,60 GET P-LEXV,1 EQUAL? STACK,W?RESTART \?ELS7 RESTART PRINTI "Failed." CRLF CALL1 FINISH RSTACK ?ELS7: GET P-LEXV,1 EQUAL? STACK,W?RESTORE \?ELS11 RESTORE ZERO? STACK /?ELS16 PRINTR "Bug #4M" ?ELS16: PRINTI "Failed." CRLF CALL1 FINISH RSTACK ?ELS11: GET P-LEXV,1 EQUAL? STACK,W?QUIT,W?Q \?ELS24 QUIT RTRUE ?ELS24: CALL1 FINISH RSTACK .FUNCT YES?,CHAR,X=0 PRINTI " (y/n) >" ?PRG1: BUFOUT FALSE-VALUE BUFOUT TRUE-VALUE INPUT 1 >CHAR EQUAL? CHAR,89,121 /?THN6 EQUAL? CHAR,217,249 \?ELS5 ?THN6: SET 'X,TRUE-VALUE CRLF JUMP ?REP2 ?ELS5: EQUAL? CHAR,78,110 /?THN10 EQUAL? CHAR,206,238 \?ELS9 ?THN10: CRLF JUMP ?REP2 ?ELS9: CRLF PRINTI "[Type Y or N] >" JUMP ?PRG1 ?REP2: ZERO? X /FALSE RTRUE .FUNCT V-RESTORE RESTORE ZERO? STACK /?ELS5 PRINTR "Bug #4M" ?ELS5: SET 'ELAPSED-TIME,0 PRINTR "Restore failed." .FUNCT V-SAVE,X SAVE >X SET 'ELAPSED-TIME,0 ZERO? X \?ELS5 PRINTR "Save failed." ?ELS5: EQUAL? X,1 \?ELS9 PRINTR "Ok, saved." ?ELS9: SET 'L-MODE,FALSE-VALUE SET 'L-HERE,FALSE-VALUE SET 'L-DATE,FALSE-VALUE SET 'L-RECORDING,FALSE-VALUE PRINTI "Ok, restored." CRLF CRLF CALL1 STATUS-LINE CALL1 V-LOOK EQUAL? HERE,THE-COACHMAN,SIMONS \?ELS18 EQUAL? MEAL-STATUS,4 \?ELS18 DEC 'WAITER-COUNTER CALL1 I-MEAL RTRUE ?ELS18: EQUAL? HERE,NEWS \?ELS22 CALL2 NEWS-F,M-END RTRUE ?ELS22: EQUAL? HERE,TUBE-JUNCTION \?ELS24 CALL2 TUBE-JUNCTION-F,M-END RTRUE ?ELS24: FSET? HERE,TUBEBIT \TRUE CALL2 RED-TUBE-STATION-F,M-END CALL2 BROWN-TUBE-STATION-F,M-END RTRUE .FUNCT V-SCRIPT SET 'ELAPSED-TIME,0 GET 0,8 BTST STACK,1 \?ELS5 PRINTR "[Scripting is already on!]" ?ELS5: PRINTI "[Scripting is now on.]" CRLF DIROUT D-PRINTER-ON DIROUT D-SCREEN-OFF CALL2 COPR-NOTICE,STR?253 CALL1 V-VERSION DIROUT D-SCREEN-ON RTRUE .FUNCT V-UNSCRIPT SET 'ELAPSED-TIME,0 GET 0,8 BTST STACK,1 \?ELS5 DIROUT D-SCREEN-OFF CALL2 COPR-NOTICE,STR?254 CALL1 V-VERSION DIROUT D-SCREEN-ON DIROUT D-PRINTER-OFF PRINTR "[Scripting is now off.]" ?ELS5: PRINTR "[Scripting is already off!]" .FUNCT COPR-NOTICE,STRING PRINTI "Here " PRINT STRING PRINTI " a transcript of interaction with " RTRUE .FUNCT V-VERSION,CNT=17,V GET 0,1 BAND STACK,2047 >V SET 'ELAPSED-TIME,0 CALL1 TITLE-PRINT CRLF PRINTI "Infocom interactive fiction - a science fiction story Copyright (c) 1985 by Infocom, Inc. All rights reserved." CRLF CALL1 TITLE-PRINT PRINTI " is a trademark of Infocom, Inc. Release " PRINTN V PRINTI " / Serial number " ?PRG5: IGRTR? 'CNT,23 \?ELS9 JUMP ?REP6 ?ELS9: GETB 0,CNT PRINTC STACK JUMP ?PRG5 ?REP6: CRLF RTRUE .FUNCT V-$VERIFY EQUAL? PRSO,INTNUM \?ELS5 EQUAL? P-NUMBER,469 \?ELS5 PRINTN SERIAL CRLF RTRUE ?ELS5: SET 'ELAPSED-TIME,0 PRINTI "EZIP Interpreter " GETB 0,30 PRINTN STACK PRINTI ", Version " GETB 0,31 PRINTC STACK PRINTI ". Verifying..." CRLF VERIFY \?ELS22 PRINTR "Good." ?ELS22: CRLF PRINTR "** Bad **" .FUNCT V-$REFRESH SET 'ELAPSED-TIME,0 CALL1 REFRESH-STATUS-LINE RSTACK .FUNCT REFRESH-STATUS-LINE SET 'L-RECORDING,FALSE-VALUE SET 'L-HERE,FALSE-VALUE SET 'L-MODE,FALSE-VALUE SET 'L-DATE,FALSE-VALUE CALL INIT-STATUS-LINE,2,TRUE-VALUE CALL1 STATUS-LINE RSTACK .FUNCT V-$COMMAND-FILE SET 'ELAPSED-TIME,0 DIRIN 1 RTRUE .FUNCT V-$RANDOM SET 'ELAPSED-TIME,0 EQUAL? PRSO,INTNUM /?ELS5 PRINTR "Use a number!" ?ELS5: SUB 0,P-NUMBER RANDOM STACK RTRUE .FUNCT V-$RECORD SET 'ELAPSED-TIME,0 DIROUT D-RECORD-ON RTRUE .FUNCT V-$UNRECORD SET 'ELAPSED-TIME,0 DIROUT D-RECORD-OFF RTRUE .FUNCT V-ABORT EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: ZERO? SIMULATING /?ELS9 ZERO? RECORDING /?ELS13 PRINTI "Deactivating the record feature and a" JUMP ?CND11 ?ELS13: PRINTI "A" ?CND11: PRINTI "borting to " PRINTD COMM-MODE CALL2 JIGS-UP,STR?255 RSTACK ?ELS9: CALL2 ERR,STR?256 RSTACK .FUNCT V-ABORT-OBJECT EQUAL? PRSO,SIMULATION-MODE \?ELS5 CALL1 V-ABORT RSTACK ?ELS5: PRINT RECOGNIZE CRLF RTRUE .FUNCT V-ALARM EQUAL? PRSO,ROOMS \?ELS5 CALL PERFORM,V?ALARM,ME RTRUE ?ELS5: PRINTI "I don't think" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is sleeping." .FUNCT V-ANSWER CALL1 ANSWER-SAY-SHARE ZERO? STACK \TRUE PRINTI "Nobody is awaiting your answer." CRLF CALL1 CLEAR-BUF RSTACK .FUNCT ANSWER-SAY-SHARE EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS5 EQUAL? MEAL-STATUS,1 \?ELS5 CALL1 NEXT-WORD-YES? ZERO? STACK /?ELS5 CALL1 V-YES CALL1 CLEAR-BUF RTRUE ?ELS5: EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS9 EQUAL? MEAL-STATUS,1 \?ELS9 GET P-LEXV,P-CONT EQUAL? STACK,W?NO \?ELS9 CALL1 V-NO CALL1 CLEAR-BUF RTRUE ?ELS9: EQUAL? HERE,HOSPITAL,POLICE-STATION \?ELS13 CALL1 NEXT-WORD-YES? ZERO? STACK /?ELS13 CALL1 V-YES CALL1 CLEAR-BUF RTRUE ?ELS13: EQUAL? HERE,HOSPITAL,POLICE-STATION \?ELS17 GET P-LEXV,P-CONT EQUAL? STACK,W?NO \?ELS17 CALL1 V-NO CALL1 CLEAR-BUF RTRUE ?ELS17: GRTR? GRIMWOLD-COUNTER,0 \?ELS21 CALL1 NEXT-WORD-YES? ZERO? STACK /?ELS21 CALL1 V-YES CALL1 CLEAR-BUF RTRUE ?ELS21: GRTR? GRIMWOLD-COUNTER,0 \FALSE GET P-LEXV,P-CONT EQUAL? STACK,W?NO \FALSE CALL1 V-NO CALL1 CLEAR-BUF RTRUE .FUNCT NEXT-WORD-YES? GET P-LEXV,P-CONT EQUAL? STACK,W?YES,W?Y,W?YEAH /TRUE GET P-LEXV,P-CONT EQUAL? STACK,W?OK,W?OKAY,W?SURE /TRUE GET P-LEXV,P-CONT EQUAL? STACK,W?YEA,W?YUP,W?YEP /TRUE GET P-LEXV,P-CONT EQUAL? STACK,W?AYE,W?AFFIRMATI \FALSE RTRUE .FUNCT V-ASK-ABOUT EQUAL? PRSO,ME \?ELS5 CALL PERFORM,V?TELL,ME RTRUE ?ELS5: FSET? PRSO,ACTORBIT \?ELS7 SET 'WINNER,PRSO CALL PERFORM,V?TELL-ABOUT,ME,PRSI SET 'P-IT-OBJECT,WINNER SET 'WINNER,PLAYER RTRUE ?ELS7: CALL PERFORM,V?TELL,PRSO RTRUE .FUNCT V-ASK-NO-ONE-FOR,ACTOR CALL FIND-IN,HERE,ACTORBIT >ACTOR ZERO? ACTOR /?ELS5 CALL PERFORM,V?ASK-FOR,ACTOR,PRSO RTRUE ?ELS5: PRINTR "There's no one here to ask!" .FUNCT V-ASK-FOR PRINTI "Not surprisingly," CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " doesn't oblige." .FUNCT V-BITE CALL2 HACK-HACK,STR?257 RSTACK .FUNCT PRE-BOARD LOC PLAYER EQUAL? PRSO,STACK \FALSE PRINT LOOK-AROUND CRLF RTRUE .FUNCT V-BOARD FSET? PRSO,VEHBIT \?ELS5 MOVE PLAYER,PRSO EQUAL? PRSO,STADIUM-STANDS \?CND6 FCLEAR PRSO,FURNITUREBIT ?CND6: PRINTI "You are now " EQUAL? PRSO,GLOBAL-TABLE,DINETTE-SET \?ELS13 PRINTI "seated at" JUMP ?CND11 ?ELS13: FSET? PRSO,FURNITUREBIT \?ELS17 PRINTI "on" JUMP ?CND11 ?ELS17: PRINTI "in" ?CND11: CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?ELS5: PRINTI "You can't get into" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" .FUNCT PRE-BUY ZERO? SIMULATING \?ELS5 CALL PERFORM,V?EAT,PRSO RTRUE ?ELS5: EQUAL? PRSO,MEAL \?ELS7 EQUAL? HERE,SIMONS,THE-COACHMAN /FALSE ?ELS7: EQUAL? PRSO,CREDIT-CARD \?ELS11 PRINTR "You must think that money grows on trees." ?ELS11: CALL2 HELD?,CREDIT-CARD ZERO? STACK \?ELS15 PRINTI "You don't have your " PRINTD CREDIT-CARD PRINTR "." ?ELS15: MOVE CREDIT-CARD,PLAYER RFALSE .FUNCT V-BUY PRINTI "You can't buy" CALL2 ARTICLE,PRSO PRINTR "!" .FUNCT V-BUY-WITH EQUAL? PRSI,CREDIT-CARD \?ELS5 CALL PERFORM,V?BUY,PRSO RTRUE ?ELS5: ZERO? SIMULATING \?ELS7 CALL PERFORM,V?EAT,PRSO RTRUE ?ELS7: PRINTI "You can buy things only with your " PRINTD CREDIT-CARD PRINTR "." .FUNCT V-CALL FSET? PRSO,ACTORBIT \?ELS5 PRINTI "You do so, but" CALL2 ARTICLE,PRSO PRINTR " doesn't seem to hear you." ?ELS5: PRINTR "That's an odd thought." .FUNCT V-CHASTISE PRINTR "Use prepositions to indicate precisely what you want to do: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc." .FUNCT V-CLIMB-DOWN EQUAL? PRSO,ROOMS \?ELS5 CALL2 DO-WALK,P?DOWN RSTACK ?ELS5: CALL1 V-LOCK RSTACK .FUNCT V-CLIMB-FOO EQUAL? PRSO,ROOMS \?ELS5 CALL2 DO-WALK,P?UP RSTACK ?ELS5: CALL1 V-LOCK RSTACK .FUNCT V-CLIMB-ON FSET? PRSO,VEHBIT \?ELS5 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS5: PRINTI "You can't climb onto" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-CLIMB-OVER CALL1 V-LOCK RSTACK .FUNCT V-CLIMB-UP EQUAL? PRSO,ROOMS \?ELS5 CALL2 DO-WALK,P?UP RSTACK ?ELS5: CALL1 V-LOCK RSTACK .FUNCT V-CLOSE FSET? PRSO,SURFACEBIT /?THN6 FSET? PRSO,ACTORBIT \?ELS5 ?THN6: CALL1 V-COUNT RSTACK ?ELS5: FSET? PRSO,VEHBIT \?ELS9 PRINTR "Huh?" ?ELS9: FSET? PRSO,DOORBIT /?THN14 FSET? PRSO,CONTBIT \?ELS13 ?THN14: FSET? PRSO,OPENBIT \?ELS20 PRINTI "Okay," CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is now closed." CRLF FCLEAR PRSO,OPENBIT RTRUE ?ELS20: PRINT ALREADY-CLOSED CRLF RTRUE ?ELS13: CALL1 TELL-ME-HOW RSTACK .FUNCT V-COMFORT FSET? PRSO,ACTORBIT \?ELS5 PRINTI "But" CALL2 ARTICLE,PRSO PRINTR " doesn't need comforting." ?ELS5: CALL1 V-COUNT RSTACK .FUNCT V-COUNT CALL2 PICK-ONE,IMPOSSIBLES PRINT STACK CRLF RTRUE .FUNCT V-CROSS PRINTI "You can't cross" CALL2 ARTICLE,PRSO PRINTR "." .FUNCT V-CRY ZERO? MITCHELL-RAID-FLAG /?ELS5 PRINTR "The tears come easily." ?ELS5: ZERO? SIMULATING /?ELS10 PRINTR "A tear trickles down your cheek." ?ELS10: PRINTR "You have no tear ducts." .FUNCT V-CUT ZERO? PRSI \?ELS5 CALL1 V-LOCK RSTACK ?ELS5: PRINTI "The ""cutting edge"" of" CALL2 ARTICLE,PRSI PRINTR " is hardly adequate." .FUNCT V-DANCE PRINTR "That was fun. Well, at least good exercise." .FUNCT V-DATE PRINTI "Today is " ZERO? SIMULATING /?ELS5 PRINTN SMONTH PRINTI "/" PRINTN SDATE PRINTI "/" PRINTN SYEAR JUMP ?CND3 ?ELS5: PRINTN MONTH PRINTI "/" PRINTN DATE PRINTI "/" PRINTN YEAR ?CND3: PRINTR "." .FUNCT V-DIG CALL1 V-YELL RSTACK .FUNCT V-DISEMBARK FSET? PRSO,TAKEBIT \?ELS5 CALL2 META-LOC,PRSO EQUAL? STACK,HERE \?ELS5 IN? PRSO,HERE /?ELS5 IN? PRSO,PLAYER /?ELS5 CALL PERFORM,V?TAKE,PRSO RTRUE ?ELS5: LOC PRSO EQUAL? STACK,WALLET \?ELS9 CALL2 HELD?,WALLET ZERO? STACK /?ELS9 CALL PERFORM,V?TAKE,PRSO,WALLET RTRUE ?ELS9: LOC PLAYER EQUAL? PRSO,STACK /?ELS13 PRINTI "But you're not in" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" ?ELS13: EQUAL? PRSO,SEAT \?ELS19 FSET? PRSO,ONBIT \?ELS19 FCLEAR PRSO,ONBIT MOVE PLAYER,HERE PRINTR "You stand slowly, still feeling a little shaky from your joybooth experience." ?ELS19: MOVE PLAYER,HERE PRINTI "You are no longer " EQUAL? PRSO,DINETTE-SET,RESTAURANT-TABLE \?ELS30 PRINTI "at" JUMP ?CND28 ?ELS30: FSET? PRSO,FURNITUREBIT \?ELS34 PRINTI "on" JUMP ?CND28 ?ELS34: PRINTI "in" ?CND28: EQUAL? PRSO,STADIUM-STANDS \?CND41 FSET PRSO,FURNITUREBIT ?CND41: CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-DISPLAY CALL1 V-YELL RSTACK .FUNCT V-DRINK FSET? PRSO,DRINKBIT \?ELS5 MOVE PRSO,LOCAL-GLOBALS PRINTR "Drunk." ?ELS5: PRINTR "You can't drink that!" .FUNCT V-DRINK-FROM CALL1 V-COUNT RSTACK .FUNCT PRE-DROP CALL1 IDROP ZERO? STACK \TRUE RFALSE .FUNCT V-DROP MOVE PRSO,HERE PRINTR "Dropped." .FUNCT V-EAT FSET? PRSO,EATBIT \?ELS5 MOVE PRSO,LOCAL-GLOBALS PRINTR "Eaten." ?ELS5: PRINTI "Nutritionists agree that" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is inedible." .FUNCT V-ENTER,VEHICLE ZERO? PRSO /?ELS5 IN? PRSO,ROOMS \?ELS5 CALL2 GOTO,PRSO RSTACK ?ELS5: EQUAL? HERE,TUBE-JUNCTION \?ELS9 CALL2 DO-WALK,P?IN RSTACK ?ELS9: CALL FIND-IN,HERE,VEHBIT >VEHICLE ZERO? VEHICLE /?ELS11 CALL PERFORM,V?BOARD,VEHICLE RTRUE ?ELS11: CALL2 DO-WALK,P?IN RSTACK .FUNCT V-EXAMINE CALL1 UNSEEABLE-OBJECT ZERO? STACK \TRUE FSET? PRSO,DOORBIT /?THN8 FSET? PRSO,VEHBIT \?ELS7 ?THN8: CALL1 V-LOOK-INSIDE RSTACK ?ELS7: FSET? PRSO,ACTORBIT /?THN12 FSET? PRSO,MYBIT \?ELS11 ?THN12: PRINTI "You see nothing unusual about" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?ELS11: FSET? PRSO,CONTBIT \?ELS19 FSET? PRSO,OPENBIT /?THN25 FSET? PRSO,SURFACEBIT \?ELS24 ?THN25: CALL1 V-LOOK-INSIDE RSTACK ?ELS24: PRINTR "It's closed." ?ELS19: FSET? PRSO,READBIT \?ELS32 CALL PERFORM,V?READ,PRSO RTRUE ?ELS32: EQUAL? PRSO,HEAD \?ELS34 PRINTR "That would involve quite a contortion." ?ELS34: PRINTI "Totally ordinary looking " CALL2 DPRINT,PRSO PRINTR "." .FUNCT UNSEEABLE-OBJECT FSET? PRSO,UNSEENBIT \FALSE PRINTI "You can't actually see" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-EXIT LOC PLAYER FSET? STACK,VEHBIT \?ELS5 LOC PLAYER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?ELS5: CALL2 DO-WALK,P?OUT RSTACK .FUNCT V-FEED PRINTI "A nice thought, but" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " doesn't need feeding." .FUNCT V-FILL PRINTR "You can't fill that!" .FUNCT V-FIND,WHERE=0,L LOC PRSO >L EQUAL? PRSO,HEAD,HANDS \?ELS5 SET 'YES-NO-FLAG,2 CALL QUEUE,I-YES-NO,2 PRINTI "Are you sure" CALL ARTICLE,PRSO,TRUE-VALUE CALL2 PLURAL,PRSO PRINTR " lost?" ?ELS5: IN? PRSO,PLAYER \?ELS11 PRINTR "You have it!" ?ELS11: CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK \?THN16 IN? PRSO,GLOBAL-OBJECTS /?THN16 ZERO? L \?ELS15 ?THN16: PRINTR "You figure it out!" ?ELS15: FSET? L,ACTORBIT \?ELS21 CALL2 VISIBLE?,L ZERO? STACK /?ELS21 PRINTI "As far as you can tell," CALL ARTICLE,L,TRUE-VALUE PRINTR " has it." ?ELS21: FSET? L,CONTBIT \?ELS29 CALL2 VISIBLE?,PRSO ZERO? STACK /?ELS29 PRINTI "It's in" CALL ARTICLE,L,TRUE-VALUE PRINTR "." ?ELS29: CALL2 VISIBLE?,PRSO ZERO? STACK /?ELS37 PRINTR "Right in front of you!" ?ELS37: ZERO? WHERE /?ELS41 PRINTR "Beats me." ?ELS41: PRINTR "You'll have to do that yourself." .FUNCT V-FIRST-LOOK CALL1 DESCRIBE-ROOM ZERO? STACK /FALSE EQUAL? VERBOSITY,1,2 \FALSE CALL1 DESCRIBE-OBJECTS RSTACK .FUNCT V-FLUSH CALL1 V-COUNT RSTACK .FUNCT V-FOLLOW CALL2 VISIBLE?,PRSO ZERO? STACK /?ELS5 CALL1 RIGHT-HERE RSTACK ?ELS5: FSET? PRSO,ACTORBIT /?ELS7 CALL1 V-COUNT RSTACK ?ELS7: EQUAL? FOLLOW-FLAG,9 \?ELS9 PRINTI "You didn't notice which way" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " went." ?ELS9: PRINTI "You have no idea where" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is." .FUNCT I-UNFOLLOW SET 'FOLLOW-FLAG,0 RFALSE .FUNCT PRE-GIVE CALL1 IDROP ZERO? STACK \TRUE RFALSE .FUNCT V-GIVE FSET? PRSI,ACTORBIT \?ELS5 PRINTI "After a moment," CALL ARTICLE,PRSI,TRUE-VALUE PRINTR " refuses your offer." ?ELS5: PRINTI "You can't give" CALL2 ARTICLE,PRSO PRINTI " to" CALL2 ARTICLE,PRSI PRINTR "!" .FUNCT V-HANG CALL1 V-COUNT RSTACK .FUNCT V-HELLO,ACTOR ZERO? PRSO /?ELS5 FSET? PRSO,ACTORBIT \?ELS11 PRINTI "[That's not the correct way to speak to people. Try """ CALL2 DPRINT,PRSO PRINTR ", hello.""]" ?ELS11: CALL1 V-COUNT RSTACK ?ELS5: CALL FIND-IN,HERE,ACTORBIT >ACTOR ZERO? ACTOR /?ELS17 CALL2 ADDRESS-DIRECTLY,ACTOR RSTACK ?ELS17: CALL PERFORM,V?TELL,ME RTRUE .FUNCT V-HELP SET 'ELAPSED-TIME,0 PRINTR "[If you're really stuck, you can order an InvisiClues Hint Booklet from your dealer, or via mail order using the form that came in your package.]" .FUNCT V-HIDE PRINTR "There's no place to hide here." .FUNCT V-HOLD FSET? PRSO,ACTORBIT \?ELS5 CALL PERFORM,V?COMFORT,PRSO RTRUE ?ELS5: CALL PERFORM,V?TAKE,PRSO RTRUE .FUNCT V-INCOMPLETE-QUESTION PRINTR "Why? When? Which?" .FUNCT V-KICK CALL2 HACK-HACK,STR?258 RSTACK .FUNCT V-KILL PRINTR "Violence solves nothing." .FUNCT V-KNOCK FSET? PRSO,DOORBIT \?ELS5 PRINTR "Nothing happens." ?ELS5: CALL2 HACK-HACK,STR?259 RSTACK .FUNCT V-KISS PRINTR "You reconsider." .FUNCT V-LEAP ZERO? PRSO /?ELS5 IN? PRSO,HERE /?ELS5 CALL1 V-COUNT RSTACK ?ELS5: CALL1 V-SKIP RSTACK .FUNCT V-LEAVE ZERO? PRSO \?CND1 SET 'PRSO,ROOMS ?CND1: EQUAL? PRSO,ROOMS \?ELS8 CALL2 DO-WALK,P?OUT RSTACK ?ELS8: LOC PLAYER EQUAL? PRSO,STACK \?ELS10 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?ELS10: CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT V-LIE-DOWN EQUAL? PRSO,ROOMS \?ELS5 EQUAL? HERE,BEDROOM \?ELS10 CALL PERFORM,V?LIE-DOWN,BED RTRUE ?ELS10: CALL PERFORM,V?LIE-DOWN,GROUND RTRUE ?ELS5: CALL PERFORM,V?BOARD,PRSO RTRUE .FUNCT V-LISTEN EQUAL? HERE,LIBRARY-ROOM,INTERFACE-ROOM \?ELS5 CALL2 ERR,STR?260 RSTACK ?ELS5: ZERO? PRSO \?ELS7 EQUAL? HERE,COMM-ROOM \?ELS12 CALL2 ERR,STR?261 RSTACK ?ELS12: EQUAL? HERE,CONTROL-CENTER \?ELS14 CALL PERFORM,V?LISTEN,CONVERSATION RTRUE ?ELS14: EQUAL? HERE,NEWS \?ELS16 CALL PERFORM,V?EXAMINE,CURRENT-FEED RTRUE ?ELS16: EQUAL? HERE,WAREHOUSE-2 \?ELS18 PRINTR "A loud alarm is ringing." ?ELS18: EQUAL? HERE,DORM \?ELS22 EQUAL? SYEAR,2041,2051 \?ELS22 PRINTR "Loud music is playing nearby." ?ELS22: EQUAL? HERE,ALLEY,BAR \?ELS28 PRINTI "Loud music comes from the " EQUAL? HERE,ALLEY \?ELS35 PRINTR "end of the alley." ?ELS35: PRINTR "jukebox." ?ELS28: EQUAL? HERE,MAIN-STREET-BRIDGE \?ELS43 GRTR? WILD-DOG-COUNTER,0 \?ELS43 CALL PERFORM,V?LISTEN,BARKING RTRUE ?ELS43: IN? RYDER,HERE \?ELS47 PRINTD RYDER PRINTR " continues his harangue:" ?ELS47: EQUAL? HERE,CONSTRUCTION-SITE-1 \?ELS51 EQUAL? LIGHT-LEVEL,3 \?ELS51 CALL PERFORM,V?LISTEN,DERRICOPTERS RTRUE ?ELS51: EQUAL? HERE,CORE \?ELS55 GET HVAC-STATUS-TABLE,11 EQUAL? STACK,1 \?ELS55 CALL PERFORM,V?LISTEN,VENT RTRUE ?ELS55: PRINTR "At the moment, you hear nothing interesting." ?ELS7: PRINTI "At the moment," CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " make" FSET? PRSO,PLURALBIT /?CND68 PRINTI "s" ?CND68: PRINTR " no sound." .FUNCT V-LOCK CALL2 PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT V-LOOK EQUAL? HERE,SLEEP-ROOM,INTERFACE-ROOM /?THN6 EQUAL? HERE,LIBRARY-ROOM,SIMULATION-ROOM \?ELS5 ?THN6: GETP MODE,P?LDESC PRINT STACK CRLF RTRUE ?ELS5: EQUAL? HERE,COMM-ROOM \?ELS11 PRINTI "You have entered " PRINTD COMM-MODE PRINTI ". " EQUAL? PART-FLAG,4 /?CND16 PRINTI "The following locations are equipped with communication outlets:" CRLF ?CND16: CALL PERFORM,V?DISPLAY,OUTLETS RTRUE ?ELS11: CALL2 DESCRIBE-ROOM,TRUE-VALUE CALL2 DESCRIBE-OBJECTS,TRUE-VALUE RTRUE .FUNCT V-LOOK-BEHIND CALL1 UNSEEABLE-OBJECT ZERO? STACK \TRUE PRINTI "There is nothing behind" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-LOOK-DOWN EQUAL? PRSO,ROOMS \?ELS5 CALL PERFORM,V?EXAMINE,GROUND RTRUE ?ELS5: CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOOK-INSIDE CALL1 UNSEEABLE-OBJECT ZERO? STACK \TRUE FSET? PRSO,ACTORBIT \?ELS7 PRINTR "There is nothing special to be seen." ?ELS7: FSET? PRSO,DOORBIT \?ELS11 PRINTI "All you can tell is that" CALL ARTICLE,PRSO,TRUE-VALUE CALL2 PLURAL,PRSO FSET? PRSO,OPENBIT \?ELS18 PRINTR " open." ?ELS18: PRINTR " closed." ?ELS11: FSET? PRSO,VEHBIT \?ELS26 EQUAL? PRSO,COUCH \?ELS31 IN? JILL,HERE \?ELS31 EQUAL? JILL-COUNTER,4,10 /?THN34 EQUAL? SYEAR,2071 \?ELS31 ?THN34: CALL1 JILL-DESCFCN RSTACK ?ELS31: EQUAL? PRSO,BED \?ELS37 IN? JILL,HERE \?ELS37 EQUAL? JILL-COUNTER,0,12 /?THN40 EQUAL? SYEAR,2061 \?ELS37 ?THN40: CALL1 JILL-DESCFCN RSTACK ?ELS37: EQUAL? PRSO,SEAT \?ELS43 EQUAL? HERE,SKYCAB \?ELS43 CALL1 JILL-DESCFCN RSTACK ?ELS43: LOC PLAYER EQUAL? PRSO,STACK \?ELS47 CALL1 DESCRIBE-VEHICLE RSTACK ?ELS47: PRINTR "You see nothing special." ?ELS26: FSET? PRSO,SURFACEBIT \?ELS53 FIRST? PRSO \?ELS58 CALL2 PRINT-CONT,PRSO RSTACK ?ELS58: PRINTI "There is nothing on" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?ELS53: FSET? PRSO,CONTBIT \?ELS66 CALL2 SEE-INSIDE?,PRSO ZERO? STACK /?ELS71 FIRST? PRSO \?ELS76 CALL2 PRINT-CONT,PRSO RSTACK ?ELS76: PRINTR "It's empty." ?ELS71: FSET? PRSO,OPENBIT /?ELS82 FIRST? PRSO \?ELS82 CALL PERFORM,V?OPEN,PRSO RTRUE ?ELS82: PRINTI "It seems that" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is closed." ?ELS66: PRINTR "You can't do that." .FUNCT V-LOOK-UNDER CALL2 HELD?,PRSO ZERO? STACK /?ELS5 FSET? PRSO,WORNBIT \?ELS10 PRINTR "You're wearing it!" ?ELS10: PRINTR "You're holding it!" ?ELS5: CALL1 UNSEEABLE-OBJECT ZERO? STACK \TRUE PRINTI "There is nothing but " FSET? HERE,OUTSIDEBIT \?ELS25 PRINTI "dirt" JUMP ?CND23 ?ELS25: PRINTI "dust" ?CND23: PRINTR " there." .FUNCT V-LOOK-UP EQUAL? PRSO,ROOMS \?ELS5 FSET? HERE,OUTSIDEBIT \?ELS10 CALL PERFORM,V?EXAMINE,SKY RTRUE ?ELS10: CALL PERFORM,V?EXAMINE,CEILING RTRUE ?ELS5: CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOWER CALL1 V-RAISE RSTACK .FUNCT V-MACO EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: CALL1 PSYCH-CHECK ZERO? STACK /?ELS9 RETURN 2 ?ELS9: EQUAL? HERE,CORE \?ELS13 PRINT LOOK-AROUND CRLF RTRUE ?ELS13: EQUAL? MODE,COMM-MODE \?ELS17 CALL2 GOTO,CORE RSTACK ?ELS17: PRINT ENTER-COMM-MODE CRLF RTRUE .FUNCT V-MOVE CALL2 HELD?,PRSO ZERO? STACK /?ELS5 PRINTR "Why juggle objects?" ?ELS5: CALL1 LOC-CLOSED ZERO? STACK \TRUE FSET? PRSO,TAKEBIT \?ELS11 PRINTI "Moving" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " reveals nothing." ?ELS11: PRINTI "You can't move" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-MUNG CALL2 HACK-HACK,STR?262 RSTACK .FUNCT V-NO EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS5 EQUAL? MEAL-STATUS,1 \?ELS5 SET 'MEAL-STATUS,2 PRINTR """Fine,"" says the maitre d'. ""I'll come back when the rest of your party arrives."" He walks away." ?ELS5: GRTR? GRIMWOLD-COUNTER,0 \?ELS11 PRINTR "Grimwold fidgets impatiently." ?ELS11: EQUAL? YES-NO-FLAG,1,2,3 /?THN16 EQUAL? YES-NO-FLAG,4,5 \?ELS15 ?THN16: CALL1 V-YES RSTACK ?ELS15: EQUAL? YES-NO-FLAG,6 \?ELS19 PRINTR "Perelman looks unhappy. ""I'm counting on you.""" ?ELS19: EQUAL? YES-NO-FLAG,7 \?ELS23 EQUAL? SYEAR,2041 \?ELS28 PRINTR """Don't worry -- things'll turn around!""" ?ELS28: PRINTI """What else is new" PRINT CHANGE-AGENTS CRLF RTRUE ?ELS23: EQUAL? YES-NO-FLAG,8 \?ELS36 CALL PERFORM,V?TELL,SABOTEURS RTRUE ?ELS36: EQUAL? YES-NO-FLAG,9,11 \?ELS38 PRINTR "Jill frowns at you." ?ELS38: EQUAL? YES-NO-FLAG,10 \?ELS42 PRINTR "Jill gives you a kiss." ?ELS42: EQUAL? YES-NO-FLAG,12 \?ELS46 EQUAL? HERE,HOSPITAL \?ELS51 PRINTI "The nurse replies, ""Well, then, there's no loitering here."" She summons an orderly to escort you away." CRLF CRLF CALL2 GOTO,ELM-AND-KENNEDY SET 'FOLLOW-FLAG,13 ADD ELAPSED-TIME,2 CALL QUEUE,I-UNFOLLOW,STACK PUTP SPEAR-CARRIER,P?SDESC,STR?263 PRINTR "The orderly releases you and reenters the hospital." ?ELS51: EQUAL? HERE,POLICE-STATION \?ELS57 PRINTR """Then scram before I put you in a cell.""" ?ELS57: CALL1 V-YES RSTACK ?ELS46: PRINTR "You sound rather negative." .FUNCT V-OFF FSET? PRSO,LIGHTBIT \?ELS5 FSET? PRSO,ONBIT \?ELS10 FCLEAR PRSO,ONBIT PRINTR "It is now off." ?ELS10: PRINTR "It is already off." ?ELS5: PRINTR "You can't turn that off." .FUNCT V-ON FSET? PRSO,LIGHTBIT \?ELS5 FSET? PRSO,ONBIT \?ELS10 PRINTR "It is already on." ?ELS10: FSET PRSO,ONBIT PRINTR "It is now on." ?ELS5: PRINTR "You can't turn that on." .FUNCT V-OPEN,F,STR FSET? PRSO,SURFACEBIT /?THN6 FSET? PRSO,ACTORBIT \?ELS5 ?THN6: CALL1 V-COUNT RSTACK ?ELS5: FSET? PRSO,VEHBIT \?ELS9 PRINTR "Huh?" ?ELS9: FSET? PRSO,CONTBIT \?ELS13 FSET? PRSO,OPENBIT \?ELS18 PRINT ALREADY-OPEN CRLF RTRUE ?ELS18: FSET PRSO,OPENBIT FSET PRSO,TOUCHBIT FIRST? PRSO \?THN28 FSET? PRSO,TRANSBIT \?ELS27 ?THN28: PRINTR "Opened." ?ELS27: PRINTI "Opening" CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " reveals" CALL2 PRINT-CONTENTS,PRSO PRINTR "." ?ELS13: FSET? PRSO,DOORBIT \?ELS41 FSET? PRSO,OPENBIT \?ELS46 PRINT ALREADY-OPEN CRLF RTRUE ?ELS46: PRINTI "Okay," CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is now open." CRLF FSET PRSO,OPENBIT RTRUE ?ELS41: CALL1 TELL-ME-HOW RSTACK .FUNCT V-PAY-FOR EQUAL? PRSO,MEAL \?ELS5 EQUAL? MEAL-STATUS,4 \?ELS5 CALL PERFORM,V?GIVE,CREDIT-CARD,SPEAR-CARRIER RTRUE ?ELS5: CALL PERFORM,V?BUY,PRSO RTRUE .FUNCT V-PCAF EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: CALL1 PSYCH-CHECK ZERO? STACK /?ELS9 RETURN 2 ?ELS9: EQUAL? HERE,CAFETERIA \?ELS13 PRINT LOOK-AROUND CRLF RTRUE ?ELS13: EQUAL? MODE,COMM-MODE \?ELS17 CALL2 GOTO,CAFETERIA RSTACK ?ELS17: PRINT ENTER-COMM-MODE CRLF RTRUE .FUNCT V-PEOF EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: EQUAL? HERE,OFFICE \?ELS9 PRINT LOOK-AROUND CRLF RTRUE ?ELS9: EQUAL? MODE,COMM-MODE \?ELS13 CALL2 GOTO,OFFICE RSTACK ?ELS13: PRINT ENTER-COMM-MODE CRLF RTRUE .FUNCT V-PICK CALL1 V-COUNT RSTACK .FUNCT V-PLAY PRINTR "You can't play that!" .FUNCT V-PLAY-WITH PRINTR "That's a silly idea." .FUNCT V-POINT PRINTR "That would be pointless." .FUNCT V-POUR CALL1 V-LOCK RSTACK .FUNCT V-PPCC EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: CALL1 PSYCH-CHECK ZERO? STACK /?ELS9 RETURN 2 ?ELS9: EQUAL? HERE,CONTROL-CENTER \?ELS13 PRINT LOOK-AROUND CRLF RTRUE ?ELS13: EQUAL? MODE,COMM-MODE \?ELS17 CALL2 GOTO,CONTROL-CENTER RSTACK ?ELS17: PRINT ENTER-COMM-MODE CRLF RTRUE .FUNCT V-PRAY ZERO? SIMULATING /?ELS5 SET 'ELAPSED-TIME,3 PRINTR "Although you've never been particularly religious, you pray for several minutes." ?ELS5: PRINTR "You do so. The Creator of the Universe, if He exists, is likely to listen with compassion to your prayers, as much as He would to the prayers of any man." .FUNCT V-PUSH CALL2 HACK-HACK,STR?264 RSTACK .FUNCT PRE-PUT EQUAL? PRSI,GROUND \?ELS5 CALL PERFORM,V?DROP,PRSO RTRUE ?ELS5: LOC PRSI EQUAL? PRSO,STACK \?ELS7 PRINTI "You can't put" CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " in" CALL ARTICLE,PRSI,TRUE-VALUE PRINTI " when" CALL ARTICLE,PRSI,TRUE-VALUE PRINTI " is already in" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" ?ELS7: EQUAL? PRSI,ME,HEAD \?ELS19 EQUAL? PRSO,HEADSET /FALSE ?ELS19: CALL1 IDROP ZERO? STACK \TRUE RFALSE .FUNCT V-PUT,CONT-CLOSED=0,?TMP1 EQUAL? PRSO,HEADSET \?ELS3 EQUAL? PRSI,ME,HEAD \?ELS3 CALL PERFORM,V?WEAR,HEADSET RTRUE ?ELS3: FSET? PRSI,OPENBIT /?ELS7 FSET? PRSI,DOORBIT /?ELS7 FSET? PRSI,CONTBIT /?ELS7 FSET? PRSI,SURFACEBIT /?ELS7 FSET? PRSI,VEHBIT /?ELS7 PRINTI "You can't put" CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " in" CALL2 ARTICLE,PRSI PRINTR "!" ?ELS7: EQUAL? PRSI,PRSO /?THN18 CALL2 HELD?,PRSO ZERO? STACK /?ELS17 FSET? PRSO,TAKEBIT /?ELS17 ?THN18: PRINTR "How can you do that?" ?ELS17: IN? PRSO,PRSI \?ELS25 PRINTI "I think" CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is already in" CALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." ?ELS25: FSET? PRSI,OPENBIT /?CND1 FSET? PRSI,SURFACEBIT /?CND1 SET 'CONT-CLOSED,TRUE-VALUE ?CND1: CALL2 WEIGHT,PRSI >?TMP1 GETP PRSO,P?SIZE ADD ?TMP1,STACK >?TMP1 GETP PRSI,P?SIZE SUB ?TMP1,STACK >?TMP1 GETP PRSI,P?CAPACITY GRTR? ?TMP1,STACK \?ELS40 FSET? PRSI,VEHBIT \?ELS45 CALL1 V-YELL RSTACK ?ELS45: ZERO? CONT-CLOSED /?ELS50 FSET PRSI,OPENBIT PRINTI "You open" CALL ARTICLE,PRSI,TRUE-VALUE PRINTI " and discover that t" JUMP ?CND48 ?ELS50: PRINTI "T" ?CND48: PRINTR "here's not enough room inside." ?ELS40: CALL2 HELD?,PRSO ZERO? STACK \?ELS63 CALL1 ITAKE EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE ?ELS63: MOVE PRSO,PRSI FSET PRSO,TOUCHBIT EQUAL? PRSI,BUREAU \?ELS72 PRINTI "You put" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " on the bureau." ?ELS72: PRINTI "Done" ZERO? CONT-CLOSED /?CND81 FSET PRSI,OPENBIT PRINTI " (after opening" CALL ARTICLE,PRSI,TRUE-VALUE PRINTI ", of course)" ?CND81: PRINTR "." .FUNCT V-PUT-AWAY EQUAL? PRSO,DRIVERS-LICENSE,RATION-CARD,CREDIT-CARD \?ELS5 CALL PERFORM,V?PUT,PRSO,WALLET RTRUE ?ELS5: PRINTI "You don't have a good place to put" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-PUT-BEHIND CALL1 V-YELL RSTACK .FUNCT V-PUT-ON EQUAL? PRSI,ME \?ELS5 CALL PERFORM,V?WEAR,PRSO RTRUE ?ELS5: FSET? PRSI,SURFACEBIT /?THN8 FSET? PRSI,FURNITUREBIT \?ELS7 ?THN8: CALL1 V-PUT RSTACK ?ELS7: PRINTI "There's no good surface on" CALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." .FUNCT V-PUT-UNDER CALL1 V-YELL RSTACK .FUNCT V-RAPE CALL1 V-KISS RSTACK .FUNCT V-RAISE CALL2 HACK-HACK,STR?265 RSTACK .FUNCT V-RCRO EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: CALL1 PSYCH-CHECK ZERO? STACK /?ELS9 RETURN 2 ?ELS9: EQUAL? HERE,ROOFTOP \?ELS13 PRINT LOOK-AROUND CRLF RTRUE ?ELS13: EQUAL? MODE,COMM-MODE /?THN18 EQUAL? HERE,CORE,OFFICE,NEWS \?ELS17 ?THN18: CALL2 GOTO,ROOFTOP RSTACK ?ELS17: PRINT ENTER-COMM-MODE CRLF RTRUE .FUNCT V-REACH-IN,OBJ FSET? PRSO,CONTBIT \?THN6 FSET? PRSO,ACTORBIT \?ELS5 ?THN6: CALL1 V-LOCK RSTACK ?ELS5: FSET? PRSO,OPENBIT /?ELS9 PRINTR "It's not open." ?ELS9: FIRST? PRSO >OBJ \?THN14 FSET? OBJ,INVISIBLE /?THN14 FSET? OBJ,TAKEBIT /?ELS13 ?THN14: PRINTR "It's empty." ?ELS13: PRINTI "You reach into" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " and feel something." .FUNCT PRE-READ ZERO? PRSI /FALSE FSET? PRSI,TRANSBIT /FALSE PRINTI "How does one look through" CALL2 ARTICLE,PRSI PRINTR "?" .FUNCT V-READ FSET? PRSO,READBIT \?ELS5 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?ELS5: PRINTI "How can you read" CALL2 ARTICLE,PRSO PRINTR "?" .FUNCT V-RECORD-ON ZERO? PRSO /?ELS5 EQUAL? PRSO,ROOMS /?ELS5 PRINT RECOGNIZE CRLF RTRUE ?ELS5: EQUAL? PART-FLAG,4 \?ELS11 PRINT NOT-ACTIVE CRLF RTRUE ?ELS11: ZERO? REVIEWING-RECORDINGS \?THN16 EQUAL? RECORD-BUFFER,FEED-BUFFER \?ELS15 ?THN16: CALL ERR,STR?266,TRUE-VALUE PRINTD RECORD-BUFFER PRINTR "." ?ELS15: ZERO? RECORDING /?ELS21 CALL2 ERR,STR?267 RSTACK ?ELS21: ZERO? SIMULATING \?ELS24 EQUAL? HERE,NEWS,OFFICE,ROOFTOP /?ELS24 EQUAL? HERE,CORE,CONTROL-CENTER,CAFETERIA /?ELS24 CALL2 ERR,STR?268 RSTACK ?ELS24: GETP RECORD-BUFFER,P?SIZE GRTR? STACK,90 \?ELS28 CALL2 ERR,STR?269 RSTACK ?ELS28: SET 'RECORDING,TRUE-VALUE PRINTR "Record feature activated." .FUNCT V-RECORD-OFF EQUAL? PRSO,ROOMS /?ELS5 PRINT RECOGNIZE CRLF RTRUE ?ELS5: ZERO? RECORDING \?ELS9 CALL2 ERR,STR?270 RSTACK ?ELS9: SET 'RECORDING,FALSE-VALUE PRINTR "Record feature deactivated." .FUNCT V-REMOVE FSET? PRSO,WEARBIT \?ELS5 CALL PERFORM,V?TAKE-OFF,PRSO RTRUE ?ELS5: CALL PERFORM,V?TAKE,PRSO RTRUE .FUNCT V-REPLY PRINTI "It is hardly likely that" CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is interested." CRLF CALL1 CLEAR-BUF RSTACK .FUNCT V-REPORT CALL PERFORM,V?TELL-ABOUT,PRSI,PRSO RTRUE .FUNCT V-ROB FSET? PRSO,TAKEBIT /?THN6 FSET? PRSO,TRYTAKEBIT \?ELS5 ?THN6: CALL1 V-YELL RSTACK ?ELS5: PRINTR "Theft is a serious crime." .FUNCT V-ROFF SET 'PRSO,ROOMS CALL1 V-RECORD-OFF RSTACK .FUNCT V-SAY,ACTOR CALL1 ANSWER-SAY-SHARE ZERO? STACK \TRUE CALL FIND-IN,HERE,ACTORBIT >ACTOR ZERO? ACTOR /?ELS7 CALL2 ADDRESS-DIRECTLY,ACTOR RSTACK ?ELS7: CALL PERFORM,V?TELL,ME CALL1 CLEAR-BUF RSTACK .FUNCT V-SEARCH FSET? PRSO,ACTORBIT \?ELS3 PRINTR "That wouldn't be polite." ?ELS3: FSET? PRSO,CONTBIT \?CND1 LOC PLAYER EQUAL? PRSO,STACK \?ELS10 CALL1 DESCRIBE-VEHICLE JUMP ?CND1 ?ELS10: FSET? PRSO,OPENBIT /?ELS12 PRINTR "You'll have to open it first." ?ELS12: FIRST? PRSO \?CND1 FIRST? PRSO /?PRD19 PUSH 0 JUMP ?PRD20 ?PRD19: PUSH 1 ?PRD20: FSET? STACK,NDESCBIT /?CND1 CALL2 PRINT-CONT,PRSO RTRUE ?CND1: PRINTR "You find nothing unusual." .FUNCT V-SET EQUAL? MODE,INTERFACE-MODE \?ELS5 CALL1 V-TURN-ON RSTACK ?ELS5: CALL1 V-COUNT RSTACK .FUNCT V-SGIVE CALL PERFORM,V?GIVE,PRSI,PRSO RTRUE .FUNCT V-SHAKE CALL2 HACK-HACK,STR?271 RSTACK .FUNCT V-SHAKE-WITH EQUAL? PRSO,HANDS /?ELS5 PRINT RECOGNIZE CRLF RTRUE ?ELS5: FSET? PRSI,ACTORBIT /?ELS9 PRINTI "I don't think" CALL ARTICLE,PRSI,TRUE-VALUE PRINTR " even has hands." ?ELS9: CALL PERFORM,V?THANK,PRSI RTRUE .FUNCT V-SHOOT PRINTR "You don't have a gun." .FUNCT V-SHOW PRINTI "I doubt" CALL ARTICLE,PRSI,TRUE-VALUE CALL2 PLURAL,PRSI PRINTR " interested." .FUNCT V-SHUT-OFF CALL1 V-TURN-ON RSTACK .FUNCT V-SIT,VEHICLE EQUAL? PRSO,ROOMS \?ELS5 CALL FIND-IN,HERE,FURNITUREBIT >VEHICLE ZERO? VEHICLE /?ELS10 CALL PERFORM,V?BOARD,VEHICLE RTRUE ?ELS10: CALL1 V-YELL RSTACK ?ELS5: FSET? PRSO,VEHBIT \?ELS14 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS14: PRINTI "You can't sit on" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-SIT-NEXT-TO FSET? PRSO,ACTORBIT \?ELS5 PRINTI "But" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " isn't sitting!" ?ELS5: CALL1 V-COUNT RSTACK .FUNCT V-SKIP SET 'YES-NO-FLAG,3 CALL QUEUE,I-YES-NO,2 PRINTR "Wasn't that fun?" .FUNCT V-SLEEP,WAKE-TIME EQUAL? MODE,SLEEP-MODE \?ELS5 CALL1 SIM-SLEEP RSTACK ?ELS5: ZERO? SIMULATING \?ELS7 CALL PERFORM,V?THROUGH,SLEEP-MODE RTRUE ?ELS7: EQUAL? HERE,BEDROOM \?ELS9 LESS? STIME,1320 \?ELS14 GRTR? STIME,1019 \?ELS14 PRINTR "You never go to bed this early." ?ELS14: LESS? STIME,1020 \?ELS20 GRTR? STIME,720 \?ELS20 PRINTR "It's the middle of the afternoon!" ?ELS20: GRTR? STIME,540 \?ELS26 LESS? STIME,721 \?ELS26 PRINTR "The day's barely begun!" ?ELS26: GRTR? STIME,419 \?ELS32 LESS? STIME,541 \?ELS32 PRINTR "You've never been able to fall asleep once the sun has come up." ?ELS32: CALL2 HELD?,BABY ZERO? STACK /?ELS38 PRINT MITCHELL-BACK-FIRST CRLF RTRUE ?ELS38: EQUAL? SYEAR,2041 \?ELS45 SET 'WAKE-TIME,486 JUMP ?CND43 ?ELS45: MOVE MITCHELL,LOCAL-GLOBALS SET 'MITCHELL-COUNTER,0 SET 'WAKE-TIME,421 ?CND43: GRTR? STIME,1319 \?ELS50 SUB 1440,STIME ADD STACK,WAKE-TIME >ELAPSED-TIME JUMP ?CND48 ?ELS50: SUB WAKE-TIME,STIME >ELAPSED-TIME ?CND48: FIRST? PLAYER \?ELS55 CALL ROB,PLAYER,BUREAU PRINTI "You put everything on the bureau and" JUMP ?CND53 ?ELS55: IN? PLAYER,BED \?ELS59 PRINTI "You" JUMP ?CND53 ?ELS59: PRINTI "You climb into the bed and" ?CND53: PRINTI " snuggle under the covers. What seems like only moments later, " SET 'LIGHT-LEVEL,3 MOVE PLAYER,BED EQUAL? SYEAR,2041 \?ELS70 MOVE JILL,HERE SET 'JILL-COUNTER,1 PRINTI "Jill is shaking you gently, cooing, ""Perry, hon, wake up."" Diffuse sunlight seeps" JUMP ?CND68 ?ELS70: ZERO? MITCHELL-RAID-FLAG /?ELS77 PRINTI "you bolt upright in bed, screaming Jill's name, an unanswered call. T" JUMP ?CND75 ?ELS77: SET 'JILL-COUNTER,0 EQUAL? SYEAR,2051 \?CND83 MOVE JILL,BEDROOM ?CND83: FCLEAR JILL-BOOK,NDESCBIT PRINTI "a familiar sound stirs you to wakefulness: t" ?CND75: CALL1 END-CURFEW PRINTI " Gray morning light shines" ?CND68: PRINTR " through the bedroom window." ?ELS9: EQUAL? HERE,JAIL-CELL \?ELS93 GRTR? STIME,415 \?ELS98 PRINTR "You try to sleep, and fail." ?ELS98: RANDOM 30 ADD 110,STACK >ELAPSED-TIME PRINTR "You doze off for a couple of hours." ?ELS93: PRINTR "There's no bed here." .FUNCT END-CURFEW CALL2 SCORE,116 PRINTI "he sirens hailing the end of curfew are blaring" FSET? HERE,OUTSIDEBIT /?CND3 PRINTI " outside" ?CND3: PRINTI "." RTRUE .FUNCT V-SMELL ZERO? PRSO \?ELS5 EQUAL? HERE,FOODVILLE-2 \?ELS10 EQUAL? SYEAR,2081 \?ELS10 CALL PERFORM,V?SMELL,SUPERMARKET RTRUE ?ELS10: EQUAL? HERE,WICKER-AND-RIVER \?ELS14 EQUAL? SYEAR,2071 /?ELS14 CALL PERFORM,V?SMELL,STAIRS RTRUE ?ELS14: EQUAL? HERE,POOL-HALL \?ELS18 PRINT TOBACCO-ODOR CRLF RTRUE ?ELS18: EQUAL? HERE,MAIN-LIBRARY \?ELS22 EQUAL? SYEAR,2071 \?ELS22 CALL PERFORM,V?SMELL,MAIN-LIBRARY-OBJECT RTRUE ?ELS22: EQUAL? HERE,BOOKSTORE \?ELS26 CALL PERFORM,V?SMELL,BOOKSTORE-OBJECT RTRUE ?ELS26: EQUAL? HERE,CINEMA \?ELS28 EQUAL? SYEAR,2071 \?ELS28 CALL PERFORM,V?SMELL,MOVIE-THEATRE-OBJECT RTRUE ?ELS28: EQUAL? HERE,BURGER-MEISTER \?ELS32 EQUAL? SYEAR,2071 \?ELS32 CALL PERFORM,V?SMELL,BAR-OBJECT RTRUE ?ELS32: EQUAL? HERE,DORM \?ELS36 EQUAL? SYEAR,2041,2051 \?ELS36 CALL PERFORM,V?SMELL,MINDEX RTRUE ?ELS36: EQUAL? HERE,AQUARIUM \?ELS40 EQUAL? SYEAR,2071 \?ELS40 CALL PERFORM,V?SMELL,AQUARIUM-OBJECT RTRUE ?ELS40: EQUAL? HERE,TENEMENT-2,TENEMENT-3 \?ELS44 EQUAL? SYEAR,2071 \?ELS44 CALL PERFORM,V?SMELL,TENEMENT-OBJECT RTRUE ?ELS44: PRINTR "You smell nothing unusual." ?ELS5: FSET? PRSO,PLURALBIT \?ELS55 PRINTI "They smell" JUMP ?CND53 ?ELS55: PRINTI "It smells" ?CND53: PRINTI " just like" CALL2 ARTICLE,PRSO PRINTR "." .FUNCT V-SMILE PRINTR "How nice." .FUNCT V-SPUT-ON CALL PERFORM,V?PUT-ON,PRSI,PRSO RTRUE .FUNCT V-SQUEEZE CALL1 V-YELL RSTACK .FUNCT V-SSHOOT CALL PERFORM,V?SHOOT,PRSI,PRSO RTRUE .FUNCT V-SSHOW CALL PERFORM,V?SHOW,PRSI,PRSO RTRUE .FUNCT V-SSHUT-OFF CALL PERFORM,V?SHUT-OFF,PRSI,PRSO RTRUE .FUNCT V-STAND EQUAL? HERE,SKYCAB \?ELS5 PRINTR "There's not enough headroom." ?ELS5: LOC PLAYER FSET? STACK,VEHBIT \?ELS9 LOC PLAYER EQUAL? STACK,SHOWER /?ELS9 LOC PLAYER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?ELS9: ZERO? PRSO /?ELS13 EQUAL? PRSO,ROOMS /?ELS13 CALL1 V-COUNT RSTACK ?ELS13: PRINTR "You are already standing." .FUNCT V-STAND-ON CALL1 V-YELL RSTACK .FUNCT V-STATUS CALL1 V-TURN-ON RSTACK .FUNCT V-STURN-ON CALL PERFORM,V?TURN-ON,PRSI,PRSO RTRUE .FUNCT V-SWIM ZERO? PRSO /?ELS5 PRINTI "Not even a fish could swim in" CALL2 ARTICLE,PRSO PRINTR "." ?ELS5: CALL GLOBAL-IN?,RIVER,HERE ZERO? STACK /?ELS12 CALL PERFORM,V?SWIM,RIVER RTRUE ?ELS12: CALL GLOBAL-IN?,RESERVOIR,HERE ZERO? STACK /?ELS14 CALL PERFORM,V?SWIM,RESERVOIR RTRUE ?ELS14: EQUAL? HERE,KENNEDY-PARK \?ELS16 EQUAL? SYEAR,2061 /?ELS16 CALL PERFORM,V?SWIM,WATERPOOL RTRUE ?ELS16: EQUAL? HERE,AQUARIUM \?ELS20 CALL PERFORM,V?SWIM,TANK RTRUE ?ELS20: EQUAL? HERE,HALLEY-PARK-WEST \?ELS22 CALL PERFORM,V?SWIM,DUCK-POND RTRUE ?ELS22: PRINTR "There's not a swimming hole in sight." .FUNCT PRE-TAKE CALL1 LOC-CLOSED ZERO? STACK \TRUE IN? PRSO,PLAYER /?THN8 CALL2 HELD?,PRSO ZERO? STACK /?ELS7 FSET? PRSO,TAKEBIT /?ELS7 ?THN8: FSET? PRSO,WORNBIT \?ELS16 PRINTR "You are already wearing it." ?ELS16: PRINTR "You already have it." ?ELS7: ZERO? PRSI /?ELS24 EQUAL? PRSO,ME \?ELS30 CALL PERFORM,V?DROP,PRSI RTRUE ?ELS30: LOC PRSO EQUAL? PRSI,STACK /?ELS32 PRINTI "But" CALL ARTICLE,PRSO,TRUE-VALUE PRINTI " isn't " FSET? PRSI,ACTORBIT \?ELS39 PRINTI "being held by" JUMP ?CND37 ?ELS39: FSET? PRSI,SURFACEBIT \?ELS43 PRINTI "on" JUMP ?CND37 ?ELS43: PRINTI "in" ?CND37: CALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." ?ELS32: SET 'PRSI,FALSE-VALUE RFALSE ?ELS24: LOC PLAYER EQUAL? PRSO,STACK \FALSE EQUAL? PRSO,RESTAURANT-TABLE,DINETTE-SET,SHOWER /FALSE PRINTR "You are in it!" .FUNCT V-TAKE CALL1 ITAKE EQUAL? STACK,TRUE-VALUE \FALSE PRINTR "Taken." .FUNCT V-TAKE-OFF FSET? PRSO,WORNBIT \?ELS5 FCLEAR PRSO,WORNBIT EQUAL? PRSO,HEADSET \?CND6 MOVE HEADSET,HERE FSET HEADSET,NDESCBIT ?CND6: PRINTI "Okay, you're no longer wearing" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?ELS5: LOC PLAYER EQUAL? PRSO,STACK /?THN15 EQUAL? PRSO,BROWN-TUBECAR-OBJECT,RED-TUBECAR-OBJECT \?ELS14 ?THN15: CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?ELS14: FSET? PRSO,VEHBIT /?THN19 FSET? PRSO,ACTORBIT \?ELS18 ?THN19: PRINTI "You're not on" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" ?ELS18: PRINTI "You aren't wearing" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" .FUNCT V-TELL FSET? PRSO,ACTORBIT \?ELS5 ZERO? P-CONT /?ELS10 SET 'ELAPSED-TIME,0 SET 'WINNER,PRSO LOC WINNER >HERE RTRUE ?ELS10: EQUAL? PRSO,JILL \?ELS13 ZERO? JILL-COUNTER \?ELS13 CALL PERFORM,V?KISS,JILL RTRUE ?ELS13: EQUAL? HERE,INTERFACE-ROOM \?ELS17 PRINT CONTACT CRLF RTRUE ?ELS17: PRINTI "Hmmm..." CALL ARTICLE,PRSO,TRUE-VALUE FSET? PRSO,PLURALBIT \?ELS26 PRINTI " look" JUMP ?CND24 ?ELS26: PRINTI " looks" ?CND24: PRINTR " at you expectantly, as if you seemed to be about to talk." ?ELS5: PRINTI "You can't talk to" CALL2 ARTICLE,PRSO PRINTI "!" CRLF CALL1 CLEAR-BUF RSTACK .FUNCT V-TELL-ABOUT EQUAL? PRSO,ME \?ELS5 CALL PERFORM,V?WHAT,PRSI RTRUE ?ELS5: PRINTI "It doesn't look as though" CALL ARTICLE,PRSO,TRUE-VALUE CALL2 PLURAL,PRSO PRINTR " interested." .FUNCT V-THANK FSET? PRSO,ACTORBIT \?ELS5 PRINTI "You do so, but" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " seems less than overjoyed." ?ELS5: CALL1 V-LOCK RSTACK .FUNCT V-THROUGH FSET? PRSO,DOORBIT \?ELS5 CALL2 OTHER-SIDE,PRSO CALL2 DO-WALK,STACK RTRUE ?ELS5: FSET? PRSO,VEHBIT \?ELS7 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS7: FSET? PRSO,TAKEBIT /?ELS9 ZERO? SIMULATING /?ELS14 PRINTI "You hit your head against" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " as you attempt this feat." ?ELS14: CALL2 DO-WALK,P?NORTH RSTACK ?ELS9: IN? PRSO,WINNER \?ELS23 CALL PERFORM,V?EXAMINE,HEAD RTRUE ?ELS23: CALL1 V-LOCK RSTACK .FUNCT PRE-THROW CALL1 IDROP ZERO? STACK \TRUE RFALSE .FUNCT V-THROW MOVE PRSO,HERE PRINTR "You missed." .FUNCT V-THROW-OFF PRINTR "You can't do that!" .FUNCT V-TIE PRINTI "You can't tie" CALL2 ARTICLE,PRSO PRINTR "." .FUNCT V-TIME SET 'ELAPSED-TIME,0 PRINTI "It is " ZERO? SIMULATING /?ELS5 CALL2 TIME-PRINT,STIME JUMP ?CND3 ?ELS5: CALL2 TIME-PRINT,TIME ?CND3: PRINTR "." .FUNCT V-TOUCH CALL1 LOC-CLOSED ZERO? STACK \TRUE CALL2 HACK-HACK,STR?272 RSTACK .FUNCT V-TRANSMIT PRINTR "Only a transmitter can transmit things." .FUNCT V-TURN EQUAL? PRSO,ROOMS,ME \?ELS5 CALL1 V-SKIP RSTACK ?ELS5: PRINTR "This has no effect." .FUNCT V-TURN-ON EQUAL? MODE,INTERFACE-MODE \?ELS5 PRINTR "[Perhaps you meant to address one of the Interface devices.]" ?ELS5: PRINTI "[This syntax is useful only for communicating in " PRINTD INTERFACE-MODE PRINTR ".]" .FUNCT V-UNLOCK CALL1 V-LOCK RSTACK .FUNCT V-UNTIE CALL1 V-LOCK RSTACK .FUNCT V-WAIT,NUM=10,X=0,SHORT-WAIT=0 ZERO? NUM \?CND1 SET 'ELAPSED-TIME,0 PRINTR "Time doesn't pass..." ?CND1: PRINTI "Time passes..." CRLF LESS? NUM,11 \?CND8 SET 'SHORT-WAIT,TRUE-VALUE ?CND8: ?PRG11: CALL1 CLOCKER >X DLESS? 'NUM,1 /?THN16 EQUAL? HERE,NEWS \?CND13 ?THN16: SET 'X,TRUE-VALUE ?CND13: EQUAL? HERE,SIMONS,THE-COACHMAN \?CND18 EQUAL? MEAL-STATUS,1 \?CND18 EQUAL? SYEAR,2081 /?CND18 SET 'X,TRUE-VALUE ?CND18: CALL2 INCREMENT-TIME,1 ZERO? X \?REP12 ZERO? STOP-WAIT /?ELS25 JUMP ?REP12 ?ELS25: ZERO? SHORT-WAIT \?THN30 ZERO? SIMULATING /?ELS33 MOD STIME,10 ZERO? STACK /?THN30 ?ELS33: ZERO? SIMULATING \?PRG11 MOD TIME,10 ZERO? STACK \?PRG11 ?THN30: CALL1 STATUS-LINE JUMP ?PRG11 ?REP12: SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT .FUNCT V-WAIT-FOR EQUAL? PRSO,INTNUM \?ELS5 GRTR? P-NUMBER,120 \?ELS10 PRINTR "That's too long to wait." ?ELS10: CALL2 V-WAIT,P-NUMBER RSTACK ?ELS5: EQUAL? PRSO,NOON,DUSK,DAWN /?THN17 EQUAL? PRSO,MIDNIGHT \?ELS16 ?THN17: CALL PERFORM,V?WAIT-UNTIL,PRSO RTRUE ?ELS16: CALL2 VISIBLE?,PRSO ZERO? STACK /?ELS20 CALL1 RIGHT-HERE RSTACK ?ELS20: PRINTR "You might be waiting quite a while." .FUNCT V-WAIT-UNTIL,TIM=0,NAMED-TIME=0,OLD-P-NUMBER SET 'OLD-P-NUMBER,P-NUMBER ZERO? SIMULATING /?ELS3 SET 'TIM,STIME JUMP ?CND1 ?ELS3: SET 'TIM,TIME ?CND1: EQUAL? PRSO,NOON \?ELS9 SET 'P-NUMBER,720 SET 'NAMED-TIME,TRUE-VALUE JUMP ?CND7 ?ELS9: EQUAL? PRSO,MIDNIGHT \?ELS11 SET 'P-NUMBER,1440 SET 'NAMED-TIME,TRUE-VALUE JUMP ?CND7 ?ELS11: EQUAL? PRSO,DAWN \?ELS13 ZERO? SIMULATING /?ELS16 MUL SMONTH,20 SUB STACK,20 SUB 455,STACK >P-NUMBER JUMP ?CND14 ?ELS16: SET 'P-NUMBER,350 ?CND14: SET 'NAMED-TIME,TRUE-VALUE JUMP ?CND7 ?ELS13: EQUAL? PRSO,DUSK \?CND7 ZERO? SIMULATING /?ELS24 MUL SMONTH,20 SUB STACK,20 SUB 1028,STACK >P-NUMBER JUMP ?CND22 ?ELS24: SET 'P-NUMBER,1075 ?CND22: SET 'NAMED-TIME,TRUE-VALUE ?CND7: ZERO? NAMED-TIME /?ELS32 SET 'PRSO,INTNUM GRTR? P-NUMBER,TIM \?ELS36 SUB P-NUMBER,TIM >P-NUMBER JUMP ?CND34 ?ELS36: SUB 1440,TIM ADD P-NUMBER,STACK >P-NUMBER ?CND34: CALL1 V-WAIT-FOR RSTACK ?ELS32: EQUAL? PRSO,INTNUM \?ELS40 LESS? P-NUMBER,13 \?CND41 MUL P-NUMBER,60 >P-NUMBER ?CND41: GRTR? TIM,720 \?CND44 SUB TIM,720 >TIM ?CND44: GRTR? P-NUMBER,TIM \?ELS49 SUB P-NUMBER,TIM >P-NUMBER JUMP ?CND47 ?ELS49: SUB 720,TIM ADD P-NUMBER,STACK >P-NUMBER ?CND47: CALL1 V-WAIT-FOR SET 'P-NUMBER,OLD-P-NUMBER RETURN P-NUMBER ?ELS40: PRINTR "Try waiting until a specific time, as in WAIT UNTIL 3:45." .FUNCT V-WALK,PT,PTS,STR,OBJ,RM ZERO? PRSO \?ELS5 CALL1 V-WALK-AROUND RSTACK ?ELS5: ZERO? P-WALK-DIR \?ELS7 CALL PERFORM,V?WALK-TO,PRSO RTRUE ?ELS7: GETPT HERE,PRSO >PT ZERO? PT /?ELS9 PTSIZE PT >PTS EQUAL? PTS,UEXIT \?ELS14 GET PT,REXIT CALL2 GOTO,STACK RSTACK ?ELS14: EQUAL? PTS,NEXIT \?ELS16 GET PT,NEXITSTR PRINT STACK CRLF RETURN 2 ?ELS16: EQUAL? PTS,FEXIT \?ELS22 GET PT,FEXITFCN CALL STACK >RM ZERO? RM /?ELS27 CALL2 GOTO,RM RSTACK ?ELS27: RETURN 2 ?ELS22: EQUAL? PTS,CEXIT \?ELS33 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?ELS38 GET PT,REXIT CALL2 GOTO,STACK RSTACK ?ELS38: GET PT,CEXITSTR >STR ZERO? STR /?ELS40 PRINT STR CRLF RETURN 2 ?ELS40: PRINT CANT-GO CRLF RETURN 2 ?ELS33: EQUAL? PTS,DEXIT \FALSE GET PT,DEXITOBJ >OBJ FSET? OBJ,OPENBIT \?ELS57 GET PT,REXIT CALL2 GOTO,STACK RSTACK ?ELS57: GET PT,DEXITSTR >STR ZERO? STR /?ELS59 PRINT STR CRLF SET 'P-IT-OBJECT,OBJ RETURN 2 ?ELS59: PRINTI "The " CALL2 DPRINT,OBJ PRINTI " is closed." CRLF SET 'P-IT-OBJECT,OBJ RETURN 2 ?ELS9: EQUAL? PRSO,P?IN,P?OUT \?ELS74 CALL1 V-WALK-AROUND RETURN 2 ?ELS74: ZERO? SIMULATING /?ELS76 PRINT CANT-GO CRLF RETURN 2 ?ELS76: SET 'YES-NO-FLAG,4 CALL QUEUE,I-YES-NO,2 PRINTI "You're an immobile computer, remember?" CRLF RETURN 2 .FUNCT V-WALK-AROUND SET 'YES-NO-FLAG,5 CALL QUEUE,I-YES-NO,2 PRINTR "Did you have any particular direction in mind?" .FUNCT V-WALK-OUT FSET? PRSO,DOORBIT \?ELS5 CALL PERFORM,V?THROUGH,PRSO RTRUE ?ELS5: CALL PERFORM,V?DISEMBARK,PRSO RTRUE .FUNCT V-WALK-TO IN? PRSO,HERE /?THN6 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?ELS5 ?THN6: FSET? PRSO,ACTORBIT \?ELS10 EQUAL? HERE,INTERFACE-ROOM /?ELS10 EQUAL? PRSO,JILL \?ELS15 PRINTI "She" JUMP ?CND8 ?ELS15: PRINTI "He" JUMP ?CND8 ?ELS10: PRINTI "It" ?CND8: PRINTR "'s here!" ?ELS5: CALL1 V-WALK-AROUND RSTACK .FUNCT V-WALK-UNDER PRINTR "That would be quite a trick." .FUNCT V-WASH FSET? PRSO,PLURALBIT \?ELS3 PRINTI "They are" JUMP ?CND1 ?ELS3: PRINTI "It is" ?CND1: PRINTR "n't dirty." .FUNCT V-WAVE CALL1 V-LOCK RSTACK .FUNCT V-WAVE-AT ZERO? PRSO \?ELS5 CALL1 V-SMILE RSTACK ?ELS5: PRINTI "Despite your friendly nature," CALL ARTICLE,PRSO,TRUE-VALUE PRINTR " isn't likely to respond." .FUNCT V-WEAR FSET? PRSO,WEARBIT /?ELS5 PRINTI "You can't wear" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?ELS5: FSET? PRSO,WORNBIT \?ELS11 PRINTI "You're already wearing" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" ?ELS11: MOVE PRSO,PLAYER FSET PRSO,WORNBIT EQUAL? PRSO,HEADSET \?CND18 FCLEAR HEADSET,NDESCBIT ?CND18: PRINTI "You are now wearing" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-WHAT PRINTR "Good question. Try asking someone." .FUNCT V-WHERE CALL2 V-FIND,TRUE-VALUE RSTACK .FUNCT V-WHO FSET? PRSO,ACTORBIT \?ELS5 CALL PERFORM,V?WHAT,PRSO RTRUE ?ELS5: PRINTR "That's not a person!" .FUNCT V-WNNF EQUAL? PART-FLAG,4 \?ELS5 PRINT NOT-ACTIVE CRLF RTRUE ?ELS5: CALL1 PSYCH-CHECK ZERO? STACK /?ELS9 RETURN 2 ?ELS9: EQUAL? HERE,NEWS \?ELS13 PRINT LOOK-AROUND CRLF RTRUE ?ELS13: EQUAL? MODE,COMM-MODE \?ELS17 MOVE CURRENT-FEED,NEWS CALL2 GOTO,NEWS RSTACK ?ELS17: PRINT ENTER-COMM-MODE CRLF RTRUE .FUNCT V-WRITE PRINTI "You can't write on" CALL2 ARTICLE,PRSO PRINTR "!" .FUNCT V-YELL CALL2 PICK-ONE,WASTES PRINT STACK CRLF CALL1 CLEAR-BUF RSTACK .FUNCT I-YES-NO SET 'YES-NO-FLAG,0 RFALSE .FUNCT V-YES EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS5 EQUAL? SYEAR,2081 /?ELS5 EQUAL? MEAL-STATUS,1 \?ELS5 MOVE PLAYER,RESTAURANT-TABLE SET 'MEAL-STATUS,3 CALL QUEUE,I-MEAL,12 SET 'WAITER-COUNTER,0 PUTP SPEAR-CARRIER,P?SDESC,STR?53 PRINTR "The maitre d' shows you to a small table at the back of the restaurant." ?ELS5: GRTR? GRIMWOLD-COUNTER,0 \?ELS11 CALL1 BLOT-ACTION RSTACK ?ELS11: EQUAL? YES-NO-FLAG,1,2,3 /?THN14 EQUAL? YES-NO-FLAG,4,5 \?ELS13 ?THN14: PRINTR "[That was just a rhetorical question.]" ?ELS13: EQUAL? YES-NO-FLAG,6 \?ELS19 PRINTR "Perelman nods." ?ELS19: EQUAL? YES-NO-FLAG,7 \?ELS23 EQUAL? SYEAR,2041 \?ELS28 PRINTR """I knew things would turn around!""" ?ELS28: PRINTI """It's about time" PRINT CHANGE-AGENTS CRLF RTRUE ?ELS23: EQUAL? YES-NO-FLAG,8 \?ELS36 CALL PERFORM,V?TELL,SABOTEURS RTRUE ?ELS36: EQUAL? YES-NO-FLAG,9,11 \?ELS38 PRINTR "Jill smiles." ?ELS38: EQUAL? YES-NO-FLAG,10 \?ELS42 PRINTR "Jill threatens to pound you." ?ELS42: EQUAL? YES-NO-FLAG,12 \?ELS46 EQUAL? HERE,HOSPITAL \?ELS51 PRINTI "A few quick questions by the nurse reveal that you need no hospital attention. She tells you so, " EQUAL? SYEAR,2061,2071 \?CND54 PRINTI "adding haughtily that you couldn't afford their services anyway, " ?CND54: PRINTI "and summons an orderly to lead you out." CRLF CRLF SET 'FOLLOW-FLAG,13 ADD ELAPSED-TIME,2 CALL QUEUE,I-UNFOLLOW,STACK PUTP SPEAR-CARRIER,P?SDESC,STR?263 CALL2 GOTO,ELM-AND-KENNEDY PRINTR "The orderly returns to the hospital." ?ELS51: EQUAL? HERE,POLICE-STATION \?ELS64 CALL PERFORM,V?TELL-ABOUT,POLICEMAN,CRIME RTRUE ?ELS64: EQUAL? HERE,EZZIS-BAR,BAR,BURGER-MEISTER \?ELS66 PRINTR """Order something or get outta here.""" ?ELS66: EQUAL? HERE,BANK \?ELS70 PRINTR """I'll need your credit card if you want to make a transaction...""" ?ELS70: EQUAL? HERE,BASE-GATE \?ELS74 PRINTR """Well you can't go on, and you can't stay here, so you might as well turn around and get lost.""" ?ELS74: EQUAL? SYEAR,2041 \?ELS83 PRINTR """Feel free to look around...""" ?ELS83: EQUAL? SYEAR,2071 \?ELS87 PRINTR """Buy something or scram.""" ?ELS87: PRINTR """If you wanna buy something, say so.""" ?ELS46: PRINTR "You sound rather positive." .FUNCT ITAKE,VB=1,CNT,OBJ,?TMP1 FSET? PRSO,TAKEBIT /?ELS3 ZERO? VB /?CND4 CALL1 V-LOCK ?CND4: RETURN 2 ?ELS3: LOC PRSO IN? STACK,WINNER /?CND1 CALL2 WEIGHT,PRSO >?TMP1 CALL2 WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,100 \?ELS14 ZERO? VB /?CND15 PRINTI "Your load is too heavy." CRLF ?CND15: RETURN 2 ?ELS14: CALL2 CCOUNT,WINNER >CNT GRTR? CNT,7 \?CND1 ZERO? VB /?CND25 PRINTI "You're holding too many things already." CRLF ?CND25: RETURN 2 ?CND1: MOVE PRSO,PLAYER FSET PRSO,TOUCHBIT RTRUE .FUNCT IDROP EQUAL? PRSO,HEAD,HANDS \?ELS5 EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE CALL1 V-COUNT RSTACK ?ELS5: EQUAL? PRSO,CLOTHES \?ELS14 CALL PERFORM,V?TAKE-OFF,CLOTHES RTRUE ?ELS14: EQUAL? PRSA,V?GIVE \?ELS16 EQUAL? PRSO,BATHROOM-OBJECT /FALSE ?ELS16: CALL2 HELD?,PRSO ZERO? STACK \?ELS20 PRINTI "That's easy for you to say since you don't even have" CALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?ELS20: IN? PRSO,WINNER /?ELS26 LOC PRSO FSET? STACK,CONTBIT \?ELS26 LOC PRSO FSET? STACK,OPENBIT /?ELS26 PRINTI "Impossible because" LOC PRSO CALL ARTICLE,STACK,TRUE-VALUE PRINTR " is closed." ?ELS26: FSET? PRSO,WORNBIT \FALSE PRINTR "You'll have to remove it first." .FUNCT CCOUNT,OBJ,CNT=0,X FIRST? OBJ >X \?CND1 ?PRG4: FSET? X,WORNBIT /?CND6 INC 'CNT ?CND6: NEXT? X >X /?PRG4 ?CND1: RETURN CNT .FUNCT WEIGHT,OBJ,CONT,WT=0 FIRST? OBJ >CONT \?CND1 ?PRG4: EQUAL? OBJ,PLAYER \?ELS8 FSET? CONT,WORNBIT \?ELS8 INC 'WT JUMP ?CND6 ?ELS8: EQUAL? OBJ,PLAYER \?ELS12 LOC CONT FSET? STACK,WORNBIT \?ELS12 INC 'WT JUMP ?CND6 ?ELS12: CALL2 WEIGHT,CONT ADD WT,STACK >WT ?CND6: NEXT? CONT >CONT /?PRG4 ?CND1: GETP OBJ,P?SIZE ADD WT,STACK RSTACK .FUNCT DESCRIBE-ROOM,LOOK?=0,PRINT-DESC=0,STR,AV ZERO? LOOK? \?THN4 EQUAL? VERBOSITY,2 \?CND1 ?THN4: SET 'PRINT-DESC,TRUE-VALUE ?CND1: FSET? HERE,TOUCHBIT /?CND6 FSET HERE,TOUCHBIT SET 'PRINT-DESC,TRUE-VALUE ?CND6: IN? HERE,ROOMS \?CND9 CALL2 DPRINT,HERE ?CND9: ZERO? LOOK? \?THN17 EQUAL? VERBOSITY,1,2 \?CND14 ?THN17: LOC PLAYER FSET? STACK,VEHBIT \?CND19 LOC PLAYER EQUAL? STACK,GLOBAL-TABLE,RESTAURANT-TABLE,DINETTE-SET \?ELS24 PRINTI ", seated at a table" JUMP ?CND19 ?ELS24: LOC PLAYER FSET? STACK,FURNITUREBIT \?ELS28 PRINTI ", on" LOC PLAYER CALL2 ARTICLE,STACK JUMP ?CND19 ?ELS28: PRINTI ", in" LOC PLAYER CALL2 ARTICLE,STACK ?CND19: ZERO? PRINT-DESC /?ELS37 GETPT HERE,P?LDESC ZERO? STACK /?ELS37 CRLF GETP HERE,P?LDESC PRINT STACK CALL1 CROWD-DESC JUMP ?CND14 ?ELS37: ZERO? PRINT-DESC /?CND14 CRLF GETP HERE,P?ACTION CALL STACK,M-LOOK CALL1 CROWD-DESC ?CND14: CRLF RTRUE .FUNCT CROWD-DESC FSET? HERE,STREETBIT \FALSE EQUAL? HERE,AIRPORT-ENTRANCE /FALSE EQUAL? HERE,BASE-GATE /FALSE EQUAL? HERE,ROCKVIL-UNIVERSITY /FALSE EQUAL? HERE,INTERCHANGE /FALSE FSET? HERE,BADAREABIT /FALSE EQUAL? SYEAR,2081 /FALSE ZERO? DESCRIBE-CROWDS /FALSE SET 'DESCRIBE-CROWDS,FALSE-VALUE CALL QUEUE,I-DESCRIBE-CROWDS,90 GRTR? STIME,720 \?ELS12 LESS? STIME,810 \?ELS12 PRINTI " The street is bustling with lunchtime crowds." RTRUE ?ELS12: EQUAL? LIGHT-LEVEL,3 \?ELS18 PRINTI " The sidewalks and street are crowded with people." RTRUE ?ELS18: EQUAL? LIGHT-LEVEL,2 \?ELS22 LESS? STIME,720 \?ELS27 PRINTI " The street is getting more crowded as the new day begins." RTRUE ?ELS27: PRINTI " The number of people around seems to be diminishing." RTRUE ?ELS22: EQUAL? LIGHT-LEVEL,1 \?ELS35 LESS? STIME,720 \?ELS40 PRINTI " The city is still fairly quiet, but there are more people around now than during the dead of night." RTRUE ?ELS40: PRINTI " The midday crowds have almost completely dispersed; the street is much less busy now." RTRUE ?ELS35: EQUAL? SYEAR,2041 /?THN49 GRTR? STIME,720 \?ELS48 LESS? STIME,1260 \?ELS48 ?THN49: PRINTI " The street is dark and almost completely deserted. Only a few people are visible, hurrying to destinations unknown to you." RTRUE ?ELS48: PRINTI " The street is totally deserted." RTRUE .FUNCT I-DESCRIBE-CROWDS SET 'DESCRIBE-CROWDS,TRUE-VALUE RFALSE .FUNCT DESCRIBE-OBJECTS,V?=0 FIRST? HERE \FALSE ZERO? V? /?ORP9 PUSH V? JUMP ?THN6 ?ORP9: EQUAL? VERBOSITY,2 /?ORT8 PUSH 0 JUMP ?THN6 ?ORT8: PUSH 1 ?THN6: POP 'V? CALL PRINT-CONT,HERE,V?,-1 RSTACK .FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV ZERO? LEVEL \?ELS3 GETP OBJ,P?DESCFCN CALL STACK,M-OBJDESC ZERO? STACK \TRUE ?ELS3: ZERO? LEVEL \?ELS7 FSET? OBJ,TOUCHBIT /?ELS13 GETP OBJ,P?FDESC >STR ZERO? STR \?THN10 ?ELS13: GETP OBJ,P?LDESC >STR ZERO? STR /?ELS7 ?THN10: PRINT STR JUMP ?CND1 ?ELS7: ZERO? LEVEL \?ELS17 PRINTI "There" CALL2 PLURAL,OBJ CALL2 ARTICLE,OBJ PRINTI " here." JUMP ?CND1 ?ELS17: GET INDENTS,LEVEL PRINT STACK FSET? OBJ,NARTICLEBIT \?ELS28 JUMP ?CND26 ?ELS28: FSET? OBJ,VOWELBIT \?ELS30 PRINTI "an " JUMP ?CND26 ?ELS30: PRINTI "a " ?CND26: CALL2 DPRINT,OBJ FSET? OBJ,WORNBIT \?CND1 PRINTI " (being worn)" ?CND1: CRLF CALL2 SEE-INSIDE?,OBJ ZERO? STACK /FALSE FIRST? OBJ \FALSE CALL PRINT-CONT,OBJ,V?,LEVEL RSTACK .FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?=1,AV=0,STR,PV?=0,INV?=0 FIRST? OBJ >Y \TRUE LOC WINNER FSET? STACK,VEHBIT \?CND4 LOC WINNER >AV ?CND4: LOC OBJ EQUAL? PLAYER,OBJ,STACK \?ELS9 SET 'INV?,TRUE-VALUE JUMP ?CND7 ?ELS9: ?PRG12: ZERO? Y \?ELS16 JUMP ?CND7 ?ELS16: EQUAL? Y,AV \?ELS18 SET 'PV?,TRUE-VALUE JUMP ?CND14 ?ELS18: EQUAL? Y,WINNER \?ELS20 JUMP ?CND14 ?ELS20: FSET? Y,INVISIBLE /?CND14 FSET? Y,TOUCHBIT /?CND14 GETP Y,P?FDESC >STR ZERO? STR /?CND14 FSET? Y,NDESCBIT /?CND25 PRINT STR CRLF ?CND25: CALL2 SEE-INSIDE?,Y ZERO? STACK /?CND14 LOC Y GETP STACK,P?DESCFCN ZERO? STACK \?CND14 FIRST? Y \?CND14 CALL PRINT-CONT,Y,V?,0 ?CND14: NEXT? Y >Y /?KLU72 ?KLU72: JUMP ?PRG12 ?CND7: FIRST? OBJ >Y /?KLU73 ?KLU73: ?PRG35: ZERO? Y \?ELS39 ZERO? PV? /?CND40 ZERO? AV /?CND40 FIRST? AV \?CND40 CALL PRINT-CONT,AV,V?,LEVEL ?CND40: ZERO? 1ST? \?PRD45 PUSH 1 RETURN STACK ?PRD45: PUSH 0 RETURN STACK ?ELS39: EQUAL? Y,AV,PLAYER \?ELS48 JUMP ?CND37 ?ELS48: FSET? Y,INVISIBLE /?CND37 ZERO? INV? \?THN53 FSET? Y,TOUCHBIT /?THN53 GETP Y,P?FDESC ZERO? STACK \?CND37 ?THN53: FSET? Y,NDESCBIT /?ELS57 ZERO? 1ST? /?CND58 CALL FIRSTER,OBJ,LEVEL ZERO? STACK /?CND62 LESS? LEVEL,0 \?CND62 SET 'LEVEL,0 ?CND62: INC 'LEVEL SET '1ST?,FALSE-VALUE ?CND58: CALL DESCRIBE-OBJECT,Y,V?,LEVEL JUMP ?CND37 ?ELS57: FIRST? Y \?CND37 CALL2 SEE-INSIDE?,Y ZERO? STACK /?CND37 CALL PRINT-CONT,Y,V?,LEVEL ?CND37: NEXT? Y >Y /?KLU74 ?KLU74: JUMP ?PRG35 .FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,IT?=0,TWO?=0 FIRST? OBJ >F \FALSE ?PRG6: NEXT? F >N /?KLU36 ?KLU36: ZERO? 1ST? /?ELS10 SET '1ST?,FALSE-VALUE JUMP ?CND8 ?ELS10: PRINTI "," ZERO? N \?CND8 PRINTI " and" ?CND8: CALL2 ARTICLE,F ZERO? IT? \?ELS23 ZERO? TWO? \?ELS23 SET 'IT?,F JUMP ?CND21 ?ELS23: SET 'TWO?,TRUE-VALUE SET 'IT?,FALSE-VALUE ?CND21: SET 'F,N ZERO? F \?PRG6 ZERO? IT? /TRUE ZERO? TWO? \TRUE SET 'P-IT-OBJECT,IT? RTRUE .FUNCT FIRSTER,OBJ,LEVEL EQUAL? OBJ,WINNER /TRUE IN? OBJ,ROOMS /FALSE GRTR? LEVEL,0 \?CND8 GET INDENTS,LEVEL PRINT STACK ?CND8: FSET? OBJ,SURFACEBIT \?ELS17 PRINTI "Sitting on" CALL ARTICLE,OBJ,TRUE-VALUE PRINTR " is:" ?ELS17: FSET? OBJ,ACTORBIT \?ELS23 PRINT IT-LOOKS-LIKE CALL ARTICLE,OBJ,TRUE-VALUE PRINTR " is holding:" ?ELS23: PRINT IT-LOOKS-LIKE CALL ARTICLE,OBJ,TRUE-VALUE PRINTR " contains:" .FUNCT DESCRIBE-VEHICLE MOVE PLAYER,ROOMS FIRST? PRSO \?ELS3 CALL2 PRINT-CONT,PRSO JUMP ?CND1 ?ELS3: PRINTI "It's empty (not counting you)." CRLF ?CND1: MOVE PLAYER,PRSO RTRUE .FUNCT GOTO,RM,V?=1 MOVE PLAYER,RM SET 'HERE,RM ZERO? SIMULATING /?CND1 EQUAL? SYEAR,2091 /?CND1 FSET? HERE,TUBEBIT /?CND1 EQUAL? HERE,RED-TUBECAR,BROWN-TUBECAR /?CND1 CALL1 IN-APARTMENT? ZERO? STACK \?CND1 SET 'ELAPSED-TIME,5 ?CND1: GETP HERE,P?ACTION CALL STACK,M-ENTER EQUAL? HERE,COMM-ROOM,INTERFACE-ROOM,SLEEP-ROOM /TRUE EQUAL? HERE,LIBRARY-ROOM,SIMULATION-ROOM /TRUE /TRUE EQUAL? HERE,RM \TRUE CALL1 V-FIRST-LOOK RTRUE .FUNCT JIGS-UP,DESC,X PRINT DESC CALL2 HELD?,HEADSET ZERO? STACK /?CND3 MOVE HEADSET,JOYBOOTH ?CND3: CALL ROB,PLAYER,LOCAL-GLOBALS MOVE STONES,LOCAL-GLOBALS MOVE TIMBERS,LOCAL-GLOBALS MOVE STEW,LOCAL-GLOBALS MOVE BANNER,LOCAL-GLOBALS MOVE SOUVENIR,LOCAL-GLOBALS MOVE FIRETRUCK,LOCAL-GLOBALS MOVE SCARF,LOCAL-GLOBALS MOVE ANDERSON-DIRECTORY,LOCAL-GLOBALS MOVE DUCKS,LOCAL-GLOBALS MOVE TURTLE,LOCAL-GLOBALS MOVE MANTA-RAY,LOCAL-GLOBALS MOVE TURKEY-SANDWICH,LOCAL-GLOBALS MOVE HAM-SANDWICH,LOCAL-GLOBALS MOVE SALAD,LOCAL-GLOBALS MOVE SODA,LOCAL-GLOBALS MOVE APPLE,LOCAL-GLOBALS MOVE GRANOLA-CLUSTER,LOCAL-GLOBALS MOVE BEER,LOCAL-GLOBALS MOVE FORMULA,LOCAL-GLOBALS MOVE TOY,CRIB MOVE BANNED-TITLES-LIST,LOCAL-GLOBALS MOVE SCOTCH,LIQUOR-STORE MOVE CRIB,LOCAL-GLOBALS MOVE MITCHELL,LOCAL-GLOBALS MOVE BABY,CRIB MOVE PARTITION,LOCAL-GLOBALS MOVE WATERPOOL,LOCAL-GLOBALS MOVE STATUE,LOCAL-GLOBALS MOVE PLAQUE,LOCAL-GLOBALS MOVE FOUNTAIN,LOCAL-GLOBALS MOVE MOLD,LOCAL-GLOBALS MOVE TICKET,LOCAL-GLOBALS MOVE CHURCH-OFFICIAL,LOCAL-GLOBALS MOVE GOVERNMENT-OFFICIAL,LOCAL-GLOBALS MOVE OFFICIAL-SNACK,LOCAL-GLOBALS MOVE SWEATER,DUNBARS MOVE SACK,LOCAL-GLOBALS MOVE RUSTY-CROSS,LOCAL-GLOBALS MOVE PAMPHLET,LOCAL-GLOBALS MOVE ROY,LOCAL-GLOBALS MOVE DRIVERS-LICENSE,LOCAL-GLOBALS MOVE RATION-CARD,LOCAL-GLOBALS MOVE NEWSPAPER-DISPENSER,LOCAL-GLOBALS MOVE NEWSPAPER,LOCAL-GLOBALS MOVE GROCERIES,LOCAL-GLOBALS MOVE BOOK,BOOKSTORE MOVE JILL-BOOK,LOCAL-GLOBALS MOVE BARKING,LOCAL-GLOBALS MOVE RESTAURANT-TABLE,LOCAL-GLOBALS MOVE CHAIR,LOCAL-GLOBALS FSET NEWSPAPER,TRYTAKEBIT FSET NEWSPAPER,NDESCBIT FSET BOOK,NDESCBIT FSET BOOK,TRYTAKEBIT FSET SWEATER,NDESCBIT FSET SWEATER,TRYTAKEBIT FSET SCOTCH,TRYTAKEBIT FSET SCOTCH,NDESCBIT FSET TICKET,TRYTAKEBIT FSET TICKET,NDESCBIT FSET HEADSET,NDESCBIT FCLEAR CHURCH-STREET-PARK,PARKBIT FCLEAR CHURCH-STREET-PARK,OUTSIDEBIT FCLEAR WAREHOUSE-1,OUTSIDEBIT FCLEAR ST-MICHAELS,OUTSIDEBIT FCLEAR FIRST-METHODIST-CHURCH,OUTSIDEBIT FCLEAR WORD-PROCESSOR,ONBIT FCLEAR CEMETERY,ONBIT FCLEAR WALLET,OPENBIT FCLEAR APARTMENT-DOOR,OPENBIT FCLEAR PARKVIEW-DOOR,OPENBIT FCLEAR JILL,TOUCHBIT FCLEAR GROCERIES,TOUCHBIT FCLEAR PAMPHLET,TOUCHBIT FCLEAR REFRIGERATOR,OPENBIT FCLEAR SOY-PATTY,TOUCHBIT FCLEAR CHURCH-OFFICIAL,TOUCHBIT FCLEAR HEADSET,WORNBIT SET 'HUNGER-WARNING,FALSE-VALUE SET 'BRUISED,FALSE-VALUE SET 'MUGGED,FALSE-VALUE SET 'JOYBOOTH-USED,FALSE-VALUE SET 'MITCHELL-NEWS-FLAG,FALSE-VALUE SET 'MITCHELL-RAID-FLAG,FALSE-VALUE SET 'WILD-DOG-COUNTER,0 SET 'DORM-RAID-FLAG,FALSE-VALUE SET 'APARTMENT-RAID-FLAG,FALSE-VALUE SET 'STONING-FLAG,FALSE-VALUE SET 'BEGGAR-FLAG,FALSE-VALUE SET 'CLERK-WAITING,FALSE-VALUE SET 'RAID-PROB,0 SET 'RECORDING,FALSE-VALUE SET 'MAITRE-COUNTER,0 SET 'WAITER-COUNTER,0 SET 'MEAL-STATUS,0 SET 'JILL-COUNTER,-1 SET 'JILL-NOT-SPOKEN-YET,TRUE-VALUE CALL2 INT,I-HUNGER PUT STACK,0,0 CALL2 INT,I-JOYBOOTH-RECHARGE PUT STACK,0,0 CALL2 INT,I-MUG PUT STACK,0,0 CALL2 INT,I-JAIL PUT STACK,0,0 CALL2 INT,I-CITY-NOISES PUT STACK,0,0 CALL2 INT,I-RED-TUBE PUT STACK,0,0 CALL2 INT,I-BROWN-TUBE PUT STACK,0,0 CALL2 INT,I-SUNRISE-SUNSET PUT STACK,0,0 CALL2 INT,I-JILL PUT STACK,0,0 CALL2 INT,I-MITCHELL PUT STACK,0,0 CALL2 INT,I-MITCHELL-RAID PUT STACK,0,0 CALL2 INT,I-CURFEW PUT STACK,0,0 PUTP SOUTHWAY-AND-RIVER,P?SCENE,34 PUTP MAIN-AND-RIVER,P?SCENE,0 PUTP MAIN-AND-CHURCH,P?SCENE,50 PUTP MAIN-AND-WICKER,P?SCENE,25 PUTP HALLEY-AND-UNIVERSITY,P?SCENE,100 PUTP AIRPORTWAY-AND-RIVER,P?SCENE,34 PUTP MUSEUM-ENTRANCE,P?SCENE,100 PUTP TERMINAL,P?SCENE,34 PUTP CENTRE-AND-KENNEDY,P?SCENE,25 PUTP ZOO-ENTRANCE,P?SCENE,100 PUTP WICKER-AND-RIVER,P?SCENE,34 EQUAL? SYEAR,2041 \?ELS8 RANDOM 60 SUB STACK,1 >2041-SECONDS RANDOM 10 SUB STACK,1 >2041-TENTHS JUMP ?CND6 ?ELS8: EQUAL? SYEAR,2051 \?ELS10 RANDOM 60 SUB STACK,1 >2051-SECONDS RANDOM 10 SUB STACK,1 >2051-TENTHS JUMP ?CND6 ?ELS10: EQUAL? SYEAR,2061 \?ELS12 RANDOM 60 SUB STACK,1 >2061-SECONDS RANDOM 10 SUB STACK,1 >2061-TENTHS JUMP ?CND6 ?ELS12: EQUAL? SYEAR,2071 \?ELS14 RANDOM 60 SUB STACK,1 >2071-SECONDS RANDOM 10 SUB STACK,1 >2071-TENTHS JUMP ?CND6 ?ELS14: EQUAL? SYEAR,2081 \?CND6 RANDOM 60 SUB STACK,1 >2081-SECONDS RANDOM 10 SUB STACK,1 >2081-TENTHS ?CND6: CRLF CRLF HLIGHT H-BOLD PRINTI " -- SIMULATION TERMINATED --" HLIGHT 0 CRLF FIRST? ROOMS >X /?KLU34 ?KLU34: ?PRG19: FCLEAR X,TOUCHBIT NEXT? X >X /?KLU35 ?KLU35: ZERO? X \?PRG19 CALL2 QUEUED?,I-FIRST-SIMULATION-RESULT ZERO? STACK \?CND24 CALL2 QUEUED?,I-VIEW ZERO? STACK \?CND24 EQUAL? PART-FLAG,1 \?ELS31 MOVE PERELMAN,LOCAL-GLOBALS CALL QUEUE,I-MESSAGE-D,6 JUMP ?CND24 ?ELS31: LESS? PART-FLAG,3 \?CND24 CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE CALL QUEUE,I-PERELMAN,-1 SUB TIME,1 >LAST-ABE-TIME ?CND24: SET 'L-DATE,FALSE-VALUE SET 'SIMULATING,FALSE-VALUE SET 'MODE,COMM-MODE CALL2 GOTO,COMM-ROOM RSTACK .FUNCT MOBY-VERB? CALL1 PRSO-VERB? ZERO? STACK \TRUE CALL1 PRSI-VERB? ZERO? STACK /FALSE RTRUE .FUNCT ACCESSIBLE?,OBJ,L LOC OBJ >L FSET? OBJ,INVISIBLE /FALSE ZERO? L /FALSE EQUAL? L,PLAYER,WINNER,HERE /TRUE EQUAL? L,GLOBAL-OBJECTS /TRUE EQUAL? L,LOCAL-GLOBALS \?ELS13 CALL GLOBAL-IN?,OBJ,HERE ZERO? STACK \TRUE ?ELS13: CALL2 META-LOC,OBJ EQUAL? STACK,HERE \FALSE FSET? L,OPENBIT \FALSE CALL2 ACCESSIBLE?,L ZERO? STACK /FALSE RTRUE .FUNCT VISIBLE?,OBJ,L LOC OBJ >L CALL2 ACCESSIBLE?,OBJ ZERO? STACK \TRUE CALL2 SEE-INSIDE?,L ZERO? STACK /FALSE CALL2 VISIBLE?,L ZERO? STACK /FALSE RTRUE .FUNCT META-LOC,OBJ,INV=0 ?PRG1: ZERO? OBJ /FALSE ZERO? INV /?ELS7 FSET? OBJ,INVISIBLE /FALSE ?ELS7: IN? OBJ,GLOBAL-OBJECTS \?CND3 RETURN GLOBAL-OBJECTS ?CND3: IN? OBJ,ROOMS \?ELS14 RETURN OBJ ?ELS14: 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 GET TEE,DEXITOBJ EQUAL? STACK,DOBJ \?PRG1 RETURN P .FUNCT HELD?,OBJ,CONT=0 ZERO? CONT \?CND1 SET 'CONT,WINNER ?CND1: ZERO? OBJ /FALSE IN? OBJ,CONT /TRUE IN? OBJ,ROOMS /FALSE IN? OBJ,GLOBAL-OBJECTS /FALSE LOC OBJ CALL2 HELD?,STACK RSTACK .FUNCT SEE-INSIDE?,OBJ 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 DIV STACK,2 INTBL? OBJ1,TEE,STACK /TRUE RFALSE .FUNCT FIND-IN,WHERE,WHAT,W FIRST? WHERE >W /?KLU11 ?KLU11: ZERO? W /FALSE ?PRG4: FSET? W,WHAT \?ELS8 RETURN W ?ELS8: NEXT? W >W /?PRG4 RFALSE .FUNCT LOC-CLOSED LOC PRSO FSET? STACK,CONTBIT \FALSE LOC PRSO FSET? STACK,OPENBIT /FALSE FSET? PRSO,TAKEBIT \FALSE PRINTI "But" LOC PRSO CALL ARTICLE,STACK,TRUE-VALUE PRINTR " is closed!" .FUNCT RIGHT-HERE PRINTI "But" CALL ARTICLE,PRSO,TRUE-VALUE CALL2 PLURAL,PRSO PRINTR " right here!" .FUNCT DO-WALK,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR RSTACK .FUNCT CHANGE-OBJECT,OLD,NEW EQUAL? PRSO,OLD \?ELS5 CALL PERFORM,PRSA,NEW,PRSI RTRUE ?ELS5: CALL PERFORM,PRSA,PRSO,NEW RTRUE .FUNCT CLEAR-BUF SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE RETURN 2 .FUNCT ROB,WHO,WHERE,N,X FIRST? WHO >X /?KLU11 ?KLU11: ?PRG1: ZERO? X /TRUE NEXT? X >N /?KLU12 ?KLU12: EQUAL? WHO,PLAYER \?CND6 FSET? X,WORNBIT \?CND6 FCLEAR X,WORNBIT ?CND6: MOVE X,WHERE SET 'X,N JUMP ?PRG1 .FUNCT HACK-HACK,STR PRINT STR CALL ARTICLE,PRSO,TRUE-VALUE CALL2 PICK-ONE,HO-HUM PRINT STACK CRLF RTRUE .FUNCT ARTICLE,OBJ,THE=0 ZERO? OBJ \?CND1 SET 'OBJ,NOT-HERE-OBJECT ?CND1: FSET? OBJ,NARTICLEBIT /?CND4 ZERO? THE /?ELS9 PRINTI " the" JUMP ?CND4 ?ELS9: FSET? OBJ,VOWELBIT \?ELS14 PRINTI " an" JUMP ?CND4 ?ELS14: PRINTI " a" ?CND4: PRINTI " " CALL2 DPRINT,OBJ RSTACK .FUNCT PLURAL,OBJ FSET? OBJ,PLURALBIT \?ELS5 PRINTI " are" RTRUE ?ELS5: PRINTI " is" RTRUE .ENDI