Most Recent Version

master
historicalsource 2019-04-16 09:37:36 -04:00
parent 7edfae6d56
commit f0866b3565
121 changed files with 84420 additions and 1176 deletions

BIN
COMPILED/a5.zip Normal file

Binary file not shown.

2
a5-nsplit Normal file
View File

@ -0,0 +1,2 @@
#
zsplit -a 2 -d 5 -h hints -v ~curpix/a5apple.d ~curpix/a5.apple.1 -n shogun -p 107 -e 23 -0 a5 270

2
a5-split Normal file
View File

@ -0,0 +1,2 @@
#
zsplit -a 2 -d 5 -h hints -g ~curpix/a5-apple.g -p 108 -e 23 -0 -u ~curpix/a5.apple.G a5 270

BIN
a5.apple.1 Normal file

Binary file not shown.

BIN
a5.bwmac.1 Normal file

Binary file not shown.

24
a5.chart Normal file
View File

@ -0,0 +1,24 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
2/01 21 330248 47851 402 234 1374
2/17 281 333896 47105 404 230 1378
4/27 309 343088 47118 405 239 1390
5/10 311 344224 47118 405 239 1390
6/06 313 344760 47123 405 239 1390
6/08 313 344768 47123 405 239 1390
6/08 313 344848 47143 405 239 1390
6/08 313 344416 47143 405 239 1390
6/12 314 344472 47143 405 239 1390
6/13 315 344472 47143 405 239 1390
6/15 317 344568 47143 405 239 1390
6/21 318 344736 47143 405 239 1390
6/23 319 344792 47145 405 239 1390
6/26 320 344792 47145 405 239 1390
6/26 320 344792 47145 405 239 1390
6/26 320 344792 47145 405 239 1390
6/26 320 344808 47145 405 239 1390
6/27 320 344808 47145 405 239 1390
6/28 321 344840 47145 405 239 1390
6/28 321 344840 47145 405 239 1390
6/29 321 344888 47145 405 239 1390
6/29 321 344872 47145 405 239 1390
7/06 322 344816 47115 405 239 1389

51
a5.errors Normal file
View File

@ -0,0 +1,51 @@
zap of 6/13/89 15:17.
Release: 322
0 Inserting a5.zap.
64 Inserting a5freq.zap.
682 Inserting a5dat.zap.
47115 Inserting a5pur.zap.
50299 Inserting pstack.zap.
50338 Inserting pmem.zap.
50434 Inserting parser.zap.
55191 Inserting find.zap.
57481 Inserting reds.zap.
64308 Inserting breds.zap.
66592 Inserting top.zap.
68265 Inserting misc.zap.
71050 Inserting soft.zap.
73318 Inserting menu.zap.
74238 Inserting status.zap.
75268 Inserting pic.zap.
76444 Inserting desc.zap.
77528 Inserting record.zap.
77590 Inserting verbs.zap.
98896 Inserting prare.zap.
103212 Inserting qverbs.zap.
105755 Inserting globals.zap.
111295 Inserting cast.zap.
130954 Inserting erasmus.zap.
154745 Inserting anjiro.zap.
188510 Inserting voyage.zap.
206074 Inserting audience.zap.
230836 Inserting osaka.zap.
248313 Inserting maze.zap.
253570 Inserting quake.zap.
267537 Inserting mariko.zap.
279735 Inserting attack.zap.
306118 Inserting clues.zap.
308574 Inserting a5str.zap.
Unreferenced table: PT?124
Unreferenced table: PT?1326
Unreferenced table: STRBEG
Unreferenced table: PT?1426
Unreferenced string: STR?75
Data from 48839 to 50304 not in segment 0.
Lexical buffer space allocated: 1472368
Max lexical space allocated at any one time: 48012
Object buffer space allocated: 352000
Source bytes read: 1353859
Object bytes written: 345088
Preload: 47115; 405 objects; 239 globals; 1389 words.
Used 5:32
Elapsed time 7:09

2
a5.lowcore Normal file
View File

@ -0,0 +1,2 @@
2

BIN
a5.mac.1 Normal file

Binary file not shown.

206
a5.nspl Normal file
View File

@ -0,0 +1,206 @@
Wed May 10 17:59:13 EDT 1989
zsplit of 5/1/89 10:27.
2 disks active
5 disks allowed
Hint segment is called HINTS
Picture information from /home/development/curpix/a5apple.d; pictures from /home/development/curpix/a5.apple.1.
Output files will be named shogun.
Preload size 107
Extra preload 23
Segment 0 pictures go with segment 0.
Splitting a5.seg...
Segments: 25
Pages: 673
Generated global picture directory: 1 pages.
Segment 0: 0
Pages 0-94 98-134 136-254 601-608 672
260 pages, 20547 picture bytes
Segment 1: STARTUP
Pages 135
1 pages, 3884 picture bytes
Segment 2: SEKIGAHARA
Pages 595-596
2 pages, 2240 picture bytes
Segment 3: YOKOHAMA
Pages 370 545 581-586 609-610
10 pages, 6445 picture bytes
Segment 4: ANJIRO
Pages 260 276 278-279 290 301-325 624-627
34 pages, 22988 picture bytes
Segment 5: YABU
Pages 260-266 275-276 295-301 309-310 325-335 627-628
31 pages, 8 picture bytes
Segment 6: ERASMUS
Pages 255-301 627-628 630-631 633 640-642
55 pages, 19243 picture bytes
Segment 7: AUDIENCE
Pages 370 401-414 614-616 633-634
20 pages, 30115 picture bytes
Segment 8: PRISON
Pages 414-439 566 614-615 624 629-630 633-636
36 pages, 8 picture bytes
Segment 9: VOYAGE
Pages 260 367-401 630-633
40 pages, 42839 picture bytes
Segment 10: DEPARTURE
Pages 370 451-454 456-460 462-463 529-536 617-619
23 pages, 8 picture bytes
Segment 11: SEPPUKU
Pages 370 451-460 462-463 536-545 616-618
26 pages, 7729 picture bytes
Segment 12: OCHIBA
Pages 370 521-529 619-620
12 pages, 8 picture bytes
Segment 13: AFTERMATH
Pages 370 586-595 609
12 pages, 8 picture bytes
Segment 14: ESCAPE
Pages 370 449-483 536-538 616-618 633 636-639
47 pages, 26199 picture bytes
Segment 15: MAZE
Pages 450 460-461 483-494 624 636 639-640
19 pages, 9006 picture bytes
Segment 16: MARIKO
Pages 370 439-449 631 636
14 pages, 8 picture bytes
Segment 17: NINJA
Pages 370 401-406 545-581 609-616
52 pages, 13399 picture bytes
Segment 18: YOKOSE
Pages 358 370 509-521 620-624
20 pages, 10375 picture bytes
Segment 19: PIT
Pages 260-266 275-276 295-301 321-322 335-359 623-624 626-630
50 pages, 6494 picture bytes
Segment 20: RODRIGUES
Pages 260 276 278-279 282-283 290 303-310 322-325 359-367 626-627 630-631
32 pages, 8 picture bytes
Segment 21: QUAKE
Pages 370 494-509 623-624
19 pages, 21569 picture bytes
Segment 22: HINTS
Pages 94-98 136 138 144 148 213 596-601 642-672
47 pages, 1195 picture bytes
Segment 23: SOFT-KEYS
Pages 642
1 pages, 8 picture bytes
Segment 24: RECORD
Pages
0 pages, 0 picture bytes
Object bytes read in: 344576
Putting pages 0 - 92 and 98 - 111 in preload.
Putting pages 112 - 134 in extra preload.
Adding segment 0 to disk 2; total size now 153.
Adding hint segment HINTS to disk 1; total size now 153.
Adding segment 0 pictures to 2; total size now 194.
Adding global picture directory to 2; total size now 195.
Adding unused segment STARTUP to disk 3; total size now 9.
Adding unused segment ERASMUS (adjacent to STARTUP) to disk 3; total size now 102.
Adding unused segment ANJIRO (adjacent to ERASMUS) to disk 3; total size now 174.
Adding unused segment YABU (adjacent to ANJIRO) to disk 3; total size now 184.
Adding unused segment PIT (adjacent to YABU) to disk 3; total size now 222.
Adding unused segment RODRIGUES (adjacent to PIT) to disk 3; total size now 230.
Adding unused segment YOKOSE to disk 3; total size now 268.
Adding unused segment SOFT-KEYS to disk 3; total size now 268.
Adding unused segment RECORD to disk 3; total size now 268.
Adding unused segment VOYAGE to disk 4; total size now 124.
Adding unused segment AUDIENCE (adjacent to VOYAGE) to disk 4; total size now 200.
Adding unused segment PRISON (adjacent to AUDIENCE) to disk 4; total size now 230.
Adding unused segment MARIKO (adjacent to PRISON) to disk 4; total size now 240.
Adding unused segment YOKOHAMA to disk 4; total size now 262.
Adding unused segment SEKIGAHARA to disk 4; total size now 268.
Moving 8 pages to 2.
10 (136) left on 3.
10 (100) left on 4.
270 (0) left on 5.
67 left on 2.
Adding unused segment OCHIBA to disk 3; total size now 269.
Adding unused segment AFTERMATH to disk 4; total size now 268.
Adding unused segment ESCAPE to disk 5; total size now 97.
Adding unused segment MAZE (adjacent to ESCAPE) to disk 5; total size now 126.
Adding unused segment NINJA to disk 5; total size now 202.
Adding unused segment SEPPUKU (adjacent to NINJA) to disk 5; total size now 224.
Adding unused segment DEPARTURE (adjacent to SEPPUKU) to disk 5; total size now 232.
Moving 3 pages to 2.
4 (142) left on 3.
2 (108) left on 4.
41 (118) left on 5.
64 left on 2.
Moving 16 pages to 2.
4 (142) left on 3.
18 (92) left on 4.
57 (102) left on 5.
48 left on 2.
Moving page 450 from 5 (58 (101) left) to 2 (47 left).
Adding unused segment QUAKE to disk 5; total size now 270.
Moving 2 pages to 2.
6 (140) left on 3.
18 (92) left on 4.
2 (115) left on 5.
45 left on 2.
Split successful.
Map size: 1 page; 186 words.
Making disk map...
Disk 1: Pages 0 to 92 starting on disk page 1.
Disk 1: Pages 98 to 111 starting on disk page 94.
Disk 1: Pages 94 to 97 starting on disk page 108.
Disk 1: Pages 136 to 136 starting on disk page 112.
Disk 1: Pages 138 to 138 starting on disk page 113.
Disk 1: Pages 144 to 144 starting on disk page 114.
Disk 1: Pages 148 to 148 starting on disk page 115.
Disk 1: Pages 213 to 213 starting on disk page 116.
Disk 1: Pages 596 to 601 starting on disk page 117.
Disk 1: Pages 642 to 672 starting on disk page 123.
Disk 2: Pages 112 to 134 starting on disk page 0.
Disk 2: Pages 93 to 94 starting on disk page 23.
Disk 2: Pages 136 to 254 starting on disk page 25.
Disk 2: Pages 260 to 260 starting on disk page 144.
Disk 2: Pages 367 to 367 starting on disk page 145.
Disk 2: Pages 370 to 370 starting on disk page 146.
Disk 2: Pages 401 to 406 starting on disk page 147.
Disk 2: Pages 449 to 450 starting on disk page 153.
Disk 2: Pages 509 to 509 starting on disk page 155.
Disk 2: Pages 529 to 529 starting on disk page 156.
Disk 2: Pages 545 to 545 starting on disk page 157.
Disk 2: Pages 566 to 566 starting on disk page 158.
Disk 2: Pages 581 to 581 starting on disk page 159.
Disk 2: Pages 601 to 610 starting on disk page 160.
Disk 2: Pages 614 to 616 starting on disk page 170.
Disk 2: Pages 619 to 619 starting on disk page 173.
Disk 2: Pages 623 to 624 starting on disk page 174.
Disk 2: Pages 629 to 631 starting on disk page 176.
Disk 2: Pages 633 to 633 starting on disk page 179.
Disk 2: Pages 636 to 636 starting on disk page 180.
Disk 2: Pages 640 to 640 starting on disk page 181.
Disk 2: Pages 672 to 672 starting on disk page 182.
Disk 3: Pages 135 to 135 starting on disk page 0.
Disk 3: Pages 255 to 259 starting on disk page 1.
Disk 3: Pages 261 to 366 starting on disk page 6.
Disk 3: Pages 510 to 528 starting on disk page 112.
Disk 3: Pages 620 to 622 starting on disk page 131.
Disk 3: Pages 625 to 628 starting on disk page 134.
Disk 3: Pages 641 to 642 starting on disk page 138.
Disk 4: Pages 368 to 369 starting on disk page 0.
Disk 4: Pages 371 to 400 starting on disk page 2.
Disk 4: Pages 407 to 448 starting on disk page 32.
Disk 4: Pages 582 to 596 starting on disk page 74.
Disk 4: Pages 632 to 632 starting on disk page 89.
Disk 4: Pages 634 to 635 starting on disk page 90.
Disk 5: Pages 451 to 508 starting on disk page 0.
Disk 5: Pages 530 to 544 starting on disk page 58.
Disk 5: Pages 546 to 565 starting on disk page 73.
Disk 5: Pages 567 to 580 starting on disk page 93.
Disk 5: Pages 611 to 613 starting on disk page 107.
Disk 5: Pages 617 to 618 starting on disk page 110.
Disk 5: Pages 637 to 639 starting on disk page 112.
52 blocks (312 bytes).
Writing disk 1.
Added 3 pages of pictures to file. Total size 157.
Writing disk 2.
Added 41 pages of pictures to file. Total size 225.
Writing disk 3.
Added 124 pages of pictures to file. Total size 264.
Writing disk 4.
Added 160 pages of pictures to file. Total size 252.
Writing disk 5.
Added 153 pages of pictures to file. Total size 268.

1473
a5.old-chart Normal file

File diff suppressed because it is too large Load Diff

934
a5.record Normal file
View File

@ -0,0 +1,934 @@
ZILCH of 6/30/89 14:41
Combined ZIL Compiler Ver 2.0 (MIM)
-----------------------------------
Input file: /HOME/DEVELOPMENT/SHOGUN/A5.ZIL
[YZIP instructions]
[Object numbers assigned rooms first]
[Zaps always go to current directory]
First segment STARTUP
Loading /HOME/DEVELOPMENT/SHOGUN/DEFS.ZIL and compiling it.
XFLOAD /HOME/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PARSER.SHOGUN.
Loading /HOME/DEVELOPMENT/INTERLOGIC/ZILLIB/CONSTANTS.ZIL and compiling it.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/PSTACK.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/PMEM.ZABSTR.
Start segment 0
End segment 0
Loading /HOME/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PDEFS.ZIL and compiling it.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/PARSER.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/FIND.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/REDS.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/BREDS.ZABSTR.
Start segment 0
End segment 0
Loading /HOME/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/GRAM.ZIL and compiling it.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/TOP.ZABSTR.
Start segment 0
End segment 0
Loading /HOME/DEVELOPMENT/SHOGUN/PICDEF.ZIL and compiling it.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/MISC.ZABSTR.
Start segment 0
End segment 0
Start segment STARTUP
End segment STARTUP
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/SOFT.ZABSTR.
Start segment 0
End segment 0
Start segment SOFT-KEYS
End segment SOFT-KEYS
Loading abstract /HOME/DEVELOPMENT/SHOGUN/MENU.ZABSTR.
Start segment 0
End segment 0
Loading /HOME/DEVELOPMENT/SHOGUN/STATUS.ZIL and compiling it.
Start segment 0
Start segment HINTS
Compiling routine: SETUP-TEXT-AND-STATUS
End segments 0 HINTS
Start segment 0
Compiling routine: INIT-STATUS-LINE
Compiling routine: UPDATE-STATUS-LINE
Compiling routine: ERASE-ALL-BUT
Compiling routine: INTERLUDE-STATUS-LINE
Compiling routine: RJNUM
End segment 0
Abstracting STATUS to /HOME/DEVELOPMENT/SHOGUN/STATUS.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/PIC.ZABSTR.
Start segment 0
End segment 0
Start segment STARTUP
End segment STARTUP
Start segment 0
Start segment HINTS
End segments 0 HINTS
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/DESC.ZABSTR.
Start segment 0
End segment 0
Loading /HOME/DEVELOPMENT/SHOGUN/SYNTAX.ZIL and compiling it.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/RECORD.ZABSTR.
Start segment RECORD
End segment RECORD
Loading /HOME/DEVELOPMENT/SHOGUN/VERBS.ZIL and compiling it.
Start segment 0
Compiling routine: YOULL-HAVE-TO
Compiling routine: TO-A-PRSO?
Compiling routine: CANT-GO
Compiling routine: NOT-HOLDING
Compiling routine: ITS-EMPTY
Compiling routine: ITS-ALREADY-X
Compiling routine: ALREADY-OPEN
Compiling routine: ALREADY-CLOSED
Compiling routine: WITH-PRSI?
Compiling routine: TELL-OPEN-CLOSED
Compiling routine: OPEN-CLOSED
Compiling routine: THE-PRSO
Compiling routine: A-PRSO
Compiling routine: A-PRSO?
Compiling routine: THE-PRSI
Compiling routine: A-PRSI?
Compiling routine: YOU-CANT-X-THAT
Compiling routine: YOU-CANT-X-PRSO
Compiling routine: UNINTERESTED
Compiling routine: PLURAL?
Compiling routine: CANT-REACH-THAT
Compiling routine: V-VERBOSE
Compiling routine: V-BRIEF
Compiling routine: V-SUPER-BRIEF
Compiling routine: V-DIAGNOSE
Compiling routine: V-INVENTORY
Compiling routine: V-QUIT
Compiling routine: V-CHOOSE
Compiling routine: V-RESTART
Compiling routine: FINISH
Compiling routine: FINISH-MENU-F
Compiling routine: V-RESTORE
Compiling routine: V-SAVE
Compiling routine: V-UNDO
Compiling routine: V-SCORE
Compiling routine: V-SCRIPT
Compiling routine: V-UNSCRIPT
Compiling routine: V-VERSION
Compiling routine: PCENTER
Compiling routine: V-CREDITS
Compiling routine: V-$VERIFY
Compiling routine: V-WAKE
Compiling routine: V-ANSWER
Compiling routine: PRE-ASK-ABOUT
Compiling routine: V-ASK-ABOUT
Compiling routine: FIND-IN
Compiling routine: PRE-ASK-FOR
Compiling routine: V-ASK-FOR
Compiling routine: PRE-ATTACK
Compiling routine: V-ATTACK
Compiling routine: V-HIT
Compiling routine: V-BITE
Compiling routine: PRE-BOARD
Compiling routine: YOU-ARE-IN
Compiling routine: V-BOARD
Compiling routine: V-BURN
Compiling routine: V-CHASTISE
Compiling routine: V-CLIMB-DOWN
Compiling routine: V-CLIMB-FOO
Compiling routine: V-CLIMB-ON
Compiling routine: V-CLIMB-OVER
Compiling routine: V-CLIMB-UP
Compiling routine: V-CLOSE
Compiling routine: CLOSE-A-DOOR
Compiling routine: IN-DARK?
Compiling routine: OKAY-THE-PRSO-IS-NOW
Compiling routine: V-COMPARE-MANY
Compiling routine: V-WASTE-OF-TIME
Compiling routine: V-COMPARE
Compiling routine: V-CROSS
Compiling routine: V-CURSE
Compiling routine: V-CUT
Compiling routine: V-DIG
Compiling routine: V-DISEMBARK
Compiling routine: V-DRINK
Compiling routine: V-DRINK-FROM
Compiling routine: PRE-DROP
Compiling routine: V-DROP
Compiling routine: V-EAT
Compiling routine: V-ENTER
Compiling routine: PRE-EXAMINE
Compiling routine: V-EXAMINE
Compiling routine: PRSO-NOTHING-SPECIAL
Compiling routine: V-EXIT
Compiling routine: V-FILL
Compiling routine: V-FIND
Compiling routine: V-FOLLOW
Compiling routine: PRE-GIVE
Compiling routine: V-GIVE
Compiling routine: V-GOODBYE
Compiling routine: V-HELLO
Compiling routine: V-HELP
Compiling routine: V-HIDE
Compiling routine: V-HIDE-BEHIND
Compiling routine: V-HIDE-UNDER
Compiling routine: V-HIDE-FROM
Compiling routine: V-KICK
Compiling routine: V-KILL
Compiling routine: IKILL
Compiling routine: NOT-TRAINED
Compiling routine: V-KNOCK
Compiling routine: V-KISS
Compiling routine: V-LAMP-OFF
Compiling routine: V-LAMP-ON
Compiling routine: V-LEAN-ON
Compiling routine: V-LEAP
Compiling routine: V-LEAVE
Compiling routine: V-LISTEN
Compiling routine: CANT-X-WITH-PRSI
Compiling routine: V-LOCK
Compiling routine: NO-LOCK
Compiling routine: V-INTRODUCE
Compiling routine: V-AFTER
Compiling routine: TIME-PASSES
Compiling routine: NEXT-SCENE
Compiling routine: FAILED-SCENE
Compiling routine: NEW-SCENE
Compiling routine: I-NEW-SCENE
Compiling routine: SCORE-HAVE
Compiling routine: SCORE-MAX
Compiling routine: CONTINUE-MENU-F
Compiling routine: V-FIRST-LOOK
Compiling routine: V-LOOK
Compiling routine: V-LOOK-BEHIND
Compiling routine: V-LOOK-DOWN
Compiling routine: WHAT-CONTENTS
Compiling routine: V-LOOK-INSIDE
Compiling routine: V-LOOK-ON
Compiling routine: V-LOOK-UNDER
Compiling routine: V-LOWER
Compiling routine: V-MELT
Compiling routine: V-MOVE
Compiling routine: MOTION-VERB?
Compiling routine: HOSTILE-VERB?
Compiling routine: JAPANESE-VERB?
Compiling routine: ACT-CRAZY?
Compiling routine: ABSTRACT-VERB?
Compiling routine: PASSIVE-VERB?
Compiling routine: V-MUNG
Compiling routine: PRE-OPEN
Compiling routine: V-OPEN
Compiling routine: V-PICK
Compiling routine: V-PLUG
Compiling routine: V-POINT
Compiling routine: V-POUR-FROM
Compiling routine: PRE-POUR
Compiling routine: V-POUR
Compiling routine: EMPTY-ALL
Compiling routine: V-PUSH
Compiling routine: V-PUSH-TO
Compiling routine: PRE-PUT
Compiling routine: TAKE-OUT-FIRST
Compiling routine: V-PUT
Compiling routine: PRSO-TOO-BIG?
Compiling routine: INSPECTION-REVEALS
Compiling routine: V-PUT-BEHIND
Compiling routine: V-PUT-ON
Compiling routine: NO-GOOD-SURFACE
Compiling routine: V-PUT-UNDER
Compiling routine: V-RAISE
Compiling routine: V-REACH-IN
Compiling routine: PRE-READ
Compiling routine: HOW-DO-YOU
Compiling routine: V-READ
Compiling routine: V-REPLY
Compiling routine: PRE-SRUB
Compiling routine: V-SRUB
Compiling routine: V-RUB
Compiling routine: V-SAY
Compiling routine: HOW-TO-USE-TELL
Compiling routine: V-SEARCH
Compiling routine: V-SEND
Compiling routine: V-SEND-UNDER
Compiling routine: PRE-SGIVE
Compiling routine: V-SGIVE
Compiling routine: V-SHAKE
Compiling routine: THAT/THEM
Compiling routine: V-SHARPEN
Compiling routine: V-SHOOT-WITH
Compiling routine: PRE-SHOOT
Compiling routine: V-SHOOT
Compiling routine: V-SHOW
Compiling routine: V-SKIP
Compiling routine: V-SLEEP
Compiling routine: LIKE-A-PRSO
Compiling routine: V-SMELL
Compiling routine: PRE-SSHOW
Compiling routine: V-SSHOW
Compiling routine: V-SWING
Compiling routine: V-SWIM
Compiling routine: V-SWIM-TO
Compiling routine: PRE-TAKE
Compiling routine: V-TAKE
Compiling routine: PUT-ON
Compiling routine: TAKE-OFF
Compiling routine: V-TAKE-OFF
Compiling routine: V-HOLD
Compiling routine: V-TELL
Compiling routine: V-THANK
Compiling routine: V-DOMO
Compiling routine: V-DOZO
Compiling routine: PRE-THROUGH
Compiling routine: V-THROUGH
Compiling routine: FIND-DOOR
Compiling routine: PRE-THROW
Compiling routine: V-THROW
Compiling routine: V-THROW-OFF
Compiling routine: V-TIE
Compiling routine: V-TIE-UP
Compiling routine: V-TIME
Compiling routine: V-TORTURE
Compiling routine: NO-EFFECT
Compiling routine: V-TURN
Compiling routine: V-TURN-OVER
Compiling routine: V-TURN-AROUND
Compiling routine: V-UNLOCK
Compiling routine: V-UNTIE
Compiling routine: V-WALK
Compiling routine: V-WALK-AROUND
Compiling routine: V-WALK-TO
Compiling routine: NEXT-ROOM?
Compiling routine: V-WAIT
Compiling routine: V-WAIT-FOR
Compiling routine: V-WAVE
Compiling routine: YOU-ARENT-HOLDING
Compiling routine: V-WAVE-AT
Compiling routine: V-DRESS
Compiling routine: V-WEAR
Compiling routine: V-YAWN
Compiling routine: V-YELL-AT
Compiling routine: V-YELL
Compiling routine: V-LAUGH
Compiling routine: ITAKE
Compiling routine: V-NOTIFY
Compiling routine: SCORE-OBJECT
Compiling routine: SCORE-OBJECT?
Compiling routine: IDROP
Compiling routine: HAVE-TO-TAKE-OFF
Compiling routine: CCOUNT
Compiling routine: WEIGHT
Compiling routine: GOTO
Compiling routine: I-STUPID-MOVE
Compiling routine: JIGS-UP?
Compiling routine: JIGS-UP
Compiling routine: MOVE-ALL
Compiling routine: THIS-IS-IT
Compiling routine: INTRINSIC?
Compiling routine: ACCESSIBLE?
Compiling routine: VISIBLE?
Compiling routine: HELD?
Compiling routine: SEE-INSIDE?
Compiling routine: GLOBAL-IN?
Compiling routine: DO-WALK
Compiling routine: HACK-HACK
Compiling routine: TELL-YUKS
Compiling routine: PRE-PRY
Compiling routine: V-PRY
Compiling routine: V-BURY
Compiling routine: V-YES
Compiling routine: V-NO
Compiling routine: V-BUY
Compiling routine: PRE-SSELL
Compiling routine: V-SSELL
Compiling routine: V-SELL
Compiling routine: PRE-TELL-ABOUT
Compiling routine: V-TELL-ABOUT
Compiling routine: DIFFICULTY
Compiling routine: V-TELL-ME-ABOUT
Compiling routine: V-TRADE
Compiling routine: V-ERASE
Compiling routine: V-ADMIRE
Compiling routine: V-BARGAIN
Compiling routine: V-REPAIR
Compiling routine: V-LOOK-UP
Compiling routine: V-PLUG-IN
Compiling routine: V-UNPLUG
Compiling routine: V-WALK-UNDER
Compiling routine: V-SCARE
Compiling routine: V-WEDGE
Compiling routine: PRE-SWEDGE
Compiling routine: V-SWEDGE
Compiling routine: V-PUT-BETWEEN
Compiling routine: V-TASTE
Compiling routine: V-DIE
Compiling routine: V-COOK
Compiling routine: V-DRIVE-ON
Compiling routine: V-DRIVE-TO
Compiling routine: V-STEP-ON
Compiling routine: V-STOP
Compiling routine: V-RELEASE
Compiling routine: V-PUSH-DOWN
Compiling routine: V-PUSH-UP
Compiling routine: V-PUSH-OUT
Compiling routine: PUSH-FOO
Compiling routine: V-PRAY
Compiling routine: PRE-SPUT-ON
Compiling routine: V-SPUT-ON
Compiling routine: V-LOVE
Compiling routine: V-THOU
Compiling routine: V-WRITE
Compiling routine: V-RING
Compiling routine: V-BOW
Compiling routine: V-SORRY
Compiling routine: V-PISS
Compiling routine: V-LOAD
Compiling routine: V-STRAIGHTEN
Compiling routine: V-LAUNCH
Compiling routine: V-BLESS
Compiling routine: V-MAKE
Compiling routine: V-ACT
Compiling routine: V-DANCE
Compiling routine: V-TEAR
Compiling routine: V-SHIP
Compiling routine: V-SORT
Compiling routine: V-ROW
Compiling routine: V-TAKE-OVER
Compiling routine: V-SHUT-UP
Compiling routine: V-USE
Compiling routine: V-STEER-BY
Compiling routine: FORMAL-SCENE?
Compiling routine: V-STRIP
Compiling routine: V-TRANSLATE
Compiling routine: SETUP-ANSWER
Compiling routine: I-SETUP-ANSWER
Compiling routine: V-SMILE
Compiling routine: V-WINK
Compiling routine: V-CLEAR
Compiling routine: V-TURN-TOWARD
Compiling routine: V-TURN-AWAY
Compiling routine: V-REACH-FOR
Compiling routine: V-HUG
Compiling routine: V-SOOTHE
Compiling routine: V-HAI
Compiling routine: V-IYE
Compiling routine: V-HOLD-ON
Compiling routine: V-RINSE
Compiling routine: V-BATHE
Compiling routine: V-REPLACE
Compiling routine: V-ESCAPE
Compiling routine: V-PLEAD
Compiling routine: V-COMMIT
Compiling routine: V-ACCUSE
Compiling routine: V-SPIT
Compiling routine: V-TEKI
Compiling routine: GET-INTQUOTE
Compiling routine: PRE-SSPEAK
Compiling routine: V-SSPEAK
Compiling routine: V-SPEAK
Compiling routine: V-AIM
Compiling routine: V-EXPLODE
End segment 0
Start segment HINTS
End segment HINTS
Start segment 0
Compiling routine: V-HINT
Compiling routine: V-HINTS-OFF
Compiling routine: V-PICK-UP
Compiling routine: V-COME-FROM
Compiling routine: PAST-TENSE?
Compiling routine: PRE-COME-TO-FROM
Compiling routine: V-COME-TO-FROM
Compiling routine: V-PARRY
Compiling routine: V-TEACH
Compiling routine: V-LEARN
Compiling routine: V-LOOK-OUT
Compiling routine: B-STAND
Compiling routine: B-SITTING?
Compiling routine: B-SIT
Compiling routine: B-KNEELING?
Compiling routine: B-KNEEL
Compiling routine: B-LYING?
Compiling routine: B-LIE-DOWN
Compiling routine: V-STAND
Compiling routine: V-SIT
Compiling routine: V-KNEEL
Compiling routine: V-KNEEL-ON
Compiling routine: V-LIE-DOWN
Compiling routine: V-LIE
Compiling routine: V-AVOID
Compiling routine: V-FUCK
Compiling routine: V-KNOW
Compiling routine: V-TRAIN
Compiling routine: V-BETRAY
Compiling routine: V-LET-IN
Compiling routine: V-PUT-AWAY
Compiling routine: V-DODGE
Compiling routine: V-WAKARIMASU
Compiling routine: V-MIZU
Compiling routine: V-QUIET
Compiling routine: V-COLOR
Compiling routine: MAC-II?
Compiling routine: DO-COLOR
Compiling routine: PICK-COLOR
Compiling routine: COLOR-OFFSET
Compiling routine: COLOR-MENU-F
Compiling routine: V-SHRUG
Compiling routine: V-SING
Compiling routine: V-DISTRACT
Compiling routine: V-JOIN
Compiling routine: OUTSIDE-TUB?
Compiling routine: V-DRAW
Compiling routine: V-DIVE
Compiling routine: V-BABBLE
Compiling routine: V-TRIP
Compiling routine: V-NIHON-GO-GA
Compiling routine: V-GENKI-DESU
Compiling routine: V-GOMEN-NASAI
Compiling routine: V-ISOGI
Compiling routine: V-KONBANWA
Compiling routine: V-KONNICHI-WA
Compiling routine: V-KINJIRU
Compiling routine: V-DRY
Compiling routine: V-WARN
Compiling routine: V-PULL-BEHIND
Compiling routine: V-TOMO
Compiling routine: V-NEH
End segment 0
Abstracting VERBS to /HOME/DEVELOPMENT/SHOGUN/VERBS.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/PRARE.ZABSTR.
Start segment 0
End segment 0
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/QVERBS.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/GLOBALS.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/CAST.ZABSTR.
Start segment 0
End segment 0
Loading abstract /HOME/DEVELOPMENT/SHOGUN/ERASMUS.ZABSTR.
Start segment ERASMUS
Start segment ANJIRO
Start segment RODRIGUES
End segments ANJIRO ERASMUS RODRIGUES
Start segment ERASMUS
Start segment RODRIGUES
End segments ERASMUS RODRIGUES
Start segment ERASMUS
Start segment RODRIGUES
End segments ERASMUS RODRIGUES
Start segment ERASMUS
Start segment RODRIGUES
End segments ERASMUS RODRIGUES
Start segment ERASMUS
Start segment ANJIRO
Start segment RODRIGUES
End segments ANJIRO ERASMUS RODRIGUES
Start segment ERASMUS
Start segment YABU
Start segment PIT
End segments ERASMUS PIT YABU
Loading abstract /HOME/DEVELOPMENT/SHOGUN/ANJIRO.ZABSTR.
Start segment ANJIRO
Start segment RODRIGUES
End segments ANJIRO RODRIGUES
Start segment ANJIRO
Start segment RODRIGUES
End segments ANJIRO RODRIGUES
Start segment ANJIRO
Start segment RODRIGUES
End segments ANJIRO RODRIGUES
Start segment ANJIRO
Start segment YABU
Start segment RODRIGUES
End segments ANJIRO RODRIGUES YABU
Start segment ANJIRO
Start segment PIT
End segments ANJIRO PIT
Start segment ANJIRO
Start segment RODRIGUES
End segments ANJIRO RODRIGUES
Start segment YABU
End segment YABU
Start segment PIT
End segment PIT
Start segment RODRIGUES
End segment RODRIGUES
Loading abstract /HOME/DEVELOPMENT/SHOGUN/VOYAGE.ZABSTR.
Start segment VOYAGE
End segment VOYAGE
Loading abstract /HOME/DEVELOPMENT/SHOGUN/AUDIENCE.ZABSTR.
Start segment AUDIENCE
Start segment NINJA
End segments AUDIENCE NINJA
Start segment AUDIENCE
End segment AUDIENCE
Start segment PRISON
End segment PRISON
Start segment MARIKO
End segment MARIKO
Loading abstract /HOME/DEVELOPMENT/SHOGUN/OSAKA.ZABSTR.
Start segment ESCAPE
Start segment MAZE
End segments ESCAPE MAZE
Start segment ESCAPE
Start segment SEPPUKU
End segments ESCAPE SEPPUKU
Start segment ESCAPE
Start segment MAZE
End segments ESCAPE MAZE
Start segment ESCAPE
Start segment DEPARTURE
Start segment SEPPUKU
End segments DEPARTURE ESCAPE SEPPUKU
Start segment ESCAPE
End segment ESCAPE
Loading abstract /HOME/DEVELOPMENT/SHOGUN/MAZE.ZABSTR.
Start segment MAZE
End segment MAZE
Loading abstract /HOME/DEVELOPMENT/SHOGUN/QUAKE.ZABSTR.
Start segment QUAKE
End segment QUAKE
Start segment YOKOSE
End segment YOKOSE
Loading abstract /HOME/DEVELOPMENT/SHOGUN/MARIKO.ZABSTR.
Start segment OCHIBA
End segment OCHIBA
Start segment DEPARTURE
End segment DEPARTURE
Start segment SEPPUKU
Start segment ESCAPE
End segments ESCAPE SEPPUKU
Start segment SEPPUKU
Start segment ESCAPE
End segments ESCAPE SEPPUKU
Start segment SEPPUKU
End segment SEPPUKU
Loading abstract /HOME/DEVELOPMENT/SHOGUN/ATTACK.ZABSTR.
Start segment NINJA
Start segment YOKOHAMA
End segments NINJA YOKOHAMA
Start segment NINJA
Start segment PRISON
End segments NINJA PRISON
Start segment NINJA
End segment NINJA
Start segment YOKOHAMA
End segment YOKOHAMA
Start segment AFTERMATH
End segment AFTERMATH
Start segment SEKIGAHARA
End segment SEKIGAHARA
XFLOAD /HOME/DEVELOPMENT/INTERLOGIC/ZILLIB/CLUES.XFLOAD.
Loading abstract /HOME/DEVELOPMENT/SHOGUN/CLUES.ZABSTR.
Start segment HINTS
End segment HINTS
Distinguished segment HINTS
Start segment HINTS
End segment HINTS
Loading /HOME/DEVELOPMENT/SHOGUN/HINTS.ZIL and compiling it.
Start segment HINTS
End segment HINTS
** Warning: Never defined - RLANDBIT
** Warning: Never defined - PERSON
** Warning: Never defined - NOTHEBIT
Warnings: 3
** Note: OBJECT has no properties: INTQUOTE
** Note: OBJECT has no properties: GLOBAL-OBJECTS
Vocabulary: 1389
Verbs: 252
Real globals: 237
AFTERMATH-QUESTION P-MULT
ALVITO-TRANSLATES? P-NOT-HERE
AMBUSH-CNT P-NUMBER
AMBUSH-PROB P-OFLAG
ANSWER-HAI? P-OLEN
ATTACK-CNT P-PRSA-WORD
AUDIENCE-CNT P-PRSI
AVOID-CALTROPS? P-PRSO
BATH-CNT P-RESPONDED
BATH-FLAG P-RUNNING
BEEN-IN-GARDEN? P-THEM-OBJECT
BELOW-DECKS-BACKGROUND P-WALK-DIR
BG-COLOR P-WON
BORDER-HEIGHT P-WORD-NUMBER
BOTTOM-HINT-NUM P-WORDS-AGAIN
C-INTS PARSE-SENTENCE-ACTIVATION
C-TABLE PARSER-RESULT
CAPTURE-CNT PERIOD
CLOCK-HAND PIC-SIDE
CLOCK-WAIT PISS-FLAG
CLOCKER-RUNNING PIT-CNT
COLLAPSE-CNT PLAYER
COLOR-NOTE PMAX
CREW-ON-DECK? PMEM-STORE-POINTER
CROOCQ-CNT PMEM-STORE-WORDS
CURRENT-BORDER PMEM-WORDS-USED
CURRENT-REDUCTION POINTEE
D-BIT PRISON-CNT
DELAY-CNT PRSA
DELAYING-FIGHT? PRSI
DEMO-VERSION? PRSI-NP
DEPARTURE-CNT PRSO
DESCRIBED-ROOM? PRSO-NP
DESCRIPTIONS PRSQ
DIGIT-WIDTH PRSS
DODGED? QCONTEXT
DONE-DEFINE? QUAKE-CNT
DOOR-CNT QUAKE?
ERROR-PRIORITY RANKINGS
ERROR-STRING REEF-FLAG
FAILED REEF-X
FG-COLOR REEF-Y
FLEN RESTORED?
FOLLOW-FLAG RIBBON-CNT
FONT-X RODRIGUES-CNT
FONT-Y RODRIGUES-QUESTION
FUMBLE-NUMBER ROPE-LOWERED?
GALLEY-IN-BAY? RUSE-CNT
GAME-OVER? SCENE
GET-HINT-ROUTINE SCORE
GOOD-TRICK SCORE-START
GOT-GUNWALE? SEARCH-FLAGS
H-CHAPT-NUM SEARCHED?
H-OR-USE-MOUSE-WID SEBASTIO-CNT
H-QUEST-NUM SEEN-FALCON?
HEALTH-TELL SEEN-MAD-SCENE?
HENDRIK-CNT SEEN-TORANAGA?
HERE SEPPUKU-CNT
HINTS-OFF SHERE
I-DONT-THINK-THAT SHIP-COURSE
ISHIDO-CNT SHIP-DIRECTION
ISHIDO-DISTRACTED? SHIP-X
IT-IS-ALREADY SHIP-Y
IT-LOOKS-LIKE SIZE
JERK-CNT SKIFF-CNT
KIRI-CNT SPACE-WIDTH
KNOCKOUT-CNT STABLE-CNT
LAST-PSEUDO-LOC STATIONARY-CNT
LEAVE-CNT STATIONARY?
LEN STORM-DELAY?
LIT STUPID-MOVE
LITTER-CNT TEXT-MARGIN
LMAX THERE-IS-NOTHING
LOAD-ALLOWED THERES-NOTHING-TO
LOAD-PISTOL-CNT TIRED-TIME
MACHINE TLEXV
MADNESS-CNT TOO-DARK
MARIKO-IMPATIENT TORANAGA-HELD-FLAG
MARIKO-PLAN? VERBOSITY
MARIKO-WON-FLAG VINCK-CNT
MAZE-HEIGHT VINCK-PICKED?
MAZE-MAP WASTE-OF-TIME
MAZE-WIDTH WHEEL-SPINNING?
MEET-CNT WIDTH
MONO-X WINNER
MOUSE-LOC-X WRONG-ANSWER?
MOUSE-LOC-Y X
MOVES XAMBUSH
MUST-CHOOSE? XFISH
NEW-SCENE-NUMBER XGOAL
NEXT-PIC-CRCNT XOFFSET
NEXT-PIC-WIDTH XSTART
NINJA-ATTACKING-CUL-DE-SAC? Y
NINJA-COWED-CNT YABU-BETRAYED?
NO-ROOM YABU-CNT
NOTHING-HAPPENS YABU-HEARD?
NOTIFY-FLAG YABU-QUESTION
NOW-PRSI YABU-RESIGNED?
OBJ-SWAP YABU-WARNED?
OCHIBA-CNT YAEMON-BORED?
OCHIBA-QUESTION YAEMON-CNT
OHERE YAMAZAKI-ATTACK
OKAY YAMAZAKI-ATTACKS
OMI-CNT YAMBUSH
OMI-QUESTION YFISH
OMOVES YGOAL
OPPONENT YOFFSET
OPRSO YOSHI-CHATS
ORPHAN-ANSWER YOSHI-GOAL
OSCORE YOSHI-TABLE
OTLEXV YOSHI-WAITS?
P-CAN-UNDO YOU-ARE
P-CONT YOU-ARE-NOW
P-DIRECTION YOU-CANT
P-HER-OBJECT YOU-FIND-NOTHING
P-HIM-OBJECT YOU-HAVE
P-IT-OBJECT YOU-HAVE-TO
P-LAST-OPEN YSTART
P-LEN
Objects: 405
ACHIKO HIRO-MATSU PRIVATE-QUARTERS-2
AIR HOLLAND PROPHECY
ALVITO HOUSE PSEUDO-OBJECT
AMBUSH-SITE IN-THE-SEA QUEEN
AMBUSHERS INNER-CORRIDOR QUILL
ANCHOR INNER-DOOR QUILT
ANJIRO INTADJ RANDOM-GRAYS
ANJIRO-HARBOR INTDIR REEF
ANJIRO-WATERFRONT INTNUM RIBBON
APPLE INTPP ROBE
ARCHERS INTQUOTE ROCK
AROUND-HEADLAND IRON-BAR ROCKY-SHORE
AT-ERASMUS IRON-DOOR RODRIGUES
AT-PORTCULLIS ISHIDO RONIN
AUDIENCE-CHAMBER ISHIDO-SWORD ROOMS
BALCONY IT ROPE
BALCONY-DOOR JAPAN ROPER
BANDIT-LEADER JAPANESE ROSARY
BANDITS JESUITS RUTTER
BARRELS KEY SAFETY-LINE
BATH-HOUSE KIKU SALAMON
BATHTUB KIMONO SAMURAI-GUARDS
BELL KIRIS-LITTER SANDALS
BELOW-DECKS KIRITSUBO SANE
BLACK-SHIP KIYAMA SATAN
BLACKTHORNE KOJIMA SAZUKO
BLACKTHORNE-QUARTERS LADDER SEA-CHAIR
BOAT-OAR LARGE-KNIFE SEA-CHEST
BOLTS LASHING SEALED-SCROLL
BOOTS LATIN SEARCH-PARTY
BOTTOM-CATCH LATITUDE SEAWATER
BRIDGE-OF-ERASMUS LEADER SEBASTIO
BROWNS LEDGE SEBASTIO-CRUCIFIX
BULLDOG LEDGE-1 SEBASTIO-HENCHMEN
BUNK LEDGE-2 SECOND-GRAY
BUNTARO LEDGE-3 SECRET-DRAWER
CALTROPS LEDGE-4 SECRET-REDOUBT
CAMELLIA LG-BAY SECRET-REDOUBT-DOOR
CAPTAINS-CABIN LG-BUNK SECRET-ROOM
CAPTAINS-CABIN-DOOR LG-CASTLE SECRET-ROOM-DOOR
CAPTAINS-DESK LG-CLIFF SECRET-RUTTER
CAULDRON LG-CREWMEN SEKIGAHARA
CEILING LG-ERASMUS SERVANTS
CELLAR-DOOR LG-GALLEY SERVANTS-QUARTERS
CELLARS LG-HOLE SHOGUN
CHIMMOKO LG-LAND SHOJI-1
CHOPSTICKS LG-LINE SHOJI-2
CHURCH LG-MEN SHOJI-3
CITY LG-NINJA SHOJI-4
CLIFF-PATH LG-PATH SHOJI-5
CLOTHES LG-RODRIGUES SHOJI-6
COJONES LG-SEA SHORT-STRAW
COMPASS LG-SHIP SIDE-FISSURE
CORRIDOR LG-SMALL-BOAT SIGN-OF-CROSS
CORTEGE LG-VILLAGE SKIFF
COURSE LG-WOMEN SLAVER
COURTYARD LG-YABU SLIPPERS
CRAZY LG-YOSHINAKA SMALL-BOAT
CREWMEN LIFE-RING SMALL-BRIDGE
CROOCQ LIGHT SMALL-KNIFE
CROWD LILY-POND SMOKE-BOMB
CUP LIZARD SOCKS
CURTAINS LOCAL-GLOBALS SONK
DAGGER LOINCLOTH SOUTH-SHOJI
DAIS LONG-STRAW SOUTH-WALL
DECK LOSING-SAMURAI SPAIN
DEEP-WOODS MADMAN SPANISH
DESK MAETSUKKER SPILLBERGEN
DICTIONARY MAIN-DECK STABLE
DIRT MAIN-DECK-2 STAIRS
DOMINGO MAIN-FISSURE STOMACH
DOOR-CRACK MAPLE-GLADE STRAIT-OF-MAGELLAN
DUTCH MARIKO STRAW
EARTHQUAKE MARIKOS-LITTER STREAM
EAST-WALL MATES SUICIDE
ENGLAND MATES-CABIN SUMIYORI
ENGLISH MATES-CABIN-DOOR SWORDS
ERASMUS-ANCHOR MAZE TAIKO
ETA ME TEA-HOUSE
ETSU MESSENGER TEKI
EYES MOUTH THEM
FALCON MURA THIS
FEET MURA-CRUCIFIX THUG
FINGERS MURA-DOOR TOP-CATCH
FIRE-BOMB MURA-HOUSE TORANAGA
FISH-GATE MURA-ROPE TORANAGA-IN-DRAG
FLAGON NINJA TORANAGAS-GUARDS
FLOWER NINJA-LEADER TOWEL
FOCSLE-DOOR NOISE TRAITOR
FOOD NORTH-SHOJI TRAPDOOR
FORECOURT NORTH-WALL TRAY
FORESAILS NOT-HERE-OBJECT TRINITY-HOUSE
FORMAL-GARDEN OAR VAN-NEKK
FORTIFIED-GATE OARS VASE
GALLEY OARSMEN VEIL
GALLEY-WHEEL OCHIBA VILLAGE-SQUARE
GANGWAY OCHIBA-ROOM VILLAGERS
GARDEN OFFAL VINCK
GARDEN-GATE OFFICIAL VINCKS-STRAW
GATEWAY OMI VOYAGE
GENERIC-OBJECTS OMI-SAMURAI WALL
GINSEL ON-BRIDGE WAREHOUSE
GLOBAL-BARBARIAN ON-DECK WATERFALL
GLOBAL-DAIMYO ONNA WEST-WALL
GLOBAL-FOOD ORDERS WHARF
GLOBAL-HATAMOTO OUTER-CORRIDOR WHAT
GLOBAL-HERE OUTER-DOOR WHEEL
GLOBAL-OBJECTS OUTER-ROOM WIND
GLOBAL-RUTTERS OUTSIDE-PRISON WOODS
GLOBAL-SAMURAI PACIFIC WORLD
GLOBAL-SLEEP PARCHMENT YABU
GLOBAL-WATER PARTY-KIMONO YABU-HEAD
GOD PASSAGE-DOOR YABU-KIMONO
GORODA PASSAGEWAY YABU-PALANQUIN
GRAY-CAPTAIN PATHS YABU-SWORDS
GRAY-LEADER PEBBLED-BEACH YAEMON
GRAYS PEDESTAL YAMAZAKI
GREEN-RIBBON PIETERZOON YOKOHAMA
GROUND PILOTS-CABIN YOKOSE-BATH-HOUSE
GRUEL PILOTS-CABIN-DOOR YOKOSE-BATHTUB
GUARDS PIRATE YOKOSE-CORRIDOR-1
GUNWALE PISTOL YOKOSE-CORRIDOR-2
GYOKO PIT YOKOSE-CORRIDOR-3
HANASE-MASEN PLAN YOKOSE-FIRST-FLOOR
HANDS PLANTS YOKOSE-GUEST-1
HEAD PLATEAU YOKOSE-GUEST-2
HEADS POPE YOKOSE-SPA-1
HELP PORTCULLIS YOKOSE-SPA-2
HENCHMAN-BODY PORTUGAL YOKOSE-SPA-3
HENCHMAN-HEAD PORTUGUESE YOKOSE-SPA-4
HENDRIK POWDER-HORN YOKOSE-SPA-5
HER PRISON YOKOSE-SPA-6
HERETIC PRISON-COURTYARD YOSHINAKA
HIGH-WALL PRISON-GATE YOU
HIM PRIVATE-QUARTERS ZATAKI
Properties: 40
P?ACTION P?COUNT P?GLOBAL P?NW P?SDESC P?TEXT
P?ADJACENT P?DESCFCN P?HEALTH P?OUT P?SE P?THINGS
P?ADJECTIVE P?DOWN P?IN P?OWNER P?SIZE P?UP
P?AFT P?EAST P?LDESC P?PICTURE P?SOUTH P?VALUE
P?AFTER P?FDESC P?MOUSE P?PORT P?STARBOARD P?WEST
P?CAPACITY P?FORE P?NE P?SCENE P?SW
P?CONTFCN P?GENERIC P?NORTH P?SCORE P?SYNONYM
Flags: 47
ABSTRACTBIT ENGLISHBIT NOABIT RLANDBIT TOUCHBIT
AN FEMALE NOTHEBIT RMUNGBIT TRANSBIT
BODY-PART FOODBIT ONBIT SCOREBIT TRYTAKEBIT
CANT-HOLD FURNITURE OPENABLE SEARCHBIT VEHBIT
CONTBIT INVISIBLE OPENBIT SITTING WEAPONBIT
DEAD JAPANESEBIT OUTSIDE SPANISHBIT WEARABLE
DONT-ALL LIGHTBIT PERSON SURFACEBIT WEARBIT
DONT-IT LOCKABLE PLURAL TAKEBIT
DOORBIT LOCKED PORTUGUESEBIT THE
DUTCHBIT NDESCBIT READBIT TOOLBIT

BIN
a5.seg Normal file

Binary file not shown.

9309
a5.seginfo Normal file

File diff suppressed because it is too large Load Diff

BIN
a5.syms Normal file

Binary file not shown.

123
a5.zap Normal file
View File

@ -0,0 +1,123 @@
.NEW 6
; CHARACTER SET DEFINITIONS
.CHRSET 0,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,114,115,116,117,119,121,84,11,46,44,34
.CHRSET 1,106,113,118,120,122,65,66,67,69,71,72,73,74,76,77,78,79,80,82,83,87,89,63,33,39,45
.CHRSET 2,32,32,68,70,75,81,85,86,88,90,49,50,51,91,93,58,59,61,42,40,41,35,125,62,47,9
.PICFILE "a5.bwmac.1","bwmac",480,300,480,300
.PICFILE "a5.mac.1","mac ii",640,400,320,200
.OPTIONS 0,1 ; scripting off; ask for picture file
; Low core locations
%ZVERSION:: .BYTE 6
.BYTE FLAGS
%ZORKID:: ZORKID
%ENDLOD:: ENDLOD
%START:: GO
%VOCAB:: VOCAB
%OBJECT:: OBJECT
%GLOBAL:: GLOBAL
%PURBOT:: IMPURE
%FLAGS:: .WORD 120
%SERIAL:: .WORD 0
%SERI1:: .WORD 0
%SERI2:: .WORD 0
%FWORDS:: WORDS
%PLENTH:: .WORD 0
%PCHKSM:: .WORD 0
%INTWRD:: .WORD 0
%SCRWRD:: .WORD 0
%HWRD:: .WORD 0
%VWRD:: .WORD 0
%FWRD:: .WORD 0
%FOFF:: FOFF
%SOFF:: SOFF
%CLRWRD:: .WORD 0
%TCHAR:: TCHARS
%TWID:: .WORD 0
%CRFUNC:: .WORD 0
%CHRSET:: CHRSET
%EXTAB:: LOWCORE-TABLE
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.DEFSEG "AFTERMATH",0,"SEKIGAHARA","YOKOHAMA"
.DEFSEG "ANJIRO",0,"YABU","ERASMUS"
.DEFSEG "AUDIENCE",0,"PRISON","VOYAGE"
.DEFSEG "DEPARTURE",0,"SEPPUKU","OCHIBA"
.DEFSEG "ERASMUS",0,"ANJIRO","STARTUP"
.DEFSEG "ESCAPE",0,"MAZE","MARIKO"
.DEFSEG "MARIKO",0,"ESCAPE","PRISON"
.DEFSEG "MAZE",0,"ESCAPE"
.DEFSEG "NINJA",0,"YOKOHAMA","SEPPUKU"
.DEFSEG "OCHIBA",0,"DEPARTURE","YOKOSE"
.DEFSEG "PIT",0,"RODRIGUES","YABU"
.DEFSEG "PRISON",0,"MARIKO","AUDIENCE"
.DEFSEG "QUAKE",0,"YOKOSE"
.DEFSEG "RODRIGUES",0,"VOYAGE","PIT"
.DEFSEG "SEKIGAHARA",0,"AFTERMATH"
.DEFSEG "SEPPUKU",0,"NINJA","DEPARTURE"
.DEFSEG "STARTUP",1,"ERASMUS"
.DEFSEG "VOYAGE",0,"AUDIENCE","RODRIGUES"
.DEFSEG "YABU",0,"PIT","ANJIRO"
.DEFSEG "YOKOHAMA",0,"AFTERMATH","NINJA"
.DEFSEG "YOKOSE",0,"OCHIBA","QUAKE"
.INSERT "A5FREQ" ;Frequent word table
.INSERT "A5DAT" ; Data file
.INSERT "A5PUR"
.INSERT "PSTACK"
.INSERT "PMEM"
.INSERT "PARSER"
.INSERT "FIND"
.INSERT "REDS"
.INSERT "BREDS"
.INSERT "TOP"
.INSERT "MISC"
.INSERT "SOFT"
.INSERT "MENU"
.INSERT "STATUS"
.INSERT "PIC"
.INSERT "DESC"
.INSERT "RECORD"
.INSERT "VERBS"
.INSERT "PRARE"
.INSERT "QVERBS"
.INSERT "GLOBALS"
.INSERT "CAST"
.INSERT "ERASMUS"
.INSERT "ANJIRO"
.INSERT "VOYAGE"
.INSERT "AUDIENCE"
.INSERT "OSAKA"
.INSERT "MAZE"
.INSERT "QUAKE"
.INSERT "MARIKO"
.INSERT "ATTACK"
.INSERT "CLUES"
.INSERT "A5STR"
.END

48
a5.zil
View File

@ -14,31 +14,35 @@
<ORDER-OBJECTS? ROOMS-FIRST>
<NEVER-ZAP-TO-SOURCE-DIRECTORY?>
<ASK-FOR-PICTURE-FILE?>
<PICFILE "A5.MAC.1">
<PICFILE "A5.BWMAC.1">
;"segments"
<DEFINE-SEGMENT STARTUP T>
<DEFINE-SEGMENT RECORD <>>
<DEFINE-SEGMENT STARTUP T ERASMUS>
<DEFINE-SEGMENT ERASMUS <> ANJIRO>
<DEFINE-SEGMENT ANJIRO <> ERASMUS YABU>
<DEFINE-SEGMENT YABU <> ANJIRO PIT>
<DEFINE-SEGMENT PIT <> YABU RODRIGUES>
<DEFINE-SEGMENT RODRIGUES <> PIT VOYAGE>
<DEFINE-SEGMENT VOYAGE <> RODRIGUES AUDIENCE>
<DEFINE-SEGMENT AUDIENCE <> VOYAGE PRISON>
<DEFINE-SEGMENT PRISON <> AUDIENCE MARIKO>
<DEFINE-SEGMENT MARIKO <> PRISON ESCAPE>
<DEFINE-SEGMENT ESCAPE <> MARIKO MAZE>
<DEFINE-SEGMENT MAZE <> ESCAPE QUAKE>
<DEFINE-SEGMENT QUAKE <> MAZE ZATAKI>
<DEFINE-SEGMENT ZATAKI <> QUAKE YOKOSE>
<DEFINE-SEGMENT YOKOSE <> ZATAKI OCHIBA>
<DEFINE-SEGMENT OCHIBA <> YOKOSE DEPARTURE>
<DEFINE-SEGMENT DEPARTURE <> OCHIBA SEPPUKU>
<DEFINE-SEGMENT SEPPUKU <> DEPARTURE NINJA>
<DEFINE-SEGMENT NINJA <> SEPPUKU YOKOHAMA>
<DEFINE-SEGMENT YOKOHAMA <> NINJA AFTERMATH>
<DEFINE-SEGMENT AFTERMATH <> YOKOHAMA SEKIGAHARA>
<DEFINE-SEGMENT SEKIGAHARA <> AFTERMATH>
<DEFINE-SEGMENT ANJIRO <> YABU>
<DEFINE-SEGMENT YABU <> PIT>
<DEFINE-SEGMENT PIT <> RODRIGUES>
<DEFINE-SEGMENT RODRIGUES <> VOYAGE>
<DEFINE-SEGMENT VOYAGE <> AUDIENCE>
<DEFINE-SEGMENT AUDIENCE <> PRISON>
<DEFINE-SEGMENT PRISON <> MARIKO>
<DEFINE-SEGMENT MARIKO <> ESCAPE>
<DEFINE-SEGMENT ESCAPE <> MAZE>
<DEFINE-SEGMENT MAZE <>>
<DEFINE-SEGMENT QUAKE <> YOKOSE>
<DEFINE-SEGMENT YOKOSE <> OCHIBA>
<DEFINE-SEGMENT OCHIBA <> DEPARTURE>
<DEFINE-SEGMENT DEPARTURE <> SEPPUKU>
<DEFINE-SEGMENT SEPPUKU <> NINJA>
<DEFINE-SEGMENT NINJA <> YOKOHAMA>
<DEFINE-SEGMENT YOKOHAMA <> AFTERMATH>
<DEFINE-SEGMENT AFTERMATH <> SEKIGAHARA>
<DEFINE-SEGMENT SEKIGAHARA <>>
<DEFINE-SEGMENT RECORD <>>
<DEFINE-SEGMENT HINTS <>>
<INSERT-FILE "DEFS"> ;"redefinitions"

24
a5apple.d Normal file
View File

@ -0,0 +1,24 @@
0 20547 2 0 0 0 3 0 4332 1239 5 0 7117 412 12 0 48166 6050 14 0 60702 5940 22 0 139540 5032 32 0 217583 1818
soft-keys 8 58 0 0 0
startup 3884 1 0 456 3876
erasmus 19243 4 0 5571 1546 7 0 7529 9896 8 0 17425 7777
anjiro 22988 9 0 25202 9095 10 0 34297 7897 11 0 42194 5972
yabu 8 51 0 0 0
pit 6494 13 0 54216 6486
rodrigues 8 52 0 0 0
voyage 42839 15 0 66642 8424 16 0 75066 11862 17 0 86928 8754 18 0 95682 13767
audience 30115 19 0 109449 16435 20 0 125884 8817 21 0 134701 4839
prison 8 53 0 0 0
mariko 8 54 0 0 0
escape 26199 23 0 144572 16213 24 0 160785 9970
maze 9006 25 0 170755 8578 38 0 242812 43 39 0 242855 7 40 0 242862 51 41 0 242913 32 42 0 242945 26 43 0 242971 44 44 0 243015 145 45 0 0 0 46 0 0 0
quake 21569 26 0 179333 7269 27 0 186602 7653 37 0 236197 6615 48 0 0 0
yokose 10375 33 0 219401 10367
ochiba 8 55 0 0 0
departure 8 56 0 0 0
seppuku 7729 28 0 194255 7721
ninja 13399 29 0 201976 5120 30 0 207096 8255 47 0 0 0
yokohama 6445 35 0 229768 2683 36 0 232451 3746
aftermath 8 57 0 0 0
sekigahara 2240 31 0 215351 2232
hints 1195 50 0 243160 1187

24727
a5dat.zap Normal file

File diff suppressed because it is too large Load Diff

198
a5freq.zap Normal file
View File

@ -0,0 +1,198 @@
.FSTR FSTR?1,"the " ;6820 3411 3411
.FSTR FSTR?2,"and " ;3240 1621 1621
.FSTR FSTR?3,"You " ;2391 798 798
.FSTR FSTR?4,"to " ;1734 1735 1735
.FSTR FSTR?5,"Toranaga" ;1422 238 238
.FSTR FSTR?6,"Mariko" ;1265 254 254
.FSTR FSTR?7,"you " ;1227 1228 1228
.FSTR FSTR?8,"your " ;1180 591 591
.FSTR FSTR?9,"are " ;1134 568 568
.FSTR FSTR?10,"of " ;1129 1130 1130
.FSTR FSTR?11,"is " ;993 994 994
.FSTR FSTR?12,"with " ;948 317 317
.FSTR FSTR?13,"have " ;932 234 234
.FSTR FSTR?14,"that " ;903 302 302
.FSTR FSTR?15,"samurai" ;890 179 179
.FSTR FSTR?16,"The " ;870 436 436
.FSTR FSTR?17,"Anjin-san" ;830 84 84
.FSTR FSTR?18,"from " ;714 239 239
.FSTR FSTR?19,"Yabu" ;702 235 235
.FSTR FSTR?20,"his " ;690 346 346
.FSTR FSTR?21,"into " ;684 229 229
.FSTR FSTR?22,"but " ;662 332 332
.FSTR FSTR?23,"doesn't " ;657 74 74
.FSTR FSTR?24,"Rodrigues" ;656 83 83
.FSTR FSTR?25,"in " ;654 655 655
.FSTR FSTR?26,"for " ;634 318 318
.FSTR FSTR?27,"can't " ;540 109 109
.FSTR FSTR?28,"Japanese" ;525 76 76
.FSTR FSTR?29,"Ishido " ;522 88 88
.FSTR FSTR?30,"don't " ;475 96 96
.FSTR FSTR?31,"Portuguese" ;450 51 51
.FSTR FSTR?32,"her" ;442 443 443
.FSTR FSTR?33,"would " ;436 110 110
.FSTR FSTR?34,"will " ;411 138 138
.FSTR FSTR?35,"very " ;408 103 103
.FSTR FSTR?36,"ninja" ;392 99 99
.FSTR FSTR?37,"already " ;384 65 65
.FSTR FSTR?38,"through " ;384 65 65
.FSTR FSTR?39,"out " ;360 181 181
.FSTR FSTR?40,"then " ;360 121 121
.FSTR FSTR?41,"can " ;358 180 180
.FSTR FSTR?42,"over" ;357 120 120
.FSTR FSTR?43,"yourself" ;355 72 72
.FSTR FSTR?44,"sword" ;354 119 119
.FSTR FSTR?45,"their " ;352 89 89
.FSTR FSTR?46,"at " ;340 341 341
.FSTR FSTR?47,"about " ;336 85 85
.FSTR FSTR?48,"all " ;334 168 168
.FSTR FSTR?49,"It's " ;330 67 67
.FSTR FSTR?50,"they " ;327 110 110
.FSTR FSTR?51,"galley" ;324 82 82
.FSTR FSTR?52,"Lord " ;324 82 82
.FSTR FSTR?53,"you" ;317 318 2326
.FSTR FSTR?54,"this " ;315 106 106
.FSTR FSTR?55,"like " ;312 105 105
.FSTR FSTR?56,"still " ;312 79 79
.FSTR FSTR?57,"him " ;310 156 156
.FSTR FSTR?58,"on " ;308 309 309
.FSTR FSTR?59,"Captain" ;306 52 52
.FSTR FSTR?60,"door" ;304 153 153
.FSTR FSTR?61,"follow" ;304 77 77
.FSTR FSTR?62,"not " ;304 153 153
.FSTR FSTR?63,"seems " ;304 77 77
.FSTR FSTR?64,"something" ;301 44 44
.FSTR FSTR?65,"There's " ;301 44 44
.FSTR FSTR?66,"Hiro-matsu" ;300 31 31
.FSTR FSTR?67,"there " ;296 75 75
.FSTR FSTR?68,"says" ;292 147 147
.FSTR FSTR?69,"Gray" ;279 94 94
.FSTR FSTR?70,"looks " ;272 69 69
.FSTR FSTR?71,"toward " ;270 55 55
.FSTR FSTR?72,"understand " ;270 31 31
.FSTR FSTR?73,"close" ;270 91 91
.FSTR FSTR?74,"as " ;265 266 266
.FSTR FSTR?75,"aren't " ;264 45 45
.FSTR FSTR?76,"he " ;264 265 265
.FSTR FSTR?77,"them" ;264 133 133
.FSTR FSTR?78,"water" ;264 89 89
.FSTR FSTR?79,"one " ;260 131 131
.FSTR FSTR?80,"continue" ;258 44 44
.FSTR FSTR?81,"other" ;258 87 87
.FSTR FSTR?82,"back " ;255 86 86
.FSTR FSTR?83,"be " ;255 256 256
.FSTR FSTR?84,"should " ;252 43 43
.FSTR FSTR?85,"down " ;252 85 85
.FSTR FSTR?86,"little " ;250 51 51
.FSTR FSTR?87,"You'" ;248 63 63
.FSTR FSTR?88,"just " ;248 63 63
.FSTR FSTR?89,"against " ;246 42 42
.FSTR FSTR?90,"anything" ;246 42 42
.FSTR FSTR?91,"begin" ;240 81 81
.FSTR FSTR?92,"forward" ;235 48 48
.FSTR FSTR?93,"see" ;233 234 311
.FSTR FSTR?94,"you, " ;232 117 117
.FSTR FSTR?95,"could " ;232 59 59
.FSTR FSTR?96,"priest" ;232 59 59
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

2435
a5pur.zap Normal file

File diff suppressed because it is too large Load Diff

1668
a5str.zap Normal file

File diff suppressed because it is too large Load Diff

315
anjiro.zabstr Normal file
View File

@ -0,0 +1,315 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)) ()>
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT ANJIRO>
<CONSTANT J-PLUNGE 20>
<CONSTANT J-GUARDS 21>
<ROOM GARDEN (LOC ROOMS) (SCENE S-ANJIRO S-RODRIGUES) (DESC "Garden") (SYNONYM
GARDEN) (ADJECTIVE SMALL) (LDESC
"This is a small garden surrounded by a high wall. It is unlike anything
you have ever seen: a little waterfall and stream and a small bridge
and manicured pebbled paths and rocks and flowers and shrubs. It's so
clean, so neat. The house is to the west, the village to the east.") (IN PER
MURA-HOUSE-EXIT) (WEST PER MURA-HOUSE-EXIT) (EAST TO ANJIRO) (OUT TO ANJIRO) (
FLAGS ONBIT OUTSIDE) (GLOBAL MURA-DOOR MURA-HOUSE LG-VILLAGE) (ACTION GARDEN-F)
>
<DEFINE-ROUTINE MURA-HOUSE-EXIT>
<DEFINE-ROUTINE GARDEN-F>
<OBJECT HIGH-WALL (LOC GARDEN) (DESC "high wall") (SYNONYM WALL) (ADJECTIVE
HIGH) (FLAGS NDESCBIT) (ACTION HIGH-WALL-F)>
<DEFINE-ROUTINE HIGH-WALL-F>
<OBJECT WATERFALL (LOC GARDEN) (DESC "little waterfall") (SYNONYM WATERFALL
WATER POOL) (ADJECTIVE LITTLE) (FLAGS NDESCBIT) (ACTION WATERFALL-F)>
<DEFINE-ROUTINE WATERFALL-F>
<OBJECT PATHS (LOC GARDEN) (DESC "manicured path") (SYNONYM PATH PATHS) (
ADJECTIVE MANICURED) (FLAGS NDESCBIT) (ACTION PATHS-F)>
<DEFINE-ROUTINE PATHS-F>
<OBJECT SMALL-BRIDGE (LOC GARDEN) (SCENE S-ANJIRO) (DESC "small bridge") (
SYNONYM BRIDGE) (ADJECTIVE SMALL) (FLAGS NDESCBIT) (ACTION SMALL-BRIDGE-F)>
<DEFINE-ROUTINE SMALL-BRIDGE-F>
<OBJECT STREAM (LOC GARDEN) (DESC "stream") (SYNONYM STREAM) (ADJECTIVE LITTLE)
(FLAGS NDESCBIT VEHBIT) (ACTION STREAM-F)>
<DEFINE-ROUTINE STREAM-F>
<OBJECT PLANTS (LOC GARDEN) (DESC "plant") (SYNONYM FLOWER SHRUB FLOWERS SHRUBS
PLANT) (FLAGS NDESCBIT) (ACTION PLANTS-F)>
<DEFINE-ROUTINE PLANTS-F>
<BEGIN-SEGMENT RODRIGUES>
<ROOM ANJIRO-WATERFRONT (LOC ROOMS) (SCENE S-RODRIGUES) (AFTER
LEAVE-ANJIRO-AFTER-F) (SCORE 4) (DESC "Waterfront") (FDESC
"The next day you walk down the hill, four samurai flanking you. Ahead
the street curves with the contour of the hillside, slides down toward
the harbor.") (SYNONYM WATERFRONT) (WEST TO ANJIRO) (EAST TO ANJIRO-HARBOR) (
GLOBAL LG-ERASMUS SAMURAI-GUARDS LG-SEA LG-VILLAGE LG-BAY VILLAGERS LG-LAND) (
FLAGS ONBIT OUTSIDE) (ACTION ANJIRO-WATERFRONT-F)>
<DEFINE-ROUTINE ANJIRO-WATERFRONT-F>
<DEFINE-ROUTINE VILLAGERS-STARE>
<OBJECT ARCHERS (DESC "archers") (SYNONYM ARCHER ARCHERS SAMURAI BOW ARROW MEN)
(FLAGS PERSON JAPANESEBIT PLURAL SCOREBIT INVISIBLE AN NOABIT) (ACTION
ARCHERS-F)>
<DEFINE-ROUTINE ARCHERS-F>
<END-SEGMENT>
<BEGIN-SEGMENT ANJIRO>
<DEFINE-ROUTINE I-RUTTER-CLUE>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT SMALL-BOAT (LOC ANJIRO-WATERFRONT) (SCENE S-ANJIRO S-RODRIGUES) (DESC
"small boat") (SYNONYM BOAT ROWBOAT) (ADJECTIVE SMALL) (FLAGS VEHBIT CONTBIT
OPENBIT SEARCHBIT) (CAPACITY 300) (ACTION SMALL-BOAT-F)>
<DEFINE-ROUTINE SMALL-BOAT-F>
<OBJECT BOAT-OAR (LOC SMALL-BOAT) (SCENE S-ANJIRO S-RODRIGUES) (DESC "oars") (
SYNONYM OAR OARS) (FLAGS TAKEBIT NOABIT PLURAL)>
<OBJECT LG-SMALL-BOAT (LOC LOCAL-GLOBALS) (SCENE S-ANJIRO S-RODRIGUES) (DESC
"small boat") (SYNONYM BOAT ROWBOAT) (ADJECTIVE SMALL) (FLAGS NDESCBIT VEHBIT)
(ACTION LG-SMALL-BOAT-F)>
<DEFINE-ROUTINE LG-SMALL-BOAT-F>
<END-SEGMENT>
<BEGIN-SEGMENT ANJIRO>
<DEFINE-ROUTINE HENCHMEN-RESTRAIN>
<BEGIN-SEGMENT RODRIGUES>
<ROOM ANJIRO-HARBOR (LOC ROOMS) (DESC "Harbor") (SYNONYM HARBOR) (EAST TO
AT-ERASMUS) (WEST TO ANJIRO-WATERFRONT) (FLAGS ONBIT OUTSIDE) (GLOBAL
LG-ERASMUS SAMURAI-GUARDS LG-SEA LG-BAY LG-LAND ARCHERS) (ACTION
ANJIRO-HARBOR-F)>
<DEFINE-ROUTINE ANJIRO-HARBOR-F>
<ROOM AT-ERASMUS (LOC ROOMS) (DESC "Beside the Erasmus") (UP TO ON-DECK) (WEST
TO ANJIRO-HARBOR) (FLAGS ONBIT OUTSIDE) (GLOBAL LG-ERASMUS SAMURAI-GUARDS
GANGWAY LG-SEA LG-LAND LG-BAY ARCHERS) (ACTION AT-ERASMUS-F)>
<DEFINE-ROUTINE AT-ERASMUS-F>
<END-SEGMENT>
<BEGIN-SEGMENT ANJIRO>
<ROOM ANJIRO (LOC ROOMS) (DESC "Anjiro") (SYNONYM ANJIRO) (PICTURE P-ANJIRO) (
IN TO GARDEN) (WEST TO GARDEN) (EAST TO ANJIRO-WATERFRONT) (GLOBAL MURA-DOOR
LG-ERASMUS LG-VILLAGE VILLAGERS) (FLAGS ONBIT OUTSIDE RMUNGBIT) (ACTION
ANJIRO-F)>
<DEFINE-ROUTINE ANJIRO-F>
<BEGIN-SEGMENT YABU>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT VILLAGERS (LOC LOCAL-GLOBALS) (DESC "villagers") (SYNONYM VILLAGERS
WOMEN MEN FISHERMEN) (FLAGS PERSON JAPANESEBIT PLURAL OPENBIT CONTBIT SEARCHBIT
) (ACTION VILLAGERS-F)>
<DEFINE-ROUTINE VILLAGERS-F>
<END-SEGMENT>
<BEGIN-SEGMENT ANJIRO>
<OBJECT SEBASTIO-HENCHMEN (SCENE S-ANJIRO) (DESC "priest's henchmen") (OWNER
SEBASTIO) (SYNONYM MEN HENCHMEN HENCHMAN COMPANIONS) (ADJECTIVE JAPANESE) (
FLAGS PERSON JAPANESEBIT THE NOABIT SCOREBIT PLURAL) (ACTION
SEBASTIO-HENCHMEN-F)>
<DEFINE-ROUTINE SEBASTIO-HENCHMEN-F>
<OBJECT HENCHMAN-BODY (DESC "body") (SYNONYM BODY CORPSE MAN) (ADJECTIVE DEAD
KILLED MURDERED HEADLESS) (SIZE 200) (FLAGS PERSON JAPANESEBIT DEAD TAKEBIT
TRYTAKEBIT) (ACTION HENCHMAN-BODY-F)>
<DEFINE-ROUTINE HENCHMAN-BODY-F>
<OBJECT HENCHMAN-HEAD (DESC "severed head") (SYNONYM HEAD) (ADJECTIVE SEVERED)
(FLAGS TAKEBIT TRYTAKEBIT PERSON DEAD) (ACTION HENCHMAN-HEAD-F)>
<DEFINE-ROUTINE HENCHMAN-HEAD-F>
<DEFINE-ROUTINE I-SEBASTIO>
<GLOBAL SEBASTIO-CNT 0 %<> WORD>
<GLOBAL PISS-FLAG <>>
<GLOBAL OMI-QUESTION 0>
<DEFINE-ROUTINE I-OMI>
<GLOBAL OMI-CNT 0 %<> WORD>
<DEFINE-ROUTINE TELL-ANSWER-OR-DIE>
<DEFINE-ROUTINE OMI-KILLS-YOU>
<ROOM MURA-HOUSE (LOC ROOMS) (SCENE S-ANJIRO S-RODRIGUES) (DESC "Mura's House")
(OWNER MURA) (SYNONYM HOUSE) (SCORE 4) (FDESC
"You awaken suddenly. For a moment you think you are dreaming, because
you are ashore and in a small, clean room whose floor is covered with
soft mats. You are lying on a thick quilt.|
|
You realize that you aren't dreaming because you are terribly hungry.") (LDESC
"The room is filled with muted light shining through the opaque paper
that fills squares of cedar lath. The ceiling is polished cedar.") (EAST TO
GARDEN IF MURA-DOOR IS OPEN) (OUT TO GARDEN IF MURA-DOOR IS OPEN) (FLAGS ONBIT)
(GLOBAL MURA-DOOR LG-VILLAGE) (ACTION MURA-HOUSE-F)>
<DEFINE-ROUTINE MURA-HOUSE-F>
<DEFINE-ROUTINE I-COLLAPSE>
<GLOBAL COLLAPSE-CNT 0 %<> WORD>
<OBJECT MURA-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (SYNONYM SHOJI DOOR PANEL
PAPER SCREEN SQUARES LATHS) (ADJECTIVE PAPER WOOD TRANSLUCENT) (FLAGS NDESCBIT
DOORBIT TRYTAKEBIT) (ACTION MURA-DOOR-F)>
<DEFINE-ROUTINE MURA-DOOR-F>
<OBJECT QUILT (LOC MURA-HOUSE) (SCENE S-ANJIRO) (DESC "quilt") (SYNONYM QUILT)
(ADJECTIVE THICK PADDED SOFT COTTON) (FLAGS TAKEBIT VEHBIT OPENBIT CONTBIT
SEARCHBIT FURNITURE SURFACEBIT) (ACTION QUILT-F)>
<DEFINE-ROUTINE QUILT-F>
<OBJECT MURA-CRUCIFIX (LOC MURA-HOUSE) (SCENE S-ANJIRO) (DESC "crucifix") (
FDESC "Hanging on the wall is a crucifix.") (SYNONYM CRUCIFIX CROSS) (FLAGS
TAKEBIT TRYTAKEBIT) (ACTION MURA-CRUCIFIX-F)>
<DEFINE-ROUTINE MURA-CRUCIFIX-F>
<OBJECT TRAY (LOC MURA-HOUSE) (DESC "red lacquered tray") (SYNONYM TRAY BOWL) (
ADJECTIVE RED LACQUERED) (CAPACITY 10) (FLAGS TAKEBIT SEARCHBIT OPENBIT CONTBIT
SURFACEBIT)>
<OBJECT CHOPSTICKS (LOC TRAY) (DESC "pair of sticks") (OWNER CHOPSTICKS) (
SYNONYM STICKS CHOPSTICKS STICK PAIR) (ADJECTIVE CHOP) (FLAGS TAKEBIT TOOLBIT
PLURAL) (ACTION CHOPSTICKS-F)>
<DEFINE-ROUTINE CHOPSTICKS-F>
<OBJECT FOOD (LOC TRAY) (DESC "food") (SYNONYM FOOD VEGETABLES SOUP PORRIDGE) (
ADJECTIVE MORE FISH COOKED COLD THICK) (FLAGS TAKEBIT FOODBIT SCOREBIT NOABIT)
(ACTION FOOD-F)>
<DEFINE-ROUTINE FOOD-F>
<DEFINE-ROUTINE I-REMEMBER>
<DEFINE-ROUTINE I-ONNA>
<NEW-ADD-WORD "HAKU" NOUN>
<BEGIN-SEGMENT PIT>
<OBJECT ONNA (SDESC "middle-aged woman") (SYNONYM WOMAN ONNA ONNA LADY) (
ADJECTIVE MIDDLE-AGED HEAVY-SET ROUND-FACED) (FLAGS PERSON JAPANESEBIT FEMALE
THE OPENBIT SEARCHBIT CONTBIT) (ACTION ONNA-F)>
<DEFINE-ROUTINE ONNA-F>
<END-SEGMENT>
<BEGIN-SEGMENT ANJIRO>
<DEFINE-ROUTINE I-ONNA-RETURNS>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT RIBBON (DESC "silk ribbon") (LDESC
"Stretched across each doorway is a red silk ribbon.") (SYNONYM RIBBON TAPE
BANNER) (ADJECTIVE RED SILK) (FLAGS TAKEBIT READBIT) (ACTION RIBBON-F)>
<GLOBAL RIBBON-CNT 0>
<DEFINE-ROUTINE RIBBON-F>
<DEFINE-ROUTINE I-RIBBON>
<OBJECT SAMURAI-GUARDS (SCENE S-ANJIRO S-RODRIGUES S-ESCAPE) (DESC
"samurai guards") (SYNONYM SAMURAI GUARDS GUARD MAN MEN CREW CREWMEN CREWMAN) (
FLAGS PERSON JAPANESEBIT PLURAL SCOREBIT NOABIT) (DESCFCN SAMURAI-GUARDS-DESC)
(GENERIC GENERIC-SAMURAI-F) (ACTION SAMURAI-GUARDS-F)>
<DEFINE-ROUTINE SAMURAI-GUARDS-DESC>
<DEFINE-ROUTINE SAMURAI-GUARDS-F>
<END-SEGMENT>
<BEGIN-SEGMENT YABU>
<ROOM VILLAGE-SQUARE (LOC ROOMS) (SCENE S-YABU) (DESC "Village Square") (SCORE
2) (FDESC "The next day, you and your crewmen are brought before the
daimyo. Samurai slam all of you on your knees and push your heads into the dust."
) (SYNONYM SQUARE) (ADJECTIVE VILLAGE) (NORTH TO BATH-HOUSE IF BATH-FLAG) (
FLAGS OUTSIDE ONBIT SCOREBIT) (GLOBAL CREWMEN LG-ERASMUS VILLAGERS PIT
LG-VILLAGE) (ACTION VILLAGE-SQUARE-F)>
<DEFINE-ROUTINE VILLAGE-SQUARE-F>
<DEFINE-ROUTINE YABU-TALK-TO-YABU>
<DEFINE-ROUTINE SPEAK-ONLY-TO-YABU>
<OBJECT SEBASTIO-CRUCIFIX (SCENE S-ANJIRO S-YABU S-PIT) (LOC SEBASTIO) (DESC
"crucifix") (OWNER SEBASTIO) (SYNONYM CRUCIFIX CROSS) (ADJECTIVE PECTORAL WOOD
WOODEN) (FLAGS DONT-ALL TAKEBIT TRYTAKEBIT NDESCBIT SCOREBIT) (ACTION
SEBASTIO-CRUCIFIX-F)>
<DEFINE-ROUTINE SEBASTIO-CRUCIFIX-F>
<DEFINE-ROUTINE JAPANESE-INTERESTED?>
<DEFINE-ROUTINE I-SEBASTIO-PRAYS>
<DEFINE-ROUTINE I-BOW?>
<GLOBAL YABU-QUESTION 0>
<DEFINE-ROUTINE I-YABU-AUDIENCE>
<GLOBAL YABU-CNT 0 %<> WORD>
<DEFINE-ROUTINE YABU-SAYS>
<END-SEGMENT>
<BEGIN-SEGMENT PIT>
<ROOM PIT (LOC ROOMS) (SCENE S-PIT) (DESC "Pit") (AFTER PIT-AFTER-F) (SYNONYM
PIT CELLAR) (SCORE 5) (FDESC
"At Yabu's order, the samurai herd you and your crew across the square,
down a ladder, and underground. A trap door locks above you.") (FLAGS ONBIT) (
GLOBAL TRAPDOOR LG-CREWMEN PIETERZOON) (ACTION PIT-F)>
<DEFINE-ROUTINE PIT-F>
<DEFINE-ROUTINE TELL-CEILING>
<OBJECT SEAWATER (DESC "seawater") (SYNONYM SEAWATER WATER) (ADJECTIVE SEA) (
FLAGS NDESCBIT) (ACTION SEAWATER-F)>
<DEFINE-ROUTINE SEAWATER-F>
<OBJECT OFFAL (DESC "offal") (SYNONYM OFFAL HEADS FISH ENTRAILS) (ADJECTIVE
FISH ROTTING) (FLAGS NDESCBIT) (ACTION OFFAL-F)>
<DEFINE-ROUTINE OFFAL-F>
<GLOBAL VINCK-PICKED? <>>
<DEFINE-ROUTINE I-PIT>
<GLOBAL PIT-CNT 0 %<> WORD>
<GLOBAL MUST-CHOOSE? <>>
<DEFINE-ROUTINE TRAPDOOR-OPENS>
<DEFINE-ROUTINE I-TAKE-VINCK>
<GLOBAL PIT-CNT 0 %<> WORD>
<DEFINE-ROUTINE OMI-BARKS>
<DEFINE-ROUTINE I-TAKE-YOU>
<GLOBAL PIT-CNT 0 %<> WORD>
<NEW-ADD-WORD "STRAWS" NOUN <VOC "STRAW"> ,PLURAL-FLAG>
<OBJECT STRAW (DESC "straw") (SYNONYM STRAW STALK) (ADJECTIVE RICE) (FLAGS
TAKEBIT) (GENERIC GENERIC-STRAW-F) (ACTION STRAW-F)>
<DEFINE-ROUTINE GENERIC-STRAW-F>
<DEFINE-ROUTINE STRAW-F>
<OBJECT VINCKS-STRAW (DESC "Vinck's straw") (OWNER VINCK) (SYNONYM STRAW STALK)
(ADJECTIVE RICE SHORTEST) (FLAGS TAKEBIT NOABIT) (GENERIC GENERIC-STRAW-F) (
ACTION VINCKS-STRAW-F)>
<DEFINE-ROUTINE VINCKS-STRAW-F>
<OBJECT SHORT-STRAW (DESC "short straw") (OWNER <>) (SYNONYM STRAW STALK) (
ADJECTIVE RICE SHORT) (FLAGS TAKEBIT) (GENERIC GENERIC-STRAW-F) (ACTION
SHORT-STRAW-F)>
<DEFINE-ROUTINE SHORT-STRAW-F>
<OBJECT LONG-STRAW (DESC "long straw") (OWNER <>) (SYNONYM STRAW STALK) (
ADJECTIVE RICE LONG) (FLAGS TAKEBIT) (GENERIC GENERIC-STRAW-F) (ACTION
LONG-STRAW-F)>
<DEFINE-ROUTINE LONG-STRAW-F>
<DEFINE-ROUTINE THEY-TAKE-VICTIM>
<OBJECT TRAPDOOR (LOC PIT) (DESC "trapdoor") (SYNONYM TRAPDOOR DOOR OPENING
CEILING) (ADJECTIVE TRAP) (FLAGS DOORBIT SEARCHBIT) (DESCFCN TRAPDOOR-DESC) (
ACTION TRAPDOOR-F)>
<DEFINE-ROUTINE TRAPDOOR-DESC>
<DEFINE-ROUTINE TRAPDOOR-F>
<OBJECT LADDER (DESC "ladder") (SYNONYM LADDER) (FLAGS SURFACEBIT TAKEBIT
TRYTAKEBIT VEHBIT SCOREBIT OPENBIT CONTBIT SEARCHBIT) (DESCFCN LADDER-DESC) (
ACTION LADDER-F)>
<DEFINE-ROUTINE LADDER-DESC>
<DEFINE-ROUTINE LADDER-F>
<DEFINE-ROUTINE SAMURAI-ON-LADDER>
<OBJECT LOSING-SAMURAI (DESC "captured samurai") (SCENE S-PIT) (SYNONYM SAMURAI
COMRADE) (ADJECTIVE CAPTURED PROSTRATE UNCONSCIOUS) (FLAGS PERSON JAPANESEBIT
SCOREBIT OPENBIT SEARCHBIT CONTBIT) (GENERIC GENERIC-SAMURAI-F) (CONTFCN
LOSING-SAMURAI-F) (ACTION LOSING-SAMURAI-F)>
<DEFINE-ROUTINE LOSING-SAMURAI-F>
<OBJECT OMI-SAMURAI (SDESC "attacking samurai") (SCENE S-PIT) (OWNER OMI) (
SYNONYM SAMURAI GUARDS GUARD) (ADJECTIVE ATTACKING) (FLAGS PERSON JAPANESEBIT
NOABIT PLURAL) (DESCFCN OMI-SAMURAI-DESC) (GENERIC GENERIC-SAMURAI-F) (ACTION
OMI-SAMURAI-F)>
<DEFINE-ROUTINE OMI-SAMURAI-DESC>
<DEFINE-ROUTINE OMI-SAMURAI-F>
<DEFINE-ROUTINE I-LOSING-SAMURAI>
<DEFINE-ROUTINE DROPS-DAGGER>
<OBJECT DAGGER (LOC LOSING-SAMURAI) (DESC "dagger") (SYNONYM DAGGER) (FLAGS
TAKEBIT WEAPONBIT)>
<OBJECT CAULDRON (DESC "cauldron") (SYNONYM CAULDRON) (FLAGS OPENBIT CONTBIT
SEARCHBIT VEHBIT) (DESCFCN CAULDRON-DESC) (CONTFCN CAULDRON-F) (ACTION
CAULDRON-F)>
<DEFINE-ROUTINE CAULDRON-F>
<DEFINE-ROUTINE CAULDRON-DESC>
<DEFINE-ROUTINE I-TAKE-CROOCQ>
<GLOBAL PIT-CNT 0 %<> WORD>
<GLOBAL CROOCQ-CNT 0>
<DEFINE-ROUTINE CROOCQ-IN-CAULDRON>
<DEFINE-ROUTINE OMI-SAYS-LIE-DOWN>
<GLOBAL ANSWER-HAI? <>>
<GLOBAL BATH-FLAG <>>
<DEFINE-ROUTINE CURSE-OMI>
<ROOM BATH-HOUSE (LOC ROOMS) (DESC "Bath House") (SYNONYM HOUSE) (ADJECTIVE
BATH) (SOUTH TO VILLAGE-SQUARE) (FLAGS ONBIT) (ACTION BATH-HOUSE-F)>
<DEFINE-ROUTINE BATH-HOUSE-F>
<DEFINE-ROUTINE I-BATH>
<GLOBAL BATH-CNT 0 %<> WORD>
<OBJECT CROWD (SCENE S-PIT) (LOC BATH-HOUSE) (DESC "crowd of villagers") (OWNER
CROWD) (SYNONYM VILLAGERS CROWD WOMEN MEN CRONE) (ADJECTIVE OLD GAPING STARING)
(FLAGS PERSON JAPANESEBIT PLURAL OPENBIT CONTBIT SEARCHBIT) (DESCFCN CROWD-DESC
) (ACTION CROWD-F)>
<DEFINE-ROUTINE CROWD-F>
<DEFINE-ROUTINE CROWD-DESC>
<OBJECT BATHTUB (LOC BATH-HOUSE) (DESC "bath tub") (SYNONYM TUB BATH POOL WATER
) (ADJECTIVE BATH WOODEN HOT) (FLAGS NDESCBIT CANT-HOLD VEHBIT OPENBIT CONTBIT
SEARCHBIT SCOREBIT) (CAPACITY 300) (ACTION BATHTUB-F)>
<DEFINE-ROUTINE BATHTUB-F>
<DEFINE-ROUTINE TAKE-A-BATH?>
<DEFINE-ROUTINE RUINABLE?>
<DEFINE-ROUTINE MURA-STOPS-YOU>
<DEFINE-ROUTINE PIT-AFTER-F>
<END-SEGMENT>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT SLAVER (SCENE S-RODRIGUES) (OWNER TORANAGA) (DESC "galley") (SYNONYM
GALLEY SLAVER VESSEL SHIP) (ADJECTIVE SLAVE) (FLAGS VEHBIT) (DESCFCN
SLAVER-DESC) (GENERIC GENERIC-GALLEY-F) (ACTION SLAVER-F)>
<DEFINE-ROUTINE SLAVER-DESC>
<DEFINE-ROUTINE SLAVER-F>
<OBJECT MURA-ROPE (SCENE S-RODRIGUES) (OWNER MURA) (DESC "rope") (SYNONYM ROPE)
>
<GLOBAL RODRIGUES-QUESTION 0>
<DEFINE-ROUTINE I-MEET-RODRIGUES>
<GLOBAL MEET-CNT 0 %<> WORD>
<DEFINE-ROUTINE LETS-GO-ABOARD>
<DEFINE-ROUTINE HEAR-RODRIGUES>
<DEFINE-ROUTINE DIE-IN-STORM>
<DEFINE-ROUTINE SEALED-PASSAGE>
<DEFINE-ROUTINE DONT-BE-STUPID>
<DEFINE-ROUTINE LEAVE-ANJIRO-AFTER-F>
<END-SEGMENT>

3083
anjiro.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -42,7 +42,8 @@ she points to your boots, bowing and shaking her head." CR>
<COND (<SCENE? ,S-ANJIRO>
<QUEUE I-SEBASTIO -1>
<COND (<IN? ,ONNA ,MURA-HOUSE>
<MOVE ,ONNA ,GARDEN>)>)>)
<MOVE ,ONNA ,GARDEN>)>)>
<RTRUE>)
(<RARG? BEG>
<COND (<P? LISTEN (<> NOISE)>
<TELL
@ -171,6 +172,8 @@ comparable fragrance for years." CR>)>>
<BEGIN-SEGMENT RODRIGUES>
<ROOM ANJIRO-WATERFRONT
(LOC ROOMS)
(SCENE S-RODRIGUES)
@ -196,7 +199,7 @@ the harbor.")
<FCLEAR ,HIRO-MATSU ,NOABIT>
<FCLEAR ,HIRO-MATSU ,NOTHEBIT>
<FSET ,HIRO-MATSU ,AN>
<NEW-SDESC ,OMI "Omi">
<NEW-SDESC ,OMI ,OMI-NAME>
<MOVE-CREW ,PIT>
<REMOVE ,HENCHMAN-BODY>
<REMOVE ,HENCHMAN-HEAD>
@ -211,6 +214,7 @@ the harbor.")
<MOVE ,OMI ,ANJIRO-WATERFRONT>
<MOVE ,YABU ,ANJIRO-WATERFRONT>
<MOVE ,HIRO-MATSU ,ANJIRO-WATERFRONT>
<MOVE ,TORANAGA ,GENERIC-OBJECTS>
<MOVE ,ARCHERS ,ANJIRO-WATERFRONT>
<FCLEAR ,ARCHERS ,INVISIBLE>
<QUEUE I-MEET-RODRIGUES -1>)
@ -226,7 +230,8 @@ anchor, to the east, is the "I"Erasmus""." CR>)
<TELL
"You row the boat up onto the beach." CR CR>)
(<NOT <FSET? ,RUTTER ,RMUNGBIT>>
<QUEUE I-RUTTER-CLUE 1>)>)>)
<QUEUE I-RUTTER-CLUE 1>)>)>
<RTRUE>)
(<RARG? BEG>
<COND (<AND <SCENE? S-RODRIGUES>
<OR <P? (POINT EXAMINE) LG-ERASMUS>
@ -236,7 +241,7 @@ anchor, to the east, is the "I"Erasmus""." CR>)
<COND (<NOT <FSET? ,LIZARD ,SCOREBIT>>
<THIS-IS-IT ,LG-ERASMUS>
<SETG QCONTEXT ,RODRIGUES>
<TELL " She's
<TELL " She's
moored a hundred yards away. \"Tell me about her, Ingeles,\" asks
the Portuguese. \"She looks like a pisscutter!\"">)>
<CRLF>)
@ -311,6 +316,9 @@ something to the man with the arrow. Now the man puts it away." CR>
<END-QUOTE>
<RFATAL>)>)>>
<END-SEGMENT ;"ANJIRO+RODRIGUES">
<BEGIN-SEGMENT ANJIRO>
<ROUTINE I-RUTTER-CLUE ()
<COND (<NOT <FSET? ,RUTTER ,RMUNGBIT>>
<FSET ,RUTTER ,RMUNGBIT>
@ -323,6 +331,8 @@ seen your rutters or the rest of the crew. ">
<TELL "Can they still be on the "I"Erasmus">)>
<TELL ", you wonder?" CR>)>>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT SMALL-BOAT
(LOC ANJIRO-WATERFRONT)
(SCENE S-ANJIRO S-RODRIGUES)
@ -416,7 +426,7 @@ aren't strong enough to pull yourself aboard.">)
"It's just a small wooden rowboat.">
<COND (<NOT <FSET? ,RUTTER ,RMUNGBIT>>
<FSET ,RUTTER ,RMUNGBIT>
<TELL " It reminds you that you haven't
<TELL " It reminds you that you haven't
seen your rutters anywhere, and you glance out at the "I"Erasmus"".">)>
<CRLF>)
(<VERB? BOARD>
@ -479,6 +489,9 @@ there, bobbing in the light waves." CR>)
(<VERB? BOARD>
<DO-WALK ,P?DOWN>)>>
<END-SEGMENT ;"ANJIRO+RODRIGUES">
<BEGIN-SEGMENT ANJIRO>
<ROUTINE HENCHMEN-RESTRAIN ()
<COND (<FSET? ,SEBASTIO-HENCHMEN ,RMUNGBIT>
<RFALSE>)
@ -491,6 +504,8 @@ CTHE ,SEBASTIO " points to you, saying something in Japanese to " THE
CTHE ,SEBASTIO " motions to his companions, who restrain you." CR>)
(ELSE <RFALSE>)>>
<BEGIN-SEGMENT RODRIGUES>
<ROOM ANJIRO-HARBOR
(LOC ROOMS)
(DESC "Harbor")
@ -531,9 +546,13 @@ and southern horizons." CR>)
<TELL
"As you climb down the gangway you can still feel the sweat trickling
down your spine. You hate everything about the Japans and wish yourself
and your crew back aboard, armed, and out to sea." CR CR>
and your crew back aboard, armed, and out to sea." CR>
<MOVE ,BLACKTHORNE ,HERE>
<NEXT-SCENE>)>)>>
<NEXT-SCENE>
<RFATAL> ;"don't do v-first-look")>)>>
<END-SEGMENT ;"ANJIRO+RODRIGUES">
<BEGIN-SEGMENT ANJIRO>
<ROOM ANJIRO
(LOC ROOMS)
@ -588,6 +607,9 @@ hillsides? Confused, you walk back to the house you left." CR>)>)
<TELL
"You've never heard of any place called Anjiro." CR>)>)>)>>
<BEGIN-SEGMENT YABU>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT VILLAGERS
(LOC LOCAL-GLOBALS)
(DESC "villagers")
@ -613,6 +635,9 @@ you." CR>)>)
"They return your bow with amusement. You are obviously a new and amazing
sight for them." CR>)>)>>
<END-SEGMENT ;"ANJIRO+RODRIGUES+YABU">
<BEGIN-SEGMENT ANJIRO>
<OBJECT SEBASTIO-HENCHMEN
(SCENE S-ANJIRO)
(DESC "priest's henchmen")
@ -790,11 +815,10 @@ translates, \"Kasigi Omi-san says, 'What's your nationality?'\"" CR>)
<RTRUE>)>)
(<SETG QCONTEXT ,SEBASTIO>
<SETG OMI-QUESTION 2>
<TELL CR
CTHE ,OMI " says, \""I"Onushi ittai doko kara kitanoda?">
<NEW-SDESC ,OMI "Omi">
<SETUP-ANSWER "i sailed from">
<TELL "\" The priest
<TELL CR
CTHE ,OMI " says, \""I"Onushi ittai doko kara kitanoda?""\" The priest
says nervously, \"Kasigi Omi-san says, 'Where did you sail from?'\"" CR>)
(DELAY
<COND (,OMI-QUESTION
@ -887,7 +911,7 @@ soft mats. You are lying on a thick quilt.|
You realize that you aren't dreaming because you are terribly hungry.")
(LDESC
"The room is filled with muted light shining through the opaque paper
that fills squares of cedar lathe. The ceiling is polished cedar.")
that fills squares of cedar lath. The ceiling is polished cedar.")
(EAST TO GARDEN IF MURA-DOOR IS OPEN)
(OUT TO GARDEN IF MURA-DOOR IS OPEN)
(FLAGS ONBIT)
@ -972,7 +996,7 @@ G"It sounds like a group of people. ""One of them is speaking Portuguese!" CR>)
<OBJECT MURA-DOOR
(LOC LOCAL-GLOBALS)
(DESC "door")
(SYNONYM SHOJI DOOR PANEL PAPER SCREEN SQUARES LATHES)
(SYNONYM SHOJI DOOR PANEL PAPER SCREEN SQUARES LATHS)
(ADJECTIVE PAPER WOOD TRANSLUCENT)
(FLAGS NDESCBIT DOORBIT TRYTAKEBIT)
(ACTION MURA-DOOR-F)>
@ -984,7 +1008,7 @@ G"It sounds like a group of people. ""One of them is speaking Portuguese!" CR>)
"The door has been broken by your clumsiness." CR>)
(ELSE
<TELL
"The door is made of square wood lathes and covered with paper. It
"The door is made of square wood laths and covered with paper. It
looks translucent, shadows from the outside mottling the light and
flimsy structure." CR>)>)
(<VERB? OPEN MUNG TEAR RUB>
@ -1016,7 +1040,7 @@ flimsy structure." CR>)>)
<TELL
"You reach to open the door, reeling slightly as you are still very
weak, and put out a hand to steady yourself but the light, square wood
lathes can't bear your weight and they shatter, paper ripping apart. ">
laths can't bear your weight and they shatter, paper ripping apart. ">
<COND (<IN? ,FOOD ,WINNER>
<MOVE ,FOOD ,HERE>
<TELL "You drop the food. ">)>
@ -1203,6 +1227,8 @@ you. \""I"Goshujinsama, gokibun wa ikaga desu ka?""\" she asks." CR>>
<NEW-ADD-WORD "HAKU" NOUN>
<BEGIN-SEGMENT PIT>
<OBJECT ONNA
(SDESC "middle-aged woman")
(SYNONYM WOMAN ONNA ONNA LADY)
@ -1296,6 +1322,10 @@ understand." CR>)>)
<TELL
CTHE ,ONNA " seems surprised, but not unwilling." CR>)>>
<END-SEGMENT ;"ANJIRO+PIT">
<BEGIN-SEGMENT ANJIRO>
<ROUTINE I-ONNA-RETURNS ()
<MOVE ,FOOD ,TRAY>
<MOVE ,CLOTHES ,HERE>
@ -1309,6 +1339,8 @@ CTHE ,ONNA " seems surprised, but not unwilling." CR>)>>
food, and your clothes which she places in a neat pile. She bows
again and departs." CR>>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT RIBBON
(DESC "silk ribbon")
(LDESC
@ -1391,13 +1423,13 @@ of your rutters? How can you retrieve them?" CR>)>)>>
<COND (<RARG? OBJDESC?> <RTRUE>)
(<RARG? OBJDESC>
<TELL
"Several samurai are at posts on the main deck.">
"Several samurai are at posts on the main deck. They ">
<COND (,RIBBON-CNT
<TELL " They watch you warily.">)
<TELL "watch you warily.">)
(<FSET? ,SAMURAI-GUARDS ,RMUNGBIT>
<TELL " They seem relaxed.">)
<TELL "seem relaxed.">)
(ELSE
<TELL " They seem a little nervous.">)>)>>
<TELL "seem a little nervous.">)>)>>
<ROUTINE SAMURAI-GUARDS-F ("OPT" (RARG <>))
<COND (<RARG? SUBJ>
@ -1465,13 +1497,13 @@ bow and smile again." CR>)
<TELL "The leader returns your bow.">
<COND (,RIBBON-CNT
<TELL
" The guards seem more relaxed now.">)>
" The guards seem more relaxed now.">)>
<CRLF>)>)
(<VERB? TELL-ABOUT>
<TELL
"They don't appear to understand you." CR>)>>
<END-SEGMENT>
<END-SEGMENT ;"ANJIRO">
@ -1514,14 +1546,14 @@ daimyo. Samurai slam all of you on your knees and push your heads into the dust
<TELL
"This is the village square of Anjiro. The day is clear and warm.">
<COND (<SCENE? S-YABU>
<TELL " You are ">
<TELL " You are ">
<COND (<B-KNEELING?>
<TELL "kneeling">)
(ELSE <TELL "standing">)>
<TELL " in front of the platform.">)>
<COND (,BATH-FLAG
<TELL
" A narrow path leads north between two wooden fences.">)>
" A narrow path leads north between two wooden fences.">)>
<CRLF>)
(<RARG? BEG>
<COND (<AND <SCENE? ,S-YABU ,S-PIT>
@ -1561,7 +1593,7 @@ the true Church! Surely this land is in the power of Satan!\"|
|
Yabu smiles happily at you and your crewmen, then points to you and barks
an additional order to Omi, who bows. You shudder, wondering what fate
could be in store for you, and afraid you are about to find out." CR CR>
could be in store for you, and afraid you are about to find out." CR>
<NEXT-SCENE>)>)
(ELSE
<TELL
@ -1602,6 +1634,120 @@ CTHE ,PRSO " seems pleased by this display of manners." CR>)>)
"You do as you were ordered." CR>
<SCORE-OBJECT ,CROOCQ>)>)>)>)>>
<ROUTINE YABU-TALK-TO-YABU ()
<COND (<AND <P? BE (BLACKTHORNE ME)>
<EQUAL? ,YABU-QUESTION 1>>
<COND (<NOT <PRSI? BLACKTHORNE ME>>
<TELL
"\"This is no time for foolishness, heretic!\" roars the priest." CR>)
(<AND <NOUN-USED? ,PRSI ,W?BLACKTHORNE>
<ADJ-USED? ,PRSI ,W?JOHN>
<NOT <P-NEGATIVE?>>>
<SETG QCONTEXT <>>
<SETG YABU-QUESTION 0>
<TELL
G"Father Sebastio translates your answer. ""He seems very deferential to
Yabu, and very sweaty." CR>)
(ELSE
<TELL
"\"No, no! What is your ">
<COND (<OR <NOUN-USED? ,PRSI
,W?BLACKTHORNE>
<ADJ-USED? ,PRSI ,W?JOHN>>
<TELL "full ">)>
<TELL
"name, pirate?\" storms the priest, annoyed in
spite of himself." CR>)>)
(<AND <EQUAL? ,YABU-QUESTION 2>
<OR <AND <P? BE (BLACKTHORNE ME) INTPP>
<PP? ,W?FROM ,HOLLAND>>
<P? COME-FROM HOLLAND>>
<NOT <P-NEGATIVE?>>>
<SETG QCONTEXT <>>
<SETG YABU-QUESTION 0>
<TELL
G"Father Sebastio translates your answer. ""Yabu is showing irritation
and impatience. Perhaps the Jesuit's Japanese isn't fluent?" CR>)
(<AND <EQUAL? ,YABU-QUESTION 3>
<P? BE
(BLACKTHORNE ME)
(BLACKTHORNE RODRIGUES LEADER)>
<OR <NOUN-USED? ,PRSI ,W?PILOT>
<NOUN-USED? ,PRSI ,W?PILOT-MAJOR>>
<NOT <P-NEGATIVE?>>>
<SETG QCONTEXT ,YABU>
<SETG YABU-QUESTION 4>
<TELL
"Father Sebastio doesn't translate what you said. Instead he asks,
\"Why is an Englishman the pilot of a Dutch ship? Answer!\" Yabu
looks annoyed at the priest. Perhaps they aren't allies
after all." CR>)
(<AND <EQUAL? ,YABU-QUESTION 4>
<EQUAL? ,PRSS ,ME ,BLACKTHORNE>
<P? (WALK WALK-TO WALK-AROUND
COME-FROM COME-TO-FROM)
(<> ENGLAND STRAIT-OF-MAGELLAN
JAPAN PACIFIC GLOBAL-HERE LG-SEA
LG-ERASMUS BLACK-SHIP NOT-HERE-OBJECT)
(<> ENGLAND STRAIT-OF-MAGELLAN
PACIFIC LG-SEA LG-ERASMUS BLACK-SHIP)>
<PAST-TENSE?>
<NOT <P-NEGATIVE?>>>
<COND (<PRSO? NOT-HERE-OBJECT>
<TELL
"\"Liar! You came around Africa and India!\""G" screams the priest." CR>)
(<AND <PRSO? <> LG-SEA LG-ERASMUS
BLACK-SHIP>
<PRSI? <> LG-SEA LG-ERASMUS
BLACK-SHIP>>
<TELL
"\"Of course you did! You didn't fly!\""G" screams the priest." CR>)
(ELSE
<SETG YABU-QUESTION 0>
<SETG QCONTEXT <>>
<TELL
"You describe your voyage. \"We came through Magellan's Pass. This is the
one hundred and thirty-sixth day from there.\"|
|
\"You're lying! Magellan's Pass is secret. You came via Africa and
India. You'll have to tell the truth eventually. They use torture
here.\"" CR>
<SCORE-OBJECT ,STRAIT-OF-MAGELLAN>)>)
(<AND <P? BE (BLACKTHORNE ME)>
<P-NEGATIVE?>>
<COND (<PRSI? CHURCH>
<TELL
"\"I've already told the "I"daimyo"" that you're a heretic!\"" CR>)
(<PRSI? PORTUGUESE>
<TELL
"\"That's right, heretic, dig your own grave! Only we Portuguese and
the damnable Spanish are allowed to trade here!\"" CR>)
(<AND <PRSI? PIRATE>
<EQUAL? ,YABU-QUESTION 4>>
<SETG QCONTEXT <>>
<SETG YABU-QUESTION 0>
<TELL
"\"You liar! You filthy heretics are all pirates!\" The priest speaks
haltingly to Yabu, who answers brusquely. He is apparently losing
interest in the interrogation, and looks out into the harbor, toward
the ship." CR>)
(ELSE
<TELL
CTHE ,SEBASTIO " translates what you have said. Yabu doesn't seem
terribly interested, but only annoyed at the priest's poor Japanese." CR>)>)
(<AND ,YABU-QUESTION
<VERB? SAY REPLY>>
<COND (<EQUAL? ,YABU-QUESTION 1 3>
<PERFORM ,V?BE ,ME ,PRSO>
<RTRUE>)
(ELSE
<PERFORM ,V?COME-FROM>
<RTRUE>)>)
(ELSE
<TELL
CTHE ,SEBASTIO " haltingly translates what you have said. Yabu appears
increasingly impatient." CR>)>>
<ROUTINE SPEAK-ONLY-TO-YABU ()
<TELL
"Yabu says something sharply, and the priest warns, \"Speak only to
@ -1647,7 +1793,7 @@ belt." CR>)
(ELSE <TELL "on the ground.">)>
<COND (<AND <IN? ,OMI ,HERE> <IN? ,YABU ,HERE>>
<TELL
" The samurai watch. Omi, in particular, seems interested and excited.">)>
" The samurai watch. Omi, in particular, seems interested and excited.">)>
<CRLF>
<SCORE-OBJECT ,SEBASTIO-CRUCIFIX>)
(ELSE
@ -1814,7 +1960,7 @@ as he whirls toward you, shaking his fist. His crucifix on its long
chain waves mockingly near your face." CR>)
(<THIS-IS-IT ,YABU>
<TELL CR
"\""I"Ano mono wa nani o moshite oru?\""" the "I"daimyo"" snaps
"\""I"Ano mono wa nani o moshite oru?""\" the "I"daimyo"" snaps
impatiently." CR>)
(2
<THIS-IS-IT ,YABU>
@ -1836,7 +1982,7 @@ G"The priest confers with Yabu. \"Yabu says ""you are a " .STR ", and you
are condemned to death.\"">
<JIGS-UP>>
<END-SEGMENT>
<END-SEGMENT ;"YABU">
@ -2015,14 +2161,14 @@ us God-cursed water! We want food and water!\"" CR CR
priest.">
<COND (<VERB? YELL YELL-AT>
<TELL
" Everyone but you begins yelling. \"Water! And food, by God! Let
" Everyone but you begins yelling. \"Water! And food, by God! Let
us out of here!\"">)
(ELSE
<TELL
" Everyone is still yelling.">)>
" Everyone is still yelling.">)>
<MOVE ,OFFAL ,PIT>
<MOVE ,SEAWATER ,PIT>
<TELL " Omi motions to Mura, who nods and leaves." CR CR
<TELL " Omi motions to Mura, who nods and leaves." CR CR
"Mura returns with another fisherman, carrying a large barrel. They empty
the contents, rotting fish offal and seawater, onto your heads." CR>)
(<SETG MUST-CHOOSE? T>
@ -2361,12 +2507,12 @@ me that's to go -- \" Pieterzoon is being driven up the ladder." CR CR
<COND (<FSET? ,LOSING-SAMURAI ,SCOREBIT>
<REMOVE ,LOSING-SAMURAI>
<TELL ", including the one you knocked off
of the ladder, though he appears wary and even embarassed.">)
of the ladder, though he appears wary and even embarrassed.">)
(ELSE
<TELL " stepping contemptuously over
the prostrate body of their unconscious comrade.">)>)
(ELSE <TELL ".">)>
<TELL " The ladder is jerked aloft. Air and
<TELL " The ladder is jerked aloft. Air and
sky and light vanish. Bolts crash into place." CR>)>
<DEQUEUE I-TAKE-VINCK>
<DEQUEUE I-TAKE-YOU>
@ -2488,15 +2634,15 @@ you easily." CR>)
<FSET ,LADDER ,RMUNGBIT>
<COND (<QUEUED? I-TAKE-CROOCQ>
<TELL
" There is no reaction from those above. They wait patiently." CR>)
" There is no reaction from those above. They wait patiently." CR>)
(<IN? ,OMI-SAMURAI ,LADDER>
<TELL
" The samurai hold tightly onto the ladder, but one swings a sword at
" The samurai hold tightly onto the ladder, but one swings a sword at
you!" CR>
<SCORE-OBJECT ,LADDER>)
(ELSE
<TELL
" A gasp goes through the cellar. ">
" A gasp goes through the cellar. ">
<SAMURAI-ON-LADDER>
<RTRUE>)>)>)
(<VERB? CLIMB-FOO CLIMB-ON CLIMB-UP CLIMB-DOWN BOARD>
@ -2517,7 +2663,7 @@ you easily." CR>)
<COND (<HELD? ,DAGGER>
<REMOVE ,DAGGER>
<TELL
" As you reach the top of the ladder, strong hands grab you and force
" As you reach the top of the ladder, strong hands grab you and force
you to drop the dagger.">)>
<CRLF>
<CRLF>
@ -2740,7 +2886,7 @@ limp, dropping his dagger." CR>
<TELL
"A huge black-iron cauldron stands in the square.">
<COND (<IN? ,CROOCQ ,CAULDRON>
<TELL " The boy Croocq, trussed like a chicken,
<TELL " The boy Croocq, trussed like a chicken,
is inside.">)>
<RFATAL>)>>
@ -2825,7 +2971,7 @@ any cause for you to insult him. B">)
better yet, you will not be killed. But you will be taught manners.\" You
see Omi hitch up his kimono. He pisses on your back.">
<COND (,PISS-FLAG
<TELL " \"Omi-san says, it
<TELL " \"Omi-san says, it
is very bad manners to say you will piss on anyone. It is bad manners and
very stupid to say you will piss on anyone when you are unarmed. It is
very bad manners and even more stupid to say you will piss on anyone
@ -2905,6 +3051,19 @@ he removes your head." CR>
<GLOBAL ANSWER-HAI? <>>
<GLOBAL BATH-FLAG <>>
<ROUTINE CURSE-OMI ()
<COND (<NOT ,PISS-FLAG>
<SETG PISS-FLAG T>
<TELL
"You lose your composure. \"Tell him to go to hell. Tell him I piss on
him and his whole country. Tell him exactly what I said! Exactly, by
God!\" you yell at the priest. Omi listens, then the knuckles on his
sword hand whiten. You can see he is trying not to give way to his
emotions." CR>)
(ELSE
<TELL
"You continue to scream abuse at Omi." CR>)>>
<ROOM BATH-HOUSE
(LOC ROOMS)
(DESC "Bath House")
@ -2929,7 +3088,8 @@ seen, and shiver with fear." CR>)
<QUEUE I-BATH -1>
<TELL
"You enter the bath house, followed by Mura, who keeps a close eye on
you." CR CR>)>)
you." CR CR>)>
<RTRUE>)
(<RARG? BEG>
<COND (<AND <OR <P? WALK P?SOUTH>
<HOSTILE-VERB?>>
@ -3130,7 +3290,7 @@ G"It's much too heavy!" CR>)>)
<MURA-STOPS-YOU .RUIN>
<COND (<FSET? .RUIN ,WEARBIT>
<TELL
" He pantomimes removing them, and the old women
" He pantomimes removing them, and the old women
giggle and make loud remarks to him." CR>)
(ELSE <CRLF>)>)
(ELSE
@ -3197,7 +3357,7 @@ permanent?\"|
|
\"Temporary,\" Omi answers hesitantly. \"Only temporary, Lord.\"" CR>>
<END-SEGMENT>
<END-SEGMENT ;"PIT">
@ -3379,13 +3539,14 @@ in Japanese fashion while standing amidships." CR>)
(<TELL CR
CTHE ,RODRIGUES " continues to row toward the "I"Erasmus""." CR>)
(<COND (<FSET? ,ARCHERS ,SCOREBIT>
<CRLF>
<JIGS-UP
"One of the archers fires an arrow with incredible accuracy. It takes
Rodrigues in the back, and he falls. The second arrow takes you.">
<RFATAL>)
(ELSE
<TELL CR
"You are at the "I"Erasmus."" " CTHE ,RODRIGUES " ships the oars under the
"You are at the "I"Erasmus"". " CTHE ,RODRIGUES " ships the oars under the
watchful eyes of the samurai on board." CR CR>
<GOTO ,AT-ERASMUS>)>)
(<MOVE ,BOAT-OAR ,SMALL-BOAT>
@ -3512,6 +3673,10 @@ the galley, you wish you were on deck, helping. When the sea pours in and
the galley sinks, you wish so even more strongly.">
<RFATAL>>
<ROUTINE SEALED-PASSAGE ()
<TELL "Rodrigues heads immediately for
the sealed passage. \""I"Kinjiru, gomen nasai,""\" says one of the samurai." CR>>
<ROUTINE DONT-BE-STUPID ()
<TELL CR
"\"Get in here, we haven't much time! These buggers are going to start
@ -3527,4 +3692,4 @@ said they may live again in the world of men. But the smallest breaking of a
rule, and two will be put back into the pit. They are to behave and obey all
orders.\"" CR>>
<END-SEGMENT>
<END-SEGMENT ;"RODRIGUES">

328
attack.zabstr Normal file
View File

@ -0,0 +1,328 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)) ()>
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT NINJA>
<BEGIN-SEGMENT YOKOHAMA>
<OBJECT PISTOL (OWNER BLACKTHORNE) (DESC "pistol") (SYNONYM PISTOL GUN) (FLAGS
TAKEBIT WEAPONBIT) (ACTION PISTOL-F)>
<DEFINE-ROUTINE PISTOL-F>
<END-SEGMENT>
<BEGIN-SEGMENT NINJA>
<OBJECT POWDER-HORN (LOC BLACKTHORNE-QUARTERS) (DESC "powder horn") (SYNONYM
HORN POWDER) (ADJECTIVE POWDER) (FLAGS TAKEBIT) (ACTION POWDER-HORN-F)>
<DEFINE-ROUTINE POWDER-HORN-F>
<DEFINE-ROUTINE I-LOAD-PISTOL>
<GLOBAL LOAD-PISTOL-CNT 0 %<> WORD>
<DEFINE-ROUTINE MARIKO-FOLLOW-ME>
<DEFINE-ROUTINE NINJA-TALK-TO-YABU>
<DEFINE-ROUTINE NINJA-INTERRUPT-YABU>
<DEFINE-ROUTINE NINJA-FOLLOW-YABU>
<DEFINE-ROUTINE EXAMINE-MARIKO>
<DEFINE-ROUTINE NINJA-TAKE-MARIKO>
<ROOM PRIVATE-QUARTERS (LOC ROOMS) (SCENE S-NINJA) (DESC "Mariko's Quarters") (
OWNER MARIKO) (SYNONYM QUARTERS) (SCORE 6) (FDESC
"It is early in the morning of the day after Mariko's confrontation, two
or three hours before dawn. After she woke, you and Mariko had an hour
alone together. \"I still cannot believe that Ishido gave in,\" she
said. \"I knew it was my karma to bring the hostages out of Osaka. Only I could
do that for Lord Toranaga. And now it's done. But at what a cost,
neh? Madonna forgive me.\"|
|
Now you, Mariko, Kiri, Lady Etsu, and Achiko, the granddaughter of Kiyama, are
together in Mariko's quarters. You are still suspicious enough of Ishido's
intentions to be carrying your pistol.") (AFTER ETSU-AFTER-F) (NORTH TO
SECRET-REDOUBT IF SECRET-REDOUBT-DOOR IS OPEN) (IN TO SECRET-REDOUBT IF
SECRET-REDOUBT-DOOR IS OPEN) (SOUTH TO OUTER-ROOM IF NORTH-SHOJI IS OPEN) (OUT
TO OUTER-ROOM IF NORTH-SHOJI IS OPEN) (WEST TO PRIVATE-QUARTERS-2) (EAST TO
BLACKTHORNE-QUARTERS) (GLOBAL NORTH-SHOJI SECRET-REDOUBT-DOOR LG-NINJA LG-WOMEN
) (FLAGS ONBIT NOTHEBIT NOABIT) (ACTION PRIVATE-QUARTERS-F)>
<DEFINE-ROUTINE PRIVATE-QUARTERS-F>
<GLOBAL MARIKO-PLAN? <>>
<OBJECT PLAN (LOC GENERIC-OBJECTS) (DESC "plan") (SYNONYM PLAN) (ADJECTIVE
SECRET) (FLAGS SCOREBIT)>
<OBJECT CHIMMOKO (LOC OUTER-ROOM) (OWNER MARIKO) (DESC "Chimmoko") (SYNONYM
CHIMMOKO MAID) (FLAGS PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT) (ACTION
CHIMMOKO-F)>
<DEFINE-ROUTINE CHIMMOKO-F>
<DEFINE-ROUTINE I-CHIMMOKO>
<OBJECT ETSU (LOC PRIVATE-QUARTERS-2) (DESC "Lady Etsu") (SYNONYM LADY ETSU) (
ADJECTIVE LADY OLD) (FLAGS PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT) (ACTION
ETSU-F)>
<DEFINE-ROUTINE ETSU-F>
<OBJECT ACHIKO (LOC PRIVATE-QUARTERS) (DESC "Achiko") (SYNONYM ACHIKO GIRL) (
ADJECTIVE LADY YOUNG KIYAMA) (FLAGS PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT)
(ACTION ACHIKO-F)>
<DEFINE-ROUTINE ACHIKO-F>
<DEFINE-ROUTINE I-WOMEN>
<DEFINE-ROUTINE CHOREOGRAPH>
<DEFINE-ROUTINE I-MARIKO-FOLLOW>
<ROOM PRIVATE-QUARTERS-2 (LOC ROOMS) (SCENE S-NINJA) (DESC "Private Quarters")
(ADJECTIVE PRIVATE) (SYNONYM QUARTERS) (LDESC
"This is a smaller room, part of Mariko's quarters. The Lady Etsu has
been staying here.") (EAST TO PRIVATE-QUARTERS) (FLAGS ONBIT) (GLOBAL LG-NINJA
LG-WOMEN)>
<ROOM BLACKTHORNE-QUARTERS (LOC ROOMS) (SCENE S-NINJA) (DESC "Your Quarters") (
OWNER BLACKTHORNE) (SYNONYM QUARTERS ROOM) (ADJECTIVE SMALL) (LDESC
"This is a small room in which you are quartered.") (WEST TO PRIVATE-QUARTERS)
(OUT TO PRIVATE-QUARTERS) (FLAGS ONBIT) (GLOBAL LG-NINJA LG-WOMEN)>
<ROOM SECRET-REDOUBT (LOC ROOMS) (SCENE S-NINJA) (DESC "Secret Redoubt") (
SYNONYM REDOUBT BOLTHOLE HOLE HAVEN) (ADJECTIVE SECRET BOLT) (SOUTH TO
PRIVATE-QUARTERS IF SECRET-REDOUBT-DOOR IS OPEN) (NORTH TO BALCONY IF
BALCONY-DOOR IS OPEN) (OUT TO BALCONY IF BALCONY-DOOR IS OPEN) (GLOBAL
SECRET-REDOUBT-DOOR BALCONY-DOOR LG-NINJA LG-WOMEN) (FLAGS ONBIT) (ACTION
SECRET-REDOUBT-F)>
<DEFINE-ROUTINE SECRET-REDOUBT-F>
<DEFINE-ROUTINE BOLT-STATE>
<DEFINE-ROUTINE BOLTS-REMAINING>
<OBJECT BOLTS (LOC SECRET-REDOUBT) (DESC "bolt") (SYNONYM BOLT BOLTS) (
ADJECTIVE IRON FIRST SECOND THIRD) (FLAGS NDESCBIT OPENBIT OPENABLE) (COUNT 7)
(ACTION BOLTS-F)>
<DEFINE-ROUTINE BOLTS-F>
<OBJECT SECRET-REDOUBT-DOOR (LOC LOCAL-GLOBALS) (DESC "secret door") (LDESC
"The iron-bound door lies shattered in a corner.") (SYNONYM DOOR) (ADJECTIVE
SECRET HIDDEN IRON-FORTIFIED IRON) (FLAGS INVISIBLE DOORBIT LOCKABLE) (ACTION
SECRET-REDOUBT-DOOR-F)>
<DEFINE-ROUTINE SECRET-REDOUBT-DOOR-F>
<OBJECT BALCONY-DOOR (LOC LOCAL-GLOBALS) (DESC "balcony door") (SYNONYM DOOR) (
ADJECTIVE BALCONY) (FLAGS DOORBIT LOCKABLE TRYTAKEBIT) (ACTION BALCONY-DOOR-F)>
<DEFINE-ROUTINE BALCONY-DOOR-F>
<NEW-ADD-WORD "CATCHES" NOUN <VOC "CATCH"> ,PLURAL-FLAG>
<OBJECT TOP-CATCH (LOC SECRET-REDOUBT) (DESC "top catch") (SYNONYM CATCH) (
ADJECTIVE UPPER TOP RUSTY IRON) (FLAGS NDESCBIT OPENABLE LOCKED) (ACTION
CATCH-F)>
<OBJECT BOTTOM-CATCH (LOC SECRET-REDOUBT) (DESC "bottom catch") (SYNONYM CATCH)
(ADJECTIVE LOWER BOTTOM RUSTY IRON) (FLAGS NDESCBIT OPENABLE LOCKED) (ACTION
CATCH-F)>
<DEFINE-ROUTINE CATCH-F>
<ROOM BALCONY (LOC ROOMS) (DESC "Balcony") (SYNONYM BALCONY) (LDESC
"This is a small balcony surrounded by a low battlement. The night air
is cool and sweet here after the smoke and confusion inside. The only
exit is back into the redoubt. This is as far as you can retreat.") (IN TO
SECRET-REDOUBT IF BALCONY-DOOR IS OPEN) (SOUTH TO SECRET-REDOUBT IF
BALCONY-DOOR IS OPEN) (FLAGS ONBIT OUTSIDE) (GLOBAL BALCONY-DOOR LG-NINJA
LG-WOMEN) (ACTION BALCONY-F)>
<DEFINE-ROUTINE BALCONY-F>
<OBJECT NORTH-SHOJI (LOC LOCAL-GLOBALS) (DESC "inner shoji") (SYNONYM SHOJI
DOOR) (ADJECTIVE INNER) (FLAGS DOORBIT)>
<OBJECT SOUTH-SHOJI (LOC LOCAL-GLOBALS) (DESC "outer shoji") (SYNONYM SHOJI
DOOR) (ADJECTIVE OUTER) (FLAGS DOORBIT)>
<ROOM OUTER-ROOM (LOC ROOMS) (DESC "Outer Room") (SYNONYM ROOM) (ADJECTIVE
OUTER) (LDESC "This is a waiting room outside Mariko's quarters. There are shoji
screens all around. One opens north to the private rooms, and one
south to the inner corridor.") (NORTH TO PRIVATE-QUARTERS IF NORTH-SHOJI IS
OPEN) (IN TO PRIVATE-QUARTERS IF NORTH-SHOJI IS OPEN) (OUT TO INNER-CORRIDOR IF
SOUTH-SHOJI IS OPEN) (SOUTH TO INNER-CORRIDOR IF SOUTH-SHOJI IS OPEN) (FLAGS
ONBIT) (GLOBAL LG-NINJA NORTH-SHOJI SOUTH-SHOJI LG-WOMEN) (ACTION OUTER-ROOM-F)
>
<DEFINE-ROUTINE OUTER-ROOM-F>
<DEFINE-ROUTINE I-YABU-LEAVES>
<GLOBAL FOLLOW-FLAG <>>
<DEFINE-ROUTINE SETUP-FOLLOW-YABU>
<DEFINE-ROUTINE I-FOLLOW-YABU>
<GLOBAL YABU-BETRAYED? <>>
<DEFINE-ROUTINE I-YABU>
<GLOBAL YABU-CNT 0 %<> WORD>
<ROOM STAIRS (LOC ROOMS) (DESC "Winding Stairs") (SYNONYM STAIRS) (ADJECTIVE
WINDING) (LDESC "This is the main staircase leading from the tower to the cellars of Toranaga's
keep at Osaka.") (UP TO OUTER-CORRIDOR) (DOWN TO SERVANTS-QUARTERS) (FLAGS
ONBIT) (ACTION STAIRS-F)>
<DEFINE-ROUTINE STAIRS-F>
<ROOM SERVANTS-QUARTERS (LOC ROOMS) (SCENE S-NINJA) (DESC "Servants' Quarters")
(SYNONYM QUARTERS) (ADJECTIVE SERVANTS) (LDESC
"This is a crowded, narrow room full of servants. Many of them are
asleep. Others are kneeling, head to flagstones. A stairway leads
down to the cellars from here.") (UP TO STAIRS) (DOWN TO CELLARS) (FLAGS ONBIT)
(ACTION SERVANTS-QUARTERS-F)>
<DEFINE-ROUTINE SERVANTS-QUARTERS-F>
<OBJECT SERVANTS (LOC SERVANTS-QUARTERS) (DESC "servants") (SYNONYM SERVANTS
SERVANT) (FLAGS NDESCBIT PERSON JAPANESEBIT PLURAL OPENBIT CONTBIT SEARCHBIT) (
ACTION SERVANTS-F)>
<DEFINE-ROUTINE SERVANTS-F>
<ROOM CELLARS (LOC ROOMS) (DESC "Cellars") (SYNONYM CELLAR CELLARS) (UP TO
SERVANTS-QUARTERS) (GLOBAL CELLAR-DOOR) (FLAGS ONBIT SCOREBIT) (ACTION
CELLARS-F)>
<DEFINE-ROUTINE CELLARS-F>
<OBJECT BARRELS (LOC CELLARS) (DESC "crates, barrels, and boxes") (SYNONYM
CRATE BARREL BOX CRATES BARRELS BOXES PILE STACK) (FLAGS NDESCBIT FURNITURE
SURFACEBIT VEHBIT SCOREBIT) (ACTION BARRELS-F)>
<DEFINE-ROUTINE BARRELS-F>
<OBJECT CELLAR-DOOR (LOC LOCAL-GLOBALS) (DESC "iron-bound door") (SYNONYM DOOR)
(ADJECTIVE CELLAR IRON-BOUND IRON BOUND) (FLAGS AN DOORBIT LOCKABLE) (ACTION
CELLAR-DOOR-F)>
<DEFINE-ROUTINE CELLAR-DOOR-F>
<ROOM INNER-CORRIDOR (LOC ROOMS) (DESC "Inner Corridor") (SYNONYM CORRIDOR) (
ADJECTIVE INNER) (LDESC
"This inner corridor is between the Audience Chamber to the west, and
the inner apartments of the keep to the north. A sturdy iron-barred door
separates the Audience Chamber and the corridor.") (NORTH TO OUTER-ROOM IF
SOUTH-SHOJI IS OPEN) (IN TO OUTER-ROOM IF SOUTH-SHOJI IS OPEN) (WEST TO
AUDIENCE-CHAMBER IF INNER-DOOR IS OPEN) (OUT TO AUDIENCE-CHAMBER IF INNER-DOOR
IS OPEN) (GLOBAL INNER-DOOR LG-NINJA SOUTH-SHOJI GUARDS) (FLAGS ONBIT) (ACTION
INNER-CORRIDOR-F)>
<DEFINE-ROUTINE INNER-CORRIDOR-F>
<DEFINE-ROUTINE YABU-LISTENS>
<GLOBAL YABU-HEARD? <>>
<ROOM SECRET-ROOM (LOC ROOMS) (DESC "Secret Room") (SYNONYM ROOM) (ADJECTIVE
SECRET) (LDESC "This is a secret room south of the Audience Chamber. A dark and narrow
stairway leads down as well.") (NORTH TO AUDIENCE-CHAMBER IF SECRET-ROOM-DOOR
IS OPEN) (GLOBAL SECRET-ROOM-DOOR LG-NINJA) (FLAGS ONBIT) (ACTION SECRET-ROOM-F
)>
<DEFINE-ROUTINE SECRET-ROOM-F>
<OBJECT SECRET-ROOM-DOOR (LOC LOCAL-GLOBALS) (DESC "secret door") (SYNONYM DOOR
) (ADJECTIVE SECRET) (FLAGS INVISIBLE DOORBIT LOCKABLE)>
<OBJECT INNER-DOOR (LOC LOCAL-GLOBALS) (DESC "iron-barred inner door") (SYNONYM
DOOR) (ADJECTIVE IRON-BARRED IRON-BOUND INNER STURDY) (FLAGS DOORBIT OPENBIT
LOCKABLE) (ACTION INNER-DOOR-F)>
<DEFINE-ROUTINE INNER-DOOR-F>
<OBJECT IRON-BAR (LOC INNER-CORRIDOR) (DESC "iron bar") (SYNONYM BAR) (
ADJECTIVE IRON) (FLAGS NDESCBIT OPENBIT OPENABLE) (ACTION IRON-BAR-F)>
<DEFINE-ROUTINE IRON-BAR-F>
<OBJECT OUTER-DOOR (LOC LOCAL-GLOBALS) (DESC "outer door") (SYNONYM DOOR) (
ADJECTIVE OUTER) (FLAGS AN LOCKABLE DOORBIT OPENBIT)>
<DEFINE-ROUTINE I-ATTACK>
<GLOBAL ATTACK-CNT 0 %<> WORD>
<BEGIN-SEGMENT PRISON>
<OBJECT GRAY-CAPTAIN (SCENE S-NINJA S-PRISON) (OWNER <>) (DESC "Gray Captain")
(SYNONYM CAPTAIN) (ADJECTIVE GRAY) (FLAGS PERSON) (HEALTH 4) (GENERIC
GENERIC-CAPTAIN-F) (ACTION GRAY-CAPTAIN-F)>
<DEFINE-ROUTINE GRAY-CAPTAIN-F>
<END-SEGMENT>
<BEGIN-SEGMENT NINJA>
<CONSTANT J-PLUNGE 170>
<CONSTANT J-CELLAR 171>
<CONSTANT J-SHOOT 172>
<CONSTANT J-FOLLOW-CLOSE 173>
<CONSTANT J-REAR-GUARD 174>
<CONSTANT J-KILL-CAPTAIN 175>
<CONSTANT J-KILL-GUARDS 176>
<CONSTANT J-CALTROPS 177>
<OBJECT GUARDS (DESC "guards") (SYNONYM GUARDS GUARD) (ADJECTIVE SAMURAI GRAY
BROWN) (FLAGS PERSON JAPANESEBIT PLURAL NOABIT) (GENERIC GENERIC-SAMURAI-F) (
DESCFCN GUARDS-DESC) (ACTION GUARDS-F)>
<DEFINE-ROUTINE GUARDS-DESC>
<DEFINE-ROUTINE GUARDS-F>
<OBJECT LG-NINJA (LOC LOCAL-GLOBALS) (DESC "ninja") (SYNONYM NINJA FIGURE MEN)
(ADJECTIVE RED SPOT BLACK CLAD) (FLAGS INVISIBLE PERSON) (GENERIC
GENERIC-NINJA-F) (ACTION LG-NINJA-F)>
<DEFINE-ROUTINE LG-NINJA-F>
<OBJECT NINJA-LEADER (LOC SECRET-ROOM) (DESC "ninja leader") (SYNONYM LEADER
MAN) (ADJECTIVE RED SPOT NINJA) (FLAGS NDESCBIT PERSON JAPANESEBIT SCOREBIT) (
ACTION NINJA-F)>
<OBJECT NINJA (LOC SECRET-ROOM) (DESC "ninja") (SYNONYM NINJA FIGURE MEN) (
ADJECTIVE RED SPOT BLACK CLAD) (FLAGS PERSON JAPANESEBIT SCOREBIT PLURAL) (
COUNT 5) (DESCFCN NINJA-DESC) (GENERIC GENERIC-NINJA-F) (ACTION NINJA-F)>
<DEFINE-ROUTINE GENERIC-NINJA-F>
<DEFINE-ROUTINE NINJA-DESC>
<DEFINE-ROUTINE NINJA-F>
<DEFINE-ROUTINE I-CAPTAIN-RETURNS>
<DEFINE-ROUTINE I-NINJA>
<GLOBAL NINJA-COWED-CNT 0 %<> WORD>
<GLOBAL CAPTURE-CNT 0 %<> WORD>
<GLOBAL CAPTURE-CNT 0 %<> WORD>
<GLOBAL KNOCKOUT-CNT 0 %<> WORD>
<DEFINE-ROUTINE SETUP-FOLLOW-NINJA>
<DEFINE-ROUTINE I-FOLLOW-NINJA>
<DEFINE-ROUTINE I-MARIKO-STRUGGLES>
<DEFINE-ROUTINE I-NINJA-TAKE-MARIKO>
<OBJECT CALTROPS (LOC NINJA) (DESC "caltrops") (SYNONYM CALTROPS CALTROP BALLS
BALL) (ADJECTIVE TINY SPIKED METAL) (FLAGS TAKEBIT PLURAL) (ACTION CALTROPS-F)>
<GLOBAL AVOID-CALTROPS? <>>
<DEFINE-ROUTINE CALTROPS-F>
<OBJECT SMOKE-BOMB (LOC NINJA) (DESC "smoke") (SYNONYM BOMB SMOKE) (ADJECTIVE
SMOKE) (FLAGS NDESCBIT) (ACTION SMOKE-BOMB-F)>
<DEFINE-ROUTINE SMOKE-BOMB-F>
<DEFINE-ROUTINE I-REMOVE-SMOKE>
<OBJECT FIRE-BOMB (LOC NINJA) (DESC "fire bomb") (SYNONYM BOMB FIRE) (ADJECTIVE
FIRE) (FLAGS NDESCBIT) (ACTION FIRE-BOMB-F)>
<DEFINE-ROUTINE FIRE-BOMB-F>
<DEFINE-ROUTINE I-REMOVE-FIRE>
<CONSTANT MARIKO-STRUGGLES <LTABLE 0 "dragging a struggling Mariko with them."
"pulling Mariko along." "several manhandling Mariko into step with them."
"Mariko being pushed along ahead of them.">>
<GLOBAL NINJA-ATTACKING-CUL-DE-SAC? <>>
<DEFINE-ROUTINE I-NINJA-COWED>
<DEFINE-ROUTINE I-NINJA-VS-INNER-DOOR>
<GLOBAL DOOR-CNT 0 %<> WORD>
<OBJECT DOOR-CRACK (DESC "crack") (SYNONYM CRACK) (FLAGS NDESCBIT) (ACTION
DOOR-CRACK-F)>
<DEFINE-ROUTINE DOOR-CRACK-F>
<DEFINE-ROUTINE I-NINJA-VS-SECRET-DOOR>
<GLOBAL DOOR-CNT 0 %<> WORD>
<DEFINE-ROUTINE ETSU-AFTER-F>
<OBJECT ROSARY (DESC "rosary") (SYNONYM ROSARY CROSS) (ADJECTIVE GOLD TINY
GOLDEN) (FLAGS TAKEBIT WEARBIT) (ACTION ROSARY-F)>
<DEFINE-ROUTINE ROSARY-F>
<END-SEGMENT>
<BEGIN-SEGMENT YOKOHAMA>
<CONSTANT J-GRAB-PISTOL 180>
<ROOM YOKOHAMA (LOC ROOMS) (SCENE S-YOKOHAMA) (DESC "Yokohama") (FDESC
"You recuperate for a few days, and then, to your surprise, your guards are
gone. You are taken down to the dock, where you are met by the Captain-General
of the Black Ship, Ferriera, and dell'Aqua, the Father-Visitor of the Jesuits.|
|
Dell'Aqua says, \"Pilot, I'm taking you to your galley. Are you all right?\"|
|
\"You're really letting me go? Why?\"|
|
\"Because the Lady Mariko asked us to protect you.\"|
|
\"But that's no reason! You wouldn't do that just because she asked you.\"|
|
\"I agree,\" Ferriera says. \"Eminence, why not tell him the whole truth?\"|
|
\"It doesn't make sense. You know I'm going to destroy you. I'll take your
Black Ship.\"|
|
Ferriera laughs scornfully. \"With what, Ingeles? You have no ship!\"") (
FLAGS OUTSIDE ONBIT SCOREBIT) (SCORE 1) (GLOBAL LG-ERASMUS LG-SEA) (ACTION
YOKOHAMA-F)>
<DEFINE-ROUTINE YOKOHAMA-F>
<OBJECT HEADS (LOC YOKOHAMA) (DESC "severed heads") (SYNONYM HEADS HEAD POLE
POLES REMAINS) (ADJECTIVE SEVERED GRISLY DEAD) (FLAGS NDESCBIT) (ACTION HEADS-F
)>
<DEFINE-ROUTINE HEADS-F>
<DEFINE-ROUTINE I-VINCK-NUTS>
<GLOBAL VINCK-CNT 0 %<> WORD>
<END-SEGMENT>
<BEGIN-SEGMENT AFTERMATH>
<ROOM STABLE (LOC ROOMS) (SCENE S-AFTERMATH) (SCORE 3) (AFTER NEVER-AFTER-F) (
FDESC "Toranaga is checking the girths of his saddle. Deftly he knees the
horse in the belly, her stomach muscles relax, and he tightens the
strap another two notches. Rotten animal, he thinks, despising horses
for their constant trickeries and treacheries and ill-tempered
dangerousness. He waits a moment and knees the horse hard again. The
horse grunts and rattles her bridle and he tightens the straps completely.|
|
\"Good, Sire! Very good,\" the Hunt Master says with admiration. \"Many
would have been satisfied the first time.\"") (DESC "Stable") (SYNONYM STABLE)
(LDESC "This is the stable area of the camp at Anjiro.") (FLAGS ONBIT OUTSIDE)
(GLOBAL LG-SHIP LG-NINJA CELLAR-DOOR) (ACTION STABLE-F)>
<DEFINE-ROUTINE STABLE-F>
<DEFINE-ROUTINE I-STABLE>
<GLOBAL STABLE-CNT 0 %<> WORD>
<DEFINE-ROUTINE TORANAGA-LOSES-PATIENCE>
<DEFINE-ROUTINE BUILD-ANOTHER-SHIP>
<DEFINE-ROUTINE AFTERMATH-ANSWERS>
<DEFINE-ROUTINE YABU-BETRAYED-YOU>
<DEFINE-ROUTINE YABU-LET-IN-NINJA?>
<GLOBAL AFTERMATH-QUESTION <>>
<OBJECT SEALED-SCROLL (SDESC "sealed scroll") (OWNER MARIKO) (SCENE S-AFTERMATH
) (SYNONYM SCROLL LETTER MESSAGE SEAL) (ADJECTIVE SEALED RICE-PAPER) (FLAGS
CONTBIT SEARCHBIT TAKEBIT READBIT SCOREBIT OPENABLE) (ACTION SEALED-SCROLL-F)>
<DEFINE-ROUTINE SEALED-SCROLL-F>
<OBJECT PEDESTAL (DESC "pedestal") (SCENE S-AFTERMATH) (SYNONYM PEDESTAL SPIKE)
(ADJECTIVE SMALL) (FLAGS OPENBIT CONTBIT SEARCHBIT TAKEBIT) (ACTION YABU-HEAD-F
)>
<OBJECT YABU-HEAD (LOC PEDESTAL) (DESC "head") (SCENE S-AFTERMATH) (OWNER YABU)
(SYNONYM HEAD MASK) (ADJECTIVE DEATH) (FLAGS PERSON DEAD TAKEBIT) (ACTION
YABU-HEAD-F)>
<DEFINE-ROUTINE YABU-HEAD-F>
<DEFINE-ROUTINE NEVER-AFTER-F>
<END-SEGMENT>
<BEGIN-SEGMENT SEKIGAHARA>
<ROOM SEKIGAHARA (LOC ROOMS) (SCENE S-EPILOGUE) (DESC "Sekigahara") (FLAGS
ONBIT) (SCORE 0) (ACTION SEKIGAHARA-F)>
<DEFINE-ROUTINE SEKIGAHARA-F>
<END-SEGMENT>

2700
attack.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,7 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT NINJA>
<BEGIN-SEGMENT YOKOHAMA>
<OBJECT PISTOL
(OWNER BLACKTHORNE)
@ -39,6 +40,9 @@ your grasp by the force of the explosion!" CR>)
(ELSE
<TELL "It's already loaded." CR>)>)>>
<END-SEGMENT ;"NINJA+YOKOHAMA">
<BEGIN-SEGMENT NINJA>
<OBJECT POWDER-HORN
(LOC BLACKTHORNE-QUARTERS)
(DESC "powder horn")
@ -81,6 +85,216 @@ plug." CR>)
G"You continue loading the pistol. Next"", blow the dust carefully away from
the flint. Finished!" CR>)>>
<ROUTINE MARIKO-FOLLOW-ME ()
<COND (<NOT <IN? ,MARIKO ,HERE>>
<COND (<NEXT-ROOM? <LOC ,MARIKO>>
<COND (<QUEUED? I-NINJA-TAKE-MARIKO>
<TELL
"Mariko is struggling with the ninja in the next room. They are trying to
abduct her!" CR>)
(ELSE
<TELL
"Mariko is in the next room." CR>)>)
(ELSE
<TELL
"You no longer know where Mariko is." CR>)>)
(<HERE? ,SECRET-REDOUBT ,BALCONY>
<TELL
"\"No, Anjin-san, I can no longer follow.\"" CR>)
(<QUEUED? I-NINJA-TAKE-MARIKO>
<TELL
"She struggles to free herself from the ninja, but she
can't. \"Help me, Anjin-san!\" she yells." CR>)
(ELSE
<QUEUE I-MARIKO-FOLLOW -1>
<COND (<QUEUED? I-NINJA>
<COND (,CAPTURE-CNT
<TELL
"\"You can't let them take me">)
(ELSE
<TELL
"\"I'll stay close by">)>
<TELL
", Anjin-san.\" she replies." CR>)
(<QUEUED? I-NINJA-COWED>
<TELL
"\"I'm coming!\" she says, rushing to your side." CR>)
(ELSE
<TELL
"\"I will follow you,\" she replies." CR>)>
<SCORE-OBJECT ,MARIKO>)>>
<ROUTINE NINJA-TALK-TO-YABU ()
<COND (<VERB? TELL-ME-ABOUT WHAT>
<COND (<PRSO? ,PLAN>
<COND (<FSET? ,MARIKO ,RMUNGBIT>
<TELL
"Yabu is very nervous. \"I know nothing of any plan!\" he blusters." CR>)
(ELSE
<COND (<ADJ-USED? ,PLAN ,W?SECRET>
<TELL "\"No secret">)
(ELSE
<TELL "\"So sorry">)>
<TELL
", Anjin-san. You misunderstood. Say only must have plan. Very
difficult escape Osaka, neh? Understand?\" Yabu appears somewhat
nervous." CR>
<SCORE-OBJECT ,PLAN>)>)
(<PRSO? ,NINJA ,LG-NINJA>
<TELL
"\"Ninja! Filthy assassins! Who would use ninja! Filth!\" He seems very
agitated and nervous." CR>)
(<PRSO? ,MARIKO>
<COND (<FSET? ,MARIKO ,RMUNGBIT>
<TELL
"\"Mariko is dead, Anjin-san.\"" CR>)
(ELSE
<TELL
"\"She has done a very foolish thing, Anjin-san,\" he says
vehemently. He seems to be suppressing an even stronger response. He is very
nervous." CR>)>)>)
(<AND <VERB? YES HAI>
<HERE? ,OUTER-ROOM>>
<COND (<NOT <FSET? ,PLAN ,SCOREBIT>>
<TELL
"\"Very good, Anjin-san,\" Yabu replies, looking much relieved." CR>)
(<EQUAL? ,YABU-CNT 1 2>
<TELL
"\"Good, good!\" Yabu nods. \"Very worried about Lady Toda.\" He
smiles." CR>)>)
(<AND <VERB? NO IYE>
<HERE? ,OUTER-ROOM>>
<COND (<NOT <FSET? ,PLAN ,SCOREBIT>>
<TELL
"\"Don't worry, Anjin-san,\" Yabu replies, trying to look
unworried." CR>)
(<EQUAL? ,YABU-CNT 1 2>
<TELL
"\"There is no plan, Anjin-san!\" Yabu says. \"I'm only worried about
Lady Toda.\"" CR>)>)
(ELSE
<YABU-WAKARIMASEN>)>>
<ROUTINE NINJA-INTERRUPT-YABU ()
<COND (<JIGS-UP? ,J-CALL-YABU
"You're supposed to be following him, not talking to him!">
<TELL
"Yabu seems surprised to hear you call to him. He turns and says something
to you in an angry tone of voice. You hear the word \""I"kinjiru""\", which
means 'forbidden.' Then Yabu draws his killing sword, advances on you, and
removes your head.">
<JIGS-UP>
<RFATAL>)
(ELSE
<COND (<VERB? TELL>
<END-QUOTE>
<RFATAL>)
(ELSE <RTRUE>)>)>>
<ROUTINE NINJA-FOLLOW-YABU ("AUX" RM)
<SET RM <LOC ,YABU>>
<COND (<HERE? .RM>
<COND (<HERE? ,CELLARS>
<TELL
"He doesn't appear to be going anywhere." CR>)
(,FOLLOW-FLAG
<TELL
"You continue following him, keeping well behind and being as quiet
as possible." CR>)
(ELSE
<SETUP-FOLLOW-YABU>
<TELL
"You follow Yabu, doing your best to avoid being noticed." CR>)>)
(<NEXT-ROOM? .RM>
<COND (,FOLLOW-FLAG
<COND (<HERE? ,INNER-CORRIDOR>
<TELL
"You follow warily behind him, keeping out of sight." CR>)
(<HERE? ,AUDIENCE-CHAMBER>
<TELL
"You follow behind him, bowing to the guards but keeping far enough
behind Yabu that he doesn't know he's being followed." CR>)
(<HERE? ,OUTER-CORRIDOR>
<TELL
"You follow him, letting him get one turn ahead of you on the stairs." CR>)
(<HERE? ,STAIRS>
<TELL
"You slip silently into the servants' quarters, and they stare at you
but don't move. Yabu is heading towards a stairway leading down." CR>)
(<HERE? ,SERVANTS-QUARTERS>
<TELL
"You follow Yabu at a safe distance, sometimes almost losing him in
the labyrinthine cellars. He reaches a large, dimly-lit room full of
boxes and barrels." CR>)
(ELSE
<TELL
"You follow behind as silently and stealthily as you can." CR>)>)
(ELSE
<SETUP-FOLLOW-YABU>
<TELL "You begin following Yabu, ">
<COND (<HERE? ,OUTER-ROOM>
<TELL
"hoping he won't lose you." CR>)
(ELSE
<TELL
"keeping far enough behind that he doesn't realize
he's being followed." CR>)>)>
<CRLF>
<GOTO .RM>
<RTRUE>)
(ELSE
<SETG FOLLOW-FLAG <>>
<TELL "You've lost him!" CR>)>>
<ROUTINE EXAMINE-MARIKO ()
<COND (<FSET? ,MARIKO ,RMUNGBIT>
<COND (<FSET? ,MARIKO ,DEAD>
<TELL
"She seems at peace, sleeping. You move the kimono aside, then
put it back again. Her pulse is almost imperceptible. Then it
ceases.">)
(ELSE
<TELL
"Lady Mariko is broken and dying. She is still alive, but fading
rapidly.">)>
<TELL
" Her face is hardly touched but her body is terribly
mutilated. Around her neck is her rosary, the tiny golden cross
lying on her throat." CR>)
(<QUEUED? I-NINJA-TAKE-MARIKO>
<TELL
"Lady Mariko is struggling to free herself." CR>)
(<QUEUED? I-NINJA>
<TELL
"Lady Mariko looks like the samurai she is, brave and fearless, intent upon
her purpose." CR>)
(ELSE
<TELL
"Lady Mariko looks tired, but delicate and beautiful. The effects of the
afternoon are still with her, but she is content to be here with you." CR>)>>
<ROUTINE NINJA-TAKE-MARIKO ()
<COND (<FSET? ,MARIKO ,RMUNGBIT>
<COND (<FSET? ,BLACKTHORNE ,RMUNGBIT>
<TELL
"You're too far away. You'll have to get closer somehow." CR>)
(ELSE
<MOVE ,MARIKO ,WINNER>
<TELL
"You take her in your arms, her broken body so small it feels like
she can hardly be real." CR>)>)
(<IN? ,MARIKO ,SECRET-REDOUBT>
<MOVE ,MARIKO ,WINNER>
<QUEUE I-MARIKO-STRUGGLES -1>
<TELL
"You grab her, dragging her toward the balcony, but she tries to get
away. \"No, Anjin-san! I must stay here!\"" CR>)
(ELSE
<SETG WINNER ,MARIKO>
<PERFORM ,V?FOLLOW>
<SETG WINNER ,PLAYER>
<RTRUE>)>>
<ROOM PRIVATE-QUARTERS
(LOC ROOMS)
(SCENE S-NINJA)
@ -93,8 +307,8 @@ the flint. Finished!" CR>)>>
or three hours before dawn. After she woke, you and Mariko had an hour
alone together. \"I still cannot believe that Ishido gave in,\" she
said. \"I knew it was my karma to bring the hostages out of Osaka. Only I could
do that for Lord Toranaga. And now it's done. But at what a cost, neh?
Madonna forgive me.\"|
do that for Lord Toranaga. And now it's done. But at what a cost,
neh? Madonna forgive me.\"|
|
Now you, Mariko, Kiri, Lady Etsu, and Achiko, the granddaughter of Kiyama, are
together in Mariko's quarters. You are still suspicious enough of Ishido's
@ -132,7 +346,7 @@ the west, your room to the east, and an outer room which leads to a
corridor on the south.">
<COND (<NOT <FSET? ,SECRET-REDOUBT-DOOR ,INVISIBLE>>
<TELL
" On the north wall is the iron-bound door to Lord Toranaga's secret
" On the north wall is the iron-bound door to Lord Toranaga's secret
room.">)>
<CRLF>)
(<RARG? BEG>
@ -222,7 +436,7 @@ well oiled. \"This is my Master's secret haven,\" she pants." CR>)>)>>
"Chimmoko, Mariko's servant, enters and bows. \"Lord Yabu wishes to
speak with the Anjin-san,\" she says.">
<COND (<NOT <HERE? <LOC ,YABU>>>
<TELL " \"He is waiting in the outer room.\"">)>
<TELL " \"He is waiting in the outer room.\"">)>
<CRLF>)
(ELSE
<QUEUE I-CHIMMOKO 1>)>)>>
@ -435,70 +649,6 @@ been staying here.")
(FLAGS ONBIT)
(GLOBAL LG-NINJA LG-WOMEN)>
<OBJECT SWORDS
(OWNER BLACKTHORNE)
(DESC "swords")
(SYNONYM SWORDS SWORD SELLER)
(ADJECTIVE PAIR KILLING STABBING OIL LONG SHORT)
(FLAGS TAKEBIT WEARABLE WEAPONBIT NOABIT SCOREBIT PLURAL)
(GENERIC GENERIC-SWORD-F)
(ACTION SWORDS-F)>
<ROUTINE SWORDS-F ()
<COND (<VERB? EXAMINE>
<COND (<FSET? ,SWORDS ,RMUNGBIT>
<FCLEAR ,SWORDS ,RMUNGBIT>
<FSET ,SWORDS ,SCOREBIT>
<SCORE-OBJECT ,SWORDS>
<TELL
"You quickly check your sword belt. It's loose, almost ready to fall
off! What a stroke of luck you checked it! How embarrassing if it had
fallen off!" CR>)
(ELSE
<TELL
"You have a pair of samurai swords, one the long killing sword">
<COND (<G? ,SCENE ,S-QUAKE>
<TELL
" named 'Oil Seller'">)>
<TELL ", and
the other the shorter stabbing sword." CR>)>)
(<AND <VERB? WHO WHAT>
<NOUN-USED? ,PRSO ,W?SELLER>>
<TELL
"The name comes from an experience you would rather forget. One day
hunting with Toranaga, your path had been blocked by a weather-beaten
old oil
seller. Cursing, you commanded him to move, and he cursed you
back. Toranaga pointed to one of his bodyguards, asked you to give him
your sword, and before you realized what was happening, the samurai
lunged at the peddler. He walked on a pace before falling, divided
in two at the waist. Toranaga suggested you call your sword 'Oil
Seller' in honor of the incident. \"Your sword has now become legend.\"" CR>)
(<VERB? WEAR>
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
<FSET ,PRSO ,WEARBIT>
<TELL
"You shove the sword into your sash." CR>)
(ELSE
<TELL "The sword is already in your sash." CR>)>)
(<AND <VERB? TAKE>
<NOT <HELD? ,PRSO>>>
<COND (<EQUAL? <ITAKE> T>
<FSET ,SWORDS ,WEARBIT>
<TELL
"You take the sword and shove it into your sash." CR>)
(ELSE <RTRUE>)>)
(<OR <AND <VERB? DRAW PICK USE TAKE>
<HELD? ,PRSO>>
<P? PUT * HANDS>>
<COND (<FSET? ,PRSO ,WEARBIT>
<FCLEAR ,PRSO ,WEARBIT>
<TELL
"Your skill with the sword is not great, but you are now as ready as
you will ever be!" CR>)
(ELSE
<TELL "You've already drawn your sword." CR>)>)>>
<ROOM SECRET-REDOUBT
(LOC ROOMS)
(SCENE S-NINJA)
@ -668,10 +818,10 @@ G"You would have to walk right through the ninja!" CR>)>)>>
"This is a heavy, iron-bound door. It looks very strong.">
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL
" The door is open now.">)>
" The door is open now.">)>
<COND (<HERE? ,SECRET-REDOUBT>
<TELL
" There are three iron bolts to secure the door, ">
" There are three iron bolts to secure the door, ">
<BOLT-STATE .CNT>
<TELL "." CR>)>
<CRLF>)
@ -679,11 +829,17 @@ G"You would have to walk right through the ninja!" CR>)>)>>
<COND (<EQUAL? .CNT 7> <RFALSE>)
(ELSE <TELL "The door is still bolted." CR>)>)
(<VERB? LOCK>
<PERFORM ,V?CLOSE ,BOLTS>
<RTRUE>)
<COND (<HERE? PRIVATE-QUARTERS>
<TELL "The door doesn't lock from this side." CR>)
(ELSE
<PERFORM ,V?CLOSE ,BOLTS>
<RTRUE>)>)
(<VERB? UNLOCK>
<PERFORM ,V?OPEN ,BOLTS>
<RTRUE>)>>
<COND (<HERE? PRIVATE-QUARTERS>
<TELL "The door doesn't unlock from this side." CR>)
(ELSE
<PERFORM ,V?OPEN ,BOLTS>
<RTRUE>)>)>>
<OBJECT BALCONY-DOOR
(LOC LOCAL-GLOBALS)
@ -887,7 +1043,8 @@ G"You would have to walk right through the ninja!" CR>)>)>)>)
<QUEUE I-YABU -1>
<TELL
"As you enter, you see Yabu waiting impatiently. Beyond him you see
a guard watching curiously." CR CR>)>)>>
a guard watching curiously." CR CR>)>
<RTRUE>)>>
<ROUTINE I-YABU-LEAVES ()
<COND (<L? ,YABU-CNT 3>
@ -1128,7 +1285,7 @@ bowing abjectly and pretending not to exist." CR>)
mildewed, though well-lit. Crates, boxes and barrels are everywhere.">
<COND (,YABU-BETRAYED?
<TELL
" An ">
" An ">
<COND (<FSET? ,CELLAR-DOOR ,OPENBIT>
<TELL "open ">)>
<TELL "iron-bound door is set in the east wall.">)>
@ -1340,22 +1497,33 @@ CTHE ,GUARDS G" stop you from closing the door." CR>)>)
<ROUTINE IRON-BAR-F ()
<COND (<VERB? EXAMINE>
<TELL-OPEN-CLOSED>)
<COND (<OR <HERE? ,INNER-CORRIDOR>
<FSET? ,INNER-DOOR ,OPENBIT>>
<TELL-OPEN-CLOSED>)
(ELSE
<TELL G"You can't see " THE ,PRSO " from here." CR>)>)
(<AND <VERB? OPEN>
<NOT <FSET? ,IRON-BAR ,OPENBIT>>>
<FSET ,IRON-BAR ,OPENBIT>
<FCLEAR ,INNER-DOOR ,LOCKED>
<TELL
<COND (<OR <HERE? ,INNER-CORRIDOR>
<FSET? ,INNER-DOOR ,OPENBIT>>
<FSET ,IRON-BAR ,OPENBIT>
<FCLEAR ,INNER-DOOR ,LOCKED>
<TELL
"You slide the bar aside." CR>)
(ELSE
<TELL G"You can't open " THE ,PRSO " from here." CR>)>)
(<AND <VERB? CLOSE>
<FSET? ,IRON-BAR ,OPENBIT>>
<COND (<AND <IN? ,GRAY-CAPTAIN ,AUDIENCE-CHAMBER>
<COND (<AND <HERE? ,AUDIENCE-CHAMBER>
<NOT <FSET? ,INNER-DOOR ,OPENBIT>>>
<TELL G"You can't close " THE ,PRSO " from here." CR>)
(<AND <IN? ,GRAY-CAPTAIN ,AUDIENCE-CHAMBER>
<NOT <FSET? ,GRAY-CAPTAIN ,DEAD>>>
<TELL
CTHE ,GUARDS G" stop you from barring the door." CR>)
CTHE ,GRAY-CAPTAIN " stops"G" you from barring the door." CR>)
(<IN? ,GUARDS ,AUDIENCE-CHAMBER>
<TELL
CTHE ,GUARDS G" stop you from barring the door." CR>)
CTHE ,GUARDS " stop"G" you from barring the door." CR>)
(ELSE
<FCLEAR ,IRON-BAR ,OPENBIT>
<FSET ,INNER-DOOR ,LOCKED>
@ -1402,7 +1570,7 @@ screams, and the clash of swords fill the air." CR>)
G"The sounds of ""battle continue, a violent shouting melee.">
<COND (<HERE? ,AUDIENCE-CHAMBER ,OUTER-CORRIDOR
,INNER-CORRIDOR>
<TELL " The frantic
<TELL " The frantic
guards at the fortified door to the outer corridor listen anxiously to
the mounting holocaust below.">)>
<CRLF>)
@ -1433,6 +1601,8 @@ inner corridor." CR>)
"Now the captain of the Grays leaves the audience chamber." CR>)>)
(ELSE <RFALSE>)>)>>
<BEGIN-SEGMENT PRISON>
<OBJECT GRAY-CAPTAIN
(SCENE S-NINJA S-PRISON)
(OWNER <>)
@ -1477,11 +1647,11 @@ the hostages and his desire to destroy the attackers." CR>)
"You fire the pistol, killing the captain instantly.">
<COND (<IN? ,GUARDS ,HERE>
<JIGS-UP
" The other guards turn and immediately assume this is a
" The other guards turn and immediately assume this is a
betrayal. They cut you down in short order.">)
(ELSE
<TELL
" As the gray guards aren't here, you may get away with it." CR>)>)
" As the gray guards aren't here, you may get away with it." CR>)>)
(ELSE <RTRUE>)>)>)
(<AND <HOSTILE-VERB?>
<NOT <FSET? ,GRAY-CAPTAIN ,DEAD>>>
@ -1491,6 +1661,10 @@ betrayal. They cut you down in short order.">)
some scheme of betrayal, he fights back, and you are dispatched quickly.">)
(ELSE <RTRUE>)>)>>
<END-SEGMENT ;"NINJA+PRISON">
<BEGIN-SEGMENT NINJA>
<CONSTANT J-PLUNGE 170>
<CONSTANT J-CELLAR 171>
<CONSTANT J-SHOOT 172>
@ -1680,6 +1854,8 @@ and dispatches you before you can escape.">)>
<RFATAL>)>
<SETG KNOCKOUT-CNT 0>
<COND (<NOT <FSET? ,BALCONY ,TOUCHBIT>>
<COND (<IN? ,MARIKO ,HERE>
<SETG CAPTURE-CNT 0>)>
<QUEUE I-NINJA-COWED <GETP ,NINJA ,P?COUNT>>)>
<FSET ,PISTOL ,RMUNGBIT>
<COND (<AND <OR <HERE? ,AUDIENCE-CHAMBER>
@ -1694,7 +1870,7 @@ and dispatches you before you can escape.">)>
momentarily stopping the charge.">
<COND (<NOT <FSET? ,GRAY-CAPTAIN ,DEAD>>
<TELL
" The shot alerts the Captain of the Grays.">)>
" The shot alerts the Captain of the Grays.">)>
<CRLF>
<SCORE-OBJECT ,NINJA>)
(ELSE
@ -1963,7 +2139,8 @@ be sure where they've headed." CR>)>)
<COND (<HELD? ,MARIKO>
<TELL CR
"Mariko tries to break free of your hold." CR>)
(<FSET? ,MARIKO ,DEAD>
(<OR <FSET? ,MARIKO ,DEAD>
<FSET? ,MARIKO ,RMUNGBIT>>
<DEQUEUE I-MARIKO-STRUGGLES>
<RFALSE>)
(ELSE
@ -2060,7 +2237,7 @@ floor." CR>)>)>
"The ninja retreat, " <PICK-ONE ,MARIKO-STRUGGLES>>
<COND (<AND <EQUAL? ,FOLLOW-FLAG ,NINJA>
<HERE? .L>>
<TELL " You follow, fighting your way
<TELL " You follow, fighting your way
through the chaos, trying to catch up." CR CR>
<GOTO .D>)
(ELSE <CRLF>)>
@ -2333,9 +2510,10 @@ into the room"><TELL ", killing you instantly." CR>
<COND (<IN? ,PISTOL ,BLACKTHORNE>
<MOVE ,PISTOL ,HERE>
<FSET ,PISTOL ,NDESCBIT>)>
<MARGINAL-PIC ,P-EXPLOSION <>
,P-EXPLOSION-CORNER>
<TELL CR
<COND (<NOT <MARGINAL-PIC ,P-EXPLOSION <>
,P-EXPLOSION-CORNER>>
<CRLF>)>
<TELL
"Mariko presses back against the iron and calls out firmly, \"I, Toda
Mariko, protest this shameful attack and by my death --\"">
<TELL G" The explosion
@ -2394,8 +2572,7 @@ dead." CR>)>)>)
(<AND <FSET? ,MARIKO ,RMUNGBIT>
<FSET? ,MARIKO ,SCOREBIT>>
<RFALSE>)>)
(<DEQUEUE I-NINJA-VS-SECRET-DOOR>
<TELL CR
(<TELL CR
"Your head seems to burst with red and purple light and you
collapse. Kind hands catch you and help you to the floor." CR>
<NEXT-SCENE>)>>
@ -2414,7 +2591,7 @@ She mounts painfully to the battlement. Everyone bows to her.|
|
\"I have told the truth. I attest to it by my death,\" she says. Then
she closes her eyes thankfully and lets herself fall forward to welcome
death.">>
death." CR>>
<OBJECT ROSARY
(DESC "rosary")
@ -2445,7 +2622,7 @@ her, only to love her. You replace the rosary." CR>)>>
(FDESC
"You recuperate for a few days, and then, to your surprise, your guards are
gone. You are taken down to the dock, where you are met by the Captain-General
of the Black Ship, Ferriera, and Dell'Aqua, the Father-Visitor of the Jesuits.|
of the Black Ship, Ferriera, and dell'Aqua, the Father-Visitor of the Jesuits.|
|
Dell'Aqua says, \"Pilot, I'm taking you to your galley. Are you all right?\"|
|
@ -2836,7 +3013,6 @@ Omi says,|
But an escape from death?'\"|
|
Toranaga smiles." CR>
<DEQUEUE I-STABLE>
<NEXT-SCENE>)>>
<ROUTINE TORANAGA-LOSES-PATIENCE ()
@ -3047,7 +3223,8 @@ a truce, and make peace. I ask it because of Mariko-sama.\"|
<CENTER-PIC ,P-CREST>
<SET Y <+ <WINGET 4 ,WHIGH> <WINGET 4 ,WTOP>>>
<WINDEF ,S-TEXT .Y .LEFT <- <LOWCORE VWRD> .Y 1> .WIDE>
<SCREEN ,S-TEXT>)
<SCREEN ,S-TEXT>
<RTRUE>)
(<RARG? LOOK>
<TELL
"That year, at dawn on the twenty-first day of the tenth month, the

207
audience.zabst Normal file
View File

@ -0,0 +1,207 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT AUDIENCE>
<CONSTANT J-JOKE 70>
<CONSTANT J-SIT 71>
<BEGIN-SEGMENT NINJA>
<ROOM OUTER-CORRIDOR (LOC ROOMS) (SCENE S-TORANAGA) (AFTER
ISHIDO-VS-TORANAGA-AFTER-F) (DESC "Outer Corridor") (SYNONYM CORRIDOR) (
ADJECTIVE OUTER) (PICTURE P-OSAKA) (SCORE 3) (FDESC
"You take your leave of Rodrigues, and then you are on deck,
your mind whirling from the impact of Osaka, its immensity, the teeming
anthills
of people, and the enormous castle that dominates the city. From within
the castle's vastness comes the soaring beauty of the donjon, seven or
eight stories high, pointed gables with curved roofs at each level,
the tiles all gilded and the walls blue.|
|
The next day you are brought by Hiro-matsu to Toranaga's keep within
the castle.") (IN TO AUDIENCE-CHAMBER IF OUTER-DOOR IS OPEN) (EAST TO
AUDIENCE-CHAMBER IF OUTER-DOOR IS OPEN) (WEST PER STAIRS-EXIT) (DOWN PER
STAIRS-EXIT) (GLOBAL OUTER-DOOR LG-NINJA) (FLAGS ONBIT) (ACTION
OUTER-CORRIDOR-F)>
<DEFINE-ROUTINE STAIRS-EXIT>
<DEFINE-ROUTINE OUTER-CORRIDOR-F>
<ROOM AUDIENCE-CHAMBER (LOC ROOMS) (DESC "Audience Chamber") (SYNONYM CHAMBER
ROOM) (ADJECTIVE AUDIENCE) (WEST TO OUTER-CORRIDOR IF OUTER-DOOR IS OPEN) (EAST
TO INNER-CORRIDOR IF INNER-DOOR IS OPEN) (IN TO INNER-CORRIDOR IF INNER-DOOR IS
OPEN) (SOUTH TO SECRET-ROOM IF SECRET-ROOM-DOOR IS OPEN) (GLOBAL INNER-DOOR
OUTER-DOOR SECRET-ROOM-DOOR LG-NINJA LG-MEN LG-WOMEN) (FLAGS ONBIT SCOREBIT) (
ACTION AUDIENCE-CHAMBER-F)>
<GLOBAL POINTEE ALVITO>
<DEFINE-ROUTINE AUDIENCE-CHAMBER-F>
<OBJECT VASE (LOC AUDIENCE-CHAMBER) (DESC "vase") (SYNONYM VASE) (ADJECTIVE
EARTHENWARE CERAMIC) (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT OPENBIT CONTBIT
SEARCHBIT) (CAPACITY 10) (ACTION VASE-F)>
<DEFINE-ROUTINE VASE-F>
<OBJECT FLOWER (LOC VASE) (DESC "cherry blossom") (SYNONYM SPRAY FLOWER BLOSSOM
) (ADJECTIVE CHERRY) (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT) (ACTION FLOWER-F)>
<DEFINE-ROUTINE FLOWER-F>
<OBJECT DAIS (LOC AUDIENCE-CHAMBER) (DESC "dais") (OWNER TORANAGA) (SYNONYM
DAIS) (FLAGS NDESCBIT SCOREBIT OPENBIT CONTBIT VEHBIT SEARCHBIT)>
<END-SEGMENT>
<BEGIN-SEGMENT AUDIENCE>
<DEFINE-ROUTINE ISHIDO-VS-TORANAGA-AFTER-F>
<OBJECT FALCON (DESC "peregrine") (OWNER TORANAGA) (SYNONYM FALCON PEREGRINE
WORK) (FLAGS NDESCBIT RMUNGBIT) (ACTION FALCON-F)>
<DEFINE-ROUTINE FALCON-F>
<OBJECT TORANAGAS-GUARDS (DESC "samurai guards") (OWNER TORANAGA) (SYNONYM
GUARDS SAMURAI) (FLAGS NDESCBIT PERSON JAPANESEBIT PLURAL OPENBIT CONTBIT
SEARCHBIT NOABIT THE) (GENERIC GENERIC-SAMURAI-F) (ACTION TORANAGAS-GUARDS-F)>
<DEFINE-ROUTINE TORANAGAS-GUARDS-F>
<OBJECT ALVITO (LOC GENERIC-OBJECTS) (SCENE S-TORANAGA) (SDESC
"tonsured priest") (SYNONYM ALVITO PRIEST MAN FATHER JESUIT) (ADJECTIVE FATHER
MARTIN TONSURED LEAN-FACED PORTUGUESE) (PICTURE P-ALVITO) (FLAGS PERSON
PORTUGUESEBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT) (GENERIC GENERIC-MAN-F) (
ACTION ALVITO-F)>
<DEFINE-ROUTINE ALVITO-F>
<DEFINE-ROUTINE ALVITO-SPEAKS>
<GLOBAL ALVITO-TRANSLATES? <>>
<DEFINE-ROUTINE I-AUDIENCE>
<GLOBAL AUDIENCE-CNT 0 %<> WORD>
<END-SEGMENT>
<BEGIN-SEGMENT PRISON>
<OBJECT LG-LINE (LOC LOCAL-GLOBALS) (SCENE S-PRISON) (DESC "line") (SYNONYM
LINE) (FLAGS NDESCBIT VEHBIT SCOREBIT) (ACTION LG-LINE-F)>
<DEFINE-ROUTINE LG-LINE-F>
<ROOM PRISON (LOC ROOMS) (SCENE S-PRISON S-MARIKO) (SCORE 6) (DESC "Cell Block"
) (AFTER PRISON-AFTER-F) (SYNONYM PRISON JAIL CELL BLOCK) (ADJECTIVE CELL) (
FDESC "Toranaga's guards take you to the prison, strip you, and force you
through the door of one of the cell blocks.|
|
At dawn it is feeding time and the guards pass out cups of gruel
and water through a small opening. The lining up for food and water
is unusually calm -- without discipline no one would eat. You take
your ration and pick your way over the bodies toward a corner.") (LDESC
"This murky and suffocating room is fifty paces long and ten wide and
packed with naked, sweating Japanese. Scarcely any light filters through
the boards and beams that make up the walls and low ceiling. A heavy iron
door seals the prisoners in.") (OUT TO PRISON-COURTYARD IF IRON-DOOR IS OPEN) (
EAST TO PRISON-COURTYARD IF IRON-DOOR IS OPEN) (FLAGS ONBIT) (GLOBAL LG-LINE
IRON-DOOR PRISON MADMAN) (THINGS <> PRISONER PRISONER-PSEUDO <> PRISONERS
PRISONER-PSEUDO) (ACTION PRISON-F)>
<DEFINE-ROUTINE PRISONER-PSEUDO>
<DEFINE-ROUTINE PRISON-F>
<OBJECT IRON-DOOR (SCENE S-PRISON) (LOC LOCAL-GLOBALS) (DESC "iron door") (
SYNONYM DOOR) (ADJECTIVE IRON) (FLAGS LOCKED LOCKABLE OPENABLE DOORBIT)>
<OBJECT CUP (SCENE S-PRISON) (DESC "cup") (OWNER GRUEL) (SYNONYM CUP) (FLAGS
TAKEBIT OPENBIT CONTBIT SEARCHBIT) (CAPACITY 10) (ACTION CUP-F)>
<DEFINE-ROUTINE CUP-F>
<OBJECT GRUEL (SCENE S-PRISON) (LOC CUP) (DESC "gruel") (SYNONYM GRUEL RATION
FOOD) (ADJECTIVE GRUEL) (FLAGS TAKEBIT FOODBIT) (ACTION GRUEL-F)>
<DEFINE-ROUTINE GRUEL-F>
<OBJECT THUG (LOC PRISON) (DESC "apelike man") (SYNONYM APE MAN THUG CONVICT
PRISONER) (ADJECTIVE APELIKE UNSHAVEN FILTHY LICE-RIDDEN FILTHY) (FLAGS AN
PERSON JAPANESEBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT) (HEALTH 3) (DESCFCN
THUG-DESC) (GENERIC GENERIC-MAN-F) (ACTION THUG-F)>
<DEFINE-ROUTINE THUG-DESC>
<DEFINE-ROUTINE THUG-F>
<CONSTANT YOU-ATTACKS <LTABLE 0 "You butt your head into the man's face."
"You kick him in the shins and he skips aside."
"You feign momentary helplessness, then kick him viciously.">>
<CONSTANT THUG-ATTACKS <LTABLE 0
"The man leaps at you, trying to knock you down with a vicious
attack." "The prisoner tries to bite you."
"The thug kicks out, trying to trip you.">>
<DEFINE-ROUTINE START-FIGHT>
<DEFINE-ROUTINE I-PRISON>
<GLOBAL PRISON-CNT 0 %<> WORD>
<DEFINE-ROUTINE I-BULLDOG-EATS-IT>
<OBJECT BULLDOG (DESC "bulldog-like man") (SYNONYM MAN PRISONER BULLDOG AKABO
GONZALEZ) (ADJECTIVE BULLDOG BULLDOG-LIKE) (FLAGS PERSON JAPANESEBIT NDESCBIT
OPENBIT CONTBIT SEARCHBIT SCOREBIT) (GENERIC GENERIC-MAN-F) (ACTION BULLDOG-F)>
<DEFINE-ROUTINE BULLDOG-F>
<OBJECT DOMINGO (SDESC "old priest") (DESC "old priest") (SCENE S-PRISON
S-MARIKO S-ESCAPE) (SYNONYM FATHER PRIEST MAN DOMINGO FRANCISCAN FRIAR EUROPEAN
) (ADJECTIVE OLD FATHER FRIAR) (FLAGS AN PERSON SPANISHBIT OPENBIT CONTBIT
SEARCHBIT SCOREBIT) (ACTION DOMINGO-F)>
<DEFINE-ROUTINE DOMINGO-STARES>
<DEFINE-ROUTINE DOMINGO-F>
<DEFINE-ROUTINE DOMINGO-OFFERS-HELP>
<CONSTANT DOMINGO-RAMBLES <LTABLE 0
"\"The Japanese truly have but one punishment -- death. They have almost
no other punishment. Imprisonment is not one of their punishments, my
son. To them, prison is just a temporary place to keep the man until they
decide his sentence. Only the guilty come here.\""
"\"Jesuits put me here, my son. Jesuits and their filthy lies.\""
"\"Thy ship was Spanish out of where? I'm so glad! The senor is from
Spanish Flanders? Or the Duchy of Brandenburg? Some part of our
Dominions in Germania?\""
"\"Oh, it's so good to talk the blessed mother tongue again.\""
"\"These men are my flock, senor. They are all my sons in the Blessed
Lord Jesus. I've converted so many here!\""
"\"I was put here in September -- it was in the year of our Lord
fifteen hundred ninety eight.\" You realize with a shock that this was
almost two years ago! Two years in this filthy hole!">>
<DEFINE-ROUTINE I-TEACH>
<OBJECT MADMAN (DESC "madman") (SYNONYM MADMAN MAN) (ADJECTIVE CRAZY MAD INSANE
POSSESSED) (FLAGS PERSON JAPANESEBIT) (GENERIC GENERIC-CRAZY-F) (ACTION
MADMAN-F)>
<DEFINE-ROUTINE MADMAN-F>
<DEFINE-ROUTINE I-MADMAN>
<DEFINE-ROUTINE I-BULLDOG>
<DEFINE-ROUTINE I-OUT-OF-PRISON>
<ROOM PRISON-COURTYARD (LOC ROOMS) (DESC "Prison Courtyard") (IN TO PRISON IF
IRON-DOOR IS OPEN) (WEST TO PRISON IF IRON-DOOR IS OPEN) (EAST TO
OUTSIDE-PRISON IF PRISON-GATE IS OPEN) (FLAGS ONBIT) (GLOBAL LG-LINE LG-MEN
PRISON-GATE) (THINGS <> PRISONER PRISONER-PSEUDO <> PRISONERS PRISONER-PSEUDO)
(ACTION PRISON-COURTYARD-F)>
<DEFINE-ROUTINE PRISON-COURTYARD-F>
<OBJECT OFFICIAL (LOC PRISON-COURTYARD) (DESC "official") (SYNONYM OFFICIAL) (
ADJECTIVE SOMBER) (FLAGS NDESCBIT PERSON JAPANESEBIT) (ACTION OFFICIAL-F)>
<DEFINE-ROUTINE OFFICIAL-F>
<DEFINE-ROUTINE I-LEAVE-PRISON>
<GLOBAL LEAVE-CNT 0 %<> WORD>
<OBJECT BANDIT-LEADER (DESC "bandit leader") (SYNONYM BANDIT LEADER RONIN) (
ADJECTIVE BANDIT) (FLAGS PERSON JAPANESEBIT) (GENERIC GENERIC-BANDIT-F) (ACTION
BANDIT-LEADER-F)>
<DEFINE-ROUTINE GENERIC-BANDIT-F>
<DEFINE-ROUTINE BANDIT-LEADER-F>
<OBJECT BANDITS (DESC "bandits") (SYNONYM BANDITS RONIN BANDIT ATTACKER
ATTACKERS) (FLAGS PERSON JAPANESEBIT PLURAL SCOREBIT) (GENERIC GENERIC-BANDIT-F
) (ACTION BANDITS-F)>
<DEFINE-ROUTINE BANDITS-F>
<OBJECT YABU-PALANQUIN (OWNER YABU) (SCENE S-PRISON) (DESC "palanquin") (
SYNONYM PALANQUIN LITTER) (FLAGS VEHBIT OPENBIT CONTBIT SEARCHBIT) (CAPACITY
100) (GENERIC GENERIC-LITTER-F) (ACTION YABU-PALANQUIN-F)>
<DEFINE-ROUTINE YABU-PALANQUIN-F>
<ROOM DEEP-WOODS (LOC ROOMS) (DESC "Deep in the Woods") (FLAGS ONBIT) (WEST TO
OUTSIDE-PRISON) (EAST PER DEEP-WOODS-EXIT) (GLOBAL LG-CASTLE CITY) (ACTION
DEEP-WOODS-F)>
<DEFINE-ROUTINE DEEP-WOODS-EXIT>
<DEFINE-ROUTINE DEEP-WOODS-F>
<OBJECT LG-CASTLE (LOC LOCAL-GLOBALS) (DESC "Osaka castle") (SYNONYM CASTLE) (
ADJECTIVE OSAKA)>
<OBJECT PRISON-GATE (LOC LOCAL-GLOBALS) (DESC "prison gate") (SYNONYM GATE) (
ADJECTIVE PRISON) (FLAGS DOORBIT TRYTAKEBIT) (ACTION PRISON-GATE-F)>
<DEFINE-ROUTINE PRISON-GATE-F>
<DEFINE-ROUTINE CROWD-PSEUDO>
<ROOM OUTSIDE-PRISON (LOC ROOMS) (DESC "Outside Prison") (WEST TO
PRISON-COURTYARD IF PRISON-GATE IS OPEN) (FLAGS ONBIT OUTSIDE) (THINGS LARGE
CROWD CROWD-PSEUDO SPRUCE CROWD CROWD-PSEUDO <> PRISONER PRISONER-PSEUDO <>
PRISONERS PRISONER-PSEUDO) (ACTION OUTSIDE-PRISON-F)>
<DEFINE-ROUTINE OUTSIDE-PRISON-F>
<DEFINE-ROUTINE PRISON-AFTER-F>
<END-SEGMENT>
<BEGIN-SEGMENT MARIKO>
<ROOM MAPLE-GLADE (LOC ROOMS) (OWNER MAPLE-GLADE) (SCENE S-MARIKO) (AFTER
ALVITO-AFTER-F) (SCORE 3) (DESC "Glade of Maples") (FDESC
"And at last, Toranaga summons you.") (SYNONYM GLADE MAPLES) (FLAGS ONBIT
OUTSIDE SCOREBIT) (GLOBAL DOMINGO PRISON LG-CREWMEN TEA-HOUSE) (ACTION
MAPLE-GLADE-F)>
<DEFINE-ROUTINE MAPLE-GLADE-F>
<DEFINE-ROUTINE MARIKO-TELL-MARIKO-ABOUT>
<DEFINE-ROUTINE HOW-I-LEARNED>
<GLOBAL MARIKO-IMPATIENT 0>
<GLOBAL YAEMON-BORED? 0>
<DEFINE-ROUTINE I-YAEMON>
<GLOBAL YAEMON-CNT 0 %<> WORD>
<OBJECT PROPHECY (DESC "prophecy") (SYNONYM PROPHECY PREDICTION) (FLAGS
SCOREBIT)>
<OBJECT YAEMON (LOC GENERIC-OBJECTS) (SDESC "Yaemon") (SYNONYM BOY YAEMON HEIR)
(ADJECTIVE YOUNG) (FLAGS PERSON NOABIT NOTHEBIT JAPANESEBIT SCOREBIT) (ACTION
YAEMON-F)>
<DEFINE-ROUTINE YAEMON-F>
<DEFINE-ROUTINE ALVITO-AFTER-F>
<END-SEGMENT>

207
audience.zabstr Normal file
View File

@ -0,0 +1,207 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT AUDIENCE>
<CONSTANT J-JOKE 70>
<CONSTANT J-SIT 71>
<BEGIN-SEGMENT NINJA>
<ROOM OUTER-CORRIDOR (LOC ROOMS) (SCENE S-TORANAGA) (AFTER
ISHIDO-VS-TORANAGA-AFTER-F) (DESC "Outer Corridor") (SYNONYM CORRIDOR) (
ADJECTIVE OUTER) (PICTURE P-OSAKA) (SCORE 3) (FDESC
"You take your leave of Rodrigues, and then you are on deck,
your mind whirling from the impact of Osaka, its immensity, the teeming
anthills
of people, and the enormous castle that dominates the city. From within
the castle's vastness comes the soaring beauty of the donjon, seven or
eight stories high, pointed gables with curved roofs at each level,
the tiles all gilded and the walls blue.|
|
The next day you are brought by Hiro-matsu to Toranaga's keep within
the castle.") (IN TO AUDIENCE-CHAMBER IF OUTER-DOOR IS OPEN) (EAST TO
AUDIENCE-CHAMBER IF OUTER-DOOR IS OPEN) (WEST PER STAIRS-EXIT) (DOWN PER
STAIRS-EXIT) (GLOBAL OUTER-DOOR LG-NINJA) (FLAGS ONBIT) (ACTION
OUTER-CORRIDOR-F)>
<DEFINE-ROUTINE STAIRS-EXIT>
<DEFINE-ROUTINE OUTER-CORRIDOR-F>
<ROOM AUDIENCE-CHAMBER (LOC ROOMS) (DESC "Audience Chamber") (SYNONYM CHAMBER
ROOM) (ADJECTIVE AUDIENCE) (WEST TO OUTER-CORRIDOR IF OUTER-DOOR IS OPEN) (EAST
TO INNER-CORRIDOR IF INNER-DOOR IS OPEN) (IN TO INNER-CORRIDOR IF INNER-DOOR IS
OPEN) (SOUTH TO SECRET-ROOM IF SECRET-ROOM-DOOR IS OPEN) (GLOBAL INNER-DOOR
OUTER-DOOR SECRET-ROOM-DOOR LG-NINJA LG-MEN LG-WOMEN) (FLAGS ONBIT SCOREBIT) (
ACTION AUDIENCE-CHAMBER-F)>
<GLOBAL POINTEE ALVITO>
<DEFINE-ROUTINE AUDIENCE-CHAMBER-F>
<OBJECT VASE (LOC AUDIENCE-CHAMBER) (DESC "vase") (SYNONYM VASE) (ADJECTIVE
EARTHENWARE CERAMIC) (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT OPENBIT CONTBIT
SEARCHBIT) (CAPACITY 10) (ACTION VASE-F)>
<DEFINE-ROUTINE VASE-F>
<OBJECT FLOWER (LOC VASE) (DESC "cherry blossom") (SYNONYM SPRAY FLOWER BLOSSOM
) (ADJECTIVE CHERRY) (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT) (ACTION FLOWER-F)>
<DEFINE-ROUTINE FLOWER-F>
<OBJECT DAIS (LOC AUDIENCE-CHAMBER) (DESC "dais") (OWNER TORANAGA) (SYNONYM
DAIS) (FLAGS NDESCBIT SCOREBIT OPENBIT CONTBIT VEHBIT SEARCHBIT)>
<END-SEGMENT>
<BEGIN-SEGMENT AUDIENCE>
<DEFINE-ROUTINE ISHIDO-VS-TORANAGA-AFTER-F>
<OBJECT FALCON (DESC "peregrine") (OWNER TORANAGA) (SYNONYM FALCON PEREGRINE
WORK) (FLAGS NDESCBIT RMUNGBIT) (ACTION FALCON-F)>
<DEFINE-ROUTINE FALCON-F>
<OBJECT TORANAGAS-GUARDS (DESC "samurai guards") (OWNER TORANAGA) (SYNONYM
GUARDS SAMURAI) (FLAGS NDESCBIT PERSON JAPANESEBIT PLURAL OPENBIT CONTBIT
SEARCHBIT NOABIT THE) (GENERIC GENERIC-SAMURAI-F) (ACTION TORANAGAS-GUARDS-F)>
<DEFINE-ROUTINE TORANAGAS-GUARDS-F>
<OBJECT ALVITO (LOC GENERIC-OBJECTS) (SCENE S-TORANAGA) (SDESC
"tonsured priest") (SYNONYM ALVITO PRIEST MAN FATHER JESUIT) (ADJECTIVE FATHER
MARTIN TONSURED LEAN-FACED PORTUGUESE) (PICTURE P-ALVITO) (FLAGS PERSON
PORTUGUESEBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT) (GENERIC GENERIC-MAN-F) (
ACTION ALVITO-F)>
<DEFINE-ROUTINE ALVITO-F>
<DEFINE-ROUTINE ALVITO-SPEAKS>
<GLOBAL ALVITO-TRANSLATES? <>>
<DEFINE-ROUTINE I-AUDIENCE>
<GLOBAL AUDIENCE-CNT 0 %<> WORD>
<END-SEGMENT>
<BEGIN-SEGMENT PRISON>
<OBJECT LG-LINE (LOC LOCAL-GLOBALS) (SCENE S-PRISON) (DESC "line") (SYNONYM
LINE) (FLAGS NDESCBIT VEHBIT SCOREBIT) (ACTION LG-LINE-F)>
<DEFINE-ROUTINE LG-LINE-F>
<ROOM PRISON (LOC ROOMS) (SCENE S-PRISON S-MARIKO) (SCORE 6) (DESC "Cell Block"
) (AFTER PRISON-AFTER-F) (SYNONYM PRISON JAIL CELL BLOCK) (ADJECTIVE CELL) (
FDESC "Toranaga's guards take you to the prison, strip you, and force you
through the door of one of the cell blocks.|
|
At dawn it is feeding time and the guards pass out cups of gruel
and water through a small opening. The lining up for food and water
is unusually calm -- without discipline no one would eat. You take
your ration and pick your way over the bodies toward a corner.") (LDESC
"This murky and suffocating room is fifty paces long and ten wide and
packed with naked, sweating Japanese. Scarcely any light filters through
the boards and beams that make up the walls and low ceiling. A heavy iron
door seals the prisoners in.") (OUT TO PRISON-COURTYARD IF IRON-DOOR IS OPEN) (
EAST TO PRISON-COURTYARD IF IRON-DOOR IS OPEN) (FLAGS ONBIT) (GLOBAL LG-LINE
IRON-DOOR PRISON MADMAN LG-MEN) (THINGS <> PRISONER PRISONER-PSEUDO <>
PRISONERS PRISONER-PSEUDO) (ACTION PRISON-F)>
<DEFINE-ROUTINE PRISONER-PSEUDO>
<DEFINE-ROUTINE PRISON-F>
<OBJECT IRON-DOOR (SCENE S-PRISON) (LOC LOCAL-GLOBALS) (DESC "iron door") (
SYNONYM DOOR) (ADJECTIVE IRON) (FLAGS LOCKED LOCKABLE OPENABLE DOORBIT)>
<OBJECT CUP (SCENE S-PRISON) (DESC "cup") (OWNER GRUEL) (SYNONYM CUP) (FLAGS
TAKEBIT OPENBIT CONTBIT SEARCHBIT) (CAPACITY 10) (ACTION CUP-F)>
<DEFINE-ROUTINE CUP-F>
<OBJECT GRUEL (SCENE S-PRISON) (LOC CUP) (DESC "gruel") (SYNONYM GRUEL RATION
FOOD) (ADJECTIVE GRUEL) (FLAGS TAKEBIT FOODBIT) (ACTION GRUEL-F)>
<DEFINE-ROUTINE GRUEL-F>
<OBJECT THUG (LOC PRISON) (DESC "apelike man") (SYNONYM APE MAN THUG CONVICT
PRISONER) (ADJECTIVE APELIKE UNSHAVEN FILTHY LICE-RIDDEN FILTHY) (FLAGS AN
PERSON THE JAPANESEBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT) (HEALTH 3) (DESCFCN
THUG-DESC) (GENERIC GENERIC-MAN-F) (ACTION THUG-F)>
<DEFINE-ROUTINE THUG-DESC>
<DEFINE-ROUTINE THUG-F>
<CONSTANT YOU-ATTACKS <LTABLE 0 "You butt your head into the man's face."
"You kick him in the shins and he skips aside."
"You feign momentary helplessness, then kick him viciously.">>
<CONSTANT THUG-ATTACKS <LTABLE 0
"The man leaps at you, trying to knock you down with a vicious
attack." "The prisoner tries to bite you."
"The thug kicks out, trying to trip you.">>
<DEFINE-ROUTINE START-FIGHT>
<DEFINE-ROUTINE I-PRISON>
<GLOBAL PRISON-CNT 0 %<> WORD>
<DEFINE-ROUTINE I-BULLDOG-EATS-IT>
<OBJECT BULLDOG (DESC "bulldog-like man") (SYNONYM MAN PRISONER BULLDOG AKABO
GONZALEZ) (ADJECTIVE BULLDOG BULLDOG-LIKE) (FLAGS PERSON JAPANESEBIT THE
NDESCBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT) (GENERIC GENERIC-MAN-F) (ACTION
BULLDOG-F)>
<DEFINE-ROUTINE BULLDOG-F>
<OBJECT DOMINGO (SDESC "old priest") (DESC "old priest") (SCENE S-PRISON
S-MARIKO S-ESCAPE) (SYNONYM FATHER PRIEST MAN DOMINGO FRANCISCAN FRIAR EUROPEAN
) (ADJECTIVE OLD FATHER FRIAR) (FLAGS AN PERSON SPANISHBIT OPENBIT CONTBIT
SEARCHBIT SCOREBIT) (ACTION DOMINGO-F)>
<DEFINE-ROUTINE DOMINGO-STARES>
<DEFINE-ROUTINE DOMINGO-F>
<DEFINE-ROUTINE DOMINGO-OFFERS-HELP>
<CONSTANT DOMINGO-RAMBLES <LTABLE 0
"\"The Japanese truly have but one punishment -- death. They have almost
no other punishment. Imprisonment is not one of their punishments, my
son. To them, prison is just a temporary place to keep the man until they
decide his sentence. Only the guilty come here.\""
"\"Jesuits put me here, my son. Jesuits and their filthy lies.\""
"\"Thy ship was Spanish out of where? I'm so glad! The senor is from
Spanish Flanders? Or the Duchy of Brandenburg? Some part of our
Dominions in Germania?\""
"\"Oh, it's so good to talk the blessed mother tongue again.\""
"\"These men are my flock, senor. They are all my sons in the Blessed
Lord Jesus. I've converted so many here!\""
"\"I was put here in September -- it was in the year of our Lord
fifteen hundred ninety eight.\" You realize with a shock that this was
almost two years ago! Two years in this filthy hole!">>
<DEFINE-ROUTINE I-TEACH>
<OBJECT MADMAN (DESC "madman") (SYNONYM MADMAN MAN) (ADJECTIVE CRAZY MAD INSANE
POSSESSED) (FLAGS PERSON JAPANESEBIT) (GENERIC GENERIC-CRAZY-F) (ACTION
MADMAN-F)>
<DEFINE-ROUTINE MADMAN-F>
<DEFINE-ROUTINE I-MADMAN>
<DEFINE-ROUTINE I-BULLDOG>
<DEFINE-ROUTINE I-OUT-OF-PRISON>
<ROOM PRISON-COURTYARD (LOC ROOMS) (DESC "Prison Courtyard") (IN TO PRISON IF
IRON-DOOR IS OPEN) (WEST TO PRISON IF IRON-DOOR IS OPEN) (EAST TO
OUTSIDE-PRISON IF PRISON-GATE IS OPEN) (FLAGS ONBIT) (GLOBAL LG-LINE LG-MEN
PRISON-GATE) (THINGS <> PRISONER PRISONER-PSEUDO <> PRISONERS PRISONER-PSEUDO)
(ACTION PRISON-COURTYARD-F)>
<DEFINE-ROUTINE PRISON-COURTYARD-F>
<OBJECT OFFICIAL (LOC PRISON-COURTYARD) (DESC "official") (SYNONYM OFFICIAL) (
ADJECTIVE SOMBER) (FLAGS NDESCBIT PERSON JAPANESEBIT) (ACTION OFFICIAL-F)>
<DEFINE-ROUTINE OFFICIAL-F>
<DEFINE-ROUTINE I-LEAVE-PRISON>
<GLOBAL LEAVE-CNT 0 %<> WORD>
<OBJECT BANDIT-LEADER (DESC "bandit leader") (SYNONYM BANDIT LEADER RONIN) (
ADJECTIVE BANDIT) (FLAGS PERSON JAPANESEBIT) (GENERIC GENERIC-BANDIT-F) (ACTION
BANDIT-LEADER-F)>
<DEFINE-ROUTINE GENERIC-BANDIT-F>
<DEFINE-ROUTINE BANDIT-LEADER-F>
<OBJECT BANDITS (DESC "bandits") (SYNONYM BANDITS RONIN BANDIT ATTACKER
ATTACKERS) (FLAGS PERSON JAPANESEBIT PLURAL SCOREBIT) (GENERIC GENERIC-BANDIT-F
) (ACTION BANDITS-F)>
<DEFINE-ROUTINE BANDITS-F>
<OBJECT YABU-PALANQUIN (OWNER YABU) (SCENE S-PRISON) (DESC "palanquin") (
SYNONYM PALANQUIN LITTER) (FLAGS VEHBIT OPENBIT CONTBIT SEARCHBIT) (CAPACITY
100) (GENERIC GENERIC-LITTER-F) (ACTION YABU-PALANQUIN-F)>
<DEFINE-ROUTINE YABU-PALANQUIN-F>
<ROOM DEEP-WOODS (LOC ROOMS) (DESC "Deep in the Woods") (FLAGS ONBIT) (WEST TO
OUTSIDE-PRISON) (EAST PER DEEP-WOODS-EXIT) (GLOBAL LG-CASTLE CITY) (ACTION
DEEP-WOODS-F)>
<DEFINE-ROUTINE DEEP-WOODS-EXIT>
<DEFINE-ROUTINE DEEP-WOODS-F>
<OBJECT LG-CASTLE (LOC LOCAL-GLOBALS) (DESC "Osaka castle") (SYNONYM CASTLE) (
ADJECTIVE OSAKA)>
<OBJECT PRISON-GATE (LOC LOCAL-GLOBALS) (DESC "prison gate") (SYNONYM GATE) (
ADJECTIVE PRISON) (FLAGS DOORBIT TRYTAKEBIT) (ACTION PRISON-GATE-F)>
<DEFINE-ROUTINE PRISON-GATE-F>
<DEFINE-ROUTINE CROWD-PSEUDO>
<ROOM OUTSIDE-PRISON (LOC ROOMS) (DESC "Outside Prison") (WEST TO
PRISON-COURTYARD IF PRISON-GATE IS OPEN) (FLAGS ONBIT OUTSIDE) (THINGS LARGE
CROWD CROWD-PSEUDO SPRUCE CROWD CROWD-PSEUDO <> PRISONER PRISONER-PSEUDO <>
PRISONERS PRISONER-PSEUDO) (ACTION OUTSIDE-PRISON-F)>
<DEFINE-ROUTINE OUTSIDE-PRISON-F>
<DEFINE-ROUTINE PRISON-AFTER-F>
<END-SEGMENT>
<BEGIN-SEGMENT MARIKO>
<ROOM MAPLE-GLADE (LOC ROOMS) (OWNER MAPLE-GLADE) (SCENE S-MARIKO) (AFTER
ALVITO-AFTER-F) (SCORE 3) (DESC "Glade of Maples") (FDESC
"And at last, Toranaga summons you.") (SYNONYM GLADE MAPLES) (FLAGS ONBIT
OUTSIDE SCOREBIT) (GLOBAL DOMINGO PRISON LG-CREWMEN TEA-HOUSE) (ACTION
MAPLE-GLADE-F)>
<DEFINE-ROUTINE MAPLE-GLADE-F>
<DEFINE-ROUTINE MARIKO-TELL-MARIKO-ABOUT>
<DEFINE-ROUTINE HOW-I-LEARNED>
<GLOBAL MARIKO-IMPATIENT 0>
<GLOBAL YAEMON-BORED? 0>
<DEFINE-ROUTINE I-YAEMON>
<GLOBAL YAEMON-CNT 0 %<> WORD>
<OBJECT PROPHECY (DESC "prophecy") (SYNONYM PROPHECY PREDICTION) (FLAGS
SCOREBIT)>
<OBJECT YAEMON (LOC GENERIC-OBJECTS) (SDESC "Yaemon") (SYNONYM BOY YAEMON HEIR)
(ADJECTIVE YOUNG) (FLAGS PERSON NOABIT NOTHEBIT JAPANESEBIT SCOREBIT) (ACTION
YAEMON-F)>
<DEFINE-ROUTINE YAEMON-F>
<DEFINE-ROUTINE ALVITO-AFTER-F>
<END-SEGMENT>

1621
audience.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -9,6 +9,8 @@
<CONSTANT J-JOKE 70>
<CONSTANT J-SIT 71>
<BEGIN-SEGMENT NINJA>
<ROOM OUTER-CORRIDOR ;"setup s-toranaga"
(LOC ROOMS)
(SCENE S-TORANAGA)
@ -65,7 +67,7 @@ the castle.")
audience with Toranaga wait. The great Audience Chamber is to the
east and stairs down to the lower part of the keep are to the west.">
<COND (<SCENE? ,S-TORANAGA>
<TELL " Massed samurai, their young officer in
<TELL " Massed samurai, their young officer in
front of them, protect the last door -- each with right hand on the
sword hilt, left on the scabbard, motionless and ready, staring at
you.">)>
@ -104,18 +106,18 @@ ten high, the tatami mats the best quality, four fingers thick and
impeccable.">
<COND (<NOT <FSET? ,VASE ,TOUCHBIT>>
<TELL
" Near the dais, in a niche, is a small earthenware vase
" Near the dais, in a niche, is a small earthenware vase
with a single spray of cherry blossom and this fills the room with
color and fragrance.">)>
<COND (<SCENE? S-TORANAGA>
<TELL
" Ten paces from the dais, circling it, are
" Ten paces from the dais, circling it, are
twenty samurai, seated cross-legged and facing outward.">)>
<TELL " Doors lead east and west to the outer
<TELL " Doors lead east and west to the outer
and inner corridors, respectively.">
<COND (<NOT <FSET? ,SECRET-ROOM-DOOR ,INVISIBLE>>
<TELL
" On the south wall is a formerly secret door used by the ninja
" On the south wall is a formerly secret door used by the ninja
attackers.">)>
<CRLF>)
(<RARG? BEG>
@ -253,6 +255,7 @@ your life.">
<TELL
"Taking a deep breath, you sit cross-legged and stare at Toranaga." CR>)>)
(<VERB? KNEEL>
<FCLEAR ,AUDIENCE-CHAMBER ,SCOREBIT>
<B-KNEEL>
<TELL
"You kneel abjectly, in imitation of Hiro-matsu." CR>)>)>)
@ -278,33 +281,6 @@ guards motion you back." CR>)
<TELL
G"You would have to walk right through the ninja!" CR>)>)>)>)>>
<ROUTINE ISHIDO-VS-TORANAGA-AFTER-F ()
<TELL
"Toranaga watches you
leave the room, taking his mind off the interview and coming to grips
with the problem of Ishido. Toranaga was summoned to Osaka to give
answers to the Council of Regents, and against the advice of his
advisors, he chose to obey. Now he is stuck, the meeting delayed and
delayed, Toranaga caught in the castle of his most deadly enemy.|
|
Ishido comes instantly to the point. \"What is your answer to the
Council of Regents?\"|
|
Toranaga answers, \"As President of the
Council of Regents I do not believe an answer is necessary. Our late
Master, the Taiko, has been dead a year. I don't threaten his house
or my nephew Yaemon, the Taiko's Heir. I seek no more territory. By
the Lord Buddha, I'll not be the first to break the peace.\"|
|
Ishido
bristles. \"The Lady Ochiba, the mother of the heir, is hostage in
your castle at Yedo, against your safety here. The Council requests
her presence in Osaka instantly. We're all agreed: Lord Sugiyama,
Lord Onoshi, Lord Kiyama, and I. Here are their signatures.\"|
|
Toranaga is livid. Why had Kiyama and Onoshi defected to Ishido?
Four to one means isolation and disaster!" CR>>
<OBJECT VASE
(LOC AUDIENCE-CHAMBER)
(DESC "vase")
@ -350,6 +326,36 @@ Four to one means isolation and disaster!" CR>>
(SYNONYM DAIS)
(FLAGS NDESCBIT SCOREBIT OPENBIT CONTBIT VEHBIT SEARCHBIT)>
<END-SEGMENT ;"AUDIENCE+NINJA">
<BEGIN-SEGMENT AUDIENCE>
<ROUTINE ISHIDO-VS-TORANAGA-AFTER-F ()
<TELL
"Toranaga watches you
leave the room, taking his mind off the interview and coming to grips
with the problem of Ishido. Toranaga was summoned to Osaka to give
answers to the Council of Regents, and against the advice of his
advisors, he chose to obey. Now he is stuck, the meeting delayed and
delayed, Toranaga caught in the castle of his most deadly enemy.|
|
Ishido comes instantly to the point. \"What is your answer to the
Council of Regents?\"|
|
Toranaga answers, \"As President of the
Council of Regents I do not believe an answer is necessary. Our late
Master, the Taiko, has been dead a year. I don't threaten his house
or my nephew Yaemon, the Taiko's Heir. I seek no more territory. By
the Lord Buddha, I'll not be the first to break the peace.\"|
|
Ishido
bristles. \"The Lady Ochiba, the mother of the heir, is hostage in
your castle at Yedo, against your safety here. The Council requests
her presence in Osaka instantly. We're all agreed: Lord Sugiyama,
Lord Onoshi, Lord Kiyama, and I. Here are their signatures.\"|
|
Toranaga is livid. Why had Kiyama and Onoshi defected to Ishido?
Four to one means isolation and disaster!" CR>>
<OBJECT FALCON
(DESC "peregrine")
(OWNER TORANAGA)
@ -545,7 +551,7 @@ the outcome." CR>
"Alvito waits patiently.">
<COND (<EQUAL? ,DELAY-CNT 1>
<TELL
" You wonder if '"I"teki""' truly means 'enemy.' Of course it does, you
" You wonder if '"I"teki""' truly means 'enemy.' Of course it does, you
tell yourself. This man's not like the other one.">)>
<CRLF>
<RTRUE>)>)>)
@ -619,10 +625,9 @@ for how long: until Lord Toranaga decides.\"" CR>
<MOVE ,TORANAGA ,GENERIC-OBJECTS>
<REMOVE ,GRAYS>
<REMOVE ,TORANAGAS-GUARDS>
<DEQUEUE I-AUDIENCE>
<NEXT-SCENE>)>>
<END-SEGMENT>
<END-SEGMENT ;"AUDIENCE">
<BEGIN-SEGMENT PRISON>
@ -678,7 +683,7 @@ door seals the prisoners in.")
(OUT TO PRISON-COURTYARD IF IRON-DOOR IS OPEN)
(EAST TO PRISON-COURTYARD IF IRON-DOOR IS OPEN)
(FLAGS ONBIT)
(GLOBAL LG-LINE IRON-DOOR PRISON MADMAN)
(GLOBAL LG-LINE IRON-DOOR PRISON MADMAN LG-MEN)
(THINGS <> PRISONER PRISONER-PSEUDO
<> PRISONERS PRISONER-PSEUDO)
(ACTION PRISON-F)>
@ -734,7 +739,7 @@ Spanish?\"" CR>)
<TELL
"\"Ah, the senor is from our dominions in Spanish Flanders!">
<COND (<FSET? ,DOMINGO ,SCOREBIT>
<TELL " But please,
<TELL " But please,
speak Spanish! I have heard no Spanish since I came to this awful
place!\"">)>
<CRLF>)
@ -852,9 +857,10 @@ other for it." CR>)>)
(DESC "apelike man")
(SYNONYM APE MAN THUG CONVICT PRISONER)
(ADJECTIVE APELIKE UNSHAVEN FILTHY LICE-RIDDEN FILTHY ;"DEAD")
(FLAGS AN PERSON JAPANESEBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT)
(FLAGS AN PERSON THE JAPANESEBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT)
(HEALTH 3)
(DESCFCN THUG-DESC)
(GENERIC GENERIC-MAN-F)
(ACTION THUG-F)>
<ROUTINE THUG-DESC (RARG OBJ)
@ -1054,7 +1060,8 @@ nodding happily in your direction." CR>)>>
(DESC "bulldog-like man")
(SYNONYM MAN PRISONER BULLDOG AKABO GONZALEZ)
(ADJECTIVE BULLDOG BULLDOG-LIKE)
(FLAGS PERSON JAPANESEBIT NDESCBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT)
(FLAGS PERSON JAPANESEBIT THE NDESCBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT)
(GENERIC GENERIC-MAN-F)
(ACTION BULLDOG-F)>
<ROUTINE BULLDOG-F ("OPT" (RARG <>))
@ -1379,10 +1386,6 @@ prisoners." CR>)>)>)
(GENERIC GENERIC-CRAZY-F)
(ACTION MADMAN-F)>
<ROUTINE GENERIC-CRAZY-F (R F)
<COND (<SCENE? ,S-PRISON> ,MADMAN)
(ELSE ,CRAZY)>>
<ROUTINE MADMAN-F ("OPT" RARG)
<COND (<RARG? WINNER>
<TELL
@ -1660,6 +1663,7 @@ saying, \""I"Iye!""\"" CR>
<OBJECT YABU-PALANQUIN
(OWNER YABU)
(SCENE S-PRISON)
(DESC "palanquin")
(SYNONYM PALANQUIN LITTER)
(FLAGS VEHBIT OPENBIT CONTBIT SEARCHBIT)
@ -1808,7 +1812,7 @@ no ship in all Asia like yours, and if Toranaga commands, you can sweep
the Portuguese and Spanish from the seas with it, make a gift to him of
the Black Ship, destroy his enemies, anything!" CR>>
<END-SEGMENT>
<END-SEGMENT ;"PRISON">
"S-MARIKO"
@ -1939,6 +1943,50 @@ little else. The interiors are almost entirely mysteries.\"" CR>)
<TELL
"You bow to Ishido, but he ignores you." CR>)>)>)>>
<ROUTINE MARIKO-TELL-MARIKO-ABOUT ()
<COND (<PRSI? ,ME>
<TELL
"You relate the story of your life. Toranaga questions
you closely about many points, particulary those relating to war and
politics." CR>)
(<PRSI? ,DOMINGO ,PRISON>
<HOW-I-LEARNED>)
(<PRSI? ,QUEEN ,ENGLAND>
<TELL
"\"My land is ruled by a Queen. Queen Elizabeth whose father freed us from
the hated priests, and whose wise rule these many years has kept us
free!\"" CR>)
(<PRSI? ,BLACK-SHIP>
<TELL
"\"Give me back my ship and I'll sweep the Portuguese and Spanish from the
sea and bring you the Black Ship!\"" CR>)
(<PRSI? ,WORLD>
<TELL
"\"Perhaps I could draw you a map of the world, as we know it?\"|
|
Toranaga seems interested." CR>)
(<PRSI? ,VOYAGE>
<TELL
"\"We were two years sailing here, through Magellan's Pass into the Pacific.\"|
|
Toranaga interrupts, and Mariko says, \"My Master says you are mistaken. All
bar -- all Portuguese come from the south.\"|
|
\"Yes, it's true they favor that way,\" you reply. \"They have dozens of forts
all along the route. Most of those forts employ Japanese troops, by the way.\"|
|
You see an immediate reaction on Mariko's face, and when she translates, on
Toranaga's." CR>)
(<PRSI? CHURCH POPE>
<TELL
"\"The Pope divided the world between Spain and Portugal. Portugal has the
exclusive right to this country, to all these countries -- Japan, China, and
Africa -- in return for spreading Catholicism.\"" CR>)
(ELSE
<TELL
"Mariko passes on the information to Toranaga, but he doesn't seem too
interested." CR>)>>
<ROUTINE HOW-I-LEARNED ()
<SETG QCONTEXT <>>
<SETUP-ANSWER <>>
@ -2042,8 +2090,7 @@ the soothsayer's prediction!\"|
|
\"No, Lord Toranaga, I haven't forgotten,\" Ishido says, remembering very
well. He bows again, very deferential to the boy, and leaves." CR>)
(<DEQUEUE I-YAEMON>
<TELL CR
(<TELL CR
"Soon the interview is over, and the Heir is sent for his swimming
lesson. Toranaga installs you in his own sleeping chamber, as a mark of his
favor. Things are looking up, indeed!" CR>
@ -2118,4 +2165,4 @@ in for trouble!\"|
Ingeles, it's quite possible the Taiko's Expulsion Edicts would be reexamined and
all Christian churches, schools, places of rest, would be immediately closed.\"" CR>>
<END-SEGMENT>
<END-SEGMENT ;"MARIKO">

37
blackthorne.txt Normal file
View File

@ -0,0 +1,37 @@
Blackthorne's Biography
1564; Born (36 at time of story)
1576; begins apprenticeship with Alban Caradoc
1588; end of apprenticeship; Spanish Armada
1589; married Felicity
1592; sunk by the Turks; plague
1593; voyage to the West Indies
1595; voyage to find the NE Passage
1598, May; left Holland
1599; Reached Tierra del Fuego
1600, April 21; start of story
----
pp. 3-9; History of the expedition; longitude; Alban Caradoc; Tierra
del Fuego; Santa Maria Island
p. 25; why they headed across the Pacific
p. 38; Blackthorne's family in England (wife Felicity, son Tudor,
daughter Lisbeth)
pp. 85-86; Blackthorne and the London Company of Barbary Merchants;
Barbary Coast, Lagos, West Africa, Salerno; sunk by the Turks;
voyage to West Indies; NE Passage; recruitment by the Dutch
pp. 91-92; voyage to find Northeast Passage; Barbary Coast, Tripoli;
Spanish Armada
pp. 135-138; the situation in Europe
pp. 156-161; Friar Domingo explains the situation in Asia
pp. 163-164; the Spanish Armada; Alban Caradoc's death
pp. 176-183; the Known World, history, etc.

58
breds.zabstr Normal file
View File

@ -0,0 +1,58 @@
<FLAGS-AND-DEFAULTS (("ONE-BYTE-PARTS-OF-SPEECH" %<>)("IN-ZILCH" T)(
"WORD-FLAGS-IN-TABLE" T)) ()>
<ZZPACKAGE "REDS">
<ENTRY RED-BE-FORM RED-BE RED-NOT RED-SNBN RED-SNBA RED-SNBP RED-SNBAP
RED-CANDO>
<INCLUDE "BASEDEFS" "FIND" "PBITDEFS" "PDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM" "PSTACK">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<NEW-ADD-WORD "AM" TOBE <> <ORB ,FIRST-PERSON ,PRESENT-TENSE>>
<NEW-ADD-WORD "ARE" TOBE <> <ORB ,FIRST-PERSON ,SECOND-PERSON ,THIRD-PERSON ,
PRESENT-TENSE ,PLURAL-FLAG>>
<NEW-ADD-WORD "IS" TOBE <> <ORB ,THIRD-PERSON ,PRESENT-TENSE>>
<NEW-ADD-WORD "WAS" TOBE <> <ORB ,FIRST-PERSON ,THIRD-PERSON ,PAST-TENSE>>
<NEW-ADD-WORD "WERE" TOBE <> <ORB ,FIRST-PERSON ,SECOND-PERSON ,THIRD-PERSON ,
PAST-TENSE ,PLURAL-FLAG>>
<NEW-ADD-WORD "WILL" TOBE <> ,FUTURE-TENSE>
<NEW-ADD-WORD "SHALL" TOBE <> ,FUTURE-TENSE>
<ADD-WORD "HOW" QWORD>
<ADD-WORD "WHAT" QWORD>
<ADD-WORD "WHEN" QWORD>
<ADD-WORD "WHERE" QWORD>
<ADD-WORD "WHO" QWORD>
<ADD-WORD "WHY" QWORD>
<DEFINE-ROUTINE RED-BE-FORM>
<DEFINE-ROUTINE EXCH-4-5-Q>
<DEFINE-ROUTINE RED-SBNN>
<DEFINE-ROUTINE RED-SNBN>
<DEFINE-ROUTINE DETERMINE-SUBJ>
<DEFINE-ROUTINE RED-SBNA>
<DEFINE-ROUTINE RED-SNBA>
<OBJECT INTADJ (LOC GLOBAL-OBJECTS) (DESC "adjective") (SYNONYM L.G)>
<DEFINE-ROUTINE RED-SBNP>
<DEFINE-ROUTINE RED-SNBP>
<DEFINE-ROUTINE RED-SNBAP>
<DEFINE-ROUTINE P-PP-OBJ>
<DEFINE-ROUTINE P-PP-PREP>
<OBJECT INTPP (LOC GLOBAL-OBJECTS) (DESC "prep phrase") (SYNONYM L.G)>
<DEFINE-ROUTINE RED-SQBN>
<DEFINE-ROUTINE RED-BE>
<DEFINE-ROUTINE RED-NOT>
<NEW-ADD-WORD "CAN" CANDO <>>
<NEW-ADD-WORD "COULD" CANDO <>>
<NEW-ADD-WORD "DO" CANDO <>>
<NEW-ADD-WORD "DOES" CANDO <VOC "DO"> <ORB ,THIRD-PERSON>>
<NEW-ADD-WORD "DID" CANDO <VOC "DO"> ,PAST-TENSE>
<NEW-ADD-WORD "MAY" CANDO <>>
<NEW-ADD-WORD "MIGHT" CANDO <>>
<NEW-ADD-WORD "WILL" CANDO <>>
<NEW-ADD-WORD "SHALL" CANDO <VOC "WILL"> ,FUTURE-TENSE>
<NEW-ADD-WORD "WOULD" CANDO <>>
<NEW-ADD-WORD "SHOULD" CANDO <>>
<NEW-ADD-WORD "MUST" CANDO <>>
<DEFINE-ROUTINE RED-CANDO>
<DEFINE-ROUTINE INSERT-WHAT>
<END-SEGMENT>
<ENDPACKAGE>

573
breds.zap Normal file
View File

@ -0,0 +1,573 @@
.SEGMENT "0"
.FUNCT RED-BE-FORM:ANY:0:2,N,TYP
PUT PARSE-RESULT,2,TLEXV
POP DATA-STACK
PUT PARSE-RESULT,1,STACK
RTRUE
.FUNCT EXCH-4-5-Q:ANY:3:3,RED,N,TYP,X1,X2,X3,X4,X5
POP DATA-STACK >X1
POP DATA-STACK >X2
POP DATA-STACK >X3
POP DATA-STACK >X4
POP DATA-STACK >X5
EQUAL? N,6 \?CCL3
DEC 'N
POP DATA-STACK
PUT PARSE-RESULT,10,STACK
JUMP ?CND1
?CCL3: PUT PARSE-RESULT,10,0
?CND1: CALL2 PMEM?,X3
ZERO? STACK /?CCL6
XPUSH X3,DATA-STACK /?CND4
JUMP ?CND4
?CCL6: XPUSH X4,DATA-STACK /?CND4
?CND4: XPUSH X5,DATA-STACK /?BOGUS9
?BOGUS9: CALL2 PMEM?,X3
ZERO? STACK /?CCL12
XPUSH X4,DATA-STACK /?CND10
JUMP ?CND10
?CCL12: XPUSH X3,DATA-STACK /?CND10
?CND10: XPUSH X2,DATA-STACK /?BOGUS15
?BOGUS15: XPUSH X1,DATA-STACK /?BOGUS16
?BOGUS16: GET PARSE-RESULT,16
BOR PARSE-QUESTION,STACK
PUT PARSE-RESULT,16,STACK
CALL RED,N,TYP
RSTACK
.FUNCT RED-SBNN:ANY:0:2,N,TYP
CALL EXCH-4-5-Q,RED-SNBN,N,TYP
RSTACK
.FUNCT RED-SNBN:ANY:0:2,N,TYP,OK,NPP,OBJ,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >NPP
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
CALL DETERMINE-OBJ,NPP,2 >OBJ
ZERO? OBJ \?CCL19
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,NPP
RSTACK
?CCL19: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD26
PUSH ?TMP1
JUMP ?PEN24
?PRD26: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN24: BTST STACK,32768 /?CCL21
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD29
PUSH ?TMP1
JUMP ?PEN27
?PRD29: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN27: BAND STACK,128
BAND STACK,32767
ZERO? STACK \FALSE
?CCL21: PUT PARSE-RESULT,6,OBJ
RETURN PARSE-RESULT
.FUNCT DETERMINE-SUBJ:ANY:1:3,VERB,SHORT,N1,DATA,TMP,OBJ1,?TMP1
ZERO? SHORT \?CND1
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
GET PARSE-RESULT,16
BOR PARSE-NOT,STACK
PUT PARSE-RESULT,16,STACK
?CND1: POP DATA-STACK
ZERO? SHORT /?CCL7
POP DATA-STACK >TMP
PUT PARSE-RESULT,10,TMP
JUMP ?CND5
?CCL7: GET PARSE-RESULT,10 >TMP
?CND5: EQUAL? TMP,0,1 /?CCL9
GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD16
PUSH ?TMP1
JUMP ?PEN14
?PRD16: GET TMP,3
GET STACK,4
?PEN14: BTST STACK,32768 /?CCL9
GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD19
PUSH ?TMP1
JUMP ?PEN17
?PRD19: GET TMP,3
GET STACK,4
?PEN17: BAND STACK,128
BAND STACK,32767
ZERO? STACK \?CND8
?CCL9: GET PARSE-RESULT,16
BTST STACK,2 \?CCL22
SET 'TMP,W?BE?
JUMP ?CND8
?CCL22: SET 'TMP,W?BE
?CND8: GET TMP,3 >DATA
ZERO? SHORT /?CCL28
GET DATA,2 >TMP
JUMP ?CND26
?CCL28: GET DATA,3 >TMP
?CND26: ZERO? TMP \?CCL25
CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN
RSTACK
?CCL25: CALL GET-SYNTAX,TMP,1,1 >TMP
ZERO? TMP \?CCL30
CALL PARSER-ERROR,0,PARSER-ERROR-NOUND
RSTACK
?CCL30: ZERO? N1 /?PRD35
PUSH N1
JUMP ?PEN33
?PRD35: POP DATA-STACK >N1
PUSH N1
?PEN33: CALL DETERMINE-OBJ,STACK,1 >OBJ1
ZERO? OBJ1 \?CCL32
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,N1
RSTACK
?CCL32: PUT PARSE-RESULT,5,OBJ1
GET TMP,0
PUT PARSE-RESULT,4,STACK
RTRUE
.FUNCT RED-SBNA:ANY:0:2,N,TYP
CALL EXCH-4-5-Q,RED-SNBA,N,TYP
RSTACK
.FUNCT RED-SNBA:ANY:0:2,N,TYP,OK,ADJ,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >ADJ
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD24
PUSH ?TMP1
JUMP ?PEN22
?PRD24: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN22: BTST STACK,32768 /?CCL19
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD27
PUSH ?TMP1
JUMP ?PEN25
?PRD27: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN25: BAND STACK,128
BAND STACK,32767
ZERO? STACK \FALSE
?CCL19: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >X
PUT X,1,1
PUT X,3,INTADJ
PUT PARSE-RESULT,6,X
PUT PARSE-RESULT,11,ADJ
RETURN PARSE-RESULT
.FUNCT RED-SBNP:ANY:0:2,N,TYP
CALL EXCH-4-5-Q,RED-SNBP,N,TYP
RSTACK
.FUNCT RED-SNBP:ANY:0:2,N,TYP,OK,PP,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >PP
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD25
PUSH ?TMP1
JUMP ?PEN23
?PRD25: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN23: BTST STACK,32768 /?CCL20
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD28
PUSH ?TMP1
JUMP ?PEN26
?PRD28: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN26: BAND STACK,128
BAND STACK,32767
ZERO? STACK \FALSE
?CCL20: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >X
PUT X,1,1
PUT X,3,INTPP
PUT PARSE-RESULT,6,X
GET PARSE-RESULT,3
CALL REDUCE-LOCATION,PP,STACK,2 >OK
ZERO? OK /?CCL31
PUT PARSE-RESULT,9,OK
RETURN PARSE-RESULT
?CCL31: PUT PARSE-RESULT,9,PP
RETURN PARSE-RESULT
.FUNCT RED-SNBAP:ANY:0:2,N,TYP,OK,ADJ,PP,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >PP
POP DATA-STACK >ADJ
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD25
PUSH ?TMP1
JUMP ?PEN23
?PRD25: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN23: BTST STACK,32768 /?CCL20
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD28
PUSH ?TMP1
JUMP ?PEN26
?PRD28: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN26: BAND STACK,128
BAND STACK,32767
ZERO? STACK \FALSE
?CCL20: CALL DO-PMEM-ALLOC,4,4 >X
PUT X,1,1
PUT X,3,INTPP
SET 'OK,X
PUT PARSE-RESULT,6,OK
GET PARSE-RESULT,3
CALL REDUCE-LOCATION,PP,STACK,2 >OK
ZERO? OK /?CCL31
PUT PARSE-RESULT,9,OK
JUMP ?CND29
?CCL31: GET PP,2
CALL2 DETERMINE-OBJ,STACK >OK
ZERO? OK /?CND32
PUT PP,2,OK
PUTB PP,1,PMEM-TYPE-LOCATION
?CND32: PUT PARSE-RESULT,9,PP
?CND29: PUT PARSE-RESULT,11,ADJ
RETURN PARSE-RESULT
.FUNCT P-PP-OBJ:ANY:0:0,TMP
GET PARSE-RESULT,9 >TMP
ZERO? TMP /FALSE
GETB TMP,1
EQUAL? STACK,6 \FALSE
GET TMP,2 >TMP
ZERO? TMP /FALSE
GET TMP,3
RSTACK
.FUNCT P-PP-PREP:ANY:0:0,TMP
GET PARSE-RESULT,9 >TMP
ZERO? TMP /FALSE
GET TMP,1
RSTACK
.FUNCT RED-SQBN:ANY:0:2,N,TYP,?TMP1
GET PARSE-RESULT,1 >?TMP1
POP DATA-STACK
CALL DETERMINE-SUBJ,?TMP1,TRUE-VALUE,STACK
ZERO? STACK /FALSE
RETURN PARSE-RESULT
.FUNCT RED-BE:ANY:0:2,N,TYP,E
EQUAL? N,1 \TRUE
POP DATA-STACK >E
EQUAL? W?BE,E \FALSE
RETURN E
.FUNCT RED-NOT:ANY:0:2,N,TYP,E
EQUAL? N,1 \TRUE
POP DATA-STACK >E
EQUAL? W?NOT,E \FALSE
RETURN E
.FUNCT RED-CANDO:ANY:0:2,N,TYP,TMP,OBJ,SUBJ,WD,END,?TMP1
ZERO? N /TRUE
EQUAL? N,1 \?CCL5
POP DATA-STACK >SUBJ
GET SUBJ,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD13
PUSH ?TMP1
JUMP ?PEN11
?PRD13: GET SUBJ,2
GET STACK,3
GET STACK,4
?PEN11: BTST STACK,32768 /?CCL8
GET SUBJ,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD16
PUSH ?TMP1
JUMP ?PEN14
?PRD16: GET SUBJ,2
GET STACK,3
GET STACK,4
?PEN14: BAND STACK,128
BAND STACK,32767
ZERO? STACK \FALSE
?CCL8: CALL2 DETERMINE-OBJ,SUBJ >OBJ
ZERO? OBJ \?CCL19
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,SUBJ
RSTACK
?CCL19: GET OBJ,1
EQUAL? STACK,1 \FALSE
GET OBJ,3
FSET? STACK,PERSONBIT \FALSE
PUT PARSE-RESULT,13,OBJ
RTRUE
?CCL5: POP DATA-STACK >SUBJ
CALL2 PMEM?,SUBJ
ZERO? STACK /?CCL26
POP DATA-STACK
GET PARSE-RESULT,16
BOR PARSE-NOT,STACK
PUT PARSE-RESULT,16,STACK
JUMP ?CND24
?CCL26: EQUAL? TRUE-VALUE,SUBJ /?CND27
GET PARSE-RESULT,16
BOR PARSE-NOT,STACK
PUT PARSE-RESULT,16,STACK
?CND27: POP DATA-STACK >SUBJ
EQUAL? N,3 \?CND24
PUT PARSE-RESULT,14,SUBJ
?CND24: POP DATA-STACK >TMP
EQUAL? N,3 \?CCL33
SET 'SUBJ,TMP
GET PARSE-RESULT,14 >TMP
JUMP ?CND31
?CCL33: GET PARSE-RESULT,16
BOR PARSE-QUESTION,STACK
PUT PARSE-RESULT,16,STACK
PUT PARSE-RESULT,14,TMP
?CND31: GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD42
PUSH ?TMP1
JUMP ?PEN40
?PRD42: GET TMP,3
GET STACK,4
?PEN40: BTST STACK,32768 /?PRD37
GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD45
PUSH ?TMP1
JUMP ?PEN43
?PRD45: GET TMP,3
GET STACK,4
?PEN43: BAND STACK,1
BAND STACK,32767
ZERO? STACK \?CND34
?PRD37: GET TMP,3 >OBJ
ZERO? OBJ /?CND34
SET 'TMP,OBJ
?CND34: GET TMP,3
GET STACK,2 >TMP
ZERO? TMP \?CCL48
CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN
RSTACK
?CCL48: CALL GET-SYNTAX,TMP,1,1 >TMP
ZERO? TMP \?CCL50
CALL PARSER-ERROR,0,PARSER-ERROR-NOUND
RSTACK
?CCL50: CALL DETERMINE-OBJ,SUBJ,1 >OBJ
ZERO? OBJ \?CCL52
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,SUBJ
RSTACK
?CCL52: PUT PARSE-RESULT,13,OBJ
PUT PARSE-RESULT,15,TMP
EQUAL? N,3 /TRUE
POP DATA-STACK >TMP
EQUAL? TRUE-VALUE,TMP \?CCL57
PUSH 0
JUMP ?CND55
?CCL57: PUSH TMP
?CND55: PUT PARSE-RESULT,10,STACK
EQUAL? TMP,W?WHAT,W?WHO \TRUE
INTBL? W?PERIOD,TLEXV,P-LEN,132 >SUBJ /?BOGUS60
?BOGUS60: ZERO? SUBJ \?CND61
INTBL? W?THEN,TLEXV,P-LEN,132 >SUBJ /?CND61
?CND61: ZERO? SUBJ \?CND64
INTBL? W??,TLEXV,P-LEN,132 >SUBJ /?CND64
?CND64: ZERO? SUBJ \?CND67
SUB P-LEN,1
MUL STACK,4
ADD TLEXV,STACK >SUBJ
?CND67: SET 'END,4
?PRG69: GET SUBJ,0 >WD
EQUAL? TMP,WD /TRUE
GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD80
PUSH ?TMP1
JUMP ?PEN78
?PRD80: GET WD,3
GET STACK,4
?PEN78: BTST STACK,32768 /?CCL75
GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD83
PUSH ?TMP1
JUMP ?PEN81
?PRD83: GET WD,3
GET STACK,4
?PEN81: BAND STACK,1
BAND STACK,32767
ZERO? STACK /?CCL75
ADD SUBJ,4
ICALL INSERT-WHAT,TMP,STACK
RTRUE
?CCL75: GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD90
PUSH ?TMP1
JUMP ?PEN88
?PRD90: GET WD,3
GET STACK,4
?PEN88: BTST STACK,32768 /?CCL85
GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD93
PUSH ?TMP1
JUMP ?PEN91
?PRD93: GET WD,3
GET STACK,4
?PEN91: BAND STACK,1024
BAND STACK,32767
ZERO? STACK /?CCL85
ADD SUBJ,END
ICALL INSERT-WHAT,TMP,STACK
RTRUE
?CCL85: SUB SUBJ,4 >SUBJ
GRTR? TLEXV,SUBJ \?PRG69
SET 'END,0
RTRUE
.FUNCT INSERT-WHAT:ANY:2:2,TMP,SUBJ
SUB SUBJ,4
GET STACK,0
EQUAL? TMP,STACK /FALSE
SUB SUBJ,P-LEXV
DIV STACK,2
ICALL INSERT-ADJS-WD,STACK,TMP
INC 'P-OLEN
ICALL2 COPY-INPUT,1
SET 'P-OFLAG,0
RTRUE
.ENDSEG
.ENDI

161
cast.zabstr Normal file
View File

@ -0,0 +1,161 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT 0>
<CONSTANT J-HEAD 1>
<CONSTANT J-KILL-MARIKO 2>
<CONSTANT J-SEPPUKU 3>
<CONSTANT J-CALL-YABU 4>
<CONSTANT J-SHOOT-YABU 5>
<CONSTANT J-ATTACK-ISHIDO 6>
<CONSTANT J-LAUGH-AT-TORANAGA 7>
<CONSTANT J-SWITCH 8>
<CONSTANT J-WRONG-ANSWER 9>
<DEFINE-ROUTINE NEW-SDESC>
<DEFINE-ROUTINE YABU-WAKARIMASEN>
<DEFINE-ROUTINE WAKARIMASEN>
<VOC "ANJIN" NOUN>
<VOC "ANJIN-SAN" NOUN>
<OBJECT BLACKTHORNE (LOC BRIDGE-OF-ERASMUS) (OWNER LG-ERASMUS) (DESC
"Blackthorne") (SYNONYM JOHN BLACKTHORNE PILOT PILOT-MAJOR PILOT PILOT-MAJOR) (
ADJECTIVE JOHN) (FLAGS PERSON ENGLISHBIT NOABIT NOTHEBIT OPENBIT CONTBIT
SEARCHBIT) (HEALTH 3) (GENERIC GENERIC-PILOT-F) (ACTION BLACKTHORNE-F)>
<DEFINE-ROUTINE GENERIC-PILOT-F>
<DEFINE-ROUTINE BLACKTHORNE-F>
<DEFINE-ROUTINE I-DONT-KNOW?>
<OBJECT BOOTS (OWNER BLACKTHORNE) (DESC "your boots") (FDESC
"Sitting at the bottom of the steps are your boots.") (SYNONYM BOOTS PAIR) (
FLAGS TAKEBIT WEARABLE PLURAL NOTHEBIT NOABIT) (ACTION BOOTS-F)>
<DEFINE-ROUTINE BOOTS-F>
<OBJECT CLOTHES (OWNER BLACKTHORNE) (DESC "your clothes") (SYNONYM CLOTHES) (
ADJECTIVE PILE) (FLAGS TAKEBIT WEARABLE PLURAL NOTHEBIT NOABIT) (ACTION
CLOTHES-F)>
<DEFINE-ROUTINE CLOTHES-F>
<OBJECT KIMONO (OWNER BLACKTHORNE) (DESC "kimono") (SYNONYM KIMONO CLOTHES) (
ADJECTIVE SILK) (FLAGS TAKEBIT WEARABLE) (ACTION KIMONO-F)>
<DEFINE-ROUTINE KIMONO-F>
<OBJECT SANDALS (OWNER BLACKTHORNE) (DESC "pair of sandals") (SYNONYM SANDALS
SLIPPERS THONG THONGS) (FLAGS TAKEBIT WEARABLE PLURAL)>
<OBJECT SOCKS (OWNER BLACKTHORNE) (DESC "socks") (SYNONYM SOCKS TABIS) (
ADJECTIVE TABI) (FLAGS TAKEBIT WEARABLE PLURAL NOABIT) (ACTION SOCKS-F)>
<DEFINE-ROUTINE SOCKS-F>
<OBJECT SWORDS (OWNER BLACKTHORNE) (DESC "swords") (SYNONYM SWORDS SWORD SELLER
) (ADJECTIVE PAIR KILLING STABBING OIL LONG SHORT) (FLAGS TAKEBIT WEARABLE
WEAPONBIT NOABIT SCOREBIT PLURAL) (GENERIC GENERIC-SWORD-F) (ACTION SWORDS-F)>
<DEFINE-ROUTINE SWORDS-F>
<OBJECT SEBASTIO (SDESC "priest") (SYNONYM PRIEST SEBASTIO MAN FATHER JESUIT
EUROPEAN) (ADJECTIVE FATHER TONSURED) (FLAGS PERSON PORTUGUESEBIT OPENBIT
CONTBIT SEARCHBIT NOABIT THE) (ACTION SEBASTIO-F)>
<DEFINE-ROUTINE SEBASTIO-F>
<OBJECT OMI (SDESC "young man") (SYNONYM MAN OMI OMI-SAN SAMURAI) (ADJECTIVE
YOUNG KASIGI) (PICTURE P-OMI) (FLAGS PERSON JAPANESEBIT SCOREBIT THE) (GENERIC
GENERIC-SAMURAI-F) (ACTION OMI-F)>
<CONSTANT OMI-NAME "Omi">
<DEFINE-ROUTINE OMI-F>
<DEFINE-ROUTINE SEBASTIO-SCREAMS>
<DEFINE-ROUTINE REMOVES-YOUR-HEAD>
<OBJECT MURA (LOC GENERIC-OBJECTS) (DESC "Mura") (SYNONYM MURA HEADMAN MAN) (
FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT OPENBIT CONTBIT SEARCHBIT) (GENERIC
GENERIC-MAN-F) (ACTION MURA-F)>
<DEFINE-ROUTINE GENERIC-MAN-F>
<DEFINE-ROUTINE MURA-F>
<OBJECT BROWNS (DESC "Brown-uniformed samurai") (SYNONYM BROWNS BROWN SAMURAI)
(ADJECTIVE BROWNS BROWN BROWN-UNIFORMED) (FLAGS PERSON JAPANESEBIT NOABIT) (
COUNT 20) (GENERIC GENERIC-SAMURAI-F) (ACTION BROWNS-F)>
<DEFINE-ROUTINE BROWNS-F>
<OBJECT GRAYS (DESC "Gray-uniformed samurai") (SYNONYM GRAYS GRAY SAMURAI
ESCORT GUARDS GUARDSMEN) (ADJECTIVE GRAY GRAY-UNIFORMED) (FLAGS PERSON
JAPANESEBIT NOABIT) (GENERIC GENERIC-SAMURAI-F) (ACTION GRAYS-F)>
<DEFINE-ROUTINE GRAYS-F>
<OBJECT MARIKO (SDESC "Mariko") (PICTURE P-MARIKO) (SYNONYM MARIKO TODA WOMAN)
(ADJECTIVE LADY TODA) (FLAGS PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT OPENBIT
CONTBIT SEARCHBIT SCOREBIT) (DESCFCN MARIKO-DESC) (ACTION MARIKO-F)>
<DEFINE-ROUTINE MARIKO-DESC>
<DEFINE-ROUTINE MARIKO-F>
<DEFINE-ROUTINE INTERRUPTED-SEPPUKU>
<DEFINE-ROUTINE I-LOVE-YOU>
<DEFINE-ROUTINE I-DONT-UNDERSTAND>
<OBJECT YABU (LOC OUTER-ROOM) (DESC "Yabu") (SYNONYM YABU DAIMYO LORD) (
ADJECTIVE KASIGI LORD) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT) (PICTURE
P-YABU) (DESCFCN YABU-DESC) (GENERIC GENERIC-YABU-F) (ACTION YABU-F)>
<DEFINE-ROUTINE YABU-DESC>
<DEFINE-ROUTINE YABU-F>
<OBJECT LG-YABU (LOC LOCAL-GLOBALS) (SCENE S-VOYAGE) (DESC "Yabu") (SYNONYM
YABU) (ADJECTIVE KASIGI) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT) (GENERIC
GENERIC-YABU-F) (ACTION LG-YABU-F)>
<DEFINE-ROUTINE GENERIC-YABU-F>
<DEFINE-ROUTINE LG-YABU-F>
<OBJECT ISHIDO (DESC "Ishido") (SYNONYM ISHIDO MAN) (ADJECTIVE LORD KAZUNARI
TALL) (PICTURE P-ISHIDO) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT OPENBIT
SCOREBIT CONTBIT SEARCHBIT) (DESCFCN ISHIDO-DESC) (ACTION ISHIDO-F)>
<DEFINE-ROUTINE ISHIDO-DESC>
<OBJECT ISHIDO-SWORD (LOC ISHIDO) (OWNER ISHIDO) (DESC "sword") (SYNONYM SWORD)
(FLAGS NDESCBIT) (GENERIC GENERIC-SWORD-F)>
<DEFINE-ROUTINE GENERIC-SWORD-F>
<DEFINE-ROUTINE ISHIDO-F>
<OBJECT TORANAGA (DESC "Toranaga") (SYNONYM TORANAGA YOSHI) (ADJECTIVE YOSHI
LORD) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT OPENBIT CONTBIT SEARCHBIT) (
DESCFCN TORANAGA-DESC) (GENERIC GENERIC-TORANAGA-F) (ACTION TORANAGA-F)>
<DEFINE-ROUTINE GENERIC-TORANAGA-F>
<GLOBAL SEEN-FALCON? <>>
<DEFINE-ROUTINE TORANAGA-DESC>
<DEFINE-ROUTINE TORANAGA-F>
<OBJECT HIRO-MATSU (SDESC "Hiro-matsu") (SYNONYM HIRO-MATSU HIRO MAN) (
ADJECTIVE LORD OLD) (FLAGS PERSON JAPANESEBIT NOTHEBIT NOABIT) (ACTION
HIRO-MATSU-F)>
<DEFINE-ROUTINE HIRO-MATSU-F>
<OBJECT VINCK (LOC BELOW-DECKS) (DESC "Vinck") (SYNONYM VINCK MAN) (ADJECTIVE
JOHANN JOHANN) (FLAGS NDESCBIT PERSON DUTCHBIT NOABIT NOTHEBIT) (DESCFCN
VINCK-DESC) (ACTION VINCK-F)>
<DEFINE-ROUTINE VINCK-DESC>
<DEFINE-ROUTINE VINCK-F>
<OBJECT KIRITSUBO (LOC PRIVATE-QUARTERS) (DESC "Kiritsubo") (SYNONYM KIRITSUBO
KIRI CONSORT) (ADJECTIVE LADY) (FLAGS PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT
) (ACTION KIRITSUBO-F)>
<DEFINE-ROUTINE KIRITSUBO-F>
<OBJECT RODRIGUES (SDESC "seaman") (LOC GENERIC-OBJECTS) (SCENE S-RODRIGUES
S-VOYAGE) (SYNONYM VASCO RODRIGUES SEAMAN PILOT) (ADJECTIVE VASCO PORTUGUESE) (
PICTURE P-RODRIGUES) (FLAGS PERSON PORTUGUESEBIT OPENBIT CONTBIT SEARCHBIT) (
GENERIC GENERIC-PILOT-F) (DESCFCN RODRIGUES-DESC) (CONTFCN RODRIGUES-F) (ACTION
RODRIGUES-F)>
<DEFINE-ROUTINE RODRIGUES-DESC>
<GLOBAL WRONG-ANSWER? <>>
<DEFINE-ROUTINE RODRIGUES-F>
<DEFINE-ROUTINE TRAINED?>
<OBJECT LG-RODRIGUES (LOC LOCAL-GLOBALS) (SCENE S-VOYAGE) (DESC "Rodrigues") (
SYNONYM VASCO RODRIGUES SEAMAN PILOT BODY) (ADJECTIVE VASCO PORTUGUESE) (FLAGS
PERSON PORTUGUESEBIT NOABIT NOTHEBIT) (ACTION LG-RODRIGUES-F)>
<DEFINE-ROUTINE LG-RODRIGUES-F>
<OBJECT DICTIONARY (DESC "Japanese dictionary") (SYNONYM DICTIONARY BOOK) (
ADJECTIVE JAPANESE WORD) (FLAGS READBIT TAKEBIT) (ACTION DICTIONARY-F)>
<DEFINE-ROUTINE DICTIONARY-F>
<DEFINE-ROUTINE JAPANESE-WORD?>
<DEFINE-ROUTINE JAPANESE-PHRASE?>
<DEFINE-ROUTINE MATCH-INTQUOTE?>
<DEFMAC PHRASE ("ARGS" WDS) <FORM LTABLE '(PURE) !<MAPF ,LIST <FUNCTION (WD) <
FORM VOC .WD>> .WDS!>>>
<CONSTANT JAPANESE-PHRASES <LTABLE (PURE) <PHRASE "ANATA" "WA" "YOKU" "NEMUTTA"
"KA"> "Did you sleep well?" <PHRASE "ARIGATO" "GOZIEMASHITA">
"Thank you, from an inferior to a superior." <PHRASE "DOKO" "NO" "KUNI" "NO"
"MONODA"> "What's your nationality?" <PHRASE "GENKI" "DESU"> "Quite well." <
PHRASE "GOMEN" "NASAI"> "So sorry." <PHRASE "IKAGA" "DESU" "KA"> "How are you?"
<PHRASE "KONNICHI" "WA"> "Good day." <PHRASE "ONUSHI" "ITTAI" "DOKO" "KARA"
"KITANODA"> "Where are you from?" <PHRASE "SHIGATA" "GA" "NAI">
"There's nothing that can be done." <PHRASE "TSUYUKU" "GA" "IMASU" "KA">
"Do you have an interpreter?" <PHRASE "WAKARIMASU" "KA"> "Do you understand?">>
<CONSTANT JAPANESE-VOCABULARY <LTABLE (PURE) <VOC "AKABO"> "porter" <VOC
"ANJIN"> "pilot" <VOC "ARIGATO"> "very much" <VOC "BANZAI">
"ten thousand years" <VOC "BUSHIDO"> "Way of the Warrior" <VOC "CHA"> "tea" <
VOC "CHA-NO-YU"> "tea ceremony" <VOC "DAIMYO"> "Lord" <VOC "DESU"> 0 <VOC
"DOMO"> "thank you" <VOC "DOZO"> "please" <VOC "ETA"> "outcast" <VOC "GA"> 0 <
VOC "GENKI"> 0 <VOC "GO"> 0 <VOC "GOMEN"> 0 <VOC "GOZIEMASHITA"> 0 <VOC "HAI">
"yes" <VOC "HANASE-MASEN"> 0 <VOC "IKAGA"> 0 <VOC "ISOGI"> "hurry" <VOC "IYE">
"no" <VOC "KA"> "question" <VOC "KAGA"> "litter" <VOC "KAMI"> "evil spirit" <
VOC "KINJIRU"> "forbidden" <VOC "KONNICHI"> "good day" <VOC "KONBANWA">
"good evening" <VOC "MIZU"> "water" <VOC "NAI"> 0 <VOC "NASAI"> 0 <VOC "NEH">
"eh?" <VOC "NIHON"> "Japan" <VOC "ONNA"> "woman" <VOC "RONIN">
"masterless samurai" <VOC "SEPPUKU"> "suicide" <VOC "SHIGATA"> 0 <VOC "SHOJI">
"screen" <VOC "SO"> 0 <VOC "TATAMI"> "mat" <VOC "TEKI"> "enemy" <VOC "TOMO">
"friend" <VOC "TSURU"> "grulla (Spanish), grue (French), crane (English)" <VOC
"TSUYAKU"> "translator" <VOC "WA"> 0>>
<END-SEGMENT>

1803
cast.zap Normal file

File diff suppressed because it is too large Load Diff

1526
cast.zil

File diff suppressed because it is too large Load Diff

20
cheat.txt Normal file
View File

@ -0,0 +1,20 @@
CHEAT SHEET FOR SHOGUN
* Insert the diskette in one of your drives (usually drive
A), and start the program by typing SHOGUN to the DOS
prompt.
* When the first menu appears, type the F10 key (or Apple-0)
on an Apple, to get a menu of all scenes.
* Select menu items using the up- and down-arrow keys, and
carriage-return once the proper item is highlighted.
* In the "Rodrigues" scene, the correct answers to his
questions are "I TRAINED AT TRINITY HOUSE" and "THE
LATITUDE IS 50".
* In the IBM version, scripting doesn't currently work.
This is a known bug.
* In the IBM version, there aren't any pictures yet.

83
clues.zabstr Normal file
View File

@ -0,0 +1,83 @@
<FLAGS-AND-DEFAULTS (("SOUND" %<>)) (("LEAVE-HINT-SCREEN" "VERBS" #WORD
*12501633253*) ("INIT-HINT-SCREEN" "VERBS" #WORD *22324330117*))>
<FILE-FLAGS CLEAN-STACK? MDL-ZIL?>
<COMPILATION-FLAG-DEFAULT SEGMENTED-HINTS <>>
<COMPILATION-FLAG-DEFAULT SPLIT-HINTS <>>
<COMPILATION-FLAG-DEFAULT SELECTIVE-HINTS <>>
<DEFAULTS-DEFINED HINT-TITLES INIT-HINT-SCREEN LEAVE-HINT-SCREEN>
<BEGIN-SEGMENT HINTS>
<DEFAULT-DEFINITION HINT-TITLES <CONSTANT RETURN-SEE-HINT "Return for hints.">
<CONSTANT RETURN-SEE-NEW-HINT "Return for a hint."> <CONSTANT M-MAIN-HINT-MENU
"M for main menu."> <CONSTANT M-SEE-HINT-MENU "M for hint menu."> <CONSTANT
PREVIOUS-HINT "P for previous item."> <CONSTANT NEXT-HINT "N for next item."> <
CONSTANT Q-RESUME-STORY "Q to resume story."> <CONSTANT H-OR-USE-MOUSE
"(Or use mouse.)"> <GLOBAL H-OR-USE-MOUSE-WID:NUMBER 0> <CONSTANT NO-MORE-HINTS
"[No more hints.]">>
<END-SEGMENT>
<COND (<GASSIGNED? DISTINGUISHED-SEGMENT> <DISTINGUISHED-SEGMENT HINTS>)>
<BEGIN-SEGMENT HINTS>
<DEFINE20 EVAL-INTO-HINTS? () <COND (<COMPILATION-FLAG-VALUE "SEGMENTED-HINTS">
<>) (<COMPILATION-FLAG-VALUE "SPLIT-HINTS"> T)>>
<DEFINE20 CONSTRUCT-HINTS (COUNT-NAME "ARGS" STUFF "AUX" (SS <>) END-STUFF VAL
(HL (T)) (HLL .HL) V (CL (T)) (CLL .CL) TCL TCLL MAIN-SEGMENT (CURRENT-SEGMENT
<>)) <IFFLAG (SEGMENTED-HINTS <BIND () <SET MAIN-SEGMENT "0"> <SET
CURRENT-SEGMENT "0">>)> <REPEAT ((CT 0)) <COND (<OR <EMPTY? .STUFF> <TYPE? <1 .
STUFF> STRING>> <SET END-STUFF .STUFF> <IFFLAG (SEGMENTED-HINTS <COND (<EMPTY?
.STUFF>) (<AND <NOT <EMPTY? <REST .STUFF>>> <TYPE? <2 .STUFF> STRING>> <SET
CURRENT-SEGMENT <2 .STUFF>> <2 .STUFF <1 .STUFF>> <SET STUFF <REST .STUFF>>) (T
<SET CURRENT-SEGMENT .MAIN-SEGMENT>)>) (T <COND (<EMPTY? .STUFF>) (<AND <NOT <
EMPTY? <REST .STUFF>>> <TYPE? <2 .STUFF> STRING>> <2 .STUFF <1 .STUFF>> <SET
STUFF <REST .STUFF>>)>)> <COND (<NOT .SS> <SET SS .STUFF> <SET TCL (T)> <SET
TCLL .TCL> <SET CT 0>) (T <SET V <IVECTOR <- <LENGTH .SS> <LENGTH .END-STUFF>>>
> <MAPR <> <FUNCTION (L V) <1 .V <1 .L>>> .SS .V> <COND (<L? 17 <LENGTH .V>> <
WARN "Too many answers for: " <1 .V>>)> <COND (<EVAL-INTO-HINTS?> <SET HLL <
REST <PUTREST .HLL (<EVAL <FORM TABLE (LENGTH PURE SEGMENT <IFFLAG (SPLIT-HINTS
"CLUES") (T "HINTS")>) !.V>>)>>>) (T <SET HLL <REST <PUTREST .HLL (<EVAL <FORM
TABLE (LENGTH PURE) !.V>>)>>>)> <COND (.COUNT-NAME <SET CLL <REST <PUTREST .CLL
(<EVAL <FORM TABLE (BYTE) !<REST .TCL!>>>)>>> <SET TCL (T)> <SET TCLL .TCL> <
SET CT 0>)> <SET SS .STUFF>)> <COND (<EMPTY? .STUFF> <RETURN>)> <SET STUFF <
REST .STUFF>>) (T <IFFLAG (SEGMENTED-HINTS <1 .STUFF <EVAL-IN-SEGMENT .
CURRENT-SEGMENT <1 .STUFF>>>) (SPLIT-HINTS <BIND () <MAPR <> <FUNCTION (X "AUX"
(Y <1 .X>) TT) <COND (<TYPE? .Y STRING> <SET TT <EVAL-IN-SEGMENT "HINTS" <FORM
TABLE (TEMP-TABLE) .Y>>> <1 .X <ZGET .TT 0>>) (<TYPE? .Y FORM> <MAPR <> <
FUNCTION (A "AUX" (B <1 .A>) TT) <COND (<TYPE? .B STRING> <SET TT <
EVAL-IN-SEGMENT "HINTS" <FORM TABLE (TEMP-TABLE) .B>>> <1 .A <ZGET .TT 0>>)>> .
Y>)>> <1 .STUFF>> <1 .STUFF <EVAL-IN-SEGMENT "CLUES" <1 .STUFF> T>>>) (T <1 .
STUFF <EVAL-IN-SEGMENT "HINTS" <1 .STUFF> T>>)> <COND (.COUNT-NAME <COND (<1? <
MOD <SET CT <+ .CT 1>> 2>> <SET TCLL <REST <PUTREST .TCLL (0)>>>)>)> <SET STUFF
<REST .STUFF>>)>> <COND (.COUNT-NAME <COND (<EVAL-INTO-HINTS?> <EVAL <FORM
CONSTANT .COUNT-NAME <EVAL <FORM TABLE (PURE SEGMENT <IFFLAG (SPLIT-HINTS
"CLUES") (T "HINTS")>) !<REST .CL!>>>>>) (T <EVAL <FORM CONSTANT .COUNT-NAME <
EVAL <FORM PTABLE !<REST .CL!>>>>>)>)> <SET VAL <COND (<EVAL-INTO-HINTS?> <EVAL
<FORM TABLE (PURE LENGTH SEGMENT <IFFLAG (SPLIT-HINTS "CLUES") (T "HINTS")>) !<
REST .HL!>>>) (T <EVAL <FORM PLTABLE !<REST .HL!>>>)>> <EVAL <FORM CONSTANT
INVISICLUES " InvisiClues (tm)">> .VAL>
<GLOBAL H-QUEST-NUM 1>
<GLOBAL H-CHAPT-NUM 1>
<GLOBAL BOTTOM-HINT-NUM:NUMBER 0>
<CONSTANT TOP-HINT-LINE:NUMBER 1>
<CONSTANT LEFT-HINT-COLUMN:NUMBER 1>
<GLOBAL GET-HINT-ROUTINE 0>
<DEFINE-ROUTINE DO-HINTS>
<DEFINE-ROUTINE H-PICK-QUESTION>
<DEFINE-ROUTINE H-NEW-CURSOR>
<DEFINE-ROUTINE SELECT-HINT-BY-MOUSE>
<LOWCORE MSLOCY %<> T>
<LOWCORE MSLOCX %<> T>
<DEFINE-ROUTINE INVERSE-LINE>
<DEFINE-ROUTINE DISPLAY-HINT>
<DEFINE-ROUTINE H-CHAPT-NAME>
<DEFINE-ROUTINE H-GET-QUEST>
<DEFINE-ROUTINE H-PUT-UP-FROBS>
<DEFAULT-DEFINITION INIT-HINT-SCREEN <DEFINE INIT-HINT-SCREEN () <CLEAR -1> <
CSPLIT 4> <SCREEN ,S-TEXT> ,S-WINDOW>>
<DEFAULT-DEFINITION LEAVE-HINT-SCREEN <DEFINE LEAVE-HINT-SCREEN () <
INIT-STATUS-LINE> <IF-SOUND <COND (,SOUND-ON? <CHECK-LOOPING>)>> <TELL
"Back to the story..." CR>>>
<DEFINE-ROUTINE HINT-TITLE>
<DEFINE-ROUTINE LEFT-LINE>
<DEFINE-ROUTINE RIGHT-LINE>
<DEFINE-ROUTINE CENTER-LINE>
<DEFINE-ROUTINE JUSTIFIED-LINE>
<END-SEGMENT>

645
clues.zap Normal file
View File

@ -0,0 +1,645 @@
.SEGMENT "HINTS"
.FUNCT DO-HINTS:ANY:0:0,Q,WIN,WCLR,QN,FG,BG,NUM,MAXC,?TMP1
HLIGHT H-NORMAL
CURSET -1,0
CALL1 INIT-HINT-SCREEN >WIN
WINATTR S-TEXT,A-WRAP,O-CLEAR
FONT 1
WINGET -3,WFSIZE
SHIFT STACK,-8 >Q
WINGET -3,WHIGH
DIV STACK,Q >BOTTOM-HINT-NUM
SCREEN S-WINDOW
WINGET S-WINDOW,WCOLOR >WCLR
GETB 0,30
EQUAL? STACK,APPLE-2C,APPLE-2E,APPLE-2GS \?CCL3
COLOR 1,1
HLIGHT H-INVERSE
JUMP ?PRG12
?CCL3: GET 0,0
BTST STACK,1 \?PRG6
ICALL CCURSET,2,9
COLOR 1,-1
JUMP ?PRG12
?PRG6: WINGET S-TEXT,WCOLOR >BG
SHIFT BG,-8 >FG
EQUAL? FG,-1,255 \?CND8
SET 'FG,1
?CND8: BAND BG,255 >BG
EQUAL? BG,-1,255 \?CND10
SET 'BG,1
?CND10: COLOR FG,BG
?PRG12: CLEAR S-TEXT
SCREEN S-WINDOW
FONT 1
ICALL HINT-TITLE,INVISICLUES,S-WINDOW
SCREEN S-TEXT
WINATTR -3,A-SCRIPT,O-CLEAR
DIROUT D-TABLE-ON,SLINE
DIROUT D-TABLE-OFF
SET 'GET-HINT-ROUTINE,H-CHAPT-NAME
GET HINTS,0
ICALL2 H-PUT-UP-FROBS,STACK
SET 'QN,H-CHAPT-NUM
GET HINTS,0
GRTR? QN,STACK \?CND14
PRINTI " ["
PRINTN QN
PRINTC 93
SET 'QN,1
?CND14: ICALL2 H-NEW-CURSOR,QN
?PRG16: GET HINTS,0 >MAXC
ZERO? DEMO-VERSION? /?CCL20
CALL2 INPUT-DEMO,1 >BG
JUMP ?CND18
?CCL20: INPUT 1 >BG
?CND18: EQUAL? BG,CLICK1,CLICK2 \?CND21
CALL1 SELECT-HINT-BY-MOUSE >FG
GRTR? FG,0 /?CND21
EQUAL? FG,-1 \?CCL27
SET 'BG,78
JUMP ?CND21
?CCL27: EQUAL? FG,-2 \?CCL29
SET 'BG,80
JUMP ?CND21
?CCL29: EQUAL? FG,-3 \?CCL31
SET 'BG,13
JUMP ?CND21
?CCL31: EQUAL? FG,-4 \?CCL33
SET 'BG,81
?CND21: EQUAL? BG,77,109,81 /?CTR35
EQUAL? BG,113 \?CCL36
?CTR35: SET 'Q,TRUE-VALUE
JUMP ?REP17
?CCL33: SOUND S-BEEP
JUMP ?PRG16
?CCL36: EQUAL? BG,LEFT-ARROW \?CCL40
SUB QN,BOTTOM-HINT-NUM >NUM
LESS? 0,NUM \?CCL43
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
SET 'QN,NUM
ICALL2 H-NEW-CURSOR,QN
SET 'H-QUEST-NUM,1
JUMP ?PRG16
?CCL43: SOUND S-BEEP
JUMP ?PRG16
?CCL40: EQUAL? BG,RIGHT-ARROW \?CCL45
ADD QN,BOTTOM-HINT-NUM >NUM
LESS? MAXC,NUM /?CCL48
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
SET 'QN,NUM
ICALL2 H-NEW-CURSOR,QN
SET 'H-QUEST-NUM,1
JUMP ?PRG16
?CCL48: SOUND S-BEEP
JUMP ?PRG16
?CCL45: EQUAL? BG,78,110,DOWN-ARROW \?CCL50
SET 'NUM,QN
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
?PRG51: IGRTR? 'NUM,MAXC \?CND53
SET 'NUM,1
?CND53: EQUAL? NUM,QN \?CCL57
SOUND S-BEEP
ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG16
?CCL57: CALL2 H-NEW-CURSOR,NUM
ZERO? STACK /?PRG51
SET 'QN,NUM
SET 'H-QUEST-NUM,1
JUMP ?PRG16
?CCL50: EQUAL? BG,80,112,UP-ARROW \?CCL60
SET 'NUM,QN
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
?PRG61: DLESS? 'NUM,1 \?CND63
SET 'NUM,MAXC
?CND63: EQUAL? NUM,QN \?CCL67
SOUND S-BEEP
ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG16
?CCL67: CALL2 H-NEW-CURSOR,NUM
ZERO? STACK /?PRG61
SET 'QN,NUM
SET 'H-QUEST-NUM,1
JUMP ?PRG16
?CCL60: EQUAL? BG,13,10,32 \?CCL70
SET 'H-CHAPT-NUM,QN
CALL1 H-PICK-QUESTION >Q
JUMP ?REP17
?CCL70: EQUAL? BG,CLICK1,CLICK2 \?CCL72
GRTR? FG,MAXC \?CCL75
SOUND S-BEEP
JUMP ?PRG16
?CCL75: ICALL H-NEW-CURSOR,QN,TRUE-VALUE
CALL2 H-NEW-CURSOR,FG
ZERO? STACK /?CCL78
SET 'QN,FG
SET 'H-QUEST-NUM,1
EQUAL? BG,CLICK2 \?PRG16
SET 'H-CHAPT-NUM,QN
CALL1 H-PICK-QUESTION >Q
?REP17: ZERO? Q /?PRG12
CLEAR -1
SCREEN S-WINDOW
GETB 0,30
EQUAL? STACK,APPLE-2C,APPLE-2E,APPLE-2GS \?CCL85
HLIGHT H-NORMAL
JUMP ?CND83
?CCL78: SOUND S-BEEP
ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG16
?CCL72: SOUND S-BEEP
JUMP ?PRG16
?CCL85: BAND WCLR,255 >?TMP1
SHIFT WCLR,-8
COLOR ?TMP1,STACK
?CND83: SCREEN S-TEXT
HLIGHT H-NORMAL
WINATTR S-TEXT,A-WRAP,O-SET
WINATTR S-TEXT,A-SCRIPT,O-SET
CURSET -2,0
ICALL1 LEAVE-HINT-SCREEN
RETURN M-FATAL
.FUNCT H-PICK-QUESTION:ANY:0:0,CHR,MAXQ,Q,WID,QN,TMP,NUM
?FCN: CATCH >PARSE-SENTENCE-ACTIVATION
HLIGHT H-NORMAL
CLEAR S-TEXT
GET HINTS,H-CHAPT-NUM
GET STACK,1
ICALL HINT-TITLE,STACK,S-WINDOW
CALL CENTER-LINE,M-MAIN-HINT-MENU,2 >WID
GET HINTS,H-CHAPT-NUM
GET STACK,0
SUB STACK,1 >MAXQ
SCREEN S-TEXT
SET 'GET-HINT-ROUTINE,H-GET-QUEST
ICALL2 H-PUT-UP-FROBS,MAXQ
SET 'QN,H-QUEST-NUM
GRTR? QN,MAXQ \?CND1
PRINTI " ["
PRINTN QN
PRINTC 93
SET 'QN,1
?CND1: ICALL2 H-NEW-CURSOR,QN
?PRG3: ZERO? DEMO-VERSION? /?CCL7
CALL2 INPUT-DEMO,1 >CHR
JUMP ?CND5
?CCL7: INPUT 1 >CHR
?CND5: EQUAL? CHR,CLICK1,CLICK2 \?CND8
CALL SELECT-HINT-BY-MOUSE,WID,TRUE-VALUE >TMP
GRTR? TMP,0 /?CND8
EQUAL? TMP,-1 \?CCL14
SET 'CHR,78
JUMP ?CND8
?CCL14: EQUAL? TMP,-2 \?CCL16
SET 'CHR,80
JUMP ?CND8
?CCL16: EQUAL? TMP,-3 \?CCL18
SET 'CHR,13
JUMP ?CND8
?CCL18: EQUAL? TMP,-4 \?CCL20
SET 'CHR,81
JUMP ?CND8
?CCL20: EQUAL? TMP,-5 \?CCL22
SET 'CHR,77
?CND8: EQUAL? CHR,81,113 /TRUE
EQUAL? CHR,77,109 \?CCL27
SET 'Q,TRUE-VALUE
JUMP ?REP4
?CCL22: SOUND S-BEEP
JUMP ?PRG3
?CCL27: EQUAL? CHR,LEFT-ARROW \?CCL29
SUB QN,BOTTOM-HINT-NUM >NUM
LESS? 0,NUM \?CCL32
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
SET 'QN,NUM
ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG3
?CCL32: SOUND S-BEEP
JUMP ?PRG3
?CCL29: EQUAL? CHR,RIGHT-ARROW \?CCL34
ADD QN,BOTTOM-HINT-NUM >NUM
LESS? MAXQ,NUM /?CCL37
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
SET 'QN,NUM
ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG3
?CCL37: SOUND S-BEEP
JUMP ?PRG3
?CCL34: EQUAL? CHR,78,110,DOWN-ARROW \?CCL39
SET 'NUM,QN
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
?PRG40: IGRTR? 'NUM,MAXQ \?CND42
SET 'NUM,1
?CND42: EQUAL? NUM,QN \?CCL46
SOUND S-BEEP
JUMP ?REP41
?CCL46: CALL2 H-NEW-CURSOR,NUM
ZERO? STACK /?PRG40
SET 'QN,NUM
?REP41: ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG3
?CCL39: EQUAL? CHR,80,112,UP-ARROW \?CCL49
SET 'NUM,QN
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
?PRG50: DLESS? 'NUM,1 \?CND52
SET 'NUM,MAXQ
?CND52: EQUAL? NUM,QN \?CCL56
SOUND S-BEEP
JUMP ?REP51
?CCL56: CALL2 H-NEW-CURSOR,NUM
ZERO? STACK /?PRG50
SET 'QN,NUM
?REP51: ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG3
?CCL49: EQUAL? CHR,CLICK1,CLICK2 \?CCL59
GRTR? TMP,MAXQ \?CCL62
SOUND S-BEEP
JUMP ?PRG3
?CCL62: ICALL H-NEW-CURSOR,QN,TRUE-VALUE
CALL2 H-NEW-CURSOR,TMP
ZERO? STACK /?CCL65
SET 'QN,TMP
EQUAL? CHR,CLICK2 \?PRG3
SET 'H-QUEST-NUM,QN
ICALL1 DISPLAY-HINT
JUMP ?REP4
?CCL65: SOUND S-BEEP
ICALL2 H-NEW-CURSOR,QN
JUMP ?PRG3
?CCL59: EQUAL? CHR,13,10,32 \?CCL69
SET 'H-QUEST-NUM,QN
ICALL1 DISPLAY-HINT
?REP4: ZERO? Q /?FCN
RFALSE
?CCL69: SOUND S-BEEP
JUMP ?PRG3
.FUNCT H-NEW-CURSOR:ANY:1:2,POS,OFF?,Y,X,?TMP1
SET 'Y,POS
SET 'X,LEFT-HINT-COLUMN
GRTR? POS,BOTTOM-HINT-NUM \?CND1
SUB Y,BOTTOM-HINT-NUM >Y
WINGET -3,WWIDE
DIV STACK,2 >X
?CND1: SUB Y,1 >?TMP1
WINGET -3,WFSIZE
SHIFT STACK,-8
MUL ?TMP1,STACK
ADD 1,STACK
CURSET STACK,X
ZERO? OFF? \?CCL5
HLIGHT H-INVERSE
JUMP ?CND3
?CCL5: HLIGHT H-NORMAL
?CND3: CALL GET-HINT-ROUTINE,POS >X
ZERO? X /?CND6
PRINT X
PRINTC 32
?CND6: ZERO? OFF? \?CND8
HLIGHT H-NORMAL
?CND8: RETURN X
.FUNCT SELECT-HINT-BY-MOUSE:ANY:0:2,WID,Q?,VAL,MID,X,Y,WIN,?TMP1
GET 0,27
GET STACK,2 >Y
GET 0,27
GET STACK,1 >X
WINGET S-WINDOW,WTOP >VAL
GRTR? VAL,Y /?CCL3
SUB Y,VAL >?TMP1
WINGET S-WINDOW,WHIGH
LESS? ?TMP1,STACK \?CCL3
SET 'WIN,S-WINDOW
JUMP ?CND1
?CCL3: WINGET S-TEXT,WTOP >VAL
SET 'WIN,S-TEXT
?CND1: SUB Y,VAL >Y
WINGET WIN,WFSIZE
SHIFT STACK,-8 >VAL
DIV Y,VAL >VAL
GETB 0,33 >?TMP1
WINGET WIN,WFSIZE
BAND STACK,255
MUL ?TMP1,STACK
DIV STACK,2 >MID
EQUAL? WIN,S-WINDOW \?CCL8
EQUAL? VAL,1 \?CCL11
DIV WID,2 >VAL
ZERO? VAL /?CCL14
SUB MID,VAL
GRTR? X,STACK \?CCL14
ADD MID,VAL
LESS? X,STACK \?CCL14
RETURN -5
?CCL14: GRTR? X,MID /?CCL19
RETURN -1
?CCL19: RETURN -3
?CCL11: EQUAL? VAL,2 \FALSE
DIV H-OR-USE-MOUSE-WID,2 >VAL
SUB MID,VAL
LESS? X,STACK \?CCL24
RETURN -2
?CCL24: ADD MID,VAL
GRTR? X,STACK \FALSE
RETURN -4
?CCL8: INC 'VAL
GRTR? X,MID \?CCL30
ZERO? Q? \?CCL30
ADD VAL,BOTTOM-HINT-NUM >VAL
RETURN VAL
?CCL30: GRTR? VAL,BOTTOM-HINT-NUM \?CND28
SET 'VAL,BOTTOM-HINT-NUM
?CND28: RETURN VAL
.FUNCT INVERSE-LINE:ANY:0:2,LN,INV,?TMP1
ASSIGNED? 'INV /?CND1
SET 'INV,H-INVERSE
?CND1: ZERO? LN /?CND3
ICALL CCURSET,LN,1
?CND3: HLIGHT INV
ZERO? INV \?CCL7
ERASE 1
RTRUE
?CCL7: FONT 4
GETB 0,39 >LN
WINGET -3,WWIDE >INV
ADD LN,INV
DIV STACK,LN
ICALL2 PRINT-SPACES,STACK
GETB 0,30
EQUAL? STACK,APPLE-2E,APPLE-2C,APPLE-2GS \?CND8
CURGET SLINE
GET SLINE,0 >?TMP1
SUB INV,LN
CURSET ?TMP1,STACK
PRINTC 32
?CND8: FONT 1
HLIGHT H-NORMAL
RTRUE
.FUNCT DISPLAY-HINT:ANY:0:0,H,MX,CNT,CV,SHIFT?,COUNT-OFFS,WID,CURCX,CURC,FLG,?TMP1
HLIGHT H-NORMAL
CLEAR S-TEXT
SCREEN S-WINDOW
ICALL INVERSE-LINE,3,H-NORMAL
ICALL RIGHT-LINE,Q-RESUME-STORY,3
ICALL INVERSE-LINE,2,H-NORMAL
ICALL RIGHT-LINE,RETURN-SEE-NEW-HINT,2
GET 0,8
BTST STACK,32 \?CND1
CALL CENTER-LINE,H-OR-USE-MOUSE,3 >H-OR-USE-MOUSE-WID
?CND1: ICALL INVERSE-LINE,1,H-NORMAL
HLIGHT H-BOLD
GET HINTS,H-CHAPT-NUM >?TMP1
ADD H-QUEST-NUM,1
GET ?TMP1,STACK >H
SUB H-CHAPT-NUM,1
GET HINT-COUNTS,STACK >CV
GET H,1
ICALL CENTER-LINE,STACK,1,H-INVERSE
HLIGHT H-NORMAL
CALL CENTER-LINE,M-SEE-HINT-MENU,2 >WID
GET H,0 >MX
DIROUT D-SCREEN-OFF
GET H,1
PRINT STACK
CRLF
DIROUT D-SCREEN-ON
SCREEN S-TEXT
WINATTR -3,A-SCRIPT,O-SET
WINATTR S-TEXT,A-WRAP,O-SET
CURSET 1,1
MOD H-QUEST-NUM,2 >SHIFT?
SUB H-QUEST-NUM,1
DIV STACK,2 >COUNT-OFFS
SET 'CNT,1
GETB CV,COUNT-OFFS >CURCX
ZERO? SHIFT? /?CCL5
SHIFT CURCX,-4
JUMP ?CND3
?CCL5: PUSH CURCX
?CND3: BAND STACK,15
ADD 1,STACK >CURC
?PRG6: IGRTR? 'CNT,CURC /?REP7
SUB MX,CNT
ADD STACK,1
PRINTN STACK
PRINTI "> "
GET H,CNT
PRINT STACK
CRLF
JUMP ?PRG6
?REP7: SET 'FLG,TRUE-VALUE
?PRG11: ZERO? FLG /?CND13
SET 'FLG,FALSE-VALUE
GRTR? CNT,MX \?CCL17
PRINT NO-MORE-HINTS
CRLF
SCREEN S-WINDOW
ICALL INVERSE-LINE,2,H-NORMAL
ICALL CENTER-LINE,M-SEE-HINT-MENU,2
SCREEN S-TEXT
JUMP ?CND13
?CCL17: SUB MX,CNT
ADD STACK,1
PRINTN STACK
PRINTI "> "
?CND13: ZERO? DEMO-VERSION? /?CCL20
CALL2 INPUT-DEMO,1 >CURC
JUMP ?CND18
?CCL20: INPUT 1 >CURC
?CND18: EQUAL? CURC,CLICK1,CLICK2 \?CND21
CALL2 SELECT-HINT-BY-MOUSE,WID >CURCX
GRTR? CURCX,0 /?CND21
EQUAL? CURCX,-3 \?CCL27
SET 'CURC,13
JUMP ?CND21
?CCL27: EQUAL? CURCX,-4 \?CCL29
SET 'CURC,81
JUMP ?CND21
?CCL29: EQUAL? CURCX,-5 \?CCL31
SET 'CURC,77
?CND21: EQUAL? CURC,77,109,81 /?CTR33
EQUAL? CURC,113 \?CCL34
?CTR33: ZERO? SHIFT? /?CCL39
GETB CV,COUNT-OFFS
BAND STACK,15 >?TMP1
SUB CNT,2
SHIFT STACK,4
BOR ?TMP1,STACK
PUTB CV,COUNT-OFFS,STACK
JUMP ?CND37
?CCL31: SOUND S-BEEP
JUMP ?PRG11
?CCL39: GETB CV,COUNT-OFFS
BAND STACK,240 >?TMP1
SUB CNT,2
BOR ?TMP1,STACK
PUTB CV,COUNT-OFFS,STACK
?CND37: EQUAL? CURC,81,113 \?CCL42
THROW TRUE-VALUE,PARSE-SENTENCE-ACTIVATION
JUMP ?PRG11
?CCL42: WINATTR -3,A-SCRIPT,O-CLEAR
WINATTR S-TEXT,A-WRAP,O-CLEAR
RTRUE
?CCL34: EQUAL? CURC,13,10 \?CCL44
GRTR? CNT,MX /?CCL47
SET 'FLG,TRUE-VALUE
GET H,CNT
PRINT STACK
CRLF
IGRTR? 'CNT,MX \?PRG11
SET 'FLG,FALSE-VALUE
PRINT NO-MORE-HINTS
CRLF
SCREEN S-WINDOW
ICALL INVERSE-LINE,2,H-NORMAL
ICALL CENTER-LINE,M-SEE-HINT-MENU,2
SCREEN S-TEXT
JUMP ?PRG11
?CCL47: SOUND S-BEEP
JUMP ?PRG11
?CCL44: SOUND S-BEEP
JUMP ?PRG11
.FUNCT H-CHAPT-NAME:ANY:1:1,N
GET HINTS,N
GET STACK,1
RSTACK
.FUNCT H-GET-QUEST:ANY:1:1,N,?TMP1
GET HINTS,H-CHAPT-NUM >?TMP1
ADD N,1
GET ?TMP1,STACK
GET STACK,1
RSTACK
.FUNCT H-PUT-UP-FROBS:ANY:1:1,MX,ST,QN,X,Y,TMP,BHL,WID
SET 'QN,1
SET 'X,LEFT-HINT-COLUMN
SET 'Y,TOP-HINT-LINE
HLIGHT H-NORMAL
SET 'BHL,BOTTOM-HINT-NUM
WINGET -3,WFSIZE
SHIFT STACK,-8 >WID
?PRG1: IGRTR? 'ST,MX /TRUE
CALL GET-HINT-ROUTINE,ST >TMP
ZERO? TMP /?PRG1
SUB Y,1
MUL STACK,WID
ADD 1,STACK
CURSET STACK,X
PRINT TMP
ERASE 1
IGRTR? 'Y,BHL \?PRG1
SET 'Y,TOP-HINT-LINE
WINGET -3,WWIDE
DIV STACK,2 >X
JUMP ?PRG1
.FUNCT INIT-HINT-SCREEN:ANY:0:0
SCREEN S-FULL
CLEAR S-FULL
ICALL1 RESET-MARGIN
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL3
ICALL DISPLAY-BORDER,P-HINT-BORDER,FALSE-VALUE
JUMP ?CND1
?CCL3: MUL 3,FONT-Y
ADD 1,STACK
DISPLAY P-HINT-BORDER,STACK,1
?CND1: ICALL2 SETUP-TEXT-AND-STATUS,P-HINT-LOC
SCREEN S-TEXT
MARGIN 0,0
RETURN S-STATUS
.FUNCT LEAVE-HINT-SCREEN:ANY:0:0
RFALSE
.FUNCT HINT-TITLE:ANY:2:3,TITLE,WIN,THIRD
ASSIGNED? 'THIRD /?CND1
SET 'THIRD,TRUE-VALUE
?CND1: SCREEN S-WINDOW
ICALL INVERSE-LINE,1,H-NORMAL
ICALL INVERSE-LINE,2,H-NORMAL
ICALL INVERSE-LINE,3,H-NORMAL
HLIGHT H-BOLD
ICALL CENTER-LINE,TITLE,1,H-INVERSE
HLIGHT H-NORMAL
ICALL LEFT-LINE,2,NEXT-HINT
GET 0,8
BTST STACK,32 \?CND3
CALL CENTER-LINE,H-OR-USE-MOUSE,3 >H-OR-USE-MOUSE-WID
?CND3: ICALL LEFT-LINE,3,PREVIOUS-HINT
ZERO? THIRD /FALSE
ICALL RIGHT-LINE,RETURN-SEE-HINT,2
CALL RIGHT-LINE,Q-RESUME-STORY,3
RSTACK
.FUNCT LEFT-LINE:ANY:2:3,LN,STR,INV
ICALL CCURSET,LN,1
ZERO? INV /?CND1
HLIGHT INV
?CND1: PRINT STR
ZERO? INV /FALSE
HLIGHT H-NORMAL
RTRUE
.FUNCT RIGHT-LINE:ANY:1:4,STR,LN,INV,LEN
CALL JUSTIFIED-LINE,STR,LN,INV,LEN,1
RSTACK
.FUNCT CENTER-LINE:ANY:1:4,STR,LN,INV,LEN
CALL JUSTIFIED-LINE,STR,LN,INV,LEN,2
RSTACK
.FUNCT JUSTIFIED-LINE:ANY:5:5,STR,LN,INV,LEN,CTR
ZERO? LN \?CCL3
CURGET SLINE
GET SLINE,0 >LN
JUMP ?CND1
?CCL3: DEC 'LN
WINGET -3,WFSIZE
SHIFT STACK,-8
MUL LN,STACK
ADD 1,STACK >LN
?CND1: ZERO? LEN \?CND4
DIROUT D-TABLE-ON,SLINE
PRINT STR
PRINTC 32
DIROUT D-TABLE-OFF
GET 0,24 >LEN
?CND4: WINGET -3,WWIDE
SUB STACK,LEN
DIV STACK,CTR
CURSET LN,STACK
ZERO? INV /?CND6
HLIGHT INV
?CND6: PRINT STR
PRINTC 32
ZERO? INV \?CCL9
RETURN LEN
?CCL9: HLIGHT H-NORMAL
RETURN LEN
.ENDSEG
.ENDI

View File

@ -104,7 +104,10 @@ THINGS
<COND (<NOT <EQUAL? ,P-CAN-UNDO 2>>
<REPAINT-DISPLAY>)
(<EQUAL? ,P-CAN-UNDO 2>
<COLOR ,FG-COLOR ,BG-COLOR>
<NORMAL-COLOR>
<SCREEN ,S-FULL>
<NORMAL-COLOR>
<SCREEN 0>
<RESET-MARGIN>
<CLEAR 0>
<UPDATE-STATUS-LINE>
@ -122,10 +125,10 @@ THINGS
<DELAY-DEFINITION YES?>
<COMPILATION-FLAG P-PS-COMMA T>
<TERMINALS VERB NOUN ADJ
<TERMINALS (VERB 6) (NOUN 4) (ADJ 5)
;ADV QUANT MISCWORD
DIR TOBE QWORD CANDO COMMA
PARTICLE PREP ;"keep these two in order! -- SWG"
(DIR 1) TOBE QWORD CANDO COMMA
(PARTICLE 3) (PREP 2) ;"keep these two in order! -- SWG"
ASKWORD
COMMA APOSTR OFWORD ARTICLE QUOTE>
@ -317,21 +320,21 @@ THINGS
<REPLACE-DEFINITION SOFT-KEY-DEFINITIONS
<SOFT-KEYS
,UP-ARROW "n"
,DOWN-ARROW "s"
,LEFT-ARROW "w"
,RIGHT-ARROW "e"
,UP-ARROW "n "
,DOWN-ARROW "s "
,LEFT-ARROW "w "
,RIGHT-ARROW "e "
;"vt100 keypad keys"
,F1 "sw"
,F2 "s"
,F3 "se"
,F4 "w"
,F5 ""
,F6 "e"
,F7 "nw"
,F8 "n"
,F9 "ne"
,F10 ""
,F1 "examine "
,F2 "take "
,F3 "wear "
,F4 "bow to "
,F5 "turn wheel to "
,F6 "inventory "
,F7 "nw "
,F8 "ne "
,F9 "se "
,F10 "sw "
-1 0
-1 <TABLE "Save Definition File" SOFT-SAVE-DEFS>
-1 <TABLE "Restore Definition File" SOFT-RESTORE-DEFS>

16
desc.zabstr Normal file
View File

@ -0,0 +1,16 @@
<BEGIN-SEGMENT 0>
<GLOBAL DESCRIBED-ROOM? <>>
<DEFINE-ROUTINE DESCRIBE-ROOM>
<DEFINE-ROUTINE DESCRIBE-OBJECTS>
<CONSTANT D-ALL? 1>
<CONSTANT D-PARA? 2>
<DEFINE-ROUTINE DESCRIBE-CONTENTS>
<DEFINE-ROUTINE DESCRIBE-START>
<DEFINE-ROUTINE DESCRIBE-SPECIAL>
<GLOBAL D-BIT <>>
<DEFINE-ROUTINE DESCRIBABLE?>
<DEFINE-ROUTINE SIMPLE-DESC?>
<DEFINE-ROUTINE DESCRIBE-REST>
<DEFINE-ROUTINE DESCRIBE-SENT>
<END-SEGMENT>

316
desc.zap Normal file
View File

@ -0,0 +1,316 @@
.SEGMENT "0"
.FUNCT DESCRIBE-ROOM:ANY:0:1,LOOK?,V?,STR,AV
ZERO? LIT \?CND1
PRINTI "It is pitch black."
CRLF
RFALSE
?CND1: IN? HERE,ROOMS \?CND3
HLIGHT H-BOLD
PRINTD HERE
HLIGHT H-NORMAL
?CND3: LOC WINNER >AV
FSET? AV,VEHBIT \?CND5
FSET? AV,SURFACEBIT \?CCL9
PRINTI ", on "
JUMP ?CND7
?CCL9: PRINTI ", in "
?CND7: ICALL2 THE-PRINT,AV
?CND5: CRLF
ZERO? LOOK? /?PRD12
SET 'V?,LOOK?
JUMP ?PEN10
?PRD12: EQUAL? VERBOSITY,2 /?PRD13
PUSH 0
JUMP ?PRD14
?PRD13: PUSH 1
?PRD14: SET 'V?,STACK
?PEN10: FSET? HERE,TOUCHBIT /?CND15
FSET HERE,TOUCHBIT
ZERO? VERBOSITY /?CND15
SET 'V?,TRUE-VALUE
?CND15: SET 'DESCRIBED-ROOM?,V?
ZERO? V? /TRUE
EQUAL? HERE,AV /?CCL23
FSET? AV,VEHBIT \?CCL23
GETP AV,P?ACTION
CALL STACK,M-LOOK
ZERO? STACK \TRUE
?CCL23: GETP HERE,P?ACTION
CALL STACK,M-LOOK
ZERO? STACK \TRUE
GETP HERE,P?LDESC >STR
ZERO? STR /TRUE
PRINT STR
CRLF
RTRUE
.FUNCT DESCRIBE-OBJECTS:ANY:0:0,O,STR,AV,TMP
LOC WINNER >AV
FIRST? HERE >O /?BOGUS1
?BOGUS1: ZERO? O /FALSE
?PRG4: ZERO? O /?REP5
CALL2 DESCRIBABLE?,O
ZERO? STACK /?CND6
FSET? O,TOUCHBIT /?CND6
GETP O,P?FDESC >STR
ZERO? STR /?CND6
ICALL2 THIS-IS-IT,O
CRLF
PRINT STR
FSET? O,CONTBIT \?CND13
ADD D-ALL?,D-PARA?
ICALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND13: CRLF
?CND6: NEXT? O >O /?PRG4
JUMP ?PRG4
?REP5: FIRST? HERE >O /?PRG17
?PRG17: ZERO? O /?REP18
CALL2 DESCRIBABLE?,O
ZERO? STACK /?CND19
GETP O,P?FDESC
ZERO? STACK /?CCL23
FSET? O,TOUCHBIT \?CND19
?CCL23: GETP O,P?DESCFCN >STR
ZERO? STR /?CCL29
CALL STR,M-OBJDESC?,O >TMP
ZERO? TMP /?CCL29
EQUAL? TMP,M-FATAL /?CND19
ICALL2 THIS-IS-IT,O
CRLF
CALL STR,M-OBJDESC,O >STR
ZERO? STR /?CND34
FSET? O,CONTBIT \?CND34
EQUAL? STR,M-FATAL /?CND34
ADD D-ALL?,D-PARA?
ICALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND34: CRLF
JUMP ?CND19
?CCL29: GETP O,P?LDESC >STR
ZERO? STR /?CND19
ICALL2 THIS-IS-IT,O
CRLF
PRINT STR
FSET? O,CONTBIT \?CND41
ADD D-ALL?,D-PARA?
ICALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND41: CRLF
?CND19: NEXT? O >O /?PRG17
JUMP ?PRG17
?REP18: SUB 0,PERSON >D-BIT
ICALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,FALSE-VALUE
SET 'D-BIT,PERSON
ICALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,FALSE-VALUE
SET 'D-BIT,FALSE-VALUE
ZERO? AV /FALSE
EQUAL? HERE,AV /FALSE
CALL DESCRIBE-CONTENTS,AV,FALSE-VALUE,FALSE-VALUE
RSTACK
.FUNCT DESCRIBE-CONTENTS:ANY:1:3,OBJ,LEVEL,ALL?,F,N,1ST?,IT?,TWO?,START?,PARA?,DB
ASSIGNED? 'LEVEL /?CND1
SET 'LEVEL,-1
?CND1: ASSIGNED? 'ALL? /?CND3
SET 'ALL?,D-ALL?
?CND3: SET '1ST?,TRUE-VALUE
EQUAL? LEVEL,2 \?CCL7
SET 'LEVEL,TRUE-VALUE
SET 'PARA?,TRUE-VALUE
SET 'START?,TRUE-VALUE
JUMP ?CND5
?CCL7: BTST ALL?,D-PARA? \?CND5
SET 'PARA?,TRUE-VALUE
?CND5: FIRST? OBJ >N /?BOGUS9
?BOGUS9: ZERO? START? \?PRG25
IN? OBJ,ROOMS /?PRG25
FSET? OBJ,PERSON /?PRG25
ZERO? N /FALSE
FSET? OBJ,CONTBIT \FALSE
FSET? OBJ,OPENBIT /?PRD20
FSET? OBJ,TRANSBIT \FALSE
?PRD20: EQUAL? LEVEL,-1 /?PRG25
FSET? OBJ,SEARCHBIT \FALSE
?PRG25: ZERO? N /?CCL28
CALL2 DESCRIBABLE?,N
ZERO? STACK /?CND27
BTST ALL?,D-ALL? /?CCL28
CALL2 SIMPLE-DESC?,N
ZERO? STACK /?CND27
?CCL28: ZERO? F /?CND35
ZERO? 1ST? /?CCL39
SET '1ST?,FALSE-VALUE
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL42
ZERO? START? \?CND37
ZERO? PARA? \?CCL47
SET 'PARA?,TRUE-VALUE
CRLF
JUMP ?CND45
?CCL47: EQUAL? LEVEL,TRUE-VALUE \?CND45
PRINTC 11
?CND45: FSET? F,PLURAL \?CCL51
PUSH TRUE-VALUE
JUMP ?CND49
?CCL51: PUSH N
?CND49: ICALL DESCRIBE-START,OBJ,STACK
JUMP ?CND37
?CCL42: EQUAL? LEVEL,-1 /?CND37
PRINT LEVEL
JUMP ?CND37
?CCL39: ZERO? N /?CCL54
PRINTI ", "
JUMP ?CND37
?CCL54: PRINTI " and "
?CND37: ICALL2 PRINTA,F
ICALL2 DESCRIBE-SPECIAL,F
ZERO? IT? \?CCL57
ZERO? TWO? \?CCL57
SET 'IT?,F
JUMP ?CND35
?CCL57: SET 'TWO?,TRUE-VALUE
SET 'IT?,FALSE-VALUE
?CND35: SET 'F,N
?CND27: ZERO? N /?CND60
NEXT? N >N /?CND60
?CND60: ZERO? F \?PRG25
ZERO? N \?PRG25
ZERO? IT? /?CND67
ZERO? TWO? \?CND67
ICALL2 THIS-IS-IT,IT?
?CND67: ZERO? 1ST? /?CCL73
ZERO? START? /?CCL73
PRINTI " nothing"
RFALSE
?CCL73: ZERO? 1ST? \?REP26
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP26
EQUAL? OBJ,HERE \?CND79
PRINTI " here"
?CND79: PRINTC 46
?REP26: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND81
FIRST? OBJ >F /?PRG84
?PRG84: ZERO? F /?CND81
FSET? F,CONTBIT /?PRD91
EQUAL? F,HERE \?CND86
?PRD91: CALL DESCRIBABLE?,F,TRUE-VALUE
ZERO? STACK /?CND86
BTST ALL?,D-ALL? /?CCL89
CALL2 SIMPLE-DESC?,F
ZERO? STACK /?CND86
?CCL89: SET 'DB,D-BIT
SET 'D-BIT,FALSE-VALUE
ZERO? PARA? /?CCL101
PUSH 3
JUMP ?CND99
?CCL101: PUSH D-ALL?
?CND99: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK
ZERO? STACK /?CND97
SET '1ST?,FALSE-VALUE
SET 'PARA?,TRUE-VALUE
?CND97: SET 'D-BIT,DB
?CND86: NEXT? F >F /?PRG84
JUMP ?PRG84
?CND81: ZERO? 1ST? \?CND103
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND103
LOC WINNER
EQUAL? OBJ,HERE,STACK \?CND103
CRLF
?CND103: ZERO? 1ST? /TRUE
RFALSE
.FUNCT DESCRIBE-START:ANY:2:2,OBJ,N
EQUAL? OBJ,HERE \?CCL3
EQUAL? D-BIT,PERSON \?CCL6
PRINTI "You see "
RTRUE
?CCL6: PRINTI "There "
ZERO? N /?CCL9
PRINTI "are "
RTRUE
?CCL9: PRINTI "is "
RTRUE
?CCL3: EQUAL? OBJ,PLAYER \?CCL11
EQUAL? D-BIT,WEARBIT \?CCL14
PRINTI " You are wearing "
RTRUE
?CCL14: PRINTI "You are carrying "
RTRUE
?CCL11: FSET? OBJ,PERSON \?CCL16
ICALL2 CTHE-PRINT,OBJ
PRINTI " has "
RTRUE
?CCL16: FSET? OBJ,SURFACEBIT \?CCL18
EQUAL? OBJ,LADDER \?CCL21
PRINTI "Stand"
JUMP ?CND19
?CCL21: PRINTI "Sitt"
?CND19: PRINTI "ing on "
ICALL2 THE-PRINT,OBJ
ZERO? N /?CCL24
PRINTI " are "
RTRUE
?CCL24: PRINTI " is "
RTRUE
?CCL18: ICALL2 CTHE-PRINT,OBJ
PRINTI " contains "
RTRUE
.FUNCT DESCRIBE-SPECIAL:ANY:1:1,OBJ
FSET? OBJ,ONBIT \FALSE
PRINTI " (providing light)"
RTRUE
.FUNCT DESCRIBABLE?:ANY:1:2,OBJ,CONT?
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,WINNER /FALSE
LOC WINNER
EQUAL? OBJ,STACK \?CCL7
LOC WINNER
EQUAL? HERE,STACK \FALSE
?CCL7: ZERO? CONT? \?CCL11
FSET? OBJ,NDESCBIT /FALSE
?CCL11: ZERO? D-BIT /TRUE
GRTR? D-BIT,0 \?CCL18
FSET? OBJ,D-BIT /TRUE
RFALSE
?CCL18: SUB 0,D-BIT
FSET? OBJ,STACK /FALSE
RTRUE
.FUNCT SIMPLE-DESC?:ANY:1:1,OBJ,STR
GETP OBJ,P?FDESC
ZERO? STACK /?CCL3
FSET? OBJ,TOUCHBIT \FALSE
?CCL3: GETP OBJ,P?DESCFCN >STR
ZERO? STR /?CCL7
CALL STR,M-OBJDESC?,OBJ
ZERO? STACK \FALSE
?CCL7: GETP OBJ,P?LDESC
ZERO? STACK /TRUE
RFALSE
.FUNCT DESCRIBE-REST:ANY:1:1,OBJ
CALL2 DESCRIBE-CONTENTS,OBJ
ZERO? STACK \TRUE
PRINTI "nothing"
RTRUE
.FUNCT DESCRIBE-SENT:ANY:1:1,OBJ
CALL DESCRIBE-CONTENTS,OBJ,FALSE-VALUE,3
ZERO? STACK \TRUE
PRINTI "The "
ICALL2 DPRINT,OBJ
PRINTI " is empty."
RTRUE
.ENDSEG
.ENDI

View File

@ -147,7 +147,7 @@ Prints nothing and rfalses if there was nothing to list.
<SET PARA? T>
<CRLF>)
(<EQUAL? .LEVEL T>
<TELL " ">)>
<TELL " ">)>
<DESCRIBE-START
.OBJ
<COND (<FSET? .F ,PLURAL>
@ -220,7 +220,7 @@ Prints nothing and rfalses if there was nothing to list.
(ELSE <TELL "is ">)>)>)
(<EQUAL? .OBJ ,PLAYER>
<COND (<EQUAL? ,D-BIT ,WEARBIT>
<TELL " You are wearing ">)
<TELL " You are wearing ">)
(T
<TELL "You are carrying ">)>)
(<FSET? .OBJ ,PERSON>
@ -303,6 +303,4 @@ Prints nothing and rfalses if there was nothing to list.
(T ;"nothing"
<RFALSE>)>>
<END-SEGMENT>
;"END"
<END-SEGMENT ;"0">

284
erasmus.zabstr Normal file
View File

@ -0,0 +1,284 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)) ()>
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT ERASMUS>
<OBJECT COMPASS (SCENE S-ERASMUS) (DESC "compass") (SYNONYM COMPASS) (ADJECTIVE
MAGNETIC) (FLAGS TAKEBIT READBIT) (ACTION COMPASS-F)>
<DEFINE-ROUTINE COMPASS-F>
<OBJECT DECK (SCENE S-ERASMUS) (LOC LOCAL-GLOBALS) (DESC "deck") (SYNONYM DECK
ABOVE WATCH POST POSTS) (FLAGS NDESCBIT TAKEBIT) (GENERIC GENERIC-DECK-F) (
ACTION DECK-F)>
<DEFINE-ROUTINE DECK-F>
<OBJECT REEF (LOC LOCAL-GLOBALS) (OWNER REEF) (DESC "reef") (SYNONYM REEF REEFS
REEF-TOPS ROCKS GAP BREAK) (FLAGS NDESCBIT SCOREBIT) (ACTION REEF-F)>
<DEFINE-ROUTINE REEF-F>
<DEFINE-ROUTINE TELL-REEF-DIR>
<OBJECT FORESAILS (LOC LOCAL-GLOBALS) (DESC "foresails") (SYNONYM FORESAILS
SAILS SAIL HALLIARD) (ADJECTIVE FORE) (FLAGS NDESCBIT SCOREBIT) (ACTION
FORESAILS-F)>
<DEFINE-ROUTINE FORESAILS-F>
<OBJECT LG-ERASMUS (LOC LOCAL-GLOBALS) (OWNER BLACKTHORNE) (DESC "Erasmus") (
SYNONYM ERASMUS SHIP BOAT) (FLAGS NDESCBIT THE FEMALE VEHBIT SCOREBIT) (GENERIC
GENERIC-SHIP-F) (ACTION LG-ERASMUS-F)>
<DEFINE-ROUTINE LG-ERASMUS-F>
<DEFINE-ROUTINE ARENT-WHERE-PRSO-IS>
<OBJECT GANGWAY (LOC LOCAL-GLOBALS) (DESC "gangway") (SYNONYM GANGWAY) (FLAGS
NDESCBIT) (ACTION GANGWAY-F)>
<DEFINE-ROUTINE GANGWAY-F>
<GLOBAL STORM-DELAY? <>>
<GLOBAL SHIP-DIRECTION <>>
<GLOBAL SHIP-X 21>
<GLOBAL SHIP-Y 9>
<GLOBAL SHIP-COURSE <>>
<DEFINE-ROUTINE QUEUE-STORM>
<GLOBAL WHEEL-SPINNING? <>>
<DEFINE-ROUTINE I-STORM>
<GLOBAL REEF-FLAG <>>
<DEFINE-ROUTINE REEF-SIGHTED?>
<GLOBAL REEF-X <>>
<GLOBAL REEF-Y <>>
<DEFINE-ROUTINE REEF-DISTANCE>
<OBJECT CREWMEN (LOC BELOW-DECKS) (DESC "crewmen") (SYNONYM CREW CREWMEN
CREWMAN MEN MAN SAILOR SAILORS) (FLAGS PERSON DUTCHBIT NOABIT THE PLURAL
DONT-ALL) (DESCFCN CREWMEN-DESC) (GENERIC GENERIC-CREWMEN-F) (ACTION
LG-CREWMEN-F)>
<DEFINE-ROUTINE CREWMEN-DESC>
<OBJECT LG-CREWMEN (LOC LOCAL-GLOBALS) (DESC "crewmen") (SYNONYM CREW CREWMEN
CREWMAN MAN MEN) (FLAGS PERSON DUTCHBIT JAPANESEBIT NOABIT THE PLURAL) (GENERIC
GENERIC-CREWMEN-F) (ACTION LG-CREWMEN-F)>
<GLOBAL CREW-ON-DECK? <>>
<DEFINE-ROUTINE LG-CREWMEN-F>
<DEFINE-ROUTINE CURSES-IN>
<DEFINE-ROUTINE CREW-HERE?>
<OBJECT HENDRIK (DESC "Hendrik Specz") (SYNONYM HENDRIK SPECZ MATE) (ADJECTIVE
HENDRIK THIRD) (FLAGS PERSON DUTCHBIT NOABIT NOTHEBIT) (DESCFCN HENDRIK-DESC) (
ACTION HENDRIK-F)>
<DEFINE-ROUTINE HENDRIK-DESC>
<DEFINE-ROUTINE HENDRIK-F>
<DEFINE-ROUTINE I-HENDRIK>
<GLOBAL HENDRIK-CNT 0 %<> WORD>
<DEFINE-ROUTINE HENDRIK-TAKES-WHEEL>
<DEFINE-ROUTINE HENDRIK-SAVES-THE-DAY>
<OBJECT MAETSUKKER (LOC BELOW-DECKS) (DESC "Maetsukker") (SYNONYM MAETSUKKER) (
FLAGS NDESCBIT PERSON DUTCHBIT NOABIT NOTHEBIT SCOREBIT) (ACTION MAETSUKKER-F)>
<DEFINE-ROUTINE MAETSUKKER-F>
<OBJECT GINSEL (LOC BELOW-DECKS) (DESC "Ginsel") (SYNONYM GINSEL) (FLAGS
NDESCBIT PERSON DUTCHBIT NOABIT NOTHEBIT) (ACTION GINSEL-F)>
<DEFINE-ROUTINE GINSEL-F>
<ROOM BRIDGE-OF-ERASMUS (LOC ROOMS) (SCENE S-ERASMUS) (OWNER LG-ERASMUS) (DESC
"Bridge") (SYNONYM BRIDGE) (PICTURE P-STORM) (SCORE 11) (FDESC
"The gale tears at you, biting deep within, and you know that if you
don't make landfall soon you'll all be dead. You are John Blackthorne,
Pilot-Major of a dead fleet: one ship left out of five, eight and twenty
men out of one hundred and seven, and only ten of those can walk. Little
food, almost no water, and that brackish and foul.") (DOWN TO ON-DECK) (FORE TO
ON-DECK) (PORT SORRY "You would fall overboard.") (STARBOARD SORRY
"You would fall overboard.") (AFT SORRY "You would fall overboard.") (ACTION
BRIDGE-OF-ERASMUS-F) (GLOBAL LG-ERASMUS REEF FORESAILS LG-CREWMEN LG-SEA DECK)
(FLAGS ONBIT OUTSIDE)>
<DEFINE-ROUTINE BRIDGE-OF-ERASMUS-F>
<DEFINE-ROUTINE DONE-BELOW?>
<DEFINE-ROUTINE RESTART-STORM?>
<OBJECT BELL (LOC BRIDGE-OF-ERASMUS) (DESC "bell") (SYNONYM BELL) (FLAGS
NDESCBIT SCOREBIT) (ACTION BELL-F)>
<DEFINE-ROUTINE BELL-F>
<DEFINE-ROUTINE MOVE-CREW>
<DEFINE-ROUTINE I-HANDS>
<OBJECT SEA-CHAIR (LOC BRIDGE-OF-ERASMUS) (DESC "sea chair") (SYNONYM CHAIR) (
ADJECTIVE SEA) (FLAGS NDESCBIT FURNITURE OPENBIT CONTBIT VEHBIT SEARCHBIT) (
ACTION SEA-CHAIR-F)>
<DEFINE-ROUTINE SEA-CHAIR-F>
<OBJECT FOCSLE-DOOR (LOC LOCAL-GLOBALS) (OWNER CREWMEN) (DESC "focsle door") (
SYNONYM DOOR) (ADJECTIVE CREW FOCSLE FORECASTLE) (FLAGS DOORBIT LOCKABLE) (
ACTION FOCSLE-DOOR-F)>
<DEFINE-ROUTINE FOCSLE-DOOR-F>
<ROOM BELOW-DECKS (LOC ROOMS) (SCENE S-ERASMUS) (DESC "Below Decks") (SYNONYM
QUARTERS FORECASTLE FOCSLE DECKS) (ADJECTIVE CREW) (PICTURE P-BELOW-DECKS) (UP
TO ON-DECK IF FOCSLE-DOOR IS OPEN) (AFT TO ON-DECK IF FOCSLE-DOOR IS OPEN) (OUT
TO ON-DECK IF FOCSLE-DOOR IS OPEN) (ACTION BELOW-DECKS-F) (FLAGS ONBIT) (GLOBAL
DECK LG-ERASMUS FOCSLE-DOOR LG-CREWMEN LG-BUNK) (THINGS <> RAT RAT-PSEUDO <>
COCKROACH COCKROACH-PSEUDO)>
<DEFINE-ROUTINE BELOW-DECKS-F>
<BEGIN-SEGMENT ANJIRO>
<BEGIN-SEGMENT RODRIGUES>
<ROOM ON-DECK (SCENE S-ERASMUS) (LOC ROOMS) (DESC "Deck") (SYNONYM DECK) (UP TO
BRIDGE-OF-ERASMUS) (DOWN SORRY
"The gangways are fore and aft. Down is ambiguous.") (PORT SORRY
"You would fall overboard.") (STARBOARD SORRY "You would fall overboard.") (AFT
TO PASSAGEWAY IF PASSAGE-DOOR IS OPEN) (FORE TO BELOW-DECKS IF FOCSLE-DOOR IS
OPEN) (FLAGS ONBIT OUTSIDE) (GLOBAL LG-ERASMUS FOCSLE-DOOR PASSAGE-DOOR REEF
LG-CREWMEN FORESAILS DECK GANGWAY LG-SEA LG-SMALL-BOAT) (ACTION ON-DECK-F)>
<DEFINE-ROUTINE ON-DECK-F>
<END-SEGMENT>
<BEGIN-SEGMENT ERASMUS>
<OBJECT ERASMUS-ANCHOR (LOC ON-DECK) (OWNER LG-ERASMUS) (DESC "anchor") (
SYNONYM ANCHOR) (SIZE 200) (FLAGS TAKEBIT AN) (DESCFCN ERASMUS-ANCHOR-DESC) (
ACTION ERASMUS-ANCHOR-F)>
<DEFINE-ROUTINE ERASMUS-ANCHOR-DESC>
<DEFINE-ROUTINE ERASMUS-ANCHOR-F>
<BEGIN-SEGMENT RODRIGUES>
<ROOM PASSAGEWAY (LOC ROOMS) (DESC "Passageway") (SYNONYM PASSAGEWAY) (LDESC
"The Captain's cabin is aft of here. Your cabin is to port, and the Mates'
cabin to starboard. The main deck is forward of here.") (AFT TO CAPTAINS-CABIN
IF CAPTAINS-CABIN-DOOR IS OPEN) (STARBOARD TO MATES-CABIN IF MATES-CABIN-DOOR
IS OPEN) (PORT TO PILOTS-CABIN IF PILOTS-CABIN-DOOR IS OPEN) (FORE TO ON-DECK
IF PASSAGE-DOOR IS OPEN) (OUT TO ON-DECK IF PASSAGE-DOOR IS OPEN) (FLAGS ONBIT)
(GLOBAL DECK LG-ERASMUS LG-CREWMEN PASSAGE-DOOR PILOTS-CABIN CAPTAINS-CABIN
MATES-CABIN PILOTS-CABIN-DOOR CAPTAINS-CABIN-DOOR MATES-CABIN-DOOR) (ACTION
PASSAGEWAY-F) (THINGS <> RAT RAT-PSEUDO <> COCKROACH COCKROACH-PSEUDO)>
<DEFINE-ROUTINE PASSAGEWAY-F>
<END-SEGMENT>
<BEGIN-SEGMENT ERASMUS>
<DEFINE-ROUTINE I-BELOW-DECKS>
<GLOBAL BELOW-DECKS-BACKGROUND <LTABLE 0
"A rat scurries in the shadows cast by a hanging oil lamp."
"Timbers creak pleasantly." "Cockroaches swarm on the floor.">>
<ROOM CAPTAINS-CABIN (LOC ROOMS) (DESC "Captain's Cabin") (OWNER SPILLBERGEN) (
SYNONYM CABIN ROOM) (LDESC
"This is the great cabin, the Captain-General's quarters and
magazine. The passageway leading to the other officers' cabins
is forward.") (FORE TO PASSAGEWAY IF CAPTAINS-CABIN-DOOR IS OPEN) (OUT TO
PASSAGEWAY IF CAPTAINS-CABIN-DOOR IS OPEN) (FLAGS ONBIT) (GLOBAL DECK
LG-ERASMUS CAPTAINS-CABIN-DOOR LG-CREWMEN LG-BUNK) (ACTION CAPTAINS-CABIN-F) (
THINGS <> RAT RAT-PSEUDO <> COCKROACH COCKROACH-PSEUDO)>
<DEFINE-ROUTINE CAPTAINS-CABIN-F>
<DEFINE-ROUTINE I-WHINE>
<OBJECT FLAGON (LOC CAPTAINS-DESK) (DESC "flagon") (SYNONYM FLAGON WATER DRINK)
(FLAGS TAKEBIT SEARCHBIT OPENABLE TRANSBIT CONTBIT SCOREBIT) (CAPACITY 10) (
ACTION FLAGON-F)>
<DEFINE-ROUTINE FLAGON-F>
<OBJECT SECRET-DRAWER (LOC CAPTAINS-CABIN) (OWNER SPILLBERGEN) (DESC
"secret drawer") (SYNONYM DRAWER CATCH ORNAMENTATION) (ADJECTIVE SECRET SMALL)
(FLAGS INVISIBLE NDESCBIT SEARCHBIT OPENABLE CONTBIT FURNITURE) (ACTION
SECRET-DRAWER-F)>
<DEFINE-ROUTINE SECRET-DRAWER-F>
<OBJECT CAPTAINS-DESK (LOC CAPTAINS-CABIN) (OWNER SPILLBERGEN) (DESC "desk") (
LDESC "The Captain's ornate desk fills one wall of the cabin.") (SYNONYM DESK)
(ADJECTIVE CAPTAIN) (FLAGS SEARCHBIT SURFACEBIT OPENABLE CONTBIT FURNITURE
SCOREBIT) (CAPACITY 100) (ACTION CAPTAINS-DESK-F)>
<DEFINE-ROUTINE CAPTAINS-DESK-F>
<BEGIN-SEGMENT RODRIGUES>
<ROOM PILOTS-CABIN (LOC ROOMS) (DESC "Pilot's Cabin") (SCENE S-ERASMUS S-ANJIRO
S-RODRIGUES) (OWNER BLACKTHORNE) (SYNONYM CABIN ROOM) (STARBOARD TO PASSAGEWAY
IF PILOTS-CABIN-DOOR IS OPEN) (OUT TO PASSAGEWAY IF PILOTS-CABIN-DOOR IS OPEN)
(FLAGS ONBIT) (GLOBAL DECK PILOTS-CABIN-DOOR LG-ERASMUS LG-CREWMEN) (THINGS <>
RAT RAT-PSEUDO <> COCKROACH COCKROACH-PSEUDO) (ACTION PILOTS-CABIN-F)>
<DEFINE-ROUTINE PILOTS-CABIN-F>
<END-SEGMENT>
<BEGIN-SEGMENT ERASMUS>
<NEW-ADD-WORD "RUTTERS" NOUN <VOC "RUTTER"> ,PLURAL-FLAG>
<NEW-ADD-WORD "MAPS" NOUN <VOC "MAP"> ,PLURAL-FLAG>
<OBJECT SECRET-RUTTER (LOC SEA-CHEST) (DESC "secret Portuguese rutter") (
SYNONYM RUTTER MAP) (ADJECTIVE SECRET PORTUGUESE) (FLAGS READBIT TAKEBIT
OPENABLE) (ACTION SECRET-RUTTER-F)>
<DEFINE-ROUTINE SECRET-RUTTER-F>
<OBJECT RUTTER (LOC SEA-CHEST) (OWNER BLACKTHORNE) (DESC "your rutter") (
SYNONYM RUTTER MAP) (FLAGS NOABIT NOTHEBIT READBIT TAKEBIT SCOREBIT OPENABLE) (
ACTION RUTTER-F)>
<DEFINE-ROUTINE RUTTER-F>
<OBJECT SEA-CHEST (LOC PILOTS-CABIN) (DESC "sea chest") (SYNONYM CHEST TRUNK) (
ADJECTIVE SEA) (SIZE 200) (FLAGS LOCKED LOCKABLE TAKEBIT SEARCHBIT CONTBIT
OPENABLE) (CAPACITY 20) (ACTION SEA-CHEST-F)>
<DEFINE-ROUTINE SEA-CHEST-F>
<DEFINE-ROUTINE I-BUNK>
<OBJECT LG-BUNK (LOC LOCAL-GLOBALS) (SCENE S-ERASMUS S-ANJIRO S-RODRIGUES) (
DESC "bed") (SYNONYM BUNK BED HAMMOCK BUNKS BEDS HAMMOCKS) (FLAGS FURNITURE
SURFACEBIT VEHBIT) (ACTION LG-BUNK-F)>
<DEFINE-ROUTINE LG-BUNK-F>
<OBJECT BUNK (LOC PILOTS-CABIN) (SCENE S-ERASMUS S-ANJIRO S-RODRIGUES) (DESC
"bunk") (FDESC "The long narrow bunk with its straw palliasse looks inviting.")
(SYNONYM BUNK BED) (ADJECTIVE LONG NARROW) (FLAGS FURNITURE VEHBIT) (COUNT 0) (
ACTION BUNK-F)>
<CONSTANT J-BUNK 10>
<DEFINE-ROUTINE BUNK-F>
<OBJECT DESK (LOC PILOTS-CABIN) (DESC "desk") (SYNONYM DESK) (FLAGS FURNITURE
OPENBIT SURFACEBIT CONTBIT SEARCHBIT) (CAPACITY 100) (ACTION DESK-F)>
<DEFINE-ROUTINE DESK-F>
<OBJECT QUILL (LOC DESK) (DESC "quill") (SYNONYM QUILL PEN) (ADJECTIVE FRESH
QUILL) (FLAGS TAKEBIT TOOLBIT)>
<OBJECT KEY (LOC PILOTS-CABIN) (DESC "rusty key") (SYNONYM KEY) (ADJECTIVE
RUSTY) (FLAGS NDESCBIT SCOREBIT) (ACTION KEY-F)>
<DEFINE-ROUTINE KEY-F>
<OBJECT APPLE (DESC "tiny bruised apple") (OWNER BLACKTHORNE) (SYNONYM APPLE
APPLES SLICE) (ADJECTIVE BRUISED TINY MOLDY) (FLAGS NDESCBIT TAKEBIT FOODBIT
SCOREBIT DONT-ALL) (COUNT 4) (ACTION APPLE-F)>
<DEFINE-ROUTINE APPLE-F>
<DEFINE-ROUTINE RAT-PSEUDO>
<DEFINE-ROUTINE COCKROACH-PSEUDO>
<DEFINE-ROUTINE RANDOM-PSEUDO>
<ROOM MATES-CABIN (LOC ROOMS) (DESC "Mates' Cabin") (OWNER MATES) (SYNONYM
CABIN ROOM) (ADJECTIVE MATES) (PORT TO PASSAGEWAY IF MATES-CABIN-DOOR IS OPEN)
(OUT TO PASSAGEWAY IF MATES-CABIN-DOOR IS OPEN) (FLAGS ONBIT) (GLOBAL DECK
MATES-CABIN-DOOR LG-ERASMUS LG-CREWMEN) (THINGS <> RAT RAT-PSEUDO <> COCKROACH
COCKROACH-PSEUDO) (ACTION MATES-CABIN-F)>
<DEFINE-ROUTINE MATES-CABIN-F>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT PILOTS-CABIN-DOOR (LOC LOCAL-GLOBALS) (OWNER BLACKTHORNE) (DESC
"Pilot's cabin door") (SYNONYM DOOR) (ADJECTIVE CABIN) (FLAGS DOORBIT LOCKABLE)
>
<END-SEGMENT>
<BEGIN-SEGMENT ERASMUS>
<OBJECT CAPTAINS-CABIN-DOOR (LOC LOCAL-GLOBALS) (OWNER SPILLBERGEN) (DESC
"Captain's cabin door") (SYNONYM DOOR) (ADJECTIVE CABIN) (FLAGS DOORBIT
LOCKABLE) (ACTION CAPTAINS-CABIN-DOOR-F)>
<DEFINE-ROUTINE CAPTAINS-CABIN-DOOR-F>
<OBJECT MATES (LOC GENERIC-OBJECTS) (DESC "Mates") (SYNONYM MATES MATE OFFICERS
OFFICER) (ADJECTIVE FIRST SECOND THIRD) (FLAGS PERSON DUTCHBIT)>
<OBJECT MATES-CABIN-DOOR (LOC LOCAL-GLOBALS) (OWNER MATES) (DESC
"Mates' cabin door") (SYNONYM DOOR) (ADJECTIVE CABIN) (FLAGS DOORBIT LOCKABLE)
(ACTION MATES-CABIN-DOOR-F)>
<DEFINE-ROUTINE MATES-CABIN-DOOR-F>
<BEGIN-SEGMENT ANJIRO>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT PASSAGE-DOOR (LOC LOCAL-GLOBALS) (DESC "passageway door") (SYNONYM DOOR
) (ADJECTIVE PASSAGE PASSAGEWAY) (FLAGS DOORBIT LOCKABLE) (ACTION
PASSAGE-DOOR-F)>
<DEFINE-ROUTINE PASSAGE-DOOR-F>
<END-SEGMENT>
<BEGIN-SEGMENT ERASMUS>
<OBJECT LASHING (LOC BRIDGE-OF-ERASMUS) (DESC "protective lashing") (SYNONYM
LASHING ROPE) (ADJECTIVE PROTECTIVE) (FLAGS NDESCBIT)>
<OBJECT WHEEL (LOC BRIDGE-OF-ERASMUS) (OWNER LG-ERASMUS) (DESC "wheel") (
SYNONYM WHEEL RUDDER HELM TILLER) (DESCFCN WHEEL-DESC) (FLAGS CANT-HOLD
SCOREBIT) (ACTION WHEEL-F)>
<DEFINE-ROUTINE WHEEL-DESC>
<DEFINE-ROUTINE WHEEL-F>
<DEFINE-ROUTINE I-BROADSIDE>
<DEFINE-ROUTINE I-SHIP-BROADSIDE>
<DEFINE-ROUTINE SHIP-BROADSIDE>
<DEFINE-ROUTINE SET-COURSE>
<GLOBAL TIRED-TIME 0>
<DEFINE-ROUTINE I-TIRED-WARNING>
<DEFINE-ROUTINE I-TIRED>
<BEGIN-SEGMENT YABU>
<BEGIN-SEGMENT PIT>
<OBJECT SPILLBERGEN (LOC CAPTAINS-CABIN) (DESC "Captain-General Spillbergen") (
SYNONYM SPILLBERGEN CAPTAIN MAN) (ADJECTIVE CAPTAIN-GENERAL CAPTAIN PAULUS) (
FLAGS PERSON DUTCHBIT OPENBIT CONTBIT SEARCHBIT NOABIT NOTHEBIT) (DESCFCN
SPILLBERGEN-DESC) (GENERIC GENERIC-CAPTAIN-F) (ACTION SPILLBERGEN-F)>
<DEFINE-ROUTINE SPILLBERGEN-DESC>
<DEFINE-ROUTINE SPILLBERGEN-F>
<OBJECT PIETERZOON (LOC MATES-CABIN) (DESC "Pieterzoon") (SYNONYM PIETERZOON
GUNNER) (FLAGS PERSON DUTCHBIT NOABIT NOTHEBIT) (ACTION PIETERZOON-F)>
<DEFINE-ROUTINE PIETERZOON-F>
<OBJECT ROPER (LOC PASSAGEWAY) (DESC "Jan Roper") (SYNONYM JAN ROPER CALVINIST)
(ADJECTIVE JAN) (FLAGS PERSON DUTCHBIT NOABIT NOTHEBIT SCOREBIT CONTBIT OPENBIT
SEARCHBIT) (CONTFCN ROPER-F) (ACTION ROPER-F)>
<DEFINE-ROUTINE ROPER-F>
<OBJECT SONK (LOC BELOW-DECKS) (DESC "Sonk") (SYNONYM SONK COOK) (FLAGS
NDESCBIT PERSON DUTCHBIT NOABIT NOTHEBIT) (ACTION SONK-F)>
<DEFINE-ROUTINE SONK-F>
<OBJECT SALAMON (LOC BELOW-DECKS) (DESC "Salamon") (SYNONYM SALAMON MUTE) (
FLAGS NDESCBIT PERSON DUTCHBIT NOABIT NOTHEBIT) (ACTION SALAMON-F)>
<DEFINE-ROUTINE SALAMON-F>
<OBJECT VAN-NEKK (LOC MATES-CABIN) (DESC "Baccus van Nekk") (SYNONYM BACCUS
NEKK) (ADJECTIVE CHIEF MERCHANT BACCUS VAN) (FLAGS PERSON DUTCHBIT NOABIT
NOTHEBIT) (ACTION VAN-NEKK-F)>
<DEFINE-ROUTINE VAN-NEKK-F>
<OBJECT CROOCQ (LOC BELOW-DECKS) (DESC "Croocq") (SYNONYM CROOCQ BOY) (
ADJECTIVE MAXIMILIAN) (FLAGS NDESCBIT PERSON DUTCHBIT NOABIT NOTHEBIT) (ACTION
CROOCQ-F)>
<DEFINE-ROUTINE CROOCQ-F>
<DEFINE-ROUTINE SEND-HIM-OUT?>
<END-SEGMENT>

2577
erasmus.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -103,16 +103,18 @@ hemmed in by rocks and smashed by waves." CR>)
(<EQUAL? ,REEF-X ,REEF-Y>
<TELL
"The reef is barely two hundred yards ">
<COND (<EQUAL? ,SHIP-DIRECTION ,P?WEST>
<TELL "ahead">)
<TELL-REEF-DIR>
<TELL ", great black claws of rocks
pounded by the hungry sea. A foaming line of surf looms ">
<TELL-REEF-DIR>
<TELL ", broken intermittently ">
<COND (<EQUAL? ,SHIP-DIRECTION ,P?WEST ,P?NW>
<TELL "to port">)
(<EQUAL? ,SHIP-DIRECTION ,P?SW>
<TELL "to starboard">)
(<EQUAL? ,SHIP-DIRECTION ,P?NW>
<TELL "to port">)
(ELSE <TELL "away">)>
<TELL ", great black claws of rocks
pounded by the hungry sea. A foaming line of surf looms ahead,
broken intermittently to port." CR>)
(ELSE
<TELL "by too-narrow channels">)>
<TELL "." CR>)
(ELSE
<TELL
"The reef is off to the west, veiled in storm but revealed by
@ -128,6 +130,15 @@ breakers." CR>)>)
<PERFORM ,V?TURN ,WHEEL ,INTDIR>
<RTRUE>)>)>>
<ROUTINE TELL-REEF-DIR ()
<COND (<EQUAL? ,SHIP-DIRECTION ,P?WEST>
<TELL "ahead">)
(<EQUAL? ,SHIP-DIRECTION ,P?SW>
<TELL "to starboard">)
(<EQUAL? ,SHIP-DIRECTION ,P?NW>
<TELL "to port">)
(ELSE <TELL "away">)>>
<OBJECT FORESAILS
(LOC LOCAL-GLOBALS)
(DESC "foresails")
@ -205,9 +216,6 @@ someone screams." CR>)
(GENERIC GENERIC-SHIP-F)
(ACTION LG-ERASMUS-F)>
<ROUTINE GENERIC-SHIP-F (R F)
,LG-ERASMUS>
<ROUTINE LG-ERASMUS-F ("OPT" (RARG <>))
<COND (<RARG? SUBJ>
<RFALSE>)
@ -395,7 +403,7 @@ G"That would be suicide in this storm." CR>)
<COND (<EQUAL? ,SHIP-DIRECTION ,P?WEST>
<COND (<OR <FSET? ,FORESAILS ,RMUNGBIT>
<AND <EQUAL? ,SHIP-Y 1>
<L? ,SHIP-X 6>>>
<L=? ,SHIP-X 7>>>
<SETG SHIP-X <- ,SHIP-X 1>>)
(ELSE
<SETG SHIP-X <- ,SHIP-X 2>>)>)
@ -412,9 +420,9 @@ G"That would be suicide in this storm." CR>)
<TELL CR
"The waiting spines of the reef tear into the ship!">
<COND (<FSET? ,HERE ,OUTSIDE>
<TELL " The gap is tantalizingly
<TELL " The gap is tantalizingly
close, but you missed it.">)>
<TELL " Two years out from England, and it ends here in
<TELL " Two years out from England, and it ends here in
a watery grave." CR>
<JIGS-UP>)
(<EQUAL? ,SHIP-X 6>
@ -474,7 +482,7 @@ dead men!\" screams one.">
<COND (<IN? ,VINCK ,HERE>
<MOVE ,VINCK ,ON-DECK>
<TELL
" \"We'd better go above, Pilot,\" urges Vinck as he shuffles toward
" \"We'd better go above, Pilot,\" urges Vinck as he shuffles toward
the door." CR>)
(ELSE <CRLF>)>)
(<HERE? ,CAPTAINS-CABIN>
@ -486,7 +494,7 @@ thanks to you! Out!\"" CR>)
"You sense from the terror in the voice that the reefs are close.">
<COND (<IN? ,GINSEL ,BELOW-DECKS>
<TELL
" Has the watch been asleep? All too likely!">)>
" Has the watch been asleep? All too likely!">)>
<CRLF>)>)>
<RTRUE>)>
<COND (<AND <EQUAL? ,SHIP-Y 9>
@ -578,7 +586,7 @@ fight the waves for long, and are dashed against the rocks.">
(<AND <EQUAL? ,SHIP-Y 4>
<EQUAL? ,SHIP-X 10>>
<FSET ,HENDRIK ,DEAD>
<REMOVE ,HENDRIK>
<MOVE ,HENDRIK ,GENERIC-OBJECTS>
<COND (<FSET? ,HERE ,OUTSIDE>
<TELL CR
"This wave comes in stronger than the last. Hendrik is caught and lifted,
@ -602,7 +610,7 @@ none. The "I"Erasmus"" is heading for the rocks starboard of the gap!" CR>)>)
<EQUAL? ,SHIP-X 7>>
<COND (<FSET? ,HERE ,OUTSIDE>
<TELL CR
"The ship is swept past the gap in the reef!" CR>)>)
"The ship is being swept past the gap in the reef!" CR>)>)
(<AND <EQUAL? ,SHIP-Y 1>
<EQUAL? ,SHIP-X 5>>
<COND (<HERE? ,BRIDGE-OF-ERASMUS ,ON-DECK>
@ -756,11 +764,10 @@ speeds through the pass to safety. Into the bay beyond." CR>
(GENERIC GENERIC-CREWMEN-F)
(ACTION LG-CREWMEN-F)>
<ROUTINE GENERIC-CREWMEN-F (R F)
,LG-CREWMEN>
<ROUTINE CREWMEN-DESC ("OPT" RARG OBJ)
<COND (<RARG? OBJDESC?> <RTRUE>)
<COND (<RARG? OBJDESC?>
<COND (<HERE? ,BELOW-DECKS ,VILLAGE-SQUARE>
<RTRUE>)>)
(<RARG? OBJDESC>
<COND (<HERE? ,BELOW-DECKS>
<COND (,CREW-ON-DECK?
@ -828,26 +835,26 @@ else. You'll have to order specific crewmen to get any results." CR>)
<COND (<IN? ,MAETSUKKER
,BELOW-DECKS>
<TELL
" Vinck, Ginsel, and Maetsukker are">)
" Vinck, Ginsel, and Maetsukker are">)
(ELSE
<TELL
" Vinck and Ginsel are">)>)
" Vinck and Ginsel are">)>)
(<IN? ,MAETSUKKER ,BELOW-DECKS>
<TELL
" Vinck and Maetsukker are">)
" Vinck and Maetsukker are">)
(ELSE
<TELL
" Vinck is">)>)
" Vinck is">)>)
(<IN? ,GINSEL ,BELOW-DECKS>
<COND (<IN? ,MAETSUKKER ,BELOW-DECKS>
<TELL
" Ginsel and Maetsukker are">)
" Ginsel and Maetsukker are">)
(ELSE
<TELL
" Ginsel is">)>)
" Ginsel is">)>)
(<IN? ,MAETSUKKER ,BELOW-DECKS>
<TELL
" Maetsukker is">)
" Maetsukker is">)
(ELSE <CRLF> <RTRUE>)>
<TELL
" in the best condition, although everyone is badly off.">)
@ -1269,7 +1276,7 @@ privateer. The ">
deck aft of the wheel, and the ship's bell is hanging here.">
<COND (<QUEUED? I-STORM>
<TELL
" Spray blows past in an angry torrent.">)>
" Spray blows past in an angry torrent.">)>
<CRLF>)
(<RARG? ENTER>
<COND (<AND <SCENE? ,S-ERASMUS>
@ -1281,7 +1288,8 @@ deck aft of the wheel, and the ship's bell is hanging here.">
<FSET ,WHEEL ,RMUNGBIT> ;"lash wheel"
<TELL
"As you climb onto the bridge, you see that Hendrik has fallen asleep
at his post. At least the wheel is lashed in place." CR CR>)>)
at his post. At least the wheel is lashed in place." CR CR>)>
<RTRUE>)
(<RARG? BEG>
<COND (<P? LISTEN <>>
<PERFORM ,V?LISTEN ,WIND>
@ -1348,7 +1356,7 @@ uncontrolled.">)>
<COND (<AND <IN? ,HENDRIK ,BRIDGE-OF-ERASMUS>
<FSET? ,HENDRIK ,RMUNGBIT>>
<FCLEAR ,HENDRIK ,RMUNGBIT>
<TELL " The noise wakes Hendrik. \"We're
<TELL " The noise wakes Hendrik. \"We're
lost,\" he screams. \"Oh, Lord Jesus help us!\"">)>
<CRLF>
<COND (<AND ,REEF-FLAG
@ -1412,12 +1420,12 @@ lost,\" he screams. \"Oh, Lord Jesus help us!\"">)>
they pull themselves out onto the deck.">
<COND (,REEF-FLAG
<MOVE-CREW ,ON-DECK>
<TELL " They are terrified when they
<TELL " They are terrified when they
see the encroaching reef, most are panicked and don't know what
to do next, but a few with their last reserves of strength
try ineffectually to get the ship under control." CR>)
(ELSE
<TELL " They sullenly look around, see that there is
<TELL " They sullenly look around, see that there is
no danger, and muttering curses, return below, oblivious to your
entreaties." CR>)>)>>
@ -1495,7 +1503,8 @@ deck. It's dim, warm and close here, and the stench is abominable." CR>)
(ELSE
<TELL
"As you enter, a volley of feeble curses greets you. You close the door
and they subside. No one moves." CR CR>)>)>)
and they subside. No one moves." CR CR>)>)>
<RTRUE>)
(<RARG? BEG>
<COND (<VERB? SMELL>
<TELL
@ -1512,6 +1521,9 @@ worse." CR>)
<TELL
"They back off, intimidated." CR>)>)>>
<BEGIN-SEGMENT ANJIRO>
<BEGIN-SEGMENT RODRIGUES>
<ROOM ON-DECK
(SCENE S-ERASMUS)
(LOC ROOMS)
@ -1592,11 +1604,12 @@ to leave without trying to regain your rutters." CR>)>)
<TELL
"As you climb aboard, ">
<SEALED-PASSAGE>
<CRLF>)>)>)>>
<CRLF>)>)>
<RTRUE>)>>
<ROUTINE SEALED-PASSAGE ()
<TELL "Rodrigues heads immediately for
the sealed passage. \""I"Kinjiru, gomen nasai,""\" says one of the samurai." CR>>
<END-SEGMENT ;"ERASMUS+ANJIRO+RODRIGUES">
<BEGIN-SEGMENT ERASMUS>
<OBJECT ERASMUS-ANCHOR
(LOC ON-DECK)
@ -1625,6 +1638,8 @@ grace of God and your good piloting, the "I"Erasmus"" reaches port.">)>>
<TELL
G"That would be suicide in this storm." CR>)>>
<BEGIN-SEGMENT RODRIGUES>
<ROOM PASSAGEWAY
(LOC ROOMS)
(DESC "Passageway")
@ -1647,15 +1662,17 @@ cabin to starboard. The main deck is forward of here.")
<ROUTINE PASSAGEWAY-F (RARG)
<COND (<RARG? ENTER>
<SETG TIRED-TIME <DEQUEUE I-TIRED>>
<QUEUE I-BELOW-DECKS -1 T>
<COND (<IN? ,ROPER ,PASSAGEWAY>
<MOVE ,ROPER ,MATES-CABIN>
<MOVE ,APPLE ,ROPER>
<TELL
<COND (<SCENE? ,S-ERASMUS>
<SETG TIRED-TIME <DEQUEUE I-TIRED>>
<QUEUE I-BELOW-DECKS -1 T>
<COND (<IN? ,ROPER ,PASSAGEWAY>
<MOVE ,ROPER ,MATES-CABIN>
<MOVE ,APPLE ,ROPER>
<TELL
"As you enter the relative quiet of the aft passageway, you notice
Jan Roper heading across the passage from your cabin to the Mates'
cabin." CR CR>)>)
cabin." CR CR>)>)>
<RTRUE>)
(<RARG? BEG>
<COND (<P? (OPEN CLOSE)>
<COND (<PRSO? PILOTS-CABIN>
@ -1668,6 +1685,9 @@ cabin." CR CR>)>)
<PERFORM ,PRSA ,CAPTAINS-CABIN-DOOR>
<RTRUE>)>)>)>>
<END-SEGMENT ;"ERASMUS+RODRIGUES">
<BEGIN-SEGMENT ERASMUS>
<ROUTINE I-BELOW-DECKS ()
<COND (<FSET? ,HERE ,OUTSIDE>
<DEQUEUE I-BELOW-DECKS>
@ -1868,6 +1888,8 @@ ornamentation." CR>)
<RESTART-STORM?>
<SCORE-OBJECT ,CAPTAINS-DESK>)>)>>
<BEGIN-SEGMENT RODRIGUES>
<ROOM PILOTS-CABIN
(LOC ROOMS)
(DESC "Pilot's Cabin")
@ -1891,18 +1913,19 @@ second best on the ship. The only exit is out to the passageway.">
<COND (<AND <SCENE? S-ERASMUS>
<NOT <FSET? ,HERE ,TOUCHBIT>>>
<TELL
" There's something wrong here. Your cabin has been disturbed. As
" There's something wrong here. Your cabin has been disturbed. As
you look around, trying to see what's wrong, your eyes stray to the
sea chest which contains your rutters. You do it almost in a panic, for
a pilot's rutters are his life.">)
(<SCENE? S-RODRIGUES>
<TELL
" The room looks as though it has been tidied up and then thoroughly
" The room looks as though it has been tidied up and then thoroughly
turned over again.">)>
<CRLF>)
(<RARG? ENTER>
<COND (<SCENE? S-ERASMUS>
<QUEUE I-BUNK 4>)>)
<QUEUE I-BUNK 4>)>
<RTRUE>)
(<RARG? LEAVE>
<COND (<SCENE? ,S-ERASMUS>
<DEQUEUE I-BUNK>)>)
@ -1918,6 +1941,9 @@ of your crew. You think better of it." CR>)>)
<PERFORM ,V?BOARD ,BUNK>
<RTRUE>)>)>>
<END-SEGMENT ;"ERASMUS+RODRIGUES">
<BEGIN-SEGMENT ERASMUS>
<NEW-ADD-WORD "RUTTERS" NOUN <VOC "RUTTER"> ,PLURAL-FLAG>
<NEW-ADD-WORD "MAPS" NOUN <VOC "MAP"> ,PLURAL-FLAG>
@ -2076,7 +2102,7 @@ rest." CR>)>)
(<FSET? ,SEA-CHEST ,LOCKED>
<FSET ,SEA-CHEST ,RMUNGBIT>
<TELL
"It's locked. Your keep your rutters in it, and they are your most
"It's locked. You keep your rutters in it, and they are your most
precious possessions." CR>)
(<NOT <FSET? ,SEA-CHEST ,OPENBIT>>
<FSET ,SEA-CHEST ,OPENBIT>
@ -2129,7 +2155,7 @@ to say." CR>)>>
(SCENE S-ERASMUS S-ANJIRO S-RODRIGUES)
(DESC "bed")
(SYNONYM BUNK BED HAMMOCK BUNKS BEDS HAMMOCKS)
(FLAGS FURNITURE VEHBIT)
(FLAGS FURNITURE SURFACEBIT VEHBIT)
(ACTION LG-BUNK-F)>
<ROUTINE LG-BUNK-F ()
@ -2205,9 +2231,9 @@ gone! ">)>
<MOVE ,KEY ,WINNER>
<THIS-IS-IT ,KEY>
<TELL
"You search for the key to your sea-chest. Can someone have taken it? No! There it is. You take it with thanks." CR>)
"You search for the key to your sea chest. Can someone have taken it? No! There it is. You take it with thanks." CR>)
(ELSE
<TELL "You notice the key to your sea-chest,
<TELL "You notice the key to your sea chest,
safe and sound where you left it." CR>)>
<RESTART-STORM?>
<SCORE-OBJECT ,KEY>)
@ -2310,7 +2336,7 @@ sore and tender. After you finish the apple, you feel better." CR>
CTHE ,PRSI " take" S ,PRSI " the apple and gobble" S ,PRSI " it greedily.">
<COND (<PRSI? ,VINCK ,PIETERZOON CROOCQ>
<TELL
" \"Thank you, Pilot. Thank you!\"">)>
" \"Thank you, Pilot. Thank you!\"">)>
<CRLF>)>>
<ROUTINE RAT-PSEUDO ()
@ -2341,9 +2367,9 @@ CTHE ,PRSI " take" S ,PRSI " the apple and gobble" S ,PRSI " it greedily.">
<TELL
"This is the Mates' cabin.">
<COND (<SCENE? ,S-ERASMUS>
<TELL " It is now shared by Baccus van Nekk, the
<TELL " It is now shared by Baccus van Nekk, the
chief merchant, Hendrik the third mate, and the boy, Croocq.">)>
<TELL " The passageway is outside." CR>)
<TELL " The passageway is outside." CR>)
(<RARG? BEG>
<COND (<AND <P? SEARCH GLOBAL-HERE>
<IN? ,APPLE ,ROPER>>
@ -2356,6 +2382,8 @@ Pilot. Search all you want.\"" CR>)
D ,PRSO " reluctantly allows himself to be searched, cursing you all
the while. You find nothing." CR>)>)>>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT PILOTS-CABIN-DOOR
(LOC LOCAL-GLOBALS)
(OWNER BLACKTHORNE)
@ -2364,6 +2392,9 @@ the while. You find nothing." CR>)>)>>
(ADJECTIVE ;MY CABIN)
(FLAGS DOORBIT LOCKABLE)>
<END-SEGMENT ;"ERASMUS+RODRIGUES">
<BEGIN-SEGMENT ERASMUS>
<OBJECT CAPTAINS-CABIN-DOOR
(LOC LOCAL-GLOBALS)
(OWNER SPILLBERGEN)
@ -2375,8 +2406,9 @@ the while. You find nothing." CR>)>)>>
<ROUTINE CAPTAINS-CABIN-DOOR-F ()
<COND (<VERB? KNOCK>
<TELL
"You hear a faint response." CR>)>>
<COND (<IN? ,SPILLBERGEN ,CAPTAINS-CABIN>
<TELL
"You hear a faint response." CR>)>)>>
<OBJECT MATES
(LOC GENERIC-OBJECTS)
@ -2396,8 +2428,12 @@ the while. You find nothing." CR>)>)>>
<ROUTINE MATES-CABIN-DOOR-F ()
<COND (<VERB? KNOCK>
<TELL
"\"Aye? Come in, damn you! Do think this is a palace?\"" CR>)>>
<COND (<SCENE? ,S-ERASMUS>
<TELL
"\"Aye? Come in, damn you! Do think this is a palace?\"" CR>)>)>>
<BEGIN-SEGMENT ANJIRO>
<BEGIN-SEGMENT RODRIGUES>
<OBJECT PASSAGE-DOOR
(LOC LOCAL-GLOBALS)
@ -2417,6 +2453,9 @@ the while. You find nothing." CR>)>)>>
<TELL
"You hear noise inside, but no response to your knock." CR>)>)>>
<END-SEGMENT ;"ERASMUS+ANJIRO+RODRIGUES">
<BEGIN-SEGMENT ERASMUS>
<OBJECT LASHING
(LOC BRIDGE-OF-ERASMUS)
(DESC "protective lashing")
@ -2429,7 +2468,6 @@ the while. You find nothing." CR>)>)>>
(OWNER LG-ERASMUS)
(DESC "wheel")
(SYNONYM WHEEL RUDDER HELM TILLER)
(ADJECTIVE SHIPS)
(DESCFCN WHEEL-DESC)
(FLAGS CANT-HOLD SCOREBIT)
(ACTION WHEEL-F)>
@ -2612,20 +2650,20 @@ foresails, and the ship wallows like a pig!" CR>)
<COND (<AND ,REEF-FLAG ;"3,4"
<EQUAL? ,REEF-X ,REEF-Y>>
<TELL
" The ship turns broadside to the reef, struggling against the
" The ship turns broadside to the reef, struggling against the
wind which tries to drive it onto the spines." CR>)
(<AND <EQUAL? ,SHIP-X 6> ;"11"
<EQUAL? ,SHIP-Y 2>>
<TELL
" Fighting the wind, the ship slowly turns away from the reef." CR>)
" Fighting the wind, the ship slowly turns away from the reef." CR>)
(<AND <EQUAL? ,SHIP-X 1> ;"15"
<EQUAL? ,SHIP-Y 1>>
<TELL
" Struggling, the ship begins to turn to port, slowly, slowly as the
" Struggling, the ship begins to turn to port, slowly, slowly as the
swift currents are drawing you deeper into the maze of rocks." CR>)
(ELSE
<TELL
" The ship struggles against the wind." CR>)>)
" The ship struggles against the wind." CR>)>)
(<EQUAL? ,P-DIRECTION ,P?STARBOARD>
<QUEUE I-BROADSIDE 2>
<SET-COURSE ,P?STARBOARD>
@ -2635,15 +2673,15 @@ swift currents are drawing you deeper into the maze of rocks." CR>)
<COND (<AND <EQUAL? ,SHIP-X 8> ;"10"
<EQUAL? ,SHIP-Y 2>>
<TELL
" The wind snaps the sails full and the ship heads for the gap, but it
" The wind snaps the sails full and the ship heads for the gap, but it
means coming very close to the waiting reef!" CR>)
(<AND <EQUAL? ,SHIP-X 5> ;"12"
<EQUAL? ,SHIP-Y 1>>
<TELL
" With a crack the sails fill, shooting the "I"Erasmus"" into the gap!" CR>)
" With a crack the sails fill, shooting the "I"Erasmus"" into the gap!" CR>)
(ELSE
<TELL
" The ship gains speed with the wind." CR>)>)
" The ship gains speed with the wind." CR>)>)
(<EQUAL? ,P-DIRECTION ,P?FORE ,P?IN>
<DEQUEUE I-BROADSIDE>
<SET-COURSE ,P?FORE>
@ -2715,6 +2753,9 @@ fails you. You collapse, every fiber aching with months of
deprivation. It is not long after that the ship is driven against the
rocks.">)>>
<BEGIN-SEGMENT YABU>
<BEGIN-SEGMENT PIT>
<OBJECT SPILLBERGEN
(LOC CAPTAINS-CABIN)
(DESC "Captain-General Spillbergen")
@ -2725,15 +2766,6 @@ rocks.">)>>
(GENERIC GENERIC-CAPTAIN-F)
(ACTION SPILLBERGEN-F)>
<ROUTINE GENERIC-CAPTAIN-F (R F)
<COND (<SCENE? ,S-ERASMUS ,S-ANJIRO ,S-YABU ,S-PIT>
,SPILLBERGEN)
(<SCENE? ,S-NINJA>
,GRAY-CAPTAIN)
(<SCENE? ,S-DEPARTURE>
<COND (<FSET? ,YAMAZAKI ,DEAD> ,KOJIMA)
(ELSE <RFALSE>)>)>>
<ROUTINE SPILLBERGEN-DESC (RARG OBJ)
<COND (<RARG? OBJDESC?>
<COND (<SCENE? ,S-ERASMUS ,S-YABU ,S-PIT> <RTRUE>)
@ -2799,7 +2831,7 @@ florid man, normally very fat, now very thin, the skin of his
paunch hanging slackly in folds.">
<COND (<AND <HERE? ,CAPTAINS-CABIN>
<FSET? ,FLAGON ,SCOREBIT>>
<TELL " He looks parched.">)>
<TELL " He looks parched.">)>
<CRLF>)
(<AND <VERB? FIND>
<SCENE? ,S-ERASMUS>
@ -2819,7 +2851,7 @@ paunch hanging slackly in folds.">
"Weakly, Spillbergen drinks a little water.">
<COND (<FSET? ,FLAGON ,SCOREBIT>
<TELL
" \"Thanks,\" he says. \"Where's land -- where's land?\"|
" \"Thanks,\" he says. \"Where's land -- where's land?\"|
|
\"Ahead\" is all you can say in reply." CR>
<RESTART-STORM?>
@ -2978,13 +3010,14 @@ hoarder!\"" CR>)>)
<COND (<FSET? ,APPLE ,NDESCBIT>
<FCLEAR ,APPLE ,NDESCBIT>
<TELL
" \"It's mine, I tell you! Share and share alike!\" he whines, pulling
an apple out of his pocket.">)
" \"It's mine, I tell you! Share and share alike!\" he whines, pulling
an apple out of his pocket." CR>)
(ELSE
<MOVE ,APPLE ,HERE>
<TELL
" \"Don't hit me!\" he screams, dropping the apple on the ground.">)>)>
<CRLF>)
" \"Don't hit me!\" he screams, dropping the apple on the ground." CR>
<SCORE-OBJECT ,ROPER>)>)
(ELSE <CRLF>)>)
(<P? SEND ROPER>
<TELL
"He refuses to go, scornfully suggesting you get the regular crewmen on
@ -3049,7 +3082,7 @@ G"The only responses are muttered curses in Dutch." CR>)>)
<COND (<P? SEND VAN-NEKK>
<TELL
"\"I'd go, Pilot, but it's not my watch. It's Vinck's watch, I think, and
Ginsel's, and Maetsukker's, if I've not gone crazed. He smiles wanly." CR>)>)>>
Ginsel's, and Maetsukker's, if I've not gone crazed.\" He smiles wanly." CR>)>)>>
<OBJECT CROOCQ
(LOC BELOW-DECKS)
@ -3094,4 +3127,4 @@ G"The only responses are muttered curses in Dutch." CR>)>)
<P? (STEP-ON TAKE BOARD WALK-TO CLIMB-ON)
(DECK BRIDGE-OF-ERASMUS ON-DECK)>>)>>
<END-SEGMENT>
<END-SEGMENT ;"ERASMUS+YABU+PIT">

65
find.zabstr Normal file
View File

@ -0,0 +1,65 @@
<FLAGS-AND-DEFAULTS (("ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE" T)(
"IN-ZILCH" T)) (("INVALID-OBJECT?" "DEFS" #WORD *06466464176*))>
<ZZSECTION "FIND">
<INCLUDE "BASEDEFS" "PDEFS" "PBITDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM">
<BLOCK (<ROOT>)>
THINGS
<ENDBLOCK>
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
<DEFAULTS-DEFINED EXCLUDE-HERE-OBJECT? INVALID-OBJECT? MOBY-FIND?
LAST-PSEUDO-LOC PSEUDO-OBJECTS SEARCH-IN-LG?>
<BEGIN-SEGMENT 0>
<PUT-DECL BOOLEAN '<OR ATOM FALSE>>
<DEFMAC FD-FLAG (WHICH 'VAL "OPT" 'NEW) <COND (<ASSIGNED? NEW> <COND (<OR <
TYPE? .NEW ATOM FALSE> <AND <TYPE? .NEW FORM> <EMPTY? .NEW>>> <COND (<TYPE? .
NEW ATOM> <FORM ORB ,.WHICH .VAL>) (T <FORM ANDB .VAL <XORB ,.WHICH -1>>)>) (<
TYPE? .VAL FIX LVAL GVAL> <FORM COND (.NEW <FORM ORB .VAL ,.WHICH>) (T <FORM
ANDB .VAL <XORB ,.WHICH -1>>)>) (T <FORM BIND ((FLAG .VAL)) <FORM COND (.NEW <
FORM ORB ,.WHICH '.FLAG>) (T <FORM ANDB '.FLAG <XORB ,.WHICH -1>>)>>)>) (T <
FORM NOT <FORM 0? <FORM ANDB .VAL ,.WHICH>>>)>>
<CONSTANT FIND-FLAGS-GWIM 1>
<DEFMAC FIND-GWIM? ('F) <FORM NOT <FORM 0? <FORM ANDB <FORM FIND-FLAGS .F> ,
FIND-FLAGS-GWIM>>>>
<CONSTANT FINDER <MAKE-FINDER>>
<GLOBAL P-NOT-HERE:NUMBER 0>
<DEFINE-ROUTINE FIND-DESCENDANTS>
<DEFINE-ROUTINE EXCLUDED?>
<DEFAULT-DEFINITION INVALID-OBJECT? <DEFINE INVALID-OBJECT? (OBJ) <>>>
<DEFINE-ROUTINE MATCH-OBJECT>
<CONSTANT SYN-FIND-PROP 256>
<DEFINE-ROUTINE TEST-OBJECT>
<DEFINE-ROUTINE ADD-OBJECT>
<DEFINE-ROUTINE NOT-IN-FIND-RES?>
<DEFINE-ROUTINE EVERYWHERE-VERB?>
<DEFINE-ROUTINE MULTIPLE-EXCEPTION?>
<ADD-WORD OPEN ADJ>
<ADD-WORD CLOSED ADJ>
<ADD-WORD SHUT ADJ>
<DEFINE-ROUTINE CHECK-ADJS-THERE?>
<DEFINE-ROUTINE CHECK-ADJS>
<OBJECT GENERIC-OBJECTS (ADJACENT 0)>
<DEFAULT-DEFINITION MOBY-FIND? <DEFMAC MOBY-FIND? ('SEARCH) <FORM OR <FORM AND
<FORM BAND .SEARCH ',SEARCH-MOBY> <FORM 0? <FORM BAND .SEARCH ',
SEARCH-MUST-HAVE>>> <FORM BAND ',PAST-TENSE <FORM WORD-FLAGS <FORM PARSE-VERB '
,PARSE-RESULT>>>>>>
<DEFAULT-DEFINITION SEARCH-IN-LG? <ROUTINE SEARCH-IN-LG?>>
<DEFAULT-DEFINITION EXCLUDE-HERE-OBJECT? <ROUTINE EXCLUDE-HERE-OBJECT?>>
<DEFINE-ROUTINE FIND-OBJECTS>
<DEFAULT-DEFINITION PSEUDO-OBJECTS <PUTPROP THINGS PROPSPEC HACK-PSEUDOS> <
DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0)) <SET LIST <REST .LIST>> <SET
LIST <MAPR ,LIST <FUNCTION (X "AUX" L (ACT 0) (NCT 0)) <COND (<0? .N> <SET CT <
+ .CT 1>> <SET N 1> <COND (<TYPE? <1 .X> ATOM> <SET ACT 1>) (<TYPE? <1 .X> LIST
> <SET ACT <LENGTH <1 .X>>>) (T <SET ACT 0>)> <COND (<LENGTH? .X 1>) (<TYPE? <2
.X> ATOM> <SET NCT 1>) (<TYPE? <2 .X> LIST> <SET NCT <LENGTH <2 .X>>>) (T <SET
NCT 0>)> <TABLE (PURE) <BYTE .ACT> <BYTE .NCT> <COND (<0? .ACT> 0) (<==? .ACT 1
> <VOC <SPNAME <1 .X>> ADJ>) (T <EVAL <CHTYPE (TABLE (PURE) !<MAPF ,LIST <
FUNCTION (Y) <VOC <SPNAME .Y> ADJ>> <1 .X>!>) FORM>>)> <COND (<0? .NCT> 0) (<
==? .NCT 1> <VOC <SPNAME <2 .X>> NOUN>) (T <EVAL <CHTYPE (TABLE (PURE) !<MAPF ,
LIST <FUNCTION (Y) <VOC <SPNAME .Y> NOUN>> <2 .X>!>) FORM>>)>>) (<1? .N> <SET N
2> <MAPRET>) (T <SET N 0> <1 .X>)>> .LIST>> (<> <EVAL <CHTYPE (TABLE (PURE) .CT
!.LIST) FORM>>)> <ROUTINE TEST-THINGS> <GLOBAL LAST-PSEUDO-LOC:OBJECT <>> <
OBJECT PSEUDO-OBJECT (LOC LOCAL-GLOBALS) (DESC "pseudoxxx") (ACTION 0)>>
<END-SEGMENT>
<END-DEFINITIONS>

603
find.zap Normal file
View File

@ -0,0 +1,603 @@
.SEGMENT "0"
.FUNCT FIND-DESCENDANTS:ANY:2:2,PARENT,FLAGS,F,FOBJ
SET 'F,FINDER
EQUAL? PARENT,GLOBAL-HERE \?CND1
SET 'PARENT,HERE
?CND1: FIRST? PARENT >FOBJ \TRUE
?PRG6: CALL2 VISIBLE?,FOBJ
ZERO? STACK /?CND8
BTST FLAGS,8 /?CND10
BTST FLAGS,1 \?PRF16
PUSH 1
JUMP ?PEN14
?PRF16: PUSH 0
?PEN14: CALL MATCH-OBJECT,FOBJ,F,STACK
ZERO? STACK /FALSE
?CND10: BTST FLAGS,4 \?CND8
FIRST? FOBJ \?CND8
EQUAL? FOBJ,WINNER /?CND8
FSET? FOBJ,SEARCHBIT \?PRD24
FSET? FOBJ,OPENBIT /?CCL18
FSET? FOBJ,TRANSBIT /?CCL18
?PRD24: FSET? FOBJ,SURFACEBIT \?CND8
?CCL18: BTST FLAGS,1 \?CCL33
PUSH 5
JUMP ?CND31
?CCL33: PUSH 4
?CND31: CALL FIND-DESCENDANTS,FOBJ,STACK
ZERO? STACK /FALSE
?CND8: NEXT? FOBJ >FOBJ /?PRG6
RTRUE
.FUNCT EXCLUDED?:ANY:2:2,FOBJ,F,EXC,PHRASE,CT,VEC,VV
GET F,8 >EXC
ZERO? EXC /FALSE
GET EXC,3 >PHRASE
?PRG4: ZERO? PHRASE /?CND6
GET PHRASE,1 >CT
ADD PHRASE,6 >VEC
?PRG8: DLESS? 'CT,0 \?CND10
SET 'VV,FALSE-VALUE
JUMP ?REP9
?CND10: GET VEC,0
EQUAL? FOBJ,STACK \?CND12
SET 'VV,TRUE-VALUE
?REP9: ZERO? VV \TRUE
?CND6: GET EXC,1 >EXC
ZERO? EXC /FALSE
GET EXC,3 >PHRASE
JUMP ?PRG4
?CND12: ADD VEC,4 >VEC
JUMP ?PRG8
.FUNCT INVALID-OBJECT?:ANY:1:1,OBJ
LOC OBJ
ZERO? STACK /TRUE
IN? OBJ,GLOBAL-OBJECTS /FALSE
IN? OBJ,GENERIC-OBJECTS /FALSE
CALL2 IN-SCENE?,OBJ
ZERO? STACK \FALSE
RTRUE
.FUNCT MATCH-OBJECT:ANY:3:3,FOBJ,F,INCLUDE?,NOUN,ADJS,APP,TB,RES,TMP,?TMP1
GET F,9 >RES
FSET? FOBJ,INVISIBLE /TRUE
GET F,6 >NOUN
EQUAL? NOUN,FALSE-VALUE,W?ONE /?PRD6
GETPT FOBJ,P?SYNONYM >TB
ZERO? TB /TRUE
PTSIZE TB
DIV STACK,2
INTBL? NOUN,TB,STACK \TRUE
?PRD6: GET F,7 >ADJS
ZERO? ADJS /?PRD11
CALL CHECK-ADJS,FOBJ,F,ADJS
ZERO? STACK /TRUE
?PRD11: GET F,5 >ADJS
ZERO? ADJS /?PRD14
CALL CHECK-ADJS,FOBJ,F,ADJS
ZERO? STACK /TRUE
?PRD14: CALL EXCLUDED?,FOBJ,F
ZERO? STACK \TRUE
GET F,1
BTST STACK,1 /?CTR2
CALL2 INVALID-OBJECT?,FOBJ
ZERO? STACK \TRUE
?CTR2: ZERO? INCLUDE? /TRUE
GET F,5 >ADJS
ZERO? ADJS /?CCL24
GETPT FOBJ,P?ADJECTIVE >TMP
ZERO? TMP /?CCL24
GET ADJS,4 >?TMP1
PTSIZE TMP
DIV STACK,2
EQUAL? ?TMP1,STACK \?CCL24
PUT RES,1,1
PUT RES,2,FALSE-VALUE
PUT RES,4,FOBJ
EQUAL? FOBJ,HERE \FALSE
PUT RES,4,GLOBAL-HERE
RFALSE
?CCL24: GET F,0 >APP
ZERO? APP /?CCL32
GET F,1
BTST STACK,1 /?CCL32
GET RES,1
ZERO? STACK /?CTR36
GET F,2
ZERO? STACK /?CCL37
?CTR36: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL37: CALL TEST-OBJECT,FOBJ,APP,F
ZERO? STACK /FALSE
GET RES,1
EQUAL? STACK,1 \?CCL44
GET RES,4
CALL TEST-OBJECT,STACK,APP,F
ZERO? STACK \?CCL47
PUT RES,4,FOBJ
EQUAL? FOBJ,HERE \TRUE
PUT RES,4,GLOBAL-HERE
RTRUE
?CCL47: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL44: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL32: ZERO? APP \?CCL51
GET F,1
BTST STACK,1 \?CTR53
GET F,2
ZERO? STACK /TRUE
?CTR53: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL51: CALL TEST-OBJECT,FOBJ,APP,F
ZERO? STACK /TRUE
CALL ADD-OBJECT,FOBJ,F
RSTACK
.FUNCT TEST-OBJECT:ANY:3:3,FOBJ,APP,F,N,NN,?TMP1
BAND APP,65280
ZERO? STACK \?CCL3
BTST APP,128 \?CCL6
BAND APP,63
FSET? FOBJ,STACK /FALSE
RTRUE
?CCL6: FSET? FOBJ,APP /TRUE
RFALSE
?CCL3: GET APP,1
BTST STACK,256 \?CND12
GET APP,1
BAND STACK,63
GETP FOBJ,STACK >?TMP1
GET APP,2
EQUAL? ?TMP1,STACK /TRUE
RFALSE
?CND12: GET APP,0 >N
?PRG17: GET APP,N >NN
BTST NN,128 \?CCL21
BAND NN,63
FSET? FOBJ,STACK /?CND19
RTRUE
?CCL21: FSET? FOBJ,NN /TRUE
?CND19: DLESS? 'N,1 \?PRG17
RFALSE
.FUNCT ADD-OBJECT:ANY:2:2,OBJ,F,VEC,NC,DOIT?,SYN,WHICH,?TMP1
GET F,9 >VEC
SET 'DOIT?,TRUE-VALUE
GET F,3 >SYN
GET F,4 >WHICH
EQUAL? OBJ,HERE \?CND1
SET 'OBJ,GLOBAL-HERE
?CND1: GET F,2
ZERO? STACK \?CND3
ZERO? SYN /?CND3
GET VEC,1
EQUAL? 1,STACK \?CND3
CALL MULTIPLE-EXCEPTION?,OBJ,SYN,WHICH,F
ZERO? STACK /?CCL10
SET 'DOIT?,FALSE-VALUE
JUMP ?CND3
?CCL10: GET VEC,4
CALL MULTIPLE-EXCEPTION?,STACK,SYN,WHICH,F
ZERO? STACK /?CND3
PUT VEC,4,OBJ
SET 'DOIT?,FALSE-VALUE
?CND3: ZERO? DOIT? /TRUE
GET F,2
ZERO? STACK /?PRD17
GET F,3
ZERO? STACK /?PRD17
GET F,3 >?TMP1
GET F,4
CALL MULTIPLE-EXCEPTION?,OBJ,?TMP1,STACK,F
ZERO? STACK \TRUE
?PRD17: CALL NOT-IN-FIND-RES?,OBJ,VEC >WHICH
ZERO? WHICH /TRUE
GET VEC,1
ADD 1,STACK
PUT VEC,1,STACK
PUT WHICH,0,OBJ
GET F,2
EQUAL? STACK,NP-QUANT-A /FALSE
RTRUE
.FUNCT NOT-IN-FIND-RES?:ANY:2:3,OBJ,VEC,NO-CHANGE?,CT,SZ,ANS,NVEC,NEW-OBJECT
GET VEC,1 >CT
GET VEC,0 >SZ
?PRG1: ADD VEC,8 >ANS
LESS? CT,1 \?CCL5
RETURN ANS
?CCL5: GRTR? CT,SZ \?CCL7
SUB CT,SZ >CT
JUMP ?CND3
?CCL7: SET 'SZ,CT
?CND3: INTBL? OBJ,ANS,SZ /FALSE
GET VEC,2 >NVEC
ZERO? NVEC /?CCL12
SET 'VEC,NVEC
SET 'SZ,FIND-RES-MAXOBJ
JUMP ?PRG1
?CCL12: LESS? SZ,FIND-RES-MAXOBJ \?CCL14
MUL 2,SZ
ADD ANS,STACK
RSTACK
?CCL14: ZERO? NO-CHANGE? \TRUE
SET 'SZ,FIND-RES-MAXOBJ
CALL DO-PMEM-ALLOC,7,9 >NEW-OBJECT
SET 'NVEC,NEW-OBJECT
PUT VEC,2,NVEC
ADD NVEC,8
RSTACK
.FUNCT EVERYWHERE-VERB?:ANY:0:2,WHICH,SYNTAX,SYN
ASSIGNED? 'WHICH /?CND1
GET FINDER,4 >WHICH
?CND1: ASSIGNED? 'SYNTAX /?CND3
GET PARSE-RESULT,3 >SYNTAX
?CND3: EQUAL? WHICH,1 \?CCL7
GETB SYNTAX,5 >SYN
JUMP ?CND5
?CCL7: GETB SYNTAX,9 >SYN
?CND5: BTST SYN,128 \FALSE
BTST SYN,64 \TRUE
RFALSE
.FUNCT MULTIPLE-EXCEPTION?:ANY:4:4,OBJ,SYNTAX,WHICH,F,L,VB
LOC OBJ >L
GET SYNTAX,0 >VB
EQUAL? OBJ,FALSE-VALUE,ROOMS \?CCL3
INC 'P-NOT-HERE
RTRUE
?CCL3: CALL EVERYWHERE-VERB?,WHICH,SYNTAX
ZERO? STACK \?CCL5
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK /TRUE
?CCL5: EQUAL? VB,V?TAKE \?CCL9
GET F,6
ZERO? STACK \?CCL9
EQUAL? WHICH,1 \?CCL9
FSET? OBJ,TAKEBIT /?CCL15
FSET? OBJ,TRYTAKEBIT \TRUE
?CCL15: EQUAL? L,WINNER /TRUE
RFALSE
?CCL9: EQUAL? VB,V?DROP \FALSE
IN? OBJ,WINNER \TRUE
RFALSE
.FUNCT CHECK-ADJS-THERE?:ANY:1:1,OWNER,TMP
GET OWNER-SR-THERE,1 >TMP
ZERO? TMP /FALSE
INTBL? OWNER,OWNER-SR-THERE+8,TMP /TRUE
RFALSE
.FUNCT CHECK-ADJS:ANY:3:3,OBJ,F,ADJS,CNT,TMP,OWNER,ID,VEC,CT,ADJ,FL,OADJS,NUM,?TMP1
GETP OBJ,P?OWNER >OWNER
GETB ADJS,1
EQUAL? STACK,2 /?CCL2
GET ADJS,2 >TMP
ZERO? TMP /?CND1
?CCL2: SET 'ID,OWNER
LESS? 0,ID \?CCL7
SET 'ID,OWNER
GRTR? ID,LAST-OBJECT /?CCL7
EQUAL? OWNER,TMP /?CND1
EQUAL? OWNER,ROOMS \?CCL14
GET OWNER-SR-HERE,1
ZERO? STACK /?CCL17
GET OWNER-SR-HERE,4 >ID
JUMP ?CND1
?CCL17: GET OWNER-SR-THERE,1
ZERO? STACK /FALSE
GET OWNER-SR-THERE,4 >ID
JUMP ?CND1
?CCL14: GET OWNER-SR-HERE,1 >TMP
ZERO? TMP \?CCL21
CALL2 CHECK-ADJS-THERE?,OWNER
ZERO? STACK \?CND1
RFALSE
?CCL21: INTBL? OWNER,OWNER-SR-HERE+8,TMP /?CND1
CALL2 CHECK-ADJS-THERE?,OWNER
ZERO? STACK \?CND1
RFALSE
?CCL7: ZERO? OWNER /?CCL28
GET OWNER-SR-HERE,1 >CNT
ZERO? CNT \?CCL31
SET 'ID,PLAYER
JUMP ?CND1
?CCL31: ADD OWNER,2 >TMP
SET 'VEC,OWNER-SR-HERE+8
?PRG33: DLESS? 'CNT,0 /FALSE
GET VEC,0 >?TMP1
GET OWNER,0
INTBL? ?TMP1,TMP,STACK >ID \?CCL39
GET ID,0 >ID
JUMP ?CND1
?CCL39: ADD VEC,2 >VEC
JUMP ?PRG33
?CCL28: LESS? 0,TMP \?CCL41
GRTR? TMP,LAST-OBJECT /?CCL41
CALL HELD?,OBJ,TMP
ZERO? STACK \?CND1
RFALSE
?CCL41: GET OWNER-SR-HERE,1 >TMP
ZERO? TMP /FALSE
LOC OBJ
INTBL? STACK,OWNER-SR-HERE+8,TMP >ID \FALSE
?CND1: EQUAL? ID,0,OBJ /?CND50
GET F,9
PUT STACK,3,ID
?CND50: GETB ADJS,1
EQUAL? STACK,2 /TRUE
ADD ADJS,10 >VEC
GET ADJS,4 >CT
GETPT OBJ,P?ADJECTIVE >OADJS
PTSIZE OADJS
DIV STACK,2 >NUM
?PRG54: DLESS? 'CT,0 /TRUE
GET VEC,CT >ADJ
SET 'ID,ADJ
EQUAL? ADJ,W?NO.WORD /?PRG54
INTBL? ID,OADJS,NUM /?PRG54
EQUAL? ID,W?CLOSED,W?SHUT \?CCL63
FSET? OBJ,OPENBIT \?PRG54
?CCL63: EQUAL? ID,W?OPEN \FALSE
FSET? OBJ,OPENBIT /?PRG54
RFALSE
.FUNCT SEARCH-IN-LG?:ANY:1:1,OBJ
RFALSE
.FUNCT EXCLUDE-HERE-OBJECT?:ANY:0:0
RFALSE
.FUNCT FIND-OBJECTS:ANY:0:3,SEARCH,PARENT,NO-ADJACENT,GLBS,CONT?,N,RES,NEW-OBJECT,FLAG,?PR-FLAG,?TMP1,?TMP2
ASSIGNED? 'SEARCH /?CND1
GET FINDER,4
EQUAL? 1,STACK \?CCL5
GET PARSE-RESULT,3
GETB STACK,5 >SEARCH
JUMP ?CND1
?CCL5: GET PARSE-RESULT,3
GETB STACK,9 >SEARCH
?CND1: SET 'CONT?,TRUE-VALUE
GET FINDER,9 >RES
PUT RES,1,0
PUT RES,2,FALSE-VALUE
ZERO? PARENT /?CCL8
CALL FIND-DESCENDANTS,PARENT,7
ZERO? STACK /?CND6
GET RES,1
ZERO? STACK \?CND6
?CCL8: ZERO? PARENT /?CND13
ZERO? NO-ADJACENT \?CND13
GET FINDER,5 >GLBS
ZERO? GLBS \?CND13
CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT
PUT NEW-OBJECT,2,PARENT
SET 'GLBS,NEW-OBJECT
PUT FINDER,5,GLBS
?CND13: BTST SEARCH,128 \?CND19
BTST SEARCH,64 /?CND19
FIRST? GENERIC-OBJECTS \?CND19
FIRST? GENERIC-OBJECTS >NEW-OBJECT /?PRG25
?PRG25: CALL MATCH-OBJECT,NEW-OBJECT,FINDER,TRUE-VALUE
ZERO? STACK /?REP26
NEXT? NEW-OBJECT >NEW-OBJECT /?PRG25
?REP26: GET RES,1 >CONT?
ZERO? CONT? /?CND19
EQUAL? CONT?,1 /TRUE
RFALSE
?CND19: SET 'NEW-OBJECT,FALSE-VALUE
?PRG35: ZERO? NEW-OBJECT \?PRD40
BAND SEARCH,12
ZERO? STACK \?CCL38
?PRD40: ZERO? NEW-OBJECT /?CND37
?CCL38: ZERO? NEW-OBJECT \?CTR44
BTST SEARCH,8 \?CCL45
?CTR44: SET '?PR-FLAG,6
JUMP ?CND43
?CCL45: SET '?PR-FLAG,2
?CND43: ZERO? NEW-OBJECT \?CTR49
BAND SEARCH,12
ZERO? STACK /?CCL50
?CTR49: BOR 1,?PR-FLAG >FLAG
JUMP ?CND48
?CCL50: BAND ?PR-FLAG,-2 >FLAG
?CND48: ZERO? NEW-OBJECT \?CCL55
BTST SEARCH,4 /?CCL55
BOR 8,FLAG
JUMP ?CND53
?CCL55: BAND FLAG,-9
?CND53: CALL FIND-DESCENDANTS,WINNER,STACK >CONT?
?CND37: ZERO? NEW-OBJECT \?CCL59
BAND SEARCH,3
ZERO? STACK /?CND58
?CCL59: ZERO? NEW-OBJECT \?CTR63
BAND SEARCH,3
ZERO? STACK /?CCL64
?CTR63: SET '?PR-FLAG,3
JUMP ?CND62
?CCL64: SET '?PR-FLAG,2
?CND62: ZERO? NEW-OBJECT \?CTR69
BTST SEARCH,2 \?CCL70
?CTR69: BOR 4,?PR-FLAG >FLAG
JUMP ?CND68
?CCL70: BAND ?PR-FLAG,-5 >FLAG
?CND68: ZERO? NEW-OBJECT \?CCL75
BTST SEARCH,1 /?CCL75
BOR 8,FLAG
JUMP ?CND73
?CCL75: BAND FLAG,-9
?CND73: CALL FIND-DESCENDANTS,HERE,STACK >CONT?
?CND58: GET RES,1
ZERO? STACK \?CND6
BTST SEARCH,15 /?CND78
ZERO? NEW-OBJECT \?CND78
GET TLEXV,0 >GLBS
ZERO? GLBS /?CCL86
GET GLBS,4
ZERO? STACK \?CTR85
GET GLBS,3
ZERO? STACK /?CCL86
?CTR85: SET 'NEW-OBJECT,TRUE-VALUE
JUMP ?PRG35
?CCL86: BTST SEARCH,64 \?CND78
BTST SEARCH,128 \FALSE
?CND78: GETPT HERE,P?GLOBAL >GLBS
ZERO? GLBS /?CND94
PTSIZE GLBS
DIV STACK,2 >N
?PRG97: DLESS? 'N,0 /?CND94
GET GLBS,N >?PR-FLAG
CALL MATCH-OBJECT,?PR-FLAG,FINDER,TRUE-VALUE >CONT?
ZERO? CONT? /?CND94
FIRST? ?PR-FLAG \?PRG97
BTST SEARCH,2 \?PRG97
CALL2 SEARCH-IN-LG?,?PR-FLAG
ZERO? STACK /?PRG97
CALL FIND-DESCENDANTS,?PR-FLAG,FD-INCLUDE? >CONT?
ZERO? CONT? \?PRG97
?CND94: ZERO? CONT? /?CND111
CALL1 EXCLUDE-HERE-OBJECT?
ZERO? STACK \?CND111
CALL MATCH-OBJECT,HERE,FINDER,TRUE-VALUE >CONT?
?CND111: ZERO? CONT? /?CND115
LOC PLAYER
EQUAL? HERE,STACK /?CND115
LOC PLAYER
GETP STACK,P?THINGS
ZERO? STACK /?CND115
LOC PLAYER
CALL TEST-THINGS,STACK,FINDER >CONT?
?CND115: ZERO? CONT? /?CND120
GETP HERE,P?THINGS
ZERO? STACK /?CND120
CALL TEST-THINGS,HERE,FINDER >CONT?
?CND120: GET RES,1
ZERO? STACK /?CND124
SET 'CONT?,FALSE-VALUE
?CND124: ZERO? CONT? /?CND126
BTST SEARCH,2 \?CCL130
PUSH 5
JUMP ?CND128
?CCL130: PUSH 1
?CND128: CALL FIND-DESCENDANTS,GLOBAL-OBJECTS,STACK >CONT?
?CND126: ZERO? CONT? /?CND131
GET RES,1
ZERO? STACK \?CND131
ZERO? NO-ADJACENT \?CND131
GETP HERE,P?ADJACENT >GLBS
ZERO? GLBS /?CND131
GETB GLBS,0 >N
?PRG137: GETB GLBS,N
ZERO? STACK /?CCL141
DEC 'N
GETB GLBS,N
ICALL FIND-OBJECTS,1,STACK,TRUE-VALUE
JUMP ?CND139
?CCL141: DEC 'N
?CND139: DLESS? 'N,1 \?PRG137
GET RES,1
ZERO? STACK /?CND131
SET 'CONT?,FALSE-VALUE
?CND131: ZERO? CONT? /?CND6
GET RES,1
ZERO? STACK \?CND6
BTST SEARCH,128 \?PRD152
BTST SEARCH,64 \?CCL147
?PRD152: GET PARSE-RESULT,1 >?TMP2
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? ?TMP2,?TMP1,STACK,132 >FLAG \?CCL157
GET FLAG,1
JUMP ?CND155
?CCL157: PUSH FALSE-VALUE
?CND155: BTST STACK,512 \?CND6
?CCL147: SET '?PR-FLAG,1
?PRG158: CALL MATCH-OBJECT,?PR-FLAG,FINDER,TRUE-VALUE
ZERO? STACK /?CND6
IGRTR? '?PR-FLAG,LAST-OBJECT \?PRG158
?CND6: GET RES,1
EQUAL? STACK,1 /TRUE
RFALSE
.FUNCT TEST-THINGS:ANY:2:2,RM,F,CT,RMG,RMGL,TTBL,NOUN,XCT,V,X,?TMP1
GETP RM,P?THINGS >RMG
GET RMG,0 >RMGL
ADD RMG,2 >RMG
GET F,5 >CT
ZERO? CT /?CND1
GET CT,4 >CT
?CND1: GET F,6 >NOUN
GET F,5
ADD STACK,10 >V
?PRG3: GET RMG,0 >TTBL
EQUAL? NOUN,W?ONE /?PRD8
GETB TTBL,1 >XCT
EQUAL? XCT,1 \?PRD11
GET TTBL,2
EQUAL? NOUN,STACK /?PRD8
?PRD11: GET TTBL,2
INTBL? NOUN,STACK,XCT \?CND5
?PRD8: ZERO? CT /?PRD14
GETB TTBL,0 >XCT
EQUAL? XCT,1 \?PRD17
GET V,0 >?TMP1
GET TTBL,1
EQUAL? ?TMP1,STACK /?PRD14
?PRD17: GET V,0 >?TMP1
GET TTBL,1
INTBL? ?TMP1,STACK,XCT \?CND5
?PRD14: GET F,7
ZERO? STACK /?CCL6
GET OWNER-SR-HERE,1
EQUAL? 1,STACK \?CND5
GET OWNER-SR-HERE,4
EQUAL? PSEUDO-OBJECT,STACK \?CND5
EQUAL? LAST-PSEUDO-LOC,RM \?CND5
GETP PSEUDO-OBJECT,P?ACTION >?TMP1
GET RMG,1
EQUAL? ?TMP1,STACK \?CND5
?CCL6: SET 'LAST-PSEUDO-LOC,RM
GET RMG,1
PUTP PSEUDO-OBJECT,P?ACTION,STACK
GETPT PSEUDO-OBJECT,P?ACTION
SUB STACK,7 >V
COPYT NOUN,V,6
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? NOUN,?TMP1,STACK,132 >X \?CCL31
GET X,1
JUMP ?CND29
?CCL31: PUSH FALSE-VALUE
?CND29: BTST STACK,PLURAL-FLAG \?CCL28
FSET PSEUDO-OBJECT,PLURAL
JUMP ?CND26
?CCL28: FCLEAR PSEUDO-OBJECT,PLURAL
?CND26: ICALL ADD-OBJECT,PSEUDO-OBJECT,F
RFALSE
?CND5: ADD RMG,4 >RMG
DLESS? 'RMGL,1 \?PRG3
RTRUE
.ENDSEG
.ENDI

328
globals.zabstr Normal file
View File

@ -0,0 +1,328 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT 0>
<INCLUDE "PDEFS">
<OBJECT GLOBAL-OBJECTS (FLAGS AN BODY-PART CONTBIT DEAD DONT-ALL DONT-IT
DOORBIT DUTCHBIT ENGLISHBIT FEMALE FOODBIT FURNITURE INVISIBLE JAPANESEBIT
LIGHTBIT LOCKABLE LOCKED NDESCBIT NOABIT NOTHEBIT ONBIT OPENABLE OPENBIT
OUTSIDE PERSON PLURAL PORTUGUESEBIT READBIT RLANDBIT RMUNGBIT SCOREBIT
SEARCHBIT SITTING SPANISHBIT SURFACEBIT TAKEBIT THE TOOLBIT TOUCHBIT TRANSBIT
TRYTAKEBIT VEHBIT WEAPONBIT WEARABLE WEARBIT)>
<OBJECT LOCAL-GLOBALS (LOC GLOBAL-OBJECTS) (SYNONYM ZZMGCK) (DESCFCN 0) (
CONTFCN 0) (GLOBAL GLOBAL-OBJECTS) (FDESC "F") (LDESC "F") (THINGS 0) (COUNT 0)
(SIZE 0) (TEXT "") (VALUE 0) (CAPACITY 0)>
<OBJECT ROOMS (IN TO ROOMS)>
<OBJECT INTDIR (LOC GLOBAL-OBJECTS) (SYNONYM NORTH EAST WEST SOUTH FORE AFT
PORT STARBOARD) (DESC "direction") (GENERIC GENERIC-NORTH-F)>
<GLOBAL P-DIRECTION <>>
<DEFINE-ROUTINE TELL-DIRECTION>
<SYNONYM NORTH N>
<SYNONYM SOUTH S>
<SYNONYM EAST E>
<SYNONYM WEST W>
<SYNONYM DOWN D>
<SYNONYM UP U ALOFT>
<SYNONYM NE NORTHEAST>
<SYNONYM NW NORTHWEST>
<SYNONYM SE SOUTHEAST>
<SYNONYM SW SOUTHWEST>
<SYNONYM IN AHEAD>
<SYNONYM FORE FOREWARD FORWARD FORARD STRAIGHT>
<DIR-SYNONYM FORE F>
<SYNONYM STARBOARD SB RIGHT>
<SYNONYM PORT P LEFT>
<GLOBAL HERE:OBJECT <>>
<GLOBAL LIT <>>
<GLOBAL MOVES 0>
<GLOBAL OMOVES 0>
<GLOBAL SCORE 0>
<GLOBAL OSCORE 0>
<CONSTANT DIR-BIT 1>
<CONSTANT DIR-DIR 2>
<CONSTANT DIR-NAME 3>
<GLOBAL P-DIRECTION <>>
<OBJECT INTNUM (LOC GLOBAL-OBJECTS) (DESC "number") (SYNONYM INT.NUM DEGREES
NORTH) (ADJECTIVE INT.NUM DEGREES NUMBER) (GENERIC GENERIC-NORTH-F) (ACTION
INTNUM-F)>
<DEFINE-ROUTINE GENERIC-NORTH-F>
<DEFINE-ROUTINE INTNUM-F>
<OBJECT THIS (LOC GLOBAL-OBJECTS) (SYNONYM THIS THAT) (DESC "this") (FLAGS AN
NOABIT NOTHEBIT NDESCBIT TOUCHBIT)>
<OBJECT IT (LOC GLOBAL-OBJECTS) (SYNONYM IT OBJECT) (DESC "it") (FLAGS AN
NOABIT NOTHEBIT NDESCBIT TOUCHBIT)>
<OBJECT THEM (LOC GLOBAL-OBJECTS) (SYNONYM THEM THEY OBJECTS) (DESC "them") (
FLAGS NOABIT NOTHEBIT NDESCBIT TOUCHBIT)>
<OBJECT HIM (LOC GLOBAL-OBJECTS) (SYNONYM HIM HE) (DESC "him") (FLAGS PERSON
NOABIT NOTHEBIT NDESCBIT TOUCHBIT) (ACTION HIM-F)>
<DEFINE-ROUTINE HIM-F>
<OBJECT HER (LOC GLOBAL-OBJECTS) (SYNONYM HER SHE) (DESC "her") (FLAGS FEMALE
PERSON NOABIT NOTHEBIT NDESCBIT TOUCHBIT) (ACTION HER-F)>
<DEFINE-ROUTINE HER-F>
<OBJECT LIGHT (LOC GLOBAL-OBJECTS) (DESC "light") (SYNONYM LIGHT LIGHTS) (
ACTION LIGHT-F)>
<DEFINE-ROUTINE LIGHT-F>
<OBJECT LG-HOLE (LOC LOCAL-GLOBALS) (FLAGS NDESCBIT TOUCHBIT) (DESC "hole") (
SYNONYM HOLE) (ADJECTIVE MUDDY) (ACTION LG-HOLE-F)>
<DEFINE-ROUTINE LG-HOLE-F>
<OBJECT CEILING (LOC GLOBAL-OBJECTS) (FLAGS NDESCBIT TOUCHBIT) (DESC "ceiling")
(SYNONYM CEILING ROOF) (ACTION CEILING-F)>
<DEFINE-ROUTINE CEILING-F>
<OBJECT AIR (LOC GLOBAL-OBJECTS) (DESC "air") (SYNONYM AIR COLD) (FLAGS AN
NOABIT)>
<CONSTANT BODY-PARTS-OWNERS <TABLE (LENGTH PURE) BLACKTHORNE YABU CHIMMOKO ETSU
ACHIKO KIRITSUBO MARIKO GRAY-CAPTAIN GUARDS LG-NINJA NINJA-LEADER NINJA BUNTARO
SAZUKO HIRO-MATSU TORANAGA GRAYS ISHIDO TORANAGAS-GUARDS ALVITO OARSMEN
RODRIGUES SEARCH-PARTY SEBASTIO-HENCHMEN SEBASTIO OMI MURA ONNA SAMURAI-GUARDS
LOSING-SAMURAI OMI-SAMURAI CREWMEN LG-CREWMEN HENDRIK VINCK MAETSUKKER GINSEL
MATES SPILLBERGEN PIETERZOON ROPER SONK SALAMON VAN-NEKK CROOCQ>>
<OBJECT FEET (LOC GLOBAL-OBJECTS) (SYNONYM FEET FOOT) (OWNER BODY-PARTS-OWNERS)
(DESC "feet") (FLAGS NDESCBIT BODY-PART TOOLBIT TOUCHBIT NOABIT)>
<OBJECT HANDS (LOC GLOBAL-OBJECTS) (SYNONYM HANDS HAND) (ADJECTIVE BARE) (OWNER
BODY-PARTS-OWNERS) (DESC "hand") (FLAGS NDESCBIT BODY-PART TOOLBIT TOUCHBIT
NOABIT)>
<OBJECT HEAD (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "head") (
SYNONYM HEAD FACE) (FLAGS NOABIT BODY-PART)>
<OBJECT COJONES (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "balls") (
SYNONYM COJONES TESTICLES BALLS NUTS) (FLAGS BODY-PART NOABIT PLURAL) (ACTION
COJONES-F)>
<DEFINE-ROUTINE COJONES-F>
<OBJECT STOMACH (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "stomach")
(SYNONYM STOMACH BELLY) (FLAGS BODY-PART NOABIT)>
<OBJECT FINGERS (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "fingers")
(SYNONYM FINGERS) (FLAGS BODY-PART NOABIT)>
<OBJECT MOUTH (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "mouth") (
SYNONYM MOUTH) (FLAGS BODY-PART NOABIT) (ACTION MOUTH-F)>
<DEFINE-ROUTINE MOUTH-F>
<OBJECT EYES (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "eyes") (
SYNONYM EYE EYES) (FLAGS BODY-PART NOABIT) (ACTION EYES-F)>
<DEFINE-ROUTINE EYES-F>
<GLOBAL PLAYER <>>
<DEFINE-ROUTINE LIST-PEOPLE>
<OBJECT LG-MEN (LOC LOCAL-GLOBALS) (SYNONYM MAN MEN) (DESC "men") (FLAGS PERSON
TOUCHBIT NOABIT PLURAL) (ACTION LG-MEN-F)>
<DEFINE-ROUTINE LG-MEN-F>
<DEFINE-ROUTINE MAN?>
<OBJECT LG-WOMEN (SCENE S-NINJA) (LOC LOCAL-GLOBALS) (SYNONYM WOMAN WOMEN) (
DESC "women") (FLAGS PERSON FEMALE TOUCHBIT NOABIT PLURAL) (ACTION LG-WOMEN-F)>
<DEFINE-ROUTINE LG-WOMEN-F>
<DEFINE-ROUTINE WOMAN?>
<OBJECT YOU (LOC GLOBAL-OBJECTS) (SYNONYM YOU YOURSELF) (DESC "myself") (FLAGS
PERSON TOUCHBIT NOABIT NOTHEBIT) (ACTION YOU-F)>
<DEFINE-ROUTINE YOU-F>
<OBJECT ME (LOC GLOBAL-OBJECTS) (SYNONYM ME MYSELF SELF I WE US) (DESC
"yourself") (FLAGS PERSON TOUCHBIT NOABIT NOTHEBIT) (ACTION ME-F)>
<DEFINE-ROUTINE MENTAL-COLLAPSE>
<DEFINE-ROUTINE ME-F>
<OBJECT GLOBAL-HERE (LOC GLOBAL-OBJECTS) (DESC "here") (SYNONYM ROOM CHAMBER
PLACE BASEMENT HERE AREA) (ADJECTIVE AREA) (FLAGS NOABIT NOTHEBIT) (ACTION
GLOBAL-HERE-F)>
<DEFINE-ROUTINE GLOBAL-HERE-F>
<SETG C-NORTH 1>
<SETG C-EAST 2>
<SETG C-WEST 4>
<SETG C-SOUTH 8>
<SETG C-NE 16>
<SETG C-NW 32>
<SETG C-SE 64>
<SETG C-SW 128>
<CONSTANT C-NORTH 1>
<CONSTANT C-EAST 2>
<CONSTANT C-WEST 4>
<CONSTANT C-SOUTH 8>
<CONSTANT C-NE 16>
<CONSTANT C-NW 32>
<CONSTANT C-SE 64>
<CONSTANT C-SW 128>
<OBJECT NORTH-WALL (LOC GLOBAL-OBJECTS) (DESC "north wall") (SYNONYM WALL) (
ADJECTIVE NORTH FORE) (GENERIC GENERIC-WALL-F) (ACTION WALL-F)>
<OBJECT EAST-WALL (LOC GLOBAL-OBJECTS) (DESC "east wall") (SYNONYM WALL) (
ADJECTIVE EAST STARBOARD) (FLAGS AN) (GENERIC GENERIC-WALL-F) (ACTION WALL-F)>
<OBJECT WEST-WALL (LOC GLOBAL-OBJECTS) (DESC "west wall") (SYNONYM WALL) (
ADJECTIVE WEST PORT) (GENERIC GENERIC-WALL-F) (ACTION WALL-F)>
<OBJECT SOUTH-WALL (LOC GLOBAL-OBJECTS) (DESC "south wall") (SYNONYM WALL) (
ADJECTIVE SOUTH AFT) (GENERIC GENERIC-WALL-F) (ACTION WALL-F)>
<OBJECT WALL (LOC GLOBAL-OBJECTS) (DESC "wall") (SYNONYM WALL WALLS) (GENERIC
GENERIC-WALL-F) (ACTION WALL-F)>
<DEFINE-ROUTINE GENERIC-WALL-F>
<DEFINE-ROUTINE WALL-F>
<OBJECT DIRT (LOC GLOBAL-OBJECTS) (DESC "dirt") (SYNONYM RUBBLE DEBRIS DUST
DIRT) (FLAGS NOABIT)>
<OBJECT GROUND (LOC GLOBAL-OBJECTS) (SYNONYM FLOOR GROUND FIELD EARTH DIRT) (
ADJECTIVE STONE SANDY TINY LEVEL) (DESC "ground") (FLAGS THE) (ACTION GROUND-F)
>
<DEFINE-ROUTINE GROUND-F>
<OBJECT CORRIDOR (LOC GLOBAL-OBJECTS) (DESC "passage") (SYNONYM PASSAGE
CORRIDOR EXIT TUNNEL) (ADJECTIVE LONG DARK STEAM) (ACTION CORRIDOR-F)>
<DEFINE-ROUTINE CORRIDOR-F>
<OBJECT GLOBAL-SLEEP (LOC GLOBAL-OBJECTS) (DESC "sleep") (SYNONYM SLEEP NAP) (
FLAGS ABSTRACTBIT NOABIT NOTHEBIT) (ACTION GLOBAL-SLEEP-F)>
<DEFINE-ROUTINE GLOBAL-SLEEP-F>
<OBJECT NOISE (LOC GLOBAL-OBJECTS) (DESC "noise") (SYNONYM NOISE SOUND WHINING
CRYING COMMOTION)>
<OBJECT SIGN-OF-CROSS (LOC GLOBAL-OBJECTS) (OWNER SIGN-OF-CROSS) (DESC "cross")
(SYNONYM SIGN CROSS) (ADJECTIVE SIGN) (FLAGS ABSTRACTBIT) (ACTION
SIGN-OF-CROSS-F)>
<DEFINE-ROUTINE SIGN-OF-CROSS-F>
<OBJECT SANE (LOC GENERIC-OBJECTS) (DESC "sane") (SYNONYM NORMAL SANE ORDINARY
QUIET) (ADJECTIVE ACTING) (FLAGS DONT-IT)>
<OBJECT CRAZY (LOC GENERIC-OBJECTS) (DESC "insane") (SYNONYM KAMI INSANE MADMAN
MAD CRAZY BONKERS BERSERK POSSESSED SILLY STUPID) (ADJECTIVE ACTING) (GENERIC
GENERIC-CRAZY-F) (FLAGS DONT-IT SCOREBIT NOABIT NOTHEBIT)>
<OBJECT TRAITOR (LOC GENERIC-OBJECTS) (DESC "traitor") (SYNONYM TRAITOR
BETRAYER) (FLAGS SCOREBIT)>
<OBJECT STRAIT-OF-MAGELLAN (LOC GENERIC-OBJECTS) (OWNER STRAIT-OF-MAGELLAN) (
DESC "Magellan's Pass") (SYNONYM MAGELLAN PASS STRAIT STRAITS) (FLAGS NOABIT
NOTHEBIT SCOREBIT)>
<OBJECT PACIFIC (LOC GENERIC-OBJECTS) (DESC "Pacific Ocean") (SYNONYM ATLANTIC
PACIFIC OCEAN) (ADJECTIVE ATLANTIC PACIFIC) (FLAGS NOABIT NOTHEBIT)>
<OBJECT PORTUGAL (LOC GLOBAL-OBJECTS) (DESC "Portugal") (SYNONYM PORTUGAL) (
FLAGS ABSTRACTBIT NOABIT NOTHEBIT)>
<OBJECT PORTUGUESE (LOC GLOBAL-OBJECTS) (DESC "Portuguese") (SYNONYM PORTUGUESE
) (ADJECTIVE PORTUGUESE) (FLAGS NOABIT NOTHEBIT) (ACTION PORTUGUESE-F)>
<DEFINE-ROUTINE PORTUGUESE-F>
<DEFINE-ROUTINE PORTUGUESE?>
<OBJECT SPAIN (LOC GLOBAL-OBJECTS) (DESC "Spain") (SYNONYM SPAIN) (FLAGS
ABSTRACTBIT NOABIT NOTHEBIT)>
<OBJECT SPANISH (LOC GLOBAL-OBJECTS) (DESC "Spanish") (SYNONYM SPANISH) (
ADJECTIVE SPANISH) (FLAGS NOABIT NOTHEBIT) (ACTION SPANISH-F)>
<DEFINE-ROUTINE SPANISH?>
<DEFINE-ROUTINE SPANISH-F>
<OBJECT ENGLAND (LOC GLOBAL-OBJECTS) (DESC "England") (SYNONYM ENGLAND BRITAIN
LONDON) (ADJECTIVE ENGLISHMAN BRITON) (FLAGS ABSTRACTBIT NOABIT NOTHEBIT)>
<OBJECT ENGLISH (LOC GLOBAL-OBJECTS) (DESC "English") (SYNONYM ENGLISH BRITISH)
(ADJECTIVE ENGLISH BRITISH) (FLAGS NOABIT NOTHEBIT) (ACTION ENGLISH-F)>
<DEFINE-ROUTINE ENGLISH?>
<DEFINE-ROUTINE ENGLISH-F>
<OBJECT HOLLAND (LOC GLOBAL-OBJECTS) (DESC "Holland") (SYNONYM HOLLAND
NETHERLANDS ROTTERDAM AMSTERDAM) (FLAGS ABSTRACTBIT NOABIT NOTHEBIT)>
<OBJECT DUTCH (LOC GLOBAL-OBJECTS) (DESC "Dutch") (SYNONYM DUTCH) (ADJECTIVE
DUTCH) (FLAGS ABSTRACTBIT NOABIT NOTHEBIT) (ACTION DUTCH-F)>
<DEFINE-ROUTINE DUTCH?>
<DEFINE-ROUTINE DUTCH-F>
<OBJECT HANASE-MASEN (LOC GLOBAL-OBJECTS) (DESC "hanase-masen") (SYNONYM
HANASE-MASEN) (FLAGS ABSTRACTBIT)>
<OBJECT JAPAN (LOC GLOBAL-OBJECTS) (DESC "Japan") (SYNONYM JAPAN JAPANS NIPPON
NIHON) (FLAGS NOABIT NOTHEBIT) (ACTION JAPAN-F)>
<DEFINE-ROUTINE JAPAN-F>
<OBJECT JAPANESE (LOC GLOBAL-OBJECTS) (DESC "Japanese") (SYNONYM JAPANESE) (
ADJECTIVE JAPANESE) (COUNT 0) (FLAGS NOABIT NOTHEBIT SCOREBIT) (ACTION
JAPANESE-F)>
<DEFINE-ROUTINE JAPANESE?>
<DEFINE-ROUTINE JAPANESE-F>
<DEFINE-ROUTINE FIND-NATIONALITY>
<OBJECT LATIN (LOC GLOBAL-OBJECTS) (DESC "Latin") (SYNONYM LATIN) (FLAGS
ABSTRACTBIT NOABIT NOTHEBIT)>
<OBJECT GLOBAL-FOOD (LOC GLOBAL-OBJECTS) (DESC "food") (SYNONYM FOOD) (
ADJECTIVE MORE) (ACTION GLOBAL-FOOD-F)>
<DEFINE-ROUTINE GLOBAL-FOOD-F>
<OBJECT GLOBAL-WATER (LOC GLOBAL-OBJECTS) (DESC "water") (SYNONYM WATER DRINK
WATER) (FLAGS NOABIT) (ACTION GLOBAL-WATER-F)>
<DEFINE-ROUTINE GLOBAL-WATER-F>
<OBJECT CHURCH (LOC GENERIC-OBJECTS) (OWNER GOD) (DESC "Church") (SYNONYM
CHURCH SOCIETY) (ADJECTIVE CHRISTIAN CATHOLIC) (FLAGS ABSTRACTBIT)>
<OBJECT JESUITS (LOC GENERIC-OBJECTS) (DESC "Jesuits") (SYNONYM JESUIT JESUITS)
>
<OBJECT GOD (LOC GENERIC-OBJECTS) (DESC "God") (SYNONYM GOD JESUS) (FLAGS
ABSTRACTBIT)>
<OBJECT SATAN (LOC GENERIC-OBJECTS) (DESC "Satan") (SYNONYM SATAN DEVIL) (FLAGS
ABSTRACTBIT)>
<OBJECT BLACK-SHIP (LOC GLOBAL-OBJECTS) (SCENE S-PRISON S-MARIKO S-AFTERMATH) (
DESC "Black Ship") (SYNONYM SHIP) (ADJECTIVE BLACK) (FLAGS ABSTRACTBIT THE) (
GENERIC GENERIC-SHIP-F)>
<OBJECT GORODA (LOC GENERIC-OBJECTS) (DESC "Goroda") (SYNONYM GORODA) (
ADJECTIVE DICTATOR) (FLAGS PERSON)>
<OBJECT TAIKO (LOC GENERIC-OBJECTS) (DESC "Taiko") (SYNONYM TAIKO KWAMPAKU
NAKAMURA) (FLAGS PERSON)>
<OBJECT SHOGUN (LOC GENERIC-OBJECTS) (DESC "Shogun") (SYNONYM SHOGUN) (FLAGS
PERSON)>
<OBJECT KIYAMA (LOC GENERIC-OBJECTS) (DESC "Kiyama") (SYNONYM KIYAMA) (
ADJECTIVE LORD) (FLAGS PERSON)>
<OBJECT POPE (LOC GENERIC-OBJECTS) (DESC "Pope") (SYNONYM POPE) (ADJECTIVE
CHRISTIAN CATHOLIC) (FLAGS PERSON)>
<OBJECT GLOBAL-HATAMOTO (LOC GENERIC-OBJECTS) (DESC "hatamoto") (SYNONYM
HATAMOTO) (FLAGS PERSON) (ACTION GLOBAL-HATAMOTO-F)>
<DEFINE-ROUTINE GLOBAL-HATAMOTO-F>
<OBJECT GLOBAL-BARBARIAN (LOC GENERIC-OBJECTS) (DESC "barbarian") (SYNONYM
BARBARIAN) (FLAGS PERSON SCOREBIT)>
<OBJECT GLOBAL-SAMURAI (LOC GENERIC-OBJECTS) (DESC "samurai") (SYNONYM SAMURAI)
(GENERIC GENERIC-SAMURAI-F) (FLAGS PERSON)>
<OBJECT GLOBAL-DAIMYO (LOC GENERIC-OBJECTS) (DESC "daimyo") (SYNONYM DAIMYO
LORD) (FLAGS PERSON)>
<OBJECT PIRATE (LOC GENERIC-OBJECTS) (DESC "pirate") (SYNONYM PIRATE CORSAIR)>
<OBJECT HERETIC (LOC GENERIC-OBJECTS) (DESC "heretic") (SYNONYM HERETIC
SATANIST WORSHIPPER) (ADJECTIVE SATAN)>
<OBJECT LEADER (LOC GENERIC-OBJECTS) (DESC "leader") (SYNONYM LEADER
PILOT-MAJOR)>
<VOC "SORRY" ADJ>
<OBJECT WIND (LOC GLOBAL-OBJECTS) (DESC "wind") (SYNONYM WIND GALE STORM BREEZE
) (ACTION WIND-F)>
<DEFINE-ROUTINE WIND-F>
<OBJECT HELP (LOC GLOBAL-OBJECTS) (DESC "help") (SYNONYM HELP ASSISTANCE AID) (
FLAGS ABSTRACTBIT) (ACTION HELP-F)>
<DEFINE-ROUTINE HELP-F>
<OBJECT SUICIDE (LOC GENERIC-OBJECTS) (DESC "suicide") (SYNONYM SUICIDE SEPPUKU
DEATH)>
<DEFINE-ROUTINE PRINT-SPACES>
<CONSTANT SLINE <ITABLE NONE 41>>
<OBJECT TRINITY-HOUSE (LOC GLOBAL-OBJECTS) (DESC "Trinity House") (SYNONYM
HOUSE TRINITY) (ADJECTIVE TRINITY) (FLAGS ABSTRACTBIT SCOREBIT) (ACTION
TRINITY-HOUSE-F)>
<DEFINE-ROUTINE TRINITY-HOUSE-F>
<OBJECT LATITUDE (LOC GENERIC-OBJECTS) (OWNER LIZARD) (DESC "latitude") (
SYNONYM LATITUDE)>
<OBJECT LIZARD (LOC GENERIC-OBJECTS) (OWNER LIZARD) (DESC "The Lizard") (
SYNONYM LIZARD) (FLAGS NOTHEBIT NOABIT SCOREBIT) (ACTION LIZARD-F)>
<DEFINE-ROUTINE LIZARD-F>
<OBJECT ROPE (LOC GENERIC-OBJECTS) (DESC "rope") (SYNONYM ROPE) (ACTION ROPE-F)
(GENERIC GENERIC-ROPE-F)>
<DEFINE-ROUTINE ROPE-F>
<DEFINE-ROUTINE GENERIC-ROPE-F>
<DEFINE-ROUTINE GENERIC-SAMURAI-F>
<OBJECT LG-SHIP (SCENE S-AFTERMATH) (LOC LOCAL-GLOBALS) (DESC "ship") (SYNONYM
SHIP BOAT ERASMUS) (ADJECTIVE NEW ANOTHER) (FLAGS NDESCBIT)>
<OBJECT COURSE (LOC GLOBAL-OBJECTS) (DESC "course") (SYNONYM COURSE) (ACTION
COURSE-F)>
<DEFINE-ROUTINE COURSE-F>
<OBJECT GLOBAL-RUTTERS (LOC GENERIC-OBJECTS) (OWNER BLACKTHORNE) (DESC
"rutters") (SYNONYM RUTTERS MAPS)>
<OBJECT QUEEN (LOC GENERIC-OBJECTS) (DESC "Queen Elizabeth") (SYNONYM QUEEN
ELIZABETH) (ADJECTIVE QUEEN)>
<OBJECT WORLD (LOC GENERIC-OBJECTS) (DESC "world") (SYNONYM WORLD GLOBE EARTH
MAP)>
<OBJECT VOYAGE (LOC GENERIC-OBJECTS) (DESC "voyage") (SYNONYM VOYAGE TRIP
JOURNEY)>
<OBJECT TEKI (LOC GENERIC-OBJECTS) (DESC "teki") (SYNONYM TEKI)>
<OBJECT ETA (LOC GENERIC-OBJECTS) (DESC "eta") (SYNONYM ETA ETER ETERS) (FLAGS
AN) (ACTION ETA-F)>
<DEFINE-ROUTINE ETA-F>
<OBJECT ORDERS (LOC GLOBAL-OBJECTS) (DESC "request") (SYNONYM REQUEST ORDER
ORDERS) (ACTION ORDERS-F)>
<DEFINE-ROUTINE ORDERS-F>
<DEFINE-ROUTINE GENERIC-SHIP-F>
<DEFINE-ROUTINE GENERIC-CREWMEN-F>
<DEFINE-ROUTINE GENERIC-CAPTAIN-F>
<DEFINE-ROUTINE GENERIC-SEA-F>
<DEFINE-ROUTINE GENERIC-GALLEY-F>
<DEFINE-ROUTINE GENERIC-DECK-F>
<DEFINE-ROUTINE GENERIC-CRAZY-F>
<DEFINE-ROUTINE GENERIC-LITTER-F>
<OBJECT LG-VILLAGE (LOC LOCAL-GLOBALS) (DESC "fishing village") (SYNONYM
VILLAGE) (ADJECTIVE SMALL FISHING) (FLAGS NDESCBIT) (ACTION LG-VILLAGE-F)>
<DEFINE-ROUTINE LG-VILLAGE-F>
<OBJECT LG-BAY (LOC LOCAL-GLOBALS) (DESC "bay") (SYNONYM BAY HARBOR POINT) (
FLAGS NDESCBIT) (ACTION LG-BAY-F)>
<DEFINE-ROUTINE LG-BAY-F>
<OBJECT LG-LAND (LOC LOCAL-GLOBALS) (DESC "land") (SYNONYM LAND SHORE ROCK
ROCKS CLIFF CLIFFS HEADLAND WATERFRONT WHARF) (ADJECTIVE DRY) (FLAGS NDESCBIT)
(ACTION LG-LAND-F)>
<DEFINE-ROUTINE LG-LAND-F>
<OBJECT LG-SEA (LOC LOCAL-GLOBALS) (DESC "sea") (SYNONYM SEA OCEAN WATER WAVES
WAVE FOAM SEAWATER TIDE COMBER COMBERS CURRENT CURRENTS) (ADJECTIVE RAGING
FROTHY FOAMY) (FLAGS NDESCBIT VEHBIT) (GENERIC GENERIC-SEA-F) (ACTION LG-SEA-F)
>
<DEFINE-ROUTINE LG-SEA-F>
<CONSTANT NUMBERS <LTABLE "one" "two" "three" "four" "five" "six" "seven"
"eight" "nine" "ten" "eleven" "twelve" "thirteen" "fourteen" "fifteen"
"sixteen" "seventeen" "eighteen" "nineteen" "twenty">>
<END-SEGMENT>

1010
globals.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -201,7 +201,8 @@
<RTRUE>)>)
(ELSE
<MORE-SPECIFIC>
<COND (<VERB? TELL> <END-QUOTE> <RFATAL>)>)>>
<COND (<VERB? TELL> <END-QUOTE> <RFATAL>)>
<RTRUE>)>>
<OBJECT HER
(LOC GLOBAL-OBJECTS)
@ -417,7 +418,8 @@ a steer hasn't.\"" CR>)>>
<TELL G"There is no response." CR>)
(<RARG? <>>
<COND (<VERB? EXAMINE>
<LIST-PEOPLE ,MAN? "man" "men">)
<LIST-PEOPLE ,MAN? "man" "men">
<CRLF>)
(<OR <VERB? TELL>
<P? TELL-ABOUT LG-MEN>>
<TELL
@ -445,7 +447,8 @@ G"You'll have to address an individual to get a response." CR>
<TELL G"There is no response." CR>)
(<RARG? <>>
<COND (<VERB? EXAMINE>
<LIST-PEOPLE ,WOMAN? "woman" "women">)
<LIST-PEOPLE ,WOMAN? "woman" "women">
<CRLF>)
(<OR <VERB? TELL>
<P? TELL-ABOUT LG-WOMEN>>
<TELL
@ -996,7 +999,7 @@ the desired direction." CR>)
<P? TEACH * ENGLISH>
<P? ASK-ABOUT * ENGLISH>>
<RFALSE>)
(<VERB? BE BE?> <RFALSE>)
(<VERB? BE BE? REPLY> <RFALSE>)
(ELSE
<FIND-NATIONALITY ,ENGLISH ,ENGLISHBIT>)>>
@ -1060,6 +1063,11 @@ world." CR>)>)>>
(FLAGS NOABIT NOTHEBIT SCOREBIT)
(ACTION JAPANESE-F)>
<ROUTINE JAPANESE? ()
<OR <PRSI? JAPANESE>
<ADJ? ,W?JAPANESE>
<PP? ,W?FROM ,JAPAN>>>
<ROUTINE JAPANESE-F ()
<COND (<OR <P? (SPEAK LEARN SAY) JAPANESE>
<P? TEACH * JAPANESE>
@ -1512,4 +1520,222 @@ tanners, executioners and undertakers." CR>)>>
(ELSE
<TELL "You'll have to be more specific." CR>)>)>>
<END-SEGMENT>
"generic functions"
<ROUTINE GENERIC-SHIP-F (R F)
,LG-ERASMUS>
<ROUTINE GENERIC-CREWMEN-F (R F)
,LG-CREWMEN>
<ROUTINE GENERIC-CAPTAIN-F (R F)
<COND (<SCENE? ,S-ERASMUS ,S-ANJIRO ,S-YABU ,S-PIT>
,SPILLBERGEN)
(<SCENE? ,S-NINJA>
,GRAY-CAPTAIN)
(<SCENE? ,S-DEPARTURE>
<COND (<FSET? ,YAMAZAKI ,DEAD> ,KOJIMA)
(ELSE <RFALSE>)>)>>
<ROUTINE GENERIC-SEA-F (R F)
,LG-SEA>
<ROUTINE GENERIC-GALLEY-F (R F)
<COND (<SCENE? ,S-YABU ,S-ANJIRO ,S-ERASMUS>
,LG-ERASMUS)
(<SCENE? ,S-RODRIGUES>
,SLAVER)
(ELSE
,LG-GALLEY)>>
<ROUTINE GENERIC-DECK-F (R F)
,DECK>
<ROUTINE GENERIC-CRAZY-F (R F)
<COND (<SCENE? ,S-PRISON> ,MADMAN)
(ELSE ,CRAZY)>>
<ROUTINE GENERIC-LITTER-F (R F)
<COND (<OR <HERE? ,WOODS>
<IN? ,WINNER ,MARIKOS-LITTER>>
,MARIKOS-LITTER)
(<IN? ,YABU-PALANQUIN ,HERE>
,YABU-PALANQUIN)>>
<OBJECT LG-VILLAGE
(LOC LOCAL-GLOBALS)
(DESC "fishing village")
(SYNONYM VILLAGE)
(ADJECTIVE SMALL FISHING)
(FLAGS NDESCBIT)
(ACTION LG-VILLAGE-F)>
<ROUTINE LG-VILLAGE-F ()
<COND (<SCENE? S-ANJIRO>
<COND (<VERB? THROUGH>
<COND (<HERE? ,GARDEN ,MURA-HOUSE> <DO-WALK ,P?EAST>)
(<HERE? ,ANJIRO-WATERFRONT> <DO-WALK ,P?NORTH>)
(ELSE
<TELL "The village is right here." CR>)>)
(<VERB? EXIT>
<COND (<HERE? ,GARDEN ,MURA-HOUSE>
<TELL
"You can't tell from here how to leave the village." CR>)
(<HERE? ,ANJIRO ,ANJIRO-WATERFRONT>
<DO-WALK ,P?NORTH>)>)>)
(<SCENE? S-VOYAGE>
<TELL "The village is too far away, considering your condition." CR>)>>
<OBJECT LG-BAY
(LOC LOCAL-GLOBALS)
(DESC "bay")
(SYNONYM BAY HARBOR POINT)
(FLAGS NDESCBIT)
(ACTION LG-BAY-F)>
<ROUTINE LG-BAY-F ()
<COND (<VERB? EXAMINE>
<COND (<SCENE? ,S-VOYAGE>
<TELL
"The bay looks like an island of relative calm." CR>)
(ELSE
<TELL
"The harbor is a small bay protected by reefs almost out of sight to the
east." CR>)>)
(<P? (PUT THROW) * LG-BAY>
<PERFORM ,PRSA ,PRSO ,LG-SEA>
<RTRUE>)>>
<OBJECT LG-LAND
(LOC LOCAL-GLOBALS)
(DESC "land")
(SYNONYM LAND SHORE ROCK ROCKS CLIFF CLIFFS HEADLAND WATERFRONT WHARF)
(ADJECTIVE DRY)
(FLAGS NDESCBIT)
(ACTION LG-LAND-F)>
<ROUTINE LG-LAND-F ("AUX" TRIES)
<COND (<AND <SCENE? ,S-ANJIRO ,S-RODRIGUES>
<VERB? WALK-TO>>
<DO-WALK ,P?WEST>)
(<AND <SCENE? ,S-VOYAGE>
<VERB? POINT>
,GALLEY-IN-BAY?>
<COND (<FSET? ,SKIFF ,RMUNGBIT>
<SET TRIES <GETP ,SKIFF ,P?COUNT>>
<PUTP ,SKIFF ,P?COUNT <+ .TRIES 1>>
<COND (<ZERO? .TRIES>
<TELL
"Hiro-matsu is here, with Yabu beside him. They eventually realize
you are proposing to go ashore, and Hiro-matsu responds harshly. ">
<HIRO-MATSU-REFUSES>)
(<EQUAL? .TRIES 1>
<YABU-BOARDS-SKIFF>)>)
(ELSE
<TELL
G"It would be a good trick, and somewhat amusing, to get into a boat
while it's still on deck, but not a good idea." CR>)>)
(<VERB? WALK-TO>
<COND (<IN? ,WINNER ,SKIFF>
<DO-WALK ,P?EAST>)
(<IN? ,WINNER ,SMALL-BOAT>
<DO-WALK ,P?WEST>)
(<SCENE? ,S-ERASMUS ,S-VOYAGE>
<TELL "Easier said than done." CR>)>)
(<VERB? RUB CLIMB-ON>
<COND (<OR <SCENE? ,S-ERASMUS>
<AND <SCENE? ,S-VOYAGE>
<HERE? ,IN-THE-SEA ,GALLEY ,MAIN-DECK>>>
<TELL
"It's too far away." CR>)
(ELSE
<TELL
"It feels like you would expect land to feel." CR>)>)>>
<OBJECT LG-SEA
(LOC LOCAL-GLOBALS)
(DESC "sea")
(SYNONYM SEA OCEAN WATER WAVES WAVE FOAM SEAWATER
TIDE COMBER COMBERS CURRENT CURRENTS)
(ADJECTIVE RAGING FROTHY FOAMY)
(FLAGS NDESCBIT VEHBIT)
(GENERIC GENERIC-SEA-F)
(ACTION LG-SEA-F)>
<ROUTINE LG-SEA-F ("OPT" (RARG <>))
<COND (<RARG? <>>
<COND (<VERB? EXAMINE LOOK-INSIDE>
<COND (<SCENE? ,S-ERASMUS>
<TELL
"The sea is a maze of mountainous waves and razor-spined reef-tops." CR>)
(<SCENE? ,S-VOYAGE>
<TELL
"The gale-driven surf is thrown high in the air, hurled by the wind
against the rocky shore.">
<COND (<AND <NOT <HERE? ,GALLEY ,MAIN-DECK
,IN-THE-SEA>>
<NOT <IN? ,YABU ,HERE>>>
<TELL
" You can see that the tide is coming in.">)>
<CRLF>)
(ELSE
<TELL "It's full of water." CR>)>)
(<VERB? POINT>
<COND (<IN? ,YABU ,HERE>
<TELL
"Yabu looks at the sea, and you can tell he hates and perhaps fears
it." CR>)>)
(<OR <VERB? BOARD THROUGH SWIM LEAP DIVE>
<P? THROW ME>>
<COND (<HERE? ,ON-DECK ,BRIDGE-OF-ERASMUS>
<COND (<SCENE? S-ANJIRO S-RODRIGUES>
<TELL
"Wouldn't it be safer to just climb back into the boat?" CR>)
(ELSE
<PERFORM ,V?LEAP ,LG-ERASMUS>
<RTRUE>)>)
(<HERE? ANJIRO-WATERFRONT>
<DO-WALK ,P?EAST>
<RTRUE>)
(<HERE? GALLEY MAIN-DECK>
<GOTO ,IN-THE-SEA>)
(<HERE? MAIN-DECK-2>
<COND (<JIGS-UP? ,J-PILING>
<JIGS-UP
"You hit your head on a piling as you attempt this feat.">)
(ELSE <RTRUE>)>)
(<HERE? IN-THE-SEA>
<COND (<IN? ,WINNER ,SKIFF>
<TELL
"As you try to leap into the sea, the samurai grab you. They hold you
tightly as Yabu scowls." CR>)
(ELSE
<TELL G"You already are." CR>)>)
(<IN? ,WINNER ,SMALL-BOAT>
<TELL
"Why do that when you're in a nice boat?" CR>)
(ELSE
<TELL "You wouldn't like it. It's wet." CR>)>)
(<P? (PUT THROW) * LG-SEA>
<COND (<HELD? ,PRSO>
<REMOVE ,PRSO>
<TELL
CTHE ,PRSO " drop">
<COND (<NOT <PLURAL? ,PRSO>> <TELL "s">)>
<TELL " into the water and ">
<COND (<PRSO? ,OARS ,BOAT-OAR ,LIFE-RING>
<TELL "float">)
(ELSE <TELL "sink">)>
<COND (<NOT <PLURAL? ,PRSO>> <TELL "s">)>
<TELL " out of sight." CR>)>)
(<VERB? DRINK>
<TELL
"Seawater will drive you mad, as every sailor knows." CR>)>)>>
<CONSTANT NUMBERS
<LTABLE "one" "two" "three" "four" "five" "six"
"seven" "eight" "nine" "ten" "eleven" "twelve"
"thirteen" "fourteen" "fifteen" "sixteen"
"seventeen" "eighteen" "nineteen" "twenty">>
<END-SEGMENT ;"0">

View File

@ -228,6 +228,7 @@ the answers."
"Get in it."
"Keep trying! Insist! You'll get your way eventually.">
<PLTABLE "I can't find Rodrigues' body!"
"If you didn't see him clinging to the oar, you can't find him."
"Be persistent. Keep searching."
"Keep heading south from the beach."
"You can go all the way around the headland, but then you can't
@ -422,7 +423,7 @@ the party."
"Give Toranaga your swords!">
"Journey to Yedo"
<PLTABLE "What an embarassing situation!"
<PLTABLE "What an embarrassing situation!"
"When in Rome..."
"There is little taboo against nakedness here."
"...and everyone around is a friend."
@ -453,7 +454,7 @@ the party."
"But don't take too long! Remember, Yoshi is still out there.">
"Ochiba"
<PLTABLE "How do I avoid embarassment?"
<PLTABLE "How do I avoid embarrassment?"
"What were you worrying about mere seconds ago?"
"Check your swords!">
<PLTABLE "How do I avoid offending?"
@ -470,7 +471,7 @@ the party."
"Correct his mistake."
"You are no longer a barbarian, you are a samurai!"
"Tell him so!"
"It will expose his rudeness, and put him in an embarassing position.">
"It will expose his rudeness, and put him in an embarrassing position.">
"Departure"
<PLTABLE "What can I do to help Mariko?"

111
ideas.txt Normal file
View File

@ -0,0 +1,111 @@
The general form of the game is that you play several different
characters. Different puzzles are presented and solved as
different characters. When the game begins, you are
Blackthorne, but later you can (must?) be Mariko, Toranaga,
etc. in various situations.
Some puzzles are pretty clearly defined. These are marked
with a *. For others, it's not obvious what the puzzle is.
These are marked with a ?.
Puzzles:
* As Blackthorne, you must navigate the Erasmus through the
storm and reef into Anjiro harbor. This is primarily just a
puzzle where you must steer the Erasmus in the right
direction. Minor additional parts include being lashed to
the rudder, commanding the sails to be reefed, etc.
? As Blackthorne, you must learn Japanese. How this is done
is an open question.
* As Blackthorne, you must rescue Rodrigues when he is washed
overboard. This may include convincing Hiro-matsu to let
you go ashore, finding Rodrigues (?), causing Yabu to climb
down the cliff (since the guards won't let you do it),
attracting his attention to the ledge, etc.
* As Blackthorne, you must help Toranaga escape from Osaka.
This would be in several parts. First, you must notice that
Toranaga and Kiritsubo switch places. Second, you must
distract Ishido and the guards.
* As Toranaga, you must get to the galley through the maze of
Osaka's streets. I see this as a maze-type puzzle where
there are bands of Ishido's Grays and an ambush at some
point by "bandits." At some point in the maze is the place
where you find your extra men (the sign of a fish). At some
time after the ambush, Ishido will know you've escaped, and
more Grays will arrive.
? As Toranaga, you must negotiate with Ferriera and the
Jesuits to get out of the harbor. How this is done I
haven't a clue.
* As Blackthorne, you must maneuver the galley out of the
harbor by staying close to the frigate, but not too close.
* As Blackthorne, you must teach Toranaga to dive. This might
be too hard; instead there could be a swimming race puzzle,
where you must try to beat Toranaga.
* As Blackthorne, you must threaten (and mean!) to commit
seppuku, but the timing must be perfect, otherwise you will
succeed. You must bring things to a head just as Omi is
ready to stop you.
? As Mariko, you must teach Blackthorne Japanese. How?
? As Mariko, you must try to commit suicide. How to make this
more than just a timing puzzle? It is important to not do
it before Ishido gives in. Maybe you should play someone
other than Mariko in this puzzle? Ishido?
* As Blackthorne, you must fight the ninja during the attack,
help Mariko escape into the secret room, not open the door
when the ninja say they only want you, break the bolts on
the other door, not stop Mariko, etc.
? As Toranaga, you must detect Yabu's treachery?
Overall Puzzles:
As Toranaga, you are constantly trying to influence people
to come over to your side. How to do this? Possibilities
include a diplomacy-type structure, a swapping structure
("Offer Izu to Yabu," "Tell Zataki about Ochiba," etc.). You
must also delay things as much as possible after your escape
from Osaka. Perhaps various people come to you with
information, as Gyoko does in the book. To get the
information, you have to consent to speak with them. Some
of it is true, some is not, and you must act on the true
information. This might also be how Omi reports the news
about Yabu's betrayal during the attack. There are various
"players" you can negotiate with. These include the other
regents, the Jesuits, Ferriera, some of your own people
(such as Yabu), Blackthorne, Mariko, etc. They will ask for
things, and you have to decide what to give them. You also
have limited resources to give away, and if you promise them
twice, you might get in trouble (like Ishido giving the
Kwanto to both Zataki and Kiyama).
Learning Japanese. This is a puzzle for both Blackthorne
and Mariko. Perhaps there is a vocabulary you must learn,
and as Blackthorne, you can only communicate through an
interpreter or in Japanese. As the game progresses, you
have less access to an interpreter. One implementation
problem is that some Japanese words are longer than 9
characters, for example "wakarimas-u" vs. "wakarimas-en".
Scoring. Your score as each character must depend on how
you are doing at achieving your goals. As Toranaga, it's
your influence. As Blackthorne, it could be your
proficiency in Japanese, and your adoption of Japanese
customs. Suppose that at various points, Blackthorne is
given options. One is a "barbarian" option, and one is a
"japanese" option. Examples would include eating meat vs.
not eating meat, or wearing European clothes vs. wearing a
kimono. These might be scored subtly (not appear on the
status line, for example?)

252
illustrations.txt Normal file
View File

@ -0,0 +1,252 @@
SHOGUN ILLUSTRATIONS
Anything labelled (European) CAN (but doesn't have to be) in European
style. The rest SHOULD but don't absolutely have to be in Japanese
style. Use your artistic judgment. Where I could, I've marked these
with the chapter in the book where they occur.
Please don't be too constrained by these suggestions!
1. --ALREADY DONE--
* Erasmus during storm (European) (Prologue)
* View of garden from Mura's house (Chapter 1)
This is a small garden surrounded by a high wall. It is unlike anything
you have ever seen: a little waterfall and stream and a small bridge
and manicured pebbled paths and rocks and flowers and shrubs. It's so
clean, so neat.
* Yabu climbing down cliff to rescue Rodrigues (Chapter 9)
Yabu kicks off his thong slippers. He takes the swords out of his belt
and puts them safely under cover. He barks some orders at one of the
samurai, then takes off his soaking kimono, and clad only in his
loincloth, goes to the cliff edge, testing it through the soles of his
cotton tabi -- his sock-shoes.
Suddenly, Yabu slips! He grips an outcrop with his left hand, stopping
his fall. He grinds his toes in a crevice, fighting for another hold,
but his left hand rips away. His toes find a cleft and he hugs the
cliff desperately. Then the toehold gives way! He falls the last
twenty feet.
* Procession (Escape from Osaka) (Chapter 21)
This is the courtyard of Toranaga's keep within Osaka castle. In the
forecourt, outside the gate, an escort of sixty heavily armed samurai
is drawn up in neat lines, every third man carrying a flare.
Just after dusk Kiri waddled nervously down the steps. She headed for
her curtained litter that stood beside the garden hut. You are leaning
against the wall near the fortified gate. You are wearing a belted
kimono of the Browns and tabi socks and military thongs.
* Japanese warrior (Buntaro? Omi? Yabu?) (see below...)
* Mariko's seppuku (Chapter 56)
Mariko stops by the lily pond and undoes her obi and lets it fall.
Chimmoko helps her out of her blue kimono. Beneath it Mariko wears the
most brilliant white kimono and obi you have ever seen. It is a formal
death kimono. She unties the green ribbon from her hair and casts it
aside.
Clad completely in white, Mariko walks from the garden into the
forecourt, never looking at you.
At a sign from Sumiyori everyone bows. Mariko bows to them. Four
samurai come forward and spread a crimson coverlet over the tatamis.
Mariko goes to the crimson square and kneels in the center, in front
of the tiny white cushion. Her right hand brings out her stiletto
dagger from her white obi and she places it on the cushion in front of
her. Mariko arranges the skirts of her kimono perfectly, Chimmoko
helping her, tying a small white blanket around her waist with the
cord. You know that this is to prevent her skirts being blooded and
disarranged by her death throes.
2. --SUGGESTIONS--
* Blackthorne (1/2 or less of screen)
* Rodrigues (1/2 or less of screen)
Rodrigues is a man as tall as you and about your own age, but
black-haired and dark-eyed and carelessly dressed in seaman's clothes,
rapier by his side, pistols in his belt. A jeweled crucifix hangs from
his neck. He wears a jaunty cap.
* Father Sebastio (1/2 or less of screen)
Sebastio is a short, thick man with dark hair and a long beard. His
robe is travel-stained and his boots are besmirched with mud. He is
obviously a Portuguese or Spanish priest, and though his flowing robe
is orange, there is no mistaking the crucifix and rosary at his belt,
or the cold hostility on his face.
* Father Alvito (1/2 or less of screen)
Alvito is a graceful, handsome man, perhaps a few years older than
you. He wears tabi socks and a flowing kimono that seems, on him, to
belong. A rosary and a carved golden cross hang at his belt. He has an
easy elegance, and the aura of strength and natural power of the
Jesuits.
* Toranaga (1/2 or less of screen)
Toranaga is a short man with a thick belly and a large nose. His
eyebrows are thick and dark and his mustache and beard gray-flecked
and sparse. Eyes dominate his face. He is fifty-eight and strong for
his age.
* Yabu (1/2 or less of screen)
Kasigi Yabu is short, squat, and dominating. There's arrogance and
cruelty in the daimyo's face, you think. He kneels comfortably, his
heels tucked neatly under him, flanked by four lieutenants, one of
whom is Kasigi Omi, his nephew and vassal. They all wear silk kimonos
and, over them, ornate surcoats with wide belts.
* Omi (1/2 or less of screen)
Omi is a head shorter and much younger than you, his handsome face
slightly pockmarked though. He wears breeches and clogs and a light
kimono with two scabbarded swords stuck into the belt. One is
daggerlike, the other, a two-handed killing sword, is long and
slightly curved."
* Other characters... (Mariko? Buntaro? etc. etc.)
* Below decks scene on Erasmus (European) (Prologue)
The crew's quarters of the Erasmus. A companionway leads up to the
deck. It's dim, warm and close here, and the stench is abominable.
Most of the survivors of the crew are here in bunks and hammocks, some
sleeping, some awake.
* Anjiro landscape including Erasmus at anchor (Chapter 1)
The village is set around a crescent harbor that faces east, perhaps
two hundred houses unlike any you've ever seen nestling at the
beginning of the mountain which spills down to the shore. Above are
terraced fields to the west and dirt roads that lead north and south.
Below to the east is the waterfront. In the harbor you can see the
Erasmus riding at anchor.
This is the waterfront of the village. The ground is cobbled and a
stone launching ramp goes from the shore into the sea. There are men
and women cleaning fish. Small islands are visible to the east and
south. At anchor, to the east, is the Erasmus.
* Looking out of Pit at Omi (Chapter 2-6)
You are crammed into a deep cellar, one of the many that the fishermen
use to store sun-dried fish. The cellar is five paces long and five
wide and four deep, with an earthen floor and walls. The ceiling is
made of planks with a foot of earth above and a single trapdoor
set into it.
The trapdoor opens. Omi looks down at you. Beside him are Mura and the
priest. Everyone but you begins yelling. "Water! And food, by God!
Let us out of here!" Omi motions to Mura, who nods and leaves.
Mura returns with another fisherman, carrying a large barrel. They
empty the contents, rotting fish offal and seawater, onto your heads.
* Confusion on deck during galley voyage to Osaka (Chapter 8)
"Watch out for'ard!" Rodrigues shouts. The galley rolls sickeningly,
twenty oars pulling at air instead of sea and there is chaos aboard.
The first comber has struck and the port gunwale is awash. The galley
is floundering.
Abruptly the galley swerves and you are carried to the down side, your
legs taken away by some of the rowers who have also slipped their
safety lines to try to fight some order into their oars.
The gunwale is under water and one man goes overboard! You feel the rush
of water carrying you over the gunwale as well!
* Rodrigues overboard (Chapter 8)
You see the wave take Rodrigues, and you watch him, gasping and
struggling in the churning sea. You remember that he can't swim.
The rain slashes down and you see that Rodrigues is being carried
further from the galley.
The last you see of Rodrigues is an arm gripping a broken oar.
* Osaka Castle (Chapter 10)
You smile back, take your leave of Rodrigues, and then you are on
deck, your mind whirling from the impact of Osaka, its immensity, the
teeming anthills of people, and the enormous castle that dominates the
city. From within the castle's vastness comes the soaring beauty of
the donjon, seven or eight stories high, pointed gables with curved
roofs at each level, the tiles all gilded and the walls blue.
* Toranaga's falcon (Chapter 11)
Toranaga is repairing a broken wing feather of a hooded falcon as
delicately as any ivory carver.
The falcon is a peregrine and she is in her prime. The handler, a
gnarled old samurai, kneels in front of Toranaga and holds her as if
she were spun glass. Toranaga cuts the broken quill, dips the tiny
bamboo imping needle into the glue and inserts it into the haft of the
feather, then delicately slips the new cut feather over the other end.
He adjusts the angle until it is perfect and binds it with a silken
thread. The tiny bells on the falcon's feet jingle, and he gentles the
fear out of her.
* Bath scene with Mariko and Blackthorne
* Blackthorne giving his sword to Toranaga (Chapter 38)
(This is just after you and Toranaga and Mariko have survived an
earthquake; the remains of a crevice are nearby, and you are on
a hillside plateau.)
In your hands is Fujiko's sword. It is still scabbarded, though
muddied and scarred. Your short stabbing sword has disappeared. You
kneel in front of Toranaga and offer your sword as a sword should be
offered.
* Blackthorne's mad scene at the last gate in Osaka (Chapter 22)
* Toranaga in drag (Chapter 23)
Buntaro was covering Toranaga's litter with his body as best he could,
an arrow stuck into the back of his leather chainmail bamboo armor,
and then, when the volley ceased, he rushed forward and ripps the
curtains apart. The two arrows were imbedded in Toranaga's chest and
side but he was unharmed and he jerked the barbs out of the armor he
wore beneath the kimono. Then he tore off the wide-brimmed hat and
the wig. Toranaga fought out of the curtains and, pulling his sword
from under the coverlet, leapt to his feet. He still wore the
travelling cloak and Kiri's kimono, but the skirts were hitched up out
of the way, his military leggings incongruous.
* Ninja (Chapter 57)
They wore tight-fitting clothes of black and black tabi and black
masks. Their hands and faces were also blackened. These men were armed
with chain knives, sword, and shuriken. In the center of their black
hoods was a red spot. On their backs were slung haversacks and short
thin poles.
* Explosion of bomb (Chapter 57)
* Burned, wrecked Erasmus (Chapter 60)
* Toranaga's Crest (should fit in top half of screen) (Chapter 7)
"three interlocked bamboo sprays."
(This is pretty vague; doesn't say shape or color or anything.
However, I believe that Clavell told me the crest is identical to
Togugawa Ieyasu's -- he is the model for Toranaga)

54
intro.txt Normal file
View File

@ -0,0 +1,54 @@
In Shogun, you play the role of resourceful English seaman
John Blackthorne, Pilot-Major of the Dutch trader-warship
Erasmus, which is on a secret mission of trade and plunder
to the Spanish-dominated Pacific Ocean.
The year is 1600, and the powerful Catholic empire of Spain
and Portugal is locked in a death struggle with the upstart
Protestant nations of England and Holland. The Catholic
nations have spread their political and religious influence
across the world, reaching as far as China and the almost
mythical land of Japan, extracting great wealth in spices
and precious metals. Their extensive knowledge of the Asian
seaways is highly secret information coveted by English and
Dutch traders. But while the European powers battle each
other, a longer and even more vicious struggle is raging among
the feudal lords of Japan.
After hundreds of years of anarchy, Japan was unified by the
great warrior Nakamura, who became Taiko, or military ruler.
But the Taiko has died, leaving as heir a seven-year-old
boy, and a five-man Council of Regents to rule in his name.
The dominant figures on the Council are Lord Toranaga and
Lord Ishido. Each is a daimyo: powerful warrior-rulers who
follow the ancient samurai traditions. Each harbors the
ambition to be Shogun: supreme ruler under the divine but
nearly powerless Emperor.
Toranaga and Ishido are each backed by lesser daimyos and
hordes of samurai. They jockey for position, nearly
evenly matched, looking for any way of bolstering their
chances. Perhaps the Jesuits will swing their support behind
one candidate, or hostages will neutralize a powerful
supporter. The balance is delicate, and the appearance of the
Erasmus creates excitement and new possibilities.
It is into the center of this momentous conflict that you,
John Blackthorne, have been thrown, and soon you discover
that the perils of the sea are almost trifling compared to
the danger and intrigue among the samurai lords of Japan.
Life in Japan can be a hazardous affair. If you choose the
wrong friends or confidants, you may find your head detached
from your body. But strict adherence to the rules of
etiquette, some judicious questions, and careful listening
will enhance your pleasure, prestige, and prospects for
survival.
Shogun is one of a new family of Infocom stories which
utilize vivid graphics to enhance the story. So now, along
with the quality interactive fiction that you've come to
expect from Infocom, you can also expect beautiful artwork
as well. You'll find that the art in Shogun is tied very
closely to the story and gives you a "fine-focus" on the
mood or locale as you play the role of John Blackthorne.

75
japanese.txt Normal file
View File

@ -0,0 +1,75 @@
-sama Sir
-san Mister
Anata wa yoku nemutta ka? Did you sleep well?
Anata wa? And you?
Arigato Thank you
Arigato goziemashita Thank you (from an inferior)
Bushido Way of the Warrior
Daimyo Lord
Do itashimashite It's nothing
Doko no kuni no monoda? What's your nationality?
Domo Thank you
Dozo Please
Ga matsu Wait
Genki desu Quite well
Gomen nasai So sorry
Gyoi
Haha-san Mother
Hai Yes
Hai? What?
Hitachi We
Hombun Duty
Honto Truth
Hotte oke!
Ii Good
Ikaga desu ka How are you?
Ikamasho
Ikimasho ka? ?Leave?
Ima Now
Ima hara hette wa oranu I'm not hungry now
Ishimasho!
Isogi Quickly
Isogi! Hurry up!
Iye No
Kami Spirit
Kare ni matsu yoni
Keirei Salute
Kinjiru Forbidden
Konbanwa Good evening
Konnichi wa Good day
Kotaba shirimasen I don't know the words
Kowa jozuni shabereru yoni natta na You're learning to speak Japanese very well
Mate Wait
Matsu Patience
Miru Watch
Mizu Water
Nan yo yoda?
Nanda?
Nane mo It's nothing
Nanigoto da? ?
Nihon go ga hanase-masen I don't speak Japanese
Oba-san MotherOhayo ?Hello
Ohayo Good day
Okagasama de genki desu Very well, thank you
Okiro Get up
Onna Woman
Onushi ittai doko kara kitanoda? Where are you from?
Shigata ga nai There's nothing that can be done
Shinpai suruna Don't worry
Shunjin Prisoner
So desu Well; Really
Sonata wa oyogitamo ka? ?Do you want to swim?
Suwaru Sit down
Tai-fun Typhoon
Taihenyoi Very good
Tsuma Wife
Tsuyuku ga imasu ka? Do you have an interpreter?
Ugoku na ?Stop
Wakarimasen I don't understand
Wakarimasu I understand
Wakarimasu ka? Do you understand?
Watakushi I
Watashi wa yoku nemutta I slept very well
Yoi Good
Yokoso oide kudasareta Welcome to my house
Yukimasu Go

139
mariko.zabstr Normal file
View File

@ -0,0 +1,139 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT OCHIBA>
<ROOM OCHIBA-ROOM (LOC ROOMS) (SCENE S-OCHIBA) (SCORE 3) (DESC "Reception Room"
) (SYNONYM ROOM) (ADJECTIVE RECEPTION) (FDESC
"Your feet take you under the final portcullis and your escorts lead
you up to the huge door. Here they leave you alone. Desperate for
any distraction from the ordeal to come, you admire the camellia blossom
Mariko took from a vase in your quarters and gave to you. The flower is
reassuring. Not everyone here in Osaka is an enemy.|
|
You stand rigid for a moment, petrified with
nervousness. What if you disgrace yourself? What if you slip or your
swords fall or your limited Japanese fails you. You take a deep breath
and walk forward into the flare-lit maw.") (LDESC
"It is an immense, high-raftered room with a golden ornamented
ceiling. Gold-paneled columns support the rafters, which are made of rare and
polished woods. Five hundred samurai and their ladies are here, wearing
all the colors of the rainbow. To one side is a line of guests who wait
to bow before the raised platform at the far end.") (FLAGS ONBIT) (ACTION
OCHIBA-ROOM-F)>
<DEFINE-ROUTINE OCHIBA-ROOM-F>
<DEFINE-ROUTINE NOT-A-BARBARIAN?>
<OBJECT CAMELLIA (DESC "camellia blossom") (SYNONYM BLOSSOM FLOWER CAMELLIA) (
ADJECTIVE CAMELLIA PINK) (FLAGS TAKEBIT SCOREBIT) (ACTION CAMELLIA-F)>
<DEFINE-ROUTINE CAMELLIA-F>
<GLOBAL OCHIBA-QUESTION <>>
<DEFINE-ROUTINE I-OCHIBA>
<GLOBAL OCHIBA-CNT 0 %<> WORD>
<OBJECT OCHIBA (LOC OCHIBA-ROOM) (DESC "Lady Ochiba") (SYNONYM OCHIBA LADY) (
ADJECTIVE LADY) (FLAGS PERSON JAPANESEBIT NOABIT FEMALE) (DESCFCN OCHIBA-DESC)
(ACTION OCHIBA-F)>
<DEFINE-ROUTINE OCHIBA-DESC>
<DEFINE-ROUTINE OCHIBA-F>
<END-SEGMENT>
<BEGIN-SEGMENT DEPARTURE>
<DEFINE-ROUTINE DEPARTURE-AFTER-F>
<DEFINE-ROUTINE I-DEPARTURE>
<GLOBAL DEPARTURE-CNT 0 %<> WORD>
<GLOBAL YAMAZAKI-ATTACK <>>
<GLOBAL YAMAZAKI-ATTACKS <LTABLE 0
"The Captain leaps forward, his sword a whirling arc directed at your
head!" "The Captain swings his sword, chopping viciously at your knees."
"The Captain charges at you, his sword pointed straight at your belly."
"The Captain screams \"Yaemon!\" and begins an overhand blow toward
your head.">>
<OBJECT YAMAZAKI (SCENE S-DEPARTURE) (DESC "Yamazaki") (SYNONYM GRAY CAPTAIN
LEADER YAMAZAKI DANZENJI) (ADJECTIVE GRAY) (FLAGS PERSON NOABIT NOTHEBIT
SCOREBIT) (HEALTH 4) (GENERIC GENERIC-CAPTAIN-F) (ACTION YAMAZAKI-F)>
<DEFINE-ROUTINE YAMAZAKI-F>
<CONSTANT SWORD-ATTACKS <LTABLE 0
"You swing, wishing for luck, for good karma, for a pistol, by
God! He parries, but the force of your blow is strong, and the tip
manages to carve into his wrist."
"You hold the blade before you, stabbing almost wildly with it, wondering
why his attack is so formal. You see an opening and plunge madly
forward, wounding him in the chest."
"You interpose your blade, and there is a ringing, almost bell-like
crash as they meet. You slide your blade around and manage to wound
him. He seems almost surprised."
"Leaping and yelling, you charge him, and in an astonishing flurry he
fights back, executing a daring turn and riposte, but he's off balance
and you slice the back of his calf.">>
<OBJECT KOJIMA (SCENE S-DEPARTURE) (DESC "Kojima") (SYNONYM CAPTAIN LEADER
KOJIMA) (ADJECTIVE GRAY) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT) (HEALTH 4)
(GENERIC GENERIC-CAPTAIN-F) (ACTION KOJIMA-F)>
<DEFINE-ROUTINE KOJIMA-F>
<GLOBAL DELAYING-FIGHT? 0>
<DEFINE-ROUTINE CAPTAIN-KILLS-YOU>
<DEFINE-ROUTINE I-FIGHT>
<END-SEGMENT>
<BEGIN-SEGMENT SEPPUKU>
<BEGIN-SEGMENT ESCAPE>
<ROOM FORMAL-GARDEN (LOC ROOMS) (SCENE S-SEPPUKU S-ESCAPE) (DESC
"Formal Garden") (SYNONYM GARDEN) (ADJECTIVE FORMAL) (SCORE 1) (FDESC
"In a sudden hush, Mariko's maid Chimmoko comes out of the small gates
to the garden and walks over to you and bows. \"Anjin-san, please excuse
me, my Mistress wishes to see you. I will escort you.\"|
|
You get up, still deep in your reverie and your overpowering sense of
doom. The shadows are long now.|
|
Chimmoko goes over to Sumiyori. \"Please excuse me, Captain, but my Lady
asks you to please prepare everything.\"|
|
\"Where does she want it done?\"|
|
The maid points to the space in front of the arch. \"There, Sire.\"|
|
Sumiyori is startled. \"It's to be in public? She's doing it for all
to see? But, well ... what about her second?\"|
|
\"She believes Lord Kiyama will honor her.\"|
|
\"And if he doesn't?\"|
|
\"I don't know, Captain. She hasn't told me.\" Chimmoko bows and then
goes back to the gates and beckons you. The Grays begin to follow but
Chimmoko shakes her head and says her mistress had not bidden
them. They allow you to leave and you follow the servant into the garden.") (
LDESC "It is like a different world within the garden gates, verdant and serene,
the sun on the treetops, birds chattering and insects foraging, the brook
falling sweetly into the lily pond. A tiny thatch-roofed tea house is
beside the garden gate. The courtyard of the keep, a world away, is to the
east.") (EAST TO COURTYARD IF GARDEN-GATE IS OPEN) (OUT TO COURTYARD IF
GARDEN-GATE IS OPEN) (NORTH TO TEA-HOUSE) (IN TO TEA-HOUSE) (FLAGS ONBIT
OUTSIDE) (GLOBAL GARDEN-GATE TEA-HOUSE) (ACTION FORMAL-GARDEN-F)>
<DEFINE-ROUTINE FORMAL-GARDEN-F>
<OBJECT GARDEN-GATE (LOC LOCAL-GLOBALS) (DESC "garden gate") (SYNONYM GATE) (
ADJECTIVE GARDEN) (FLAGS DOORBIT)>
<OBJECT LILY-POND (LOC FORMAL-GARDEN) (DESC "lily pond") (SYNONYM POND WATER) (
ADJECTIVE LILY) (FLAGS NDESCBIT VEHBIT) (ACTION LILY-POND-F)>
<DEFINE-ROUTINE LILY-POND-F>
<END-SEGMENT>
<BEGIN-SEGMENT SEPPUKU>
<DEFINE-ROUTINE SEPPUKU-EXAMINE-MARIKO>
<DEFINE-ROUTINE SEPPUKU-TAKE-MARIKO>
<BEGIN-SEGMENT ESCAPE>
<ROOM TEA-HOUSE (LOC ROOMS) (SCENE S-SEPPUKU S-ESCAPE S-DEPARTURE S-MARIKO) (
DESC "Tea House") (LDESC
"The tea house is small, simple, and immaculate. The doorway is small
so that all will be humble, equal, the host and guest, the most high
Lord and the merest samurai.") (SYNONYM HOUSE HUT) (ADJECTIVE LITTLE TEA
CHA-NO-YU) (OUT TO FORMAL-GARDEN) (SOUTH TO FORMAL-GARDEN) (FLAGS ONBIT OUTSIDE
) (ACTION TEA-HOUSE-F)>
<DEFINE-ROUTINE TEA-HOUSE-F>
<END-SEGMENT>
<BEGIN-SEGMENT SEPPUKU>
<OBJECT GREEN-RIBBON (OWNER MARIKO) (DESC "green silk ribbon") (SYNONYM RIBBON)
(ADJECTIVE GREEN SILK) (FLAGS TAKEBIT) (ACTION GREEN-RIBBON-F)>
<DEFINE-ROUTINE GREEN-RIBBON-F>
<OBJECT SUMIYORI (SCENE S-SEPPUKU) (DESC "Sumiyori") (SYNONYM BROWN CAPTAIN
LEADER SUMIYORI) (ADJECTIVE CAPTAIN BROWN) (FLAGS PERSON NOABIT NOTHEBIT) (
ACTION SUMIYORI-F)>
<DEFINE-ROUTINE SUMIYORI-F>
<DEFINE-ROUTINE I-SEPPUKU>
<GLOBAL SEPPUKU-CNT 0 %<> WORD>
<GLOBAL MARIKO-WON-FLAG <>>
<END-SEGMENT>

772
mariko.zap Normal file
View File

@ -0,0 +1,772 @@
.SEGMENT "OCHIBA"
.FUNCT OCHIBA-ROOM-F:ANY:1:1,RARG
EQUAL? RARG,M-SCENE-SETUP \?CCL3
ICALL1 DRESS-BLACKTHORNE
MOVE CAMELLIA,BLACKTHORNE
MOVE SWORDS,BLACKTHORNE
FSET SWORDS,WEARBIT
FSET SWORDS,RMUNGBIT
MOVE ISHIDO,OCHIBA-ROOM
MOVE OCHIBA,OCHIBA-ROOM
CALL QUEUE,I-OCHIBA,-1
RSTACK
?CCL3: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?BOW,V?HELLO,V?KONNICHI-WA /?PRD12
EQUAL? PRSA,V?KONBANWA \?PRD10
?PRD12: EQUAL? PRSO,FALSE-VALUE,OCHIBA,ISHIDO /?CTR7
?PRD10: EQUAL? PRSA,V?KNEEL \?CCL8
?CTR7: FSET? BLACKTHORNE,TRYTAKEBIT \?CCL17
EQUAL? PRSA,V?HELLO,V?KONNICHI-WA,V?KONBANWA \?CCL20
EQUAL? PRSO,OCHIBA,FALSE-VALUE \?CCL20
SET 'WINNER,OCHIBA
ICALL2 PERFORM,V?HELLO
SET 'WINNER,PLAYER
RTRUE
?CCL20: PRINTR "You have already bowed to the hosts."
?CCL17: FSET? OCHIBA,RMUNGBIT \?CCL24
FSET BLACKTHORNE,TRYTAKEBIT
ICALL1 B-STAND
PRINTI "In front of the platform, you kneel and bow formally as you have seen the others do, once to Ochiba and once to Ishido. You then stand and walk forward."
FSET? SWORDS,WEARBIT \?CND25
FSET? SWORDS,RMUNGBIT \?CND25
FCLEAR SWORDS,RMUNGBIT
FCLEAR SWORDS,WEARBIT
MOVE SWORDS,HERE
PRINTR " Suddenly, just as you had feared, your sword belt comes loose and your swords clatter to the floor. You turn red, scrambling for them on the ground, and Ishido begins a swelling round of humiliating laughter."
?CND25: CRLF
RTRUE
?CCL24: PRINTR "You must be very nervous: you aren't at the front of the line yet!"
?CCL8: EQUAL? PRSA,V?CURSE \?CCL30
EQUAL? PRSO,ISHIDO,OCHIBA \?CCL30
PRINTI "You insult "
ICALL1 DPRINT-PRSO
PRINTR ", forfeiting any gain you might have gotten from the exchange."
?CCL30: CALL1 ACT-CRAZY?
ZERO? STACK /?CCL34
EQUAL? QCONTEXT,ISHIDO \?CCL37
PRINTR "Ishido stares at you. ""This is what I meant!"""
?CCL37: PRINTR "Ochiba looks disgusted."
?CCL34: CALL1 HOSTILE-VERB?
ZERO? STACK \?CCL39
EQUAL? PRSA,V?DRAW,V?PICK,V?USE /?PRD43
EQUAL? PRSA,V?TAKE \FALSE
?PRD43: EQUAL? PRSO,SWORDS \FALSE
?CCL39: PRINTR "Such a foolish action would surely lead to your immediate death."
.FUNCT NOT-A-BARBARIAN?:ANY:0:0
EQUAL? PRSA,V?BE \FALSE
EQUAL? PRSO,BLACKTHORNE,ME \FALSE
CALL1 P-NEGATIVE?
ZERO? STACK /?CCL8
EQUAL? PRSI,GLOBAL-BARBARIAN,CRAZY /TRUE
RFALSE
?CCL8: EQUAL? PRSI,GLOBAL-SAMURAI,GLOBAL-HATAMOTO /TRUE
EQUAL? PRSI,INTADJ \FALSE
GET PARSE-RESULT,11
EQUAL? STACK,W?SAMURAI /TRUE
RFALSE
.FUNCT CAMELLIA-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "This is a particularly beautiful pink camellia blossom that you cut from a tree in the garden. It is at the peak of its beauty."
?CCL3: EQUAL? PRSA,V?GIVE \FALSE
EQUAL? PRSO,CAMELLIA \FALSE
EQUAL? PRSI,OCHIBA \FALSE
FSET? BLACKTHORNE,TRYTAKEBIT /?CCL11
PRINTR "Ochiba recoils from the unaccustomed familiarity. You haven't even greeted her properly. ""His manners are barbaric,"" she says to Ishido, with sadness."
?CCL11: REMOVE CAMELLIA
ICALL2 SCORE-OBJECT,CAMELLIA
PRINTR """In my land we are ruled by a Queen. We have the custom to always give a Lady a birthday gift. Even a Queen. Please excuse if this is not good manners."" She looks at the flower. Five hundred people wait to see how she will respond to your gallantry and daring.
""I am not a Queen, Anjin-san, only the mother of the Heir and widow of the Lord Taiko. I cannot accept your gift as a Queen, but as a Lady on her birthday, perhaps I may ask everyone's permission to accept the gift?""
The room bursts into applause."
.FUNCT I-OCHIBA:ANY:0:0
INC 'DELAY-CNT
EQUAL? OCHIBA-CNT,2 \?CCL5
FSET? BLACKTHORNE,TRYTAKEBIT /?CND3
GRTR? DELAY-CNT,4 \?CCL10
CRLF
PRINTI "Ishido stands, bows to Lady Ochiba, and asks, ""With your permission, Lady, I will remove this insult to your person."""
CRLF
ICALL1 JIGS-UP
RETURN M-FATAL
?CCL10: CRLF
PRINTR "Every eye is on you as you stand before Ochiba. Every breath is held."
?CCL5: EQUAL? OCHIBA-CNT,4 \?CCL12
EQUAL? OCHIBA-QUESTION,1 \?CND3
GRTR? DELAY-CNT,2 \?CCL17
SET 'OCHIBA-QUESTION,FALSE-VALUE
CRLF
PRINTR """Ah, I suppose what we have heard is not true, then. He must not truly speak our language."" She turns to Ishido and smiles."
?CCL17: CRLF
PRINTR """Is it true that you speak our language, Anjin-san?"" she asks in a friendly way, using the Japanese that you can barely understand."
?CCL12: EQUAL? OCHIBA-CNT,7 \?CND3
EQUAL? OCHIBA-QUESTION,2 \?CND3
GRTR? DELAY-CNT,3 \?CCL23
SET 'OCHIBA-QUESTION,0
CRLF
PRINTR """Bah! It is clear he is a barbarian without honor!"" Ishido turns away with a snort of dirision."
?CCL23: CRLF
PRINTI "Ishido continues to taunt you. ""You are a barbarian. You "
ICALL2 PRINTUNDER,STR?590
PRINTR " are prone to fits of madness, as I've been told?"" The room is hushed, everyone waiting to see how you will respond."
?CND3: SET 'DELAY-CNT,0
INC 'OCHIBA-CNT
EQUAL? OCHIBA-CNT,1 \?CCL26
CRLF
PRINTR "The procession of guests creeps forward, each politely bowing to Ochiba and greeting her on her birthday."
?CCL26: EQUAL? OCHIBA-CNT,2 \?CCL28
FSET OCHIBA,RMUNGBIT
CRLF
PRINTR "Ochiba is looking at you, and then Ishido is looking at you, too. Soon all conversation dies and everyone is watching you. The men and women ahead of you in line melt away and suddenly no one is between you and the platform."
?CCL28: EQUAL? OCHIBA-CNT,3 /TRUE
EQUAL? OCHIBA-CNT,4 \?CCL31
SET 'OCHIBA-QUESTION,1
SET 'QCONTEXT,OCHIBA
CRLF
PRINTI """Please wait, Anjin-san,"" says Ochiba. You feel the extraordinary sensuality that surrounds her, without conscious effort on her part. """
FSET? HANASE-MASEN,RMUNGBIT \?CCL34
PRINTR "You speak our language, then?"""
?CCL34: PRINTR "It is said that you speak our language?"""
?CCL31: EQUAL? OCHIBA-CNT,5 /TRUE
EQUAL? OCHIBA-CNT,6 \?CCL37
SET 'QCONTEXT,ISHIDO
CRLF
PRINTR "Ishido rudely interrupts. ""When we last met, you were a madman. I hope you won't get mad tonight or any other night."""
?CCL37: EQUAL? OCHIBA-CNT,7 \?CCL39
SET 'QCONTEXT,ISHIDO
SET 'OCHIBA-QUESTION,2
CRLF
PRINTI """Such madness is usual among you barbarians, "
ICALL2 PRINTUNDER,STR?587
PRINTR """ He emphasizes the word 'barbarians.' Such public rudeness to a guest is very bad. Lady Ochiba seems surprised."
?CCL39: EQUAL? OCHIBA-CNT,8 \?CCL41
MOVE MARIKO,HERE
CRLF
PRINTI """Mariko-san, your pupil does you credit, "
ICALL2 PRINTUNDER,STR?587
PRINTR """ calls out Ochiba. Mariko is coming through the guests. ""I have done little, Ochiba-sama. It's all the Anjin-san's work and the word book that the Christian fathers gave him."""
?CCL41: EQUAL? OCHIBA-CNT,9 \?CCL43
CRLF
PRINTI "Ochiba turns to Mariko. ""Now, Mariko-san, we must talk about the poetry competition! It will be held in two days, when Lord Toranaga leaves his own borders to journey here. What's the theme to be? And the first line of the poem?"" Mariko is renowned as a poetess.
Mariko thinks a moment. ""It should be about "
ICALL2 PRINTUNDER,STR?591
PRINTR ", Lady Ochiba, and the first line: 'On a leafless branch.'""
Ishido compliments her on her choice. ""Excellent, but we'll have to be very good to compete with you, Mariko-san!"""
?CCL43: EQUAL? OCHIBA-CNT,10 \?CCL45
CRLF
PRINTR "Mariko continues, ""So sorry, Sire, but I will not be there. I'm leaving Osaka tomorrow with the Lady Kiritsubo and the Lady Sazuko, to meet Lord Toranaga.""
""Nonsense!"" replies Ishido. ""He will be here so soon that to go to meet him isn't necessary.""
""So sorry, Sire, but those are the orders of my liege Lord. I must leave tomorrow. Am I confined here? And if so, on whose orders?""
Ishido keeps his eyes riveted on her. ""No, you are not confined."""
?CCL45: EQUAL? OCHIBA-CNT,11 \?CCL47
CRLF
PRINTR "Many of the ladies in the room turn to their neighbors, and some whisper openly what all those held against their will in Osaka are thinking: 'If she can go, so can I, so can you! I'll leave tomorrow, too!'"
?CCL47: EQUAL? OCHIBA-CNT,12 \FALSE
CRLF
PRINTI "Mariko makes a half-bow to the room and leaves. Yabu steps forward with you and the two of you follow her out, very conscious that you are the only samurai present wearing Toranaga's uniform."
CRLF
CALL1 NEXT-SCENE
RSTACK
.FUNCT OCHIBA-DESC:ANY:2:2,RARG,OBJ
EQUAL? RARG,M-OBJDESC? /TRUE
PRINTI "On the platform, alone, is the Lady Ochiba."
RTRUE
.FUNCT OCHIBA-F:ANY:0:1,RARG
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL5
EQUAL? PRSA,V?YES,V?HAI,V?NO /?CTR7
EQUAL? PRSA,V?IYE /?CTR7
EQUAL? PRSA,V?SAY \?PRD12
EQUAL? PRSO,JAPANESE /?CTR7
?PRD12: EQUAL? PRSA,V?NIHON-GO-GA \?CCL8
EQUAL? PRSO,HANASE-MASEN \?CCL8
?CTR7: EQUAL? OCHIBA-QUESTION,1 /?CTR18
EQUAL? PRSA,V?NIHON-GO-GA \?CCL19
EQUAL? PRSO,HANASE-MASEN \?CCL19
?CTR18: SET 'OCHIBA-QUESTION,FALSE-VALUE
EQUAL? PRSA,V?HAI,V?IYE,V?SPEAK /?CCL25
EQUAL? PRSA,V?NIHON-GO-GA \?CND24
?CCL25: FSET HANASE-MASEN,RMUNGBIT
?CND24: EQUAL? PRSA,V?NO,V?IYE \?CCL30
PRINTI """No, Highness. I have learned a few words and phrases, so that I may better be understood, however."
JUMP ?CND28
?CCL30: PRINTI """Please excuse me, Highness."
?CND28: PRINTR " I have to use short words and respectfully ask you to use simple words with me."""
?CCL19: PRINTR "She doesn't seem to be listening."
?CCL8: EQUAL? PRSA,V?HELLO \?CCL32
FSET? OCHIBA,TRYTAKEBIT /?CCL35
FSET OCHIBA,TRYTAKEBIT
PRINTR """May I respectfully congratulate you on your birthday and pray that you live to enjoy a thousand more."""
?CCL35: PRINTR "You have already congratulated her."
?CCL32: EQUAL? PRSA,V?THANK \?CCL37
EQUAL? PRSO,YOU \?CCL37
PRINTR """Domo, Ochiba-sama."" She acknowledges your thanks."
?CCL37: EQUAL? PRSA,V?NO /?CTR40
CALL1 NOT-A-BARBARIAN?
ZERO? STACK /?CCL41
?CTR40: PRINTR """This may be true, Anjin-san, but your manners are less than perfect."""
?CCL41: CALL1 WAKARIMASEN
RSTACK
?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL45
PRINTR "She is slight, almost girlish in build, with a luminous glow to her fair skin. She is at the peak of her beauty. Her sloe eyes are large under painted, arched brows, her hair set like a winged helmet. Her kimono is exquisitely rich, gold threads on the rarest blue-black silk. She sits comfortably on a cushion."
?CCL45: EQUAL? PRSA,V?WHO \FALSE
PRINTR "The Lady Ochiba is the widow of the Taiko, and the mother of the Heir, Yaemon. The rumors say that she is now the mistress of Lord Ishido. All Japan wonders if the Taiko, who had never before sired a child, was truly the Yaemon's father, but only Ochiba knows for sure."
.ENDSEG
.SEGMENT "DEPARTURE"
.FUNCT DEPARTURE-AFTER-F:ANY:0:0
PRINTI "Ishido and his supporters meet in Kiyama's opulent, overrich quarters.
""It's impossible, Lord General,"" Ochiba says. ""You can't let a lady of her rank commit seppuku. So sorry, but you've been trapped. The hostages will have to be freed, and then there's nothing to stop Toranaga.""
""I agree,"" Lord Kiyama says forcefully.
""With due humility, Lady,"" Ishido replies, ""whatever I said or didn't say, doesn't matter an "
ICALL2 PRINTUNDER,STR?218
PRINTR "'s turd to her. She's already decided, at least Toranaga has. We are at war, Toranaga's not yet in our hands, and until he's dead the Heir is in total danger.""
He walks over to the window. ""Suppose she's disarmed? Capture her! Confine her until Toranaga's in our hands, then the hostages don't matter. In eighteen days Toranaga has to be here!""
""You really think Lady Toda could be captured?"" Kiyama says.
""Yes,"" replies Ishido."
.FUNCT I-DEPARTURE:ANY:0:0
INC 'DELAY-CNT
EQUAL? DEPARTURE-CNT,2 \?CND3
CALL2 QUEUED?,I-FIGHT
ZERO? STACK \FALSE
?CND3: SET 'DELAY-CNT,0
INC 'DEPARTURE-CNT
EQUAL? DEPARTURE-CNT,1 \?CCL9
MOVE YAMAZAKI,FORECOURT
ICALL2 THIS-IS-IT,YAMAZAKI
CRLF
PRINTR "Twenty Browns form up as a vanguard and move off. Porters pick up Mariko's palanquin and follow the Browns, Kiri and Lady Sazuko close behind.
When Mariko's palanquin comes into the sunlight, a Captain of Grays steps forward, standing directly in her way. ""May I see your papers?"" he inquires.
Mariko says formally, ""We require none. I am Toda Mariko-noh-Buntaro and I have been ordered by my leige Lord, Lord Toranaga, to escort his ladies to meet him. Kindly let us pass.""
""My name is Yamazaki Danzenji, Captain of the Fourth Legion, and my line is as ancient as your own, my Lady. Please excuse me, but my leige Lord, Lord Ishido, says no one may leave Osaka Castle without papers.""
""So sorry, Captain, but if you do not move out of the way I will order you killed."""
?CCL9: EQUAL? DEPARTURE-CNT,2 \?CCL11
ICALL QUEUE,I-FIGHT,-1
SET 'OPPONENT,YAMAZAKI
CRLF
PRINT STR?592
PRINTR " the Gray Captain replies proudly. Mariko nods sadly. ""Please kill him,"" she orders quietly, and at once the battle is joined. It is terrifyingly fair and formal, one Gray for each Brown and one for yourself."
?CCL11: EQUAL? DEPARTURE-CNT,3 \?CCL13
MOVE MARIKO,HERE
MOVE KOJIMA,HERE
SET 'OPPONENT,KOJIMA
ICALL2 THIS-IS-IT,KOJIMA
CRLF
PRINTR "Almost immediately, twenty more Browns run forward to form a new vanguard. From up ahead twenty more Grays move silently out from the hundreds that are waiting.
""Wait,"" Mariko orders. She steps out of her palanquin and picks up a sword, unsheaths it, and walks forward alone. She approaches the officer. ""You know who I am. Please get out of my way.""
""I am Kojima Harutomo, Captain of the Sixth Legion. Please excuse me, you may not pass, Lady."""
?CCL13: EQUAL? DEPARTURE-CNT,4 \?CCL15
CRLF
PRINTR "Mariko darts forward but her blow is contained. The Gray stays on the defensive although he could kill her without effort.
Again Mariko tries to bring the Gray to battle, but he slides away, allowing her to exhaust herself. But he does this gravely, giving her every courtesy, giving her the honor that is her due. She knows she cannot last much longer. She sees how easy it would be for the massed Grays to cut them all off if they wish and leave them stranded and helpless. She breaks off the fight."
?CCL15: EQUAL? DEPARTURE-CNT,5 \?CCL17
SET 'OPPONENT,FALSE-VALUE
MOVE ISHIDO,HERE
CRLF
PRINTR "Lord Ishido emerges from the crowd of Grays. ""Lady Toda, the castle orders must be obeyed. But if you wish, I will call a meeting of the Regents and ask for a ruling.""
Mariko turns to Ishido and bows. ""My orders are clear. If I am not permitted to obey, I will not be able to live with that shame."""
?CCL17: EQUAL? DEPARTURE-CNT,6 \FALSE
CRLF
PRINTI """These men have prevented me from doing my duty, from obeying my leige Lord. I cannot live with this shame, Sire. Unless we are allowed to obey our leige Lord, as is our right, I will commit seppuku at sunset!""
She bows and walks toward the gateway. All in the avenue and all on the battlements bow to her in homage. She goes into the garden, her footsteps taking her to the secluded, rustic little tea house. She goes inside and, once there, she weeps silently for all the men who have died."
CRLF
REMOVE KOJIMA
REMOVE YAMAZAKI
REMOVE MARIKOS-LITTER
CALL1 NEXT-SCENE
RSTACK
.FUNCT YAMAZAKI-F:ANY:0:1,RARG,H
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL5
EQUAL? PRSA,V?WHO \?CCL8
EQUAL? PRSO,YAMAZAKI,YOU \?CCL8
PRINTR """My name is Yamazaki Danzenji, Captain of the Fourth Legion!"""
?CCL8: EQUAL? PRSA,V?STOP \?CCL12
PRINT STR?592
CRLF
RTRUE
?CCL12: CALL1 WAKARIMASEN
RSTACK
?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL14
FSET? PRSO,DEAD \?CCL17
PRINTR "He is dead. You have killed him."
?CCL17: PRINT STR?274
CRLF
RTRUE
?CCL14: EQUAL? PRSA,V?BOW \?CCL19
PRINTR "He looks you over carefully, considering his options."
?CCL19: CALL1 HOSTILE-VERB?
ZERO? STACK /FALSE
EQUAL? PRSA,V?BITE,V?PISS,V?SPIT /?CTR23
EQUAL? PRSA,V?KICK \?CCL24
?CTR23: PRINTR "He is clearly insulted that you would ever try such a barbaric action."
?CCL24: EQUAL? PRSO,YAMAZAKI \?PRD30
EQUAL? PRSI,SWORDS,FALSE-VALUE \?CTR27
?PRD30: EQUAL? PRSI,YAMAZAKI \?CCL28
EQUAL? PRSO,SWORDS,FALSE-VALUE /?CCL28
?CTR27: PRINTR "You aren't taking him very seriously, are you?"
?CCL28: FSET? YAMAZAKI,DEAD \?CCL36
PRINTR "You strike the already-dead Gray with your sword. The onlookers are shocked at this insult to a worthy opponent!"
?CCL36: FSET? YAMAZAKI,RMUNGBIT /?CCL38
CALL2 QUEUED?,I-FIGHT
ZERO? STACK /?CCL41
FSET YAMAZAKI,RMUNGBIT
FSET? SWORDS,WEARBIT \?CCL44
FCLEAR SWORDS,WEARBIT
PRINTR "You draw your sword, and the Captain bows to you and does the same."
?CCL44: SET 'DELAYING-FIGHT?,FALSE-VALUE
PRINTR "You strike at the Gray Captain, and he dodges expertly as he draws his sword. He is clearly shocked that you would attack him before he had a chance to draw his sword."
?CCL41: PRINTR """Not yet, Anjin-san! Wait for my order!"""
?CCL38: ZERO? YAMAZAKI-ATTACK \?CCL46
SET 'DELAYING-FIGHT?,FALSE-VALUE
PRINTR "You swing powerfully if somewhat inexpertly with your sword. The Captain parries."
?CCL46: SET 'DELAYING-FIGHT?,FALSE-VALUE
SET 'YAMAZAKI-ATTACK,FALSE-VALUE
GETP YAMAZAKI,P?HEALTH >H
DEC 'H
PUTP YAMAZAKI,P?HEALTH,H
CALL2 PICK-ONE,SWORD-ATTACKS
PRINT STACK
CRLF
ZERO? H \TRUE
FSET YAMAZAKI,DEAD
SET 'OPPONENT,FALSE-VALUE
GETP BROWNS,P?COUNT
ZERO? STACK \?CND49
ICALL2 DEQUEUE,I-FIGHT
?CND49: CRLF
PRINTI "The captain, slowed by pain and loss of blood, cannot even parry your next stroke, which skewers him like a lamb. He stares at you silently for a moment, then his eyes glaze and he falls to the ground, dead."
CRLF
ICALL2 SCORE-OBJECT,YAMAZAKI
RTRUE
.FUNCT KOJIMA-F:ANY:0:1,RARG
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL5
EQUAL? PRSA,V?WHO \?CCL8
EQUAL? PRSO,KOJIMA,YOU \?CCL8
PRINTR """My name is Kojima Harumoto, Captain of the Sixth Legion!"""
?CCL8: EQUAL? PRSA,V?STOP \?CCL12
PRINT STR?592
CRLF
RTRUE
?CCL12: CALL1 WAKARIMASEN
RSTACK
?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL14
FSET? PRSO,DEAD \?CCL17
PRINTR "He is dead. Mariko has killed him."
?CCL17: PRINT STR?274
CRLF
RTRUE
?CCL14: CALL1 HOSTILE-VERB?
ZERO? STACK /FALSE
FSET? KOJIMA,DEAD \?CCL22
PRINTR "You prepare to strike the already-dead Gray with your sword. Mariko says, ""No, Anjin-san. He was samurai. He was doing his duty."""
?CCL22: PRINTR "Mariko says, ""Anjin-san, this is my fight. You must not shame me by fighting this man. I am samurai, and this is my duty, and my honor."""
.FUNCT CAPTAIN-KILLS-YOU:ANY:0:0
CRLF
CALL2 JIGS-UP,STR?601
RSTACK
.FUNCT I-FIGHT:ANY:0:0,B
GETP BROWNS,P?COUNT >B
FSET? YAMAZAKI,DEAD /?CND1
INC 'DELAYING-FIGHT?
FSET? BLACKTHORNE,SITTING \?CCL5
GRTR? DELAYING-FIGHT?,4 \?CCL8
ICALL1 CAPTAIN-KILLS-YOU
JUMP ?CND1
?CCL8: CRLF
PRINTI "The Captain motions for you to stand and fight."
CRLF
JUMP ?CND1
?CCL5: CALL2 HELD?,SWORDS
ZERO? STACK /?CTR9
FSET? SWORDS,WEARBIT \?CCL10
?CTR9: GRTR? DELAYING-FIGHT?,4 \?CCL15
ICALL1 CAPTAIN-KILLS-YOU
CRLF
ICALL2 JIGS-UP,STR?601
JUMP ?CND1
?CCL15: CRLF
PRINTI "The Captain waits for you to draw your sword."
CRLF
JUMP ?CND1
?CCL10: FSET? YAMAZAKI,RMUNGBIT /?CCL18
FSET YAMAZAKI,RMUNGBIT
ICALL2 THIS-IS-IT,YAMAZAKI
SET 'OPPONENT,YAMAZAKI
CRLF
PRINTI "The Captain bows formally, draws his sword, and prepares to attack you."
CRLF
JUMP ?CND1
?CCL18: ZERO? YAMAZAKI-ATTACK /?CCL20
CRLF
PRINTI "The Captain swings his sword at you, but oddly, at the last second he seems to adjust his attack so that you are only slightly cut, rather than sliced in two."
CRLF
JUMP ?CND1
?CCL20: SET 'YAMAZAKI-ATTACK,TRUE-VALUE
CRLF
CALL2 PICK-ONE,YAMAZAKI-ATTACKS
PRINT STACK
CRLF
?CND1: ZERO? B /TRUE
RANDOM 7
SUB B,STACK >B
GRTR? B,0 /?CND23
SET 'B,0
?CND23: PUTP BROWNS,P?COUNT,B
ZERO? B \?CCL27
FSET? YAMAZAKI,DEAD \?CND28
ICALL2 DEQUEUE,I-FIGHT
?CND28: CRLF
PRINTR "It is now one to one, the last Brown, blood-stained and wounded, already the victor of four duels. The fresh Gray dispatches him easily and stands alone among the bodies."
?CCL27: CRLF
PRINTI "Each time a Gray falls, another calmly walks out of the waiting pack to join his comrades in the killing. It is now "
GET NUMBERS,B
PRINT STACK
PRINTI " Brown"
EQUAL? B,1 /?CCL32
PRINTR "s versus as many Grays."
?CCL32: PRINTR " versus one Gray."
.ENDSEG
.SEGMENT "ESCAPE"
.SEGMENT "SEPPUKU"
.FUNCT FORMAL-GARDEN-F:ANY:1:1,RARG
EQUAL? RARG,M-SCENE-SETUP \?CCL3
ICALL1 DRESS-BLACKTHORNE
ICALL QUEUE,I-SEPPUKU,-1
FSET FORTIFIED-GATE,OPENBIT
MOVE MARIKO,TEA-HOUSE
FCLEAR MARIKO,SCOREBIT
FSET GARDEN-GATE,OPENBIT
MOVE CHIMMOKO,HERE
MOVE YABU,FORECOURT
MOVE KIRITSUBO,FORECOURT
MOVE SUMIYORI,FORECOURT
MOVE ISHIDO,GENERIC-OBJECTS
RTRUE
?CCL3: EQUAL? RARG,M-ENTER \FALSE
EQUAL? SCENE,S-ESCAPE \TRUE
EQUAL? OHERE,COURTYARD \TRUE
IN? MARIKO,COURTYARD \TRUE
ICALL QUEUE,I-COME-BACK,6
PRINTI "As you enter the garden, Mariko calls to you ""Anjin-san, we are leaving soon. Come back!"" You see her explain to Yabu what she said."
CRLF
CRLF
RTRUE
.FUNCT LILY-POND-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "The lily pond glistens in the sun, its waters rippled by the gentle fall of water from the brook."
?CCL3: EQUAL? PRSA,V?BOARD,V?THROUGH \FALSE
PRINTR "To do so would disturb the serenity and peace of the garden and the pond."
.ENDSEG
.SEGMENT "SEPPUKU"
.FUNCT SEPPUKU-EXAMINE-MARIKO:ANY:0:0
PRINTR "She is kneeling, facing the doorway, freshly made up, lips crimson, immaculately coiffured, wearing a fresh kimono of somber blue edged with green, with a lighter green obi and a thin green ribbon for her hair."
.FUNCT SEPPUKU-TAKE-MARIKO:ANY:0:0
EQUAL? HERE,FORMAL-GARDEN,TEA-HOUSE \?CCL3
PRINTR """No, Anjin-san, I cannot stop. This is my duty to our master. Only in this way may I expiate the sin of my father, and not die in shame."""
?CCL3: FSET? MARIKO,SCOREBIT \?CCL5
FSET? MARIKO,SITTING /?CCL5
MOVE MARIKO,WINNER
ICALL2 DEQUEUE,I-SEPPUKU
PRINTI "You decide that she has endured enough, proved enough, so you come forward and catch her in your arms as she falls, lift her up just as her mind leaves her. For a moment you stand there alone, proud that you alone decided. She rests like a broken doll in your arms. Then you carry her inside. No one moves or bars your path."
CRLF
ICALL2 SCORE-OBJECT,MARIKO
CALL1 NEXT-SCENE
RSTACK
?CCL5: CALL JIGS-UP?,J-SEPPUKU,STR?264
ZERO? STACK /TRUE
PRINTI "You come forward to try to help her."
CALL1 INTERRUPTED-SEPPUKU
RSTACK
.SEGMENT "ESCAPE"
.FUNCT TEA-HOUSE-F:ANY:1:1,RARG
EQUAL? RARG,M-BEG \?CCL3
EQUAL? PRSA,V?KISS \FALSE
EQUAL? PRSO,MARIKO \FALSE
PRINTR "You kiss her gently and tenderly."
?CCL3: EQUAL? RARG,M-ENTER \FALSE
EQUAL? SCENE,S-SEPPUKU \?CND11
ICALL2 THIS-IS-IT,MARIKO
SET 'QCONTEXT,MARIKO
PRINTI "You go forward alone. "
?CND11: PRINTI "You "
FSET? SANDALS,WEARBIT \?CND13
FCLEAR SANDALS,WEARBIT
MOVE SANDALS,FORMAL-GARDEN
PRINTI "slip your feet out of your thongs and "
?CND13: PRINTI "walk up the three steps. You have to stoop, almost to your knees, to go through the tiny screened doorway."
CRLF
CRLF
RTRUE
.ENDSEG
.SEGMENT "SEPPUKU"
.FUNCT GREEN-RIBBON-F:ANY:0:0
EQUAL? PRSA,V?DROP \?CCL3
FSET? PRSO,RMUNGBIT \?CCL3
CALL2 YOULL-HAVE-TO,STR?605
RSTACK
?CCL3: EQUAL? PRSA,V?TIE \?CCL7
EQUAL? PRSO,RIBBON \?CCL7
EQUAL? PRSI,FALSE-VALUE \?CCL7
CALL2 HELD?,PRSO
ZERO? STACK \?CCL13
PRINT STR?606
CRLF
RTRUE
?CCL13: FSET? PRSO,RMUNGBIT /?CCL15
FSET PRSO,RMUNGBIT
PRINTR "You tie the ribbon to your sash in homage to Mariko's courage."
?CCL15: PRINT STR?131
CRLF
RTRUE
?CCL7: EQUAL? PRSA,V?UNTIE \FALSE
CALL2 HELD?,PRSO
ZERO? STACK \?CCL20
PRINT STR?606
CRLF
RTRUE
?CCL20: FSET? PRSO,RMUNGBIT \?CCL22
FCLEAR PRSO,RMUNGBIT
PRINTR "You untie the ribbon."
?CCL22: PRINT STR?131
CRLF
RTRUE
.FUNCT SUMIYORI-F:ANY:0:1,RARG
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL5
CALL1 WAKARIMASEN
RSTACK
?CCL5: EQUAL? PRSA,V?WHO \FALSE
PRINTR "Sumiyori is the senior officer of Toranaga's Browns in Osaka."
.FUNCT I-SEPPUKU:ANY:0:0
INC 'DELAY-CNT
ZERO? SEPPUKU-CNT \?CCL5
EQUAL? HERE,FORMAL-GARDEN,TEA-HOUSE /?CND3
MOVE CHIMMOKO,HERE
CRLF
PRINTR "Mariko's servant Chimmoko urges you to return to the garden."
?CCL5: EQUAL? SEPPUKU-CNT,1 \?CCL9
EQUAL? HERE,FORMAL-GARDEN \?CND3
MOVE CHIMMOKO,HERE
CRLF
PRINTR "Chimmoko points imploringly at the tea house. ""My mistress wishes to see you, please, Anjin-san,"" she says in the simplified Japanese that is all you can understand."
?CCL9: EQUAL? SEPPUKU-CNT,3 \?CND3
EQUAL? HERE,TEA-HOUSE /TRUE
?CND3: SET 'DELAY-CNT,0
INC 'SEPPUKU-CNT
EQUAL? SEPPUKU-CNT,1 \?CCL17
EQUAL? HERE,FORMAL-GARDEN \FALSE
MOVE CHIMMOKO,HERE
CRLF
PRINTI "Chimmoko points to the little "
ICALL2 PRINTUNDER,STR?607
PRINTR " house."
?CCL17: EQUAL? SEPPUKU-CNT,2 \?CCL22
MOVE CHIMMOKO,FORMAL-GARDEN
EQUAL? HERE,TEA-HOUSE \FALSE
CRLF
PRINTR """Thou,"" Mariko says in Latin, the language of love."
?CCL22: EQUAL? SEPPUKU-CNT,3 \?CCL27
MOVE MARIKO,FORMAL-GARDEN
EQUAL? HERE,TEA-HOUSE \?CCL30
CRLF
PRINTR "Chimmoko approaches. ""It's time, Mistress.""
""Is everything ready?"" Mariko asks.
""Yes, Mistress.""
""Wait for me beside the lily pond."" The footsteps go away. Mariko turns back to you and kisses you gently. She bows to you and goes through the doorway."
?CCL30: EQUAL? HERE,FORMAL-GARDEN \FALSE
CRLF
PRINTR "Chimmoko enters the tea house, then re-emerges a moment later. Mariko follows her, and bows to you as she goes by."
?CCL27: EQUAL? SEPPUKU-CNT,4 \?CCL34
MOVE GREEN-RIBBON,FORMAL-GARDEN
EQUAL? HERE,FORMAL-GARDEN \FALSE
CRLF
PRINTR "Mariko stops by the lily pond and undoes her obi and lets it fall. Chimmoko helps her out of her blue kimono. Beneath it Mariko wears the most brilliant white kimono and obi you have ever seen. It is a formal death kimono. She unties the green ribbon from her hair and casts it aside."
?CCL34: EQUAL? SEPPUKU-CNT,5 \?CCL39
FCLEAR COURTYARD,TOUCHBIT
MOVE MARIKO,COURTYARD
MOVE CHIMMOKO,COURTYARD
EQUAL? HERE,FORMAL-GARDEN,FORECOURT,COURTYARD \FALSE
CRLF
PRINTR "Clad completely in white, Mariko walks from the garden into the courtyard, never looking at you."
?CCL39: EQUAL? SEPPUKU-CNT,6 \?CCL44
FCLEAR FORECOURT,TOUCHBIT
MOVE MARIKO,FORECOURT
MOVE CHIMMOKO,FORECOURT
EQUAL? HERE,FORMAL-GARDEN,FORECOURT,COURTYARD \FALSE
CRLF
PRINTR "Mariko walks to the gateway, where eight tatamis have been laid out in the center of the main gate."
?CCL44: EQUAL? SEPPUKU-CNT,7 \?CCL49
FSET MARIKO,SITTING
EQUAL? HERE,FORECOURT \?CCL52
CRLF
PRINTR "At a sign from Sumiyori everyone bows. Mariko bows to them. Four samurai come forward and spread a crimson coverlet over the tatamis.
Mariko goes to the crimson square and kneels in the center, in front of the tiny white cushion. Her right hand brings out her stiletto dagger from her white obi and she places it on the cushion in front of her. Mariko arranges the skirts of her kimono perfectly, Chimmoko helping her, tying a small white blanket around her waist with the cord. You know that this is to prevent her skirts being blooded and disarranged by her death throes."
?CCL52: EQUAL? HERE,COURTYARD \FALSE
CRLF
PRINTR "Through the crowd to the south you can see Mariko in the forecourt preparing for her death."
?CCL49: EQUAL? SEPPUKU-CNT,8 \?CCL56
EQUAL? HERE,FORECOURT \?CCL59
CRLF
PRINTR "Serene and prepared, Mariko looks up at the castle donjon. Sun still dominates the upper story, glittering off the golden tiles. Rapidly the flaming light mounts the spire. Then it disappears.
Servants are lighting flares along the avenue. When they finish, they flee as quickly and silently as they arrived.
Mariko reaches forward and straightens the knife. She looks through the gateway to the far end of the avenue. It is as still and as empty as it had ever been."
?CCL59: EQUAL? HERE,COURTYARD \FALSE
CRLF
PRINTR "The crowd is such that you can no longer see Mariko."
?CCL56: EQUAL? SEPPUKU-CNT,9 \?CCL63
EQUAL? HERE,FORECOURT \FALSE
CRLF
PRINTR "Mariko looks once again at the knife. She says ""Kasigi Yabu-sama! It seems Lord Kiyama has declined to assist me. Please, I would be honored if you would be my second.
""It is my honor,"" Yabu replies. He bows, gets to his feet, and stands behind her to her left. His sword sings as it slides from its scabbard. ""I am ready, Lady,"" he says.
""Please wait until I make the second cut."""
?CCL63: EQUAL? SEPPUKU-CNT,10 \?CCL68
MOVE ISHIDO,FORECOURT
EQUAL? HERE,FORECOURT \?CCL71
ICALL2 MARGINAL-PIC,P-SEPPUKU
CRLF
PRINTR "With her right hand, Mariko makes the sign of the cross, then leans forward and takes the knife and touches it to her lips as though to taste the polished steel. She changes her grip and holds the knife firmly with her right hand under the left side of her throat.
Suddenly flares round the far end of the avenue. A retinue approaches. Ishido is at their head.
Mariko does not move the knife. Yabu is as still as a coiled spring. ""Lady,"" he says, ""do you wait or are you continuing? I wish to be perfect for you."""
?CCL71: CRLF
PRINTR "You can hear a subdued whispering coming from all around."
?CCL68: EQUAL? SEPPUKU-CNT,11 \?CCL73
EQUAL? HERE,FORECOURT \?CCL76
CRLF
PRINTI """I wait ... we ... I"" Her hand lowers the knife. Yabu lowers his sword and it hisses back into his scabbard.
Ishido stands at the gateway. ""It's not sunset yet, Lady. Are you so keen to die?""
""No, Lord General. Just to obey my Lord ... "" She holds her hands together to stop their shaking. A rumble of anger goes through the Browns at Ishido's arrogant rudeness."
CRLF
CRLF
PRINTI "Ishido says loudly, ""The Lady Ochiba begged the Regents on behalf of the Heir to make an exception in your case. Here are permits for you to leave at dawn tomorrow."" He shoves them into the hands of Sumiyori.
""Sire?"" Mariko says, without understanding, her voice threadbare."
CRLF
CRLF
PRINTI """You are free to leave. At dawn,"" barks Ishido.
""And Kiritsubo-san and the Lady Sazuko?""
""Isn't that also part of your 'duty?' Their permits are there also."""
CRLF
CRLF
PRINTR "Ishido addresses the others. ""Any ladies may apply, any samurai. I've said before, it's stupid to leave for seventeen days, it's insulting to flout the Heir's welcome ..."" -- his ruthless gaze goes back to Mariko -- ""or to pressure them with threats of seppuku!"""
?CCL76: CRLF
PRINTI "You can hear a building, burgeoning noise from all around the forecourt."
CRLF
CRLF
PRINTR "As suddenly as it started, the noise ceases."
?CCL73: EQUAL? SEPPUKU-CNT,12 \?CCL78
MOVE ISHIDO,GENERIC-OBJECTS
EQUAL? HERE,FORECOURT \?CCL81
CRLF
PRINTR "Ishido turns on his heel, shouts an order to the Grays, and walks off."
?CCL81: CRLF
PRINTR "From the forecourt you can hear the sound of marching feet."
?CCL78: EQUAL? SEPPUKU-CNT,13 \?CCL83
FSET MARIKO,SCOREBIT
SET 'MARIKO-WON-FLAG,TRUE-VALUE
FCLEAR MARIKO,SITTING
EQUAL? HERE,FORECOURT \FALSE
CRLF
PRINTR "Yabu turns to Mariko. ""Lady, it's over now. You've ... you've won. You've won.""
Mariko tries to grope to her feet. She fails. She tries a second time. Again she fails. Her hands go to the crimson again, and this time she forces herself upright. She wavers and almost falls, then her feet move and slowly she totters across the crimson, reeling helplessly toward the main door."
?CCL83: EQUAL? SEPPUKU-CNT,14 \FALSE
EQUAL? HERE,FORECOURT \?CCL91
CRLF
PRINTI "Mariko teeters helplessly, unable to move forward any further. There is a hushed silence, everyone in the forecourt watching her. She falls to the ground."
CRLF
JUMP ?CND89
?CCL91: CRLF
PRINTI "From the forecourt is hushed silence, as though all of Osaka is waiting for something, and then a sigh, just barely audible though thousands of throats make it, comes over the walls."
CRLF
?CND89: CALL1 NEXT-SCENE
RSTACK
.ENDSEG
.ENDI

View File

@ -70,7 +70,7 @@ walk forward.">
<FCLEAR ,SWORDS ,WEARBIT>
<MOVE ,SWORDS ,HERE>
<TELL
" Suddenly, just as you had feared, your sword belt comes loose and
" Suddenly, just as you had feared, your sword belt comes loose and
your swords clatter to the floor. You turn red, scrambling for them
on the ground, and Ishido begins a swelling round of humiliating
laughter.">)>
@ -93,6 +93,18 @@ from the exchange." CR>)
<TELL
"Such a foolish action would surely lead to your immediate death." CR>)>)>>
<ROUTINE NOT-A-BARBARIAN? ()
<COND (<P? BE (BLACKTHORNE ME)>
<COND (<P-NEGATIVE?>
<COND (<PRSI? GLOBAL-BARBARIAN CRAZY>
<RTRUE>)
(ELSE <RFALSE>)>)
(<PRSI? GLOBAL-SAMURAI GLOBAL-HATAMOTO>
<RTRUE>)
(<AND <PRSI? INTADJ>
<ADJ? ,W?SAMURAI>>
<RTRUE>)>)>>
<OBJECT CAMELLIA
(DESC "camellia blossom")
(SYNONYM BLOSSOM FLOWER CAMELLIA)
@ -238,8 +250,7 @@ Ishido keeps his eyes riveted on her. \"No, you are not confined.\"" CR>)
whisper openly what all those held against their will in Osaka are
thinking: 'If she can go, so can I, so can you! I'll leave tomorrow,
too!'" CR>)
(<DEQUEUE I-OCHIBA>
<TELL CR
(<TELL CR
"Mariko makes a half-bow to the room and leaves. Yabu steps forward
with you and the two of you follow her out, very conscious that you
are the only samurai present wearing Toranaga's uniform." CR>
@ -280,7 +291,7 @@ better be understood, however.">)
<TELL
"\"Please excuse me, Highness.">)>
<TELL
" I have to use short words and respectfully
" I have to use short words and respectfully
ask you to use simple words with me.\"" CR>)
(ELSE
<TELL
@ -431,7 +442,6 @@ once there, she weeps silently for all the men who have died." CR>
<REMOVE ,KOJIMA>
<REMOVE ,YAMAZAKI>
<REMOVE ,MARIKOS-LITTER>
<DEQUEUE I-DEPARTURE>
<NEXT-SCENE>)>>
<GLOBAL YAMAZAKI-ATTACK <>>
@ -524,8 +534,9 @@ Captain parries." CR>)
<COND (<ZERO? <GETP ,BROWNS ,P?COUNT>>
<DEQUEUE I-FIGHT>)>
<TELL CR
"The captain stares at you silently for a moment, then his eyes glaze
and he falls to the ground, dead." CR>
"The captain, slowed by pain and loss of blood, cannot even parry your
next stroke, which skewers him like a lamb. He stares at you silently
for a moment, then his eyes glaze and he falls to the ground, dead." CR>
<SCORE-OBJECT ,YAMAZAKI>)>
<RTRUE>)>)>>
@ -640,7 +651,7 @@ the victor of four duels. The fresh Gray dispatches him easily and stands
alone among the bodies." CR>)
(ELSE
<TELL CR
"Each time a Gray falls, another calmy walks out of the waiting pack to
"Each time a Gray falls, another calmly walks out of the waiting pack to
join his comrades in the killing. It is now " <GET ,NUMBERS .B> " Brown">
<COND (<NOT <EQUAL? .B 1>>
<TELL "s versus as many Grays." CR>)
@ -655,6 +666,7 @@ join his comrades in the killing. It is now " <GET ,NUMBERS .B> " Brown">
"S-SEPPUKU"
<BEGIN-SEGMENT SEPPUKU>
<BEGIN-SEGMENT ESCAPE>
<ROOM FORMAL-GARDEN
(LOC ROOMS)
@ -723,7 +735,8 @@ east.")
<QUEUE I-COME-BACK 6>
<TELL
"As you enter the garden, Mariko calls to you \"Anjin-san, we are leaving
soon. Come back!\" You see her explain to Yabu what she said." CR CR>)>)>>
soon. Come back!\" You see her explain to Yabu what she said." CR CR>)>
<RTRUE>)>>
<OBJECT GARDEN-GATE
(LOC LOCAL-GLOBALS)
@ -750,6 +763,41 @@ gentle fall of water from the brook." CR>)
"To do so would disturb the serenity and peace of the garden and the
pond." CR>)>>
<END-SEGMENT>
<BEGIN-SEGMENT SEPPUKU>
<ROUTINE SEPPUKU-EXAMINE-MARIKO ()
<TELL
"She is kneeling, facing the doorway, freshly made up, lips crimson,
immaculately coiffured, wearing a fresh kimono of somber blue edged
with green, with a lighter green obi and a thin green ribbon for her
hair." CR>>
<ROUTINE SEPPUKU-TAKE-MARIKO ()
<COND (<HERE? FORMAL-GARDEN TEA-HOUSE>
<TELL
"\"No, Anjin-san, I cannot stop. This is my duty to our master. Only in this
way may I expiate the sin of my father, and not die in shame.\"" CR>)
(<AND <FSET? ,MARIKO ,SCOREBIT>
<NOT <FSET? ,MARIKO ,SITTING>>>
<MOVE ,MARIKO ,WINNER>
<DEQUEUE I-SEPPUKU>
<TELL
"You decide that she has endured enough, proved enough, so you come
forward and catch her in your arms as she falls, lift her up just as
her mind leaves her. For a moment you stand there alone, proud that
you alone decided. She rests like a broken doll in your arms. Then
you carry her inside. No one moves or bars your path." CR>
<SCORE-OBJECT ,MARIKO>
<NEXT-SCENE>)
(<JIGS-UP? ,J-SEPPUKU
"You reconsider. You would both die if you interrupted the ceremony.">
<TELL "You come forward to try to help her.">
<INTERRUPTED-SEPPUKU>)
(ELSE <RTRUE>)>>
<BEGIN-SEGMENT ESCAPE>
<ROOM TEA-HOUSE
(LOC ROOMS)
(SCENE S-SEPPUKU S-ESCAPE S-DEPARTURE S-MARIKO)
@ -758,7 +806,7 @@ pond." CR>)>>
"The tea house is small, simple, and immaculate. The doorway is small
so that all will be humble, equal, the host and guest, the most high
Lord and the merest samurai.")
(SYNONYM HOUSE)
(SYNONYM HOUSE HUT)
(ADJECTIVE LITTLE TEA CHA-NO-YU)
(OUT TO FORMAL-GARDEN)
(SOUTH TO FORMAL-GARDEN)
@ -783,7 +831,11 @@ Lord and the merest samurai.")
<TELL "slip your feet out of your thongs and ">)>
<TELL "walk
up the three steps. You have to stoop, almost to your knees, to go
through the tiny screened doorway." CR CR>)>>
through the tiny screened doorway." CR CR>
<RTRUE>)>>
<END-SEGMENT>
<BEGIN-SEGMENT SEPPUKU>
<OBJECT GREEN-RIBBON
(OWNER MARIKO)
@ -1008,8 +1060,7 @@ time. Again she fails. Her hands go to the crimson again, and this time she
forces herself upright. She wavers and almost falls, then her feet
move and slowly she totters across the crimson, reeling helplessly toward
the main door." CR>)>)
(<DEQUEUE I-SEPPUKU>
<COND (<HERE? ,FORECOURT>
(<COND (<HERE? ,FORECOURT>
<TELL CR
"Mariko teeters helplessly, unable to move forward any further. There is
a hushed silence, everyone in the forecourt watching her. She falls to
@ -1023,4 +1074,4 @@ throats make it, comes over the walls." CR>)>
<GLOBAL MARIKO-WON-FLAG <>>
<END-SEGMENT>
<END-SEGMENT ;"SEPPUKU">

98
maze.zabstr Normal file
View File

@ -0,0 +1,98 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT MAZE>
<CONSTANT MAZE-WINDOW 3>
<CONSTANT MWALL 128>
<DEFMAC MSTREET? ('VAL) <FORM ZERO? <FORM BAND .VAL ,MWALL>>>
<OBJECT HOUSE (LOC LOCAL-GLOBALS) (SYNONYM HOUSE HOUSES SHOP SHOPS) (DESC
"house") (FLAGS NDESCBIT) (ACTION HOUSE-F)>
<DEFINE-ROUTINE HOUSE-F>
<OBJECT RONIN (SYNONYM RONIN DETACHMENT) (DESC "detachment of ronin") (FLAGS
PERSON PLURAL JAPANESEBIT) (ACTION RONIN-F)>
<DEFINE-ROUTINE RONIN-F>
<OBJECT FISH-GATE (SYNONYM GATE FISH) (ADJECTIVE BATTERED ETCHED) (DESC "gate")
(FLAGS NDESCBIT SCOREBIT) (ACTION FISH-GATE-F)>
<DEFINE-ROUTINE FISH-GATE-F>
<OBJECT AMBUSHERS (SYNONYM AMBUSHER BOWMAN FIGURE SHAPE AMBUSHERS BOWMEN
FIGURES SHAPES) (ADJECTIVE SHADOWY DIM) (DESC "dim figures") (FLAGS PERSON
JAPANESEBIT PLURAL) (DESCFCN AMBUSHERS-DESC) (ACTION AMBUSHERS-F)>
<DEFINE-ROUTINE AMBUSHERS-DESC>
<DEFINE-ROUTINE AMBUSHERS-F>
<OBJECT MESSENGER (SYNONYM MESSENGER MAN SAMURAI GRAY) (ADJECTIVE GRAY) (DESC
"messenger") (FLAGS PERSON JAPANESEBIT INVISIBLE SCOREBIT) (GENERIC
GENERIC-MAN-F) (ACTION MESSENGER-F)>
<DEFINE-ROUTINE MESSENGER-F>
<ROOM AMBUSH-SITE (LOC ROOMS) (DESC "City Street") (LDESC
"This is a dark, deserted street in the middle of Osaka.") (SYNONYM STREET) (
ADJECTIVE CITY) (FLAGS ONBIT OUTSIDE) (GLOBAL MESSENGER) (ACTION AMBUSH-SITE-F)
>
<DEFINE-ROUTINE AMBUSH-SITE-F>
<GLOBAL AMBUSH-PROB 2>
<GLOBAL XAMBUSH 0>
<GLOBAL YAMBUSH 0>
<DEFINE-ROUTINE I-AMBUSH-START>
<DEFINE-ROUTINE I-AMBUSH>
<GLOBAL AMBUSH-CNT 0 %<> WORD>
<DEFINE-ROUTINE I-CAUGHT>
<ROOM MAZE (LOC ROOMS) (SYNONYM STREETS) (ADJECTIVE CITY) (DESC "City Streets")
(FLAGS OUTSIDE ONBIT) (GLOBAL HOUSE) (MOUSE MAZE-MOUSE-F) (ACTION MAZE-F)>
<DEFINE-ROUTINE MAZE-F>
<DEFINE-ROUTINE LEAVE-MAZE>
<CONSTANT MAZE-PICS <TABLE P-MAZE-WALL P-MAZE-STREET P-MAZE-PARTY P-MAZE-CASTLE
P-MAZE-DOCK P-MAZE-FISH P-MAZE-BACKGROUND 0>>
<DEFINE-ROUTINE MAZE-MOUSE-F>
<CONSTANT NORTH-STR <LTABLE (PURE STRING) "north">>
<CONSTANT SOUTH-STR <LTABLE (PURE STRING) "south">>
<CONSTANT EAST-STR <LTABLE (PURE STRING) "east">>
<CONSTANT WEST-STR <LTABLE (PURE STRING) "west">>
<CONSTANT SE-STR <LTABLE (PURE STRING) "se">>
<CONSTANT SW-STR <LTABLE (PURE STRING) "sw">>
<CONSTANT NE-STR <LTABLE (PURE STRING) "ne">>
<CONSTANT NW-STR <LTABLE (PURE STRING) "nw">>
<CONSTANT MAZE-BOX-TBL <TABLE 0 0>>
<DEFINE-ROUTINE MGETB>
<DEFINE-ROUTINE MPUTB>
<GLOBAL YOFFSET 0>
<GLOBAL XOFFSET 0>
<DEFINE-ROUTINE DISPLAY-MAZE-PIC>
<DEFINE-ROUTINE MAZE-MOVE>
<DEFINE-ROUTINE MPUTC>
<DEFINE-ROUTINE DISPLAY-MAZE>
<DEFINE-ROUTINE PRINTM>
<CONSTANT MAX-MAZE-WIDTH 37>
<CONSTANT MAX-MAZE-HEIGHT 17>
<GLOBAL MAZE-MAP <ITABLE <* ,MAX-MAZE-WIDTH ,MAX-MAZE-HEIGHT> (BYTE) 128>>
<GLOBAL MAZE-WIDTH 37>
<GLOBAL MAZE-HEIGHT 17>
<GLOBAL SIZE 0>
<GLOBAL PMAX 0>
<CONSTANT DIR <TABLE <TABLE (BYTE) 0 1 2 3> <TABLE (BYTE) 0 1 3 2> <TABLE (BYTE
) 0 2 1 3> <TABLE (BYTE) 0 2 3 1> <TABLE (BYTE) 0 3 1 2> <TABLE (BYTE) 0 3 2 1>
<TABLE (BYTE) 1 0 2 3> <TABLE (BYTE) 1 0 3 2> <TABLE (BYTE) 1 2 0 3> <TABLE (
BYTE) 1 2 3 0> <TABLE (BYTE) 1 3 0 2> <TABLE (BYTE) 1 3 2 0> <TABLE (BYTE) 2 0
1 3> <TABLE (BYTE) 2 0 3 1> <TABLE (BYTE) 2 1 0 3> <TABLE (BYTE) 2 1 3 0> <
TABLE (BYTE) 2 3 0 1> <TABLE (BYTE) 2 3 1 0> <TABLE (BYTE) 3 0 1 2> <TABLE (
BYTE) 3 0 2 1> <TABLE (BYTE) 3 1 0 2> <TABLE (BYTE) 3 1 2 0> <TABLE (BYTE) 3 2
0 1> <TABLE (BYTE) 3 2 1 0>>>
<CONSTANT XOFF1 <TABLE 0 0 1 -1>>
<CONSTANT YOFF1 <TABLE -1 1 0 0>>
<CONSTANT XOFF2 <TABLE 0 0 2 -2>>
<CONSTANT YOFF2 <TABLE -2 2 0 0>>
<GLOBAL X 0>
<GLOBAL Y 0>
<GLOBAL XSTART 0>
<GLOBAL YSTART 0>
<GLOBAL XGOAL 0>
<GLOBAL YGOAL 0>
<GLOBAL LEN 0>
<GLOBAL LMAX 0>
<GLOBAL FLEN 0>
<GLOBAL XFISH 0>
<GLOBAL YFISH 0>
<DEFINE-ROUTINE BUILDMAZE>
<DEFINE-ROUTINE VISITED>
<DEFINE-ROUTINE VALID>
<DEFINE-ROUTINE FINDMOVE>
<DEFINE-ROUTINE BACKUP>
<DEFINE-ROUTINE REMOVEWALL>
<END-SEGMENT>

772
maze.zap Normal file
View File

@ -0,0 +1,772 @@
.SEGMENT "MAZE"
.FUNCT HOUSE-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "Houses and shops crowd the street on all sides, some dark and some lit by oil lamps flickering through the paper panels of the shojis."
?CCL3: EQUAL? PRSA,V?ENTER,V?BOARD,V?THROUGH \FALSE
PRINTR "As you start to move off from the cortege, Mariko calls you back, speaking in Latin. ""No, Pilot, that is not the way."""
.FUNCT RONIN-F:ANY:0:1,RARG
EQUAL? RARG,M-WINNER \FALSE
PRINTI "The ronin take orders only from Toranaga."
CRLF
CALL1 END-QUOTE
RSTACK
.FUNCT FISH-GATE-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It's just a weathered old gate with a fish carved on it."
.FUNCT AMBUSHERS-DESC:ANY:2:2,RARG,OBJ
EQUAL? RARG,M-OBJDESC? /TRUE
PRINTI "Dim figures can be seen on one of the tiled roofs of a nearby house."
RTRUE
.FUNCT AMBUSHERS-F:ANY:0:1,RARG
EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL5
PRINT STR?211
CRLF
RTRUE
?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "From here, in the dark, they are merely dim dark outlines."
.FUNCT MESSENGER-F:ANY:0:1,RARG
IN? MESSENGER,LOCAL-GLOBALS \?CCL3
CALL1 PASSIVE-VERB?
ZERO? STACK \?CCL3
PRINTR "He's gone!"
?CCL3: EQUAL? RARG,M-SUBJ /FALSE
EQUAL? RARG,M-WINNER \?CCL9
CALL1 WAKARIMASEN
RSTACK
?CCL9: EQUAL? PRSA,V?STOP /?CCL11
CALL1 HOSTILE-VERB?
ZERO? STACK /FALSE
?CCL11: FSET? MESSENGER,DEAD \?CCL16
PRINTR "Buntaro hacked him to pieces."
?CCL16: FSET? MESSENGER,RMUNGBIT /?CCL18
FSET MESSENGER,RMUNGBIT
PRINTR "You stretch to intercept the man, grabbing and nearly tackling him, and he tumbles to the ground."
?CCL18: PRINTI "Desperately you struggle with the messenger and manage to knock him down a second time."
CRLF
CALL2 SCORE-OBJECT,MESSENGER
RSTACK
.FUNCT AMBUSH-SITE-F:ANY:0:1,RARG
EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?WALK \?CCL6
PRINTR "You are pinned down by the attack. To run would be suicidal!"
?CCL6: EQUAL? PRSA,V?PUSH,V?TAKE,V?HELP /?PRD10
EQUAL? PRSA,V?PULL-BEHIND \?CCL8
?PRD10: EQUAL? PRSO,MARIKO \?CCL8
FSET? MARIKOS-LITTER,SCOREBIT \?CCL8
ICALL1 B-LIE-DOWN
PRINTI "You roll for cover, taking Mariko with you into the lee of the tumbled litter."
CRLF
CALL2 SCORE-OBJECT,MARIKOS-LITTER
RSTACK
?CCL8: EQUAL? PRSA,V?DODGE /?PRD17
EQUAL? PRSA,V?HIDE-BEHIND,V?HIDE-UNDER \FALSE
EQUAL? PRSO,MARIKOS-LITTER \FALSE
?PRD17: FSET? MARIKOS-LITTER,SCOREBIT \FALSE
ICALL1 B-LIE-DOWN
PRINTR "You roll for cover into the lee of the tumbled litter."
.FUNCT I-AMBUSH-START:ANY:0:0
GRTR? AMBUSH-PROB,100 /?CCL3
RANDOM 100
LESS? AMBUSH-PROB,STACK \?CCL3
ICALL QUEUE,I-AMBUSH-START,5
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL8
PUSH 12
JUMP ?CND6
?CCL8: PUSH 6
?CND6: ADD AMBUSH-PROB,STACK >AMBUSH-PROB
RFALSE
?CCL3: SET 'XAMBUSH,X
SET 'YAMBUSH,Y
ICALL MOVE-ALL,MAZE,AMBUSH-SITE
IN? BLACKTHORNE,MARIKOS-LITTER \?CCL11
MOVE MARIKOS-LITTER,MAZE
JUMP ?CND9
?CCL11: MOVE BLACKTHORNE,MAZE
?CND9: MOVE AMBUSHERS,AMBUSH-SITE
ICALL QUEUE,I-AMBUSH,-1
CRLF
PRINTI "The arrows come out of the night, the first impaling the captain through the throat. His lungs fill with molten fire and death swallows him. His last thought is one of wonder, for did not Lord Kiyama, his master, tell him the ambush was to be later, beside the wharves, and directed at the pirate?"
CRLF
CRLF
CALL2 GOTO,AMBUSH-SITE
RSTACK
.FUNCT I-AMBUSH:ANY:0:0
INC 'DELAY-CNT
EQUAL? AMBUSH-CNT,5 \?CND3
FSET? MESSENGER,SCOREBIT \?CCL7
FSET? MESSENGER,RMUNGBIT \?CCL10
FSET? MESSENGER,SURFACEBIT /?CCL10
FSET MESSENGER,SURFACEBIT
CRLF
PRINTR "Immediately he rolls and is on his feet again!"
?CCL10: MOVE MESSENGER,LOCAL-GLOBALS
FCLEAR MESSENGER,SCOREBIT
CRLF
PRINTR "This time the messenger scuttles away from you and is off like a hare chased by hounds."
?CCL7: IN? MESSENGER,LOCAL-GLOBALS /?CND3
FSET? MESSENGER,DEAD /?CND3
FSET MESSENGER,DEAD
CRLF
PRINTR "This time Buntaro, with a vicious chop of his sword, cuts the man down."
?CND3: SET 'DELAY-CNT,0
INC 'AMBUSH-CNT
EQUAL? AMBUSH-CNT,1 \?CCL18
CRLF
PRINTI "An arrow slams into the litter post an inch from your head! Two arrows pierce the curtains of Kiritsubo's litter, and another strikes one of the maids in the waist. As she screams, the litter bearers take to their heels into the darkness. Mariko "
FSET? MARIKOS-LITTER,SCOREBIT \?CCL21
PRINTI "stands in the open"
JUMP ?CND19
?CCL21: PRINTI "clings to you"
?CND19: PRINTR ", staring in shock at the dying maid."
?CCL18: EQUAL? AMBUSH-CNT,2 \?CCL23
CRLF
PRINTI "A shower of arrows straddles both litters."
FSET? MARIKOS-LITTER,SCOREBIT \?CCL26
FSET MARIKO,DEAD
PRINTI " One strikes Mariko in the back as she starts to run for cover. She falls to the ground and is still."
CRLF
CALL1 FAILED-SCENE
RSTACK
?CCL26: PRINTR " One thuds into the ground where Mariko was an instant ago."
?CCL23: EQUAL? AMBUSH-CNT,3 \?CCL28
MOVE TORANAGA,HERE
REMOVE TORANAGA-IN-DRAG
FSET CURTAINS,OPENBIT
CALL MARGINAL-PIC,P-IN-DRAG,TRUE-VALUE,P-IN-DRAG-CORNER,TRUE-VALUE
ZERO? STACK \?CND29
CRLF
?CND29: PRINTR "Buntaro shields Toranaga's litter with his body as best he can, then whips open the curtains. Two arrows are imbedded in Toranaga's chest and side, and he jerks them out of the armor he wears beneath the kimono. He fights his way out of the litter and stands in the street, sword drawn, an incongruous figure in kimono and hat."
?CCL28: EQUAL? AMBUSH-CNT,4 \?CCL32
REMOVE AMBUSHERS
CRLF
PRINTR "Another volley of arrows comes out of the darkness, one missing you so narrowly that it takes skin off of your cheek, and then all is silent.
Buntaro and some of his men are near the wall in pursuit but the ambushers vanish into the blackness. A dozen men race in pursuit but all know it's hopeless."
?CCL32: EQUAL? AMBUSH-CNT,5 \?CCL34
MOVE MESSENGER,HERE
FCLEAR MESSENGER,INVISIBLE
ICALL2 THIS-IS-IT,MESSENGER
SET 'OPPONENT,MESSENGER
CRLF
PRINTR "One of the officer Grays says, ""Toranaga!"" and though it is said quietly, everyone hears. Here, incredibly, is the enemy of his master, free, outside the castle walls. ""You will wait here, Lord Toranaga. You,"" he snaps at one of his men, ""report to Lord Ishido at once!"" The man races toward you, heading back toward the castle!"
?CCL34: EQUAL? AMBUSH-CNT,6 \?CCL36
ICALL REPLACE-SYNONYM,CORTEGE,W?GRAYS,W?BROWNS
MOVE GRAYS,HERE
ICALL2 THIS-IS-IT,GRAYS
CRLF
PRINTR "The rest of the Grays attack, trying to reach Toranaga. One officer whips out his two-handed sword and leaps for Toranaga but Buntaro parries. The Browns and Grays, all intermixed, erupt into a swirling melee.
The Grays fight courageously. Four join in a suicidal charge at Toranaga. The Browns break it and the Grays regroup and charge again. Then a senior officer orders three to retreat for help and the rest to guard the retreat."
?CCL36: EQUAL? AMBUSH-CNT,7 \FALSE
ICALL2 DEQUEUE,I-AMBUSH
FSET? MESSENGER,DEAD \?CCL41
REMOVE MESSENGER
JUMP ?CND39
?CCL41: ICALL QUEUE,I-CAUGHT,150
?CND39: REMOVE GRAYS
ICALL MOVE-ALL,AMBUSH-SITE,MAZE
MOVE BLACKTHORNE,AMBUSH-SITE
CRLF
PRINTI "The three Grays tear off, and though Buntaro kills one, the other two are only wounded. The rest die."
CRLF
CRLF
CALL2 GOTO,MAZE
RSTACK
.FUNCT I-CAUGHT:ANY:0:0
EQUAL? HERE,MAZE \FALSE
ICALL1 LEAVE-MAZE
CRLF
PRINTI "Ahead of you, a mass of Gray archers materializes out of the night. Above, a mass of fireworks blooms in warning from the castle. Toranaga turns, ordering the cortege to retreat down an alley, but there are Grays there too. The party is surrounded!"
CRLF
ICALL1 JIGS-UP
RETURN M-FATAL
.FUNCT MAZE-F:ANY:1:1,RARG,XX,YY,OXX,OYY,MOVED?
EQUAL? RARG,M-LOOK \?CCL3
PRINTR "This maze of streets and alleys extends from the great castle to the harbor. At night, it is a nightmare of blind alleys, twisting overhung streets, and shadowy hurrying shapes."
?CCL3: EQUAL? RARG,M-ENTER \?CCL5
ICALL2 TOUCH-SEG,P-MAZE-BACKGROUND
PICSET MAZE-PICS
FSET? HERE,TOUCHBIT /?CND6
ICALL MOVE-ALL,CITY,MAZE
PRINTI "The cortege continues through the winding, curling city streets, the pedestrians bowing and the very poor on their knees until you pass."
CRLF
CRLF
ICALL QUEUE,I-AMBUSH-START,5
PRINTI "[Building Osaka.]"
CRLF
CRLF
ICALL1 BUILDMAZE
?CND6: EQUAL? OHERE,WAREHOUSE \?CCL10
SET 'XX,XGOAL
SET 'YY,YGOAL
PRINTI "You have returned to the"
PRINT STR?563
CRLF
JUMP ?CND8
?CCL10: EQUAL? OHERE,AMBUSH-SITE \?CCL12
SET 'XX,XAMBUSH
SET 'YY,YAMBUSH
PRINTI "The cortege re-forms and prepares to continue the escape. The urgency is now great, as the escaped Grays will spread the alarm."
CRLF
JUMP ?CND8
?CCL12: SET 'XX,XSTART
SET 'YY,YSTART
PRINTI "You have entered a"
PRINT STR?563
CRLF
?CND8: CRLF
ICALL1 TYPE-ANY-KEY
ICALL1 DISPLAY-MAZE
ICALL MAZE-MOVE,XX,YY
RTRUE
?CCL5: EQUAL? RARG,M-LEAVE \?CCL14
CALL1 LEAVE-MAZE
RSTACK
?CCL14: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?DEFINE \?CCL19
CLEAR MAZE-WINDOW
RFALSE
?CCL19: EQUAL? PRSA,V?COLOR \?CCL21
PRINTR "[Sorry, you can't change colors in this part of Osaka.]"
?CCL21: EQUAL? PRSA,V?WALK \?CCL23
SET 'MOVED?,FALSE-VALUE
?PRG24: SET 'XX,X
SET 'YY,Y
SET 'OXX,X
SET 'OYY,Y
EQUAL? P-WALK-DIR,P?NORTH \?CCL28
GRTR? YY,0 \?CCL28
DEC 'YY
JUMP ?CND26
?CCL28: EQUAL? P-WALK-DIR,P?EAST \?CCL32
SUB MAZE-WIDTH,1
LESS? XX,STACK \?CCL32
INC 'XX
JUMP ?CND26
?CCL32: EQUAL? P-WALK-DIR,P?WEST \?CCL36
GRTR? XX,0 \?CCL36
DEC 'XX
JUMP ?CND26
?CCL36: EQUAL? P-WALK-DIR,P?SOUTH \?CCL40
SUB MAZE-HEIGHT,1
LESS? YY,STACK \?CCL40
INC 'YY
JUMP ?CND26
?CCL40: EQUAL? P-WALK-DIR,P?NE \?CCL44
SUB MAZE-WIDTH,1
LESS? XX,STACK \?CCL44
GRTR? YY,0 \?CCL44
INC 'XX
DEC 'YY
JUMP ?CND26
?CCL44: EQUAL? P-WALK-DIR,P?SE \?CCL49
SUB MAZE-WIDTH,1
LESS? XX,STACK \?CCL49
SUB MAZE-HEIGHT,1
LESS? YY,STACK \?CCL49
INC 'XX
INC 'YY
JUMP ?CND26
?CCL49: EQUAL? P-WALK-DIR,P?SW \?CCL54
GRTR? XX,0 \?CCL54
SUB MAZE-HEIGHT,1
LESS? YY,STACK \?CCL54
DEC 'XX
INC 'YY
JUMP ?CND26
?CCL54: EQUAL? P-WALK-DIR,P?NW \?CCL59
GRTR? XX,0 \?CCL59
GRTR? YY,0 \?CCL59
DEC 'XX
DEC 'YY
?CND26: EQUAL? XX,XSTART \?CCL65
EQUAL? YY,YSTART \?CCL65
ICALL2 GOTO,CITY
RTRUE
?CCL59: PRINTR "You can't go that way."
?CCL65: EQUAL? XX,XGOAL \?CCL69
EQUAL? YY,YGOAL \?CCL69
ICALL2 GOTO,WAREHOUSE
RTRUE
?CCL69: CALL MGETB,XX,YY
BTST STACK,128 /?CCL73
EQUAL? XX,OXX /?CTR72
EQUAL? YY,OYY /?CTR72
CALL MGETB,XX,OYY
BTST STACK,128 \?CTR72
CALL MGETB,OXX,YY
BTST STACK,128 /?CCL73
?CTR72: ICALL MAZE-MOVE,XX,YY
EQUAL? XX,XFISH \?CCL82
EQUAL? YY,YFISH \?CCL82
LOC FISH-GATE
ZERO? STACK \?CCL82
MOVE FISH-GATE,HERE
FSET? FISH-GATE,SCOREBIT \TRUE
MOVE RONIN,HERE
ICALL2 SCORE-OBJECT,FISH-GATE
PRINT STR?564
PRINTI " Toranaga stops the cortege outside a battered gate. A fish is etched into its timbers. He knocks in code. The door opens at once, and an ill-kempt samurai bows. ""Bring your men and follow me,"" Toranaga says. Fifteen men dressed as "
ICALL2 PRINTUNDER,STR?565
PRINTR " follow him and slip into place as advance and rear guard. Others spread the alarm to other secret cadres. Soon there are fifty troops with you and a hundred guarding your flanks."
?CCL82: EQUAL? OXX,XFISH \?CND80
EQUAL? OYY,YFISH \?CND80
REMOVE FISH-GATE
?CND80: EQUAL? P-WALK-DIR,P?NORTH,P?SOUTH \?CCL93
SUB XX,1
CALL MGETB,STACK,YY
BTST STACK,128 \?REP25
ADD XX,1
CALL MGETB,STACK,YY
BTST STACK,128 \?REP25
SET 'MOVED?,TRUE-VALUE
JUMP ?PRG24
?CCL93: EQUAL? P-WALK-DIR,P?EAST,P?WEST \?PRG24
SUB YY,1
CALL MGETB,XX,STACK
BTST STACK,128 \?REP25
ADD YY,1
CALL MGETB,XX,STACK
BTST STACK,128 \?REP25
SET 'MOVED?,TRUE-VALUE
JUMP ?PRG24
?CCL73: ZERO? MOVED? \?REP25
PRINTR "There's a house there."
?REP25: PRINT STR?564
CRLF
RTRUE
?CCL23: EQUAL? PRSA,V?DROP \FALSE
IN? WINNER,MAZE \FALSE
CALL1 IDROP
ZERO? STACK /TRUE
REMOVE PRSO
ICALL1 CTHE-PRINT-PRSO
PRINTR " drops to the ground and is lost from sight in the dark and confusion."
.FUNCT LEAVE-MAZE:ANY:0:0,YY,?TMP1
WINGET S-TEXT,WYPOS >?TMP1
WINGET S-TEXT,WTOP
ADD ?TMP1,STACK >YY
ICALL1 SETUP-TEXT-AND-STATUS
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1
ICALL1 DISPLAY-BORDER
?CND1: SCREEN S-TEXT
WINGET S-TEXT,WTOP
SUB YY,STACK
CURSET STACK,1
RTRUE
.FUNCT MAZE-MOUSE-F:ANY:1:1,TRM,DIR,WX,WY,BX,BY,?TMP1,?TMP2
GET MAZE-BOX-TBL,1 >BX
GET MAZE-BOX-TBL,0 >BY
WINGET MAZE-WINDOW,WTOP
ADD STACK,YOFFSET >?TMP2
MUL Y,BY
ADD ?TMP2,STACK >?TMP1
DIV BY,2
ADD ?TMP1,STACK >WY
WINGET MAZE-WINDOW,WLEFT
ADD STACK,XOFFSET >?TMP2
MUL X,BX
ADD ?TMP2,STACK >?TMP1
DIV BX,2
ADD ?TMP1,STACK >WX
SUB MOUSE-LOC-Y,WY >WY
SUB MOUSE-LOC-X,WX >WX
LESS? WX,0 /?CCL3
LESS? WY,0 \?CCL6
SUB 0,WY >WY
MUL WY,3
GRTR? WX,STACK \?CCL9
SET 'DIR,EAST-STR
JUMP ?CND1
?CCL9: MUL WX,3
GRTR? WY,STACK \?CCL11
SET 'DIR,NORTH-STR
JUMP ?CND1
?CCL11: SET 'DIR,NE-STR
JUMP ?CND1
?CCL6: MUL WY,3
GRTR? WX,STACK \?CCL14
SET 'DIR,EAST-STR
JUMP ?CND1
?CCL14: MUL WX,3
GRTR? WY,STACK \?CCL16
SET 'DIR,SOUTH-STR
JUMP ?CND1
?CCL16: SET 'DIR,SE-STR
JUMP ?CND1
?CCL3: LESS? WY,0 \?CCL18
SUB 0,WY >WY
SUB 0,WX >WX
MUL WY,3
GRTR? WX,STACK \?CCL21
SET 'DIR,WEST-STR
JUMP ?CND1
?CCL21: MUL WX,3
GRTR? WY,STACK \?CCL23
SET 'DIR,NORTH-STR
JUMP ?CND1
?CCL23: SET 'DIR,NW-STR
JUMP ?CND1
?CCL18: SUB 0,WX >WX
MUL WY,3
GRTR? WX,STACK \?CCL26
SET 'DIR,WEST-STR
JUMP ?CND1
?CCL26: MUL WX,3
GRTR? WY,STACK \?CCL28
SET 'DIR,SOUTH-STR
JUMP ?CND1
?CCL28: SET 'DIR,SW-STR
?CND1: DIV BX,2
GRTR? WX,STACK /?CCL31
DIV BY,2
GRTR? WY,STACK \FALSE
?CCL31: ZERO? DIR /FALSE
ICALL ADD-TO-INPUT,DIR,13
RETURN 13
.FUNCT MGETB:ANY:2:2,X,Y
MUL Y,MAZE-WIDTH
ADD STACK,X
GETB MAZE-MAP,STACK
RSTACK
.FUNCT MPUTB:ANY:3:3,X,Y,VAL
MUL Y,MAZE-WIDTH
ADD STACK,X
PUTB MAZE-MAP,STACK,VAL
RTRUE
.FUNCT DISPLAY-MAZE-PIC:ANY:3:3,VAL,Y,X,BY,BX,OY,OX,?TMP1,?TMP2
ZERO? VAL /FALSE
GET MAZE-BOX-TBL,0 >BY
GET MAZE-BOX-TBL,1 >BX
ADD 1,YOFFSET >?TMP2
MUL Y,BY
ADD ?TMP2,STACK >?TMP1
ADD 1,XOFFSET >?TMP2
MUL X,BX
ADD ?TMP2,STACK
DISPLAY VAL,?TMP1,STACK
RTRUE
.FUNCT MAZE-MOVE:ANY:2:2,?LCL-X,?LCL-Y,?TMP1
SCREEN MAZE-WINDOW
SET 'X,?LCL-X
SET 'Y,?LCL-Y
SUB ?LCL-X,1 >?TMP1
SUB ?LCL-Y,1
ICALL MPUTC,?TMP1,STACK
SUB ?LCL-Y,1
ICALL MPUTC,?LCL-X,STACK
ADD ?LCL-X,1 >?TMP1
SUB ?LCL-Y,1
ICALL MPUTC,?TMP1,STACK
SUB ?LCL-X,1
ICALL MPUTC,STACK,?LCL-Y
ADD ?LCL-X,1
ICALL MPUTC,STACK,?LCL-Y
SUB ?LCL-X,1 >?TMP1
ADD ?LCL-Y,1
ICALL MPUTC,?TMP1,STACK
ADD ?LCL-Y,1
ICALL MPUTC,?LCL-X,STACK
ADD ?LCL-X,1 >?TMP1
ADD ?LCL-Y,1
ICALL MPUTC,?TMP1,STACK
ICALL MPUTC,?LCL-X,?LCL-Y,P-MAZE-PARTY
SCREEN S-TEXT
RTRUE
.FUNCT MPUTC:ANY:2:3,X,Y,VAL,OVAL
CALL VALID,X,Y
ZERO? STACK /FALSE
CALL MGETB,X,Y >OVAL
ZERO? VAL \?CND4
SET 'VAL,OVAL
BTST VAL,128 /?CCL8
EQUAL? X,XSTART \?CCL11
EQUAL? Y,YSTART \?CCL11
SET 'VAL,P-MAZE-CASTLE
JUMP ?CND4
?CCL11: EQUAL? X,XGOAL \?CCL15
EQUAL? Y,YGOAL \?CCL15
SET 'VAL,P-MAZE-DOCK
JUMP ?CND4
?CCL15: EQUAL? X,XFISH \?CCL19
EQUAL? Y,YFISH \?CCL19
SET 'VAL,P-MAZE-FISH
JUMP ?CND4
?CCL19: SET 'VAL,P-MAZE-STREET
JUMP ?CND4
?CCL8: SET 'VAL,P-MAZE-WALL
?CND4: BAND OVAL,MWALL
BOR VAL,STACK >VAL
EQUAL? VAL,OVAL /FALSE
ICALL MPUTB,X,Y,VAL
BAND VAL,127
CALL DISPLAY-MAZE-PIC,STACK,Y,X
RSTACK
.FUNCT DISPLAY-MAZE:ANY:0:0,Y,BY,BX,MH,MW,TH,SH,FH,?TMP2,?TMP3,?TMP1
ICALL1 RESET-MARGIN
CLEAR S-TEXT
PICINF P-MAZE-BACKGROUND,YX-TBL /?BOGUS1
?BOGUS1: WINGET S-FULL,WHIGH >FH
WINGET S-STATUS,WHIGH >SH
GET YX-TBL,0 >MH
GET YX-TBL,1 >MW
ADD SH,MH >?TMP1
MUL 2,FONT-Y
ADD ?TMP1,STACK
GRTR? STACK,FH \?CND2
SUB FH,SH >?TMP1
MUL 2,FONT-Y
SUB ?TMP1,STACK >MH
?CND2: WINGET S-TEXT,WWIDE
GRTR? MW,STACK \?CND4
WINGET S-TEXT,WWIDE >MW
?CND4: WINGET S-STATUS,WTOP
ADD STACK,SH >Y
WINGET S-TEXT,WLEFT
ICALL WINDEF,MAZE-WINDOW,Y,STACK,MH,MW
SUB FH,SH >TH
ADD Y,MH >?TMP3
WINGET S-TEXT,WLEFT >?TMP2
SUB TH,MH >?TMP1
WINGET S-TEXT,WWIDE
ICALL WINDEF,S-TEXT,?TMP3,?TMP2,?TMP1,STACK
CLEAR S-TEXT
SCREEN MAZE-WINDOW
PICINF P-MAZE-BOX,MAZE-BOX-TBL /?BOGUS6
?BOGUS6: GET MAZE-BOX-TBL,0 >BY
GET MAZE-BOX-TBL,1 >BX
WINGET MAZE-WINDOW,WHIGH >?TMP1
MUL MAZE-HEIGHT,BY
SUB ?TMP1,STACK >YOFFSET
LESS? YOFFSET,0 \?CCL9
SET 'YOFFSET,0
JUMP ?CND7
?CCL9: DIV YOFFSET,2 >YOFFSET
?CND7: WINGET MAZE-WINDOW,WWIDE >?TMP1
MUL MAZE-WIDTH,BX
SUB ?TMP1,STACK >XOFFSET
LESS? XOFFSET,0 \?CCL12
SET 'XOFFSET,0
JUMP ?CND10
?CCL12: DIV XOFFSET,2 >XOFFSET
?CND10: ICALL1 PRINTM
SCREEN S-TEXT
RTRUE
.FUNCT PRINTM:ANY:0:0,M,OFFS,Y,X
DISPLAY P-MAZE-BACKGROUND,1,1
?PRG1: LESS? Y,MAZE-HEIGHT \TRUE
SET 'X,0
?PRG5: LESS? X,MAZE-WIDTH \?REP6
GETB MAZE-MAP,OFFS
BAND STACK,127 >M
ICALL DISPLAY-MAZE-PIC,M,Y,X
INC 'OFFS
INC 'X
JUMP ?PRG5
?REP6: INC 'Y
JUMP ?PRG1
.FUNCT BUILDMAZE:ANY:0:0,LEFT,PLEN,D,YY,XX,?TMP1
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1
SET 'MAZE-WIDTH,19
SET 'MAZE-HEIGHT,15
?CND1: DIV MAZE-WIDTH,2 >?TMP1
DIV MAZE-HEIGHT,2
MUL ?TMP1,STACK >SIZE
SET 'PMAX,SIZE
SET 'LEFT,SIZE
RANDOM 5
ADD 10,STACK >FLEN
?PRG3: LESS? YY,MAZE-HEIGHT \?REP4
SET 'XX,0
?PRG7: LESS? XX,MAZE-WIDTH \?REP8
ICALL MPUTB,XX,YY,MWALL
INC 'XX
JUMP ?PRG7
?REP8: INC 'YY
JUMP ?PRG3
?REP4: SET 'YY,1
?PRG11: LESS? YY,MAZE-HEIGHT \?REP12
SET 'XX,1
?PRG15: LESS? XX,MAZE-WIDTH \?REP16
ICALL MPUTB,XX,YY,0
ADD XX,2 >XX
JUMP ?PRG15
?REP16: ADD YY,2 >YY
JUMP ?PRG11
?REP12: SUB MAZE-WIDTH,2 >XGOAL
SET 'XSTART,XGOAL
SET 'X,XGOAL
DIV MAZE-HEIGHT,2
SUB STACK,1
RANDOM STACK
MUL STACK,2
ADD STACK,1 >YGOAL
SET 'YSTART,YGOAL
SET 'Y,YGOAL
ICALL MPUTB,X,Y,1
SET 'LEN,1
SET 'LMAX,1
SET 'XX,0
?PRG19: DEC 'LEFT
GRTR? LEFT,0 \?REP20
?PRG23: CALL MGETB,X,Y
ZERO? STACK /?CTR26
LESS? XX,PMAX \?CTR26
CALL FINDMOVE,X,Y >D
LESS? D,0 \?REP24
?CTR26: ICALL1 BACKUP
SET 'XX,0
JUMP ?PRG23
?REP24: ICALL2 REMOVEWALL,D
INC 'XX
JUMP ?PRG19
?REP20: SET 'YY,1
?PRG31: LESS? YY,MAZE-HEIGHT \?REP32
SET 'XX,1
?PRG35: LESS? XX,MAZE-WIDTH \?REP36
ICALL MPUTB,XX,YY,0
ADD XX,2 >XX
JUMP ?PRG35
?REP36: ADD YY,2 >YY
JUMP ?PRG31
?REP32: SET 'XX,0
?PRG39: LESS? XX,MAZE-WIDTH \?REP40
ICALL MPUTB,XX,0,MWALL
SUB MAZE-HEIGHT,1
ICALL MPUTB,XX,STACK,MWALL
INC 'XX
JUMP ?PRG39
?REP40: SET 'YY,1
?PRG43: SUB MAZE-HEIGHT,1
LESS? YY,STACK \?REP44
ICALL MPUTB,0,YY,MWALL
SUB MAZE-WIDTH,1
ICALL MPUTB,STACK,YY,MWALL
INC 'YY
JUMP ?PRG43
?REP44: INC 'XGOAL
CALL MPUTB,XGOAL,YGOAL,0
RSTACK
.FUNCT VISITED:ANY:2:2,XLOC,YLOC
CALL VALID,XLOC,YLOC
ZERO? STACK /TRUE
CALL MGETB,XLOC,YLOC
ZERO? STACK /FALSE
RTRUE
.FUNCT VALID:ANY:2:2,XLOC,YLOC
LESS? XLOC,0 /FALSE
LESS? XLOC,MAZE-WIDTH \FALSE
LESS? YLOC,0 /FALSE
LESS? YLOC,MAZE-HEIGHT /TRUE
RFALSE
.FUNCT FINDMOVE:ANY:2:2,XLOC,YLOC,DV,D,I,?PR-I,?TMP1
RANDOM 23 >DV
?PRG1: LESS? ?PR-I,4 /?CND3
RETURN D
?CND3: GET DIR,DV
GETB STACK,?PR-I >D
GET XOFF2,D
ADD XLOC,STACK >?TMP1
GET YOFF2,D
ADD YLOC,STACK
CALL VISITED,?TMP1,STACK
ZERO? STACK \?CCL7
RETURN D
?CCL7: SET 'D,-1
INC '?PR-I
JUMP ?PRG1
.FUNCT BACKUP:ANY:0:0,D,XX,YY,?PR-D
DEC 'LEN
?PRG1: LESS? ?PR-D,4 \?REP2
GET XOFF2,?PR-D
ADD X,STACK >XX
GET YOFF2,?PR-D
ADD Y,STACK >YY
CALL VALID,XX,YY
ZERO? STACK /?CND5
CALL MGETB,XX,YY
EQUAL? STACK,LEN /?REP2
?CND5: INC '?PR-D
JUMP ?PRG1
?REP2: SET 'X,XX
SET 'Y,YY
RTRUE
.FUNCT REMOVEWALL:ANY:1:1,D,?TMP1
GET XOFF1,D
ADD X,STACK >?TMP1
GET YOFF1,D
ADD Y,STACK
ICALL MPUTB,?TMP1,STACK,0
CALL MGETB,X,Y
ADD STACK,1 >LEN
GET XOFF2,D
ADD X,STACK >X
GET YOFF2,D
ADD Y,STACK >Y
ICALL MPUTB,X,Y,LEN
EQUAL? LEN,FLEN \?CND1
SET 'XFISH,X
SET 'YFISH,Y
?CND1: GRTR? LEN,LMAX \TRUE
SET 'LMAX,LEN
SET 'XSTART,X
SET 'YSTART,Y
RTRUE
.ENDSEG
.ENDI

View File

@ -145,8 +145,15 @@ litter." CR>
<GLOBAL YAMBUSH 0>
<ROUTINE I-AMBUSH-START ()
<COND (<OR <G? ,AMBUSH-PROB 100>
<PROB ,AMBUSH-PROB>>
<COND (<AND <L=? ,AMBUSH-PROB 100>
<NOT <PROB ,AMBUSH-PROB>>>
<QUEUE I-AMBUSH-START 5>
<SETG AMBUSH-PROB
<+ ,AMBUSH-PROB
<COND (<APPLE?> 12)
(ELSE 6)>>>
<RFALSE>)
(ELSE
<SETG XAMBUSH ,X>
<SETG YAMBUSH ,Y>
<MOVE-ALL ,MAZE ,AMBUSH-SITE>
@ -162,11 +169,7 @@ through the throat. His lungs fill with molten fire and death
swallows him. His last thought is one of wonder, for did not Lord
Kiyama, his master, tell him the ambush was to be later, beside
the wharves, and directed at the pirate?" CR CR>
<GOTO ,AMBUSH-SITE>)
(ELSE
<QUEUE I-AMBUSH-START 5>
<SETG AMBUSH-PROB <+ ,AMBUSH-PROB 6>>
<RFALSE>)>>
<GOTO ,AMBUSH-SITE>)>>
<ROUTINE I-AMBUSH ()
<ZLINES ,AMBUSH-CNT
@ -186,17 +189,18 @@ staring in shock at the dying maid." CR>)
<COND (<FSET? ,MARIKOS-LITTER ,SCOREBIT>
<FSET ,MARIKO ,DEAD>
<TELL
" One strikes Mariko in the back as she starts to run for cover. She
" One strikes Mariko in the back as she starts to run for cover. She
falls to the ground and is still." CR>
<FAILED-SCENE>)
(ELSE
<TELL
" One thuds into the ground where Mariko was an instant ago." CR>)>)
" One thuds into the ground where Mariko was an instant ago." CR>)>)
(<MOVE ,TORANAGA ,HERE>
<REMOVE ,TORANAGA-IN-DRAG>
<FSET ,CURTAINS ,OPENBIT>
<MARGINAL-PIC ,P-IN-DRAG T ,P-IN-DRAG-CORNER T>
<TELL CR
<COND (<NOT <MARGINAL-PIC ,P-IN-DRAG T ,P-IN-DRAG-CORNER T>>
<CRLF>)>
<TELL
"Buntaro shields Toranaga's litter with his body as best he can, then
whips open the curtains. Two arrows are imbedded in Toranaga's chest and
side,
@ -293,6 +297,7 @@ too. The party is surrounded!" CR>
harbor. At night, it is a nightmare of blind alleys, twisting overhung
streets, and shadowy hurrying shapes." CR>)
(<RARG? ENTER>
<TOUCH-SEG ,P-MAZE-BACKGROUND>
<PICSET ,MAZE-PICS>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<MOVE-ALL ,CITY ,MAZE>
@ -313,7 +318,7 @@ pass." CR CR>
<SET YY ,YAMBUSH>
<TELL
"The cortege re-forms and prepares to continue the escape. The urgency is
now great, as the escaped grays will spread the alarm." CR>)
now great, as the escaped Grays will spread the alarm." CR>)
(ELSE
<SET XX ,XSTART>
<SET YY ,YSTART>
@ -330,6 +335,9 @@ now great, as the escaped grays will spread the alarm." CR>)
<COND (<VERB? DEFINE>
<CLEAR ,MAZE-WINDOW>
<RFALSE>)
(<VERB? COLOR>
<TELL
"[Sorry, you can't change colors in this part of Osaka.]" CR>)
(<VERB? WALK>
<REPEAT ((MOVED? <>))
<SET XX ,X>
@ -395,13 +403,14 @@ now great, as the escaped grays will spread the alarm." CR>)
<TELL
G"You make your way through the deserted streets.">
<TELL
" Toranaga stops the cortege outside a battered gate. A fish is etched
" Toranaga stops the cortege outside a battered gate. A fish is etched
into its timbers. He knocks in code. The door opens at once, and an
ill-kempt samurai bows. \"Bring your men and follow me,\" Toranaga
says. Fifteen men, dressed as "I"ronin"" follow him and slip into
says. Fifteen men dressed as "I"ronin"" follow him and slip into
place as advance and rear guard. Others spread the alarm to other
secret cadres. Soon there are fifty troops with you and a hundred
guarding your flanks." CR>)>)
guarding your flanks." CR>)>
<RTRUE>)
(<AND <EQUAL? .OXX ,XFISH>
<EQUAL? .OYY ,YFISH>>
<REMOVE ,FISH-GATE>)>
@ -439,6 +448,7 @@ confusion." CR>)
<ROUTINE LEAVE-MAZE ("AUX" YY)
<SET YY <+ <WINGET ,S-TEXT ,WYPOS> <WINGET ,S-TEXT ,WTOP>>>
<SETUP-TEXT-AND-STATUS>
<COND (<APPLE?> <DISPLAY-BORDER>)>
<SCREEN ,S-TEXT>
<CURSET <- .YY <WINGET ,S-TEXT ,WTOP>> 1>>
@ -583,17 +593,24 @@ confusion." CR>)
<MPUTB .X .Y .VAL>
<DISPLAY-MAZE-PIC <BAND .VAL 127> .Y .X>)>)>>
<ROUTINE DISPLAY-MAZE ("AUX" Y BY BX MH TH SH)
<ROUTINE DISPLAY-MAZE ("AUX" Y BY BX MH MW TH SH FH)
<RESET-MARGIN>
<CLEAR ,S-TEXT>
<PICINF ,P-MAZE-BACKGROUND ,YX-TBL>
<SET FH <WINGET ,S-FULL ,WHIGH>>
<SET SH <WINGET ,S-STATUS ,WHIGH>>
<SET MH <GET ,YX-TBL 0>>
<SET MW <GET ,YX-TBL 1>>
<COND (<G? <+ .SH .MH <* 2 ,FONT-Y>> .FH>
<SET MH <- .FH .SH <* 2 ,FONT-Y>>>)>
<COND (<G? .MW <WINGET ,S-TEXT ,WWIDE>>
<SET MW <WINGET ,S-TEXT ,WWIDE>>)>
<WINDEF ,MAZE-WINDOW
<SET Y <+ <WINGET ,S-STATUS ,WTOP> .SH>>
<WINGET ,S-TEXT ,WLEFT>
<SET MH <GET ,YX-TBL 0>>
<GET ,YX-TBL 1>>
<SET TH <- <WINGET ,S-FULL ,WHIGH> .SH>>
.MH
.MW>
<SET TH <- .FH .SH>>
<WINDEF ,S-TEXT
<+ .Y .MH> <WINGET ,S-TEXT ,WLEFT>
<- .TH .MH> <WINGET ,S-TEXT ,WWIDE>>
@ -603,13 +620,15 @@ confusion." CR>)
<SET BY <GET ,MAZE-BOX-TBL 0>>
<SET BX <GET ,MAZE-BOX-TBL 1>>
<SETG YOFFSET
</ <- <WINGET ,MAZE-WINDOW ,WHIGH>
<* ,MAZE-HEIGHT .BY>>
2>>
<- <WINGET ,MAZE-WINDOW ,WHIGH>
<* ,MAZE-HEIGHT .BY>>>
<COND (<L? ,YOFFSET 0> <SETG YOFFSET 0>)
(ELSE <SETG YOFFSET </ ,YOFFSET 2>>)>
<SETG XOFFSET
</ <- <WINGET ,MAZE-WINDOW ,WWIDE>
<* ,MAZE-WIDTH .BX>>
2>>
<- <WINGET ,MAZE-WINDOW ,WWIDE>
<* ,MAZE-WIDTH .BX>>>
<COND (<L? ,XOFFSET 0> <SETG XOFFSET 0>)
(ELSE <SETG XOFFSET </ ,XOFFSET 2>>)>
<PRINTM>
<SCREEN ,S-TEXT>>
@ -621,11 +640,14 @@ confusion." CR>)
.Y .X>
<SET OFFS <+ .OFFS 1>>>>>
<CONSTANT MAZE-WIDTH 37>
<CONSTANT MAZE-HEIGHT 17>
<CONSTANT MAX-MAZE-WIDTH 37>
<CONSTANT MAX-MAZE-HEIGHT 17>
<GLOBAL MAZE-MAP <ITABLE <* ,MAX-MAZE-WIDTH ,MAX-MAZE-HEIGHT> (BYTE) 128>>
<GLOBAL MAZE-WIDTH 37>
<GLOBAL MAZE-HEIGHT 17>
<GLOBAL SIZE 0>
<GLOBAL PMAX 0>
<GLOBAL MAZE-MAP <ITABLE <* ,MAZE-WIDTH ,MAZE-HEIGHT> (BYTE) 128>>
<CONSTANT DIR
<TABLE <TABLE (BYTE) 0 1 2 3> <TABLE (BYTE) 0 1 3 2>
@ -659,6 +681,9 @@ confusion." CR>)
<GLOBAL YFISH 0>
<ROUTINE BUILDMAZE ("AUX" LEFT PLEN D)
<COND (<APPLE?>
<SETG MAZE-WIDTH 19>
<SETG MAZE-HEIGHT 15>)>
<SETG SIZE <* </ ,MAZE-WIDTH 2> </ ,MAZE-HEIGHT 2>>>
<SETG PMAX ,SIZE>
<SET LEFT ,SIZE>

12
menu.zabstr Normal file
View File

@ -0,0 +1,12 @@
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED MENU-WINDOW DIROUT-TABLE>
<DEFAULT-DEFINITION MENU-WINDOW <CONSTANT MENU-WINDOW 2>>
<DEFAULT-DEFINITION DIROUT-TABLE <CONSTANT DIROUT-TABLE <ITABLE 80 <BYTE 0>>>>
<DEFINE-ROUTINE GET-FROM-MENU>
<DEFINE-ROUTINE MENU-SELECT>
<DEFINE-ROUTINE PRINT-TABLE>
<DEFINE-ROUTINE STRWIDTH>
<DEFINE-ROUTINE LC>
<DEFINE-ROUTINE FIND-ITEM>
<END-SEGMENT>

245
menu.zap Normal file
View File

@ -0,0 +1,245 @@
.SEGMENT "0"
.FUNCT GET-FROM-MENU:ANY:3:4,MSG,MENU,FCN,DEF,YFULL,Y,TMP,N,WHICH,L,WID,CNT,LL,?TMP1,?TMP2
ASSIGNED? 'DEF /?CND1
SET 'DEF,1
?CND1: GET MENU,0 >L
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL4
EQUAL? MACHINE,AMIGA \?CND3
?CCL4: INC 'L
?CND3: WINGET S-TEXT,WCRCNT >Y
ZERO? Y /?CND7
ICALL2 N-CRLF,Y
ICALL1 RESET-MARGIN
?CND7: WINGET 0,WHIGH
DIV STACK,FONT-Y >TMP
WINGET 0,WLCNT
SUB TMP,STACK
GRTR? L,STACK \?CND9
WINPUT 0,WLCNT,TMP
?CND9: GET MENU,0 >LL
?PRG11: IGRTR? 'CNT,LL \?CCL15
INC 'WID
SET 'RESTORED?,TRUE-VALUE
?PRG18: ZERO? RESTORED? /?CND20
MUL L,FONT-Y
ICALL2 MAKE-ROOM-FOR,STACK
WINGET 0,WYPOS >Y
WINGET 0,WTOP
ADD STACK,Y
ADD STACK,-1 >YFULL
?CND20: CURSET Y,1
WINGET 0,WLEFT >?TMP2
MUL L,FONT-Y >?TMP1
WINGET 0,WWIDE
ICALL WINDEF,MENU-WINDOW,YFULL,?TMP2,?TMP1,STACK
SCREEN MENU-WINDOW
EQUAL? MACHINE,AMIGA /?CND22
WINGET S-TEXT,WCOLOR >LL
BAND LL,255 >?TMP1
SHIFT LL,-8
COLOR ?TMP1,STACK
?CND22: CLEAR MENU-WINDOW
SCREEN S-TEXT
PRINT MSG
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CTR25
EQUAL? MACHINE,AMIGA \?CCL26
?CTR25: SET 'LL,FONT-Y
CRLF
JUMP ?CND24
?CCL15: DIROUT D-TABLE-ON,DIROUT-TABLE
GET MENU,CNT
ICALL2 PRINT-TABLE,STACK
DIROUT D-TABLE-OFF
GET 0,24 >TMP
GRTR? TMP,WID \?PRG11
SET 'WID,TMP
JUMP ?PRG11
?CCL26: SET 'LL,0
?CND24: ADD YFULL,LL
CALL MENU-SELECT,MENU,STACK,WID,DEF >WHICH
LESS? WHICH,0 \?CCL31
RETURN WHICH
?CCL31: GET 0,8
BTST STACK,1 \?CND29
DIROUT D-SCREEN-OFF
PRINTC 32
GET MENU,WHICH
ICALL2 PRINT-TABLE,STACK
CRLF
CRLF
DIROUT D-SCREEN-ON
?CND29: CRLF
SET 'RESTORED?,FALSE-VALUE
CALL FCN,WHICH,MENU >LL
ZERO? LL /?PRG18
RETURN LL
.FUNCT MENU-SELECT:ANY:3:4,M,Y,WID,S,X,CNT,CHR,?PR-Y,OS,OICNT,ITEM,TMP,?TMP1
ASSIGNED? 'S /?CND1
SET 'S,1
?CND1: GET M,0 >CNT
GET 0,17
SUB STACK,WID
DIV STACK,2 >X
MUL CNT,FONT-Y
ICALL WINDEF,MENU-WINDOW,Y,X,STACK,WID
SCREEN MENU-WINDOW
EQUAL? MACHINE,AMIGA /?CND3
WINGET S-TEXT,WCOLOR >CHR
BAND CHR,255 >?TMP1
SHIFT CHR,-8
COLOR ?TMP1,STACK
?CND3: CLEAR MENU-WINDOW
ICALL1 CURSOR-OFF
?PRG5: IGRTR? '?PR-Y,CNT /?REP6
ICALL CCURSET,?PR-Y,1
EQUAL? ?PR-Y,S \?CND10
HLIGHT H-INVERSE
?CND10: GET M,?PR-Y
ICALL2 PRINT-TABLE,STACK
EQUAL? ?PR-Y,S \?PRG5
HLIGHT H-NORMAL
JUMP ?PRG5
?REP6: ICALL CCURSET,S,1
SET '?PR-Y,0
GET M,S >ITEM
?PRG14: ZERO? DEMO-VERSION? /?CCL18
CALL2 INPUT-DEMO,1
JUMP ?CND16
?CCL18: INPUT 1
?CND16: CALL2 CONVERT-KEYS,STACK
CALL2 LC,STACK >CHR
SET 'OS,S
SET 'OICNT,?PR-Y
EQUAL? CHR,CLICK1,CLICK2 \?CCL21
CALL2 IN-WINDOW?,SOFT-WINDOW >TMP
ZERO? TMP /?CCL21
SET 'S,TMP
EQUAL? OS,S /?CND24
ICALL CCURSET,OS,1
GET M,OS
ICALL2 PRINT-TABLE,STACK
ICALL CCURSET,S,1
HLIGHT H-INVERSE
GET M,S >ITEM
ICALL2 PRINT-TABLE,ITEM
HLIGHT H-NORMAL
CALL2 L-PIXELS,S >?TMP1
CALL STRWIDTH,ITEM,?PR-Y
ADD STACK,1
CURSET ?TMP1,STACK
?CND24: EQUAL? CHR,CLICK2 \?CCL28
CLEAR MENU-WINDOW
ICALL1 CURSOR-ON
SCREEN S-TEXT
RETURN S
?CCL28: SET 'OS,S
JUMP ?CND19
?CCL21: EQUAL? CHR,8,127 \?CCL30
GRTR? ?PR-Y,0 \?CCL30
DEC '?PR-Y
JUMP ?CND19
?CCL30: EQUAL? CHR,UP-ARROW,LEFT-ARROW,DOWN-ARROW /?CTR33
EQUAL? CHR,RIGHT-ARROW,32 \?CCL34
?CTR33: SET 'ITEM,FALSE-VALUE
SET '?PR-Y,FALSE-VALUE
EQUAL? CHR,UP-ARROW,LEFT-ARROW \?CCL39
GRTR? S,1 \?CCL42
DEC 'S
JUMP ?CND19
?CCL42: SET 'S,CNT
JUMP ?CND19
?CCL39: LESS? S,CNT \?CCL45
INC 'S
JUMP ?CND19
?CCL45: SET 'S,1
JUMP ?CND19
?CCL34: EQUAL? CHR,13 \?CCL47
CLEAR MENU-WINDOW
ICALL1 CURSOR-ON
SCREEN S-TEXT
RETURN S
?CCL47: GETB ITEM,0
LESS? ?PR-Y,STACK \?CCL49
ADD ?PR-Y,1
GETB ITEM,STACK
CALL2 LC,STACK
EQUAL? CHR,STACK \?CCL49
INC '?PR-Y
JUMP ?CND19
?CCL49: CALL FIND-ITEM,ITEM,CHR,?PR-Y,M >TMP
ZERO? TMP /?CCL53
SET 'S,TMP
INC '?PR-Y
JUMP ?CND19
?CCL53: SOUND S-BEEP
?CND19: GET M,S >ITEM
EQUAL? S,OS \?CCL55
EQUAL? ?PR-Y,OICNT /?PRG14
?CCL55: EQUAL? S,OS /?CND58
ICALL CCURSET,OS,1
GET M,OS
ICALL2 PRINT-TABLE,STACK
ICALL CCURSET,S,1
HLIGHT H-INVERSE
ICALL2 PRINT-TABLE,ITEM
HLIGHT H-NORMAL
?CND58: CALL2 L-PIXELS,S >?TMP1
CALL STRWIDTH,ITEM,?PR-Y
ADD STACK,1
CURSET ?TMP1,STACK
JUMP ?PRG14
.FUNCT PRINT-TABLE:ANY:1:2,TBL,L
ASSIGNED? 'L /?CND1
GETB TBL,0 >L
?CND1: ADD 1,TBL
PRINTT STACK,L
RTRUE
.FUNCT STRWIDTH:ANY:2:2,ITEM,ICNT
GRTR? ICNT,1 \FALSE
DIROUT D-TABLE-ON,DIROUT-TABLE
ICALL PRINT-TABLE,ITEM,ICNT
DIROUT D-TABLE-OFF
GET 0,24
RSTACK
.FUNCT LC:ANY:1:1,CHR
LESS? CHR,65 /?CCL3
GRTR? CHR,90 /?CCL3
ADD CHR,32
RSTACK
?CCL3: RETURN CHR
.FUNCT FIND-ITEM:ANY:4:4,ITEM,CHR,ICNT,MENU,S,NITEM,CCNT,C1,C2
?PRG1: GET MENU,0
IGRTR? 'S,STACK /FALSE
GET MENU,S >NITEM
GETB NITEM,0
LESS? ICNT,STACK \?PRG1
ADD ICNT,1
GETB NITEM,STACK
CALL2 LC,STACK
EQUAL? CHR,STACK \?PRG1
SET 'CCNT,0
?PRG9: IGRTR? 'CCNT,ICNT \?CND11
RETURN S
?CND11: GETB NITEM,CCNT
CALL2 LC,STACK >C1
GETB ITEM,CCNT
CALL2 LC,STACK >C2
EQUAL? C1,C2 /?PRG9
JUMP ?PRG1
.ENDSEG
.ENDI

184
misc.zabstr Normal file
View File

@ -0,0 +1,184 @@
<BEGIN-SEGMENT 0>
<PROPDEF SCENE <> (SCENE "MANY" S:FIX = <> "MANY" <BYTE .S>)>
<PROPDEF SCORE <> (SCORE N:FIX = 2 <BYTE 0> <BYTE .N>)>
<DEFINE-ROUTINE PRINT-HIM/HER>
<DEFINE-ROUTINE CPRINT-HE/SHE>
<DEFINE-ROUTINE PRINT-HE/SHE>
<DEFINE-ROUTINE PRINT-HIS/HER>
<DEFINE-ROUTINE PRINT-PLURAL>
<DEFINE-ROUTINE PRINTUNDER>
<DEFINE-ROUTINE CTHE-PRINT-PRSO>
<DEFINE-ROUTINE CTHE-PRINT-PRSI>
<DEFINE-ROUTINE CTHE-PRINT>
<DEFINE-ROUTINE THE-PRINT-PRSO>
<DEFINE-ROUTINE THE-PRINT-PRSI>
<DEFINE-ROUTINE THE-PRINT>
<DEFINE-ROUTINE CPRINTA-PRSO>
<DEFINE-ROUTINE PRINTA-PRSO>
<DEFINE-ROUTINE PRINTA-PRSI>
<DEFINE-ROUTINE PRINTA>
<DEFINE-ROUTINE DPRINT-PRSO>
<DEFINE-ROUTINE DPRINT-PRSI>
<DEFINE-ROUTINE DPRINT>
<DEFINE-ROUTINE IPRINT>
<COND (<GASSIGNED? ZILCH> <DEFINE PE (F I) <COND (<TYPE? .I LIST> <FORM .F !.I>
) (ELSE <FORM .F .I>)>> <DEFMAC P? ('V "OPT" ('O '*) ('I '*) ('W '*) "AUX" (L (
))) <COND (<N==? .I '*> <SET L (<PE PRSI? .I> !.L)>)> <COND (<N==? .O '*> <COND
(<OR <==? .V 'WALK> <==? .V ',V?WALK>> <SET L (<PE DIR? .O> !.L)>) (ELSE <SET L
(<PE PRSO? .O> !.L)>)>)> <COND (<N==? .V '*> <SET L (<PE VERB? .V> !.L)>)> <
COND (<N==? .W '*> <SET L (<PE WINNER? .W> !.L)>)> <COND (<EMPTY? <REST .L>> <1
.L>) (ELSE <FORM AND !.L>)>> <DEFMAC NOT-SOLVED? ('OBJ) <FORM FSET? .OBJ ',
SCOREBIT>> <DEFMAC SOLVED? ('OBJ) <FORM NOT <FORM FSET? .OBJ ',SCOREBIT>>> <
DEFMAC VERB? ("ARGS" ATMS) <MULTIFROB ',PRSA .ATMS>> <DEFMAC SCENE? ("ARGS"
ATMS) <MULTIFROB ',SCENE .ATMS>> <DEFMAC CONTEXT? ("ARGS" ATMS) <MULTIFROB '.
RARG .ATMS>> <DEFMAC ADJ? ("ARGS" ATMS) <MULTIFROB '<PARSE-ADJ ,PARSE-RESULT> .
ATMS>> <SETG RARG? ,CONTEXT?> <DEFMAC WINNER? ("ARGS" ATMS) <MULTIFROB ',WINNER
.ATMS>> <DEFMAC PRSO? ("ARGS" ATMS) <MULTIFROB ',PRSO .ATMS>> <DEFMAC DIR? (
"ARGS" ATMS) <MULTIFROB ',P-WALK-DIR .ATMS>> <DEFMAC PRSI? ("ARGS" ATMS) <
MULTIFROB ',PRSI .ATMS>> <DEFMAC HERE? ("ARGS" ATMS) <MULTIFROB ',HERE .ATMS>>
<SETG ROOM? ,HERE?> <DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ())
ATM SP) <REPEAT () <COND (<EMPTY? .ATMS> <RETURN <COND (<LENGTH? .OO 1> <ERROR
.X>) (<LENGTH? .OO 2> <NTH .OO 2>) (ELSE <CHTYPE .OO FORM>)>>)> <REST <PUTREST
.O <SET O (<REPEAT ((LL <FORM EQUAL? .X>) (L <REST .LL>)) <COND (<OR <EMPTY? .
ATMS> <==? <LENGTH <REST .LL 2>> 3>> <RETURN .LL>)> <SET ATM <NTH .ATMS 1>> <
PUTREST .L <SET L (<COND (<TYPE? .ATM ATOM> <SET SP <SPNAME .ATM>> <MAKE-GVAL <
COND (<==? .X ',PRSA> <PARSE <STRING "V?" .SP>>) (<==? .X ',P-WALK-DIR> <COND (
<AND <G? <LENGTH .SP> 2> <==? <1 .SP> !\P> <==? <2 .SP> !\?>> .ATM) (ELSE <
PARSE <STRING "P?" .SP>>)>) (<==? .X '.RARG> <COND (<AND <G? <LENGTH .SP> 2> <
==? <1 .SP> !\M> <==? <2 .SP> !\->> .ATM) (ELSE <PARSE <STRING "M-" .SP>>)>) (
ELSE .ATM)>>) (ELSE .ATM)>)>> <SET ATMS <REST .ATMS>>>)>>>>>) (ELSE <DEFINE P?
(V "OPT" (O '*) (I '*) (W '*) "AUX" (L <>)) <AND <OR <==? .W '*> <WINNER? .W>>
<OR <==? .V '*> <VERB? .V>> <OR <==? .O '*> <PRSO? .O>> <OR <==? .I '*> <PRSI?
.I>>>> <DEFINE VERB? ("TUPLE" ATMS) <MAPF <> <FUNCTION (A "AUX" ATM) <COND (<
TYPE? .A ATOM> <COND (<SET ATM <LOOKUP <STRING "V?" <SPNAME .A>> <MOBLIST
INITIAL>>> <COND (<EQUAL? ,PRSA ,.ATM> <MAPLEAVE T>)>) (ELSE <ERROR NOT-A-VERB?
.A>)>) (<EQUAL? ,PRSA .A> <MAPLEAVE T>)>> .ATMS>> <DEFINE CONTEXT? ("TUPLE"
ATMS) <MAPF <> <FUNCTION (A "AUX" ATM) <COND (<TYPE? .A ATOM> <COND (<AND <G? <
LENGTH <SET ATM <SPNAME .A>>> 2> <==? <1 .ATM> !\M> <==? <2 .ATM> !\->> <COND (
<EQUAL? .RARG ,.ATM> <MAPLEAVE T>)>) (<SET ATM <LOOKUP <STRING "M-" <SPNAME .A>
> <MOBLIST INITIAL>>> <COND (<EQUAL? .RARG ,.ATM> <MAPLEAVE T>)>) (ELSE <ERROR
NOT-A-CONTEXT? .A>)>) (<EQUAL? .RARG .A> <MAPLEAVE T>)>> .ATMS>> <SETG RARG? ,
CONTEXT?> <DEFINE WINNER? ("TUPLE" ATMS) <MULTIFROB ,WINNER .ATMS>> <DEFINE
PRSO? ("TUPLE" ATMS) <MULTIFROB ,PRSO .ATMS>> <DEFINE PRSI? ("TUPLE" ATMS) <
MULTIFROB ,PRSI .ATMS>> <DEFINE HERE? ("TUPLE" ATMS) <MULTIFROB HERE .ATMS>> <
SETG ROOM? ,HERE?> <DEFINE MULTIFROB (X ATMS) <MAPF <> <FUNCTION (A) <COND (<
TYPE? .A ATOM> <SET A ,.A>)> <COND (<EQUAL? .X .A> <MAPLEAVE T>)>> .ATMS>>)>
<COND (<GASSIGNED? ZILCH> <DEFMAC BSET ('OBJ "ARGS" BITS) <MULTIBITS FSET .OBJ
.BITS>> <DEFMAC BCLEAR ('OBJ "ARGS" BITS) <MULTIBITS FCLEAR .OBJ .BITS>> <
DEFMAC BSET? ('OBJ "ARGS" BITS) <MULTIBITS FSET? .OBJ .BITS>> <DEFINE MULTIBITS
(X OBJ ATMS "AUX" (OT <COND (<==? .X FSET?> <FORM OR>) (ELSE <FORM PROG ()>)>)
(OO <COND (<LENGTH? .OT 1> .OT) (ELSE <REST .OT>)>) (O .OO) ATM) <REPEAT () <
COND (<EMPTY? .ATMS> <RETURN .OT>)> <SET ATM <NTH .ATMS 1>> <SET ATMS <REST .
ATMS>> <PUTREST .O <SET O (<FORM .X .OBJ <COND (<TYPE? .ATM FORM> .ATM) (ELSE <
MAKE-GVAL .ATM>)>>)>>>>) (ELSE <DEFINE BSET (OBJ "TUPLE" BITS) <MULTIBITS ,FSET
.OBJ .BITS>> <DEFINE BCLEAR (OBJ "TUPLE" BITS) <MULTIBITS ,FCLEAR .OBJ .BITS>>
<DEFINE BSET? (OBJ "TUPLE" BITS) <MAPF <> <FUNCTION (A) <COND (<FSET? .OBJ ,.A>
<MAPLEAVE T>)>> .BITS>> <DEFINE MULTIBITS (X OBJ ATMS) <MAPF <> <FUNCTION (A) <
APPLY .X .OBJ ,.A>> .ATMS>>)>
<DEFMAC RFATAL () '<RETURN ,M-FATAL>>
<COND (<GASSIGNED? ZILCH> <DEFMAC PROB ('BASE?) <FORM NOT <FORM L? .BASE? '<
RANDOM 100>>>>) (ELSE <DEFINE PROB (BASE?) <NOT <L? .BASE? <RANDOM 100>>>>)>
<DEFINE-ROUTINE PICK-ONE>
<DEFMAC APPLE? () '<EQUAL? ,MACHINE ,APPLE-2E ,APPLE-2C ,APPLE-2GS>>
<GLOBAL P-WON <>>
<GLOBAL SCENE 0>
<DEFINE-ROUTINE SCENE-SELECT>
<DEFINE-ROUTINE SCENE-SELECT-F>
<CONSTANT PART-MENU <LTABLE <TABLE (PURE STRING LENGTH) "START the game "> <
TABLE (PURE STRING LENGTH) "RESTORE a saved game "> <TABLE (PURE STRING LENGTH)
"QUIT the game ">>>
<CONSTANT SCENE-NAMES <PLTABLE "Erasmus" "Anjiro" "Yabu" "Pit" "Rodrigues"
"Voyage to Osaka" "Toranaga" "Prison" "Mariko" "Escape" "Earthquake"
"Journey to Yedo" "Ochiba" "Departure" "Seppuku" "Ninja" "Yokohama" "Aftermath"
"Epilogue">>
<DEFMAC SCENE-CONSTANTS ("TUPLE" SS "AUX" (CNT 0)) <MAPF ,PLTABLE <FUNCTION (S)
<EVAL <FORM CONSTANT .S <SET CNT <+ .CNT 1>>>>> .SS>>
<CONSTANT SCENES <SCENE-CONSTANTS S-ERASMUS S-ANJIRO S-YABU S-PIT S-RODRIGUES
S-VOYAGE S-TORANAGA S-PRISON S-MARIKO S-ESCAPE S-QUAKE S-JOURNEY S-OCHIBA
S-DEPARTURE S-SEPPUKU S-NINJA S-YOKOHAMA S-AFTERMATH S-EPILOGUE>>
<CONSTANT SCENE-LOCS <PLTABLE BRIDGE-OF-ERASMUS MURA-HOUSE VILLAGE-SQUARE PIT
ANJIRO-WATERFRONT GALLEY OUTER-CORRIDOR PRISON MAPLE-GLADE COURTYARD PLATEAU
YOKOSE-BATH-HOUSE OCHIBA-ROOM FORECOURT FORMAL-GARDEN PRIVATE-QUARTERS YOKOHAMA
STABLE SEKIGAHARA>>
<CONSTANT SCENE-PICS <TABLE (PURE BYTE LENGTH) P-STORM P-GARDEN P-YABU-SEG
P-PIT P-RODRIGUES-SEG P-CONFUSION P-OSAKA P-PRISON-SEG P-MARIKO-SEG
P-PROCESSION P-QUAKE P-BATH P-OCHIBA-SEG P-DEPARTURE-SEG P-SEPPUKU P-NINJA
P-VINCK P-AFTERMATH-SEG P-CREST>>
<GLOBAL MACHINE <>>
<GLOBAL WIDTH 0>
<END-SEGMENT>
<BEGIN-SEGMENT STARTUP>
<DEFINE-ROUTINE GO>
<DEFINE-ROUTINE SLIDE-SHOW>
<DEFINE-ROUTINE END-DEMO>
<END-SEGMENT>
<BEGIN-SEGMENT 0>
<CONSTANT S-FULL 7>
<DEFINE-ROUTINE SETUP-FULL>
<DEFINE-ROUTINE SETUP-DISPLAY>
<DEFINE-ROUTINE REPAINT-DISPLAY>
<DEFINE-ROUTINE GOTO-SCENE>
<DEFINE-ROUTINE TOUCH-SEG>
<DEFINE-ROUTINE GAME-VERB?>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<DEFINE-ROUTINE END-QUOTE>
<GLOBAL CLOCK-WAIT <>>
<GLOBAL C-TABLE <ITABLE 13 <> <>>>
<CONSTANT C-INTLEN 4>
<CONSTANT C-RTN 0>
<CONSTANT C-TICK 1>
<CONSTANT C-TABLELEN 52>
<GLOBAL C-INTS 52>
<DEFINE-ROUTINE DEQUEUE>
<DEFINE-ROUTINE QUEUED?>
<DEFINE-ROUTINE QUEUE>
<GLOBAL STATIONARY? <>>
<GLOBAL STATIONARY-CNT <>>
<GLOBAL CLOCK-HAND <>>
<DEFINE-ROUTINE CLOCKER>
<DEFINE-ROUTINE DEQUEUE-ALL>
<DEFINE PSEUDO ("TUPLE" V) <MAPF ,PLTABLE <FUNCTION (OBJ) <COND (<N==? <LENGTH
.OBJ> 3> <ERROR BAD-THING .OBJ>)> <MAPRET <COND (<NTH .OBJ 1> <VOC <SPNAME <NTH
.OBJ 1>> ADJECTIVE>)> <COND (<NTH .OBJ 2> <VOC <SPNAME <NTH .OBJ 2>> NOUN>)>>>
.V>>
<DEFINE-ROUTINE PERFORM-PRSA>
<DEFINE-ROUTINE NEW-VERB>
<DEFINE-ROUTINE SWAP-VERB>
<DEFINE-ROUTINE NEW-PRSO>
<DEFINE-ROUTINE NEW-WINNER-PRSO>
<DEFINE-ROUTINE REDIRECT>
<GLOBAL DELAY-CNT 0>
<COND (<GASSIGNED? ZILCH> <DEFMAC ZLINES ('VAR:<PRIMTYPE ATOM> "ARGS" LINES:
LIST "AUX" (CNT:FIX 0) SETTER:ATOM (DELAYS:<OR FALSE LIST> <>)) <COND (<TYPE? .
VAR ATOM> <EVAL <FORM GLOBAL .VAR 0>> <SET SETTER <CHTYPE .VAR GVAL>>) (<TYPE?
.VAR GVAL> <EVAL <FORM GLOBAL <CHTYPE .VAR ATOM> 0>> <SET SETTER 'SETG>) (<
TYPE? .VAR LVAL> <EVAL <FORM GLOBAL <CHTYPE .VAR ATOM> 0>> <SET SETTER 'SET>)>
<SET DELAYS <MAPF ,LIST <FUNCTION (LINE:LIST) <COND (<EMPTY? .LINE> <MAPRET>) (
<==? <1 .LINE> DELAY> <MAPRET (<FORM EQUAL? .VAR .CNT> !<REST .LINE!>)>) (ELSE
<COND (<AND <NOT <EMPTY? .LINE>> <TYPE? <1 .LINE> FIX>> <SET CNT <+ .CNT <1 .
LINE>>> <SET LINE <REST .LINE>>) (ELSE <SET CNT <+ .CNT 1>>)> <MAPRET>)>> .
LINES>> <SET CNT 0> <COND (<NOT <EMPTY? .DELAYS>> <SET DELAYS ('<SETG DELAY-CNT
<+ ,DELAY-CNT 1>> <FORM COND !.DELAYS> '<SETG DELAY-CNT 0>)>)> <FORM PROG () !.
DELAYS <FORM .SETTER <CHTYPE .VAR ATOM> <FORM + .VAR 1>> <FORM COND !<MAPF ,
LIST <FUNCTION (LINE:LIST) <COND (<NOT <EMPTY? .LINE>> <COND (<==? <1 .LINE>
DELAY> <MAPRET>) (<TYPE? <1 .LINE> FIX> <SET CNT <+ .CNT <1 .LINE>>> <SET LINE
<REST .LINE>>) (ELSE <SET CNT <+ .CNT 1>>)> <LIST <FORM EQUAL? .VAR .CNT> !.
LINE>) (ELSE <ERROR BAD-ZLINES>)>> .LINES!>>>>) (ELSE <DEFINE ZLINES (VAR
"ARGS" LINES) <RFALSE>>)>
<COND (<GASSIGNED? ZILCH> <DEFMAC FOR ('X "ARGS" BODY) <FORM REPEAT (<1 .X>) <
FORM COND (<FORM NOT <2 .X>> '<RETURN>)> !.BODY <3 .X>>>)>
<DEFINE-ROUTINE CREWMAN?>
<DEFINE-ROUTINE WINDEF>
<GLOBAL FONT-X 7>
<GLOBAL FONT-Y 10>
<DEFINE-ROUTINE C-PIXELS>
<DEFINE-ROUTINE L-PIXELS>
<DEFINE-ROUTINE CCURSET>
<DEFINE-ROUTINE IN-SCENE?>
<DEFINE-ROUTINE REPLACE-SYNONYM>
<DEFINE-ROUTINE REPLACE-ADJECTIVE>
<DEFINE-ROUTINE CURSOR-OFF>
<DEFINE-ROUTINE CURSOR-ON>
<END-SEGMENT>

698
misc.zap Normal file
View File

@ -0,0 +1,698 @@
.SEGMENT "0"
.FUNCT PRINT-HIM/HER:ANY:1:1,X
FSET? X,PLURAL \?CCL3
PRINTI "them"
RTRUE
?CCL3: FSET? X,PERSON \?CCL5
EQUAL? X,ME,WINNER \?CCL8
PRINTI "yourself"
RTRUE
?CCL8: FSET? X,FEMALE \?CCL10
PRINTI "her"
RTRUE
?CCL10: PRINTI "him"
RTRUE
?CCL5: PRINTI "it"
RTRUE
.FUNCT CPRINT-HE/SHE:ANY:1:1,X
FSET? X,PLURAL \?CCL3
PRINTI "They"
RTRUE
?CCL3: FSET? X,PERSON \?CCL5
EQUAL? X,ME,WINNER \?CCL8
PRINTI "You"
RTRUE
?CCL8: FSET? X,FEMALE \?CCL10
PRINTI "She"
RTRUE
?CCL10: PRINTI "He"
RTRUE
?CCL5: PRINTI "It"
RTRUE
.FUNCT PRINT-HE/SHE:ANY:1:1,X
FSET? X,PLURAL \?CCL3
PRINTI "they"
RTRUE
?CCL3: FSET? X,PERSON \?CCL5
EQUAL? X,ME,WINNER \?CCL8
PRINTI "yourself"
RTRUE
?CCL8: FSET? X,FEMALE \?CCL10
PRINTI "she"
RTRUE
?CCL10: PRINTI "he"
RTRUE
?CCL5: PRINTI "it"
RTRUE
.FUNCT PRINT-HIS/HER:ANY:1:1,X
FSET? X,PLURAL \?CCL3
PRINTI "their"
RTRUE
?CCL3: FSET? X,PERSON \?CCL5
EQUAL? X,ME,WINNER \?CCL8
PRINTI "your"
RTRUE
?CCL8: FSET? X,FEMALE \?CCL10
PRINTI "her"
RTRUE
?CCL10: PRINTI "his"
RTRUE
?CCL5: PRINTI "its"
RTRUE
.FUNCT PRINT-PLURAL:ANY:1:1,OBJ
FSET? OBJ,PLURAL /FALSE
PRINTC 115
RTRUE
.FUNCT PRINTUNDER:ANY:1:1,X
HLIGHT H-UNDER
PRINT X
HLIGHT H-NORMAL
RTRUE
.FUNCT CTHE-PRINT-PRSO:ANY:0:0
CALL THE-PRINT,PRSO,TRUE-VALUE
RSTACK
.FUNCT CTHE-PRINT-PRSI:ANY:0:0
CALL THE-PRINT,PRSI,TRUE-VALUE
RSTACK
.FUNCT CTHE-PRINT:ANY:1:1,O
CALL THE-PRINT,O,TRUE-VALUE
RSTACK
.FUNCT THE-PRINT-PRSO:ANY:0:0
CALL2 THE-PRINT,PRSO
RSTACK
.FUNCT THE-PRINT-PRSI:ANY:0:0
CALL2 THE-PRINT,PRSI
RSTACK
.FUNCT THE-PRINT:ANY:1:2,O,CAP?
FSET? O,NOTHEBIT /?PRD2
PUSH 1
JUMP ?PEN1
?PRD2: PUSH 0
?PEN1: CALL DPRINT,O,CAP?,STACK
RSTACK
.FUNCT CPRINTA-PRSO:ANY:0:0
CALL PRINTA,PRSO,TRUE-VALUE
RSTACK
.FUNCT PRINTA-PRSO:ANY:0:0
CALL2 PRINTA,PRSO
RSTACK
.FUNCT PRINTA-PRSI:ANY:0:0
CALL2 PRINTA,PRSI
RSTACK
.FUNCT PRINTA:ANY:1:2,O,CAP?
FSET? O,THE \?CCL3
ZERO? CAP? /?CCL6
PRINTI "The "
JUMP ?CND1
?CCL6: PRINTI "the "
JUMP ?CND1
?CCL3: FSET? O,NOABIT /?CND1
FSET? O,AN \?CCL10
ZERO? CAP? /?CCL13
PRINTI "An "
JUMP ?CND1
?CCL13: PRINTI "an "
JUMP ?CND1
?CCL10: ZERO? CAP? /?CCL15
PRINTI "A "
JUMP ?CND1
?CCL15: PRINTI "a "
?CND1: CALL2 IPRINT,O
RSTACK
.FUNCT DPRINT-PRSO:ANY:0:0
CALL2 DPRINT,PRSO
RSTACK
.FUNCT DPRINT-PRSI:ANY:0:0
CALL2 DPRINT,PRSI
RSTACK
.FUNCT DPRINT:ANY:1:3,O,CAP?,THE?,S
EQUAL? O,PLAYER,ME \?CCL3
ZERO? CAP? /?CCL6
PRINTI "You"
RTRUE
?CCL6: PRINTI "you"
RTRUE
?CCL3: EQUAL? O,RUTTER \?CCL8
ZERO? CAP? /?CCL8
PRINTI "Your rutter"
RTRUE
?CCL8: CALL2 GET-OWNER,O >S
ZERO? S /?CCL13
GETP O,P?OWNER
EQUAL? S,STACK /?CCL13
EQUAL? S,PLAYER \?CCL18
ZERO? CAP? /?CCL21
PRINTI "Your "
JUMP ?CND11
?CCL21: PRINTI "your "
JUMP ?CND11
?CCL18: ICALL DPRINT,S,CAP?
PRINTI "'s "
JUMP ?CND11
?CCL13: ZERO? THE? \?CCL22
FSET? O,THE \?CND11
?CCL22: ZERO? CAP? /?CCL27
PRINTI "The "
JUMP ?CND11
?CCL27: PRINTI "the "
?CND11: CALL2 IPRINT,O
RSTACK
.FUNCT IPRINT:ANY:1:1,O,TMP
GETP O,P?SDESC >TMP
ZERO? TMP /?CCL3
PRINT TMP
RTRUE
?CCL3: PRINTD O
RTRUE
.FUNCT PICK-ONE:ANY:1:1,FROB,L,CNT,RND,MSG,RFROB
GET FROB,0 >L
GET FROB,1 >CNT
DEC 'L
ADD FROB,2 >FROB
MUL CNT,2
ADD FROB,STACK >RFROB
SUB L,CNT
RANDOM STACK >RND
GET RFROB,RND >MSG
GET RFROB,1
PUT RFROB,RND,STACK
PUT RFROB,1,MSG
INC 'CNT
EQUAL? CNT,L \?CND1
SET 'CNT,0
?CND1: PUT FROB,0,CNT
RETURN MSG
.FUNCT SCENE-SELECT:ANY:0:1,FULL?,TMP,M,WID,WHICH,L,Y,END,?TMP1
GET PART-MENU,0
ADD STACK,1 >L
WINGET S-FULL,WHIGH
ADD 1,STACK >END
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1
ADD L,2 >L
?CND1: MUL L,FONT-Y >TMP
SUB END,TMP >Y
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND3
MUL 2,FONT-Y
SUB Y,STACK >Y
?CND3: WINGET S-TEXT,WLEFT >?TMP1
WINGET S-TEXT,WWIDE
ICALL WINDEF,S-TEXT,Y,?TMP1,TMP,STACK
ICALL1 RESET-MARGIN
?PRG5: CLEAR S-TEXT
SCREEN S-TEXT
CALL GET-FROM-MENU,STR?6,PART-MENU,SCENE-SELECT-F,1 >WHICH
ZERO? WHICH /?PRG5
RTRUE
.FUNCT SCENE-SELECT-F:ANY:2:2,TMP,M
EQUAL? TMP,1 \?CCL3
ICALL1 SETUP-TEXT-AND-STATUS
GET SCENES,1 >SCENE
RETURN SCENE
?CCL3: EQUAL? TMP,2 \?CCL5
CLEAR S-TEXT
ICALL1 V-RESTORE
ICALL1 RESET-MARGIN
CLEAR S-TEXT
RFALSE
?CCL5: EQUAL? TMP,3 \FALSE
CLEAR S-TEXT
ICALL V-QUIT,TRUE-VALUE,FALSE-VALUE
ICALL1 RESET-MARGIN
CLEAR S-TEXT
RFALSE
.ENDSEG
.SEGMENT "STARTUP"
.FUNCT GO:ANY:0:0
?FCN: MOUSE-LIMIT -1
GETB 0,30 >MACHINE
GETB 0,45 >FG-COLOR
GETB 0,44 >BG-COLOR
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL4
SET 'TEXT-MARGIN,0
PICINF P-BORDER,YX-TBL \?CND2
GET YX-TBL,0 >BORDER-HEIGHT
JUMP ?CND2
?CCL4: SET 'TEXT-MARGIN,2
?CND2: SET 'LIT,TRUE-VALUE
ADD C-TABLE,C-TABLELEN >CLOCK-HAND
SET 'PLAYER,BLACKTHORNE
ICALL1 SETUP-FULL
ICALL1 TITLE-SCREEN
ZERO? DEMO-VERSION? /?CND7
ICALL1 SLIDE-SHOW
JUMP ?FCN
?CND7: ICALL1 SETUP-DISPLAY
ICALL1 SCENE-SELECT
ICALL GOTO-SCENE,SCENE,FALSE-VALUE
CALL1 MAIN-LOOP
RSTACK
.FUNCT SLIDE-SHOW:ANY:0:0
CLEAR -1
PRINTI "This is a demonstration version of SHOGUN.
First you will see a few samples of the graphic screens that await you in SHOGUN. We've used graphics in surprising new ways to enhance the story without detracting from Infocom's traditional richness and depth.
Then you will be able to interact with a small section of SHOGUN. Feel free to try the new friendlier parser, the optional mouse interface, and the on-screen hints.
SHOGUN is an adaptation of James Clavell's novel, which has sold over 7 million copies and inspired the popular T.V. mini-series. Dave Lebling, while collaborating with Clavell, has incorporated the creative style and rich prose that have made his earlier ZORK titles so popular.
In SHOGUN you are transcended into the world of Clavell's saga, which combines all of the mystery and action of a great adventure story with the intensity and romance of a classic love story. Whether you find yourself matching wits with tyrannical Japanese aristocrats or fighting off attacks by Ninja assassins, you are sure to be both challenged and entertained. Both the action and the intriguing, historical locale set the stage for unparalleled fun and excitement.
"
ICALL1 TYPE-ANY-KEY
CALL1 END-DEMO
RSTACK
.FUNCT END-DEMO:ANY:0:0
?FCN: CLEAR -1
PRINTI "
You have reached the end of this demonstration version of
"
ICALL1 V-VERSION
PRINTI "
"
ICALL1 TYPE-ANY-KEY
SCREEN S-TEXT
RESTART
PRINT FAILED
JUMP ?FCN
.ENDSEG
.SEGMENT "0"
.FUNCT SETUP-FULL:ANY:0:0,HIGH,WIDE,X
GET 0,18 >HIGH
GET 0,17 >WIDE
ICALL WINDEF,S-FULL,1,1,HIGH,WIDE
WINGET S-TEXT,WFSIZE >X
SHIFT X,-8 >FONT-Y
BAND X,255 >FONT-X
RETURN FONT-X
.FUNCT SETUP-DISPLAY:ANY:0:0,HIGH,WIDE
GET 0,18 >HIGH
GET 0,17 >WIDE
MOUSE-LIMIT -1
ICALL1 SETUP-FULL
ICALL1 SETUP-TEXT-AND-STATUS
WINGET S-TEXT,WWIDE >WIDE
MARGIN TEXT-MARGIN,TEXT-MARGIN,S-TEXT
MUL 2,TEXT-MARGIN
SUB WIDE,STACK >WIDE
GETB P-INBUF,0 >WIDTH
DIV WIDE,FONT-X >WIDE
LESS? WIDE,WIDTH \FALSE
SET 'WIDTH,WIDE
GRTR? WIDE,INBUF-LENGTH \?CCL6
PUSH INBUF-LENGTH
JUMP ?CND4
?CCL6: PUSH WIDE
?CND4: PUTB P-INBUF,0,STACK
RTRUE
.FUNCT REPAINT-DISPLAY:ANY:0:1,NO-BORDER?
ICALL1 RESET-MARGIN
ICALL1 NORMAL-COLOR
ICALL1 SETUP-DISPLAY
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL2
ZERO? NO-BORDER? \?CND1
?CCL2: ICALL1 DISPLAY-BORDER
?CND1: ICALL2 INIT-STATUS-LINE,TRUE-VALUE
EQUAL? HERE,MAZE \FALSE
CALL1 DISPLAY-MAZE
RSTACK
.FUNCT GOTO-SCENE:ANY:1:2,SC,OSC
ASSIGNED? 'OSC /?CND1
SET 'OSC,SCENE
?CND1: CLEAR S-TEXT
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL5
ZERO? OSC \?CCL5
SCREEN S-STATUS
CLEAR S-STATUS
ICALL2 DISPLAY-BORDER,P-EBORDER
JUMP ?CND3
?CCL5: EQUAL? CURRENT-BORDER,P-BORDER /?CND3
ICALL2 DISPLAY-BORDER,P-BORDER
?CND3: ICALL1 END-QUOTE
ICALL1 RESET-MARGIN
ICALL1 DEQUEUE-ALL
SET 'ORPHAN-ANSWER,FALSE-VALUE
SET 'SCENE,SC
GET SCENE-LOCS,SCENE >HERE
GETB SCENE-PICS,SCENE
ICALL2 TOUCH-SEG,STACK
FCLEAR HERE,TOUCHBIT
SET 'QCONTEXT,FALSE-VALUE
ICALL2 MOVE-ALL,BLACKTHORNE
MOVE BLACKTHORNE,HERE
FCLEAR BLACKTHORNE,RMUNGBIT
SET 'P-IT-OBJECT,FALSE-VALUE
SET 'P-HIM-OBJECT,FALSE-VALUE
SET 'P-HER-OBJECT,FALSE-VALUE
SET 'P-THEM-OBJECT,FALSE-VALUE
ICALL1 B-STAND
SET 'OPPONENT,FALSE-VALUE
GETP HERE,P?ACTION
ICALL STACK,M-SCENE-SETUP
SET 'WINNER,PLAYER
CLEAR S-TEXT
ZERO? OSC \?CCL11
CLEAR S-STATUS
ICALL1 INIT-STATUS-LINE
JUMP ?CND9
?CCL11: ICALL2 UPDATE-STATUS-LINE,TRUE-VALUE
?CND9: ICALL2 GOTO,HERE
ZERO? OSC \TRUE
ICALL1 CLOCKER
SET 'MOVES,0
RTRUE
.FUNCT TOUCH-SEG:ANY:1:1,S
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL3
EQUAL? MACHINE,IBM \FALSE
?CCL3: PICINF S,YX-TBL /TRUE
RFALSE
.FUNCT GAME-VERB?:ANY:0:0
EQUAL? PRSA,V?TELL \?CCL3
ZERO? P-CONT \TRUE
?CCL3: EQUAL? PRSA,V?HELP \?CCL7
ZERO? PRSO /TRUE
?CCL7: EQUAL? PRSA,V?QUIT,V?VERSION,V?BRIEF /TRUE
EQUAL? PRSA,V?SUPER-BRIEF,V?VERBOSE,V?COLOR /TRUE
EQUAL? PRSA,V?$VERIFY,V?RESTART,V?SAVE /TRUE
EQUAL? PRSA,V?RESTORE,V?SCRIPT,V?UNSCRIPT /TRUE
EQUAL? PRSA,V?UNDO,V?SCORE,V?TIME /TRUE
EQUAL? PRSA,V?DEFINE,V?$REFRESH,V?NOTIFY /TRUE
EQUAL? PRSA,V?HINT,V?HINTS-OFF,V?CREDITS /TRUE
EQUAL? PRSA,V?$RANDOM,V?$COMMAND,V?$RECORD /TRUE
EQUAL? PRSA,V?$UNRECORD /TRUE
RFALSE
.FUNCT END-QUOTE:ANY:0:0
SET 'P-CONT,FALSE-VALUE
RETURN M-FATAL
.FUNCT DEQUEUE:ANY:1:1,RTN,TIM
CALL2 QUEUED?,RTN >RTN
ZERO? RTN /FALSE
GET RTN,C-TICK >TIM
PUT RTN,C-RTN,0
RETURN TIM
.FUNCT QUEUED?:ANY:1:1,RTN,C,E
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E /FALSE
GET C,C-RTN
EQUAL? STACK,RTN \?CND3
GET C,C-TICK
ZERO? STACK /FALSE
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT QUEUE:ANY:2:3,RTN,TICK,I?,C,E,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?CCL5
ZERO? INT /?CCL8
SET 'C,INT
JUMP ?CND6
?CCL8: SUB C-INTS,C-INTLEN >C-INTS
ADD C-TABLE,C-INTS >INT
?CND6: PUT INT,C-RTN,RTN
JUMP ?REP2
?CCL5: GET C,C-RTN
EQUAL? STACK,RTN \?CCL10
ZERO? I? \FALSE
SET 'INT,C
?REP2: GRTR? INT,CLOCK-HAND \?CND15
ADD TICK,3
SUB 0,STACK >TICK
?CND15: PUT INT,C-TICK,TICK
RETURN INT
?CCL10: GET C,C-RTN
ZERO? STACK \?CND3
SET 'INT,C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT CLOCKER:ANY:0:0,E,TICK,RTN,FLG,Q?,OWINNER,TMP
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: EQUAL? HERE,STATIONARY? \?CCL5
INC 'STATIONARY-CNT
JUMP ?CND3
?CCL5: SET 'STATIONARY?,HERE
SET 'STATIONARY-CNT,0
?CND3: ADD C-TABLE,C-INTS >CLOCK-HAND
ADD C-TABLE,C-TABLELEN >E
SET 'OWINNER,WINNER
SET 'WINNER,PLAYER
?PRG6: ZERO? NEW-SCENE-NUMBER /?CND8
ICALL1 I-NEW-SCENE
ADD C-TABLE,C-INTS >CLOCK-HAND
SET 'FLG,TRUE-VALUE
?CND8: EQUAL? CLOCK-HAND,E \?CCL12
INC 'MOVES
SET 'WINNER,OWINNER
RETURN FLG
?CCL12: GET CLOCK-HAND,C-RTN
ZERO? STACK /?CND10
GET CLOCK-HAND,C-TICK >TICK
LESS? TICK,-1 \?CCL16
SUB 0,TICK
SUB STACK,3
PUT CLOCK-HAND,C-TICK,STACK
SET 'Q?,CLOCK-HAND
JUMP ?CND10
?CCL16: ZERO? TICK /?CND10
GRTR? TICK,0 \?CND18
DEC 'TICK
PUT CLOCK-HAND,C-TICK,TICK
?CND18: ZERO? TICK /?CND20
SET 'Q?,CLOCK-HAND
?CND20: GRTR? TICK,0 /?CND10
GET CLOCK-HAND,C-RTN >RTN
ZERO? TICK \?CND24
PUT CLOCK-HAND,C-RTN,0
?CND24: CALL RTN >TMP
ZERO? TMP /?CND26
SET 'FLG,TMP
?CND26: ZERO? Q? \?CND10
GET CLOCK-HAND,C-RTN
ZERO? STACK /?CND10
SET 'Q?,TRUE-VALUE
?CND10: ZERO? NEW-SCENE-NUMBER /?CCL34
ADD C-TABLE,C-INTS >CLOCK-HAND
JUMP ?PRG6
?CCL34: EQUAL? FLG,M-FATAL \?CCL36
SET 'CLOCK-HAND,E
JUMP ?PRG6
?CCL36: EQUAL? CLOCK-HAND,E /?PRG6
ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
ZERO? Q? \?PRG6
ADD C-INTS,C-INTLEN >C-INTS
JUMP ?PRG6
.FUNCT DEQUEUE-ALL:ANY:0:0,E,TICK,RTN,FLG,Q?
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: ADD C-TABLE,C-INTS >CLOCK-HAND
ADD C-TABLE,C-TABLELEN >E
?PRG3: EQUAL? CLOCK-HAND,E \?CCL7
SET 'CLOCK-HAND,E
RTRUE
?CCL7: PUT CLOCK-HAND,C-TICK,0
PUT CLOCK-HAND,C-RTN,0
ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
ADD C-INTS,C-INTLEN >C-INTS
JUMP ?PRG3
.FUNCT PERFORM-PRSA:ANY:0:2,O,I
CALL PERFORM,PRSA,O,I
RSTACK
.FUNCT NEW-VERB:ANY:1:1,V
CALL PERFORM,V,PRSO,PRSI
RSTACK
.FUNCT SWAP-VERB:ANY:1:1,V
CALL PERFORM,V,PRSI,PRSO
RSTACK
.FUNCT NEW-PRSO:ANY:1:1,O
CALL PERFORM-PRSA,O,PRSI
RSTACK
.FUNCT NEW-WINNER-PRSO:ANY:1:3,A,O,I,OW
SET 'OW,WINNER
SET 'WINNER,PRSO
ICALL PERFORM,A,O,I
SET 'WINNER,OW
RTRUE
.FUNCT REDIRECT:ANY:2:2,FROM,TO,O,I
EQUAL? PRSO,FROM \?CCL3
SET 'O,TO
JUMP ?CND1
?CCL3: SET 'O,PRSO
?CND1: EQUAL? PRSI,FROM \?CCL6
SET 'I,TO
JUMP ?CND4
?CCL6: SET 'I,PRSI
?CND4: ICALL PERFORM-PRSA,O,I
RTRUE
.FUNCT CREWMAN?:ANY:1:1,OBJ
EQUAL? OBJ,CREWMEN,LG-CREWMEN /FALSE
FSET? OBJ,DUTCHBIT /TRUE
RFALSE
.FUNCT WINDEF:ANY:5:5,W,TOP,LEFT,HIGH,WIDE
WINPOS W,TOP,LEFT
WINSIZE W,HIGH,WIDE
RTRUE
.FUNCT C-PIXELS:ANY:1:1,X
SUB X,1
MUL STACK,FONT-X
ADD STACK,1
RSTACK
.FUNCT L-PIXELS:ANY:1:1,Y
SUB Y,1
MUL STACK,FONT-Y
ADD STACK,1
RSTACK
.FUNCT CCURSET:ANY:2:2,Y,X,?TMP1
CALL2 L-PIXELS,Y >?TMP1
CALL2 C-PIXELS,X
CURSET ?TMP1,STACK
RTRUE
.FUNCT IN-SCENE?:ANY:1:1,OBJ,SC,PT
GETPT OBJ,P?SCENE >SC
ZERO? SC /TRUE
PTSIZE SC >PT
INTBL? SCENE,SC,PT,1 /TRUE
RFALSE
.FUNCT REPLACE-SYNONYM:ANY:3:4,OBJ,OLD,NEW,DUP?,TMP,S,L
GETPT OBJ,P?SYNONYM >S
ZERO? S /FALSE
PTSIZE S
DIV STACK,2 >L
ZERO? DUP? \?CCL6
INTBL? NEW,S,L /TRUE
?CCL6: INTBL? OLD,S,L >TMP \FALSE
PUT TMP,0,NEW
RTRUE
.FUNCT REPLACE-ADJECTIVE:ANY:3:4,OBJ,OLD,NEW,DUP?,TMP,S,L
GETPT OBJ,P?ADJECTIVE >S
ZERO? S /FALSE
PTSIZE S
DIV STACK,2 >L
ZERO? DUP? \?CCL6
INTBL? NEW,S,L /TRUE
?CCL6: INTBL? OLD,S,L >TMP \FALSE
PUT TMP,0,NEW
RTRUE
.FUNCT CURSOR-OFF:ANY:0:0
CURSET -1
RTRUE
.FUNCT CURSOR-ON:ANY:0:0
CURSET -2
RTRUE
.ENDSEG
.ENDI

201
misc.zil
View File

@ -4,8 +4,6 @@
<BEGIN-SEGMENT 0>
<GLOBAL DEMO-VERSION? <>> ;"for swg"
<PROPDEF SCENE <> (SCENE "MANY" S:FIX = <> "MANY" <BYTE .S>)>
<PROPDEF SCORE <> (SCORE N:FIX = 2 <BYTE 0> <BYTE .N>)>
@ -394,6 +392,9 @@
;<ROUTINE RANDOM-ELEMENT (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
<DEFMAC APPLE? ()
'<EQUAL? ,MACHINE ,APPLE-2E ,APPLE-2C ,APPLE-2GS>>
;"former MAIN.ZIL stuff"
@ -402,11 +403,18 @@
<GLOBAL SCENE 0>
<ROUTINE SCENE-SELECT ("OPT" (FULL? <>) "AUX" TMP M WID WHICH)
<ROUTINE SCENE-SELECT ("OPT" (FULL? <>) "AUX" TMP M WID WHICH L Y END)
<SET L <+ <GET ,PART-MENU ;.MEN 0> 1>>
<SET END <+ 1 <WINGET ,S-FULL ,WHIGH>>>
<COND (<APPLE?> <SET L <+ .L 2>>)>
<SET TMP <* .L ,FONT-Y>>
<SET Y <- .END .TMP>>
<COND (<APPLE?> <SET Y <- .Y <* 2 ,FONT-Y>>>)>
<WINDEF ,S-TEXT
.Y <WINGET ,S-TEXT ,WLEFT>
.TMP <WINGET ,S-TEXT ,WWIDE>>
<RESET-MARGIN>
<REPEAT ()
<SPLIT <- <WINGET ,S-FULL ,WHIGH>
<* <+ <GET ,PART-MENU ;.MEN 0> 1> ,FONT-Y>>>
<RESET-MARGIN>
<CLEAR ,S-TEXT>
<SCREEN ,S-TEXT>
<SET WHICH
@ -414,13 +422,12 @@
,PART-MENU
,SCENE-SELECT-F
1>>
<COND (<EQUAL? .WHICH -1>
<SET FULL? <NOT .FULL?>>)
(.WHICH <RTRUE>)>>>
<COND (.WHICH <RTRUE>)>>>
<ROUTINE SCENE-SELECT-F (TMP M)
<COND (<EQUAL? .TMP 1>
<SPLIT <* ,FONT-Y ,STATUS-LINES>>
<SETUP-TEXT-AND-STATUS>
;<SPLIT <* ,FONT-Y ,STATUS-LINES>>
<SETG SCENE <GET ,SCENES 1>>)
(<EQUAL? .TMP 2>
<CLEAR ,S-TEXT>
@ -466,7 +473,7 @@
"Epilogue">>
<DEFMAC SCENE-CONSTANTS ("TUPLE" SS "AUX" (CNT 0))
<MAPF ,LTABLE
<MAPF ,PLTABLE
<FUNCTION (S)
<EVAL <FORM CONSTANT .S <SET CNT <+ .CNT 1>>>>>
.SS>>
@ -493,67 +500,142 @@
S-EPILOGUE>>
<CONSTANT SCENE-LOCS
<LTABLE BRIDGE-OF-ERASMUS ;"S-ERASMUS"
MURA-HOUSE ;"S-ANJIRO"
VILLAGE-SQUARE ;"S-YABU"
PIT ;"S-PIT"
ANJIRO-WATERFRONT ;"S-RODRIGUES"
GALLEY ;"S-VOYAGE"
OUTER-CORRIDOR ;"S-TORANAGA"
PRISON ;"S-PRISON"
MAPLE-GLADE ;"S-MARIKO"
COURTYARD ;"S-ESCAPE"
PLATEAU ;"S-QUAKE"
YOKOSE-BATH-HOUSE ;"S-JOURNEY"
OCHIBA-ROOM ;"S-OCHIBA"
FORECOURT ;"S-DEPARTURE"
FORMAL-GARDEN ;"S-SEPPUKU"
PRIVATE-QUARTERS ;"S-NINJA"
YOKOHAMA ;"S-YOKOHAMA"
STABLE ;"S-AFTERMATH"
SEKIGAHARA ;"S-EPILOGUE">>
<PLTABLE BRIDGE-OF-ERASMUS ;"S-ERASMUS"
MURA-HOUSE ;"S-ANJIRO"
VILLAGE-SQUARE ;"S-YABU"
PIT ;"S-PIT"
ANJIRO-WATERFRONT ;"S-RODRIGUES"
GALLEY ;"S-VOYAGE"
OUTER-CORRIDOR ;"S-TORANAGA"
PRISON ;"S-PRISON"
MAPLE-GLADE ;"S-MARIKO"
COURTYARD ;"S-ESCAPE"
PLATEAU ;"S-QUAKE"
YOKOSE-BATH-HOUSE ;"S-JOURNEY"
OCHIBA-ROOM ;"S-OCHIBA"
FORECOURT ;"S-DEPARTURE"
FORMAL-GARDEN ;"S-SEPPUKU"
PRIVATE-QUARTERS ;"S-NINJA"
YOKOHAMA ;"S-YOKOHAMA"
STABLE ;"S-AFTERMATH"
SEKIGAHARA ;"S-EPILOGUE">>
<CONSTANT SCENE-PICS
<TABLE (PURE BYTE LENGTH)
P-STORM ;"S-ERASMUS"
P-GARDEN ;"S-ANJIRO"
P-YABU-SEG ;"S-YABU"
P-PIT ;"S-PIT"
P-RODRIGUES-SEG ;"S-RODRIGUES"
P-CONFUSION ;"S-VOYAGE"
P-OSAKA ;"S-TORANAGA"
P-PRISON-SEG ;"S-PRISON"
P-MARIKO-SEG ;"S-MARIKO"
P-PROCESSION ;"S-ESCAPE"
P-QUAKE ;"S-QUAKE"
P-BATH ;"S-JOURNEY"
P-OCHIBA-SEG ;"S-OCHIBA"
P-DEPARTURE-SEG ;"S-DEPARTURE"
P-SEPPUKU ;"S-SEPPUKU"
P-NINJA ;"S-NINJA"
P-VINCK ;"S-YOKOHAMA"
P-AFTERMATH-SEG ;"S-AFTERMATH"
P-CREST ;"S-EPILOGUE">>
<GLOBAL MACHINE <>>
<GLOBAL WIDTH 0>
<END-SEGMENT>
<END-SEGMENT ;"0">
<BEGIN-SEGMENT STARTUP>
<ROUTINE GO ()
<MOUSE-LIMIT -1>
<SETG FG-COLOR <LOWCORE (CLRWRD 1)>>
<SETG BG-COLOR <LOWCORE (CLRWRD 0)>>
<SETG MACHINE <LOWCORE INTID>>
<COND ;(<EQUAL? ,MACHINE ,AMIGA> ;"sigh, all Amiga colors are ugly"
<SETG FG-COLOR ,C-BLACK>
<SETG BG-COLOR 10 ;"light gray">
<COLOR ,FG-COLOR ,BG-COLOR>)
(ELSE
<SETG FG-COLOR <LOWCORE (CLRWRD 1)>>
<SETG BG-COLOR <LOWCORE (CLRWRD 0)>>)>
<COND (<APPLE?>
<SETG TEXT-MARGIN 0>
<COND (<PICINF ,P-BORDER ,YX-TBL>
<SETG BORDER-HEIGHT <GET ,YX-TBL 0>>)>)
(ELSE <SETG TEXT-MARGIN 2>)>
<SETG LIT T>
<SETG CLOCK-HAND <REST ,C-TABLE ,C-TABLELEN>>
<SETG MACHINE <LOWCORE INTID>>
<SETG PLAYER ,BLACKTHORNE>
<SETUP-FULL>
<TITLE-SCREEN>
<COND (,DEMO-VERSION?
<SLIDE-SHOW>
<AGAIN>)>
<SETUP-DISPLAY>
<SCENE-SELECT>
<GOTO-SCENE ,SCENE <>>
<MAIN-LOOP>>
<END-SEGMENT>
<ROUTINE SLIDE-SHOW ()
<CLEAR -1>
<TELL
"This is a demonstration version of SHOGUN.|
|
First you will see a few samples of the graphic screens that await you
in SHOGUN. We've used graphics in surprising new ways to enhance the
story without detracting from Infocom's traditional richness and depth.|
Then you will be able to interact with a small section of
SHOGUN. Feel free to try the new friendlier parser, the optional mouse
interface, and the on-screen hints.|
SHOGUN is an adaptation of James Clavell's novel,
which has sold over 7 million copies and inspired the popular T.V.
mini-series. Dave Lebling, while collaborating with Clavell, has
incorporated the creative style and rich prose that have made his
earlier ZORK titles so popular.|
In SHOGUN you are transcended into the world of Clavell's saga, which
combines all of the mystery and action of a great adventure story with
the intensity and romance of a classic love story. Whether you find
yourself matching wits with tyrannical Japanese aristocrats or fighting
off attacks by Ninja assassins, you are sure to be both challenged and
entertained. Both the action and the intriguing, historical locale set
the stage for unparalleled fun and excitement.|
">
<TYPE-ANY-KEY>
<END-DEMO>>
<ROUTINE END-DEMO ()
<CLEAR -1>
<TELL "|
You have reached the end of this demonstration version of|">
<V-VERSION>
<TELL "||">
<TYPE-ANY-KEY>
<SCREEN ,S-TEXT>
;<DEFAULT-COLORS> ;"return to default before screen clears"
<RESTART>
<TELL ,FAILED>
<AGAIN>>
<END-SEGMENT ;"STARTUP">
<BEGIN-SEGMENT 0>
<CONSTANT S-FULL 7>
<ROUTINE SETUP-FULL ("AUX" (HIGH <LOWCORE VWRD>) (WIDE <LOWCORE HWRD>))
<WINDEF ,S-FULL 1 1 .HIGH .WIDE>>
<ROUTINE SETUP-DISPLAY ("AUX" X (HIGH <LOWCORE VWRD>) (WIDE <LOWCORE HWRD>))
<MOUSE-LIMIT -1>
<SETUP-FULL>
<ROUTINE SETUP-FULL ("AUX" (HIGH <LOWCORE VWRD>) (WIDE <LOWCORE HWRD>) X)
<WINDEF ,S-FULL 1 1 .HIGH .WIDE>
<SET X <WINGET ,S-TEXT ,WFSIZE>>
<SETG FONT-Y <HIGH-BYTE .X>>
<SETG FONT-X <LOW-BYTE .X>>
<SETG FONT-X <LOW-BYTE .X>>>
<ROUTINE SETUP-DISPLAY ("AUX" (HIGH <LOWCORE VWRD>) (WIDE <LOWCORE HWRD>))
<MOUSE-LIMIT -1>
<SETUP-FULL>
<SETUP-TEXT-AND-STATUS>
<SET WIDE <WINGET ,S-TEXT ,WWIDE>>
<MARGIN ,TEXT-MARGIN ,TEXT-MARGIN ,S-TEXT>
<SET WIDE <- .WIDE 4>>
<SET WIDE <- .WIDE <* 2 ,TEXT-MARGIN>>>
<SETG WIDTH <GETB ,P-INBUF 0>>
<SET WIDE </ .WIDE ,FONT-X>>
<COND (<L? .WIDE ,WIDTH>
@ -566,19 +648,29 @@
<ROUTINE REPAINT-DISPLAY ("OPT" (NO-BORDER? <>))
<RESET-MARGIN>
<COLOR ,FG-COLOR ,BG-COLOR>
<NORMAL-COLOR>
<SETUP-DISPLAY>
<COND (<NOT .NO-BORDER?> <DISPLAY-BORDER>)>
<COND (<OR <APPLE?> <NOT .NO-BORDER?>>
<DISPLAY-BORDER>)>
<INIT-STATUS-LINE T>
<COND (<HERE? ,MAZE>
<DISPLAY-MAZE>)>>
<ROUTINE GOTO-SCENE (SC "OPT" (OSC ,SCENE))
<CLEAR ,S-TEXT>
<COND (<AND <APPLE?> <NOT .OSC>>
<SCREEN ,S-STATUS>
<CLEAR ,S-STATUS>
<DISPLAY-BORDER ,P-EBORDER>)
(<NOT <EQUAL? ,CURRENT-BORDER ,P-BORDER>>
<DISPLAY-BORDER ,P-BORDER>)>
<END-QUOTE>
<RESET-MARGIN>
<DEQUEUE-ALL>
<SETG ORPHAN-ANSWER <>>
<SETG SCENE .SC>
<SETG HERE <GET ,SCENE-LOCS ,SCENE>>
<TOUCH-SEG <GETB ,SCENE-PICS ,SCENE>>
<FCLEAR ,HERE ,TOUCHBIT>
<SETG QCONTEXT <>>
<MOVE-ALL ,BLACKTHORNE>
@ -603,6 +695,10 @@
<SETG MOVES 0>)>
<RTRUE>>
<ROUTINE TOUCH-SEG (S)
<COND (<OR <APPLE?> <EQUAL? ,MACHINE ,IBM>>
<PICINF .S ,YX-TBL>)>>
;<GLOBAL WAS-IT? <>>
;<GLOBAL WAS-THEM? <>>
;<GLOBAL WAS-HIM? <>>
@ -818,7 +914,7 @@ be included when the crunch comes."
<GLOBAL CLOCK-HAND <>>
<ROUTINE CLOCKER ("AUX" E TICK RTN (FLG <>) (Q? <>) OWINNER TMP (OSC ,SCENE))
<ROUTINE CLOCKER ("AUX" E TICK RTN (FLG <>) (Q? <>) OWINNER TMP)
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
<COND (<EQUAL? ,HERE ,STATIONARY?>
<SETG STATIONARY-CNT <+ ,STATIONARY-CNT 1>>)
@ -830,8 +926,11 @@ be included when the crunch comes."
<SET OWINNER ,WINNER>
<SETG WINNER ,PLAYER>
<REPEAT ()
<COND (,NEW-SCENE-NUMBER
<I-NEW-SCENE>
<SETG CLOCK-HAND <REST ,C-TABLE ,C-INTS>>
<SET FLG T>)>
<COND (<EQUAL? ,CLOCK-HAND .E>
<SETG CLOCK-HAND .E>
<SETG MOVES <+ ,MOVES 1>>
<SETG WINNER .OWINNER>
<RETURN .FLG>)
@ -856,7 +955,6 @@ be included when the crunch comes."
1>>)>>
<COND (<ZERO? .TICK>
<PUT ,CLOCK-HAND ,C-RTN 0>)>
<SET OSC ,SCENE>
<COND (<SET TMP <APPLY .RTN>>
<SET FLG .TMP>)>
<COND (<AND <NOT .Q?>
@ -865,7 +963,7 @@ be included when the crunch comes."
<GET ,CLOCK-HAND
,C-RTN>>>>
<SET Q? T>)>)>)>)>
<COND (<NOT <EQUAL? .OSC ,SCENE>> ;"new scene during int?"
<COND (,NEW-SCENE-NUMBER ;"new scene during int?"
<SETG CLOCK-HAND <REST ,C-TABLE ,C-INTS>>)
(<EQUAL? .FLG ,M-FATAL>
<SETG CLOCK-HAND .E>)
@ -1050,7 +1148,4 @@ be included when the crunch comes."
<ROUTINE CURSOR-ON ()
<CURSET -2>>
<DEFMAC APPLE? ()
'<EQUAL? ,MACHINE ,APPLE-2E ,APPLE-2C ,APPLE-2GS>>
<END-SEGMENT>
<END-SEGMENT ;"0">

236
notes.txt Normal file
View File

@ -0,0 +1,236 @@
ERASMUS AT SEA
I like discovering things in my cabin: my apple, my chest, my two
rutters. I wouldn't mind a very easy puzzle here like using a key to
open the chest or my desk to get the apple.
;;I've put a key in your desk that you have to search for. I could
;;make it even easier by just having it in the desk.
I don't like the closed doors: the passageway door, the pilot's cabin
door, the captain's door, the mates' door, the crew's door, etc. It
prevents free movement, but it isn't fun or tricky to open the doors.
;;I'm reluctant to just make doors open automatically when you try
;;to go through them. It's so traditional in I.F. that you have to
;;open them yourself.
I don't like all those names thrown at me when I enter a room: Van
Nekk, Roper, Piterzoon, Croocq, Ginsel, etc., especially since they
serve no purpose other than color. (I don't have to know them or talk to
them.) I'd prefer treating them not as individuals but as a group:
"Seamen are lying about, longing for death less miserable than this."
;;This is changed. You now just get the names if you say L AT CREWMEN
;;or WHO ARE CREWMEN.
On the other hand, I like Captain Spillbergen as an individual. I wish
there were more I could do with him or in front of him. (Is there a way
to quench his thirst? If so, I can't figure it out.)
;;In Spillbergen's desk is a flagon of water that you can find and
;;give him. I'm surprised you haven't found it yet!
As you know, I like the text: eating the apple, writing in the rutter,
the rat that scurries past, etc.
I can't figure out why, sometimes, "the storm shifts slightly, and the
waves and wind drive you onto the rocks of a reef" and you die.
(Sometimes this happens when I'm below deck and Specz is asleep at the
wheel; sometimes it happens when I first WAKE SPECZ; sometimes it
happens when I just TAKE WHEEL, letting Specz sleep.) I think I'd rather
not die from the reefs until I'm given a chance via the bow lookout's
call "Rotz vooruit!"
;;I've changed this some, mostly by advancing the storm one move, so
;;that the first message about it comes immediately. See what you
;;think.
I like the scene as written once the reefs are spotted: steering the
ship, raising the foresails, getting Vinck's help, more steering, and
the text descriptions. And I like the way the scene ends (suddenly).
Since I don't have to do anything with the anchor (in this scene), its
presence seems strange.
;;It's tester insurance. Both Liz and Amy tried to find it and drop it,
;;possibly after noticing there was one in the Galley in a later scene.
AWAKENING IN ANJIRO
I like the puzzle about eating food twice (the woman seems pretty smart
-- any obscure reference to the tray and she figures out what to do). I
like the door breaking when you open it. I like the text decsription of
the garden.
I neither like nor dislike the clothes and boots. LOOK AT CLOTHES got a
nice blurb, but I've entered the house wearing the boots and it doesn't
upset the woman. I don't remember whether I can walk down to the
waterfront naked. If not, or if I need the boots (because the pebble
path hurts my feet), then it's a mini-puzzle, and I'd like it better if
I had to work a teensy bit harder to find my clothes and boots (just by
exploring another room or location).
;;I've added Onna not letting you back in the house if you are wearing
;;your boots.
I like the confrontation with the priest at the waterfront, and I like
Omi's bit (the interview and the beheading). In many ways Omi is the
first interesting character we meet (other than ourself), and it might
be nice to learn more about him after the beheading. I can think of one
other scene (at least) with Omi: the Pit. But I think I eventually want
to read more about certain characters, like Omi: "You later learned much
about Omi, that he was shrewd and intelligent. He appeared to serve his
masters well, while he was serving himself even better. Like most of the
Japanese, he never showed warmth outwardly; yet he was not as cold and
ruthless as some others. Omi, in fact, would come to respect you, and
you him. But now you only hated him and swore revenge." I don't where
this would work best -- here, or at the Pit scene -- but I think it's
worth consideration.
I don't like the return to the Erasmus -- it's such a no-win situation.
Rowing out there to be prevented from doing anything, and rowing back --
it's such a letdown, which is all the more noticeable after the
beautifiul beginning. I like the closing text -- "you can still feel the
sweat trickling down your spine" -- bliss! But that's about the ONLY
thing I like about the return to the Erasmus. Maybe the delicacy and
beauty we find in the house and garden can be continued, with new
discoveries and explorations. I'm not sure what the goal would be, but
I'd like it to be achieveable. (I haven't spent much time thinking about
a goal here.)
;;This section exists entirely to get you to that closing text, which
;;I like, too. I'd like to add more stuff in the village, but what?
INTERVIEW WITH YABU
I like this scene as-is, pretty much. I wasn't bothered by a second
interview (I recall Amy or Liz thinking it repetitious, but I don't find
it so.)
I don't like the roll call of names: "You see Father Sebastio, Mura,
Baccus van Nekk, Maetsukker, Ginsel, Croocq, and Vinck here." Again,
I'd rather they be treated not as individuals, since they're not
interesting as indiviuals. (Exceptions being Yabu, Sebastio, and maybe
Spillbergen.)
;;Changed as described above for the "roll-call" on the Erasmus.
A clue is probably needed for Shogun novices about breaking the cross.
But that's a fine-tuning.
And perhaps more can be said about Yabu, as I suggested about Omi
previously.
THE PIT
Oddly, the roll call of names doesn't bother me here. Maybe because such
a list seems appropriate in a confined space where there's nothing else
to look at.
I like everything about this scene except it reminds me of Frank Capra's
movie Meet John Doe, where Capra makes a great situation and you wonder
how he's going to resolve it -- and Capra couldn't figure out how to
resolve it, so it has the usual Capra saccharine ending. (You don't have
a saccharine ending, but the ending still isn't satisfying.)
There's NOTHING to do in the first part of the scene -- you don't even
get to choose a straw. It's only 4 or 5 turns now, but it could be even
fewer.
I can't remember Amy's suggestion, but I remember liking it when I
remembered it.
;;I've changed it so that you can get picked as the victim. Omi no
;;longer says not to pick you. If you resist, or if you prevent Vinck
;;from being taken (if he's the loser), Pieterzoon is still taken.
;;The scene also goes to the logical end, now.
Maybe the scuffle with the samurai could go on a little longer. Then
again, maybe all-text combat isn't very interesting, but it was
certainly the most interactive part of this scene.
I recall from the book that some unlucky samurai gets stuck in the Pit.
Maybe it's up to the player to prevent his being killed by the others?
;;He's there if you fight hard enough. He even drops a knife that you
;;can get for a few turns.
VOYAGE TO OSAKA
I like the analogy of the galley riding like "a fat-bellied pig."
Rodrigues orders the player to steer south. The player who does this
loses, but I don't think it's at all obvious that the player should do
otherwise.
;;I've changed the text to make it more obvious that Rodrigues is
;;chickening out, and that you (as the brave guy you are) shouldn't
;;go along.
The player goes foreward (on Rodrigues' order) to tell the men to ship
oars. But this doesn't work and the player has to go back to the helm.
How about if the command DOES work (when you say MEN, SHIP OARS), at
least temporarily; then, as you return to the helm, a wave or gust of
wind nearly tips the boat and THEN the player is nearly washed
overboard. Instead of a nameless hand pulling you from the sea, it can
be Rodrigues (giving the player more incentive to rescue him later -- to
return the favor). The wave or gust that nearly washes you overboard
can screw up the oarsmen again, explaining Rodrigues' leaving the helm.
I like going ashore looking for Rodrigues -- it suddenly makes the scene
seem so much larger (not surprising, I guess, since you go from 2 rooms
to a lot). And though I haven't figured out how to save Yabu, I like
the puzzle. (I have the rope and I've thrown things at Yabu, including
rocks, without success.) I like the time element here -- I seem to have
plenty of moves to try things, but I don't have forever, since the tide
comes in.
I guess the search for Rodrigues is realistic, and I can't think of a
better way to do it; but having to search each location twice is kind of
repetitious. (Though you've managed to keep it from being dull by
putting in good text: "sea-bloated ... half-eaten ... crab-mutilated
corpses.")
As you get out of the skiff, the text says "You disembark quickly,
intending to lead the search party, but Yabu usurps that position and
sets a strong pace, which you are hard put to keep up with." But I don't
believe you can FOLLOW YABU; he's "here."
Overall, I guess this is one of my favorite scenes: it's got puzzles and
color and exploration.
ESCAPE FROM OSAKA
I successfully finished this scene once upon a time; I failed to finish
it most recently, so these notes are incomplete.
The exchanges between Buntaro, Ishido, and Hiro-matsu are very nice. But
the player lacks for a goal or something to do besides wait. Similarly,
the player lacks any incentive to LOOK AT KIRITSUBO when Sazuko screams
and falls. I think this scene suffers from its faithfulness to the book.
I can only suggest a pretty major change for the first part, which keeps
the things I like but differs greatly from the book; namely:
The scene begins (non-interactively) with Blackthorne overhearing a
conversation between Toranaga & Kiritsubo (or Toranaga & Hiro-matsu),
tipping the player off about the switcheroo. The interactive portion
then begins much as it does now, except the player must get Hiro-matsu
somehow into the Courtyard or Forecourt to prevent Ishido and Buntaro
from battling. (Since Hiro-matsu doesn't understand English, perhaps the
player has to steal something of Hiro-matsu's and be chased to the
Courtyard.) Then, when the switcheroo comes, Toranaga or Kiri
accidentally drops something, or gets a veil caught on something or
another, and Blackthorne must save the situation. Then the scene
continues pretty much as written. This gives, at least, a goal for the
player early on, plus an incentive to LOOK AT KIRITSUBO at the right
moment.
I don't understand why, but I enjoy the maze taking me through the
streets of Osaka. (I didn't get that far in my most recent play.) I
don't remember if the "map" takes over the entire screen. If not, you
could have some road-rally-type clues to help you get through the maze
"in time." (Currently there seems to be no time limit; but if the
cortege were being chased, it would be necessary to LOOK AT SIGN, see
the fish, and know to turn north.)

185
osaka.zabstr Normal file
View File

@ -0,0 +1,185 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT ESCAPE>
<CONSTANT J-DRAG 100>
<CONSTANT J-VEIL 101>
<CONSTANT J-FLEE 102>
<CONSTANT J-MOAT 103>
<CONSTANT J-ISHIDO 104>
<CONSTANT J-PARCHMENT 105>
<OBJECT CORTEGE (DESC "cortege") (SYNONYM CORTEGE PROCESSION PARTY COLUMN GRAYS
BROWNS) (FLAGS NDESCBIT) (ACTION CORTEGE-F)>
<DEFINE-ROUTINE CORTEGE-F>
<DEFINE-ROUTINE ESCAPE-FOLLOW-KIRI>
<BEGIN-SEGMENT MAZE>
<OBJECT BUNTARO (DESC "Buntaro") (SYNONYM BUNTARO) (ADJECTIVE LORD TODA) (FLAGS
PERSON JAPANESEBIT NOABIT NOTHEBIT) (ACTION BUNTARO-F)>
<DEFINE-ROUTINE BUNTARO-F>
<END-SEGMENT>
<BEGIN-SEGMENT ESCAPE>
<OBJECT SAZUKO (DESC "Sazuko") (SYNONYM SAZUKO GIRL) (ADJECTIVE LADY) (FLAGS
PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT) (ACTION SAZUKO-F)>
<DEFINE-ROUTINE SAZUKO-F>
<DEFINE-ROUTINE I-ISHIDO>
<GLOBAL ISHIDO-CNT 0 %<> WORD>
<OBJECT TORANAGA-IN-DRAG (SDESC "veiled figure") (SYNONYM FIGURE KIRI KIRITSUBO
KIRITSUBO) (ADJECTIVE VEILED DISGUISED) (FLAGS PERSON FEMALE JAPANESEBIT
SCOREBIT OPENBIT CONTBIT SEARCHBIT) (GENERIC GENERIC-TORANAGA-F) (ACTION
TORANAGA-IN-DRAG-F)>
<DEFINE-ROUTINE TORANAGA-IN-DRAG-F>
<OBJECT VEIL (LOC TORANAGA-IN-DRAG) (DESC "veil") (SYNONYM VEIL) (FLAGS
NDESCBIT TAKEBIT DONT-ALL) (ACTION VEIL-F)>
<DEFINE-ROUTINE VEIL-F>
<BEGIN-SEGMENT SEPPUKU>
<ROOM COURTYARD (LOC ROOMS) (SCENE S-ESCAPE) (DESC "Courtyard") (SYNONYM
COURTYARD) (PICTURE P-PROCESSION) (SCORE 13) (AFTER HATAMOTO-AFTER-F) (FDESC
"Just after dusk Kiri waddled nervously down the steps. She headed for
her curtained litter that stood near the little tea house just inside
the garden. You are leaning
against the wall near the fortified gate. You are wearing a belted
kimono of the Browns and tabi socks and military thongs.") (SOUTH TO FORECOURT
IF FORTIFIED-GATE IS OPEN) (OUT TO FORECOURT IF FORTIFIED-GATE IS OPEN) (WEST
TO FORMAL-GARDEN IF GARDEN-GATE IS OPEN) (FLAGS ONBIT OUTSIDE) (GLOBAL
FORTIFIED-GATE SAMURAI-GUARDS GARDEN-GATE ISHIDO BUNTARO YABU HIRO-MATSU) (
ACTION COURTYARD-F)>
<DEFINE-ROUTINE COURTYARD-F>
<END-SEGMENT>
<BEGIN-SEGMENT ESCAPE>
<DEFINE-ROUTINE I-KIRI>
<GLOBAL KIRI-CNT 0 %<> WORD>
<DEFINE-ROUTINE TELL-CHECKPOINTS>
<OBJECT CURTAINS (LOC KIRIS-LITTER) (OWNER KIRITSUBO) (DESC "curtains") (
SYNONYM CURTAIN CURTAINS) (FLAGS NDESCBIT SCOREBIT OPENABLE) (ACTION CURTAINS-F
)>
<DEFINE-ROUTINE CURTAINS-F>
<GLOBAL BEEN-IN-GARDEN? <>>
<DEFINE-ROUTINE I-COME-BACK>
<BEGIN-SEGMENT MAZE>
<OBJECT KIRIS-LITTER (OWNER KIRITSUBO) (DESC "Kiritsubo's curtained litter") (
SYNONYM LITTER PALANQUIN) (ADJECTIVE KIRITSUBO KIRI CURTAINED) (FLAGS SEARCHBIT
NOTHEBIT NOABIT VEHBIT OPENBIT CONTBIT) (DESCFCN KIRIS-LITTER-DESC) (GENERIC
GENERIC-LITTER-F) (ACTION KIRIS-LITTER-F)>
<DEFINE-ROUTINE KIRIS-LITTER-DESC>
<DEFINE-ROUTINE KIRIS-LITTER-F>
<OBJECT MARIKOS-LITTER (OWNER MARIKO) (DESC "Mariko's litter") (SYNONYM LITTER
PALANQUIN) (ADJECTIVE MARIKO) (FLAGS SEARCHBIT NOABIT NOTHEBIT VEHBIT OPENBIT
CONTBIT SCOREBIT) (DESCFCN MARIKOS-LITTER-DESC) (GENERIC GENERIC-LITTER-F) (
ACTION MARIKOS-LITTER-F)>
<DEFINE-ROUTINE MARIKOS-LITTER-F>
<END-SEGMENT>
<BEGIN-SEGMENT ESCAPE>
<DEFINE-ROUTINE GET-IN-LITTER>
<BEGIN-SEGMENT DEPARTURE>
<DEFINE-ROUTINE MARIKOS-LITTER-DESC>
<BEGIN-SEGMENT SEPPUKU>
<ROOM FORECOURT (LOC ROOMS) (SCENE S-DEPARTURE) (SCORE 1) (DESC "Forecourt") (
AFTER DEPARTURE-AFTER-F) (FDESC
"Mariko walks up the crowded sunlit avenue toward the gates in the
cul-de-sac. Behind her is a bodyguard of Browns. Unlike the Grays
lining the avenue and watching from the battlements, none have armor
or carry bows. Swords are their only weapons.|
|
Mariko gets into her palanquin and sits. \"Yoshinaka-san! Please begin.\"") (
SYNONYM FORECOURT) (NORTH TO COURTYARD IF FORTIFIED-GATE IS OPEN) (IN TO
COURTYARD IF FORTIFIED-GATE IS OPEN) (SOUTH TO GATEWAY) (FLAGS ONBIT OUTSIDE) (
GLOBAL FORTIFIED-GATE GARDEN-GATE SAMURAI-GUARDS) (ACTION FORECOURT-F)>
<DEFINE-ROUTINE FORECOURT-F>
<OBJECT FORTIFIED-GATE (LOC LOCAL-GLOBALS) (DESC "fortified gate") (SYNONYM
GATE DOOR) (ADJECTIVE FORTIFIED) (FLAGS DOORBIT) (ACTION FORTIFIED-GATE-F)>
<DEFINE-ROUTINE FORTIFIED-GATE-F>
<END-SEGMENT>
<BEGIN-SEGMENT ESCAPE>
<OBJECT PORTCULLIS (LOC LOCAL-GLOBALS) (DESC "portcullis") (SYNONYM PORTCULLIS)
(ADJECTIVE IRON) (FLAGS DOORBIT OPENBIT)>
<ROOM GATEWAY (LOC ROOMS) (DESC "Gateway") (SYNONYM GATEWAY) (SOUTH TO
ON-BRIDGE) (FLAGS ONBIT OUTSIDE) (GLOBAL SAMURAI-GUARDS) (ACTION GATEWAY-F)>
<DEFINE-ROUTINE GATEWAY-F>
<GLOBAL SEEN-MAD-SCENE? <>>
<DEFINE-ROUTINE TORANAGA-CLOSES-CURTAIN>
<GLOBAL ISHIDO-DISTRACTED? <>>
<GLOBAL JERK-CNT 0>
<DEFINE-ROUTINE I-ISHIDO-2>
<GLOBAL ISHIDO-CNT 0 %<> WORD>
<ROOM ON-BRIDGE (SCENE S-ESCAPE) (LOC ROOMS) (DESC "Bridge") (SYNONYM BRIDGE) (
ADJECTIVE LAST) (LDESC
"This is the last bridge. It leads south over the moat from the last
checkpoint.") (NORTH TO GATEWAY) (SOUTH TO AT-PORTCULLIS) (FLAGS ONBIT OUTSIDE)
(ACTION ON-BRIDGE-F)>
<DEFINE-ROUTINE ON-BRIDGE-F>
<ROOM AT-PORTCULLIS (LOC ROOMS) (DESC "Portcullis") (SYNONYM PORTCULLIS) (
ADJECTIVE LAST) (LDESC
"This is the last portcullis. To the north is the bridge over the
moat. Guards watch you curiously.") (SOUTH TO WOODS) (NORTH TO ON-BRIDGE) (
FLAGS ONBIT OUTSIDE) (GLOBAL PORTCULLIS SAMURAI-GUARDS) (ACTION AT-PORTCULLIS-F
)>
<DEFINE-ROUTINE AT-PORTCULLIS-F>
<ROOM WOODS (LOC ROOMS) (DESC "Wooded Area") (SYNONYM AREA) (ADJECTIVE WOODED)
(LDESC "This is a wooded area totally out of sight of the castle. To the east
is the city proper.") (EAST TO CITY) (NORTH TO AT-PORTCULLIS) (FLAGS ONBIT
OUTSIDE SCOREBIT) (ACTION WOODS-F)>
<DEFINE-ROUTINE WOODS-F>
<DEFINE-ROUTINE I-ESCAPE-CONTINUES>
<GLOBAL LITTER-CNT 0 %<> WORD>
<DEFINE-ROUTINE I-MADNESS>
<GLOBAL MADNESS-CNT 0 %<> WORD>
<DEFINE-ROUTINE MOVE-CORTEGE>
<OBJECT PARCHMENT (DESC "roll of parchment") (OWNER PARCHMENT) (SYNONYM
PARCHMENT ROLL MESSAGE SCROLL) (ADJECTIVE SLIM) (FLAGS TAKEBIT READBIT SCOREBIT
) (ACTION PARCHMENT-F)>
<DEFINE-ROUTINE PARCHMENT-F>
<GLOBAL SEEN-TORANAGA? <>>
<ROOM CITY (LOC ROOMS) (DESC "City of Osaka") (OWNER CITY) (SYNONYM CITY OSAKA)
(LDESC "The city by night is a fairyland. The rich houses have many colored
lanterns, oil-lit and candle-lit, hanging over their gateways and in
their gardens, the shoji screens giving off a delightful
translucence. Even the poor houses are mellowed by the shojis. Lanterns
light the way of pedestrians and kagas, and of samurai on horseback.|
|
The harbor is to the east.") (EAST TO MAZE) (WEST SORRY
"You can't return to the castle now.") (FLAGS ONBIT OUTSIDE) (GLOBAL HOUSE) (
ACTION CITY-F)>
<DEFINE-ROUTINE CITY-F>
<ROOM WAREHOUSE (LOC ROOMS) (DESC "Warehouse") (SYNONYM WAREHOUSE) (LDESC
"You are in a narrow and deserted back street near the dock. The shadows
of a nearby warehouse shield the party from the view of anyone on the
wharf to the east.") (WEST SORRY "There's no time for that now.") (EAST TO
WHARF) (FLAGS ONBIT OUTSIDE) (ACTION WAREHOUSE-F)>
<DEFINE-ROUTINE WAREHOUSE-F>
<OBJECT LARGE-KNIFE (DESC "large knife") (SYNONYM KNIFE) (ADJECTIVE LARGE) (
FLAGS TAKEBIT WEARABLE WEAPONBIT) (GENERIC GENERIC-KNIFE-F) (ACTION
LARGE-KNIFE-F)>
<DEFINE-ROUTINE LARGE-KNIFE-F>
<DEFINE-ROUTINE GENERIC-KNIFE-F>
<OBJECT SMALL-KNIFE (DESC "small knife") (SYNONYM KNIFE) (ADJECTIVE SMALL) (
FLAGS TAKEBIT WEARABLE WEARBIT WEAPONBIT) (GENERIC GENERIC-KNIFE-F) (ACTION
SMALL-KNIFE-F)>
<DEFINE-ROUTINE SMALL-KNIFE-F>
<GLOBAL OPPONENT <>>
<GLOBAL DODGED? <>>
<DEFINE-ROUTINE I-RUSE>
<GLOBAL RUSE-CNT 0 %<> WORD>
<ROOM WHARF (LOC ROOMS) (DESC "Wharf") (SYNONYM WHARF) (WEST TO WAREHOUSE) (UP
TO MAIN-DECK) (EAST TO MAIN-DECK-2) (GLOBAL LG-GALLEY GANGWAY) (FLAGS ONBIT
OUTSIDE) (ACTION WHARF-F)>
<DEFINE-ROUTINE WHARF-F>
<ROOM MAIN-DECK-2 (SCENE S-ESCAPE) (LOC ROOMS) (DESC "Main Deck") (SYNONYM DECK
) (ADJECTIVE MAIN) (WEST TO WHARF) (DOWN SORRY
"There's nothing of interest below decks.") (FLAGS ONBIT OUTSIDE SCOREBIT) (
GLOBAL LG-GALLEY) (GENERIC GENERIC-DECK-F) (ACTION MAIN-DECK-2-F)>
<DEFINE-ROUTINE MAIN-DECK-2-F>
<OBJECT GRAY-LEADER (DESC "Gray Leader") (SYNONYM GRAY LEADER MAN SAMURAI) (
ADJECTIVE LARGE TOUGH GRIZZLED GRAY) (FLAGS PERSON JAPANESEBIT THE SCOREBIT) (
ACTION GRAY-LEADER-F)>
<DEFINE-ROUTINE GRAY-LEADER-F>
<OBJECT RANDOM-GRAYS (DESC "attacking Grays") (SYNONYM GRAY GRAYS SAMURAI) (
ADJECTIVE ATTACKING GRAY) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT SCOREBIT) (
ACTION RANDOM-GRAYS-F)>
<DEFINE-ROUTINE RANDOM-GRAYS-F>
<OBJECT SECOND-GRAY (DESC "young Gray samurai") (SYNONYM GRAY SAMURAI) (
ADJECTIVE SECOND YOUNG YOUNGER GRAY) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT
SCOREBIT) (GENERIC GENERIC-GRAY-F) (ACTION SECOND-GRAY-F)>
<DEFINE-ROUTINE GENERIC-GRAY-F>
<DEFINE-ROUTINE SECOND-GRAY-F>
<DEFINE-ROUTINE HANGS-UP-ON-SLEEVE>
<DEFINE-ROUTINE HATAMOTO-AFTER-F>
<END-SEGMENT>

1417
osaka.zap Normal file

File diff suppressed because it is too large Load Diff

331
osaka.zil
View File

@ -1,4 +1,3 @@
"OSAKA for
SHOGUN
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
@ -29,56 +28,32 @@ and a force of Grays guards the Browns." CR>)
(<VERB? FOLLOW>
<COND (<NOT <IN? ,CORTEGE ,HERE>>
<DO-WALK ,P?SOUTH>)>)>>
<OBJECT KIMONO
(OWNER BLACKTHORNE)
(DESC "kimono")
(SYNONYM KIMONO CLOTHES)
(ADJECTIVE SILK)
(FLAGS TAKEBIT WEARABLE)
(ACTION KIMONO-F)>
<ROUTINE KIMONO-F ()
<COND (<AND <VERB? TAKE-OFF> <FORMAL-SCENE?>>
<ROUTINE ESCAPE-FOLLOW-KIRI ("AUX" DIR)
<COND (<AND ,SEEN-TORANAGA?
<IN? ,KIRIS-LITTER ,COURTYARD>>
<COND (<JIGS-UP? ,J-SWITCH
"You stop partway, realizing you might be disrupting something you know
nothing about.">
<TELL
"You follow Kiri into the garden and the little hut. She's crouched inside,
trying to be quiet, but when you blunder in she screams in spite of
herself. The scream brings guards. They recognize Kiri and wonder, if she
is here,
who is in the litter? It is only after the ensuing battle that Ishido
returns and orders you killed." CR>
<JIGS-UP>)
(ELSE <RTRUE>)>)
(<NOT <IN? ,KIRIS-LITTER ,HERE>>
<COND (<SET DIR <NEXT-ROOM? <LOC ,KIRIS-LITTER>>>
<DO-WALK .DIR>)
(ELSE
<TELL "You've lost track of her." CR>)>)
(ELSE
<TELL
"You would expose yourself to ridicule." CR>)
(<AND <VERB? WEAR>
<NOUN-USED? ,PRSO ,W?CLOTHES>
<NOT <FSET? ,PRSO ,RMUNGBIT>>>
<PERFORM ,V?DRESS>
<RTRUE>)
(<AND <VERB? TAKE-OFF>
<NOUN-USED? ,PRSO ,W?CLOTHES>
<NOT <FSET? ,PRSO ,RMUNGBIT>>>
<PERFORM ,V?STRIP>
<RTRUE>)
(<VERB? TEAR>
<TELL
"Your kimono would tear easily, but it would be silly to do so." CR>)>>
"She's in her litter, so you can follow it when it leaves." CR>)>>
<OBJECT SANDALS
(OWNER BLACKTHORNE)
(DESC "pair of sandals")
(SYNONYM SANDALS SLIPPERS THONG THONGS)
(FLAGS TAKEBIT WEARABLE PLURAL)>
<OBJECT SOCKS
(OWNER BLACKTHORNE)
(DESC "socks")
(SYNONYM SOCKS TABIS)
(ADJECTIVE TABI)
(FLAGS TAKEBIT WEARABLE PLURAL NOABIT)
(ACTION SOCKS-F)>
<ROUTINE SOCKS-F ()
<COND (<VERB? EXAMINE>
<TELL
"These are tabi socks. They are different from European socks in that
there is a notch for the thong of a sandal. They remind you of mittens." CR>)
(<AND <VERB? TAKE-OFF WEAR>
<FSET? ,SANDALS ,WEARBIT>>
<HAVE-TO-TAKE-OFF ,SANDALS>)>>
<BEGIN-SEGMENT MAZE>
<OBJECT BUNTARO
(DESC "Buntaro")
@ -105,6 +80,9 @@ to kill someone, and wouldn't be too particular about who." CR>)>)
with a quick temper. He is the only living son of Lord Hiro-matsu,
and the husband of Lady Mariko." CR>)>>
<END-SEGMENT ;"ESCAPE MAZE">
<BEGIN-SEGMENT ESCAPE>
<OBJECT SAZUKO
(DESC "Sazuko")
(SYNONYM SAZUKO GIRL)
@ -126,70 +104,6 @@ and very pregnant." CR>)
"Lady Sazuko is a short, square-faced girl of little beauty. She is
very pregnant." CR>)>>
<OBJECT BROWNS
(DESC "Brown-uniformed samurai")
(SYNONYM BROWNS BROWN SAMURAI)
(ADJECTIVE BROWNS BROWN BROWN-UNIFORMED)
(FLAGS PERSON JAPANESEBIT NOABIT)
(COUNT 20)
(GENERIC GENERIC-SAMURAI-F)
(ACTION BROWNS-F)>
<ROUTINE BROWNS-F ("OPT" (RARG <>))
<COND (<RARG? SUBJ>
<RFALSE>)
(<RARG? WINNER>
<COND (<AND <HERE? ,MAIN-DECK>
<SCENE? ,S-ESCAPE>>
<SETG WINNER ,PLAYER>
<PERFORM ,V?MIZU>
<RTRUE>)
(ELSE
<TELL
"The Browns are not under your orders." CR>)>
<END-QUOTE>)
(ELSE
<COND (<VERB? WHO>
<TELL
"The Browns are Toranaga's samurai." CR>)
(<VERB? EXAMINE>
<TELL
"They are all dressed in the Brown uniform." CR>)>)>>
<OBJECT GRAYS
(DESC "Gray-uniformed samurai")
(SYNONYM GRAYS GRAY SAMURAI ESCORT GUARDS GUARDSMEN)
(ADJECTIVE GRAY GRAY-UNIFORMED)
(FLAGS PERSON JAPANESEBIT NOABIT)
(GENERIC GENERIC-SAMURAI-F)
(ACTION GRAYS-F)>
<ROUTINE GRAYS-F ("OPT" (RARG <>))
<COND (<RARG? SUBJ>
<RFALSE>)
(<RARG? WINNER>
<TELL
"The Grays ignore you." CR>
<END-QUOTE>)
(ELSE
<COND (<VERB? WHO>
<TELL
"The Grays are Ishido's samurai." CR>)
(<VERB? EXAMINE>
<COND (<SCENE? ,S-PRISON>
<TELL
"They are behaving more like escorts than guards." CR>)
(ELSE
<TELL
"They are all dressed in the Gray uniform." CR>)>)>)>>
<ROUTINE NOT-A-BARBARIAN? ()
<OR <AND <P? BE (BLACKTHORNE ME)
(GLOBAL-BARBARIAN CRAZY)>
<P-NEGATIVE?>>
<P? BE (BLACKTHORNE ME)
(GLOBAL-SAMURAI GLOBAL-HATAMOTO)>>>
<ROUTINE I-ISHIDO ()
<ZLINES ,ISHIDO-CNT
(<QUEUE I-ISHIDO -1>
@ -263,11 +177,11 @@ well." CR CR
"Satisfied that all is as it should be, Ishido turns and leaves with all
his men. Hiro-matsu exhales and scratches his piles.">
<COND (<HERE? ,COURTYARD>
<TELL " \"You'd better
<TELL " \"You'd better
leave now, Yabu-san. That rice maggot'll give you no more trouble.\" Yabu
replies, \"Yes, at once.\"" CR>)
(ELSE
<TELL " He says something to Yabu, who bows
<TELL " He says something to Yabu, who bows
and then begins to get the escort moving." CR>)>)>)>>
<OBJECT TORANAGA-IN-DRAG
@ -294,8 +208,8 @@ CTHE ,TORANAGA-IN-DRAG " looks at you, but doesn't reply." CR>)
<FCLEAR ,TORANAGA-IN-DRAG ,FEMALE>
<TELL
"You look at the veiled figure. She is dressed exactly like Kiri, and at
first you assume that it must be her. But if so, how did she get here?
Then you look more carefully, and realize it's a man, not a woman --
first you assume that it must be her. But if so, how did she get
here? Then you look more carefully, and realize it's a man, not a woman --
it's Toranaga, in disguise! What can he be planning? Escape!" CR>
<SCORE-OBJECT ,TORANAGA-IN-DRAG>)
(ELSE
@ -348,6 +262,8 @@ as sharp as it needs to be, though." CR>
<JIGS-UP>)
(ELSE <RTRUE>)>)>)>>
<BEGIN-SEGMENT SEPPUKU>
<ROOM COURTYARD
(LOC ROOMS)
(SCENE S-ESCAPE)
@ -413,6 +329,9 @@ CTHE ,PRSO " doesn't seem to be anywhere nearby." CR>)>)
<TELL
"\"No, Anjin-san, stay here!\" Mariko says. \"We are leaving soon.\"" CR>)>)>>
<END-SEGMENT ;"ESCAPE+SEPPUKU">
<BEGIN-SEGMENT ESCAPE>
<ROUTINE I-KIRI ()
<ZLINES ,KIRI-CNT
(<COND (<HERE? ,COURTYARD>
@ -425,8 +344,8 @@ giving him instructions. All you can understand is the word "I"dozo"",
(ELSE
<TELL CR
"You can hear conversations and crying coming from the courtyard." CR>)>)
(<COND (<HERE? ,COURTYARD>
<FSET ,KIRITSUBO ,SCOREBIT>
(<FSET ,KIRITSUBO ,SCOREBIT>
<COND (<HERE? ,COURTYARD>
<TELL CR
"Lady Sazuko bows and hurries off, Yabu following. The girl runs up the
steps. As she nears the top she slips and falls. Kiri screams something
@ -437,18 +356,17 @@ in Japanese. All eyes flash to the prostrate girl." CR>)
"Kiritsubo hurries through the garden into the little tea house, then
emerges again moments later. As she passes you, your eyes meet. ">
<COND (<FSET? ,TORANAGA-IN-DRAG ,SCOREBIT>
<TELL
"It is not Kiri, but Toranaga in disguise!" CR>
<SCORE-OBJECT ,TORANAGA-IN-DRAG>
<REPLACE-SYNONYM ,TORANAGA-IN-DRAG
,W?KIRITSUBO
,W?TORANAGA>)
,W?TORANAGA>
<TELL
"It is not Kiri, but Toranaga in disguise!" CR>)
(ELSE
<TELL
"It is Toranaga. Kiritsubo and Toranaga have switched!" CR>)>
<TELL CR
"The figure slips into Kiri's litter, veil drawn." CR>
<SCORE-OBJECT ,KIRITSUBO>)
<SCORE-OBJECT ,TORANAGA-IN-DRAG ,KIRITSUBO>)
(<HERE? ,TEA-HOUSE>
<TELL CR
"Suddenly, Kiritsubo dashes into the tea house. When she sees you, she
@ -462,8 +380,8 @@ sword and surprisingly attacks you rather than Yabu.">
"There seems to be some commotion in the courtyard." CR>)>)
(<MOVE ,TORANAGA-IN-DRAG ,KIRIS-LITTER>
<MOVE ,KIRITSUBO ,TEA-HOUSE>
<FCLEAR ,KIRITSUBO ,SCOREBIT>
<COND (<HERE? ,COURTYARD>
<FCLEAR ,KIRITSUBO ,SCOREBIT>
<COND (<EQUAL? ,OHERE ,FORMAL-GARDEN>
<TELL CR
"You see that Sazuko, one of Toranaga's consorts, has fallen to the
@ -471,7 +389,7 @@ ground. She is pregnant, and everyone is terrified for the safety of
the child." CR>)>
<TELL CR
"Mariko and Yabu rush to aid the girl. Yabu picks her up. Sazuko is
more startled than hurt. She speaks to them, embarassed at her clumsiness,
more startled than hurt. She speaks to them, embarrassed at her clumsiness,
then stands. Everyone relaxes. Toranaga's unborn child is safe." CR>)
(ELSE
<TELL CR
@ -595,6 +513,8 @@ a battle erupts.">)>
"He hustles you unceremoniously back to the courtyard." CR CR>
<GOTO ,COURTYARD>)>)>>
<BEGIN-SEGMENT MAZE>
<OBJECT KIRIS-LITTER
;(LOC COURTYARD)
(OWNER KIRITSUBO)
@ -658,13 +578,6 @@ a battle erupts.">)>
(GENERIC GENERIC-LITTER-F)
(ACTION MARIKOS-LITTER-F)>
<ROUTINE GENERIC-LITTER-F (R F)
<COND (<OR <HERE? ,WOODS>
<IN? ,WINNER ,MARIKOS-LITTER>>
,MARIKOS-LITTER)
(<IN? ,YABU-PALANQUIN ,HERE>
,YABU-PALANQUIN)>>
<ROUTINE MARIKOS-LITTER-F ("OPT" (RARG <>))
<COND (<RARG? BEG>
<COND (<AND <HERE? WOODS CITY>
@ -688,6 +601,9 @@ don't move." CR>)
<TELL
"Mariko's maid prevents you." CR>)>)>)>>
<END-SEGMENT ;"ESCAPE+MAZE">
<BEGIN-SEGMENT ESCAPE>
<ROUTINE GET-IN-LITTER ("OPT" (FORCE? <>))
<DEQUEUE I-ESCAPE-CONTINUES>
<MOVE ,PLAYER ,MARIKOS-LITTER>
@ -706,6 +622,8 @@ is soothing and you lay back, depleted." CR CR>
<MOVE ,YABU ,CITY>
<GOTO ,CITY>>
<BEGIN-SEGMENT DEPARTURE>
<ROUTINE MARIKOS-LITTER-DESC (RARG OBJ)
<COND (<RARG? OBJDESC?> <RTRUE>)
(ELSE
@ -717,6 +635,8 @@ the open curtains you can see Mariko.">)
(ELSE <TELL ".">)>
<RFATAL>)>>
<BEGIN-SEGMENT SEPPUKU>
<ROOM FORECOURT
(LOC ROOMS)
(SCENE S-DEPARTURE)
@ -756,7 +676,7 @@ Mariko gets into her palanquin and sits. \"Yoshinaka-san! Please begin.\"")
paths and walls that makes up the rest of the castle. To the north, through an
arched gateway with a fortified gate, is a courtyard.">
<COND (<SCENE? ,S-DEPARTURE ,S-SEPPUKU>
<TELL " The forecourt is crowded with Grays,
<TELL " The forecourt is crowded with Grays,
other samurai and their women.">)>
<CRLF>)
(<RARG? LEAVE>
@ -829,6 +749,9 @@ events to come." CR>)>)>)
"You could no more open or close this gate by yourself than tear
down Osaka Castle with your bare hands." CR>)>>
<END-SEGMENT ;"ESCAPE+DEPARTURE+SEPPUKU">
<BEGIN-SEGMENT ESCAPE>
<OBJECT PORTCULLIS
(LOC LOCAL-GLOBALS)
(DESC "portcullis")
@ -853,16 +776,17 @@ is the final drawbridge and the final moat. To the south, on the far side
of the bridge,
is the ultimate strongpoint.">
<COND (<SCENE? ,S-ESCAPE>
<TELL " A multitude of flares turn the night into
<TELL " A multitude of flares turn the night into
crimson day.">)
(ELSE
<TELL
" Crowds of curious onlookers clog the street.">)>
" Crowds of curious onlookers clog the street.">)>
<CRLF>)
(<RARG? ENTER>
<COND (<EQUAL? ,OHERE ,FORECOURT>
<SETG ISHIDO-CNT 0>
<QUEUE I-ISHIDO-2 -1>)>)
<QUEUE I-ISHIDO-2 -1>)>
<RTRUE>)
(<RARG? BEG>
<COND (<SCENE? ,S-ESCAPE>
<SET MAD?
@ -966,7 +890,7 @@ exhaustion is beginning to take its toll." CR>)>)>)>)>)>>
<QUEUE I-MADNESS -1>
<COND (<FSET? ,CURTAINS ,OPENBIT>
<FCLEAR ,CURTAINS ,OPENBIT>
<TELL " For an instant Toranaga
<TELL " For an instant Toranaga
is in full view behind Ishido. In the never-ending second before Toranaga
tugs the curtains closed again, you know that Yabu has recognized him,
and Mariko, and probably Buntaro and some of the Brown samurai.">)>>
@ -1023,7 +947,7 @@ the curtains." CR>)
"Everyone is waiting for the hand to appear.">
<COND (,SEEN-TORANAGA?
<TELL
" You realize Toranaga is trapped. Politeness demands that he take the
" You realize Toranaga is trapped. Politeness demands that he take the
scroll and his hand will give him away!">)>
<TELL CR CR
"Ishido is getting impatient. \"Kiritsubo-san?\" he calls." CR>)
@ -1177,7 +1101,8 @@ out of sight of the castle, you gratefully collapse." CR>
<SCORE-OBJECT ,WOODS>)>)>)
(<RARG? ENTER>
<DEQUEUE I-ISHIDO-2>
<DEQUEUE I-MARIKO-FOLLOW>)>>
<DEQUEUE I-MARIKO-FOLLOW>
<RTRUE>)>>
<ROUTINE I-ESCAPE-CONTINUES ()
<ZLINES ,LITTER-CNT
@ -1239,7 +1164,7 @@ over in forced semihysteria that the mad barbarian believed he was
only trying to save Ishido from a bad " I "kami" ".">
<COND (<EQUAL? ,ISHIDO-DISTRACTED?
,V?ATTACK ,V?HIT>
<TELL " \"It's the worst
<TELL " \"It's the worst
insult to touch their faces, just like with us!\"">)>
<CRLF>)
(;5
@ -1400,7 +1325,8 @@ The harbor is to the east.")
<ROUTINE CITY-F ("OPT" (RARG <>))
<COND (<RARG? ENTER>
<COND (<EQUAL? ,OHERE ,WOODS>
<MOVE-ALL ,WOODS ,CITY>)>)
<MOVE-ALL ,WOODS ,CITY>)>
<RTRUE>)
(<RARG? <>>
<COND (<VERB? FIND>
<COND (<G=? ,SCENE ,S-VOYAGE>
@ -1436,7 +1362,7 @@ appear, the Grays spot you and surge forward." CR CR>
<GOTO ,WHARF>
<MOVE ,BROWNS ,WHARF>
<MOVE ,GRAYS ,WHARF>
<MOVE ,GRAY-LEADER ,MAIN-DECK>
<MOVE ,GRAY-LEADER ,MAIN-DECK-2>
<FSET ,GRAY-LEADER ,NDESCBIT>
<RTRUE>)
(<IN? ,MARIKO ,WAREHOUSE>
@ -1450,7 +1376,8 @@ appear, the Grays spot you and surge forward." CR CR>
(<RARG? ENTER>
<COND (<EQUAL? ,OHERE ,MAZE>
<MOVE-ALL ,MAZE ,WAREHOUSE>
<QUEUE I-RUSE -1>)>)>>
<QUEUE I-RUSE -1>)>
<RTRUE>)>>
<OBJECT LARGE-KNIFE
(DESC "large knife")
@ -1555,7 +1482,7 @@ the Grays. You add to the babel in a panting mixture of Portuguese, English,
and Dutch, motioning for them to hurry. You lean against the gangway, unable
to see anything on the galley distinctly. You can't tell if the samurai on
deck are Grays or Browns or both." CR>)
(<COND (<HERE? ,WHARF ,MAIN-DECK ,GALLEY>
(<COND (<HERE? ,WHARF ,MAIN-DECK-2>
<TELL CR
"Mariko is frantically haranguing the senior officer of the Grays. He shouts
orders, and suddenly a hundred samurai, all Grays, pour off the ship.|
@ -1564,14 +1491,13 @@ Quickly, Mariko turns to you and asks, \"Does the ship seem all right to
you?\"">
<SETG QCONTEXT ,MARIKO>
<COND (<HERE? ,WHARF>
<TELL " She motions you onto the galley.">)>
<TELL " She motions you onto the galley.">)>
<CRLF>)
(ELSE
<TELL CR
"Mariko is desperately calling you back to the wharf." CR>)>)
(DELAY
<COND (<AND <NOT <IN? ,BLACKTHORNE ,MAIN-DECK>>
<NOT <IN? ,BLACKTHORNE ,GALLEY>>>
<COND (<NOT <IN? ,BLACKTHORNE ,MAIN-DECK-2>>
<TELL CR
"Mariko commands you urgently in Latin, \"Get aboard the galley,
Anjin-san! We must see if it is safe!\"" CR>
@ -1671,7 +1597,6 @@ his sash. The phalanx moves with measured tread toward the galley.|
|
Bastard, you think. You're a cruel, cold-gutted, heartless bastard but you've
got majesty, no doubt about that." CR>
<DEQUEUE I-RUSE>
<NEXT-SCENE>)>>
<ROOM WHARF
@ -1680,7 +1605,7 @@ got majesty, no doubt about that." CR>
(SYNONYM WHARF)
(WEST TO WAREHOUSE)
(UP TO MAIN-DECK)
(EAST TO MAIN-DECK)
(EAST TO MAIN-DECK-2)
(GLOBAL LG-GALLEY GANGWAY)
(FLAGS ONBIT OUTSIDE ;SCOREBIT)
(ACTION WHARF-F)>
@ -1693,7 +1618,8 @@ east, moored to stanchions fixed into the stone wharf that extends
a hundred yards out into the sea." CR>)
(<RARG? ENTER>
<REMOVE ,ANCHOR>
<REMOVE ,SKIFF>)
<REMOVE ,SKIFF>
<RTRUE>)
(<RARG? BEG>
<COND (<P? EXAMINE GRAYS>
<TELL
@ -1706,6 +1632,91 @@ color of their uniforms." CR>)
(<P? (BOARD CLIMB-ON) (GALLEY LG-GALLEY ROOMS)>
<DO-WALK ,P?EAST>)>)>>
<ROOM MAIN-DECK-2
(SCENE S-ESCAPE)
(LOC ROOMS)
(DESC "Main Deck")
(SYNONYM DECK)
(ADJECTIVE MAIN)
(WEST TO WHARF)
(DOWN SORRY "There's nothing of interest below decks.")
(FLAGS ONBIT OUTSIDE SCOREBIT)
(GLOBAL LG-GALLEY)
(GENERIC GENERIC-DECK-F)
(ACTION MAIN-DECK-2-F)>
<ROUTINE MAIN-DECK-2-F (RARG)
<COND (<RARG? LOOK>
<TELL
G"This is the oar deck of the galley, forward of the quarterdeck. ">
<TELL
"Gray guardsmen crowd the deck." CR>)
(<RARG? ENTER>
<MOVE ,MARIKO ,MAIN-DECK-2>
<MOVE ,BROWNS ,MAIN-DECK-2>
<TELL
"You pull yourself up the gangway using the ropes for support. Your dash
across the wharf has tired you more than you realized at first. Mariko and
two Browns follow after.">
<CRLF> <CRLF>)
(<RARG? BEG>
<COND (<P? WALK (P?AFT P?UP)>
<TELL
"The gangway aft is blocked by Grays and crewmen." CR>)
(<P? TAKE-OFF LG-GALLEY>
<DO-WALK ,P?WEST>)
(<AND <EQUAL? ,QCONTEXT ,MARIKO>
<VERB? YES HAI>>
<SETG QCONTEXT <>>
<TELL
"\"Well, she's floating, at least,\" you reply, and then notice one of the
crewmen from the voyage to Osaka. With Mariko's help, you ask him if the
galley is ready, and if there are still Grays aboard. \"Anjin-san, he thanks
you for the life of his ship, and says they are ready. As for the other, he
doesn't know.\" Mariko seems very worried as she says this." CR>)
(<P? (HELP WAKE TAKE) MARIKO>
<COND (<AND <FSET? ,WHARF ,SCOREBIT>
<NOT <FSET? ,GLOBAL-WATER ,SCOREBIT>>>
<FSET ,GLOBAL-WATER ,SCOREBIT>
<TELL
"You make your way over to Mariko. \"Get some water -- water, by God!\" What's
the word for water? Desperately you search your mind for the Japanese
word. The old monk had told it to you a thousand times." CR>
<SCORE-OBJECT ,WHARF>)
(,OPPONENT
<TELL
"You'll have to try something more specific." CR>)
(<NOT <B-STANDING?>>
<TELL
"You try to crawl to her, but you are too fatigued." CR>)>)
(<OR <VERB? MIZU>
<AND <P? SAY INTQUOTE>
<EQUAL? ,W?MIZU
<GET-INTQUOTE 0>
<GET-INTQUOTE 1>>>
<AND <P? SAY GLOBAL-WATER>
<NOUN-USED? ,PRSO ,W?MIZU>>>
<COND (<FSET? ,GLOBAL-WATER ,SCOREBIT>
<TELL
"\""I"Mizu, mizu! Hai! Wakarimas?""\" you yell. A man nods, and begins to hurry
away. You stand protectively over Mariko." CR>
<SCORE-OBJECT ,GLOBAL-WATER>)
(ELSE
<TELL
"You continue yelling, for no apparent reason." CR>)>)
(<AND <EQUAL? ,OPPONENT ,GRAY-LEADER
,RANDOM-GRAYS ,SECOND-GRAY>
<OR <MOTION-VERB?>
<VERB? PARRY STOP>>>
<SETG DODGED? T>
<COND (<FSET? ,GRAY-LEADER ,DEAD>
<TELL
"You leap out of the way, and the blow misses." CR>)
(ELSE
<TELL
"You try desperately to dodge out of the way, trying to avoid the leader's
attack." CR>)>)>)>>
<OBJECT GRAY-LEADER
(DESC "Gray Leader")
(SYNONYM GRAY LEADER MAN SAMURAI)
@ -1809,22 +1820,6 @@ a counterattack." CR>)
"You toss it at " THE ,PRSI " but it misses, and he turns on you!" CR>
<JIGS-UP>)>>
;<ROOM WHARF-N
(LOC ROOMS)
(DESC "North Wharf")
(SYNONYM WHARF)
(ADJECTIVE NORTH)
(SOUTH TO WHARF)
(FLAGS ONBIT OUTSIDE)>
;<ROOM WHARF-S
(LOC ROOMS)
(DESC "South Wharf")
(SYNONYM WHARF)
(ADJECTIVE SOUTH)
(NORTH TO WHARF)
(FLAGS ONBIT OUTSIDE)>
<ROUTINE HATAMOTO-AFTER-F ()
<TELL
"The galley escapes from Osaka harbor, the rowers speeding it back towards
@ -1837,6 +1832,6 @@ instructed to learn Japanese, and train a regiment of troops in European
tactics and the use of muskets.|
|
But best of all, he says he will return the "I"Erasmus"" to you, but he won't
say when.">>
say when." CR>>
<END-SEGMENT>
<END-SEGMENT ;"ESCAPE">

92
outline.txt Normal file
View File

@ -0,0 +1,92 @@
Overall:
Boiling of crewman
Sea Voyage to Osaka
Blackthorne rescues Yabu
Visit to Castle
Blackthorne meets Toranaga
Blackthorne in Prison
Blackthorne to be taught Japanese
Blackthorne meets Mariko
Toranaga's Escape from Castle
Galley Escapes from Harbor
Blackthorne makes love to Mariko
Pheasant Incident
Confrontation with Buntaro
Visit to Crew in Eta Quarter
Gun Regiment
Earthquake, Blackthorne saves Toranaga
Summons to Osaka
Mariko threatens suicide
Attack on Castle by Ninja
Mariko dies
Blackthorne's ship is burned
Yabu's treachery is discovered
Toranaga defeats Ishido, becomes Shogun
Characters:
Crew of the "Erasmus";
John Blackthorne, Pilot-Major; "Anjin-san"
Hendrik Specz, third mate
Paulus Spillbergen, Captain-General
(Alban Caradoc, pilot, Blackthorne's teacher)
Maetsukker
Johann Vinck, gunner and bosun's mate
Baccus van Nekk, chief merchant
Croocq, boy
Sonk, cook
Salamon, mute
Jan Roper, merchant
Ginsel
Hans Pieterzoon, gunner
Anjiro, a fishing Village;
"Onna"
Mura, headman of Izu (secretly spy for Toranaga)
Saiko, Mura's mother
Niji, Mura's wife
Father Sebastio, a Portuguese Jesuit
Kasigi Omi, samurai in charge of Anjiro
Midori, wife of Omi
Tamazaki, a fisherman (killed by Omi)
Kasigi Yabu, Daimyo of Izu, Omi's uncle
Fujiko, Blackthorne's consort, widow of Usagi Fujiko
Gyoko, a madam
Kiku, a courtesan
Europeans;
Father Alvito, "Tsukku-san"
Ferriera, Captain-General of the Black Ship
dell'Aqua, Father-Visitor
Rodrigues, pilot
Lords;
(Lord Goroda, Dictator)
(Taiko, Shogun)
Toranaga, Lord of the Kwanto
Yaemon, the heir
Ishido, Lord of Osaka
Ikawa Jikkyu
Naga, son of Toranaga
Noboru, son on Toranaga
Lord Sudara, son of Toranaga
Ochiba, widow of the Taiko
Genjiko, Ochiba's sister, Sudara's wife.
Buntaro, husband of Mariko, son of Hiro-matsu
Hiro-matsu, Toranaga's general
Toda Mariko, wife of Buntaro, daughter of Akechi Jinsai
(Akechi Jinsai, aka Ju-san Kubo)
Settings:
The "Erasmus," a Netherlands merchant ship.
Anjiro, a fishing village in Izu.
The Pit.
Osaka Castle.
Prison.
Toranaga's keep.
Edo.
Yokohama.
One of Toranaga's Galleys.
On the road between Osaka and Yedo.
Yokose.

268
parser.zabstr Normal file
View File

@ -0,0 +1,268 @@
<FLAGS-AND-DEFAULTS (("LONG-WORDS" %<>)("UNDO" T)("P-PS-ADV" %<>)(
"P-DEBUGGING-PARSER" %<>)("ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE"
T)("IN-ZILCH" T)("P-BE-VERB" T)) (("BUZZER-WORD?" "DEFS" #WORD *00726107774*) (
"TELL-CTHE" "DEFS" #WORD *37636524210*) ("TELL-THE" "DEFS" #WORD *10632536250*)
("SPECIAL-CONTRACTION?" "DEFS" #WORD *22117166400*) ("ROOMSBIT" "DEFS" #WORD
*25712643046*) ("PERSONBIT" "DEFS" #WORD *32442731556*) ("NARTICLEBIT" "DEFS" #
WORD *11626040112*))>
<ZZPACKAGE "PARSER">
<ENTRY PARSER PARSE-SENTENCE PARSE-IT PARSER-ERROR TLEXV P-OFLAG P-WALK-DIR
RED-SD>
<RENTRY DEBUG-PARSER>
<RENTRY ACCESSIBLE? BUZZER-WORD? DIR-VERB? FEMALE GLOBAL-OBJECTS LIT LIT? ONBIT
OPENBIT P-INBUF P-LEXV P-NUMBER P?THINGS PERFORM PERSONBIT PLAYER
PRINT-VOCAB-WORD SEARCHBIT SPECIAL-CONTRACTION? SURFACEBIT TAKEBIT TELL-CTHE
TELL-THE TITLE-ABBR? TRANSBIT TRYTAKEBIT VERBOSITY VISIBLE? WINNER>
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS" "SYMBOLS">
<USE "PSTACK" "PMEM">
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
<BEGIN-SEGMENT 0>
<COMPILATION-FLAG-DEFAULT P-APOSTROPHE-BREAKS-WORDS T>
<COMPILATION-FLAG-DEFAULT P-BE-VERB <>>
<DEFAULTS-DEFINED BE-PATIENT BEG-PARDON BUZZER-WORD? COLLECTIVE-VERB? CONTBIT
DIR-VERB? FEMALE GAME-VERB? INVISIBLE LIT? NARTICLEBIT NUMBER? ONBIT OPENBIT
P-NO-MEM-ROUTINE PERSONBIT PLAYER PLURAL QCONTEXT-CHECK READ-INPUT ROOMSBIT
SEARCHBIT SEENBIT SPECIAL-CONTRACTION? STATUS-LINE SURFACEBIT TAKEBIT TELL-CTHE
TELL-GWIM-MSG TELL-THE TITLE-ABBR? TOUCHBIT TRANSBIT TRYTAKEBIT UNKNOWN-WORD>
<COND (<NOT <GASSIGNED? DEBUG-PARSER>> <SETG DEBUG-PARSER <>>)>
<DEFAULT-DEFINITION CONTBIT T>
<DEFAULT-DEFINITION FEMALE T>
<DEFAULT-DEFINITION INVISIBLE T>
<DEFAULT-DEFINITION NARTICLEBIT T>
<DEFAULT-DEFINITION ONBIT T>
<DEFAULT-DEFINITION OPENBIT T>
<DEFAULT-DEFINITION PERSONBIT T>
<DEFAULT-DEFINITION PLAYER T>
<DEFAULT-DEFINITION PLURAL T>
<DEFAULT-DEFINITION ROOMSBIT T>
<DEFAULT-DEFINITION SEARCHBIT T>
<DEFAULT-DEFINITION SEENBIT T>
<DEFAULT-DEFINITION SURFACEBIT T>
<DEFAULT-DEFINITION TAKEBIT T>
<DEFAULT-DEFINITION TOUCHBIT T>
<DEFAULT-DEFINITION TRANSBIT T>
<DEFAULT-DEFINITION TRYTAKEBIT T>
<DEFMAC IF-SHORT ('EXPR1 "OPT" 'EXPR2) <COND (<L=? ,NUMBER-WORD-CLASSES 15> <
COND (<AND .EXPR1 <N==? .EXPR1 '<>>> .EXPR1)>) (<ASSIGNED? EXPR2> .EXPR2)>>
<CONSTANT STATE-STACK <ALLOCATE-PSTACK>>
<CONSTANT SPLIT-STACK <ALLOCATE-PSTACK>>
<CONSTANT DATA-STACK <ALLOCATE-PSTACK>>
<CONSTANT LEXV-LENGTH 59>
<CONSTANT LEXV-LENGTH-BYTES <+ 2 <* 4 ,LEXV-LENGTH>>>
<CONSTANT P-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
*00000000000*>>
<CONSTANT G-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
*00000000000*>>
<CONSTANT O-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
*00000000000*>>
<CONSTANT INBUF-LENGTH <+ 1 ,LEXV-LENGTH>>
<CONSTANT P-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
<CONSTANT G-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
<CONSTANT O-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
<CONSTANT P-LEXWORDS 1>
<CONSTANT P-LEXSTART 1>
<CONSTANT P-LEXELEN 2>
<CONSTANT OOPS-TABLE <TABLE <> <> <> <> <>>>
<CONSTANT O-START 0>
<CONSTANT O-LENGTH 1>
<CONSTANT O-END 2>
<CONSTANT O-PTR 3>
<CONSTANT O-AGAIN 4>
<GLOBAL WINNER:OBJECT PLAYER>
<GLOBAL P-OFLAG:NUMBER 0>
<GLOBAL P-NUMBER:NUMBER 0>
<GLOBAL CURRENT-REDUCTION <>>
<GLOBAL PARSER-RESULT <>>
<GLOBAL P-WALK-DIR <>>
<GLOBAL TLEXV 0>
<GLOBAL OTLEXV 0>
<CONSTANT ERROR-ARGS:TABLE <ITABLE 4 <>>>
<GLOBAL ERROR-STRING:STRING <>>
<GLOBAL ERROR-PRIORITY:NUMBER 0>
<ADD-WORD "AGAIN" MISCWORD>
<ADD-WORD "G" MISCWORD>
<ADD-WORD "OOPS" MISCWORD>
<ADD-WORD "O" MISCWORD>
<GLOBAL P-LEN:NUMBER 0>
<DEFAULT-DEFINITION STATUS-LINE <DEFINE INIT-STATUS-LINE () <SPLIT 1> <SCREEN ,
S-WINDOW> <CURSET 1 1> <HLIGHT ,H-INVERSE> <ERASE 1> <HLIGHT ,H-NORMAL> <SCREEN
,S-TEXT> <RTRUE>> <GLOBAL OLD-HERE:OBJECT <>> <DEFINE UPDATE-STATUS-LINE () <
SCREEN ,S-WINDOW> <HLIGHT ,H-INVERSE> <COND (<NOT <EQUAL? ,HERE ,OLD-HERE>> <
SETG OLD-HERE ,HERE> <CURSET 1 1> <ERASE 1> <CURSET 1 1> <TELL D ,HERE>)> <
CURSET 1 <- <LOWCORE SCRH> <+ <DIGITS ,SCORE> <DIGITS ,MOVES>>>> <TELL N ,SCORE
C !\/ N ,MOVES> <HLIGHT ,H-NORMAL> <SCREEN ,S-TEXT> <RTRUE>> <DEFINE DIGITS (N
"AUX" (D 1)) <COND (<L? .N 0> <SET D <+ 1 .D>> <SET N <- 0 .N>>)> <REPEAT () <
SET N </ .N 10>> <COND (<0? .N> <RETURN>) (T <SET D <+ 1 .D>>)>> .D>>
<DEFAULT-DEFINITION READ-INPUT <GLOBAL DEMO-VERSION? <>> <DEFINE READ-INPUT ()
<TELL ">"> <COND (T <PUTB ,P-INBUF 1 0>)> <COND (,DEMO-VERSION? <READ-DEMO ,
P-INBUF ,P-LEXV>) (T <ZREAD ,P-INBUF ,P-LEXV>)> <COND (T <SCRIPT-INBUF>)>> <
DEFINE SCRIPT-INBUF ("AUX" BUF (CNT 0) (N <GETB ,P-INBUF 1>) CHR) <DIROUT ,
D-SCREEN-OFF> <SET BUF <REST ,P-INBUF>> <REPEAT () <COND (<IGRTR? CNT .N> <
RETURN>) (ELSE <SET CHR <GETB .BUF .CNT>> <COND (<AND <G=? .CHR !\a> <L=? .CHR
!\z>> <PRINTC <- .CHR 32>>) (ELSE <PRINTC .CHR>)>)>> <CRLF> <DIROUT ,
D-SCREEN-ON>>>
<CONSTANT P-QB-WORDS-1 <PLTABLE <VOC "ARE"> <VOC "CAN"> <VOC "COULD"> <VOC "DO"
> <VOC "DOES"> <VOC "DID"> <VOC "HE"> <VOC "I"> <VOC "IS"> <VOC "IT"> <VOC
"SHE"> <VOC "SHOULD"> <VOC "THAT"> <VOC "THEY"> <VOC "WAS"> <VOC "WE"> <VOC
"WERE"> <VOC "WILL"> <VOC "WOULD"> <VOC "YOU">>>
<CONSTANT P-QB-WORDS-2 <PLTABLE <VOC "NOT"> <VOC "NOT"> <VOC "NOT"> <VOC "NOT">
<VOC "NOT"> <VOC "NOT"> <VOC "IS"> <VOC "AM"> <VOC "NOT"> <VOC "IS"> <VOC "IS">
<VOC "NOT"> <VOC "IS"> <VOC "ARE"> <VOC "NOT"> <VOC "ARE"> <VOC "NOT"> <VOC
"NOT"> <VOC "NOT"> <VOC "ARE">>>
<CONSTANT P-QA-WORDS1 <PLTABLE <VOC "AREN"> <VOC "CAN"> <VOC "COULDN"> <VOC
"DON"> <VOC "DOESN"> <VOC "DIDN"> <VOC "HE"> <VOC "I"> <VOC "ISN"> <VOC "IT"> <
VOC "SHE"> <VOC "SHOULDN"> <VOC "THAT"> <VOC "THEY"> <VOC "WASN"> <VOC "WE"> <
VOC "WEREN"> <VOC "WON"> <VOC "WOULDN"> <VOC "YOU">>>
<CONSTANT P-QA-WORDS2 <PLTABLE <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"
> <VOC "T"> <VOC "S"> <VOC "M"> <VOC "T"> <VOC "S"> <VOC "S"> <VOC "T"> <VOC
"S"> <VOC "RE"> <VOC "T"> <VOC "RE"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "RE">>>
<DEFAULT-DEFINITION SPECIAL-CONTRACTION? <DEFINE SPECIAL-CONTRACTION? (PTR) <>>
>
<DEFINE-ROUTINE EXPAND-BE-CONTRACTIONS>
<DEFAULT-DEFINITION TELL-THE <DEFINE TELL-THE (OBJ "AUX" TMP) <COND (<EQUAL? .
OBJ ,PLAYER> <TELL "you">) (T <COND (<SET TMP <GET-OWNER .OBJ>> <COND (<EQUAL?
.TMP ,PLAYER> <TELL "your ">) (<NOT <EQUAL? .TMP .OBJ>> <TELL-THE .TMP> <TELL
"'s ">)>) (<NOT <FSET? .OBJ ,NARTICLEBIT>> <TELL "the ">)> <TELL D .OBJ>)>>>
<DEFAULT-DEFINITION TELL-CTHE <DEFINE TELL-CTHE (OBJ "AUX" TMP) <COND (<EQUAL?
.OBJ ,PLAYER> <TELL "You">) (T <COND (<SET TMP <GET-OWNER .OBJ>> <COND (<EQUAL?
.TMP ,PLAYER> <TELL "Your ">) (<NOT <EQUAL? .TMP .OBJ>> <TELL-CTHE .TMP> <TELL
"'s ">)>) (<NOT <FSET? .OBJ ,NARTICLEBIT>> <TELL "The ">)> <TELL D .OBJ>)>>>
<COMPILATION-FLAG-DEFAULT P-ZORK0 <>>
<COMPILATION-FLAG-DEFAULT P-PS-ADV T>
<GLOBAL P-DIRECTION:NUMBER 0>
<COMPILATION-FLAG-DEFAULT P-TITLE-ABBRS <>>
<DEFAULT-DEFINITION TITLE-ABBR? <DEFMAC TITLE-ABBR? ('WRD) <FORM EQUAL? .WRD ,
W?MR ,W?MRS ,W?MS>>>
<DEFINE-ROUTINE NAKED-DIR?>
<DEFINE-ROUTINE PARSER>
<DEFAULT-DEFINITION GAME-VERB? <CONSTANT GAME-VERB-TABLE <LTABLE V?BRIEF V?QUIT
V?RESTART V?RESTORE V?SAVE V?SCORE V?SCRIPT V?SUPER-BRIEF V?TELL V?UNSCRIPT
V?VERBOSE V?VERSION V?$VERIFY>> <DEFINE GAME-VERB? () <COND (<INTBL? ,PRSA <
ZREST ,GAME-VERB-TABLE 2> <ZGET ,GAME-VERB-TABLE 0>> <RTRUE>)> <COND (<VERB?
$RANDOM $COMMAND $RECORD $UNRECORD> <RTRUE>)>>>
<DEFINE-ROUTINE RED-SD>
<GDECL (SPLITS) FIX>
<CONSTANT PARSE-RESULT <MAKE-PARSE-RESULT>>
<GLOBAL P-WORD-NUMBER:NUMBER 0>
<GLOBAL P-WORDS-AGAIN:NUMBER 0>
<GLOBAL P-OLEN:NUMBER 0>
<DEFINE-ROUTINE PARSE-IT>
<GLOBAL P-RUNNING:TABLE <>>
<GLOBAL PARSE-SENTENCE-ACTIVATION <>>
<DEFINE-ROUTINE PARSE-SENTENCE>
<DEFINE-ROUTINE GET-TERMINAL-ACTION>
<DEFINE-ROUTINE GET-NONTERMINAL-ACTION>
<GLOBAL P-RESPONDED:NUMBER 0>
<DEFAULT-DEFINITION BE-PATIENT <ROUTINE BE-PATIENT>>
<DEFINE-ROUTINE MAIN-LOOP>
<DEFAULT-DEFINITION COLLECTIVE-VERB? <DEFMAC COLLECTIVE-VERB? () '<VERB? COUNT>
>>
<DEFAULT-DEFINITION DIR-VERB? <DEFMAC DIR-VERB? () '<VERB? WALK>>>
<DEFINE-ROUTINE MAIN-LOOP-1>
<DEFINE-ROUTINE PERF-MANY>
<DEFINE-ROUTINE TEST-ADJACENT>
<DEFAULT-DEFINITION QCONTEXT-CHECK <ROUTINE QCONTEXT-CHECK>>
<GLOBAL LIT:OBJECT <>>
<DEFAULT-DEFINITION LIT? <ROUTINE LIT?>>
<DEFINE-ROUTINE IGNORE-FIRST-WORD>
<DEFINE-ROUTINE FIX-QUOTATIONS>
<DEFINE-ROUTINE MAIN-LOOP-IT>
<DEFAULT-DEFINITION P-NO-MEM-ROUTINE <ROUTINE P-NO-MEM-ROUTINE>>
<DEFAULT-DEFINITION BEG-PARDON <ROUTINE BEG-PARDON>>
<DEFAULT-DEFINITION UNKNOWN-WORD <ROUTINE UNKNOWN-WORD>>
<DEFINE-ROUTINE WORD-PRINT>
<DEFMAC PRINT-VOCAB-WORD ('WD) <FORM PRINTB .WD>>
<DEFINE-ROUTINE DO-OOPS>
<DEFINE-ROUTINE DO-AGAIN>
<DEFINE-ROUTINE NP-SAVE>
<DEFINE-ROUTINE PARSER-ERROR>
<DEFAULT-DEFINITION BUZZER-WORD? <IFN-P-BE-VERB <CONSTANT P-W-WORDS <PLTABLE <
VOC "WHAT"> <IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHAT'S">> <VOC "WHEN"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHEN'S">> <VOC "WHERE"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHERE'S">> <VOC "WHO"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHO'S">> <VOC "WHY"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHY'S">> <VOC "HOW"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "HOW'S">> <VOC "WOULD"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WOULDN'T">> <VOC "COULD"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "COULDN'T">> <VOC "SHOULD"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "SHOULDN'T">>>>> <IFN-P-BE-VERB <IFFLAG (
P-APOSTROPHE-BREAKS-WORDS <CONSTANT P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC
"AREN">> <IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULDN">> <
IFN-P-BE-VERB <VOC "DIDN">> <IFN-P-BE-VERB <VOC "DOESN">> <IFN-P-BE-VERB <VOC
"DON">> <VOC "HASN"> <VOC "HAVEN"> <IFN-P-BE-VERB <VOC "HE">> <VOC "I"> <VOC
"I"> <IFN-P-BE-VERB <VOC "I">> <VOC "I"> <IFN-P-BE-VERB <VOC "ISN">> <
IFN-P-BE-VERB <VOC "IT">> <VOC "LET"> <IFN-P-BE-VERB <VOC "SHE">> <
IFN-P-BE-VERB <VOC "SHOULDN">> <IFN-P-BE-VERB <VOC "THAT">> <IFN-P-BE-VERB <VOC
"THEY">> <IFN-P-BE-VERB <VOC "WASN">> <IFN-P-BE-VERB <VOC "WE">> <VOC "WE"> <
IFN-P-BE-VERB <VOC "WEREN">> <IFN-P-BE-VERB <VOC "WON">> <IFN-P-BE-VERB <VOC
"WOULDN">> <IFN-P-BE-VERB <VOC "YOU">>>> <CONSTANT P-Q-WORDS2 <PLTABLE <
IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
VOC "T"> <VOC "T"> <IFN-P-BE-VERB <VOC "S">> <VOC "D"> <VOC "LL"> <
IFN-P-BE-VERB <VOC "M">> <VOC "VE"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
VOC "S">> <VOC "S"> <IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "T">> <
IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "RE">> <IFN-P-BE-VERB <VOC "T">> <
IFN-P-BE-VERB <VOC "RE">> <VOC "LL"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "RE">>>>) (T <CONSTANT
P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC "AREN'T">> <IFN-P-BE-VERB <VOC "CAN'T">
> <IFN-P-BE-VERB <VOC "COULDN'T">> <IFN-P-BE-VERB <VOC "DIDN'T">> <
IFN-P-BE-VERB <VOC "DOESN'T">> <IFN-P-BE-VERB <VOC "DON'T">> <VOC "HASN'T"> <
VOC "HAVEN'T"> <IFN-P-BE-VERB <VOC "HE'S">> <VOC "I'D"> <VOC "I'LL"> <
IFN-P-BE-VERB <VOC "I'M">> <VOC "I'VE"> <IFN-P-BE-VERB <VOC "ISN'T">> <
IFN-P-BE-VERB <VOC "IT'S">> <VOC "LET'S"> <IFN-P-BE-VERB <VOC "SHE'S">> <
IFN-P-BE-VERB <VOC "SHOULDN'T">> <IFN-P-BE-VERB <VOC "THAT'S">> <IFN-P-BE-VERB
<VOC "THEY'RE">> <IFN-P-BE-VERB <VOC "WASN'T">> <IFN-P-BE-VERB <VOC "WE'RE">> <
VOC "WE'LL"> <IFN-P-BE-VERB <VOC "WEREN'T">> <IFN-P-BE-VERB <VOC "WON'T">> <
IFN-P-BE-VERB <VOC "WOULDN'T">> <IFN-P-BE-VERB <VOC "YOU'RE">>>>)> <CONSTANT
P-Q-WORDS <PLTABLE <IFN-P-BE-VERB <VOC "AM">> <IFN-P-BE-VERB <VOC "ARE">> <
IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULD">> <IFN-P-BE-VERB <VOC
"DID">> <IFN-P-BE-VERB <VOC "DO">> <VOC "HAS"> <VOC "HAVE"> <IFN-P-BE-VERB <VOC
"IS">> <VOC "LIKE"> <IFN-P-BE-VERB <VOC "SHOULD">> <VOC "WANT"> <IFN-P-BE-VERB
<VOC "WAS">> <IFN-P-BE-VERB <VOC "WERE">> <IFN-P-BE-VERB <VOC "WILL">> <
IFN-P-BE-VERB <VOC "WOULD">>>>> <CONSTANT P-N-WORDS <PLTABLE <VOC "ZERO"> <VOC
"TEN"> <VOC "ELEVEN"> <VOC "TWELVE"> <VOC "THIRTEEN"> <VOC "FOURTEEN"> <VOC
"FIFTEEN"> <VOC "SIXTEEN"> <VOC "SEVENTEEN"> <VOC "EIGHTEEN"> <VOC "NINETEEN">
<VOC "TWENTY"> <VOC "THIRTY"> <VOC "FORTY"> <VOC "FIFTY"> <VOC "SIXTY"> <VOC
"SEVENTY"> <VOC "EIGHTY"> <VOC "NINETY"> <VOC "HUNDRED"> <VOC "THOUSAND"> <VOC
"MILLION"> <VOC "BILLION">>> <CONSTANT P-C-WORDS <PLTABLE <VOC "ASS"> <VOC
"ASSHOLE"> <VOC "BASTARD"> <VOC "BITCH"> <VOC "COCK"> <VOC "COCKSUCKER"> <VOC
"CRAP"> <VOC "CUNT"> <VOC "CUSS"> <VOC "DAMN"> <VOC "DAMNED"> <VOC "FUCK"> <VOC
"FUCKED"> <VOC "FUCKER"> <VOC "FUCKING"> <VOC "GODDAMN"> <VOC "GODDAMNED"> <VOC
"HELL"> <VOC "PISS"> <VOC "SCREW"> <VOC "SHIT"> <VOC "SHITHEAD"> <VOC "SUCKS">>
> <DEFINE BUZZER-WORD? (WD PTR "AUX" N) <IFN-P-BE-VERB <SETG P-ERRS <+ 3 ,
P-ERRS>> <COND (<EQUAL? .WD ,W?\(SOMETHI ,W?SOMETHING> <TELL
"[Type a real word instead of" ,P-SOMETHING> <RTRUE>) (<INTBL? .WD <ZREST ,
P-W-WORDS 2> <ZGET ,P-W-WORDS 0>> <W-WORD-REPLY .WD> <RTRUE>) (<OR <INTBL? .WD
<ZREST ,P-Q-WORDS 2> <ZGET ,P-Q-WORDS 0>> <IFFLAG (P-APOSTROPHE-BREAKS-WORDS <
AND <SET N <INTBL? .WD <ZREST ,P-Q-WORDS1 2> <ZGET ,P-Q-WORDS1 0>>> <EQUAL? <
ZGET .PTR ,P-LEXELEN> ,W?APOSTROPHE> <EQUAL? <ZGET ,P-Q-WORDS2 <- .N ,
P-Q-WORDS1>> <ZGET .PTR <* 2 ,P-LEXELEN>>>>) (T <INTBL? .WD <ZREST ,P-Q-WORDS1
2> <ZGET ,P-Q-WORDS1 0>>)>> <TELL-PLEASE-USE-COMMANDS> <RTRUE>)>> <COND (<
INTBL? .WD <ZREST ,P-N-WORDS 2> <ZGET ,P-N-WORDS 0>> <TELL
"[Use numerals for numbers, for example \"10.\"]" CR> <RTRUE>) (<INTBL? .WD <
ZREST ,P-C-WORDS 2> <ZGET ,P-C-WORDS 0>> <TELL !\[ <PICK-ONE ,OFFENDED> "]" CR>
<RTRUE>) (T <RFALSE>)>> <CONSTANT OFFENDED <LTABLE 0 "What charming language!"
"Computers aren't impressed by naughty words!"
"You ought to be ashamed of yourself!"
"Hey, save that talk for the locker room!" "Step outside and say that!"
"And so's your old man!">> <IFN-P-BE-VERB <DEFINE W-WORD-REPLY (WD) <COND (<OR
<NOT <EQUAL? .WD ,W?WHAT ,W?WHO>> <NOT <EQUAL? ,WINNER ,PLAYER>>> <COND (<
EQUAL? .WD ,W?WHERE> <TO-DO-X-USE-Y "locate" "FIND"> <RTRUE>) (T <TO-DO-X-USE-Y
"ask about" "TELL ME ABOUT"> <RTRUE>)>) (T <TELL "[Maybe you could "> <COND (<
FSET? ,LIBRARY ,TOUCHBIT> <TELL "look that up in the">) (T <TELL "find an">)> <
TELL " encyclopedia.]" CR>)>> <DEFINE TO-DO-X-USE-Y (STR1 STR2) <TELL "[To " .
STR1 " something, use the command: " .STR2 ,P-SOMETHING> <RTRUE>> <CONSTANT
P-SOMETHING " (something).]|"> <VOC "(SOMETHI"> <VOC "SOMETHING"> <DEFINE
TELL-PLEASE-USE-COMMANDS ("AUX" (THRESH <COND (<FSET? ,GREAT-HALL ,TOUCHBIT> 10
) (T 2)>)) <TELL "["> <COND (<L? ,P-ERRS .THRESH> <PRINT "Please use commands">
<TELL ", not statements or questions"> <PRINTR ".]">) (T <TELL-SAMPLE-COMMANDS>
)>>>>
<DEFAULT-DEFINITION NUMBER? <ADD-WORD "INT.NUM" ADJ> <ADD-WORD "INT.NUM" NOUN>
<ADD-WORD "INT.TIM" ADJ> <ADD-WORD "INT.TIM" NOUN> <ROUTINE NUMBER?>>
<DEFINE-ROUTINE CHANGE-LEXV>
<CONSTANT GWIM-MSG <TABLE 0 0 0 0>>
<DEFAULT-DEFINITION TELL-GWIM-MSG <ROUTINE TELL-GWIM-MSG>>
<END-SEGMENT>
<ENDPACKAGE>

1210
parser.zap Normal file

File diff suppressed because it is too large Load Diff

31
pic.zabstr Normal file
View File

@ -0,0 +1,31 @@
<BEGIN-SEGMENT 0>
<CONSTANT P-TITLE 1>
<CONSTANT YX-TBL <TABLE 0 0>>
<DEFINE-ROUTINE YCEILING>
<DEFINE-ROUTINE XCEILING>
<END-SEGMENT>
<BEGIN-SEGMENT STARTUP>
<DEFINE-ROUTINE TITLE-SCREEN>
<END-SEGMENT>
<BEGIN-SEGMENT 0>
<GLOBAL CURRENT-BORDER 0>
<DEFINE-ROUTINE DISPLAY-BORDER>
<DEFINE-ROUTINE CENTER-PIC-X>
<DEFINE-ROUTINE CENTER-PIC>
<GLOBAL TEXT-MARGIN 2>
<DEFINE-ROUTINE FLUSH-OLD-PICTURE>
<DEFINE-ROUTINE N-CRLF>
<DEFINE-ROUTINE MARGINAL-PIC>
<DEFINE-ROUTINE SET-MARGIN>
<GLOBAL PIC-SIDE <>>
<GLOBAL NEXT-PIC-WIDTH 0>
<GLOBAL NEXT-PIC-CRCNT 0>
<DEFINE-ROUTINE NEXT-MARGIN>
<DEFINE-ROUTINE RESET-MARGIN-1>
<BEGIN-SEGMENT HINTS>
<DEFINE-ROUTINE RESET-MARGIN>
<END-SEGMENT>
<BEGIN-SEGMENT 0>
<DEFINE-ROUTINE MAKE-ROOM-FOR>
<END-SEGMENT>

337
pic.zap Normal file
View File

@ -0,0 +1,337 @@
.SEGMENT "0"
.FUNCT YCEILING:ANY:1:1,Y
ADD Y,FONT-Y
ADD STACK,-1 >Y
MOD Y,FONT-Y
SUB Y,STACK
RSTACK
.FUNCT XCEILING:ANY:1:1,X
ADD X,FONT-X
ADD STACK,-1 >X
MOD X,FONT-X
SUB X,STACK
RSTACK
.ENDSEG
.SEGMENT "STARTUP"
.FUNCT TITLE-SCREEN:ANY:0:0
CLEAR S-FULL
PICINF P-TITLE,YX-TBL \?CND1
ICALL1 CURSOR-OFF
SCREEN S-FULL
DISPLAY P-TITLE,1,1
WINGET S-TEXT,WHIGH
CURSET STACK,1
ZERO? DEMO-VERSION? /?CCL5
ICALL2 INPUT-DEMO,1
JUMP ?CND3
?CCL5: INPUT 1
?CND3: CLEAR S-FULL
ICALL1 CURSOR-ON
?CND1: EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL8
ICALL2 DISPLAY-BORDER,P-BORDER
JUMP ?CND6
?CCL8: DISPLAY P-BORDER,1,1
WINGET S-FULL,WHIGH
SUB STACK,BORDER-HEIGHT
ADD 1,STACK
DISPLAY P-BORDER,STACK,1
?CND6: CALL2 V-VERSION,TRUE-VALUE
RSTACK
.ENDSEG
.SEGMENT "0"
.FUNCT DISPLAY-BORDER:ANY:0:2,B,CH?,Y,?TMP1
ASSIGNED? 'B /?CND1
SET 'B,CURRENT-BORDER
?CND1: ASSIGNED? 'CH? /?CND3
SET 'CH?,TRUE-VALUE
?CND3: EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL7
SCREEN S-BORDER
JUMP ?CND5
?CCL7: PICINF B,YX-TBL \?CND5
SCREEN S-FULL
?CND5: DISPLAY B,1,1
ZERO? CH? /?CND9
SET 'CURRENT-BORDER,B
?CND9: EQUAL? MACHINE,IBM \?CND11
SET 'Y,1
EQUAL? B,P-HINT-BORDER \?CND13
GET YX-TBL,0 >Y
PICINF P-HINT-BORDER-L,YX-TBL \?CND13
ADD 1,Y
DISPLAY P-HINT-BORDER-L,STACK,1
?CND13: EQUAL? B,P-BORDER \?CCL19
SET 'B,P-BORDER-R
JUMP ?CND17
?CCL19: EQUAL? B,P-BORDER2 \?CCL21
SET 'B,P-BORDER2-R
JUMP ?CND17
?CCL21: EQUAL? B,P-HINT-BORDER \?CND17
SET 'B,P-HINT-BORDER-R
?CND17: PICINF B,YX-TBL \?CND11
WINGET S-FULL,WWIDE >?TMP1
GET YX-TBL,1
SUB ?TMP1,STACK
ADD 1,STACK
DISPLAY B,Y,STACK
?CND11: SCREEN S-TEXT
RTRUE
.FUNCT CENTER-PIC-X:ANY:1:1,P,X,Y,?TMP1
PICINF P,YX-TBL \FALSE
ICALL1 FLUSH-OLD-PICTURE
GET YX-TBL,0
CALL2 YCEILING,STACK >Y
ICALL2 MAKE-ROOM-FOR,Y
WINGET -3,WWIDE >?TMP1
GET YX-TBL,1
SUB ?TMP1,STACK >X
GRTR? X,1 \?CCL6
DIV X,2 >X
JUMP ?CND4
?CCL6: SET 'X,1
?CND4: DISPLAY P,0,X
DIV Y,FONT-Y
ICALL2 N-CRLF,STACK
RTRUE
.FUNCT CENTER-PIC:ANY:1:1,P,X,Y,?TMP1
PICINF P,YX-TBL \FALSE
WINGET -3,WHIGH >?TMP1
GET YX-TBL,0
SUB ?TMP1,STACK >Y
WINGET -3,WWIDE >?TMP1
GET YX-TBL,1
SUB ?TMP1,STACK >X
GRTR? Y,1 \?CCL6
DIV Y,2 >Y
JUMP ?CND4
?CCL6: SET 'Y,1
?CND4: GRTR? X,1 \?CCL9
DIV X,2 >X
JUMP ?CND7
?CCL9: SET 'X,1
?CND7: DISPLAY P,Y,X
RTRUE
.FUNCT FLUSH-OLD-PICTURE:ANY:0:0,Y
WINGET S-TEXT,WCRCNT >Y
ZERO? Y /FALSE
ICALL2 N-CRLF,Y
CALL1 RESET-MARGIN
RSTACK
.FUNCT N-CRLF:ANY:1:1,Y,CNT
WINATTR -3,A-SCRIPT,O-CLEAR
?PRG1: IGRTR? 'CNT,Y \?CND3
WINATTR -3,A-SCRIPT,O-SET
RTRUE
?CND3: CRLF
JUMP ?PRG1
.FUNCT MARGINAL-PIC:ANY:1:4,P,RIGHT?,C,CTOP?,TMP,X,Y,YLEFT,HIGH,WIDE,CENTER?,BORD?
ASSIGNED? 'RIGHT? /?CND1
SET 'RIGHT?,TRUE-VALUE
?CND1: PICINF P,YX-TBL \FALSE
WINGET S-TEXT,WHIGH >HIGH
WINGET S-TEXT,WWIDE >WIDE
ICALL1 FLUSH-OLD-PICTURE
GET YX-TBL,0
CALL2 YCEILING,STACK >Y
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND6
GRTR? Y,HIGH \?CND6
SET 'BORD?,TRUE-VALUE
SUB Y,BORDER-HEIGHT >Y
?CND6: GET YX-TBL,1 >X
ZERO? C /?CCL12
PICINF C,YX-TBL \?CCL12
GET YX-TBL,0 >NEXT-PIC-CRCNT
GET YX-TBL,1 >NEXT-PIC-WIDTH
JUMP ?CND10
?CCL12: SET 'C,0
SET 'NEXT-PIC-CRCNT,0
SET 'NEXT-PIC-WIDTH,0
?CND10: CALL2 MAKE-ROOM-FOR,Y >YLEFT
MUL FONT-X,10
ADD X,STACK
LESS? STACK,WIDE /?CND15
SET 'CENTER?,TRUE-VALUE
?CND15: ZERO? BORD? /?CND17
SCREEN S-BORDER
CURSET 1,1
?CND17: ZERO? CENTER? /?CCL21
SUB WIDE,X
DIV STACK,2
ADD 1,STACK
JUMP ?CND19
?CCL21: ZERO? RIGHT? /?CCL23
LESS? X,WIDE \?CCL23
SUB WIDE,X
ADD 1,STACK
JUMP ?CND19
?CCL23: PUSH 1
?CND19: DISPLAY P,0,STACK
ZERO? BORD? /?CND26
SCREEN S-TEXT
?CND26: ZERO? CENTER? /?CCL30
CURSET YLEFT,1
ICALL1 CURSOR-OFF
ZERO? DEMO-VERSION? /?CCL33
ICALL2 INPUT-DEMO,1
JUMP ?CND31
?CCL33: INPUT 1
?CND31: EQUAL? MACHINE,AMIGA \?CND34
ICALL1 DISPLAY-BORDER
?CND34: ICALL1 CURSOR-ON
CALL2 YCEILING,HIGH
SUB STACK,FONT-Y >Y
SUB HIGH,Y
LESS? STACK,FONT-Y \?CND36
SUB Y,FONT-Y >Y
?CND36: INC 'Y
GRTR? YLEFT,Y \?CND38
SUB YLEFT,Y
SCROLL S-TEXT,STACK
CURSET Y,1
?CND38: CRLF
JUMP ?CND28
?CCL30: ZERO? C /?CCL42
ZERO? CTOP? /?CCL42
PUSH NEXT-PIC-WIDTH
JUMP ?CND40
?CCL42: PUSH X
?CND40: ICALL SET-MARGIN,STACK,RIGHT?
DIV Y,FONT-Y >Y
ZERO? C /?CCL47
ZERO? CTOP? /?CND48
SET 'NEXT-PIC-WIDTH,X
?CND48: SET 'PIC-SIDE,RIGHT?
CALL2 YCEILING,NEXT-PIC-CRCNT
DIV STACK,FONT-Y
SUB STACK,1 >TMP
ZERO? CTOP? /?CCL52
SUB Y,TMP
SUB STACK,1 >NEXT-PIC-CRCNT
ADD TMP,1
WINPUT 0,WCRCNT,STACK
JUMP ?CND50
?CCL52: ADD TMP,1 >NEXT-PIC-CRCNT
SUB Y,TMP
SUB STACK,1
WINPUT 0,WCRCNT,STACK
?CND50: WINPUT 0,WCRFUNC,NEXT-MARGIN
JUMP ?CND28
?CCL47: ZERO? BORD? /?CCL55
PUSH RESET-MARGIN-1
JUMP ?CND53
?CCL55: PUSH RESET-MARGIN
?CND53: WINPUT 0,WCRFUNC,STACK
EQUAL? P,P-OAR \?CND56
INC 'Y
?CND56: WINPUT 0,WCRCNT,Y
?CND28: SUB HIGH,YLEFT
GRTR? STACK,FONT-Y /FALSE
RTRUE
.FUNCT SET-MARGIN:ANY:2:2,X,RIGHT?,WIDE
WINGET S-TEXT,WWIDE >WIDE
ADD X,2
CALL2 XCEILING,STACK
DIV STACK,FONT-X >X
ZERO? RIGHT? /?CCL3
MUL X,FONT-X
MARGIN TEXT-MARGIN,STACK
JUMP ?CND1
?CCL3: MUL X,FONT-X
MARGIN STACK,TEXT-MARGIN
?CND1: DIV WIDE,FONT-X
SUB STACK,X >WIDE
GRTR? WIDE,INBUF-LENGTH \?CCL6
PUSH INBUF-LENGTH
JUMP ?CND4
?CCL6: PUSH WIDE
?CND4: PUTB P-INBUF,0,STACK
RTRUE
.FUNCT NEXT-MARGIN:ANY:0:0
ZERO? NEXT-PIC-CRCNT /TRUE
ICALL SET-MARGIN,NEXT-PIC-WIDTH,PIC-SIDE
WINPUT S-TEXT,WCRCNT,NEXT-PIC-CRCNT
WINPUT S-TEXT,WCRFUNC,RESET-MARGIN-1
SET 'NEXT-PIC-CRCNT,0
RTRUE
.FUNCT RESET-MARGIN-1:ANY:0:0
ICALL1 DISPLAY-BORDER
CALL1 RESET-MARGIN
RSTACK
.SEGMENT "HINTS"
.FUNCT RESET-MARGIN:ANY:0:0
WINPUT S-TEXT,WCRCNT,0
WINPUT S-TEXT,WCRFUNC,0
MARGIN TEXT-MARGIN,TEXT-MARGIN
PUTB P-INBUF,0,INBUF-LENGTH
RTRUE
.ENDSEG
.SEGMENT "0"
.FUNCT MAKE-ROOM-FOR:ANY:1:1,Y,YLEFT,LLEFT,HIGH,YLOC,XLOC
WINGET S-TEXT,WHIGH >HIGH
WINGET S-TEXT,WYPOS >YLOC
WINGET S-TEXT,WXPOS >XLOC
GRTR? Y,HIGH \?CND1
SET 'Y,HIGH
?CND1: SUB HIGH,YLOC
ADD 1,STACK >YLEFT
GRTR? Y,YLEFT \?CND3
SUB Y,YLEFT
CALL2 YCEILING,STACK >YLEFT
WINGET S-TEXT,WLCNT
SUB STACK,1
MUL STACK,FONT-Y
SUB YLOC,STACK >LLEFT
GRTR? YLEFT,LLEFT \?CND5
DIV HIGH,FONT-Y
WINPUT S-TEXT,WLCNT,STACK
CRLF
WINGET S-TEXT,WYPOS
SUB STACK,FONT-Y
CURSET STACK,1
?CND5: SCROLL S-TEXT,YLEFT
SUB YLOC,YLEFT >YLOC
GRTR? YLOC,0 /?CND7
SET 'YLOC,1
?CND7: CURSET YLOC,XLOC
?CND3: WINGET S-TEXT,WYPOS
ADD Y,STACK >YLEFT
RETURN YLEFT
.ENDSEG
.ENDI

93
pic.zil
View File

@ -16,7 +16,7 @@
<SET X <+ .X ,FONT-X -1>>
<- .X <MOD .X ,FONT-X>>>
<END-SEGMENT>
<END-SEGMENT ;"0">
<BEGIN-SEGMENT STARTUP>
@ -27,35 +27,60 @@
<SCREEN ,S-FULL>
<DISPLAY ,P-TITLE 1 1>
<CURSET <WINGET ,S-TEXT ,WHIGH> 1>
<INPUT 1>
<READ-CHAR> ;<INPUT 1>
<CLEAR ,S-FULL>
<CURSOR-ON>)>
<DISPLAY-BORDER ,P-BORDER>
<COND (<NOT <APPLE?>>
<DISPLAY-BORDER ,P-BORDER>)
(ELSE
<DISPLAY ,P-BORDER 1 1>
<DISPLAY ,P-BORDER
<+ 1 <- <WINGET ,S-FULL ,WHIGH> ,BORDER-HEIGHT>>
1>)>
<V-VERSION T>>
<END-SEGMENT>
<END-SEGMENT ;"STARTUP">
<BEGIN-SEGMENT 0>
<GLOBAL CURRENT-BORDER 0>
<ROUTINE DISPLAY-BORDER ("OPT" (B ,CURRENT-BORDER))
<COND (<APPLE?> <RFALSE>)
<ROUTINE DISPLAY-BORDER ("OPT" (B ,CURRENT-BORDER) (CH? T) "AUX" Y)
<COND (<APPLE?>
<SCREEN ,S-BORDER>)
(<PICINF .B ,YX-TBL>
<SCREEN ,S-FULL>
<DISPLAY .B 1 1>
<SETG CURRENT-BORDER .B>
<SCREEN ,S-TEXT>)>>
<SCREEN ,S-FULL>)>
<DISPLAY .B 1 1>
<COND (.CH? <SETG CURRENT-BORDER .B>)>
<COND (<EQUAL? ,MACHINE ,IBM>
<SET Y 1>
<COND (<EQUAL? .B ,P-HINT-BORDER>
<SET Y <GET ,YX-TBL 0>>
<COND (<PICINF ,P-HINT-BORDER-L ,YX-TBL>
<DISPLAY ,P-HINT-BORDER-L <+ 1 .Y> 1>)>)>
<COND (<EQUAL? .B ,P-BORDER>
<SET B ,P-BORDER-R>)
(<EQUAL? .B ,P-BORDER2>
<SET B ,P-BORDER2-R>)
(<EQUAL? .B ,P-HINT-BORDER>
<SET B ,P-HINT-BORDER-R>)>
<COND (<PICINF .B ,YX-TBL>
<DISPLAY .B
.Y
<+ 1
<- <WINGET ,S-FULL ,WWIDE>
<GET ,YX-TBL 1>>>>)>)>
<SCREEN ,S-TEXT>>
<ROUTINE CENTER-PIC-X (P "AUX" X Y)
<COND (<PICINF .P ,YX-TBL>
<FLUSH-OLD-PICTURE>
<MAKE-ROOM-FOR <SET Y <GET ,YX-TBL 0>>>
<MAKE-ROOM-FOR <SET Y <YCEILING <GET ,YX-TBL 0>>>>
<SET X <- <WINGET -3 ,WWIDE> <GET ,YX-TBL 1>>>
<COND (<G? .X 1> <SET X </ .X 2>>)
(ELSE <SET X 1>)>
<DISPLAY .P 0 .X>
<N-CRLF </ <+ .Y ,FONT-Y -1> ,FONT-Y>>
<N-CRLF </ .Y ,FONT-Y>>
<RTRUE>)>>
"display a picture centered in the current window"
@ -70,7 +95,7 @@
(ELSE <SET X 1>)>
<DISPLAY .P .Y .X>)>>
<CONSTANT TEXT-MARGIN 2> ;"left and right text margins in pixels"
<GLOBAL TEXT-MARGIN 2> ;"left and right text margins in pixels"
<ROUTINE FLUSH-OLD-PICTURE ("AUX" Y)
<COND (<SET Y <WINGET ,S-TEXT ,WCRCNT>>
@ -78,17 +103,24 @@
<RESET-MARGIN>)>>
<ROUTINE N-CRLF (Y)
<WINATTR -3 ,A-SCRIPT ,O-CLEAR>
<REPEAT ((CNT 0))
<COND (<IGRTR? CNT .Y> <RETURN>)>
<COND (<IGRTR? CNT .Y>
<WINATTR -3 ,A-SCRIPT ,O-SET>
<RETURN>)>
<CRLF>>>
<ROUTINE MARGINAL-PIC (P "OPT" (RIGHT? T) (C <>) (CTOP? <>)
"AUX" TMP X Y YLEFT HIGH WIDE (CENTER? <>))
"AUX" TMP X Y YLEFT HIGH WIDE (CENTER? <>) (BORD? <>))
<COND (<PICINF .P ,YX-TBL>
<SET HIGH <WINGET ,S-TEXT ,WHIGH>>
<SET WIDE <WINGET ,S-TEXT ,WWIDE>>
<FLUSH-OLD-PICTURE>
<SET Y <YCEILING <GET ,YX-TBL 0>>> ;"pic height rounded up"
<COND (<AND <APPLE?>
<G? .Y .HIGH>>
<SET BORD? T>
<SET Y <- .Y ,BORDER-HEIGHT>>)>
<SET X <GET ,YX-TBL 1>> ;"pic width"
<COND (<AND .C <PICINF .C ,YX-TBL>>
<SETG NEXT-PIC-CRCNT <GET ,YX-TBL 0>>
@ -100,6 +132,9 @@
<SET YLEFT <MAKE-ROOM-FOR .Y>>
<COND (<G=? <+ .X <* ,FONT-X 10>> .WIDE>
<SET CENTER? T>)>
<COND (.BORD?
<SCREEN ,S-BORDER>
<CURSET 1 1>)>
<DISPLAY .P
0
<COND (.CENTER?
@ -108,10 +143,13 @@
<L? .X .WIDE>>
<+ 1 <- .WIDE .X>>)
(ELSE 1)>>
<COND (.BORD? <SCREEN ,S-TEXT>)>
<COND (.CENTER?
<CURSET .YLEFT 1>
<CURSOR-OFF>
<INPUT 1>
<READ-CHAR> ;<INPUT 1>
<COND (<EQUAL? ,MACHINE ,AMIGA> ;"makes pallette happy"
<DISPLAY-BORDER>)>
<CURSOR-ON>
<SET Y <- <YCEILING .HIGH> ,FONT-Y>>
<COND (<L? <- .HIGH .Y> ,FONT-Y>
@ -141,10 +179,15 @@
<WINPUT 0 ,WCRCNT <- .Y .TMP 1>>)>
<WINPUT 0 ,WCRFUNC ,NEXT-MARGIN>)
(ELSE
<WINPUT 0 ,WCRFUNC ,RESET-MARGIN>
<WINPUT 0 ,WCRFUNC
<COND (.BORD? ,RESET-MARGIN-1)
(ELSE ,RESET-MARGIN)>>
<COND (<EQUAL? .P ,P-OAR>
<SET Y <+ .Y 1>>)>
<WINPUT 0 ,WCRCNT .Y>)>)>)>>
<WINPUT 0 ,WCRCNT .Y>)>)>
<COND (<L=? <- .HIGH .YLEFT> ,FONT-Y>
<RTRUE>)
(ELSE <RFALSE>)>)>>
<ROUTINE SET-MARGIN (X RIGHT? "AUX" WIDE)
<SET WIDE <WINGET ,S-TEXT ,WWIDE>>
@ -168,16 +211,26 @@
<COND (,NEXT-PIC-CRCNT
<SET-MARGIN ,NEXT-PIC-WIDTH ,PIC-SIDE>
<WINPUT ,S-TEXT ,WCRCNT ,NEXT-PIC-CRCNT>
<WINPUT ,S-TEXT ,WCRFUNC ,RESET-MARGIN>
<WINPUT ,S-TEXT ,WCRFUNC ,RESET-MARGIN-1>
<SETG NEXT-PIC-CRCNT 0>)>
<RTRUE>>
<ROUTINE RESET-MARGIN-1 ()
<DISPLAY-BORDER>
<RESET-MARGIN>>
<BEGIN-SEGMENT HINTS>
<ROUTINE RESET-MARGIN ()
<WINPUT ,S-TEXT ,WCRCNT 0>
<WINPUT ,S-TEXT ,WCRFUNC 0>
<MARGIN ,TEXT-MARGIN ,TEXT-MARGIN>
<PUTB ,P-INBUF 0 ,INBUF-LENGTH>>
<END-SEGMENT>
<BEGIN-SEGMENT 0>
"make sure room for Y pixels, by scrolling and moreing if necessary"
<ROUTINE MAKE-ROOM-FOR (Y "AUX" YLEFT LLEFT (HIGH <WINGET ,S-TEXT ,WHIGH>)
@ -202,4 +255,4 @@
<SET YLEFT <+ .Y <WINGET ,S-TEXT ,WYPOS>>>
<RETURN .YLEFT>>
<END-SEGMENT>
<END-SEGMENT ;"0">

View File

@ -3,6 +3,7 @@
<CONSTANT P-BORDER-LOC 2>
<CONSTANT P-BORDER 3>
<CONSTANT P-BORDER2 4>
<CONSTANT P-EBORDER 4>
<CONSTANT P-TIME 5>
<CONSTANT P-BORDER-3 6>
<CONSTANT P-STORM 7>
@ -48,4 +49,20 @@
<CONSTANT P-EXPLOSION-CORNER 47>
<CONSTANT P-WARRIOR-CORNER 48>
<CONSTANT P-HINT-LOC 49>
<CONSTANT P-HINT-BORDER 50>
<CONSTANT P-HINT-BORDER 50>
"these are to swap in segments when needed"
<CONSTANT P-YABU-SEG 51>
<CONSTANT P-RODRIGUES-SEG 52>
<CONSTANT P-PRISON-SEG 53>
<CONSTANT P-MARIKO-SEG 54>
<CONSTANT P-OCHIBA-SEG 55>
<CONSTANT P-DEPARTURE-SEG 56>
<CONSTANT P-AFTERMATH-SEG 57>
<CONSTANT P-SOFT-KEY-SEG 58>
<CONSTANT P-BORDER-R 59>
<CONSTANT P-BORDER2-R 60>
<CONSTANT P-HINT-BORDER-L 61>
<CONSTANT P-HINT-BORDER-R 62>

91
pmem.zabstr Normal file
View File

@ -0,0 +1,91 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)("P-DEBUGGING-PARSER" %<>)) ()>
<ZZPACKAGE "PMEM">
<ENTRY PMEM PMEM-ALLOC PMEM-TYPE? PMEM-RESET PM-TYPE MAKE-PM-TYPE
PMEM-WORDS-USED PDEFS-INTERNAL-OBLIST PMEM-STORE-WARN PMEM-STORE-LENGTH>
<INCLUDE "BASEDEFS" "PBITDEFS">
<USE "NEWSTRUC">
<SET-DEFSTRUCT-FILE-DEFAULTS>
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFSTRUCT PMEM (TABLE 'CONSTRUCTOR ('PRINTTYPE PRINT-PMEM) 'NODECL ('NTH ZGET)
('PUT ZPUT) ('START-OFFSET 0)) (PM-HEADER <OR FIX FALSE>) (PM-LENGTH <OR FIX
FALSE> 'OFFSET 0 'NTH GETB 'PUT PUTB) (PM-TYPE-CODE <OR FIX FALSE> 'OFFSET 1 '
NTH GETB 'PUT PUTB)>
<CONSTANT PM-HEADER-LEN 1>
<DEFSTRUCT PM-TYPE VECTOR (PMT-NAME ATOM) (PMT-CODE FIX) (PMT-LENGTH <OR FIX
FALSE>) (PMT-ARGS <VECTOR [REST PM-ARG]> [])>
<DEFSTRUCT PM-ARG VECTOR (PMA-NAME ATOM) (PMA-OFFS FIX) (PMA-TYPE ANY) (
PMA-DEFAULT ANY)>
<GDECL (PM-TYPE-COUNT) FIX (PM-LIST) LIST>
<CONSTANT PMEM-STORE-LENGTH:FIX 180>
<CONSTANT PMEM-STORE:TABLE <ITABLE ,PMEM-STORE-LENGTH>>
<GLOBAL PMEM-STORE-POINTER PMEM-STORE>
<GLOBAL PMEM-STORE-WORDS:NUMBER PMEM-STORE-LENGTH>
<DEFINE-ROUTINE PMEM?>
<DEFINE20 PM-TYPE (NAME:ATOM LENGTH:<OR FIX FALSE> "ARGS" STUFF "AUX" ATM CODE
TYPE-OBJ (OCT ,PM-HEADER-LEN) ARGS) <SET ATM <PARSE <STRING "PM-TYPE-" <SPNAME
.NAME>> 10 ,PDEFS-INTERNAL-OBLIST>> <COND (<NOT <GASSIGNED? PM-TYPE-COUNT>> <
SETG PM-TYPE-COUNT 0> <SETG PM-LIST (T)>)> <SET CODE <SETG PM-TYPE-COUNT <+ ,
PM-TYPE-COUNT 1>>> <SET TYPE-OBJ <MAKE-PM-TYPE 'PMT-NAME .ATM 'PMT-CODE .CODE '
PMT-LENGTH .LENGTH>> <EVAL <FORM CONSTANT <PARSE <STRING "PMEM-TYPE-" <SPNAME .
NAME>> 10 ,PDEFS-INTERNAL-OBLIST> .CODE>> <PUTREST <REST ,PM-LIST <- <LENGTH ,
PM-LIST> 1>> (.TYPE-OBJ)> <SETG .ATM .TYPE-OBJ> <SET ARGS <MAPF ,VECTOR <
FUNCTION (ARG:<OR LIST ATOM> "AUX" NATM OFFS (TYPE ANY) (DEFAULT <>) NNATM) <
COND (<TYPE? .ARG LIST> <SET NATM <1 .ARG>> <SET ARG <REST .ARG>>) (T <SET NATM
.ARG> <SET ARG ()>)> <SET NATM <PARSE <STRING <SPNAME .NAME> "-" <SPNAME .NATM>
> 10 ,PDEFS-INTERNAL-OBLIST>> <SET NNATM <PARSE <STRING <SPNAME .NAME> "-" <
SPNAME .NATM> "-OFFSET"> 10 ,PDEFS-INTERNAL-OBLIST>> <EVAL <FORM DEFMAC .NATM (
''OBJ "OPT" ''NEW) <FORM COND (<FORM ASSIGNED? NEW> <FORM FORM ZPUT '.OBJ .OCT
'.NEW>) (T <FORM FORM ZGET '.OBJ .OCT>)>>> <SETG .NNATM <SET OFFS .OCT>> <SET
OCT <+ .OCT 1>> <COND (<EMPTY? .ARG>) (T <SET TYPE <1 .ARG>> <COND (<NOT <
LENGTH? .ARG 1>> <COND (<AND <TYPE? <SET DEFAULT <2 .ARG>> FORM> <EMPTY? .
DEFAULT>> <SET DEFAULT <>>)>)> <COND (<AND <NOT <MATCH-KEY .DEFAULT NONE>> <NOT
<TYPE? .DEFAULT FORM>>> <COND (<NOT <DECL? .DEFAULT .TYPE>> <COND (<DECL? .
DEFAULT <FORM OR FALSE .TYPE>> <SET TYPE <FORM OR FALSE .TYPE>>) (T <ERROR
DEFAULT-DOESNT-MATCH-DECL .TYPE .DEFAULT PM-TYPE>)>)>)>)> <MAKE-PM-ARG '
PMA-NAME .NATM 'PMA-OFFS .OFFS 'PMA-TYPE .TYPE 'PMA-DEFAULT .DEFAULT>> .STUFF>>
<PMT-ARGS .TYPE-OBJ .ARGS>>
<DEFINE20 GET-PM-TYPE (TYPE:ATOM "AUX" TEMP) <COND (<AND <GASSIGNED? .TYPE> <
TYPE? ,.TYPE PM-TYPE>> ,.TYPE) (T <SET TEMP <PARSE <STRING "PM-TYPE-" <SPNAME .
TYPE>> 10 ,PDEFS-INTERNAL-OBLIST>> <COND (<AND <GASSIGNED? .TEMP> <TYPE? ,.TEMP
PM-TYPE>> ,.TEMP) (T <ERROR NOT-A-PMEM-TYPE!-ERRORS .TYPE>)>)>>
<DEFMAC PMEM-TYPE? ('PMEM 'TYPE "OPT" 'TYPE2 "AUX" (ATM <>) (ATM2 <>)) <SET
TYPE <GET-PM-TYPE .TYPE>> <COND (<ASSIGNED? TYPE2> <SET TYPE2 <GET-PM-TYPE .
TYPE2>>) (T <SET TYPE2 <>>)> <COND (<NOT .TYPE2> <FORM ==? <FORM PM-TYPE-CODE .
PMEM> <PMT-CODE .TYPE>>) (T <FORM OR <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .
TYPE>> <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .TYPE2>>>)>>
<DEFINE20 PRINT-PMEM (PMEM:PMEM "OPT" (OUTCHAN:CHANNEL .OUTCHAN) "AUX" (CODE <
PM-TYPE-CODE .PMEM>) (OBJ:PM-TYPE <NTH ,PM-LIST <+ .CODE 1>>)) <PRINT-MANY .
OUTCHAN PRINC "#" <PMT-NAME .OBJ> " ["> <REPEAT ((CT <PM-LENGTH .PMEM>) (N 1))
<COND (<L? <SET CT <- .CT 1>> 0> <RETURN>)> <PRIN1 <ZGET .PMEM .N>> <PRINC !\ >
<SET N <+ .N 1>>> <PRINC !\]> .PMEM>
<GLOBAL PMEM-WORDS-USED 0>
<GDECL (PMEM-WORDS-USED) FIX>
<DEFINE-ROUTINE PMEM-RESET>
<DEFINE20 MATCH-KEY (FOO BAR) <AND <TYPE? .FOO ATOM> <TYPE? .BAR ATOM> <=? <
SPNAME .FOO> <SPNAME .BAR>>>>
<DEFMAC PMEM-ALLOC PA (TYPNAM:ATOM "ARGS" STUFF "AUX" TEMP NT:PM-TYPE BASE
LENARG ATM BL) <SET NT <GET-PM-TYPE .TYPNAM>> <COND (<SET TEMP <MEMQ LENGTH .
STUFF>> <SET LENARG <2 .TEMP>>) (<NOT <SET LENARG <PMT-LENGTH .NT>>> <ERROR
BAD-PMEM-LENGTH-ARG!-ERRORS .TYPNAM PMEM-ALLOC>)> <SET BASE <FORM BIND ((
NEW-OBJECT <FORM DO-PMEM-ALLOC <PMT-CODE .NT> .LENARG>))>> <SET BL <REST .BASE>
> <REPEAT ((ARGS <PMT-ARGS .NT>) (INIT <CHTYPE <STACK <IVECTOR <* 2 <+ <LENGTH
.ARGS> ,PM-HEADER-LEN>> NONE>> TABLE>) THIS-ARG OFFS:FIX FRM) <COND (<EMPTY? .
STUFF> <MAPF <> <FUNCTION (ARG:PM-ARG "AUX" (IVAL <ZGET .INIT <PMA-OFFS .ARG>>)
) <COND (<AND <MATCH-KEY .IVAL NONE> <MATCH-KEY <PMA-DEFAULT .ARG> NONE>> <
ERROR NO-VALUE-FOR-MANDATORY-SLOT!-ERRORS .TYPNAM PMEM-ALLOC>) (<MATCH-KEY .
IVAL NONE> <COND (<AND <PMA-DEFAULT .ARG> <N==? <PMA-DEFAULT .ARG> '<>> <N==? <
PMA-DEFAULT .ARG> 0>> <SET BL <REST <PUTREST .BL (<FORM <PMA-NAME .ARG> '.
NEW-OBJECT <PMA-DEFAULT .ARG>>)>>>)>)>> .ARGS> <RETURN>)> <COND (<OR <NOT <
TYPE? <SET ATM <1 .STUFF>> ATOM>> <AND <OR <NOT <GASSIGNED? .ATM>> <NOT <TYPE?
,.ATM FIX MACRO>>> <SET ATM <PARSE <STRING <SPNAME .TYPNAM> "-" <SPNAME .ATM>>
10 ,PDEFS-INTERNAL-OBLIST>> <OR <NOT <GASSIGNED? .ATM>> <NOT <TYPE? ,.ATM FIX
MACRO>>>>> <COND (<N==? <1 .STUFF> LENGTH> <ERROR BAD-PMEM-ARG!-ERRORS .STUFF
PMEM-ALLOC>)>) (T <SET FRM <EXPAND <FORM .ATM .INIT T>>> <ZPUT .INIT <3 .FRM:
FORM> T> <COND (<AND <2 .STUFF> <N==? <2 .STUFF> '<>> <N==? <2 .STUFF> 0>> <SET
BL <REST <PUTREST .BL (<FORM .ATM '.NEW-OBJECT <2 .STUFF>>)>>>)>)> <SET STUFF <
REST .STUFF 2>>> <PUTREST .BL ('.NEW-OBJECT)> .BASE>
<DEFINE-ROUTINE DO-PMEM-ALLOC>
<END-SEGMENT>
<ENDPACKAGE>

38
pmem.zap Normal file
View File

@ -0,0 +1,38 @@
.SEGMENT "0"
.FUNCT PMEM?:ANY:1:1,PTR
LESS? PTR,PMEM-STORE /FALSE
LESS? PTR,PMEM-STORE+180 /TRUE
RFALSE
.FUNCT PMEM-RESET:ANY:0:0
GRTR? PMEM-WORDS-USED,0 \?CND1
SET 'PMEM-WORDS-USED,0
SUB PMEM-STORE-LENGTH,PMEM-STORE-WORDS
MUL 2,STACK
COPYT PMEM-STORE,0,STACK
?CND1: SET 'PMEM-STORE-WORDS,PMEM-STORE-LENGTH
SET 'PMEM-STORE-POINTER,PMEM-STORE
RTRUE
.FUNCT DO-PMEM-ALLOC:ANY:2:2,TYPE,LENGTH,STOR,LEFT,NEW
SET 'STOR,PMEM-STORE-POINTER
SET 'LEFT,PMEM-STORE-WORDS
IGRTR? 'LENGTH,LEFT \?CND1
ICALL2 P-NO-MEM-ROUTINE,TYPE
?CND1: ADD PMEM-WORDS-USED,LENGTH >PMEM-WORDS-USED
SUB LEFT,LENGTH >PMEM-STORE-WORDS
MUL LENGTH,2
ADD STOR,STACK >PMEM-STORE-POINTER
DEC 'LENGTH
PUTB STOR,0,LENGTH
PUTB STOR,1,TYPE
RETURN STOR
.ENDSEG
.ENDI

84
prare.zabstr Normal file
View File

@ -0,0 +1,84 @@
<FLAGS-AND-DEFAULTS (("P-ZORK0" %<>)("ONE-BYTE-PARTS-OF-SPEECH" %<>)(
"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-APOSTROPHE-BREAKS-WORDS" T)(
"P-BE-VERB" T)) (("SETUP-ORPHAN-NP" "DEFS" #WORD *32734731554*) (
"WINNER-SAYS-WHICH?" "DEFS" #WORD *11064457026*) ("REFRESH" "DEFS" #WORD
*26533721703*))>
<ZZPACKAGE "PARSER">
<RENTRY PRINT-LEXV TELL-CTHE TELL-THE>
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
<USE "PMEM" "PSTACK" "REDS">
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED CANT-FIND-OBJECT CANT-USE-MULTIPLE DONT-UNDERSTAND
PRINT-INTQUOTE PRINT-LEXV REFRESH SETUP-ORPHAN SETUP-ORPHAN-NP TOO-MANY-NOUNS
WHICH-LIST? WHICH-PRINT WINNER-SAYS-WHICH? YES?>
<DEFINE-ROUTINE TOO-MANY-NEW>
<DEFINE-ROUTINE NAKED-OOPS>
<DEFINE-ROUTINE CANT-OOPS>
<DEFINE-ROUTINE CANT-AGAIN>
<DEFAULT-DEFINITION CANT-USE-MULTIPLE <ROUTINE CANT-USE-MULTIPLE>>
<DEFINE-ROUTINE MAKE-ROOM-FOR-TOKENS>
<DEFINE-ROUTINE REPLACE-ONE-TOKEN>
<DEFAULT-DEFINITION REFRESH <DEFINE V-$REFRESH () <LOWCORE FLAGS <BAND <LOWCORE
FLAGS> <BCOM ,F-REFRESH>>> <CLEAR -1> <INIT-STATUS-LINE> <RTRUE>>>
<DEFAULT-DEFINITION PRINT-INTQUOTE <ROUTINE PRINT-INTQUOTE>>
<DEFAULT-DEFINITION PRINT-LEXV <ROUTINE PRINT-LEXV>>
<DEFINE-ROUTINE COPY-INPUT>
<COND (<NOT <OR <CHECK-VERSION? XZIP> <CHECK-VERSION? YZIP>>> <DEFINE
COPY-INBUF (SRC DEST "AUX" CNT:FIX) <SET CNT <- <GETB .SRC 0> 1>> <REPEAT () <
PUTB .DEST .CNT <GETB .SRC .CNT>> <COND (<L? <SET CNT <- .CNT 1>> 0> <RETURN>)>
>> <DEFINE COPY-LEXV (SRC DEST "OPT" (MAX:FIX ,LEXV-LENGTH) "AUX" (CTR:FIX 1))
<PUTB .DEST 0 <GETB .SRC 0>> <PUTB .DEST 1 <GETB .SRC 1>> <SET DEST <ZREST .
DEST <* ,P-LEXSTART:FIX 2>>> <SET SRC <ZREST .SRC <* ,P-LEXSTART:FIX 2>>> <
REPEAT () <ZPUT .DEST 0 <ZGET .SRC 0>> <PUTB .DEST 2 <GETB .SRC 2>> <PUTB .DEST
3 <GETB .SRC 3>> <COND (<G? <SET CTR <+ .CTR 1>> .MAX> <RETURN>)> <SET DEST <
ZREST .DEST <* 2 ,P-LEXELEN:FIX>>> <SET SRC <ZREST .SRC <* 2 ,P-LEXELEN:FIX>>>>
>)>
<END-SEGMENT>
<BEGIN-SEGMENT 0>
<ADD-WORD NO.WORD ADJ>
<DEFINE-ROUTINE BUFFER-PRINT>
<DEFINE-ROUTINE CAPITALIZE>
<DEFINE-ROUTINE PRINT-PARSER-FAILURE>
<DEFINE-ROUTINE NAKED-ADJECTIVE?>
<DEFINE-ROUTINE CHANGE-AND-TO-THEN?>
<DEFAULT-DEFINITION DONT-UNDERSTAND <ROUTINE DONT-UNDERSTAND>>
<DEFINE-ROUTINE MISSING>
<DEFAULT-DEFINITION CANT-FIND-OBJECT <ROUTINE CANT-FIND-NPP> <ROUTINE
CANT-FIND-OBJECT> <ROUTINE NP-CANT-SEE>>
<DEFAULT-DEFINITION WINNER-SAYS-WHICH? <DEFINE WINNER-SAYS-WHICH? (NP) <>>>
<DEFAULT-DEFINITION WHICH-LIST? <ROUTINE WHICH-LIST?>>
<DEFAULT-DEFINITION WHICH-PRINT <ROUTINE WHICH-PRINT>>
<DEFINE-ROUTINE NP-PRINT>
<DEFINE-ROUTINE ADJS-PRINT>
<DEFAULT-DEFINITION TOO-MANY-NOUNS <ROUTINE TOO-MANY-NOUNS>>
<DEFINE-ROUTINE INBUF-ADD>
<DEFINE-ROUTINE INBUF-PRINT>
<DEFAULT-DEFINITION YES? <CONSTANT YES-INBUF <ITABLE 19 (BYTE LENGTH) 0>> <
CONSTANT YES-LEXV <ITABLE 3 (LEXV) 0 0>> <DEFINE YES? ("OPT" (NO-Q <>) "AUX"
WORD VAL) <COND (<NOT .NO-Q> <TELL !\?>)> <REPEAT () <TELL "|>"> <COND (T <PUTB
,YES-INBUF 1 0>)> <COND (,DEMO-VERSION? <READ-DEMO ,YES-INBUF ,YES-LEXV>) (T <
ZREAD ,YES-INBUF ,YES-LEXV>)> <COND (<AND <NOT <0? <GETB ,YES-LEXV ,P-LEXWORDS>
>> <SET WORD <ZGET ,YES-LEXV ,P-LEXSTART>>> <COND (<COMPARE-WORD-TYPES <
WORD-CLASSIFICATION-NUMBER .WORD> <GET-CLASSIFICATION VERB>> <SET VAL <
WORD-VERB-STUFF .WORD>>) (T <SET VAL <>>)> <COND (<EQUAL? .VAL ,ACT?YES> <SET
VAL T> <RETURN>) (<OR <EQUAL? .VAL ,ACT?NO> <EQUAL? .WORD ,W?N>> <SET VAL <>> <
RETURN>) (<EQUAL? .VAL ,ACT?RESTART> <V-RESTART>) (<EQUAL? .VAL ,ACT?RESTORE> <
V-RESTORE>) (<EQUAL? .VAL ,ACT?QUIT> <V-QUIT>)>)> <TELL
"[Please type YES or NO.]">> .VAL>>
<DEFAULT-DEFINITION SETUP-ORPHAN <ROUTINE SETUP-ORPHAN>>
<DEFAULT-DEFINITION SETUP-ORPHAN-NP <DEFINE SETUP-ORPHAN-NP (STR OBJ1 OBJ2
"OPT" (OBJ3 <>) "AUX" NUM VEC) <DIROUT ,D-TABLE-ON ,O-INBUF> <TELL .STR> <
DIROUT ,D-TABLE-OFF> <PUTB ,O-INBUF 0 ,INBUF-LENGTH> <LEX ,O-INBUF ,O-LEXV> <
COND (<ZERO? <SET NUM <GETB ,O-LEXV ,P-LEXWORDS>>> <>) (<INTBL? 0 <ZREST ,
O-LEXV <* 2 ,P-LEXSTART>> .NUM 132> <>) (T <SETG P-OFLAG <- 1 <* ,P-LEXELEN <
GETB ,O-LEXV ,P-LEXWORDS>>>> <ZPUT ,OOPS-TABLE ,O-END <+ 2 <GETB ,O-INBUF 1>>>
<ZPUT ,OOPS-TABLE ,O-AGAIN <ZREST ,P-LEXV <* 2 ,P-LEXSTART>>> <SET VEC <
REST-TO-SLOT ,ORPHAN-SR FIND-RES-OBJ1>> <ZPUT .VEC 0 .OBJ1> <ZPUT .VEC 1 .OBJ2>
<SET NUM 2> <COND (<T? .OBJ3> <INC NUM> <ZPUT .VEC 2 .OBJ3>)> <FIND-RES-COUNT ,
ORPHAN-SR .NUM> T)>>>
<DEFINE-ROUTINE INSERT-ADJS>
<DEFINE-ROUTINE INSERT-ADJS-WD>
<END-SEGMENT>
<ENDPACKAGE>

1056
prare.zap Normal file

File diff suppressed because it is too large Load Diff

45
pstack.zabstr Normal file
View File

@ -0,0 +1,45 @@
<ZZPACKAGE "PSTACK">
<ENTRY ALLOCATE-PSTACK MAX-PSTACK-SIZE PUSH-PSTACK POP-PSTACK PEEK-PSTACK
PSTACK FLUSH-PSTACK PSTACK-PTR CLEAR-PSTACK PSTACK-DATA PSTACK-EMPTY?>
<USE "NEWSTRUC">
<FILE-FLAGS>
<BEGIN-SEGMENT 0>
<MSETG MAX-PSTACK-SIZE 21>
<NEWTYPE PSTACK TABLE>
<DEFMAC ALLOCATE-PSTACK () <ITABLE ,MAX-PSTACK-SIZE 0>>
<DEFMAC PSTACK-PTR ('S "OPT" 'NEW) <COND (<ASSIGNED? NEW> <FORM ZPUT .S 0 .NEW>
) (T <CHTYPE [<FORM ZGET .S 0> FIX] ADECL>)>>
<DEFMAC PSTACK-EMPTY? ('PSTACK) <COND (<CHECK-VERSION? YZIP> <FORM EQUAL? <- ,
MAX-PSTACK-SIZE 1> <FORM PSTACK-PTR .PSTACK>>) (T <FORM 0? <FORM PSTACK-PTR .
PSTACK>>)>>
<DEFMAC CLEAR-PSTACK ('S) <COND (<CHECK-VERSION? YZIP> <FORM PSTACK-PTR <CHTYPE
[.S PSTACK] ADECL> <- ,MAX-PSTACK-SIZE 1>>) (T <FORM PSTACK-PTR <CHTYPE [.S
PSTACK] ADECL> 0>)>>
<DEFINE20 PRINT-PSTACK (S:PSTACK "OPT" (OUTCHAN:CHANNEL .OUTCHAN) "AUX" (P <
PSTACK-PTR .S>)) <PRINT-MANY .OUTCHAN PRINC "#PSTACK [" .P " ["> <REPEAT ((D <
ZREST .S 2>)) <COND (<L=? .P 0> <RETURN>)> <PRIN1 <ZGET .D 0>> <PRINC " "> <SET
D <ZREST .D 2>> <SET P <- .P 1>>> <PRINC "]]">>
<COND (<CHECK-VERSION? YZIP> <DEFMAC PUSH-PSTACK ('S 'OBJ) <FORM XPUSH .OBJ .S>
>) (T <IF-P-DEBUGGING-PARSER <GLOBAL PSTACK-WARN:NUMBER 20>> <ROUTINE
PUSH-PSTACK (S:PSTACK OBJ "AUX" TMP) <SET TMP <+ 1 <PSTACK-PTR .S>>> <COND (<
L=? ,MAX-PSTACK-SIZE .TMP> <P-NO-MEM-ROUTINE> <RFALSE>)> <IF-P-DEBUGGING-PARSER
<COND (<L? ,PSTACK-WARN .TMP> <SETG PSTACK-WARN .TMP> <PRINTI "[PSTACK: "> <
PRINTN <- ,MAX-PSTACK-SIZE .TMP>> <PRINTI " left!]|">)>> <PSTACK-PTR .S .TMP> <
ZPUT .S .TMP .OBJ> .S>)>
<COND (<CHECK-VERSION? YZIP> <DEFMAC FLUSH-PSTACK ('S "OPT" ('N 1)) <FORM
FSTACK .N .S>>) (T <ROUTINE FLUSH-PSTACK (S:PSTACK "OPT" (N:FIX 1)) <COND (<G?
0 <SET N <- <PSTACK-PTR .S> .N>>> <SET N 0>)> <PSTACK-PTR .S .N> .S>)>
<COND (<CHECK-VERSION? YZIP> <DEFMAC POP-PSTACK ('S "OPT" ('N 1)) <COND (<1? .N
> <FORM POP .S>) (T <FORM FSTACK .N .S>)>>) (T <ROUTINE POP-PSTACK (S:PSTACK
"OPT" (N:FIX 1) "AUX" (OBJ <PEEK-PSTACK .S>)) <COND (<NOT <0? .N>> <
FLUSH-PSTACK .S .N>)> .OBJ>)>
<COND (<CHECK-VERSION? YZIP> <ROUTINE PEEK-PSTACK (S "OPT" (OFFS 0) "AUX" (N 0)
VAL) <REPEAT () <SET VAL <POP .S>> <PUSH .VAL> <SET N <ADD N 1>> <COND (<LESS?
<SET OFFS <SUB OFFS 1>> 0> <RETURN>)>> <REPEAT () <COND (<LESS? <SET N <SUB N 1
>> 0> <RETURN>) (T <XPUSH #ZLOCAL!-IZILCH STACK .S>)>> .VAL>) (T <ROUTINE
PEEK-PSTACK (S:PSTACK "OPT" (OFFS:FIX 0)) <ZGET .S <- <PSTACK-PTR .S> .OFFS>>>)
>
<DEFINE-ROUTINE PEEK-PSTACK>
<END-SEGMENT>
<ENDPACKAGE>

18
pstack.zap Normal file
View File

@ -0,0 +1,18 @@
.SEGMENT "0"
.FUNCT PEEK-PSTACK:ANY:1:2,S,OFFS,N,VAL
?PRG1: POP S >VAL
PUSH VAL
INC 'N
DLESS? 'OFFS,0 \?PRG1
?PRG5: DLESS? 'N,0 /?REP6
POP
XPUSH STACK,S /?PRG5
JUMP ?PRG5
?REP6: RETURN VAL
.ENDSEG
.ENDI

90
puzzles.txt Normal file
View File

@ -0,0 +1,90 @@
Puzzles marked with a + have "happy" endings: they can be solved in the
usual sense. Those marked with a - can't be solved in the sense that
there is a happy ending, or a way to reach the stated goal. Those marked
with a . have a partial solution (you can get part of the goal)
Blackthorne
(Goal is to survive, to regain his ship, to return to England. Later,
to learn Japanese, prove he's not a barbarian, and to keep Mariko.)
+ Reef/Arrival: pilot Erasmus through reef, avoid being washed
overboard
. The Pit: prevent Yabu from killing anyone, become civilized
+ Rescuing Rodrigues: tying kimonos, getting Yabu's attention
+ Suicide Attempt: must go through with it
+ Surviving in Prison: beat up baddies, become friends with
Fr. Domingo, don't reveal that you're English
+ Learning Japanese: this goes on throughout the game, but there
is a long sequence soon after you first meet Mariko
. The Pheasant: you could probably throw it away?
+ Teaching Toranaga to dive/not beating him in race
+ Toranaga's Escape from Osaka Castle
Diversion: must notice that old woman is really Toranaga
Battle at/in harbor: must thread way through maze of streets,
get to ship, get by Rodrigues in harbor
+ Rescuing Toranaga from Earthquake
- Saving Mariko from her suicide: prevent Mariko from committing
suicide (can't "win" because it is only Oshido who can do this)
- Saving Mariko during battle at Osaka Castle: if you save Mariko
the point of the suicide/battle is lost, also, she "wants" to
die. You can, however, prevent her from being kidnapped by the
ninja.
Mariko
(Goal is to atone for her father's sin and gain revenge against the
Taiko and Ishido (by helping Toranaga). Later, to keep her affair with
Blackthorne secret, to somehow have him without compromising her
position.)
Teaching Blackthorne Japanese
Falling in love with Blackthorne
Avoiding rape by Portuguese
Suicide Attempt
Attack on Osaka Castle
Toranaga
(Goal is to become Shogun.)
Escape from Osaka Castle
Disguise as a woman
Battle at/in harbor
Influencing other daimyos
Zataki
Kiyama
Detecting Yabu's treachery
Omi
(Goal is increased power and influence, ultimately to replace Yabu as
head of the Kasigi clan.)
Taming Blackthorne
The Musket Regiment
Getting Kiku
Yabu
(Goal is increased power and influence, perhaps ultimately to be Shogun,
but more immediately to avoid detection as a traitor.)
The Waiting Barbarian
Betrayal of Toranaga
Attack on Osaka Castle
Killing Sumiyori
Letting in the ninja
Ferriera
(Goal is to destroy Blackthorne, failing that, his ship. Long-term,
wealth for himself and decreased influence for the Jesuits.)
Neutralizing Blackthorne
Gaining the upper hand vs. the Jesuits
Killing B. after he is released from Osaka
...more possible characters...
dell'Aqua
Alvito
Rodrigues
Ochiba
Ishido
Usagi
Mura

180
quake.zabstr Normal file
View File

@ -0,0 +1,180 @@
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT QUAKE>
<ROOM PLATEAU (LOC ROOMS) (SCENE S-QUAKE) (DESC "Plateau") (SYNONYM PLATEAU) (
SCORE 4) (AFTER ZATAKI-AFTER-F) (FDESC
"You sit cross-legged in front of Toranaga, swords in his
sash. Mariko is explaining something to you. \"War
is coming,\" she says. \"When?\" you ask. \"Very soon, so you are to leave
at once with me. I'm going to Osaka, you are to accompany me part of
the way, but you're going on to Yedo to prepare your ship for war.\"") (FLAGS
ONBIT OUTSIDE SCOREBIT) (ACTION PLATEAU-F)>
<DEFINE-ROUTINE PLATEAU-F>
<GLOBAL TORANAGA-HELD-FLAG <>>
<GLOBAL QUAKE? <>>
<DEFINE-ROUTINE I-QUAKE>
<GLOBAL QUAKE-CNT 0 %<> WORD>
<OBJECT EARTHQUAKE (DESC "earthquake") (SYNONYM QUAKE EARTHQUAKE) (ADJECTIVE
EARTH) (ACTION EARTHQUAKE-F)>
<DEFINE-ROUTINE EARTHQUAKE-F>
<OBJECT MAIN-FISSURE (DESC "main fissure") (SYNONYM FISSURE CHASM CLEFT DITCH
LEDGE) (ADJECTIVE MAIN FIRST OLD MUDDY) (FLAGS SEARCHBIT OPENBIT CONTBIT VEHBIT
) (GENERIC GENERIC-FISSURE-F) (DESCFCN FISSURE-DESC) (ACTION MAIN-FISSURE-F)>
<DEFINE-ROUTINE MAIN-FISSURE-F>
<DEFINE-ROUTINE GENERIC-FISSURE-F>
<OBJECT SIDE-FISSURE (DESC "side fissure") (SYNONYM FISSURE CHASM CLEFT DITCH
GAP LEDGE) (ADJECTIVE SIDE NEW SECOND MUDDY) (FLAGS SEARCHBIT OPENBIT CONTBIT
VEHBIT SCOREBIT) (GENERIC GENERIC-FISSURE-F) (DESCFCN FISSURE-DESC) (ACTION
SIDE-FISSURE-F)>
<DEFINE-ROUTINE FISSURE-DESC>
<DEFINE-ROUTINE SIDE-FISSURE-F>
<DEFINE-ROUTINE I-CRAWL>
<DEFINE-ROUTINE ZATAKI-AFTER-F>
<OBJECT ZATAKI (LOC GLOBAL-OBJECTS) (DESC "Zataki") (SYNONYM ZATAKI) (ADJECTIVE
SAIGAWA LORD) (FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT OPENBIT CONTBIT
SEARCHBIT) (CONTFCN ZATAKI-F) (ACTION ZATAKI-F)>
<DEFINE-ROUTINE ZATAKI-F>
<END-SEGMENT>
<BEGIN-SEGMENT YOKOSE>
<CONSTANT J-YOSHI 130>
<ROOM YOKOSE-BATH-HOUSE (LOC ROOMS) (SCENE S-JOURNEY) (SCORE 3) (AFTER
JOURNEY-AFTER-F) (FDESC
"Toranaga tells everyone he will head up the east road toward Atami
and Odawara, thence over the mountains to Yedo. Mariko is given
permission to go to Osaka. \"But first you'll go directly from here
to Mishima, then continue on to Yedo with the Anjin-san. You're
responsible for him until you arrive.\"|
|
Buntaro turns to Mariko. \"Sayonara -- until I see you at Osaka. When
we meet there or when you return from there, then we begin again.\"|
|
\"Sayonara, my Lord.\" Mariko bows. He swings into his saddle and
is off toward the head of the column.|
|
\"Go with God,\" she says, and you watch her eyes following Buntaro.|
|
The journey to Mishima takes nine days, and every night, for part of
the night, you are together. Secretly. Your escort, Captain Akira
Yoshinaka, unwittingly makes it easier by placing you in adjoining rooms.|
|
Tonight the group arrives at Yokose Spa, road-weary and dirty from the
journey. Everyone is anxious for a bath and a night's sleep -- or
other relaxation.") (DESC "Bath House") (LDESC
"This is the bath house outside the inn at Yokose. The first floor of
the inn is to the west.") (SYNONYM BATH HOUSE) (ADJECTIVE BATH) (WEST TO
YOKOSE-FIRST-FLOOR) (FLAGS ONBIT RMUNGBIT) (ACTION YOKOSE-BATH-HOUSE-F)>
<DEFINE-ROUTINE YOKOSE-BATH-HOUSE-F>
<DEFINE-ROUTINE JOURNEY-AFTER-F>
<OBJECT ROBE (LOC YOKOSE-BATH-HOUSE) (OWNER MARIKO) (DESC "robe") (SYNONYM ROBE
) (ADJECTIVE THICK COTTON BATHING BATH) (FLAGS TAKEBIT WEARABLE WEARBIT) (
ACTION ROBE-F)>
<DEFINE-ROUTINE ROBE-F>
<OBJECT TOWEL (LOC YOKOSE-BATH-HOUSE) (DESC "towel") (SYNONYM TOWEL) (ADJECTIVE
SMALL BATH) (FLAGS TAKEBIT TOOLBIT WEARABLE) (ACTION TOWEL-F)>
<DEFINE-ROUTINE TOWEL-F>
<OBJECT YOKOSE-BATHTUB (LOC YOKOSE-BATH-HOUSE) (DESC "bath tub") (SYNONYM TUB
BATH POOL WATER) (ADJECTIVE BATH WOODEN HOT) (FLAGS NDESCBIT CANT-HOLD VEHBIT
OPENBIT CONTBIT SEARCHBIT SCOREBIT) (CAPACITY 300) (DESCFCN YOKOSE-BATHTUB-DESC
) (ACTION YOKOSE-BATHTUB-F)>
<DEFINE-ROUTINE YOKOSE-BATHTUB-DESC>
<DEFINE-ROUTINE YOKOSE-BATHTUB-F>
<DEFINE-ROUTINE PUT-DOWN-TOWEL>
<DEFINE-ROUTINE EXHIBITION>
<DEFINE-ROUTINE I-YOKOSE-BATH>
<GLOBAL BATH-CNT 0 %<> WORD>
<OBJECT SHOJI-1 (LOC LOCAL-GLOBALS) (DESC "west shoji") (SYNONYM SHOJI DOOR) (
FLAGS NDESCBIT DOORBIT)>
<OBJECT SHOJI-2 (LOC LOCAL-GLOBALS) (DESC "east shoji") (SYNONYM SHOJI DOOR) (
FLAGS NDESCBIT DOORBIT)>
<OBJECT SHOJI-3 (LOC LOCAL-GLOBALS) (DESC "west shoji") (SYNONYM SHOJI DOOR) (
FLAGS NDESCBIT DOORBIT)>
<OBJECT SHOJI-4 (LOC LOCAL-GLOBALS) (DESC "east shoji") (SYNONYM SHOJI DOOR) (
FLAGS NDESCBIT DOORBIT)>
<OBJECT SHOJI-5 (LOC LOCAL-GLOBALS) (DESC "west shoji") (SYNONYM SHOJI DOOR) (
FLAGS NDESCBIT DOORBIT)>
<OBJECT SHOJI-6 (LOC LOCAL-GLOBALS) (DESC "east shoji") (SYNONYM SHOJI DOOR) (
FLAGS NDESCBIT DOORBIT)>
<ROOM YOKOSE-SPA-1 (LOC ROOMS) (SCENE S-JOURNEY) (OWNER BLACKTHORNE) (DESC
"Blackthorne's Room") (LDESC
"This is your room at the spa at Yokose. The corridor is outside, and
Mariko's room is next to yours, but accessible only from the corridor.") (
SYNONYM YOKOSE SPA ROOM) (ADJECTIVE YOKOSE) (OUT TO YOKOSE-CORRIDOR-1) (EAST TO
YOKOSE-CORRIDOR-1) (FLAGS ONBIT RMUNGBIT) (GLOBAL LG-YOSHINAKA SHOJI-1) (ACTION
YOKOSE-SPA-1-F)>
<DEFINE-ROUTINE YOKOSE-SPA-1-F>
<ROOM YOKOSE-SPA-2 (LOC ROOMS) (SCENE S-JOURNEY) (DESC "Room in the Inn") (
LDESC "This is a room at the spa at Yokose. The corridor is outside.") (
SYNONYM YOKOSE SPA ROOM) (ADJECTIVE YOKOSE) (OUT TO YOKOSE-CORRIDOR-1) (WEST TO
YOKOSE-CORRIDOR-1) (GLOBAL LG-YOSHINAKA SHOJI-2) (FLAGS ONBIT RMUNGBIT) (ACTION
YOKOSE-SPA-F)>
<DEFINE-ROUTINE YOKOSE-SPA-F>
<OBJECT YOKOSE-GUEST-1 (LOC YOKOSE-SPA-2) (DESC "guest") (SYNONYM GUEST) (FLAGS
PERSON JAPANESEBIT) (ACTION YOKOSE-GUEST-F)>
<ROOM YOKOSE-CORRIDOR-1 (LOC ROOMS) (SCENE S-JOURNEY) (DESC "South of Corridor"
) (LDESC "This is the corridor outside the rooms. It continues north and there
are rooms to the east and west.") (SYNONYM YOKOSE SPA CORRIDOR) (ADJECTIVE
YOKOSE) (WEST TO YOKOSE-SPA-1) (EAST TO YOKOSE-SPA-2) (NORTH TO
YOKOSE-CORRIDOR-2) (GLOBAL LG-YOSHINAKA SHOJI-1 SHOJI-2) (FLAGS ONBIT)>
<ROOM YOKOSE-SPA-3 (LOC ROOMS) (SCENE S-JOURNEY) (DESC "Mariko's Room") (OWNER
MARIKO) (LDESC "This is a room at the spa at Yokose. The corridor is outside."
) (SYNONYM YOKOSE SPA ROOM) (ADJECTIVE YOKOSE) (OUT TO YOKOSE-CORRIDOR-2) (EAST
TO YOKOSE-CORRIDOR-2) (FLAGS ONBIT RMUNGBIT SCOREBIT) (GLOBAL LG-YOSHINAKA
SHOJI-3) (ACTION YOKOSE-SPA-3-F)>
<DEFINE-ROUTINE YOKOSE-SPA-3-F>
<ROOM YOKOSE-SPA-4 (LOC ROOMS) (SCENE S-JOURNEY) (DESC "Room at the Inn") (
LDESC "This is a room at the spa at Yokose. The corridor is outside.") (
SYNONYM YOKOSE SPA ROOM) (ADJECTIVE YOKOSE) (OUT TO YOKOSE-CORRIDOR-2) (WEST TO
YOKOSE-CORRIDOR-2) (GLOBAL LG-YOSHINAKA SHOJI-4) (FLAGS ONBIT RMUNGBIT) (ACTION
YOKOSE-SPA-F)>
<OBJECT YOKOSE-GUEST-2 (LOC YOKOSE-SPA-4) (DESC "guest") (SYNONYM GUEST) (FLAGS
PERSON JAPANESEBIT) (ACTION YOKOSE-GUEST-F)>
<DEFINE-ROUTINE YOKOSE-GUEST-F>
<ROOM YOKOSE-CORRIDOR-2 (LOC ROOMS) (SCENE S-JOURNEY) (DESC
"Middle of Corridor") (LDESC
"This is the corridor outside the rooms. It continues north and south
and there are rooms to the east and west.") (SYNONYM YOKOSE SPA CORRIDOR) (
ADJECTIVE YOKOSE) (WEST TO YOKOSE-SPA-3) (EAST TO YOKOSE-SPA-4) (NORTH TO
YOKOSE-CORRIDOR-3) (SOUTH TO YOKOSE-CORRIDOR-1) (GLOBAL LG-YOSHINAKA SHOJI-3
SHOJI-4) (FLAGS ONBIT)>
<ROOM YOKOSE-SPA-5 (LOC ROOMS) (SCENE S-JOURNEY) (DESC "Gyoko's Room") (OWNER
GYOKO) (LDESC "This is a room at the spa at Yokose. The corridor is outside.")
(SYNONYM YOKOSE SPA ROOM) (ADJECTIVE YOKOSE) (OUT TO YOKOSE-CORRIDOR-3) (EAST
TO YOKOSE-CORRIDOR-3) (GLOBAL LG-YOSHINAKA SHOJI-5) (FLAGS ONBIT RMUNGBIT) (
ACTION YOKOSE-SPA-F)>
<ROOM YOKOSE-SPA-6 (LOC ROOMS) (SCENE S-JOURNEY) (OWNER YOSHINAKA) (DESC
"Yoshinaka's Room") (LDESC
"This is a room at the spa at Yokose. The corridor is outside.") (SYNONYM
YOKOSE SPA ROOM) (ADJECTIVE YOKOSE) (OUT TO YOKOSE-CORRIDOR-3) (WEST TO
YOKOSE-CORRIDOR-3) (GLOBAL LG-YOSHINAKA SHOJI-6) (FLAGS ONBIT RMUNGBIT) (ACTION
YOKOSE-SPA-F)>
<ROOM YOKOSE-CORRIDOR-3 (LOC ROOMS) (SCENE S-JOURNEY) (DESC "North of Corridor"
) (LDESC "This is the corridor outside the rooms. It continues south and there
are rooms to the east and west. A stair leads down.") (SYNONYM YOKOSE SPA
CORRIDOR) (ADJECTIVE YOKOSE) (WEST TO YOKOSE-SPA-5) (EAST TO YOKOSE-SPA-6) (
SOUTH TO YOKOSE-CORRIDOR-2) (DOWN TO YOKOSE-FIRST-FLOOR) (GLOBAL LG-YOSHINAKA
SHOJI-5 SHOJI-6) (FLAGS ONBIT)>
<ROOM YOKOSE-FIRST-FLOOR (LOC ROOMS) (SCENE S-JOURNEY) (DESC "First Floor") (
LDESC "This is the first floor of the spa at Yokose. A stair leads up to
the private rooms. To the east is the bath house.") (SYNONYM YOKOSE SPA) (
ADJECTIVE YOKOSE) (EAST TO YOKOSE-BATH-HOUSE) (UP TO YOKOSE-CORRIDOR-3) (FLAGS
ONBIT RMUNGBIT)>
<OBJECT GYOKO (DESC "Gyoko") (SYNONYM GYOKO) (FLAGS PERSON FEMALE NOABIT
NOTHEBIT JAPANESEBIT)>
<OBJECT KIKU (DESC "Kiku") (SYNONYM KIKU) (FLAGS PERSON FEMALE NOABIT NOTHEBIT
JAPANESEBIT)>
<OBJECT LG-YOSHINAKA (LOC LOCAL-GLOBALS) (DESC "Yoshinaka") (SYNONYM YOSHINAKA)
(FLAGS PERSON NOABIT NOTHEBIT JAPANESEBIT) (ACTION LG-YOSHINAKA-F)>
<DEFINE-ROUTINE LG-YOSHINAKA-F>
<OBJECT YOSHINAKA (DESC "Yoshinaka") (SYNONYM YOSHINAKA) (FLAGS PERSON NOABIT
NOTHEBIT JAPANESEBIT) (ACTION YOSHINAKA-F)>
<DEFINE-ROUTINE YOSHINAKA-F>
<GLOBAL YOSHI-CHATS 0>
<GLOBAL YOSHI-WAITS? 0>
<GLOBAL YOSHI-GOAL <>>
<GLOBAL YOSHI-TABLE <LTABLE YOKOSE-SPA-1 YOKOSE-SPA-2 YOKOSE-SPA-3 YOKOSE-SPA-4
YOKOSE-SPA-5 YOKOSE-SPA-6>>
<DEFINE-ROUTINE I-YOSHINAKA>
<DEFINE-ROUTINE TELL-WHO>
<DEFINE-ROUTINE TELL-WHOSE>
<DEFINE-ROUTINE YOKOSE-NEIGHBOR?>
<END-SEGMENT>

1295
quake.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -202,7 +202,7 @@ scabbarded, though muddied and scarred." CR>)>)
<COND (<AND <FSET? ,SIDE-FISSURE ,RMUNGBIT>
<FSET? ,PLATEAU ,SCOREBIT>>
<TELL
" You and Toranaga laugh at the sheer
" You and Toranaga laugh at the sheer
joy of being alive, which blocks you even more. At length you both
succeed. You relax and collect your strength." CR>
<SETG DELAY-CNT 0>
@ -293,25 +293,25 @@ cleft. Mariko screams as it swallows her." CR>)
"There is a new shock.">
<COND (<IN? ,BLACKTHORNE ,SIDE-FISSURE>
<TELL
" The ledge you and Mariko are on mostly gives way, only a few tiny
" The ledge you and Mariko are on mostly gives way, only a few tiny
holds remaining as the rest falls downward.">)
(<IN? ,MARIKO ,SIDE-FISSURE>
<TELL
" Mariko screams for help from within the side fissure.">)>
" Mariko screams for help from within the side fissure.">)>
<CRLF>)
(<TELL CR
"The chasm howls and begins to close.">
<COND (<AND <IN? ,BLACKTHORNE ,SIDE-FISSURE>
<IN? ,MARIKO ,SIDE-FISSURE>>
<TELL
" You and Mariko fight for balance.">)
" You and Mariko fight for balance.">)
(<IN? ,BLACKTHORNE ,SIDE-FISSURE>
<TELL
" The far wall screeches sickeningly as it approaches. Mud and
" The far wall screeches sickeningly as it approaches. Mud and
stones tumble off it.">)
(<IN? ,MARIKO ,SIDE-FISSURE>
<TELL
" You can barely hear Mariko over the rumble of the earthquake. \"Anjin-san! Help me!\"">)>
" You can barely hear Mariko over the rumble of the earthquake. \"Anjin-san! Help me!\"">)>
<CRLF>)
(<SETG QUAKE? <>>
<TELL CR
@ -320,7 +320,7 @@ stones tumble off it.">)
<FSET ,MARIKO ,DEAD>
<FSET ,MARIKO ,NDESCBIT>
<TELL
" Mariko's ledge gives way, and she slides into the depths, clutching
" Mariko's ledge gives way, and she slides into the depths, clutching
futilely at the mud walls, her last scream silenced.">)>
<CRLF>)
(<COND (<IN? ,BLACKTHORNE ,SIDE-FISSURE>
@ -388,8 +388,7 @@ take a peasant's enjoyment in mere existence." CR>)>)
(<AND <FSET? ,PLATEAU ,SCOREBIT>
<L? ,DELAY-CNT 2>>
<RFALSE>)>)
(<DEQUEUE I-QUAKE>
<COND (<IN? ,MARIKO ,HERE>
(<COND (<IN? ,MARIKO ,HERE>
<TELL CR
G"You lay full length on the ground and look up at the sky. A moment ago
you were all ""almost dead, and all worry and heartache was wasted. "I"Karma"
@ -459,10 +458,10 @@ fingernails tearing from the effort." CR>)
<COND (<IN? ,TORANAGA ,MAIN-FISSURE>
<COND (<IN? ,WINNER ,MAIN-FISSURE>
<TELL
" You are only barely holding on beside Toranaga." CR>)
" You are only barely holding on beside Toranaga." CR>)
(ELSE
<TELL
" Toranaga clings precariously to the wall a few feet below." CR>)>)
" Toranaga clings precariously to the wall a few feet below." CR>)>)
(ELSE <CRLF>)>)
(<VERB? ENTER BOARD CLIMB-DOWN>
<COND (<NOT <FSET? ,MAIN-FISSURE ,RMUNGBIT>>
@ -511,13 +510,13 @@ G"There are no longer any footholds or ledges." CR>)>)>)>>
<COND (<AND <IN? ,MARIKO ,SIDE-FISSURE>
<IN? ,BLACKTHORNE ,SIDE-FISSURE>>
<TELL
" You and Mariko are clinging">)
" You and Mariko are clinging">)
(<IN? ,MARIKO ,SIDE-FISSURE>
<TELL
" Mariko clings">)
" Mariko clings">)
(<IN? ,BLACKTHORNE ,SIDE-FISSURE>
<TELL
" You are clinging">)
" You are clinging">)
(ELSE <RFATAL>)>
<TELL " desperately to the crumbling"G" wall, standing
precariously on a narrow ledge.">
@ -527,7 +526,7 @@ precariously on a narrow ledge.">
"The main fissure snakes down from the hill, its muddy depths gaping.">
<COND (<IN? ,BLACKTHORNE ,SIDE-FISSURE>
<TELL
" You are clinging desperately to the muddy"G" wall, standing
" You are clinging desperately to the muddy"G" wall, standing
precariously on a narrow ledge.">)>
<RFATAL>)>)>>
@ -556,19 +555,19 @@ you with his iron grip." CR>)
(<OR <P? (RAISE PUSH-UP PUSH-OUT PUSH HELP THROW-OFF)
MARIKO
(<> ROOMS SIDE-FISSURE)>
<P? (PUSH-TO GIVE) MARIKO TORANAGA>>
<P? (PUSH-TO PUSH-UP GIVE) MARIKO TORANAGA>>
<TELL
"Your terror lends you inhuman strength and somehow you manage to
rip Mariko out of the tomb and shove her upward.">
<COND (<IN? ,TORANAGA ,HERE>
<MOVE ,MARIKO ,HERE>
<TELL
" Toranaga clutches her wrist and hauls her over the lip of the
" Toranaga clutches her wrist and hauls her over the lip of the
chasm." CR>
<SCORE-OBJECT ,SIDE-FISSURE>)
(ELSE
<TELL
" She tries to pull herself over the lip of the chasm but she can't
" She tries to pull herself over the lip of the chasm but she can't
get a grip on the mud and falls back." CR>)>)
(<OR <VERB? DISEMBARK CLIMB-UP>
<P? WALK (OUT UP)>
@ -591,10 +590,10 @@ the shuddering brink, your lungs gulping air, unable to crawl away." CR>)>)
<NOT <FSET? ,MARIKO ,DEAD>>>
<COND (<IN? ,WINNER ,SIDE-FISSURE>
<TELL
" You are standing beside Mariko on a small ledge.">)
" You are standing beside Mariko on a small ledge.">)
(ELSE
<TELL
" Mariko is shivering on a ledge a few feet below.">)>)>
" Mariko is shivering on a ledge a few feet below.">)>)>
<CRLF>)
(<VERB? REACH-IN>
<PERFORM ,V?TAKE ,MARIKO>
@ -608,7 +607,7 @@ the shuddering brink, your lungs gulping air, unable to crawl away." CR>)>)
and almost blinding you.">
<COND (<IN? ,MARIKO ,SIDE-FISSURE>
<TELL
" You reach the narrow ledge on which Mariko is standing." CR>)
" You reach the narrow ledge on which Mariko is standing." CR>)
(ELSE
<TELL
"You reach a narrow crumbling ledge." CR>)>)
@ -618,12 +617,6 @@ G"There are no longer any footholds or ledges." CR>)>)>)>>
<ROUTINE I-CRAWL () <RFALSE>>
<END-SEGMENT>
"S-ZATAKI"
<BEGIN-SEGMENT ZATAKI>
<ROUTINE ZATAKI-AFTER-F ()
<MARGINAL-PIC ,P-WARRIOR T ,P-WARRIOR-CORNER T>
<TELL
@ -693,7 +686,7 @@ to the will of the Council.\" He bows formally." CR>
"\"You're going to submit?,\" Zataki begins, his face twisting with
disbelief." CR>
<TELL CR
"\"Listen! I accept the invitation! I will leave today!\"">>
"\"Listen! I accept the invitation! I will leave today!\"" CR>>
<OBJECT ZATAKI
(LOC GLOBAL-OBJECTS)
@ -718,11 +711,11 @@ his swords well used." CR>)
"Zataki is Lord of Shinano and half-brother of Toranaga.">
<COND (<G=? ,SCENE ,S-QUAKE>
<TELL
" He is a member of the Council of Regents, replacing Lord Sugiyama,
" He is a member of the Council of Regents, replacing Lord Sugiyama,
who was murdered by "I"ronin"" -- or assassinated by Ishido.">)>
<CRLF>)>)>>
<END-SEGMENT>
<END-SEGMENT ;"QUAKE">
"S-JOURNEY"
@ -799,7 +792,7 @@ tied loosely about her waist." CR>)
(ELSE
<TELL
"She is naked, preparing to take her bath.">)>
<TELL " The first time you saw her naked
<TELL " The first time you saw her naked
you were greatly affected. Now her nakedness, of itself, does not touch
you physically. Living closely in Japanese style in a Japanese house
where the walls are paper and the rooms multipurpose, you have seen her
@ -935,7 +928,7 @@ you remove it. You put it aside, neatly folded." CR>)>>
"A large wooden bathtub dominates the room.">
<COND (<IN? ,MARIKO ,BATHTUB>
<TELL
" Mariko is bathing in the tub.">)>
" Mariko is bathing in the tub.">)>
<RFATAL>)>>
<ROUTINE YOKOSE-BATHTUB-F ("OPT" (RARG <>) "AUX" RUIN)
@ -1035,14 +1028,14 @@ G"You try to drink the scalding bathwater, but it's far too hot." CR>)>)>>
"First, you put down the towel so it won't get wet. ">)>>
<ROUTINE EXHIBITION ()
<TELL " People are watching all around the room, undisturbed by
<TELL " People are watching all around the room, undisturbed by
a public exhibition that would lead to prison or worse in
England.|
|
As the bath finishes and you climb out, you try to hide your anticipation
of the night -- your anticipation and your fear of discovery." CR>
<TIME-PASSES>
<SCORE-OBJECT ,YOKOSE-BATHTUB>
<TIME-PASSES>
<DRESS-BLACKTHORNE>
<MOVE ,DICTIONARY ,YOKOSE-SPA-1>
<MOVE ,MARIKO ,YOKOSE-SPA-3>
@ -1129,7 +1122,6 @@ your prudishness." CR>
<TELL CR
"Mariko climbs out of the bath, puts on her robe, and with a slightly
disappointed bow, heads inside." CR>
<DEQUEUE I-YOKOSE-BATH>
<FAILED-SCENE>)>
<RTRUE>)>)
(<REMOVE ,ROBE>
@ -1208,8 +1200,9 @@ away to the city of Odawara. From there to Yedo is only a matter of time.\"|
\"Not enough,\" she answered.|
|
\"You're wrong, my love, so sorry,\" you said. \"There's all the time in the
world.\"" CR CR>
<NEXT-SCENE>)>)>>
world.\"" CR>
<NEXT-SCENE>
<RFATAL> ;"short out v-first-look")>)>>
<ROOM YOKOSE-SPA-2
(LOC ROOMS)
@ -1277,7 +1270,8 @@ are rooms to the east and west.")
<COND (<IN? ,CHIMMOKO ,HERE>
<MOVE ,CHIMMOKO ,YOKOSE-CORRIDOR-2>
<TELL
"As you enter the room, Chimmoko slips silently out." CR CR>)>)
"As you enter the room, Chimmoko slips silently out." CR CR>)>
<RTRUE>)
(<RARG? BEG>
<COND (<P? WALK (P?OUT P?EAST)>
<COND (<EQUAL? <LOC ,YOSHINAKA> ,YOKOSE-CORRIDOR-1

88
qverbs.zabstr Normal file
View File

@ -0,0 +1,88 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<FILE-FLAGS MDL-ZIL?>
<DEFAULTS-DEFINED PRINT-IS/ARE>
<BEGIN-SEGMENT 0>
<OBJECT WHAT (LOC GLOBAL-OBJECTS) (DESC "what") (SYNONYM WHAT WHO) (FLAGS
NOTHEBIT) (ACTION WHAT-F)>
<DEFINE-ROUTINE WHAT-F>
<DEFINE-ROUTINE TELL-Q-WORD>
<DEFINE-ROUTINE P-NEGATIVE?>
<DEFINE-ROUTINE TRY-QCONTEXT?>
<DEFINE-ROUTINE PRE-BE>
<SYNTAX BE OBJECT (MOBY) = V-BE PRE-BE>
<SYNTAX BE OBJECT (MOBY) OBJECT (MOBY) = V-BE PRE-BE>
<SYNTAX BE? OBJECT (MOBY) = V-BE?>
<SYNTAX BE? OBJECT (MOBY) OBJECT (MOBY) = V-BE?>
<DEFINE-ROUTINE V-BE>
<DEFINE-ROUTINE RIGHT-PREP?>
<DEFINE-ROUTINE V-BE?>
<SYNTAX HOW OBJECT (MOBY) (FIND RLANDBIT) = V-HOW>
<SYNTAX HOW OBJECT (MOBY) OBJECT (MOBY) = V-HOW>
<SYNTAX WHAT OBJECT (MOBY) (FIND RLANDBIT) = V-WHAT>
<SYNTAX WHAT OBJECT (MOBY) OBJECT (MOBY) = V-WHAT>
<SYNTAX WHEN OBJECT (MOBY) (FIND RLANDBIT) = V-WHEN>
<SYNTAX WHEN OBJECT (MOBY) OBJECT (MOBY) = V-WHEN>
<SYNTAX WHERE OBJECT (MOBY) (FIND RLANDBIT) = V-WHERE PRE-WHERE>
<SYNTAX WHERE OBJECT (MOBY) OBJECT (MOBY) = V-WHERE PRE-WHERE>
<SYNTAX WHO OBJECT (MOBY) (FIND RLANDBIT) = V-WHO>
<SYNTAX WHO OBJECT (MOBY) OBJECT (MOBY) = V-WHO>
<SYNONYM WHO WHOM>
<SYNTAX WHY OBJECT (MOBY) (FIND RLANDBIT) = V-WHY>
<SYNTAX WHY OBJECT (MOBY) OBJECT (MOBY) = V-WHY>
<SYNTAX WILL OBJECT (MOBY) = V-WILL?>
<SYNTAX WOULD OBJECT (MOBY) = V-WOULD?>
<DEFINE-ROUTINE V-WHO>
<DEFINE-ROUTINE V-WHAT>
<DEFINE-ROUTINE PRE-WHERE>
<DEFINE-ROUTINE V-WHERE>
<DEFINE-ROUTINE V-WHEN>
<DEFINE-ROUTINE V-WHY>
<DEFINE-ROUTINE V-HOW>
<CONSTANT ADJ-TABLE <LTABLE <VOC "OUTSIDE" <>> OUTSIDE? <VOC "OPEN" ADJ> OPEN?
<VOC "CLOSED" ADJ> Q-CLOSED? <VOC "LOCKED" ADJ> LOCKED? <VOC "UNLOCKED" ADJ>
UNLOCKED? <VOC "DEAD" ADJ> DEAD? <VOC "ALIVE" ADJ> ALIVE? <VOC "QUIET" ADJ>
QUIET? <VOC "DUTCH" ADJ> DUTCH? <VOC "PORTUGUESE" ADJ> PORTUGUESE? <VOC
"SPANISH" ADJ> SPANISH? <VOC "ENGLISH" ADJ> ENGLISH? <VOC "JAPANESE" ADJ>
JAPANESE?>>
<DEFINE-ROUTINE QUIET?>
<DEFINE-ROUTINE OUTSIDE?>
<DEFINE-ROUTINE OPEN?>
<DEFINE-ROUTINE Q-CLOSED?>
<DEFINE-ROUTINE LOCKED?>
<DEFINE-ROUTINE UNLOCKED?>
<DEFINE-ROUTINE DEAD?>
<DEFINE-ROUTINE ALIVE?>
<DEFINE-ROUTINE PRSO-IS>
<DEFAULT-DEFINITION PRINT-IS/ARE <ROUTINE PRINT-IS/ARE>>
<DEFINE-ROUTINE IS-PRSO-ADJ?>
<DEFINE-ROUTINE PP?>
<SYNTAX CAN OBJECT (MOBY) = V-CAN?>
<SYNTAX COULD OBJECT (MOBY) = V-COULD?>
<SYNTAX DO OBJECT (MOBY) = V-DO?>
<SYNTAX MAY OBJECT (MOBY) = V-MAY?>
<SYNTAX MIGHT OBJECT (MOBY) = V-MIGHT?>
<SYNTAX MUST OBJECT (MOBY) = V-MUST?>
<SYNTAX SHOULD OBJECT (MOBY) = V-SHOULD?>
<DEFINE-ROUTINE V-STATEMENT>
<CONSTANT WHO-KNOWS-STRING "It's not easy to tell ">
<DEFINE-ROUTINE WHO-KNOWS>
<DEFINE-ROUTINE ECHO-NOUNS>
<DEFINE-ROUTINE V-CAN?>
<DEFINE-ROUTINE V-MAY?>
<DEFINE-ROUTINE V-DO?>
<DEFINE-ROUTINE V-COULD?>
<DEFINE-ROUTINE V-WOULD?>
<DEFINE-ROUTINE V-SHOULD?>
<DEFINE-ROUTINE V-MIGHT?>
<DEFINE-ROUTINE V-WILL?>
<DEFINE-ROUTINE V-MUST?>
<DEFINE-ROUTINE QUESTION-VERB?>
<CONSTANT QACTIONS <PLTABLE V-BE V-BE? 0 V-DISEMBARK V-DISEMBARK? 0 V-DROP
V-DROP? PRE-DROP? V-TAKE V-TAKE? PRE-TAKE?>>
<DEFINE-ROUTINE PRE-DROP?>
<DEFINE-ROUTINE V-DROP?>
<DEFINE-ROUTINE V-DISEMBARK?>
<DEFINE-ROUTINE PRE-TAKE?>
<DEFINE-ROUTINE V-TAKE?>
<END-SEGMENT>

696
qverbs.zap Normal file
View File

@ -0,0 +1,696 @@
.SEGMENT "0"
.FUNCT WHAT-F:ANY:0:0,OBJ,TMP,NOT?,LOC?
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK >NOT?
GET PARSE-RESULT,9 >LOC?
EQUAL? PRSA,V?BE? /FALSE
GET PARSE-RESULT,10 >OBJ
EQUAL? OBJ,W?WHO,W?WHAT,W?WHERE /FALSE
GET PARSE-RESULT,10 >OBJ
EQUAL? OBJ,W?WHY,W?WHEN,W?HOW /FALSE
CALL1 EVERYWHERE-VERB?
ZERO? STACK \?CCL9
PRINTR "That's precisely the sort of question you'll have to answer for yourself."
?CCL9: EQUAL? PRSI,INTPP \FALSE
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /FALSE
ZERO? NOT? \FALSE
CALL1 P-PP-PREP >TMP
ZERO? TMP \?PEN17
GET LOC?,1 >TMP
?PEN17: EQUAL? TMP,W?BEHIND \?CCL22
ICALL PERFORM,V?LOOK-BEHIND,OBJ
RTRUE
?CCL22: EQUAL? TMP,W?DOWN \?CCL24
ICALL PERFORM,V?LOOK-DOWN,OBJ
RTRUE
?CCL24: EQUAL? TMP,W?IN,W?ON,W?THROUGH \?CCL26
ICALL PERFORM,V?LOOK-INSIDE,OBJ
RTRUE
?CCL26: EQUAL? TMP,W?UNDER \FALSE
ICALL PERFORM,V?LOOK-UNDER,OBJ
RTRUE
.FUNCT TELL-Q-WORD:ANY:0:0,WD
EQUAL? PRSA,V?BE? \?CCL3
PRINTI "if"
RTRUE
?CCL3: GET PARSE-RESULT,10 >WD
EQUAL? WD,W?WHO,W?WHAT,W?WHERE /?CTR4
GET PARSE-RESULT,10 >WD
EQUAL? WD,W?WHY,W?WHEN,W?HOW \?CCL5
?CTR4: PRINTB WD
RTRUE
?CCL5: PRINTI "whether"
RTRUE
.FUNCT P-NEGATIVE?:ANY:0:0
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK
RSTACK
.FUNCT TRY-QCONTEXT?:ANY:0:0,W
ZERO? QCONTEXT /FALSE
IN? QCONTEXT,HERE \FALSE
EQUAL? QCONTEXT,WINNER /FALSE
CALL1 PAST-TENSE?
ZERO? STACK \?CCL3
EQUAL? QCONTEXT,PRSO /FALSE
EQUAL? PRSA,V?ASK-ABOUT /FALSE
EQUAL? PRSA,V?TELL-ABOUT \?CCL3
EQUAL? PRSO,ME /FALSE
?CCL3: SET 'W,WINNER
SET 'WINNER,QCONTEXT
ICALL PERFORM,PRSA,PRSO,PRSI
SET 'WINNER,W
RTRUE
.FUNCT PRE-BE:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
RFALSE
.FUNCT V-BE:ANY:0:0,TMP,NOT?,ADJ?,LOC?,OBJ,PREP
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK >NOT?
GET PARSE-RESULT,11 >ADJ?
GET PARSE-RESULT,9 >LOC?
EQUAL? PRSA,V?BE?,V?WHO,V?WHAT /?CTR2
EQUAL? PRSA,V?WHERE,V?WHY,V?WHEN /?CTR2
EQUAL? PRSA,V?HOW /?CTR2
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHO,W?WHAT,W?WHERE /?CTR2
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHY,W?WHEN,W?HOW \?CCL3
?CTR2: CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSI,INTADJ \?CCL13
EQUAL? PRSO,ME,PLAYER \?CCL16
EQUAL? PRSA,V?BE? \?CCL19
PRINTI "You"
JUMP ?CND17
?CCL19: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
PRINTI " you"
?CND17: CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL22
PRINTI " are "
JUMP ?CND14
?CCL22: PRINTI " aren't "
JUMP ?CND14
?CCL16: EQUAL? PRSA,V?BE? \?CCL25
ICALL2 CTHE-PRINT,PRSO
JUMP ?CND23
?CCL25: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
PRINTC 32
ICALL2 THE-PRINT,PRSO
?CND23: ICALL2 PRINT-IS/ARE,PRSO
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK \?CND26
PRINTI "n't"
?CND26: PRINTC 32
?CND14: PRINTB ADJ?
PRINTR "."
?CCL13: EQUAL? PRSI,INTPP \?CCL29
CALL1 P-PP-PREP >PREP
ZERO? PREP /?CCL32
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /?CCL32
EQUAL? PRSA,V?BE? \?CCL37
CALL RIGHT-PREP?,PREP,PRSO,OBJ
ZERO? STACK \?PRF40
PUSH 1
JUMP ?PEN38
?PRF40: PUSH 0
?PEN38: ICALL PRSO-IS,STACK,TRUE-VALUE
PRINTC 32
PRINTB PREP
PRINTC 32
ICALL2 THE-PRINT,OBJ
PRINTR "."
?CCL37: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
PRINTB PREP
PRINTC 32
ICALL2 THE-PRINT,OBJ
PRINTR "."
?CCL32: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
GET LOC?,1
PRINTB STACK
PRINTC 32
GET LOC?,2
ICALL2 NP-PRINT,STACK
PRINTR "."
?CCL29: GET PARSE-RESULT,13
ZERO? STACK /?CCL42
CALL1 WHO-KNOWS
RSTACK
?CCL42: ZERO? PRSI \?CCL44
GET PARSE-RESULT,10
EQUAL? STACK,W?WHERE \?CCL44
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL49
LOC PRSO >LOC?
JUMP ?CND47
?CCL49: SET 'LOC?,FALSE-VALUE
?CND47: ZERO? LOC? \?CCL52
PRINTR "That's an excellent question."
?CCL52: IN? PRSO,HERE \?CCL54
ICALL PRSO-IS,FALSE-VALUE,TRUE-VALUE
PRINTR " here."
?CCL54: EQUAL? LOC?,GENERIC-OBJECTS \?CCL56
PRINTI "You don't know where "
ICALL2 THE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "."
?CCL56: EQUAL? LOC?,GLOBAL-OBJECTS \?CCL58
PRINTI "No doubt "
ICALL2 THE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " around here somewhere."
?CCL58: EQUAL? LOC?,LOCAL-GLOBALS \?CCL60
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL60
ICALL2 CTHE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " nearby."
?CCL60: FSET? LOC?,PERSONBIT \?CCL64
ICALL2 CTHE-PRINT,LOC?
PRINTI " has "
ICALL2 THE-PRINT,PRSO
PRINTR "."
?CCL64: CALL2 META-LOC,PRSO
EQUAL? STACK,HERE \?CCL66
ICALL2 CTHE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " in "
ICALL2 THE-PRINT,LOC?
PRINTR "."
?CCL66: IN? LOC?,ROOMS \?CCL68
ICALL2 CTHE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " probably "
FSET? PRSO,TOUCHBIT \?CCL71
PRINTI "still in the place called """
ICALL2 DPRINT,LOC?
PRINTR "."""
?CCL71: FSET? PRSO,PERSONBIT /?CND72
PRINTI "lying "
?CND72: PRINTR "around somewhere."
?CCL68: PRINT WHO-KNOWS-STRING
PRINTI "where "
ICALL2 THE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "."
?CCL44: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CND74
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND74
PRINTC 32
ICALL1 PRINTA-PRSI
?CND74: PRINTR "."
?CCL3: EQUAL? PRSI,INTADJ \?CCL80
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL83
ZERO? NOT? /?CCL86
PRINTI "Wrong,"
JUMP ?CND84
?CCL86: PRINTI "Right,"
?CND84: ICALL2 PRSO-IS,FALSE-VALUE
JUMP ?CND81
?CCL83: ZERO? NOT? /?CCL89
PRINTI "Right,"
JUMP ?CND87
?CCL89: PRINTI "Wrong,"
?CND87: ICALL2 PRSO-IS,TRUE-VALUE
?CND81: PRINTC 32
PRINTB ADJ?
PRINTR "."
?CCL80: EQUAL? PRSI,INTPP \?CCL91
PRINTI "So, you say"
ICALL2 PRSO-IS,NOT?
PRINTC 32
CALL1 P-PP-PREP >TMP
ZERO? TMP /?CCL94
PRINTB TMP
JUMP ?CND92
?CCL94: GET LOC?,1
PRINTB STACK
?CND92: PRINTC 32
CALL1 P-PP-OBJ >TMP
ZERO? TMP /?CCL97
ICALL2 THE-PRINT,TMP
JUMP ?CND95
?CCL97: GET LOC?,2
ICALL2 NP-PRINT,STACK
?CND95: PRINTR "."
?CCL91: EQUAL? P-PRSA-WORD,W?BE \?CCL99
EQUAL? PRSO,WINNER \?CCL102
ICALL2 CTHE-PRINT,PRSO
PRINTI " is already "
PRINTI "that"
PRINTR "."
?CCL102: PRINTR "That would take a bit of magic."
?CCL99: PRINTI "So you think"
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND103
PRINTC 32
ICALL1 PRINTA-PRSI
?CND103: PRINTR "."
.FUNCT RIGHT-PREP?:ANY:3:3,PREP,OBJ,CONT
IN? OBJ,CONT \FALSE
EQUAL? PREP,W?IN,W?INSIDE \?CCL5
CALL2 SEE-INSIDE?,CONT
ZERO? STACK /FALSE
RTRUE
?CCL5: EQUAL? PREP,W?ON \FALSE
FSET? CONT,SURFACEBIT /TRUE
RFALSE
.FUNCT V-BE?:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHO:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: ZERO? PRSI \?CCL5
PRINTI "You don't know anything special about "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL5: CALL1 V-BE
RSTACK
.FUNCT V-WHAT:ANY:0:0
CALL1 V-WHO
RSTACK
.FUNCT PRE-WHERE:ANY:0:0
ZERO? PRSS \FALSE
ZERO? PRSQ \FALSE
ICALL PERFORM,V?FIND,PRSO,PRSI
RTRUE
.FUNCT V-WHERE:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-WHEN:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-WHY:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-HOW:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT QUIET?:ANY:1:1,OBJ
RTRUE
.FUNCT OUTSIDE?:ANY:1:1,OBJ
FSET? HERE,OUTSIDE /TRUE
RFALSE
.FUNCT OPEN?:ANY:1:1,OBJ
FSET? OBJ,OPENABLE /?PRD3
FSET? OBJ,DOORBIT \FALSE
?PRD3: FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT Q-CLOSED?:ANY:1:1,OBJ
FSET? OBJ,OPENABLE /?PRD3
FSET? OBJ,DOORBIT \FALSE
?PRD3: FSET? OBJ,OPENBIT /FALSE
RTRUE
.FUNCT LOCKED?:ANY:1:1,OBJ
FSET? OBJ,DOORBIT \FALSE
FSET? OBJ,LOCKED /TRUE
RFALSE
.FUNCT UNLOCKED?:ANY:1:1,OBJ
FSET? OBJ,DOORBIT \FALSE
FSET? OBJ,LOCKED /FALSE
RTRUE
.FUNCT DEAD?:ANY:1:1,OBJ
FSET? OBJ,PERSONBIT \TRUE
FSET? OBJ,DEAD /TRUE
RFALSE
.FUNCT ALIVE?:ANY:1:1,OBJ
FSET? OBJ,PERSONBIT \FALSE
FSET? OBJ,DEAD /FALSE
RTRUE
.FUNCT PRSO-IS:ANY:1:2,NOT?,CAP?
EQUAL? PRSO,ME,PLAYER \?CCL3
ZERO? CAP? /?CCL6
PRINTI "You"
JUMP ?CND4
?CCL6: PRINTI " you"
?CND4: PRINTI " are"
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
?CCL3: ZERO? CAP? /?CCL12
ICALL2 CTHE-PRINT,PRSO
JUMP ?CND10
?CCL12: PRINTC 32
ICALL2 THE-PRINT,PRSO
?CND10: ICALL2 PRINT-IS/ARE,PRSO
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
.FUNCT PRINT-IS/ARE:ANY:1:1,OBJ
FSET? OBJ,PLURAL /?CTR2
EQUAL? OBJ,BLACKTHORNE,ME,YOU \?CCL3
?CTR2: PRINTI " are"
RTRUE
?CCL3: PRINTI " is"
RTRUE
.FUNCT IS-PRSO-ADJ?:ANY:1:1,ADJ,TMP
GETPT PRSO,P?ADJECTIVE >TMP
ZERO? TMP /?CCL3
PTSIZE TMP
DIV STACK,2
INTBL? ADJ,TMP,STACK /TRUE
?CCL3: GET ADJ-TABLE,0
INTBL? ADJ,ADJ-TABLE,STACK >TMP \FALSE
GET TMP,1
CALL STACK,PRSO
ZERO? STACK \TRUE
RFALSE
.FUNCT PP?:ANY:2:2,P,N,TMP
GET PARSE-RESULT,9 >TMP
ZERO? TMP /FALSE
ZERO? P /FALSE
CALL1 P-PP-PREP
EQUAL? P,STACK \FALSE
ZERO? N /FALSE
CALL1 P-PP-OBJ
EQUAL? N,STACK /TRUE
RFALSE
.FUNCT V-STATEMENT:ANY:0:0
CALL1 V-DO?
RSTACK
.FUNCT WHO-KNOWS:ANY:0:1,WD,OBJ,SUBJ,V,M,N,?TMP1
ASSIGNED? 'WD /?CND1
GET PARSE-RESULT,14 >WD
?CND1: GET PARSE-RESULT,10
EQUAL? STACK,W?WHO,W?WHAT \?CCL5
GET P-PRSA-WORD,3
GET STACK,2 >OBJ
ZERO? OBJ /?CCL5
CALL GET-SYNTAX,OBJ,1,0,TRUE-VALUE
ZERO? STACK /?CCL5
CALL DETERMINE-OBJ,FALSE-VALUE,1,TRUE-VALUE >OBJ
ZERO? OBJ /?CCL5
GET OBJ,3 >OBJ
ZERO? OBJ /?CCL5
PRINTI "Perhaps"
JUMP ?CND3
?CCL5: SET 'OBJ,FALSE-VALUE
PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
?CND3: GET PARSE-RESULT,13 >SUBJ
ZERO? SUBJ /?CCL13
GET SUBJ,3 >SUBJ
JUMP ?CND11
?CCL13: EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL15
SET 'SUBJ,PRSO
?CND11: PRINTC 32
EQUAL? SUBJ,ME,PLAYER \?CCL18
PRINTI "you"
JUMP ?CND16
?CCL15: PRINTR "."
?CCL18: ICALL2 THE-PRINT,SUBJ
?CND16: ZERO? WD /?CND19
EQUAL? WD,W?DO,W?DOES,W?DID \?CCL22
GET PARSE-RESULT,13
ZERO? STACK \?CND19
?CCL22: PRINTC 32
PRINTB WD
?CND19: GET PARSE-RESULT,13
ZERO? STACK /?CND25
PRINTC 32
ZERO? WD /?CCL29
EQUAL? WD,W?DID \?CCL32
GETB VOCAB,0
ADD 1,STACK
ADD VOCAB,STACK >V
GETB V,0
BOR 128,STACK >M
EQUAL? P-PRSA-WORD,W?GET \?CCL37
PRINTI "got"
JUMP ?CND30
?CCL37: ADD V,9 >?TMP1
ADD V,1
GET STACK,0
INTBL? P-PRSA-WORD,?TMP1,STACK,M >N \?CCL39
GET N,1
BTST STACK,PAST-TENSE \?CCL39
PRINTB N
JUMP ?CND30
?CCL39: PRINTB P-PRSA-WORD
PRINTI "ed"
JUMP ?CND30
?CCL32: PRINTB P-PRSA-WORD
EQUAL? WD,W?DO,W?DOES \?CND30
EQUAL? SUBJ,ME,PLAYER /?CND30
FSET? SUBJ,PLURAL /?CND30
PRINTC 115
?CND30: ZERO? OBJ /?CCL49
PRINTC 32
EQUAL? OBJ,SUBJ \?CCL52
FSET? OBJ,PERSONBIT /?CCL55
PRINTI "it"
JUMP ?CND53
?CCL55: FSET? OBJ,FEMALE \?CCL57
PRINTI "her"
JUMP ?CND53
?CCL57: PRINTI "him"
?CND53: PRINTI "self"
JUMP ?CND25
?CCL52: ICALL2 THE-PRINT,OBJ
JUMP ?CND25
?CCL49: ICALL1 ECHO-NOUNS
JUMP ?CND25
?CCL29: PRINTB P-PRSA-WORD
?CND25: PRINTR "."
.FUNCT ECHO-NOUNS:ANY:0:0,WD
EQUAL? PRSO,0,WHAT,NOT-HERE-OBJECT /?CND1
GET PARSE-RESULT,7 >WD
ZERO? WD /?CND3
PRINTC 32
PRINTB WD
?CND3: PRINTC 32
ICALL2 THE-PRINT,PRSO
?CND1: EQUAL? PRSI,0,WHAT,NOT-HERE-OBJECT /FALSE
GET PARSE-RESULT,8 >WD
ZERO? WD /?CND8
PRINTC 32
PRINTB WD
?CND8: PRINTC 32
CALL2 THE-PRINT,PRSI
RSTACK
.FUNCT V-CAN?:ANY:0:0
CALL2 WHO-KNOWS,W?CAN
RSTACK
.FUNCT V-MAY?:ANY:0:0
CALL2 WHO-KNOWS,W?MAY
RSTACK
.FUNCT V-DO?:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
GET PARSE-RESULT,16
BTST STACK,PARSE-QUESTION /?CCL5
ZERO? PRSS \?CCL8
ICALL1 MORE-SPECIFIC
RTRUE
?CCL8: PRINTI "So you think"
EQUAL? PRSS,ME,PLAYER \?CCL11
PRINTI " you "
GET PARSE-RESULT,16
BTST STACK,1 \?CND9
PRINTI "don't "
JUMP ?CND9
?CCL11: PRINTC 32
ICALL2 THE-PRINT,PRSS
PRINTC 32
GET PARSE-RESULT,16
BTST STACK,1 \?CND9
PRINTI "doesn't "
?CND9: PRINTB P-PRSA-WORD
ICALL1 ECHO-NOUNS
PRINTR "."
?CCL5: CALL1 WHO-KNOWS
RSTACK
.FUNCT V-COULD?:ANY:0:0
CALL2 WHO-KNOWS,W?COULD
RSTACK
.FUNCT V-WOULD?:ANY:0:0
CALL2 WHO-KNOWS,W?WOULD
RSTACK
.FUNCT V-SHOULD?:ANY:0:0
CALL2 WHO-KNOWS,W?SHOULD
RSTACK
.FUNCT V-MIGHT?:ANY:0:0
CALL2 WHO-KNOWS,W?MIGHT
RSTACK
.FUNCT V-WILL?:ANY:0:0
CALL2 WHO-KNOWS,W?WILL
RSTACK
.FUNCT V-MUST?:ANY:0:0
CALL2 WHO-KNOWS,W?MUST
RSTACK
.FUNCT QUESTION-VERB?:ANY:0:0,TMP
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHO,W?WHAT,W?WHERE /TRUE
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHY,W?WHEN,W?HOW /TRUE
EQUAL? PRSA,V?BE?,V?CAN?,V?COULD? /TRUE
EQUAL? PRSA,V?DO?,V?MAY?,V?MIGHT? /TRUE
EQUAL? PRSA,V?MUST?,V?SHOULD?,V?WILL? /TRUE
EQUAL? PRSA,V?WOULD? /TRUE
RFALSE
.FUNCT PRE-DROP?:ANY:0:0
LOC PRSS
EQUAL? PRSO,STACK \FALSE
ICALL PERFORM,V?DISEMBARK,PRSO,PRSI
RTRUE
.FUNCT V-DROP?:ANY:0:0
EQUAL? PRSO,ROOMS \FALSE
PRINT STR?61
PRINTR "hanging from anything."
.FUNCT V-DISEMBARK?:ANY:0:0,AV
LOC PRSS >AV
EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3
ZERO? AV /?CCL6
IN? AV,ROOMS /?CCL6
ICALL PERFORM,PRSA,AV,PRSI
RTRUE
?CCL6: PRINT STR?61
PRINTR "in anything."
?CCL3: ZERO? AV /?CCL10
IN? AV,ROOMS /?CCL10
EQUAL? AV,PRSO /FALSE
CALL HELD?,AV,PRSO
ZERO? STACK \FALSE
PRINT STR?55
FSET? AV,SURFACEBIT \?CCL20
PRINTI " on "
JUMP ?CND18
?CCL20: PRINTI " in "
?CND18: ICALL2 THE-PRINT,AV
PRINTR "!"
?CCL10: LOC PRSO
ZERO? STACK /?CCL22
ICALL PERFORM,V?TAKE,PRSO,PRSI
RTRUE
?CCL22: PRINT STR?117
CRLF
RTRUE
.FUNCT PRE-TAKE?:ANY:0:0
ZERO? PRSI \FALSE
CALL1 PRE-TAKE
RSTACK
.FUNCT V-TAKE?:ANY:0:0
GET PARSE-RESULT,10
ZERO? STACK \FALSE
PRINTR "Seems reasonable."
.ENDSEG
.ENDI

View File

@ -352,7 +352,17 @@ yourself." CR>
<VOC "ALIVE" ADJ>
ALIVE?
<VOC "QUIET" ADJ>
QUIET?>>
QUIET?
<VOC "DUTCH" ADJ>
DUTCH?
<VOC "PORTUGUESE" ADJ>
PORTUGUESE?
<VOC "SPANISH" ADJ>
SPANISH?
<VOC "ENGLISH" ADJ>
ENGLISH?
<VOC "JAPANESE" ADJ>
JAPANESE?>>
<DEFINE QUIET? (OBJ)
<RTRUE>>

12
record.zabstr Normal file
View File

@ -0,0 +1,12 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<BEGIN-SEGMENT RECORD>
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX \#COMMAND = V-$COMMAND>
<SYNTAX \#RECORD = V-$RECORD>
<SYNTAX \#UNRECORD = V-$UNRECORD>
<DEFINE-ROUTINE V-$COMMAND>
<DEFINE-ROUTINE V-$RANDOM>
<DEFINE-ROUTINE V-$RECORD>
<DEFINE-ROUTINE V-$UNRECORD>
<END-SEGMENT>

29
record.zap Normal file
View File

@ -0,0 +1,29 @@
.SEGMENT "RECORD"
.FUNCT V-$COMMAND:ANY:0:0
DIRIN D-COMMAND-FILE
RTRUE
.FUNCT V-$RANDOM:ANY:0:0
EQUAL? PRSO,INTNUM /?CCL3
PRINTR "Illegal call to #RANDOM."
?CCL3: SUB 0,P-NUMBER
RANDOM STACK
RTRUE
.FUNCT V-$RECORD:ANY:0:0
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-$UNRECORD:ANY:0:0
DIROUT D-RECORD-OFF
RTRUE
.ENDSEG
.ENDI

View File

@ -274,4 +274,4 @@
<TELL ", " D .CNT>)>>
<CRLF>>
<END-SEGMENT>
<END-SEGMENT ;"RECORD">

92
reds.zabstr Normal file
View File

@ -0,0 +1,92 @@
<FLAGS-AND-DEFAULTS (("P-BE-VERB" T)("ONE-BYTE-PARTS-OF-SPEECH" %<>)(
"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-ZORK0" %<>)) (("DIR-VERB-PRSI?"
"DEFS" #WORD *35522513507*))>
<ZZPACKAGE "REDS">
<ENTRY RED-SP RED-ADV RED-PART RED-SV RED-SVN RED-SVPNPN RED-SVD RED-PERS
RED-VP RED-NP RED-OF RED-QT RED-QN RED-NPP RED-PP RED-POSS RED-ADJ RED-ADJS
RED-QUOTE>
<ENTRY RED-O-ADJ RED-O-PP RED-O-NP NUMERIC-ADJ? DIR-VERB-WORD?>
<INCLUDE "BASEDEFS" "FIND" "PBITDEFS" "PDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM" "PSTACK">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED DIR-VERB-PRSI? DIR-VERB-WORD? NOT-HERE-VERB?>
<COMPILATION-FLAG-DEFAULT HACK-ORPHAN-NOUNS T>
<DEFAULT-DEFINITION DIR-VERB-PRSI? <DEFINE DIR-VERB-PRSI? (NP) <AND <EQUAL? <
PARSE-ACTION ,PARSE-RESULT> ,V?MOVE-DIR ,V?RIDE-DIR ,V?ROLL-DIR ,V?SET-DIR> <
NOT <EQUAL? <NOUN-PHRASE-OBJ1 .NP> ,INTDIR ,LEFT-RIGHT>>>>>
<DEFAULT-DEFINITION DIR-VERB-WORD? <DEFMAC DIR-VERB-WORD? ('WD) <FORM EQUAL? .
WD ',W?WALK ',W?GO ',W?RUN>>>
<DEFAULT-DEFINITION NOT-HERE-VERB? <DEFMAC NOT-HERE-VERB? ('V) <FORM EQUAL? .V
',V?WALK-TO>>>
<DEFMAC ABS ('NUM) <FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>) (T .NUM)>>
<DEFINE-ROUTINE RED-FCN>
<DEFINE-ROUTINE RED-PART>
<DEFINE-ROUTINE GET-SYNTAX>
<DEFINE-ROUTINE RED-SV>
<DEFINE-ROUTINE ROOT-VERB>
<DEFINE-ROUTINE RED-SVN>
<DEFINE-ROUTINE SVN>
<DEFINE-ROUTINE RED-SVPNPN>
<DEFINE-ROUTINE RED-SVD>
<DEFINE-ROUTINE RED-SP>
<GLOBAL SEARCH-FLAGS:NUMBER 0>
<DEFINE-ROUTINE IREDUCE-EXCEPTION>
<DEFINE-ROUTINE REDUCE-EXCEPT-IT>
<DEFINE-ROUTINE REDUCE-EXCEPTION>
<CONSTANT P-NO-INSIDE "No inside">
<CONSTANT P-NO-SURFACE "No surface">
<CONSTANT P-NOTHING "Nothing">
<CONSTANT PREP-BIT <ITABLE 3 0>>
<DEFINE-ROUTINE REDUCE-LOCATION>
<COND (<GASSIGNED? DO-TEST-PREP> <SETG TEST-PREP <TABLE ,DO-TEST-PREP>>)>
<DEFINE-ROUTINE DETERMINE-OBJ>
<DEFINE-ROUTINE CHECK-DIR-ADJS>
<DEFINE-ROUTINE NUMERIC-ADJ?>
<COMPILATION-FLAG-DEFAULT P-GENDERS T>
<VOC "HIMSELF" NOUN>
<VOC "HERSELF" NOUN>
<DEFINE-ROUTINE DETERMINE-NP>
<DEFINE-ROUTINE DET-NP-NOT-HERE?>
<DEFINE-ROUTINE DET-NP-OWNEE?>
<DEFINE-ROUTINE FIND-OWNERS>
<DEFINE-ROUTINE READY-TO-DISAMBIGUATE?>
<DEFINE-ROUTINE DETERMINE-NP-XFER>
<DEFINE-ROUTINE DO-ORPHAN-TEST>
<DEFINE-ROUTINE RED-O-ADJ>
<DEFINE-ROUTINE RED-O-PP>
<DEFINE-ROUTINE INSERT-NP>
<DEFINE-ROUTINE TEST-SR>
<DEFINE-ROUTINE TEST-O-SR>
<DEFINE-ROUTINE RED-O-NP>
<DEFINE-ROUTINE RED-PERS>
<DEFINE-ROUTINE HACK-TELL>
<DEFINE-ROUTINE HACK-TELL-1>
<DEFINE-ROUTINE RED-VP>
<DEFINE-ROUTINE RED-NP>
<DEFINE-ROUTINE RED-OF>
<DEFINE-ROUTINE RED-QT>
<DEFINE-ROUTINE GET-QUANTITY-WORD>
<DEFINE-ROUTINE GET-QUANTITY>
<DEFINE-ROUTINE RED-QN>
<DEFINE-ROUTINE RED-NPP>
<DEFINE-ROUTINE RED-PP>
<ADD-WORD MY ADJ>
<ADD-WORD ME NOUN>
<ADD-WORD YOUR ADJ>
<ADD-WORD YOU NOUN>
<ADD-WORD ITS ADJ>
<ADD-WORD IT NOUN>
<ADD-WORD HIS ADJ>
<ADD-WORD HIM NOUN>
<ADD-WORD THEIR ADJ>
<ADD-WORD THEM NOUN>
<DEFINE-ROUTINE RED-POSS>
<CONSTANT LAST-OBJECT 0>
<DEFINE-ROUTINE RED-ADJS>
<DEFINE-ROUTINE RED-ADJ>
<OBJECT INTQUOTE (LOC GLOBAL-OBJECTS) (DESC "quotation")>
<DEFINE-ROUTINE RED-QUOTE>
<END-SEGMENT>
<ENDPACKAGE>

1710
reds.zap Normal file

File diff suppressed because it is too large Load Diff

19
scenes.txt Normal file
View File

@ -0,0 +1,19 @@
Erasmus
Anjiro
Yabu
Pit => Omi ?
Rodrigues
Voyage to Osaka => doctor&Rodrigues
Toranaga
Prison => Ishido vs. Toranaga ?
Mariko => Ishido & prophecy ?
? Ishido vs. Buntaro => Escape
samurai => Earthquake
Zataki => Journey to Yedo
Ochiba => poetry ?
Departure => Mariko's fight ?
Seppuku => seppuku ceremony ?
Ninja => Etsu's suicide
Yokohama
Aftermath
Epilogue

117
score.txt Normal file
View File

@ -0,0 +1,117 @@
------ERASMUS (10)
+1 ROPER Getting your apple back from Roper
+1 APPLE Eating the apple
+1 KEY Finding the key to the sea chest
+1 RUTTER Writing in your rutter
+1 CAPTAINS-DESK Finding the flagon in the Captain's desk
+1 FLAGON Giving the Captain water
+1 MAETSUKKER Sending Maetsukker out on watch
+1 BELL Ringing the bell to get the crew on deck
+1 FORESAILS Fixing the foresails
+1 REEF Getting through the reef into the harbor
------ANJIRO (5)
+1 FOOD Eating the food
+1 MURA-DOOR Apologizing for breaking the door
+1 SEBASTIO Asking Sebastio who he is
+1 OMI Getting through Omi's interrogation
+1 SAMURAI-GUARDS Trying to get your rutters back
------YABU (1)
+1 SEBASTIO-CRUCIFIX Breaking Sebastio's crucifix
------PIT (5)
+1 VINCK Saving Vinck if he's the one picked to die
+1 LOSING-SAMURAI Fighting the samurai, taking one as a hostage
+1 VILLAGE-SQUARE Agreeing to behave
+1 CROOCQ Lying down
+1 BATHTUB Taking a bath
------RODRIGUES (3)
+1 TRINITY-HOUSE Answering Rodrigues about Trinity House
+1 LIZARD Answering Rodrigues about the Lizard
+1 LG-ERASMUS Telling Rodrigues about the Erasmus
------VOYAGE (11)
+1 GUNWALE Grabbing the gunwale
+1 MAIN-DECK Restoring order on the oar deck
+1 OARSMEN Getting the oarsmen to row again
+1 OAR Throwing oar to Rodrigues
+1 ANCHOR Dropping anchor once in the bay
+1 SKIFF Getting into the skiff
+1 LEDGE-4 Finding Rodrigues
+1 YABU-KIMONO Making a rope of kimonos
+1 LOINCLOTH Adding loincloths to rope
+1 LEDGE Finding the ledge
+1 SEARCH-PARTY Getting Yabu's attention
------AUDIENCE (3)
+1 AUDIENCE-CHAMBER Defying convention by bowing but not kneeling
+1 DAIS Moving to the dais when Ishido arrives
+1 ALVITO Telling Toranaga Alvito is your enemy
------PRISON (6)
+1 THUG Defeating the thug
+1 DOMINGO Speaking Spanish to Domingo
+1 JAPANESE Asking Domingo to teach you Japanese
+1 LG-LINE Joining the line of prisoners
+1 BANDITS Avoiding the bandit's attack
+1 YABU-PALANQUIN Getting in Yabu's palanquin
------MARIKO (4)
+1 MAPLE-GLADE Greet or bow to Mariko/Toranaga
+1 ISHIDO Bow to Ishido
+1 YAEMON Smile or wink at him
+1 PROPHECY Ask about the prophecy
------ESCAPE (12)
+1 TORANAGA-IN-DRAG Seeing Toranaga in the hut
+1 KIRITSUBO Seeing Toranaga and Kiritsubo switch
+1 PARCHMENT Grabbing the parchment from Ishido
+1 CURTAINS Giving the parchment to Kiri/Toranaga
+1 CRAZY Distracting Ishido by acting nuts
+1 WOODS Reaching the woods successfully
+1 MARIKOS-LITTER Saving Mariko during ambush
+1 FISH-GATE Finding the ronin
+1 WHARF Helping Mariko when she 'faints'
+1 GLOBAL-WATER Remembering the word for 'water'
+1 GRAY-LEADER Killing the Gray leader
+1 SECOND-GRAY Killing the second Gray
------QUAKE (4)
+1 MAIN-FISSURE Saving Toranaga
+1 SIDE-FISSURE Saving Mariko
+1 PLATEAU Pissing in the fissure
+1 SWORDS Giving swords to Toranaga after his are lost
------ZATAKI (0)
------JOURNEY(3)
+1 YOKOSE-BATHTUB Bathing with Mariko
+1 YOKOSE-SPA-3 Making love to Mariko
+1 YOKOSE-SPA-1 Getting back to your room safely
------RECEPTION (3)
+1 SWORDS Checking your swords
+1 CAMELLIA Giving the camellia to Ochiba
+1 GLOBAL-BARBARIAN Telling Ishido you are not a barbarian
------DEPARTURE
------SEPPUKU (1)
+1 MARIKO Carrying Mariko away
------ATTACK (5)
+1 PLAN Asking Yabu about the plan
+1 CELLARS Seeing Yabu in the cellars let in the ninja
+1 NINJA Shooting the ninja leader
+1 MARIKO Telling Mariko to follow you
+1 MARIKO Blessing Mariko
------YOKOHAMA (1)
+1 YOKOHAMA Picking up Vinck
------AFTERMATH (3)
+1 SEALED-SCROLL Reading the sealed scroll
+1 TRAITOR Reporting that you saw Yabu
+1 YABU Reporting the password

Some files were not shown because too many files have changed in this diff Show More