planetfall-gold/verbs.zap
2019-04-18 21:40:40 -04:00

2315 lines
43 KiB
Plaintext

.FUNCT V-VERBOSE
SET 'VERBOSE,TRUE-VALUE
SET 'SUPER-BRIEF,FALSE-VALUE
PRINTI "Maximum verbosity."
CRLF
CRLF
CALL1 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 "Superbrief descriptions."
.FUNCT V-LOOK
SET 'C-ELAPSED,9
CALL2 DESCRIBE-ROOM,TRUE-VALUE
ZERO? STACK /FALSE
CALL2 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
CALL1 DESCRIBE-ROOM
ZERO? STACK /FALSE
ZERO? SUPER-BRIEF \FALSE
CALL1 DESCRIBE-OBJECTS
RSTACK
.FUNCT PRE-EXAMINE
CALL2 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"
ICALL1 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
CALL1 V-LOOK-INSIDE
RSTACK
?CCL5: FSET? PRSO,CONTBIT \?CCL7
FSET? PRSO,OPENBIT \?CCL10
CALL1 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?,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
ICALL STACK,M-FLASH
?CND18: EQUAL? HERE,AV /TRUE
FSET? AV,VEHBIT \TRUE
GETP AV,P?ACTION
ICALL STACK,M-LOOK
RTRUE
.FUNCT DESCRIBE-OBJECTS,V?
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,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
CALL2 SEE-INSIDE?,OBJ
ZERO? STACK /FALSE
FIRST? OBJ \FALSE
CALL PRINT-CONT,OBJ,V?,LEVEL
RSTACK
.FUNCT PRINT-CONT,OBJ,V?,LEVEL,Y,1ST?,AV,STR,PV?,INV?
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
?CND8: FIRST? OBJ >Y /?PRG32
?PRG32: ZERO? Y \?CCL36
ZERO? PV? /?CND37
ZERO? AV /?CND37
FIRST? AV \?CND37
ICALL PRINT-CONT,AV,V?,LEVEL
?CND37: ZERO? 1ST? /TRUE
RFALSE
?PRG11: ZERO? Y /?CND8
EQUAL? Y,AV \?CCL17
SET 'PV?,TRUE-VALUE
JUMP ?CND13
?CCL17: EQUAL? Y,WINNER /?CND13
FSET? Y,INVISIBLE /?CND13
FSET? Y,TOUCHBIT /?CND13
GETP Y,P?FDESC >STR
ZERO? STR /?CND13
FSET? Y,NDESCBIT /?CND23
PRINT STR
CRLF
?CND23: CALL2 SEE-INSIDE?,Y
ZERO? STACK /?CND13
LOC Y
GETP STACK,P?DESCFCN
ZERO? STACK \?CND13
FIRST? Y \?CND13
ICALL PRINT-CONT,Y,V?,0
?CND13: NEXT? Y >Y /?PRG11
JUMP ?PRG11
?CCL36: EQUAL? Y,AV,ADVENTURER /?CND34
FSET? Y,INVISIBLE /?CND34
ZERO? INV? \?CCL46
FSET? Y,TOUCHBIT /?CCL46
GETP Y,P?FDESC
ZERO? STACK \?CND34
?CCL46: FSET? Y,NDESCBIT /?CCL54
ZERO? 1ST? /?CND55
CALL FIRSTER,OBJ,LEVEL
ZERO? STACK /?CND57
LESS? LEVEL,0 \?CND57
SET 'LEVEL,0
?CND57: INC 'LEVEL
SET '1ST?,FALSE-VALUE
?CND55: ICALL DESCRIBE-OBJECT,Y,V?,LEVEL
JUMP ?CND34
?CCL54: FIRST? Y \?CND34
CALL2 SEE-INSIDE?,Y
ZERO? STACK /?CND34
ICALL PRINT-CONT,Y,V?,LEVEL
?CND34: NEXT? Y >Y /?PRG32
JUMP ?PRG32
.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 STOP
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RETURN 2
.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?
ASSIGNED? 'ASK? /?CND1
SET 'ASK?,TRUE-VALUE
?CND1: PRINTI "Your score "
ZERO? ASK? /?CCL5
PRINTI "would be "
JUMP ?CND3
?CCL5: PRINTI "is "
?CND3: PRINTN SCORE
PRINTI " (out of 80 points). It is Day "
PRINTN DAY
PRINTI " of your adventure. Current Galactic Standard Time "
IN? CHRONOMETER,ADVENTURER \?CCL8
PRINTI "(adjusted to your local day-cycle) is "
FSET? CHRONOMETER,MUNGEDBIT \?CCL11
PRINTN MUNGED-TIME
JUMP ?CND6
?CCL11: PRINTN INTERNAL-MOVES
JUMP ?CND6
?CCL8: PRINTI "is impossible to determine, since you're not wearing your chronometer"
?CND6: PRINTC 46
CRLF
PRINTI "This score gives you the rank of "
EQUAL? SCORE,80 \?CCL14
PRINTI "Galactic Overlord"
JUMP ?CND12
?CCL14: GRTR? SCORE,72 \?CCL16
PRINTI "Cluster Admiral"
JUMP ?CND12
?CCL16: GRTR? SCORE,64 \?CCL18
PRINTI "System Captain"
JUMP ?CND12
?CCL18: GRTR? SCORE,48 \?CCL20
PRINTI "Planetary Commodore"
JUMP ?CND12
?CCL20: GRTR? SCORE,36 \?CCL22
PRINTI "Lieutenant"
JUMP ?CND12
?CCL22: GRTR? SCORE,24 \?CCL24
PRINTI "Ensign First Class"
JUMP ?CND12
?CCL24: GRTR? SCORE,12 \?CCL26
PRINTI "Space Cadet"
JUMP ?CND12
?CCL26: PRINTI "Beginner"
?CND12: PRINTC 46
CRLF
RETURN SCORE
.FUNCT FINISH,DIED,REPEATING,CNT
?PRG1: CRLF
ZERO? REPEATING \?CND3
SET 'REPEATING,TRUE-VALUE
ICALL1 V-SCORE
ZERO? DIED /?CND3
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
CRLF
?CND3: PRINTI "Would you like to restart this game from the beginning, restore a saved position, end this session of the game, or look at hints?
(Type RESTART, RESTORE, QUIT, or HINTS):
>"
PUTB P-INBUF,0,10
PUTB P-INBUF,1,0
READ P-INBUF,P-LEXV
PUTB P-INBUF,0,80
GET P-LEXV,1
EQUAL? STACK,W?RESTART \?CCL9
RESTART
PRINTI "Failed."
CRLF
JUMP ?PRG1
?CCL9: GET P-LEXV,1
EQUAL? STACK,W?RESTORE \?CCL11
RESTORE
ZERO? STACK \?CCL11
PRINTI "Failed."
CRLF
JUMP ?PRG1
?CCL11: GET P-LEXV,1
EQUAL? STACK,W?QUIT,W?Q /?CTR14
GRTR? CNT,10 \?CCL15
?CTR14: QUIT
JUMP ?PRG1
?CCL15: GET P-LEXV,1
EQUAL? STACK,W?HINTS,W?HINT \?PRG1
ICALL1 V-HINT
JUMP ?PRG1
.FUNCT V-QUIT
ICALL1 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): "
CALL1 YES?
ZERO? STACK /?CCL7
QUIT
RTRUE
?CCL7: PRINTR "Ok."
.FUNCT YES?
PUTB P-INBUF,0,10
PRINTC 62
PUTB P-INBUF,1,0
READ P-INBUF,P-LEXV
PUTB P-INBUF,0,80
GET P-LEXV,1
EQUAL? STACK,W?YES,W?Y /TRUE
RFALSE
.FUNCT V-$ID
PRINTI "Interpreter "
GETB 0,30
PRINTN STACK
PRINTI " Version "
GETB 0,31
PRINTC STACK
CRLF
RTRUE
.FUNCT V-VERSION,CNT,V
SET 'CNT,17
GET 0,1
BAND STACK,2047 >V
PRINTI "PLANETFALL
Infocom interactive fiction - a science fiction story
Copyright (c) 1983, 1988 by Infocom, Inc. All rights reserved.
PLANETFALL is a registered trademark of Infocom, Inc.
Release "
PRINTN V
PRINTI " / Serial number "
?PRG1: IGRTR? 'CNT,23 /?REP2
GETB 0,CNT
PRINTC STACK
JUMP ?PRG1
?REP2: PRINTI " / "
ICALL1 V-$ID
CRLF
RTRUE
.FUNCT JIGS-UP,DESC,PLAYER?
PRINT DESC
CRLF
CRLF
PRINTI " **** You have died ****"
CRLF
CALL2 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
ZERO? STACK /?CCL7
PRINTR "Ok."
?CCL7: PRINTR "Failed."
.FUNCT V-SAVE,X
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: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
SAVE >X
GET 0,8
BTST STACK,4 \?CCL7
ICALL1 V-$REFRESH
JUMP ?CND5
?CCL7: EQUAL? X,2 \?CND5
ICALL1 INIT-STATUS-LINE
?CND5: ZERO? X \?CCL11
PRINTI "Failed."
CRLF
RETURN 2
?CCL11: PRINTI "Ok."
CRLF
EQUAL? X,1 /TRUE
ICALL2 PERFORM,V?LOOK
RTRUE
.FUNCT V-$REFRESH
GET 0,8
BAND STACK,-5
PUT 0,8,STACK
CLEAR -1
ICALL1 INIT-STATUS-LINE
RTRUE
.FUNCT V-RESTART
ICALL2 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): "
CALL1 YES?
ZERO? STACK /FALSE
PRINTI "Restarting."
CRLF
RESTART
PRINTR "Failed."
.FUNCT V-WALK-AROUND
CALL1 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: CALL1 USE-DIRECTIONS
RSTACK
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM,TEMP-ELAPSED,?TMP1
ZERO? P-WALK-DIR \?CCL3
ICALL 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
GET PT,REXIT
CALL2 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
CALL2 GOTO,RM
RSTACK
?PRG20: RETURN 2
?CCL16: EQUAL? PTS,CEXIT \?CCL23
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?CCL26
SET 'C-ELAPSED,TEMP-ELAPSED
GET PT,REXIT
CALL2 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
GET PT,DEXITOBJ >OBJ
FSET? OBJ,OPENBIT \?CCL37
SET 'C-ELAPSED,TEMP-ELAPSED
GET PT,REXIT
CALL2 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
ICALL2 THIS-IS-IT,OBJ
RETURN 2
?CCL5: ZERO? LIT \?CCL45
RANDOM 100
LESS? 75,STACK /?CCL45
CALL2 JIGS-UP,STR?9
RSTACK
?CCL45: PRINTI "You can't go that way."
CRLF
RETURN 2
.FUNCT V-INVENTORY
SET 'C-ELAPSED,18
FIRST? ADVENTURER \?CCL3
CALL2 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: EQUAL? PSEUDO-OBJECT,PRSO /FALSE
LOC PRSO
EQUAL? STACK,GLOBAL-OBJECTS /?CCL11
LOC PRSO
FSET? STACK,CONTBIT \?CCL11
LOC PRSO
FSET? STACK,OPENBIT /?CCL11
PRINTR "You can't reach into a closed container."
?CCL11: ZERO? PRSI /?CCL16
LOC PRSO
EQUAL? PRSI,STACK /?CCL19
EQUAL? PRSO,KEY \?CCL22
FSET? KEY,TOUCHBIT \FALSE
?CCL22: EQUAL? PRSO,CELERY \?CCL26
EQUAL? PRSI,AMBASSADOR /FALSE
?CCL26: PRINTR "It's not in that!"
?CCL19: SET 'PRSI,FALSE-VALUE
RFALSE
?CCL16: LOC ADVENTURER
EQUAL? PRSO,STACK \FALSE
PRINTR "You are in it, asteroid-brain!"
.FUNCT V-TAKE
CALL1 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
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL5: CALL1 ITAKE
RSTACK
.FUNCT ITAKE,VB,CNT,OBJ,?TMP1
ASSIGNED? 'VB /?CND1
SET 'VB,TRUE-VALUE
?CND1: FSET? PRSO,TAKEBIT /?CCL5
ZERO? VB /FALSE
CALL2 PICK-ONE,YUKS
PRINT STACK
CRLF
RFALSE
?CCL5: LOC PRSO
IN? STACK,ADVENTURER /?CCL9
CALL2 WEIGHT,PRSO >?TMP1
CALL2 WEIGHT,ADVENTURER
ADD ?TMP1,STACK
GRTR? STACK,LOAD-ALLOWED \?CCL9
ZERO? VB /?PRG14
PRINTI "Your load is too heavy."
CRLF
?PRG14: RETURN 2
?CCL9: CALL2 CCOUNT,ADVENTURER >CNT
GRTR? CNT,FUMBLE-NUMBER \?CCL17
MUL CNT,FUMBLE-PROB >?TMP1
RANDOM 100
LESS? ?TMP1,STACK /?CCL17
FIRST? ADVENTURER >OBJ /?PRG21
?PRG21: FSET? OBJ,WORNBIT \?REP22
NEXT? OBJ >OBJ /?PRG21
JUMP ?PRG21
?REP22: 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 \?CND27
IN? CHEMICAL-FLUID,FLASK \?CND27
REMOVE CHEMICAL-FLUID
PRINTI "Unfortunately, the chemical spills out of the flask and evaporates."
CRLF
?CND27: EQUAL? CANTEEN,OBJ,PRSO \?CND31
IN? HIGH-PROTEIN,CANTEEN \?CND31
FSET? CANTEEN,OPENBIT \?CND31
REMOVE HIGH-PROTEIN
PRINTI "To make matters worse, the high-protein liquid spills all over the place and then evaporates."
CRLF
?CND31: MOVE OBJ,HERE
MOVE PRSO,HERE
RETURN 2
?CCL17: MOVE PRSO,ADVENTURER
FCLEAR PRSO,NDESCBIT
ICALL2 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: CALL2 WEIGHT,PRSI >?TMP3
CALL2 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: CALL2 HELD?,PRSO
ZERO? STACK \?CCL19
CALL1 TRYTAKE
ZERO? STACK /TRUE
?CCL19: ICALL2 SCORE-OBJ,PRSO
MOVE PRSO,PRSI
FSET PRSO,TOUCHBIT
PRINTR "Done."
.FUNCT V-SLIDE
CALL2 PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
.FUNCT PRE-GIVE
CALL2 HELD?,PRSO
ZERO? STACK \FALSE
CALL1 NOT-HOLDING
RSTACK
.FUNCT PRE-SGIVE
ICALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-GIVE
FSET? PRSI,ACTORBIT /?CCL3
PRINTI "You can't give "
ICALL1 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
CALL1 IDROP
ZERO? STACK /FALSE
PRINTR "Dropped."
.FUNCT V-THROW
CALL1 IDROP
ZERO? STACK /FALSE
PRINTR "Thrown."
.FUNCT IDROP
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
PRINTI "You're not carrying the "
PRINTD PRSO
PRINTC 46
CRLF
RFALSE
?CCL3: FSET? PRSO,WORNBIT \?CCL5
ICALL1 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
CALL2 ALREADY,STR?16
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 "
ICALL2 PRINT-CONTENTS,PRSO
PRINTR "."
?CCL7: PRINTI "The "
PRINTD PRSO
PRINTR " cannot be opened."
.FUNCT V-OPEN-WITH
EQUAL? PRSI,HANDS \?CCL3
ICALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL3: PRINTR "That doesn't work."
.FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?,IT?,TWO?
SET '1ST?,TRUE-VALUE
FIRST? OBJ >F \FALSE
?PRG4: NEXT? F >N /?BOGUS6
?BOGUS6: ZERO? 1ST? /?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
ICALL2 THIS-IS-IT,IT?
RTRUE
.FUNCT V-CLOSE
FSET? PRSO,CONTBIT /?CCL3
FSET? PRSO,DOORBIT /?CCL3
PRINTI "You can't do that to "
ICALL1 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: CALL2 ALREADY,STR?17
RSTACK
?CCL7: PRINTR "You cannot close that."
.FUNCT CCOUNT,OBJ,CNT,X
FIRST? OBJ >X /?PRG3
RETURN CNT
?PRG3: INC 'CNT
NEXT? X >X /?PRG3
RETURN CNT
.FUNCT WEIGHT,OBJ,CONT,WT
FIRST? OBJ >CONT \?CND1
?PRG3: FSET? CONT,WORNBIT /?CND5
CALL2 WEIGHT,CONT
ADD WT,STACK >WT
?CND5: NEXT? CONT >CONT /?PRG3
?CND1: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT COPR-NOTICE,STR
DIROUT D-SCREEN-OFF
CRLF
PRINTI "Here "
PRINT STR
PRINTI "s a transcript of interaction with"
CRLF
ICALL1 V-VERSION
DIROUT D-SCREEN-ON
RTRUE
.FUNCT V-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: PRINT STR?18
PRINTI "n.]"
CRLF
DIROUT D-PRINTER-ON
ICALL2 COPR-NOTICE,STR?19
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: ICALL2 COPR-NOTICE,STR?20
DIROUT D-PRINTER-OFF
PRINT STR?18
PRINTR "ff.]"
.FUNCT PRE-MOVE
CALL2 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
ICALL2 ALREADY,STR?21
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
ICALL2 ALREADY,STR?22
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 "
ICALL1 A-AN
PRINTD PRSO
PRINTC 46
CRLF
RETURN 2
.FUNCT V-BOARD,AV
ICALL2 GOTO,PRSO
PRINTI "You are now in the "
PRINTD PRSO
PRINTR "."
.FUNCT V-DISEMBARK
EQUAL? PRSO,ROOMS \?CCL3
IN? ADVENTURER,SAFETY-WEB \?CCL6
ICALL PERFORM,V?DISEMBARK,SAFETY-WEB
RTRUE
?CCL6: IN? ADVENTURER,BED \?CCL8
CALL1 OWN-FEET
RSTACK
?CCL8: IN? ADVENTURER,SHUTTLE-CAR-ALFIE \?CCL10
CALL2 DO-WALK,P?NORTH
RSTACK
?CCL10: IN? ADVENTURER,SHUTTLE-CAR-BETTY \?CCL12
CALL2 DO-WALK,P?SOUTH
RSTACK
?CCL12: IN? ADVENTURER,BRIG \?CCL14
ICALL2 PERFORM,V?ZESCAPE
RTRUE
?CCL14: CALL2 DO-WALK,P?OUT
RSTACK
?CCL3: LOC ADVENTURER
EQUAL? STACK,PRSO /?CCL16
PRINTI "You're not in that!"
CRLF
RETURN 2
?CCL16: CALL1 OWN-FEET
RSTACK
.FUNCT OWN-FEET
ICALL2 GOTO,HERE
PRINTR "You're on your own feet again."
.FUNCT V-STAND
LOC ADVENTURER
FSET? STACK,VEHBIT \?CCL3
LOC ADVENTURER
ICALL PERFORM,V?DISEMBARK,STACK
RTRUE
?CCL3: PRINTR "You are already standing, I think."
.FUNCT GOTO,NEW-LOC,V?,WLOC,OLIT,OLD-HERE
ASSIGNED? 'V? /?CND1
SET 'V?,TRUE-VALUE
?CND1: LOC WINNER >WLOC
SET 'OLIT,LIT
SET 'OLD-HERE,HERE
MOVE ADVENTURER,NEW-LOC
SET 'OHERE,FALSE-VALUE
IN? NEW-LOC,ROOMS \?CCL5
SET 'HERE,NEW-LOC
CALL2 LIT?,HERE >LIT
JUMP ?CND3
?CCL5: SET 'HERE,OLD-HERE
?CND3: ZERO? OLIT \?CND6
ZERO? LIT \?CND6
RANDOM 100
LESS? 75,STACK /?CND6
ICALL2 JIGS-UP,STR?23
RTRUE
?CND6: GETP HERE,P?ACTION
CALL STACK,M-ENTER
EQUAL? STACK,2 /TRUE
ICALL2 SCORE-OBJ,NEW-LOC
ZERO? V? /TRUE
ICALL1 V-FIRST-LOOK
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
ICALL 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: CALL1 V-SKIP
RSTACK
?CCL6: PRINTR "That would be a good trick."
?CCL3: CALL1 V-SKIP
RSTACK
.FUNCT V-SKIP
CALL2 PICK-ONE,WHEEEEE
PRINT STACK
CRLF
RTRUE
.FUNCT V-LEAVE
IN? ADVENTURER,BED \?CCL3
ICALL PERFORM,V?DISEMBARK,BED
RTRUE
?CCL3: IN? ADVENTURER,SAFETY-WEB \?CCL5
ICALL PERFORM,V?DISEMBARK,SAFETY-WEB
RTRUE
?CCL5: CALL2 DO-WALK,P?OUT
RSTACK
.FUNCT V-HELLO
ZERO? PRSO /?CCL3
PRINTI "Until now, I've only heard demented Denebian Devils say ""Hello"" to "
ICALL1 A-AN
PRINTD PRSO
PRINTR "."
?CCL3: CALL2 PICK-ONE,HELLOS
PRINT STACK
CRLF
RTRUE
.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 "
ICALL1 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
CALL1 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
ICALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL13: CALL2 SEE-INSIDE?,PRSO
ZERO? STACK /?CCL15
FIRST? PRSO \?CCL18
CALL2 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 "
ICALL1 A-AN
PRINTD PRSO
PRINTR "."
.FUNCT SEE-INSIDE?,OBJ
ZERO? OBJ /FALSE
FSET? OBJ,INVISIBLE /FALSE
FSET? OBJ,TRANSBIT /TRUE
FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT V-LOOK-DOWN
ICALL PERFORM,V?EXAMINE,GROUND
RTRUE
.FUNCT V-TURN
PRINTR "You can't do that."
.FUNCT V-LOCK
CALL1 V-TURN
RSTACK
.FUNCT V-UNLOCK
CALL1 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 "
ICALL1 A-AN
PRINTD PRSO
PRINTR "???"
.FUNCT V-KICK
CALL2 HACK-HACK,STR?30
RSTACK
.FUNCT V-WAVE
CALL2 HACK-HACK,STR?31
RSTACK
.FUNCT V-RUB
CALL2 HACK-HACK,STR?32
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
ICALL PERFORM,V?PUSH,TELEPORTATION-BUTTON-1
RTRUE
?CCL13: EQUAL? HERE,BOOTH-1 \?CCL15
CALL2 NO-BUTTON,BOOTH-1
RSTACK
?CCL15: PRINTR "Push a number?!?"
?CCL10: EQUAL? P-NUMBER,2 \?CCL17
EQUAL? HERE,BOOTH-1,BOOTH-3 \?CCL20
ICALL PERFORM,V?PUSH,TELEPORTATION-BUTTON-2
RTRUE
?CCL20: EQUAL? HERE,BOOTH-2 \?CCL22
CALL2 NO-BUTTON,BOOTH-2
RSTACK
?CCL22: PRINTR "Push a number?!?"
?CCL17: EQUAL? P-NUMBER,3 \?CCL24
EQUAL? HERE,BOOTH-1,BOOTH-2 \?CCL27
ICALL PERFORM,V?PUSH,TELEPORTATION-BUTTON-3
RTRUE
?CCL27: EQUAL? HERE,BOOTH-3 \?CCL29
CALL2 NO-BUTTON,BOOTH-3
RSTACK
?CCL29: PRINTR "Push a number?!?"
?CCL24: PRINTR "Push a number?!?"
?CCL3: CALL2 HACK-HACK,STR?33
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
CALL2 HACK-HACK,STR?34
RSTACK
.FUNCT V-PUSH-DOWN
CALL2 HACK-HACK,STR?35
RSTACK
.FUNCT V-PULL
CALL2 HACK-HACK,STR?36
RSTACK
.FUNCT V-MUNG
CALL2 HACK-HACK,STR?37
RSTACK
.FUNCT HACK-HACK,STR
PRINT STR
PRINTD PRSO
CALL2 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
INTBL? WORD,SYNS,STACK /?BOGUS1
?BOGUS1: RSTACK
.FUNCT V-KNOCK
CALL WORD-TYPE,PRSO,W?DOOR
ZERO? STACK /?CCL3
PRINTR "Nobody's home."
?CCL3: PRINTI "Why knock on "
ICALL1 A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-YELL
PRINTR "Aarrrrggggggghhhhhhhh!"
.FUNCT BATTERY-FALLS
PRINTR "The battery falls out."
.FUNCT V-SHAKE,X
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
EQUAL? PRSO,HANDS /?CCL3
CALL1 NOT-HOLDING
RSTACK
?CCL3: EQUAL? PRSO,LASER \?CCL7
IN? OLD-BATTERY,LASER \?CCL10
MOVE OLD-BATTERY,HERE
CALL1 BATTERY-FALLS
RSTACK
?CCL10: IN? NEW-BATTERY,LASER \?CCL12
MOVE NEW-BATTERY,HERE
CALL1 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
ICALL PERFORM,V?SHAKE,HANDS
RTRUE
?CCL6: PRINTI "You can't shake hands with "
ICALL1 A-AN
PRINTD PRSI
PRINTR "!"
?CCL3: PRINTR "Huh?"
.FUNCT V-SMELL
PRINTI "It smells just like "
ICALL1 A-AN
PRINTD PRSO
PRINTR "."
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TEE
GETPT OBJ2,P?GLOBAL >TEE
ZERO? TEE /FALSE
PTSIZE TEE
DIV STACK,2
INTBL? OBJ1,TEE,STACK /?CND1
?CND1: 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: ICALL2 PERFORM,V?SWIM
RTRUE
.FUNCT V-SWIM-UP
EQUAL? HERE,UNDERWATER \?CCL3
CALL2 DO-WALK,P?UP
RSTACK
?CCL3: CALL2 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
ICALL 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
ICALL 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
ICALL2 PERFORM,V?SIT
RTRUE
?CCL3: ICALL PERFORM,V?BOARD,PRSO
RTRUE
.FUNCT V-GO-UP
CALL2 DO-WALK,P?UP
RSTACK
.FUNCT V-CLIMB-ON
FSET? PRSO,VEHBIT \?CCL3
ICALL 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: ICALL PERFORM,V?CLIMB-ON,PRSO
RTRUE
.FUNCT V-CLIMB-UP,DIR,OBJ,X
ASSIGNED? 'DIR /?CND1
SET 'DIR,P?UP
?CND1: GETPT HERE,DIR
ZERO? STACK /?CCL5
ICALL2 DO-WALK,DIR
RTRUE
?CCL5: ZERO? OBJ \?CCL7
PRINTR "You can't go that way."
?CCL7: PRINTR "Bizarre!"
.FUNCT V-CLIMB-DOWN
FSET? PRSO,VEHBIT \?CCL3
ICALL1 V-CLIMB-ON
RTRUE
?CCL3: CALL2 V-CLIMB-UP,P?DOWN
RSTACK
.FUNCT PRE-PUT-UNDER
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
CALL1 NOT-HOLDING
RSTACK
?CCL3: FSET? PRSO,WORNBIT \FALSE
CALL1 TAKE-IT-OFF
RSTACK
.FUNCT V-PUT-UNDER
PRINTR "You can't do that."
.FUNCT V-ENTER
CALL2 DO-WALK,P?IN
RSTACK
.FUNCT V-EXIT
CALL2 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: ICALL1 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: ICALL 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
ICALL 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
ICALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?CCL3: ICALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-TAKE-OFF
FSET? PRSO,VEHBIT \?CCL3
ICALL 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
ICALL PERFORM,V?ATTRACT,PRSO,PRSI
RTRUE
?CCL3: ICALL 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
CALL1 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 "
ICALL1 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 "
ICALL1 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
ICALL 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
ICALL PERFORM,V?WALK,DIR
RTRUE
.FUNCT V-FLUSH
PRINTI "Flush "
ICALL1 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
ICALL 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
CALL1 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
ICALL2 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: CALL2 JIGS-UP,STR?41
RSTACK
?CCL8: PRINTR "A recording says ""Internal computer repair booth not activated."""
?CCL3: EQUAL? HERE,LIBRARY-LOBBY \?CCL17
CALL1 LIBRARY-TYPE
RSTACK
?CCL17: PRINTR "Type on what???"
.FUNCT PRE-SZAP
ICALL PERFORM,V?ZAP,PRSI,PRSO
RTRUE
.FUNCT PRE-ZAP
ZERO? PRSI \FALSE
EQUAL? PRSO,LASER /FALSE
IN? LASER,ADVENTURER \?CCL7
ICALL PERFORM,V?ZAP,LASER,PRSO
RTRUE
?CCL7: PRINTR "You have nothing to shoot it with."
.FUNCT V-ZAP
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
CALL1 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 nonliquids 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: CALL2 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
ICALL 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
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
CALL1 NOT-HOLDING
RSTACK
?CCL3: EQUAL? PRSI,ME \?CCL5
ICALL 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 "
ICALL1 A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-INSERT
EQUAL? HERE,LIBRARY \?CCL3
PRINTI "(into the spool reader)"
CRLF
ICALL PERFORM,V?PUT,PRSO,SPOOL-READER
RTRUE
?CCL3: EQUAL? HERE,KITCHEN \?CCL5
PRINTI "(into the niche)"
CRLF
ICALL 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 "
ICALL1 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
ICALL1 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 "
ICALL1 A-AN
PRINTD PRSO
PRINTR "?"
.FUNCT V-PLAY-WITH
FSET? PRSO,ACTORBIT \?CCL3
ICALL PERFORM,V?PLAY,GLOBAL-GAMES
RTRUE
?CCL3: PRINTR "I sometimes wonder about your mental health."
.FUNCT V-SCOLD
FSET? PRSO,ACTORBIT \?CCL3
ICALL 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
ZERO? OBJ /TRUE
EQUAL? PRSA,V?WALK \?PRD6
EQUAL? PRSO,OBJ /TRUE
?PRD6: EQUAL? OBJ,ADVENTURER /TRUE
EQUAL? OBJ,NOT-HERE-OBJECT,ME /TRUE
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: CALL2 META-LOC,OBJ
EQUAL? STACK,HERE \FALSE
EQUAL? L,WINNER,HERE /TRUE
FSET? L,OPENBIT \FALSE
CALL2 ACCESSIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT VISIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL2 SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL2 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
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