-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathglobals.zap
1807 lines (1664 loc) · 41.2 KB
/
globals.zap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
.FUNCT INTDIR-F,?TMP1
EQUAL? PRSA,V?ROW-TO,V?ROW,V?ROW-DIR \FALSE
IN? PROTAGONIST,SKIFF \FALSE
EQUAL? P-DIRECTION,P?EAST \?CCL8
EQUAL? HERE,BY-SHIP \?CND9
PRINTI "That would take you past"
CALL TPRINT,SHIP
PRINTR " into the open sea!"
?CND9: SET 'ROWING,ROWEAST
PRINT DIPPING-OARS
PRINTD SKIFF
PRINTI " plows through the lagoon."
EQUAL? HERE,SHALLOWS \?CCL13
CALL QUEUE,I-CURRENT,-1
SET 'ROWING,1
MOVE SKIFF,LAGOON
CRLF
CALL GOTO,SKIFF
RSTACK
?CCL13: ADD SKIFF-LOC,ROWING >?TMP1
ADD SHIP-LOC,1
EQUAL? ?TMP1,SHIP-LOC,STACK \?CCL15
FSET? SHIP,MUNGBIT \?CCL18
CALL JIGS-UP,STR?297
RSTACK
?CCL18: PRINTI " You glide into the shadow of"
CALL TRPRINT,SHIP
CRLF
SET 'SKIFF-LOC,SHIP-LOC
SET 'ROWING,0
MOVE SKIFF,BY-SHIP
CALL GOTO,SKIFF
RSTACK
?CCL15: CRLF
RTRUE
?CCL8: EQUAL? P-DIRECTION,P?WEST \?CCL20
SET 'ROWING,ROWWEST
EQUAL? HERE,SHALLOWS \?CCL23
PRINTI "You can row"
CALL TPRINT,SKIFF
PRINTI " no farther west"
PRINT PCR
RTRUE
?CCL23: ADD SKIFF-LOC,ROWING
LESS? STACK,2 \?CCL25
PRINT DIPPING-OARS
PRINTD SKIFF
PRINTI " noses into the sand of the shallows. You get out"
PRINT PCR
CRLF
CALL DEQUEUE,I-CURRENT
SET 'SKIFF-LOC,1
MOVE SKIFF,SHALLOWS
CALL GOTO,SHALLOWS
RTRUE
?CCL25: PRINT DIPPING-OARS
PRINTD SKIFF
PRINTI " shoots over the waves"
PRINT PCR
EQUAL? HERE,BY-SHIP \TRUE
MOVE SKIFF,LAGOON
CALL GOTO,SKIFF
RTRUE
?CCL20: EQUAL? P-DIRECTION,P?NORTH,P?NW,P?NE /?CCL29
EQUAL? P-DIRECTION,P?SOUTH,P?SW,P?SE \FALSE
?CCL29: PRINTR "You can barely row back and forth, much less side to side!"
.FUNCT MAN-F,PERSON
EQUAL? PRSO,ME \?CCL3
EQUAL? PRSA,V?TAKE-WITH \?CCL3
CALL RECOGNIZE
RSTACK
?CCL3: CALL NOUN-USED,W?SAILOR,MAN
ZERO? STACK /?CCL7
EQUAL? PRSA,V?HELLO \?CCL7
CALL GLOBAL-IN?,CREW,HERE
ZERO? STACK /?CCL12
CALL PERFORM,V?HELLO,CREW
RTRUE
?CCL12: PRINTR "Nothing happens here."
?CCL7: GET P-NAMW,0
EQUAL? STACK,W?MAN \?CCL14
EQUAL? PRSO,MAN \?CCL14
CALL ADJ-USED,A?BEWIGGED
ZERO? STACK /?CCL19
CALL PERFORM-PRSA,LAFOND,PRSI
RSTACK
?CCL19: CALL NOUN-USED,W?MEN,MAN
ZERO? STACK /?CCL21
EQUAL? HERE,BALLROOM,ORCHESTRA,SUPPER-ROOM /?CCL21
CALL MORE-SPECIFIC
RSTACK
?CCL21: CALL FIND-MAN >PERSON
ZERO? PERSON /?CCL25
CALL PERFORM-PRSA,PERSON,PRSI
RTRUE
?CCL25: CALL CANT-SEE,MAN
RSTACK
?CCL14: GET P-NAMW,1
EQUAL? STACK,W?MAN \FALSE
EQUAL? PRSI,MAN \FALSE
CALL ADJ-USED,A?BEWIGGED
ZERO? STACK /?CCL32
CALL PERFORM-PRSA,PRSO,LAFOND
RSTACK
?CCL32: CALL NOUN-USED,W?MEN,MAN
ZERO? STACK /?CCL34
EQUAL? HERE,BALLROOM,ORCHESTRA,SUPPER-ROOM /?CCL34
CALL MORE-SPECIFIC
RSTACK
?CCL34: CALL FIND-MAN >PERSON
ZERO? PERSON /?CCL38
CALL PERFORM-PRSA,PRSO,PERSON
RTRUE
?CCL38: CALL CANT-SEE,MAN
RSTACK
.FUNCT FIND-MAN
IN? HERO,HERE \?CCL3
RETURN HERO
?CCL3: IN? LAFOND,HERE \?CCL5
RETURN LAFOND
?CCL5: IN? DAD,HERE \?CCL7
RETURN DAD
?CCL7: IN? CRULLEY,HERE \?CCL9
RETURN CRULLEY
?CCL9: IN? COOKIE,HERE \?CCL11
RETURN COOKIE
?CCL11: IN? BUTLER,HERE \?CCL13
RETURN BUTLER
?CCL13: CALL GLOBAL-IN?,DANCERS,HERE
ZERO? STACK /?CCL15
RETURN DANCERS
?CCL15: CALL GLOBAL-IN?,CREW,HERE
ZERO? STACK /?CCL17
RETURN CREW
?CCL17: IN? CROC,HERE \FALSE
RETURN CROC
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ,X=0
EQUAL? PRSO,NOT-HERE-OBJECT \?CCL3
EQUAL? PRSI,NOT-HERE-OBJECT \?CCL3
PRINTR "Those things aren't here!"
?CCL3: EQUAL? P-XNAM,W?MOUTH,W?EYES \?CCL7
EQUAL? P-XADJN,W?LAFOND,FALSE-VALUE \?CCL7
EQUAL? PRSO,NOT-HERE-OBJECT \?CCL12
SET 'PRSO,LAFOND
RFALSE
?CCL12: SET 'PRSI,LAFOND
RFALSE
?CCL7: EQUAL? P-XADJN,W?POWDER \?CCL14
CALL HELD?,HORN
ZERO? STACK /?CCL14
EQUAL? PRSO,NOT-HERE-OBJECT \?CCL19
SET 'PRSO,POWDER
JUMP ?CND1
?CCL19: SET 'PRSI,POWDER
JUMP ?CND1
?CCL14: EQUAL? P-XNAM,W?HANDS,W?HAND /?PRD23
EQUAL? P-XNAM,W?FINGER,W?EYE,W?EYES /?PRD23
EQUAL? P-XNAM,W?HEAD,W?JAMISON /?PRD23
EQUAL? P-XNAM,W?LIP,W?LIPS,W?MOUTH \?CCL21
?PRD23: EQUAL? P-XADJN,W?NICK,W?NICHOLAS,W?CROC'S /?CTR20
EQUAL? P-XADJN,W?DAD,W?FATHER,W?PAPA /?CTR20
EQUAL? P-XADJN,W?WOMAN,W?LUCY /?CTR20
EQUAL? P-XADJN,W?JEAN,W?LAFOND \?CCL21
?CTR20: PRINTR "[Sadly, we haven't the space to handle everything. Try to refer only to characters in the story, not individual body parts or possessions. For example, you can EXAMINE PIRATE but you can't EXAMINE PIRATE'S EYEPATCH.]"
?CCL21: EQUAL? PRSO,NOT-HERE-OBJECT \?CCL33
SET 'TBL,P-PRSO
JUMP ?CND1
?CCL33: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: ZERO? PRSO? /?CCL36
CALL PRSO-MOBY-VERB?
ZERO? STACK /?CCL36
SET 'X,TRUE-VALUE
JUMP ?CND34
?CCL36: ZERO? PRSO? \?CND34
CALL PRSI-MOBY-VERB?
ZERO? STACK /?CND34
SET 'X,TRUE-VALUE
?CND34: ZERO? X /?CCL44
CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
ZERO? OBJ /FALSE
EQUAL? OBJ,NOT-HERE-OBJECT \TRUE
EQUAL? PRSA,V?FOLLOW,V?WALK-TO \?CCL52
CALL V-WALK-AROUND
JUMP ?CND42
?CCL52: CALL MORE-SPECIFIC
JUMP ?CND42
?CCL44: EQUAL? WINNER,PROTAGONIST \?CCL55
PRINTI "You"
JUMP ?CND53
?CCL55: FSET? WINNER,DEADBIT \?CCL57
PRINT DOESNT-RESPOND
RETURN 8
?CCL57: PRINTI "Looking confused,"
CALL TPRINT,WINNER
PRINTI " says, ""I"
?CND53: PRINTI " can't see"
CALL ADJNAME?,P-XADJ
ZERO? STACK \?CND60
CALL NAME?,P-XNAM
ZERO? STACK \?CND60
PRINTI " any"
?CND60: CALL NOT-HERE-PRINT,PRSO?
PRINTI " here!"
EQUAL? WINNER,PROTAGONIST /?CND64
PRINTC 34
?CND64: CRLF
?CND42: CALL STOP
RSTACK
.FUNCT PRSO-MOBY-VERB?
EQUAL? PRSA,V?WHAT,V?WHERE,V?SHOOT /TRUE
EQUAL? PRSA,V?SSHOOT /TRUE
EQUAL? PRSA,V?WALK-TO /TRUE
EQUAL? PRSA,V?I-LOVE-YOU /TRUE
EQUAL? PRSA,V?FIND,V?FOLLOW,V?SAVE-SOMETHING /TRUE
EQUAL? PRSA,V?ANSWER-KLUDGE /TRUE
RFALSE
.FUNCT PRSI-MOBY-VERB?
EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR,V?TELL-ABOUT /TRUE
EQUAL? PRSA,V?I-LOVE-YOU /TRUE
RFALSE
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ
CALL MOBY-FIND,TBL >M-F
EQUAL? 1,M-F \?CCL3
ZERO? PRSO? /?CCL6
SET 'PRSO,P-MOBY-FOUND
CALL THIS-IS-IT,PRSO
RFALSE
?CCL6: SET 'PRSI,P-MOBY-FOUND
RFALSE
?CCL3: LESS? 1,M-F \?CCL8
GETB TBL,1 >OBJ
GETP OBJ,P?GENERIC
CALL STACK >OBJ
ZERO? OBJ /?CCL8
EQUAL? OBJ,NOT-HERE-OBJECT /TRUE
ZERO? PRSO? /?CCL15
SET 'PRSO,OBJ
CALL THIS-IS-IT,PRSO
RFALSE
?CCL15: SET 'PRSI,OBJ
RFALSE
?CCL8: RETURN NOT-HERE-OBJECT
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
ZERO? P-OFLAG /?CCL3
ZERO? P-XADJ /?CND4
PRINTC 32
PRINTB P-XADJN
?CND4: ZERO? P-XNAM /FALSE
PRINTC 32
PRINTB P-XNAM
RTRUE
?CCL3: ZERO? PRSO? /?CCL10
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?CCL10: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT LADDER-F
ZERO? LADDER-HANGING \?CCL3
CALL CANT-SEE,LADDER
RSTACK
?CCL3: EQUAL? PRSA,V?BOARD,V?CLIMB,V?TAKE \?CCL5
LOC PROTAGONIST
EQUAL? STACK,CAPT-QUARTERS \?CCL8
FSET? LEDGE,MUNGBIT \?CCL11
PRINTI "You lean over"
CALL TPRINT,LEDGE
PRINTI ", but"
CALL TPRINT,LADDER
PRINTI " is too far out to reach"
PRINT PCR
RTRUE
?CCL11: PRINTI "It's on the other side of the window"
PRINT PCR
RTRUE
?CCL8: LOC PROTAGONIST
EQUAL? STACK,LEDGE \?CCL13
PRINTI "You "
CALL ANYTHING-HELD
ZERO? STACK /?CND14
CALL ROB,PROTAGONIST,RETICULE
PRINTI "put everything in"
CALL TPRINT,RETICULE
PRINTI " and "
?CND14: FSET? POOP,TOUCHBIT \?CCL18
PRINTI "hop out, catching the"
JUMP ?CND16
?CCL18: CALL QUEUE,I-LADDER-BLOWS,-1
PRINTI "reach out for"
CALL TPRINT,LADDER
PRINTI " and over-balance, tumbling from your perch. Your hand closes on a slimy hemp rung as you fly out over the waves, clinging tenuously, feet free, to the"
?CND16: CALL PRSO-PRINT
PRINT PCR
CRLF
CALL GOTO,ON-LADDER
RSTACK
?CCL13: EQUAL? HERE,ON-LADDER \?CCL20
EQUAL? PRSA,V?TAKE \?CCL20
PRINT HOLDING-IT
RTRUE
?CCL20: LOC PROTAGONIST
EQUAL? STACK,SKIFF \?CCL24
CALL DEBARK-SKIFF
RSTACK
?CCL24: EQUAL? HERE,POOP \?CCL26
PRINTI "If you wish to climb down"
CALL TPRINT,LADDER
PRINTI ", say so"
PRINT PCR
RTRUE
?CCL26: CALL DO-WALK,P?UP
RSTACK
?CCL5: EQUAL? PRSA,V?CUT \?CCL28
CALL HELD?,DAGGER
ZERO? STACK /?CCL31
CALL CTPRINT,DAGGER
PRINTI " isn't sharp enough to cut through"
CALL TRPRINT,LADDER
RSTACK
?CCL31: CALL PROPOSE
RSTACK
?CCL28: EQUAL? PRSA,V?UNTIE \?CCL33
CALL CTPRINT,ROPE
PRINTI " is tied in too complex a knot"
PRINT PCR
RTRUE
?CCL33: EQUAL? PRSA,V?CLIMB-DOWN \?CCL35
EQUAL? HERE,CAPT-QUARTERS \?CCL38
CALL DO-FIRST,STR?298,LADDER
RSTACK
?CCL38: CALL DO-WALK,P?DOWN
RTRUE
?CCL35: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,CAPT-QUARTERS,ON-LADDER,POOP \FALSE
PRINT COMMON-LOOKING
PRINTI "rope "
PRINTD LADDER
PRINT PCR
RTRUE
.FUNCT I-END-PROLOGUE
PRINT INDENT
PRINTI "Davis leaps across the deck to your side, ""Free me or she dies!"" he yells, jabbing a knife up to your throat. In one smooth motion,"
CALL TPRINT,HERO
PRINTI " draws his rapier, pulls you free and stabs. Davis slumps into a bloody heap.
Swooning, you fall into the Falcon's arms. You are dimly aware of being carried to the other ship, down a short flight of stairs, and laid gently on a soft bed. When you gather strength to look around, the Falcon has left you in peace.
You remain confined to this room, a large cupboard blocking the door. Meals are brought by a peg-legged old man and eaten in silence. Of your handsome rescuer you see nothing. Slowly the days pass.
"
CRLF
PRINT HIT-RETURN
PRINTI "continue.]"
CRLF
READ P-INBUF,P-LEXV
CALL CLEAR-SCREEN,10
CALL GOTO,CAPT-QUARTERS
FCLEAR CRULLEY,DEADBIT
FCLEAR DOOR,MUNGBIT
MOVE HERO,CAPT-QUARTERS
FCLEAR HERO,NDESCBIT
REMOVE COFFER
FSET COFFER,MUNGBIT
FCLEAR COFFER,LOCKEDBIT
FSET RAPIER,NDESCBIT
FCLEAR DOOR,OPENBIT
RTRUE
.FUNCT GLOBAL-SLEEP-F
EQUAL? PRSA,V?TAKE,V?WALK-TO \FALSE
CALL PERFORM,V?SLEEP
RTRUE
.FUNCT GROUND-F
EQUAL? PRSA,V?EXAMINE \?CCL3
EQUAL? HERE,RIGGING-ROOM,CROWS-NEST \?CCL6
PRINTI "Looking down at the distant deck is a mistake. Your stomach flips over"
JUMP ?CND4
?CCL6: CALL SHIP-BOARD,HERE
ZERO? STACK /?CCL8
PRINTI "Well scrubbed and smoothed floorboards make up the deck"
JUMP ?CND4
?CCL8: EQUAL? HERE,BY-SHIP,LAGOON,SHALLOWS \?CCL10
PRINTI "A sandy bottom shifts under the waves"
JUMP ?CND4
?CCL10: EQUAL? HERE,CELL-1,CELL-4 \?CCL12
PRINTI "Like the walls and ceiling, rock"
JUMP ?CND4
?CCL12: EQUAL? HERE,CELL-2 \?CCL14
PRINTI "The floor is ankle deep in mud"
JUMP ?CND4
?CCL14: CALL NOTHING-INTERESTING
PRINTI "about "
FSET? HERE,INDOORSBIT \?CCL17
PRINTI "the floor"
JUMP ?CND4
?CCL17: CALL TPRINT,GROUND
?CND4: PRINT PCR
RTRUE
?CCL3: EQUAL? PRSA,V?BOARD,V?CLIMB,V?CLIMB-ON \?CCL19
CALL WASTES
RSTACK
?CCL19: EQUAL? PRSA,V?LOOK-UNDER \?CCL21
CALL IMPOSSIBLES
RSTACK
?CCL21: EQUAL? PRSA,V?LEAVE \?CCL23
CALL DO-WALK,P?UP
RSTACK
?CCL23: EQUAL? PRSA,V?WALK-TO \FALSE
CALL NOUN-USED,W?DECK,GROUND
ZERO? STACK /FALSE
EQUAL? HERE,CABIN,LANDING,HOLD /?CTR29
EQUAL? HERE,GALLEY \?CCL30
?CTR29: CALL DO-WALK,P?OUT
RSTACK
?CCL30: EQUAL? HERE,DEUX-DECK,POOP,QUARTERDECK /?CTR33
EQUAL? HERE,MAIN-DECK,FOCSLE \?CCL34
?CTR33: PRINT LOOK-AROUND
RTRUE
?CCL34: EQUAL? HERE,CROWS-NEST,RIGGING-ROOM \?CCL38
CALL DO-WALK,P?DOWN
RSTACK
?CCL38: CALL SHIP-BOARD,HERE
ZERO? STACK /?CCL40
CALL V-WALK-AROUND
RSTACK
?CCL40: CALL WASTES
RSTACK
.FUNCT KEY-F
EQUAL? PRSA,V?TAKE \FALSE
FSET? LARGE-KEY,TRYTAKEBIT \FALSE
MOVE LARGE-KEY,PROTAGONIST
FCLEAR LARGE-KEY,TRYTAKEBIT
INC 'SCORE
PRINTR "Taken."
.FUNCT GEN-LOCK
FSET? COFFER,NDESCBIT /FALSE
RETURN DOOR
.FUNCT DOOR-F
EQUAL? HERE,CAPT-QUARTERS \?CCL3
CALL PERFORM-PRSA,CURTAIN
RTRUE
?CCL3: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL5
CALL NOUN-USED,W?LOCK,LDOOR
ZERO? STACK /?CCL8
PRINTI "Ladies do not look through keyholes!"
CRLF
JUMP ?CND6
?CCL8: FSET? PRSO,OPENBIT \?CCL10
PRINTI "It is open"
JUMP ?CND6
?CCL10: PRINTI "It"
PRINT IS-CLOSED
EQUAL? HERE,QUARTERDECK \?CCL13
PRINTI " and barred"
JUMP ?CND6
?CCL13: FSET? DOOR,MUNGBIT \?CND6
PRINTI ". Or, what remains of it is"
?CND6: CALL THIS-IS-IT,PRSO
PRINT PCR
RTRUE
?CCL5: EQUAL? PRSA,V?PICK \?CCL16
EQUAL? PRSO,LDOOR \?CCL16
PRINTR "The mechanism is too complex to pick."
?CCL16: EQUAL? PRSA,V?UNLOCK \?CCL20
EQUAL? HERE,UPPER-HALL-E \?CCL23
PRINTI "Only one man has the key to this room: Jean Lafond"
PRINT PCR
RTRUE
?CCL23: EQUAL? HERE,QUARTERDECK \?CCL25
CALL PERFORM,V?OPEN,DOOR
RTRUE
?CCL25: EQUAL? PRSO,WOOD-CELL-DOOR \?CCL27
PRINTI "But"
CALL TPRINT,DOOR
PRINTI " isn't locked"
PRINT PCR
RTRUE
?CCL27: EQUAL? PRSI,LARGE-KEY \?CCL29
EQUAL? PRSO,IRON-CELL-DOOR \?CCL32
FCLEAR PRSO,LOCKEDBIT
PRINTI "Unlocked"
PRINT PCR
RTRUE
?CCL32: PRINTI "That key does not unlock this door"
PRINT PCR
RTRUE
?CCL29: PRINTI "You are unable to unlock"
CALL TRPRINT,DOOR
RSTACK
?CCL20: EQUAL? PRSA,V?LOCK \?CCL34
EQUAL? PRSO,IRON-CELL-DOOR \?CCL37
EQUAL? PRSI,LARGE-KEY \?CCL37
FSET PRSO,LOCKEDBIT
PRINTI "You "
FSET? PRSO,OPENBIT \?CND40
FCLEAR PRSO,OPENBIT
PRINTI "close and "
?CND40: PRINTI "lock"
CALL TRPRINT,DOOR
RSTACK
?CCL37: EQUAL? PRSI,LARGE-KEY \?CCL43
PRINTI "That key won't work here"
PRINT PCR
RTRUE
?CCL43: EQUAL? PRSO,VER-DOOR \?CCL45
PRINT YOU-CANT
PRINTI "lock that"
PRINT PCR
RTRUE
?CCL45: CALL PROPOSE
RSTACK
?CCL34: EQUAL? PRSA,V?KNOCK \?CCL47
EQUAL? HERE,UPPER-HALL-E \?CCL50
FSET? LDOOR,LOCKEDBIT /?CCL50
IN? LAFOND,LAFS-ROOM \?CCL50
PRINTD LAFOND
PRINTR " calls, ""Come."""
?CCL50: PRINTR "Silence answers back."
?CCL47: EQUAL? PRSA,V?OPEN \FALSE
EQUAL? HERE,CABIN \?CCL58
PRINTR "It appears to be locked."
?CCL58: EQUAL? HERE,LANDING \?CCL60
CALL CTPRINT,DOOR
PRINTI " won't open"
PRINT PCR
RTRUE
?CCL60: EQUAL? HERE,QUARTERDECK \?CCL62
PRINTI "Someone yells from ahead, ""Cap'n 'll have your hide if you go down there!"" You haven't the strength to lift the bar anyway"
PRINT PCR
RTRUE
?CCL62: EQUAL? HERE,VERANDA \FALSE
FSET? DOOR,OPENBIT /FALSE
PRINT YOU-CANT-SEE-ANY
PRINT WAY-TO-DO-THAT
RTRUE
.FUNCT CEILING-F
EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,CREWS-QUARTERS \?CCL6
PRINT YOU-SEE
PRINTI " a sail rippling against the night sky through"
CALL TRPRINT,GRATE
RSTACK
?CCL6: FSET? HERE,INDOORSBIT /FALSE
CALL CANT-SEE,CEILING
RSTACK
.FUNCT WATER-F
EQUAL? HERE,LAFS-ROOM,RIGGING-ROOM /?PRD5
EQUAL? HERE,BOWSPRIT,CROWS-NEST \?CCL3
?PRD5: EQUAL? PRSA,V?PUT-ON,V?PUT,V?THROW /?CCL3
EQUAL? PRSA,V?ENTER \?CCL10
PRINT SUICIDE
RTRUE
?CCL10: CALL CANT-REACH,SEA
RSTACK
?CCL3: CALL GLOBAL-IN?,SEA,HERE
ZERO? STACK \?CCL12
CALL HELD?,WATER,HERE
ZERO? STACK \?CCL12
PRINTR "There's no water here."
?CCL12: EQUAL? PRSA,V?EXAMINE,V?LOOK-UNDER,V?LOOK-INSIDE \?CCL16
PRINTI "The water is sparkling clear"
PRINT PCR
RTRUE
?CCL16: EQUAL? PRSA,V?REACH-IN \?CCL18
PRINTI "Water"
PRINT DRIPS-OFF
RTRUE
?CCL18: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?CCL20
EQUAL? PRSO,WATER \?CCL23
PRINTI "You take a long draft. It is quite refreshing"
PRINT PCR
RTRUE
?CCL23: PRINTI "This water is much too salty to drink"
PRINT PCR
RTRUE
?CCL20: EQUAL? PRSA,V?PUT-ON \?CCL25
EQUAL? PRSI,SEA \?CCL25
CALL PERFORM,V?PUT,PRSO,SEA
RTRUE
?CCL25: EQUAL? PRSA,V?THROW \?CCL29
EQUAL? HERE,CAPT-QUARTERS \?CCL32
FSET? LEDGE,MUNGBIT /?CCL32
PRINTI "But"
CALL TPRINT,WINDOW
PRINT IS-CLOSED
PRINTR "!"
?CCL32: REMOVE PRSO
PRINTI "You toss"
CALL TPRINT-PRSO
PRINTI " into"
CALL TRPRINT,SEA
RSTACK
?CCL29: EQUAL? PRSA,V?SOAK,V?PUT \?CCL36
EQUAL? PRSO,LETTER,INVITE \?CCL39
REMOVE PRSO
PRINTI "It disintegrates quickly into nothing"
PRINT PCR
RTRUE
?CCL39: EQUAL? HERE,POOP,QUARTERDECK,FOCSLE /?CTR40
EQUAL? HERE,BOWSPRIT,CAPT-QUARTERS \?CCL41
?CTR40: CALL PERFORM,V?THROW,PRSO,SEA
RTRUE
?CCL41: EQUAL? HERE,MAIN-DECK \?CCL45
EQUAL? PRSI,SEA \?CCL48
CALL PERFORM,V?THROW,PRSO,SEA
RTRUE
?CCL48: CALL PERFORM,V?PUT,PRSO,WATER-BARREL
RTRUE
?CCL45: EQUAL? HERE,BEACH,SHALLOWS,LAGOON /?CTR49
EQUAL? HERE,BY-SHIP \?CCL50
?CTR49: EQUAL? PRSO,RAG,DRESS \?CCL55
CALL DIP-DRESS
RSTACK
?CCL55: PRINTI "You dip"
CALL TPRINT-PRSO
PRINTI " into the water"
PRINT PCR
RTRUE
?CCL50: PRINT YOU-CANT
PRINTI "reach any water"
PRINT PCR
RTRUE
?CCL36: EQUAL? PRSA,V?SWIM,V?ENTER,V?BOARD \?CCL57
EQUAL? HERE,BEACH \?CCL60
CALL DO-WALK,P?EAST
RSTACK
?CCL60: CALL V-SWIM
RSTACK
?CCL57: CALL TOUCHING?,SEA
ZERO? STACK /FALSE
PRINTI "The cool water runs through your fingers"
PRINT PCR
RTRUE
.FUNCT SKY-F
FSET? HERE,INDOORSBIT \FALSE
CALL CANT-SEE,SKY
RSTACK
.FUNCT MOON-F
FSET? HERE,INDOORSBIT \?CCL3
EQUAL? HERE,CREWS-QUARTERS,CAPT-QUARTERS,BEDROOM /?CCL3
EQUAL? HERE,LAFS-ROOM /?CCL3
EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT /?CCL3
PRINT YOU-CANT
PRINTI "see the moon from here"
PRINT PCR
RTRUE
?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "A dusty moonbeam swirls down from the sky."
.FUNCT HANDS-F,ACTOR
EQUAL? PRSA,V?APPLAUD \?CCL3
SET 'PRSO,FALSE-VALUE
CALL V-APPLAUD
RSTACK
?CCL3: EQUAL? PRSA,V?SHAKE \?CCL5
CALL FIND-IN,HERE,ACTORBIT,STR?267 >ACTOR
ZERO? ACTOR /?CCL8
CALL PERFORM,V?SHAKE-WITH,HANDS,ACTOR
RTRUE
?CCL8: PRINTR "Pleased to meet you."
?CCL5: EQUAL? PRSA,V?CLEAN \?CCL10
PRINTR "Done."
?CCL10: EQUAL? PRSA,V?TAKE-WITH \FALSE
EQUAL? PRSI,HANDS \FALSE
CALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT EYES-F
EQUAL? PRSA,V?CLOSE \?CCL3
PRINTI "You blink"
PRINT PCR
RTRUE
?CCL3: EQUAL? PRSA,V?OPEN \?CCL5
PRINTR "They are open!"
?CCL5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
CALL ADJ-USED,A?HIS
ZERO? STACK /FALSE
IN? HERO,HERE \FALSE
GET MANNERISMS,3
PRINT STACK
CRLF
RTRUE
.FUNCT MOUTH-F
EQUAL? PRSA,V?OPEN,V?ENTER,V?PUT-ON /?CTR2
EQUAL? PRSA,V?EXAMINE,V?POUR,V?WRING /?CTR2
EQUAL? PRSA,V?PUT \?CCL3
?CTR2: CALL ADJ-USED,A?CROC'S
ZERO? STACK \?CTR8
CALL ADJ-USED,A?CROCOD
ZERO? STACK \?CTR8
CALL NOUN-USED,W?SNOUT,MOUTH
ZERO? STACK /?CCL9
?CTR8: CALL PERFORM-PRSA,PRSO,CROC
RTRUE
?CCL9: CALL ADJ-USED,A?LAFOND
ZERO? STACK /?CCL14
CALL PERFORM-PRSA,PRSO,LAFOND
RSTACK
?CCL14: EQUAL? PRSI,MOUTH \FALSE
CALL PERFORM,V?EAT,PRSO
RTRUE
?CCL3: EQUAL? PRSA,V?OPEN \FALSE
CALL RUNNING?,I-HFOLLY
ZERO? STACK /?CCL21
PRINTR "Jamison will do that for you."
?CCL21: PRINTR "You fail to stifle a yawn."
.FUNCT PROTAGONIST-F
ZERO? QUESTIONER /FALSE
CALL GAME-COMMANDS
ZERO? STACK \FALSE
EQUAL? PRSA,V?NO /?CTR6
CALL NEGATIVE-ANSWER
ZERO? STACK /?CCL7
EQUAL? QUESTIONER,PRSO,PRSI \?CCL7
?CTR6: SET 'REACTION,REACTION-NEGATIVE
JUMP ?CND3
?CCL7: EQUAL? PRSA,V?YES /?CTR12
CALL AFFIRMATIVE-ANSWER
ZERO? STACK /?CCL13
?CTR12: SET 'REACTION,REACTION-POSITIVE
JUMP ?CND3
?CCL13: SET 'REACTION,REACTION-NEUTRAL
?CND3: SET 'QUESTIONER,FALSE-VALUE
RFALSE
.FUNCT AFFIRMATIVE-ANSWER
EQUAL? PRSA,V?CLIMB-ON,V?APPLAUD /TRUE
EQUAL? PRSA,V?GIVE,V?FOLLOW,V?DANCE /TRUE
EQUAL? PRSA,V?SGIVE /TRUE
EQUAL? PRSA,V?CURTSEY,V?KISS,V?HELLO /TRUE
EQUAL? PRSA,V?LAUGH /TRUE
EQUAL? PRSA,V?MARRY,V?I-LOVE-YOU,V?EMBRACE /TRUE
EQUAL? PRSA,V?TOUCH /TRUE
EQUAL? PRSA,V?SAVE-SOMETHING,V?WALK-TO,V?THANK /TRUE
EQUAL? PRSA,V?SSHOW,V?SHOW /TRUE
EQUAL? PRSA,V?MAKE-OUT,V?MAKE-LOVE /TRUE
EQUAL? PRSA,V?TELL \FALSE
GET P-LEXV,P-CONT
CALL YES-WORD,STACK
ZERO? STACK /FALSE
RTRUE
.FUNCT NEGATIVE-ANSWER
EQUAL? PRSA,V?BURN,V?BITE,V?KILL /TRUE
EQUAL? PRSA,V?RAPE,V?KICK,V?MUNG /TRUE
EQUAL? PRSA,V?YELL,V?SWING,V?SHAKE /TRUE
EQUAL? PRSA,V?TELL \FALSE
GET P-LEXV,P-CONT
CALL NO-WORD,STACK
ZERO? STACK /FALSE
RTRUE
.FUNCT GAME-COMMANDS
EQUAL? PRSA,V?QUIT,V?RESTORE,V?SAVE /TRUE
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?VERBOSE /TRUE
EQUAL? PRSA,V?VERSION,V?UNSCRIPT,V?SCRIPT /TRUE
EQUAL? PRSA,V?$RECORD,V?$COMMAND,V?$RANDOM /TRUE
EQUAL? PRSA,V?$UNRECORD /TRUE
EQUAL? PRSA,V?$VERIFY /TRUE
EQUAL? PRSA,V?SCORE,V?HELP /TRUE
RFALSE
.FUNCT ME-F
EQUAL? PRSA,V?TELL \?CCL3
PRINTI "You'll end up in Bedlam, talking to "
PRINTD ME
PRINTI " that way."
CRLF
CALL STOP
RSTACK
?CCL3: EQUAL? PRSA,V?GIVE \?CCL5
EQUAL? PRSI,ME \?CCL5
CALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL5: EQUAL? PRSA,V?TAKE-WITH \?CCL9
EQUAL? PRSI,MAN \?CCL9
CALL RECOGNIZE
RSTACK
?CCL9: EQUAL? PRSA,V?SHOW \?CCL13
EQUAL? PRSI,ME \?CCL13
CALL PERFORM,V?EXAMINE,PRSO
RTRUE
?CCL13: EQUAL? PRSA,V?MOVE \?CCL17
CALL V-WALK-AROUND
RSTACK
?CCL17: EQUAL? PRSA,V?SEARCH \?CCL19
CALL V-INVENTORY
RTRUE
?CCL19: EQUAL? PRSA,V?ALARM \?CCL21
CALL HELD?,SALTS
ZERO? STACK /?CCL21
CALL PERFORM,V?SMELL,SALTS
RTRUE
?CCL21: EQUAL? PRSA,V?DRESS \?CCL25
CALL PERFORM,V?GET-DRESSED,ROOMS
RTRUE
?CCL25: EQUAL? PRSA,V?EXAMINE \?CCL27
CALL RUNNING?,I-LSED
ZERO? STACK /?CCL30
GRTR? LAFOND-CTR,HORNY \?CCL30
CALL V-INVENTORY
RSTACK
?CCL30: PRINTI "You are wearing"
ZERO? BOY-DRESS? /?CCL35
CALL APRINT,SHIRT
PRINTI " and "
PRINTD PANTS
PRINTR ". Mama herself would think you a plump boy."
?CCL35: FSET? DRESS,WORNBIT \?CCL37
CALL APRINT,DRESS
PRINTR ", very pretty, if a tad outmoded for today's fashions."
?CCL37: FSET? GOWN,WORNBIT \?CCL39
CALL APRINT,GOWN
PRINTR " of creamy watered silk."
?CCL39: FSET? SHIRT,WORNBIT \?CCL41
CALL APRINT,SHIRT
PRINT BROTHEL
RTRUE
?CCL41: FSET? PANTS,WORNBIT \?CCL43
CALL APRINT,PANTS
PRINT BROTHEL
RTRUE
?CCL43: FSET? CHEMISE,EVERYBIT /FALSE
PRINTI " absolutely nothing besides"
CALL APRINT,CHEMISE
PRINTI ", "
PRINTD SHOES
PRINTI " and a few layers of "
PRINTD UNMENTIONABLES
PRINTI ". "
PRINT MOTHER
RTRUE
?CCL27: EQUAL? PRSA,V?SHOOT,V?MUNG,V?KILL /?CTR46
EQUAL? PRSA,V?SSHOOT \?CCL47
?CTR46: PRINT SUICIDE
RTRUE
?CCL47: EQUAL? PRSA,V?WHERE,V?FIND \?CCL51
PRINTI "You're in"
CALL TRPRINT,HERE
RSTACK
?CCL51: EQUAL? PRSA,V?FOLLOW \?CCL53
PRINTR "Next time, please specify who you wish to follow."
?CCL53: EQUAL? PRSA,V?EMBRACE,V?KISS \FALSE
PRINTI "Mama warned you of the dangers of onanism"
PRINT PCR
RTRUE
.FUNCT GLOBAL-ROOM-F
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?LOOK \?CCL3
CALL V-LOOK
RSTACK
?CCL3: EQUAL? PRSA,V?WALK-TO,V?ENTER \?CCL5
CALL V-WALK-AROUND
RSTACK
?CCL5: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?LEAVE \?CCL7
CALL DO-WALK,P?OUT
RSTACK
?CCL7: EQUAL? PRSA,V?SEARCH \?CCL9
EQUAL? HERE,CABIN \?CCL12
CALL RUNNING?,I-COFFER
ZERO? STACK \?CCL12
CALL HELD?,COFFER
ZERO? STACK \?CCL12
CALL PERFORM,V?LOOK-UNDER,CABIN-BED
RTRUE
?CCL12: PRINT NOTHING-NEW
RTRUE
?CCL9: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,GLOBAL-ROOM \FALSE
EQUAL? P-PRSA-WORD,W?THROW \?CCL22
CALL PERFORM,V?THROW,PRSO
RTRUE
?CCL22: CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT HOUSE-F
EQUAL? PRSA,V?BOARD,V?WALK-TO,V?ENTER \?CCL3
EQUAL? HERE,MAIN-ENTRANCE \?CCL6
CALL DO-WALK,P?SOUTH
RSTACK
?CCL6: EQUAL? HERE,TRADE-ENTRANCE \?CCL8
CALL DO-WALK,P?EAST
RSTACK
?CCL8: EQUAL? HERE,VERANDA,LAWN \?CCL10
CALL DO-WALK,P?NORTH
RSTACK
?CCL10: EQUAL? HERE,BY-HOUSE \?CCL12
CALL DO-WALK,P?WEST
RSTACK
?CCL12: PRINT YOU-CANT
PRINTR "do that from here."
?CCL3: EQUAL? PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \?CCL14
EQUAL? HERE,KITCHEN \?CCL17
CALL DO-WALK,P?WEST
RSTACK
?CCL17: EQUAL? HERE,FOYER \?CCL19
CALL DO-WALK,P?NORTH
RSTACK
?CCL19: EQUAL? HERE,BALLROOM \?CCL21
CALL DO-WALK,P?SOUTH
RSTACK
?CCL21: EQUAL? HERE,LIBRARY \?CCL23
CALL DO-WALK,P?EAST
RSTACK
?CCL23: EQUAL? HERE,BEDROOM \?CCL25
CALL DO-WALK,P?DOWN
RSTACK
?CCL25: PRINT LOOK-AROUND
RTRUE
?CCL14: EQUAL? PRSA,V?LOOK-INSIDE \?CCL27
EQUAL? HERE,MAIN-ENTRANCE,TRADE-ENTRANCE,LAWN /?CTR29
EQUAL? HERE,BY-HOUSE \?CCL30
?CTR29: PRINT CANT-FROM-HERE
RTRUE
?CCL30: CALL V-LOOK
RSTACK
?CCL27: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,CREWS-QUARTERS \?CCL37
PRINTI "Bathed in moonbeams and candlelight, the house squats at the crest of a cliff. The upstairs window is dark"
PRINT PCR
RTRUE
?CCL37: CALL SHIP-BOARD,HERE
ZERO? STACK /?PRD41
CALL INNER-DECK,HERE
ZERO? STACK /?CTR38
?PRD41: EQUAL? HERE,BEACH \?CCL39
?CTR38: PRINT YOU-CANT
PRINTI "make out much of the house from this angle"
PRINT PCR
RTRUE
?CCL39: CALL INNER-DECK,HERE
ZERO? STACK \?CTR44
CALL BELOW-GROUND,HERE
ZERO? STACK \?CTR44
EQUAL? HERE,FOREST,FOLLY,IN-HEDGE \?CCL45
?CTR44: PRINT YOU-CANT-SEE-ANY
PRINTI "house here"
PRINT PCR
RTRUE
?CCL45: EQUAL? HERE,FRONT-DRIVE,MAIN-ENTRANCE,LAWN /?CTR49
EQUAL? HERE,TRADE-ENTRANCE,CLEARING,VERANDA \?CCL50
?CTR49: PRINTI "An entrance to"
CALL TPRINT,HOUSE
PRINTI " is nearby"
PRINT PCR
RTRUE
?CCL50: CALL V-LOOK
RSTACK