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