.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