mirror of
https://github.com/historicalsource/hitchhikersguide-gold
synced 2024-05-02 00:59:31 +03:00
3273 lines
66 KiB
Plaintext
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
|