leathergoddesses/globals.zap

1561 lines
34 KiB
Plaintext

.FUNCT INCREMENT-SCORE,BASE,VAR,INC-RANK=0,CHANGE,DIF
ZERO? INC-RANK /?CND1
INC 'RANK
?CND1: RANDOM VAR
ADD STACK,BASE >CHANGE
ADD BASE,VAR
SUB STACK,CHANGE >DIF
SUB INT-MAX,DIF >INT-MAX
SUB EXT-MAX,INT-MAX
RANDOM STACK
ADD INT-MAX,STACK >EXT-MAX
ADD SCORE,CHANGE >SCORE
RETURN SCORE
.FUNCT INTDIR-F
EQUAL? PRSA,V?BOARD \FALSE
EQUAL? P-PRSA-WORD,W?RIDE \FALSE
IN? PROTAGONIST,STALLION \?ELS12
CALL DO-WALK,P-DIRECTION
RSTACK
?ELS12: IN? STALLION,HERE \?ELS14
CALL DO-FIRST,STR?124
RSTACK
?ELS14: PRINT THERES-NOTHING
PRINTR "to ride!"
.FUNCT INTNUM-F
CALL ADJ-USED,A?WIFE
ZERO? STACK /?ELS5
EQUAL? HERE,INNER-HAREM \?THN8
ZERO? MALE \?ELS5
?THN8: CALL PICKING-WIFE
ZERO? STACK \?ELS5
SET 'P-WON,FALSE-VALUE
PRINT YOU-CANT-SEE-ANY
PRINTR "wife here!"
?ELS5: CALL ADJ-USED,A?HUSBAND
ZERO? STACK /?ELS11
EQUAL? HERE,INNER-HAREM \?THN14
ZERO? MALE /?ELS11
?THN14: CALL PICKING-WIFE
ZERO? STACK \?ELS11
SET 'P-WON,FALSE-VALUE
PRINT YOU-CANT-SEE-ANY
PRINTR "husband here!"
?ELS11: EQUAL? PRSA,V?ANSWER-KLUDGE \?ELS17
CALL PERFORM,V?USE-QUOTES,INTNUM
RTRUE
?ELS17: EQUAL? P-NUMBER,CHOICE-NUMBER \?ELS19
IN? SULTANS-WIFE,HERE \?ELS19
EQUAL? PRSO,INTNUM \?ELS26
CALL PERFORM-PRSA,SULTANS-WIFE,PRSI
RTRUE
?ELS26: CALL PERFORM-PRSA,PRSO,SULTANS-WIFE
RTRUE
?ELS19: EQUAL? PRSA,V?PICK,V?ASK-NO-ONE-FOR \?ELS34
IN? HAREM-GUARD,HERE /?THN31
?ELS34: EQUAL? PRSA,V?ASK-FOR \?ELS30
EQUAL? PRSO,HAREM-GUARD \?ELS30
?THN31: CALL PICK-WIFE,INTNUM
RSTACK
?ELS30: EQUAL? HERE,VIZICOMM-BOOTH \FALSE
EQUAL? PRSA,V?SET \FALSE
CALL PERFORM-PRSA,VIZICOMM
RTRUE
.FUNCT PICKING-WIFE
EQUAL? PRSA,V?PICK,V?ASK-NO-ONE-FOR \?ELS5
IN? HAREM-GUARD,HERE /TRUE
?ELS5: EQUAL? PRSA,V?ASK-FOR \FALSE
EQUAL? PRSO,HAREM-GUARD \FALSE
RTRUE
.FUNCT EACH-OTHER-F
EQUAL? PRSI,EACH-OTHER \?ELS5
CALL PERFORM-PRSA,PRSO,PRSO
RTRUE
?ELS5: CALL NOUN-USED,W?ITSELF,EACH-OTHER
ZERO? STACK \FALSE
SET 'P-WON,FALSE-VALUE
CALL ADJ-USED,A?EACH
ZERO? STACK /?ELS10
CALL CANT-USE,A?EACH,TRUE-VALUE
RTRUE
?ELS10: CALL CANT-USE,W?OTHER,TRUE-VALUE
RTRUE
.FUNCT MAN-WOMAN-F,PERSON
EQUAL? PRSA,V?FOLLOW \?ELS5
EQUAL? FOLLOW-FLAG,4 \?ELS10
PRINT DONT-WANT-TO
RTRUE
?ELS10: EQUAL? FOLLOW-FLAG,5 \?ELS12
CALL DO-WALK,P?NORTH
RSTACK
?ELS12: EQUAL? FOLLOW-FLAG,6 \?ELS14
CALL DO-WALK,P?EAST
RSTACK
?ELS14: CALL V-WALK-AROUND
RSTACK
?ELS5: GET P-NAMW,0
EQUAL? STACK,W?MAN \?ELS18
EQUAL? PRSO,MAN-WOMAN \?ELS18
CALL FIND-MAN >PERSON
ZERO? PERSON /?ELS25
CALL PERFORM-PRSA,PERSON,PRSI
RTRUE
?ELS25: CALL CANT-SEE,MAN-WOMAN
RSTACK
?ELS18: GET P-NAMW,0
EQUAL? STACK,W?WOMAN \?ELS29
EQUAL? PRSO,MAN-WOMAN \?ELS29
CALL FIND-WOMAN >PERSON
ZERO? PERSON /?ELS36
CALL PERFORM-PRSA,PERSON,PRSI
RTRUE
?ELS36: CALL CANT-SEE,MAN-WOMAN
RSTACK
?ELS29: GET P-NAMW,1
EQUAL? STACK,W?MAN \?ELS40
EQUAL? PRSI,MAN-WOMAN \?ELS40
CALL FIND-MAN >PERSON
ZERO? PERSON /?ELS47
CALL PERFORM-PRSA,PRSO,PERSON
RTRUE
?ELS47: CALL CANT-SEE,MAN-WOMAN
RSTACK
?ELS40: GET P-NAMW,1
EQUAL? STACK,W?WOMAN \FALSE
EQUAL? PRSI,MAN-WOMAN \FALSE
CALL FIND-WOMAN >PERSON
ZERO? PERSON /?ELS58
CALL PERFORM-PRSA,PRSO,PERSON
RTRUE
?ELS58: CALL CANT-SEE,MAN-WOMAN
RSTACK
.FUNCT FIND-MAN
PUTP MAN-WOMAN,P?SDESC,STR?125
IN? SALESMAN,HERE \?ELS5
RETURN SALESMAN
?ELS5: IN? MAD-SCIENTIST,HERE \?ELS7
RETURN MAD-SCIENTIST
?ELS7: IN? MITRE,HERE \?ELS9
RETURN MITRE
?ELS9: IN? PROPRIETOR,HERE \?ELS11
RETURN PROPRIETOR
?ELS11: IN? THORBAST,HERE \?ELS13
ZERO? MALE /?ELS13
RETURN THORBAST
?ELS13: IN? YOUNG-WOMAN,HERE \?ELS17
ZERO? MALE \?ELS17
RETURN YOUNG-WOMAN
?ELS17: IN? SULTAN,HERE \?ELS21
ZERO? MALE /?ELS21
RETURN SULTAN
?ELS21: IN? SULTANS-WIFE,HERE \?ELS25
ZERO? MALE \?ELS25
RETURN SULTANS-WIFE
?ELS25: CALL VISIBLE?,SIDEKICK
ZERO? STACK /FALSE
ZERO? MALE /FALSE
RETURN SIDEKICK
.FUNCT FIND-WOMAN
PUTP MAN-WOMAN,P?SDESC,STR?126
IN? THORBAST,HERE \?ELS5
ZERO? MALE \?ELS5
RETURN THORBAST
?ELS5: IN? YOUNG-WOMAN,HERE \?ELS9
ZERO? MALE /?ELS9
RETURN YOUNG-WOMAN
?ELS9: IN? THETA,HERE \?ELS13
FSET? THETA,MUNGBIT /?ELS13
RETURN THETA
?ELS13: IN? LGOP,HERE \?ELS17
RETURN LGOP
?ELS17: IN? SULTAN,HERE \?ELS19
ZERO? MALE \?ELS19
RETURN SULTAN
?ELS19: IN? SULTANS-WIFE,HERE \?ELS23
ZERO? MALE /?ELS23
RETURN SULTANS-WIFE
?ELS23: CALL VISIBLE?,SIDEKICK
ZERO? STACK /FALSE
ZERO? MALE \FALSE
RETURN SIDEKICK
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ,X=0
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3
EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3
PRINTR "Those things aren't here!"
?ELS3: EQUAL? P-XNAM,W?BODY \?ELS7
EQUAL? P-XADJN,W?MY,FALSE-VALUE \?ELS7
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS12
SET 'PRSO,ME
RFALSE
?ELS12: SET 'PRSI,ME
RFALSE
?ELS7: EQUAL? P-XNAM,W?HAND,W?HANDS \?ELS16
EQUAL? P-XADJN,W?MITRE,W?KING'S \?ELS16
EQUAL? PRSA,V?TAKE,V?SHAKE \?ELS16
CALL PERFORM,V?SHAKE-WITH,HANDS,MITRE
RTRUE
?ELS16: EQUAL? P-XNAM,W?HANDS,W?HAND,W?PALM /?THN23
EQUAL? P-XNAM,W?FINGER,W?EYE,W?EYES /?THN23
EQUAL? P-XNAM,W?HEAD,W?EARS,W?EAR /?THN23
EQUAL? P-XNAM,W?LIP,W?LIPS,W?MOUTH /?THN23
EQUAL? P-XNAM,W?KNEECAP,W?KNEE,W?KNEES /?THN23
EQUAL? P-XNAM,W?NOSE,W?NOSTRIL,W?BALLS /?THN23
EQUAL? P-XNAM,W?PENIS,W?COCK,W?ASS /?THN23
EQUAL? P-XNAM,W?TITS,W?BREAST,W?BOSOM /?THN23
EQUAL? P-XNAM,W?CUNT,W?VAGINA,W?PUSSY /?THN23
EQUAL? P-XNAM,W?TIT,W?BODY \?ELS20
?THN23: EQUAL? P-XADJN,W?TRENT,W?TIFFAN,W?TIFF'S /?THN25
EQUAL? P-XADJN,W?GODDESSES,W?SHAPE,W?COUCHMATE /?THN25
EQUAL? P-XADJN,W?THORBAST,W?ASSASSIN,W?SALESMAN /?THN25
EQUAL? P-XADJN,W?SCIENTIST,W?GORILLA,W?MONKEY /?THN25
EQUAL? P-XADJN,W?KING'S,W?MITRE,W?SULTAN /?THN25
EQUAL? P-XADJN,W?PROPRIETOR,W?OWNER,W?GUARD /?THN25
EQUAL? P-XADJN,W?PRINCE,W?DAUGHTER,W?THETA /?THN25
EQUAL? P-XADJN,W?BARTENDER,W?WIFE'S,W?HUSBAND /?THN25
EQUAL? P-XADJN,W?ELYSIA,W?ELYSIUM,W?WOMAN /?THN25
EQUAL? P-XADJN,W?ROBOT,W?BABY'S /?THN25
EQUAL? P-XADJN,W?MAN'S,W?HIS,W?HER \?ELS20
?THN25: PRINTR "[Sorry. Given limited space, we can't handle everything. Therefore, you can only refer to characters in the story, not individual body parts. For example, you can KISS IRWIN but you can't KISS IRWIN'S ELBOW.]"
?ELS20: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS28
SET 'TBL,P-PRSO
JUMP ?CND1
?ELS28: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: ZERO? PRSO? /?ELS33
CALL PRSO-MOBY-VERB?
ZERO? STACK /?ELS33
SET 'X,TRUE-VALUE
JUMP ?CND31
?ELS33: ZERO? PRSO? \?CND31
CALL PRSI-MOBY-VERB?
ZERO? STACK /?CND31
SET 'X,TRUE-VALUE
?CND31: ZERO? X /?ELS42
CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
ZERO? OBJ /FALSE
EQUAL? OBJ,NOT-HERE-OBJECT \TRUE
EQUAL? PRSA,V?FOLLOW,V?WALK-TO \?ELS54
CALL V-WALK-AROUND
JUMP ?CND40
?ELS54: PRINTI "["
PRINT YOULL-HAVE-TO
PRINTI "be more specific.]"
CRLF
JUMP ?CND40
?ELS42: EQUAL? WINNER,PROTAGONIST \?ELS61
PRINTI "You"
JUMP ?CND59
?ELS61: PRINTI "Looking confused,"
CALL TPRINT,WINNER
PRINTI " says, ""I"
?CND59: PRINTI " can't "
EQUAL? P-XNAM,W?ODOR,W?SMELL,W?SCENT \?ELS66
PRINTI "smell"
JUMP ?CND64
?ELS66: PRINTI "see"
?CND64: CALL NAME?,P-XNAM
ZERO? STACK /?THN72
EQUAL? P-XNAM,W?FORD \?CND69
?THN72: PRINTI " any"
?CND69: CALL NOT-HERE-PRINT,PRSO?
PRINTI " here!"
EQUAL? WINNER,PROTAGONIST /?CND74
PRINTI """"
?CND74: CRLF
?CND40: CALL STOP
RSTACK
.FUNCT PRSO-MOBY-VERB?
EQUAL? PRSA,V?WHAT,V?WHERE /TRUE
EQUAL? PRSA,V?WAIT-FOR,V?WALK-TO,V?MAKE /TRUE
EQUAL? PRSA,V?BUY,V?CALL,V?SAY /TRUE
EQUAL? PRSA,V?FIND,V?FOLLOW,V?PHONE /TRUE
EQUAL? PRSA,V?USE-QUOTES,V?ANSWER-KLUDGE \FALSE
RTRUE
.FUNCT PRSI-MOBY-VERB?
EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR,V?TELL-ABOUT \FALSE
RTRUE
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ
CALL MOBY-FIND,TBL >M-F
EQUAL? 1,M-F \?ELS5
ZERO? PRSO? /?ELS8
SET 'PRSO,P-MOBY-FOUND
CALL THIS-IS-IT,PRSO
RFALSE
?ELS8: SET 'PRSI,P-MOBY-FOUND
RFALSE
?ELS5: LESS? 1,M-F \?ELS13
GET TBL,1 >OBJ
GETP OBJ,P?GENERIC
CALL STACK >OBJ
ZERO? OBJ /?ELS13
EQUAL? OBJ,NOT-HERE-OBJECT /TRUE
ZERO? PRSO? /?ELS20
SET 'PRSO,OBJ
CALL THIS-IS-IT,PRSO
RFALSE
?ELS20: SET 'PRSI,OBJ
RFALSE
?ELS13: RETURN NOT-HERE-OBJECT
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
ZERO? P-OFLAG /?ELS5
ZERO? P-XADJ /?CND7
PRINTI " "
PRINTB P-XADJN
?CND7: ZERO? P-XNAM /FALSE
PRINTI " "
PRINTB P-XNAM
RTRUE
?ELS5: ZERO? PRSO? /?ELS18
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?ELS18: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT LOVE-F,LOVER
EQUAL? PRSA,V?MAKE \FALSE
CALL FIND-IN,HERE,ACTORBIT,STR?80 >LOVER
ZERO? LOVER /?ELS10
CALL PERFORM,V?FUCK,LOVER
RTRUE
?ELS10: PRINTR "Alone? How odd."
.FUNCT GLOBAL-SLEEP-F
EQUAL? PRSA,V?TAKE,V?WALK-TO \?ELS5
CALL PERFORM,V?SLEEP
RTRUE
?ELS5: EQUAL? PRSA,V?PUT-TO \FALSE
EQUAL? PRSI,GLOBAL-SLEEP \FALSE
PRINTR "You're not a hypnotist."
.FUNCT GROUND-F
EQUAL? HERE,IN-SPACE \?ELS3
CALL CANT-SEE,GROUND
RTRUE
?ELS3: FSET? HERE,INDOORSBIT /?THN6
LOC PROTAGONIST
EQUAL? STACK,BARGE \?ELS5
?THN6: PUTP GROUND,P?SDESC,STR?128
JUMP ?CND1
?ELS5: PUTP GROUND,P?SDESC,STR?127
?CND1: EQUAL? PRSA,V?EXAMINE \?ELS14
EQUAL? HERE,SPAWNING-GROUND \?ELS19
PRINT OOZY-WITH-SLIME
CRLF
RTRUE
?ELS19: CALL GLOBAL-IN?,HOLE,HERE
ZERO? STACK /?ELS21
CALL HOLE-INVISIBLE
ZERO? STACK \?ELS21
PRINTI "You notice"
CALL ARPRINT,HOLE
RSTACK
?ELS21: EQUAL? HERE,CELL \?ELS25
PRINTR "Soft. Cushiony."
?ELS25: EQUAL? HERE,OTHER-CELL \?ELS27
PRINTR "Rock-hard."
?ELS27: EQUAL? HERE,HOLD \?ELS29
EQUAL? SIDEKICK-EXPLODED,1 \?ELS29
CALL SPLATTERED-DESC
CRLF
RTRUE
?ELS29: CALL IN-CATACOMBS
ZERO? STACK /FALSE
PRINT CATACOMBS-WATER-DESC
CRLF
RTRUE
?ELS14: EQUAL? PRSA,V?TOUCH \?ELS35
EQUAL? HERE,CELL,OTHER-CELL \?ELS35
CALL PERFORM,V?EXAMINE,GROUND
RTRUE
?ELS35: EQUAL? PRSA,V?CLIMB,V?CLIMB-ON,V?CLIMB-UP /?THN40
EQUAL? PRSA,V?BOARD \?ELS39
?THN40: CALL WASTES
RSTACK
?ELS39: EQUAL? PRSA,V?LOOK-UNDER \?ELS43
CALL IMPOSSIBLES
RSTACK
?ELS43: EQUAL? PRSA,V?LEAVE \?ELS45
CALL DO-WALK,P?UP
RSTACK
?ELS45: EQUAL? PRSA,V?STAND-ON,V?LEAP \FALSE
EQUAL? HERE,ROOF \FALSE
CALL PERFORM,V?LEAP,ROOMS
RTRUE
.FUNCT CEILING-F
EQUAL? PRSA,V?EXAMINE \?ELS5
EQUAL? HERE,HOLD \?ELS10
EQUAL? SIDEKICK-EXPLODED,1 \?ELS10
CALL SPLATTERED-DESC
CRLF
RTRUE
?ELS10: EQUAL? HERE,CELL \?ELS14
ZERO? HOLE-OPEN /?ELS14
PRINTR "There's a hole in the ceiling."
?ELS14: EQUAL? HERE,BEDROOM \FALSE
FSET? BEDROOM,MUNGBIT \FALSE
PRINTR "Most of the ceiling is now gone."
?ELS5: FSET? HERE,INDOORSBIT /?ELS22
CALL CANT-SEE,CEILING
RSTACK
?ELS22: EQUAL? PRSA,V?ENTER \?ELS24
EQUAL? HERE,CELL \?ELS24
ZERO? HOLE-OPEN /?ELS24
CALL DO-WALK,P?UP
RSTACK
?ELS24: EQUAL? PRSA,V?LOOK-UNDER \FALSE
CALL PERFORM,V?LOOK
RTRUE
.FUNCT ODOR-F
EQUAL? HERE,IN-SPACE \?ELS5
IN? THORBAST,HERE /?ELS5
PRINT CANT-SMELL
RTRUE
?ELS5: EQUAL? HERE,MENS-ROOM,LADIES-ROOM \?ELS9
CALL RUNNING?,I-URGE
ZERO? STACK /?ELS9
PRINT CANT-SMELL
RTRUE
?ELS9: EQUAL? HERE,PLAZA \?ELS13
LESS? PLAZA-COUNTER,9 \?ELS13
PRINT CANT-SMELL
RTRUE
?ELS13: EQUAL? PRSA,V?SMELL /?THN18
EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? P-PRSA-WORD,W?DESCRIBE \FALSE
?THN18: GETP HERE,P?ODOR
ZERO? STACK /?ELS26
FSET? HERE,SMELLEDBIT \?ELS31
PRINTI "There is a strong odor of "
GETP HERE,P?ODOR
PRINT STACK
PRINTR " in the air."
?ELS31: FSET HERE,SMELLEDBIT
CALL SCRATCH-N-SNIFF
GETP HERE,P?ACTION
CALL STACK,M-SMELL
CRLF
RTRUE
?ELS26: EQUAL? HERE,INNER-HAREM \?ELS35
SET 'HERE,HAREM
CALL PERFORM,V?SMELL,ODOR
SET 'HERE,INNER-HAREM
RTRUE
?ELS35: EQUAL? HERE,GARDEN \?ELS37
CALL NO-SCRATCH-N-SNIFF,STR?129
RSTACK
?ELS37: CALL ACCESSIBLE?,CHOCOLATE
ZERO? STACK /?ELS39
FSET? CHOCOLATE,UNTEEDBIT /?ELS39
PRINTI "[the "
CALL DPRINT,CHOCOLATE
PRINTI "]"
CRLF
CALL PERFORM,V?SMELL,CHOCOLATE
RTRUE
?ELS39: PRINT CANT-SMELL
RTRUE
.FUNCT SCRATCH-N-SNIFF,NUM=0
PRINTI "[Scratch 'n' sniff spot number "
ZERO? NUM /?ELS3
PRINTN NUM
JUMP ?CND1
?ELS3: GETP HERE,P?ODOR-NUMBER
PRINTN STACK
?CND1: PRINT HIT-RETURN
PRINTI "continue.]"
READ P-INBUF,P-LEXV
CRLF
RTRUE
.FUNCT NO-SCRATCH-N-SNIFF,STRING
PRINTI "[Too bad there's no scratch 'n' sniff for this one, huh?]
Ahhh, the odor of "
PRINT STRING
PRINTR "!"
.FUNCT WATER-F
EQUAL? HERE,MINARET,DUNETOP \?ELS5
CALL TOUCHING?,WATER
ZERO? STACK /?ELS5
CALL CANT-REACH,WATER
RSTACK
?ELS5: EQUAL? PRSA,V?BUY,V?DRINK \?ELS9
PRINTR "You're not thirsty."
?ELS9: EQUAL? PRSA,V?EXAMINE,V?LOOK-UNDER,V?LOOK-INSIDE \?ELS11
PRINTR "The water is dark and murky."
?ELS11: EQUAL? PRSA,V?MAKE,V?PASS \?ELS13
CALL V-PEE
RSTACK
?ELS13: EQUAL? PRSA,V?REACH-IN \?ELS15
PRINTR "Your hand is now wet."
?ELS15: EQUAL? PRSA,V?PUT-ON \?ELS17
EQUAL? PRSI,WATER \?ELS17
CALL PERFORM,V?PUT,PRSO,WATER
RTRUE
?ELS17: CALL GLOBAL-IN?,CANAL-OBJECT,HERE
ZERO? STACK /?ELS21
EQUAL? PRSO,WATER \?ELS26
CALL PERFORM-PRSA,CANAL-OBJECT,PRSI
RTRUE
?ELS26: CALL PERFORM-PRSA,PRSO,CANAL-OBJECT
RTRUE
?ELS21: EQUAL? PRSA,V?PUT \?ELS30
EQUAL? PRSI,WATER \?ELS30
EQUAL? PRSO,RAFT \?ELS37
EQUAL? HERE,OASIS \?ELS37
PRINTR "Next you'll be putting yachts in bathtubs!"
?ELS37: EQUAL? PRSO,RAFT \?ELS41
CALL IN-CATACOMBS
ZERO? STACK /?ELS41
CALL PERFORM,V?DROP,RAFT
RTRUE
?ELS41: CALL WASTES
RSTACK
?ELS30: EQUAL? PRSA,V?WALK,V?ON \?ELS47
EQUAL? HERE,MENS-ROOM,LADIES-ROOM \?ELS47
CALL PERFORM,V?FLUSH,TOILET
RTRUE
?ELS47: EQUAL? PRSA,V?CRAWL-UNDER,V?ENTER,V?BOARD \FALSE
CALL V-SWIM
RSTACK
.FUNCT HANDS-F,ACTOR
EQUAL? PRSA,V?APPLAUD \?ELS5
SET 'PRSO,FALSE-VALUE
CALL V-APPLAUD
RSTACK
?ELS5: EQUAL? PRSA,V?SHAKE \?ELS7
EQUAL? HERE,THRONE-ROOM \?ELS12
CALL PERFORM,V?SHAKE-WITH,HANDS,MITRE
RTRUE
?ELS12: CALL FIND-IN,HERE,ACTORBIT,STR?52 >ACTOR
ZERO? ACTOR /?ELS14
CALL PERFORM,V?SHAKE-WITH,HANDS,ACTOR
RTRUE
?ELS14: PRINTR "Pleased to meet you."
?ELS7: EQUAL? PRSA,V?COUNT \?ELS18
CALL NOUN-USED,W?FINGER,HANDS
ZERO? STACK /?ELS21
PRINTI "Ten"
JUMP ?CND19
?ELS21: PRINTI "Two"
?CND19: PRINTR ", as usual."
?ELS18: EQUAL? PRSA,V?CLEAN \?ELS25
PRINTR "Done."
?ELS25: EQUAL? PRSA,V?TAKE-WITH \?ELS27
EQUAL? PRSI,HANDS \?ELS27
CALL PERFORM,V?TAKE,PRSO
RTRUE
?ELS27: EQUAL? PRSA,V?PUT-ON \?ELS31
EQUAL? PRSI,EYES \?ELS31
CALL PERFORM,V?SPUT-ON,EYES,HANDS
RTRUE
?ELS31: EQUAL? PRSA,V?PUT,V?PUT-ON \?ELS35
EQUAL? PRSI,EARS \?ELS35
CALL PERFORM,V?SPUT-ON,EARS,HANDS
RTRUE
?ELS35: EQUAL? PRSA,V?SPUT-ON \FALSE
EQUAL? PRSO,NOSE,EARS,EYES \FALSE
ZERO? GONE-APE /?ELS46
PRINT DEXTERITY
RTRUE
?ELS46: CALL ITEMS-CARRIED
GRTR? STACK,0 \?ELS49
PRINT YOU-CANT
PRINTI "do that with "
PRINTD HANDS
PRINTR "s full!"
?ELS49: ZERO? HAND-COVER /?ELS54
PRINTI "You're already"
JUMP ?CND52
?ELS54: SET 'HAND-COVER,PRSO
FSET PRSO,MUNGBIT
EQUAL? HAND-COVER,EARS \?ELS60
PRINT MUFFLED
PRINTI "'re"
JUMP ?CND52
?ELS60: PRINTI "Okay, you're now"
?CND52: PRINTI " covering "
CALL DPRINT,HAND-COVER
PRINTI " with "
PRINTD HANDS
PRINTR "s."
.FUNCT ITEMS-CARRIED,X,CNT=0
FIRST? PROTAGONIST >X /?KLU10
?KLU10:
?PRG1: ZERO? X \?ELS5
RETURN CNT
?ELS5: FSET? X,WORNBIT /?CND3
EQUAL? X,COMIC-BOOK /?CND3
INC 'CNT
?CND3: NEXT? X >X /?KLU11
?KLU11: JUMP ?PRG1
.FUNCT HEAD-F
EQUAL? PRSA,V?PUT-ON \FALSE
EQUAL? PRSO,SACK,SHEET,BLANKET \FALSE
SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Where do you think you are, Traal?"
.FUNCT EYES-F
EQUAL? PRSA,V?CLOSE \?ELS5
ZERO? GONE-APE /?ELS10
CALL WASTES
RSTACK
?ELS10: FSET? EYES,MUNGBIT \?ELS13
EQUAL? EYES,HAND-COVER \?ELS18
PRINT HANDS-OVER-EYES
RTRUE
?ELS18: PRINT SENILITY-STRIKES
RTRUE
?ELS13: FSET EYES,MUNGBIT
CALL EYES-ARE-NOW,STR?130
RSTACK
?ELS5: EQUAL? PRSA,V?OPEN \FALSE
FSET? EYES,MUNGBIT \?ELS29
EQUAL? EYES,HAND-COVER \?ELS34
PRINT HANDS-OVER-EYES
RTRUE
?ELS34: CALL SENSE-AGAIN,EYES
RSTACK
?ELS29: PRINTR "They are open!"
.FUNCT EYES-ARE-NOW,STRING
PRINTI "Your eyes are now "
PRINT STRING
PRINT PERIOD-CR
RTRUE
.FUNCT OPEN-EYES-AND-REMOVE-HANDS
FCLEAR EYES,MUNGBIT
ZERO? HAND-COVER /FALSE
FCLEAR HAND-COVER,MUNGBIT
SET 'HAND-COVER,FALSE-VALUE
RETURN HAND-COVER
.FUNCT EARS-F
EQUAL? PRSA,V?TAKE \?ELS5
EQUAL? P-PRSA-WORD,W?HOLD \?ELS5
CALL PERFORM,V?SPUT-ON,EARS,HANDS
RTRUE
?ELS5: EQUAL? PRSA,V?UNCOVER \FALSE
FSET? COTTON-BALLS,WORNBIT \FALSE
ZERO? GONE-APE \FALSE
EQUAL? EARS,HAND-COVER \?CND12
SET 'HAND-COVER,FALSE-VALUE
?CND12: CALL PERFORM,V?REMOVE,COTTON-BALLS
RTRUE
.FUNCT NOSE-F
EQUAL? PRSA,V?PICK,V?BLOW \?ELS5
PRINT YECHH
RTRUE
?ELS5: EQUAL? PRSA,V?TAKE \?ELS7
EQUAL? P-PRSA-WORD,W?HOLD \?ELS7
CALL PERFORM,V?SPUT-ON,NOSE,HANDS
RTRUE
?ELS7: EQUAL? PRSA,V?UNCOVER \FALSE
FSET? CLOTHES-PIN,WORNBIT \FALSE
ZERO? GONE-APE \FALSE
EQUAL? NOSE,HAND-COVER \?CND14
SET 'HAND-COVER,FALSE-VALUE
?CND14: CALL PERFORM,V?REMOVE,CLOTHES-PIN
RTRUE
.FUNCT MOUTH-F
EQUAL? PRSA,V?CLEAN \?ELS5
FSET? LIP-BALM,WORNBIT \?ELS5
CALL PERFORM,V?REMOVE,LIP-BALM
RTRUE
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
FSET? LIP-BALM,WORNBIT \?ELS9
CALL ROB,PROTAGONIST,TOILET
MOVE LIP-BALM,PROTAGONIST
CALL V-INVENTORY
CALL ROB,TOILET,PROTAGONIST
RSTACK
?ELS9: EQUAL? PRSA,V?PUT \?ELS13
EQUAL? PRSI,MOUTH \?ELS13
CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS13: EQUAL? PRSA,V?OPEN \FALSE
PRINTR "This fails to catch any flies."
.FUNCT NAUGHTY-BITS-F
CALL NOUN-USED,W?PUSSY,CUNT
ZERO? STACK /?ELS5
CALL ADJ-USED,A?MY
ZERO? STACK \?ELS5
CALL VISIBLE?,PAINTING
ZERO? STACK /?ELS5
EQUAL? PRSO,CUNT \?ELS12
CALL PERFORM-PRSA,PAINTING,PRSI
RTRUE
?ELS12: CALL PERFORM-PRSA,PRSI,PAINTING
RTRUE
?ELS5: PRINTI "You don't need to refer to "
PRINTD COCK
PRINTI " to complete "
PRINT LGOP-CAPS
PRINT PERIOD-CR
RTRUE
.FUNCT ME-F
EQUAL? PRSA,V?TELL \?ELS5
PRINTI "Talking to yourself is a sign of impending mental collapse."
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?RELIEVE \?ELS7
CALL V-PEE
RSTACK
?ELS7: EQUAL? PRSA,V?PUT \?ELS9
EQUAL? PRSI,ME \?ELS9
ZERO? MALE \?ELS9
ZERO? NAUGHTY-LEVEL /?ELS9
CALL PERFORM,V?FUCK,ME
RTRUE
?ELS9: EQUAL? PRSA,V?EAT,V?FUCK,V?TOUCH \?ELS13
ZERO? NAUGHTY-LEVEL /?ELS13
PRINTI "Encouraging such behavior would endanger the possibility of landing a lucrative Hollywood contract to make a film of "
PRINT LGOP-CAPS
PRINT PERIOD-CR
RTRUE
?ELS13: EQUAL? PRSA,V?GIVE \?ELS17
EQUAL? PRSI,ME \?ELS17
CALL PERFORM,V?TAKE,PRSO
RTRUE
?ELS17: EQUAL? PRSA,V?SHOW \?ELS21
EQUAL? PRSI,ME \?ELS21
CALL PERFORM,V?EXAMINE,PRSO
RTRUE
?ELS21: EQUAL? PRSA,V?MOVE \?ELS25
CALL V-WALK-AROUND
RSTACK
?ELS25: EQUAL? PRSA,V?SEARCH \?ELS27
CALL V-INVENTORY
RTRUE
?ELS27: EQUAL? PRSA,V?EXAMINE \?ELS29
ZERO? GONE-APE /?ELS34
PRINTR "You've gone ape!"
?ELS34: PRINTI "You're wearing"
FSET? WHITE-SUIT,WORNBIT \?ELS42
CALL ARPRINT,WHITE-SUIT
RSTACK
?ELS42: CALL ARPRINT,GARMENT
RSTACK
?ELS29: EQUAL? PRSA,V?MUNG,V?KILL \?ELS46
CALL JIGS-UP,STR?131
RSTACK
?ELS46: EQUAL? PRSA,V?WHERE,V?FIND \?ELS48
PRINTI "You're in"
CALL TRPRINT,HERE
RSTACK
?ELS48: EQUAL? PRSA,V?MEASURE \?ELS50
PRINTR "You don't measure up."
?ELS50: EQUAL? PRSA,V?UNTIE \?ELS52
ZERO? BODY-TIED-TO-SLAB /?ELS52
ZERO? GONE-APE /?ELS59
CALL PERFORM-PRSA,YOUR-BODY
RTRUE
?ELS59: CALL YUKS
RSTACK
?ELS52: EQUAL? PRSA,V?TIE \?ELS64
EQUAL? PRSI,SECOND-SLAB,FIRST-SLAB \?ELS64
ZERO? BODY-TIED-TO-SLAB /?ELS71
ZERO? GONE-APE \?ELS71
PRINTR "You are!"
?ELS71: PRINT YOU-CANT
PRINTR "tie yourself down!"
?ELS64: EQUAL? PRSA,V?FOLLOW \FALSE
PRINTR "Like most computers, I don't have legs."
.FUNCT GLOBAL-ROOM-F
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?LOOK \?ELS5
CALL V-LOOK
RSTACK
?ELS5: EQUAL? PRSA,V?WALK-TO,V?ENTER \?ELS7
CALL V-WALK-AROUND
RSTACK
?ELS7: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?LEAVE \?ELS9
CALL DO-WALK,P?OUT
RSTACK
?ELS9: EQUAL? PRSA,V?SEARCH \?ELS11
EQUAL? HERE,EXIT-SHOP \?ELS16
CALL PERFORM-PRSA,DUST
RTRUE
?ELS16: PRINT NOTHING-NEW
RTRUE
?ELS11: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,GLOBAL-ROOM \FALSE
EQUAL? P-PRSA-WORD,W?THROW \?ELS27
CALL PERFORM,V?THROW,PRSO
RTRUE
?ELS27: CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT HOUSE-F
EQUAL? PRSA,V?BOARD,V?WALK-TO,V?ENTER \?ELS5
EQUAL? HERE,BEDROOM,TEENSY-WEENSY-HOUSE /?THN11
EQUAL? HERE,LABORATORY,LOOKS-CAN-BE-DECEIVING \?ELS10
?THN11: PRINT LOOK-AROUND
RTRUE
?ELS10: EQUAL? HERE,FRONT-DOOR \?ELS14
CALL DO-WALK,P?NORTH
RSTACK
?ELS14: EQUAL? HERE,BACK-DOOR \?ELS16
CALL DO-WALK,P?SOUTH
RSTACK
?ELS16: EQUAL? HERE,CLEVELAND \?ELS18
CALL DO-WALK,P?NE
RSTACK
?ELS18: EQUAL? HERE,BEDROOM,GARDEN \FALSE
CALL DO-WALK,P?WEST
RSTACK
?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \?ELS22
EQUAL? HERE,LABORATORY,BEDROOM \?ELS27
PRINT CANT-FROM-HERE
RTRUE
?ELS27: EQUAL? HERE,TEENSY-WEENSY-HOUSE,LABORATORY \?ELS29
CALL V-WALK-AROUND
RSTACK
?ELS29: PRINT LOOK-AROUND
RTRUE
?ELS22: EQUAL? PRSA,V?LOOK-INSIDE \?ELS33
EQUAL? HERE,FRONT-DOOR,BACK-DOOR,GARDEN \?ELS38
PRINT CANT-FROM-HERE
RTRUE
?ELS38: CALL V-LOOK
RSTACK
?ELS33: EQUAL? PRSA,V?SEARCH \FALSE
PRINT NOTHING-NEW
RTRUE
.FUNCT SIGN-F,NUM
CALL CANAL-LOC >NUM
EQUAL? HERE,CANAL \?ELS5
EQUAL? NUM,15 /?ELS5
CALL CANT-SEE,SIGN
RSTACK
?ELS5: EQUAL? PRSA,V?READ \FALSE
EQUAL? HERE,END-OF-HALLWAY \?ELS14
PRINTR """Up To Observation Room."""
?ELS14: EQUAL? HERE,OBSERVATION-ROOM \?ELS16
PRINTR """Down to Cells."""
?ELS16: EQUAL? HERE,EXIT-SHOP \?ELS18
PRINTI """E"
PRINT BOUGHT-AND-SOLD
PRINTR "."""
?ELS18: EQUAL? HERE,VIZICOMM-BOOTH \?ELS20
PRINTR """Out of order."""
?ELS20: EQUAL? HERE,SOUTH-POLE \?ELS22
PRINTR """Martian Orphanages, Inc.
South Polar Branch"""
?ELS22: EQUAL? HERE,PENGUIN-PARK \?ELS24
PRINTR """Give generously to the Penguin Retirement Fund."""
?ELS24: EQUAL? HERE,CANAL,WATTZ-UPP-DOCK \FALSE
PRINTR "The sign has no writing, only the skull and crossbones."
.FUNCT STAIRS-F
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB \?ELS5
CALL DO-WALK,P?UP
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-DOWN \?ELS7
EQUAL? HERE,BEDROOM \?ELS12
CALL BEDROOM-EXIT-F,TRUE-VALUE
ZERO? STACK /TRUE
CALL GOTO,TEENSY-WEENSY-HOUSE
RSTACK
?ELS12: CALL DO-WALK,P?DOWN
RSTACK
?ELS7: EQUAL? PRSA,V?THROW \FALSE
EQUAL? PRSI,STAIRS \FALSE
CALL WASTES
RSTACK
.FUNCT WINDOW-F
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
EQUAL? HERE,OBSERVATION-ROOM \?ELS10
SET 'SEEN-EXAMINATION-ROOM,TRUE-VALUE
PRINT YOU-SEE
PRINTI " a large room below. "
CALL EXAMINATION-ROOM-DESC,TRUE-VALUE
RSTACK
?ELS10: EQUAL? HERE,BEDROOM \?ELS12
MOVE FORD,HERE
FSET? HEADLIGHT,TRYTAKEBIT \?CND13
MOVE HEADLIGHT,HERE
?CND13: MOVE FORD,HERE
PRINTI "A car is parked on the street, twenty feet below. It's a Ford, a 1933 Ford ... and one of its "
PRINTD HEADLIGHT
PRINTI "s is "
IN? HEADLIGHT,HERE \?ELS18
FSET? HEADLIGHT,TRYTAKEBIT \?ELS18
PRINTI "loose"
JUMP ?CND16
?ELS18: PRINTI "missing"
?CND16: PRINT PERIOD-CR
RTRUE
?ELS12: EQUAL? HERE,HOLD \?ELS24
PRINT YOU-SEE
PRINTI " Saturn and her ample rings."
EQUAL? SPACESHIP-SCENE-STATUS,1 /?CND25
PRINTI " Much closer, no more than a hundred feet away, is"
CALL APRINT,PASSENGER-SHIP
PRINTI ". Judging by the steam blowing from her ion engines, she's preparing to depart."
?CND25: CRLF
RTRUE
?ELS24: EQUAL? HERE,JOES-BAR \?ELS29
PRINTR "It's raw and blowy outside. Little whirlpools of dust dance by."
?ELS29: EQUAL? HERE,SOUTH-POLE \?ELS31
FSET? ORPHANAGE-FOYER,TOUCHBIT \?ELS36
PRINTR "The window is fogged."
?ELS36: SET 'COTTON-BALLS-SEEN,TRUE-VALUE
MOVE COTTON-BALLS,HERE
PRINT YOU-SEE
PRINTI " a "
PRINTD COTTON-BALLS
PRINTR " sitting in an entrance foyer."
?ELS31: EQUAL? HERE,ORPHANAGE-FOYER \?ELS40
PRINT YOU-SEE
PRINTR " an icy plain."
?ELS40: EQUAL? HERE,MAIN-HALL-OF-PALACE \FALSE
PRINTR "Colored light spills through the window."
?ELS5: EQUAL? PRSA,V?OPEN \?ELS44
EQUAL? HERE,BEDROOM \?ELS49
PRINT ALREADY-IS
RTRUE
?ELS49: PRINTR "It's not that kind of window."
?ELS44: EQUAL? PRSA,V?CLOSE \?ELS53
EQUAL? HERE,BEDROOM \?ELS58
PRINTR "It seems stuck."
?ELS58: PRINT ALREADY-IS
RTRUE
?ELS53: EQUAL? PRSA,V?PUT,V?PUT-THROUGH \?ELS62
EQUAL? PRSI,WINDOW \?ELS62
EQUAL? HERE,BEDROOM \?ELS62
EQUAL? PRSO,HANDS \?ELS69
PRINT HUH
RTRUE
?ELS69: IN? PROTAGONIST,BED \?ELS71
CALL CANT-REACH,PRSI
RSTACK
?ELS71: EQUAL? PRSO,SHEET \?ELS73
ZERO? SHEET-HANGING \FALSE
ZERO? SHEET-TIED \FALSE
?ELS73: REMOVE PRSO
CALL PRONOUN
PRINTI " land"
FSET? PRSO,PLURALBIT /?CND80
PRINTI "s"
?CND80: PRINTI " on the street below. An urchin dashes up and runs off with"
CALL TRPRINT,PRSO
RSTACK
?ELS62: EQUAL? PRSA,V?EMPTY-FROM \?ELS84
EQUAL? PRSI,WINDOW \?ELS84
EQUAL? HERE,BEDROOM \?ELS84
CALL PERFORM,V?EMPTY,PRSO,WINDOW
RTRUE
?ELS84: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?ENTER /?THN89
EQUAL? PRSA,V?LEAP-OFF \FALSE
?THN89: EQUAL? HERE,BEDROOM \?ELS95
ZERO? SHEET-HANGING /?ELS100
CALL PERFORM,V?CLIMB-DOWN,SHEET
RTRUE
?ELS100: CALL PLUMMET-TO-PAVEMENT
RSTACK
?ELS95: EQUAL? HERE,SOUTH-POLE,ORPHANAGE-FOYER \?ELS105
PRINTR "It's barred!"
?ELS105: EQUAL? HERE,OBSERVATION-ROOM \?ELS107
CALL DO-WALK,P?WEST
RSTACK
?ELS107: CALL DO-FIRST,STR?66,WINDOW
RSTACK
.FUNCT TREE-F
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB \FALSE
PRINTR "The trees are all unclimbable."
.FUNCT HOLE-F,OLD-HERE
CALL CIRCLE-ISNT-BLACK
ZERO? STACK \?ELS9
EQUAL? PRSO,HOLE \?ELS9
GET P-ADJW,0
EQUAL? STACK,A?WHITE /?THN6
?ELS9: CALL CIRCLE-ISNT-BLACK
ZERO? STACK \?ELS11
EQUAL? PRSI,HOLE \?ELS11
GET P-ADJW,1
EQUAL? STACK,A?WHITE /?THN6
?ELS11: CALL CIRCLE-ISNT-BLACK
ZERO? STACK /?ELS13
EQUAL? PRSO,HOLE \?ELS13
GET P-ADJW,0
EQUAL? STACK,A?BLACK /?THN6
?ELS13: CALL CIRCLE-ISNT-BLACK
ZERO? STACK /?ELS5
EQUAL? PRSI,HOLE \?ELS5
GET P-ADJW,1
EQUAL? STACK,A?BLACK \?ELS5
?THN6: CALL CANT-SEE,HOLE
RSTACK
?ELS5: CALL HOLE-INVISIBLE
ZERO? STACK /?ELS17
CALL CANT-SEE,HOLE
RSTACK
?ELS17: EQUAL? HERE,CELL \?ELS19
CALL NOUN-USED,W?HOLE,HOLE
ZERO? STACK /?ELS19
EQUAL? PRSA,V?WALK-TO,V?ENTER,V?BOARD /?THN22
EQUAL? PRSA,V?LOOK-INSIDE \?ELS19
?THN22: CALL DO-WALK,P?UP
RSTACK
?ELS19: LOC PROTAGONIST
EQUAL? STACK,CAGE,FIRST-SLAB,SECOND-SLAB \?ELS25
CALL TOUCHING?,HOLE
ZERO? STACK /?ELS25
CALL CANT-REACH,HOLE
RTRUE
?ELS25: EQUAL? PRSA,V?BOARD,V?ENTER,V?STAND-ON \?ELS29
CALL CIRCLE-ISNT-BLACK
ZERO? STACK /?ELS32
PRINT NOTHING-HAPPENS
RTRUE
?ELS32: IN? PROTAGONIST,HERE /?CND30
CALL NOT-GOING-ANYWHERE
RTRUE
?CND30: CALL FALL-THROUGH-HOLE
SET 'LONG-CORRIDOR-LOC,1
SET 'MAD-SCIENTIST-COUNTER,0
SET 'IMPATIENCE-COUNTER,0
CALL DEQUEUE,I-MAD-SCIENTIST
SET 'OLD-HERE,HERE
EQUAL? HERE,LONG-CORRIDOR \?ELS37
PRINTI "Geronimo!
Yow! You appear in midair, high above a canal-studded desertscape. The ground is approaching uncomfortably fast.
Caw! Caw! A pterodactyl snatches you"
CALL AND-SIDEKICK
PRINTI " in midair and deposits you safely in"
PRINT ELLIPSIS
FSET? MY-KIND-OF-DOCK,TOUCHBIT \?ELS40
RANDOM 100
LESS? 60,STACK /?ELS40
CALL GOTO,MY-KIND-OF-DOCK
JUMP ?CND35
?ELS40: FSET? OASIS,TOUCHBIT \?ELS44
RANDOM 100
LESS? 40,STACK /?ELS44
CALL GOTO,OASIS
JUMP ?CND35
?ELS44: CALL GOTO,RUINED-CASTLE-2
JUMP ?CND35
?ELS37: GETP HERE,P?HOLE-DESTINATION
CALL GOTO,STACK
?CND35: EQUAL? OLD-HERE,WELL-BOTTOM \TRUE
IN? SIDEKICK,WELL-BOTTOM \TRUE
SET 'HOLE-MOVE,TRUE-VALUE
CALL SIDEKICK-FOLLOWS-YOU
SET 'HOLE-MOVE,FALSE-VALUE
RTRUE
?ELS29: EQUAL? PRSA,V?TAKE,V?LOOK-UNDER \?ELS57
PRINTR "It's not liftable."
?ELS57: EQUAL? PRSA,V?PUT-ON,V?RUB,V?POUR \?ELS59
CALL NOUN-USED,W?STAIN,STAIN
ZERO? STACK /?ELS59
EQUAL? PRSO,STAIN \?ELS59
CALL APPLY-STAIN,HOLE
RSTACK
?ELS59: EQUAL? PRSA,V?PUT-THROUGH,V?PUT-ON,V?PUT \?ELS63
EQUAL? PRSI,HOLE \?ELS63
CALL CIRCLE-ISNT-BLACK
ZERO? STACK /?ELS70
CALL WASTES
RSTACK
?ELS70: EQUAL? PRSO,SOD /FALSE
EQUAL? HERE,LONG-CORRIDOR \?ELS77
REMOVE PRSO
JUMP ?CND75
?ELS77: EQUAL? PRSO,TORCH \?CND80
EQUAL? HERE,WELL-BOTTOM \?CND80
CALL TORCH-OFF
?CND80: GETP HERE,P?HOLE-DESTINATION
MOVE PRSO,STACK
?CND75: CALL NON-DIMENSIONAL-JOURNEY
RSTACK
?ELS63: CALL CIRCLE-ISNT-BLACK
ZERO? STACK \FALSE
EQUAL? PRSA,V?TOUCH,V?REACH-IN \?ELS88
PRINT HAND-DWINDLES
RTRUE
?ELS88: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS90
PRINT STARING-INTO-VOID
RTRUE
?ELS90: EQUAL? PRSA,V?MEASURE \FALSE
CALL PERFORM-PRSA,FLEXIBLE-HOLE
RTRUE
.FUNCT HOLE-INVISIBLE
EQUAL? HERE,GARDEN \?ELS9
FSET? SOD,MUNGBIT \TRUE
?ELS9: EQUAL? HERE,CELL \?ELS11
ZERO? HOLE-OPEN /TRUE
?ELS11: EQUAL? HERE,LONG-CORRIDOR \FALSE
EQUAL? LONG-CORRIDOR-LOC,3 /FALSE
RTRUE
.FUNCT NON-DIMENSIONAL-JOURNEY
PRINTI "You get all cross-eyed trying to follow the non-dimensional journey of"
CALL TPRINT-PRSO
PRINTI " into"
CALL TPRINT,HOLE
PRINTI ". When you get your eyeballs untangled again,"
CALL TPRINT-PRSO
PRINTR " is gone."
.FUNCT FALL-THROUGH-HOLE
SET 'HOLE-MOVE,TRUE-VALUE
SET 'RAFT-HELD,FALSE-VALUE
PRINTI "You're sucked into the hole in a direction that isn't down, but neither is it one of the other directions with which you're familiar."
CALL ULTIMATELY-IN?,WHITE-SUIT
ZERO? STACK /?CND1
MOVE WHITE-SUIT,AT-MAIN-HATCH
FCLEAR WHITE-SUIT,TOUCHBIT
FCLEAR WHITE-SUIT,WORNBIT
CALL VISIBLE?,WHITE-SUIT
ZERO? STACK /?CND1
PRINTI " Oddly, your "
CALL DPRINT,WHITE-SUIT
PRINTI " vanishes without a trace."
?CND1: CRLF
CRLF
RTRUE
.FUNCT TOUCHING?,THING
EQUAL? PRSO,THING \?ELS5
EQUAL? PRSA,V?TAKE,V?TOUCH,V?SHAKE /TRUE
EQUAL? PRSA,V?CLEAN,V?KISS,V?SWIM /TRUE
EQUAL? PRSA,V?PUSH,V?CLOSE,V?LOOK-UNDER /TRUE
EQUAL? PRSA,V?MOVE,V?OPEN,V?KNOCK /TRUE
EQUAL? PRSA,V?SET,V?SHAKE,V?RAISE /TRUE
EQUAL? PRSA,V?UNLOCK,V?LOCK,V?CLIMB-UP /TRUE
EQUAL? PRSA,V?CLIMB,V?CLIMB-DOWN,V?CLIMB-ON /TRUE
EQUAL? PRSA,V?BOARD,V?ENTER,V?ON /TRUE
EQUAL? PRSA,V?OFF,V?SET,V?THROW /TRUE
EQUAL? PRSA,V?TASTE,V?FUCK,V?RAPE /TRUE
EQUAL? PRSA,V?LOOK-INSIDE,V?STAND-ON,V?TIE /TRUE
EQUAL? PRSA,V?MUNG,V?KICK,V?KILL /TRUE
EQUAL? PRSA,V?KNOCK,V?CUT,V?WHIP /TRUE
EQUAL? PRSA,V?BITE,V?PUSH /TRUE
?ELS5: EQUAL? PRSI,THING \FALSE
EQUAL? PRSA,V?PUT-ON,V?PUT,V?GIVE \FALSE
RTRUE
.FUNCT IN-CATACOMBS
EQUAL? HERE,CATACOMBS,WELL-BOTTOM,LADDER-ROOM /TRUE
EQUAL? HERE,BURIAL-CHAMBER,FORGOTTEN-STOREHOUSE \FALSE
RTRUE
.FUNCT IN-SPACE?
EQUAL? HERE,HOLD,STABLE,AT-MAIN-HATCH /TRUE
EQUAL? HERE,LONG-CORRIDOR,IN-SPACE,SPACE-YACHT \FALSE
RTRUE
.FUNCT CANT-SEE,OBJ=0,STRING=0
SET 'P-WON,FALSE-VALUE
PRINT YOU-CANT
EQUAL? OBJ,ODOR \?ELS3
PRINTI "smell"
JUMP ?CND1
?ELS3: PRINTI "see"
?CND1: ZERO? OBJ /?THN9
ZERO? OBJ /?CND6
CALL NAME?,OBJ
ZERO? STACK \?CND6
?THN9: PRINTI " any"
?CND6: ZERO? OBJ \?ELS15
PRINTI " "
PRINT STRING
JUMP ?CND13
?ELS15: EQUAL? OBJ,PRSI \?ELS17
CALL PRSI-PRINT
JUMP ?CND13
?ELS17: CALL PRSO-PRINT
?CND13: PRINTI " here."
CRLF
CALL STOP
RSTACK
.FUNCT CANT-VERB-A-PRSO,STRING
PRINT YOU-CANT
PRINT STRING
CALL APRINT,PRSO
PRINTR "!"
.FUNCT OPEN-YOUR-EYES
FSET? EYES,MUNGBIT \?ELS5
CALL DO-FIRST,STR?66,EYES
RSTACK
?ELS5: CALL DO-FIRST,STR?133,EYES
RSTACK
.FUNCT NOW-TIED,OBJ
PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now tied to"
CALL TRPRINT,OBJ
RSTACK
.FUNCT TELL-HIT-HEAD
PRINTI "You bang your bean against"
CALL TPRINT-PRSO
PRINTR " as you attempt this."
.FUNCT NOUN-USED,TEST-NOUN,OBJ
EQUAL? PRSO,OBJ \?ELS5
GET P-NAMW,0
EQUAL? STACK,TEST-NOUN /TRUE
?ELS5: EQUAL? PRSI,OBJ \FALSE
GET P-NAMW,1
EQUAL? STACK,TEST-NOUN \FALSE
RTRUE
.FUNCT ADJ-USED,TEST-ADJ,?TMP1
GET P-ADJW,0 >?TMP1
GET P-ADJW,1
EQUAL? TEST-ADJ,?TMP1,STACK \FALSE
RTRUE
.FUNCT OFF-VEHICLE?,OBJ
EQUAL? OBJ,STOOL,TOILET,FRONT-STOOP /TRUE
EQUAL? OBJ,FIRST-SLAB,SECOND-SLAB \FALSE
RTRUE
.FUNCT OPEN-CLOSED,OBJ
FSET? OBJ,OPENBIT \?ELS5
PRINTI "open"
RTRUE
?ELS5: PRINTI "closed"
RTRUE
.FUNCT WEE
SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Wasn't that fun?"
.FUNCT IN-YOUR-PACKAGE,STRING
PRINTI "This is the "
PRINT STRING
CALL IN-PACKAGE
RSTACK
.FUNCT IN-PACKAGE
PRINTI " that came in your "
PRINT LGOP-CAPS
PRINTI " package."
RTRUE
.FUNCT HIS-HER,CAP-H=0
ZERO? CAP-H /?ELS3
PRINTI "H"
JUMP ?CND1
?ELS3: PRINTI "h"
?CND1: ZERO? MALE /?ELS11
PRINTI "is"
RTRUE
?ELS11: PRINTI "er"
RTRUE
.FUNCT HER-HIS,CAP-H=0
ZERO? CAP-H /?ELS3
PRINTI "H"
JUMP ?CND1
?ELS3: PRINTI "h"
?CND1: ZERO? MALE /?ELS11
PRINTI "er"
RTRUE
?ELS11: PRINTI "is"
RTRUE
.FUNCT HIM-HER
ZERO? MALE /?ELS5
PRINTI "him"
RTRUE
?ELS5: PRINTI "her"
RTRUE
.FUNCT HER-HIM
ZERO? MALE /?ELS5
PRINTI "her"
RTRUE
?ELS5: PRINTI "him"
RTRUE
.FUNCT HE-SHE,CAP=0
ZERO? MALE /?ELS3
ZERO? CAP /?ELS7
PRINTI "H"
JUMP ?CND1
?ELS7: PRINTI "h"
JUMP ?CND1
?ELS3: ZERO? CAP /?ELS15
PRINTI "Sh"
JUMP ?CND1
?ELS15: PRINTI "sh"
?CND1: PRINTI "e"
RTRUE
.FUNCT SHE-HE,CAP=0
ZERO? MALE /?ELS3
ZERO? CAP /?ELS7
PRINTI "Sh"
JUMP ?CND1
?ELS7: PRINTI "sh"
JUMP ?CND1
?ELS3: ZERO? CAP /?ELS15
PRINTI "H"
JUMP ?CND1
?ELS15: PRINTI "h"
?CND1: PRINTI "e"
RTRUE
.FUNCT CANT-REACH,OBJ
PRINT YOU-CANT
PRINTI "reach"
CALL TPRINT,OBJ
IN? PROTAGONIST,HERE /?CND1
PRINTI " from"
LOC PROTAGONIST
CALL TPRINT,STACK
?CND1: PRINT PERIOD-CR
RTRUE
.FUNCT EAGERLY-ACCEPTS
MOVE PRSO,PRSI
PRINTI "Eagerly,"
CALL TPRINT-PRSI
PRINTI " accepts"
CALL TPRINT-PRSO
RSTACK
.FUNCT NOT-ON-GROUND,VEHICLE
PRINTI "But"
CALL TPRINT,VEHICLE
PRINTR " isn't on the ground!"
.FUNCT AND-SIDEKICK,NEW-SIDEKICK-LOC=0
CALL VISIBLE?,SIDEKICK
ZERO? STACK /FALSE
ZERO? NEW-SIDEKICK-LOC /?CND6
MOVE SIDEKICK,NEW-SIDEKICK-LOC
?CND6: PRINTI " and "
CALL DPRINT-SIDEKICK
RSTACK
.FUNCT PLAYER-CANT-SEE
FSET? EYES,MUNGBIT /?THN6
EQUAL? HAND-COVER,EYES \?ELS5
?THN6: CALL OPEN-YOUR-EYES
RSTACK
?ELS5: ZERO? LIT \FALSE
PRINT TOO-DARK
CRLF
RTRUE
.FUNCT DO-FIRST,STRING,OBJ=0
PRINT YOULL-HAVE-TO
PRINT STRING
ZERO? OBJ /?CND1
CALL TPRINT,OBJ
?CND1: PRINTR " first."
.FUNCT NOT-IN
PRINTI "But"
CALL TPRINT-PRSO
PRINTI " isn't "
FSET? PRSI,ACTORBIT \?ELS3
PRINTI "being held by"
JUMP ?CND1
?ELS3: FSET? PRSI,SURFACEBIT \?ELS5
PRINTI "on"
JUMP ?CND1
?ELS5: PRINTI "in"
?CND1: CALL TRPRINT,PRSI
RSTACK
.FUNCT NO-LID
PRINTI "The "
CALL DPRINT,PRSO
PRINTR " has no lid."
.FUNCT SORE,STRING
PRINTI "You begin to get a sore "
PRINT STRING
PRINT PERIOD-CR
RTRUE
.FUNCT CANT-USE-THAT-WAY,STRING
PRINTI "["
PRINT YOU-CANT
PRINTI "use "
PRINT STRING
PRINTR " that way.]"
.FUNCT RECOGNIZE
SET 'P-WON,FALSE-VALUE
PRINTR "[That sentence isn't one I recognize.]"
.FUNCT EXPLETIVE
PRINTI " ""Oh "
ZERO? NAUGHTY-LEVEL \?ELS3
PRINTI "shucks"
JUMP ?CND1
?ELS3: EQUAL? NAUGHTY-LEVEL,1 \?ELS5
PRINTI "damn"
JUMP ?CND1
?ELS5: PRINTI "shit"
?CND1: PRINTI "! "
RTRUE
.FUNCT PRONOUN
EQUAL? PRSO,ME \?ELS5
PRINTI "You"
RTRUE
?ELS5: FSET? PRSO,PLURALBIT \?ELS7
PRINTI "They"
RTRUE
?ELS7: FSET? PRSO,FEMALEBIT \?ELS9
PRINTI "She"
RTRUE
?ELS9: FSET? PRSO,ACTORBIT \?ELS11
PRINTI "He"
RTRUE
?ELS11: PRINTI "It"
RTRUE
.FUNCT REFERRING,HIM-HER=0
PRINTI "I don't see wh"
ZERO? HIM-HER /?ELS3
PRINTI "o"
JUMP ?CND1
?ELS3: PRINTI "at"
?CND1: PRINTR " you're referring to."
.FUNCT NO-ONE-HERE,STRING
PRINTI "There's no one here to "
PRINT STRING
PRINT PERIOD-CR
RTRUE
.FUNCT SEE-MANUAL,STRING
PRINTI "[You need quotes to "
PRINT STRING
PRINTR " See the instruction manual section entitled ""Communicating With Infocom's Interactive Fiction.""]"
.FUNCT UNIMPORTANT-THING-F
PRINTR "That's not important; leave it alone."
.ENDI