hitchhikersguide-gold/verbs.zap
2019-04-18 23:01:30 -04:00

3273 lines
66 KiB
Plaintext

.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