.FUNCT V-$REFRESH GET 0,8 BAND STACK,-5 PUT 0,8,STACK CLEAR -1 ICALL1 INIT-STATUS-LINE RTRUE .FUNCT V-VERBOSE SET 'VERBOSITY,2 PRINTI "Maximum verbosity." CRLF CRLF CALL1 V-LOOK RSTACK .FUNCT V-BRIEF SET 'VERBOSITY,1 PRINTR "Brief descriptions." .FUNCT V-SUPERBRIEF SET 'VERBOSITY,0 PRINTR "Superbrief descriptions." .FUNCT V-DIAGNOSE ZERO? HEADACHE /?CCL3 PRINTR "You have a big blinding throbber." ?CCL3: ZERO? GROGGY /?CCL7 PRINTR "You feel weak." ?CCL7: EQUAL? IDENTITY-FLAG,ZAPHOD \?PRG14 PRINTI "You have two " PRINTD HANGOVER PRINTR "s." ?PRG14: PRINTR "You are in good health." .FUNCT V-INVENTORY,SPARE-KLUDGE FSET? SPARE-DRIVE,NDESCBIT \?CCL3 SET 'SPARE-KLUDGE,TRUE-VALUE FCLEAR SPARE-DRIVE,NDESCBIT JUMP ?CND1 ?CCL3: SET 'SPARE-KLUDGE,FALSE-VALUE ?CND1: EQUAL? IDENTITY-FLAG,ARTHUR /?PRG11 FIRST? PROTAGONIST /?PRG11 PRINTI "You are empty-handed." CRLF JUMP ?CND4 ?PRG11: PRINTI "You have:" CRLF ZERO? HEADACHE /?CND13 PRINTI " a " PRINTD HANGOVER CRLF ?CND13: EQUAL? IDENTITY-FLAG,ARTHUR \?CND17 ZERO? HOLDING-NO-TEA \?CCL18 CALL2 HELD?,TEA ZERO? STACK \?CND17 ?CCL18: SET 'HOLDING-NO-TEA,TRUE-VALUE PRINTI " no tea" CRLF ?CND17: ICALL2 PRINT-CONT,PROTAGONIST ?CND4: ZERO? SPARE-KLUDGE /FALSE FSET SPARE-DRIVE,NDESCBIT RTRUE .FUNCT V-QUIT ICALL1 V-SCORE PRINTI "Do you wish to leave the game? (Y is affirmative): " CALL1 YES? ZERO? STACK /?PRG6 QUIT RTRUE ?PRG6: PRINTR "Ok." .FUNCT V-RESTART ICALL2 V-SCORE,TRUE-VALUE PRINTI "Do you wish to restart? (Y is affirmative): " CALL1 YES? ZERO? STACK /FALSE PRINTI "Restarting." CRLF RESTART PRINTR "Failed." .FUNCT FINISH,REPEATING CRLF ZERO? REPEATING \?PRG3 ICALL1 V-SCORE CRLF ?PRG3: PRINTI "Would you like to start over, restore a saved position, get hints or end this session of the game? (Type RESTART, RESTORE, HINTS or QUIT): >" PUTB P-INBUF,1,0 READ P-INBUF,P-LEXV GET P-LEXV,1 EQUAL? STACK,W?RESTART \?CCL7 RESTART PRINTI "Failed." CRLF CALL2 FINISH,TRUE-VALUE RSTACK ?CCL7: GET P-LEXV,1 EQUAL? STACK,W?RESTORE \?CCL11 RESTORE ZERO? STACK /?PRG17 PRINTR "Ok." ?PRG17: PRINTI "Failed." CRLF CALL2 FINISH,TRUE-VALUE RSTACK ?CCL11: GET P-LEXV,1 EQUAL? STACK,W?HINTS \?CCL20 ICALL1 V-HINTS ICALL1 INIT-STATUS-LINE ICALL1 UPDATE-STATUS-LINE CALL2 FINISH,TRUE-VALUE RSTACK ?CCL20: GET P-LEXV,1 EQUAL? STACK,W?QUIT,W?Q \?CCL22 QUIT RTRUE ?CCL22: CALL2 FINISH,TRUE-VALUE RSTACK .FUNCT YES? PRINTC 62 PUTB P-INBUF,1,0 READ P-INBUF,P-LEXV GET P-LEXV,1 EQUAL? STACK,W?YES,W?Y /TRUE RFALSE .FUNCT V-RESTORE RESTORE ZERO? STACK /?PRG6 PRINTR "Ok." ?PRG6: PRINTR "Failed." .FUNCT V-SAVE,X SAVE >X GET 0,8 BTST STACK,4 \?CCL3 ICALL1 V-$REFRESH JUMP ?CND1 ?CCL3: EQUAL? X,2 \?CND1 ICALL1 INIT-STATUS-LINE ?CND1: ZERO? X \?PRG12 PRINTI "Failed." CRLF RETURN 2 ?PRG12: PRINTI "Okay." CRLF EQUAL? X,1 /TRUE ICALL1 V-FIRST-LOOK RTRUE .FUNCT V-SCORE,ASK? ASSIGNED? 'ASK? /?CND1 SET 'ASK?,TRUE-VALUE ?CND1: LESS? SCORE,400 \?PRG7 PRINTI "We are about to give you your score. Put on your peril-sensitive sunglasses now. (Hit RETURN or ENTER when ready.) " PRINTC 62 PUTB P-INBUF,1,0 READ P-INBUF,P-LEXV SET 'P-CONT,FALSE-VALUE CRLF ?PRG7: PRINTI "Your score is " PRINTN SCORE PRINTI " of a possible 400, in " PRINTN MOVES EQUAL? MOVES,1 \?PRG14 PRINTI " turn." JUMP ?CND9 ?PRG14: PRINTI " turns." ?CND9: CRLF RETURN SCORE .FUNCT V-SCRIPT PRINT STR?27 PRINTI "n.]" CRLF DIROUT D-PRINTER-ON ICALL2 COPR-NOTICE,STR?28 RTRUE .FUNCT V-UNSCRIPT ICALL2 COPR-NOTICE,STR?29 DIROUT D-PRINTER-OFF PRINT STR?27 PRINTR "ff.]" .FUNCT COPR-NOTICE,STR DIROUT D-SCREEN-OFF CRLF PRINTI "Here " PRINT STR PRINTI "s a transcript of interaction with" CRLF ICALL1 V-VERSION DIROUT D-SCREEN-ON RTRUE .FUNCT V-$ID PRINTI "Interpreter " GETB 0,30 PRINTN STACK PRINTI " Version " GETB 0,31 PRINTC STACK CRLF RTRUE .FUNCT V-VERSION,CNT,V SET 'CNT,17 GET 0,1 BAND STACK,2047 >V CRLF PRINTI "THE HITCHHIKER'S GUIDE TO THE GALAXY Infocom interactive fiction - a science fiction story Copyright (c) 1984 by Infocom, Inc. All rights reserved. Release " PRINTN V PRINTI " / Serial number " ?PRG3: IGRTR? 'CNT,23 /?REP4 GETB 0,CNT PRINTC STACK JUMP ?PRG3 ?REP4: PRINTI " / " ICALL1 V-$ID CRLF RTRUE .FUNCT V-$VERIFY EQUAL? PRSO,INTNUM \?PRG8 EQUAL? P-NUMBER,469 \?PRG8 PRINTN SERIAL CRLF RTRUE ?PRG8: PRINTI "Verifying..." CRLF VERIFY \?PRG15 PRINTR "Good." ?PRG15: CRLF PRINTR "** Bad **" .FUNCT V-ALARM EQUAL? PRSO,ROOMS \?PRG4 ICALL PERFORM,V?ALARM,ME RTRUE ?PRG4: PRINTI "I don't think" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is sleeping." .FUNCT V-ANSWER ZERO? AWAITING-REPLY /?CCL3 GET P-LEXV,P-CONT EQUAL? STACK,W?YES \?CCL3 ICALL1 V-YES CALL1 FUCKING-CLEAR RSTACK ?CCL3: ZERO? AWAITING-REPLY /?CCL7 GET P-LEXV,P-CONT EQUAL? STACK,W?NO \?CCL7 ICALL1 V-NO CALL1 FUCKING-CLEAR RSTACK ?CCL7: IN? BEAST,HERE \?PRG12 ICALL1 V-SAY CALL1 FUCKING-CLEAR RSTACK ?PRG12: PRINTI "Nobody is awaiting your answer." CRLF CALL1 FUCKING-CLEAR RSTACK .FUNCT V-APPLAUD CALL2 RUNNING?,I-CAPTAIN ZERO? STACK /?PRG6 PRINTR "If you want to enjoy the poetry, just type that." ?PRG6: PRINTR "Thank you, thank you." .FUNCT V-APPRECIATE CALL2 RUNNING?,I-CAPTAIN ZERO? STACK /?PRG4 CALL1 V-APPLAUD RSTACK ?PRG4: PRINTR "Hey, I never get any appreciation! There's absolutely no job satisfaction in being a computer." .FUNCT V-ASK-ABOUT EQUAL? PRSO,ME \?CCL3 ICALL PERFORM,V?TELL,ME RTRUE ?CCL3: FSET? PRSO,ACTORBIT \?CCL5 PRINTI "A long silence tells you that" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " isn't interested in talking about" IN? PRSI,ROOMS \?CCL12 PRINTI " that" JUMP ?PRG15 ?CCL12: ICALL ARTICLE,PRSI,TRUE-VALUE ?PRG15: PRINTR "." ?CCL5: ICALL PERFORM,V?TELL,PRSO RTRUE .FUNCT V-ASK-FOR PRINTI "Unsurprisingly," ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " doesn't oblige." .FUNCT V-BITE CALL2 HACK-HACK,STR?30 RSTACK .FUNCT V-BLOCK CALL1 V-DIG RSTACK .FUNCT V-BLOCK-WITH CALL1 V-DIG RSTACK .FUNCT PRE-BOARD ZERO? IN-FRONT-FLAG /?CCL3 ICALL PERFORM,V?STAND-BEFORE,PRSO RTRUE ?CCL3: LOC PROTAGONIST EQUAL? PRSO,STACK \FALSE PRINT LOOK-AROUND CRLF RTRUE .FUNCT V-BOARD,AV FSET? PRSO,VEHBIT \?PRG10 PRINTI "You are now in" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTC 46 CRLF MOVE WINNER,PRSO EQUAL? HERE,SPEEDBOAT /?CND8 SET 'LYING-DOWN,TRUE-VALUE ?CND8: GETP PRSO,P?ACTION ICALL STACK,M-ENTER SET 'OHERE,FALSE-VALUE RTRUE ?PRG10: PRINTI "You can't get into" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" .FUNCT V-BRUSH ZERO? PRSI \?CCL3 CALL2 HELD?,TOOTHBRUSH ZERO? STACK /?PRG9 PRINTI "(with the " PRINTD TOOTHBRUSH PRINTC 41 CRLF ICALL PERFORM,V?BRUSH,PRSO,TOOTHBRUSH RTRUE ?PRG9: PRINTI "You have nothing to brush" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " with." ?CCL3: EQUAL? PRSI,TOOTHBRUSH /?CCL14 PRINTI "With" ICALL2 ARTICLE,PRSI PRINTR "!" ?CCL14: EQUAL? PRSO,TEETH /?PRG23 PRINTI "In general, " PRINTD TOOTHBRUSH PRINTR "es are meant for teeth." ?PRG23: PRINTR "Congratulations on your fine dental hygiene." .FUNCT V-BUY PRINTI "Sorry," ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " isn't for sale." .FUNCT V-CALL EQUAL? HERE,BEDROOM /?CCL3 PRINTR "There's no phone here!" ?CCL3: ZERO? HEADACHE /?CCL7 PRINTI "You reach for the receiver. " CALL2 PICK-ONE,LURCHES PRINT STACK CRLF RTRUE ?CCL7: FSET? PHONE,TOUCHBIT \?CCL11 PRINTR "The cable is down, remember?" ?CCL11: EQUAL? PRSO,DAIS \?CCL15 FSET PHONE,TOUCHBIT PRINTI "You explain your situation. The desk sergeant promises to send someone over soon, and says not to try anything crazy in the meantime, like lying down in front of the " PRINTD BULLDOZER PRINTC 46 PRINT DIALING-TONE CRLF RTRUE ?CCL15: EQUAL? PRSO,HOME \?CCL19 PRINTR "Who do you think you are, E.T.?" ?CCL19: EQUAL? PRSO,MAZE \?PRG24 CALL1 V-HINTS RSTACK ?PRG24: PRINTR "You don't know the number." .FUNCT V-CALL-WITH EQUAL? PRSI,PHONE /?CCL3 PRINTI "You can't use" ICALL2 ARTICLE,PRSI PRINTI " as a " PRINTD PHONE PRINTR "." ?CCL3: ICALL PERFORM,V?CALL,PRSO RTRUE .FUNCT PRE-CARVE CALL2 HELD?,STONE ZERO? STACK \FALSE PRINTR "You have no carving instrument." .FUNCT V-CARVE CALL2 PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT V-CARVE-WITH EQUAL? HERE,OUTER-LAIR \?PRG11 EQUAL? PRSI,STONE \?PRG7 ICALL PERFORM,V?CARVE,PRSO,MEMORIAL RTRUE ?PRG7: PRINTI "No luck;" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTI " doesn't even scratch the " PRINTD MEMORIAL PRINTR "." ?PRG11: PRINTR "Huh?" .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-CLEAN EQUAL? PRSO,GLOBAL-ROOM,ROOMS \?CCL3 EQUAL? HERE,BEDROOM \?CCL3 PRINTI "Just as you've got it all spick and span" CALL1 BETTER-LUCK RSTACK ?CCL3: EQUAL? PRSO,TEETH \?CCL9 ICALL PERFORM,V?BRUSH,TEETH RTRUE ?CCL9: EQUAL? PRSO,TOWEL \?PRG12 SET 'TOWEL-MUDDY,FALSE-VALUE ?PRG12: PRINTR "It is now much cleaner." .FUNCT V-CLIMB-DOWN EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?DOWN RSTACK ?CCL3: CALL1 V-CARVE RSTACK .FUNCT V-CLIMB-FOO EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?UP RSTACK ?CCL3: CALL1 V-CARVE RSTACK .FUNCT V-CLIMB-ON FSET? PRSO,VEHBIT \?PRG4 ICALL PERFORM,V?BOARD,PRSO RTRUE ?PRG4: PRINTI "You can't climb onto" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-CLIMB-OVER CALL1 V-CARVE RSTACK .FUNCT V-CLIMB-UP EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?UP RSTACK ?CCL3: CALL1 V-CARVE RSTACK .FUNCT V-CLOSE FSET? PRSO,SURFACEBIT \?CCL3 CALL1 V-COUNT RSTACK ?CCL3: FSET? PRSO,ACTORBIT \?CCL5 EQUAL? PRSO,SCREENING-DOOR,NUTRIMAT /?CCL5 CALL1 V-COUNT RSTACK ?CCL5: FSET? PRSO,DOORBIT /?CTR8 FSET? PRSO,CONTBIT \?CCL9 ?CTR8: FSET? PRSO,OPENBIT \?PRG19 PRINTI "Okay," ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is now closed." CRLF FCLEAR PRSO,OPENBIT RTRUE ?PRG19: PRINT ALREADY-CLOSED CRLF RTRUE ?CCL9: CALL1 TELL-ME-HOW RSTACK .FUNCT V-COUNT CALL2 PICK-ONE,IMPOSSIBLES PRINT STACK CRLF RTRUE .FUNCT V-CUT ZERO? PRSI \?PRG4 CALL1 V-CARVE RSTACK ?PRG4: PRINTI "I doubt that the ""cutting edge"" of" ICALL2 ARTICLE,PRSI PRINTR " is adequate." .FUNCT V-DIG CALL2 PICK-ONE,WASTES PRINT STACK CRLF RTRUE .FUNCT V-DISEMBARK FSET? PRSO,TAKEBIT \?CCL3 CALL2 META-LOC,PRSO EQUAL? STACK,HERE \?CCL3 IN? PRSO,HERE /?CCL3 IN? PRSO,PROTAGONIST /?CCL3 ICALL PERFORM,V?TAKE,PRSO RTRUE ?CCL3: LOC WINNER EQUAL? STACK,PRSO /?CCL9 PRINT LOOK-AROUND CRLF RETURN 2 ?CCL9: ICALL1 OWN-FEET SET 'LYING-DOWN,FALSE-VALUE MOVE WINNER,HERE SET 'OHERE,FALSE-VALUE RETURN OHERE .FUNCT V-DOZE PRINTI "You doze for several minutes. " CALL1 V-WAIT RSTACK .FUNCT V-DRINK,S 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 EQUAL? HERE,MAZE \?CCL3 EQUAL? PRSO,THING /?CND4 SET 'BRAIN-DAMAGED,PRSO ?CND4: MOVE PRSO,LOCAL-GLOBALS PRINTI "As you release" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR ", it vanishes into the maze of synapses." ?CCL3: EQUAL? HERE,ACCESS-SPACE \?CCL11 MOVE PRSO,LOCAL-GLOBALS PRINTI "If you recall, the floor is just an open mesh, and" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " drops through and disappears." ?CCL11: MOVE PRSO,HERE PRINTR "Dropped." .FUNCT V-EAT PRINTI "Stuffing" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " in your mouth would do little to help at this point." .FUNCT V-ENJOY FSET? PRSO,ACTORBIT \?PRG4 CALL1 V-KISS RSTACK ?PRG4: PRINTI "Not difficult at all, considering how enjoyable" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is." .FUNCT V-ENTER,VEHICLE CALL FIND-IN,HERE,VEHBIT >VEHICLE ZERO? VEHICLE /?CCL3 ICALL PERFORM,V?BOARD,VEHICLE RTRUE ?CCL3: CALL2 DO-WALK,P?IN RSTACK .FUNCT V-ESCAPE SET 'DREAMING,FALSE-VALUE PRINTI "You are so keen on escape that you literally leap through the fabric of the space-time continuum. You wake up in a shack on tenth-century Earth. A dressing gown, a " PRINTD TOOTHBRUSH ICALL2 JIGS-UP,STR?31 RTRUE .FUNCT V-EXAMINE FSET? PRSO,DOORBIT \?CCL3 CALL1 V-LOOK-INSIDE RSTACK ?CCL3: FSET? PRSO,CONTBIT \?CCL5 FSET? PRSO,ACTORBIT /?CCL5 FSET? PRSO,OPENBIT \?PRG11 CALL1 V-LOOK-INSIDE RSTACK ?PRG11: PRINTR "It's closed." ?CCL5: GETP PRSO,P?TEXT ZERO? STACK /?CCL14 ICALL PERFORM,V?READ,PRSO RTRUE ?CCL14: EQUAL? PRSO,BROWNIAN-SOURCE \?CCL16 ICALL PERFORM,V?EXAMINE,DANGLY-BIT RTRUE ?CCL16: FSET? PRSO,TOOLBIT \?CCL18 PRINT IT-LOOKS-LIKE PRINTI " every other " PRINTD PRSO PRINTR " you've ever seen." ?CCL18: EQUAL? PRSO,HEAD,TEETH,EYES /?PRG25 EQUAL? PRSO,EARS \?PRG27 ?PRG25: PRINTR "That would involve quite a contortion." ?PRG27: PRINTI "You see nothing special about" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-EXAMINE-THROUGH PRINTR "This reveals nothing new." .FUNCT V-EXIT ZERO? PRSO \?CND1 LOC PROTAGONIST >PRSO ?CND1: FSET? PRSO,VEHBIT \?CCL5 ICALL PERFORM,V?DISEMBARK,PRSO RTRUE ?CCL5: CALL2 DO-WALK,P?OUT RSTACK .FUNCT V-FEED,FOOD CALL FIND-IN,PROTAGONIST,EATBIT >FOOD ZERO? FOOD /?PRG6 PRINTI "(the " PRINTD FOOD PRINTC 41 CRLF ICALL PERFORM,V?GIVE,FOOD,PRSO RTRUE ?PRG6: PRINTI "You have nothing to feed" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " with." .FUNCT V-FILL PRINTR "Phil who?" .FUNCT V-FIND,WHERE,L LOC PRSO >L EQUAL? PRSO,EARS,HEAD,HANDS /?PRG6 EQUAL? PRSO,EYES,TEETH \?CCL3 ?PRG6: PRINTI "Are you sure" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is lost?" ?CCL3: EQUAL? PRSO,ME \?CCL11 PRINTI "You're in" ICALL ARTICLE,HERE,TRUE-VALUE PRINTR "." ?CCL11: IN? PRSO,PROTAGONIST \?CCL17 PRINTR "You have it!" ?CCL17: EQUAL? PRSO,PROSSER \?CCL21 EQUAL? IDENTITY-FLAG,FORD \?CCL21 ZERO? GONE-AROUND \?CCL21 PRINTI "He's " PRINT ON-OTHER-SIDE PRINTI " of the " PRINTD BULLDOZER PRINTR "." ?CCL21: IN? PRSO,HERE /?PRG36 EQUAL? PRSO,MECHANISM \?PRD31 EQUAL? HERE,ACCESS-SPACE /?PRG36 ?PRD31: EQUAL? PRSO,HATCH \?CCL28 EQUAL? HERE,HATCHWAY \?CCL28 ?PRG36: PRINTR "Right in front of you." ?CCL28: CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?CCL39 PRINTR "You figure it out!" ?CCL39: FSET? L,ACTORBIT \?CCL43 CALL2 VISIBLE?,L ZERO? STACK /?CCL43 PRINTI "As far as you can tell," ICALL ARTICLE,L,TRUE-VALUE PRINTR " has it." ?CCL43: FSET? L,CONTBIT \?CCL51 CALL2 VISIBLE?,PRSO ZERO? STACK /?CCL51 PRINTI "It's in" ICALL ARTICLE,L,TRUE-VALUE PRINTR "." ?CCL51: ZERO? WHERE /?PRG62 PRINTR "Beats me." ?PRG62: 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-FLIPSWITCH FSET? PRSO,SWITCHBIT \?CCL3 EQUAL? PRSI,INTNUM \?CCL3 LESS? P-NUMBER,9 \?CCL3 CALL2 VISIBLE?,BOARD ZERO? STACK /?CCL3 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-FOLLOW IN? PRSO,HERE \?CCL3 PRINTI "But" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is right here!" ?CCL3: FSET? PRSO,ACTORBIT /?PRG10 CALL1 V-COUNT RSTACK ?PRG10: PRINTI "You have no idea where" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is." .FUNCT I-FOLLOW SET 'FOLLOW-FLAG,FALSE-VALUE RFALSE .FUNCT V-FOOTNOTE ZERO? PRSO /?PRG6 EQUAL? PRSO,INTNUM /?CCL3 ?PRG6: PRINTR "Specify a number, as in ""FOOTNOTE 6.""" ?CCL3: EQUAL? P-NUMBER,1 \?CCL9 PRINTR "In case anyone is interested, this quotation is from a letter written by John Keats, and thus he becomes the first major 19th Century British poet to feature in a computer game." ?CCL9: EQUAL? P-NUMBER,2 \?CCL13 PRINTR "Bob Dylan, 1969." ?CCL13: EQUAL? P-NUMBER,3 \?CCL17 PRINTR "A meaningless coincidence." ?CCL17: EQUAL? P-NUMBER,4 \?CCL21 PRINTR "The first single they recorded on their own Apple label, and one of their most successful songs ever." ?CCL21: EQUAL? P-NUMBER,5 \?CCL25 PRINTI "Peacefully for a " PRINTD BEAST PRINTR " that is. Now and then it snorts or rolls over, and the walls shake a bit." ?CCL25: EQUAL? P-NUMBER,6 \?CCL29 PRINTR "That was just an example." ?CCL29: EQUAL? P-NUMBER,7 \?CCL33 SET 'AWAITING-REPLY,13 CALL QUEUE,I-REPLY,1 PUT STACK,0,1 CALL2 NOT-VERY-GOOD,STR?32 RSTACK ?CCL33: EQUAL? P-NUMBER,8 \?CCL35 SET 'AWAITING-REPLY,13 CALL QUEUE,I-REPLY,1 PUT STACK,0,1 CALL2 NOT-VERY-GOOD,STR?33 RSTACK ?CCL35: EQUAL? P-NUMBER,9 \?CCL37 PRINTR "Unfortunately, you couldn't hear a word of it, because sound doesn't travel in a vacuum." ?CCL37: EQUAL? P-NUMBER,10 \?CCL41 PRINTR "I guess it isn't all that dangerous a place after all." ?CCL41: EQUAL? P-NUMBER,11 \?CCL45 SET 'AWAITING-REPLY,14 CALL QUEUE,I-REPLY,2 PUT STACK,0,1 PRINTR "Isn't it fun reading through all the footnotes?" ?CCL45: EQUAL? P-NUMBER,12 \?CCL49 PRINTR "This is the famous recursive footnote (Footnote 12)." ?CCL49: EQUAL? P-NUMBER,13 \?CCL53 SET 'AWAITING-REPLY,13 CALL QUEUE,I-REPLY,1 PUT STACK,0,1 CALL2 NOT-VERY-GOOD,STR?34 RSTACK ?CCL53: EQUAL? P-NUMBER,14 \?CCL55 PRINT GUIDE-NAME PRINTI " is also the name of a terrific work of interactive fiction by Douglas Adams and S. Eric Meretzky." PRINT ALREADY-KNOW-THAT CRLF RTRUE ?CCL55: EQUAL? P-NUMBER,15 \?PRG60 SET 'AWAITING-REPLY,13 CALL QUEUE,I-REPLY,1 PUT STACK,0,1 CALL2 NOT-VERY-GOOD,STR?35 RSTACK ?PRG60: PRINTI "There is no Footnote " PRINTN P-NUMBER PRINTR "." .FUNCT V-FRIPPING PRINTR "Aaaaaaarggggghhhhhh!" .FUNCT V-GET-DRESSED,GARMENT EQUAL? PRSO,ROOMS \?CCL3 EQUAL? IDENTITY-FLAG,ARTHUR \?PRG9 FSET? GOWN,WORNBIT \?CCL6 ?PRG9: PRINTR "You are!" ?CCL6: CALL2 HELD?,GOWN ZERO? STACK /?CCL12 ICALL PERFORM,V?WEAR,GOWN RTRUE ?CCL12: CALL2 VISIBLE?,GOWN ZERO? STACK /?PRG17 PRINT NOT-HOLDING PRINTC 32 PRINTD GOWN PRINTR "." ?PRG17: PRINTR "There's nothing to wear here." ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-GET-DRUNK EQUAL? PRSO,ROOMS \?CCL3 EQUAL? HERE,PUB \?CCL6 PRINTI "You get drunk and have a terrific time for twelve minutes, are the life and soul of the Pub, tell some really great stories, make everyone laugh a lot, and they all clap you on the back and tell you what a great chap you are and then the Earth gets unexpectedly demolished" EQUAL? IDENTITY-FLAG,ARTHUR \?CCL11 PRINTI ". You wake up with a hangover which lasts for all eternity." CRLF CALL1 FINISH RSTACK ?CCL11: CALL2 JIGS-UP,STR?36 RSTACK ?CCL6: EQUAL? HERE,LIVING-ROOM,DINING-ROOM,KITCHEN \?PRG18 PRINT YOU-ARE CRLF RTRUE ?PRG18: PRINTR "You can't see any alcohol here!" ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-GET-UNDRESSED ZERO? PRSO \?CND1 SET 'PRSO,ROOMS ?CND1: EQUAL? PRSO,ROOMS \?CCL5 EQUAL? IDENTITY-FLAG,ARTHUR \?PRG14 FSET? GOWN,WORNBIT \?PRG12 ICALL PERFORM,V?TAKE-OFF,GOWN RTRUE ?PRG12: PRINTR "You're not wearing anything!" ?PRG14: PRINT ARRESTED CRLF RTRUE ?CCL5: CALL1 V-TELL-TIME RSTACK .FUNCT PRE-GIVE CALL1 IDROP ZERO? STACK \TRUE RFALSE .FUNCT V-GIVE FSET? PRSI,ACTORBIT \?PRG8 PRINTI "Politely," ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR " refuses your offer." ?PRG8: PRINTI "You can't give" ICALL2 ARTICLE,PRSO PRINTI " to" ICALL2 ARTICLE,PRSI PRINTR "!" .FUNCT V-GIVE-UP EQUAL? PRSO,ROOMS \?CCL3 CALL1 V-QUIT RSTACK ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-HANG PRINTI "You can't hang something from" ICALL2 ARTICLE,PRSI PRINTR "!" .FUNCT V-HELLO ZERO? PRSO /?CCL3 FSET? PRSO,ACTORBIT \?CCL3 PRINTR """Hello to you too.""" ?CCL3: ZERO? PRSO /?CCL9 ICALL PERFORM,V?TELL,PRSO RTRUE ?CCL9: ICALL PERFORM,V?TELL,ME RTRUE .FUNCT V-HIDE PRINTR "There's no place to hide here." .FUNCT V-HITCHHIKE ICALL PERFORM,V?PUSH,GREEN-BUTTON RTRUE .FUNCT V-I-AM PRINTR "Pleased to meet you. I'm your computer." .FUNCT V-IDIOT ICALL PERFORM,V?TELL,ME RTRUE .FUNCT V-KICK CALL2 HACK-HACK,STR?37 RSTACK .FUNCT V-KILL PRINTR "You are obviously letting things get to you. You should learn to relax a little." .FUNCT V-KNEEL CALL1 V-TASTE RSTACK .FUNCT V-KNOCK FSET? PRSO,DOORBIT \?CCL3 PRINTR "Nobody's home." ?CCL3: CALL2 HACK-HACK,STR?38 RSTACK .FUNCT V-KISS PRINTR "This is family entertainment, not a video nasty." .FUNCT V-LAMP-OFF FSET? PRSO,LIGHTBIT \?CCL3 FSET? PRSO,ONBIT /?CCL3 PRINTR "It is already off." ?CCL3: EQUAL? PRSO,INTNUM \?PRG13 LESS? P-NUMBER,9 \?PRG13 CALL2 ACCESSIBLE?,BOARD ZERO? STACK /?PRG13 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?PRG13: PRINTR "You can't turn that off." .FUNCT V-LAMP-ON FSET? PRSO,LIGHTBIT \?CCL3 FSET? PRSO,ONBIT \?CCL3 PRINTR "It is already on." ?CCL3: EQUAL? PRSO,INTNUM \?PRG13 LESS? P-NUMBER,9 \?PRG13 CALL2 ACCESSIBLE?,BOARD ZERO? STACK /?PRG13 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?PRG13: PRINTR "You can't turn that on." .FUNCT V-LEAP ZERO? LYING-DOWN /?CCL3 PRINT WHILE-LYING CRLF RTRUE ?CCL3: EQUAL? HERE,CAPTAINS-QUARTERS \?CCL7 CALL1 V-STAND RSTACK ?CCL7: ZERO? PRSO /?CCL9 IN? PRSO,HERE /?CCL9 CALL1 V-COUNT RSTACK ?CCL9: ZERO? PRSO \?CCL13 EQUAL? HERE,SPEEDBOAT \?CCL13 PRINT DONT-MIX CRLF RTRUE ?CCL13: CALL1 V-SKIP RSTACK .FUNCT V-LEAVE ZERO? PRSO \?CND1 SET 'PRSO,ROOMS ?CND1: EQUAL? PRSO,ROOMS \?CCL5 CALL2 DO-WALK,P?OUT RSTACK ?CCL5: LOC WINNER EQUAL? PRSO,STACK \?CCL7 ICALL PERFORM,V?DISEMBARK,PRSO RTRUE ?CCL7: ICALL PERFORM,V?DROP,PRSO RTRUE .FUNCT V-LIE-DOWN EQUAL? HERE,CAPTAINS-QUARTERS \?CCL3 CALL1 V-STAND RSTACK ?CCL3: EQUAL? PRSO,ROOMS \?CCL5 EQUAL? HERE,BEDROOM \?CCL8 ICALL PERFORM,V?LIE-DOWN,BED RTRUE ?CCL8: ICALL PERFORM,V?LIE-DOWN,GROUND RTRUE ?CCL5: ICALL PERFORM,V?BOARD,PRSO RTRUE .FUNCT V-LISTEN PRINTI "At the moment," ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " makes no sound." .FUNCT V-LOCK CALL1 V-CARVE RSTACK .FUNCT V-LOOK FSET? TOWEL,WORNBIT \?CCL3 PRINTR "You see a towel." ?CCL3: CALL2 DESCRIBE-ROOM,TRUE-VALUE ZERO? STACK /FALSE CALL2 DESCRIBE-OBJECTS,TRUE-VALUE RSTACK .FUNCT V-LOOK-BEHIND PRINTI "There is nothing behind" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-LOOK-DOWN ZERO? LIT \?CCL3 PRINT TOO-DARK CRLF RTRUE ?CCL3: EQUAL? PRSO,ROOMS \?CCL7 ICALL PERFORM,V?EXAMINE,GROUND RTRUE ?CCL7: ICALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOOK-INSIDE FSET? PRSO,ACTORBIT \?CCL3 EQUAL? PRSO,SCREENING-DOOR /?CCL3 PRINTR "There is nothing special to be seen." ?CCL3: EQUAL? PRSO,PLOTTER,THUMB,SPARE-DRIVE \?CCL9 PRINTR "You can't do that." ?CCL9: FSET? PRSO,SURFACEBIT \?CCL14 LOC WINNER EQUAL? PRSO,STACK \?CCL17 ICALL1 DESCRIBE-VEHICLE RTRUE ?CCL17: FIRST? PRSO \?PRG20 CALL2 PRINT-CONT,PRSO RSTACK ?PRG20: PRINTI "There is nothing on" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?CCL14: FSET? PRSO,DOORBIT \?CCL25 PRINTI "All you can tell is that" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is " FSET? PRSO,OPENBIT \?PRG35 PRINTR "open." ?PRG35: PRINTR "closed." ?CCL25: FSET? PRSO,CONTBIT \?PRG57 LOC WINNER EQUAL? PRSO,STACK \?CCL41 ICALL1 DESCRIBE-VEHICLE RTRUE ?CCL41: CALL2 SEE-INSIDE?,PRSO ZERO? STACK /?CCL43 FIRST? PRSO \?PRG47 CALL2 PRINT-CONT,PRSO RSTACK ?PRG47: PRINTR "It's empty." ?CCL43: FSET? PRSO,OPENBIT /?PRG53 FIRST? PRSO \?PRG53 ICALL PERFORM,V?OPEN,PRSO RTRUE ?PRG53: PRINTI "It seems that" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is closed." ?PRG57: PRINTR "You can't do that." .FUNCT V-LOOK-UNDER CALL2 HELD?,PRSO ZERO? STACK /?PRG11 FSET? PRSO,WORNBIT \?PRG9 PRINTR "You're wearing it!" ?PRG9: PRINTR "You're holding it!" ?PRG11: PRINTI "There is nothing but " EQUAL? PRSO,HOOK \?CCL15 PRINTI "a " PRINTD FISH-HOLE JUMP ?PRG30 ?CCL15: EQUAL? PRSO,BOAT-OBJECT \?CCL19 PRINTI "water" JUMP ?PRG30 ?CCL19: EQUAL? PRSO,TOWEL \?PRG28 FSET? TOWEL,SURFACEBIT \?PRG28 PRINTI "a drain" JUMP ?PRG30 ?PRG28: PRINTI "dust" ?PRG30: PRINTR " there." .FUNCT V-LOOK-UP ZERO? LIT \?CCL3 PRINT TOO-DARK CRLF RTRUE ?CCL3: EQUAL? PRSO,ROOMS \?CCL7 FSET? HERE,OUTSIDEBIT \?CCL10 ICALL PERFORM,V?EXAMINE,SKY RTRUE ?CCL10: ICALL PERFORM,V?EXAMINE,CEILING RTRUE ?CCL7: ICALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE .FUNCT V-LOWER CALL1 V-RAISE RSTACK .FUNCT V-MAKE PRINTI "You can't make" ICALL2 ARTICLE,PRSO PRINTR "!" .FUNCT V-MOVE CALL2 HELD?,PRSO ZERO? STACK /?CCL3 PRINTR "Why juggle objects?" ?CCL3: EQUAL? PRSO,PANEL-BLOCKER \?CCL7 SET 'PANEL-BLOCKER,FALSE-VALUE PRINTI "Okay, it's no longer in front of the " PRINTD ROBOT-PANEL PRINTR "." ?CCL7: FSET? PRSO,INTEGRALBIT \?CCL11 CALL1 PART-OF RSTACK ?CCL11: CALL1 LOC-CLOSED ZERO? STACK \TRUE FSET? PRSO,TAKEBIT \?CCL15 PRINTI "Moving" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " reveals nothing." ?CCL15: EQUAL? PRSO,INTNUM \?PRG25 LESS? P-NUMBER,9 \?PRG25 CALL2 ACCESSIBLE?,BOARD ZERO? STACK /?PRG25 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?PRG25: PRINTI "You can't move" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-MUNG CALL2 HACK-HACK,STR?39 RSTACK .FUNCT V-MY-NAME EQUAL? PRSO,NAME \?CCL3 CALL1 V-I-AM RSTACK ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-NO EQUAL? AWAITING-REPLY,1 /FALSE EQUAL? AWAITING-REPLY,2 \?CCL5 CALL2 DO-WALK,P?SOUTH RSTACK ?CCL5: EQUAL? AWAITING-REPLY,3,10 \?CCL7 PRINTR "I should think not." ?CCL7: EQUAL? AWAITING-REPLY,4 \?CCL11 PRINTR "The word ""no"" is not in our hostess' vocabulary." ?CCL11: EQUAL? AWAITING-REPLY,5 \?CCL15 SET 'AWAITING-REPLY,3 CALL1 V-YES RSTACK ?CCL15: EQUAL? AWAITING-REPLY,6,11 \?CCL17 SET 'AWAITING-REPLY,6 CALL1 V-YES RSTACK ?CCL17: EQUAL? AWAITING-REPLY,7,8 /?CTR18 EQUAL? AWAITING-REPLY,13,15 \?CCL19 ?CTR18: SET 'AWAITING-REPLY,3 CALL1 V-YES RSTACK ?CCL19: EQUAL? AWAITING-REPLY,9 \?CCL23 PRINTR "I disagree." ?CCL23: EQUAL? AWAITING-REPLY,12 \?CCL27 ICALL1 ENGINEER-LEAVE PRINTI """Think you're funny, huh?"" The " PRINTD ENGINEER PRINT ROARS-OFF PRINTR ", making sure to spray you with his Sub-Ethon exhaust." ?CCL27: EQUAL? AWAITING-REPLY,14 \?CCL31 PRINTR "Then stop." ?CCL31: EQUAL? AWAITING-REPLY,16 \?CCL35 PRINTR "I didn't think so." ?CCL35: EQUAL? AWAITING-REPLY,18,19 \?PRG40 CALL1 V-YES RSTACK ?PRG40: PRINTR "You sound rather negative." .FUNCT V-OPEN,F,STR FSET? PRSO,SURFACEBIT \?CCL3 CALL1 V-COUNT RSTACK ?CCL3: FSET? PRSO,ACTORBIT \?CCL5 EQUAL? PRSO,NUTRIMAT /?CCL5 CALL1 V-COUNT RSTACK ?CCL5: FSET? PRSO,CONTBIT \?CCL9 FSET? PRSO,OPENBIT \?CCL12 PRINT ALREADY-OPEN CRLF RTRUE ?CCL12: FSET PRSO,OPENBIT FSET PRSO,TOUCHBIT FIRST? PRSO \?PRG20 FSET? PRSO,TRANSBIT \?PRG22 ?PRG20: PRINTR "Opened." ?PRG22: PRINTI "Opening" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " reveals" ICALL2 PRINT-CONTENTS,PRSO PRINTR "." ?CCL9: FSET? PRSO,DOORBIT \?CCL29 FSET? PRSO,OPENBIT \?PRG35 PRINT ALREADY-OPEN CRLF RTRUE ?PRG35: PRINTI "Okay," ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is now open." CRLF FSET PRSO,OPENBIT RTRUE ?CCL29: CALL1 TELL-ME-HOW RSTACK .FUNCT V-PANIC PRINTR "Not surprised." .FUNCT V-PICK CALL1 V-COUNT RSTACK .FUNCT V-PICK-UP ICALL PERFORM,V?TAKE,PRSO,PRSI RTRUE .FUNCT V-PLANT EQUAL? PRSI,FLOWERPOT \?PRG4 ICALL PERFORM,V?PUT,PRSO,PRSI RTRUE ?PRG4: PRINTI "You can't plant something in" ICALL2 ARTICLE,PRSI PRINTR "." .FUNCT V-PLUG PRINTI "You can't seem to plug" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " into" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." .FUNCT V-POINT EQUAL? HERE,SPEEDBOAT \?CCL3 ICALL PERFORM,V?STEER,BOAT-OBJECT,PRSO RTRUE ?CCL3: CALL1 V-STEER RSTACK .FUNCT V-POUR CALL1 V-CARVE RSTACK .FUNCT V-PROTEST EQUAL? HERE,FRONT-OF-HOUSE \?PRG8 CALL2 RUNNING?,I-BULLDOZER ZERO? STACK /?PRG8 PRINTI "Prosser says, ""I wouldn't stop the " PRINTD BULLDOZER PRINTR " even if you were lying in front of it!""" ?PRG8: PRINTR "To whom? About what? Why?" .FUNCT V-PULL-TOGETHER CALL1 V-TELL-TIME RSTACK .FUNCT V-PUSH EQUAL? PRSO,INTNUM \?CCL3 LESS? P-NUMBER,9 \?CCL3 CALL2 ACCESSIBLE?,BOARD ZERO? STACK /?CCL3 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?CCL3: CALL2 HACK-HACK,STR?40 RSTACK .FUNCT PRE-PUT EQUAL? PRSI,GROUND \?CCL3 ICALL PERFORM,V?DROP,PRSO RTRUE ?CCL3: CALL HELD?,PRSI,PRSO ZERO? STACK /?CCL5 PRINTI "You can't put" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " in" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTI " when" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTI " is already in" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" ?CCL5: CALL1 IDROP ZERO? STACK \TRUE ZERO? IN-FRONT-FLAG /?CCL19 ICALL PERFORM,V?PUT-IN-FRONT,PRSO,PRSI RTRUE ?CCL19: EQUAL? PRSO,TEA \?CCL21 ICALL PERFORM,V?POUR,TEA,PRSI RTRUE ?CCL21: EQUAL? PRSO,BROWNIAN-SOURCE \?CCL23 SET 'BROWNIAN-SOURCE,FALSE-VALUE ICALL1 REMOVING-BIT RFALSE ?CCL23: EQUAL? PRSO,PLOTTER \?CCL25 ZERO? BROWNIAN-SOURCE /?CCL25 SET 'BROWNIAN-SOURCE,FALSE-VALUE ICALL1 REMOVING-BIT RFALSE ?CCL25: EQUAL? PRSO,PLOTTER \?PRD31 ZERO? DRIVE-TO-PLOTTER \?PRG39 ?PRD31: EQUAL? PRSO,SPARE-DRIVE \?PRD34 ZERO? DRIVE-TO-PLOTTER \?PRG39 ?PRD34: EQUAL? PRSO,SPARE-DRIVE \FALSE ZERO? DRIVE-TO-CONTROLS /FALSE ?PRG39: PRINTR "You'll have to unplug it first." .FUNCT V-PUT,?TMP1,?TMP2,?TMP3 FSET? PRSI,OPENBIT /?CCL3 FSET? PRSI,DOORBIT /?CCL3 FSET? PRSI,CONTBIT /?CCL3 FSET? PRSI,SURFACEBIT /?CCL3 FSET? PRSI,VEHBIT /?CCL3 PRINTI "You can't put" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " in" ICALL2 ARTICLE,PRSI PRINTR "!" ?CCL3: EQUAL? PRSI,PRSO /?PRG22 CALL2 HELD?,PRSO ZERO? STACK /?PRD19 FSET? PRSO,TAKEBIT \?PRG22 ?PRD19: EQUAL? PRSI,PLOTTER,THUMB,SPARE-DRIVE \?CCL16 ?PRG22: PRINTR "How can you do that?" ?CCL16: FSET? PRSI,OPENBIT /?CCL25 FSET? PRSI,SURFACEBIT /?CCL25 PRINTI "Inspection reveals that" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTI " isn't open." CRLF SET 'P-IT-OBJECT,PRSI RETURN P-IT-OBJECT ?CCL25: IN? PRSO,PRSI \?CCL33 PRINTI "I think" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is already in" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." ?CCL33: CALL2 WEIGHT,PRSI >?TMP3 GETP PRSO,P?SIZE ADD ?TMP3,STACK >?TMP2 GETP PRSI,P?SIZE SUB ?TMP2,STACK >?TMP1 GETP PRSI,P?CAPACITY GRTR? ?TMP1,STACK \?CCL41 FSET? PRSI,VEHBIT \?PRG45 CALL1 V-DIG RSTACK ?PRG45: PRINTR "There's no room." ?CCL41: CALL2 HELD?,PRSO ZERO? STACK \?CCL48 CALL1 ITAKE EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE ?CCL48: MOVE PRSO,PRSI FSET PRSO,TOUCHBIT PRINTR "Done." .FUNCT V-PUT-BEHIND CALL1 V-DIG RSTACK .FUNCT V-PUT-IN-FRONT CALL1 V-DIG RSTACK .FUNCT V-PUT-ON EQUAL? PRSI,ME \?CCL3 ICALL PERFORM,V?WEAR,PRSO RTRUE ?CCL3: FSET? PRSI,SURFACEBIT \?CCL5 CALL1 V-PUT RSTACK ?CCL5: EQUAL? PRSI,EYES,HEAD \?PRG12 PRINTI "You can't cover" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR " with that." ?PRG12: PRINTI "There's no good surface on" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." .FUNCT V-PUT-UNDER CALL1 V-DIG RSTACK .FUNCT V-RAPE CALL1 V-KISS RSTACK .FUNCT V-RAISE CALL2 HACK-HACK,STR?41 RSTACK .FUNCT PRE-READ FSET? TOWEL,WORNBIT \?CCL3 EQUAL? PRSO,TOWEL /?CCL3 PRINT WITH-TOWEL CRLF RTRUE ?CCL3: ZERO? LIT \?CCL9 EQUAL? PRSO,HANGOVER /?CCL9 PRINT TOO-DARK CRLF RTRUE ?CCL9: ZERO? PRSI /FALSE FSET? PRSI,TRANSBIT /FALSE PRINTI "How does one look through" ICALL2 ARTICLE,PRSI PRINTR "?" .FUNCT V-READ FSET? PRSO,READBIT \?PRG6 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?PRG6: PRINTI "How can you read" ICALL2 ARTICLE,PRSO PRINTR "?" .FUNCT V-REFUSE SET 'PRSA,V?TAKE CALL1 DONT-F RSTACK .FUNCT V-RELAX PRINT ZEN CRLF RTRUE .FUNCT V-REMOVE FSET? PRSO,WEARBIT \?CCL3 ICALL PERFORM,V?TAKE-OFF,PRSO RTRUE ?CCL3: ICALL PERFORM,V?TAKE,PRSO RTRUE .FUNCT V-REPLACE PRINTR "It's not in need of replacement." .FUNCT V-REPAIR EQUAL? PRSO,THUMB \?PRD5 FSET? THUMB,MUNGEDBIT /?PRG10 ?PRD5: EQUAL? PRSO,HATCH \?PRG12 ZERO? LANDED /?PRG12 ?PRG10: PRINTR "You have neither the tools nor the expertise." ?PRG12: PRINTR "I'm not sure it's broken." .FUNCT V-REPLY PRINTI "It is hardly likely that" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " is interested." CRLF CALL1 FUCKING-CLEAR RSTACK .FUNCT V-RUB CALL1 LOC-CLOSED ZERO? STACK \TRUE CALL2 HACK-HACK,STR?42 RSTACK .FUNCT V-SAVE-SOMETHING PRINTI "Sorry, but" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is beyond help." .FUNCT V-SAY,V ZERO? AWAITING-REPLY /?CCL3 GET P-LEXV,P-CONT EQUAL? STACK,W?YES \?CCL3 ICALL1 V-YES CALL1 FUCKING-CLEAR RSTACK ?CCL3: ZERO? AWAITING-REPLY /?CCL7 GET P-LEXV,P-CONT EQUAL? STACK,W?NO \?CCL7 ICALL1 V-NO CALL1 FUCKING-CLEAR RSTACK ?CCL7: IN? BEAST,HERE \?CCL11 FSET? TOWEL,WORNBIT \?CCL11 ICALL1 SAID-WITH-TOWEL CALL1 FUCKING-CLEAR RSTACK ?CCL11: IN? BEAST,HERE \?CCL15 ZERO? P-CONT \?CCL15 ICALL PERFORM,V?TELL,BEAST RTRUE ?CCL15: IN? BEAST,HERE \?CCL19 CALL1 SAID-YOUR-NAME? ZERO? STACK /?CCL19 ICALL PERFORM,V?SAY-NAME,YOUR-NAME CALL1 FUCKING-CLEAR RSTACK ?CCL19: IN? BEAST,HERE \?CCL23 ICALL PERFORM,V?SAY-NAME,BEAST-NAME CALL1 FUCKING-CLEAR RSTACK ?CCL23: CALL FIND-IN,HERE,ACTORBIT >V ZERO? V /?CCL25 PRINTI "You must address" ICALL ARTICLE,V,TRUE-VALUE PRINTI " directly." CRLF CALL1 FUCKING-CLEAR RSTACK ?CCL25: ICALL PERFORM,V?TELL,ME CALL1 FUCKING-CLEAR RSTACK .FUNCT SAID-YOUR-NAME?,OFFS,LEN,WRD SET 'OFFS,P-CONT SET 'LEN,P-LEN ?PRG1: DLESS? 'LEN,0 /FALSE GET P-LEXV,OFFS >WRD EQUAL? WRD,W?MY,W?NAME,W?IS /?CND5 EQUAL? WRD,W?I,W?AM,W?I'M /?CND5 EQUAL? WRD,W?ARTHUR,W?DENT /TRUE RFALSE ?CND5: ADD OFFS,2 >OFFS JUMP ?PRG1 .FUNCT SAID-WITH-TOWEL PRINTI "The Beast is puzzled by a voice coming from something it can't see." PRINT SLOWLY-DAWNS CRLF RTRUE .FUNCT V-SAY-NAME IN? BEAST,HERE \?PRG19 ZERO? NAME-TOLD /?CCL6 PRINTR "You already told the Beast your name." ?CCL6: FSET? TOWEL,WORNBIT \?CCL10 CALL1 SAID-WITH-TOWEL RSTACK ?CCL10: EQUAL? PRSO,NAME,ARTHUR,YOUR-NAME /?CTR11 EQUAL? PRSO,ME \?PRG17 ?CTR11: CALL QUEUE,I-BEAST,2 PUT STACK,0,1 SET 'NAME-TOLD,TRUE-VALUE PRINTR "The Beast roars your name with relish, and explains that once it has eaten you, your name will be added to its list of remembrance." ?PRG17: PRINTR "There's something about detecting insincerity that transcends even the vast gulf between Humanity and Bugblatter Bestiality. The Beast bellows, obviously convinced that you were lying and that isn't your name nor anything remotely like it." ?PRG19: PRINTR "You should use quotes with this verb." .FUNCT V-SEARCH FSET? PRSO,ACTORBIT \?CCL3 PRINTR "That wouldn't be polite." ?CCL3: FSET? PRSO,CONTBIT \?PRG18 LOC WINNER EQUAL? PRSO,STACK \?CCL9 ICALL1 DESCRIBE-VEHICLE RTRUE ?CCL9: FSET? PRSO,OPENBIT /?CCL11 PRINTR "You'll have to open it first." ?CCL11: FIRST? PRSO \?PRG18 FIRST? PRSO /?BOGUS17 ?BOGUS17: FSET? STACK,NDESCBIT /?PRG18 ICALL2 PRINT-CONT,PRSO RTRUE ?PRG18: PRINTR "You find nothing unusual." .FUNCT V-SGIVE ICALL PERFORM,V?GIVE,PRSI,PRSO RTRUE .FUNCT V-SHAKE,X FSET? PRSO,ACTORBIT \?CCL3 PRINTR "Be real." ?CCL3: CALL2 HACK-HACK,STR?43 RSTACK .FUNCT V-SHAKE-WITH EQUAL? PRSO,HANDS /?CCL3 CALL1 V-TELL-TIME RSTACK ?CCL3: FSET? PRSI,ACTORBIT /?CCL5 PRINTI "I don't think" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR " even has hands." ?CCL5: ICALL PERFORM,V?THANK,PRSI RTRUE .FUNCT V-SHOOT FSET? TOWEL,WORNBIT \?CND1 PRINT WITH-TOWEL CRLF RTRUE ?CND1: ZERO? PRSO \?CND5 CALL2 HELD?,BEAST-GUN ZERO? STACK /?CCL9 SET 'PRSO,BEAST-GUN JUMP ?CND5 ?CCL9: CALL2 HELD?,BLASTER ZERO? STACK /?PRG12 SET 'PRSO,BLASTER ?CND5: ZERO? PRSI \?CCL16 EQUAL? PRSO,BLASTER,BEAST-GUN \?CCL19 PRINTR "Some rays shoot out of the gun." ?PRG12: PRINTR "With what? At whom? Why?" ?CCL19: CALL2 HELD?,BEAST-GUN ZERO? STACK /?CCL23 ICALL PERFORM,V?SHOOT,PRSO,BEAST-GUN RTRUE ?CCL23: CALL2 HELD?,BLASTER ZERO? STACK /?PRG26 ICALL PERFORM,V?SHOOT,PRSO,BLASTER RTRUE ?PRG26: PRINTI "You have nothing to shoot" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " with." ?CCL16: EQUAL? PRSI,BEAST-GUN \?PRG51 PRINTI "Some rays from the gun strike" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI ", but " EQUAL? PRSO,BEAST \?PRG49 FSET? BEAST,MUNGEDBIT /?PRG49 INC 'GUN-COUNTER PRINTI "it only seems to make it madder" EQUAL? GUN-COUNTER,3 \?PRG47 PRINTI " (Footnote 7)" ?PRG47: PRINTR "." ?PRG49: PRINTR "nothing else happens." ?PRG51: PRINTR "Don't ever bother applying for a job as an armaments expert." .FUNCT V-SHOW PRINTI "I doubt" ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR " is interested." .FUNCT V-SIT,VEHICLE CALL FIND-IN,HERE,VEHBIT >VEHICLE ZERO? VEHICLE /?CCL3 ICALL PERFORM,V?BOARD,VEHICLE RTRUE ?CCL3: CALL1 V-DIG RSTACK .FUNCT V-SKIP SET 'AWAITING-REPLY,15 CALL QUEUE,I-REPLY,2 PUT STACK,0,1 PRINTR "Wasn't that fun?" .FUNCT V-SLEEP,TOLD? EQUAL? HERE,BEDROOM \?CCL3 PRINTI "You nod off and are wakened briefly a few hours later as" CALL1 BETTER-LUCK RSTACK ?CCL3: EQUAL? HERE,HOLD \?PRG10 PRINTR "You try, but the grubby mattresses are too repulsive." ?PRG10: PRINTR "There's no bed here." .FUNCT V-SMELL PRINTI "It smells just like" ICALL2 ARTICLE,PRSO PRINTR "." .FUNCT V-SMILE EQUAL? HERE,CAPTAINS-QUARTERS \?PRG6 IN? POETRY,HERE \?PRG6 CALL1 V-APPLAUD RSTACK ?PRG6: PRINTR "How nice." .FUNCT V-SPIN PRINTR "You can't spin that!" .FUNCT V-SPUT-ON EQUAL? PRSO,EARS \?CCL3 CALL2 VISIBLE?,POETRY ZERO? STACK /?CCL3 ICALL PERFORM,V?LISTEN,POETRY RTRUE ?CCL3: ICALL PERFORM,V?PUT-ON,PRSI,PRSO RTRUE .FUNCT V-SSHOOT ICALL PERFORM,V?SHOOT,PRSI,PRSO RTRUE .FUNCT V-SSHOW ICALL PERFORM,V?SHOW,PRSI,PRSO RTRUE .FUNCT V-STAND LOC WINNER FSET? STACK,VEHBIT \?CCL3 LOC WINNER ICALL PERFORM,V?DISEMBARK,STACK RTRUE ?CCL3: ZERO? LYING-DOWN /?CCL5 SET 'LYING-DOWN,FALSE-VALUE SET 'OHERE,FALSE-VALUE CALL2 RUNNING?,I-PROSSER ZERO? STACK /?CCL8 PRINTI "You are safe! Prosser heaves a visible sigh of relief, shakes his head and wipes his brow. " PRINT BULLDOZER-PILES CRLF CALL1 BRICK-DEATH RSTACK ?CCL8: EQUAL? HERE,FRONT-OF-HOUSE \?CCL12 ZERO? PROSSER-LYING \?CCL12 IN? FLEET,HERE /?CCL12 PRINTI "The " PRINTD BULLDOZER-DRIVER PRINTI " gives a quick chew of his gum and slams in the clutch. " PRINT BULLDOZER-PILES CRLF CALL1 BRICK-DEATH RSTACK ?CCL12: CALL1 OWN-FEET RSTACK ?CCL5: ZERO? PRSO /?PRG22 FSET? PRSO,TAKEBIT \?PRG22 CALL1 V-DIG RSTACK ?PRG22: PRINTR "You are already standing." .FUNCT V-STAND-BEFORE EQUAL? PRSO,DISPENSER \?CCL3 PRINTR "The slot is too wide to block that way." ?CCL3: EQUAL? PRSO,HOOK,ROBOT-PANEL,FISH-HOLE \?CCL7 PRINTI "You'd never be able to push the " PRINTD DISPENSER-BUTTON PRINTI " from there." PRINT GETTING-CLOSE CRLF RTRUE ?CCL7: EQUAL? PRSO,HOME,HOUSE,BULLDOZER \?CCL11 EQUAL? IDENTITY-FLAG,ARTHUR \?CCL11 PRINTI "The " PRINTD BULLDOZER PRINTI " could easily maneuver around you." PRINT GETTING-CLOSE CRLF RTRUE ?CCL11: CALL1 V-DIG RSTACK .FUNCT V-STAND-ON ZERO? IN-FRONT-FLAG /?CCL3 ICALL PERFORM,V?STAND-BEFORE,PRSO RTRUE ?CCL3: CALL1 V-DIG RSTACK .FUNCT V-STEER PRINTR "That would be pointless." .FUNCT PRE-TAKE EQUAL? PRSO,GOWN \?PRD5 ZERO? GOWN-HUNG /?PRD5 ZERO? LYING-DOWN \?PRG12 ?PRD5: EQUAL? PRSO,TOWEL \?CCL3 FSET? TOWEL,SURFACEBIT \?CCL3 ZERO? LYING-DOWN /?CCL3 ?PRG12: PRINT WHILE-LYING CRLF RTRUE ?CCL3: EQUAL? PRSO,BABEL-FISH /FALSE CALL1 LOC-CLOSED ZERO? STACK \TRUE EQUAL? PRSO,DANGLY-BIT \?PRD21 EQUAL? PRSI,BROWNIAN-SOURCE \?PRD21 ZERO? PRSI \?CTR18 ?PRD21: EQUAL? PRSO,SMALL-PLUG \?PRD25 EQUAL? PRSI,SMALL-RECEPTACLE,PLOTTER \?PRD25 ZERO? DRIVE-TO-PLOTTER \?CTR18 ?PRD25: EQUAL? PRSO,LARGE-PLUG \?CCL19 EQUAL? PRSI,LARGE-RECEPTACLE,CONTROLS \?CCL19 ZERO? DRIVE-TO-CONTROLS /?CCL19 ?CTR18: ICALL PERFORM,V?REMOVE,PRSO RTRUE ?CCL19: FSET? PRSO,INTEGRALBIT \?CCL33 LOC PRSO EQUAL? PRSI,STACK /FALSE ?CCL33: IN? PRSO,PROTAGONIST /?CTR36 CALL2 HELD?,PRSO ZERO? STACK /?CCL37 FSET? PRSO,TAKEBIT /?CCL37 ?CTR36: FSET? PRSO,WORNBIT \?PRG47 PRINTR "You are already wearing it." ?PRG47: PRINTR "You already have it." ?CCL37: ZERO? PRSI /?CCL50 EQUAL? PRSI,ME \?CCL53 ICALL PERFORM,V?DROP,PRSO RTRUE ?CCL53: EQUAL? PRSO,ITEM-ON-SATCHEL \?CCL55 EQUAL? PRSI,SATCHEL /FALSE ?CCL55: EQUAL? PRSO,ITEM-DROPPED-AT-PARTY \?CCL59 EQUAL? PRSI,HOSTESS /FALSE ?CCL59: LOC PRSO EQUAL? PRSI,STACK /?CCL63 PRINTI "But" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTI " isn't " FSET? PRSI,ACTORBIT \?CCL70 EQUAL? PRSI,SCREENING-DOOR,NUTRIMAT /?CCL70 PRINTI "being held by" JUMP ?CND68 ?CCL70: FSET? PRSI,SURFACEBIT \?PRG79 PRINTI "on" JUMP ?CND68 ?PRG79: PRINTI "in" ?CND68: ICALL ARTICLE,PRSI,TRUE-VALUE PRINTR "." ?CCL63: SET 'PRSI,FALSE-VALUE RFALSE ?CCL50: LOC WINNER EQUAL? PRSO,STACK \?CCL84 PRINTR "You are in it!" ?CCL84: ZERO? HEADACHE /FALSE EQUAL? PRSO,GOWN /FALSE FSET? PRSO,TAKEBIT \FALSE CALL2 HELD?,PRSO ZERO? STACK \FALSE CALL2 PICK-ONE,LURCHES PRINT STACK CRLF RTRUE .FUNCT V-TAKE CALL1 ITAKE EQUAL? STACK,TRUE-VALUE \FALSE EQUAL? PRSO,JACKET-FLUFF \?CCL6 FSET? JACKET-FLUFF,TRYTAKEBIT \?CCL6 FCLEAR JACKET-FLUFF,TRYTAKEBIT FCLEAR JACKET-FLUFF,NDESCBIT SET 'FLUFF-REMOVED,TRUE-VALUE CALL QUEUE,I-ZAPHOD,6 PUT STACK,0,1 CALL QUEUE,I-ARTHUR,2 PUT STACK,0,1 PRINTI "You remove the " PRINTD JACKET-FLUFF PRINTR ", improving Arthur's appearance greatly. He is clearly touched, and starts happily to chat away to you. You discover that he is only slightly more interesting to talk to than an averagely interesting wall." ?CCL6: EQUAL? PRSO,ITEM-DROPPED-AT-PARTY \?CCL13 FCLEAR ITEM-DROPPED-AT-PARTY,NDESCBIT CALL2 HELD?,WINE ZERO? STACK \?CCL16 SET 'ITEM-DROPPED-AT-PARTY,WINE FCLEAR HOSTESS,TOUCHBIT JUMP ?CND11 ?CCL16: CALL2 HELD?,HANDBAG ZERO? STACK \?CCL18 SET 'ITEM-DROPPED-AT-PARTY,HANDBAG FCLEAR HOSTESS,TOUCHBIT JUMP ?CND11 ?CCL18: CALL2 HELD?,APPETIZERS ZERO? STACK \?CCL20 SET 'ITEM-DROPPED-AT-PARTY,APPETIZERS FCLEAR HOSTESS,TOUCHBIT JUMP ?CND11 ?CCL20: SET 'ITEM-DROPPED-AT-PARTY,FALSE-VALUE FCLEAR HOSTESS,NDESCBIT JUMP ?CND11 ?CCL13: EQUAL? PRSO,GOWN \?CCL22 ZERO? GOWN-HUNG /?CCL22 FCLEAR GOWN,TRYTAKEBIT FCLEAR GOWN,NDESCBIT FSET GOWN,OPENBIT SET 'GOWN-HUNG,FALSE-VALUE JUMP ?CND11 ?CCL22: EQUAL? PRSO,PANEL-BLOCKER \?CND11 SET 'PANEL-BLOCKER,FALSE-VALUE FCLEAR PRSO,TRYTAKEBIT FCLEAR PRSO,NDESCBIT ?CND11: EQUAL? PRSO,SATCHEL \?CCL28 ZERO? ITEM-ON-SATCHEL /?CCL28 MOVE ITEM-ON-SATCHEL,HERE FCLEAR ITEM-ON-SATCHEL,NDESCBIT FCLEAR ITEM-ON-SATCHEL,TRYTAKEBIT SET 'ITEM-ON-SATCHEL,FALSE-VALUE JUMP ?PRG32 ?CCL28: EQUAL? PRSO,ITEM-ON-SATCHEL \?PRG32 FCLEAR ITEM-ON-SATCHEL,NDESCBIT FCLEAR ITEM-ON-SATCHEL,TRYTAKEBIT SET 'ITEM-ON-SATCHEL,FALSE-VALUE ?PRG32: PRINTR "Taken." .FUNCT V-TAKE-OFF FSET? PRSO,WORNBIT \?PRG8 FCLEAR PRSO,WORNBIT PRINTI "Okay, you're no longer wearing" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?PRG8: PRINTR "You aren't wearing that!" .FUNCT V-TASTE PRINTR "You can't. At least, not in this game you can't." .FUNCT V-TELL FSET? PRSO,ACTORBIT \?PRG11 ZERO? P-CONT /?PRG7 SET 'WINNER,PRSO LOC WINNER >HERE RTRUE ?PRG7: PRINTI "Hmmm ..." ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " looks at you expectantly, as if you seemed to be about to talk." ?PRG11: PRINTI "You can't talk to" ICALL2 ARTICLE,PRSO PRINTC 33 CRLF CALL1 FUCKING-CLEAR RSTACK .FUNCT V-TELL-ABOUT EQUAL? PRSO,ME \?PRG4 ICALL PERFORM,V?WHAT,PRSI RTRUE ?PRG4: PRINTI "It doesn't look like" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " is interested." .FUNCT V-TELL-TIME PRINTR "That sentence isn't one I recognise." .FUNCT V-TELL-NAME CALL1 V-TELL-TIME RSTACK .FUNCT V-THANK FSET? PRSO,ACTORBIT \?CCL3 PRINTI "You do so, but" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " seems less than overjoyed." ?CCL3: CALL1 V-CARVE RSTACK .FUNCT V-THROUGH,M FSET? PRSO,DOORBIT \?CCL3 CALL2 OTHER-SIDE,PRSO ICALL2 DO-WALK,STACK RTRUE ?CCL3: FSET? PRSO,VEHBIT \?CCL5 ICALL PERFORM,V?BOARD,PRSO RTRUE ?CCL5: FSET? PRSO,TAKEBIT /?CCL7 PRINTI "You hit your head against" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " as you attempt this feat." ?CCL7: IN? PRSO,WINNER \?CCL13 ICALL PERFORM,V?EXAMINE,EYES RTRUE ?CCL13: CALL1 V-CARVE RSTACK .FUNCT PRE-THROW EQUAL? PRSO,INTNUM \?CCL3 LESS? P-NUMBER,9 \?CCL3 CALL2 ACCESSIBLE?,BOARD ZERO? STACK /?CCL3 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?CCL3: FSET? PRSO,SWITCHBIT /FALSE CALL1 IDROP ZERO? STACK \TRUE RFALSE .FUNCT V-THROW EQUAL? HERE,HOLD \?CCL3 MOVE PRSO,LOCAL-GLOBALS PRINT ROBOT-FLIES-IN PRINTI "collects" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " in midair, and flashes away." ?CCL3: EQUAL? HERE,MAZE,ACCESS-SPACE \?CCL9 ICALL PERFORM,V?DROP,PRSO RTRUE ?CCL9: ZERO? PRSI /?CCL11 MOVE PRSO,HERE PRINTR "You missed." ?CCL11: MOVE PRSO,HERE PRINTR "Thrown." .FUNCT V-THROW-OFF PRINTR "You can't do that!" .FUNCT V-THROW-IN-TOWEL EQUAL? PRSO,TOWEL \?CCL3 CALL1 V-QUIT RSTACK ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-TIE PRINTI "You can't tie" ICALL2 ARTICLE,PRSO PRINTR "." .FUNCT V-TIE-TOGETHER EQUAL? PRSO,SLEEVES \?CCL3 ICALL PERFORM,V?TIE,SLEEVES RTRUE ?CCL3: CALL1 V-TELL-TIME RSTACK .FUNCT V-TURN EQUAL? PRSO,BOAT-OBJECT \?CCL3 PRINTR "Try: STEER BOAT TOWARD (something)." ?CCL3: EQUAL? PRSO,ROOMS,ME \?CCL7 CALL1 V-SKIP RSTACK ?CCL7: EQUAL? PRSO,INTNUM \?PRG13 LESS? P-NUMBER,9 \?PRG13 CALL2 ACCESSIBLE?,BOARD ZERO? STACK /?PRG13 ICALL PERFORM,V?TURN,DIPSWITCH RTRUE ?PRG13: PRINTR "This has no effect." .FUNCT V-TYPE EQUAL? HERE,HOLD /?CCL3 PRINTI "There's no " PRINTD KEYBOARD PRINTI " in sight." CRLF CALL1 FUCKING-CLEAR RSTACK ?CCL3: ZERO? POEM-ENJOYED \?CCL7 ZERO? P-CONT /?CCL7 ICALL PERFORM,V?MUNG,GLASS-CASE RTRUE ?CCL7: GET P-LEXV,P-CONT EQUAL? STACK,W?FRIPPING \?CCL11 EQUAL? LINE-NUMBER,1,2 \?CCL11 EQUAL? WORD-NUMBER,1 \?CCL11 CALL1 GLASS-CASE-OPENS RSTACK ?CCL11: GET P-LEXV,P-CONT EQUAL? STACK,W?LYSHUS \?CCL16 EQUAL? LINE-NUMBER,1,2 \?CCL16 EQUAL? WORD-NUMBER,2 \?CCL16 CALL1 GLASS-CASE-OPENS RSTACK ?CCL16: GET P-LEXV,P-CONT EQUAL? STACK,W?WIMBGUNTS \?CCL21 EQUAL? LINE-NUMBER,1,2 \?CCL21 EQUAL? WORD-NUMBER,3 \?CCL21 CALL1 GLASS-CASE-OPENS RSTACK ?CCL21: GET P-LEXV,P-CONT EQUAL? STACK,W?GASHEE \?CCL26 EQUAL? LINE-NUMBER,3,4 \?CCL26 EQUAL? WORD-NUMBER,1 \?CCL26 CALL1 GLASS-CASE-OPENS RSTACK ?CCL26: GET P-LEXV,P-CONT EQUAL? STACK,W?MORPHOUSI \?CCL31 EQUAL? LINE-NUMBER,3,4 \?CCL31 EQUAL? WORD-NUMBER,2 \?CCL31 CALL1 GLASS-CASE-OPENS RSTACK ?CCL31: GET P-LEXV,P-CONT EQUAL? STACK,W?THOU \?CCL36 EQUAL? LINE-NUMBER,3,4 \?CCL36 EQUAL? WORD-NUMBER,3 \?CCL36 CALL1 GLASS-CASE-OPENS RSTACK ?CCL36: GET P-LEXV,P-CONT EQUAL? STACK,W?BLEEM \?CCL41 EQUAL? LINE-NUMBER,5,6 \?CCL41 EQUAL? WORD-NUMBER,1 \?CCL41 CALL1 GLASS-CASE-OPENS RSTACK ?CCL41: GET P-LEXV,P-CONT EQUAL? STACK,W?MISERABLE \?CCL46 EQUAL? LINE-NUMBER,5,6 \?CCL46 EQUAL? WORD-NUMBER,2 \?CCL46 CALL1 GLASS-CASE-OPENS RSTACK ?CCL46: GET P-LEXV,P-CONT EQUAL? STACK,W?VENCHIT \?CCL51 EQUAL? LINE-NUMBER,5,6 \?CCL51 EQUAL? WORD-NUMBER,3 \?CCL51 CALL1 GLASS-CASE-OPENS RSTACK ?CCL51: ZERO? P-CONT \?CCL56 PRINTR "You didn't specify what you wanted to type." ?CCL56: ICALL PERFORM,V?MUNG,GLASS-CASE RETURN 2 .FUNCT V-TYPE-ON EQUAL? PRSO,KEYBOARD \?PRG4 SET 'P-CONT,FALSE-VALUE CALL1 V-TYPE RSTACK ?PRG4: PRINTR "You can't type on that!" .FUNCT V-UNLOCK CALL1 V-CARVE RSTACK .FUNCT V-UNPLUG EQUAL? PRSO,SMALL-PLUG,LARGE-PLUG,SPARE-DRIVE /?PRG6 EQUAL? PRSO,PLOTTER \?CCL3 ?PRG6: PRINT NOT-PLUGGED CRLF RTRUE ?CCL3: CALL1 V-COUNT RSTACK .FUNCT V-UNTIE CALL1 V-CARVE RSTACK .FUNCT V-WALK,PT,PTS,STR,OBJ,RM IN? FLEET,HERE \?CCL3 EQUAL? PRSO,P?DOWN,P?UP /?CCL3 PRINTR "You would be no safer there." ?CCL3: ZERO? LYING-DOWN /?CCL9 PRINT WHILE-LYING CRLF RTRUE ?CCL9: FSET? TOWEL,WORNBIT \?CCL13 SET 'BEARINGS-LOST,TRUE-VALUE PRINTI "You stumble in that direction, but as you can't see where you're going you wander around in circles." FSET? BEAST,MUNGEDBIT /?CND16 PRINTI " The Beast is getting puzzled that something it can't see is stumbling around its lair." PRINT SLOWLY-DAWNS ?CND16: CRLF RTRUE ?CCL13: EQUAL? HERE,MAZE /?CCL21 EQUAL? IDENTITY-FLAG,ARTHUR \?CCL21 ZERO? BRAIN-DAMAGED /?CCL21 RANDOM 100 LESS? 30,STACK /?CCL21 PRINTI "You notice that you can't remember how to walk. Oddly, as you think about walking, all that comes to mind is an image of" ICALL2 ARTICLE,BRAIN-DAMAGED PRINTR "." ?CCL21: ZERO? P-WALK-DIR \?CCL31 ZERO? PRSO /?CCL34 PRINTI "[Presumably, you mean WALK TO" ICALL2 ARTICLE,PRSO PRINTI ".]" CRLF ICALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL34: ICALL1 V-WALK-AROUND RTRUE ?CCL31: GETPT HERE,PRSO >PT ZERO? PT /?CCL40 PTSIZE PT >PTS EQUAL? PTS,UEXIT \?CCL43 GET PT,REXIT CALL2 GOTO,STACK RSTACK ?CCL43: EQUAL? PTS,NEXIT \?CCL45 GET PT,NEXITSTR PRINT STACK CRLF RETURN 2 ?CCL45: EQUAL? PTS,FEXIT \?CCL51 GET PT,FEXITFCN CALL STACK >RM ZERO? RM /?CCL54 CALL2 GOTO,RM RSTACK ?CCL54: EQUAL? HERE,BRIDGE \?PRG59 EQUAL? P-WALK-DIR,P?WEST /TRUE ?PRG59: RETURN 2 ?CCL51: EQUAL? PTS,CEXIT \?CCL62 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?CCL65 GET PT,REXIT CALL2 GOTO,STACK RSTACK ?CCL65: GET PT,CEXITSTR >STR ZERO? STR /?PRG72 PRINT STR CRLF RETURN 2 ?PRG72: PRINT CANT-GO CRLF RETURN 2 ?CCL62: EQUAL? PTS,DEXIT \FALSE GET PT,DEXITOBJ >OBJ FSET? OBJ,OPENBIT \?CCL80 GET PT,REXIT CALL2 GOTO,STACK RSTACK ?CCL80: GET PT,DEXITSTR >STR ZERO? STR /?PRG87 PRINT STR CRLF SET 'P-IT-OBJECT,OBJ RETURN 2 ?PRG87: PRINTI "The " PRINTD OBJ PRINTI " is closed." CRLF SET 'P-IT-OBJECT,OBJ RETURN 2 ?CCL40: EQUAL? PRSO,P?IN,P?OUT \?PRG94 ICALL1 V-WALK-AROUND RETURN 2 ?PRG94: PRINT CANT-GO CRLF RETURN 2 .FUNCT V-WALK-AROUND SET 'AWAITING-REPLY,16 CALL QUEUE,I-REPLY,2 PUT STACK,0,1 PRINTR "Did you have any particular direction in mind?" .FUNCT V-WALK-TO IN? PRSO,HERE /?CTR2 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?CCL3 ?CTR2: EQUAL? PRSO,HOSTESS,TRILLIAN \?CCL8 PRINTI "She" JUMP ?PRG19 ?CCL8: FSET? PRSO,ACTORBIT \?PRG17 EQUAL? PRSO,BEAST,SCREENING-DOOR,NUTRIMAT /?PRG17 PRINTI "He" JUMP ?PRG19 ?PRG17: PRINTI "It" ?PRG19: PRINTR "'s here!" ?CCL3: CALL1 V-WALK-AROUND RSTACK .FUNCT V-WAIT,NUM ASSIGNED? 'NUM /?PRG3 SET 'NUM,3 ?PRG3: PRINTI "Time passes..." CRLF ?PRG5: DLESS? 'NUM,0 /?REP6 CALL1 CLOCKER ZERO? STACK /?PRG5 ?REP6: SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT .FUNCT V-WAIT-FOR PRINTR "You may be waiting quite a while." .FUNCT V-WATER PRINTR "It doesn't need watering." .FUNCT V-WAVE CALL1 V-CARVE RSTACK .FUNCT V-WAVE-AT ZERO? PRSO \?PRG4 CALL1 V-SMILE RSTACK ?PRG4: PRINTI "Despite your friendly nature," ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR " isn't likely to respond." .FUNCT V-WEAR FSET? PRSO,WEARBIT /?CCL3 PRINTI "You can't wear" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?CCL3: FSET? PRSO,WORNBIT \?CCL9 PRINTI "You're already wearing" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "!" ?CCL9: MOVE PRSO,PROTAGONIST FSET PRSO,WORNBIT PRINTI "You are now wearing" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." .FUNCT V-WHAT PRINTR "Good question." .FUNCT V-WHAT-ABOUT PRINTR "Well, what about it?" .FUNCT V-WHAT-TIME CALL1 V-TELL-TIME RSTACK .FUNCT V-WHERE CALL2 V-FIND,TRUE-VALUE RSTACK .FUNCT V-WHO FSET? PRSO,ACTORBIT \?PRG4 ICALL PERFORM,V?WHAT,PRSO RTRUE ?PRG4: PRINTR "That's not a person!" .FUNCT V-WHY PRINTR "Why not?" .FUNCT V-YELL PRINTR "You begin to get a sore throat." .FUNCT V-YES EQUAL? AWAITING-REPLY,1 \?CCL3 CALL2 DO-WALK,P?SOUTH RSTACK ?CCL3: EQUAL? AWAITING-REPLY,2 /FALSE EQUAL? AWAITING-REPLY,3 \?CCL7 PRINTR "Well, tough." ?CCL7: EQUAL? AWAITING-REPLY,4 \?CCL11 ICALL PERFORM,V?TAKE,ITEM-DROPPED-AT-PARTY RTRUE ?CCL11: EQUAL? AWAITING-REPLY,5 \?CCL13 PRINTR "So do I." ?CCL13: EQUAL? AWAITING-REPLY,6,8,11 /?PRG20 EQUAL? AWAITING-REPLY,13,14,15 \?CCL17 ?PRG20: PRINTR "That was just a rhetorical question." ?CCL17: EQUAL? AWAITING-REPLY,7,9 \?CCL23 PRINTR "Well, good for you!" ?CCL23: EQUAL? AWAITING-REPLY,10 \?CCL27 ICALL PERFORM,V?ENJOY,FORD RTRUE ?CCL27: EQUAL? AWAITING-REPLY,12 \?CCL29 CALL QUEUE,I-ENGINEER,2 PUT STACK,0,1 PRINTR """Well, let's see the malfunctioning equipment.""" ?CCL29: EQUAL? AWAITING-REPLY,16 \?CCL33 PRINTR "Then type it." ?CCL33: EQUAL? AWAITING-REPLY,18,19 \?PRG40 PRINTR """Well, leave me alone then! I'm busy!""" ?PRG40: PRINTR "You sound rather positive." .FUNCT ITAKE,VB,CNT,OBJ,?TMP1 ASSIGNED? 'VB /?CND1 SET 'VB,TRUE-VALUE ?CND1: FSET? PRSO,INTEGRALBIT \?CCL5 ZERO? VB /?PRG8 ICALL1 PART-OF ?PRG8: RETURN 2 ?CCL5: FSET? PRSO,TAKEBIT /?CCL11 ZERO? VB /?PRG14 ICALL1 V-CARVE ?PRG14: RETURN 2 ?CCL11: EQUAL? IDENTITY-FLAG,TRILLIAN \?CCL17 CALL2 CCOUNT,PROTAGONIST GRTR? STACK,2 \?CCL17 ZERO? VB /?PRG24 PRINTI "As is the case so often at parties, you find that you are holding too much and can't pick up anything else." CRLF ?PRG24: RETURN 2 ?CCL17: LOC PRSO IN? STACK,WINNER /?CND3 CALL2 WEIGHT,PRSO >?TMP1 CALL2 WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,100 \?CCL29 ZERO? VB /?PRG34 PRINTI "Your load is too heavy." CRLF ?PRG34: RETURN 2 ?CCL29: CALL2 CCOUNT,WINNER >CNT GRTR? CNT,7 \?CND3 MUL CNT,8 >?TMP1 RANDOM 100 LESS? ?TMP1,STACK /?CND3 ZERO? VB /?PRG43 PRINTI "You're holding too much already." CRLF ?PRG43: RETURN 2 ?CND3: MOVE PRSO,PROTAGONIST FSET PRSO,TOUCHBIT RTRUE .FUNCT IDROP EQUAL? PRSO,HANGOVER /FALSE EQUAL? PRSO,NO-TEA \?CCL5 ZERO? HOLDING-NO-TEA \FALSE ?CCL5: EQUAL? PRSO,SMALL-PLUG,LARGE-PLUG,DANGLY-BIT \?CCL9 EQUAL? PRSA,V?PUT-ON,V?PUT /FALSE ?CCL9: EQUAL? PRSA,V?GIVE \?CCL13 EQUAL? PRSO,SPEECH /FALSE ?CCL13: EQUAL? PRSO,SLEEVES \?CCL17 CALL1 V-DIG RSTACK ?CCL17: EQUAL? PRSO,HANDS,EARS,EYES /?CTR18 EQUAL? PRSO,HEAD \?CCL19 ?CTR18: EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \?CCL24 CALL1 V-COUNT RSTACK ?CCL24: EQUAL? PRSA,V?PUT-ON \FALSE EQUAL? PRSI,SATCHEL \FALSE CALL1 V-COUNT RSTACK ?CCL19: EQUAL? PRSO,SPARE-DRIVE \?CCL30 EQUAL? PRSI,CONTROLS,SMALL-RECEPTACLE,LARGE-RECEPTACLE /FALSE EQUAL? PRSI,PLOTTER /FALSE ?CCL30: CALL2 HELD?,PRSO ZERO? STACK \?CCL36 PRINTI "That's easy for you to say since you don't even have" ICALL ARTICLE,PRSO,TRUE-VALUE PRINTR "." ?CCL36: EQUAL? PRSO,PLANT \?CCL42 ICALL PERFORM,V?DROP,FLOWERPOT RTRUE ?CCL42: FSET? PRSO,INTEGRALBIT \?CCL44 CALL1 PART-OF RSTACK ?CCL44: IN? PRSO,WINNER /?CCL46 LOC PRSO FSET? STACK,CONTBIT \?CCL46 LOC PRSO FSET? STACK,OPENBIT /?CCL46 PRINTI "Impossible because" LOC PRSO ICALL ARTICLE,STACK,TRUE-VALUE PRINTR " is closed." ?CCL46: EQUAL? PRSO,BABEL-FISH \?PRD57 EQUAL? PRSA,V?SHOW \?PRG60 ?PRD57: FSET? PRSO,WORNBIT \FALSE ?PRG60: PRINTR "You'll have to remove it first." .FUNCT CCOUNT,OBJ,CNT,X FIRST? OBJ >X /?PRG3 RETURN CNT ?PRG3: FSET? X,WORNBIT /?CND5 EQUAL? X,BABEL-FISH /?CND5 INC 'CNT ?CND5: NEXT? X >X /?PRG3 RETURN CNT .FUNCT WEIGHT,OBJ,CONT,WT FIRST? OBJ >CONT \?CND1 ?PRG3: EQUAL? OBJ,PLAYER \?CCL7 FSET? CONT,WORNBIT \?CCL7 INC 'WT JUMP ?CND5 ?CCL7: EQUAL? OBJ,PLAYER \?CCL11 LOC CONT FSET? STACK,WORNBIT \?CCL11 INC 'WT JUMP ?CND5 ?CCL11: EQUAL? OBJ,PLAYER \?CCL15 EQUAL? CONT,BABEL-FISH \?CCL15 INC 'WT JUMP ?CND5 ?CCL15: CALL2 WEIGHT,CONT ADD WT,STACK >WT ?CND5: NEXT? CONT >CONT /?PRG3 ?CND1: GETP OBJ,P?SIZE ADD WT,STACK RSTACK .FUNCT DESCRIBE-ROOM,LOOK?,V?,STR,AV ZERO? LOOK? /?PRD3 SET 'V?,LOOK? JUMP ?PEN1 ?PRD3: EQUAL? VERBOSITY,2 /?PRD4 PUSH 0 JUMP ?PRD5 ?PRD4: PUSH 1 ?PRD5: SET 'V?,STACK ?PEN1: ZERO? LIT \?CND6 PRINTI "It is pitch black." CRLF RFALSE ?CND6: FSET? HERE,TOUCHBIT /?CND10 FSET HERE,TOUCHBIT SET 'V?,TRUE-VALUE ?CND10: IN? HERE,ROOMS \?CND12 PRINTD HERE LOC WINNER >AV ZERO? LYING-DOWN \?CND12 FSET? AV,VEHBIT /?CND12 CRLF ?CND12: ZERO? LOOK? \?CCL21 EQUAL? VERBOSITY,1,2 \TRUE ?CCL21: FSET? AV,VEHBIT \?CCL26 PRINTI ", in the " PRINTD AV CRLF JUMP ?CND24 ?CCL26: ZERO? LYING-DOWN /?CND24 PRINTI ", lying down" CRLF ?CND24: ZERO? V? /?CCL34 GETP HERE,P?ACTION CALL STACK,M-LOOK ZERO? STACK \TRUE ?CCL34: ZERO? V? /?CCL38 GETP HERE,P?LDESC >STR ZERO? STR /?CCL38 PRINT STR CRLF JUMP ?CND32 ?CCL38: GETP HERE,P?ACTION ICALL STACK,M-FLASH ?CND32: EQUAL? HERE,AV /TRUE FSET? AV,VEHBIT \TRUE GETP AV,P?ACTION ICALL STACK,M-LOOK RTRUE .FUNCT DESCRIBE-OBJECTS,V? ZERO? LIT /?PRG12 FIRST? HERE \FALSE ZERO? V? /?PRD9 SET 'V?,V? JUMP ?PEN7 ?PRD9: EQUAL? VERBOSITY,2 /?PRD10 PUSH 0 JUMP ?PRD11 ?PRD10: PUSH 1 ?PRD11: SET 'V?,STACK ?PEN7: CALL PRINT-CONT,HERE,V?,-1 RSTACK ?PRG12: PRINT TOO-DARK CRLF RTRUE .FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR,AV ZERO? LEVEL \?CCL3 GETP OBJ,P?DESCFCN CALL STACK,M-OBJDESC ZERO? STACK \TRUE ?CCL3: ZERO? LEVEL \?CCL7 FSET? OBJ,TOUCHBIT /?PRD11 GETP OBJ,P?FDESC >STR ZERO? STR \?PRG14 ?PRD11: GETP OBJ,P?LDESC >STR ZERO? STR /?CCL7 ?PRG14: PRINT STR JUMP ?CND1 ?CCL7: ZERO? LEVEL \?PRG22 PRINTI "There is" ICALL2 ARTICLE,OBJ PRINTI " here." JUMP ?CND1 ?PRG22: GET INDENTS,LEVEL PRINT STACK FSET? OBJ,NARTICLEBIT /?PRG33 FSET? OBJ,VOWELBIT \?PRG31 PRINTI "an " JUMP ?PRG33 ?PRG31: PRINTI "a " ?PRG33: PRINTD OBJ FSET? OBJ,WORNBIT \?CCL37 PRINTI " (being worn)" JUMP ?CND1 ?CCL37: EQUAL? OBJ,BABEL-FISH \?CCL41 PRINTI " (in your ear)" JUMP ?CND1 ?CCL41: EQUAL? OBJ,PLOTTER \?CCL45 ZERO? BROWNIAN-SOURCE /?CCL45 PRINTI " (suspended in" ICALL2 ARTICLE,BROWNIAN-SOURCE PRINTC 41 JUMP ?CND1 ?CCL45: EQUAL? OBJ,SPARE-DRIVE \?CND1 ZERO? DRIVE-TO-PLOTTER \?PRG57 ZERO? DRIVE-TO-CONTROLS /?CND1 ?PRG57: PRINTI " (connected to" ZERO? DRIVE-TO-PLOTTER /?CND59 PRINTI " the plotter" ZERO? DRIVE-TO-CONTROLS /?CND59 PRINTI " and" ?CND59: ZERO? DRIVE-TO-CONTROLS /?PRG71 PRINTI " the control console" ?PRG71: PRINTC 41 ?CND1: ZERO? LEVEL \?CND73 FSET? OBJ,ACTORBIT /?CND73 LOC WINNER >AV ZERO? AV /?CND73 FSET? AV,VEHBIT \?CND73 PRINTI " (outside the " PRINTD AV PRINTC 41 ?CND73: CRLF CALL2 SEE-INSIDE?,OBJ ZERO? STACK /FALSE FIRST? OBJ \FALSE CALL PRINT-CONT,OBJ,V?,LEVEL RSTACK .FUNCT PRINT-CONT,OBJ,V?,LEVEL,Y,1ST?,AV,STR,PV?,INV?,SC SET '1ST?,TRUE-VALUE FIRST? OBJ >Y \TRUE LOC WINNER FSET? STACK,VEHBIT \?CND3 LOC WINNER >AV ?CND3: LOC OBJ EQUAL? PROTAGONIST,OBJ,STACK \?PRG8 SET 'INV?,TRUE-VALUE ?CND5: FIRST? OBJ >Y /?PRG31 ?PRG31: ZERO? Y \?CCL35 ZERO? PV? /TRUE ZERO? AV /TRUE FIRST? AV \TRUE ICALL PRINT-CONT,AV,V?,LEVEL RTRUE ?PRG8: ZERO? Y /?CND5 EQUAL? Y,AV \?CCL14 SET 'PV?,TRUE-VALUE JUMP ?CND10 ?CCL14: EQUAL? Y,WINNER /?CND10 FSET? Y,INVISIBLE /?CND10 FSET? Y,TOUCHBIT /?CND10 GETP Y,P?FDESC >STR ZERO? STR /?CND10 FSET? Y,NDESCBIT /?CND20 PRINT STR CRLF ?CND20: CALL2 SEE-INSIDE?,Y ZERO? STACK /?CND10 LOC Y GETP STACK,P?DESCFCN ZERO? STACK \?CND10 FIRST? Y \?CND10 ICALL PRINT-CONT,Y,V?,0 ?CND10: NEXT? Y >Y /?PRG8 JUMP ?PRG8 ?CCL35: EQUAL? Y,AV,PROTAGONIST /?CND33 FSET? Y,INVISIBLE /?CND33 ZERO? INV? \?CCL42 FSET? Y,TOUCHBIT /?CCL42 GETP Y,P?FDESC ZERO? STACK \?CND33 ?CCL42: EQUAL? Y,STONE \?CCL50 EQUAL? HERE,OUTER-LAIR \?CCL50 IN? Y,HERE \?CCL50 FSET Y,NDESCBIT JUMP ?CND33 ?CCL50: FSET? Y,NDESCBIT /?CCL55 ZERO? 1ST? /?CND56 CALL FIRSTER,OBJ,LEVEL ZERO? STACK /?CND58 LESS? LEVEL,0 \?CND58 SET 'LEVEL,0 ?CND58: INC 'LEVEL SET '1ST?,FALSE-VALUE ?CND56: ICALL DESCRIBE-OBJECT,Y,V?,LEVEL JUMP ?CND33 ?CCL55: FIRST? Y \?CND33 CALL2 SEE-INSIDE?,Y ZERO? STACK /?CND33 ICALL PRINT-CONT,Y,V?,LEVEL ?CND33: NEXT? Y >Y /?PRG31 JUMP ?PRG31 .FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?,IT?,TWO? SET '1ST?,TRUE-VALUE FIRST? OBJ >F \FALSE ?PRG4: NEXT? F >N /?BOGUS6 ?BOGUS6: ZERO? 1ST? /?PRG10 SET '1ST?,FALSE-VALUE JUMP ?CND7 ?PRG10: PRINTC 44 ZERO? N \?CND7 PRINTI " and" ?CND7: ICALL2 ARTICLE,F ZERO? IT? \?CCL18 ZERO? TWO? \?CCL18 SET 'IT?,F JUMP ?CND16 ?CCL18: SET 'TWO?,TRUE-VALUE SET 'IT?,FALSE-VALUE ?CND16: SET 'F,N ZERO? F \?PRG4 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 \?CND6 GET INDENTS,LEVEL PRINT STACK ?CND6: FSET? OBJ,SURFACEBIT \?CCL12 PRINTI "Sitting on the " PRINTD OBJ PRINTR " is:" ?CCL12: FSET? OBJ,ACTORBIT \?PRG23 EQUAL? OBJ,NUTRIMAT /?PRG23 PRINT IT-LOOKS-LIKE ICALL ARTICLE,OBJ,TRUE-VALUE PRINTR " is holding:" ?PRG23: PRINT IT-LOOKS-LIKE ICALL ARTICLE,OBJ,TRUE-VALUE PRINTR " contains:" .FUNCT DESCRIBE-VEHICLE MOVE PROTAGONIST,ROOMS FIRST? PRSO \?PRG4 ICALL2 PRINT-CONT,PRSO JUMP ?CND1 ?PRG4: PRINTI "It's empty (not counting you)." CRLF ?CND1: MOVE PROTAGONIST,PRSO RTRUE .FUNCT GOTO,RM,V? ASSIGNED? 'V? /?CND1 SET 'V?,TRUE-VALUE ?CND1: MOVE PROTAGONIST,RM SET 'HERE,RM SET 'OHERE,FALSE-VALUE EQUAL? HERE,DARK /?CND3 MOVE NAME,HERE ?CND3: CALL2 LIT?,HERE >LIT ICALL1 UNPLUG-HELD-STUFF GETP HERE,P?ACTION ICALL STACK,M-ENTER ZERO? V? /TRUE EQUAL? HERE,RM \TRUE ICALL1 V-FIRST-LOOK RTRUE .FUNCT UNPLUG-HELD-STUFF ZERO? DRIVE-TO-CONTROLS /?CND1 CALL2 HELD?,SPARE-DRIVE ZERO? STACK /?CND1 SET 'DRIVE-TO-CONTROLS,FALSE-VALUE FCLEAR SPARE-DRIVE,NDESCBIT PRINTI "(unplugging the spare drive first)" CRLF ?CND1: CALL HOLDING-ONE-BUT-NOT-BOTH?,SPARE-DRIVE,PLOTTER ZERO? STACK /?CND7 ZERO? DRIVE-TO-PLOTTER /?CND7 SET 'DRIVE-TO-PLOTTER,FALSE-VALUE PRINTI "(disconnecting the short cord first)" CRLF ?CND7: CALL HOLDING-ONE-BUT-NOT-BOTH?,BROWNIAN-SOURCE,PLOTTER ZERO? STACK /FALSE ZERO? BROWNIAN-SOURCE /FALSE SET 'BROWNIAN-SOURCE,FALSE-VALUE CALL1 REMOVING-BIT RSTACK .FUNCT JIGS-UP,DESC PRINT DESC ZERO? DREAMING /?PRG43 PRINTI " Everything becomes..." CRLF CRLF EQUAL? IDENTITY-FLAG,FORD \?CCL10 ICALL ROB,PROTAGONIST,LOCAL-GLOBALS GET FORD-TABLE,4 ZERO? STACK /?CND11 FSET THUMB,MUNGEDBIT ?CND11: ICALL ROB,MEMORIAL,PROTAGONIST GET FORD-TABLE,0 MOVE SATCHEL,STACK GET FORD-TABLE,1 MOVE THUMB,STACK GET FORD-TABLE,2 MOVE GUIDE,STACK GET FORD-TABLE,3 MOVE TOWEL,STACK GET FORD-TABLE,5 MOVE MINERAL-WATER,STACK FSET? COUNTRY-LANE,REVISITBIT /?CND13 MOVE SATCHEL-FLUFF,SATCHEL ?CND13: FCLEAR SATCHEL,OPENBIT FCLEAR COUNTRY-LANE,NDESCBIT SET 'TOWEL-OFFERED,FALSE-VALUE SET 'GONE-AROUND,FALSE-VALUE CALL2 INT,I-ARTHUR PUT STACK,0,0 ICALL1 LEAVE-EARTH JUMP ?CND8 ?CCL10: EQUAL? IDENTITY-FLAG,TRILLIAN \?CCL16 GET PARTY-TABLE,0 MOVE HANDBAG,STACK IN? TWEEZERS,HANDBAG \?CND17 GET PARTY-TABLE,1 MOVE TWEEZERS,STACK ?CND17: GET PARTY-TABLE,2 ZERO? STACK /?CCL21 FSET HANDBAG,OPENBIT JUMP ?CND19 ?CCL21: FCLEAR HANDBAG,OPENBIT ?CND19: FSET? LIVING-ROOM,REVISITBIT /?CND22 MOVE JACKET-FLUFF,LOCAL-GLOBALS FSET JACKET-FLUFF,TRYTAKEBIT FSET JACKET-FLUFF,NDESCBIT SET 'FLUFF-REMOVED,FALSE-VALUE FCLEAR HOSTESS,NDESCBIT ?CND22: ICALL ROB,RAMP,HANDBAG FCLEAR LIVING-ROOM,TOUCHBIT FCLEAR HANDBAG,NDESCBIT FCLEAR WINE,NDESCBIT FCLEAR APPETIZERS,NDESCBIT MOVE WINE,LOCAL-GLOBALS MOVE APPETIZERS,LOCAL-GLOBALS SET 'TRILLIAN-PROB,10 SET 'ITEM-DROPPED-AT-PARTY,FALSE-VALUE CALL2 INT,I-ARTHUR PUT STACK,0,0 CALL2 INT,I-ZAPHOD PUT STACK,0,0 CALL2 INT,I-HOSTESS PUT STACK,0,0 JUMP ?CND8 ?CCL16: EQUAL? IDENTITY-FLAG,ZAPHOD \?CCL25 SET 'BOAT-DOCKED,FALSE-VALUE SET 'BOAT-COUNTER,0 SET 'CRASH-COUNTER,0 SET 'DAIS-COUNTER,0 MOVE GUARDS,LOCAL-GLOBALS MOVE BLASTER,LOCAL-GLOBALS MOVE RIFLES,LOCAL-GLOBALS FCLEAR SPEEDBOAT,TOUCHBIT FSET RIFLES,NDESCBIT CALL2 INT,I-GUARDS PUT STACK,0,0 CALL2 INT,I-SPEEDBOAT PUT STACK,0,0 FSET? SPEEDBOAT,REVISITBIT /?CND26 MOVE TOOLBOX,SPEEDBOAT MOVE CUSHION-FLUFF,LOCAL-GLOBALS MOVE KEY,LOCAL-GLOBALS ?CND26: ICALL ROB,PROTAGONIST,LOCAL-GLOBALS JUMP ?CND8 ?CCL25: EQUAL? HERE,INSIDE-WHALE \?CCL29 ICALL ROB,INSIDE-WHALE,BULLDOZER MOVE WHALE-OBJECT,INSIDE-WHALE CALL HELD?,FLOWERPOT,THING ZERO? STACK \?CND30 MOVE FLOWERPOT,HERE ?CND30: ICALL ROB,PROTAGONIST,BULLDOZER FCLEAR INSIDE-WHALE,TOUCHBIT IN? GOWN,BULLDOZER \?CND32 FSET? GOWN,WORNBIT \?CND32 MOVE GOWN,PROTAGONIST ?CND32: IN? BABEL-FISH,BULLDOZER \?CND8 MOVE BABEL-FISH,PROTAGONIST JUMP ?CND8 ?CCL29: EQUAL? HERE,WAR-CHAMBER,MAZE \?CCL39 CALL2 INT,I-DOG PUT STACK,0,0 FCLEAR WAR-CHAMBER,TOUCHBIT MOVE THIRD-PLANET,LOCAL-GLOBALS SET 'DOG-COUNTER,0 EQUAL? HERE,WAR-CHAMBER \?CND8 ICALL ROB,WAR-CHAMBER,LOCAL-GLOBALS MOVE AWL,HERE MOVE GGUGVUNT,HERE MOVE VLHURG,HERE MOVE CANOPY,HERE MOVE MICROSCOPIC-FLEET,HERE MOVE OTHER-PLANETS,HERE FCLEAR VLHURG,MUNGEDBIT JUMP ?CND8 ?CCL39: EQUAL? HERE,LAIR,INNER-LAIR,OUTER-LAIR \?CND8 FCLEAR BEAST,MUNGEDBIT SET 'BEAST-COUNTER,0 SET 'BEARINGS-LOST,FALSE-VALUE SET 'NAME-TOLD,FALSE-VALUE FCLEAR TOWEL,WORNBIT FCLEAR LAIR,NDESCBIT MOVE STONE,OUTER-LAIR MOVE BEAST,LAIR CALL2 INT,I-BEAST PUT STACK,0,0 ?CND8: SET 'TEA-COUNTER,0 MOVE MAIN-DRIVE,GLOBAL-OBJECTS SET 'HEART-PROB,100 CALL2 GOTO,DARK RSTACK ?PRG43: CRLF CRLF PRINTI " **** You have died ****" CRLF CRLF CALL1 FINISH RSTACK .FUNCT ACCESSIBLE?,OBJ,L LOC OBJ >L FSET? OBJ,INVISIBLE /FALSE ZERO? L /FALSE EQUAL? L,GLOBAL-OBJECTS /TRUE EQUAL? L,LOCAL-GLOBALS \?CCL9 CALL GLOBAL-IN?,OBJ,HERE ZERO? STACK \TRUE ?CCL9: CALL2 META-LOC,OBJ EQUAL? STACK,HERE \FALSE EQUAL? L,WINNER,HERE /TRUE 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 ?PRG1: ZERO? OBJ /FALSE IN? OBJ,GLOBAL-OBJECTS \?CND3 RETURN GLOBAL-OBJECTS ?CND3: IN? OBJ,ROOMS \?CCL9 RETURN OBJ ?CCL9: LOC OBJ >OBJ JUMP ?PRG1 .FUNCT OTHER-SIDE,DOBJ,P,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 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 CALL HELD?,STACK,CONT 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 SUB STACK,1 INTBL? OBJ1,TEE,STACK /?CND1 ?CND1: RSTACK .FUNCT FIND-IN,WHERE,WHAT,W FIRST? WHERE >W /?BOGUS1 ?BOGUS1: ZERO? W /FALSE ?PRG4: FSET? W,WHAT \?CCL8 RETURN W ?CCL8: 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 ICALL ARTICLE,STACK,TRUE-VALUE PRINTR " is closed!" .FUNCT DO-WALK,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR RSTACK .FUNCT FUCKING-CLEAR SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE RETURN 2 .FUNCT ROB,WHO,WHERE,N,X FIRST? WHO >X /?PRG2 ?PRG2: ZERO? X /TRUE NEXT? X >N /?BOGUS6 ?BOGUS6: MOVE X,WHERE SET 'X,N JUMP ?PRG2 .FUNCT HOLDING-ONE-BUT-NOT-BOTH?,ONE,TWO CALL2 HELD?,ONE ZERO? STACK /?CCL3 CALL2 HELD?,TWO ZERO? STACK \FALSE ?CCL3: CALL2 HELD?,ONE ZERO? STACK \TRUE CALL2 HELD?,TWO ZERO? STACK /FALSE RTRUE .FUNCT HACK-HACK,STR PRINT STR ICALL ARTICLE,PRSO,TRUE-VALUE CALL2 PICK-ONE,HO-HUM PRINT STACK CRLF RTRUE .FUNCT ARTICLE,OBJ,THE ZERO? OBJ \?CND1 SET 'OBJ,NOT-HERE-OBJECT ?CND1: FSET? OBJ,NARTICLEBIT /?PRG16 ZERO? THE /?CCL7 PRINTI " the" JUMP ?PRG16 ?CCL7: FSET? OBJ,VOWELBIT \?PRG14 PRINTI " an" JUMP ?PRG16 ?PRG14: PRINTI " a" ?PRG16: PRINTC 32 PRINTD OBJ RTRUE .ENDI