.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