shogun/globals.zap

1011 lines
25 KiB
Plaintext
Raw Normal View History

2019-04-16 06:37:36 -07:00
.SEGMENT "0"
.FUNCT TELL-DIRECTION:ANY:1:1,DIR
EQUAL? DIR,P?SOUTH \?CCL3
PRINTI "south"
RTRUE
?CCL3: EQUAL? DIR,P?NORTH \?CCL5
PRINTI "north"
RTRUE
?CCL5: EQUAL? DIR,P?WEST \?CCL7
PRINTI "west"
RTRUE
?CCL7: EQUAL? DIR,P?EAST \?CCL9
PRINTI "east"
RTRUE
?CCL9: EQUAL? DIR,P?SW \?CCL11
PRINTI "southwest"
RTRUE
?CCL11: EQUAL? DIR,P?NW \?CCL13
PRINTI "northwest"
RTRUE
?CCL13: EQUAL? DIR,P?SE \?CCL15
PRINTI "southeast"
RTRUE
?CCL15: EQUAL? DIR,P?NE \?CCL17
PRINTI "northeast"
RTRUE
?CCL17: EQUAL? DIR,P?PORT \?CCL19
PRINTI "port"
RTRUE
?CCL19: EQUAL? DIR,P?STARBOARD \?CCL21
PRINTI "starboard"
RTRUE
?CCL21: EQUAL? DIR,P?FORE \FALSE
PRINTI "straight"
RTRUE
.FUNCT GENERIC-NORTH-F:ANY:2:2,R,F
RETURN INTDIR
.FUNCT INTNUM-F:ANY:0:0
EQUAL? PRSO,INTNUM \FALSE
EQUAL? PRSA,V?PUSH \FALSE
PRINT STR?209
PRINTR "to push here."
.FUNCT HIM-F:ANY:0:3,RARG,O,H
ASSIGNED? 'O /?CND1
SET 'O,HIM
?CND1: ASSIGNED? 'H /?CND3
SET 'H,P-HIM-OBJECT
?CND3: ZERO? RARG \FALSE
ZERO? H /?CCL9
EQUAL? PRSA,V?TELL /?PRD14
EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?CCL12
EQUAL? PRSO,O \?CCL12
?PRD14: CALL2 ACCESSIBLE?,H
ZERO? STACK \?CCL12
ICALL2 CTHE-PRINT,H
PRINTI " isn't here."
CRLF
EQUAL? PRSA,V?TELL \FALSE
ICALL1 END-QUOTE
RETURN M-FATAL
?CCL12: EQUAL? WINNER,O \?CND22
SET 'WINNER,H
?CND22: EQUAL? PRSS,O \?CND24
SET 'PRSS,H
?CND24: ICALL REDIRECT,O,H
RTRUE
?CCL9: ICALL1 MORE-SPECIFIC
EQUAL? PRSA,V?TELL \TRUE
ICALL1 END-QUOTE
RETURN M-FATAL
.FUNCT HER-F:ANY:0:1,RARG
CALL HIM-F,RARG,HER,P-HER-OBJECT
RSTACK
.FUNCT LIGHT-F:ANY:0:0
EQUAL? PRSA,V?THROUGH \?CCL3
CALL2 DO-WALK,P?OUT
RSTACK
?CCL3: EQUAL? PRSA,V?LAMP-ON \?CCL5
ZERO? LIT /?CCL8
PRINT IT-IS-ALREADY
PRINTI "light"
PRINT PERIOD
RTRUE
?CCL8: PRINTR "You need a light source!"
?CCL5: EQUAL? PRSA,V?LAMP-OFF \FALSE
PRINT WASTE-OF-TIME
RTRUE
.FUNCT LG-HOLE-F:ANY:0:0
EQUAL? PRSA,V?DIG \?CCL3
EQUAL? PRSO,LG-HOLE \?CCL3
ICALL PERFORM,V?DIG,PRSI
RTRUE
?CCL3: EQUAL? PRSA,V?REACH-IN \FALSE
PRINT YOU-FIND-NOTHING
PRINTR " of interest."
.FUNCT CEILING-F:ANY:0:0
EQUAL? PRSA,V?LOOK-UNDER \FALSE
ICALL2 NEW-VERB,V?LOOK
RTRUE
.FUNCT COJONES-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
CALL2 HELD?,CLOTHES
ZERO? STACK /?PRD8
FSET? CLOTHES,WEARBIT /?CTR5
?PRD8: CALL2 HELD?,KIMONO
ZERO? STACK /?CCL6
FSET? KIMONO,WEARBIT \?CCL6
?CTR5: PRINTR "What an embarrassing idea!"
?CCL6: EQUAL? HERE,BATH-HOUSE \?CCL14
PRINTR "There are more than enough people doing that already. The thought enough makes you blush."
?CCL14: PRINTR "They're still there."
?CCL3: EQUAL? PRSA,V?WALK-TO \?CCL16
ICALL PERFORM,V?ACT,CRAZY
RTRUE
?CCL16: EQUAL? PRSA,V?WHAT \FALSE
PRINTR "As your mother might have said, ""They are what a bull has that a steer hasn't."""
.FUNCT MOUTH-F:ANY:0:0
EQUAL? PRSA,V?OPEN,V?CLOSE \FALSE
PRINTR "They say a closed mouth gathers no foot."
.FUNCT EYES-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "You have no mirror."
?CCL3: EQUAL? PRSA,V?OPEN \?CCL5
PRINTR "They are."
?CCL5: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "That won't help."
.FUNCT LIST-PEOPLE:ANY:3:5,TEST,SI,PL,RM,DESC,F,LAST,1ST?
ASSIGNED? 'RM /?CND1
SET 'RM,HERE
?CND1: FIRST? RM >F /?BOGUS3
?BOGUS3: SET 'LAST,FALSE-VALUE
SET '1ST?,TRUE-VALUE
?PRG4: ZERO? F \?CCL8
ZERO? LAST /?CCL11
ZERO? 1ST? /?CCL14
PRINTI "The only "
PRINT SI
PRINTC 32
EQUAL? RM,HERE \?CCL17
PRINTI "here"
JUMP ?CND15
?CCL17: PRINT DESC
?CND15: PRINTI " is "
JUMP ?CND12
?CCL14: PRINTI " and "
?CND12: ICALL2 DPRINT,LAST
PRINTC 46
RTRUE
?CCL11: PRINT STR?210
PRINT PL
PRINTC 32
EQUAL? RM,HERE \?CCL20
PRINTI "here"
JUMP ?CND18
?CCL20: PRINT DESC
?CND18: PRINTC 46
RTRUE
?CCL8: CALL TEST,F
ZERO? STACK /?CND6
ZERO? LAST /?CND22
ZERO? 1ST? /?CND24
SET '1ST?,FALSE-VALUE
PRINTI "The "
PRINT PL
PRINTC 32
EQUAL? RM,HERE \?CCL28
PRINTI "here"
JUMP ?CND26
?CCL28: PRINT DESC
?CND26: PRINTI " are"
?CND24: PRINTC 32
ICALL2 DPRINT,LAST
PRINTC 44
?CND22: SET 'LAST,F
?CND6: NEXT? F >F /?PRG4
JUMP ?PRG4
.FUNCT LG-MEN-F:ANY:0:1,RARG
EQUAL? RARG,M-WINNER \?CCL3
PRINT STR?211
CRLF
RTRUE
?CCL3: EQUAL? RARG,FALSE-VALUE \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL8
ICALL LIST-PEOPLE,MAN?,STR?212,STR?213
CRLF
RTRUE
?CCL8: EQUAL? PRSA,V?TELL /?CTR9
EQUAL? PRSA,V?TELL-ABOUT \?CCL10
EQUAL? PRSO,LG-MEN \?CCL10
?CTR9: PRINT STR?214
CRLF
ICALL1 END-QUOTE
RETURN M-FATAL
?CCL10: CALL1 HOSTILE-VERB?
ZERO? STACK /FALSE
CALL1 MORE-SPECIFIC
RSTACK
.FUNCT MAN?:ANY:1:1,OBJ
EQUAL? OBJ,LG-MEN /FALSE
FSET? OBJ,PERSON \FALSE
FSET? OBJ,FEMALE /FALSE
RTRUE
.FUNCT LG-WOMEN-F:ANY:0:1,RARG
EQUAL? RARG,M-WINNER \?CCL3
PRINT STR?211
CRLF
RTRUE
?CCL3: EQUAL? RARG,FALSE-VALUE \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL8
ICALL LIST-PEOPLE,WOMAN?,STR?215,STR?216
CRLF
RTRUE
?CCL8: EQUAL? PRSA,V?TELL /?CTR9
EQUAL? PRSA,V?TELL-ABOUT \?CCL10
EQUAL? PRSO,LG-WOMEN \?CCL10
?CTR9: PRINT STR?214
CRLF
ICALL1 END-QUOTE
RETURN M-FATAL
?CCL10: CALL1 HOSTILE-VERB?
ZERO? STACK /FALSE
CALL1 MORE-SPECIFIC
RSTACK
.FUNCT WOMAN?:ANY:1:1,OBJ
EQUAL? OBJ,LG-WOMEN /FALSE
FSET? OBJ,PERSON \FALSE
FSET? OBJ,FEMALE /TRUE
RFALSE
.FUNCT YOU-F:ANY:0:1,RARG
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL5
PRINT STR?211
CRLF
RTRUE
?CCL5: EQUAL? PRSA,V?WHO \?CCL7
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
CALL1 MORE-SPECIFIC
RSTACK
?CCL7: EQUAL? WINNER,PLAYER \FALSE
CALL REDIRECT,YOU,ME
RSTACK
.FUNCT MENTAL-COLLAPSE:ANY:0:0
PRINTR "Talking to yourself is a sign of impending mental collapse."
.FUNCT ME-F:ANY:0:1,RARG,OLIT
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? PRSA,V?HOW \?CCL5
ICALL2 PERFORM,V?DIAGNOSE
RTRUE
?CCL5: EQUAL? PRSA,V?WEAR \?CCL7
CALL2 ACCESSIBLE?,CLOTHES
ZERO? STACK /?CCL10
ICALL PERFORM,V?WEAR,CLOTHES
RTRUE
?CCL10: PRINTR "You can't see any clothes here."
?CCL7: EQUAL? PRSA,V?CROSS \?CCL12
EQUAL? PRSO,ME \?CCL12
ICALL PERFORM,V?MAKE,SIGN-OF-CROSS
RTRUE
?CCL12: EQUAL? PRSA,V?BE?,V?BE,V?WHERE /?CTR15
EQUAL? PRSA,V?HOW \?CCL16
?CTR15: EQUAL? PRSA,V?WHERE \?CCL21
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL21: ICALL REDIRECT,ME,PLAYER
RTRUE
?CCL16: EQUAL? PRSA,V?WHO,V?WHAT \?CCL25
PRINTI "You are John Blackthorne, Pilot-Major of the "
ICALL2 PRINTUNDER,STR?7
PRINTR ", a Dutch merchanter out of Rotterdam. You are an Englishman chosen as Pilot because you speak Dutch, courtesy of your Dutch mother. You also speak Spanish, Portuguese, and Latin."
?CCL25: EQUAL? PRSA,V?FIND \?CCL27
PRINTI "You are "
EQUAL? SCENE,S-ERASMUS \?CCL30
PRINTI "aboard the "
ICALL2 PRINTUNDER,STR?7
PRINTR "."
?CCL30: EQUAL? SCENE,S-ANJIRO,S-YABU,S-PIT /?CTR31
EQUAL? SCENE,S-RODRIGUES \?CCL32
?CTR31: PRINTR "in the Japanese fishing village of Anjiro."
?CCL32: EQUAL? SCENE,S-VOYAGE \?CCL36
PRINTR "on your way to Osaka, at the command of Lord Toranaga."
?CCL36: EQUAL? SCENE,S-TORANAGA \?CCL38
PRINTR "in Lord Toranaga's court in Osaka Castle."
?CCL38: EQUAL? SCENE,S-PRISON \?CCL40
PRINTR "in the prison of Osaka Castle."
?CCL40: EQUAL? SCENE,S-ESCAPE \?CCL42
PRINTR "in the great city and castle of Osaka."
?CCL42: EQUAL? SCENE,S-OCHIBA,S-DEPARTURE,S-SEPPUKU /?CTR43
EQUAL? SCENE,S-NINJA \?CCL44
?CTR43: PRINTR "in Osaka Castle."
?CCL44: PRINTR "in Japan."
?CCL27: EQUAL? PRSA,V?EXAMINE \?CCL48
EQUAL? PRSO,ME \?CCL48
FSET? KIMONO,WEARBIT /?CTR52
FSET? SOCKS,WEARBIT /?CTR52
FSET? SANDALS,WEARBIT /?CTR52
FSET? SLIPPERS,WEARBIT \?CCL53
?CTR52: SET 'D-BIT,WEARBIT
ICALL2 DESCRIBE-SENT,WINNER
SET 'D-BIT,FALSE-VALUE
RTRUE
?CCL53: CALL2 HELD?,CLOTHES
ZERO? STACK /?CCL59
FSET? CLOTHES,WEARBIT \?CCL59
PRINTI "You are dressed in "
EQUAL? SCENE,S-ERASMUS \?CCL64
PRINTI "worn, dirty clothes"
CALL2 HELD?,BOOTS
ZERO? STACK /?CND65
FSET? BOOTS,WEARBIT \?CND65
PRINTI " and salt-stained boots"
?CND65: PRINTR "."
?CCL64: PRINTI "your old clothes, which have been cleaned and mended"
CALL2 HELD?,BOOTS
ZERO? STACK /?CND69
FSET? BOOTS,WEARBIT \?CND69
PRINTI ", and your newly polished boots"
?CND69: PRINTR "."
?CCL59: CALL2 HELD?,BOOTS
ZERO? STACK /?CCL74
FSET? BOOTS,WEARBIT \?CCL74
PRINTR "You are wearing your boots."
?CCL74: PRINTR "You are naked."
?CCL48: EQUAL? PRSA,V?SMELL \?CCL78
EQUAL? SCENE,S-ERASMUS \?CCL81
PRINTR "Your smell like anyone who's been at sea for six months would smell."
?CCL81: PRINTR "You smell all right, considering."
?CCL78: EQUAL? PRSA,V?SHOW \?CCL83
EQUAL? PRSI,ME \?CCL83
EQUAL? P-PRSA-WORD,W?READ \?CCL83
ICALL PERFORM,V?READ,PRSO
RTRUE
?CCL83: EQUAL? PRSA,V?EAT \?CCL88
PRINTR "This is the sort of behavior that most Japanese would find extremely uncivilized."
?CCL88: EQUAL? PRSA,V?HELP \?CCL90
PRINTR "It is said that the Lord helps those who help themselves."
?CCL90: EQUAL? PRSA,V?TELL \?CCL92
ICALL1 MENTAL-COLLAPSE
CALL1 END-QUOTE
RSTACK
?CCL92: EQUAL? PRSA,V?LISTEN \?CCL94
PRINTR "Yes?"
?CCL94: EQUAL? PRSA,V?WAKE \?CCL96
PRINT YOU-ARE
PRINT PERIOD
RTRUE
?CCL96: EQUAL? RARG,M-WINNER \?CCL98
EQUAL? PRSA,V?GIVE \?CCL98
EQUAL? PRSO,ME \?CCL103
PRINT WASTE-OF-TIME
RTRUE
?CCL103: EQUAL? PRSI,ME \FALSE
IN? PRSO,PLAYER \?CCL108
CALL1 PRE-TAKE
RSTACK
?CCL108: ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL98: EQUAL? PRSA,V?MOVE \?CCL110
CALL1 V-WALK-AROUND
RSTACK
?CCL110: EQUAL? PRSA,V?SEARCH \?CCL112
ICALL1 V-INVENTORY
RTRUE
?CCL112: EQUAL? PRSA,V?TAKE,V?ATTACK,V?HIT /?PRD118
EQUAL? PRSA,V?SWING,V?BOW \?PRD116
?PRD118: EQUAL? PRSO,ME /?CTR113
?PRD116: EQUAL? PRSA,V?ENTER,V?THROUGH,V?TAKE-OFF /?CTR113
EQUAL? PRSA,V?HOLD /?CTR113
EQUAL? PRSA,V?THROW \?CCL114
EQUAL? PRSI,ME \?CCL114
?CTR113: PRINT STR?217
CRLF
RTRUE
?CCL114: EQUAL? PRSA,V?KILL,V?MUNG,V?BURY /?CTR125
EQUAL? PRSA,V?SHOOT \?CCL126
?CTR125: PRINTR "Death is not to be entered into so lightly as that. Death is a matter of great seriousness."
?CCL126: EQUAL? PRSA,V?FOLLOW \?CCL130
PRINTR "You're getting ahead of yourself."
?CCL130: EQUAL? PRSA,V?THROW,V?THROW-OFF,V?DROP \FALSE
EQUAL? PRSO,ME \FALSE
ZERO? PRSI /?CCL137
ICALL PERFORM,V?BOARD,PRSI
RTRUE
?CCL137: PRINT STR?217
CRLF
RTRUE
.FUNCT GLOBAL-HERE-F:ANY:0:0
EQUAL? PRSA,V?LOOK,V?EXAMINE,V?LOOK-INSIDE \?CCL3
ICALL1 V-LOOK
RTRUE
?CCL3: EQUAL? PRSA,V?PUT \?CCL5
EQUAL? PRSI,GLOBAL-HERE \?CCL5
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL5: EQUAL? PRSA,V?WHERE,V?FIND \?CCL9
ICALL PERFORM,V?FIND,ME
RTRUE
?CCL9: EQUAL? PRSA,V?THROUGH,V?WALK-TO \?CCL11
CALL1 PAST-TENSE?
ZERO? STACK \?CCL11
CALL1 V-WALK-AROUND
RSTACK
?CCL11: EQUAL? PRSA,V?OPEN,V?CLOSE \?CCL15
PRINTR "You should try a door instead."
?CCL15: EQUAL? PRSA,V?DROP,V?LEAVE,V?EXIT \?CCL17
CALL2 DO-WALK,P?OUT
RSTACK
?CCL17: EQUAL? PRSA,V?WALK-AROUND \?CCL19
PRINTR "Walking around the room reveals nothing new. To move elsewhere, just type the desired direction."
?CCL19: EQUAL? PRSA,V?LAMP-ON \?CCL21
ICALL2 NEW-PRSO,LIGHT
RTRUE
?CCL21: EQUAL? PRSA,V?SEARCH \?CCL23
PRINTR "You don't find anything."
?CCL23: EQUAL? PRSA,V?WAVE \FALSE
CALL1 TELL-YUKS
RSTACK
.FUNCT GENERIC-WALL-F:ANY:2:2,R,F
RETURN WALL
.FUNCT WALL-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINT IT-LOOKS-LIKE
PRINTR "a wall."
?CCL3: EQUAL? PRSA,V?LOWER,V?MUNG \FALSE
PRINT YOU-CANT
PRINTR "pull down a wall that easily."
.FUNCT GROUND-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "You see nothing of interest."
?CCL3: EQUAL? PRSA,V?PUT \?CCL6
EQUAL? PRSI,GROUND \?CCL6
ICALL PERFORM,V?BURY,PRSO
RTRUE
?CCL6: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-ON,V?CLIMB-FOO /?CTR9
EQUAL? PRSA,V?BOARD,V?HIT \?CCL10
?CTR9: PRINT WASTE-OF-TIME
RTRUE
?CCL10: EQUAL? PRSA,V?LOOK-UNDER \FALSE
PRINTR "You can't look under the ground, it's solid!"
.FUNCT CORRIDOR-F:ANY:0:0
EQUAL? PRSA,V?THROUGH,V?WALK-TO \FALSE
CALL1 V-WALK-AROUND
RSTACK
.FUNCT GLOBAL-SLEEP-F:ANY:0:0
EQUAL? PRSA,V?WALK-TO,V?TAKE \?CCL3
ICALL2 NEW-VERB,V?SLEEP
RTRUE
?CCL3: EQUAL? PRSA,V?FIND \FALSE
PRINTR "Sleep anywhere."
.FUNCT SIGN-OF-CROSS-F:ANY:0:0
EQUAL? PRSA,V?MAKE /FALSE
PRINTR "There is no cross here."
.FUNCT PORTUGUESE-F:ANY:0:0
EQUAL? PRSA,V?SPEAK,V?LEARN,V?SAY \?PRD5
EQUAL? PRSO,PORTUGUESE /FALSE
?PRD5: EQUAL? PRSA,V?TEACH \?PRD8
EQUAL? PRSI,PORTUGUESE /FALSE
?PRD8: EQUAL? PRSA,V?ASK-ABOUT \?CCL3
EQUAL? PRSI,PORTUGUESE /FALSE
?CCL3: EQUAL? PRSA,V?BE,V?BE? /FALSE
CALL FIND-NATIONALITY,PORTUGUESE,PORTUGUESEBIT
RSTACK
.FUNCT PORTUGUESE?:ANY:0:0
EQUAL? PRSI,PORTUGUESE /TRUE
GET PARSE-RESULT,11
EQUAL? STACK,W?PORTUGUESE /TRUE
CALL PP?,W?FROM,PORTUGAL
RSTACK
.FUNCT SPANISH?:ANY:0:0
EQUAL? PRSI,SPANISH /TRUE
GET PARSE-RESULT,11
EQUAL? STACK,W?SPANISH /TRUE
CALL PP?,W?FROM,SPAIN
RSTACK
.FUNCT SPANISH-F:ANY:0:0
EQUAL? PRSA,V?SPEAK,V?LEARN,V?SAY \?PRD5
EQUAL? PRSO,SPANISH /FALSE
?PRD5: EQUAL? PRSA,V?TEACH \?PRD8
EQUAL? PRSI,SPANISH /FALSE
?PRD8: EQUAL? PRSA,V?ASK-ABOUT \?CCL3
EQUAL? PRSI,SPANISH /FALSE
?CCL3: EQUAL? PRSA,V?BE,V?BE? /FALSE
CALL FIND-NATIONALITY,SPANISH,SPANISHBIT
RSTACK
.FUNCT ENGLISH?:ANY:0:0
EQUAL? PRSI,ENGLISH /TRUE
GET PARSE-RESULT,11
EQUAL? STACK,W?ENGLISH,W?BRITISH,W?ENGLISHMAN /TRUE
GET PARSE-RESULT,11
EQUAL? STACK,W?BRITON /TRUE
CALL PP?,W?FROM,ENGLAND
RSTACK
.FUNCT ENGLISH-F:ANY:0:0
EQUAL? PRSA,V?SPEAK,V?LEARN,V?SAY \?PRD5
EQUAL? PRSO,ENGLISH /FALSE
?PRD5: EQUAL? PRSA,V?TEACH \?PRD8
EQUAL? PRSI,ENGLISH /FALSE
?PRD8: EQUAL? PRSA,V?ASK-ABOUT \?CCL3
EQUAL? PRSI,ENGLISH /FALSE
?CCL3: EQUAL? PRSA,V?BE,V?BE?,V?REPLY /FALSE
CALL FIND-NATIONALITY,ENGLISH,ENGLISHBIT
RSTACK
.FUNCT DUTCH?:ANY:0:0
EQUAL? PRSI,DUTCH /TRUE
GET PARSE-RESULT,11
EQUAL? STACK,W?DUTCH /TRUE
CALL PP?,W?FROM,HOLLAND
RSTACK
.FUNCT DUTCH-F:ANY:0:0
EQUAL? PRSA,V?SPEAK,V?LEARN,V?SAY \?PRD5
EQUAL? PRSO,DUTCH /FALSE
?PRD5: EQUAL? PRSA,V?TEACH \?PRD8
EQUAL? PRSI,DUTCH /FALSE
?PRD8: EQUAL? PRSA,V?ASK-ABOUT \?CCL3
EQUAL? PRSI,DUTCH /FALSE
?CCL3: EQUAL? PRSA,V?BE,V?BE? /FALSE
CALL FIND-NATIONALITY,DUTCH,DUTCHBIT
RSTACK
.FUNCT JAPAN-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? SCENE,S-ERASMUS \?CCL6
PRINTR "You aren't even sure you are near Japan."
?CCL6: PRINTR "What you see is a place unlike any you've seen before. It's like another world."
.FUNCT JAPANESE?:ANY:0:0
EQUAL? PRSI,JAPANESE /TRUE
GET PARSE-RESULT,11
EQUAL? STACK,W?JAPANESE /TRUE
CALL PP?,W?FROM,JAPAN
RSTACK
.FUNCT JAPANESE-F:ANY:0:0
EQUAL? PRSA,V?SPEAK,V?LEARN,V?SAY \?PRD5
EQUAL? PRSO,JAPANESE /FALSE
?PRD5: EQUAL? PRSA,V?TEACH \?PRD8
EQUAL? PRSI,JAPANESE /FALSE
?PRD8: EQUAL? PRSA,V?ASK-ABOUT \?CCL3
EQUAL? PRSI,JAPANESE /FALSE
?CCL3: EQUAL? PRSA,V?BE,V?BE? /FALSE
CALL FIND-NATIONALITY,JAPANESE,JAPANESEBIT
RSTACK
.FUNCT FIND-NATIONALITY:ANY:2:2,OBJ,BIT,F,BEST,PBEST
FIRST? HERE >F /?PRG2
?PRG2: ZERO? F /?REP3
FSET? F,BIT \?CND4
FSET? F,PLURAL \?CCL10
ZERO? PBEST \?CCL13
SET 'PBEST,F
JUMP ?CND4
?CCL13: SET 'PBEST,-1
JUMP ?CND4
?CCL10: ZERO? BEST \?CCL16
SET 'BEST,F
JUMP ?CND4
?CCL16: SET 'BEST,-1
?CND4: NEXT? F >F /?PRG2
JUMP ?PRG2
?REP3: GRTR? PBEST,0 \?CCL20
ICALL REDIRECT,OBJ,PBEST
RTRUE
?CCL20: GRTR? BEST,0 \?CCL22
ICALL REDIRECT,OBJ,BEST
RTRUE
?CCL22: LESS? PBEST,0 /?CTR23
LESS? BEST,0 \?CCL24
?CTR23: PRINT YOU-HAVE-TO
PRINT STR?125
PRINTI "which "
ICALL2 DPRINT,OBJ
PRINTR " you mean."
?CCL24: PRINTR "It's hard to tell whom you mean; please be more specific."
.FUNCT GLOBAL-FOOD-F:ANY:0:0,F
CALL FIND-IN,HERE,FOODBIT >F
ZERO? F \?PEN4
CALL FIND-IN,WINNER,FOODBIT >F
?PEN4: ZERO? F /?CCL3
ICALL REDIRECT,GLOBAL-FOOD,F
RTRUE
?CCL3: EQUAL? PRSA,V?EXAMINE,V?EAT \FALSE
PRINTR "There's no food here."
.FUNCT GLOBAL-WATER-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE,V?DRINK \FALSE
EQUAL? HERE,BATH-HOUSE \?CCL6
ICALL PERFORM,PRSA,BATHTUB
RTRUE
?CCL6: EQUAL? HERE,YOKOSE-BATH-HOUSE \?CCL8
ICALL PERFORM,PRSA,YOKOSE-BATHTUB
RTRUE
?CCL8: PRINTR "There's no water here."
.FUNCT GLOBAL-HATAMOTO-F:ANY:0:0
EQUAL? PRSA,V?WHO,V?WHAT \FALSE
PRINTI "A "
ICALL2 PRINTUNDER,STR?83
PRINTR " is literally a 'banner-man,' which formerly meant one who carried his lord's banner in battle. Now it means a vassal who is a personal retainer, a highly trusted member of the lord's staff."
.FUNCT WIND-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE,V?FIND,V?RUB \?CCL3
EQUAL? SCENE,S-ERASMUS \?CCL6
FSET? HERE,OUTSIDE \?CCL6
PRINTI "The storm is out of the east, humping up the waves and tide. The "
ICALL2 PRINTUNDER,STR?7
PRINTI " is "
EQUAL? SHIP-DIRECTION,P?WEST \?CCL11
PRINTR "running before the wind."
?CCL11: EQUAL? SHIP-DIRECTION,P?SW,P?NW \?CCL13
PRINTR "fighting to make way south and west."
?CCL13: EQUAL? SHIP-DIRECTION,P?SOUTH,P?NORTH \FALSE
PRINTR "broadside to the gale."
?CCL6: EQUAL? SCENE,S-VOYAGE \?CCL17
EQUAL? HERE,GALLEY,MAIN-DECK,IN-THE-SEA \?CCL20
PRINTR "The gale is blowing with merciless fury."
?CCL20: PRINTR "Here in the lee of the cliffs, the wind is calmer."
?CCL17: FSET? HERE,OUTSIDE \?CCL22
PRINTR "The wind is calm here."
?CCL22: PRINTR "You're inside. There's no wind here."
?CCL3: EQUAL? PRSA,V?LISTEN \?CCL24
EQUAL? SCENE,S-ERASMUS,S-VOYAGE \FALSE
PRINTR "The wind whistles and groans."
?CCL24: EQUAL? PRSA,V?THROUGH,V?TURN-TOWARD \FALSE
EQUAL? SCENE,S-ERASMUS,S-VOYAGE \?CCL32
FSET? HERE,OUTSIDE \?CCL32
PRINTR "Facing into the storm helps to keep you awake."
?CCL32: PRINTR "There's no wind here."
.FUNCT HELP-F:ANY:0:0
EQUAL? PRSA,V?ASK-FOR \?CCL3
PRINTR "No one seems able, or perhaps, willing to help."
?CCL3: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "There doesn't seem to be anyone around in a position to help you."
.FUNCT PRINT-SPACES:ANY:1:1,CNT
?PRG1: DLESS? 'CNT,0 /TRUE
PRINTC 32
JUMP ?PRG1
.FUNCT TRINITY-HOUSE-F:ANY:0:0
EQUAL? PRSA,V?WHAT \FALSE
PRINTR "Trinity House in London is where you learned piloting from your old teacher, Alban Caradoc."
.FUNCT LIZARD-F:ANY:0:0
EQUAL? PRSA,V?WHAT,V?WHERE \FALSE
PRINTR "The Lizard is the southernmost point of Cornwall, a major landmark for pilots."
.FUNCT ROPE-F:ANY:0:0
EQUAL? PRSA,V?FIND \FALSE
EQUAL? SCENE,S-VOYAGE \FALSE
PRINTR "You don't see any near at hand."
.FUNCT GENERIC-ROPE-F:ANY:2:2,R,F
GETP YABU-KIMONO,P?COUNT
ZERO? STACK /?CCL3
RETURN YABU-KIMONO
?CCL3: RETURN ROPE
.FUNCT GENERIC-SAMURAI-F:ANY:2:2,R,F,CT,OBJ,V,BEST
GET R,1 >CT
ADD R,8 >V
GET R,0
GRTR? CT,STACK /FALSE
ZERO? OPPONENT /?CCL5
INTBL? OPPONENT,V,CT \?CCL5
RETURN OPPONENT
?CCL5: IN? LOSING-SAMURAI,HERE \?CCL9
RETURN LOSING-SAMURAI
?CCL9: IN? OMI-SAMURAI,LADDER \?CCL11
RETURN OMI-SAMURAI
?CCL11: EQUAL? SCENE,S-NINJA \?PRG13
RETURN GUARDS
?PRG13: DLESS? 'CT,0 \?CCL17
RETURN BEST
?CCL17: GET V,0 >OBJ
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK /?CCL19
ZERO? BEST \FALSE
FSET? OBJ,PLURAL \?PRG13
SET 'BEST,OBJ
JUMP ?PRG13
?CCL19: ADD V,2 >V
JUMP ?PRG13
.FUNCT COURSE-F:ANY:0:0
EQUAL? SCENE,S-ERASMUS,S-VOYAGE /?CCL3
PRINTR "What course?"
?CCL3: EQUAL? PRSA,V?EXAMINE,V?READ \?CCL5
EQUAL? SCENE,S-ERASMUS \?CCL8
ICALL REDIRECT,COURSE,COMPASS
RTRUE
?CCL8: PRINTI "It's hard to tell directions in this storm, but the galley's course is toward "
EQUAL? SHIP-COURSE,P?STARBOARD \?CCL11
PRINTR "the bay."
?CCL11: PRINTR "the open sea."
?CCL5: EQUAL? PRSA,V?HOLD \FALSE
EQUAL? HERE,BRIDGE-OF-ERASMUS \?CCL16
ICALL PERFORM,V?STRAIGHTEN,WHEEL
RTRUE
?CCL16: EQUAL? HERE,GALLEY \?CCL18
ICALL PERFORM,V?STRAIGHTEN,GALLEY-WHEEL
RTRUE
?CCL18: PRINTI "You'd have to be on the "
EQUAL? SCENE,S-ERASMUS \?CCL21
PRINTI "bridge"
JUMP ?CND19
?CCL21: PRINTI "quarterdeck"
?CND19: PRINTR " to do that."
.FUNCT ETA-F:ANY:0:0
EQUAL? PRSA,V?WHAT,V?WHO \FALSE
PRINTI "The "
ICALL2 PRINTUNDER,STR?218
PRINTR " are the lowest class of society, those who are butchers and tanners, executioners and undertakers."
.FUNCT ORDERS-F:ANY:0:0
EQUAL? PRSA,V?FOLLOW,V?DO?,V?COMMIT \FALSE
EQUAL? SCENE,S-PIT \?CCL6
ZERO? ANSWER-HAI? /FALSE
FSET? CROOCQ,SCOREBIT \FALSE
ICALL2 PERFORM,V?LIE-DOWN
RTRUE
?CCL6: EQUAL? SCENE,S-TORANAGA \?CCL13
FSET? BLACKTHORNE,SITTING /?CCL16
ICALL2 PERFORM,V?KNEEL
RTRUE
?CCL16: FSET? DAIS,RMUNGBIT \FALSE
FSET? DAIS,SCOREBIT \FALSE
ICALL PERFORM,V?WALK-TO,ALVITO
RTRUE
?CCL13: PRINTR "You'll have to be more specific."
.FUNCT GENERIC-SHIP-F:ANY:2:2,R,F
RETURN LG-ERASMUS
.FUNCT GENERIC-CREWMEN-F:ANY:2:2,R,F
RETURN LG-CREWMEN
.FUNCT GENERIC-CAPTAIN-F:ANY:2:2,R,F
EQUAL? SCENE,S-ERASMUS,S-ANJIRO,S-YABU /?CTR2
EQUAL? SCENE,S-PIT \?CCL3
?CTR2: RETURN SPILLBERGEN
?CCL3: EQUAL? SCENE,S-NINJA \?CCL7
RETURN GRAY-CAPTAIN
?CCL7: EQUAL? SCENE,S-DEPARTURE \FALSE
FSET? YAMAZAKI,DEAD \FALSE
RETURN KOJIMA
.FUNCT GENERIC-SEA-F:ANY:2:2,R,F
RETURN LG-SEA
.FUNCT GENERIC-GALLEY-F:ANY:2:2,R,F
EQUAL? SCENE,S-YABU,S-ANJIRO,S-ERASMUS \?CCL3
RETURN LG-ERASMUS
?CCL3: EQUAL? SCENE,S-RODRIGUES \?CCL5
RETURN SLAVER
?CCL5: RETURN LG-GALLEY
.FUNCT GENERIC-DECK-F:ANY:2:2,R,F
RETURN DECK
.FUNCT GENERIC-CRAZY-F:ANY:2:2,R,F
EQUAL? SCENE,S-PRISON \?CCL3
RETURN MADMAN
?CCL3: RETURN CRAZY
.FUNCT GENERIC-LITTER-F:ANY:2:2,R,F
EQUAL? HERE,WOODS /?CTR2
IN? WINNER,MARIKOS-LITTER \?CCL3
?CTR2: RETURN MARIKOS-LITTER
?CCL3: IN? YABU-PALANQUIN,HERE \FALSE
RETURN YABU-PALANQUIN
.FUNCT LG-VILLAGE-F:ANY:0:0
EQUAL? SCENE,S-ANJIRO \?CCL3
EQUAL? PRSA,V?THROUGH \?CCL6
EQUAL? HERE,GARDEN,MURA-HOUSE \?CCL9
CALL2 DO-WALK,P?EAST
RSTACK
?CCL9: EQUAL? HERE,ANJIRO-WATERFRONT \?CCL11
CALL2 DO-WALK,P?NORTH
RSTACK
?CCL11: PRINTR "The village is right here."
?CCL6: EQUAL? PRSA,V?EXIT \FALSE
EQUAL? HERE,GARDEN,MURA-HOUSE \?CCL16
PRINTR "You can't tell from here how to leave the village."
?CCL16: EQUAL? HERE,ANJIRO,ANJIRO-WATERFRONT \FALSE
CALL2 DO-WALK,P?NORTH
RSTACK
?CCL3: EQUAL? SCENE,S-VOYAGE \FALSE
PRINTR "The village is too far away, considering your condition."
.FUNCT LG-BAY-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
EQUAL? SCENE,S-VOYAGE \?CCL6
PRINTR "The bay looks like an island of relative calm."
?CCL6: PRINTR "The harbor is a small bay protected by reefs almost out of sight to the east."
?CCL3: EQUAL? PRSA,V?PUT,V?THROW \FALSE
EQUAL? PRSI,LG-BAY \FALSE
ICALL PERFORM,PRSA,PRSO,LG-SEA
RTRUE
.FUNCT LG-LAND-F:ANY:0:0,TRIES
EQUAL? SCENE,S-ANJIRO,S-RODRIGUES \?CCL3
EQUAL? PRSA,V?WALK-TO \?CCL3
CALL2 DO-WALK,P?WEST
RSTACK
?CCL3: EQUAL? SCENE,S-VOYAGE \?CCL7
EQUAL? PRSA,V?POINT \?CCL7
ZERO? GALLEY-IN-BAY? /?CCL7
FSET? SKIFF,RMUNGBIT \?CCL13
GETP SKIFF,P?COUNT >TRIES
ADD TRIES,1
PUTP SKIFF,P?COUNT,STACK
ZERO? TRIES \?CCL16
PRINTI "Hiro-matsu is here, with Yabu beside him. They eventually realize you are proposing to go ashore, and Hiro-matsu responds harshly. "
CALL1 HIRO-MATSU-REFUSES
RSTACK
?CCL16: EQUAL? TRIES,1 \FALSE
CALL1 YABU-BOARDS-SKIFF
RSTACK
?CCL13: PRINT STR?219
CRLF
RTRUE
?CCL7: EQUAL? PRSA,V?WALK-TO \?CCL20
IN? WINNER,SKIFF \?CCL23
CALL2 DO-WALK,P?EAST
RSTACK
?CCL23: IN? WINNER,SMALL-BOAT \?CCL25
CALL2 DO-WALK,P?WEST
RSTACK
?CCL25: EQUAL? SCENE,S-ERASMUS,S-VOYAGE \FALSE
PRINTR "Easier said than done."
?CCL20: EQUAL? PRSA,V?RUB,V?CLIMB-ON \FALSE
EQUAL? SCENE,S-ERASMUS /?CTR31
EQUAL? SCENE,S-VOYAGE \?CCL32
EQUAL? HERE,IN-THE-SEA,GALLEY,MAIN-DECK \?CCL32
?CTR31: PRINTR "It's too far away."
?CCL32: PRINTR "It feels like you would expect land to feel."
.FUNCT LG-SEA-F:ANY:0:1,RARG
EQUAL? RARG,FALSE-VALUE \FALSE
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL6
EQUAL? SCENE,S-ERASMUS \?CCL9
PRINTR "The sea is a maze of mountainous waves and razor-spined reef-tops."
?CCL9: EQUAL? SCENE,S-VOYAGE \?CCL11
PRINTI "The gale-driven surf is thrown high in the air, hurled by the wind against the rocky shore."
EQUAL? HERE,GALLEY,MAIN-DECK,IN-THE-SEA /?CND12
IN? YABU,HERE /?CND12
PRINTR " You can see that the tide is coming in."
?CND12: CRLF
RTRUE
?CCL11: PRINTR "It's full of water."
?CCL6: EQUAL? PRSA,V?POINT \?CCL17
IN? YABU,HERE \FALSE
PRINTR "Yabu looks at the sea, and you can tell he hates and perhaps fears it."
?CCL17: EQUAL? PRSA,V?BOARD,V?THROUGH,V?SWIM /?CTR21
EQUAL? PRSA,V?LEAP,V?DIVE /?CTR21
EQUAL? PRSA,V?THROW \?CCL22
EQUAL? PRSO,ME \?CCL22
?CTR21: EQUAL? HERE,ON-DECK,BRIDGE-OF-ERASMUS \?CCL30
EQUAL? SCENE,S-ANJIRO,S-RODRIGUES \?CCL33
PRINTR "Wouldn't it be safer to just climb back into the boat?"
?CCL33: ICALL PERFORM,V?LEAP,LG-ERASMUS
RTRUE
?CCL30: EQUAL? HERE,ANJIRO-WATERFRONT \?CCL35
ICALL2 DO-WALK,P?EAST
RTRUE
?CCL35: EQUAL? HERE,GALLEY,MAIN-DECK \?CCL37
CALL2 GOTO,IN-THE-SEA
RSTACK
?CCL37: EQUAL? HERE,MAIN-DECK-2 \?CCL39
CALL2 JIGS-UP?,J-PILING
ZERO? STACK /TRUE
CALL2 JIGS-UP,STR?220
RSTACK
?CCL39: EQUAL? HERE,IN-THE-SEA \?CCL44
IN? WINNER,SKIFF \?CCL47
PRINTR "As you try to leap into the sea, the samurai grab you. They hold you tightly as Yabu scowls."
?CCL47: PRINT STR?181
CRLF
RTRUE
?CCL44: IN? WINNER,SMALL-BOAT \?CCL49
PRINTR "Why do that when you're in a nice boat?"
?CCL49: PRINTR "You wouldn't like it. It's wet."
?CCL22: EQUAL? PRSA,V?PUT,V?THROW \?CCL51
EQUAL? PRSI,LG-SEA \?CCL51
CALL2 HELD?,PRSO
ZERO? STACK /FALSE
REMOVE PRSO
ICALL1 CTHE-PRINT-PRSO
PRINTI " drop"
CALL2 PLURAL?,PRSO
ZERO? STACK \?CND57
PRINTC 115
?CND57: PRINTI " into the water and "
EQUAL? PRSO,OARS,BOAT-OAR,LIFE-RING \?CCL61
PRINTI "float"
JUMP ?CND59
?CCL61: PRINTI "sink"
?CND59: CALL2 PLURAL?,PRSO
ZERO? STACK \?CND62
PRINTC 115
?CND62: PRINTR " out of sight."
?CCL51: EQUAL? PRSA,V?DRINK \FALSE
PRINTR "Seawater will drive you mad, as every sailor knows."
.ENDSEG
.ENDI