mirror of
https://github.com/historicalsource/planetfall-gold
synced 2024-04-26 14:19:32 +03:00
2315 lines
43 KiB
Plaintext
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
|