checkpoint/things.zap

950 lines
22 KiB
Plaintext

.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