.FUNCT RANDOM-PSEUDO PRINTR "You can't do anything useful with that." .FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3 EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3 PRINTI "(Those things aren't here!)" CRLF RETURN 2 ?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS11 SET 'TBL,P-PRSO JUMP ?CND1 ?ELS11: SET 'TBL,P-PRSI SET 'PRSO?,FALSE-VALUE ?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT \?CND14 FSET? PRSO,PERSONBIT \?CND14 IN? PRSO,GLOBAL-OBJECTS \?CND14 CALL2 NOT-HERE-PERSON,PRSO RETURN 2 ?CND14: ZERO? PRSO? /?ELS27 CALL1 PRSO-VERB? ZERO? STACK \?THN24 ?ELS27: ZERO? PRSO? \?CND21 CALL1 PRSI-VERB? ZERO? STACK /?CND21 ?THN24: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ ZERO? OBJ /FALSE EQUAL? OBJ,NOT-HERE-OBJECT /?CND30 RETURN 2 ?CND30: ?CND21: PRINTI "(You can't see any" CALL1 NOT-HERE-PRINT PRINTI " here!)" CRLF RETURN 2 .FUNCT PRSO-VERB?,V=0,W=0 ZERO? V \?CND1 SET 'V,PRSA ?CND1: ZERO? W \?CND4 SET 'W,WINNER ?CND4: CALL2 SPEAKING-VERB?,V ZERO? STACK \TRUE EQUAL? V,V?$WHERE,V?ASK-CONTEXT-ABOUT,V?ASK-CONTEXT-FOR /TRUE EQUAL? V,V?$FCLEAR,V?$FSET,V?$QFSET /TRUE EQUAL? V,V?BOARD,V?BUY,V?DISEMBARK /TRUE EQUAL? V,V?EXAMINE,V?FIND,V?FOLLOW /TRUE EQUAL? V,V?LEAVE,V?PHONE,V?THROUGH /TRUE EQUAL? V,V?USE,V?WAIT-FOR,V?WALK-TO /TRUE EQUAL? V,V?WHAT,V?PASS /TRUE EQUAL? V,V?SHOOT,V?SIT,V?LIE /TRUE EQUAL? W,PLAYER /FALSE EQUAL? V,V?BRING,V?TAKE,V?SSHOW /TRUE RFALSE .FUNCT PRSI-VERB?,V=0,W=0 ZERO? V \?CND1 SET 'V,PRSA ?CND1: ZERO? W \?CND4 SET 'W,WINNER ?CND4: EQUAL? V,V?$WHERE,V?ASK-ABOUT,V?ASK-FOR /TRUE EQUAL? V,V?SEARCH-FOR,V?TAKE-TO,V?TELL-ABOUT /TRUE EQUAL? V,V?SSHOOT /TRUE EQUAL? W,PLAYER /FALSE EQUAL? V,V?SBRING,V?SHOW /TRUE RFALSE .FUNCT GEN-TEST,OBJ IN? OBJ,HERE /TRUE CALL2 CORRIDOR-LOOK,OBJ ZERO? STACK \TRUE EQUAL? PRSA,V?FOLLOW /?THN12 CALL1 REMOTE-VERB? ZERO? STACK /FALSE ?THN12: FSET? OBJ,PERSONBIT \FALSE FSET? OBJ,SEENBIT /TRUE RFALSE .FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ,LEN,CNT,LOCAL=0 CALL2 MOBY-FIND,TBL >M-F ZERO? DEBUG /?CND1 PRINTI "[Found " PRINTN M-F PRINTI " objects]" CRLF EQUAL? 1,M-F /?CND1 PRINTI "[Namely: " SET 'CNT,1 GET TBL,P-MATCHLEN >LEN ?PRG12: DLESS? 'LEN,0 \?ELS16 JUMP ?REP13 ?ELS16: GET TBL,CNT PRINTD STACK PRINTI ", " ?CND14: INC 'CNT JUMP ?PRG12 ?REP13: PRINTI "]" CRLF ?CND1: GRTR? M-F,1 \?CND23 SET 'CNT,0 ?PRG26: IGRTR? 'CNT,M-F \?CND28 JUMP ?REP27 ?CND28: GET TBL,CNT >OBJ CALL2 GEN-TEST,OBJ ZERO? STACK /?PRG26 IGRTR? 'LOCAL,1 \?ELS36 JUMP ?REP27 ?ELS36: SET 'P-MOBY-FOUND,OBJ JUMP ?PRG26 ?REP27: EQUAL? LOCAL,1 \?CND23 SET 'M-F,1 ?CND23: EQUAL? 1,M-F \?ELS46 ZERO? DEBUG /?CND47 PRINTI "[Namely: " PRINTD P-MOBY-FOUND PRINTI "]" CRLF ?CND47: CALL1 REMOTE-VERB? ZERO? STACK \?CND53 EQUAL? PRSA,V?$CALL /?CND53 CALL2 VISIBLE?,P-MOBY-FOUND ZERO? STACK \?CND53 CALL2 NOT-HERE,P-MOBY-FOUND RETURN TRUE-VALUE ?CND53: ZERO? PRSO? /?ELS60 SET 'PRSO,P-MOBY-FOUND RFALSE ?ELS60: SET 'PRSI,P-MOBY-FOUND RFALSE ?ELS46: LESS? 1,M-F \?ELS65 GET TBL,1 >OBJ FSET? OBJ,PERSONBIT \?ELS65 SET 'CNT,1 GET TBL,P-MATCHLEN >LEN ?PRG68: GET TBL,CNT >OBJ CALL2 GEN-TEST,OBJ ZERO? STACK \?CND70 DEC 'LEN CALL ELIMINATE,TBL,CNT,LEN GRTR? CNT,LEN /?CND70 JUMP ?PRG68 ?CND70: IGRTR? 'CNT,LEN \?PRG68 PUT TBL,P-MATCHLEN,LEN ZERO? LEN \?ELS81 RETURN NOT-HERE-OBJECT ?ELS81: EQUAL? LEN,1 /?CND79 CALL WHICH-PRINT,0,LEN,TBL EQUAL? TBL,P-PRSO \?ELS88 PUSH P-NC1 JUMP ?CND84 ?ELS88: PUSH P-NC2 ?CND84: SET 'P-ACLAUSE,STACK SET 'P-AADJ,P-ADJ SET 'P-ANAM,P-NAM CALL ORPHAN,FALSE-VALUE,FALSE-VALUE SET 'P-OFLAG,TRUE-VALUE RTRUE ?CND79: ZERO? DEBUG /?CND91 PRINTI "[Corridor: " PRINTD OBJ PRINTI "]" CRLF ?CND91: ZERO? PRSO? /?ELS99 SET 'PRSO,OBJ RFALSE ?ELS99: SET 'PRSI,OBJ RFALSE ?ELS65: LESS? 1,M-F \?ELS104 GET TBL,1 >OBJ GETP OBJ,P?GENERIC CALL STACK,TBL >OBJ ZERO? OBJ /?ELS104 ZERO? DEBUG /?CND107 PRINTI "[Generic: " PRINTD OBJ PRINTI "]" CRLF ?CND107: EQUAL? OBJ,NOT-HERE-OBJECT /TRUE ZERO? PRSO? /?ELS117 SET 'PRSO,OBJ RFALSE ?ELS117: SET 'PRSI,OBJ RFALSE ?ELS104: ZERO? PRSO? \?ELS126 IN? PRSO,HERE \?ELS126 EQUAL? PRSA,V?TELL-ABOUT,V?ASK-FOR,V?ASK-ABOUT /?THN131 ?ELS126: ZERO? PRSO? /?ELS128 CALL1 QCONTEXT-GOOD? ZERO? STACK /?ELS128 EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT /?THN131 ?ELS128: EQUAL? WINNER,PLAYER /?ELS122 EQUAL? PRSA,V?SGIVE /?THN131 EQUAL? PRSA,V?GIVE,V?WHAT,V?FIND \?ELS122 ?THN131: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS135 SET 'LEN,PRSO JUMP ?CND133 ?ELS135: CALL1 QCONTEXT-GOOD? ZERO? STACK /?ELS137 SET 'LEN,QCONTEXT JUMP ?CND133 ?ELS137: EQUAL? WINNER,PLAYER /?ELS139 SET 'LEN,WINNER JUMP ?CND133 ?ELS139: CALL FIND-FLAG,HERE,PERSONBIT,WINNER >OBJ ZERO? OBJ /?ELS141 SET 'LEN,OBJ JUMP ?CND133 ?ELS141: SET 'LEN,GAME ?CND133: CALL2 START-SENTENCE,LEN CALL HE-SHE-IT,LEN,-1,STR?6 PRINTI ", " CALL1 PRODUCE-GIBBERISH RTRUE ?ELS122: ZERO? PRSO? \?ELS147 PRINTI "You wouldn't find any" CALL1 NOT-HERE-PRINT PRINTR " there." ?ELS147: RETURN NOT-HERE-OBJECT .FUNCT NOT-HERE-PRINT,?TMP1 ZERO? P-OFLAG \?THN6 ZERO? P-MERGED /?ELS5 ?THN6: ZERO? P-XADJ /?CND8 PRINTI " " PRINTB P-XADJ ?CND8: ZERO? P-XNAM /FALSE PRINTI " " PRINTB P-XNAM RTRUE ?ELS5: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS23 GET P-ITBL,P-NC1 >?TMP1 GET P-ITBL,P-NC1L CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE RSTACK ?ELS23: GET P-ITBL,P-NC2 >?TMP1 GET P-ITBL,P-NC2L CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE RSTACK .FUNCT GIVE-SHOW,P1,P2 EQUAL? PRSA,V?GIVE \?ELS5 EQUAL? PRSI,P1,P2 \FALSE RETURN PRSO ?ELS5: EQUAL? PRSA,V?SHOW \FALSE EQUAL? PRSO,P1,P2 \FALSE RETURN PRSI .FUNCT TICKET-F,COST,OBJ,TKT EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \?ELS5 PRINTI "All you can make out is the destination: " GETP PRSO,P?CAPACITY PRINTD STACK EQUAL? PRSO,TICKET \?ELS10 ZERO? TICKET-VIA /?ELS10 PRINTI " via " PRINTD TICKET-VIA JUMP ?CND8 ?ELS10: EQUAL? PRSO,TICKET-OTHER \?CND8 ZERO? TICKET-OTHER-VIA /?CND8 PRINTI " via " PRINTD TICKET-OTHER-VIA ?CND8: PRINTR "." ?ELS5: CALL GIVE-SHOW,CONDUCTOR,GUARD >TKT ZERO? TKT /?ELS24 EQUAL? TKT,PRSO \?ELS27 SET 'OBJ,PRSI JUMP ?CND25 ?ELS27: EQUAL? TKT,PRSI \?ELS29 SET 'OBJ,PRSO JUMP ?CND25 ?ELS29: PRINTI "[BUG #1]" CRLF ?CND25: ZERO? ON-TRAIN \FALSE CALL2 START-SENTENCE,OBJ PRINTI " looks at" CALL2 HIM-HER-IT,TKT PRINTR " and points to this train track." ?ELS24: EQUAL? PRSA,V?BUY-TICKET,V?BUY \FALSE EQUAL? PRSO,TICKET-OTHER,TICKET \FALSE EQUAL? HERE,TICKET-AREA /?ELS47 CALL1 YOU-CANT RTRUE ?ELS47: EQUAL? PRSA,V?BUY /?THN50 ZERO? PRSI \?CND45 ?THN50: SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "(You didn't say where the ticket is for.)" ?CND45: GETP PRSI,P?NORTH >COST GRTR? COST,0 \?THN57 FSET? PRSI,PERSONBIT \?ELS56 ?THN57: PRINTI "You can't buy a ticket to" CALL2 PRINTT,PRSI PRINTR "." ?ELS56: GETP PLAYER,P?SOUTH GRTR? COST,STACK \?CND54 PRINTR "You don't have enough money." ?CND54: GETP PLAYER,P?SOUTH SUB STACK,COST PUTP PLAYER,P?SOUTH,STACK PUTP PRSO,P?CAPACITY,PRSI CALL ZMEMZ,PRSI,TRAIN-TABLE ZERO? STACK \?ELS67 EQUAL? SCENERY-OBJ,STATION-KNUT /?ELS67 EQUAL? PRSO,TICKET \?ELS72 SET 'TICKET-VIA,STATION-KNUT JUMP ?CND65 ?ELS72: EQUAL? PRSO,TICKET-OTHER \?CND65 SET 'TICKET-OTHER-VIA,STATION-KNUT JUMP ?CND65 ?ELS67: EQUAL? PRSO,TICKET \?ELS79 SET 'TICKET-VIA,FALSE-VALUE JUMP ?CND65 ?ELS79: EQUAL? PRSO,TICKET-OTHER \?CND65 SET 'TICKET-OTHER-VIA,FALSE-VALUE ?CND65: MOVE PRSO,PLAYER CALL2 START-SENTENCE,CLERK PRINTI " takes your money and stamps " PRINTD PRSO PRINTR "." .FUNCT PASSPORT-F EQUAL? PRSA,V?OPEN,V?READ \FALSE CALL PERFORM,V?EXAMINE,PRSO,PRSI RTRUE .FUNCT CHECK-F,P EQUAL? PRSA,V?ANALYZE \?ELS5 CALL PERFORM,V?EXAMINE,PRSO,PRSI RTRUE ?ELS5: EQUAL? PRSA,V?SHOW \?ELS7 EQUAL? PRSO,CLERK,WAITER \?ELS12 FSET? PEN,TOUCHBIT /?ELS12 MOVE PEN,PRSO FCLEAR PEN,NDESCBIT FSET PEN,TAKEBIT CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?8 PRINTI " and" CALL HE-SHE-IT,PRSO,-1,STR?9 PRINTI " " CALL2 PRINTA,PEN PRINTR "." ?ELS12: EQUAL? PRSO,WAITRESS,GUARD,CONDUCTOR \FALSE CALL HE-SHE-IT,PRSO,TRUE-VALUE PRINTI " shakes" CALL HIM-HER-IT,PRSO,FALSE-VALUE,TRUE-VALUE PRINTI " head and points " EQUAL? HERE,CAFE \?ELS25 PRINTI "toward" CALL2 HIM-HER-IT,TICKET-AREA PRINTR "." ?ELS25: ZERO? ON-TRAIN \?ELS29 PRINTR "into the station." ?ELS29: LESS? CAR-HERE,DINER-CAR \?ELS33 PRINTR "to the rear." ?ELS33: GRTR? CAR-HERE,DINER-CAR \?ELS37 PRINTR "forward." ?ELS37: PRINTR "to a booth." ?ELS7: EQUAL? PRSA,V?USE,V?SIGN \FALSE SET 'P,WAITER IN? P,HERE /?THN51 SET 'P,CLERK IN? P,HERE \FALSE ?THN51: EQUAL? PRSI,PEN /?THN58 FSET? PEN,TOUCHBIT \?THN58 LOC PEN EQUAL? STACK,PLAYER,POCKET \?ELS57 ?THN58: CALL2 START-SENTENCE,P FSET? PEN,TOUCHBIT /?CND62 PRINTI " lends you a pen and then" MOVE PEN,PLAYER FCLEAR PEN,NDESCBIT FSET PEN,TOUCHBIT ?CND62: MOVE CHECK,P FCLEAR CHECK,TAKEBIT GETP PLAYER,P?SOUTH ADD 20,STACK PUTP PLAYER,P?SOUTH,STACK PRINTI " gives you " PRINTC CURRENCY-SYMBOL PRINTR "20 in exchange for the check." ?ELS57: CALL2 START-SENTENCE,P PRINTR " shakes his head and shrugs his shoulders." .FUNCT CAMERA-F IN? CAMERA,POCKET \?CND1 EQUAL? PRSA,V?WIND /?THN6 EQUAL? PRSA,V?SHOOT,V?OPEN,V?LOOK-THROUGH /?THN6 EQUAL? PRSA,V?EXAMINE,V?CLOSE,V?AIM \?CND1 ?THN6: MOVE CAMERA,PLAYER ?CND1: EQUAL? PRSA,V?AIM \?ELS12 EQUAL? PRSO,CAMERA \FALSE PRINTR "Okay, then what?" ?ELS12: EQUAL? PRSA,V?EXAMINE \?ELS21 FSET? PRSO,OPENBIT /FALSE IN? FILM,CAMERA \?ELS28 ZERO? CAMERA-COCKED \?ELS28 PRINTR "It looks as if it needs to be cocked." ?ELS28: PRINTI "Ah! Is this the masterwork of some paranoid genius in ""Q"" Section? A product of years of technological innovation, bordering on magic? Nah, it's just an ordinary " PRINTD CAMERA PRINTR " -- no weapons, no motors, nothing to break down. And it's closed." ?ELS21: EQUAL? PRSA,V?LOOK-THROUGH \?ELS38 PRINTR "Everything appears normal." ?ELS38: EQUAL? PRSA,V?OPEN \?ELS42 ZERO? CAMERA-COCKED /FALSE PUT FILM-TBL,PICTURE-NUMBER,-1 RFALSE ?ELS42: EQUAL? PRSA,V?SHOOT \?ELS50 EQUAL? PRSI,CAMERA \FALSE CALL PERFORM,V?PHOTO,PRSO,PRSI RTRUE ?ELS50: EQUAL? PRSA,V?WIND \FALSE FSET? CAMERA,OPENBIT /?THN61 IN? FILM,CAMERA \?THN61 ZERO? CAMERA-COCKED \?THN61 GRTR? PICTURE-NUMBER,3 \?ELS60 ?THN61: PRINTR "You try to cock it, but the lever won't move." ?ELS60: INC 'PICTURE-NUMBER SET 'CAMERA-COCKED,TRUE-VALUE PRINTR "Okay." .FUNCT FILM-F EQUAL? PRSA,V?WIND \?ELS5 CALL PERFORM,PRSA,CAMERA RTRUE ?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE PRINTR "It looks like instant-developing film, in a special miniature format." .FUNCT GLASS-F,X,CNT EQUAL? PRSA,V?LOOK-THROUGH \?ELS5 PRINTR "Everything appears bigger." ?ELS5: EQUAL? PRSA,V?EXAMINE,V?READ \?ELS9 EQUAL? PRSI,GLASS \?ELS9 EQUAL? PRSO,FILM \?ELS16 PRINTI "With the aid of the magnifying glass you can just make out what's on the film." ZERO? PICTURE-NUMBER \?CND19 PRINTR " The whole film is unexposed." ?CND19: CRLF SET 'CNT,1 ?PRG24: PRINTI "Picture " PRINTN CNT PRINTI " is " GET FILM-TBL,CNT >X ZERO? X \?ELS30 PRINTI "unexposed." JUMP ?CND28 ?ELS30: EQUAL? -1,X \?ELS34 PRINTI "fogged." JUMP ?CND28 ?ELS34: PRINTI "a picture of " EQUAL? X,GLOBAL-OBJECTS \?ELS43 PRINTI "something you can't make out." JUMP ?CND28 ?ELS43: FSET? X,WINDOWBIT \?ELS47 PRINTI "a window." JUMP ?CND28 ?ELS47: ZERO? X /?ELS51 CALL2 PRINTA,X PRINTI "." JUMP ?CND28 ?ELS51: PRINTI "nothing." ?CND28: CRLF IGRTR? 'CNT,4 \?PRG24 RTRUE ?ELS16: EQUAL? PRSO,GLASS \?ELS63 CALL1 HAR-HAR RSTACK ?ELS63: EQUAL? PRSO,PLAYER,MIRROR \?ELS65 PRINTR "You see yourself, only bigger and uglier than ever. Ugh!" ?ELS65: CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?10 PRINTR " the same, only much larger." ?ELS9: EQUAL? PRSA,V?EXAMINE,V?READ \FALSE EQUAL? PRSO,GLASS \FALSE ZERO? PRSI /FALSE CALL PERFORM,V?READ,PRSI,PRSO RTRUE .FUNCT MCGUFFIN-F EQUAL? PRSA,V?MUNG \?ELS5 SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "(How do you want to do that?)" ?ELS5: EQUAL? PRSA,V?CHANGE \FALSE EQUAL? PRSI,PEN \FALSE FSET MCGUFFIN,LOCKED PRINTI "With a deft hand, you alter" CALL2 HIM-HER-IT,MCGUFFIN PRINTR " in a subtle way so that it conveys serious disinformation." .FUNCT SPY-LIST-F,X EQUAL? PRSA,V?EAT \?ELS5 MOVE PRSO,LIMBO-FWD PRINTR "Gulp!" ?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \?ELS9 ZERO? LIST-RUBBED /?ELS14 PRINTI "Examining the " PRINTD SPY-LIST CALL1 PAD-READ RSTACK ?ELS14: EQUAL? P-ADVERB,W?CAREFULLY \?ELS19 PRINTI "There are some shiny lines on the " PRINTD SPY-LIST PRINTR ", maybe invisible ink." ?ELS19: PRINTI "There doesn't seem to be anything written on the " PRINTD SPY-LIST PRINTR "." ?ELS9: EQUAL? PRSA,V?HEAT \FALSE ZERO? PRSI \?ELS32 PRINTR "It heats up like ordinary newsprint." ?ELS32: EQUAL? PRSI,LIGHTER \?ELS36 SET 'LIST-RUBBED,TRUE-VALUE PRINTI "Heating" CALL2 HIM-HER-IT,SPY-LIST PRINTI " with" CALL2 HIM-HER-IT,PRSI CALL1 PAD-READ RSTACK ?ELS36: PRINTI "Nothing " ZERO? LIST-RUBBED /?CND43 PRINTI "new " ?CND43: PRINTR "appears." .FUNCT PAD-READ,CNT,OBJ FSET? SPY-LIST,MUNGBIT \?CND1 PRINTR " reveals nothing intelligible." ?CND1: PRINTI " shows two things written on it" EQUAL? VARIATION,3,4 \?CND8 PRINTI ", which you easily translate into English" ?CND8: PRINTI ": " SET 'CNT,6 ?PRG15: GET PASS-TABLE,CNT >OBJ EQUAL? OBJ,PASSWORD,PASSOBJECT \?CND17 PRINTI " " PRINTD OBJ CRLF ?CND17: DLESS? 'CNT,1 \?PRG15 RTRUE .FUNCT BRIEFCASE-F,RARG=0 EQUAL? RARG,M-OBJDESC \?ELS5 PRINTI "A black briefcase with a chrome latch is here, " FSET? BRIEFCASE,SURFACEBIT \?ELS12 PRINTR "closed." ?ELS12: PRINTR "open." ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS20 PRINTI "It's an expensive-looking case, built as sturdy as a tank." EQUAL? P-ADVERB,W?CAREFULLY \?CND23 CALL1 CASE-CAREFUL ?CND23: CRLF RTRUE ?ELS20: CALL1 REMOTE-VERB? ZERO? STACK \FALSE EQUAL? PRSA,V?MOVE,V?TAKE \?ELS29 EQUAL? PRSO,BRIEFCASE \?ELS29 LOC BRIEFCASE FSET? STACK,PERSONBIT /FALSE ?ELS29: LOC BRIEFCASE FSET? STACK,PERSONBIT \?ELS33 CALL2 NOT-HOLDING?,BRIEFCASE ZERO? STACK \TRUE ?ELS33: EQUAL? PRSA,V?MOVE,V?TAKE \?ELS37 EQUAL? PRSO,BRIEFCASE \?ELS37 FSET? BRIEFCASE,OPENBIT \?ELS44 ZERO? PLAYER-SEATED \?ELS44 CALL TOO-BAD-BUT,BRIEFCASE,STR?12 RTRUE ?ELS44: FSET? BRIEFCASE,SURFACEBIT \FALSE CALL2 OBJS-SLIDE-OFF,BRIEFCASE RFALSE ?ELS37: EQUAL? PRSA,V?OPEN \?ELS50 FSET? BRIEFCASE-LATCH,OPENBIT /?ELS55 CALL2 THIS-IS-IT,BRIEFCASE-LATCH PRINTR "The latch is closed." ?ELS55: IN? BRIEFCASE,PLAYER \?ELS59 ZERO? PLAYER-SEATED \?ELS59 CALL2 TBL-FIRST?,BRIEFCASE-TBL ZERO? STACK /?ELS59 PRINTR "You open it a crack before you realize that everything inside would fall out. You quickly close it again." ?ELS59: ZERO? LATCH-TURNED \?ELS65 FSET? BRIEFCASE,SURFACEBIT \?ELS65 CALL1 TELL-GAS RSTACK ?ELS65: FSET BRIEFCASE,OPENBIT CALL TBL-TO-INSIDE,BRIEFCASE,BRIEFCASE-TBL RTRUE ?ELS50: EQUAL? PRSA,V?CLOSE \?ELS71 FCLEAR BRIEFCASE,OPENBIT CALL INSIDE-OBJ-TO,BRIEFCASE-TBL,BRIEFCASE RSTACK ?ELS71: EQUAL? PRSA,V?LOOK-INSIDE \?ELS73 FSET? BRIEFCASE,OPENBIT /FALSE CALL TOO-BAD-BUT,BRIEFCASE,STR?13 RTRUE ?ELS73: EQUAL? PRSA,V?SHAKE \FALSE GET BRIEFCASE-TBL,1 ZERO? STACK /FALSE PRINTR "Hmm. Something's in there." .FUNCT TELL-GAS,YOU?=1 ZERO? YOU? /?ELS3 PRINTI "As the lid is lifted, you hear an explosion from inside the case. P" JUMP ?CND1 ?ELS3: PRINTI "Too late, you notice that the compartment is filled with p" ?CND1: PRINTI "ale yellow gas, practically invisible" ZERO? YOU? /?CND13 PRINTI ", hisses out of tiny vents set into the briefcase's spine" ?CND13: PRINTI ". Holding your breath will not help: this cunning creation of the chemical warfare chaps is absorbed through the skin. Well, ""only the good die young.""" CRLF CRLF CALL1 FINISH RSTACK .FUNCT LATCH-F CALL2 VISIBLE?,BRIEFCASE ZERO? STACK \?ELS5 CALL2 NOT-HERE,BRIEFCASE-LATCH RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 PRINTI "The latch on the briefcase is operated by sliding a short metal bar that points " ZERO? LATCH-TURNED \?ELS12 PRINTI "away from " JUMP ?CND10 ?ELS12: PRINTI "toward " ?CND10: PRINTI "the handle of the briefcase. The latch is " FSET? BRIEFCASE-LATCH,OPENBIT /?ELS23 PRINTI "closed." JUMP ?CND21 ?ELS23: PRINTI "open." ?CND21: EQUAL? P-ADVERB,W?CAREFULLY \?CND30 CALL1 CASE-CAREFUL ?CND30: CRLF RTRUE ?ELS7: CALL1 REMOTE-VERB? ZERO? STACK \FALSE LOC BRIEFCASE FSET? STACK,PERSONBIT \?ELS36 CALL2 NOT-HOLDING?,BRIEFCASE ZERO? STACK \TRUE ?ELS36: EQUAL? PRSA,V?TAKE,V?REMOVE \?ELS40 CALL1 YOU-CANT RSTACK ?ELS40: EQUAL? PRSA,V?AIM,V?TURN \?ELS42 EQUAL? PRSO,BRIEFCASE-LATCH \?ELS42 ZERO? LATCH-TURNED \?PRD45 PUSH 1 JUMP ?PRD46 ?PRD45: PUSH 0 ?PRD46: SET 'LATCH-TURNED,STACK PRINTR "A mechanical click comes from within the briefcase." ?ELS42: EQUAL? PRSA,V?CLOSE \?ELS50 FSET? BRIEFCASE,OPENBIT \?ELS55 CALL TOO-BAD-BUT,BRIEFCASE,STR?12 RTRUE ?ELS55: FSET? BRIEFCASE-LATCH,OPENBIT /?ELS57 CALL ALREADY,BRIEFCASE-LATCH,STR?13 RTRUE ?ELS57: CALL OKAY,BRIEFCASE-LATCH,STR?13 RSTACK ?ELS50: EQUAL? PRSA,V?RUB,V?SLIDE,V?MOVE /?THN64 EQUAL? PRSA,V?RAISE,V?OPEN,V?PUSH \FALSE ?THN64: EQUAL? PRSO,BRIEFCASE-LATCH \FALSE FSET? BRIEFCASE-LATCH,OPENBIT /?ELS70 FSET BRIEFCASE-LATCH,OPENBIT PRINTI "The metal latch snaps open." ZERO? LATCH-TURNED \?CND73 PRINTI " At the same time, a loud thump comes from within the briefcase." ?CND73: CRLF RTRUE ?ELS70: CALL ALREADY,PRSO,STR?12 RSTACK .FUNCT CASE-CAREFUL PRINTI " A careful examination shows that the latch can be turned as well as opened. And there are tiny vents set into the briefcase's spine." RTRUE .FUNCT BRIEFCASE-HANDLE-F CALL1 REMOTE-VERB? ZERO? STACK \FALSE CALL2 VISIBLE?,BRIEFCASE ZERO? STACK \?ELS7 CALL2 NOT-HERE,BRIEFCASE-HANDLE RSTACK ?ELS7: EQUAL? PRSA,V?EXAMINE \FALSE CALL1 NOTHING-SPECIAL RSTACK .FUNCT PLAQUE-F EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE PRINTI "If you could read the language, it would say: ""This is the CHECKPOINT. All passengers who are crossing the frontier must pass through customs inspection before boarding the train. CHECKPOINT is also a trademark and product of Infocom, Inc., " GET CREDITS,0 SUB STACK,1 MOD VARIATION,STACK ADD 1,STACK CALL PICK-ONE-NEW,CREDITS,STACK PRINT STACK PRINTR ".""" .FUNCT TBL-FIRST?,TBL,OFFS=0,THING,MAX GET TBL,0 >MAX ?PRG1: IGRTR? 'OFFS,MAX /FALSE GET TBL,OFFS >THING EQUAL? 0,THING /?PRG1 RETURN THING .FUNCT TBL-TO-INSIDE,OBJ,TBL,STR=0,THING,OFFS=0,MAX FSET? OBJ,SURFACEBIT /?CND1 CALL ALREADY,OBJ,STR?12 RTRUE ?CND1: FIRST? OBJ \?CND4 CALL2 OBJS-SLIDE-OFF,OBJ ?CND4: GET TBL,0 >MAX ZERO? DEBUG \?THN10 ZERO? STR \?ELS9 ?THN10: ZERO? STR /?CND7 PRINTC 91 PRINTI "Opened." CRLF JUMP ?CND7 ?ELS9: EQUAL? STR,1 /?CND7 PRINT STR CRLF ?CND7: FCLEAR OBJ,SURFACEBIT ?PRG22: IGRTR? 'OFFS,MAX \?ELS26 JUMP ?REP23 ?ELS26: GET TBL,OFFS >THING ZERO? THING /?PRG22 IN? OBJ,PLAYER \?CND29 FSET THING,TAKEBIT ?CND29: MOVE THING,OBJ PUT TBL,OFFS,0 JUMP ?PRG22 ?REP23: EQUAL? STR,1 /TRUE FIRST? OBJ \TRUE PRINTI "Opening" CALL2 HIM-HER-IT,OBJ PRINTI " reveals " CALL2 PRINT-CONTENTS,OBJ PRINTR "." .FUNCT INSIDE-OBJ-TO,TBL,OBJ,STR=0,OFFS=0,F,N FSET? OBJ,SURFACEBIT \?CND1 CALL ALREADY,OBJ,STR?13 RTRUE ?CND1: FSET OBJ,SURFACEBIT ZERO? DEBUG \?THN7 ZERO? STR \?ELS6 ?THN7: ZERO? STR /?CND9 PRINTC 91 ?CND9: PRINTI "Closed." CRLF JUMP ?CND4 ?ELS6: EQUAL? STR,1 /?CND4 PRINT STR CRLF ?CND4: FIRST? OBJ >F \TRUE ?PRG22: ZERO? F /TRUE SET 'N,F NEXT? N >F /?KLU37 ?KLU37: MOVE N,LIMBO-FWD ?PRG32: INC 'OFFS GET TBL,OFFS ZERO? STACK \?PRG32 PUT TBL,OFFS,N JUMP ?PRG22 .FUNCT OBJS-SLIDE-OFF,OBJ,SLIDE=0,THERE,F,N LOC OBJ >THERE EQUAL? THERE,WINNER \?CND1 SET 'THERE,HERE ?CND1: FIRST? OBJ >F /?KLU22 ?KLU22: ?PRG4: ZERO? F \?ELS8 JUMP ?REP5 ?ELS8: SET 'N,F NEXT? N >F /?KLU23 ?KLU23: MOVE N,THERE SET 'SLIDE,TRUE-VALUE JUMP ?PRG4 ?REP5: FIRST? OBJ >F /?KLU24 ?KLU24: ZERO? SLIDE /FALSE PRINTI "Everything on" CALL2 HIM-HER-IT,OBJ PRINTI " falls off." CRLF CRLF RTRUE .FUNCT NEWSPAPER-F EQUAL? PRSA,V?OPEN \FALSE PRINTR "You flip through the pages but find nothing readable." .FUNCT CIGARETTE-F EQUAL? PRSA,V?BUY \?ELS5 IN? MACHINE,HERE \FALSE GETP PLAYER,P?SOUTH GRTR? STACK,0 /?CND11 PRINTI "You dig in " PRINTD POCKET PRINTR " but find no cash." ?CND11: SET 'P-DOLLAR-FLAG,TRUE-VALUE SET 'P-AMOUNT,1 CALL PERFORM,V?PUT-IN,INTNUM,MACHINE RTRUE ?ELS5: EQUAL? PRSA,V?LAMP-ON,V?SMOKE \FALSE PRINTR "You think it over and decide that this mission is dangerous enough already." .FUNCT LIGHTER-F EQUAL? PRSA,V?HOLD-UNDER \?ELS5 EQUAL? PRSO,LIGHTER \FALSE CALL PERFORM,V?HEAT,PRSI,PRSO RTRUE ?ELS5: EQUAL? PRSA,V?LAMP-OFF \?ELS12 PRINTR "It stays off by itself!" ?ELS12: EQUAL? PRSA,V?LAMP-ON \FALSE PRINTR "The lighter spurts to life for a minute until you turn it off again." .FUNCT FLOWER-F FSET? FLOWER-1,NDESCBIT \?ELS5 CALL2 SEARCHING-FOR?,FLOWER-1 RSTACK ?ELS5: FSET? FLOWER-2,NDESCBIT \FALSE CALL2 SEARCHING-FOR?,FLOWER-2 RSTACK .FUNCT SEARCHING-FOR?,OBJ EQUAL? PRSA,V?EXAMINE /?THN6 CALL2 SNEAKY-TAKE?,OBJ ZERO? STACK /?ELS5 ?THN6: PRINTI "You haven't found " CALL2 PRINTA,OBJ PRINTR " yet!" ?ELS5: IN? OBJ,HERE \FALSE EQUAL? PRSA,V?FIND /?THN14 EQUAL? PRSA,V?SEARCH-FOR \FALSE EQUAL? PRSI,OBJ \FALSE ?THN14: FCLEAR OBJ,NDESCBIT FSET OBJ,TAKEBIT MOVE OBJ,WINNER PRINTI "You find " CALL2 PRINTA,OBJ PRINTR " in short order and take it." .FUNCT BLOOD-SPOT-DESC,X IN? BLOOD-SPOT,COMPARTMENT-START \FALSE FSET? BLOOD-SPOT,TOUCHBIT \?ELS7 PRINTR "A spot of blood is still on the floor." ?ELS7: FSET BLOOD-SPOT,TOUCHBIT PRINTR "Your sharp eyes notice a spot of blood on the floor." .FUNCT FIND-SEARCH EQUAL? PRSA,V?FIND \?ELS5 RETURN PRSO ?ELS5: EQUAL? PRSA,V?SEARCH-FOR \FALSE RETURN PRSI .FUNCT BLOOD-SPOT-F,OBJ CALL1 FIND-SEARCH >OBJ ZERO? OBJ /?ELS5 LOC OBJ EQUAL? HERE,STACK \FALSE FSET? OBJ,NDESCBIT \FALSE FCLEAR OBJ,NDESCBIT CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?21 PRINTR " it in short order." ?ELS5: EQUAL? PRSA,V?TAKE \?ELS16 PRINTI "You can't pick" CALL2 HIM-HER-IT,PRSO PRINTR " up with your bare hands!" ?ELS16: EQUAL? PRSA,V?BRUSH,V?TAKE-WITH \FALSE EQUAL? PRSI,SPY-LIST /?THN26 ZERO? PRSI \FALSE IN? SPY-LIST,WINNER \FALSE ?THN26: MOVE PRSO,SPY-LIST FCLEAR PRSO,NDESCBIT PRINTR "Okay." .FUNCT KNIFE-F CALL KNIFE-NAPKIN-F,KNIFE,COOK RSTACK .FUNCT KNIFE-NAPKIN-F,OBJ,PER FSET? OBJ,NDESCBIT \FALSE IN? PER,HERE \?ELS10 CALL2 BRIBED?,PER ZERO? STACK \?ELS10 FCLEAR PER,TOUCHBIT PUTP PER,P?LDESC,1 CALL2 START-SENTENCE,PER PRINTI " says, " CALL1 PRODUCE-GIBBERISH RSTACK ?ELS10: CALL2 SEARCHING-FOR?,OBJ RSTACK .FUNCT NAPKIN-F CALL KNIFE-NAPKIN-F,NAPKIN,WAITER RSTACK .FUNCT SNEAKY-TAKE?,OBJ EQUAL? PRSO,OBJ \?ELS5 EQUAL? PRSA,V?TAKE /TRUE GETB P-SYNTAX,P-SLOC1 BTST STACK,STAKE /TRUE ?ELS5: EQUAL? PRSI,OBJ \FALSE GETB P-SYNTAX,P-SLOC2 BTST STACK,STAKE /TRUE RFALSE .ENDI