mirror of
https://github.com/historicalsource/stationfall
synced 2024-04-26 22:19:23 +03:00
3749 lines
75 KiB
Plaintext
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
|