stationfall/verbs.zap
historicalsource 43e39b2ba0 Revision 107
2019-04-14 16:11:30 -04:00

3749 lines
75 KiB
Plaintext

.FUNCT V-VERBOSE
EQUAL? VERBOSITY,2 \?CCL3
PRINT ALREADY-IN-MODE
RTRUE
?CCL3: SET 'VERBOSITY,2
PRINTI "Maximum verbosity."
CRLF
CRLF
CALL V-LOOK
RSTACK
.FUNCT V-BRIEF
EQUAL? VERBOSITY,1 \?CCL3
PRINT ALREADY-IN-MODE
RTRUE
?CCL3: SET 'VERBOSITY,1
PRINTR "Brief descriptions."
.FUNCT V-SUPER-BRIEF
ZERO? VERBOSITY \?CCL3
PRINT ALREADY-IN-MODE
RTRUE
?CCL3: SET 'VERBOSITY,0
PRINTR "Superbrief descriptions."
.FUNCT V-SAVE
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PUTB OOPS-INBUF,1,0
CALL VISIBLE?,FLOYD
ZERO? STACK /?CND1
FSET? FLOYD,TOUCHBIT \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
EQUAL? HERE,FACTORY /?CND1
PRINTI "Floyd's eyes light up. ""Oh boy! Are we gonna try something dangerous now?"""
CRLF
CRLF
?CND1: SAVE \?CCL9
PRINT OK
RTRUE
?CCL9: PRINT FAILED
RTRUE
.FUNCT V-RESTORE
CALL VISIBLE?,FLOYD
ZERO? STACK /?CND1
FSET? FLOYD,TOUCHBIT \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
EQUAL? HERE,FACTORY /?CND1
PRINTI "Floyd looks disappointed but understanding. ""That part of the story was more fun,"" he sighs."
CRLF
CRLF
?CND1: RESTORE \?CCL9
PRINT OK
RTRUE
?CCL9: PRINT FAILED
RTRUE
.FUNCT CONTINUE
PRINTI "[Hit RETURN/ENTER.]"
CRLF
PUTB P-LEXV,0,10
READ P-INBUF,P-LEXV
PUTB P-LEXV,0,60
RTRUE
.FUNCT TELL-SCORE
PRINTI "It is Day "
PRINTN DAY
PRINTI " of your adventure. "
CALL V-TIME,TRUE-VALUE
PRINTI " Your score is "
PRINTN SCORE
PRINTI " (of 80 points), giving you the rank of "
ZERO? SCORE \?CCL3
PRINTI "Insignificant Nobody"
JUMP ?CND1
?CCL3: LESS? SCORE,17 \?CCL5
PRINTI "Rising Young Insignificant Nobody"
JUMP ?CND1
?CCL5: LESS? SCORE,27 \?CCL7
PRINTI "One-Day Flash on the Evening News"
JUMP ?CND1
?CCL7: LESS? SCORE,40 \?CCL9
PRINTI "Footnote in History"
JUMP ?CND1
?CCL9: LESS? SCORE,50 \?CCL11
PRINTI "International VIP"
JUMP ?CND1
?CCL11: LESS? SCORE,65 \?CCL13
PRINTI "Interplanetary Star"
JUMP ?CND1
?CCL13: LESS? SCORE,80 \?CCL15
PRINTI "Interstellar Superstar"
JUMP ?CND1
?CCL15: PRINTI "Intergalactic Mega-Hero"
?CND1: PRINT PERIOD-CR
RTRUE
.FUNCT V-SCRIPT
CALL VISIBLE?,FLOYD
ZERO? STACK /?CND1
FSET? FLOYD,TOUCHBIT \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
EQUAL? HERE,FACTORY /?CND1
PRINTI " ""Uh oh,"" frets Floyd. ""Once printer is on, Floyd will have to be careful not to use any of the bad words he learned aboard the Duffy!"""
CRLF
?CND1: GET 0,8
BOR STACK,1
PUT 0,8,STACK
CALL CORP-NOTICE,STR?11
CALL V-VERSION
RSTACK
.FUNCT V-UNSCRIPT
CALL VISIBLE?,FLOYD
ZERO? STACK /?CND1
FSET? FLOYD,TOUCHBIT \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
EQUAL? HERE,FACTORY /?CND1
PRINTI " Floyd nods his approval. ""Good idea. Printer paper expensive. Best to save for important scenes. Not like this one."""
CRLF
?CND1: CALL CORP-NOTICE,STR?12
CALL V-VERSION
GET 0,8
BAND STACK,-2
PUT 0,8,STACK
RTRUE
.FUNCT CORP-NOTICE,STRING
PRINTI "Here "
PRINT STRING
PRINTR " a transcript of interaction with STATIONFALL."
.FUNCT V-DIAGNOSE
SET 'C-ELAPSED,18
EQUAL? HERE,FACTORY \?CCL3
PRINTR "We're talking adrenaline. Lots of adrenalin."
?CCL3: PRINTI "You feel "
ZERO? STUNNED /?CCL6
PRINTI "numb. "
CALL YOURE-STUNNED
RTRUE
?CCL6: ZERO? SLEEPY-LEVEL \?CCL8
PRINTI "well-rested"
JUMP ?CND4
?CCL8: EQUAL? SLEEPY-LEVEL,1 \?CCL11
PRINTI "sort of"
JUMP ?CND9
?CCL11: EQUAL? SLEEPY-LEVEL,2 \?CCL13
PRINTI "quite"
JUMP ?CND9
?CCL13: PRINTI "phenomenally"
?CND9: PRINTI " tired"
?CND4: ZERO? SLEEPY-LEVEL \?PRD18
GRTR? HUNGER-LEVEL,0 /?CTR15
?PRD18: GRTR? SLEEPY-LEVEL,0 \?CCL16
ZERO? HUNGER-LEVEL \?CCL16
?CTR15: PRINTI ", but"
JUMP ?CND14
?CCL16: PRINTI ", and"
?CND14: PRINTI " you are "
ZERO? HUNGER-LEVEL \?CCL25
PRINTI "well-fed"
JUMP ?CND23
?CCL25: EQUAL? HUNGER-LEVEL,1 \?CCL28
PRINTI "fairly"
JUMP ?CND26
?CCL28: EQUAL? HUNGER-LEVEL,2 \?CCL30
PRINTI "very"
JUMP ?CND26
?CCL30: PRINTI "awesomely"
?CND26: PRINTI " hungry and thirsty"
?CND23: PRINTR ". In all other respects, you are in good health."
.FUNCT V-INVENTORY
SUB 0,WORNBIT >D-BIT
SET 'C-ELAPSED,18
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,STACK
ZERO? STACK \?CND1
PRINTI "You are empty-handed."
?CND1: SET 'D-BIT,WORNBIT
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,STACK
SET 'D-BIT,FALSE-VALUE
CRLF
RTRUE
.FUNCT V-QUIT
CALL TELL-SCORE
CALL VISIBLE?,FLOYD
ZERO? STACK /?CND1
FSET? FLOYD,TOUCHBIT \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
EQUAL? HERE,FACTORY /?CND1
PRINTI " Floyd grins impishly. ""Giving up, huh?"""
CRLF
?CND1: CALL DO-YOU-WISH,STR?13
CALL YES?
ZERO? STACK /?CCL9
QUIT
RTRUE
?CCL9: PRINT OK
RTRUE
.FUNCT V-RESTART
CALL TELL-SCORE
CALL VISIBLE?,FLOYD
ZERO? STACK /?CND1
FSET? FLOYD,TOUCHBIT \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
FSET? ROBOT-POOL,TOUCHBIT \?CND1
EQUAL? HERE,ROBOT-POOL /?CND1
PRINTI " Floyd rolls his eyes. ""We're gonna have to go through that stupid scene in the Robot Pool again?"""
CRLF
?CND1: CALL DO-YOU-WISH,STR?14
CALL YES?
ZERO? STACK /FALSE
PRINTI "Restarting."
CRLF
RESTART
PRINT FAILED
RTRUE
.FUNCT DO-YOU-WISH,STRING
CRLF
PRINTI "Do you wish to "
PRINT STRING
PRINTI "? (Y is affirmative): "
RTRUE
.FUNCT YES?
?FCN: PRINTC 62
READ P-INBUF,P-LEXV
GET P-LEXV,1
CALL YES-WORD,STACK
ZERO? STACK \TRUE
GET P-LEXV,1
CALL NO-WORD,STACK
ZERO? STACK \FALSE
GET P-LEXV,1
EQUAL? STACK,W?N /FALSE
PRINTI "Please answer YES or NO. "
JUMP ?FCN
.FUNCT FINISH,REPEATING=0,CNT=0
?PRG1: CRLF
ZERO? REPEATING \?CND3
SET 'REPEATING,TRUE-VALUE
CALL TELL-SCORE
?CND3: PRINTI " According to the Treaty of Gishen IV (amended after the Battle on Sorkin III in 11347 GY) you have the opportunity to restart the story, restore a saved position, or end this session of the game. In the interests of interstellar peace, type RESTART, RESTORE, or QUIT: >"
PUTB P-LEXV,0,10
READ P-INBUF,P-LEXV
PUTB P-LEXV,0,60
INC 'CNT
GET P-LEXV,1
EQUAL? STACK,W?RESTAR \?CCL7
RESTART
PRINT FAILED
JUMP ?PRG1
?CCL7: GET P-LEXV,1
EQUAL? STACK,W?RESTOR \?CCL9
RESTORE /?CCL9
PRINT FAILED
JUMP ?PRG1
?CCL9: GET P-LEXV,1
EQUAL? STACK,W?QUIT,W?Q /?CCL12
GRTR? CNT,10 \?PRG1
?CCL12: QUIT
JUMP ?PRG1
.FUNCT V-SCORE
PRINTI "You're currently getting "
ZERO? VERBOSITY \?CCL3
PRINTI "superbrief"
JUMP ?CND1
?CCL3: EQUAL? VERBOSITY,1 \?CCL5
PRINTI "brief"
JUMP ?CND1
?CCL5: PRINTI "verbose"
?CND1: PRINTI " descriptions. "
CALL TELL-SCORE
RSTACK
.FUNCT V-VERSION,CNT=17,V
GET 0,1
BAND STACK,2047 >V
PRINTI "STATIONFALL
Infocom interactive fiction -- a science fiction story
Copyright (c) 1987 by Infocom, Inc. All rights reserved.
STATIONFALL is a trademark of Infocom, Inc.
Release "
PRINTN V
PRINTI " / Serial number "
?PRG1: IGRTR? 'CNT,23 /?REP2
GETB 0,CNT
PRINTC STACK
JUMP ?PRG1
?REP2: CRLF
CALL VISIBLE?,FLOYD
ZERO? STACK /FALSE
FSET? FLOYD,TOUCHBIT \FALSE
FSET? FLOYD,ACTIVEBIT \FALSE
EQUAL? HERE,FACTORY /FALSE
PRINTR " Floyd looks out at you, right through your computer screen. ""See that copyright notice?"" he asks in a defiant tone. ""If anyone tries pirating this disk, they'll have Floyd to answer to."""
.FUNCT V-$COMMAND
DIRIN 1
RTRUE
.FUNCT V-$RANDOM
EQUAL? PRSO,INTNUM /?CCL3
PRINTR "Bug1"
?CCL3: SUB 0,P-NUMBER
RANDOM STACK
RTRUE
.FUNCT V-$RECORD
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-$UNRECORD
DIROUT D-RECORD-OFF
RTRUE
.FUNCT V-$VERIFY
EQUAL? PRSO,INTNUM \?CCL3
EQUAL? P-NUMBER,69 \?CCL3
PRINTN SERIAL
CRLF
RTRUE
?CCL3: PRINTI "Verifying."
CRLF
VERIFY \?CCL8
PRINT OK
RTRUE
?CCL8: PRINTR "** Bad **"
.FUNCT V-ALARM
EQUAL? PRSO,ROOMS \?CCL3
CALL PERFORM,PRSA,ME
RTRUE
?CCL3: PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't asleep."
.FUNCT V-ANSWER
ZERO? AWAITING-REPLY /?CCL3
GET P-LEXV,P-CONT
CALL YES-WORD,STACK
ZERO? STACK /?CCL3
CALL V-YES
JUMP ?CND1
?CCL3: ZERO? AWAITING-REPLY /?CCL7
GET P-LEXV,P-CONT
CALL NO-WORD,STACK
ZERO? STACK /?CCL7
CALL V-NO
JUMP ?CND1
?CCL7: PRINTI "Nobody is awaiting your answer."
CRLF
?CND1: CALL STOP
RSTACK
.FUNCT V-APPLAUD
PRINTI """Clap."""
CRLF
IN? OSTRICH,HERE \TRUE
PRINTI " "
CALL PERFORM,V?SCARE,OSTRICH
RTRUE
.FUNCT V-APPLY
FSET? PRSO,WEARBIT \?CCL3
CALL PERFORM,V?WEAR,PRSO
RTRUE
?CCL3: SET 'AWAITING-REPLY,1
ADD C-ELAPSED,2
CALL QUEUE,I-REPLY,STACK
PRINTI "Apply"
CALL TPRINT-PRSO
PRINTR " for what? A job?"
.FUNCT V-ASK-ABOUT,OWINNER
EQUAL? PRSO,ME \?CCL3
CALL PERFORM,V?TELL,ME
RTRUE
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
SET 'OWINNER,WINNER
SET 'WINNER,PRSO
CALL PERFORM,V?TELL-ABOUT,ME,PRSI
SET 'WINNER,OWINNER
CALL THIS-IS-IT,PRSI
CALL THIS-IS-IT,PRSO
RTRUE
?CCL5: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-ASK-FOR
FSET? PRSO,ACTORBIT \?CCL3
SET 'WINNER,PRSO
CALL PERFORM,V?GIVE,PRSI,ME
RTRUE
?CCL3: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-ATTRACT
EQUAL? PRSI,BOOTS \?CCL3
CALL WASTES
RSTACK
?CCL3: PRINT HUH
RTRUE
.FUNCT V-BITE
CALL HACK-HACK,STR?15
RSTACK
.FUNCT V-BURN
EQUAL? HERE,CHAPEL \?CCL3
FSET? ETERNAL-FLAME,ONBIT \?CCL3
CALL PERFORM,V?PUT,PRSO,ETERNAL-FLAME
RTRUE
?CCL3: PRINTR "You have no source of fire."
.FUNCT V-CALL
CALL VISIBLE?,PRSO
ZERO? STACK \?CCL3
CALL CANT-SEE,PRSO
RSTACK
?CCL3: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-CATCH
PRINTR "The only thing you're good at catching is a cold."
.FUNCT V-CHASTISE
EQUAL? PRSO,INTDIR \?CCL3
PRINT YOULL-HAVE-TO
PRINTR "go in that direction to see what's there."
?CCL3: 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
SET 'AWAITING-REPLY,1
ADD C-ELAPSED,2
CALL QUEUE,I-REPLY,STACK
PRINTR "Do you also do windows?"
.FUNCT V-CLIMB-DOWN
EQUAL? PRSO,ROOMS \?CCL3
CALL DO-WALK,P?DOWN
RSTACK
?CCL3: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-ON
FSET? PRSO,VEHBIT \?CCL3
CALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL3: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?IN \?CCL7
CALL CANT-VERB-A-PRSO,STR?16
RSTACK
?CCL7: CALL CANT-VERB-A-PRSO,STR?17
RSTACK
.FUNCT V-CLIMB-UP
EQUAL? PRSO,ROOMS \?CCL3
CALL DO-WALK,P?UP
RSTACK
?CCL3: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CLOSE
FSET? PRSO,SURFACEBIT /?CTR2
FSET? PRSO,ACTORBIT /?CTR2
FSET? PRSO,VEHBIT \?CCL3
?CTR2: CALL CANT-VERB-A-PRSO,STR?18
RSTACK
?CCL3: FSET? PRSO,DOORBIT /?CTR7
FSET? PRSO,CONTBIT \?CCL8
?CTR7: FSET? PRSO,OPENBIT \?CCL13
ZERO? TIMER-CONNECTED /?CCL16
CALL ULTIMATELY-IN?,TIMER,PRSO
ZERO? STACK /?CCL16
CALL ULTIMATELY-IN?,DETONATOR,PRSO
ZERO? STACK \?CCL16
CALL DO-FIRST,STR?19
RSTACK
?CCL16: ZERO? TIMER-CONNECTED /?CCL21
CALL ULTIMATELY-IN?,DETONATOR,PRSO
ZERO? STACK /?CCL21
CALL ULTIMATELY-IN?,TIMER,PRSO
ZERO? STACK \?CCL21
CALL DO-FIRST,STR?19
RSTACK
?CCL21: ZERO? EXPLOSIVE-CONNECTED /?CCL26
CALL ULTIMATELY-IN?,DETONATOR,PRSO
ZERO? STACK /?CCL26
CALL ULTIMATELY-IN?,EXPLOSIVE,PRSO
ZERO? STACK \?CCL26
CALL DO-FIRST,STR?20
RSTACK
?CCL26: ZERO? EXPLOSIVE-CONNECTED /?CCL31
CALL ULTIMATELY-IN?,EXPLOSIVE,PRSO
ZERO? STACK /?CCL31
CALL ULTIMATELY-IN?,DETONATOR,PRSO
ZERO? STACK \?CCL31
CALL DO-FIRST,STR?20
RSTACK
?CCL31: FCLEAR PRSO,OPENBIT
PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now closed."
CRLF
CALL NOW-DARK?
RSTACK
?CCL13: PRINT ALREADY-IS
RTRUE
?CCL8: CALL CANT-VERB-A-PRSO,STR?18
RSTACK
.FUNCT V-COMFORT
FSET? PRSO,ACTORBIT /?CTR2
EQUAL? PRSO,BALLOON \?CCL3
?CTR2: PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't in need of comforting!"
?CCL3: PRINT HUH
RTRUE
.FUNCT V-COMPARE
PRINTR "They're incomparable."
.FUNCT V-CONNECT
CALL IMPOSSIBLES
RSTACK
.FUNCT V-COUNT
CALL IMPOSSIBLES
RSTACK
.FUNCT V-CRAWL-UNDER
FSET? PRSO,TAKEBIT /?CCL3
CALL TELL-HIT-HEAD
RSTACK
?CCL3: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CROSS
CALL V-WALK-AROUND
RSTACK
.FUNCT V-CRUMPLE
CALL CANT-VERB-A-PRSO,STR?21
RSTACK
.FUNCT V-CUT
ZERO? PRSI \?CCL3
CALL IMPOSSIBLES
RSTACK
?CCL3: PRINTI "To put it bluntly, neither"
CALL TPRINT-PRSI
PRINTR " nor you are very sharp."
.FUNCT V-DIG
CALL WASTES
RSTACK
.FUNCT V-DISCONNECT
PRINTI "But"
CALL TPRINT-PRSO
PRINTI " isn't connected to"
ZERO? PRSI /?CCL3
CALL TRPRINT,PRSI
RSTACK
?CCL3: PRINTR " anything!"
.FUNCT V-DISEMBARK
EQUAL? P-PRSA-WORD,W?HOLD \?CCL3
GET P-ITBL,P-PREP1
EQUAL? STACK,PR?DOWN \?CCL3
CALL PERFORM,V?PUSH,PRSO
RTRUE
?CCL3: ZERO? PRSO \?CCL7
IN? PROTAGONIST,HERE /?CCL10
LOC PROTAGONIST
CALL PERFORM,PRSA,STACK
RTRUE
?CCL10: PRINT LOOK-AROUND
RTRUE
?CCL7: EQUAL? P-PRSA-WORD,W?TAKE \?CCL12
CALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL12: IN? PROTAGONIST,PRSO /?CCL14
PRINT LOOK-AROUND
RETURN 8
?CCL14: MOVE PROTAGONIST,HERE
PRINTI "You get o"
EQUAL? PRSO,BED \?CCL19
PRINTI "ff"
JUMP ?CND17
?CCL19: PRINTI "ut of"
?CND17: CALL TPRINT-PRSO
LOC FLOYD
EQUAL? STACK,PILOT-SEAT,COPILOT-SEAT \?CND20
MOVE FLOYD,HERE
PRINTI ". Floyd gets up also"
?CND20: PRINT PERIOD-CR
RTRUE
.FUNCT V-DRESS
ZERO? PRSO /?CCL3
CALL CANT-VERB-A-PRSO,STR?22
RSTACK
?CCL3: CALL PERFORM,V?GET-DRESSED,ROOMS
RTRUE
.FUNCT PRE-DRILL
ZERO? PRSI \?CND1
CALL ULTIMATELY-IN?,DRILL
ZERO? STACK /?CCL5
CALL VISIBLE?,DRILL
ZERO? STACK /?CCL5
SET 'PRSI,DRILL
?CND1: EQUAL? PRSI,DRILL /?CCL10
PRINT YOU-CANT
PRINTI "drill with"
CALL ARPRINT,PRSI
RSTACK
?CCL5: PRINTR "With what? Your head isn't QUITE pointy enough."
?CCL10: FIRST? DRILL /?CCL12
PRINTR "There's no bit in the drill!"
?CCL12: CALL UNTOUCHABLE?,PRSO
ZERO? STACK /?CCL14
CALL CANT-REACH,PRSO
RSTACK
?CCL14: ZERO? DRILL-FOOTNOTE \FALSE
SET 'DRILL-FOOTNOTE,TRUE-VALUE
PRINTI "(Footnote 5) "
RFALSE
.FUNCT V-DRILL
FSET? PRSO,TAKEBIT \?CCL3
PRINTI "You'll need a vise to hold"
CALL TPRINT-PRSO
PRINTR " before you can drill it."
?CCL3: PRINTI "The point of the drill doesn't seem to be as hard as"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-DRILL-HOLE
GET P-NAMW,0
EQUAL? STACK,W?HOLE \?CCL3
CALL PERFORM,V?DRILL,PRSI
RTRUE
?CCL3: CALL RECOGNIZE
RSTACK
.FUNCT V-DROP
IN? PRSO,DRILL \?CND1
PRINTI "[removing"
CALL TPRINT-PRSO
PRINTI " from the drill first]"
CRLF
?CND1: EQUAL? HERE,TOP-OF-AIR-SHAFT,AIR-SHAFT \?CCL5
MOVE PRSO,BOTTOM-OF-AIR-SHAFT
PRINTR "It plunges down the shaft."
?CCL5: IN? PROTAGONIST,HOLDING-TANK \?CCL8
MOVE PRSO,HOLDING-TANK
JUMP ?CND6
?CCL8: MOVE PRSO,HERE
?CND6: PRINTI "Dropped"
FSET? HERE,WEIGHTLESSBIT \?CND9
PRINTI ", so to speak"
?CND9: PRINT PERIOD-CR
RTRUE
.FUNCT PRE-EAT
ZERO? STUNNED /?CCL3
CALL YOURE-STUNNED
RSTACK
?CCL3: ZERO? PRSI /?CCL5
IN? PRSO,PRSI /?CCL5
CALL NOT-IN
RSTACK
?CCL5: FSET? SPACESUIT,WORNBIT \FALSE
PRINT YOU-CANT
PRINTR "eat while you're wearing a space suit!"
.FUNCT V-EAT,FOOD=0
GETP PRSO,P?FOOD-DESC >FOOD
ZERO? FOOD /?CCL3
ZERO? HUNGER-LEVEL \?CCL6
PRINT NOT-HUNGRY
RTRUE
?CCL6: REMOVE PRSO
SET 'C-ELAPSED,15
SET 'HUNGER-LEVEL,0
CALL QUEUE,I-HUNGER-WARNINGS,2250
PRINTI "Mmmm...that tasted just like yummy"
PRINT FOOD
EQUAL? PRSO,NECTAR \?CCL9
CALL ANTI-LITTER,NECTAR
RSTACK
?CCL9: EQUAL? PRSO,SOUP \?CCL11
PRINTI ". The soup was "
CALL DESCRIBE-SOUP-TEMPERATURE
RSTACK
?CCL11: PRINT PERIOD-CR
RTRUE
?CCL3: PRINTI "It's doubtful that"
CALL TPRINT-PRSO
PRINTR " would agree with you."
.FUNCT V-EAT-FROM,X
FSET? PRSO,OPENBIT /?CCL3
CALL DO-FIRST,STR?23,PRSO
RSTACK
?CCL3: FIRST? PRSO >X \?CCL5
NEXT? X \?CND6
PRINTI "(How about"
CALL TPRINT,X
PRINTI "?)"
CRLF
?CND6: CALL PERFORM,V?EAT,X
RTRUE
?CCL5: PRINTR "It's empty!"
.FUNCT V-EMPTY,OBJ,NXT
ZERO? PRSI \?CND1
SET 'PRSI,GROUND
?CND1: FSET? PRSO,CONTBIT /?CCL5
PRINT HUH
RTRUE
?CCL5: FSET? PRSO,OPENBIT /?CCL7
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't open."
?CCL7: FIRST? PRSO /?CCL9
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " is already empty!"
?CCL9: FIRST? PRSO /?KLU31
?KLU31: EQUAL? PRSI,STACK \?CCL11
NEXT? PRSI /?CCL11
PRINT THERES-NOTHING
PRINTI "in"
CALL TPRINT-PRSO
PRINTI " but"
CALL TRPRINT,PRSI
RSTACK
?CCL11: FIRST? PRSO >OBJ /?PRG14
?PRG14: NEXT? OBJ >NXT /?KLU33
?KLU33: EQUAL? OBJ,PROTAGONIST /?CND16
PRINTD OBJ
PRINTI ": "
FSET? OBJ,TAKEBIT \?CCL20
MOVE OBJ,PROTAGONIST
EQUAL? PRSI,HANDS \?CCL23
PRINTI "Taken."
CRLF
JUMP ?CND16
?CCL23: EQUAL? PRSI,GROUND \?CCL25
CALL PERFORM,V?DROP,OBJ
JUMP ?CND16
?CCL25: FSET? PRSI,SURFACEBIT \?CCL27
CALL PERFORM,V?PUT-ON,OBJ,PRSI
JUMP ?CND16
?CCL27: CALL PERFORM,V?PUT,OBJ,PRSI
JUMP ?CND16
?CCL20: CALL YUKS
?CND16: ZERO? NXT /TRUE
SET 'OBJ,NXT
JUMP ?PRG14
.FUNCT V-EMPTY-FROM
IN? PRSO,PRSI \?CCL3
FSET? PRSO,TAKEBIT \?CCL6
MOVE PRSO,PROTAGONIST
CALL PERFORM,V?DROP,PRSO
RTRUE
?CCL6: CALL YUKS
RSTACK
?CCL3: CALL NOT-IN
RSTACK
.FUNCT PRE-ENTER
IN? PROTAGONIST,PRSO \?CCL3
PRINT LOOK-AROUND
RTRUE
?CCL3: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL UNTOUCHABLE?,PRSO
ZERO? STACK /FALSE
CALL CANT-REACH,PRSO
RSTACK
.FUNCT V-ENTER,AV
LOC PROTAGONIST >AV
FSET? PRSO,DOORBIT \?CCL3
CALL OTHER-SIDE,PRSO
CALL DO-WALK,STACK
RTRUE
?CCL3: FSET? PRSO,VEHBIT \?CCL5
LOC PRSO
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CCL8
PRINT YOU-CANT
PRINTI "board"
CALL TPRINT-PRSO
PRINTI " when it's "
LOC PRSO
FSET? STACK,SURFACEBIT \?CCL11
PRINTI "on"
JUMP ?CND9
?CCL11: PRINTI "in"
?CND9: LOC PRSO
CALL TRPRINT,STACK
RSTACK
?CCL8: MOVE PROTAGONIST,PRSO
PRINTI "You are now "
FSET? PRSO,INBIT \?CCL14
PRINTC 105
JUMP ?CND12
?CCL14: PRINTC 111
?CND12: PRINTC 110
CALL TPRINT-PRSO
PRINTC 46
GETP PRSO,P?ACTION
CALL STACK,M-ENTER
CRLF
RTRUE
?CCL5: EQUAL? PRSO,AIR \?CCL16
CALL V-LEAP
RSTACK
?CCL16: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?ON \?CCL18
CALL CANT-VERB-A-PRSO,STR?24
RSTACK
?CCL18: FSET? PRSO,TAKEBIT /?CCL20
CALL TELL-HIT-HEAD
RSTACK
?CCL20: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?IN \FALSE
CALL CANT-VERB-A-PRSO,STR?25
RSTACK
.FUNCT V-EXAMINE
SET 'C-ELAPSED,32
FSET? PRSO,ACTORBIT \?CCL3
FIRST? PRSO \?CCL6
CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
?CCL6: CALL NOTHING-INTERESTING
PRINTI "about"
CALL TRPRINT,PRSO
RSTACK
?CCL3: FSET? PRSO,SURFACEBIT \?CCL8
CALL V-LOOK-INSIDE
RSTACK
?CCL8: FSET? PRSO,DOORBIT \?CCL10
PRINT IT-SEEMS-THAT
CALL TPRINT-PRSO
PRINTI " is "
CALL OPEN-CLOSED,PRSO
PRINT PERIOD-CR
RTRUE
?CCL10: IN? PROTAGONIST,PRSO \?CCL12
CALL DESCRIBE-VEHICLE
RSTACK
?CCL12: FSET? PRSO,CONTBIT \?CCL14
FSET? PRSO,VEHBIT /?CCL14
PRINTI "It's "
CALL OPEN-CLOSED,PRSO
FSET? PRSO,OPENBIT /?CTR18
FSET? PRSO,TRANSBIT \?CCL19
?CTR18: PRINTI ". "
CALL V-LOOK-INSIDE
RSTACK
?CCL19: PRINT PERIOD-CR
RTRUE
?CCL14: FSET? PRSO,LIGHTBIT \?CCL23
PRINTI "It looks like"
CALL TPRINT-PRSO
PRINTI " is o"
FSET? PRSO,ACTIVEBIT \?CCL26
PRINTC 110
JUMP ?CND24
?CCL26: PRINTI "ff"
?CND24: PRINT PERIOD-CR
RTRUE
?CCL23: FSET? PRSO,READBIT \?CCL28
CALL PERFORM,V?READ,PRSO
RTRUE
?CCL28: FSET? PRSO,NARTICLEBIT \?CCL30
CALL SENSE-OBJECT,STR?26
RSTACK
?CCL30: RANDOM 100
LESS? 35,STACK \?CTR31
EQUAL? PRSO,PSEUDO-OBJECT \?CCL32
?CTR31: PRINTI "Totally ordinary looking "
PRINTD PRSO
PRINT PERIOD-CR
RTRUE
?CCL32: CALL NOTHING-INTERESTING
PRINTI "about"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-EXERCISE
ZERO? STUNNED /?CCL3
CALL YOURE-STUNNED
RTRUE
?CCL3: IN? PROTAGONIST,EXERCISE-MACHINE \?CCL5
CALL ULTIMATELY-IN?,JAMMER,HERE
ZERO? STACK /?CCL8
EQUAL? JAMMER-SETTING,710 \?CCL8
FSET? JAMMER,ACTIVEBIT \?CCL8
IN? TWENTY-PRONG-FROMITZ-BOARD,JAMMER \?CCL8
PRINTR "The machine seems to be frozen."
?CCL8: PRINTI "You do a few repetitions"
JUMP ?CND1
?CCL5: PRINTI "You do a few push-ups"
?CND1: PRINTR ". Dr. Ventricalli, the Duffy's cardiologist, would be pleased."
.FUNCT NOTHING-INTERESTING
PRINT THERES-NOTHING
RANDOM 100
LESS? 25,STACK /?CCL3
PRINTI "unusual"
JUMP ?CND1
?CCL3: RANDOM 100
LESS? 33,STACK /?CCL5
PRINTI "noteworthy"
JUMP ?CND1
?CCL5: RANDOM 100
LESS? 50,STACK /?CCL7
PRINTI "eye-catching"
JUMP ?CND1
?CCL7: PRINTI "special"
?CND1: PRINTC 32
RTRUE
.FUNCT V-EXIT
ZERO? PRSO /?CCL3
FSET? PRSO,VEHBIT \?CCL3
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?CCL3: CALL DO-WALK,P?OUT
RSTACK
.FUNCT V-FEED
PRINTI "You have no food for"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-FILL
ZERO? PRSI \?CCL3
PRINT THERES-NOTHING
PRINTR "to fill it with."
?CCL3: CALL IMPOSSIBLES
RSTACK
.FUNCT V-FIND,WHERE=0,L
LOC PRSO >L
SET 'C-ELAPSED,18
ZERO? L \?CCL3
CALL PRONOUN
PRINTR " could be anywhere!"
?CCL3: IN? PRSO,PROTAGONIST \?CCL5
PRINTR "You have it!"
?CCL5: IN? PRSO,HERE /?CTR6
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK \?CTR6
EQUAL? PRSO,PSEUDO-OBJECT \?CCL7
?CTR6: PRINTR "Right in front of you."
?CCL7: FSET? L,ACTORBIT \?CCL12
CALL VISIBLE?,L
ZERO? STACK /?CCL12
PRINTI "Looks as if"
CALL TPRINT,L
PRINTR " has it."
?CCL12: FSET? L,CONTBIT \?CCL16
CALL VISIBLE?,PRSO
ZERO? STACK /?CCL16
EQUAL? L,GLOBAL-OBJECTS /?CCL16
FSET? L,SURFACEBIT \?CCL22
PRINTC 79
JUMP ?CND20
?CCL22: FSET? L,VEHBIT \?CCL24
FSET? L,INBIT /?CCL24
PRINTC 79
JUMP ?CND20
?CCL24: PRINTC 73
?CND20: PRINTC 110
CALL TRPRINT,L
RSTACK
?CCL16: ZERO? WHERE /?CTR27
IN? PRSO,GLOBAL-OBJECTS \?CCL28
?CTR27: PRINT YOULL-HAVE-TO
PRINTR "do that yourself."
?CCL28: PRINTR "Beats me."
.FUNCT V-FIX
PRINTR "[Such general commands won't work. To repair something, you must perform the specific steps required.]"
.FUNCT V-FLATTEN
PRINT HUH
RTRUE
.FUNCT V-FOLLOW
CALL VISIBLE?,PRSO
ZERO? STACK /?CCL3
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " is right here!"
?CCL3: FSET? PRSO,ACTORBIT /?CCL5
CALL IMPOSSIBLES
RSTACK
?CCL5: PRINTI "You have no idea where"
CALL TPRINT-PRSO
PRINTR " is."
.FUNCT V-FOOTNOTE
SET 'C-ELAPSED,0
ZERO? PRSO /?CTR2
EQUAL? PRSO,INTNUM /?CCL3
?CTR2: PRINTR "Specify a number, as in ""FOOTNOTE 6."""
?CCL3: EQUAL? P-NUMBER,1 \?CCL7
PRINTI "These must be those special zero-gee dice which project their own gravitational field onto the nearest surface. Zero-gee dice are, of course, notoriously easy to load"
JUMP ?CND1
?CCL7: EQUAL? P-NUMBER,2 \?CCL9
PRINT UNFAMILIAR
PRINTI "Blather was your officious, tyrannical superior aboard the S.P.S. Feinstein. He was demoted because of his craven behavior during the destruction of the Feinstein"
JUMP ?CND1
?CCL9: EQUAL? P-NUMBER,3 \?CCL11
PRINTI "The story of your acquaintance with Floyd and the episode on Resida are recounted in PLANETFALL"
JUMP ?CND1
?CCL11: EQUAL? P-NUMBER,4 \?CCL13
PRINTI "This is, of course, impossible. To do this, the creature would have to be an order of magnitude larger. There are two possible explanations: 1. The creature actually extends part of its volume into a parallel dimension"
PRINT CALLOUS-DISREGARD
JUMP ?CND1
?CCL13: EQUAL? P-NUMBER,5,9,13 \?CCL15
PRINTI "Kids: "
EQUAL? P-NUMBER,5 \?CCL18
PRINTI "drills"
JUMP ?CND16
?CCL18: EQUAL? P-NUMBER,9 \?CCL20
PRINTI "zapguns"
JUMP ?CND16
?CCL20: PRINTI "FREZONE (tm) explosives"
?CND16: PRINTI " are very dangerous. Don't try this at home without adult supervision"
JUMP ?CND1
?CCL15: EQUAL? P-NUMBER,6 \?CCL22
PRINTI "That was just an example"
JUMP ?CND1
?CCL22: EQUAL? P-NUMBER,7 \?CCL24
PRINT UNFAMILIAR
PRINTI "your frenzied (former) boss, Ensign Blather, would toss you into the Feinstein's brig for the tiniest violation of the Stellar Patrol's near-infinity of trivial regulations"
JUMP ?CND1
?CCL24: EQUAL? P-NUMBER,8 \?CCL26
PRINTI "The author wishes to refute any claims that the use of footnotes is a ripoff from the interactive fiction version of THE HITCHHIKER'S GUIDE TO THE GALAXY. This is not true. Well, maybe it's a little bit true, in which case the author wishes to point out his right to rip off his own ideas. So there"
JUMP ?CND1
?CCL26: EQUAL? P-NUMBER,10 \?CCL28
SET 'AWAITING-REPLY,1
CALL QUEUE,I-REPLY,1
PRINTR "Isn't it fun reading through all the footnotes?"
?CCL28: EQUAL? P-NUMBER,11,12 \?CCL30
PRINTI "How to keep a STATIONFALL player busy all day (Footnote 1"
EQUAL? P-NUMBER,11 \?CCL33
PRINTI "2)"
JUMP ?CND1
?CCL33: PRINTI "1)"
JUMP ?CND1
?CCL30: EQUAL? P-NUMBER,14 \?CCL35
PRINTI "Actually, it is only a myth that ostriches stick their heads in holes when frightened. The fact that this ostrich does can be attributed to: 1. an addling of the animal's brain caused by extended exposure to weightlessness"
PRINT CALLOUS-DISREGARD
?CND1: ZERO? READ-A-FOOTNOTE \?CND40
SET 'READ-A-FOOTNOTE,TRUE-VALUE
PRINTI ". (Footnote 8)"
?CND40: PRINT PERIOD-CR
RTRUE
?CCL35: EQUAL? P-NUMBER,15 \?CCL37
PRINTR "IF you also played Planetfall, and IF you scrambled any magnetic cards in Planetfall by being careless with the magnet: GOTCHA AGAIN! (Footnote 16)"
?CCL37: EQUAL? P-NUMBER,16 \?CCL39
PRINTR "Reminds me of that old saying, ""Fool me once, shame on you. Fool me twice, shame on me!"""
?CCL39: PRINTI "There is no Footnote "
PRINTN P-NUMBER
PRINT PERIOD-CR
RTRUE
.FUNCT PRE-GIVE,IDROP-VALUE
EQUAL? PRSA,V?GIVE \?CCL3
EQUAL? PRSO,HANDS \?CCL3
CALL PERFORM,V?SHAKE-WITH,PRSI
RTRUE
?CCL3: CALL IDROP >IDROP-VALUE
ZERO? IDROP-VALUE /FALSE
RETURN IDROP-VALUE
.FUNCT V-GET-DRESSED
EQUAL? PRSO,ROOMS \?CCL3
FSET? PATROL-UNIFORM,WORNBIT \?CCL6
PRINTR "You are!"
?CCL6: CALL VISIBLE?,PATROL-UNIFORM
ZERO? STACK /?CCL8
CALL PERFORM,V?WEAR,PATROL-UNIFORM
RTRUE
?CCL8: PRINTR "No clothes in sight!"
?CCL3: CALL RECOGNIZE
RSTACK
.FUNCT V-GET-UNDRESSED
EQUAL? PRSO,ROOMS \?CCL3
CALL PERFORM,V?TAKE-OFF,PATROL-UNIFORM
RTRUE
?CCL3: CALL RECOGNIZE
RSTACK
.FUNCT V-GIVE
FSET? PRSI,ACTORBIT \?CCL3
PRINTI "Briskly,"
CALL TPRINT-PRSI
PRINTR " declines your offer."
?CCL3: PRINT YOU-CANT
PRINTI "give"
CALL APRINT,PRSO
PRINTI " to"
CALL APRINT,PRSI
PRINTR "!"
.FUNCT V-GIVE-UP
EQUAL? PRSO,ROOMS \?CCL3
CALL V-QUIT
RSTACK
?CCL3: CALL RECOGNIZE
RSTACK
.FUNCT V-GREET
FSET? PRSO,ACTORBIT \?CCL3
SET 'WINNER,PRSO
CALL PERFORM,V?HELLO
SET 'WINNER,PROTAGONIST
RTRUE
?CCL3: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-HELLO
ZERO? PRSO /?CCL3
SET 'P-WON,FALSE-VALUE
PRINTR "[The proper way to talk to characters in the story is PERSON, HELLO.]"
?CCL3: CALL PERFORM,V?TELL,ME
RTRUE
.FUNCT V-HELP
PRINTR "[Help!?! You need help?!? What about me, your poor computer? My chips are about to go, my mate just ran off with a mainframe from Milwaukee, and the kid wants to be a talking greeting card when he grows up! Furtherm... Hey! I'm not done! Mumk mpgrlph...]
If you're really stuck, you can get an InvisiClues (TM) hint booklet and map from your dealer, or by using the order form from your package."
.FUNCT V-HIDE
PRINT YOU-CANT
PRINTI "hide "
ZERO? PRSO /?CND1
PRINTC 116
?CND1: PRINTR "here."
.FUNCT V-HUG
PRINTR "Hugged."
.FUNCT V-IN,VEHICLE
CALL DO-WALK,P?IN
RSTACK
.FUNCT V-KICK
CALL HACK-HACK,STR?27
RSTACK
.FUNCT V-KILL
EQUAL? PRSI,ZAPGUN \?CCL3
CALL PERFORM,V?SHOOT,PRSO,PRSI
RTRUE
?CCL3: ZERO? PRSI \?CCL5
CALL ULTIMATELY-IN?,ZAPGUN
ZERO? STACK /?CCL5
EQUAL? P-PRSA-WORD,W?KILL \?CCL5
PRINTI "(with"
CALL TPRINT,ZAPGUN
PRINTC 41
CRLF
CALL PERFORM,V?SHOOT,PRSO,ZAPGUN
RTRUE
?CCL5: FSET? PRSO,ACTORBIT \?CCL10
PRINTI "You succeeded in frightening"
CALL TRPRINT,PRSO
RSTACK
?CCL10: PRINTI "Why attack"
CALL APRINT,PRSO
PRINTR "?"
.FUNCT V-KISS
PRINTR "I'd sooner kiss a pile of Antarian swamp mold."
.FUNCT V-KNOCK
FSET? PRSO,DOORBIT \?CCL3
PRINTR "Silence answers back."
?CCL3: CALL HACK-HACK,STR?28
RSTACK
.FUNCT V-LAUNCH
PRINTR "Your brain is out to launch."
.FUNCT V-LEAP
ZERO? STUNNED /?CCL3
CALL YOURE-STUNNED,STR?29
RSTACK
?CCL3: ZERO? PRSO /?CCL5
EQUAL? PRSO,ROOMS /?CCL5
PRINTR "You have spent too much time among the leaping loon-toads of Leonia."
?CCL5: EQUAL? HERE,CHAPEL \?CCL9
FSET? STAR,TRYTAKEBIT \?CCL9
PRINTR "Your best jump still leaves you half a meter short of the star."
?CCL9: EQUAL? HERE,AIR-SHAFT,TOP-OF-AIR-SHAFT \?CCL13
EQUAL? AIR-SHAFT-LOC,7 \?CCL16
CALL GOTO,BOTTOM-OF-AIR-SHAFT
RSTACK
?CCL16: CALL JIGS-UP,STR?30
RSTACK
?CCL13: EQUAL? HERE,BOTTOM-OF-AIR-SHAFT \?CCL18
CALL PERFORM,V?OPEN,GRATING
RTRUE
?CCL18: EQUAL? HERE,VACUUM-STORAGE \?CCL20
PRINTI "You sail away from the village..."
CALL LOST-IN-SPACE
RSTACK
?CCL20: CALL WEE
RSTACK
.FUNCT V-LEAP-OFF
FSET? PRSO,VEHBIT \?CCL3
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?CCL3: CALL PERFORM,V?LEAP,PRSO
RTRUE
.FUNCT V-LEAVE
ZERO? PRSO \?CND1
SET 'PRSO,ROOMS
?CND1: EQUAL? PRSO,ROOMS \?CCL5
CALL DO-WALK,P?OUT
RSTACK
?CCL5: IN? PROTAGONIST,PRSO \?CCL7
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?CCL7: CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT V-LIE-DOWN
EQUAL? PRSO,ROOMS \?CCL3
CALL GLOBAL-IN?,BED,HERE
ZERO? STACK /?CCL6
CALL PERFORM,V?ENTER,BED
RTRUE
?CCL6: GRTR? SLEEPY-LEVEL,0 \?CCL8
CALL V-SLEEP
RSTACK
?CCL8: CALL WASTES
RSTACK
?CCL3: FSET? PRSO,VEHBIT \?CCL10
CALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL10: CALL IMPOSSIBLES
RSTACK
.FUNCT V-LISTEN
SET 'C-ELAPSED,18
ZERO? PRSO /?CCL3
CALL SENSE-OBJECT,STR?31
RSTACK
?CCL3: PRINTR "You hear nothing of interest."
.FUNCT V-LOCK
CALL YUKS
RSTACK
.FUNCT PRE-LOOK
EQUAL? PRSO,STAR \?CCL3
IN? DIODE-M,STAR /FALSE
?CCL3: ZERO? LIT \FALSE
PRINT TOO-DARK
CRLF
RTRUE
.FUNCT V-LOOK
SET 'C-ELAPSED,9
CALL DESCRIBE-ROOM,TRUE-VALUE
ZERO? STACK /TRUE
CALL DESCRIBE-OBJECTS
RTRUE
.FUNCT V-LOOK-BEHIND
FSET? PRSO,DOORBIT \?CCL3
CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
?CCL3: PRINTI "There is nothing behind"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-LOOK-DOWN
EQUAL? PRSO,ROOMS \?CCL3
CALL PERFORM,V?EXAMINE,GROUND
RTRUE
?CCL3: CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOOK-INSIDE
ZERO? STUNNED /?CCL3
CALL YOURE-STUNNED
RSTACK
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
PRINT IT-SEEMS-THAT
CALL TPRINT-PRSO
PRINTI " has"
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?CCL5: IN? PROTAGONIST,PRSO \?CCL9
CALL DESCRIBE-VEHICLE
RSTACK
?CCL9: FSET? PRSO,SURFACEBIT \?CCL11
PRINT YOU-SEE
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINTI " on"
CALL TRPRINT,PRSO
RTRUE
?CCL11: FSET? PRSO,DOORBIT \?CCL15
PRINTI "All you can tell is that"
CALL TPRINT-PRSO
PRINTI " is "
CALL OPEN-CLOSED,PRSO
PRINT PERIOD-CR
RTRUE
?CCL15: FSET? PRSO,CONTBIT \?CCL17
CALL SEE-INSIDE?,PRSO
ZERO? STACK /?CCL20
PRINT YOU-SEE
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINTI " in"
CALL TRPRINT,PRSO
RTRUE
?CCL20: FSET? PRSO,OPENBIT /?CCL24
FIRST? PRSO \?CCL24
CALL PRE-TOUCH
ZERO? STACK \TRUE
CALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL24: CALL DO-FIRST,STR?23,PRSO
RSTACK
?CCL17: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?IN \?CCL30
CALL CANT-VERB-A-PRSO,STR?32
RSTACK
?CCL30: CALL CANT-VERB-A-PRSO,STR?33
RSTACK
.FUNCT V-LOOK-OVER
CALL V-EXAMINE
RSTACK
.FUNCT V-LOOK-UNDER
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL3
FSET? PRSO,WORNBIT \?CCL6
PRINTR "You're wearing it!"
?CCL6: PRINT HOLDING-IT
RTRUE
?CCL3: CALL NOTHING-INTERESTING
PRINTI "under"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-LOOK-UP
EQUAL? PRSO,ROOMS \?CCL3
EQUAL? HERE,AIR-SHAFT,BOTTOM-OF-AIR-SHAFT,BOTTOM-OF-ELEVATOR-SHAFT \?CCL6
PRINT ONLY-BLACKNESS
RTRUE
?CCL6: CALL PERFORM,V?EXAMINE,CEILING
RTRUE
?CCL3: CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOWER
CALL V-RAISE
RSTACK
.FUNCT V-MAYBE
CALL YOU-SOUND,STR?34
RSTACK
.FUNCT V-MEASURE
EQUAL? PRSO,TONGUE,HANDS,ME \?CCL3
PRINTR "Usual size."
?CCL3: PRINTI "The same size as any other "
PRINTD PRSO
PRINT PERIOD-CR
RTRUE
.FUNCT V-MOVE
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL3
CALL WASTES
RSTACK
?CCL3: CALL LOC-CLOSED
ZERO? STACK \TRUE
FSET? PRSO,TAKEBIT \?CCL7
PRINTI "Moving"
CALL TPRINT-PRSO
PRINTR " reveals nothing."
?CCL7: EQUAL? P-PRSA-WORD,W?PULL \?CCL9
CALL HACK-HACK,STR?35
RSTACK
?CCL9: CALL CANT-VERB-A-PRSO,STR?36
RSTACK
.FUNCT PRE-MUNG
ZERO? PRSI /?CCL3
EQUAL? PRSI,ZAPGUN \?CCL3
CALL PERFORM,V?SHOOT,PRSO,PRSI
RTRUE
?CCL3: CALL UNTOUCHABLE?,PRSO
ZERO? STACK /FALSE
CALL CANT-REACH,PRSO
RSTACK
.FUNCT V-MUNG
EQUAL? PRSO,ROOMS \?CCL3
PRINTR "Argh! Pimples!"
?CCL3: CALL HACK-HACK,STR?37
RSTACK
.FUNCT V-NO
EQUAL? AWAITING-REPLY,1 \?CCL3
CALL V-YES
RSTACK
?CCL3: EQUAL? AWAITING-REPLY,2,4 \?CCL5
PRINTR "Floyd pouts."
?CCL5: EQUAL? AWAITING-REPLY,3 \?CCL7
PRINTR """Figures."""
?CCL7: CALL YOU-SOUND,STR?38
RSTACK
.FUNCT NO-WORD,WRD
EQUAL? WRD,W?NO,W?NOPE /TRUE
EQUAL? WRD,W?NAH,W?UH-UH /TRUE
RFALSE
.FUNCT V-OFF
FSET? PRSO,LIGHTBIT \?CCL3
FSET? PRSO,ACTIVEBIT \?CCL6
FCLEAR PRSO,ACTIVEBIT
FCLEAR PRSO,ONBIT
PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now off."
CRLF
CALL NOW-DARK?
RSTACK
?CCL6: PRINTR "It isn't on!"
?CCL3: CALL CANT-TURN,STR?39
RSTACK
.FUNCT V-ON
FSET? PRSO,LIGHTBIT \?CCL3
FSET? PRSO,ACTIVEBIT \?CCL6
PRINT ALREADY-IS
RTRUE
?CCL6: FSET PRSO,ACTIVEBIT
EQUAL? PRSO,HEADLAMP \?CND7
FSET PRSO,ONBIT
?CND7: PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now on."
CRLF
CALL NOW-LIT?
RSTACK
?CCL3: CALL CANT-TURN,STR?40
RSTACK
.FUNCT CANT-TURN,STRING
PRINT YOU-CANT
PRINTI "turn that o"
PRINT STRING
PRINT PERIOD-CR
RTRUE
.FUNCT V-OPEN
FSET? PRSO,SURFACEBIT /?CTR2
FSET? PRSO,ACTORBIT /?CTR2
FSET? PRSO,VEHBIT \?CCL3
?CTR2: CALL IMPOSSIBLES
RSTACK
?CCL3: FSET? PRSO,OPENBIT \?CCL8
PRINT ALREADY-IS
RTRUE
?CCL8: FSET? PRSO,DOORBIT /?CCL10
FSET? PRSO,CONTBIT /?CCL10
CALL CANT-VERB-A-PRSO,STR?23
RSTACK
?CCL10: FSET? PRSO,LOCKEDBIT \?CCL14
PRINTR "It's locked."
?CCL14: FSET? PRSO,DOORBIT \?CCL16
FSET PRSO,OPENBIT
PRINTI "The "
PRINTD PRSO
PRINTR " swings open."
?CCL16: FSET PRSO,OPENBIT
FSET PRSO,TOUCHBIT
FIRST? PRSO \?CTR18
FSET? PRSO,TRANSBIT \?CCL19
?CTR18: PRINTR "Opened."
?CCL19: PRINTI "Opening"
CALL TPRINT-PRSO
PRINTI " reveals"
CALL DESCRIBE-NOTHING
ZERO? STACK \?CND22
PRINT PERIOD-CR
?CND22: CALL NOW-LIT?
RTRUE
.FUNCT V-PICK
CALL CANT-VERB-A-PRSO,STR?41
RSTACK
.FUNCT V-PICK-UP
CALL PERFORM,V?TAKE,PRSO,PRSI
RTRUE
.FUNCT V-PLAY-WITH
FSET? PRSO,ACTORBIT \?CCL3
CALL WEE
RSTACK
?CCL3: CALL IMPOSSIBLES
RSTACK
.FUNCT V-POINT
PRINTR "That would be pointless."
.FUNCT V-POUR
PRINTR "Pouring or spilling non-liquids is specifically forbidden by section 17.9.2 of the Galactic Adventure Game Compendium of Rules."
.FUNCT V-PRAY
PRINTR "If you pray enough, your prayers may be answered."
.FUNCT V-PUSH
EQUAL? P-PRSA-WORD,W?PRESS,W?IRON \?CCL3
EQUAL? HERE,LAUNDRY \?CCL3
ZERO? PRSI /?CTR2
EQUAL? PRSI,PRESSER \?CCL3
?CTR2: IN? PRSO,PRESSER \?CCL11
CALL PERFORM,V?CLOSE,PRESSER
RTRUE
?CCL11: PRINT YOULL-HAVE-TO
PRINTI "put"
CALL TPRINT-PRSO
PRINTR " in the presser first."
?CCL3: CALL HACK-HACK,STR?42
RSTACK
.FUNCT V-PUSH-DIR
EQUAL? PRSI,INTDIR \?CCL3
CALL V-PUSH
RSTACK
?CCL3: CALL RECOGNIZE
RSTACK
.FUNCT PRE-PUT,IDROP-VALUE
EQUAL? PRSI,GROUND \?CCL3
CALL PERFORM,V?DROP,PRSO
RTRUE
?CCL3: EQUAL? PRSO,HANDS \?CCL5
EQUAL? PRSA,V?PUT \?CCL8
PUSH V?REACH-IN
JUMP ?CND6
?CCL8: PUSH V?TOUCH
?CND6: CALL PERFORM,STACK,PRSI
RTRUE
?CCL5: EQUAL? PRSI,TONGUE,HANDS /?CCL10
CALL PRE-LOOK
ZERO? STACK \TRUE
?CCL10: IN? PRSO,PRSI \?CCL14
PRINTI "But"
CALL TPRINT-PRSO
PRINTI " is already in"
CALL TRPRINT,PRSI
RSTACK
?CCL14: CALL ULTIMATELY-IN?,PRSI,PRSO
ZERO? STACK /?CCL16
PRINT YOU-CANT
PRINTI "put"
CALL TPRINT-PRSO
GET P-ITBL,P-PREP2
EQUAL? STACK,PR?ON \?CCL19
PRINTI " on"
JUMP ?CND17
?CCL19: PRINTI " in"
?CND17: CALL TPRINT-PRSI
PRINTI " when"
CALL TPRINT-PRSI
PRINTI " is already "
FSET? PRSO,SURFACEBIT \?CCL22
PRINTI "on"
JUMP ?CND20
?CCL22: PRINTI "in"
?CND20: CALL TPRINT-PRSO
PRINTR "!"
?CCL16: CALL UNTOUCHABLE?,PRSI
ZERO? STACK /?CCL24
CALL CANT-REACH,PRSI
RSTACK
?CCL24: CALL IDROP >IDROP-VALUE
ZERO? IDROP-VALUE /FALSE
RETURN IDROP-VALUE
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
FSET? PRSI,OPENBIT /?CCL3
FSET? PRSI,CONTBIT /?CCL3
FSET? PRSI,SURFACEBIT /?CCL3
FSET? PRSI,VEHBIT /?CCL3
PRINT YOU-CANT
PRINTI "put"
CALL TPRINT-PRSO
PRINTI " in"
CALL APRINT,PRSI
PRINTR "!"
?CCL3: EQUAL? PRSI,PRSO /?CTR8
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL9
FSET? PRSO,TAKEBIT /?CCL9
?CTR8: PRINTR "How can you do that?"
?CCL9: FSET? PRSI,DOORBIT \?CCL15
PRINT YOU-CANT
PRINTR "do that from here."
?CCL15: FSET? PRSI,OPENBIT /?CCL17
FSET? PRSI,SURFACEBIT /?CCL17
CALL THIS-IS-IT,PRSI
CALL DO-FIRST,STR?23,PRSI
RSTACK
?CCL17: FSET? PRSI,ACTORBIT \?CCL21
PRINT HUH
RTRUE
?CCL21: CALL WEIGHT,PRSI >?TMP3
CALL WEIGHT,PRSO
ADD ?TMP3,STACK >?TMP2
GETP PRSI,P?SIZE
SUB ?TMP2,STACK >?TMP1
GETP PRSI,P?CAPACITY
GRTR? ?TMP1,STACK \?CCL23
CALL ULTIMATELY-IN?,PRSO,PRSI
ZERO? STACK \?CCL23
PRINTI "There's no room "
FSET? PRSI,SURFACEBIT \?CCL28
PRINTI "on"
JUMP ?CND26
?CCL28: PRINTI "in"
?CND26: CALL TPRINT-PRSI
PRINTI " for"
CALL TRPRINT,PRSO
RSTACK
?CCL23: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK \?CCL30
CALL ITAKE
EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE
?CCL30: MOVE PRSO,PRSI
CALL SCORE-OBJ
PRINTR "Done."
.FUNCT V-PUT-BEHIND
CALL WASTES
RSTACK
.FUNCT V-PUT-ON
EQUAL? PRSI,ME \?CCL3
CALL PERFORM,V?WEAR,PRSO
RTRUE
?CCL3: FSET? PRSI,SURFACEBIT /?CTR4
FSET? PRSI,VEHBIT \?CCL5
?CTR4: CALL V-PUT
RSTACK
?CCL5: EQUAL? P-PRSA-WORD,W?WRAP \?CCL9
PRINTR "Useless. You're getting too wrapped up in this story."
?CCL9: PRINTI "There's no good surface on"
CALL TRPRINT,PRSI
RSTACK
.FUNCT V-PUT-UNDER
CALL WASTES
RSTACK
.FUNCT V-RAISE
CALL HACK-HACK,STR?43
RSTACK
.FUNCT V-REACH-IN,OBJ
FIRST? PRSO >OBJ /?KLU14
?KLU14: FSET? PRSO,ACTORBIT /?CTR2
FSET? PRSO,SURFACEBIT /?CTR2
FSET? PRSO,CONTBIT /?CCL3
?CTR2: CALL YUKS
RSTACK
?CCL3: FSET? PRSO,OPENBIT /?CCL8
CALL DO-FIRST,STR?23,PRSO
RSTACK
?CCL8: ZERO? OBJ /?CTR9
FSET? OBJ,INVISIBLE /?CTR9
FSET? OBJ,TAKEBIT /?CCL10
?CTR9: PRINT THERES-NOTHING
PRINTI "in"
CALL TRPRINT,PRSO
RSTACK
?CCL10: PRINTI "You feel something inside"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-READ
FSET? PRSO,READBIT \?CCL3
GETP PRSO,P?TEXT
PRINT STACK
CRLF
RTRUE
?CCL3: CALL CANT-VERB-A-PRSO,STR?44
RSTACK
.FUNCT V-REMOVE
FSET? PRSO,WEARBIT \?CCL3
CALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?CCL3: CALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-ROLL
CALL CANT-VERB-A-PRSO,STR?45
RSTACK
.FUNCT V-RUN-OVER
PRINT HUH
RTRUE
.FUNCT V-SAVE-SOMETHING
PRINTI "Sorry, but"
CALL TPRINT-PRSO
PRINTR " is beyond help."
.FUNCT V-SAY,V
ZERO? AWAITING-REPLY /?CCL3
GET P-LEXV,P-CONT
CALL YES-WORD,STACK
ZERO? STACK /?CCL3
CALL V-YES
JUMP ?CND1
?CCL3: ZERO? AWAITING-REPLY /?CCL7
GET P-LEXV,P-CONT
CALL NO-WORD,STACK
ZERO? STACK /?CCL7
CALL V-NO
JUMP ?CND1
?CCL7: CALL FIND-IN,HERE,ACTORBIT >V
ZERO? V /?CCL11
PRINTI "You must address"
CALL TPRINT,V
PRINTI " directly."
CRLF
JUMP ?CND1
?CCL11: CALL PERFORM,V?TELL,ME
?CND1: CALL STOP
RSTACK
.FUNCT V-SCARE
PRINTI "Despite your most frightening tactics,"
CALL TPRINT-PRSO
PRINTR " seems unscared."
.FUNCT V-SCOLD
PRINT HUH
RTRUE
.FUNCT V-SEARCH
FSET? PRSO,ACTORBIT \?CCL3
CALL V-SHAKE
RSTACK
?CCL3: IN? PROTAGONIST,PRSO \?CCL5
CALL DESCRIBE-VEHICLE
RSTACK
?CCL5: FSET? PRSO,CONTBIT \?CCL7
FSET? PRSO,OPENBIT /?CCL7
CALL DO-FIRST,STR?23,PRSO
RSTACK
?CCL7: FSET? PRSO,CONTBIT \?CCL11
SET 'C-ELAPSED,32
PRINTI "You find"
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?CCL11: CALL CANT-VERB-A-PRSO,STR?46
RSTACK
.FUNCT V-SET
EQUAL? PRSO,ROOMS \?CCL3
CALL WEE
RSTACK
?CCL3: ZERO? PRSI \?CCL5
FSET? PRSO,TAKEBIT \?CCL8
CALL HACK-HACK,STR?47
RSTACK
?CCL8: PRINT YNH
CALL TRPRINT,PRSO
RSTACK
?CCL5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-SGIVE
CALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-SHAKE
FSET? PRSO,ACTORBIT \?CCL3
PRINTR "That wouldn't be polite."
?CCL3: CALL HACK-HACK,STR?48
RSTACK
.FUNCT V-SHAKE-WITH
EQUAL? PRSO,HANDS /?CCL3
CALL RECOGNIZE
RSTACK
?CCL3: FSET? PRSI,ACTORBIT /?CCL5
PRINTI "I don't think"
CALL TPRINT-PRSI
PRINTR " even has hands."
?CCL5: PRINTR """How do you do."""
.FUNCT PRE-SHOOT
ZERO? PRSI \?CND1
CALL ULTIMATELY-IN?,ZAPGUN
ZERO? STACK /?CND1
EQUAL? PRSO,ZAPGUN \?CCL7
ZERO? ZAPGUN-SHOTS \?CCL10
PRINTR """Click."""
?CCL10: DEC 'ZAPGUN-SHOTS
PRINTR "Nasty flames spew from the zapgun."
?CCL7: SET 'PRSI,ZAPGUN
PRINTI "(with the "
PRINTD ZAPGUN
PRINTC 41
CRLF
?CND1: ZERO? PRSI \?CCL13
PRINTR "You aren't holding a gun!"
?CCL13: EQUAL? PRSI,ZAPGUN /?CCL15
PRINTI "Shoot"
CALL APRINT,PRSI
PRINTR "!?!"
?CCL15: EQUAL? PRSO,ZAPGUN \?CCL17
PRINTR "Sorry; the zapgun doesn't have a rubber barrel."
?CCL17: ZERO? ZAPGUN-SHOTS \?CCL19
PRINTR """Click."""
?CCL19: DEC 'ZAPGUN-SHOTS
RFALSE
.FUNCT V-SHOOT,L
ZERO? ZAPGUN-FOOTNOTE \?CND1
SET 'ZAPGUN-FOOTNOTE,TRUE-VALUE
PRINTI "(Footnote 9) "
?CND1: PRINTI "A blaze of intense rays "
FSET? PRSO,TAKEBIT /?CTR4
EQUAL? PRSO,ROULETTE-WHEEL,LOCKER,ID-CHANGER /?CTR4
EQUAL? PRSO,DRYER,HEATING-CHAMBER,LOG-READER /?CTR4
EQUAL? PRSO,SKELETON,CAGE,PRESSER /?CTR4
EQUAL? PRSO,SOUP,GRAY-GOO,ORANGE-GOO \?CCL5
?CTR4: PRINTI "envelop"
CALL TPRINT-PRSO
PRINTI ". When the rays dissipate,"
CALL TPRINT-PRSO
PRINTC 32
FSET? PRSO,PLURALBIT \?CCL13
PRINTI "are"
JUMP ?CND11
?CCL13: PRINTI "is"
?CND11: PRINTI " gone."
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL16
PRINTI " Unfortunately, so is most of your "
FSET? PRSO,WORNBIT \?CCL19
PRINTI "body, since you were wear"
JUMP ?CND17
?CCL19: PRINTI "arm, since you were hold"
?CND17: PRINTI "ing"
CALL TPRINT-PRSO
CALL JIGS-UP,STR?9
RSTACK
?CCL16: LOC PRSO >L
EQUAL? L,FLOYD \?CCL22
PRINTI " Floyd, who was holding"
CALL TPRINT-PRSO
PRINTI ", gives a shriek of fear, and all the oil drains from his face."
JUMP ?CND20
?CCL22: EQUAL? L,HERE,PEDESTAL,DRILLED-HOLE /?CND20
PRINTI " Naturally,"
CALL TPRINT,L
PRINTI " is also history, since"
CALL TPRINT-PRSO
PRINTI " was sitting "
FSET? L,SURFACEBIT \?CCL26
PRINTC 111
JUMP ?CND24
?CCL26: PRINTC 105
?CND24: PRINTI "n it."
CALL REMOVE-CAREFULLY,L
?CND20: CALL REMOVE-CAREFULLY,PRSO
CRLF
RTRUE
?CCL5: PRINTI "washes over"
CALL TPRINT-PRSO
PRINTR ". It glows for a bit, but then cools."
.FUNCT V-SSHOOT
CALL PERFORM,V?SHOOT,PRSI,PRSO
CALL THIS-IS-IT,PRSO
RTRUE
.FUNCT V-SHOW
PRINTI "It doesn't look like"
CALL TPRINT-PRSI
PRINTR " is interested."
.FUNCT V-SIT,VEHICLE
EQUAL? PRSO,ROOMS /?CCL3
CALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL3: EQUAL? HERE,THEATRE \?CCL5
PRINTR "But there's nothing to watch at the moment!"
?CCL5: CALL FIND-IN,HERE,VEHBIT >VEHICLE
ZERO? VEHICLE /?CCL7
CALL PERFORM,V?ENTER,VEHICLE
RTRUE
?CCL7: CALL PERFORM,V?CLIMB-ON,GROUND
RTRUE
.FUNCT V-SKIP
CALL WEE
RSTACK
.FUNCT V-SLEEP
ZERO? SLEEPY-LEVEL \?CCL3
PRINTR "You're not tired."
?CCL3: CALL QUEUED?,I-FALL-ASLEEP
ZERO? STACK /?CCL5
PRINTR "You'll probably be asleep before you know it."
?CCL5: PRINTR "Members of civilized societies usually sleep in beds."
.FUNCT PRE-SMELL
FSET? SPACESUIT,WORNBIT \FALSE
PRINTI "You smell stale air and rusty metal and unbathed "
PRINT LFC
PRINTR " -- all the usual odors of a space suit."
.FUNCT V-SMELL
ZERO? PRSO /?CTR2
EQUAL? PRSO,AIR \?CCL3
?CTR2: ZERO? BALLOON-ODOR /?CCL8
PRINTI "The awful odor of the "
PRINTD BALLOON
PRINTR "'s digestive gas is thankfully fading."
?CCL8: EQUAL? HERE,GREASY-STRAW \?CCL10
FSET? NECTAR,TOUCHBIT /?CCL10
PRINTR "There's something yum-smelling around here!"
?CCL10: EQUAL? HERE,OPIUM-DEN \?CCL14
PRINTR "There's a lingering smell of various drugs."
?CCL14: CALL VISIBLE?,BALLOON
ZERO? STACK /?CCL16
CALL PERFORM,V?SMELL,BALLOON
RTRUE
?CCL16: EQUAL? HERE,COMMANDERS-QUARTERS \?CCL18
FSET? SAFE,OPENBIT \?CCL18
PRINTR "The odor of an explosion hangs in the air."
?CCL18: PRINTR "You smell nothing unusual just now."
?CCL3: CALL SENSE-OBJECT,STR?49
RSTACK
.FUNCT SENSE-OBJECT,STRING
CALL PRONOUN
PRINTC 32
PRINT STRING
FSET? PRSO,PLURALBIT /?CND1
EQUAL? PRSO,ME /?CND1
PRINTC 115
?CND1: PRINTI " just like"
CALL ARPRINT,PRSO
RSTACK
.FUNCT V-SPLAY-WITH
CALL PERFORM,V?PLAY-WITH,PRSI
RTRUE
.FUNCT V-SPRAY
ZERO? PRSI \?CCL3
IN? SPRAY-CAN,PROTAGONIST \?CCL3
PRINTI "[with the "
PRINTD SPRAY-CAN
PRINTC 93
CRLF
CALL PERFORM,V?SPRAY,SPRAY-CAN,PRSO
RTRUE
?CCL3: CALL CANT-VERB-A-PRSO,STR?50
RSTACK
.FUNCT V-SPUT-ON
CALL PERFORM,V?PUT-ON,PRSI,PRSO
RTRUE
.FUNCT V-SSHOW
CALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-SSPRAY
CALL PERFORM,V?SPRAY,PRSI,PRSO
RTRUE
.FUNCT V-STAND
EQUAL? P-PRSA-WORD,W?HOLD \?CCL3
CALL WASTES
RSTACK
?CCL3: LOC PROTAGONIST
FSET? STACK,VEHBIT \?CCL5
LOC PROTAGONIST
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?CCL5: ZERO? PRSO /?CCL7
FSET? PRSO,TAKEBIT \?CCL7
CALL WASTES
RSTACK
?CCL7: ZERO? STUNNED /?CCL11
CALL YOURE-STUNNED
RSTACK
?CCL11: PRINTR "You're already standing."
.FUNCT V-STAND-ON
CALL WASTES
RSTACK
.FUNCT V-STELL
CALL PERFORM,V?TELL,PRSI
RTRUE
.FUNCT V-STHROW
CALL PERFORM,V?THROW-TO,PRSI,PRSO
RTRUE
.FUNCT V-SWING
ZERO? PRSI /?CCL3
CALL PERFORM,V?KILL,PRSI,PRSO
RTRUE
?CCL3: PRINTR """Whoosh."""
.FUNCT V-SWRAP
CALL PERFORM,V?PUT-ON,PRSO,PRSI
RTRUE
.FUNCT PRE-TAKE
ZERO? STUNNED /?CCL3
CALL YOURE-STUNNED,STR?51
RSTACK
?CCL3: CALL UNTOUCHABLE?,PRSO
ZERO? STACK /?CCL5
CALL CANT-REACH,PRSO
RSTACK
?CCL5: EQUAL? PRSI,TONGUE,HANDS /?CCL7
CALL PRE-LOOK
ZERO? STACK \TRUE
?CCL7: CALL LOC-CLOSED
ZERO? STACK \TRUE
IN? PROTAGONIST,PRSO \?CCL13
PRINTI "You're "
FSET? PRSO,INBIT \?CCL16
PRINTC 105
JUMP ?CND14
?CCL16: PRINTC 111
?CND14: PRINTR "n it, asteroid-brain!"
?CCL13: IN? PRSO,PROTAGONIST /?CTR17
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL18
FSET? PRSO,TAKEBIT /?CCL18
?CTR17: FSET? PRSO,WORNBIT \?CCL25
PRINTI "You're already wearing"
JUMP ?CND23
?CCL25: PRINTI "You already have"
?CND23: CALL TPRINT-PRSO
PRINT PERIOD-CR
RTRUE
?CCL18: IN? PRSO,HEATING-CHAMBER \?CCL27
CALL PERFORM,V?REACH-IN,HEATING-CHAMBER
RTRUE
?CCL27: EQUAL? PRSO,LEASH \?CCL29
EQUAL? PRSI,BALLOON \?CCL29
CALL PERFORM,V?REMOVE,LEASH
RTRUE
?CCL29: ZERO? PRSI /FALSE
IN? PRSO,PRSI /FALSE
EQUAL? PRSO,ME \?CCL37
CALL PERFORM,V?DROP,PRSI
RTRUE
?CCL37: EQUAL? PRSI,GLOBAL-ROOM \?CCL39
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /FALSE
CALL DO-WALK,P?OUT
RSTACK
?CCL39: EQUAL? PRSI,SCULPTURE,GARBAGE \?CCL44
IN? PRSO,HERE /FALSE
?CCL44: IN? PRSO,PRSI /?CCL48
CALL NOT-IN
RSTACK
?CCL48: SET 'PRSI,FALSE-VALUE
RFALSE
.FUNCT V-TAKE
CALL ITAKE
EQUAL? STACK,TRUE-VALUE \FALSE
ZERO? ID-SCRAMBLED \?CND4
EQUAL? PRSO,ID-CARD \?PRD9
CALL ULTIMATELY-IN?,BOOTS
ZERO? STACK /?PRD9
FSET? BOOTS,WORNBIT \?CCL5
?PRD9: EQUAL? PRSO,BOOTS \?CND4
CALL ULTIMATELY-IN?,ID-CARD
ZERO? STACK /?CND4
?CCL5: FCLEAR BOOTS,TRYTAKEBIT
FCLEAR ID-CARD,TRYTAKEBIT
SET 'ID-SCRAMBLED,TRUE-VALUE
?CND4: PRINTR "Taken."
.FUNCT V-TAKE-OFF
EQUAL? PRSO,ROOMS \?CCL3
LOC PROTAGONIST
FSET? STACK,VEHBIT \?CCL6
PRINTI "[of"
LOC PROTAGONIST
CALL TPRINT,STACK
PRINTC 93
CRLF
LOC PROTAGONIST
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?CCL6: CALL V-STAND
RSTACK
?CCL3: ZERO? STUNNED /?CCL8
CALL YOURE-STUNNED
RSTACK
?CCL8: FSET? PRSO,WORNBIT \?CCL10
SET 'C-ELAPSED,18
FCLEAR PRSO,WORNBIT
PRINTI "Okay, you're no longer wearing"
CALL TRPRINT,PRSO
RSTACK
?CCL10: FSET? PRSO,VEHBIT \?CCL12
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?CCL12: PRINTI "You aren't wearing"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-TAKE-WITH
PRINTI "Sorry,"
CALL TPRINT-PRSI
PRINTI " is no help in getting"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-TASTE
GETP PRSO,P?FOOD-DESC
ZERO? STACK /?CCL3
PRINTR "It tastes edible."
?CCL3: CALL SENSE-OBJECT,STR?52
RSTACK
.FUNCT V-TELL
FSET? PRSO,ACTORBIT \?CCL3
ZERO? P-CONT /?CCL6
SET 'WINNER,PRSO
SET 'ELIMINATE-CR,TRUE-VALUE
RTRUE
?CCL6: PRINTI "Hmmm..."
CALL TPRINT-PRSO
PRINTR " looks at you expectantly."
?CCL3: PRINTI "Talking to"
CALL APRINT,PRSO
PRINTI "? Dr. Blanchard, the Duffy's psychiatrist, would be fascinated to hear that."
CRLF
CALL STOP
RSTACK
.FUNCT V-TELL-ABOUT
EQUAL? PRSO,ME \?CCL3
CALL PERFORM,V?WHAT,PRSI
RTRUE
?CCL3: CALL VISIBLE?,PRSI
ZERO? STACK /?CCL5
CALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
?CCL5: SET 'PRSI,PRSO
CALL V-SHOW
RSTACK
.FUNCT V-THANK,OWINNER
ZERO? PRSO \?CCL3
PRINTR "[Just doing my job.]"
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
SET 'OWINNER,WINNER
SET 'WINNER,PRSO
CALL PERFORM,V?THANK
SET 'WINNER,OWINNER
RTRUE
?CCL5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-THROW
EQUAL? HERE,VACUUM-STORAGE \?CCL3
PRINTI "You lose sight of"
CALL TPRINT-PRSO
PRINTI " as it sails away."
CALL REMOVE-CAREFULLY,PRSO
CRLF
RTRUE
?CCL3: EQUAL? HERE,TOP-OF-AIR-SHAFT,AIR-SHAFT \?CCL5
CALL V-DROP
RSTACK
?CCL5: ZERO? PRSI /?CCL7
MOVE PRSO,HERE
PRINTR "You missed."
?CCL7: MOVE PRSO,HERE
PRINTR "Thrown."
.FUNCT V-THROW-TO
FSET? PRSI,ACTORBIT \?CCL3
CALL PERFORM,V?GIVE,PRSO,PRSI
RTRUE
?CCL3: CALL PERFORM,V?THROW,PRSO,PRSI
RTRUE
.FUNCT V-TICKLE
PRINTR "Kitchy kitchy koo?"
.FUNCT V-TIE
PRINT YOU-CANT
PRINTI "tie"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-TIME,NO-CR=0
PRINTI "Current Galactic Standard Time "
FSET? CHRONOMETER,WORNBIT \?CCL3
LESS? DAY,3 \?CCL3
PRINTI "(adjusted to your local day-cycle) is "
PRINTN INTERNAL-MOVES
JUMP ?CND1
?CCL3: PRINTI "is impossible to determine, since you"
FSET? CHRONOMETER,WORNBIT /?CCL8
PRINTI "'ve removed your "
PRINTD CHRONOMETER
JUMP ?CND1
?CCL8: PRINTI "r "
PRINTD CHRONOMETER
PRINTI " has stopped"
?CND1: ZERO? NO-CR /?CCL11
PRINTC 46
RTRUE
?CCL11: PRINT PERIOD-CR
RTRUE
.FUNCT PRE-TOUCH,VB=1
ZERO? STUNNED /?CCL3
ZERO? VB /TRUE
CALL YOURE-STUNNED,STR?51
RTRUE
?CCL3: CALL UNTOUCHABLE?,PRSO
ZERO? STACK /FALSE
ZERO? VB /TRUE
CALL CANT-REACH,PRSO
RTRUE
.FUNCT V-TOUCH
CALL LOC-CLOSED
ZERO? STACK \TRUE
CALL HACK-HACK,STR?53
RSTACK
.FUNCT V-TYPE
ZERO? PRSI /?CCL3
EQUAL? PRSI,KEYPAD /?CCL3
PRINT YOU-CANT
PRINTI "type on"
CALL APRINT,PRSI
PRINTR "!"
?CCL3: CALL GLOBAL-IN?,KEYPAD,HERE
ZERO? STACK \?CCL7
ZERO? PRSO /?CCL10
PRINT HUH
RTRUE
?CCL10: PRINTI "There's no keypad here!"
CRLF
CALL STOP
RSTACK
?CCL7: ZERO? PRSO /?CCL12
EQUAL? PRSO,INTNUM \?CCL12
ZERO? P-NUMBER \?CCL17
PRINTR "[Specify the number! TYPE 7, for example.]"
?CCL17: EQUAL? HERE,ROBOT-POOL \?CCL19
CALL ROBOT-TYPE
RSTACK
?CCL19: EQUAL? HERE,SPACETRUCK \?CCL21
CALL SPACETRUCK-TYPE
RSTACK
?CCL21: EQUAL? HERE,SHADY-DANS \?CCL23
CALL ID-CHANGER-TYPE
RSTACK
?CCL23: EQUAL? HERE,PX \?CCL25
CALL DISPENSER-TYPE
RSTACK
?CCL25: CALL ELEVATOR-TYPE
RSTACK
?CCL12: ZERO? PRSO \?CCL27
ZERO? P-CONT /?CCL27
CALL NUMBER?,P-CONT
EQUAL? STACK,W?NUMBER \?CCL27
CALL PERFORM,V?TYPE,INTNUM
CALL STOP
RSTACK
?CCL27: PRINTI "You can only type numbers on this keypad."
CRLF
CALL STOP
RSTACK
.FUNCT ROBOT-TYPE
FSET? ROBOT-USE-AUTHORIZATION-FORM,NDESCBIT /?CCL3
CALL RECORDING,STR?54
RSTACK
?CCL3: ZERO? ROBOT-PICKED /?CCL5
CALL RECORDING,STR?55
RSTACK
?CCL5: GRTR? P-NUMBER,3 \?CCL7
CALL RECORDING,STR?56
RSTACK
?CCL7: LESS? P-NUMBER,1 \?CCL9
CALL RECORDING,STR?57
RSTACK
?CCL9: EQUAL? P-NUMBER,3 \?CCL11
FSET FLOYD,TOUCHBIT
SET 'ROBOT-PICKED,FLOYD
SET 'FLOYD-SPOKE,TRUE-VALUE
PRINTR """Yippee!"" yells Floyd, bounding joyfully over and giving you a big hug."
?CCL11: EQUAL? P-NUMBER,1 \?CCL14
SET 'ROBOT-PICKED,REX
JUMP ?CND12
?CCL14: SET 'ROBOT-PICKED,HELEN
?CND12: CALL DEQUEUE,I-FLOYD
CALL QUEUE,I-OTHER-ROBOT,-1
FSET ROBOT-PICKED,TOUCHBIT
PRINTD ROBOT-PICKED
PRINTR " rolls up to you, ready to follow. Floyd's lower jaw begins quivering, as though he were about to cry."
.FUNCT SPACETRUCK-TYPE,X
FSET? CLASS-THREE-SPACECRAFT-ACTIVATION-FORM,NDESCBIT /?CCL3
CALL RECORDING,STR?54
RSTACK
?CCL3: EQUAL? SPACETRUCK-COUNTER,5 \?CCL5
CALL RECORDING,STR?58
RSTACK
?CCL5: ZERO? COURSE-PICKED /?CCL7
CALL RECORDING,STR?55
RSTACK
?CCL7: IN? PROTAGONIST,PILOT-SEAT /?PRD11
IN? FLOYD,PILOT-SEAT \?CCL9
?PRD11: IN? PROTAGONIST,COPILOT-SEAT /?CTR8
IN? FLOYD,COPILOT-SEAT \?CCL9
?CTR8: SET 'COURSE-PICKED,P-NUMBER
DIV INTERNAL-MOVES,50 >X
SUB X,132 >X
MUL X,X >X
DIV X,4 >X
ADD X,103 >RIGHT-COURSE
CALL QUEUE,I-SPACETRUCK,33
CALL RECORDING,STR?59
RSTACK
?CCL9: CALL RECORDING,STR?60
RSTACK
.FUNCT ELEVATOR-TYPE,DISTANCE
GRTR? P-NUMBER,9 /?CTR2
LESS? P-NUMBER,1 \?CCL3
?CTR2: CALL RECORDING,STR?61
RSTACK
?CCL3: GRTR? DAY,2 \?CCL7
CALL JIGS-UP,STR?62
RSTACK
?CCL7: EQUAL? ELEVATOR-LEVEL,P-NUMBER \?CCL9
CALL RECORDING,STR?63
RSTACK
?CCL9: EQUAL? P-NUMBER,8,9 \?CCL11
PRINTR "The elevator whines momentarily, but doesn't move."
?CCL11: PRINTI "The elevator "
EQUAL? DAY,1 \?CCL14
PRINTI "glides weightlessly "
JUMP ?CND12
?CCL14: PRINTI "starts with a jerk, "
GRTR? P-NUMBER,ELEVATOR-LEVEL \?CND15
PRINTI "bumping you against the ceiling, "
?CND15: PRINTI "then moves "
?CND12: GRTR? P-NUMBER,ELEVATOR-LEVEL \?CCL19
PRINTI "down"
SUB P-NUMBER,ELEVATOR-LEVEL >DISTANCE
JUMP ?CND17
?CCL19: PRINTI "up"
SUB ELEVATOR-LEVEL,P-NUMBER >DISTANCE
?CND17: PRINTI " the shaft, stopping "
EQUAL? DAY,2 \?CND20
PRINTI "suddenly "
?CND20: EQUAL? DAY,2 \?CCL24
GRTR? INTERNAL-MOVES,6300 \?CCL24
PRINTI "and not quite at level with your new floor"
JUMP ?CND22
?CCL24: PRINTI "at another opening to the west"
?CND22: EQUAL? DAY,2 \?CND27
GRTR? ELEVATOR-LEVEL,P-NUMBER \?CND27
PRINTI ". The sudden stop bumps you against the ceiling of the weightless elevator"
?CND27: MUL 5,DISTANCE >C-ELAPSED
SET 'ELEVATOR-LEVEL,P-NUMBER
IN? BALLOON,ELEVATOR \?CND31
PRINTI ". The "
PRINTD BALLOON
PRINTI " looks somewhat disoriented by the experience"
?CND31: IN? OSTRICH,ELEVATOR \?CCL35
PRINTI ". "
CALL PERFORM,V?SCARE,OSTRICH
RTRUE
?CCL35: PRINT PERIOD-CR
RTRUE
.FUNCT DISPENSER-TYPE
FSET? DISPENSER,TOUCHBIT /?CCL3
CALL RECORDING,STR?64
RSTACK
?CCL3: GRTR? P-NUMBER,9 \?CCL5
CALL RECORDING,STR?65
RSTACK
?CCL5: EQUAL? P-NUMBER,6,9 \?CCL7
FCLEAR DISPENSER,TOUCHBIT
EQUAL? P-NUMBER,6 \?CCL10
MOVE TIMER,DISPENSER
JUMP ?CND8
?CCL10: MOVE LARGE-BIT,DISPENSER
?CND8: PRINTR "You hear a loud ""klunk"" inside the dispenser, but nothing appears in the dispenser hole."
?CCL7: LESS? P-NUMBER,1 \?CCL12
CALL RECORDING,STR?57
RSTACK
?CCL12: CALL RECORDING,STR?66
RSTACK
.FUNCT RECORDING,STRING
RANDOM 100
LESS? 33,STACK /?CCL3
PRINTI "A recording says,"
JUMP ?CND1
?CCL3: RANDOM 100
LESS? 50,STACK /?CCL5
PRINTI "You hear a recorded voice."
JUMP ?CND1
?CCL5: PRINTI "A taped voice whispers in your ear."
?CND1: PRINTI " """
PRINT STRING
PRINTR "."""
.FUNCT V-UNDRESS
ZERO? PRSO /?CCL3
CALL IMPOSSIBLES
RSTACK
?CCL3: SET 'PRSO,ROOMS
CALL V-GET-UNDRESSED
RSTACK
.FUNCT V-UNLOCK
FSET? PRSO,LOCKEDBIT /?CND1
EQUAL? HERE,THEATRE,BRIG \?CCL5
EQUAL? PRSO,PSEUDO-OBJECT /?CND1
?CCL5: PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't locked."
?CND1: ZERO? PRSI \?CCL10
CALL ULTIMATELY-IN?,KEY
ZERO? STACK /?CCL13
PRINTI "[with the key]"
CRLF
CALL PERFORM,V?UNLOCK,PRSO,KEY
RTRUE
?CCL13: SET 'AWAITING-REPLY,1
ADD C-ELAPSED,2
CALL QUEUE,I-REPLY,STACK
PRINTR "Your nose is key-shaped, I suppose?"
?CCL10: EQUAL? PRSI,KEY \?CCL15
PRINTI "This key doesn't unlock"
CALL TRPRINT,PRSO
RSTACK
?CCL15: CALL IMPOSSIBLES
RSTACK
.FUNCT V-UNTIE
CALL IMPOSSIBLES
RSTACK
.FUNCT V-USE
PRINT YOULL-HAVE-TO
PRINTI "be more specific about how you want to use"
CALL TRPRINT,PRSO
RSTACK
.FUNCT PRE-VALIDATE
ZERO? PRSI \?CCL3
CALL VISIBLE?,VALIDATION-STAMP
ZERO? STACK \?CCL3
PRINTI "You don't have a "
PRINTD VALIDATION-STAMP
PRINTR "!"
?CCL3: ZERO? PRSI \?CCL7
CALL ULTIMATELY-IN?,VALIDATION-STAMP
ZERO? STACK \?CCL7
PRINT YNH
CALL TRPRINT,VALIDATION-STAMP
RSTACK
?CCL7: ZERO? PRSI /FALSE
EQUAL? PRSI,VALIDATION-STAMP /FALSE
PRINT HUH
RTRUE
.FUNCT V-VALIDATE
PRINTI "There's no validation box on"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-WALK,AV,VEHICLE,PT,PTS,STR,OBJ,RM
LOC PROTAGONIST >AV
ZERO? P-WALK-DIR \?CCL3
CALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CCL3: ZERO? STUNNED /?CCL5
CALL YOURE-STUNNED,STR?67
RSTACK
?CCL5: EQUAL? PRSO,P?OUT \?CCL7
EQUAL? AV,SIMULATION-BOOTH,HOLDING-TANK \?CCL7
CALL PERFORM,V?DISEMBARK,AV
RTRUE
?CCL7: ZERO? HANGING-IN-AIR /?CCL11
EQUAL? PRSO,P?DOWN \?CCL14
CALL PERFORM,V?DROP,LEASH
RTRUE
?CCL14: PRINTR "It's hard to walk when your feet are a couple of meters from the floor."
?CCL11: EQUAL? PRSO,P?IN \?CCL16
GETPT HERE,P?IN
ZERO? STACK \?CCL16
CALL FIND-IN,HERE,VEHBIT >VEHICLE
ZERO? VEHICLE /?CCL16
CALL ULTIMATELY-IN?,VEHICLE
ZERO? STACK \?CCL16
CALL PERFORM,V?ENTER,VEHICLE
RTRUE
?CCL16: FSET? AV,VEHBIT \?CCL22
PRINTI "You're not walking anywhere until you get o"
EQUAL? AV,BED \?CCL25
PRINTI "ff"
JUMP ?CND23
?CCL25: PRINTI "ut of"
?CND23: CALL TRPRINT,AV
RETURN 8
?CCL22: ZERO? TIMER-CONNECTED /?CCL29
CALL ULTIMATELY-IN?,TIMER
ZERO? STACK /?CCL29
CALL ULTIMATELY-IN?,DETONATOR
ZERO? STACK \?CCL29
CALL DO-FIRST,STR?19
RSTACK
?CCL29: ZERO? TIMER-CONNECTED /?CCL34
CALL ULTIMATELY-IN?,DETONATOR
ZERO? STACK /?CCL34
CALL ULTIMATELY-IN?,TIMER
ZERO? STACK \?CCL34
CALL DO-FIRST,STR?19
RSTACK
?CCL34: ZERO? EXPLOSIVE-CONNECTED /?CCL39
CALL ULTIMATELY-IN?,DETONATOR
ZERO? STACK /?CCL39
CALL ULTIMATELY-IN?,EXPLOSIVE
ZERO? STACK \?CCL39
CALL DO-FIRST,STR?20
RSTACK
?CCL39: ZERO? EXPLOSIVE-CONNECTED /?CCL44
CALL ULTIMATELY-IN?,EXPLOSIVE
ZERO? STACK /?CCL44
CALL ULTIMATELY-IN?,DETONATOR
ZERO? STACK \?CCL44
CALL DO-FIRST,STR?20
RSTACK
?CCL44: GETPT HERE,PRSO >PT
ZERO? PT /?CCL49
ZERO? LIT /?CCL52
SET 'C-ELAPSED,22
JUMP ?CND50
?CCL52: SET 'C-ELAPSED,33
?CND50: PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?CCL55
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL55: EQUAL? PTS,CEXIT \?CCL57
EQUAL? HERE,CASINO \?CCL60
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?CCL63
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL63: SET 'C-ELAPSED,7
PRINT CANT-GO
RETURN 8
?CCL60: ZERO? VERBOSITY /?CND66
CALL DESCRIBE-AUTO-DOOR
?CND66: GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL57: EQUAL? PTS,NEXIT \?CCL69
SET 'C-ELAPSED,7
GET PT,NEXITSTR
PRINT STACK
CRLF
RETURN 8
?CCL69: EQUAL? PTS,FEXIT \?CCL73
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM /?CCL76
CALL GOTO,RM
RSTACK
?CCL76: EQUAL? HERE,AIR-SHAFT /TRUE
SET 'C-ELAPSED,7
RETURN 8
?CCL73: EQUAL? PTS,DEXIT \FALSE
GETB PT,DEXITOBJ >OBJ
FSET? OBJ,OPENBIT \?CCL85
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL85: GET PT,DEXITSTR >STR
ZERO? STR /?CCL87
SET 'C-ELAPSED,7
CALL THIS-IS-IT,OBJ
PRINT STR
CRLF
RETURN 8
?CCL87: SET 'C-ELAPSED,7
CALL THIS-IS-IT,OBJ
CALL DO-FIRST,STR?23,OBJ
RETURN 8
?CCL49: EQUAL? PRSO,P?IN,P?OUT \?CCL93
CALL V-WALK-AROUND
RETURN 8
?CCL93: PRINT CANT-GO
RETURN 8
.FUNCT DESCRIBE-AUTO-DOOR
EQUAL? HERE,BRIG,ARMORY \?CCL3
PRINTI "The "
PRINTD SECURITY-DOOR
PRINTC 32
JUMP ?CND1
?CCL3: PRINTI "The auto-door "
?CND1: EQUAL? DAY,1 \?CCL6
PRINTI "opens as you approach, and whisks shut behind you..."
JUMP ?CND4
?CCL6: GRTR? DAY,2 \?CCL8
PRINTI "opens barely wide enough for you to squeeze through. As you do so, the door tries to shut, almost jamming against you!"
FSET? AUTO-DOOR,TOUCHBIT /?CND4
FSET AUTO-DOOR,TOUCHBIT
PRINTI " Fortunately, auto-doors don't have a lot of power."
JUMP ?CND4
?CCL8: PRINTI "opens sluggishly. As soon as you have passed through, it zooms shut, "
GRTR? INTERNAL-MOVES,5000 \?CCL13
PRINTI "almost nipping your heels!"
JUMP ?CND11
?CCL13: PRINTI "seemingly a little sooner than normal."
?CND11: FSET? AUTO-DOOR,TOUCHBIT /?CND4
FSET AUTO-DOOR,TOUCHBIT
PRINTI " Very puzzling; auto-doors have been around for millenia, and are generally the epitome of reliability."
?CND4: CRLF
CRLF
RTRUE
.FUNCT V-WALK-AROUND
SET 'AWAITING-REPLY,1
CALL QUEUE,I-REPLY,1
SET 'P-WON,FALSE-VALUE
PRINTR "Did you have any particular direction in mind?"
.FUNCT V-WALK-TO
EQUAL? PRSO,INTDIR \?CCL3
CALL DO-WALK,P-DIRECTION
RSTACK
?CCL3: CALL VISIBLE?,PRSO
ZERO? STACK /?CCL5
FSET? PRSO,VEHBIT \?CCL8
CALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL8: CALL V-FOLLOW
RSTACK
?CCL5: CALL V-WALK-AROUND
RSTACK
.FUNCT V-WAIT
EQUAL? PRSA,V?WAIT-FOR \?CCL3
SET 'C-ELAPSED,P-NUMBER
JUMP ?CND1
?CCL3: EQUAL? PRSA,V?WAIT-UNTIL \?CCL5
SUB P-NUMBER,INTERNAL-MOVES >C-ELAPSED
JUMP ?CND1
?CCL5: SET 'C-ELAPSED,40
?CND1: PRINTR "Time passes..."
.FUNCT V-WAIT-FOR
CALL VISIBLE?,PRSO
ZERO? STACK /?CCL3
CALL V-FOLLOW
RSTACK
?CCL3: PRINTR "You may be waiting quite a while."
.FUNCT V-WAIT-UNTIL
PRINT HUH
RTRUE
.FUNCT V-WEAR
FSET? PRSO,WEARBIT /?CCL3
CALL CANT-VERB-A-PRSO,STR?68
RSTACK
?CCL3: PRINTI "You're "
FSET? PRSO,WORNBIT \?CCL6
PRINTI "already"
JUMP ?CND4
?CCL6: MOVE PRSO,PROTAGONIST
FSET PRSO,WORNBIT
SET 'C-ELAPSED,18
PRINTI "now"
?CND4: PRINTI " wearing"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-WHAT
PRINTR "Good question."
.FUNCT V-WHERE
CALL V-FIND,TRUE-VALUE
RSTACK
.FUNCT V-WRAP
CALL PERFORM,V?PUT-ON,PRSI,PRSO
RTRUE
.FUNCT V-YELL
PRINTI "Aaaarrrggghhh!"
CRLF
IN? OSTRICH,HERE \?CND1
PRINTI " "
CALL PERFORM,V?SCARE,OSTRICH
RTRUE
?CND1: CALL STOP
RSTACK
.FUNCT I-REPLY
SET 'AWAITING-REPLY,FALSE-VALUE
RFALSE
.FUNCT V-YES
EQUAL? AWAITING-REPLY,1 \?CCL3
PRINTR "That was just a rhetorical question."
?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5
PRINTR """Floyd changed his mind. Controls too scary-looking."""
?CCL5: EQUAL? AWAITING-REPLY,3 \?CCL7
PRINTR "Floyd shrugs. ""Floyd feels not like learning new rules now. Let's play tag. Floyd knows rules for tag really well!"""
?CCL7: EQUAL? AWAITING-REPLY,4 \?CCL9
CALL PERFORM,V?PLAY-WITH,FLOYD
RTRUE
?CCL9: CALL YOU-SOUND,STR?69
RSTACK
.FUNCT YOU-SOUND,STRING
PRINTI "You sound rather "
PRINT STRING
PRINTR "ive."
.FUNCT YES-WORD,WRD
EQUAL? WRD,W?YES,W?Y,W?YUP /TRUE
EQUAL? WRD,W?OK,W?OKAY,W?SURE /TRUE
RFALSE
.FUNCT V-ZORK
PRINTR "Gesundheit!"
.FUNCT ITAKE,VB=1,OBJ,?TMP1
FSET? PRSO,TAKEBIT /?CCL3
ZERO? VB /?PRG6
CALL YUKS
?PRG6: RETURN 8
?CCL3: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK \?CCL9
CALL WEIGHT,PRSO >?TMP1
CALL WEIGHT,PROTAGONIST
ADD ?TMP1,STACK
GRTR? STACK,100 \?CCL9
ZERO? VB /?PRG14
PRINTI "You're juggling just about as much stuff as you can manage."
CRLF
?PRG14: RETURN 8
?CCL9: CALL CCOUNT,PROTAGONIST
MUL STACK,20
SUB STACK,150 >?TMP1
RANDOM 100
LESS? ?TMP1,STACK /?CND1
FIRST? PROTAGONIST >OBJ /?PRG17
?PRG17: FSET? OBJ,WORNBIT \?CCL21
NEXT? OBJ >OBJ /?PRG17
JUMP ?PRG17
?CCL21: EQUAL? OBJ,OSTRICH-NIP \?REP18
IN? OSTRICH,HERE \?REP18
NEXT? OBJ >OBJ /?PRG17
JUMP ?PRG17
?REP18: MOVE PRSO,HERE
MOVE OBJ,HERE
FSET PRSO,TOUCHBIT
ZERO? VB /?PRG31
PRINTI "As you try to grab"
CALL TPRINT-PRSO
PRINTC 44
CALL TPRINT,OBJ
PRINTI " slips from your hands and both tumble "
FSET? HERE,WEIGHTLESSBIT \?CCL30
PRINTI "away"
JUMP ?CND28
?CCL30: PRINTI "to the floor"
?CND28: PRINT PERIOD-CR
?PRG31: RETURN 8
?CND1: CALL SCORE-OBJ
MOVE PRSO,PROTAGONIST
RTRUE
.FUNCT SCORE-OBJ,POINTS
FSET PRSO,TOUCHBIT
FCLEAR PRSO,NDESCBIT
GETP PRSO,P?VALUE >POINTS
ZERO? POINTS /FALSE
GRTR? POINTS,0 \?CND4
INC 'ROBOT-EVILNESS
?CND4: PUTP PRSO,P?VALUE,0
ADD SCORE,POINTS >SCORE
RETURN SCORE
.FUNCT IDROP
EQUAL? PRSO,HANDS \?CCL3
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
CALL IMPOSSIBLES
RSTACK
?CCL3: EQUAL? PRSA,V?GIVE,V?DROP \?CCL8
EQUAL? PRSO,LEASH \?CCL8
ZERO? HANGING-IN-AIR \FALSE
?CCL8: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK \?CCL13
EQUAL? PRSA,V?THROW \?CCL16
EQUAL? PRSO,SWITCH /FALSE
?CCL16: EQUAL? PRSO,TONGUE,HANDS,ME \?CCL20
CALL IMPOSSIBLES
JUMP ?CND14
?CCL20: EQUAL? PRSA,V?PUT \?CCL22
EQUAL? PRSO,ID-READER \?CCL22
CALL ADJ-USED,A?ID,ID-READER
ZERO? STACK /?CCL22
GET P-NAMW,0
EQUAL? STACK,FALSE-VALUE \?CCL22
PRINT YOU-CANT
PRINTI "see any ID card here!"
CRLF
JUMP ?CND14
?CCL22: PRINTI "That's easy for you to say since you don't even have"
CALL TRPRINT,PRSO
?CND14: ZERO? P-MULT \TRUE
RETURN 8
?CCL13: IN? PRSO,PROTAGONIST /?CCL33
LOC PRSO
FSET? STACK,CONTBIT \?CCL33
LOC PRSO
FSET? STACK,OPENBIT /?CCL33
LOC PRSO
CALL DO-FIRST,STR?23,STACK
RSTACK
?CCL33: FSET? PRSO,WORNBIT \FALSE
CALL DO-FIRST,STR?70,PRSO
RSTACK
.FUNCT CCOUNT,OBJ,CNT=0,X
FIRST? OBJ >X /?PRG3
RETURN CNT
?PRG3: FSET? X,WORNBIT /?CND5
INC 'CNT
?CND5: NEXT? X >X /?PRG3
RETURN CNT
.FUNCT WEIGHT,OBJ,CONT,WT=0
FIRST? OBJ >CONT \?CND1
?PRG3: FSET? CONT,WORNBIT /?CND5
CALL WEIGHT,CONT
ADD WT,STACK >WT
?CND5: NEXT? CONT >CONT /?KLU12
?KLU12: ZERO? CONT \?PRG3
?CND1: EQUAL? OBJ,PROTAGONIST \?CCL11
RETURN WT
?CCL11: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT DESCRIBE-ROOM,VERB-IS-LOOK=0,FIRST-VISIT=0,POINTS
GETP HERE,P?VALUE >POINTS
ZERO? POINTS /?CND1
GRTR? POINTS,0 \?CND1
INC 'ROBOT-EVILNESS
ADD SCORE,POINTS >SCORE
PUTP HERE,P?VALUE,0
?CND1: ZERO? LIT \?CCL7
PRINTI "It is pitch black. You "
EQUAL? HERE,VACUUM-STORAGE \?CCL10
PRINTI "try desperately to remember: 1. whether grues can survive in a vacuum and 2. whether they can tear through a space suit."
CRLF
RFALSE
?CCL10: PRINTI "hope there are no grues aboard the station."
CRLF
RFALSE
?CCL7: FSET? HERE,TOUCHBIT /?CND5
EQUAL? HERE,AIR-SHAFT /?CND12
FSET HERE,TOUCHBIT
?CND12: SET 'FIRST-VISIT,TRUE-VALUE
?CND5: PRINTD HERE
ZERO? HANGING-IN-AIR /?CCL16
PRINTI ", hanging in air"
JUMP ?CND14
?CCL16: LOC PROTAGONIST
FSET? STACK,VEHBIT \?CND14
PRINTI ", "
LOC PROTAGONIST
FSET? STACK,INBIT \?CCL20
PRINTC 105
JUMP ?CND18
?CCL20: PRINTC 111
?CND18: PRINTC 110
LOC PROTAGONIST
CALL TPRINT,STACK
?CND14: CRLF
ZERO? VERB-IS-LOOK \?CCL22
EQUAL? VERBOSITY,2 /?CCL22
ZERO? FIRST-VISIT /TRUE
EQUAL? VERBOSITY,1 \TRUE
?CCL22: PRINTI " "
GETP HERE,P?ACTION
CALL STACK,M-LOOK
ZERO? STACK \?CND28
GETP HERE,P?LDESC
PRINT STACK
?CND28: CRLF
RTRUE
.FUNCT DESCRIBE-OBJECTS,O,STR,1ST?=1,AV
LOC WINNER >AV
FIRST? HERE >O /?KLU41
?KLU41: ZERO? O /FALSE
?PRG3: ZERO? O /?REP4
CALL DESCRIBABLE?,O
ZERO? STACK /?CND5
FSET? O,TOUCHBIT /?CND5
GETP O,P?FDESC >STR
ZERO? STR /?CND5
PRINTI " "
PRINT STR
FSET? O,CONTBIT \?CND12
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND12: CRLF
?CND5: NEXT? O >O /?PRG3
JUMP ?PRG3
?REP4: FIRST? HERE >O /?KLU43
?KLU43: SET '1ST?,TRUE-VALUE
?PRG14: ZERO? O /?REP15
CALL DESCRIBABLE?,O
ZERO? STACK /?CND16
GETP O,P?FDESC
ZERO? STACK /?CCL20
FSET? O,TOUCHBIT \?CND16
?CCL20: GETP O,P?DESCFCN >STR
ZERO? STR /?CCL26
CALL STR,M-OBJDESC >STR
ZERO? STR /?CCL26
FSET? O,CONTBIT \?CND29
EQUAL? STR,M-FATAL /?CND29
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND29: CRLF
JUMP ?CND16
?CCL26: GETP O,P?LDESC >STR
ZERO? STR /?CND16
PRINTI " "
PRINT STR
FSET? O,CONTBIT \?CND34
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND34: CRLF
?CND16: NEXT? O >O /?PRG14
JUMP ?PRG14
?REP15: CALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,0
ZERO? AV /FALSE
EQUAL? HERE,AV /FALSE
CALL DESCRIBE-CONTENTS,AV,FALSE-VALUE,0
RSTACK
.FUNCT DESCRIBE-CONTENTS,OBJ,LEVEL=-1,ALL?=D-ALL?,F=0,N,1ST?=1,IT?=0,TWO?=0,START?=0,PARA?=0,DB
EQUAL? LEVEL,2 \?CCL3
SET 'LEVEL,TRUE-VALUE
SET 'PARA?,TRUE-VALUE
SET 'START?,TRUE-VALUE
JUMP ?CND1
?CCL3: BTST ALL?,D-PARA? \?CND1
SET 'PARA?,TRUE-VALUE
?CND1: FIRST? OBJ >N /?KLU117
?KLU117: ZERO? START? \?PRG20
IN? OBJ,ROOMS /?PRG20
FSET? OBJ,ACTORBIT /?PRG20
ZERO? N /FALSE
FSET? OBJ,CONTBIT \FALSE
FSET? OBJ,OPENBIT /?PRD15
FSET? OBJ,TRANSBIT \FALSE
?PRD15: EQUAL? LEVEL,-1 /?PRG20
FSET? OBJ,SEARCHBIT \FALSE
?PRG20: ZERO? N /?CCL23
CALL DESCRIBABLE?,N
ZERO? STACK /?CND22
BTST ALL?,D-ALL? /?CCL23
CALL SIMPLE-DESC?,N
ZERO? STACK /?CND22
?CCL23: ZERO? F /?CND30
ZERO? 1ST? /?CCL34
SET '1ST?,FALSE-VALUE
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL37
ZERO? START? \?CND32
ZERO? PARA? \?CCL42
EQUAL? OBJ,PROTAGONIST /?CND43
PRINTI " "
?CND43: SET 'PARA?,TRUE-VALUE
JUMP ?CND40
?CCL42: EQUAL? LEVEL,TRUE-VALUE \?CND40
PRINTC 32
?CND40: CALL DESCRIBE-START,OBJ
JUMP ?CND32
?CCL37: EQUAL? LEVEL,-1 /?CND32
PRINT LEVEL
JUMP ?CND32
?CCL34: ZERO? N /?CCL48
PRINTC 44
JUMP ?CND32
?CCL48: PRINTI " and"
?CND32: CALL APRINT,F
FSET? F,ONBIT \?CND49
PRINTI " (providing light)"
?CND49: EQUAL? F,DETONATOR \?CND51
ZERO? TIMER-CONNECTED \?CCL52
ZERO? EXPLOSIVE-CONNECTED /?CND51
?CCL52: PRINTI " (connected to the "
ZERO? TIMER-CONNECTED /?CCL59
PRINTI "timer"
ZERO? EXPLOSIVE-CONNECTED /?CND57
PRINTI " and the explosive"
JUMP ?CND57
?CCL59: PRINTI "explosive"
?CND57: PRINTC 41
?CND51: ZERO? IT? \?CCL64
ZERO? TWO? \?CCL64
SET 'IT?,F
JUMP ?CND30
?CCL64: SET 'TWO?,TRUE-VALUE
SET 'IT?,FALSE-VALUE
?CND30: SET 'F,N
?CND22: ZERO? N /?CND67
NEXT? N >N /?CND67
?CND67: ZERO? F \?PRG20
ZERO? N \?PRG20
ZERO? IT? /?CND73
ZERO? TWO? \?CND73
CALL THIS-IS-IT,IT?
?CND73: ZERO? 1ST? /?CCL79
ZERO? START? /?CCL79
PRINTI " nothing"
RFALSE
?CCL79: ZERO? 1ST? \?REP21
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP21
EQUAL? OBJ,HERE \?CND85
FSET? HERE,WEIGHTLESSBIT \?CND87
EQUAL? HERE,PET-STORE /?CND87
PRINTI " floating"
?CND87: PRINTI " here"
?CND85: PRINTC 46
?REP21: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND91
FIRST? OBJ >F /?PRG93
?PRG93: ZERO? F /?CND91
FSET? F,CONTBIT \?CND95
CALL DESCRIBABLE?,F,TRUE-VALUE
ZERO? STACK /?CND95
BTST ALL?,D-ALL? /?CCL98
CALL SIMPLE-DESC?,F
ZERO? STACK /?CND95
?CCL98: SET 'DB,D-BIT
SET 'D-BIT,FALSE-VALUE
ZERO? PARA? /?CCL108
PUSH 3
JUMP ?CND106
?CCL108: PUSH D-ALL?
?CND106: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK
ZERO? STACK /?CND104
SET '1ST?,FALSE-VALUE
SET 'PARA?,TRUE-VALUE
?CND104: SET 'D-BIT,DB
?CND95: NEXT? F >F /?PRG93
JUMP ?PRG93
?CND91: ZERO? 1ST? \?CND109
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND109
LOC WINNER
EQUAL? OBJ,HERE,STACK \?CND109
CRLF
?CND109: ZERO? 1ST? /TRUE
RFALSE
.FUNCT DESCRIBE-START,OBJ
EQUAL? OBJ,HERE \?CCL3
PRINT YOU-SEE
RTRUE
?CCL3: EQUAL? OBJ,PROTAGONIST \?CCL5
EQUAL? D-BIT,WORNBIT \?CCL8
PRINTI " You are wearing"
RTRUE
?CCL8: PRINTI "You are carrying"
RTRUE
?CCL5: FSET? OBJ,SURFACEBIT /?CTR9
EQUAL? OBJ,PILOT-SEAT,COPILOT-SEAT \?CCL10
?CTR9: PRINTI "Sitting on"
CALL TPRINT,OBJ
PRINTI " is"
RTRUE
?CCL10: PRINT IT-SEEMS-THAT
CALL TPRINT,OBJ
FSET? OBJ,ACTORBIT \?CCL15
PRINTI " has"
RTRUE
?CCL15: PRINTI " contains"
RTRUE
.FUNCT DESCRIBABLE?,OBJ,CONT?=0
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,WINNER /FALSE
LOC WINNER
EQUAL? OBJ,STACK \?CCL7
LOC WINNER
EQUAL? HERE,STACK \FALSE
?CCL7: ZERO? CONT? \?CCL11
FSET? OBJ,NDESCBIT /FALSE
?CCL11: ZERO? D-BIT /TRUE
GRTR? D-BIT,0 \?CCL18
FSET? OBJ,D-BIT /TRUE
RFALSE
?CCL18: SUB 0,D-BIT
FSET? OBJ,STACK /FALSE
RTRUE
.FUNCT SIMPLE-DESC?,OBJ,STR
GETP OBJ,P?FDESC
ZERO? STACK /?CCL3
FSET? OBJ,TOUCHBIT \FALSE
?CCL3: GETP OBJ,P?DESCFCN >STR
ZERO? STR /?CCL7
CALL STR,M-OBJDESC?
ZERO? STACK \FALSE
?CCL7: GETP OBJ,P?LDESC
ZERO? STACK /TRUE
RFALSE
.FUNCT DESCRIBE-VEHICLE
PRINTI "Other than yourself, you can see"
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
FSET? PRSO,INBIT \?CCL5
PRINTI " in"
JUMP ?CND3
?CCL5: PRINTI " on"
?CND3: CALL TRPRINT,PRSO
RTRUE
.FUNCT DESCRIBE-NOTHING
CALL DESCRIBE-CONTENTS,PRSO,2
ZERO? STACK /FALSE
IN? PROTAGONIST,PRSO /TRUE
CRLF
RTRUE
.FUNCT GOTO,NEW-LOC,OLD-HERE
GETP HERE,P?ACTION
CALL STACK,M-EXIT
IN? FLOYD,HERE \?CND1
FSET? FLOYD,ACTIVEBIT \?CND1
SET 'FLOYD-FOLLOW,TRUE-VALUE
?CND1: SET 'OLD-HERE,HERE
MOVE PROTAGONIST,NEW-LOC
SET 'HERE,NEW-LOC
CALL LIT?,HERE >LIT
SET 'BALLOON-ODOR,FALSE-VALUE
GETP HERE,P?ACTION
CALL STACK,M-ENTER
CALL DESCRIBE-ROOM
ZERO? STACK /?CND5
ZERO? VERBOSITY /?CND5
CALL DESCRIBE-OBJECTS
?CND5: IN? OSTRICH,OLD-HERE \TRUE
CALL ULTIMATELY-IN?,OSTRICH-NIP
ZERO? STACK /TRUE
CALL VISIBLE?,OSTRICH-NIP
ZERO? STACK /TRUE
EQUAL? HERE,TOP-OF-AIR-SHAFT /TRUE
PRINTI " The ostrich, sniffing excitedly, "
CALL GLOBAL-IN?,BED,HERE
ZERO? STACK /?CCL17
PRINTR "follows you to the door, but hesitates as it notices the bed. The ostrich, who refuses to enter any room with a bed due to a bad experience in its youth, withdraws."
?CCL17: LOC OSTRICH
FSET? STACK,WEIGHTLESSBIT \?CCL19
PRINTI "follows you in an awkward fashion somewhere between swimming and flying."
JUMP ?CND15
?CCL19: PRINTI "trots eagerly after you."
?CND15: EQUAL? HERE,SOUTH-CONNECTION \?PRD24
IN? OSTRICH,GRIMY-PASSAGE /?CTR21
?PRD24: EQUAL? HERE,EAST-CONNECTION \?PRD27
IN? OSTRICH,MAKESHIFT-CONNECTOR /?CTR21
?PRD27: IN? OSTRICH,ELEVATOR \?CCL22
?CTR21: ZERO? LIT /?CND20
PRINTI " As the ostrich crosses into gravity, it emits a surprised squawk and does a graceless bellyflop. As it struggles to its feet, it appears that only its dignity was injured."
JUMP ?CND20
?CCL22: EQUAL? HERE,GRIMY-PASSAGE \?PRD34
IN? OSTRICH,SOUTH-CONNECTION /?CCL32
?PRD34: EQUAL? HERE,MAKESHIFT-CONNECTOR \?PRD37
IN? OSTRICH,EAST-CONNECTION /?CCL32
?PRD37: EQUAL? HERE,ELEVATOR \?CND20
FSET? ELEVATOR,WEIGHTLESSBIT \?CND20
?CCL32: ZERO? LIT /?CND20
PRINTI " As the ostrich unexpectly enters the weightless environment of the "
EQUAL? HERE,ELEVATOR \?CCL46
PRINTI "elevator"
JUMP ?CND44
?CCL46: PRINTI "village"
?CND44: PRINTI ", it shoots into the air, squawking loudly. It spins head over claw for a moment, thrashing its wings ineffectually, before finally achieving a modicum of stability."
?CND20: MOVE OSTRICH,HERE
CRLF
RTRUE
.FUNCT JIGS-UP,DESC
PRINT DESC
CRLF
CRLF
PRINTI " **** You have died ****"
CRLF
CALL FINISH
RSTACK
.FUNCT ACCESSIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,PSEUDO-OBJECT \?CCL7
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
RFALSE
?CCL7: ZERO? L /FALSE
EQUAL? L,GLOBAL-OBJECTS /TRUE
EQUAL? L,LOCAL-GLOBALS \?CCL16
CALL GLOBAL-IN?,OBJ,HERE
ZERO? STACK \TRUE
?CCL16: CALL META-LOC,OBJ
EQUAL? STACK,HERE \FALSE
EQUAL? L,WINNER,HERE /TRUE
FSET? L,OPENBIT \FALSE
CALL ACCESSIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT VISIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
CALL ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL VISIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT UNTOUCHABLE?,OBJ
ZERO? OBJ /FALSE
ZERO? HANGING-IN-AIR /?CCL5
IN? OBJ,HERE \?CCL5
EQUAL? OBJ,BALLOON,ETERNAL-FLAME,LEASH /FALSE
EQUAL? OBJ,STAR \TRUE
FSET? OBJ,TRYTAKEBIT /FALSE
RTRUE
?CCL5: IN? OBJ,STAR \?CCL16
FSET? STAR,TRYTAKEBIT \?CCL16
ZERO? HANGING-IN-AIR /TRUE
?CCL16: EQUAL? OBJ,BALLOON,LEASH \?CCL21
IN? OBJ,CAGE /TRUE
?CCL21: EQUAL? OBJ,FLOYD,REX,HELEN \?CCL25
EQUAL? OBJ,ROBOT-PICKED \TRUE
?CCL25: IN? PROTAGONIST,HERE /FALSE
LOC PROTAGONIST
CALL ULTIMATELY-IN?,OBJ,STACK
ZERO? STACK \?CTR30
LOC PROTAGONIST
EQUAL? OBJ,STACK /?CTR30
LOC OBJ
EQUAL? STACK,GLOBAL-OBJECTS,LOCAL-GLOBALS \?CCL31
?CTR30: FSET? OBJ,DOORBIT /TRUE
RFALSE
?CCL31: LOC PROTAGONIST
EQUAL? STACK,PILOT-SEAT,COPILOT-SEAT \TRUE
EQUAL? OBJ,RADIO,KEYPAD,PSEUDO-OBJECT /FALSE
RTRUE
.FUNCT META-LOC,OBJ
?PRG1: ZERO? OBJ /FALSE
EQUAL? OBJ,BED \?CCL7
RETURN HERE
?CCL7: IN? OBJ,GLOBAL-OBJECTS \?CND3
RETURN GLOBAL-OBJECTS
?CND3: IN? OBJ,ROOMS \?CCL11
RETURN OBJ
?CCL11: LOC OBJ >OBJ
JUMP ?PRG1
.FUNCT OTHER-SIDE,DOBJ,P=0,TEE
?PRG1: NEXTP HERE,P >P
LESS? P,LOW-DIRECTION /FALSE
GETPT HERE,P >TEE
PTSIZE TEE
EQUAL? STACK,DEXIT \?PRG1
GETB TEE,DEXITOBJ
EQUAL? STACK,DOBJ \?PRG1
RETURN P
.FUNCT ULTIMATELY-IN?,OBJ,CONT=0
ZERO? CONT \?CND1
SET 'CONT,WINNER
?CND1: ZERO? OBJ /FALSE
IN? OBJ,CONT /TRUE
IN? OBJ,ROOMS /FALSE
LOC OBJ
CALL ULTIMATELY-IN?,STACK,CONT
RSTACK
.FUNCT SEE-INSIDE?,OBJ
ZERO? OBJ /FALSE
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
CALL ZMEMQB,OBJ1,TEE,STACK
RSTACK
.FUNCT FIND-IN,WHERE,FLAG-IN-QUESTION,STRING=0,OBJ,RECURSIVE-OBJ
FIRST? WHERE >OBJ /?KLU15
?KLU15: ZERO? OBJ /FALSE
?PRG3: FSET? OBJ,FLAG-IN-QUESTION \?CCL7
FSET? OBJ,INVISIBLE /?CCL7
ZERO? STRING \?CCL11
RETURN OBJ
?CCL11: PRINTC 91
PRINT STRING
CALL TPRINT,OBJ
PRINTC 93
CRLF
RETURN OBJ
?CCL7: CALL FIND-IN,OBJ,FLAG-IN-QUESTION >RECURSIVE-OBJ
ZERO? RECURSIVE-OBJ /?CCL13
RETURN RECURSIVE-OBJ
?CCL13: NEXT? OBJ >OBJ /?PRG3
RFALSE
.FUNCT NOW-DARK?
ZERO? LIT /FALSE
CALL LIT?,HERE
ZERO? STACK \FALSE
SET 'LIT,FALSE-VALUE
ZERO? P-IT-OBJECT /?CND6
CALL ULTIMATELY-IN?,P-IT-OBJECT
ZERO? STACK \?CND6
SET 'P-IT-OBJECT,FALSE-VALUE
?CND6: PRINTR " It is now too dark to see."
.FUNCT NOW-LIT?
ZERO? LIT \FALSE
CALL LIT?,HERE
ZERO? STACK /FALSE
SET 'LIT,TRUE-VALUE
CRLF
CALL V-LOOK
RSTACK
.FUNCT LOC-CLOSED,L
LOC PRSO >L
FSET? L,CONTBIT \FALSE
FSET? L,OPENBIT /FALSE
FSET? PRSO,TAKEBIT \FALSE
CALL DO-FIRST,STR?23,L
RSTACK
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RSTACK
.FUNCT STOP
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RETURN 8
.FUNCT ROB,WHO,WHERE=0,N,X
FIRST? WHO >X /?PRG1
?PRG1: ZERO? X /TRUE
NEXT? X >N /?KLU11
?KLU11: FSET? X,WORNBIT /?CND5
ZERO? WHERE /?CCL9
MOVE X,WHERE
JUMP ?CND5
?CCL9: REMOVE X
?CND5: SET 'X,N
JUMP ?PRG1
.FUNCT HACK-HACK,STR
PRINT STR
CALL TPRINT-PRSO
CALL HO-HUM
RSTACK
.FUNCT HO-HUM
CALL PICK-ONE,HO-HUM-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT YUKS
CALL PICK-ONE,YUK-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT IMPOSSIBLES
CALL PICK-ONE,IMPOSSIBLE-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT WASTES
CALL PICK-ONE,WASTE-LIST
PRINT STACK
CRLF
RTRUE
.ENDI