-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathspies.zap
More file actions
1685 lines (1600 loc) · 42 KB
/
spies.zap
File metadata and controls
1685 lines (1600 loc) · 42 KB
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 GUN-F
EQUAL? PRSA,V?AIM \?ELS5
CALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
?ELS5: EQUAL? PRSA,V?SHOW \FALSE
EQUAL? PRSI,GUN \FALSE
CALL2 VISIBLE?,CONDUCTOR
ZERO? STACK /?ELS14
CALL ARREST-PLAYER,STR?61,CONDUCTOR,TRUE-VALUE,GUN
RSTACK
?ELS14: CALL2 VISIBLE?,GUARD
ZERO? STACK /?ELS16
CALL ARREST-PLAYER,STR?61,GUARD,TRUE-VALUE,GUN
RSTACK
?ELS16: CALL2 VISIBLE?,WAITER
ZERO? STACK /FALSE
CALL ARREST-PLAYER,STR?61,WAITER,TRUE-VALUE,GUN
RSTACK
.FUNCT START-BAD-SPY,VAL,GT,CAR
GET GOAL-TABLES,BAD-SPY-C >GT
PUT GT,GOAL-SCRIPT,I-BAD-SPY
GETP BAD-SPY,P?CAR >CAR
GRTR? CAR,CAR-MAX \?CND1
SET 'CAR,CAR-MAX
?CND1: CALL2 V-REAR,CAR
CALL MOVE-PERSON,BAD-SPY,STACK >VAL
PUTP BAD-SPY,P?CAR,CAR
PUT GT,GOAL-ENABLE,1
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,COMPARTMENT-START,CAR-START
RETURN VAL
.FUNCT I-BAD-SPY,GARG=0,L,V,BR,BL,RM,VAL=0
ZERO? IDEBUG \?THN4
EQUAL? GARG,G-DEBUG \?CND1
?THN4: PRINTI "[I-BAD-SPY:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: CALL2 PAUSE-SCRIPT?,I-BAD-SPY
ZERO? STACK \FALSE
LOC BAD-SPY >L
CALL2 VISIBLE?,BAD-SPY >V
CALL2 META-LOC,BRIEFCASE >BR
LOC BLOOD-SPOT >BL
EQUAL? GARG,G-ENROUTE \?ELS18
GETPT L,P?IN
GET STACK,REXIT >RM
EQUAL? BR,L,RM \?ELS23
CALL2 HIDDEN?,BRIEFCASE
ZERO? STACK \?ELS23
IN? BRIEFCASE,BAD-SPY /?ELS23
CALL ESTABLISH-GOAL,BAD-SPY,BR
RSTACK
?ELS23: EQUAL? BL,L,RM \?ELS27
CALL ESTABLISH-GOAL,BAD-SPY,BL
RSTACK
?ELS27: ZERO? V \?ELS29
ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
?ELS29: EQUAL? HERE,BR \?ELS37
CALL2 HIDDEN?,BRIEFCASE
ZERO? STACK \?ELS37
IN? BRIEFCASE,BAD-SPY /?ELS37
CALL NEW-LDESC,BAD-SPY,30
SET 'BAD-SPY-DONE-PEEKING,TRUE-VALUE
GET GOAL-TABLES,BAD-SPY-C
PUT STACK,GOAL-SCRIPT,I-BAD-SPY-W-YOU
SET 'BAD-SPY-KNOWS-YOU,TRUE-VALUE
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,HERE,CAR-HERE
ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
?ELS37: ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
?ELS18: EQUAL? VARIATION,3,4 /?ELS55
EQUAL? GARG,G-REACHED \?ELS55
CALL NEW-LDESC,BAD-SPY,30
SET 'BAD-SPY-DONE-PEEKING,TRUE-VALUE
ZERO? V /?CND58
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE
PRINTI " enters, looks around, and "
?CND58: EQUAL? BL,L \?ELS66
ZERO? V /?CND67
GET GOAL-TABLES,BAD-SPY-C
PUT STACK,GOAL-SCRIPT,I-BAD-SPY-W-YOU
GET GOAL-TABLES,BAD-SPY-C
PUT STACK,GOAL-FUNCTION,I-BAD-SPY-W-YOU
SET 'BAD-SPY-KNOWS-YOU,TRUE-VALUE
PRINTI "sits down."
CRLF
?CND67: CALL2 HIDDEN?,BRIEFCASE
ZERO? STACK \?THN76
EQUAL? L,BR /?CND64
?THN76: CALL NEW-LDESC,BAD-SPY,18
ZERO? IDEBUG /?CND78
PRINTN V
PRINTC 93
CRLF
RETURN V
?CND78: RETURN V
?ELS66: ZERO? V /?CND64
PRINTI "pauses a minute."
CRLF
?CND64: IN? BRIEFCASE,PLAYER /?THN95
CALL2 HIDDEN?,BRIEFCASE
ZERO? STACK \?THN95
EQUAL? L,BR /?ELS94
?THN95: CALL QUEUE,I-BAD-SPY,1
PUT STACK,0,1
JUMP ?CND92
?ELS94: CALL1 SPY-TAKES-CASE
ZERO? V /?CND92
PRINTI "Then"
CALL HE-SHE-IT,BAD-SPY,0,STR?288
CALL2 HIM-HER-IT,BRIEFCASE
PRINTI " and takes it."
CRLF
?CND92: ZERO? IDEBUG /?CND105
PRINTN V
PRINTC 93
CRLF
RETURN V
?CND105: RETURN V
?ELS55: ZERO? GARG \FALSE
ADD 1,DINER-CAR
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,COMPARTMENT-1,STACK
ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
.FUNCT SPY-TAKES-CASE
FCLEAR BRIEFCASE,TAKEBIT
FCLEAR BRIEFCASE,SEENBIT
FSET? BRIEFCASE,OPENBIT \?CND1
SET 'BRIEFCASE-WAS-OPEN,TRUE-VALUE
FCLEAR BRIEFCASE-LATCH,OPENBIT
FCLEAR BRIEFCASE,OPENBIT
CALL INSIDE-OBJ-TO,BRIEFCASE-TBL,BRIEFCASE,1
?CND1: MOVE BRIEFCASE,BAD-SPY
GET GOAL-TABLES,BAD-SPY-C
PUT STACK,GOAL-SCRIPT,I-BAD-SPY-W-CASE
CALL QUEUE,I-BAD-SPY-W-CASE,1
PUT STACK,0,1
RTRUE
.FUNCT I-BAD-SPY-W-CASE,GARG=0,V,L,GT,DR,N
ZERO? IDEBUG \?THN4
EQUAL? GARG,G-DEBUG \?CND1
?THN4: PRINTI "[I-BAD-SPY-W-CASE:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: CALL2 PAUSE-SCRIPT?,I-BAD-SPY-W-CASE
ZERO? STACK \FALSE
ZERO? GARG \?CND14
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,COMPARTMENT-5,PLATFORM-MAX
ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
?CND14: CALL2 VISIBLE?,BAD-SPY >V
ZERO? V \?CND23
IN? BRIEFCASE,BAD-SPY \?CND23
FCLEAR BRIEFCASE,SEENBIT
?CND23: EQUAL? GARG,G-ENROUTE \?ELS32
ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
?ELS32: EQUAL? GARG,G-REACHED \FALSE
LOC BAD-SPY >L
CALL NEW-LDESC,BAD-SPY,35
CALL FIND-FLAG-LG,L,DOORBIT >DR
FSET DR,LOCKED
ZERO? BRIEFCASE-WAS-OPEN \?CND41
FSET BRIEFCASE-LATCH,OPENBIT
FSET BRIEFCASE,OPENBIT
CALL TBL-TO-INSIDE,BRIEFCASE,BRIEFCASE-TBL,1
?CND41: ZERO? V /?CND44
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE
PRINTI " quickly opens"
CALL2 HIM-HER-IT,BRIEFCASE
?CND44: EQUAL? VARIATION,2,4 /?THN53
ZERO? LATCH-TURNED /?ELS52
?THN53: SET 'LATCH-TURNED,TRUE-VALUE
SET 'BAD-SPY-OPENED-CASE,TRUE-VALUE
GET GOAL-TABLES,BAD-SPY-C >GT
IN? MCGUFFIN,BRIEFCASE \?ELS57
JUMP ?CND55
?ELS57: IN? SPY-LIST,BRIEFCASE \?ELS59
SET 'LIST-RUBBED,TRUE-VALUE
IN? PASSOBJECT,BAD-SPY \?ELS62
JUMP ?CND55
?ELS62: EQUAL? PASSOBJECT,KNIFE \?ELS64
FCLEAR DR,LOCKED
PUT GT,GOAL-SCRIPT,I-TRAVELER-SEEKS-KNIFE
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,VESTIBULE-REAR-DINER,DINER-CAR
JUMP ?CND55
?ELS64: EQUAL? PASSOBJECT,FLOWER-GLOBAL \?CND55
FCLEAR DR,LOCKED
PUT GT,GOAL-FUNCTION,I-TRAVELER-SEEKS-FLOWER
EQUAL? L,REST-ROOM-REAR-DINER,REST-ROOM-REAR,OTHER-REST-ROOM-REAR /?CND55
GETP BAD-SPY,P?CAR
CALL2 V-REAR,STACK
CALL ESTABLISH-GOAL,BAD-SPY,STACK
JUMP ?CND55
?ELS59: ZERO? BAD-SPY-KNOWS-YOU /?ELS71
PUT GT,GOAL-SCRIPT,I-BAD-SPY-W-YOU
FCLEAR DR,LOCKED
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,HERE,CAR-HERE
JUMP ?CND55
?ELS71: ZERO? BRIEFCASE-WAS-OPEN \?CND75
FCLEAR BRIEFCASE-LATCH,OPENBIT
FCLEAR BRIEFCASE,OPENBIT
CALL INSIDE-OBJ-TO,BRIEFCASE-TBL,BRIEFCASE,1
?CND75: PUT GT,GOAL-FUNCTION,I-BAD-SPY-IMITATES
PUT GT,GOAL-SCRIPT,I-BAD-SPY-IMITATES
?CND55: ZERO? V /?CND50
PRINTC 46
CRLF
JUMP ?CND50
?ELS52: EQUAL? CAR-HERE,PLATFORM-MAX \?ELS88
EQUAL? HERE,COMPARTMENT-5 \?CND89
CALL1 TELL-GAS
?CND89: MOVE BRIEFCASE,SEAT-5
JUMP ?CND86
?ELS88: MOVE BRIEFCASE,OTHER-SEAT-5
?CND86: FSET BRIEFCASE,TAKEBIT
FCLEAR BAD-SPY,PERSONBIT
CALL NEW-LDESC,BAD-SPY,32
GETP BAD-SPY,P?CAR >N
?PRG94: CALL FIND-FLAG-CAR,L,N,PERSONBIT >DR
ZERO? DR /?REP95
FCLEAR DR,PERSONBIT
CALL NEW-LDESC,DR,32
JUMP ?PRG94
?REP95: SET 'GAS-CAR-RM,COMPARTMENT-5
SET 'GAS-CAR,PLATFORM-MAX
ZERO? V /?CND50
PRINTI " and succumbs to the poison gas."
CRLF
?CND50: ZERO? IDEBUG /?CND107
PRINTN V
PRINTC 93
CRLF
?CND107: RETURN V
.FUNCT ARRIVE-AT-STATION-BAD-SPY,GT,X
GET GOAL-TABLES,BAD-SPY-C >GT
EQUAL? VARIATION,3,4 \?ELS5
EQUAL? SCENERY-OBJ,STATION-FRBZ,STATION-GOLA \?ELS5
PUT GT,GOAL-SCRIPT,I-TRAVELER-FINDS-CONTACT
CALL2 CLEAR-TRAIN-PERSON,BAD-SPY-C
RSTACK
?ELS5: EQUAL? VARIATION,3,4 \?ELS9
EQUAL? SCENERY-OBJ,STATION-KNUT \?ELS9
IN? PASSOBJECT,BAD-SPY \?ELS9
ZERO? ON-TRAIN \?ELS16
LOC BAD-SPY
CALL2 ON-PLATFORM?,STACK
ZERO? STACK /?ELS16
PUT GT,GOAL-FUNCTION,I-TRAVELER-TO-GRNZ
LOC BAD-SPY
GETP STACK,P?CAR >X
PUTP BAD-SPY,P?CAR,X
CALL2 V-REAR,X
CALL MOVE-PERSON,BAD-SPY,STACK
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,COMPARTMENT-5,X
RSTACK
?ELS16: PUT GT,GOAL-FUNCTION,I-TRAVELER-SEEKS-TICKET
GETP BAD-SPY,P?CAR
CALL2 V-REAR,STACK
CALL ESTABLISH-GOAL,BAD-SPY,STACK
RSTACK
?ELS9: GET GT,GOAL-SCRIPT
EQUAL? I-BAD-SPY-IMITATES,STACK \FALSE
GETP BAD-SPY,P?CAR
CALL2 V-REAR,STACK
CALL ESTABLISH-GOAL,BAD-SPY,STACK
RSTACK
.FUNCT DEPART-FROM-STATION-BAD-SPY
ZERO? BAD-SPY-KNOWS-YOU /FALSE
ZERO? GAS-CAR \FALSE
CALL1 I-BAD-SPY-TO-YOU
RSTACK
.FUNCT I-BAD-SPY-IMITATES,GARG=0,L,V,CAR,X
ZERO? IDEBUG \?THN4
EQUAL? GARG,G-DEBUG \?CND1
?THN4: PRINTI "[I-BAD-SPY-IMITATES:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: CALL2 PAUSE-SCRIPT?,I-BAD-SPY-IMITATES
ZERO? STACK \FALSE
LOC BAD-SPY >L
CALL2 VISIBLE?,BAD-SPY >V
ZERO? V \?CND14
IN? BRIEFCASE,BAD-SPY \?CND14
FCLEAR BRIEFCASE,SEENBIT
?CND14: EQUAL? GARG,G-ENROUTE \?ELS21
CALL2 ON-PLATFORM?,L
ZERO? STACK /?CND19
ZERO? V /?CND19
CALL2 START-SENTENCE,BAD-SPY
CALL2 WHERE?,BAD-SPY
ZERO? STACK /?CND31
PRINTC 44
?CND31: PRINTI " searches the crowd."
CRLF
JUMP ?CND19
?ELS21: EQUAL? GARG,G-REACHED \?CND19
CALL NEW-LDESC,BAD-SPY,10
GETP BAD-SPY,P?CAR >CAR
CALL2 V-REAR,CAR
EQUAL? L,STACK \?ELS42
GET STATION-ROOMS,CAR
MOVE BAD-SPY,STACK
ZERO? V \?THN46
CALL2 VISIBLE?,BAD-SPY
ZERO? STACK /?CND43
?THN46: CALL2 BAD-SPY-LEAVES-BOARDS,STR?339
?CND43: CALL ESTABLISH-GOAL,BAD-SPY,PLATFORM-A
JUMP ?CND19
?ELS42: ZERO? CUSTOMS-SWEEP \?THN50
EQUAL? L,PLATFORM-E \?ELS49
?THN50: GETP L,P?CAR >X
CALL2 V-REAR,X
MOVE BAD-SPY,STACK
PUTP BAD-SPY,P?CAR,X
ZERO? V \?THN55
CALL2 VISIBLE?,BAD-SPY
ZERO? STACK /?CND52
?THN55: CALL2 BAD-SPY-LEAVES-BOARDS,STR?340
?CND52: CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,COMPARTMENT-5,PLATFORM-MAX
JUMP ?CND19
?ELS49: EQUAL? L,PLATFORM-A \?CND19
CALL ESTABLISH-GOAL,BAD-SPY,PLATFORM-E
ZERO? V /?CND40
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE
PRINTI " searches the crowd."
CRLF
?CND40:
?CND19: ZERO? IDEBUG /?CND65
PRINTN V
PRINTC 93
CRLF
RETURN V
?CND65: RETURN V
.FUNCT I-BAD-SPY-W-YOU,GARG=0,VAL=0,L,V
ZERO? IDEBUG \?THN4
EQUAL? GARG,G-DEBUG \?CND1
?THN4: PRINTI "[I-BAD-SPY-W-YOU:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: CALL2 PAUSE-SCRIPT?,I-BAD-SPY-W-YOU
ZERO? STACK \FALSE
CALL2 VISIBLE?,BAD-SPY >V
LOC BAD-SPY >L
EQUAL? GARG,G-ENROUTE \?ELS16
ZERO? BAD-SPY-OPENED-CASE \?ELS19
IN? BRIEFCASE,PLAYER /?ELS19
CALL2 HIDDEN?,BRIEFCASE
ZERO? STACK \?ELS19
CALL2 META-LOC,BRIEFCASE
EQUAL? L,STACK \?ELS19
CALL1 SPY-TAKES-CASE
ZERO? V /?CND14
SET 'VAL,TRUE-VALUE
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE,STR?288
CALL2 HIM-HER-IT,BRIEFCASE
PRINTI " and takes it."
CRLF
JUMP ?CND14
?ELS19: ZERO? V \?CND14
CALL1 I-BAD-SPY-TO-YOU >VAL
JUMP ?CND14
?ELS16: EQUAL? GARG,G-REACHED \?ELS31
CALL NEW-LDESC,BAD-SPY,30
CALL QUEUE,I-BAD-SPY-W-YOU,-1
PUT STACK,0,1
GET GOAL-TABLES,BAD-SPY-C
GET STACK,GOAL-F
EQUAL? HERE,STACK \?CND14
CALL ZMEMQ,HERE,CAR-ROOMS-COMPS
ZERO? STACK \?THN38
CALL ZMEMQ,HERE,CAR-ROOMS-COMPS-DINER
ZERO? STACK /?ELS37
?THN38: SET 'VAL,TRUE-VALUE
ZERO? V /?ELS42
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE
PRINTI " enters and sits down."
CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,BAD-SPY
ZERO? STACK \?CND46
CALL1 BAD-SPY-GUN-THREAT
?CND46: CRLF
JUMP ?CND14
?ELS42: PRINTI "You hear a knock on the door."
CRLF
JUMP ?CND14
?ELS37: ZERO? V /?CND14
SET 'VAL,TRUE-VALUE
CALL NEW-LDESC,BAD-SPY,3
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE,STR?341
EQUAL? L,HERE \?CND58
PRINTI " here"
?CND58: PRINTI "."
CRLF
JUMP ?CND14
?ELS31: ZERO? GARG \?CND14
ZERO? V /?ELS69
CALL ZMEMQ,HERE,CAR-ROOMS-COMPS
ZERO? STACK \?THN72
CALL ZMEMQ,HERE,CAR-ROOMS-COMPS-DINER
ZERO? STACK \?THN72
CALL ZMEMQ,HERE,CAR-ROOMS-REST
ZERO? STACK /?ELS69
?THN72: IN? GUN,BAD-SPY \?ELS76
PRINTI "The sound of the gunshot is not loud enough to be carried beyond this room. But the pain is so great that you don't notice the details."
CRLF
CALL1 FINISH
JUMP ?CND67
?ELS76: CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,BAD-SPY
ZERO? STACK \?CND67
SET 'VAL,TRUE-VALUE
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE
PRINTI " peeks into the corridor for a moment."
CALL1 BAD-SPY-GUN-THREAT
CRLF
JUMP ?CND67
?ELS69: MOVE GUN,OTHER-LIMBO-FWD
ZERO? V \?CND67
CALL QUEUE,I-BAD-SPY-W-YOU,0
CALL1 I-BAD-SPY-TO-YOU >VAL
?CND67:
?CND14: ZERO? IDEBUG /?CND88
PRINTN VAL
PRINTC 93
CRLF
RETURN VAL
?CND88: RETURN VAL
.FUNCT BAD-SPY-GUN-THREAT
MOVE GUN,BAD-SPY
PRINTI " Then"
CALL2 HE-SHE-IT,BAD-SPY
PRINTI " displays a gun and motions for you to give"
CALL2 HIM-HER-IT,BAD-SPY
PRINTI " something."
RTRUE
.FUNCT I-BAD-SPY-TO-YOU,GARG=0,L,STA,V,VAL=0
ZERO? IDEBUG \?THN4
EQUAL? GARG,G-DEBUG \?CND1
?THN4: PRINTI "[I-BAD-SPY-TO-YOU:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: CALL2 PAUSE-SCRIPT?,I-BAD-SPY
ZERO? STACK \FALSE
CALL2 VISIBLE?,BAD-SPY >V
LOC BAD-SPY
CALL ZMEMQ,STACK,STATION-ROOMS >STA
ZERO? ON-TRAIN /?ELS16
ZERO? STA /?CND18
CALL2 V-REAR,CAR-HERE
MOVE BAD-SPY,STACK
PUTP BAD-SPY,P?CAR,CAR-HERE
ZERO? V \?THN25
CALL2 VISIBLE?,BAD-SPY
ZERO? STACK \?THN25
GET STATION-ROOMS,CAR-HERE
CALL2 VISIBLE?,STACK
ZERO? STACK /?CND18
?THN25: SET 'VAL,TRUE-VALUE
CALL2 BAD-SPY-LEAVES-BOARDS,STR?340
?CND18: CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,HERE,CAR-HERE
RETURN VAL
?ELS16: ZERO? STA \?CND29
GETP BAD-SPY,P?CAR
GET STATION-ROOMS,STACK >L
MOVE BAD-SPY,L
ZERO? V \?THN35
CALL2 VISIBLE?,BAD-SPY
ZERO? STACK /?CND29
?THN35: SET 'VAL,TRUE-VALUE
CALL2 BAD-SPY-LEAVES-BOARDS,STR?339
?CND29: CALL ESTABLISH-GOAL,BAD-SPY,HERE
RETURN VAL
.FUNCT BAD-SPY-LEAVES-BOARDS,STR
PRINTI "Out of the corner of your eye, you see"
CALL2 HIM-HER-IT,BAD-SPY
PRINTC 32
PRINT STR
PRINTR "ing the train."
.FUNCT HIDDEN?,OBJ,L
LOC OBJ >L
EQUAL? L,BRIEFCASE \?ELS5
FSET? BRIEFCASE,OPENBIT \TRUE
RFALSE
?ELS5: EQUAL? L,UNDER-SEAT-1,OTHER-UNDER-SEAT-1,POCKET /TRUE
EQUAL? L,UNDER-SEAT-2,OTHER-UNDER-SEAT-2 /TRUE
EQUAL? L,UNDER-SEAT-3,OTHER-UNDER-SEAT-3 /TRUE
EQUAL? L,UNDER-SEAT-4,OTHER-UNDER-SEAT-4 /TRUE
EQUAL? L,UNDER-SEAT-5,OTHER-UNDER-SEAT-5 /TRUE
EQUAL? L,UNDER-BOOTH-1,UNDER-BOOTH-2,UNDER-BOOTH-3 /TRUE
RFALSE
.FUNCT PASS-OBJECT?,O=0
ZERO? O \?CND1
SET 'O,PASSOBJECT
?CND1: EQUAL? PRSA,V?GIVE \?ELS8
EQUAL? PRSO,O /TRUE
EQUAL? PRSO,NAPKIN \?ELS15
EQUAL? O,SCARF,TOWEL-WAITER /TRUE
?ELS15: EQUAL? PRSO,FLOWER-2,FLOWER-1 \FALSE
EQUAL? O,FLOWER-GLOBAL /TRUE
?ELS8: EQUAL? PRSA,V?SHOW \FALSE
EQUAL? PRSI,O /TRUE
EQUAL? PRSI,NAPKIN \?ELS30
EQUAL? O,SCARF,TOWEL-WAITER /TRUE
?ELS30: EQUAL? PRSI,FLOWER-2,FLOWER-1 \FALSE
EQUAL? O,FLOWER-GLOBAL /TRUE
RFALSE
.FUNCT CONTACT-F,ARG=0,X,WON=1
EQUAL? ARG,M-WINNER \?ELS5
EQUAL? PRSA,V?$CALL \?ELS10
EQUAL? PRSO,PASSWORD \?ELS15
CALL1 GIVE-PASSWORD
RTRUE
?ELS15: CALL1 GIVE-WRONG-PASS-X
RSTACK
?ELS10: CALL CONTACT-DEFAULT-F,ARG
RSTACK
?ELS5: EQUAL? PRSA,V?SHOW,V?GIVE \?ELS21
CALL1 GUARD-NOTICES
CALL1 GIVE-MCGUFFIN? >X
ZERO? X /?ELS26
CALL HE-SHE-IT,CONTACT,TRUE-VALUE
PRINTI " quickly inspects"
CALL2 PRINTT,X
PRINTI " and then "
EQUAL? CONTACT,GUARD,CLERK,WAITRESS \?CND29
EQUAL? X,MCGUFFIN /?ELS34
PRINTI "says, ""This will not do. We already know what the plan is; you should have obtained the actual "
PRINTD MCGUFFIN
PRINTI " so that we could analyze it and find the source of the leak. I'm afraid I'll have to complete your mission myself."""
CRLF
CALL1 FINISH
JUMP ?CND29
?ELS34: MOVE CONTACT,LIMBO-FWD
PRINTI "says, ""Excellent work! But there's one more part to your mission. You may have noticed the special car at the end of the train. There's an important defector aboard it, and we intend to capture him back. You must ride this train until you observe a flare shot into the sky. Then you must make the train stop so we can capture him. Good luck!"" Then"
CALL2 HE-SHE-IT,CONTACT
PRINTR " vanishes into the crowd."
?CND29: EQUAL? X,FILM \?CND41
CALL ZMEMQ,MCGUFFIN,FILM-TBL
ZERO? STACK \?CND41
PRINTR "looks at you quizzically."
?CND41: PRINTI "pumps your hand with obvious gratitude. "
EQUAL? VARIATION,3,4 /?ELS52
PRINTI """Only a few people will ever know the great value of the service you've just performed. Probably even you don't know the full implications. But be assured that you deserve the thanks of the whole world."""
CRLF
JUMP ?CND50
?ELS52: CALL1 PRODUCE-GIBBERISH
?CND50: FSET? X,LOCKED \?CND57
CRLF
PRINTI "However, events in the next few days show that"
CALL2 PRINTT,X
PRINTI " completely misled those charged with "
EQUAL? VARIATION,3,4 /?ELS64
PRINTI "foiling"
JUMP ?CND62
?ELS64: PRINTI "carrying out"
?CND62: PRINTI " the plot. Apparently"
CALL2 PRINTT,MCGUFFIN
PRINTI " was altered by some clever hand."
CRLF
CRLF
EQUAL? VARIATION,3,4 /?ELS75
SET 'WON,FALSE-VALUE
PRINTI "CONDOLENCES!"
JUMP ?CND73
?ELS75: PRINTI "CONGRATULATIONS!"
?CND73: CRLF
?CND57: ZERO? WON /?CND82
EQUAL? VARIATION,2,4 \?CND82
CALL1 AWARD
?CND82: CALL1 FINISH
RSTACK
?ELS26: CALL1 PASS-OBJECT?
ZERO? STACK /?ELS88
IN? MCGUFFIN,LIMBO-REAR \?CND89
MOVE MCGUFFIN,CONTACT
?CND89: CALL2 START-SENTENCE,CONTACT
ZERO? PASSWORD-GIVEN /?ELS96
CALL1 WHISPER-PLAN
RTRUE
?ELS96: SET 'PASSOBJECT-GIVEN,TRUE-VALUE
CALL2 SAID-TO,CONTACT
FCLEAR CONTACT,NDESCBIT
CALL NEW-LDESC,CONTACT,22
PRINTR " listens to you expectantly."
?ELS88: CALL1 GIVE-WRONG-PASS-X
RSTACK
?ELS21: EQUAL? PRSA,V?TELL-ABOUT,V?ASK-FOR,V?ASK-ABOUT \?ELS105
EQUAL? PRSI,PASSWORD \?ELS110
CALL1 GIVE-PASSWORD
RTRUE
?ELS110: CALL1 GIVE-WRONG-PASS-X
RSTACK
?ELS105: CALL CONTACT-DEFAULT-F,ARG
RSTACK
.FUNCT GIVE-MCGUFFIN?
ZERO? PASSWORD /?ELS5
ZERO? PASSWORD-GIVEN /FALSE
?ELS5: ZERO? PASSOBJECT /?ELS9
ZERO? PASSOBJECT-GIVEN \?ELS9
IN? PASSOBJECT,PLAYER \FALSE
FSET? PASSOBJECT,WORNBIT \FALSE
?ELS9: EQUAL? PRSA,V?GIVE \FALSE
EQUAL? PRSO,MCGUFFIN \?ELS17
RETURN PRSO
?ELS17: EQUAL? PRSO,FILM /?THN20
EQUAL? PRSO,CAMERA \FALSE
IN? FILM,CAMERA \FALSE
?THN20: RETURN FILM
.FUNCT GIVE-WRONG-PASS-X,N
INC 'CONTACT-SUSPICION
CALL NEW-LDESC,CONTACT,1
CALL HE-SHE-IT,CONTACT,TRUE-VALUE
PRINTI " looks "
GRTR? 2,CONTACT-SUSPICION \?ELS7
PRINTI "confused for a moment and says, "
CALL1 PRODUCE-GIBBERISH
RSTACK
?ELS7: GETP HERE,P?CAR >N
EQUAL? N,PLATFORM-MAX \?ELS14
DEC 'N
JUMP ?CND12
?ELS14: INC 'N
?CND12: GET STATION-ROOMS,N
MOVE CONTACT,STACK
FSET CONTACT,NDESCBIT
PRINTR "alarmed and vanishes into the crowd."
.FUNCT GIVE-PASSWORD
SET 'PASSWORD-GIVEN,TRUE-VALUE
IN? MCGUFFIN,LIMBO-REAR \?CND1
MOVE MCGUFFIN,CONTACT
?CND1: CALL1 GUARD-NOTICES
CALL2 START-SENTENCE,CONTACT
ZERO? CONTACT-SUSPICION /?CND4
PRINTI " hesitates for a moment and then"
?CND4: ZERO? PASSOBJECT-GIVEN \?THN14
IN? PASSOBJECT,PLAYER \?ELS13
FSET? PASSOBJECT,WORNBIT \?ELS13
?THN14: CALL1 WHISPER-PLAN
RTRUE
?ELS13: FCLEAR CONTACT,NDESCBIT
CALL NEW-LDESC,CONTACT,23
PRINTR " looks at you expectantly."
.FUNCT WHISPER-PLAN
PRINTI " whispers, "
EQUAL? VARIATION,3,4 \?ELS5
CALL2 PRODUCE-GIBBERISH,2
JUMP ?CND3
?ELS5: EQUAL? SCENERY-OBJ,STATION-GOLA /?ELS7
PRINTI """Here too many people. Meet me in restroom."""
CRLF
JUMP ?CND3
?ELS7: CALL NEW-LDESC,CONTACT,26
PRINTI """I was expecting someone else, but you must be the courier. Please give me the "
PRINTD MCGUFFIN
PRINTR " now."""
?CND3: EQUAL? SCENERY-OBJ,STATION-GOLA /FALSE
FSET? CONTACT,FEMALE \?ELS21
MOVE CONTACT,REST-ROOM-WOMEN
JUMP ?CND19
?ELS21: MOVE CONTACT,REST-ROOM-MEN
?CND19: FCLEAR CONTACT,NDESCBIT
CALL NEW-LDESC,CONTACT,24
PRINTI "Then"
CALL2 HE-SHE-IT,CONTACT
PRINTR " vanishes into the crowd."
.FUNCT WHISPER-PLAN-OTHER,L
CALL QUEUE,I-TRAVELER-FINDS-CONTACT,0
FSET? CONTACT,FEMALE \?ELS3
SET 'L,REST-ROOM-WOMEN
JUMP ?CND1
?ELS3: SET 'L,REST-ROOM-MEN
?CND1: IN? CONTACT,HERE /?THN9
ZERO? DEBUG /?CND6
?THN9: IN? CONTACT,HERE /?CND11
PRINTC 91
?CND11: CALL HE-SHE-IT,CONTACT,TRUE-VALUE
PRINTI " whispers something to"
CALL2 HIM-HER-IT,BAD-SPY
PRINTI " and vanishes into the crowd."
CRLF
?CND6: MOVE CONTACT,L
FCLEAR CONTACT,NDESCBIT
CALL NEW-LDESC,CONTACT,26
GET GOAL-TABLES,BAD-SPY-C
PUT STACK,GOAL-ENABLE,1
CALL ESTABLISH-GOAL,BAD-SPY,L
IN? CONTACT,HERE /?THN21
ZERO? DEBUG /TRUE
?THN21: IN? CONTACT,HERE /?CND23
PRINTC 91
?CND23: CALL HE-SHE-IT,CONTACT,TRUE-VALUE
PRINTR " enters and looks around nervously."
.FUNCT I-AGENT-COMES,GARG=0,PER
ZERO? IDEBUG \?THN4
EQUAL? GARG,G-DEBUG \?CND1
?THN4: PRINTI "[I-AGENT-COMES:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: RANDOM 3 >PER
EQUAL? 1,PER \?ELS13
SET 'PER,GUARD
JUMP ?CND11
?ELS13: EQUAL? 2,PER \?ELS15
SET 'PER,CLERK
JUMP ?CND11
?ELS15: SET 'PER,WAITRESS
?CND11: CALL2 NEW-CONTACT,PER
CALL NEW-LDESC,PER,26
SET 'PASSWORD,FALSE-VALUE
SET 'PASSOBJECT,FALSE-VALUE
CALL HE-SHE-IT,PER,TRUE-VALUE
IN? PER,HERE /?CND20
MOVE PER,HERE
PRINTI " appears and"
?CND20: PRINTI " says, ""I was ordered to contact you here. Please give me the "
PRINTD MCGUFFIN
PRINTR " now."""
.FUNCT GUARD-NOTICES
EQUAL? CONTACT,GUARD /FALSE
CALL2 ON-PLATFORM?,HERE
ZERO? STACK /FALSE
LOC GUARD
CALL2 ON-PLATFORM?,STACK
ZERO? STACK /FALSE
INC 'GUARD-SUSPICION
FCLEAR GUARD,NDESCBIT
CALL2 START-SENTENCE,GUARD
FCLEAR HIM,TOUCHBIT
EQUAL? 1,GUARD-SUSPICION \?ELS14
PRINTR " seems to notice your actions."
?ELS14: GET GESTURE-TABLE,0
EQUAL? GUARD-SUSPICION,STACK \?CND19
CALL ARREST-PLAYER,STR?342,GUARD
PRINTR " throws up her hands and hurries away."
?CND19: CALL NEW-LDESC,GUARD,26
IN? GUARD,HERE /?CND24
MOVE GUARD,HERE
PRINTI " approaches you and"
?CND24: PRINTI " makes a gesture"
EQUAL? 2,GUARD-SUSPICION /?CND31
GET GESTURE-TABLE,GUARD-SUSPICION
PRINT STACK
?CND31: GRTR? 5,GUARD-SUSPICION \?ELS38
PRINTI ", asking for "
JUMP ?CND36
?ELS38: PRINTI ", demanding "
?CND36: CALL2 THIS-IS-IT,PASSPORT
PRINTD PASSPORT
PRINTR "."
.FUNCT TRAVELER-F,ARG=0
CALL BAD-SPY-F,ARG
RSTACK
.FUNCT BAD-SPY-F,ARG=0,GT,X,?TMP1
EQUAL? ARG,M-WINNER \?ELS5
CALL BAD-SPY-DEFAULT-F,ARG
RSTACK
?ELS5: CALL2 PASS-OBJECT?,MCGUFFIN
ZERO? STACK /?ELS7
EQUAL? VARIATION,3,4 /?ELS7
CALL2 SHOW-MCGUFFIN,BAD-SPY
RSTACK
?ELS7: EQUAL? PRSA,V?$CALL \?ELS11
SET 'BAD-SPY-KNOWS-YOU,TRUE-VALUE
GET GOAL-TABLES,BAD-SPY-C >GT
GET GT,GOAL-SCRIPT
EQUAL? I-BAD-SPY-W-CASE,STACK \FALSE
CALL HE-SHE-IT,BAD-SPY,TRUE-VALUE
GET GT,GOAL-CAR
LESS? CAR-HERE,STACK \?ELS23
CALL2 V-REAR,CAR-HERE
MOVE BAD-SPY,STACK
PRINTR " hurries away to the rear."
?ELS23: GET GT,GOAL-CAR
GRTR? CAR-HERE,STACK \?ELS27
CALL2 V-FWD,CAR-HERE
MOVE BAD-SPY,STACK
PRINTR " hurries away to the front."
?ELS27: LOC BAD-SPY >?TMP1
GET GT,GOAL-S >X
EQUAL? ?TMP1,X \?ELS31
PRINTR " ignores you."
?ELS31: MOVE BAD-SPY,X
PRINTR " hurries away."
?ELS11: CALL BAD-SPY-DEFAULT-F,ARG
RSTACK
.FUNCT SHOW-MCGUFFIN,P
CALL HE-SHE-IT,P,TRUE-VALUE
PRINTI " looks at"
CALL2 HIM-HER-IT,MCGUFFIN
PRINTI " and then "
EQUAL? P,BAD-SPY \?ELS5
IN? GUN,BAD-SPY \?ELS5
PRINTI "takes aim at you."
JUMP ?CND3
?ELS5: PRINTI "pulls out a gun with a silencer."
?CND3: PRINTI " Before you can react, pain fills your heart, and it's all over."
CRLF
CALL1 FINISH
RSTACK
.FUNCT PAUSE-SCRIPT?,INT,A=0
ZERO? A \?CND1
SET 'A,BAD-SPY
?CND1: ZERO? SUPPRESS-INTERRUPT /?ELS8
SET 'SUPPRESS-INTERRUPT,FALSE-VALUE
ZERO? IDEBUG /TRUE
PRINTR "[PS:SI]"
?ELS8: FSET? A,PERSONBIT /?ELS16
CALL QUEUE,INT,0
ZERO? IDEBUG /TRUE
PRINTI "[PS:NP "
PRINTD A
PRINTR "]"
?ELS16: FSET? A,MUNGBIT \?ELS24
ZERO? IDEBUG /TRUE
PRINTI "[PS:MU "
PRINTD A
PRINTR "]"
?ELS24: CALL IN-MOTION?,A,TRUE-VALUE
ZERO? STACK /FALSE
ZERO? IDEBUG /TRUE
PRINTI "[PS:IM "
PRINTD A
PRINTR "]"
.FUNCT I-TRAVELER,V=0,STR,OBJ,GT,L,LC,?TMP1
CALL2 PAUSE-SCRIPT?,I-TRAVELER
ZERO? STACK \FALSE
ZERO? IDEBUG \?THN7
EQUAL? V,G-DEBUG \?CND4
?THN7: PRINTI "[I-TRAVELER:"
EQUAL? V,G-DEBUG /FALSE
?CND4: ZERO? V \?CND14
CALL2 VISIBLE?,BAD-SPY >V
?CND14: LOC BAD-SPY >L
GET GOAL-TABLES,BAD-SPY-C >GT
IN? BRIEFCASE,BAD-SPY /?ELS19
CALL2 META-LOC,BAD-SPY
IN? BRIEFCASE,STACK \?ELS22
SET 'STR,STR?343
SET 'OBJ,BRIEFCASE
MOVE BRIEFCASE,BAD-SPY
JUMP ?CND17
?ELS22: CALL2 META-LOC,BRIEFCASE >?TMP1
CALL2 META-LOC,BAD-SPY
EQUAL? ?TMP1,STACK \?ELS24
SET 'STR,STR?344
SET 'OBJ,BRIEFCASE
JUMP ?CND17
?ELS24: PUT GT,GOAL-SCRIPT,I-BAD-SPY-W-YOU
CALL ESTABLISH-GOAL-TRAIN,BAD-SPY,HERE,CAR-HERE
JUMP ?CND17
?ELS19: ZERO? TRAVELER-CHECKED-CASE \?ELS28
LOC CONDUCTOR >LC
GETP L,P?STATION
EQUAL? LC,L,STACK \?ELS31
FSET? BRIEFCASE,OPENBIT \?ELS34
SET 'STR,STR?345
SET 'OBJ,BRIEFCASE
FCLEAR BRIEFCASE,OPENBIT
CALL INSIDE-OBJ-TO,BRIEFCASE-TBL,BRIEFCASE,1
JUMP ?CND17
?ELS34: ZERO? IDEBUG /FALSE
PRINTI "(0)]"
CRLF
RFALSE
?ELS31: FSET? BRIEFCASE-LATCH,SEENBIT /?ELS44
SET 'STR,STR?346
SET 'OBJ,BRIEFCASE-LATCH
FSET BRIEFCASE-LATCH,SEENBIT
JUMP ?CND17
?ELS44: ZERO? LATCH-TURNED \?ELS46
ZERO? DEBUG /?CND47
PRINTI "[1] "
?CND47: SET 'STR,STR?347
SET 'OBJ,BRIEFCASE-LATCH
SET 'LATCH-TURNED,TRUE-VALUE
JUMP ?CND17
?ELS46: FSET? BRIEFCASE-LATCH,OPENBIT /?ELS53
SET 'STR,STR?348
SET 'OBJ,BRIEFCASE-LATCH
FSET BRIEFCASE-LATCH,OPENBIT
JUMP ?CND17
?ELS53: FSET? BRIEFCASE,OPENBIT /?ELS55
SET 'STR,STR?348
SET 'OBJ,BRIEFCASE
FSET BRIEFCASE,OPENBIT
CALL TBL-TO-INSIDE,BRIEFCASE,BRIEFCASE-TBL,1
JUMP ?CND17
?ELS55: FSET? SPY-LIST,SEENBIT /?ELS57
SET 'STR,STR?346
SET 'OBJ,SPY-LIST
FSET SPY-LIST,SEENBIT
JUMP ?CND17
?ELS57: IN? MCGUFFIN,BRIEFCASE /?ELS59
SET 'STR,STR?346
SET 'OBJ,BRIEFCASE
SET 'TRAVELER-CHECKED-CASE,TRUE-VALUE
JUMP ?CND17
?ELS59: ZERO? PICTURE-NUMBER \?ELS61
IN? FILM,CAMERA /?ELS64
IN? CAMERA,BAD-SPY /?ELS67
SET 'STR,STR?343
SET 'OBJ,CAMERA
MOVE CAMERA,BAD-SPY
JUMP ?CND17
?ELS67: FSET? CAMERA,SEENBIT /?ELS69
SET 'STR,STR?346
SET 'OBJ,CAMERA
FSET CAMERA,SEENBIT
JUMP ?CND17
?ELS69: FSET? CAMERA,OPENBIT /?ELS71
ZERO? DEBUG /?CND72
PRINTI "[1] "
?CND72: SET 'STR,STR?348
SET 'OBJ,CAMERA
FSET CAMERA,OPENBIT
JUMP ?CND17
?ELS71: FSET? FILM,SEENBIT /?ELS78
SET 'STR,STR?346
SET 'OBJ,FILM
FSET FILM,SEENBIT
JUMP ?CND17
?ELS78: SET 'STR,STR?349
SET 'OBJ,CAMERA
MOVE FILM,CAMERA
JUMP ?CND17
?ELS64: FSET? CAMERA,OPENBIT \?ELS82
SET 'STR,STR?345
SET 'OBJ,CAMERA
FCLEAR CAMERA,OPENBIT
JUMP ?CND17
?ELS82: SET 'STR,STR?350
SET 'OBJ,CAMERA
INC 'PICTURE-NUMBER
SET 'CAMERA-COCKED,TRUE-VALUE
JUMP ?CND17
?ELS61: CALL ZMEMQ,MCGUFFIN,FILM-TBL
ZERO? STACK \?ELS89
SET 'STR,STR?343
SET 'OBJ,PICTURE-GLOBAL
CALL2 TAKE-PICTURE,MCGUFFIN