-
Notifications
You must be signed in to change notification settings - Fork 11
/
people.zap
2311 lines (2220 loc) · 61.2 KB
/
people.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 READ-NAME,TBL,STR,PTR,LEN,N,NUMTOKENS,TOK
?FCN: PRINT STR
CRLF
PRINTI ">"
READ P-INBUF,P-LEXV
GETB P-LEXV,P-LEXWORDS
ZERO? STACK \?CND5
PRINTI "I beg your pardon?"
CRLF
JUMP ?FCN
?CND5: GET P-LEXV,P-LEXSTART >N
ZERO? N /?CND10
CALL WT?,N,PS?VERB,P1?VERB >N
EQUAL? ACT?RESTART,N \?ELS15
RESTART
PRINT FAILED
CRLF
JUMP ?FCN
?ELS15: EQUAL? N,ACT?$VERIFY \?ELS19
CALL V-$VERIFY
JUMP ?FCN
?ELS19: EQUAL? N,ACT?RELEASE \?ELS21
CALL V-VERSION
JUMP ?FCN
?ELS21: EQUAL? N,ACT?RESTORE \?CND10
CALL V-RESTORE
ZERO? STACK /?FCN
RETURN 2
?CND10: GETB P-LEXV,1 >NUMTOKENS
SET 'TOK,NUMTOKENS
SET 'NAME-OUTLEN,1
ADD 1,P-LEXSTART
MUL 2,STACK >N
?PRG31: DLESS? 'TOK,0 \?CND33
JUMP ?REP32
?CND33: GETB P-LEXV,N >LEN
ADD 1,N
GETB P-LEXV,STACK >PTR
CALL READ-NAME-REPEAT,TBL,PTR,LEN
GRTR? NAME-OUTLEN,NAME-LENGTH \?CND36
JUMP ?REP32
?CND36: PUTB TBL,NAME-OUTLEN,32
IGRTR? 'NAME-OUTLEN,NAME-LENGTH \?CND39
JUMP ?REP32
?CND39: EQUAL? TBL,FIRST-NAME \?ELS44
ZERO? FN-SPACE \?CND42
SUB NAME-OUTLEN,1 >FN-SPACE
JUMP ?CND42
?ELS44: ZERO? LN-SPACE \?CND42
SUB NAME-OUTLEN,1 >LN-SPACE
?CND42: ADD 4,N >N
JUMP ?PRG31
?REP32: GRTR? NAME-OUTLEN,NAME-LENGTH \?ELS52
PUTB TBL,0,NAME-LENGTH
RTRUE
?ELS52: SUB NAME-OUTLEN,2
PUTB TBL,0,STACK
RTRUE
.FUNCT READ-NAME-REPEAT,TBL,PTR,LEN,CH
?PRG1: GETB P-INBUF,PTR >CH
DLESS? 'LEN,0 /TRUE
EQUAL? CH,45,39,38 /?CND6
MOD CH,32
ADD 96,STACK >CH
?CND6: PUTB TBL,NAME-OUTLEN,CH
IGRTR? 'NAME-OUTLEN,NAME-LENGTH /TRUE
INC 'PTR
JUMP ?PRG1
.FUNCT PRINT-NAME,TBL,CAP=0,PTR=0,LEN,CH,SP?=1
GETB TBL,0 >LEN
?PRG1: IGRTR? 'PTR,LEN /TRUE
GETB TBL,PTR >CH
ZERO? CAP \?THN11
ZERO? SP? /?ELS8
?THN11: EQUAL? CH,32,45,39 /?ELS8
EQUAL? CH,38 /?ELS8
SUB CH,32
PRINTC STACK
JUMP ?CND6
?ELS8: PRINTC CH
?CND6: EQUAL? CH,32,45,39 \?ELS17
SET 'SP?,TRUE-VALUE
JUMP ?PRG1
?ELS17: EQUAL? CH,38 \?ELS19
SET 'SP?,TRUE-VALUE
JUMP ?PRG1
?ELS19: SET 'SP?,FALSE-VALUE
JUMP ?PRG1
.FUNCT NAME?,PTR,?ORTMP
CALL XNAME?,PTR,FIRST-NAME,FN-SPACE
POP '?ORTMP
ZERO? ?ORTMP /?ORP4
RETURN ?ORTMP
?ORP4: CALL XNAME?,PTR,LAST-NAME,LN-SPACE
RSTACK
.FUNCT XNAME?,PTR,TBL,MAX,CNT,BPTR,CHR,N?=1,NCNT=0
MUL PTR,2
ADD P-LEXV,STACK
GETB STACK,2 >CNT
GRTR? CNT,6 \?CND1
SET 'CNT,6
?CND1: MUL PTR,2
ADD P-LEXV,STACK
GETB STACK,3 >BPTR
ZERO? MAX \?CND4
GETB TBL,0 >MAX
?CND4: DLESS? 'MAX,7 /?CND7
SET 'MAX,6
?CND7:
?PRG10: IGRTR? 'NCNT,MAX \?ELS14
ZERO? CNT /?REP11
SET 'N?,FALSE-VALUE
JUMP ?REP11
?ELS14: DLESS? 'CNT,0 \?ELS19
SET 'N?,FALSE-VALUE
JUMP ?REP11
?ELS19: GETB P-INBUF,BPTR >CHR
EQUAL? CHR,45,38,39 /?CND22
MOD CHR,32
ADD 96,STACK >CHR
?CND22: GETB TBL,NCNT
EQUAL? CHR,STACK /?CND25
SET 'N?,FALSE-VALUE
?CND25: INC 'BPTR
JUMP ?PRG10
?REP11: ZERO? N? /FALSE
EQUAL? TBL,FIRST-NAME \?ELS38
PUT P-LEXV,PTR,W?$FN
RETURN W?$FN
?ELS38: PUT P-LEXV,PTR,W?$LN
RETURN W?$LN
.FUNCT PLAYER-NAME-F
CALL DO-INSTEAD-OF,PLAYER,PLAYER-NAME
RTRUE
.FUNCT PLAYER-F,LON,LAT
EQUAL? PRSO,PLAYER \FALSE
EQUAL? PRSA,V?GOODBYE,V?HELLO \?ELS10
CALL HAR-HAR
RSTACK
?ELS10: EQUAL? PRSA,V?EXAMINE \?ELS12
CALL PERFORM,V?INVENTORY
RTRUE
?ELS12: EQUAL? PRSA,V?FIND \?ELS14
EQUAL? NOW-TERRAIN,BAY-TERRAIN,SEA-TERRAIN \FALSE
PRINTI "The "
EQUAL? NOW-TERRAIN,BAY-TERRAIN \?ELS24
SUB SUB-LON,SEA-WALL-LON >LON
SUB SUB-LAT,SEA-WALL-LAT >LAT
PRINTD SEA-WALL
JUMP ?CND22
?ELS24: SET 'LON,SUB-LON
SET 'LAT,SUB-LAT
ZERO? FINE-SONAR /?CND29
INC 'LAT
?CND29: PRINTD AIRLOCK
?CND22: PRINTI " is "
ZERO? LON /?CND37
LESS? LON,0 \?ELS46
SUB 0,LON
JUMP ?CND42
?ELS46: PUSH LON
?CND42: MUL 5,STACK
PRINTN STACK
ZERO? FINE-SONAR \?CND49
PRINTI "00"
?CND49: PRINTI " meters "
GRTR? 0,LON \?ELS60
PUSH STR?78
JUMP ?CND56
?ELS60: PUSH STR?79
?CND56: PRINT STACK
PRINTI "st "
ZERO? LAT /?CND37
PRINTI "and "
?CND37: ZERO? LAT /?CND68
LESS? LAT,0 \?ELS77
SUB 0,LAT
JUMP ?CND73
?ELS77: PUSH LAT
?CND73: MUL 5,STACK
PRINTN STACK
ZERO? FINE-SONAR \?CND80
PRINTI "00"
?CND80: PRINTI " meters "
GRTR? 0,LAT \?ELS91
PUSH STR?80
JUMP ?CND87
?ELS91: PUSH STR?81
?CND87: PRINT STACK
PRINTI "th "
?CND68: PRINTI "of here."
CRLF
SUB AIRLOCK-DEPTH,SUB-DEPTH >LON
EQUAL? NOW-TERRAIN,SEA-TERRAIN \TRUE
ZERO? LON /TRUE
PRINTI "It's also "
MUL 5,LON
PRINTN STACK
PRINTR " meters below you."
?ELS14: EQUAL? PRSA,V?SEARCH \FALSE
CALL PERFORM,V?INVENTORY
RTRUE
.FUNCT ARM-F
CALL DIVESTMENT?,ARM
ZERO? STACK \?THN6
CALL DIVESTMENT?,GASH
ZERO? STACK /?ELS5
?THN6: CALL HAR-HAR
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE,V?ANALYZE \FALSE
FSET? ARM,MUNGBIT \?ELS14
PRINTR "Your arm is seriously gashed."
?ELS14: CALL NOTHING-SPECIAL
RSTACK
.FUNCT TIP-IS-PLAYING
EQUAL? TIP-PLAYS,WINDOW \?ELS7
PUSH STR?82
JUMP ?CND3
?ELS7: PUSH STR?83
?CND3: PRINT STACK
PRINTI " the "
PRINTD TIP-PLAYS
RTRUE
.FUNCT TIP-F,ARG=0,OBJ,X,L
LOC TIP >L
EQUAL? ARG,M-OBJDESC \?ELS5
FSET? TIP,TOUCHBIT /?ELS8
FSET TIP,TOUCHBIT
CRLF
PRINTD TIP
PRINTI " follows you into"
CALL PRINTT,L
EQUAL? L,BLY-OFFICE \?CND11
CALL PICK-ONE,TIP-PICKS >TIP-PLAYS
PRINTI " and begins "
CALL TIP-IS-PLAYING
?CND11: PRINTR "."
?ELS8: EQUAL? L,SUB \?ELS19
PRINTD TIP
PRINTI " is sitting behind you, "
IN? MAGAZINE,TIP \?ELS24
PRINTI "reading a "
PRINTD MAGAZINE
PRINTR "."
?ELS24: ZERO? TIP-FOLLOWS-YOU? \?ELS28
PRINTI "installing a "
PRINTD FINE-GRID
PRINTR "."
?ELS28: PRINTR "checking the instruments."
?ELS19: EQUAL? L,BLY-OFFICE \?ELS36
PRINTD TIP
PRINTI " is "
CALL TIP-IS-PLAYING
PRINTR "."
?ELS36: CALL DESCRIBE-COLLAPSE,TIP
RTRUE
?ELS5: EQUAL? WINNER,TIP \?ELS44
CALL GRAB-ATTENTION,TIP
ZERO? STACK /TRUE
EQUAL? PRSO,FINE-GRID \?ELS59
EQUAL? PRSA,V?TAKE /?ELS59
EQUAL? PRSA,V?TIE-TO,V?PUT \?ELS59
EQUAL? PRSI,SONARSCOPE,GLOBAL-SONAR,THROTTLE /?THN52
?ELS59: CALL MOUNTING-VERB?,FINE-GRID
ZERO? STACK /?ELS51
?THN52: SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,TIP,FINE-GRID
RTRUE
?ELS51: EQUAL? PRSA,V?WAIT-FOR \?ELS65
EQUAL? PRSO,HERE /?THN62
?ELS65: EQUAL? PRSA,V?FOLLOW \?ELS61
EQUAL? PRSO,PLAYER \?ELS61
?THN62: PRINTI """I won't let you out of my sight, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "!"""
?ELS61: CALL COM-CHECK,TIP >X
ZERO? X /?ELS71
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS71: CALL PICK-ONE,WHY-ME
PRINT STACK
CRLF
RETURN 2
?ELS44: CALL ASK-ABOUT?,TIP >OBJ
ZERO? OBJ /?ELS86
CALL GRAB-ATTENTION,TIP
ZERO? STACK /TRUE
CALL SAID-TO,TIP
EQUAL? OBJ,AUTO-PILOT \?ELS94
ZERO? SUB-IN-OPEN-SEA /?ELS94
FSET? AUTO-PILOT,ONBIT /?ELS94
CALL TIME-FOR-PILOT
RSTACK
?ELS94: EQUAL? OBJ,REACTOR,CATALYST-CAPSULE \?ELS98
IN? CATALYST-CAPSULE,REACTOR /FALSE
CALL TELL-HINT,33,CATALYST-CAPSULE,FALSE-VALUE
RSTACK
?ELS98: EQUAL? OBJ,SPECIAL-TOOL-GLOBAL,SPECIAL-TOOL \?ELS105
EQUAL? HERE,SUB \FALSE
CALL TELL-HINT,61,TIP,FALSE-VALUE
RSTACK
?ELS105: EQUAL? OBJ,TRAITOR,BLACK-BOX \?ELS112
CALL TIP-COMES
ZERO? STACK \TRUE
?ELS112: EQUAL? OBJ,TIP-IDEA,GLOBAL-SONAR,GLOBAL-SIEGEL \?ELS116
IN? TIP-IDEA,GLOBAL-OBJECTS \?ELS116
ZERO? SIEGEL-TESTED \?ELS116
FSET? SIEGEL,BUSYBIT /?ELS116
CALL TELL-HINT,13,SIEGEL,FALSE-VALUE
RSTACK
?ELS116: EQUAL? OBJ,STATION-MONITOR \?ELS120
PRINTR """I just like to play with it."""
?ELS120: EQUAL? OBJ,FINE-GRID \?ELS124
ZERO? FINE-SONAR \?THN128
ZERO? SUB-IN-DOME \?CND125
EQUAL? NOW-TERRAIN,SEA-TERRAIN /?CND125
?THN128: PRINTR """I think it's swell!"""
?CND125: PRINTI """If the "
PRINTD SNARK
PRINTI " stays near the sea floor, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ", it may churn up silt. Even with our "
PRINTD SEARCH-BEAM
PRINTI " on, we might have trouble aiming a weapon. Wouldn't it be easier if we could spot its exact position by sonar?"""
CALL YES?
ZERO? STACK /TRUE
PRINTI """"
CALL PRINT-NAME,FIRST-NAME
PRINTI ", our "
PRINTD SONARSCOPE
PRINTI " shows each "
PRINTD GRID-UNIT
PRINTI " as 500 meters across. A blip indicates the APPROXIMATE position of an object. That's not good enough to hit the broad side of a barn! "
ZERO? SUB-IN-DOME \?CND141
IN? FINE-GRID,TIP /?CND141
PRINTI "When we're in the "
PRINTD AQUADOME
PRINTI ", ask me about a "
PRINTD FINE-GRID
PRINTR "."""
?CND141: PRINTI "Let me install a "
PRINTD FINE-GRID
PRINTI " on the "
PRINTD SONARSCOPE
PRINTI " that'll show a blip's position to within 5 meters, okay?"""
CALL YES?
ZERO? STACK /TRUE
CALL QUEUE,I-TIP-REPORTS,5
PUT STACK,0,1
FSET TIP,BUSYBIT
ZERO? SUB-IN-DOME /TRUE
EQUAL? HERE,SUB,AIRLOCK,AIRLOCK-WALL \?ELS159
MOVE TIP,DOME-STORAGE
JUMP ?CND157
?ELS159: MOVE TIP,SUB
?CND157: MOVE FINE-GRID,TIP
SET 'TIP-FOLLOWS-YOU?,FALSE-VALUE
PRINTI """"
CALL PRINT-NAME,FIRST-NAME
PRINTI ", I checked"
EQUAL? HERE,DOME-STORAGE /?CND164
PRINTI " the "
PRINTD DOME-STORAGE
?CND164: PRINTI " and found a "
PRINTD FINE-GRID
PRINTI " that'll fit our "
PRINTD SONARSCOPE
PRINTI ". I can install it quickly! I'll have someone install a fine throttle control, too, for tight maneuvering. It has the same 3 settings, but for small "
PRINTD GRID-UNIT
PRINTI "s -- 0, 5, 10, or 15 meters per turn."""
CRLF
RTRUE
?ELS124: CALL COMMON-ASK-ABOUT,TIP,OBJ >X
ZERO? X /?ELS172
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS172: PRINTI """You know as much as I do, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS86: EQUAL? PRSA,V?TELL-ABOUT \?ELS185
EQUAL? PRSO,GLOBAL-SNARK \FALSE
PRINTI """I know, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! We'd better go there fast in the "
PRINTD GLOBAL-SUB
PRINTR "!"""
?ELS185: CALL COMMON-OTHER,TIP
ZERO? STACK \TRUE
RFALSE
.FUNCT ASK-ABOUT?,PER
EQUAL? PRSA,V?CONFRONT,V?ASK-ABOUT \?ELS5
EQUAL? PRSO,PER \?ELS5
ZERO? PRSI /?ELS5
RETURN PRSI
?ELS5: EQUAL? PRSA,V?WHAT,V?FIND \FALSE
ZERO? PRSO /FALSE
IN? PRSO,GLOBAL-OBJECTS \FALSE
RETURN PRSO
.FUNCT GLOBAL-SHARON-F,ARG=0,OBJ,L,X
SET 'L,REMOTE-PERSON-LOC
ZERO? SHARON-EXPLAINED \?ELS5
EQUAL? REMOTE-PERSON,GLOBAL-SHARON \?ELS5
SET 'SHARON-EXPLAINED,TRUE-VALUE
CALL SHARON-EXPLAINS
RETURN 2
?ELS5: EQUAL? WINNER,GLOBAL-SHARON \?ELS11
EQUAL? PRSA,V?FIND \?ELS16
EQUAL? PRSO,GLOBAL-SHARON \?ELS16
PRINTI """I'm in the "
PRINTD THORPE-SUB
PRINTR "."""
?ELS16: EQUAL? PRSA,V?FIND \?ELS22
EQUAL? PRSO,GLOBAL-SNARK \?ELS22
PRINTR """It's right here, next to me."""
?ELS22: EQUAL? PRSA,V?SET,V?PUSH /?THN31
EQUAL? PRSA,V?MOVE-DIR,V?MOVE,V?STOP \?ELS28
?THN31: EQUAL? PRSO,THORPE-SUB,SNARK,ROOMS \?ELS28
PRINTR """I'm afraid I can't control it that well."""
?ELS28: CALL COM-CHECK,GLOBAL-SHARON >X
ZERO? X /?ELS36
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS36: PRINTI """Sorry, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ", but I'm too busy driving this "
PRINTD THORPE-SUB
PRINTI "."""
CRLF
RETURN 2
?ELS11: EQUAL? REMOTE-PERSON,GLOBAL-SHARON \?ELS51
CALL ASK-ABOUT?,GLOBAL-SHARON >OBJ
ZERO? OBJ /?ELS51
CALL SAID-TO,GLOBAL-SHARON
EQUAL? OBJ,SNARK \?ELS58
CALL SHARON-ABOUT-MONSTER
RTRUE
?ELS58: EQUAL? OBJ,THORPE-SUB \?ELS60
CALL SHARON-ABOUT-CAT
RTRUE
?ELS60: EQUAL? OBJ,GLOBAL-THORPE \?ELS62
CALL SHARON-ABOUT-THORPE
RTRUE
?ELS62: CALL COMMON-ASK-ABOUT,GLOBAL-SHARON,OBJ >X
ZERO? X /?ELS64
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS64: CALL DONT-KNOW,GLOBAL-SHARON,OBJ
RSTACK
?ELS51: EQUAL? PRSO,GLOBAL-SHARON \?ELS75
EQUAL? PRSA,V?HELLO \?ELS75
EQUAL? REMOTE-PERSON-ON,SONARPHONE,INTERCOM \?ELS75
PRINTI "You hear "
PRINTD PRSO
PRINTR " nodding at you."
?ELS75: EQUAL? PRSO,GLOBAL-SHARON \?ELS81
EQUAL? PRSA,V?REPLY,V?LISTEN \?ELS81
CALL WAITING-FOR-YOU-TO-SPEAK
RTRUE
?ELS81: EQUAL? PRSO,GLOBAL-SHARON \?ELS85
EQUAL? PRSA,V?PHONE \?ELS85
EQUAL? HERE,SUB,CRAWL-SPACE /?ELS85
ZERO? SUB-IN-DOME \?ELS85
PRINTR "There's no phone line to where she is."
?ELS85: EQUAL? PRSO,GLOBAL-SHARON \?ELS91
EQUAL? PRSA,V?READ \?ELS91
CALL FIGURE-OF-SPEECH
RTRUE
?ELS91: CALL GLOBAL-PERSON
RSTACK
.FUNCT FIGURE-OF-SPEECH
PRINTR "That's just a figure of speech! Try the command: SAY ""HELLO."""
.FUNCT DONT-KNOW-ANYTHING
PRINTR """Uh . . . I don't know anything about it."""
.FUNCT SHARON-F,ARG=0,OBJ,L,X
LOC SHARON >L
EQUAL? ARG,M-OBJDESC \?ELS5
IN? SHARON,OFFICE \?ELS10
PRINTR "Sharon is looking through the file drawer."
?ELS10: IN? SHARON,HERE \?ELS14
IN? HERE,ROOMS \?ELS14
PRINTR "Sharon is pacing back and forth."
?ELS14: PRINTI "Sharon is sitting on the "
LOC SHARON
PRINTD STACK
PRINTR "."
?ELS5: EQUAL? WINNER,SHARON \?ELS24
EQUAL? PRSA,V?FIND \?ELS29
EQUAL? PRSO,MAGAZINE \?ELS34
CALL PERFORM,V?ASK-ABOUT,SHARON,MAGAZINE
RTRUE
?ELS34: EQUAL? PRSO,GLOBAL-THORPE \FALSE
PRINTI "Sharon looks surprised. ""I don't know, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS29: EQUAL? PRSA,V?LOOK-INSIDE \?ELS40
EQUAL? PRSO,FILE-DRAWER \?ELS40
SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,SHARON,FILE-DRAWER
RTRUE
?ELS40: CALL COM-CHECK,SHARON >X
ZERO? X /?ELS44
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS44: PRINTR """I'm too busy right now."""
?ELS24: EQUAL? PRSA,V?ASK \?ELS57
IN? SHARON,OFFICE \?ELS57
CALL PERFORM,V?ASK-ABOUT,SHARON,FILE-DRAWER
RTRUE
?ELS57: CALL ASK-ABOUT?,SHARON >OBJ
ZERO? OBJ /?ELS61
CALL GRAB-ATTENTION,SHARON
ZERO? STACK /TRUE
CALL SAID-TO,SHARON
EQUAL? OBJ,MAGAZINE,ARTICLE \?ELS69
LOC MAGAZINE
EQUAL? STACK,SHARON,PLAYER \?ELS69
PRINTI """Uh . . . That's not the "
PRINTD MAGAZINE
PRINTR " I'm looking for."""
?ELS69: EQUAL? OBJ,CIRCUIT-BREAKER,ELECTRICAL-CONTROL-PANEL \?ELS75
ZERO? SHARON-BROKE-CIRCUIT /?ELS75
CALL DONT-KNOW-ANYTHING
RSTACK
?ELS75: EQUAL? OBJ,CATALYST-CAPSULE \?ELS79
PRINTR """Uh . . . I guess I forgot about it. Sorry."""
?ELS79: EQUAL? OBJ,GLOBAL-SHARON,SHARON \?ELS83
PRINTR """You know me well and trust me completely."""
?ELS83: EQUAL? OBJ,PROBLEM \?ELS87
PRINTI """Sorry, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ", but I just got word that my mother is ill. They want me to come to the hospital at once."
PRINTR """"
?ELS87: EQUAL? OBJ,ARTICLE /?THN96
EQUAL? OBJ,FILE-DRAWER,PAPERS,MAGAZINE \?ELS95
?THN96: PRINTI """I can't find the "
PRINTD MAGAZINE
PRINTI " I bought for my mother this morning. I thought it might be in the "
PRINTD FILE-DRAWER
PRINTI ". I wanted to take it to the hospital for her to read. I really must rush off, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "!"""
?ELS95: EQUAL? OBJ,THORPE,GLOBAL-THORPE \?ELS101
CALL PERFORM,V?ASK-ABOUT,SHARON,PRIVATE-MATTER
RTRUE
?ELS101: CALL COMMON-ASK-ABOUT,SHARON,OBJ >X
ZERO? X /?ELS103
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS103: CALL PICK-ONE,SHARON-ASKED
PRINT STACK
CRLF
RTRUE
?ELS61: EQUAL? PRSA,V?GOODBYE \?ELS116
PRINTI """I'm going as soon as I find that "
PRINTD MAGAZINE
PRINTR "."""
?ELS116: CALL COMMON-OTHER,SHARON
ZERO? STACK \TRUE
RFALSE
.FUNCT BLY-TELLS-PROBLEM
SET 'BLY-TOLD-PROBLEM,TRUE-VALUE
CALL QUEUE,I-SHARON-TO-HALLWAY,6
PUT STACK,0,1
CALL SAID-TO,GLOBAL-BLY
CALL THIS-IS-IT,GLOBAL-SNARK
CALL PRINT-NAME,FIRST-NAME
PRINTI "! Our transparent dome enclosing the "
PRINT URS
PRINTR " is being battered by a huge monster!"""
.FUNCT MIKE-2-F
PRINTI """The "
PRINTD SNARK
PRINTI "'s gone for now, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". It's no longer in sight."
RTRUE
.FUNCT GLOBAL-BLY-F,ARG=0,OBJ,L,X
SET 'L,REMOTE-PERSON-LOC
EQUAL? ARG,M-OBJDESC \?ELS5
EQUAL? L,CENTER-OF-LAB \FALSE
ZERO? WOMAN-ON-SCREEN /?ELS15
PRINTR "You can't tell who the woman is."
?ELS15: PRINTI "You can see a picture of "
PRINTD BLY
PRINTI " on the "
PRINTD REMOTE-PERSON-ON
PRINTR "."
?ELS5: EQUAL? L,CENTER-OF-LAB \?ELS24
CALL SPEAKING-VERB?
ZERO? STACK /?ELS24
EQUAL? PRSO,FALSE-VALUE,GLOBAL-BLY,PLAYER \?ELS24
IN? MICROPHONE,PLAYER \?THN27
FSET? MICROPHONE,ONBIT /?ELS24
?THN27: SET 'P-CONT,FALSE-VALUE
CALL THIS-IS-IT,MICROPHONE
PRINTI "She can't hear you unless you "
IN? MICROPHONE,PLAYER /?ELS35
PRINTI "pick up your "
PRINTD MICROPHONE
FSET? MICROPHONE,ONBIT /?CND38
PRINTI " and switch it on"
?CND38: PRINTR "."
?ELS35: PRINTI "switch on your "
PRINTD MICROPHONE
PRINTR "."
?ELS24: ZERO? BLY-TOLD-PROBLEM \?ELS50
EQUAL? PRSA,V?LISTEN,V?GOODBYE /?ELS50
ZERO? MONSTER-GONE \?ELS50
IN? MICROPHONE,PLAYER \?ELS50
EQUAL? REMOTE-PERSON,GLOBAL-BLY \?ELS50
CALL QUEUE,I-SEND-SUB,8
PUT STACK,0,1
PRINTI """"
CALL PRINT-NAME,FIRST-NAME
PRINTI "! "
CALL BLY-TELLS-PROBLEM
RETURN 2
?ELS50: EQUAL? WINNER,GLOBAL-BLY \?ELS63
EQUAL? PRSA,V?FIND \?ELS68
EQUAL? PRSO,GLOBAL-BLY \?ELS68
PRINTI """I'm at the "
PRINTD AQUADOME
PRINTR "."""
?ELS68: EQUAL? PRSO,PLAYER \?ELS74
EQUAL? P-ADVERB,W?PRIVATELY \?ELS74
EQUAL? PRSA,V?TELL /?THN77
EQUAL? PRSA,V?TELL-ABOUT \?ELS74
EQUAL? PRSI,PRIVATE-MATTER \?ELS74
?THN77: SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,GLOBAL-BLY,PRIVATE-MATTER
RTRUE
?ELS74: EQUAL? PRSA,V?EXAMINE \?ELS88
EQUAL? PRSO,GLOBAL-SNARK /?THN85
?ELS88: EQUAL? PRSA,V?SHOW \?ELS84
EQUAL? PRSO,PLAYER \?ELS84
EQUAL? PRSI,GLOBAL-SNARK \?ELS84
?THN85: ZERO? MONSTER-GONE /?ELS95
CALL MIKE-2-F
PRINTR """"
?ELS95: PRINTI "The "
PRINTD AQUADOME
PRINTI "'s camera pans, and the monster comes into view on your "
PRINTD VIDEOPHONE
PRINTR " screen. It resembles a huge sea slug, about 5 meters tall. Its clawed tentacles pound and scratch at the dome."
?ELS84: EQUAL? PRSA,V?KILL \?ELS108
EQUAL? PRSO,GLOBAL-SNARK /?THN113
?ELS108: EQUAL? PRSA,V?SHOOT,V?ATTACK \?ELS110
EQUAL? PRSO,GLOBAL-SNARK \?ELS110
EQUAL? PRSI,FALSE-VALUE,GLOBAL-WEAPON,GLOBAL-EXPLOSIVE /?THN113
?ELS110: EQUAL? PRSO,GLOBAL-EXPLOSIVE,GLOBAL-WEAPON \?ELS104
EQUAL? PRSA,V?USE /?THN113
EQUAL? PRSA,V?USE-AGAINST \?ELS104
EQUAL? PRSI,GLOBAL-SNARK \?ELS104
?THN113: ZERO? MONSTER-GONE /?ELS121
CALL MIKE-2-F
PRINTR """"
?ELS121: EQUAL? PRSO,GLOBAL-EXPLOSIVE /?THN127
EQUAL? PRSI,GLOBAL-EXPLOSIVE \?ELS126
?THN127: PRINTI """Setting off explosions so close might damage the "
PRINTD AQUADOME
PRINTR " even worse than the Snark is doing."""
?ELS126: PRINTI """"
CALL PRINT-NAME,FIRST-NAME
PRINTR ", this is a peaceful research facility. We have no weapons."""
?ELS104: EQUAL? PRSA,V?SEND-OUT,V?SEND \?ELS136
EQUAL? PRSO,GLOBAL-SUB \?ELS136
PRINTI """No subs are stationed here at the "
PRINTD AQUADOME
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS136: EQUAL? PRSO,DISTRESS-CALL \?ELS142
EQUAL? PRSA,V?SEND /?THN145
EQUAL? PRSA,V?SEND-TO \?ELS142
EQUAL? PRSI,GLOBAL-SUB \?ELS142
?THN145: PRINTI """No response to our "
PRINTD SONARPHONE
PRINTI " "
PRINTD DISTRESS-CALL
PRINTR "s."""
?ELS142: EQUAL? PRSO,GLOBAL-SUB \?ELS152
EQUAL? PRSA,V?FIND /?THN155
EQUAL? PRSA,V?FIND-WITH \?ELS152
EQUAL? PRSI,GLOBAL-SONAR \?ELS152
?THN155: PRINTI """No blips appear on the "
PRINTD SONAR-EQUIPMENT
PRINTR "."""
?ELS152: EQUAL? PRSA,V?DISEMBARK,V?LEAVE /?THN163
EQUAL? PRSA,V?WALK-TO \?ELS162
EQUAL? PRSO,GLOBAL-HERE,YOUR-LABORATORY,GLOBAL-SURFACE \?ELS162
?THN163: PRINTR """Our emergency escape bell would be vulnerable to a monster as big as the Snark. Ditto for SCUBA gear, deep-sea diving suits, or jet-propelled observation bubbles."""
?ELS162: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS170
CALL PICK-ONE,WHY-ME
PRINT STACK
CRLF
RETURN 2
?ELS170: EQUAL? PRSA,V?TELL,V?REPLY \?ELS176
EQUAL? PRSO,PLAYER \?ELS176
SET 'WINNER,PLAYER
CALL PERFORM,V?ASK,GLOBAL-BLY
RTRUE
?ELS176: EQUAL? PRSA,V?WAIT-FOR /?THN181
EQUAL? PRSA,V?FIND \?ELS180
EQUAL? PRSO,PLAYER \?ELS180
?THN181: PRINTI """Okay, "
CALL PRINT-NAME,FIRST-NAME
PRINTR ", but hurry!"""
?ELS180: CALL COM-CHECK,GLOBAL-BLY >X
ZERO? X /?ELS190
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS190: CALL PICK-ONE,WHY-ME
PRINT STACK
CRLF
RETURN 2
?ELS63: EQUAL? REMOTE-PERSON,GLOBAL-BLY \?ELS205
CALL ASK-ABOUT?,GLOBAL-BLY >OBJ
ZERO? OBJ /?ELS205
CALL SAID-TO,GLOBAL-BLY
EQUAL? OBJ,PROBLEM \?ELS212
EQUAL? L,SUB \?ELS217
PRINTR """I'll tell you when we can talk privately."""
?ELS217: PRINTI """"
CALL BLY-TELLS-PROBLEM
RSTACK
?ELS212: EQUAL? OBJ,GLOBAL-SNARK \?ELS225
EQUAL? REMOTE-PERSON-ON,SONARPHONE \?ELS228
MOVE PRIVATE-MATTER,GLOBAL-OBJECTS
INC 'BLY-PRIVATELY-COUNT
PRINTI """There have been no new attacks, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". But the creature may come back. And"
CALL DISCUSS-PRIVATE
RTRUE
?ELS228: PRINTI """Some of our divers saw it while exploring the undersea environment. They nicknamed it the Snark. This is the first time it has approached the "
PRINTD AQUADOME
PRINTI ", and it may be the last time, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! I'm not sure how long our plastic dome enclosure c"
ZERO? MONSTER-GONE /?ELS237
PRINTI "ould"
JUMP ?CND235
?ELS237: PRINTI "an"
?CND235: PRINTR " withstand such a battering!"""
?ELS225: CALL COMMON-ASK-ABOUT,GLOBAL-BLY,OBJ >X
ZERO? X /?ELS248
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS248: CALL DONT-KNOW,GLOBAL-BLY,OBJ
RSTACK
?ELS205: EQUAL? PRSA,V?$CALL,V?ASK \?ELS259
PRINTI """Ask me about something in particular, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS259: ZERO? WOMAN-ON-SCREEN /?ELS263
EQUAL? PRSA,V?EXAMINE \?ELS263
PRINTR "You can't tell who the woman is."
?ELS263: EQUAL? PRSO,GLOBAL-BLY \?ELS269
EQUAL? PRSA,V?HELLO \?ELS269
EQUAL? REMOTE-PERSON-ON,SONARPHONE,INTERCOM \?ELS269
PRINTI "You hear "
PRINTD PRSO
PRINTR " nodding at you."
?ELS269: EQUAL? PRSA,V?GOODBYE \?ELS275
PRINTI """I hope to see you soon, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "."""
CRLF
EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?CND280
CALL I-SHARON-TO-HALLWAY
?CND280: CALL PHONE-OFF
RTRUE
?ELS275: EQUAL? PRSO,GLOBAL-BLY \?ELS284
EQUAL? PRSA,V?REPLY,V?LISTEN \?ELS284
CALL WAITING-FOR-YOU-TO-SPEAK
RTRUE
?ELS284: EQUAL? PRSO,GLOBAL-BLY \?ELS288
EQUAL? PRSA,V?PHONE \?ELS288
EQUAL? HERE,SUB,CRAWL-SPACE /?ELS288
ZERO? SUB-IN-DOME /FALSE
?ELS288: EQUAL? PRSO,GLOBAL-BLY \?ELS292
EQUAL? PRSA,V?READ \?ELS292
CALL FIGURE-OF-SPEECH
RTRUE
?ELS292: EQUAL? PRSA,V?TELL-ABOUT \?ELS296
EQUAL? PRSI,GLOBAL-SUB \FALSE
PRINTI """The only submarine capable of hunting it at such depths is your "
PRINTD GLOBAL-SUB
PRINTR ". Please send us that!"""
?ELS296: CALL COMMON-OTHER,GLOBAL-BLY
ZERO? STACK \TRUE
CALL GLOBAL-PERSON
RSTACK
.FUNCT BLY-F,ARG=0,OBJ,L,X
LOC BLY >L
EQUAL? ARG,M-OBJDESC \?ELS5
CALL DESCRIBE-COLLAPSE,BLY
RSTACK
?ELS5: ZERO? DOME-AIR-BAD? /?ELS7
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS7
PRINTI """Never mind me, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "!"" she cries. ""S-S-Something's wrong with the "
PRINTD AIR-SUPPLY-SYSTEM
PRINTI "! ... F-Fix it -- or we'll all s-s-soon be ..."""
CRLF
RETURN 2
?ELS7: EQUAL? WINNER,BLY \?ELS15
CALL GRAB-ATTENTION,BLY
ZERO? STACK /TRUE
EQUAL? PRSA,V?FIND \?ELS22
EQUAL? PRSO,PHOTO \?ELS22
ZERO? BLY-SAW-PHOTO \?ELS22
PRINTR """It's either on his person or in his locker, in the dormitory."""
?ELS22: EQUAL? PRSA,V?GIVE \?ELS28
EQUAL? PRSO,JOB \?ELS28
EQUAL? PRSI,GLOBAL-SIEGEL,SIEGEL \?ELS28
PRINTI """I'll have him check the "
PRINTD SONAR-EQUIPMENT
PRINTI ". Okay?"""
CALL YES?
ZERO? STACK /?CND33
CALL ZOE-SENDS-MARV,COMM-BLDG
RTRUE
?CND33: PRINTI """Should I give him some chore that's close to the "
PRINTD SONAR-EQUIPMENT
PRINTI " so he can keep an eye on it?"""
CALL YES?
ZERO? STACK /?CND38
CALL ZOE-SENDS-MARV,COMM-BLDG
RTRUE
?CND38: PRINTI """Then somewhere out of sight of the "
PRINTD COMM-BLDG
PRINTI "? That's where the "
PRINTD SONAR-EQUIPMENT
PRINTI "is."""
CALL YES?
ZERO? STACK /?ELS47
SET 'SIEGEL-OUT-OF-SIGHT,TRUE-VALUE
CALL ZOE-SENDS-MARV,AIRLOCK
RTRUE
?ELS47: PRINTI """Then, you'd better do it, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS28: EQUAL? PRSA,V?TIE-TO,V?PUT \?ELS53
EQUAL? PRSO,BLACK-BOX \?ELS53
EQUAL? PRSI,SONAR-EQUIPMENT,GLOBAL-SONAR \?ELS53
MOVE BLACK-BOX,SONAR-EQUIPMENT
PRINTI """Wilco, "
CALL PRINT-NAME,FIRST-NAME
PRINTR ". Consider it done."""
?ELS53: EQUAL? PRSA,V?EXAMINE,V?READ \?ELS59
EQUAL? PRSO,DIARY \?ELS59
SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,BLY,DIARY
RTRUE
?ELS59: EQUAL? PRSA,V?SHOW \?ELS63
EQUAL? PRSO,PLAYER \?ELS63
EQUAL? PRSI,EVIDENCE \?ELS63
SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,BLY,PRSI
RTRUE
?ELS63: EQUAL? PRSO,PLAYER \?ELS67
EQUAL? P-ADVERB,W?PRIVATELY \?ELS67
EQUAL? PRSA,V?TELL /?THN70
EQUAL? PRSA,V?TELL-ABOUT \?ELS67
EQUAL? PRSI,PRIVATE-MATTER \?ELS67
?THN70: SET 'WINNER,PLAYER
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
RTRUE
?ELS67: EQUAL? PRSA,V?ASK \?ELS75
EQUAL? PRSO,PLAYER \?ELS75
CALL I-BLY-SAYS,TRUE-VALUE
ZERO? STACK \TRUE
?ELS75: FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS79
CALL EXIT-VERB?
ZERO? STACK /?ELS79
PRINTI """Not now, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS79: CALL COM-CHECK,BLY >X
ZERO? X /?ELS85
EQUAL? X,M-FATAL \TRUE
RFALSE
?ELS85: CALL PICK-ONE,WHY-ME
PRINT STACK
CRLF
RETURN 2
?ELS15: EQUAL? PRSA,V?ASK /?THN101
EQUAL? PRSO,BLY \?ELS100
EQUAL? PRSA,V?TELL \?ELS100
EQUAL? P-ADVERB,W?PRIVATELY \?ELS100
?THN101: CALL ASK-BLY-ABOUT-PRIVATE-MATTER
RTRUE
?ELS100: EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?ELS106
EQUAL? PRSI,CONTROL-CIRCUITS-GAUGE,CONTROL-CIRCUITS,OVERHEATING /?THN109
EQUAL? PRSI,VOLTAGE-REGULATOR,LOCAL-SUB,GLOBAL-SUB \?ELS106
?THN109: PRINTI """You mean the problem you had on the way here? Shall I ask Mick to check on it?"""
CALL YES?
ZERO? STACK /TRUE
MOVE ANTRIM,HERE
SET 'WINNER,ANTRIM
CALL PERFORM,V?FIX,GLOBAL-SUB
RTRUE
?ELS106: CALL ASK-ABOUT?,BLY >OBJ
ZERO? OBJ /?ELS117
CALL GRAB-ATTENTION,BLY
ZERO? STACK /TRUE
CALL SAID-TO,BLY
FSET BLY,TOUCHBIT
EQUAL? OBJ,PRIVATE-MATTER \?ELS125
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
RSTACK
?ELS125: EQUAL? OBJ,PROBLEM \?ELS127
ZERO? DOME-AIR-BAD? /?ELS132
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS132
CALL BADGES-RED
RTRUE
?ELS132: ZERO? ZOE-MENTIONED-EVIDENCE \?ELS136
SET 'WINNER,PLAYER
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
RTRUE
?ELS136: EQUAL? HERE,BLY-OFFICE \?ELS138
ZERO? ZOE-BLUSHING /?ELS138
CALL DOC-IN-LOVE
RSTACK
?ELS138: PRINTI """I'm worried that the "
PRINTD SNARK
PRINTI " may attack again, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."""
?ELS127: EQUAL? OBJ,DIARY \?ELS146
PRINTR """I think that I can guess what's in it."""
?ELS146: EQUAL? OBJ,REASON,PHOTO \?ELS150
EQUAL? OBJ,PHOTO \?CND151
SET 'BLY-SAW-PHOTO,TRUE-VALUE
?CND151: CALL DISCRETION,BLY,HORVAK
PRINTI """A friend took a picture of me just before I was assigned here. I usually keep it on my desk, but a few days after Doc came on to me, I realized it was gone."
ZERO? BLY-SAW-PHOTO \?CND156
PRINTI " It still hasn't turned up."
?CND156: PRINTR " I think Doc took it. He wanted a picture of me."""
?ELS150: EQUAL? OBJ,EVIDENCE,BLACK-BOX \?ELS164
ZERO? ZOE-MENTIONED-EVIDENCE \?CND165
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
RTRUE
?CND165: PRINTI """I wanted to make sure the "
PRINTD SONAR-EQUIPMENT
PRINTI " would warn us if the "
PRINTD SNARK
PRINTI " approached again. I was worried because the blips on the scope looked fuzzy, as if the system was out of alignment. When I inspected it, I found someone had secretly attached "
IN? BLACK-BOX,BLY-DESK /?ELS172
IN? BLACK-BOX,BLY \?ELS179
PUSH STR?86
JUMP ?CND175
?ELS179: PUSH STR?87
?CND175: PRINT STACK
PRINTD BLACK-BOX
JUMP ?CND170
?ELS172: PRINTI "this device"
?CND170: PRINTI " to it!"""
CRLF
IN? BLACK-BOX,BLY-DESK \?CND188