.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 CALL DESCRIBE-ROOM,TRUE-VALUE ZERO? STACK /FALSE CALL DESCRIBE-OBJECTS,TRUE-VALUE RSTACK .FUNCT V-FIRST-LOOK CALL DESCRIBE-ROOM ZERO? STACK /FALSE ZERO? SUPER-BRIEF \FALSE CALL DESCRIBE-OBJECTS RSTACK .FUNCT PRE-EXAMINE ZERO? LIT \FALSE FSET? PRSO,READBIT \FALSE CALL PERFORM,V?READ,PRSO RTRUE .FUNCT V-EXAMINE GETP PRSO,P?TEXT ZERO? STACK /?ELS5 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?ELS5: FSET? PRSO,CONTBIT /?THN10 FSET? PRSO,DOORBIT \?ELS9 ?THN10: CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE ?ELS9: PRINTI "I see nothing special about " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,AV=0 ZERO? LOOK? /?ORP4 PUSH LOOK? JUMP ?THN1 ?ORP4: PUSH VERBOSE ?THN1: POP 'V? ZERO? LIT \?CND5 CALL TELL-TOO-DARK RETURN FALSE-VALUE ?CND5: FSET? HERE,TOUCHBIT /?CND8 FSET HERE,TOUCHBIT SET 'V?,TRUE-VALUE ?CND8: IN? HERE,ROOMS \?CND11 CALL DPRINT,HERE LOC WINNER >AV FSET? AV,VEHBIT \?CND16 PRINTI ", " CALL VEHPREP,AV PRINT STACK PRINTI " the " CALL DPRINT,AV ?CND16: CRLF ?CND11: ZERO? LOOK? \?THN24 ZERO? SUPER-BRIEF \?CND21 ?THN24: ZERO? V? /?ELS28 GETP HERE,P?ACTION CALL STACK,M-LOOK ZERO? STACK \TRUE ?ELS28: ZERO? V? /?CND26 GETP HERE,P?LDESC >STR ZERO? STR /?CND26 PRINT STR CRLF ?CND26: GETP HERE,P?ACTION CALL STACK,M-FLASH ZERO? AV /?CND21 EQUAL? HERE,AV /?CND21 FSET? AV,VEHBIT \?CND21 GETP AV,P?ACTION CALL STACK,M-LOOK ?CND21: GETP HERE,P?CORRIDOR ZERO? STACK /TRUE CALL CORRIDOR-LOOK RTRUE .FUNCT VEHPREP,VEH FSET? VEH,SURFACEBIT \?ELS5 RETURN STR?56 ?ELS5: RETURN STR?57 .FUNCT DESCRIBE-OBJECTS,V?=0 ZERO? LIT /?ELS5 FIRST? HERE \FALSE ZERO? V? /?ORP15 PUSH V? JUMP ?THN12 ?ORP15: PUSH VERBOSE ?THN12: POP 'V? CALL PRINT-CONT,HERE,V?,-1 RSTACK ?ELS5: PRINTR "I can't see anything in the dark." .FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV SET 'DESC-OBJECT,OBJ ZERO? LEVEL \?ELS3 GETP OBJ,P?DESCFCN CALL STACK,M-OBJDESC ZERO? STACK \TRUE ?ELS3: ZERO? LEVEL \?ELS7 FSET? OBJ,TOUCHBIT /?ELS13 GETP OBJ,P?FDESC >STR ZERO? STR \?THN10 ?ELS13: GETP OBJ,P?LDESC >STR ZERO? STR /?ELS7 ?THN10: PRINT STR JUMP ?CND1 ?ELS7: ZERO? LEVEL \?ELS17 PRINTI "There is " CALL APRINT,OBJ PRINTI " here." JUMP ?CND1 ?ELS17: GET INDENTS,LEVEL PRINT STACK PRINTI "A" CALL VOWEL?,OBJ CALL DPRINT,OBJ FSET? OBJ,WORNBIT \?CND1 IN? OBJ,WINNER \?CND1 PRINTI " (being worn)" ?CND1: 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,FLG=0 FIRST? OBJ >Y \TRUE LOC WINNER >AV ZERO? AV /?ELS6 FSET? AV,VEHBIT \?ELS6 JUMP ?CND4 ?ELS6: SET 'AV,FALSE-VALUE ?CND4: SET '1ST?,TRUE-VALUE LOC OBJ EQUAL? WINNER,OBJ,STACK \?ELS13 SET 'INV?,TRUE-VALUE JUMP ?CND11 ?ELS13: ?PRG16: ZERO? Y \?ELS20 JUMP ?CND11 ?ELS20: EQUAL? Y,AV \?ELS22 SET 'PV?,TRUE-VALUE JUMP ?CND18 ?ELS22: EQUAL? Y,WINNER \?ELS24 JUMP ?CND18 ?ELS24: FSET? Y,INVISIBLE /?CND18 FSET? Y,TOUCHBIT /?CND18 GETP Y,P?FDESC >STR ZERO? STR /?CND18 GETP Y,P?DESCFCN ZERO? STACK \?CND18 FSET? Y,NDESCBIT /?CND29 PRINT STR CRLF SET 'FLG,TRUE-VALUE ?CND29: CALL SEE-INSIDE?,Y ZERO? STACK /?CND18 LOC Y GETP STACK,P?DESCFCN ZERO? STACK \?CND18 FIRST? Y \?CND18 CALL PRINT-CONT,Y,V?,0 ?CND18: NEXT? Y >Y /?KLU74 ?KLU74: JUMP ?PRG16 ?CND11: FIRST? OBJ >Y /?KLU75 ?KLU75: ?PRG39: ZERO? Y \?ELS43 ZERO? PV? /?REP40 ZERO? AV /?REP40 FIRST? AV \?REP40 CALL PRINT-CONT,AV,V?,LEVEL RETURN FLG ?ELS43: EQUAL? Y,AV,ADVENTURER \?ELS50 JUMP ?CND41 ?ELS50: FSET? Y,INVISIBLE /?CND41 ZERO? INV? \?THN55 FSET? Y,TOUCHBIT /?THN55 GETP Y,P?DESCFCN ZERO? STACK \?THN55 GETP Y,P?FDESC ZERO? STACK \?CND41 ?THN55: FSET? Y,NDESCBIT /?ELS59 ZERO? 1ST? /?CND60 CALL FIRSTER,OBJ,LEVEL ZERO? STACK /?CND64 SET 'FLG,TRUE-VALUE LESS? LEVEL,0 \?CND64 SET 'LEVEL,0 ?CND64: INC 'LEVEL SET '1ST?,FALSE-VALUE ?CND60: CALL DESCRIBE-OBJECT,Y,V?,LEVEL JUMP ?CND41 ?ELS59: GETP Y,P?DESCFCN ZERO? STACK \?CND41 FIRST? Y \?CND41 CALL SEE-INSIDE?,Y ZERO? STACK /?CND41 CALL PRINT-CONT,Y,V?,LEVEL ?CND41: NEXT? Y >Y /?KLU76 ?KLU76: JUMP ?PRG39 ?REP40: RETURN FLG .FUNCT FIRSTER,OBJ,LEVEL,F EQUAL? OBJ,WINNER \?ELS5 PRINTR "You are carrying:" ?ELS5: IN? OBJ,ROOMS /FALSE GRTR? LEVEL,0 \?CND10 GET INDENTS,LEVEL PRINT STACK ?CND10: EQUAL? OBJ,MAGNET \?ELS17 PRINTI "The " CALL DPRINT,OBJ PRINTI " is touching" JUMP ?CND15 ?ELS17: FSET? OBJ,SURFACEBIT \?ELS21 PRINTI "Sitting on the " CALL DPRINT,OBJ FIRST? OBJ >F /?KLU39 ?KLU39: NEXT? F \?ELS26 PRINTI " are" JUMP ?CND15 ?ELS26: PRINTI " is" JUMP ?CND15 ?ELS21: PRINTI "The " CALL DPRINT,OBJ PRINTI " contains" ?CND15: PRINTR ":" .FUNCT RATING-UPD,NUM ADD BASE-RATING,NUM >BASE-RATING ADD RATING,NUM >RATING RTRUE .FUNCT RATING-OBJ,OBJ,TEMP GETP OBJ,P?VALUE ZERO? STACK /TRUE GETP OBJ,P?VALUE >TEMP GRTR? TEMP,0 \FALSE CALL RATING-UPD,TEMP PUTP OBJ,P?VALUE,0 RTRUE .FUNCT V-SCORE,ASK?=1 PRINTI "Your score is " PRINTN RATING PRINTI " out of a possible " PRINTN RATING-MAX PRINTI "." CRLF PRINTI "This score gives you the rank of a " GRTR? RATING,245 \?ELS9 PRINTI "rich diver" JUMP ?CND7 ?ELS9: GRTR? RATING,190 \?ELS13 PRINTI "good adventurer" JUMP ?CND7 ?ELS13: GRTR? RATING,125 \?ELS17 PRINTI "decent diver" JUMP ?CND7 ?ELS17: GRTR? RATING,45 \?ELS21 PRINTI "so-so sailor" JUMP ?CND7 ?ELS21: PRINTI "chicken of the sea" ?CND7: PRINTI "." CRLF RETURN RATING .FUNCT FINISH CRLF CALL V-SCORE USL CRLF ?PRG1: 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): >" READ P-INBUF,P-LEXV GET P-LEXV,1 EQUAL? STACK,W?RESTART \?ELS7 RESTART CALL TELL-FAILED JUMP ?PRG1 ?ELS7: GET P-LEXV,1 EQUAL? STACK,W?RESTORE \?ELS9 RESTORE \?ELS12 CALL TELL-OKAY JUMP ?PRG1 ?ELS12: CALL TELL-FAILED JUMP ?PRG1 ?ELS9: GET P-LEXV,1 EQUAL? STACK,W?QUIT,W?Q \?PRG1 QUIT JUMP ?PRG1 .FUNCT V-QUIT,ASK?=1,SCOR CALL V-SCORE ZERO? ASK? /?ELS9 PRINTI "Do you wish to leave the game? (Y is affirmative): " CALL YES? ZERO? STACK \?THN6 ?ELS9: ZERO? ASK? \?ELS5 ?THN6: USL QUIT RTRUE ?ELS5: CALL TELL-OKAY RSTACK .FUNCT YES? PRINTI ">" READ Y-INBUF,Y-LEXV GET Y-LEXV,1 EQUAL? STACK,W?YES,W?Y \FALSE RTRUE .FUNCT V-VERSION,CNT=17,V GET 0,1 BAND STACK,2047 >V PRINTI "CUTTHROATS Copyright (c) 1984 by Infocom, Inc. All rights reserved. " GETB 0,1 BAND STACK,8 ZERO? STACK /?CND3 PRINTI "Licensed to Tandy Corporation. Version 00.00." PRINTN V CRLF ?CND3: PRINTI "CUTTHROATS is a trademark of Infocom, Inc. Release " PRINTN V PRINTI " / Serial number " ?PRG10: IGRTR? 'CNT,23 \?ELS14 JUMP ?REP11 ?ELS14: GETB 0,CNT PRINTC STACK JUMP ?PRG10 ?REP11: CRLF RTRUE .FUNCT V-AGAIN,OBJ,N=0 EQUAL? L-PRSO,NOT-HERE-OBJECT \?ELS3 ZERO? P-MOBY-FOUND /?ELS3 SET 'N,TRUE-VALUE SET 'L-PRSO,P-MOBY-FOUND JUMP ?CND1 ?ELS3: EQUAL? L-PRSI,NOT-HERE-OBJECT \?CND1 ZERO? P-MOBY-FOUND /?CND1 SET 'N,TRUE-VALUE SET 'L-PRSI,P-MOBY-FOUND ?CND1: ZERO? L-PRSA \?ELS14 PRINTR "Not until you do something." ?ELS14: EQUAL? L-PRSA,V?WALK,V?FOLLOW \?ELS18 CALL PERFORM,L-PRSA,L-PRSO RSTACK ?ELS18: ZERO? L-PRSO /?ELS25 CALL VISIBLE?,L-PRSO ZERO? STACK \?ELS25 PUSH L-PRSO JUMP ?CND21 ?ELS25: ZERO? L-PRSI /?PRD23 CALL VISIBLE?,L-PRSI ZERO? STACK \?PRD23 PUSH L-PRSI JUMP ?CND21 ?PRD23: PUSH 0 ?CND21: SET 'OBJ,STACK ZERO? OBJ /?ELS36 EQUAL? OBJ,ROOMS /?ELS36 ZERO? N /?ELS41 CALL TELL-YOU-CANT,STR?58,FALSE-VALUE EQUAL? OBJ,WEASEL /?CND43 PRINTI "any " ?CND43: CALL DPRINT,OBJ PRINTI " here." CRLF JUMP ?CND39 ?ELS41: PRINTI "I can't see " CALL THE?,OBJ CALL DPRINT,OBJ PRINTI " anymore." CRLF ?CND39: SET 'CLOCK-WAIT,TRUE-VALUE RETURN 2 ?ELS36: EQUAL? L-WINNER,PLAYER /?THN65 CALL CONTACT-ESTABLISHED EQUAL? STACK,M-FATAL /FALSE ?THN65: SET 'P-WALK-DIR,L-WALK-DIR SET 'P-MERGED,TRUE-VALUE SET 'P-MULT,FALSE-VALUE CALL PERFORM,L-PRSA,L-PRSO,L-PRSI >N ZERO? N \?CND67 SET 'N,TRUE-VALUE ?CND67: SET 'P-MERGED,FALSE-VALUE RETURN N .FUNCT CONTACT-ESTABLISHED,OCONT,V SET 'OCONT,P-CONT SET 'P-CONT,TRUE-VALUE SET 'P-MERGED,TRUE-VALUE CALL PERFORM,V?TELL,L-WINNER >V SET 'P-CONT,OCONT SET 'P-MERGED,FALSE-VALUE RETURN V .FUNCT JIGS-UP,DESC,PLAYER?=0 PRINT DESC CRLF PRINTI " **** You have died **** " PRINTI "Too bad." CRLF CRLF CALL FINISH RSTACK .FUNCT V-RESTORE RESTORE \?ELS5 CALL TELL-OKAY CALL V-FIRST-LOOK RSTACK ?ELS5: CALL TELL-FAILED RSTACK .FUNCT TELL-FAILED PRINTR "Failed." .FUNCT TELL-OKAY PRINTR "Okay." .FUNCT V-SAVE SAVE \?ELS5 CALL TELL-OKAY RSTACK ?ELS5: CALL TELL-FAILED RSTACK .FUNCT V-RESTART CALL V-SCORE,TRUE-VALUE PRINTI "Do you wish to restart? (Y is affirmative): " CALL YES? ZERO? STACK /FALSE PRINTI "Restarting." CRLF RESTART CALL TELL-FAILED RSTACK .FUNCT V-WALK-AROUND CALL TELL-SHD-DIR RSTACK .FUNCT V-LAUNCH PRINTR "How does one launch that?" .FUNCT V-WALK,PT,PTS,STR,OBJ,RM ZERO? P-WALK-DIR \?ELS5 CALL PERFORM,V?WALK-TO,PRSO RTRUE ?ELS5: GETPT HERE,PRSO >PT ZERO? PT /?ELS7 PTSIZE PT >PTS EQUAL? PTS,UEXIT \?ELS12 GETB PT,REXIT CALL GOTO,STACK RSTACK ?ELS12: EQUAL? PTS,NEXIT \?ELS14 GET PT,NEXITSTR PRINT STACK CRLF RETURN 2 ?ELS14: EQUAL? PTS,FEXIT \?ELS20 GET PT,FEXITFCN CALL STACK >RM ZERO? RM /?ELS25 CALL GOTO,RM RSTACK ?ELS25: RETURN 2 ?ELS20: EQUAL? PTS,CEXIT \?ELS31 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?ELS36 GETB PT,REXIT CALL GOTO,STACK RSTACK ?ELS36: GET PT,CEXITSTR >STR ZERO? STR /?ELS38 PRINT STR CRLF RETURN 2 ?ELS38: CALL TELL-NO-GO,TRUE-VALUE RETURN 2 ?ELS31: EQUAL? PTS,DEXIT \FALSE GETB PT,DEXITOBJ >OBJ FSET? OBJ,OPENBIT \?ELS53 GETB PT,REXIT CALL GOTO,STACK RSTACK ?ELS53: GET PT,DEXITSTR >STR ZERO? STR /?ELS55 PRINT STR CRLF SET 'P-IT-OBJECT,OBJ RETURN 2 ?ELS55: CALL TELL-CLOSED,OBJ,FALSE-VALUE SET 'P-IT-OBJECT,OBJ RETURN 2 ?ELS7: ZERO? LIT \?ELS65 RANDOM 100 GRTR? 90,STACK \?ELS65 CALL JIGS-UP,STR?59 RSTACK ?ELS65: CALL TELL-NO-GO,TRUE-VALUE RETURN 2 .FUNCT V-INVENTORY FIRST? WINNER \?ELS3 CALL PRINT-CONT,WINNER JUMP ?CND1 ?ELS3: PRINTI "You are empty-handed." CRLF ?CND1: EQUAL? WINNER,PLAYER \FALSE GRTR? POCKET-CHANGE,0 \FALSE FSET? WET-SUIT,WORNBIT /FALSE FSET? DEEP-SUIT,WORNBIT /FALSE PRINTI "You have $" PRINTN POCKET-CHANGE PRINTR " in your pocket." .FUNCT PRE-TAKE EQUAL? PRSO,NOT-HERE-OBJECT /FALSE EQUAL? PRSO,OCEAN \?ELS5 EQUAL? PRSI,GLASS-CASE /FALSE ?ELS5: EQUAL? PRSI,GLOBAL-ROOM \?ELS9 CALL TELL-YOURE-NOT,STR?65 RTRUE ?ELS9: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?THN12 EQUAL? PRSO,INTNUM \?ELS11 ZERO? P-DOLLAR-FLAG /?ELS11 ?THN12: CALL TELL-NOT-EASY RTRUE ?ELS11: IN? PRSO,MAGNET \?CND1 ZERO? PRSI /FALSE EQUAL? PRSI,MAGNET /FALSE ?CND1: IN? PRSO,WINNER \?ELS26 FSET? PRSO,WORNBIT \?ELS31 GET P-VTBL,0 EQUAL? STACK,W?REMOVE \?ELS36 CALL PERFORM,V?DISEMBARK,PRSO RTRUE ?ELS36: PRINTR "You are already wearing it." ?ELS31: CALL TELL-YOU-ALREADY,STR?66 RSTACK ?ELS26: LOC PRSO FSET? STACK,CONTBIT \?ELS44 LOC PRSO FSET? STACK,OPENBIT /?ELS44 EQUAL? PRSO,PUTTY /FALSE CALL TELL-CANT-REACH,STR?67 RTRUE ?ELS44: ZERO? PRSI /?ELS55 LOC PRSO EQUAL? PRSI,STACK /?ELS61 EQUAL? PRSO,NOT-HERE-OBJECT \?ELS66 FSET? PRSI,CONTBIT \?ELS66 FSET? PRSI,OPENBIT /?ELS66 CALL TELL-YOUD-BETTER,STR?68,FALSE-VALUE,FALSE-VALUE CALL DPRINT,PRSI PRINTI " first." CRLF SET 'P-IT-OBJECT,PRSI RTRUE ?ELS66: EQUAL? PRSO,PRSI \?ELS72 CALL TELL-SERIOUS RSTACK ?ELS72: FSET? PRSI,VICBIT \?ELS74 CALL PERFORM,V?ASK-FOR,PRSI,PRSO RTRUE ?ELS74: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?ELS82 EQUAL? PRSO,INTNUM \?ELS82 ZERO? P-DOLLAR-FLAG /?ELS76 ?ELS82: EQUAL? PRSI,POCKET \?ELS76 CALL TELL-WHY-BOTHER RSTACK ?ELS76: EQUAL? PRSO,AIR \?ELS84 EQUAL? PRSI,AIR-TANK \?ELS84 CALL PERFORM,V?EMPTY,AIR-TANK RTRUE ?ELS84: CALL START-SENTENCE,PRSO PRINTI " isn't in " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." ?ELS61: SET 'PRSI,FALSE-VALUE RFALSE ?ELS55: LOC WINNER EQUAL? PRSO,STACK \FALSE PRINTI "You are " LOC WINNER CALL VEHPREP,STACK PRINT STACK PRINTR " it, loser!" .FUNCT TELL-YOURE-NOT,STR,DONE?=1 PRINTI "You're not " PRINT STR ZERO? DONE? /FALSE CRLF RTRUE .FUNCT TELL-NOT-EASY PRINTR "It's not that easy." .FUNCT V-TAKE CALL ITAKE ZERO? STACK /FALSE PRINTR "Taken." .FUNCT ITAKE,VB=1,CNT,OBJ,TEMP,?TMP1 FSET? PRSO,TAKEBIT /?ELS5 ZERO? VB /FALSE CALL PICK-ONE,YUKS PRINT STACK CRLF RFALSE ?ELS5: EQUAL? PRSO,ENVELOPE \?ELS13 EQUAL? HERE,MCGINTY-HQ \?ELS13 IN? MCGINTY,MCGINTY-HQ \?ELS13 SET 'TEMP,PRSA SET 'PRSA,V?TAKE CALL ENVELOPE-F SET 'PRSA,TEMP RFALSE ?ELS13: LOC PRSO IN? STACK,WINNER /?ELS17 CALL WEIGHT,PRSO >?TMP1 CALL WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,LOAD-ALLOWED \?ELS17 ZERO? VB /FALSE PRINTI "Your load is too heavy." CRLF RFALSE ?ELS17: CALL CCOUNT,WINNER >CNT GRTR? CNT,FUMBLE-NUMBER \?ELS27 PRINTI "You're carrying too many things already!" CRLF RFALSE ?ELS27: EQUAL? PRSO,MINE \?ELS31 CALL BOOM RSTACK ?ELS31: MOVE PRSO,WINNER FSET PRSO,TOUCHBIT FCLEAR PRSO,NDESCBIT CALL RATING-OBJ,PRSO RTRUE .FUNCT V-PUT-ACROSS CALL TELL-NO-NO RSTACK .FUNCT V-PUT-ON FSET? PRSI,SURFACEBIT \?ELS5 CALL V-PUT RTRUE ?ELS5: EQUAL? PRSI,ME \?ELS7 PRINTR "Sounds kinky." ?ELS7: FSET? PRSI,VICBIT \?ELS11 PRINTR "I don't think he'd appreciate it." ?ELS11: PRINTI "There's no good surface on " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." .FUNCT PRE-PUT,OBJ ZERO? PRSI \?ELS5 PRINTR "Huh?" ?ELS5: EQUAL? PRSO,MAGNET,GLOBAL-SELF,NOT-HERE-OBJECT /FALSE EQUAL? PRSI,OCEAN \?ELS11 CALL PERFORM,V?THROW,PRSO,OCEAN RTRUE ?ELS11: EQUAL? PRSA,V?PUT \?ELS13 EQUAL? PRSO,ME \?ELS13 CALL PERFORM,V?WEAR,PRSI RTRUE ?ELS13: EQUAL? PRSA,V?PUT-ON \?ELS17 EQUAL? PRSI,ME \?ELS17 CALL PERFORM,V?WEAR,PRSO RTRUE ?ELS17: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?THN22 ZERO? P-DOLLAR-FLAG /?ELS21 EQUAL? PRSO,INTNUM \?ELS21 ?THN22: EQUAL? PRSI,POCKET /FALSE CALL TELL-YOU-CANT,STR?53 RSTACK ?ELS21: EQUAL? PRSO,AIR-HOSE \?ELS34 EQUAL? PRSI,DEEP-SUIT /FALSE ?ELS34: CALL HELD?,PRSO ZERO? STACK \?ELS38 CALL TELL-DONT-HAVE,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." ?ELS38: IN? PRSO,GLOBAL-OBJECTS /?THN43 FSET? PRSO,TAKEBIT /FALSE ?THN43: PRINTR "Nice try." .FUNCT V-PUT,?TMP1 FSET? PRSI,OPENBIT /?CND1 FSET? PRSI,DOORBIT /?THN6 FSET? PRSI,CONTBIT /?CND1 ?THN6: FSET? PRSI,VEHBIT \?ELS3 JUMP ?CND1 ?ELS3: CALL TELL-NO-NO RTRUE ?CND1: FSET? PRSI,OPENBIT /?ELS14 PRINTI "The " CALL DPRINT,PRSI PRINTR " isn't open." ?ELS14: EQUAL? PRSI,PRSO \?ELS18 CALL TELL-HOW-THAT,STR?10 RSTACK ?ELS18: IN? PRSO,PRSI \?ELS20 CALL START-SENTENCE,PRSO PRINTI " is already in " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." ?ELS20: CALL WEIGHT,PRSI >?TMP1 CALL WEIGHT,PRSO ADD ?TMP1,STACK >?TMP1 GETP PRSI,P?SIZE SUB ?TMP1,STACK >?TMP1 GETP PRSI,P?CAPACITY GRTR? ?TMP1,STACK \?ELS26 PRINTR "There's no room." ?ELS26: CALL HELD?,PRSO ZERO? STACK \?ELS30 CALL ITAKE ZERO? STACK /TRUE ?ELS30: MOVE PRSO,PRSI FSET PRSO,TOUCHBIT FCLEAR PRSO,WORNBIT PRINTR "Done." .FUNCT PRE-DROP LOC WINNER EQUAL? PRSO,STACK \FALSE CALL PERFORM,V?DISEMBARK,PRSO RTRUE .FUNCT PRE-GIVE ZERO? PRSI \?ELS5 PRINTR "Huh?" ?ELS5: EQUAL? PRSO,ME,NOT-HERE-OBJECT /FALSE FSET? PRSI,VICBIT /?ELS11 PRINTI "To " CALL APRINT,PRSI PRINTR "???" ?ELS11: EQUAL? WINNER,PLAYER \?ELS15 EQUAL? PRSI,ME \?ELS15 ZERO? QCONTEXT /?ELS15 EQUAL? HERE,QCONTEXT-ROOM \?ELS15 CALL META-LOC,QCONTEXT EQUAL? HERE,STACK \?ELS15 SET 'WINNER,QCONTEXT CALL PERFORM,V?GIVE,PRSO,PRSI SET 'WINNER,PLAYER RTRUE ?ELS15: EQUAL? PRSI,WINNER /?THN20 EQUAL? WINNER,PLAYER \?ELS19 EQUAL? PRSI,ME \?ELS19 ?THN20: CALL TELL-CHARITY RSTACK ?ELS19: EQUAL? PRSO,INTNUM,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /FALSE EQUAL? PRSO,DRINKING-WATER \?ELS27 EQUAL? HERE,SHANTY \?ELS27 EQUAL? PRSI,SPEAR-CARRIER /FALSE ?ELS27: EQUAL? PRSO,DRINK-OBJECT \?ELS31 IN? DRINK-OBJECT,TABLE-OBJECT /FALSE ?ELS31: CALL HELD?,PRSO ZERO? STACK \FALSE EQUAL? WINNER,PLAYER \?ELS40 PRINTR "That's easy for you to say since you don't even have it." ?ELS40: PRINTI """I don't have " CALL APRINT,PRSO PRINTI " to give!"" exclaims " CALL THE?,WINNER CALL DPRINT,WINNER PRINTR "." .FUNCT TELL-CHARITY PRINTR "I know charity begins at home, but this is ridiculous." .FUNCT PRE-SGIVE CALL PERFORM,V?GIVE,PRSI,PRSO RTRUE .FUNCT HELD?,OBJ ZERO? OBJ /FALSE IN? OBJ,WINNER /TRUE EQUAL? OBJ,ME,GLOBAL-SELF /TRUE LOC OBJ CALL HELD?,STACK RSTACK .FUNCT V-GIVE EQUAL? PRSI,SPEAR-CARRIER \?ELS5 EQUAL? PRSO,INTNUM \?ELS5 ZERO? P-DOLLAR-FLAG /?ELS5 PRINTR """If you want to buy something, be specific.""" ?ELS5: FSET? PRSI,VICBIT \?ELS11 CALL START-SENTENCE,PRSI PRINTR " declines your generous offer." ?ELS11: CALL TELL-YOU-CANT,STR?69,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTI " to " CALL APRINT,PRSI PRINTR "!" .FUNCT V-SGIVE PRINTR "Bug." .FUNCT V-DROP,SUPPRESS=0 CALL IDROP ZERO? STACK /FALSE ZERO? SUPPRESS \FALSE PRINTR "Dropped." .FUNCT PRE-THROW EQUAL? PRSO,NOT-HERE-OBJECT /FALSE IN? PRSO,WINNER /FALSE CALL TELL-YOURE-NOT,STR?70,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT V-THROW ZERO? PRSI /?CND1 FSET? PRSI,CONTBIT /?THN8 FSET? PRSI,CLIMBBIT \?ELS7 ?THN8: CALL PERFORM,V?PUT,PRSO,PRSI RTRUE ?ELS7: EQUAL? PRSI,ME \?ELS11 PRINTR "You'd probably miss." ?ELS11: EQUAL? PRSI,FIELD \?ELS15 CALL START-SENTENCE,PRSO PRINTI " bounces off the weeds." CRLF JUMP ?CND1 ?ELS15: CALL START-SENTENCE,PRSI FSET? PRSI,VICBIT \?ELS22 PRINTI " ducks" JUMP ?CND20 ?ELS22: PRINTI " doesn't duck" ?CND20: PRINTI " as the " CALL DPRINT,PRSO PRINTI " flies by." CRLF ?CND1: CALL IDROP ZERO? PRSI \TRUE PRINTR "Thrown." .FUNCT IDROP IN? PRSO,WINNER /?ELS5 LOC PRSO IN? STACK,WINNER /?ELS5 CALL TELL-YOURE-NOT,STR?70,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTI "." CRLF RFALSE ?ELS5: IN? PRSO,WINNER /?ELS11 LOC PRSO FSET? STACK,OPENBIT /?ELS11 LOC PRSO CALL TELL-CLOSED,STACK,FALSE-VALUE RFALSE ?ELS11: LOC PLAYER FSET? STACK,VEHBIT \?ELS18 IN? PLAYER,BED /?ELS18 CALL META-LOC,PLAYER MOVE PRSO,STACK JUMP ?CND16 ?ELS18: LOC WINNER MOVE PRSO,STACK ?CND16: FCLEAR PRSO,WORNBIT EQUAL? PRSO,SAFETY-LINE \TRUE CALL QUEUE,I-PENDULUM,3 PUT STACK,0,1 RTRUE .FUNCT PRE-OPEN ZERO? PRSI /FALSE FSET? PRSI,TOOLBIT /FALSE CALL PRE-BURN RSTACK .FUNCT V-OPEN,F,STR FSET? PRSO,CONTBIT /?ELS5 CALL SAY-MUST-TELL RSTACK ?ELS5: GETP PRSO,P?CAPACITY ZERO? STACK /?ELS7 FSET? PRSO,OPENBIT \?ELS12 CALL TELL-ALREADY,STR?25 RSTACK ?ELS12: FSET PRSO,OPENBIT FIRST? PRSO /?ELS19 PRINTR "Opened." ?ELS19: FIRST? PRSO >F \?ELS23 NEXT? F /?ELS23 GETP F,P?FDESC >STR ZERO? STR /?ELS23 CALL TELL-OPENS PRINT STR CRLF RTRUE ?ELS23: PRINTI "Opening the " CALL DPRINT,PRSO PRINTI " reveals " CALL PRINT-CONTENTS,PRSO PRINTR "." ?ELS7: FSET? PRSO,DOORBIT \?ELS35 FSET? PRSO,OPENBIT \?ELS40 CALL TELL-ALREADY,STR?25 RSTACK ?ELS40: CALL TELL-OPENS FSET PRSO,OPENBIT RTRUE ?ELS35: PRINTI "The " CALL DPRINT,PRSO PRINTR " fails to open." .FUNCT TELL-OPENS PRINTI "The " CALL DPRINT,PRSO PRINTR " opens." .FUNCT SAY-MUST-TELL PRINTI "You must tell me how to do that to " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,2ND=0 FIRST? OBJ >F \FALSE NEXT? F /?CND6 SET 'P-IT-OBJECT,F ?CND6: ?PRG9: NEXT? F >N /?KLU36 ?KLU36: ZERO? 1ST? /?ELS13 SET '1ST?,FALSE-VALUE SET '2ND,TRUE-VALUE JUMP ?CND11 ?ELS13: ZERO? N \?THN20 ZERO? 2ND \?CND17 ?THN20: SET '2ND,FALSE-VALUE PRINTI "," ?CND17: PRINTI " " ZERO? N \?CND11 PRINTI "and " ?CND11: CALL APRINT,F SET 'F,N ZERO? F \?PRG9 RTRUE .FUNCT V-ASK-ABOUT EQUAL? PRSO,ME,PLAYER \?ELS5 CALL TELL-NO-INFO RSTACK ?ELS5: FSET? PRSO,VICBIT /?ELS7 CALL SUDDENLY-REALIZE-TALKING,PRSO RTRUE ?ELS7: PRINTI "After a moment's thought, " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " disavows any knowledge of that." .FUNCT SUDDENLY-REALIZE-TALKING,OBJ PRINTI "You suddenly realize that you're talking to " CALL APRINT,OBJ PRINTR "." .FUNCT TELL-NO-INFO PRINTI "You find that you can provide " CALL DPRINT,GLOBAL-SELF PRINTR " with no new information." .FUNCT PRE-ASK-CONTEXT-ABOUT,P ZERO? QCONTEXT /FALSE EQUAL? HERE,QCONTEXT-ROOM \FALSE CALL META-LOC,QCONTEXT EQUAL? HERE,STACK \FALSE PRINTI "(said to " CALL DPRINT,QCONTEXT PRINTI ")" CRLF CALL PERFORM,V?ASK-ABOUT,QCONTEXT,PRSO RTRUE .FUNCT V-ASK-CONTEXT-ABOUT CALL V-ASK-CONTEXT-FOR RSTACK .FUNCT V-ASK-FOR EQUAL? PRSO,ME,PLAYER \?ELS5 CALL TELL-NO-INFO RSTACK ?ELS5: FSET? PRSO,VICBIT \?ELS7 EQUAL? PRSO,PLAYER \?ELS12 IN? PRSI,PLAYER \?ELS17 CALL TELL-YOU-ALREADY,STR?66 RSTACK ?ELS17: CALL TELL-DONT-HAVE,STR?21 RSTACK ?ELS12: EQUAL? PRSI,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY,KNIFE /?THN22 EQUAL? PRSI,INTNUM \?ELS21 ZERO? P-DOLLAR-FLAG /?ELS21 ?THN22: CALL START-SENTENCE,PRSO PRINTR " refuses." ?ELS21: EQUAL? PRSO,SPEAR-CARRIER \?ELS29 GETP PRSI,P?NORTH GRTR? STACK,0 \?ELS29 CALL TELL-CHARITY RSTACK ?ELS29: CALL START-SENTENCE,PRSO IN? PRSI,PRSO \?ELS38 PRINTI " hands you the " CALL DPRINT,PRSI PRINTI "." CRLF MOVE PRSI,WINNER RTRUE ?ELS38: PRINTR " doesn't have that." ?ELS7: CALL SUDDENLY-REALIZE-TALKING,PRSO RSTACK .FUNCT PRE-ASK-CONTEXT-FOR,P ZERO? QCONTEXT /FALSE EQUAL? HERE,QCONTEXT-ROOM \FALSE CALL META-LOC,QCONTEXT EQUAL? HERE,STACK \FALSE PRINTI "(said to " CALL DPRINT,QCONTEXT PRINTI ")" CRLF CALL PERFORM,V?ASK-FOR,QCONTEXT,PRSO RTRUE .FUNCT V-ASK-CONTEXT-FOR CALL TELL-YOURE-NOT,STR?71 RSTACK .FUNCT V-CALL FSET? PRSO,PERSON \?ELS5 CALL PERFORM,V?$CALL,PRSO RTRUE ?ELS5: FSET? PRSO,VICBIT \?ELS7 SET 'QCONTEXT,PRSO SET 'QCONTEXT-ROOM,HERE PRINTI "The " CALL DPRINT,PRSO CALL TELL-LISTENING RSTACK ?ELS7: PRINTR "There's no response." .FUNCT V-CALL-LOSE SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "You must use a verb!" .FUNCT PRE-$CALL EQUAL? PRSO,INTDIR \?ELS5 CALL PERFORM,V?WALK,P-WALK-DIR RTRUE ?ELS5: FSET? PRSO,VICBIT /FALSE CALL V-CALL-LOSE RSTACK .FUNCT V-$CALL,MOT=0 EQUAL? PRSO,PLAYER,ME \?ELS5 CALL V-CALL-LOSE RSTACK ?ELS5: FSET? PRSO,PERSON \?ELS7 CALL IN-MOTION?,PRSO ZERO? STACK /?CND8 SET 'MOT,TRUE-VALUE ?CND8: CALL META-LOC,PRSO EQUAL? STACK,HERE /?THN16 CALL CORRIDOR-LOOK,PRSO ZERO? STACK /?ELS15 ?THN16: CALL START-SENTENCE,PRSO CALL GRAB-ATTENTION,PRSO ZERO? STACK /?ELS22 FSET PRSO,TOUCHBIT CALL META-LOC,PRSO >QCONTEXT-ROOM ZERO? MOT /?ELS27 PRINTR " stops and turns toward you." ?ELS27: CALL TELL-LISTENING RSTACK ?ELS22: PRINTR " ignores you." ?ELS15: PRINTI "You don't see " CALL DPRINT,PRSO PRINTR " here." ?ELS7: EQUAL? PRSO,SPEAR-CARRIER \?ELS42 IN? SPEAR-CARRIER,HERE \?ELS42 SET 'QCONTEXT,SPEAR-CARRIER SET 'QCONTEXT-ROOM,HERE PRINTI "The " CALL DPRINT,PRSO CALL TELL-LISTENING RSTACK ?ELS42: CALL V-CALL-LOSE RSTACK .FUNCT TELL-LISTENING PRINTR " is listening." .FUNCT V-CLOSE FSET? PRSO,CONTBIT /?ELS5 CALL SAY-MUST-TELL RSTACK ?ELS5: FSET? PRSO,SURFACEBIT /?ELS7 GETP PRSO,P?CAPACITY ZERO? STACK /?ELS7 FSET? PRSO,OPENBIT \?ELS14 FCLEAR PRSO,OPENBIT PRINTR "Closed." ?ELS14: CALL TELL-ALREADY,STR?26 RSTACK ?ELS7: FSET? PRSO,DOORBIT \?ELS20 FSET? PRSO,OPENBIT \?ELS25 CALL TELL-NOW,PRSO,STR?26 FCLEAR PRSO,OPENBIT RTRUE ?ELS25: CALL TELL-ALREADY,STR?26 RSTACK ?ELS20: CALL TELL-YOU-CANT,STR?72 RSTACK .FUNCT CCOUNT,OBJ,CNT=0,X FIRST? OBJ >X \?CND1 ?PRG4: FSET? X,WORNBIT /?CND6 INC 'CNT ?CND6: NEXT? X >X /?PRG4 ?CND1: RETURN CNT .FUNCT WEIGHT,OBJ,CONT,WT=0 FIRST? OBJ >CONT \?CND1 ?PRG4: EQUAL? OBJ,WINNER \?ELS8 FSET? CONT,WEARBIT \?ELS8 INC 'WT JUMP ?CND6 ?ELS8: CALL WEIGHT,CONT ADD WT,STACK >WT ?CND6: NEXT? CONT >CONT /?PRG4 ?CND1: GETP OBJ,P?SIZE ADD WT,STACK RSTACK .FUNCT V-BREATHE ZERO? PRSO /?ELS5 EQUAL? PRSO,AIR /?ELS5 PRINTR "Stick to air." ?ELS5: PRINTR "If you stop breathing, I'll let you know." .FUNCT V-SCRIPT GET 0,8 BOR STACK,1 PUT 0,8,STACK PRINTI "Here begins" PRINT COPR-NOTICE CRLF RTRUE .FUNCT V-UNSCRIPT PRINTI "Here ends" PRINT COPR-NOTICE CRLF GET 0,8 BAND STACK,-2 PUT 0,8,STACK RTRUE .FUNCT PRE-MOVE EQUAL? PRSO,SAFETY-LINE /FALSE IN? PLAYER,PRSO \?ELS7 CALL TELL-CONTORT RSTACK ?ELS7: CALL HELD?,PRSO ZERO? STACK /FALSE PRINTR "I don't juggle objects!" .FUNCT V-MOVE FSET? PRSO,TAKEBIT \?ELS5 PRINTI "Moving the " CALL DPRINT,PRSO PRINTR " reveals nothing." ?ELS5: FSET? PRSO,PUSHBIT \?ELS9 CALL TELL-MOVES-BIT RSTACK ?ELS9: CALL TELL-YOU-CANT,STR?74,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT V-LAMP-ON FSET? PRSO,VICBIT \?ELS5 PRINTR "Restrain yourself." ?ELS5: CALL TELL-YOU-CANT,STR?75 RSTACK .FUNCT V-LAMP-OFF CALL TELL-YOU-CANT,STR?76 RSTACK .FUNCT TELL-PASSES PRINTR "Time passes..." .FUNCT V-WAIT,NUM=10,NOT-INT?=1,WHO=0,INTERRUPTED=0 ZERO? NOT-INT? /?CND1 CALL TELL-PASSES GRTR? I-WAIT-DURATION,0 /FALSE ?CND1: ?PRG8: DLESS? 'NUM,0 \?ELS12 JUMP ?REP9 ?ELS12: CALL CLOCKER ZERO? STACK /?ELS14 SET 'INTERRUPTED,TRUE-VALUE JUMP ?REP9 ?ELS14: ZERO? WHO /?CND10 IN? WHO,HERE \?CND10 SET 'INTERRUPTED,TRUE-VALUE JUMP ?REP9 ?CND10: USL JUMP ?PRG8 ?REP9: ZERO? NOT-INT? /?ELS23 SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT ?ELS23: RETURN INTERRUPTED .FUNCT V-WAIT-FOR EQUAL? PRSO,INTNUM \?ELS5 GRTR? P-NUMBER,180 \?ELS10 PRINTR "That's too long to wait." ?ELS10: CALL V-WAIT,P-NUMBER RSTACK ?ELS5: EQUAL? PRSO,PLAYER,ME \?ELS16 PRINTR "You're already here!" ?ELS16: FSET? PRSO,PERSON /?THN21 EQUAL? PRSO,DELIVERY-BOY \?ELS20 ?THN21: IN? PRSO,HERE \?ELS27 PRINTR "He's already here!" ?ELS27: CALL TELL-PASSES ?PRG32: CALL V-WAIT,30,FALSE-VALUE,PRSO ZERO? STACK /?CND34 IN? PRSO,HERE \?CND34 FSET PRSO,TOUCHBIT CALL START-SENTENCE,PRSO PRINTI ", for whom you were waiting, has arrived." CRLF SET 'P-IT-OBJECT,PRSO JUMP ?REP33 ?CND34: CALL START-SENTENCE,PRSO PRINTI " isn't here yet. Do you want to keep waiting? (YES or NO?)" CALL YES? ZERO? STACK \?PRG32 PRINTI "If you say so..." CRLF ?REP33: SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT ?ELS20: FSET? PRSO,VICBIT \?ELS50 PRINTR "I don't think he's going anywhere." ?ELS50: PRINTR "Why? It's not going anywhere." .FUNCT PRE-BOARD,AV LOC WINNER >AV FSET? PRSO,VEHBIT \?ELS3 FSET? AV,VEHBIT \FALSE PRINTI "You are already " CALL VEHPREP,AV PRINT STACK PRINTI " the " CALL DPRINT,AV PRINTI "!" CRLF RETURN 2 ?ELS3: FSET? PRSO,WEARBIT \?ELS12 CALL PERFORM,V?WEAR,PRSO RETURN 2 ?ELS12: EQUAL? PRSO,FIELD,CLOSET,NOT-HERE-OBJECT /FALSE EQUAL? PRSO,BACK-WINDOW,REDS-BUNK,OCEAN /FALSE PRINTI "I suppose you have a theory on getting into " CALL THE?,PRSO CALL DPRINT,PRSO PRINTI "." CRLF RETURN 2 .FUNCT V-BOARD PRINTI "You are now " CALL VEHPREP,PRSO PRINT STACK PRINTI " the " CALL DPRINT,PRSO PRINTI "." CRLF MOVE WINNER,PRSO RTRUE .FUNCT V-DISEMBARK FSET? PRSO,WORNBIT \?ELS5 CALL UNWEAR RTRUE ?ELS5: LOC WINNER EQUAL? STACK,PRSO /?ELS7 CALL TELL-YOURE-NOT,STR?77 RETURN 2 ?ELS7: FSET? HERE,RLANDBIT \?ELS11 ZERO? STOOD-UP \?ELS14 PRINTI "You get out of bed." CRLF SET 'STOOD-UP,TRUE-VALUE JUMP ?CND12 ?ELS14: PRINTI "You are on your feet again." CRLF ?CND12: MOVE WINNER,HERE RTRUE ?ELS11: PRINTI "A bad idea." CRLF RETURN 2 .FUNCT PRE-BUY EQUAL? PRSO,DRINKING-WATER /FALSE FSET? WET-SUIT,WORNBIT /?THN8 FSET? DEEP-SUIT,WORNBIT \FALSE ?THN8: CALL TELL-YOU-CANT,STR?78 RSTACK .FUNCT V-BUY,RENT=0,COST,?TMP1 IN? PRSO,ROOMS /?ELS5 GETP PRSO,P?NORTH >COST ZERO? COST /?ELS5 GRTR? COST,0 \?ELS5 CALL ENABLED?,I-EQUIP ZERO? STACK /?ELS12 IN? MCGINTY,OUTFITTERS-HQ /?ELS12 PRINTR "The salesman is too busy with Johnny right now." ?ELS12: FSET? PRSO,RENTBIT \?ELS18 ZERO? RENT \?ELS18 PRINTR "That's not for sale, but you might try renting it." ?ELS18: GRTR? COST,POCKET-CHANGE \?ELS24 CALL TELL-NO-AFFORD RSTACK ?ELS24: SUB POCKET-CHANGE,COST >POCKET-CHANGE PUTP PRSO,P?NORTH,-1 ZERO? JOHNNY-MADE-DEAL /?ELS29 ZERO? DELIVERY-MADE \?ELS29 FSET PRSO,TRYTAKEBIT PUT DELIVERY-TABLE,DT-PTR,PRSO ADD DT-PTR,2 >DT-PTR JUMP ?CND27 ?ELS29: FSET PRSO,TAKEBIT FCLEAR PRSO,NDESCBIT CALL WEIGHT,PRSO >?TMP1 CALL WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,LOAD-ALLOWED /?THN37 CALL CCOUNT,WINNER GRTR? STACK,FUMBLE-NUMBER \?ELS36 ?THN37: MOVE PRSO,GLOBAL-SURFACE JUMP ?CND27 ?ELS36: MOVE PRSO,WINNER ?CND27: PRINTI "You have " ZERO? RENT /?ELS45 PRINTI "rented" JUMP ?CND43 ?ELS45: PRINTI "purchased" ?CND43: PRINTI " " CALL APRINT,PRSO PRINTI " for $" PRINTN COST IN? PRSO,GLOBAL-SURFACE \?CND55 PRINTI ". Since you can't currently carry it, the salesman leaves it on the counter" ?CND55: PRINTR "." ?ELS5: EQUAL? COST,-1 \?ELS63 FSET? PRSO,RENTBIT \?ELS68 PRINTR "You've already rented it." ?ELS68: CALL TELL-ONLY-ONCE,STR?79 RSTACK ?ELS63: EQUAL? PRSO,DRINKING-WATER \?ELS74 EQUAL? HERE,MM-GALLEY,NW-GALLEY \?ELS79 PRINTI "Get it " CALL DPRINT,GLOBAL-SELF PRINTR "." ?ELS79: CALL PERFORM,V?ASK-FOR,SPEAR-CARRIER,DRINKING-WATER SET 'P-IT-OBJECT,DRINKING-WATER RTRUE ?ELS74: PRINTR "That's not for sale." .FUNCT TELL-ONLY-ONCE,STR PRINTI "You only " PRINT STR PRINTR " it once." .FUNCT V-RENT,COST IN? PRSO,ROOMS /?ELS5 GETP PRSO,P?NORTH >COST ZERO? COST /?ELS5 GRTR? COST,0 \?ELS5 FSET? PRSO,RENTBIT /?ELS12 PRINTR "That's not available for rental. You might try buying it." ?ELS12: CALL V-BUY,TRUE-VALUE RSTACK ?ELS5: EQUAL? COST,-1 \?ELS18 FSET? PRSO,RENTBIT \?ELS23 CALL TELL-ONLY-ONCE,STR?80 RSTACK ?ELS23: CALL TELL-YOU-ALREADY,STR?81 RSTACK ?ELS18: CALL TELL-YOU-CANT,STR?82 RSTACK .FUNCT GOTO,RM,V?=1,LB,WLOC,AV=0,OLIT,F,N FSET? RM,RLANDBIT /?PRD1 PUSH 0 JUMP ?PRD2 ?PRD1: PUSH 1 ?PRD2: SET 'LB,STACK LOC WINNER >WLOC SET 'OLIT,LIT FSET? WLOC,VEHBIT \?CND3 CALL TELL-YOUD-BETTER,STR?83,FALSE-VALUE,FALSE-VALUE FSET? WLOC,SURFACEBIT \?ELS8 PRINTI "off" JUMP ?CND6 ?ELS8: PRINTI "out" ?CND6: PRINTI " of the " CALL DPRINT,WLOC PRINTI " first." CRLF RETURN 2 ?CND3: MOVE WINNER,RM SET 'HERE,RM CALL LIT?,HERE >LIT ZERO? OLIT \?CND24 ZERO? LIT \?CND24 RANDOM 100 GRTR? 90,STACK \?CND24 CALL JIGS-UP,STR?84 ?CND24: GETP HERE,P?ACTION CALL STACK,M-ENTER CALL RATING-OBJ,RM EQUAL? HERE,RM \TRUE EQUAL? ADVENTURER,WINNER /?ELS33 CALL START-SENTENCE,WINNER PRINTI " leaves the room." CRLF RETURN 2 ?ELS33: ZERO? V? /TRUE CALL V-FIRST-LOOK IN? MAGNET,PLAYER \TRUE ZERO? MAGNET-ON /?ELS46 CALL ATTRACTION RTRUE ?ELS46: FIRST? MAGNET >F \TRUE MOVE F,WLOC RTRUE .FUNCT V-BACK PRINTI "Sorry, my memory isn't that good. " CALL TELL-SHD-DIR RSTACK .FUNCT POURABLE?,OBJ EQUAL? OBJ,DRINKING-WATER,DRINK-OBJECT \FALSE RTRUE .FUNCT V-POUR EQUAL? PRSO,OCEAN \?ELS5 CALL TELL-YOURE-NOT,STR?85 RSTACK ?ELS5: CALL POURABLE?,PRSO ZERO? STACK \?ELS7 CALL TELL-YOU-CANT,STR?86 RTRUE ?ELS7: EQUAL? HERE,SHANTY \?ELS9 IN? PRSO,TABLE-OBJECT /?ELS9 CALL TELL-BUY-FIRST RSTACK ?ELS9: MOVE PRSO,HERE FSET PRSO,NDESCBIT PRINTR "It evaporates immediately." .FUNCT V-POUR-IN,L CALL POURABLE?,PRSO ZERO? STACK \?ELS5 PRINTI "I don't think you can pour " CALL APRINT,PRSO PRINTI "." RTRUE ?ELS5: FSET? PRSI,CONTBIT /?ELS9 PRINTI "You'd have a lot of trouble pouring the " CALL DPRINT,PRSO PRINTI " into " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." ?ELS9: CALL TELL-WHY-BOTHER RSTACK .FUNCT V-POUR-ON CALL POURABLE?,PRSO ZERO? STACK /?ELS5 CALL TELL-WHY-BOTHER RSTACK ?ELS5: CALL TELL-YOU-CANT,STR?86 RSTACK .FUNCT V-SHOW ZERO? PRSI \?ELS5 PRINTR "Huh?" ?ELS5: EQUAL? PRSI,ME,PLAYER \?ELS9 PRINTI "Do you often talk to " CALL DPRINT,GLOBAL-SELF PRINTR "?" ?ELS9: FSET? PRSI,VICBIT /?ELS13 PRINTI "Don't wait for " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR " to applaud." ?ELS13: EQUAL? PRSI,PRSO \?ELS19 PRINTR "He's already aware of his own presence." ?ELS19: PRINTI "Although " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR " takes a look, he seems disinterested." .FUNCT PRE-SSHOW SET 'P-MERGED,TRUE-VALUE CALL PERFORM,V?SHOW,PRSI,PRSO RTRUE .FUNCT V-SSHOW PRINTI "Bug." RTRUE .FUNCT V-SPRAY CALL V-SQUEEZE RSTACK .FUNCT V-SSPRAY CALL PERFORM,V?SPRAY,PRSI,PRSO RSTACK .FUNCT V-SQUEEZE PRINTR "How singularly useless." .FUNCT V-OIL PRINTR "That's not very useful." .FUNCT V-FILL CALL TELL-NO-NO RSTACK .FUNCT PRE-DRILL ZERO? PRSI \?CND1 SET 'PRSI,DRILL ?CND1: EQUAL? PRSI,DRILL /?ELS8 CALL PRE-BURN RSTACK ?ELS8: IN? DRILL,PLAYER /FALSE CALL TELL-YOURE-NOT,STR?87 RSTACK .FUNCT V-DRILL CALL TELL-YOU-CANT,STR?88 RSTACK .FUNCT PRE-DRILL-IN IN? DRILL,PLAYER /?ELS5 PRINTR "A drill might help." ?ELS5: EQUAL? PRSO,HOLE-2,HOLE-1,HOLE /?THN10 EQUAL? PRSO,CEILING-HOLE-2,CEILING-HOLE-1,JAGGED-HOLE /?THN10 EQUAL? PRSO,FLOOR-HOLE-2,FLOOR-HOLE-1 \?ELS9 ?THN10: PRINTI "(with the " CALL DPRINT,DRILL PRINTI ")" CRLF CALL PERFORM,V?DRILL,PRSI,DRILL RTRUE ?ELS9: SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "I can't figure out what you mean." .FUNCT V-DRILL-IN PRINTR "Bug." .FUNCT PRE-DRINK EQUAL? WINNER,PLAYER /?ELS5 PRINTR """I'm not thirsty.""" ?ELS5: FSET? PRSO,DRINKBIT \?ELS9 FSET? DEEP-SUIT,WORNBIT \?ELS14 CALL TELL-IN-WAY RSTACK ?ELS14: FSET? MASK,WORNBIT \FALSE CALL TELL-IN-WAY,FALSE-VALUE RSTACK ?ELS9: CALL TELL-YOU-CANT,STR?89 RSTACK .FUNCT V-DRINK PRINTI "I don't think " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " would go down very well." .FUNCT TELL-IN-WAY,HOOD?=1 PRINTI "The " ZERO? HOOD? /?ELS5 PRINTI "hood" JUMP ?CND3 ?ELS5: CALL DPRINT,MASK ?CND3: PRINTR " would get in the way." .FUNCT PRE-EAT EQUAL? WINNER,PLAYER /?ELS5 PRINTR """I'm not hungry.""" ?ELS5: ZERO? SOUPS-ON /?ELS9 FSET? PRSO,FOODBIT \?ELS9 FSET? DEEP-SUIT,WORNBIT \?ELS16 CALL TELL-IN-WAY RSTACK ?ELS16: FSET? MASK,WORNBIT \FALSE CALL TELL-IN-WAY,FALSE-VALUE RSTACK ?ELS9: EQUAL? HERE,SHANTY \?ELS22 FSET? PRSO,FOODBIT \?ELS22 PRINTR "You'll have to buy it first." ?ELS22: FSET? PRSO,DRINKBIT \FALSE PRINTR "Try drinking it." .FUNCT V-EAT FSET? PRSO,PERSON \?ELS5 PRINTR "Cannibalism isn't a good idea. Especially when you're more likely to be the dinner than the diner." ?ELS5: PRINTI "I don't think that " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " would agree with you." .FUNCT V-CURSES ZERO? PRSO /?ELS5 FSET? PRSO,VICBIT \?ELS11 PRINTR "Insults of this nature won't help you." ?ELS11: PRINTI "And to think that " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " never said anything bad about you..." ?ELS5: PRINTR "You really don't have to swear like a sailor." .FUNCT V-LISTEN FSET? PRSO,VICBIT \?ELS5 PRINTI "If " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " says anything useful, I'll let you know." ?ELS5: CALL START-SENTENCE,PRSO PRINTR " makes no sound." .FUNCT V-FOLLOW,CN,CHR,COR,PCOR,L SET 'L-PRSO,PRSO SET 'L-PRSA,PRSA EQUAL? WINNER,PLAYER /?ELS5 CALL TELL-FREE-WILL RETURN 2 ?ELS5: EQUAL? PRSO,PLAYER \?ELS9 PRINTR "It's not clear whom you're talking to." ?ELS9: FSET? PRSO,PERSON /?ELS13 EQUAL? PRSO,DELIVERY-BOY /?ELS13 PRINTR "That doesn't sound very exciting." ?ELS13: LOC PRSO >L EQUAL? HERE,L \?ELS19 PRINTI "You're in the same place as " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "!" ?ELS19: GETP HERE,P?CORRIDOR >COR ZERO? COR /?ELS25 GETP L,P?CORRIDOR >PCOR ZERO? PCOR /?ELS25 BAND COR,PCOR ZERO? STACK /?ELS25 CALL COR-DIR,HERE,L >PRSO SET 'P-WALK-DIR,PRSO CALL V-WALK RSTACK ?ELS25: IN? PRSO,FERRY \?ELS29 CALL TELL-CANT-BOARD RSTACK ?ELS29: PRINTI "You seem to have lost track of " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT TELL-FREE-WILL PRINTR """I'll go where I want!""" .FUNCT V-STAY EQUAL? WINNER,PLAYER \?ELS5 PRINTR "I'm not going anywhere." ?ELS5: CALL TELL-FREE-WILL RETURN 2 .FUNCT V-PRAY PRINTR "If you pray enough, your prayers may be answered." .FUNCT V-LEAP,Z,S ZERO? PRSO /?ELS5 EQUAL? PRSO,INTDIR /?ELS5 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS5: GETPT HERE,P?DOWN >Z ZERO? Z /?ELS9 PTSIZE Z >S EQUAL? S,2 /?THN15 EQUAL? S,4 \?ELS14 GETB Z,1 VALUE STACK ZERO? STACK \?ELS14 ?THN15: CALL JIGS-UP,STR?90 RSTACK ?ELS14: CALL V-SKIP RSTACK ?ELS9: CALL V-SKIP RSTACK .FUNCT V-SKIP LOC PLAYER FSET? STACK,VEHBIT \?ELS5 PRINTR "That would be tough from your current position." ?ELS5: CALL PICK-ONE,WHEEEEE PRINT STACK CRLF RTRUE .FUNCT V-LEAVE CALL DO-WALK,P?OUT RSTACK .FUNCT V-HELLO ZERO? PRSO /?ELS5 CALL TELL-NO-RESPONSE RSTACK ?ELS5: CALL PICK-ONE,HELLOS PRINT STACK CRLF RTRUE .FUNCT V-GOODBYE CALL V-HELLO RSTACK .FUNCT TELL-NO-RESPONSE CALL START-SENTENCE,PRSO PRINTR " fails to respond." .FUNCT PRE-READ ZERO? LIT \?ELS5 PRINTR "It is impossible to read in the dark." ?ELS5: ZERO? PRSI /FALSE PRINTI "How does one look through " CALL APRINT,PRSI PRINTR "?" .FUNCT V-READ FSET? PRSO,READBIT /?ELS5 PRINTI "How can I read " CALL APRINT,PRSO PRINTR "?" ?ELS5: FSET PRSO,TOUCHBIT GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE .FUNCT V-LOOK-UNDER FSET? PRSO,VICBIT \?ELS5 PRINTR "His feet are on the floor." ?ELS5: EQUAL? PRSO,LIGHTHOUSE,DRINK-OBJECT,FOOD /?THN10 EQUAL? PRSO,OCEAN,GROUND,CLOSET \?ELS9 ?THN10: CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS9: IN? PRSO,PLAYER \?ELS15 PRINTR "You have it." ?ELS15: CALL TELL-NOTHING,STR?100 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS22 PRINTI "seaweed" JUMP ?CND20 ?ELS22: EQUAL? PRSO,FERRY,SALVAGER,TRAWLER /?THN27 EQUAL? PRSO,GLOBAL-FERRY \?ELS26 ?THN27: PRINTI "water" JUMP ?CND20 ?ELS26: PRINTI "dust" ?CND20: PRINTR " there." .FUNCT V-LOOK-BEHIND CALL TELL-NOTHING,STR?101 CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT TELL-NOTHING,STR,DONE?=0 PRINTI "There's nothing " PRINT STR ZERO? DONE? /FALSE PRINTR "." .FUNCT PRE-LOOK-IN FSET? PRSO,SURFACEBIT \FALSE PRINTR "It's solid." .FUNCT PRE-LOOK-ON FSET? PRSO,CONTBIT \FALSE FSET? PRSO,SURFACEBIT /FALSE CALL TELL-NOTHING,STR?102 CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT V-LOOK-INSIDE,REACH?=0 FSET? PRSO,DOORBIT \?ELS5 PRINTI "The " CALL DPRINT,PRSO PRINTI " is " FSET? PRSO,OPENBIT \?ELS10 PRINTI "open, but you can't tell what's beyond it" JUMP ?CND8 ?ELS10: PRINTI "closed" ?CND8: PRINTR "." ?ELS5: FSET? PRSO,CONTBIT \?ELS20 FSET? PRSO,VICBIT \?ELS25 CALL TELL-NOTHING,STR?103 ZERO? REACH? /?ELS28 PRINTI "felt" JUMP ?CND26 ?ELS28: PRINTI "seen" ?CND26: PRINTR "." ?ELS25: CALL SEE-INSIDE?,PRSO ZERO? STACK /?ELS39 FIRST? PRSO \?ELS44 CALL PRINT-CONT,PRSO ZERO? STACK \TRUE ?ELS44: FSET? PRSO,WORNBIT \?ELS48 PRINTR "You're wearing it." ?ELS48: FSET? PRSO,SURFACEBIT \?ELS52 IN? WINNER,PRSO \?ELS57 PRINTR "You're on it!" ?ELS57: CALL TELL-NOTHING,STR?104 CALL DPRINT,PRSO PRINTR "." ?ELS52: PRINTI "The " CALL DPRINT,PRSO PRINTR " is empty." ?ELS39: CALL TELL-CLOSED,PRSO,FALSE-VALUE RSTACK ?ELS20: PRINTR "I don't know how to do that." .FUNCT SEE-INSIDE?,OBJ FSET? OBJ,INVISIBLE /FALSE FSET? OBJ,OPENBIT /TRUE FSET? OBJ,TRANSBIT /TRUE RFALSE .FUNCT PRE-BURN ZERO? PRSI \?ELS5 PRINTR "Huh?" ?ELS5: PRINTI "With " CALL APRINT,PRSI PRINTR "??!?" .FUNCT V-BURN CALL TELL-NO-NO RSTACK .FUNCT PRE-TURN EQUAL? PRSO,NOT-HERE-OBJECT /FALSE EQUAL? PRSO,PSEUDO-OBJECT \?ELS7 EQUAL? HERE,MM-WHEELHOUSE,NW-WHEELHOUSE /FALSE ?ELS7: FSET? PRSO,TURNBIT /?ELS11 CALL TELL-WHY-BOTHER RSTACK ?ELS11: ZERO? PRSI /FALSE EQUAL? PRSI,INTDIR \FALSE CALL TELL-YOU-CANT,STR?105 RSTACK .FUNCT V-TURN CALL TELL-NO-EFFECT RSTACK .FUNCT TELL-NO-EFFECT PRINTR "This has no effect." .FUNCT V-PUMP PRINTR "I really don't see how." .FUNCT V-INFLATE CALL TELL-HOW-THAT,STR?106 RSTACK .FUNCT V-DEFLATE PRINTR "Come on, now!" .FUNCT V-LOCK PRINTR "It doesn't seem to work." .FUNCT V-PICK CALL TELL-YOU-CANT,STR?107 RSTACK .FUNCT PRE-UNLOCK EQUAL? PRSO,SAFE /FALSE ZERO? PRSI \FALSE IN? KEY,PLAYER \FALSE SET 'PRSI,KEY PRINTI "(with the room key)" CRLF RFALSE .FUNCT V-UNLOCK FSET? PRSO,DOORBIT \?ELS5 PRINTR "It's not locked." ?ELS5: CALL V-LOCK RSTACK .FUNCT V-CUT ZERO? PRSI \?ELS5 PRINTR "Huh?" ?ELS5: FSET? PRSI,WEAPONBIT /?ELS9 PRINTI "Not with " CALL APRINT,PRSI PRINTR "!" ?ELS9: FSET? PRSO,VICBIT /?THN14 EQUAL? PRSO,SQUID \?ELS13 ?THN14: CALL IKILL,STR?108 RSTACK ?ELS13: PRINTI "Strange concept, cutting " CALL APRINT,PRSO PRINTR "..." .FUNCT V-KILL CALL IKILL,STR?109 RSTACK .FUNCT IKILL,STR ZERO? PRSO \?ELS5 CALL TELL-NOTHING,STR?110 PRINT STR PRINTR "." ?ELS5: EQUAL? PRSO,SQUID \?ELS9 CALL JIGS-UP,STR?111 RSTACK ?ELS9: FSET? PRSO,VICBIT /?ELS11 PRINTI "I've known strange people, but fighting " CALL APRINT,PRSO PRINTR "?" ?ELS11: ZERO? PRSI /?THN16 EQUAL? PRSI,GLOBAL-SELF,ME \?ELS15 ?THN16: PRINTI "Trying to " PRINT STR PRINTI " " CALL APRINT,PRSO PRINTR " with your bare hands is suicidal." ?ELS15: IN? PRSI,WINNER /?ELS21 PRINTI "You aren't even holding " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." ?ELS21: FSET? PRSI,WEAPONBIT /?ELS27 PRINTI "Trying to " PRINT STR PRINTI " " CALL THE?,PRSO CALL DPRINT,PRSO PRINTI " with " CALL APRINT,PRSI PRINTR " is suicidal." ?ELS27: CALL TELL-NOT-SMART RSTACK .FUNCT V-ATTACK CALL IKILL,STR?112 RSTACK .FUNCT V-SWING CALL HELD?,PRSO ZERO? STACK \?ELS5 CALL TELL-YOURE-NOT,STR?113 RSTACK ?ELS5: PRINTR "Whoosh!" .FUNCT V-KICK FSET? PRSO,PERSON \?ELS5 CALL TELL-NOT-SMART RSTACK ?ELS5: CALL HACK-HACK,STR?114 RSTACK .FUNCT TELL-NOT-SMART PRINTR "That wouldn't be too smart." .FUNCT V-WAVE CALL HACK-HACK,STR?115 RSTACK .FUNCT V-WAVE-AT ZERO? PRSO /?ELS5 FSET? PRSO,VICBIT \?ELS5 CALL START-SENTENCE,PRSO PRINTR " acknowledges your greeting." ?ELS5: CALL TELL-NO-RESPONSE RSTACK .FUNCT V-LOWER CALL HACK-HACK,STR?116 RSTACK .FUNCT V-RUB FSET? PRSO,PERSON \?ELS5 CALL TELL-HANDS-OFF RSTACK ?ELS5: CALL HACK-HACK,STR?117 RSTACK .FUNCT TELL-HANDS-OFF PRINTR """Get your hands off me!""" .FUNCT V-PUSH FSET? PRSO,PERSON \?ELS5 CALL TELL-HANDS-OFF RSTACK ?ELS5: IN? WINNER,PRSO \?ELS7 CALL TELL-CONTORT RSTACK ?ELS7: FSET? PRSO,PUSHBIT \?ELS9 CALL TELL-MOVES-BIT RSTACK ?ELS9: CALL HACK-HACK,STR?118 RSTACK .FUNCT TELL-MOVES-BIT CALL START-SENTENCE,PRSO PRINTR " moves a bit." .FUNCT V-PUSH-OFF FSET? PRSI,SURFACEBIT \?ELS5 IN? PRSO,PRSI \?ELS5 LOC PRSI MOVE PRSO,STACK CALL TELL-NOW,PRSO,STR?119 RSTACK ?ELS5: PRINTR "A ludicrous idea at best." .FUNCT V-PUSH-TO,FALLEN=0,OH,F IN? WINNER,PRSO \?ELS5 CALL TELL-CONTORT RSTACK ?ELS5: FSET? PRSO,PUSHBIT /?ELS7 FSET? PRSO,TAKEBIT \?ELS12 PRINTR "There's no need for that. Why not just pick it up and then carry it there?" ?ELS12: EQUAL? PRSO,ME \?ELS16 PRINTR "Do it yourself." ?ELS16: FSET? PRSO,VICBIT \?ELS20 CALL TELL-HANDS-OFF RSTACK ?ELS20: PRINTI "You push and strain, but can't budge " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." ?ELS7: EQUAL? PRSI,INTDIR /?ELS28 CALL TELL-YOU-CANT,STR?120 RTRUE ?ELS28: SET 'OH,HERE ZERO? OH /FALSE CALL DO-WALK,P-WALK-DIR EQUAL? STACK,M-FATAL /FALSE ?PRG33: FIRST? PRSO >F \?REP34 MOVE F,OH SET 'FALLEN,TRUE-VALUE JUMP ?PRG33 ?REP34: MOVE PRSO,HERE FSET PRSO,TOUCHBIT PRINTI "You bring the " CALL DPRINT,PRSO PRINTI " along with you." ZERO? FALLEN /?CND42 CALL TELL-ALL-FALL ?CND42: CRLF RTRUE .FUNCT TELL-CONTORT PRINTR "That would require some impressive contortions." .FUNCT TELL-ALL-FALL PRINTI " Everything that was on it falls off." RTRUE .FUNCT PRE-CHIP GET P-VTBL,0 EQUAL? STACK,W?CHIP \?ELS3 IN? SPEAR-CARRIER,HERE \?ELS3 EQUAL? PRSO,INTNUM \?ELS3 ZERO? P-DOLLAR-FLAG /?ELS3 CALL PERFORM,V?GIVE,PRSO,SPEAR-CARRIER RTRUE ?ELS3: CALL PERFORM,V?MUNG,PRSO RTRUE .FUNCT V-CHIP PRINTR "Bug." .FUNCT PRE-MUNG EQUAL? PRSO,WINNER,ME,NOT-HERE-OBJECT /FALSE EQUAL? PRSO,MIRROR,GLOBAL-BANK,ADVENTURER /FALSE ZERO? PRSI /?ELS7 FSET? PRSI,WEAPONBIT /FALSE ?ELS7: FSET? PRSO,VICBIT /?CND1 EQUAL? PRSO,SQUID /?CND1 CALL HACK-HACK,STR?121 RTRUE ?CND1: PRINTI "Trying to destroy " CALL THE?,PRSO CALL DPRINT,PRSO PRINTI " with " ZERO? PRSI \?ELS20 PRINTI "your bare hands is suicidal" JUMP ?CND18 ?ELS20: CALL APRINT,PRSI PRINTI " is insane" ?CND18: PRINTR "." .FUNCT V-MUNG FSET? PRSO,VICBIT /?THN6 EQUAL? PRSO,SQUID \?ELS5 ?THN6: CALL IKILL,STR?112 RSTACK ?ELS5: PRINTR "Nothing much happens." .FUNCT HACK-HACK,STR IN? PRSO,GLOBAL-OBJECTS \?ELS5 EQUAL? PRSA,V?LOWER,V?WAVE \?ELS5 PRINTI "Unfortunately, " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " isn't here." ?ELS5: PRINT STR PRINTI " " CALL THE?,PRSO CALL DPRINT,PRSO CALL PICK-ONE,HO-HUM PRINT STACK CRLF RTRUE .FUNCT V-KNOCK FSET? PRSO,DOORBIT \?ELS5 CALL TELL-NO-ANSWER RSTACK ?ELS5: PRINTI "Why knock on " CALL APRINT,PRSO PRINTR "?" .FUNCT V-CHOMP PRINTR "I don't know how to do that. I win in all cases!" .FUNCT V-WIN PRINTR "Naturally!" .FUNCT V-YELL ZERO? PRSO /?ELS5 PRINTR "You could be more polite and lower your voice." ?ELS5: PRINTR "Aarrrrrgggggggghhhhhhhhhhh!" .FUNCT V-PLUG CALL TELL-NO-EFFECT RSTACK .FUNCT V-LATITUDE,LAT=1,STR,NEW=0 ZERO? LAT /?ELS3 SET 'STR,STR?126 JUMP ?CND1 ?ELS3: SET 'STR,STR?127 ?CND1: EQUAL? WINNER,PLAYER \?ELS11 PRINTI "Why don't you tell someone who cares?" CRLF RETURN 2 ?ELS11: LESS? MEETINGS-COMPLETED,2 \?ELS17 CALL START-SENTENCE,WINNER PRINTI " looks bewildered. ""What does that have to do with anything?"" he asks." CRLF RETURN 2 ?ELS17: EQUAL? WINNER,JOHNNY /?ELS23 CALL START-SENTENCE,WINNER PRINTI " says, ""That's nice. Why don't you let the captain know?""" CRLF RETURN 2 ?ELS23: EQUAL? PRSO,INTNUM /?ELS29 PRINTI "Johnny looks at you strangely. ""What kind of a " PRINT STR PRINTR " is that?""" ?ELS29: GRTR? P-NUMBER,59 \?ELS33 PRINTR """There are 60 minutes in a degree.""" ?ELS33: ZERO? LAT /?ELS40 ZERO? LATITUDE-SET /?CND42 EQUAL? LATITUDE-SET,P-NUMBER \?ELS48 SET 'NEW,M-FATAL JUMP ?CND42 ?ELS48: SET 'NEW,TRUE-VALUE ?CND42: SET 'LATITUDE-SET,P-NUMBER JUMP ?CND38 ?ELS40: ZERO? LONGITUDE-SET /?CND53 EQUAL? LONGITUDE-SET,P-NUMBER \?ELS59 SET 'NEW,M-FATAL JUMP ?CND53 ?ELS59: SET 'NEW,TRUE-VALUE ?CND53: SET 'LONGITUDE-SET,P-NUMBER ?CND38: EQUAL? NEW,M-FATAL \?ELS66 CALL TELL-YOU-ALREADY,STR?128,TRUE-VALUE RSTACK ?ELS66: ZERO? NEW /?ELS68 PRINTI """Now the " PRINT STR PRINTI " is " PRINTN P-NUMBER PRINTR ", huh?""" ?ELS68: PRINTI """Okay. The " PRINT STR PRINTI " is " PRINTN P-NUMBER PRINTR ".""" .FUNCT V-LONGITUDE CALL V-LATITUDE,FALSE-VALUE RSTACK .FUNCT V-EMPTY,X FSET? PRSO,CONTBIT /?ELS5 CALL TELL-YOU-CANT,STR?129 RSTACK ?ELS5: FSET? PRSO,OPENBIT /?ELS7 CALL TELL-YOU-CANT,STR?130 RSTACK ?ELS7: FIRST? PRSO \?ELS9 ?PRG10: FIRST? PRSO >X \?REP11 MOVE X,HERE JUMP ?PRG10 ?REP11: CALL TELL-NOW,PRSO,STR?131 RSTACK ?ELS9: CALL TELL-NOTHING,STR?132 CALL DPRINT,PRSO PRINTR "." .FUNCT V-SHAKE,X FSET? PRSO,VICBIT \?ELS5 CALL TELL-NO-EFFECT RSTACK ?ELS5: FSET? PRSO,TAKEBIT /?ELS7 CALL TELL-YOU-CANT,STR?133 RSTACK ?ELS7: FSET? PRSO,OPENBIT /?ELS9 FIRST? PRSO \?ELS9 PRINTI "It sounds as if there is something inside the " CALL DPRINT,PRSO PRINTR "." ?ELS9: FSET? PRSO,OPENBIT \?ELS15 FIRST? PRSO \?ELS15 ?PRG18: FIRST? PRSO >X \?REP19 MOVE X,HERE JUMP ?PRG18 ?REP19: PRINTI "All of the objects spill onto the " CALL SPILL-WHERE? RSTACK ?ELS15: CALL TELL-NOTHING,STR?132 CALL DPRINT,PRSO PRINTR "." .FUNCT SPILL-WHERE? IN? WINNER,BED \?ELS3 PRINTI "floor by your bed." JUMP ?CND1 ?ELS3: GETP HERE,P?LINE GRTR? STACK,BACK-ALLEY-LINE-C \?ELS7 PRINTI "deck by your feet." JUMP ?CND1 ?ELS7: PRINTI "floor." ?CND1: CRLF RTRUE .FUNCT V-DIAGNOSE PRINTI "You are " GRTR? HOW-HUNGRY,3 \?ELS5 PRINTI "extremely" JUMP ?CND3 ?ELS5: ZERO? HOW-HUNGRY \?ELS9 PRINTI "not" JUMP ?CND3 ?ELS9: EQUAL? HOW-HUNGRY,1 \?ELS13 PRINTI "a bit" JUMP ?CND3 ?ELS13: EQUAL? HOW-HUNGRY,2 \?ELS17 PRINTI "pretty" JUMP ?CND3 ?ELS17: EQUAL? HOW-HUNGRY,3 \?CND3 PRINTI "very" ?CND3: PRINTI " hungry, " ZERO? HOW-THIRSTY \?ELS28 PRINTI "not thirsty" JUMP ?CND26 ?ELS28: EQUAL? HOW-THIRSTY,1 \?ELS32 PRINTI "a little thirsty" JUMP ?CND26 ?ELS32: EQUAL? HOW-THIRSTY,2 \?ELS36 PRINTI "fairly thirsty" JUMP ?CND26 ?ELS36: EQUAL? HOW-THIRSTY,3 \?ELS40 PRINTI "very thirsty" JUMP ?CND26 ?ELS40: GRTR? HOW-THIRSTY,3 \?CND26 PRINTI "utterly parched" ?CND26: PRINTI ", and " ZERO? HOW-TIRED \?ELS51 PRINTI "half-awake" JUMP ?CND49 ?ELS51: LESS? HOW-TIRED,3 \?ELS55 PRINTI "wide-awake" JUMP ?CND49 ?ELS55: EQUAL? HOW-TIRED,3 \?ELS59 PRINTI "a bit drowsy" JUMP ?CND49 ?ELS59: EQUAL? HOW-TIRED,4 \?ELS63 PRINTI "fairly tired" JUMP ?CND49 ?ELS63: EQUAL? HOW-TIRED,5 \?ELS67 PRINTI "very sleepy" JUMP ?CND49 ?ELS67: EQUAL? HOW-TIRED,6 \?CND49 PRINTI "dead on your feet" ?CND49: PRINTR "." .FUNCT PRE-DIG EQUAL? PRSO,NOT-HERE-OBJECT /FALSE ZERO? PRSI \?ELS7 PRINTR "Huh?" ?ELS7: FSET? PRSI,TOOLBIT /FALSE PRINTI "Digging with " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR " is very silly." .FUNCT V-AIM PRINTR "That would be pointless." .FUNCT V-DIG CALL TELL-YOU-CANT,STR?134 RSTACK .FUNCT PRE-SMELL FSET? MASK,WORNBIT /?THN6 FSET? DEEP-SUIT,WORNBIT \FALSE ?THN6: CALL TELL-YOU-CANT,STR?135 RSTACK .FUNCT V-SMELL FSET? PRSO,VICBIT \?ELS5 PRINTR "Nothing a good deodorant couldn't fix." ?ELS5: PRINTI "It smells just like " CALL APRINT,PRSO PRINTR "." .FUNCT GLOBAL-IN?,OBJ1,OBJ2,Z GETPT OBJ2,P?GLOBAL >Z ZERO? Z /FALSE PTSIZE Z SUB STACK,1 CALL ZMEMQB,OBJ1,Z,STACK RSTACK .FUNCT V-SWIM GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS5 EQUAL? PRSO,INTDIR \?ELS10 CALL DO-WALK,P-WALK-DIR RSTACK ?ELS10: CALL TELL-SHD-DIR RSTACK ?ELS5: PRINTR "I think you're all wet." .FUNCT V-DIVE ZERO? PRSO /?ELS5 EQUAL? PRSO,OCEAN /?ELS5 PRINTR "This isn't a circus!" ?ELS5: GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS11 CALL DO-WALK,P?DOWN RTRUE ?ELS11: LOC PLAYER CALL GLOBAL-IN?,OCEAN,STACK ZERO? STACK /?ELS13 EQUAL? HERE,MM-WHEELHOUSE,NW-WHEELHOUSE /?ELS13 GETP HERE,P?LINE LESS? STACK,TRAWLER-LINE-C \?ELS20 EQUAL? HERE,FERRY-LANDING,WHARF /?ELS20 CALL PERFORM,V?BOARD,OCEAN RTRUE ?ELS20: FSET? DEEP-SUIT,WORNBIT /?ELS24 FSET? WET-SUIT,WORNBIT \?THN27 IN? AIR-TANK,PLAYER \?THN27 FSET? MASK,WORNBIT \?THN27 FSET? FLIPPERS,WORNBIT /?ELS24 ?THN27: CALL JIGS-UP,STR?136 RSTACK ?ELS24: FSET? DEEP-SUIT,WORNBIT \?ELS30 IN? AIR-HOSE,DEEP-SUIT \?THN33 FSET? MM-COMPRESSOR,ONBIT /?ELS30 ?THN33: CALL JIGS-UP,STR?137 RSTACK ?ELS30: ZERO? AT-SEA \?ELS36 CALL JIGS-UP,STR?138 RSTACK ?ELS36: EQUAL? OCEAN-BOTTOM,50 \?ELS41 SET 'HERE,OCEAN-FLOOR MOVE PLAYER,OCEAN-FLOOR JUMP ?CND39 ?ELS41: MOVE PLAYER,UNDERWATER SET 'HERE,UNDERWATER CALL UNDERWATER-F,M-ENTER ?CND39: FCLEAR OCEAN,VEHBIT CALL INT,I-ENDIT PUT STACK,0,0 SET 'DEPTH,50 IN? PASSBOOK,PLAYER \?CND44 FSET PASSBOOK,RMUNGBIT ?CND44: IN? DIVING-BOOK,PLAYER \?CND47 FSET DIVING-BOOK,RMUNGBIT ?CND47: IN? NOTE,PLAYER \?CND50 FSET NOTE,RMUNGBIT ?CND50: IN? BOOK,PLAYER \?CND53 FSET BOOK,RMUNGBIT ?CND53: IN? ENVELOPE,PLAYER \?CND56 FSET ENVELOPE,RMUNGBIT ?CND56: IN? BATTERY,PLAYER /?THN62 IN? BATTERY,DRILL \?CND59 FSET? DRILL,OPENBIT \?CND59 ?THN62: FSET BATTERY,RMUNGBIT SET DRILL-POWERED,FALSE-VALUE ?CND59: IN? DRY-CELL,PLAYER /?THN69 IN? DRY-CELL,DETECTOR-COMPARTMENT \?CND66 FSET? DETECTOR-COMPARTMENT,OPENBIT \?CND66 ?THN69: FSET DRY-CELL,RMUNGBIT SET DETECTOR-POWERED,FALSE-VALUE ?CND66: IN? AIR-TANK,PLAYER \?ELS75 FSET? DEEP-SUIT,WORNBIT /?ELS75 CALL QUEUE,I-AIR-SUPPLY,-1 PUT STACK,0,1 JUMP ?CND73 ?ELS75: CALL INT,I-MM-COMPRESSOR GET STACK,C-TICK GRTR? STACK,0 \?ELS79 CALL INT,I-MM-COMPRESSOR PUT STACK,0,1 JUMP ?CND73 ?ELS79: CALL INT,I-LAST-GASP PUT STACK,0,1 ?CND73: CALL V-LOOK RSTACK ?ELS13: PRINTR "Consulting your years of experience, you come to the conclusion that the lack of water here would make this a lousy place to try diving." .FUNCT V-UNTIE FSET? PRSO,PERSON \?ELS5 CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS5: PRINTR "This cannot be tied, so it cannot be untied!" .FUNCT PRE-TIE EQUAL? PRSO,AIR-HOSE /FALSE EQUAL? PRSO,ROPE,SAFETY-LINE /?ELS7 EQUAL? PRSI,ROPE,SAFETY-LINE /?ELS7 PRINTR "Even if I knew how to do that, I wouldn't." ?ELS7: EQUAL? PRSI,WINNER /?THN14 EQUAL? PRSO,WINNER \FALSE ?THN14: CALL TELL-YOU-CANT,STR?139 RSTACK .FUNCT V-TIE PRINTR "Don't bother." .FUNCT V-TIE-UP PRINTR "You could certainly never tie it with that!" .FUNCT V-MELT PRINTI "I'm not sure that " CALL APRINT,PRSO PRINTR " can be melted." .FUNCT V-MUMBLE PRINTR "You'll have to speak up if you expect me to hear you!" .FUNCT V-ALARM EQUAL? PRSO,ROOMS \?ELS9 EQUAL? WINNER,PLAYER \?THN6 ?ELS9: FSET? PRSO,VICBIT \?ELS5 EQUAL? PRSO,ME /?ELS5 ?THN6: PRINTR "He's wide awake, or haven't you noticed?" ?ELS5: EQUAL? PRSO,ROOMS \?ELS15 PRINTR "You're already awake." ?ELS15: CALL START-SENTENCE,PRSO PRINTR " isn't sleeping." .FUNCT V-CLIMB-ON FSET? PRSO,CLIMBBIT /?THN6 FSET? PRSO,VEHBIT \?ELS5 ?THN6: CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS5: CALL TELL-YOU-CANT,STR?140,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT V-CLIMB-FOO EQUAL? PRSO,ROOMS \?ELS5 CALL V-CLIMB-UP RSTACK ?ELS5: FSET? PRSO,CLIMBBIT /?ELS7 FSET? PRSO,VEHBIT /?ELS7 CALL TELL-YOU-CANT,STR?141,FALSE-VALUE CALL APRINT,PRSO PRINTI "!" CRLF RETURN 2 ?ELS7: CALL V-CLIMB-UP,P?UP,TRUE-VALUE RSTACK .FUNCT V-CLIMB-UP,DIR=P?UP,OBJ=0,X,?TMP1 GETPT HERE,DIR ZERO? STACK /?ELS5 CALL DO-WALK,DIR RTRUE ?ELS5: ZERO? OBJ \?ELS7 CALL TELL-NO-GO,TRUE-VALUE RSTACK ?ELS7: ZERO? OBJ /?ELS9 GETPT PRSO,P?SYNONYM >X PTSIZE X CALL ZMEMQ,W?WALLS,X,STACK ZERO? STACK /?ELS9 PRINTR "Climbing the walls is to no avail." ?ELS9: PRINTR "Bizarre!" .FUNCT V-CLIMB-DOWN CALL V-CLIMB-UP,P?DOWN RSTACK .FUNCT V-SEND FSET? PRSO,VICBIT \?ELS5 PRINTI "I doubt that " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " is at your beck and call." ?ELS5: PRINTR "That doesn't make sends." .FUNCT V-WIND PRINTI "You cannot wind up " CALL APRINT,PRSO PRINTR "." .FUNCT V-COUNT PRINTR "I can't deal with those numbers." .FUNCT PRE-BRACE CALL PERFORM,V?PUT-UNDER,PRSI,PRSO RTRUE .FUNCT V-BRACE PRINTR "Bug." .FUNCT V-PUT-UNDER FSET? PRSI,DOORBIT \?ELS5 GETP PRSO,P?SIZE LESS? STACK,5 \?ELS5 FSET? PRSI,OPENBIT \?ELS12 CALL TELL-WHY-BOTHER RSTACK ?ELS12: CALL IDROP ZERO? STACK /FALSE CALL OTHER-SIDE,PRSI,TRUE-VALUE MOVE PRSO,STACK PRINTR "Done." ?ELS5: CALL TELL-NO-NO RSTACK .FUNCT V-PUSH-UNDER FSET? PRSO,TAKEBIT /?THN6 FSET? PRSO,PUSHBIT \?ELS5 ?THN6: CALL PERFORM,V?PUT-UNDER,PRSO,PRSI RTRUE ?ELS5: CALL TELL-NO-NO RSTACK .FUNCT V-PLAY FSET? PRSO,VICBIT \?ELS5 PRINTI "You are so engrossed in the role of " CALL THE?,PRSO CALL DPRINT,PRSO CALL JIGS-UP,STR?142 RSTACK ?ELS5: PRINTR "How peculiar!" .FUNCT V-MAKE CALL TELL-NO-NO RSTACK .FUNCT V-ENTER EQUAL? HERE,WINDING-ROAD-1 \?ELS5 CALL PERFORM,V?THROUGH,LIGHTHOUSE RTRUE ?ELS5: CALL DO-WALK,P?IN RSTACK .FUNCT V-EXIT CALL DO-WALK,P?OUT RSTACK .FUNCT V-CROSS CALL TELL-YOU-CANT,STR?143 RSTACK .FUNCT V-SEARCH FSET? PRSO,PERSON \?ELS5 CALL START-SENTENCE,PRSO PRINTR " glares at you. ""Get away from me!"" he growls." ?ELS5: FSET? PRSO,CONTBIT \?ELS9 CALL PERFORM,V?LOOK-INSIDE,PRSO RTRUE ?ELS9: PRINTR "You find nothing unusual." .FUNCT V-FIND,L LOC PRSO >L EQUAL? WINNER,PLAYER /?ELS5 PRINTI """Find " FSET? PRSO,VICBIT \?ELS10 PRINTI "him " JUMP ?CND8 ?ELS10: PRINTI "it " ?CND8: CALL DPRINT,GLOBAL-SELF PRINTR ".""" ?ELS5: EQUAL? L,GLOBAL-OBJECTS \?ELS20 PRINTI "Why don't you try finding it " CALL DPRINT,GLOBAL-SELF PRINTR "?" ?ELS20: IN? PRSO,WINNER \?ELS24 PRINTR "You have it." ?ELS24: IN? PRSO,HERE /?THN29 EQUAL? PRSO,PSEUDO-OBJECT \?ELS28 ?THN29: FSET? PRSO,VICBIT \?ELS33 PRINTI "He's" JUMP ?CND31 ?ELS33: PRINTI "It's" ?CND31: PRINTR " right here." ?ELS28: IN? L,HERE /?THN44 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?ELS43 ?THN44: FSET? L,PERSON \?ELS50 PRINTI "You notice that " CALL DPRINT,L PRINTR " has it." ?ELS50: FSET? L,CONTBIT \?ELS54 PRINTI "It's " CALL VEHPREP,L PRINT STACK PRINTI " the " CALL DPRINT,L PRINTR "." ?ELS54: EQUAL? L,FERRY \?ELS58 PRINTR "He's on the ferry." ?ELS58: PRINTR "It's around here somewhere." ?ELS43: PRINTI "Find " FSET? PRSO,VICBIT \?ELS71 PRINTI "him" JUMP ?CND69 ?ELS71: PRINTI "it" ?CND69: PRINTI " " CALL DPRINT,GLOBAL-SELF PRINTR "." .FUNCT PRE-TELL ZERO? PRSI /?ELS5 EQUAL? PRSO,ME,PLAYER \?ELS5 EQUAL? WINNER,PLAYER /?ELS10 SET 'PRSA,V?ASK-ABOUT CALL PERFORM,V?ASK-ABOUT,WINNER,PRSI RTRUE ?ELS10: SET 'PRSA,V?ASK-CONTEXT-ABOUT CALL PERFORM,V?ASK-CONTEXT-ABOUT,PRSI RTRUE ?ELS5: ZERO? PRSI \FALSE FSET? PRSO,VICBIT /FALSE CALL TELL-NO-TELL RSTACK .FUNCT V-TELL ZERO? PRSI /?ELS5 FSET? PRSO,PERSON \?ELS11 CALL START-SENTENCE,PRSO PRINTR " seems less than impressed with this information." ?ELS11: FSET? PRSO,VICBIT /?THN16 EQUAL? PRSO,SQUID \?ELS15 ?THN16: PRINTI "The " CALL DPRINT,PRSO PRINTR " ignores what you have to say." ?ELS15: CALL TELL-NO-RESPONSE RSTACK ?ELS5: EQUAL? WINNER,PLAYER \?ELS23 EQUAL? PRSO,ME,WINNER \?ELS23 PRINTI "Talking to " CALL DPRINT,GLOBAL-SELF PRINTI " is diverting, but unnecessary." CRLF RETURN 2 ?ELS23: EQUAL? PRSO,PLAYER,ME \?ELS31 PRINTI """What in the world are you trying to say?""" CRLF RETURN 2 ?ELS31: FSET? PRSO,VICBIT \?ELS37 CALL META-LOC,PRSO EQUAL? STACK,HERE /?ELS40 CALL GLOBAL-NOT-HERE-PRINT,PRSO RETURN 2 ?ELS40: EQUAL? WINNER,PLAYER /?CND38 ZERO? P-CONT \?CND38 PRINTI """I'll talk to whoever I want.""" CRLF RETURN 2 ?CND38: SET 'WINNER,PRSO CALL META-LOC,WINNER >HERE SET 'QCONTEXT,WINNER SET 'QCONTEXT-ROOM,HERE ZERO? P-CONT \FALSE CALL START-SENTENCE,PRSO PRINTI " turns and looks at you as though he thought you were about to say something." CRLF RETURN 2 ?ELS37: CALL TELL-NO-TELL RSTACK .FUNCT TELL-NO-TELL CALL TELL-YOU-CANT,STR?144,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTI "!" CRLF SET 'QUOTE-FLAG,FALSE-VALUE SET 'P-CONT,FALSE-VALUE RETURN 2 .FUNCT V-KISS PRINTR "I'd sooner kiss a parrot." .FUNCT V-RAPE PRINTR "An ugly idea from an ugly person." .FUNCT FIND-IN,WHERE,WHAT,W,R=0 FIRST? WHERE >W /?KLU19 ?KLU19: ZERO? W /FALSE ?PRG4: FSET? W,WHAT \?ELS8 ZERO? R /?ELS11 RETURN 2 ?ELS11: SET 'R,W JUMP ?PRG4 ?ELS8: NEXT? W >W /?PRG4 RETURN R .FUNCT V-SAY,V CALL FIND-IN,HERE,VICBIT >V ZERO? V /?ELS5 PRINTI "You must address " EQUAL? V,M-FATAL \?ELS10 PRINTI "someone" JUMP ?CND8 ?ELS10: CALL THE?,V CALL DPRINT,V ?CND8: PRINTI " directly." CRLF RETURN 2 ?ELS5: GET P-LEXV,P-CONT EQUAL? STACK,W?HELLO \?ELS22 SET 'QUOTE-FLAG,FALSE-VALUE RTRUE ?ELS22: SET 'QUOTE-FLAG,FALSE-VALUE SET 'P-CONT,FALSE-VALUE PRINTI "Talking to " CALL DPRINT,GLOBAL-SELF PRINTR " is said to be a sign of impending mental collapse." .FUNCT V-SPIN CALL TELL-YOU-CANT,STR?145 RSTACK .FUNCT V-THROUGH,M FSET? PRSO,DOORBIT \?ELS5 CALL OTHER-SIDE,PRSO CALL DO-WALK,STACK RTRUE ?ELS5: FSET? PRSO,VEHBIT /?THN8 EQUAL? HERE,MCGINTY-HQ \?ELS7 EQUAL? PRSO,PSEUDO-OBJECT \?ELS7 ?THN8: CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS7: IN? PRSO,GLOBAL-OBJECTS /?ELS13 CALL META-LOC,PRSO EQUAL? STACK,HERE /?ELS13 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK \?ELS13 CALL GLOBAL-NOT-HERE-PRINT,PRSO RSTACK ?ELS13: FSET? PRSO,TAKEBIT /?ELS17 PRINTI "You hit your head against " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " as you attempt this feat." ?ELS17: IN? PRSO,WINNER \?ELS23 CALL TELL-CONTORT RSTACK ?ELS23: CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT V-STEP FSET? PRSO,VEHBIT \?ELS5 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS5: EQUAL? PRSO,GROUND \?ELS7 PRINTR "Fred Astaire you're not." ?ELS7: PRINTR "That sounds pretty useless." .FUNCT V-WEAR FSET? PRSO,WEARBIT /?ELS5 CALL TELL-YOU-CANT,STR?154,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." ?ELS5: FSET? PRSO,WORNBIT \?ELS9 PRINTR "You are already wearing it." ?ELS9: IN? PRSO,WINNER /?THN14 CALL ITAKE ZERO? STACK /FALSE ?THN14: FSET PRSO,WORNBIT PRINTI "You are now wearing " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." .FUNCT UNWEAR FSET? PRSO,WORNBIT \?ELS5 FCLEAR PRSO,WORNBIT PRINTI "You are now holding " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." ?ELS5: CALL TELL-YOURE-NOT,STR?155 RSTACK .FUNCT V-WITHDRAW EQUAL? PRSO,INTNUM /?ELS5 CALL PERFORM,V?TAKE,PRSO RSTACK ?ELS5: CALL TELL-YOU-CANT,STR?156 RSTACK .FUNCT V-DEPOSIT EQUAL? PRSO,INTNUM /?ELS5 CALL PERFORM,V?PUT,PRSO,PRSI RSTACK ?ELS5: CALL TELL-YOU-CANT,STR?157 RSTACK .FUNCT V-THROW-OFF CALL TELL-YOU-CANT,STR?158 RSTACK .FUNCT V-$VERIFY PRINTI "Verifying game..." CRLF VERIFY \?ELS7 PRINTR "Yup. Game correct." ?ELS7: PRINTR "** UH OH! Game File Failure. **" .FUNCT V-STAND ZERO? PRSO /?CND1 EQUAL? PRSO,GLOBAL-BANK /?THN8 FSET? PRSO,VICBIT \?ELS7 ?THN8: CALL PERFORM,V?ROB,PRSO RTRUE ?ELS7: FSET? PRSO,VEHBIT \?ELS11 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS11: EQUAL? PRSO,ROOMS /?CND1 CALL HACK-HACK,STR?116 RTRUE ?CND1: LOC WINNER FSET? STACK,VEHBIT \?ELS18 LOC WINNER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?ELS18: PRINTR "You are already standing, I think." .FUNCT V-HIDE PRINTR "That's not a good hiding place." .FUNCT V-HIDE-UNDER CALL V-HIDE RSTACK .FUNCT DO-WALK,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR EQUAL? STACK,M-FATAL \TRUE RETURN 2 .FUNCT V-WALK-TO EQUAL? PRSO,INTDIR \?ELS5 CALL DO-WALK,P-WALK-DIR RSTACK ?ELS5: IN? PRSO,HERE /?THN8 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?ELS7 ?THN8: FSET? PRSO,VICBIT \?ELS12 PRINTI "He" JUMP ?CND10 ?ELS12: PRINTI "It" ?CND10: PRINTR "'s here!" ?ELS7: CALL TELL-SHD-DIR RSTACK .FUNCT TELL-SHD-DIR PRINTI "You should supply a " CALL DPRINT,INTDIR PRINTR "!" .FUNCT OTHER-SIDE,DOBJ,RM?=0,P=0,Z ?PRG1: NEXTP HERE,P >P LESS? P,LOW-DIRECTION /FALSE GETPT HERE,P >Z PTSIZE Z EQUAL? STACK,DEXIT \?PRG1 GETB Z,DEXITOBJ EQUAL? STACK,DOBJ \?PRG1 ZERO? RM? /?ELS15 GETB Z,0 RETURN STACK ?ELS15: RETURN P .FUNCT V-LEAN-ON PRINTR "Are you so very tired, then?" .FUNCT V-PUT-AGAINST CALL TELL-NO-NO RSTACK .FUNCT V-TASTE FSET? PRSO,FOODBIT \?ELS5 CALL PERFORM,V?EAT,PRSO RSTACK ?ELS5: PRINTI "It tastes just like " CALL APRINT,PRSO PRINTR "." .FUNCT TELL-WHY-BOTHER PRINTR "Why bother?" .FUNCT V-ROB FSET? PRSO,PERSON /?THN6 EQUAL? PRSO,SPEAR-CARRIER \?ELS5 ?THN6: PRINTI "Even as you begin to make your move, " CALL THE?,PRSO CALL DPRINT,PRSO CALL JIGS-UP,STR?159 RSTACK ?ELS5: PRINTR "No wonder you never made the Ten Most Wanted list." .FUNCT V-PUSH-THROUGH PRINTI "Pushing " CALL THE?,PRSO CALL DPRINT,PRSO PRINTR " in that way isn't particularly helpful." .FUNCT HOW?,OBJ PRINTI "I don't know how to do that to " CALL APRINT,OBJ PRINTR "." .FUNCT VOWEL?,OBJ FSET? OBJ,VOWELBIT \?CND1 PRINTI "n" ?CND1: PRINTI " " RTRUE .FUNCT V-SMOKE PRINTR "Smoking is bad for your health." .FUNCT V-UNFOLD CALL HOW?,PRSO RSTACK .FUNCT V-FOLD CALL V-UNFOLD RSTACK .FUNCT V-HOLE-DIG PRINTI "I can't dig in " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." .FUNCT V-TURN-OVER IN? PRSO,WINNER \?ELS5 CALL TELL-NOTHING,STR?160,TRUE-VALUE RSTACK ?ELS5: FSET? PRSO,TAKEBIT \?ELS7 CALL TELL-YOUD-BETTER,STR?161,TRUE-VALUE RSTACK ?ELS7: PRINTR "Good luck!" .FUNCT V-READ-INSIDE CALL TELL-NOTHING,STR?162,TRUE-VALUE RSTACK .FUNCT PRE-REACH-IN EQUAL? PRSO,NOT-HERE-OBJECT /FALSE FSET? PRSO,CONTBIT /?CND1 CALL TELL-CANT-REACH,STR?163 RTRUE ?CND1: FSET? PRSO,OPENBIT /FALSE CALL TELL-CLOSED,PRSO,FALSE-VALUE RSTACK .FUNCT V-REACH-IN CALL PERFORM,V?LOOK-INSIDE,PRSO RSTACK .FUNCT TELL-CLOSED,ARG,STR?=1 PRINTI "The " ZERO? STR? /?ELS5 PRINT ARG JUMP ?CND3 ?ELS5: CALL DPRINT,ARG ?CND3: PRINTR " is closed." .FUNCT V-CLEAN PRINTR "Cleanliness may be next to godliness, but there are limits." .FUNCT V-TIME IN? WATCH,WINNER /?THN6 IN? WATCH,HERE \?ELS5 ?THN6: PRINTI "Your watch says it's " CALL WATCH-TIME PRINTR "." ?ELS5: CALL TELL-YOU-CANT,STR?164 RSTACK .FUNCT V-WEIGH FSET? PRSO,TAKEBIT \?ELS5 PRINTR "Tough to do without a scale." ?ELS5: PRINTR "Now that's bizarre!" .FUNCT V-CHASTISE EQUAL? PRSO,INTDIR \?ELS5 PRINTR "The best way to see what's happening there is to go there." ?ELS5: PRINTI "Please be more specific. LOOKing AT, BEHIND, UNDER, THROUGH, INSIDE, ON, DOWN, FOR, or any other method of LOOKing mean different things to me. Please specify which preposition you'd like to use next time, like LOOK AT " FSET? PRSO,PERSON /?CND12 PRINTI "THE " ?CND12: CALL DPRINT,PRSO PRINTI ", or LOOK INSIDE " FSET? PRSO,PERSON /?CND19 PRINTI "THE " ?CND19: CALL DPRINT,PRSO PRINTR "." .FUNCT V-HELP ZERO? PRSO /?CND1 EQUAL? PRSO,WINNER /?CND1 PRINTI "It seems that " CALL THE?,PRSO CALL DPRINT,PRSO PRINTI " doesn't need any help." CRLF ?CND1: PRINTI "I'm afraid you'll have to figure this out " CALL DPRINT,GLOBAL-SELF PRINTR "." .FUNCT GET-COMFORTABLE,OBJ FIRST? OBJ /?THN6 CALL WEARING-SOMETHING? ZERO? STACK /?ELS5 ?THN6: CALL TELL-NOT-COMFORTABLE RSTACK ?ELS5: MOVE WINNER,OBJ PRINTI "You get into the " CALL DPRINT,OBJ PRINTI " and try to get comfortable. " CALL V-SLEEP RSTACK .FUNCT TELL-NOT-COMFORTABLE PRINTR "That doesn't sound very comfortable." .FUNCT V-SLEEP EQUAL? HOW-TIRED,6 \?ELS5 GETP HERE,P?LINE LESS? STACK,UNDERWATER-LINE-C \?ELS10 CALL SLEEP-LOSE RSTACK ?ELS10: CALL JIGS-UP,STR?165 RSTACK ?ELS5: ZERO? PRSO /?ELS14 EQUAL? PRSO,BUNK,BED,ROOMS /?ELS14 CALL TELL-NOT-COMFORTABLE RSTACK ?ELS14: IN? WINNER,BED /?THN19 IN? WINNER,BUNK \?ELS18 ?THN19: EQUAL? HOW-TIRED,1 /?ELS25 IN? WINNER,BED \FALSE CALL SLEEP-LOSE RSTACK ?ELS25: PRINTR "You close your eyes, but your mind is too active to let you sleep." ?ELS18: IN? BED,HERE \?ELS36 CALL GET-COMFORTABLE,BED RTRUE ?ELS36: IN? BUNK,HERE \?ELS38 CALL GET-COMFORTABLE,BUNK RTRUE ?ELS38: ZERO? PRSO /?ELS40 CALL TELL-NOT-COMFORTABLE RSTACK ?ELS40: LESS? HOW-TIRED,2 \?ELS43 CALL TELL-YOURE-NOT,STR?166 RSTACK ?ELS43: PRINTR "Better find a good place to lie down." .FUNCT SLEEP-LOSE PRINTI "You drift off to sleep. You wake up. Once again, you find " CALL DPRINT,GLOBAL-SELF PRINTI " with the usual nothing to do. It seems as if you are destined to spend the rest of your days on this island, waiting for a break that may never come." CRLF CALL FINISH RSTACK .FUNCT PRE-WHAT ZERO? PRSI /FALSE EQUAL? PRSO,GLOBAL-DAY,GLOBAL-TIME /FALSE EQUAL? PRSI,P-IT-OBJECT,IT /FALSE PRINTI "I'm afraid that question is beyond me." CRLF RETURN 2 .FUNCT V-WHAT EQUAL? WINNER,PLAYER \?THN6 ZERO? QCONTEXT /?ELS5 EQUAL? HERE,QCONTEXT-ROOM \?ELS5 CALL META-LOC,QCONTEXT EQUAL? HERE,STACK \?ELS5 FSET? QCONTEXT,PERSON \?ELS5 ?THN6: PRINTR """Isn't it obvious?""" ?ELS5: ZERO? PRSO \?ELS13 PRINTR "Huh?" ?ELS13: FSET? PRSO,PERSON \?ELS17 PRINTR "Try asking that person." ?ELS17: PRINTI "Are you talking to " CALL DPRINT,GLOBAL-SELF PRINTR " again?" .FUNCT V-YES CALL TELL-RATHER,STR?167 RSTACK .FUNCT V-MAYBE CALL TELL-RATHER,STR?168 RSTACK .FUNCT V-NO CALL TELL-RATHER,STR?169 RSTACK .FUNCT TELL-RATHER,STR PRINTI "You sound rather " PRINT STR PRINTR "." .FUNCT V-SIT FSET? PRSO,PERSON \?ELS5 CALL PERFORM,V?SIT-WITH,PRSO RSTACK ?ELS5: CALL PERFORM,V?SIT-ON,PRSO RSTACK .FUNCT V-SIT-ON FSET? PRSO,VEHBIT \?ELS5 CALL PERFORM,V?BOARD,PRSO RTRUE ?ELS5: EQUAL? PRSO,GROUND,DECK \?ELS7 LOC WINNER FSET? STACK,VEHBIT \?CND8 MOVE WINNER,HERE ?CND8: PRINTR "After a moment, you stand back up." ?ELS7: CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT V-SIT-WITH FSET? PRSO,PERSON /?ELS5 CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS5: IN? PLAYER,SHANTY \?ELS9 IN? PRSO,SHANTY \?ELS9 CALL PERFORM,V?SIT-ON,CHAIR RSTACK ?ELS9: PRINTI "There's no place to sit with " CALL DPRINT,PRSO PRINTR "." .FUNCT TELL-ALREADY,STR PRINTI "It's already " PRINT STR PRINTR "." .FUNCT TELL-YOUD-BETTER,STR,1ST=0,DONE=1 PRINTI "You'd better " PRINT STR ZERO? 1ST /?CND3 PRINTI " first." ?CND3: ZERO? DONE /FALSE CRLF RTRUE .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