.FUNCT PLAYER-F:ANY:0:1,ARG,L EQUAL? ARG,M-WINNER /?CCL3 EQUAL? PRSO,PLAYER \?CCL6 EQUAL? PRSA,V?THANK,V?SORRY,V?HELLO \?CCL9 ICALL1 HAR-HAR RTRUE ?CCL9: EQUAL? PRSA,V?ALARM \?CCL11 PRINT YOU-ARE CRLF RTRUE ?CCL11: EQUAL? PRSA,V?FIND \?CCL13 PRINTI "You're right here, " ICALL1 TELL-LOCATION CRLF RTRUE ?CCL13: EQUAL? PRSA,V?FOLLOW \?CCL15 PRINTR "I'd like to, but like most computers I don't have legs." ?CCL15: EQUAL? PRSA,V?MUNG,V?KILL \?CCL17 ICALL2 JIGS-UP,STR?185 RTRUE ?CCL17: EQUAL? PRSA,V?LISTEN \?CCL20 PRINTR "Yes?" ?CCL20: EQUAL? PRSA,V?MOVE \?CCL22 ICALL1 V-WALK-AROUND RTRUE ?CCL22: EQUAL? PRSA,V?PULL-TOGETHER \?CCL24 PRINT ZEN CRLF RTRUE ?CCL24: EQUAL? PRSA,V?SEARCH \?CCL26 ICALL1 V-INVENTORY RTRUE ?CCL26: EQUAL? PRSA,V?TELL \FALSE ICALL1 FUCKING-CLEAR PRINTR "Talking to yourself is a sign of impending mental collapse." ?CCL6: EQUAL? PRSI,PLAYER \FALSE EQUAL? PRSA,V?GIVE \FALSE IN? PRSO,PLAYER \?CCL36 EQUAL? PRSO,BABEL-FISH /?CCL36 ICALL1 PRE-TAKE RTRUE ?CCL36: ICALL PERFORM,V?TAKE,PRSO RTRUE ?CCL3: ZERO? PRSI /?CCL40 EQUAL? PRSA,V?SEARCH-FOR /?CCL40 FSET? PRSI,SECRETBIT \?CCL40 FSET? PRSI,SEENBIT /?CCL40 ICALL2 NOT-FOUND,PRSI RTRUE ?CCL40: ZERO? PRSO /?CCL46 EQUAL? PRSA,V?WALK,V?FIND /?CCL46 FSET? PRSO,SECRETBIT \?CCL46 FSET? PRSO,SEENBIT /?CCL46 ICALL2 NOT-FOUND,PRSO RTRUE ?CCL46: LOC PLAYER >L EQUAL? L,HERE /FALSE ZERO? P-WALK-DIR /?CCL55 CALL1 TOO-BAD-SIT-HIDE RSTACK ?CCL55: EQUAL? PRSO,FALSE-VALUE,ROOMS,L /FALSE EQUAL? PRSA,V?FIND /?CTR58 EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?WALK-TO \?CCL59 ?CTR58: EQUAL? PRSO,SLEEP-GLOBAL /FALSE CALL1 TOO-BAD-SIT-HIDE RSTACK ?CCL59: CALL1 SPEAKING-VERB? ZERO? STACK \FALSE CALL1 GAME-VERB? ZERO? STACK \FALSE CALL1 REMOTE-VERB? ZERO? STACK \FALSE EQUAL? PRSA,V?SMILE /FALSE EQUAL? PRSA,V?SHOOT,V?NOD,V?LOOK-ON /FALSE EQUAL? PRSA,V?LISTEN,V?FAINT,V?AIM /FALSE CALL2 HELD?,PRSO ZERO? STACK \FALSE CALL HELD?,PRSO,GLOBAL-OBJECTS ZERO? STACK \FALSE EQUAL? PRSA,V?EXAMINE /FALSE CALL HELD?,PRSO,L ZERO? STACK \?CCL83 CALL1 TOO-BAD-SIT-HIDE RSTACK ?CCL83: ZERO? PRSI /FALSE CALL2 HELD?,PRSI ZERO? STACK \FALSE CALL HELD?,PRSI,GLOBAL-OBJECTS ZERO? STACK \FALSE CALL HELD?,PRSI,L ZERO? STACK \FALSE CALL1 TOO-BAD-SIT-HIDE RSTACK .FUNCT TOO-BAD-SIT-HIDE:ANY:0:0 MOVE WINNER,HERE ICALL2 FIRST-YOU,STR?186 RFALSE .FUNCT FUCKING-CLEAR:ANY:0:0 SET 'P-CONT,FALSE-VALUE RETURN 2 .FUNCT MARVIN-F:ANY:0:1,ARG,OBJ,X EQUAL? ARG,M-WINNER \?CCL3 CALL2 GRAB-ATTENTION,MARVIN ZERO? STACK \?CCL6 RETURN 2 ?CCL6: CALL2 COM-CHECK,MARVIN >X ZERO? X /?CCL10 EQUAL? X,M-FATAL /FALSE EQUAL? X,M-OTHER \TRUE RETURN 2 ?CCL10: ICALL1 FUCKING-CLEAR PRINTR """I think you ought to know I'm feeling very depressed.""" ?CCL3: CALL2 ASKING-ABOUT?,MARVIN >OBJ ZERO? OBJ /?CCL19 CALL GRAB-ATTENTION,MARVIN,OBJ ZERO? STACK \?CCL22 RETURN 2 ?CCL22: EQUAL? OBJ,OBJECT-OF-GAME \?CCL26 PRINTR """Being clever doesn't always make you happy, you know. Look at me, brain the size of a planet, how many points do you think I've got? Minus thirty zillion at the last count.""" ?CCL26: CALL COMMON-ASK-ABOUT,MARVIN,OBJ >X ZERO? X /?CCL28 EQUAL? X,M-FATAL /FALSE RTRUE ?CCL28: CALL TELL-DUNNO,MARVIN,OBJ RSTACK ?CCL19: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL33 GETP MARVIN,P?LDESC EQUAL? STACK,14 \?CCL33 PRINTR "Rather like trying to wake the dead." ?CCL33: CALL PERSON-F,MARVIN,ARG RSTACK .FUNCT ASKING-ABOUT?:ANY:1:1,WHO,DR EQUAL? PRSA,V?SHOW,V?ASK-ABOUT \FALSE EQUAL? WHO,PRSO \FALSE RETURN PRSI .FUNCT FORD-F:ANY:0:1,ARG,OBJ,X EQUAL? ARG,M-WINNER \?CCL3 CALL2 GRAB-ATTENTION,FORD ZERO? STACK \?CCL6 RETURN 2 ?CCL6: CALL2 COM-CHECK,FORD >X ZERO? X /?CCL10 EQUAL? X,M-FATAL /FALSE EQUAL? X,M-OTHER \TRUE RETURN 2 ?CCL10: ICALL1 FUCKING-CLEAR PRINTI "Ford, busy scanning the sky" EQUAL? HERE,PUB \?CND18 PRINTI " through the window" ?CND18: PRINTR ", ignores you." ?CCL3: CALL2 ASKING-ABOUT?,FORD >OBJ ZERO? OBJ /?CCL21 CALL GRAB-ATTENTION,FORD,OBJ ZERO? STACK \?CCL24 RETURN 2 ?CCL24: EQUAL? OBJ,THIRD-PLANET \?CCL28 PRINTR "Ford explains that the Earth has been demolished. To cheer you up, he points out that there are an awful lot of little planets like that around, and the Earth wasn't even a particularly nice one." ?CCL28: CALL COMMON-ASK-ABOUT,FORD,OBJ >X ZERO? X /?CCL30 EQUAL? X,M-FATAL /FALSE RTRUE ?CCL30: CALL TELL-DUNNO,FORD,OBJ RSTACK ?CCL21: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL35 GETP FORD,P?LDESC EQUAL? STACK,14 \?CCL35 PRINTR "Rather like trying to wake the dead." ?CCL35: CALL PERSON-F,FORD,ARG RSTACK .FUNCT TELL-DUNNO:ANY:2:2,PER,OBJ PRINTR """You know as much as I do.""" .FUNCT ZAPHOD-F:ANY:0:1,ARG,OBJ,X EQUAL? ARG,M-WINNER \?CCL3 CALL2 GRAB-ATTENTION,ZAPHOD ZERO? STACK \?CCL6 RETURN 2 ?CCL6: CALL2 COM-CHECK,ZAPHOD >X ZERO? X /?CCL10 EQUAL? X,M-FATAL /FALSE EQUAL? X,M-OTHER \TRUE RETURN 2 ?CCL10: ICALL1 FUCKING-CLEAR PRINTR """Shut up, Earthman.""" ?CCL3: CALL2 ASKING-ABOUT?,ZAPHOD >OBJ ZERO? OBJ /?CCL19 CALL GRAB-ATTENTION,ZAPHOD,OBJ ZERO? STACK \?CCL22 RETURN 2 ?CCL22: CALL COMMON-ASK-ABOUT,ZAPHOD,OBJ >X ZERO? X /?CCL26 EQUAL? X,M-FATAL /FALSE RTRUE ?CCL26: CALL TELL-DUNNO,ZAPHOD,OBJ RSTACK ?CCL19: EQUAL? PRSA,V?EXAMINE \?CCL31 PRINTR "Zaphod has two heads." ?CCL31: CALL PERSON-F,ZAPHOD,ARG RSTACK .FUNCT TRILLIAN-F:ANY:0:1,ARG,OBJ,X EQUAL? ARG,M-WINNER \?CCL3 CALL2 GRAB-ATTENTION,TRILLIAN ZERO? STACK \?CCL6 RETURN 2 ?CCL6: CALL2 COM-CHECK,TRILLIAN >X ZERO? X /?CCL10 EQUAL? X,M-FATAL /FALSE EQUAL? X,M-OTHER \TRUE RETURN 2 ?CCL10: ICALL1 FUCKING-CLEAR PRINTD TRILLIAN PRINTR " smiles disinterestedly at you and looks away." ?CCL3: CALL2 ASKING-ABOUT?,TRILLIAN >OBJ ZERO? OBJ /?CCL19 CALL GRAB-ATTENTION,TRILLIAN,OBJ ZERO? STACK \?CCL22 RETURN 2 ?CCL22: CALL COMMON-ASK-ABOUT,TRILLIAN,OBJ >X ZERO? X /?CCL26 EQUAL? X,M-FATAL /FALSE RTRUE ?CCL26: CALL TELL-DUNNO,TRILLIAN,OBJ RSTACK ?CCL19: CALL PERSON-F,TRILLIAN,ARG RSTACK .FUNCT MARVIN-D:ANY:0:1,ARG ICALL2 DESCRIBE-PERSON,MARVIN RTRUE .FUNCT FORD-D:ANY:0:1,X GETP FORD,P?LDESC EQUAL? STACK,14 \?CCL3 PRINTR "Ford is in the corner, snoring loudly." ?CCL3: ICALL2 DESCRIBE-PERSON,FORD RTRUE .FUNCT ZAPHOD-D:ANY:0:1,ARG ICALL2 DESCRIBE-PERSON,ZAPHOD RTRUE .FUNCT TRILLIAN-D:ANY:0:1,ARG ICALL2 DESCRIBE-PERSON,TRILLIAN RTRUE .FUNCT DESCRIBE-PERSON:ANY:1:1,PER,STR GETP PER,P?LDESC >STR ZERO? STR /?CND1 GETP PER,P?CHARACTER PUT TOUCHED-LDESCS,STACK,STR RFALSE ?CND1: ICALL2 START-SENTENCE,PER PRINTI " is " GETPT PER,P?WEST >STR ZERO? STR /?CCL6 GET STR,NEXITSTR >STR ZERO? STR /?CCL6 PRINT STR JUMP ?CND4 ?CCL6: PRINTI "looking bored" ?CND4: PRINTC 46 EQUAL? STR,6 \?CCL11 PRINTC 32 RTRUE ?CCL11: CRLF RTRUE .FUNCT PERSON-F:ANY:2:2,PER,ARG,OBJ,X,L,C,N LOC PER >L GETP PER,P?CHARACTER >C EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL3 EQUAL? PRSO,PER \FALSE CALL UNSNOOZE,PER,TRUE-VALUE ZERO? STACK /?CCL9 ICALL HE-SHE-IT,PER,1 PRINTR " gasps to see you so close!" ?CCL9: ICALL HE-SHE-IT,PER,1,STR?61 PRINTI " still " GETP PER,P?LDESC >X ZERO? X /?CCL12 GET LDESC-STRINGS,X PRINT STACK JUMP ?CND10 ?CCL12: GETPT PER,P?WEST >X ZERO? X /?CND10 GET X,NEXITSTR PRINT STACK ?CND10: PRINTR "." ?CCL3: EQUAL? PRSA,V?GIVE \?CCL15 EQUAL? PRSI,PER \FALSE CALL2 HELD?,PRSO ZERO? STACK /FALSE CALL2 GRAB-ATTENTION,PER ZERO? STACK \FALSE RETURN 2 ?CCL15: EQUAL? PRSA,V?LAMP-OFF \?CCL26 GETP PER,P?LINE ZERO? STACK /?CCL29 PRINTR "Seems you've already done that." ?CCL29: CALL1 WONT-HELP RSTACK ?CCL26: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?MUNG \?CCL31 EQUAL? PER,PRSO \FALSE FSET? PER,PERSONBIT \FALSE FSET? PER,MUNGBIT /FALSE GETP PER,P?LINE ADD 1,STACK PUTP PER,P?LINE,STACK GETP PER,P?LDESC EQUAL? STACK,4 /?CND38 PUTP PER,P?LDESC,20 ?CND38: ICALL HE-SHE-IT,PER,1 PRINTR " pushes you away and mutters, ""I don't think that's called for.""" ?CCL31: EQUAL? PRSA,V?SHOW \?CCL41 EQUAL? PER,PRSO \FALSE CALL2 GRAB-ATTENTION,PER ZERO? STACK \?CCL47 RETURN 2 ?CCL47: ICALL PERFORM,V?TELL-ABOUT,PRSO,PRSI RTRUE ?CCL41: EQUAL? PRSA,V?SMILE \?CCL52 EQUAL? PER,PRSO \FALSE CALL2 GRAB-ATTENTION,PER ZERO? STACK \?CCL58 RETURN 2 ?CCL58: ICALL HE-SHE-IT,PRSO,1,STR?217 PRINTR " back at you." ?CCL52: EQUAL? PRSA,V?TELL-ABOUT \?CCL62 EQUAL? PER,PRSO \FALSE CALL2 GRAB-ATTENTION,PER ZERO? STACK \?CND66 RETURN 2 ?CND66: PUTP PER,P?LDESC,12 PRINTR """I don't know what you mean.""" ?CCL62: EQUAL? PRSA,V?THROW-AT \?CCL71 EQUAL? PER,PRSI \FALSE FSET? PER,PERSONBIT \FALSE FSET? PER,MUNGBIT /FALSE MOVE PRSO,PRSI ICALL HE-SHE-IT,PER,1 PRINTI " catches" ICALL2 PRINT-THE,PRSO PRINTI " with" ICALL HIM-HER-IT,PER,0,TRUE-VALUE PRINTC 32 PRINTI "righ" PRINTR "t hand." ?CCL71: CALL2 COMMON-OTHER,PER RSTACK .FUNCT CARRY-CHECK:ANY:1:1,PER FIRST? PER \FALSE ICALL HE-SHE-IT,PER,1,STR?61 PRINTI " holding" ICALL2 PRINT-CONTENTS,PER PRINTR "." .FUNCT TRANSIT-TEST:ANY:1:1,PER EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /TRUE EQUAL? PRSA,V?TAKE-TO,V?LEAVE,V?DISEMBARK /TRUE RFALSE .FUNCT COM-CHECK:ANY:1:1,PER,N GETP PER,P?LINE >N EQUAL? PRSA,V?$CALL \?CCL3 ICALL1 DONT-UNDERSTAND RETURN M-OTHER ?CCL3: CALL2 TRANSIT-TEST,PER ZERO? STACK /?CCL5 RETURN 2 ?CCL5: EQUAL? PRSA,V?SORRY,V?HELLO,V?ALARM \?CCL9 EQUAL? PRSO,ROOMS /?CTR11 EQUAL? PRSO,PER \FALSE ?CTR11: SET 'WINNER,PLAYER ICALL PERFORM,PRSA,PER RTRUE ?CCL9: LESS? 0,N \?CCL16 PRINTI """I'm too " EQUAL? N,1 \?CCL19 PRINTI "peeved" JUMP ?CND17 ?CCL19: PRINTI "angry" ?CND17: PRINTR " with you now.""" ?CCL16: EQUAL? PRSA,V?YES,V?THANK,V?NO \?CCL21 RETURN 2 ?CCL21: EQUAL? PRSA,V?WALK-TO,V?FOLLOW \?CCL25 EQUAL? PRSA,V?WALK-TO \?CCL28 EQUAL? PRSO,SLEEP-GLOBAL \?CCL28 RETURN 2 ?CCL28: PRINTR """I will go where I please, thank you very much.""" ?CCL25: EQUAL? PRSA,V?INVENTORY \?CCL34 CALL2 CARRY-CHECK,PER ZERO? STACK \TRUE ICALL HE-SHE-IT,PER,1,STR?61 PRINTR "n't holding anything." ?CCL34: EQUAL? PRSA,V?LISTEN \?CCL38 EQUAL? PRSO,PLAYER /?CTR40 IN? PRSO,GLOBAL-OBJECTS /FALSE ?CTR40: PRINTR """I'm trying to!""" ?CCL38: EQUAL? PRSA,V?RUB \?CND1 ICALL1 FACE-RED RTRUE ?CND1: EQUAL? PRSA,V?WALK \?CCL47 EQUAL? PRSO,P?OUT \?CCL47 RETURN 2 ?CCL47: EQUAL? PRSA,V?KISS \?CCL54 ICALL2 UNSNOOZE,PER PRINTR """I really don't think this is the proper time or place.""" ?CCL54: EQUAL? PRSA,V?TAKE \?CCL56 IN? PRSO,PLAYER \FALSE SET 'WINNER,PLAYER ICALL PERFORM,V?GIVE,PRSO,PER RTRUE ?CCL56: EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?EXAMINE \?CCL61 IN? PRSO,PLAYER \FALSE SET 'WINNER,PLAYER ICALL PERFORM,V?SHOW,PER,PRSO RTRUE ?CCL61: EQUAL? PRSA,V?THROW-AT,V?GIVE \?CCL66 FSET? PRSI,PERSONBIT \?CCL66 SET 'WINNER,PRSI ICALL PERFORM,V?ASK-FOR,PER,PRSO RTRUE ?CCL66: EQUAL? PRSA,V?SGIVE \?CCL70 FSET? PRSO,PERSONBIT \?CCL70 SET 'WINNER,PRSO ICALL PERFORM,V?ASK-FOR,PER,PRSI RTRUE ?CCL70: EQUAL? PRSA,V?HELP \?CCL74 EQUAL? PRSO,FALSE-VALUE,PLAYER \?PRG78 SET 'WINNER,PLAYER ICALL PERFORM,V?ASK,PER RTRUE ?PRG78: RETURN 2 ?CCL74: EQUAL? PRSA,V?SSHOW,V?SHOW,V?FIND \?CCL81 EQUAL? PRSA,V?SHOW \?CND82 SET 'PRSA,V?SSHOW SET 'N,PRSI SET 'PRSI,PRSO SET 'PRSO,N ?CND82: IN? PRSO,ROOMS \?CCL86 SET 'WINNER,PLAYER ICALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL86: IN? PRSO,PER \?CCL88 CALL1 ITAKE EQUAL? STACK,TRUE-VALUE \TRUE ICALL HE-SHE-IT,PER,1 PRINTI " fumbles in" ICALL HIM-HER-IT,PER,0,TRUE-VALUE PRINTI " pocket and produces" ICALL2 HIM-HER-IT,PRSO PRINTR "." ?CCL88: EQUAL? PRSA,V?FIND \FALSE RETURN 2 ?CCL81: EQUAL? PRSA,V?TELL \?CCL96 EQUAL? PRSO,PLAYER \FALSE SET 'WINNER,PLAYER ICALL PERFORM,V?ASK,PER RTRUE ?CCL96: EQUAL? PRSA,V?TELL-ABOUT \?CCL101 FSET? PRSO,PERSONBIT \FALSE SET 'WINNER,PLAYER ICALL PERFORM,V?ASK-ABOUT,PER,PRSI RTRUE ?CCL101: EQUAL? PRSA,V?WAIT-FOR,V?STOP \?CCL106 EQUAL? PRSO,ROOMS /?CCL109 EQUAL? PRSO,PLAYER,GLOBAL-HERE,HERE \FALSE ?CCL109: EQUAL? PER,FOLLOWER \?CCL114 SET 'FOLLOWER,0 PRINTR """As you wish.""" ?CCL114: SET 'WINNER,PLAYER ICALL PERFORM,V?$CALL,PER RTRUE ?CCL106: EQUAL? PRSA,V?TALK-ABOUT \FALSE SET 'WINNER,PLAYER ICALL PERFORM,V?ASK-ABOUT,PER,PRSO RTRUE .FUNCT COMMON-ASK-ABOUT:ANY:2:2,PER,OBJ EQUAL? OBJ,PER \?CCL3 PRINTR """I have no secrets. Anyone can see what I am.""" ?CCL3: EQUAL? OBJ,PLAYER \?CCL5 PRINTR """You're Arthur Dent, the next-to-last Earthling.""" ?CCL5: FSET? OBJ,PERSONBIT /FALSE EQUAL? OBJ,OBJECT-OF-GAME \?CCL9 PRINTR """Oh...you're trying to figure that out also? The manual's not much help, is it? By the way, do you know your score? I don't. My computer doesn't have a status line.""" ?CCL9: IN? OBJ,PER \FALSE PRINTR """I have it right here.""" .FUNCT COMMON-OTHER:ANY:1:1,PER,X,N EQUAL? PRSA,V?ASK /FALSE EQUAL? PRSA,V?EXAMINE \?CCL5 GETP PER,P?TEXT PRINT STACK CRLF IN? PER,HERE \?CND6 FIRST? PER >N \?CND6 FSET? N,NDESCBIT /?CND6 CALL2 CARRY-CHECK,PER ZERO? STACK /?CND6 SET 'X,TRUE-VALUE ?CND6: FSET? PER,MUNGBIT \TRUE ZERO? X /?CND15 PRINTI "And" ?CND15: ZERO? X /?PRT17 PUSH 0 JUMP ?PRE19 ?PRT17: PUSH 1 ?PRE19: ICALL HE-SHE-IT,PER,STACK,STR?61 PRINTC 32 GETP PER,P?LDESC GET LDESC-STRINGS,STACK PRINT STACK PRINTR "." ?CCL5: EQUAL? PRSO,PER \FALSE EQUAL? PRSA,V?SHOW \FALSE ICALL PERFORM,V?ASK-ABOUT,PRSO,PRSI RTRUE .ENDI