.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