1561 lines
34 KiB
Plaintext
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
|