planetfall/verbs.zap
historicalsource e85ca899aa Final Revision
2019-04-13 21:35:51 -04:00

2281 lines
43 KiB
Plaintext

.FUNCT V-VERBOSE
SET 'VERBOSE,TRUE-VALUE
SET 'SUPER-BRIEF,FALSE-VALUE
PRINTI "Maximum verbosity."
CRLF
CRLF
CALL V-LOOK
RSTACK
.FUNCT V-BRIEF
SET 'VERBOSE,FALSE-VALUE
SET 'SUPER-BRIEF,FALSE-VALUE
PRINTR "Brief descriptions."
.FUNCT V-SUPER-BRIEF
SET 'SUPER-BRIEF,TRUE-VALUE
PRINTR "Super-brief descriptions."
.FUNCT V-LOOK
SET 'C-ELAPSED,9
CALL DESCRIBE-ROOM,TRUE-VALUE
ZERO? STACK /FALSE
CALL DESCRIBE-OBJECTS,TRUE-VALUE
RSTACK
.FUNCT V-LOOK-CRETIN
PRINTR "This isn't a primitive two-word-parser adventure game. If you want to look AT that object, please say so."
.FUNCT V-FIRST-LOOK
CALL DESCRIBE-ROOM
ZERO? STACK /FALSE
ZERO? SUPER-BRIEF \FALSE
CALL DESCRIBE-OBJECTS
RSTACK
.FUNCT PRE-EXAMINE
CALL HERE?,PRSO
ZERO? STACK \FALSE
IN? PRSO,GLOBAL-OBJECTS /FALSE
EQUAL? PRSO,PSEUDO-OBJECT /FALSE
IN? PRSO,LOCAL-GLOBALS \?PRD8
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK \FALSE
?PRD8: EQUAL? PRSO,GRUE /FALSE
PRINTI "You can't see any"
CALL PRSO-PRINT
PRINTR " here!"
.FUNCT V-EXAMINE
SET 'C-ELAPSED,32
GETP PRSO,P?TEXT
ZERO? STACK /?CCL3
GETP PRSO,P?TEXT
PRINT STACK
CRLF
RTRUE
?CCL3: FSET? PRSO,DOORBIT \?CCL5
CALL V-LOOK-INSIDE
RSTACK
?CCL5: FSET? PRSO,CONTBIT \?CCL7
FSET? PRSO,OPENBIT \?CCL10
CALL V-LOOK-INSIDE
RSTACK
?CCL10: PRINTI "The "
PRINTD PRSO
PRINTR " is closed."
?CCL7: PRINTI "I see nothing special about the "
PRINTD PRSO
PRINTR "."
.FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,AV
ZERO? LOOK? /?PRD3
SET 'V?,LOOK?
JUMP ?PEN1
?PRD3: SET 'V?,VERBOSE
?PEN1: ZERO? LIT \?CND4
PRINTI "It is pitch black. You might be eaten by a grue."
CRLF
EQUAL? HERE,TRANSPORTATION-SUPPLY \FALSE
PRINTI "There is light to the south."
CRLF
RFALSE
?CND4: FSET? HERE,TOUCHBIT /?CND8
FSET HERE,TOUCHBIT
SET 'V?,TRUE-VALUE
?CND8: IN? HERE,ROOMS \?CND10
PRINTD HERE
LOC ADVENTURER
FSET? STACK,VEHBIT \?CND12
PRINTI ", in the "
LOC ADVENTURER
PRINTD STACK
?CND12: CRLF
?CND10: ZERO? LOOK? \?CCL15
ZERO? SUPER-BRIEF \TRUE
?CCL15: LOC ADVENTURER >AV
ZERO? V? /?CCL20
GETP HERE,P?ACTION
CALL STACK,M-LOOK
ZERO? STACK \TRUE
?CCL20: ZERO? V? /?CCL24
GETP HERE,P?LDESC >STR
ZERO? STR /?CCL24
PRINT STR
CRLF
JUMP ?CND18
?CCL24: GETP HERE,P?ACTION
CALL STACK,M-FLASH
?CND18: EQUAL? HERE,AV /TRUE
FSET? AV,VEHBIT \TRUE
GETP AV,P?ACTION
CALL STACK,M-LOOK
RTRUE
.FUNCT DESCRIBE-OBJECTS,V?=0
ZERO? LIT /?CCL3
FIRST? HERE \FALSE
ZERO? V? /?PRD9
SET 'V?,V?
JUMP ?PEN7
?PRD9: SET 'V?,VERBOSE
?PEN7: CALL PRINT-CONT,HERE,V?,-1
RSTACK
?CCL3: PRINTR "You can't see anything in the dark."
.FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV
ZERO? LEVEL \?CCL3
GETP OBJ,P?DESCFCN
CALL STACK,M-OBJDESC
ZERO? STACK \TRUE
?CCL3: EQUAL? OBJ,SPOUT-PLACED /TRUE
ZERO? LEVEL \?CCL9
FSET? OBJ,TOUCHBIT /?PRD13
GETP OBJ,P?FDESC >STR
ZERO? STR \?CTR8
?PRD13: GETP OBJ,P?LDESC >STR
ZERO? STR /?CCL9
?CTR8: PRINT STR
JUMP ?CND1
?CCL9: ZERO? LEVEL \?CCL17
PRINTI "There is "
FSET? OBJ,VOWELBIT \?CCL21
PRINTI "an "
JUMP ?CND19
?CCL21: PRINTI "a "
?CND19: PRINTD OBJ
PRINTI " here."
JUMP ?CND1
?CCL17: GET INDENTS,LEVEL
PRINT STACK
FSET? OBJ,VOWELBIT \?CCL24
PRINTI "An "
JUMP ?CND22
?CCL24: PRINTI "A "
?CND22: PRINTD OBJ
FSET? OBJ,WORNBIT \?CND1
PRINTI " (being worn)"
?CND1: ZERO? LEVEL \?CND27
LOC ADVENTURER >AV
ZERO? AV /?CND27
FSET? AV,VEHBIT \?CND27
PRINTI " (outside the "
PRINTD AV
PRINTC 41
?CND27: CRLF
CALL SEE-INSIDE?,OBJ
ZERO? STACK /FALSE
FIRST? OBJ \FALSE
CALL PRINT-CONT,OBJ,V?,LEVEL
RSTACK
.FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?,AV,STR,PV?=0,INV?=0
FIRST? OBJ >Y \TRUE
LOC ADVENTURER >AV
ZERO? AV /?CCL5
FSET? AV,VEHBIT /?CND3
?CCL5: SET 'AV,FALSE-VALUE
?CND3: SET '1ST?,TRUE-VALUE
LOC OBJ
EQUAL? ADVENTURER,OBJ,STACK \?PRG11
SET 'INV?,TRUE-VALUE
FIRST? OBJ >Y /?PRG35
?PRG35: ZERO? Y \?CCL39
ZERO? PV? /?CND40
ZERO? AV /?CND40
FIRST? AV \?CND40
CALL PRINT-CONT,AV,V?,LEVEL
?CND40: ZERO? 1ST? /TRUE
RFALSE
?PRG11: ZERO? Y \?CCL15
ZERO? 1ST? /TRUE
RFALSE
?CCL15: EQUAL? Y,AV \?CCL20
SET 'PV?,TRUE-VALUE
JUMP ?CND13
?CCL20: EQUAL? Y,WINNER /?CND13
FSET? Y,INVISIBLE /?CND13
FSET? Y,TOUCHBIT /?CND13
GETP Y,P?FDESC >STR
ZERO? STR /?CND13
FSET? Y,NDESCBIT /?CND26
PRINT STR
CRLF
?CND26: CALL SEE-INSIDE?,Y
ZERO? STACK /?CND13
LOC Y
GETP STACK,P?DESCFCN
ZERO? STACK \?CND13
FIRST? Y \?CND13
CALL PRINT-CONT,Y,V?,0
?CND13: NEXT? Y >Y /?PRG11
JUMP ?PRG11
?CCL39: EQUAL? Y,AV,ADVENTURER /?CND37
FSET? Y,INVISIBLE /?CND37
ZERO? INV? \?CCL49
FSET? Y,TOUCHBIT /?CCL49
GETP Y,P?FDESC
ZERO? STACK \?CND37
?CCL49: FSET? Y,NDESCBIT /?CCL57
ZERO? 1ST? /?CND58
CALL FIRSTER,OBJ,LEVEL
ZERO? STACK /?CND60
LESS? LEVEL,0 \?CND60
SET 'LEVEL,0
?CND60: INC 'LEVEL
SET '1ST?,FALSE-VALUE
?CND58: CALL DESCRIBE-OBJECT,Y,V?,LEVEL
JUMP ?CND37
?CCL57: FIRST? Y \?CND37
CALL SEE-INSIDE?,Y
ZERO? STACK /?CND37
CALL PRINT-CONT,Y,V?,LEVEL
?CND37: NEXT? Y >Y /?PRG35
JUMP ?PRG35
.FUNCT FIRSTER,OBJ,LEVEL
EQUAL? OBJ,ADVENTURER \?CCL3
PRINTR "You are carrying:"
?CCL3: IN? OBJ,ROOMS /FALSE
GRTR? LEVEL,0 \?CND6
GET INDENTS,LEVEL
PRINT STACK
?CND6: FSET? OBJ,SURFACEBIT \?CCL10
PRINTI "Sitting on the "
PRINTD OBJ
PRINTR " is:"
?CCL10: FSET? OBJ,ACTORBIT \?CCL12
PRINTI "The "
PRINTD OBJ
PRINTR " is holding:"
?CCL12: PRINTI "The "
PRINTD OBJ
PRINTR " contains:"
.FUNCT SCORE-OBJ,OBJ
GETP OBJ,P?VALUE
GRTR? STACK,0 \FALSE
FSET OBJ,TOUCHBIT
GETP OBJ,P?VALUE
ADD SCORE,STACK >SCORE
PUTP OBJ,P?VALUE,0
RTRUE
.FUNCT V-SCORE,ASK?=1
PRINTI "Your score "
ZERO? ASK? /?CCL3
PRINTI "would be "
JUMP ?CND1
?CCL3: PRINTI "is "
?CND1: PRINTN SCORE
PRINTI " (out of 80 points). It is Day "
PRINTN DAY
PRINTI " of your adventure. Current Galactic Standard Time "
IN? CHRONOMETER,ADVENTURER \?CCL6
PRINTI "(adjusted to your local day-cycle) is "
FSET? CHRONOMETER,MUNGEDBIT \?CCL9
PRINTN MUNGED-TIME
JUMP ?CND4
?CCL9: PRINTN INTERNAL-MOVES
JUMP ?CND4
?CCL6: PRINTI "is impossible to determine, since you're not wearing your chronometer"
?CND4: PRINTC 46
CRLF
PRINTI "This score gives you the rank of "
EQUAL? SCORE,80 \?CCL12
PRINTI "Galactic Overlord"
JUMP ?CND10
?CCL12: GRTR? SCORE,72 \?CCL14
PRINTI "Cluster Admiral"
JUMP ?CND10
?CCL14: GRTR? SCORE,64 \?CCL16
PRINTI "System Captain"
JUMP ?CND10
?CCL16: GRTR? SCORE,48 \?CCL18
PRINTI "Planetary Commodore"
JUMP ?CND10
?CCL18: GRTR? SCORE,36 \?CCL20
PRINTI "Lieutenant"
JUMP ?CND10
?CCL20: GRTR? SCORE,24 \?CCL22
PRINTI "Ensign First Class"
JUMP ?CND10
?CCL22: GRTR? SCORE,12 \?CCL24
PRINTI "Space Cadet"
JUMP ?CND10
?CCL24: PRINTI "Beginner"
?CND10: PRINTC 46
CRLF
RETURN SCORE
.FUNCT FINISH,DIED,REPEATING=0
CRLF
ZERO? REPEATING \?CND1
CALL V-SCORE
ZERO? DIED /?CND1
CRLF
PRINTI "Oh, well. According to the Treaty of Gishen IV, signed in 8747 GY, all adventure game players must be given another chance after dying. In the interests of interstellar peace..."
CRLF
?CND1: PUTB P-INBUF,0,10
CRLF
PRINTI "Would you like to restart the game from the beginning, restore a saved game position, or end this session of the game? (Type RESTART, RESTORE, or QUIT.)"
CRLF
CRLF
PRINTC 62
READ P-INBUF,P-LEXV
PUTB P-INBUF,0,80
GET P-LEXV,1
EQUAL? STACK,W?RESTAR \?CCL7
RESTART
PRINTI "Failed."
CRLF
CALL FINISH,FALSE-VALUE,TRUE-VALUE
RSTACK
?CCL7: GET P-LEXV,1
EQUAL? STACK,W?RESTOR \?CCL9
RESTORE \?CCL12
PRINTR "Ok."
?CCL12: PRINTI "Failed."
CRLF
CALL FINISH,FALSE-VALUE,TRUE-VALUE
RSTACK
?CCL9: GET P-LEXV,1
EQUAL? STACK,W?QUIT,W?Q \?CCL14
QUIT
RTRUE
?CCL14: CALL FINISH,FALSE-VALUE,TRUE-VALUE
RSTACK
.FUNCT V-QUIT
CALL V-SCORE
IN? FLOYD,HERE \?CND1
FSET? FLOYD,RLANDBIT \?CND1
SET 'FLOYD-SPOKE,TRUE-VALUE
CRLF
PRINTI "Floyd grins impishly. ""Giving up, huh?"""
CRLF
?CND1: CRLF
PRINTI "Do you wish to leave the game? (Y is affirmative): "
CALL YES?
ZERO? STACK /?CCL7
QUIT
RTRUE
?CCL7: PRINTR "Ok."
.FUNCT YES?
PUTB P-INBUF,0,10
PRINTC 62
READ P-INBUF,P-LEXV
PUTB P-INBUF,0,80
GET P-LEXV,1
EQUAL? STACK,W?YES,W?Y /TRUE
RFALSE
.FUNCT V-VERSION,CNT=17
PRINTI "PLANETFALL
Infocom interactive fiction - a science fiction story
Copyright (c) 1983 by Infocom, Inc. All rights reserved.
"
PRINTI "PLANETFALL is a registered trademark of Infocom, Inc.
Release "
GET 0,1
BAND STACK,2047
PRINTN STACK
PRINTI " / Serial number "
?PRG1: IGRTR? 'CNT,23 /?REP2
GETB 0,CNT
PRINTC STACK
JUMP ?PRG1
?REP2: CRLF
IN? FLOYD,HERE \FALSE
FSET? FLOYD,RLANDBIT \FALSE
SET 'FLOYD-SPOKE,TRUE-VALUE
CRLF
PRINTR """Last version was better,"" says Floyd. ""More bugs. Bugs make game fun."""
.FUNCT V-AGAIN,OBJ
ZERO? L-PRSA \?CCL3
CALL ANYMORE
RSTACK
?CCL3: EQUAL? HERE,LAST-PSEUDO-LOC /?CCL5
EQUAL? PSEUDO-OBJECT,L-PRSO,L-PRSI \?CCL5
SET 'L-PRSA,FALSE-VALUE
CALL ANYMORE
RSTACK
?CCL5: EQUAL? L-PRSA,V?WALK \?CCL9
CALL DO-WALK,L-PRSO
RSTACK
?CCL9: ZERO? L-PRSO /?CCL12
LOC L-PRSO
EQUAL? STACK,FALSE-VALUE \?CCL12
SET 'OBJ,L-PRSO
JUMP ?CND10
?CCL12: ZERO? L-PRSI /?CFL15
LOC L-PRSI
EQUAL? STACK,FALSE-VALUE /?CCL16
?CFL15: SET 'OBJ,0
JUMP ?CND10
?CCL16: SET 'OBJ,L-PRSI
?CND10: ZERO? OBJ /?CCL21
EQUAL? OBJ,PSEUDO-OBJECT,ROOMS /?CCL21
CALL ANYMORE
RETURN 2
?CCL21: CALL PERFORM,L-PRSA,L-PRSO,L-PRSI
RTRUE
.FUNCT JIGS-UP,DESC,PLAYER?=0
PRINT DESC
CRLF
CRLF
PRINTI " **** You have died ****"
CRLF
CALL FINISH,TRUE-VALUE
RSTACK
.FUNCT V-RESTORE
IN? FLOYD,HERE \?CND1
FSET? FLOYD,RLANDBIT \?CND1
SET 'FLOYD-SPOKE,TRUE-VALUE
PRINTI "Floyd looks disappointed, but understanding. ""That part of the game was more fun than this part,"" he admits."
CRLF
CRLF
?CND1: RESTORE \?CCL7
PRINTR "Ok."
?CCL7: PRINTR "Failed."
.FUNCT V-SAVE
IN? FLOYD,HERE \?CND1
FSET? FLOYD,RLANDBIT \?CND1
SET 'FLOYD-SPOKE,TRUE-VALUE
PRINTI "Floyd's eyes light up. ""Oh boy! Are we gonna try something dangerous now?"""
CRLF
CRLF
?CND1: SAVE \?CCL7
PRINTR "Ok."
?CCL7: PRINTR "Failed."
.FUNCT V-RESTART
CALL V-SCORE,TRUE-VALUE
IN? FLOYD,HERE \?CND1
FSET? FLOYD,RLANDBIT \?CND1
SET 'FLOYD-SPOKE,TRUE-VALUE
PRINTI "Floyd looks sad. ""Going away?"" he asks."
CRLF
?CND1: CRLF
PRINTI "Do you wish to restart? (Y is affirmative): "
CALL YES?
ZERO? STACK /FALSE
PRINTI "Restarting."
CRLF
RESTART
PRINTR "Failed."
.FUNCT V-WALK-AROUND
CALL USE-DIRECTIONS
RSTACK
.FUNCT V-WALK-TO
IN? PRSO,HERE /?CTR2
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL3
?CTR2: PRINTR "It's here!"
?CCL3: CALL USE-DIRECTIONS
RSTACK
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM,TEMP-ELAPSED,?TMP1
ZERO? P-WALK-DIR \?CCL3
CALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CCL3: GETPT HERE,PRSO >PT
ZERO? PT /?CCL5
GETP HERE,P?C-MOVE >?TMP1
SUB PRSO,LOW-DIRECTION
GET ?TMP1,STACK >TEMP-ELAPSED
ZERO? TEMP-ELAPSED \?CND6
SET 'TEMP-ELAPSED,DEFAULT-MOVE
?CND6: PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?CCL10
SET 'C-ELAPSED,TEMP-ELAPSED
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL10: EQUAL? PTS,NEXIT \?CCL12
GET PT,NEXITSTR
PRINT STACK
CRLF
RETURN 2
?CCL12: EQUAL? PTS,FEXIT \?CCL16
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM /?PRG20
CALL GOTO,RM
RSTACK
?PRG20: RETURN 2
?CCL16: EQUAL? PTS,CEXIT \?CCL23
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?CCL26
SET 'C-ELAPSED,TEMP-ELAPSED
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL26: GET PT,CEXITSTR >STR
ZERO? STR /?CCL28
PRINT STR
CRLF
RETURN 2
?CCL28: PRINTI "You can't go that way."
CRLF
RETURN 2
?CCL23: EQUAL? PTS,DEXIT \FALSE
GETB PT,DEXITOBJ >OBJ
FSET? OBJ,OPENBIT \?CCL37
SET 'C-ELAPSED,TEMP-ELAPSED
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?CCL37: GET PT,DEXITSTR >STR
ZERO? STR /?CCL39
PRINT STR
CRLF
RETURN 2
?CCL39: PRINTI "The "
PRINTD OBJ
PRINTI " is closed."
CRLF
CALL THIS-IS-IT,OBJ
RETURN 2
?CCL5: ZERO? LIT \?CCL45
RANDOM 100
LESS? 75,STACK /?CCL45
CALL JIGS-UP,STR?63
RSTACK
?CCL45: PRINTI "You can't go that way."
CRLF
RETURN 2
.FUNCT V-INVENTORY
SET 'C-ELAPSED,18
FIRST? ADVENTURER \?CCL3
CALL PRINT-CONT,ADVENTURER
RSTACK
?CCL3: PRINTR "You are empty-handed."
.FUNCT PRE-TAKE
IN? PRSO,ADVENTURER \?CCL3
PRINTR "You already have it."
?CCL3: EQUAL? PRSO,GOOD-BOARD \?CCL5
FSET? GOOD-BOARD,NDESCBIT /FALSE
?CCL5: LOC PRSO
FSET? STACK,CONTBIT \?CCL9
LOC PRSO
FSET? STACK,OPENBIT /?CCL9
PRINTR "You can't reach into a closed container."
?CCL9: ZERO? PRSI /?CCL13
LOC PRSO
EQUAL? PRSI,STACK /?CCL16
EQUAL? PRSO,KEY \?CCL19
FSET? KEY,TOUCHBIT \FALSE
?CCL19: EQUAL? PRSO,CELERY \?CCL23
EQUAL? PRSI,AMBASSADOR /FALSE
?CCL23: PRINTR "It's not in that!"
?CCL16: SET 'PRSI,FALSE-VALUE
RFALSE
?CCL13: LOC ADVENTURER
EQUAL? PRSO,STACK \FALSE
PRINTR "You are in it, asteroid-brain!"
.FUNCT V-TAKE
CALL ITAKE
EQUAL? STACK,TRUE-VALUE \FALSE
PRINTR "Taken."
.FUNCT TRYTAKE
IN? PRSO,WINNER /TRUE
FSET? PRSO,TRYTAKEBIT \?CCL5
GETP PRSO,P?ACTION
ZERO? STACK /?CCL5
CALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL5: CALL ITAKE
RSTACK
.FUNCT ITAKE,VB=1,CNT,OBJ,?TMP1
FSET? PRSO,TAKEBIT /?CCL3
ZERO? VB /FALSE
CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RFALSE
?CCL3: LOC PRSO
IN? STACK,ADVENTURER /?CCL7
CALL WEIGHT,PRSO >?TMP1
CALL WEIGHT,ADVENTURER
ADD ?TMP1,STACK
GRTR? STACK,LOAD-ALLOWED \?CCL7
ZERO? VB /?PRG12
PRINTI "Your load is too heavy."
CRLF
?PRG12: RETURN 2
?CCL7: CALL CCOUNT,ADVENTURER >CNT
GRTR? CNT,FUMBLE-NUMBER \?CCL15
MUL CNT,FUMBLE-PROB >?TMP1
RANDOM 100
LESS? ?TMP1,STACK /?CCL15
FIRST? ADVENTURER >OBJ /?PRG19
?PRG19: FSET? OBJ,WORNBIT \?REP20
NEXT? OBJ >OBJ /?PRG19
JUMP ?PRG19
?REP20: PRINTI "Oh, no. The "
PRINTD OBJ
PRINTI " slips from your arms while taking the "
PRINTD PRSO
PRINTI " and both tumble to the ground."
CRLF
EQUAL? FLASK,OBJ,PRSO \?CND25
IN? CHEMICAL-FLUID,FLASK \?CND25
REMOVE CHEMICAL-FLUID
PRINTI "Unfortunately, the chemical spills out of the flask and evaporates."
CRLF
?CND25: EQUAL? CANTEEN,OBJ,PRSO \?CND29
IN? HIGH-PROTEIN,CANTEEN \?CND29
FSET? CANTEEN,OPENBIT \?CND29
REMOVE HIGH-PROTEIN
PRINTI "To make matters worse, the high-protein liquid spills all over the place and then evaporates."
CRLF
?CND29: MOVE OBJ,HERE
MOVE PRSO,HERE
RETURN 2
?CCL15: MOVE PRSO,ADVENTURER
FCLEAR PRSO,NDESCBIT
CALL SCORE-OBJ,PRSO
FSET PRSO,TOUCHBIT
EQUAL? PRSO,SPOUT-PLACED \TRUE
SET 'SPOUT-PLACED,GROUND
RTRUE
.FUNCT PRE-PUT
ZERO? PRSO /FALSE
FSET? PRSO,WORNBIT \?CCL5
PRINTR "You can't while you're wearing it."
?CCL5: IN? PRSO,GLOBAL-OBJECTS /?CCL7
FSET? PRSO,TAKEBIT /FALSE
?CCL7: PRINTR "Nice try."
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
FSET? PRSI,OPENBIT /?CND1
FSET? PRSI,DOORBIT /?CND1
FSET? PRSI,CONTBIT /?CND1
FSET? PRSI,VEHBIT /?CND1
PRINTR "You can't do that."
?CND1: FSET? PRSI,OPENBIT /?CCL9
PRINTI "The "
PRINTD PRSI
PRINTR " isn't open."
?CCL9: EQUAL? PRSI,PRSO \?CCL11
PRINTR "How can you do that?"
?CCL11: IN? PRSO,PRSI \?CCL13
PRINTI "The "
PRINTD PRSO
PRINTI " is already in the "
PRINTD PRSI
PRINTR "."
?CCL13: IN? PRSI,PRSO \?CCL15
PRINTI "How can you put the "
PRINTD PRSO
PRINTI " in the "
PRINTD PRSI
PRINTI " when the "
PRINTD PRSI
PRINTI " is already in the "
PRINTD PRSO
PRINTR "?"
?CCL15: 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 \?CCL17
PRINTR "There's no room."
?CCL17: CALL HELD?,PRSO
ZERO? STACK \?CCL19
CALL TRYTAKE
ZERO? STACK /TRUE
?CCL19: CALL SCORE-OBJ,PRSO
MOVE PRSO,PRSI
FSET PRSO,TOUCHBIT
PRINTR "Done."
.FUNCT V-SLIDE
CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
.FUNCT PRE-GIVE
CALL HELD?,PRSO
ZERO? STACK \FALSE
CALL NOT-HOLDING
RSTACK
.FUNCT PRE-SGIVE
CALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-GIVE
FSET? PRSI,ACTORBIT /?CCL3
PRINTI "You can't give "
CALL A-AN
PRINTD PRSO
PRINTI " to "
FSET? PRSI,VOWELBIT \?CCL6
PRINTI "an "
JUMP ?CND4
?CCL6: PRINTI "a "
?CND4: PRINTD PRSI
PRINTR "!"
?CCL3: PRINTI "The "
PRINTD PRSI
PRINTR " declines your offer."
.FUNCT V-SGIVE
PRINTR "Foo!"
.FUNCT V-DROP
CALL IDROP
ZERO? STACK /FALSE
PRINTR "Dropped."
.FUNCT V-THROW
CALL IDROP
ZERO? STACK /FALSE
PRINTR "Thrown."
.FUNCT IDROP
CALL HELD?,PRSO
ZERO? STACK \?CCL3
PRINTI "You're not carrying the "
PRINTD PRSO
PRINTC 46
CRLF
RFALSE
?CCL3: FSET? PRSO,WORNBIT \?CCL5
CALL TAKE-IT-OFF
RFALSE
?CCL5: IN? PRSO,WINNER /?CCL7
LOC PRSO
FSET? STACK,OPENBIT /?CCL7
PRINTI "The "
PRINTD PRSO
PRINTI " is closed."
CRLF
RFALSE
?CCL7: MOVE PRSO,HERE
RTRUE
.FUNCT V-OPEN,F,STR
FSET? PRSO,CONTBIT /?CCL3
FSET? PRSO,DOORBIT /?CCL3
PRINTI "You must be very clever to do that to the "
PRINTD PRSO
PRINTR "."
?CCL3: FSET? PRSO,DOORBIT /?CTR6
GETP PRSO,P?CAPACITY
ZERO? STACK /?CCL7
?CTR6: FSET? PRSO,OPENBIT \?CCL12
CALL ALREADY,STR?70
RSTACK
?CCL12: FSET PRSO,OPENBIT
FSET? PRSO,DOORBIT \?CCL15
PRINTI "The "
PRINTD PRSO
PRINTR " is now open."
?CCL15: FIRST? PRSO \?CTR16
FSET? PRSO,TRANSBIT \?CCL17
?CTR16: PRINTR "Opened."
?CCL17: FIRST? PRSO >F \?CCL21
NEXT? F /?CCL21
GETP F,P?FDESC >STR
ZERO? STR /?CCL21
PRINTI "The "
PRINTD PRSO
PRINTI " opens."
CRLF
PRINT STR
CRLF
RTRUE
?CCL21: PRINTI "Opening the "
PRINTD PRSO
PRINTI " reveals "
CALL PRINT-CONTENTS,PRSO
PRINTR "."
?CCL7: PRINTI "The "
PRINTD PRSO
PRINTR " cannot be opened."
.FUNCT V-OPEN-WITH
EQUAL? PRSI,HANDS \?CCL3
CALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL3: PRINTR "That doesn't work."
.FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,IT?=0,TWO?=0
FIRST? OBJ >F \FALSE
?PRG4: NEXT? F >N /?BOGUS6
?BOGUS6: ZERO? 1ST? /?CCL9
SET '1ST?,FALSE-VALUE
JUMP ?CND7
?CCL9: PRINTI ", "
ZERO? N \?CND7
PRINTI "and "
?CND7: PRINTI "a "
PRINTD F
ZERO? IT? \?CCL14
ZERO? TWO? \?CCL14
SET 'IT?,F
JUMP ?CND12
?CCL14: SET 'TWO?,TRUE-VALUE
SET 'IT?,FALSE-VALUE
?CND12: SET 'F,N
ZERO? F \?PRG4
ZERO? IT? /TRUE
ZERO? TWO? \TRUE
CALL THIS-IS-IT,IT?
RTRUE
.FUNCT V-CLOSE
FSET? PRSO,CONTBIT /?CCL3
FSET? PRSO,DOORBIT /?CCL3
PRINTI "You can't do that to "
CALL A-AN
PRINTD PRSO
PRINTR "."
?CCL3: FSET? PRSO,SURFACEBIT /?CCL7
GETP PRSO,P?CAPACITY
ZERO? STACK \?CTR6
FSET? PRSO,DOORBIT \?CCL7
?CTR6: FSET? PRSO,OPENBIT \?CCL14
FCLEAR PRSO,OPENBIT
PRINTR "Closed."
?CCL14: CALL ALREADY,STR?71
RSTACK
?CCL7: PRINTR "You cannot close that."
.FUNCT CCOUNT,OBJ,CNT=0,X
FIRST? OBJ >X /?PRG3
RETURN CNT
?PRG3: INC 'CNT
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 /?PRG3
?CND1: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT V-SCRIPT
IN? FLOYD,HERE \?CND1
FSET? FLOYD,RLANDBIT \?CND1
SET 'FLOYD-SPOKE,TRUE-VALUE
PRINTI "Floyd hops around excitedly. ""Oh boy! I've never seen my name in print before!"""
CRLF
CRLF
?CND1: GET 0,8
BOR STACK,1
PUT 0,8,STACK
PRINTI "Here begins"
PRINT COPR-NOTICE
CRLF
RTRUE
.FUNCT V-UNSCRIPT
IN? FLOYD,HERE \?CND1
FSET? FLOYD,RLANDBIT \?CND1
SET 'FLOYD-SPOKE,TRUE-VALUE
PRINTI """Can I have a copy of the printout?"" asks Floyd, looking up at you."
CRLF
CRLF
?CND1: PRINTI "Here ends"
PRINT COPR-NOTICE
CRLF
GET 0,8
BAND STACK,-2
PUT 0,8,STACK
RTRUE
.FUNCT PRE-MOVE
CALL HELD?,PRSO
ZERO? STACK /FALSE
PRINTR "Why juggle objects?"
.FUNCT V-MOVE
FSET? PRSO,TAKEBIT \?CCL3
PRINTI "Moving the "
PRINTD PRSO
PRINTR " reveals nothing."
?CCL3: PRINTI "You can't move the "
PRINTD PRSO
PRINTR "."
.FUNCT V-LAMP-ON
FSET? PRSO,LIGHTBIT \?CCL3
FSET? PRSO,ONBIT \?CCL6
CALL ALREADY,STR?73
RTRUE
?CCL6: FSET PRSO,ONBIT
PRINTI "The "
PRINTD PRSO
PRINTR " is now on."
?CCL3: PRINTR "You can't turn that on."
.FUNCT V-LAMP-OFF
FSET? PRSO,LIGHTBIT \?CCL3
FSET? PRSO,ONBIT /?CCL6
CALL ALREADY,STR?74
RTRUE
?CCL6: FCLEAR PRSO,ONBIT
PRINTI "The "
PRINTD PRSO
PRINTR " is now off."
?CCL3: PRINTR "You can't turn that off."
.FUNCT V-WAIT
SET 'C-ELAPSED,40
PRINTR "Time passes..."
.FUNCT PRE-BOARD,AV
LOC ADVENTURER >AV
EQUAL? PRSO,GROUND,GLOBAL-SHUTTLE /FALSE
FSET? PRSO,VEHBIT \?CCL5
FSET? AV,VEHBIT \FALSE
PRINTI "You are already in it!"
CRLF
RETURN 2
?CCL5: PRINTI "I suppose you have a theory on boarding "
CALL A-AN
PRINTD PRSO
PRINTC 46
CRLF
RETURN 2
.FUNCT V-BOARD,AV
PRINTI "You are now in the "
PRINTD PRSO
PRINTC 46
CRLF
MOVE ADVENTURER,PRSO
GETP PRSO,P?ACTION
CALL STACK,M-ENTER
RTRUE
.FUNCT V-DISEMBARK
EQUAL? PRSO,ROOMS \?CCL3
IN? ADVENTURER,SAFETY-WEB \?CCL6
CALL PERFORM,V?DISEMBARK,SAFETY-WEB
RTRUE
?CCL6: IN? ADVENTURER,BED \?CCL8
CALL OWN-FEET
RSTACK
?CCL8: IN? ADVENTURER,SHUTTLE-CAR-ALFIE \?CCL10
CALL DO-WALK,P?NORTH
RSTACK
?CCL10: IN? ADVENTURER,SHUTTLE-CAR-BETTY \?CCL12
CALL DO-WALK,P?SOUTH
RSTACK
?CCL12: IN? ADVENTURER,BRIG \?CCL14
CALL PERFORM,V?ZESCAPE
RTRUE
?CCL14: CALL DO-WALK,P?OUT
RSTACK
?CCL3: LOC ADVENTURER
EQUAL? STACK,PRSO /?CCL16
PRINTI "You're not in that!"
CRLF
RETURN 2
?CCL16: CALL OWN-FEET
RSTACK
.FUNCT OWN-FEET
MOVE ADVENTURER,HERE
PRINTR "You're on your own feet again."
.FUNCT V-STAND
LOC ADVENTURER
FSET? STACK,VEHBIT \?CCL3
LOC ADVENTURER
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?CCL3: PRINTR "You are already standing, I think."
.FUNCT GOTO,RM,V?=1,WLOC,OLIT
LOC WINNER >WLOC
SET 'OLIT,LIT
MOVE ADVENTURER,RM
SET 'HERE,RM
CALL LIT?,HERE >LIT
ZERO? OLIT \?CND1
ZERO? LIT \?CND1
RANDOM 100
LESS? 75,STACK /?CND1
CALL JIGS-UP,STR?75
RTRUE
?CND1: GETP HERE,P?ACTION
CALL STACK,M-ENTER
EQUAL? STACK,2 /TRUE
ZERO? V? /?CND8
CALL V-FIRST-LOOK
?CND8: CALL SCORE-OBJ,RM
RTRUE
.FUNCT V-EAT
PRINTI "I don't think that the "
PRINTD PRSO
PRINTR " would agree with you."
.FUNCT V-EAT-FROM,X
FIRST? PRSO >X /?BOGUS1
?BOGUS1: FSET? PRSO,OPENBIT /?CCL4
PRINTR "It's closed."
?CCL4: NEXT? X \?CCL6
PRINTI "There's more than one thing in the "
PRINTD PRSO
PRINTR "."
?CCL6: ZERO? X /?CCL8
CALL PERFORM,V?EAT,X
RTRUE
?CCL8: PRINTR "It's empty!"
.FUNCT V-CURSE
PRINTR "Such language from an Ensign in the Stellar Patrol!"
.FUNCT V-LISTEN
SET 'C-ELAPSED,18
PRINTI "The "
PRINTD PRSO
PRINTR " makes no sound."
.FUNCT V-FOLLOW
PRINTI "The "
PRINTD PRSO
PRINTR " is right here!"
.FUNCT V-LEAP
ZERO? PRSO /?CCL3
IN? PRSO,HERE \?CCL6
FSET? PRSO,ACTORBIT \?CCL9
PRINTI "The "
PRINTD PRSO
PRINTR " is too big to jump over."
?CCL9: CALL V-SKIP
RSTACK
?CCL6: PRINTR "That would be a good trick."
?CCL3: CALL V-SKIP
RSTACK
.FUNCT V-SKIP
CALL PICK-ONE,WHEEEEE
PRINT STACK
CRLF
RTRUE
.FUNCT V-LEAVE
IN? ADVENTURER,BED \?CCL3
CALL PERFORM,V?DISEMBARK,BED
RTRUE
?CCL3: IN? ADVENTURER,SAFETY-WEB \?CCL5
CALL PERFORM,V?DISEMBARK,SAFETY-WEB
RTRUE
?CCL5: CALL DO-WALK,P?OUT
RSTACK
.FUNCT V-HELLO
ZERO? PRSO /?CCL3
PRINTI "Until now, I've only heard demented Denebian Devils say ""Hello"" to "
CALL A-AN
PRINTD PRSO
PRINTR "."
?CCL3: CALL PICK-ONE,HELLOS
PRINT STACK
CRLF
RTRUE
.FUNCT V-HELP
PRINTR "If you're really stuck, you can order a complete map and InvisiClues Hint Booklet using the order form in your game package."
.FUNCT PRE-READ
ZERO? LIT \FALSE
PRINTR "It is impossible to read in the dark."
.FUNCT V-READ
FSET? PRSO,READBIT /?CCL3
PRINTI "How can I read "
CALL A-AN
PRINTD PRSO
PRINTR "?"
?CCL3: GETP PRSO,P?TEXT
PRINT STACK
CRLF
SET 'C-ELAPSED,18
RETURN C-ELAPSED
.FUNCT V-LOOK-UNDER
PRINTI "There is nothing but "
EQUAL? PRSO,AMBASSADOR \?CCL3
PRINTI "slime"
JUMP ?CND1
?CCL3: PRINTI "dust"
?CND1: PRINTR " there."
.FUNCT V-LOOK-BEHIND
CALL V-LOOK-UNDER
RSTACK
.FUNCT V-LOOK-INSIDE
FSET? PRSO,ACTORBIT \?CCL3
PRINTR "There is nothing special to be seen."
?CCL3: FSET? PRSO,DOORBIT \?CCL5
FSET? PRSO,OPENBIT \?CCL8
PRINTI "The "
PRINTD PRSO
PRINTI " is open, but I can't tell what's beyond it"
JUMP ?CND6
?CCL8: PRINTI "The "
PRINTD PRSO
PRINTI " is closed"
?CND6: PRINTR "."
?CCL5: FSET? PRSO,CONTBIT \?CCL10
FSET? PRSO,OPENBIT /?CCL13
CALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL13: CALL SEE-INSIDE?,PRSO
ZERO? STACK /?CCL15
FIRST? PRSO \?CCL18
CALL PRINT-CONT,PRSO
ZERO? STACK \TRUE
?CCL18: FSET? PRSO,SURFACEBIT \?CCL22
PRINTI "There is nothing on the "
PRINTD PRSO
PRINTR "."
?CCL22: PRINTI "The "
PRINTD PRSO
PRINTR " is empty."
?CCL15: PRINTI "The "
PRINTD PRSO
PRINTR " is closed."
?CCL10: FSET? PRSO,TRANSBIT \?CCL24
PRINTI "You can see dimly through the "
PRINTD PRSO
PRINTR "."
?CCL24: PRINTI "You can't look inside "
CALL A-AN
PRINTD PRSO
PRINTR "."
.FUNCT SEE-INSIDE?,OBJ
FSET? OBJ,INVISIBLE /FALSE
FSET? OBJ,TRANSBIT /TRUE
FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT V-LOOK-DOWN
CALL PERFORM,V?EXAMINE,GROUND
RTRUE
.FUNCT V-TURN
PRINTR "You can't do that."
.FUNCT V-LOCK
CALL V-TURN
RSTACK
.FUNCT V-UNLOCK
CALL V-TURN
RSTACK
.FUNCT V-ATTACK
FSET? PRSO,ACTORBIT \?CCL3
PRINTI "The "
PRINTD PRSO
PRINTR " is frightened and backs away."
?CCL3: PRINTI "I've known strange beings, but attacking "
CALL A-AN
PRINTD PRSO
PRINTR "???"
.FUNCT V-KICK
CALL HACK-HACK,STR?82
RSTACK
.FUNCT V-WAVE
CALL HACK-HACK,STR?83
RSTACK
.FUNCT V-RUB
CALL HACK-HACK,STR?84
RSTACK
.FUNCT V-PUSH
ZERO? PRSI \?CCL3
EQUAL? PRSO,INTNUM \?CCL3
EQUAL? HERE,LIBRARY-LOBBY,MINI-BOOTH \?CCL8
PRINTR "You probably want to use the TYPE command. Check your documentation."
?CCL8: EQUAL? P-NUMBER,1 \?CCL10
EQUAL? HERE,BOOTH-2,BOOTH-3 \?CCL13
CALL PERFORM,V?PUSH,TELEPORTATION-BUTTON-1
RTRUE
?CCL13: EQUAL? HERE,BOOTH-1 \?CCL15
CALL NO-BUTTON,BOOTH-1
RSTACK
?CCL15: PRINTR "Push a number?!?"
?CCL10: EQUAL? P-NUMBER,2 \?CCL17
EQUAL? HERE,BOOTH-1,BOOTH-3 \?CCL20
CALL PERFORM,V?PUSH,TELEPORTATION-BUTTON-2
RTRUE
?CCL20: EQUAL? HERE,BOOTH-2 \?CCL22
CALL NO-BUTTON,BOOTH-2
RSTACK
?CCL22: PRINTR "Push a number?!?"
?CCL17: EQUAL? P-NUMBER,3 \?CCL24
EQUAL? HERE,BOOTH-1,BOOTH-2 \?CCL27
CALL PERFORM,V?PUSH,TELEPORTATION-BUTTON-3
RTRUE
?CCL27: EQUAL? HERE,BOOTH-3 \?CCL29
CALL NO-BUTTON,BOOTH-3
RSTACK
?CCL29: PRINTR "Push a number?!?"
?CCL24: PRINTR "Push a number?!?"
?CCL3: CALL HACK-HACK,STR?85
RSTACK
.FUNCT NO-BUTTON,NUMBER
PRINTI "There's no button here that's labelled with the number "
EQUAL? NUMBER,BOOTH-1 \?CCL3
PRINTC 49
JUMP ?CND1
?CCL3: EQUAL? NUMBER,BOOTH-2 \?CCL5
PRINTC 50
JUMP ?CND1
?CCL5: EQUAL? NUMBER,BOOTH-3 \?CND1
PRINTC 51
?CND1: PRINTR "."
.FUNCT V-PUSH-UP
CALL HACK-HACK,STR?86
RSTACK
.FUNCT V-PUSH-DOWN
CALL HACK-HACK,STR?87
RSTACK
.FUNCT V-PULL
CALL HACK-HACK,STR?88
RSTACK
.FUNCT V-MUNG
CALL HACK-HACK,STR?89
RSTACK
.FUNCT HACK-HACK,STR
PRINT STR
PRINTD PRSO
CALL PICK-ONE,HO-HUM
PRINT STACK
CRLF
RTRUE
.FUNCT WORD-TYPE,OBJ,WORD,SYNS,?TMP1
GETPT OBJ,P?SYNONYM >SYNS
PTSIZE SYNS
DIV STACK,2
SUB STACK,1
CALL ZMEMQ,WORD,SYNS,STACK
RSTACK
.FUNCT V-KNOCK
CALL WORD-TYPE,PRSO,W?DOOR
ZERO? STACK /?CCL3
PRINTR "Nobody's home."
?CCL3: PRINTI "Why knock on "
CALL A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-YELL
PRINTR "Aarrrrggggggghhhhhhhh!"
.FUNCT BATTERY-FALLS
PRINTR "The battery falls out."
.FUNCT V-SHAKE,X
CALL HELD?,PRSO
ZERO? STACK \?CCL3
EQUAL? PRSO,HANDS /?CCL3
CALL NOT-HOLDING
RSTACK
?CCL3: EQUAL? PRSO,LASER \?CCL7
IN? OLD-BATTERY,LASER \?CCL10
MOVE OLD-BATTERY,HERE
CALL BATTERY-FALLS
RSTACK
?CCL10: IN? NEW-BATTERY,LASER \?CCL12
MOVE NEW-BATTERY,HERE
CALL BATTERY-FALLS
RSTACK
?CCL12: PRINTR "Shaken."
?CCL7: FSET? PRSO,OPENBIT /?CCL14
FIRST? PRSO \?CCL14
PRINTI "It sounds as if there is something inside the "
PRINTD PRSO
PRINTR "."
?CCL14: FSET? PRSO,OPENBIT \?CCL18
EQUAL? PRSO,FOOD-KIT \?CCL21
IN? RED-GOO,FOOD-KIT /?CTR20
IN? GREEN-GOO,FOOD-KIT /?CTR20
IN? BROWN-GOO,FOOD-KIT \?CCL21
?CTR20: REMOVE RED-GOO
REMOVE GREEN-GOO
REMOVE BROWN-GOO
PRINTR "Colored goo flies all over everything. Yechh!"
?CCL21: FIRST? PRSO \?CCL28
?PRG29: FIRST? PRSO >X \?REP30
EQUAL? X,HIGH-PROTEIN,CHEMICAL-FLUID \?CCL36
REMOVE X
JUMP ?PRG29
?CCL36: MOVE X,HERE
JUMP ?PRG29
?REP30: PRINTI "The contents of the "
PRINTD PRSO
PRINTR " spill onto the floor."
?CCL28: PRINTI "You have shaken the "
PRINTD PRSO
PRINTR "."
?CCL18: FSET? PRSO,CONTBIT \?CCL38
PRINTI "The "
PRINTD PRSO
PRINTR " sounds empty."
?CCL38: PRINTR "Shaken."
.FUNCT V-SHAKE-WITH
EQUAL? PRSO,HANDS \?CCL3
FSET? PRSI,ACTORBIT \?CCL6
CALL PERFORM,V?SHAKE,HANDS
RTRUE
?CCL6: PRINTI "You can't shake hands with "
CALL A-AN
PRINTD PRSI
PRINTR "!"
?CCL3: PRINTR "Huh?"
.FUNCT V-SMELL
PRINTI "It smells just like "
CALL A-AN
PRINTD PRSO
PRINTR "."
.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 V-SWIM
EQUAL? HERE,UNDERWATER \?CCL3
PRINTR "Not much else you can do here. Might try a direction next time, though."
?CCL3: PRINTR "You can't swim here!"
.FUNCT V-SWIM-DIR
EQUAL? HERE,UNDERWATER \?CCL3
PRINTR "Okay. You're still underwater."
?CCL3: CALL PERFORM,V?SWIM
RTRUE
.FUNCT V-SWIM-UP
EQUAL? HERE,UNDERWATER \?CCL3
CALL DO-WALK,P?UP
RSTACK
?CCL3: CALL PERFORM,V?SWIM
ZERO? STACK \TRUE
RFALSE
.FUNCT V-ALARM
PRINTI "The "
PRINTD PRSO
PRINTR " isn't sleeping."
.FUNCT V-ZORK
PRINTR "Gesundheit!"
.FUNCT V-SIT
EQUAL? HERE,ESCAPE-POD \?CCL3
PRINTI "(in the web)"
CRLF
CALL PERFORM,V?BOARD,SAFETY-WEB
RTRUE
?CCL3: EQUAL? HERE,DORM-A,DORM-B,DORM-C /?CTR4
EQUAL? HERE,DORM-D,INFIRMARY \?CCL5
?CTR4: PRINTI "(on the bed)"
CRLF
CALL PERFORM,V?BOARD,BED
RTRUE
?CCL5: SET 'C-ELAPSED,31
PRINTR "You recline on the floor for a bit, and then stand up again."
.FUNCT V-SIT-DOWN
EQUAL? PRSO,ROOMS \?CCL3
CALL PERFORM,V?SIT
RTRUE
?CCL3: CALL PERFORM,V?BOARD,PRSO
RTRUE
.FUNCT V-GO-UP
CALL DO-WALK,P?UP
RSTACK
.FUNCT V-CLIMB-ON
FSET? PRSO,VEHBIT \?CCL3
CALL PERFORM,V?BOARD,PRSO
RTRUE
?CCL3: PRINTI "You can't climb onto the "
PRINTD PRSO
PRINTR "."
.FUNCT V-CLIMB-FOO
FSET? PRSO,CLIMBBIT \?CCL3
CALL V-CLIMB-UP,P?UP,TRUE-VALUE
RSTACK
?CCL3: CALL PERFORM,V?CLIMB-ON,PRSO
RTRUE
.FUNCT V-CLIMB-UP,DIR=P?UP,OBJ=0,X
GETPT HERE,DIR
ZERO? STACK /?CCL3
CALL DO-WALK,DIR
RTRUE
?CCL3: ZERO? OBJ \?CCL5
PRINTR "You can't go that way."
?CCL5: PRINTR "Bizarre!"
.FUNCT V-CLIMB-DOWN
FSET? PRSO,VEHBIT \?CCL3
CALL V-CLIMB-ON
RTRUE
?CCL3: CALL V-CLIMB-UP,P?DOWN
RSTACK
.FUNCT PRE-PUT-UNDER
CALL HELD?,PRSO
ZERO? STACK \?CCL3
CALL NOT-HOLDING
RSTACK
?CCL3: FSET? PRSO,WORNBIT \FALSE
CALL TAKE-IT-OFF
RSTACK
.FUNCT V-PUT-UNDER
PRINTR "You can't do that."
.FUNCT V-ENTER
CALL DO-WALK,P?IN
RSTACK
.FUNCT V-EXIT
CALL DO-WALK,P?OUT
RSTACK
.FUNCT V-SEARCH
SET 'C-ELAPSED,32
PRINTR "You find nothing unusual."
.FUNCT V-FIND,L
LOC PRSO >L
SET 'C-ELAPSED,18
EQUAL? PRSO,ME,HANDS \?CCL3
PRINTR "You're around here somewhere..."
?CCL3: EQUAL? L,GLOBAL-OBJECTS \?CCL5
PRINTR "You find it."
?CCL5: IN? PRSO,ADVENTURER \?CCL7
PRINTR "You have it."
?CCL7: IN? PRSO,HERE /?CTR8
EQUAL? PRSO,PSEUDO-OBJECT \?CCL9
?CTR8: PRINTR "It's right here."
?CCL9: FSET? L,ACTORBIT \?CCL13
PRINTI "The "
PRINTD L
PRINTR " has it."
?CCL13: FSET? L,CONTBIT \?CCL15
PRINTI "It's in the "
PRINTD L
PRINTR "."
?CCL15: PRINTR "Beats me."
.FUNCT V-TELL
EQUAL? PRSO,ME \?CCL3
PRINTI "Talking to yourself is a sign of impending mental collapse."
CRLF
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RETURN 2
?CCL3: FSET? PRSO,ACTORBIT \?CCL7
ZERO? P-CONT /?CCL10
SET 'WINNER,PRSO
LOC WINNER >HERE
RETURN HERE
?CCL10: PRINTI "The "
PRINTD PRSO
PRINTR " looks at you expectantly, as though he thought you were about to talk."
?CCL7: PRINTI "Talking to "
EQUAL? HERE,DECK-NINE \?CCL13
EQUAL? PRSO,PSEUDO-OBJECT \?CCL13
PRINTI "the "
JUMP ?CND11
?CCL13: CALL A-AN
?CND11: PRINTD PRSO
PRINTI "? Dr. Quarnsboggle, the Feinstein's psychiatrist, would "
EQUAL? BLOWUP-COUNTER,5 \?CCL18
PRINTI "have been"
JUMP ?CND16
?CCL18: PRINTI "be"
?CND16: PRINTI " fascinated to hear that."
CRLF
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-CONT,FALSE-VALUE
RETURN 2
.FUNCT V-ASK-FOR
FSET? PRSO,ACTORBIT \?CCL3
IN? PRSI,PRSO \?CCL6
PRINTI "The "
PRINTD PRSO
PRINTI " doesn't seem inclined to give up the "
PRINTD PRSI
PRINTR "."
?CCL6: PRINTI "The "
PRINTD PRSO
PRINTI " isn't holding the "
PRINTD PRSI
PRINTR "."
?CCL3: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-SAY,V
CALL FIND-IN,HERE,ACTORBIT >V
ZERO? V /?CCL3
SET 'P-CONT,FALSE-VALUE
PRINTI "You must address the "
PRINTD V
PRINTR " directly."
?CCL3: SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-CONT,FALSE-VALUE
CALL PERFORM,V?TELL,ME
RSTACK
.FUNCT V-TALK
CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-ANSWER
PRINTI "Nobody is awaiting your answer."
CRLF
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT V-REPLY
PRINTI "It is hardly likely that the "
PRINTD PRSO
PRINTI " is interested."
CRLF
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT V-KISS
PRINTR "I'd sooner kiss a pile of Antarian swamp mold."
.FUNCT V-RAPE
PRINTR "What a (ahem!) strange idea."
.FUNCT V-DIAGNOSE
SET 'C-ELAPSED,18
ZERO? SICKNESS-LEVEL \?CCL3
PRINTI "You are in perfect health."
CRLF
JUMP ?CND1
?CCL3: PRINTI "You are "
GRTR? SICKNESS-LEVEL,7 \?CCL6
PRINTI "severely"
JUMP ?CND4
?CCL6: GRTR? SICKNESS-LEVEL,5 \?CCL8
PRINTI "very"
JUMP ?CND4
?CCL8: GRTR? SICKNESS-LEVEL,3 \?CCL10
PRINTI "somewhat"
JUMP ?CND4
?CCL10: PRINTI "a bit"
?CND4: PRINTI " sick and feverish."
CRLF
?CND1: ZERO? SLEEPY-LEVEL \?CCL13
PRINTI "You feel well-rested."
CRLF
JUMP ?CND11
?CCL13: PRINTI "You feel "
GRTR? SLEEPY-LEVEL,2 \?CCL16
PRINTI "phenomenally"
JUMP ?CND14
?CCL16: GRTR? SLEEPY-LEVEL,1 \?CCL18
PRINTI "quite"
JUMP ?CND14
?CCL18: PRINTI "sort of"
?CND14: PRINTI " tired."
CRLF
?CND11: ZERO? HUNGER-LEVEL \?CCL21
PRINTR "You seem to be well-fed."
?CCL21: PRINTI "You seem to be "
GRTR? HUNGER-LEVEL,4 \?CCL24
PRINTI "awesomely phenomenally"
JUMP ?CND22
?CCL24: GRTR? HUNGER-LEVEL,2 \?CCL26
PRINTI "noticeably"
JUMP ?CND22
?CCL26: PRINTI "fairly"
?CND22: PRINTR " thirsty and hungry."
.FUNCT V-WEAR
FSET? PRSO,WEARBIT \?CCL3
PRINTI "You are wearing the "
PRINTD PRSO
PRINTC 46
CRLF
SET 'C-ELAPSED,18
FSET PRSO,WORNBIT
RTRUE
?CCL3: PRINTR "They're out of fashion, and besides, it wouldn't fit."
.FUNCT V-REMOVE
FSET? PRSO,WORNBIT \?CCL3
CALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?CCL3: CALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-TAKE-OFF
FSET? PRSO,VEHBIT \?CCL3
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?CCL3: FSET? PRSO,WORNBIT \?CCL5
PRINTI "You are no longer wearing the "
PRINTD PRSO
PRINTC 46
CRLF
SET 'C-ELAPSED,18
FCLEAR PRSO,WORNBIT
RTRUE
?CCL5: PRINTR "You aren't wearing that."
.FUNCT V-STEP-ON
PRINTR "That's a silly thing to do."
.FUNCT V-PUT-ON
EQUAL? PRSO,MAGNET,LADDER \?CCL3
CALL PERFORM,V?ATTRACT,PRSO,PRSI
RTRUE
?CCL3: CALL PERFORM,V?PUT,PRSO,PRSI
RTRUE
.FUNCT V-NO
PRINTR "You sound rather negative."
.FUNCT V-YES
PRINTR "You sound rather positive."
.FUNCT V-MAYBE
PRINTR "You sound rather indecisive."
.FUNCT V-POINT
IN? FLOYD,HERE \?CCL3
CALL FLOYDS-FAMOUS-DOOR-ROUTINE
RSTACK
?CCL3: PRINTR "It's usually impolite to point."
.FUNCT V-SET
ZERO? PRSI \?CCL3
EQUAL? PRSO,COMBINATION-DIAL,LASER-DIAL \?CCL6
PRINTR "You must specify a number to set the dial to."
?CCL6: PRINTI "Turning the "
PRINTD PRSO
PRINTR " accomplishes nothing."
?CCL3: PRINTI "Setting "
CALL A-AN
PRINTD PRSO
PRINTR " is a strange concept."
.FUNCT V-$VERIFY
EQUAL? PRSO,INTNUM \?CCL3
EQUAL? P-NUMBER,502 \?CCL3
PRINTN SERIAL
CRLF
RTRUE
?CCL3: PRINTI "Verifying..."
CRLF
VERIFY \?CCL8
PRINTR "Game correct. (YAY!)"
?CCL8: CRLF
PRINTR "** Game File Failure **"
.FUNCT V-$COMMAND
DIRIN 1
RTRUE
.FUNCT V-$RANDOM
EQUAL? PRSO,INTNUM /?CCL3
PRINTR "Illegal call to #RANDOM."
?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-STAND-ON
PRINTI "Standing on "
CALL A-AN
PRINTD PRSO
PRINTR " seems like a waste of time."
.FUNCT V-REACH
FIRST? PRSO \?CCL3
PRINTI "There is something"
JUMP ?CND1
?CCL3: PRINTI "There is nothing"
?CND1: PRINTI " inside the "
PRINTD PRSO
PRINTR "."
.FUNCT V-REACH-FOR
FSET? PRSO,TAKEBIT \?CCL3
CALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL3: IN? PRSO,HERE \?CCL5
PRINTR "It's here! Now what?"
?CCL5: PRINTR "It is out of reach."
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RTRUE
.FUNCT V-FLUSH
PRINTI "Flush "
CALL A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-FLY
PRINTR "Humans are not usually equipped for flying."
.FUNCT V-SMILE
PRINTR "How pleasant!"
.FUNCT V-SALUTE
PRINTI "The "
PRINTD PRSO
PRINTR " fails to return your salute."
.FUNCT V-ATTRACT
PRINTR "Nothing interesting happens."
.FUNCT V-ZATTRACT
CALL PERFORM,V?ATTRACT,PRSI,PRSO
RTRUE
.FUNCT V-SPAN
PRINTR "You can't."
.FUNCT NUMBERS-ONLY
PRINTR "This keyboard only has numeric keys. You can type numbers on it, but not words."
.FUNCT V-TYPE
EQUAL? HERE,MINI-BOOTH \?CCL3
EQUAL? PRSO,INTNUM /?CCL6
CALL NUMBERS-ONLY
RSTACK
?CCL6: ZERO? MINI-ACTIVATED /?CCL8
EQUAL? P-NUMBER,384 \?CCL11
PRINTI "You notice the walls of the booth sliding away in all directions, followed by a momentary queasiness in the pit of your stomach..."
CRLF
CRLF
CALL GOTO,STATION-384
SET 'BEEN-HERE,TRUE-VALUE
RETURN BEEN-HERE
?CCL11: LESS? P-NUMBER,10 \?CCL13
PRINTR "After a pause a recorded voice says ""There are no one-digit computer sectors...clearing entry...please type damaged sector number."""
?CCL13: GRTR? P-NUMBER,1024 \?CCL15
PRINTR "A recorded voice says ""Databanks indicate no computer sector corresponding to that number. Please check with your supervisor."""
?CCL15: CALL JIGS-UP,STR?93
RSTACK
?CCL8: PRINTR "A recording says ""Internal computer repair booth not activated."""
?CCL3: EQUAL? HERE,LIBRARY-LOBBY \?CCL17
CALL LIBRARY-TYPE
RSTACK
?CCL17: PRINTR "Type on what???"
.FUNCT PRE-SZAP
CALL PERFORM,V?ZAP,PRSI,PRSO
RTRUE
.FUNCT PRE-ZAP
ZERO? PRSI \FALSE
EQUAL? PRSO,LASER /FALSE
IN? LASER,ADVENTURER \?CCL7
CALL PERFORM,V?ZAP,LASER,PRSO
RTRUE
?CCL7: PRINTR "You have nothing to shoot it with."
.FUNCT V-ZAP
CALL HELD?,PRSO
ZERO? STACK \?CCL3
CALL NOT-HOLDING
RSTACK
?CCL3: EQUAL? PRSO,LASER /?CCL5
PRINTR "You can't shoot that."
?CCL5: ZERO? PRSI \?CCL7
PRINTI "At what?"
RTRUE
?CCL7: PRINTR "Nothing happens."
.FUNCT V-SZAP
PRINTR "Zap!"
.FUNCT V-SCRUB
ZERO? PRSI \?CCL3
IN? SCRUB-BRUSH,ADVENTURER /?CCL3
IN? TOWEL,ADVENTURER /?CCL3
PRINTR "You don't have anything to scrub with!"
?CCL3: ZERO? PRSI /?CCL8
EQUAL? PRSI,SCRUB-BRUSH,TOWEL /?CCL8
PRINTR "You can't scrub something with that!"
?CCL8: FSET? PRSO,ACTORBIT \?CCL12
PRINTI "The "
PRINTD PRSO
PRINTR " prefers cleaning himself."
?CCL12: PRINTI "The "
PRINTD PRSO
PRINTR " is a bit shinier now."
.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-EMPTY,X
FSET? PRSO,OPENBIT /?CCL3
PRINTR "You can't empty it when it's closed!"
?CCL3: FIRST? PRSO \?CCL5
?PRG6: FIRST? PRSO >X \?REP7
EQUAL? X,HIGH-PROTEIN,CHEMICAL-FLUID \?CCL13
REMOVE X
JUMP ?PRG6
?CCL13: MOVE X,HERE
JUMP ?PRG6
?REP7: PRINTI "The "
PRINTD PRSO
PRINTR " is now empty."
?CCL5: PRINTI "There's nothing in the "
PRINTD PRSO
PRINTR "."
.FUNCT V-THROW-OFF
PRINTR "It's difficult to see how that can be done."
.FUNCT V-SLEEP
ZERO? SLEEPY-LEVEL \?CCL3
PRINTR "You're not tired!"
?CCL3: CALL INT,I-FALL-ASLEEP
GET STACK,C-ENABLED?
ZERO? STACK /?CCL5
PRINTR "You'll probably be asleep before you know it."
?CCL5: PRINTR "Civilized members of society usually sleep in beds."
.FUNCT V-FIX-IT
PRINTR "You shouldn't expect sweeping general commands like this to work. If you want to repair something, you must perform the specific steps required."
.FUNCT V-OIL
ZERO? PRSI \?CCL3
IN? OIL-CAN,ADVENTURER \?CCL6
CALL PERFORM,V?OIL,PRSO,OIL-CAN
RTRUE
?CCL6: PRINTR "Oil it with what?"
?CCL3: EQUAL? PRSI,OIL-CAN \?CCL8
EQUAL? PRSO,FLOYD \?CCL11
FSET? FLOYD,RLANDBIT \?CCL11
PRINTR "Floyd thanks you for your thoughtfulness."
?CCL11: PRINTI "The "
PRINTD PRSO
PRINTR " doesn't need oiling."
?CCL8: PRINTI "You can't use "
FSET? PRSI,VOWELBIT \?CCL16
PRINTI "an "
JUMP ?CND14
?CCL16: PRINTI "a "
?CND14: PRINTD PRSI
PRINTR " as an oil can!"
.FUNCT V-SHOW
CALL HELD?,PRSO
ZERO? STACK \?CCL3
CALL NOT-HOLDING
RSTACK
?CCL3: EQUAL? PRSI,ME \?CCL5
CALL PERFORM,V?EXAMINE,PRSO
RTRUE
?CCL5: FSET? PRSI,ACTORBIT \?CCL7
PRINTI "The "
PRINTD PRSI
PRINTI " looks at the "
PRINTD PRSO
PRINTR "."
?CCL7: PRINTI "Why would you want to show something to "
CALL A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-INSERT
EQUAL? HERE,LIBRARY \?CCL3
PRINTI "(into the spool reader)"
CRLF
CALL PERFORM,V?PUT,PRSO,SPOOL-READER
RTRUE
?CCL3: EQUAL? HERE,KITCHEN \?CCL5
PRINTI "(into the niche)"
CRLF
CALL PERFORM,V?PUT,PRSO,DISPENSER
RTRUE
?CCL5: PRINTI "You'll have to specify where you want to put the "
PRINTD PRSO
PRINTR "."
.FUNCT V-TASTE
EQUAL? PRSO,HIGH-PROTEIN,RED-GOO /?CTR2
EQUAL? PRSO,BROWN-GOO,GREEN-GOO \?CCL3
?CTR2: PRINTR "It tastes edible."
?CCL3: EQUAL? PRSO,CHEMICAL-FLUID \?CCL7
PRINTR "It burns your tongue."
?CCL7: PRINTI "It tastes just like "
CALL A-AN
PRINTD PRSO
PRINTR "."
.FUNCT V-ZESCAPE
EQUAL? HERE,BRIG \?CCL3
PRINTR "Houdini himself would be stumped by this cell."
?CCL3: PRINTR "There is no escape. We control the horizontal. We control the vertical. We control the disk drives..."
.FUNCT V-TIME
IN? CHRONOMETER,ADVENTURER \?CCL3
CALL TELL-TIME
CRLF
RTRUE
?CCL3: PRINTR "It's hard to say, since you've removed your chronometer."
.FUNCT V-PLAY
PRINTI "How does one play "
CALL A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-PLAY-WITH
FSET? PRSO,ACTORBIT \?CCL3
CALL PERFORM,V?PLAY,GLOBAL-GAMES
RTRUE
?CCL3: PRINTR "I sometimes wonder about your mental health."
.FUNCT V-SCOLD
FSET? PRSO,ACTORBIT \?CCL3
CALL PERFORM,V?TELL,PRSO
RTRUE
?CCL3: PRINTI "For some reason, the "
PRINTD PRSO
PRINTR " doesn't seem too chagrined."
.FUNCT ROB,WHO,WHERE,N,X
FIRST? WHO >X /?PRG2
?PRG2: ZERO? X /TRUE
NEXT? X >N /?BOGUS7
?BOGUS7: MOVE X,WHERE
SET 'X,N
JUMP ?PRG2
.FUNCT THIS-IS-IT,OBJ
SET 'P-IT-OBJECT,OBJ
SET 'P-IT-LOC,HERE
RETURN P-IT-LOC
.FUNCT ACCESSIBLE?,OBJ,L
LOC OBJ >L
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,PSEUDO-OBJECT \?CCL5
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
RFALSE
?CCL5: ZERO? L /FALSE
EQUAL? L,GLOBAL-OBJECTS /TRUE
EQUAL? L,LOCAL-GLOBALS \?CCL14
CALL GLOBAL-IN?,OBJ,HERE
ZERO? STACK \TRUE
?CCL14: 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
LOC OBJ >L
CALL ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL VISIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT A-AN
FSET? PRSO,VOWELBIT \?CCL3
PRINTI "an "
RTRUE
?CCL3: PRINTI "a "
RTRUE
.FUNCT ALREADY,ON-OFF,OBJ=0
ZERO? OBJ /?CCL3
PRINTI "The "
PRINTD OBJ
PRINTI " is "
JUMP ?CND1
?CCL3: PRINTI "It's "
?CND1: PRINTI "already "
PRINT ON-OFF
PRINTR "."
.FUNCT NOT-HOLDING
PRINTI "You're not holding the "
PRINTD PRSO
PRINTR "."
.FUNCT TAKE-IT-OFF
PRINTR "You'll have to take it off, first."
.FUNCT ANYMORE
PRINTR "You can't see that anymore."
.FUNCT FIXED-FONT-ON
GET 0,8
BOR STACK,2
PUT 0,8,STACK
RTRUE
.FUNCT FIXED-FONT-OFF
GET 0,8
BAND STACK,-3
PUT 0,8,STACK
RTRUE
.ENDI