-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathglobals.zap
2562 lines (2323 loc) · 64.3 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 NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ,X=0
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3
EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3
PRINTR "[Those things aren't here!]"
?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS9
SET 'TBL,P-PRSO
JUMP ?CND1
?ELS9: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: ZERO? PRSO? /?ELS18
CALL1 PRSO-VERB?
ZERO? STACK \?THN15
?ELS18: ZERO? PRSO? \?ELS20
CALL1 PRSI-VERB?
ZERO? STACK \?THN15
?ELS20: ZERO? PRSO? \?CND12
EQUAL? WINNER,PLAYER /?CND12
EQUAL? PRSA,V?SGIVE \?CND12
EQUAL? PRSO,ME \?CND12
?THN15: SET 'X,TRUE-VALUE
CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
ZERO? OBJ /FALSE
EQUAL? OBJ,NOT-HERE-OBJECT \TRUE
?CND12: ZERO? X /?ELS33
PRINTI "[You'll have to be more specific.]"
CRLF
JUMP ?CND31
?ELS33: EQUAL? PRSA,V?CALL,V?TELL \?ELS38
EQUAL? P-XNAM,W?JILL \?ELS38
CALL1 IN-APARTMENT?
ZERO? STACK /?ELS38
IN? JILL,LOCAL-GLOBALS /?ELS38
EQUAL? SYEAR,2041,2051 \?ELS43
PRINTI """I can't hear you, Perry!"" Jill shouts back. ""Come in here!"""
CRLF
JUMP ?CND31
?ELS43: PRINTI "There's no reply; perhaps Jill didn't hear you from the other room."
CRLF
JUMP ?CND31
?ELS38: EQUAL? WINNER,PLAYER \?ELS51
PRINTI "[You can't "
EQUAL? P-XNAM,W?CONVERSAT,W?ALARM,W?MUSIC \?ELS56
PRINTI "hear"
JUMP ?CND54
?ELS56: PRINTI "see"
?CND54: CALL2 NAME?,P-XNAM
ZERO? STACK \?ELS65
EQUAL? P-XADJ,W?MY /?ELS65
PRINTI " any"
JUMP ?CND63
?ELS65: EQUAL? P-XNAM,W?WIZARD,W?OZ \?CND63
PRINTI " any"
?CND63: CALL2 NOT-HERE-PRINT,PRSO?
PRINTI " here!]"
CRLF
JUMP ?CND31
?ELS51: EQUAL? MODE,INTERFACE-MODE \?ELS80
PRINTI "Emitting signals of confusion,"
JUMP ?CND78
?ELS80: PRINTI "Looking confused,"
?CND78: CALL ARTICLE,WINNER,TRUE-VALUE
EQUAL? MODE,INTERFACE-MODE \?ELS89
PRINTI " reports, ""This unit is unaware of"
JUMP ?CND87
?ELS89: PRINTI " says, ""I don't see"
?CND87: CALL2 NAME?,P-XNAM
ZERO? STACK \?CND96
PRINTI " any"
?CND96: CALL2 NOT-HERE-PRINT,PRSO?
PRINTI " here!"""
CRLF
?CND31: CALL1 CLEAR-BUF
RTRUE
.FUNCT PRSO-VERB?
EQUAL? PRSA,V?FIND,V?FOLLOW,V?BUY /TRUE
EQUAL? PRSA,V?WHAT,V?WHERE,V?WHO /TRUE
EQUAL? PRSA,V?BUY-WITH,V?WALK-TO,V?WAIT-FOR /TRUE
EQUAL? PRSA,V?CALL,V?PAY-FOR /TRUE
RFALSE
.FUNCT PRSI-VERB?
EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR,V?TELL-ABOUT /TRUE
RFALSE
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ
CALL2 MOBY-FIND,TBL >M-F
EQUAL? 1,M-F \?ELS5
ZERO? PRSO? /?ELS8
SET 'PRSO,P-MOBY-FOUND
SET 'P-IT-OBJECT,PRSO
RFALSE
?ELS8: SET 'PRSI,P-MOBY-FOUND
RFALSE
?ELS5: LESS? 1,M-F \?ELS13
GET TBL,1 >OBJ
GETP OBJ,P?GENERIC
CALL STACK >OBJ
ZERO? OBJ /?ELS13
EQUAL? OBJ,NOT-HERE-OBJECT /TRUE
ZERO? PRSO? /?ELS20
SET 'PRSO,OBJ
SET 'P-IT-OBJECT,PRSO
RFALSE
?ELS20: SET 'PRSI,OBJ
RFALSE
?ELS13: RETURN NOT-HERE-OBJECT
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
ZERO? P-OFLAG \?THN6
ZERO? P-MERGED /?ELS5
?THN6: ZERO? P-XADJ /?CND8
EQUAL? P-XADJ,W?MY \?ELS14
PRINTI " your"
JUMP ?CND8
?ELS14: PRINTI " "
PRINTB P-XADJ
?CND8: ZERO? P-XNAM /FALSE
PRINTI " "
PRINTB P-XNAM
RTRUE
?ELS5: ZERO? PRSO? /?ELS30
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?ELS30: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT GROUND-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-ON,V?CLIMB-UP /?THN6
EQUAL? PRSA,V?SIT,V?LIE-DOWN,V?BOARD \?ELS5
?THN6: CALL1 V-YELL
RSTACK
?ELS5: EQUAL? PRSA,V?LOOK-UNDER \?ELS9
CALL1 V-COUNT
RSTACK
?ELS9: EQUAL? PRSA,V?LEAVE \FALSE
CALL2 DO-WALK,P?UP
RSTACK
.FUNCT WALLS-F
EQUAL? HERE,ROCKVIL-REFORMATORY \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Huge monolithic walls, topped with guardposts and barbed wire, separate this entrance area from the prison proper."
.FUNCT CEILING-F
EQUAL? PRSA,V?LOOK-UNDER \FALSE
CALL2 PERFORM,V?LOOK
RTRUE
.FUNCT HALLWAY-F
EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5
EQUAL? HERE,EPILOGUE-LIVING-ROOM \?ELS10
CALL2 DO-WALK,P?NORTH
RSTACK
?ELS10: EQUAL? HERE,HOSPITAL-ANNEX,EPILOGUE-BATHROOM \?ELS12
CALL2 DO-WALK,P?NE
RSTACK
?ELS12: EQUAL? HERE,CINEMA \?ELS14
CALL2 DO-WALK,P?IN
RSTACK
?ELS14: EQUAL? HERE,LIVING-ROOM \?ELS16
CALL2 DO-WALK,P?SOUTH
RSTACK
?ELS16: EQUAL? HERE,HOSPITAL \?ELS18
CALL2 DO-WALK,P?SW
RSTACK
?ELS18: EQUAL? HERE,DEN \?ELS20
CALL2 DO-WALK,P?WEST
RSTACK
?ELS20: EQUAL? HERE,GUEST-ROOM \?ELS22
CALL2 DO-WALK,P?EAST
RSTACK
?ELS22: CALL GLOBAL-IN?,HALLWAY,HERE
ZERO? STACK /FALSE
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS28
EQUAL? HERE,PARKVIEW-HALL,FOYER \?ELS33
CALL1 V-WALK-AROUND
RSTACK
?ELS33: PRINT LOOK-AROUND
CRLF
RTRUE
?ELS28: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
EQUAL? HERE,PARKVIEW-HALL,FOYER \?ELS44
CALL1 V-LOOK
RSTACK
?ELS44: EQUAL? HERE,CINEMA \FALSE
PRINTR "The hall to the theatres is dark."
.FUNCT BUILDING-F
EQUAL? PRSA,V?DISEMBARK,V?WALK-TO,V?THROUGH /?THN6
EQUAL? PRSA,V?LEAVE \?ELS5
?THN6: CALL1 V-WALK-AROUND
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? SYEAR,2081 /?THN15
EQUAL? HERE,BURNED-OUT-AREA \?ELS14
?THN15: PRINTR "The buildings are all gutted."
?ELS14: EQUAL? HERE,CHURCH-ENTRANCE,MIDLAND-AND-CHURCH,CONSTRUCTION-SITE-5 \FALSE
EQUAL? SYEAR,2071 \FALSE
PRINTI "Nothing is left of the building "
EQUAL? HERE,CHURCH-ENTRANCE \?ELS27
PRINTI "to the northwest "
JUMP ?CND25
?ELS27: EQUAL? HERE,MIDLAND-AND-CHURCH \?CND25
PRINTI "to the southwest "
?CND25: PRINTR "excepts ruins."
.FUNCT STAIRS-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
CALL2 DO-WALK,P?UP
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-DOWN \?ELS7
CALL2 DO-WALK,P?DOWN
RSTACK
?ELS7: EQUAL? PRSA,V?SMELL \?ELS9
EQUAL? HERE,WICKER-AND-RIVER \?ELS9
EQUAL? SYEAR,2071 /?ELS9
PRINTR "There's an odor of urine from the Tube entrance."
?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? SYEAR,2091 \FALSE
PRINTI "The curving stairway leads "
EQUAL? HERE,MASTER-BEDROOM \?ELS24
PRINTR "down to the living room."
?ELS24: PRINTR "up to the master bedroom."
.FUNCT UNOPENABLE-DOOR-F
EQUAL? PRSA,V?UNLOCK,V?OPEN \?ELS5
EQUAL? PRSI,KEY \?ELS5
PRINTR "Your key doesn't fit the lock."
?ELS5: EQUAL? PRSA,V?OPEN \?ELS11
PRINTR "The door is locked."
?ELS11: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? SYEAR,2071 \FALSE
EQUAL? HERE,UNIVERSITY-HEIGHTS,PARKVIEW-APARTMENTS,CHURCH-STREET-APARTMENTS \FALSE
PRINTR "The cracked glass is held together by boards."
.FUNCT SLEEP-F
EQUAL? PRSA,V?WALK-TO,V?TAKE \FALSE
CALL1 V-SLEEP
RSTACK
.FUNCT SMOKE-F
EQUAL? PRSA,V?WALK-TO \?ELS5
EQUAL? HERE,MAIN-AND-WICKER \?ELS5
EQUAL? SYEAR,2081 \?ELS5
CALL2 DO-WALK,P?SOUTH
RSTACK
?ELS5: EQUAL? SYEAR,2071 \?ELS9
EQUAL? HERE,MAIN-AND-WICKER,POWER-STATION,BURGER-MEISTER \?ELS9
CALL1 MOBY-VERB?
ZERO? STACK \?ELS9
CALL2 CANT-SEE,SMOKE
RSTACK
?ELS9: EQUAL? PRSA,V?SMELL \?ELS13
EQUAL? HERE,MAIN-AND-WICKER \?ELS18
PRINTR "You get a brief whiff of burning wood."
?ELS18: EQUAL? HERE,POWER-STATION \?ELS22
PRINTR "The smoke carries the pungent smell of high-sulfur coal."
?ELS22: PRINTR "The tobacco smoke has a strong, bitter odor."
?ELS13: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,POWER-STATION \?ELS35
PRINTR "The smoke billows upward in a thick, black pillar."
?ELS35: EQUAL? HERE,MAIN-AND-WICKER \FALSE
PRINTR "The smoke rises from unseen fires south of here."
.FUNCT PLAY-F
EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?EXAMINE \FALSE
EQUAL? HERE,WELLS-THEATRE,PICKFORD-THEATRE \FALSE
PRINT NO-TICKET
CRLF
RTRUE
.FUNCT SKY-F
FSET? HERE,OUTSIDEBIT /?ELS5
CALL1 MOBY-VERB?
ZERO? STACK \?ELS5
CALL2 CANT-SEE,SKY
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
ZERO? SIMULATING /FALSE
PRINTI "The sky is "
ZERO? LIGHT-LEVEL \?ELS16
PRINTI "dark"
JUMP ?CND14
?ELS16: EQUAL? LIGHT-LEVEL,1,2 \?ELS20
PRINTI "getting "
LESS? STIME,720 \?ELS25
PRINTI "lighter"
JUMP ?CND14
?ELS25: PRINTI "darker"
JUMP ?CND14
?ELS20: EQUAL? SYEAR,2061,2071 \?ELS33
CALL2 SCORE,118
PRINTI "gray and smoggy"
JUMP ?CND14
?ELS33: PRINTI "light"
?CND14: PRINTR "."
.FUNCT NIGHT-F
EQUAL? PRSA,V?WAIT-FOR \?ELS5
CALL PERFORM,V?WAIT-FOR,DUSK
RTRUE
?ELS5: ZERO? SIMULATING /?ELS7
ZERO? LIGHT-LEVEL /?ELS7
CALL1 MOBY-VERB?
ZERO? STACK \?ELS7
CALL2 CANT-SEE,NIGHT
RSTACK
?ELS7: EQUAL? HERE,ROOFTOP /FALSE
CALL1 MOBY-VERB?
ZERO? STACK \FALSE
CALL2 CANT-SEE,NIGHT
RSTACK
.FUNCT DAY-F
EQUAL? PRSA,V?WAIT-FOR \?ELS5
CALL PERFORM,V?WAIT-FOR,DAWN
RTRUE
?ELS5: ZERO? SIMULATING /FALSE
ZERO? LIGHT-LEVEL \FALSE
CALL1 MOBY-VERB?
ZERO? STACK \FALSE
CALL2 CANT-SEE,DAY
RSTACK
.FUNCT HANDS-F,ACTOR
ZERO? SIMULATING \?ELS5
PRINTR "You have no hands."
?ELS5: EQUAL? PRSA,V?WAVE \?ELS9
SET 'PRSO,FALSE-VALUE
CALL2 PERFORM,V?WAVE-AT
RTRUE
?ELS9: EQUAL? PRSA,V?SHAKE \?ELS11
CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?ELS16
CALL PERFORM,V?THANK,ACTOR
RTRUE
?ELS16: PRINTR "Pleased to meet you."
?ELS11: EQUAL? PRSA,V?WASH \FALSE
CALL GLOBAL-IN?,SINK,HERE
ZERO? STACK /?ELS27
PRINTR "Your hands are now cleaner."
?ELS27: PRINTR "There's no sink here!"
.FUNCT HEAD-F
ZERO? SIMULATING \FALSE
PRINTR "You don't have a head, in the human sense."
.FUNCT PLAYER-F
ZERO? SIMULATING \FALSE
EQUAL? PRSA,V?GIVE \?ELS8
EQUAL? PRSO,RECORD-BUFFER /FALSE
?ELS8: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-DOWN,V?BOARD /?THN13
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-OVER,V?CLIMB-ON /?THN13
EQUAL? PRSA,V?ENTER,V?DISEMBARK,V?CROSS /?THN13
EQUAL? PRSA,V?LEAP,V?HIDE,V?FOLLOW /?THN13
EQUAL? PRSA,V?SIT,V?LIE-DOWN,V?LEAVE /?THN13
EQUAL? PRSA,V?STAND-ON,V?STAND,V?SKIP /?THN13
EQUAL? PRSA,V?WALK-AROUND \?ELS12
?THN13: PRINTR "A difficult task for an immobile computer."
?ELS12: EQUAL? PRSA,V?DIG,V?CUT,V?CLOSE /?THN19
EQUAL? PRSA,V?KILL,V?GIVE,V?DROP /?THN19
EQUAL? PRSA,V?MUNG,V?MOVE,V?KNOCK /?THN19
EQUAL? PRSA,V?PUSH,V?POINT,V?OPEN /?THN19
EQUAL? PRSA,V?PUT-ON,V?PUT-BEHIND,V?PUT /?THN19
EQUAL? PRSA,V?SHAKE,V?TOUCH,V?PUT-UNDER /?THN19
EQUAL? PRSA,V?TAKE,V?ROB,V?THROW /?THN19
EQUAL? PRSA,V?UNTIE,V?TURN,V?TIE /?THN19
EQUAL? PRSA,V?SEARCH,V?WAVE-AT,V?WAVE /?THN19
EQUAL? PRSA,V?DANCE,V?KICK \?ELS18
?THN19: PRINTR "That would be a neat trick without appendages."
?ELS18: EQUAL? PRSA,V?SMILE,V?KISS,V?BITE \?ELS24
PRINTR "Your speakers are not equipped with mouths."
?ELS24: EQUAL? PRSA,V?DRINK,V?EAT \?ELS28
PRINTR "You can't and don't need to."
?ELS28: EQUAL? PRSA,V?SMELL \FALSE
PRINTR "You're not equipped with olfactory senses."
.FUNCT YOURSELF-F
PRINTR "[It's not clear whom you're referring to.]"
.FUNCT ME-F,OLIT
EQUAL? PRSA,V?TELL \?ELS5
PRINTI "Talking to yourself is a sign of impending mental collapse."
CRLF
CALL1 CLEAR-BUF
RSTACK
?ELS5: EQUAL? PRSA,V?LISTEN \?ELS9
PRINTR "Yes?"
?ELS9: EQUAL? PRSA,V?ALARM \?ELS13
EQUAL? MODE,SLEEP-MODE \?ELS18
PRINTR "You are (although you haven't left Sleep Mode yet)."
?ELS18: PRINT YOU-ARE
CRLF
RTRUE
?ELS13: EQUAL? PRSA,V?GIVE \?ELS26
EQUAL? PRSI,ME \?ELS26
CALL PERFORM,V?TAKE,PRSO
RTRUE
?ELS26: EQUAL? PRSA,V?MOVE \?ELS30
CALL1 V-WALK-AROUND
RSTACK
?ELS30: EQUAL? PRSA,V?SEARCH \?ELS32
CALL1 V-INVENTORY
RTRUE
?ELS32: EQUAL? PRSA,V?MUNG,V?KILL \?ELS34
PRINTR "Dumb."
?ELS34: EQUAL? PRSA,V?WHERE,V?FIND \?ELS38
PRINTI "You're "
FSET? HERE,STREETBIT \?ELS43
PRINTI "at"
JUMP ?CND41
?ELS43: EQUAL? HERE,MAIN-STREET-BRIDGE,RIVER-STREET-BRIDGE,PIER \?ELS47
PRINTI "on"
JUMP ?CND41
?ELS47: PRINTI "in"
?CND41: EQUAL? HERE,INTERFACE-ROOM,SIMULATION-ROOM /?THN57
EQUAL? HERE,LIBRARY-ROOM,SLEEP-ROOM,COMM-ROOM \?ELS56
?THN57: CALL ARTICLE,MODE,TRUE-VALUE
JUMP ?CND54
?ELS56: CALL ARTICLE,HERE,TRUE-VALUE
?CND54: PRINTR "."
?ELS38: EQUAL? PRSA,V?WHO \?ELS64
ZERO? SIMULATING /?ELS69
PRINTR "Perry Simm."
?ELS69: PRINTR "PRISM."
?ELS64: EQUAL? PRSA,V?FOLLOW \?ELS78
PRINTR "It's difficult not to follow yourself."
?ELS78: EQUAL? PRSA,V?EXAMINE \?ELS82
ZERO? SIMULATING \?ELS87
PRINTR "How can you look at yourself? You're spread out through many rooms in several buildings, most of which don't have communication outlets!"
?ELS87: EQUAL? SYEAR,2081 \?ELS91
PRINTR "Through your torn clothes you can see malnutrition sores on your thin, bony arms."
?ELS91: EQUAL? SYEAR,2071 \?ELS95
PRINTR "Your clothes are frayed, and your skin is beginning to show the wrinkles of your sixty years."
?ELS95: PRINTI "You look much as you always have: a normal, middle-aged male"
EQUAL? SYEAR,2061 \?CND102
PRINTI ", perhaps a little older and a little grayer"
?CND102: PRINTI ". Your clothes are "
EQUAL? SYEAR,2061 \?ELS113
PRINTR "a bit old and ratty."
?ELS113: PRINTR "simple but adequate."
?ELS82: EQUAL? PRSA,V?WASH \?ELS121
PRINTR "You're not dirty."
?ELS121: EQUAL? PRSA,V?CALL \FALSE
CALL1 V-COUNT
RSTACK
.FUNCT MY-NAME-F
EQUAL? PRSA,V?WHAT \FALSE
CALL PERFORM,V?WHO,ME
RTRUE
.FUNCT CONVERSATION-F
EQUAL? HERE,DORM \?ELS5
ZERO? DORM-RAID-FLAG \?ELS5
PRINTI "[You can't hear any "
PRINTD CONVERSATION
PRINTR " here!]"
?ELS5: EQUAL? PRSA,V?LISTEN \FALSE
EQUAL? HERE,CONTROL-CENTER \?ELS18
PRINTI "Even at maximum sensitivity, your aural receptors can't quite make out the words of the "
PRINTD CONVERSATION
PRINTR "."
?ELS18: PRINTR "You can't make out any words."
.FUNCT MUSIC-F
EQUAL? SYEAR,2061 \?ELS5
EQUAL? HERE,DORM \?ELS5
PRINTR "[You can't hear any music here!]"
?ELS5: EQUAL? PRSA,V?LISTEN \FALSE
EQUAL? HERE,BAR \?ELS16
CALL PERFORM,V?LISTEN,JUKEBOX
RTRUE
?ELS16: PRINTR "The music is loud but muffled."
.FUNCT DOORWAY-F
EQUAL? PRSA,V?THROUGH \?ELS5
CALL1 V-WALK-AROUND
RSTACK
?ELS5: EQUAL? PRSA,V?OPEN \?ELS7
PRINTR "It is."
?ELS7: EQUAL? PRSA,V?CLOSE \?ELS11
PRINTR "That door doesn't close."
?ELS11: EQUAL? PRSA,V?SMELL \?ELS15
EQUAL? HERE,WICKER-AND-RIVER \?ELS15
EQUAL? SYEAR,2071 /?ELS15
CALL PERFORM,V?SMELL,STAIRS
RTRUE
?ELS15: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "You can't tell what's on the other side from here."
.FUNCT GLOBAL-ROOM-F
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?LOOK \?ELS5
CALL1 V-LOOK
RTRUE
?ELS5: EQUAL? PRSA,V?WALK-TO,V?THROUGH \?ELS7
CALL1 V-WALK-AROUND
RSTACK
?ELS7: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS9
CALL2 DO-WALK,P?OUT
RSTACK
?ELS9: EQUAL? PRSA,V?WALK-AROUND \?ELS11
PRINTR "Walking around the room reveals nothing new. To move elsewhere, just type the desired direction."
?ELS11: EQUAL? PRSA,V?WASH \FALSE
CALL1 IN-APARTMENT?
ZERO? STACK /?ELS20
ZERO? APARTMENT-RAID-FLAG /?ELS25
PRINTR "You begin cleaning up the mess."
?ELS25: EQUAL? JILL-COUNTER,9 \FALSE
IN? JILL,HERE \FALSE
PRINT MY-WEEK
CRLF
RTRUE
?ELS20: EQUAL? HERE,FOODVILLE-1,FOODVILLE-2 \FALSE
EQUAL? SYEAR,2071,2081 \FALSE
PRINTR "A hopeless job."
.FUNCT ALLEY-OBJECT-F
EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5
EQUAL? HERE,ALLEY \?ELS10
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS10: EQUAL? HERE,FACTORY-ENTRANCE \?ELS14
CALL2 DO-WALK,P?EAST
RSTACK
?ELS14: EQUAL? HERE,BAR \?ELS16
CALL2 DO-WALK,P?WEST
RSTACK
?ELS16: CALL1 V-WALK-AROUND
RSTACK
?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS20
EQUAL? HERE,ALLEY \?ELS25
CALL1 V-WALK-AROUND
RSTACK
?ELS25: PRINT LOOK-AROUND
CRLF
RTRUE
?ELS20: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,ALLEY \FALSE
CALL1 V-LOOK
RSTACK
.FUNCT STREET-F
FSET? HERE,STREETBIT /?ELS5
EQUAL? HERE,ROOFTOP /?ELS5
CALL1 MOBY-VERB?
ZERO? STACK \?ELS5
CALL2 CANT-SEE,STREET
RSTACK
?ELS5: EQUAL? PRSA,V?CROSS \?ELS9
PRINTR "That's not useful; anything you could do or see there, you can do or see here."
?ELS9: EQUAL? PRSA,V?FOLLOW \FALSE
CALL1 V-WALK-AROUND
RSTACK
.FUNCT PEOPLE-F
IN? SABOTEURS,HERE \?ELS5
CALL CHANGE-OBJECT,PEOPLE,SABOTEURS
RSTACK
?ELS5: EQUAL? HERE,ATHLETIC-FIELD \?ELS7
EQUAL? SYEAR,2061,2071 \?ELS7
CALL CHANGE-OBJECT,PEOPLE,CHILDREN
RSTACK
?ELS7: ZERO? LIGHT-LEVEL \?ELS11
FSET? HERE,STREETBIT \?ELS11
CALL1 MOBY-VERB?
ZERO? STACK \?ELS11
CALL2 CANT-SEE,PEOPLE
RSTACK
?ELS11: ZERO? SIMULATING /?ELS15
EQUAL? SYEAR,2081 \?ELS15
CALL2 CANT-SEE,PEOPLE
RSTACK
?ELS15: EQUAL? HERE,CORE \?ELS19
IN? SABOTEURS,HERE /?ELS19
CALL1 MOBY-VERB?
ZERO? STACK \?ELS19
CALL2 CANT-SEE,PEOPLE
RSTACK
?ELS19: EQUAL? PRSA,V?TELL \?ELS23
PRINTI "You can't speak to crowds of people, just individuals."
CRLF
CALL1 CLEAR-BUF
RSTACK
?ELS23: EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?ELS27
EQUAL? PRSO,PEOPLE \?ELS27
CALL PERFORM,V?TELL,PEOPLE
RTRUE
?ELS27: EQUAL? PRSA,V?FOLLOW \?ELS31
CALL1 V-WALK-AROUND
RSTACK
?ELS31: EQUAL? PRSA,V?WAIT-FOR \?ELS33
EQUAL? HERE,CORE,ROOFTOP \?ELS33
EQUAL? PART-FLAG,3 \?ELS33
CALL2 V-WAIT,120
RSTACK
?ELS33: EQUAL? PRSA,V?LISTEN,V?EXAMINE \?ELS37
EQUAL? HERE,ROCKVIL-STADIUM \?ELS37
EQUAL? SYEAR,2071 \?ELS37
LESS? STIME,1201 \?ELS37
GRTR? STIME,481 \?ELS37
PRINTR "The mob is frenzied and bloodthirsty."
?ELS37: EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,BAR \FALSE
CALL1 PEOPLE-IN-BAR-DESC
CRLF
RTRUE
.FUNCT PEOPLE-IN-BAR-DESC
PRINTI "The bar is filled with "
EQUAL? SYEAR,2071 \?ELS5
PRINTI "tough-looking serfs and black marketeers"
JUMP ?CND3
?ELS5: PRINTI "all sorts of sleazy lowlifes"
?CND3: PRINTI "."
RTRUE
.FUNCT PARENTS-F
INTBL? W?MOTHER,P-NAMW,2 /?THN8
INTBL? W?MOM,P-NAMW,2 \?ELS5
?THN8: CALL2 VISIBLE?,JILL
ZERO? STACK /?ELS5
CALL CHANGE-OBJECT,PARENTS,JILL
RSTACK
?ELS5: INTBL? W?FATHER,P-NAMW,2 /?THN14
INTBL? W?DAD,P-NAMW,2 \?ELS11
?THN14: CALL1 IN-APARTMENT?
ZERO? STACK /?ELS11
EQUAL? SYEAR,2041,2051 \?ELS11
CALL CHANGE-OBJECT,PARENTS,ME
RSTACK
?ELS11: CALL1 MOBY-VERB?
ZERO? STACK \FALSE
CALL2 CANT-SEE,PARENTS
RSTACK
.FUNCT MINDEX-F
EQUAL? SYEAR,2061,2071 \?ELS5
CALL1 MOBY-VERB?
ZERO? STACK \?ELS5
CALL2 CANT-SEE,MINDEX
RSTACK
?ELS5: EQUAL? PRSA,V?TOUCH,V?MOVE,V?PUSH \?ELS9
PRINTR "Why do you think they call it ""dope?"""
?ELS9: EQUAL? PRSA,V?SMELL \?ELS13
ZERO? DORM-RAID-FLAG /?ELS18
PRINTR "The odor has dissipated."
?ELS18: PRINTR "It smells typically sweet and prickly."
?ELS13: EQUAL? PRSA,V?BUY \FALSE
CALL2 CANT-BUY,MINDEX
RSTACK
.FUNCT GENERIC-APARTMENT-F
RETURN APARTMENT-OBJECT
.FUNCT GENERIC-MITCHELL-F
EQUAL? P-NAM,W?RAV \?ELS5
RETURN RAV
?ELS5: ZERO? SIMULATING /?ELS7
EQUAL? SYEAR,2041 \?ELS7
RETURN BABY
?ELS7: RETURN MITCHELL
.FUNCT GENERIC-BOOK-F
CALL2 VISIBLE?,BOOK
ZERO? STACK /?ELS5
CALL2 VISIBLE?,JILL-BOOK
ZERO? STACK \FALSE
?ELS5: CALL2 VISIBLE?,BOOK
ZERO? STACK /?ELS9
FSET? BOOK,TRYTAKEBIT /?ELS9
EQUAL? P-NAM,W?BOOK \?ELS9
RETURN BOOK
?ELS9: RETURN BOOKS
.FUNCT GENERIC-TUBECAR-F
CALL2 VISIBLE?,RED-TUBECAR-OBJECT
ZERO? STACK /?ELS5
CALL2 VISIBLE?,BROWN-TUBECAR-OBJECT
ZERO? STACK \FALSE
?ELS5: EQUAL? HERE,TUBE-AT-UNIVERSITY,TUBE-AT-BODANSKI,TUBE-AT-AIRPORT \?ELS9
RETURN BROWN-TUBECAR-OBJECT
?ELS9: RETURN RED-TUBECAR-OBJECT
.FUNCT GENERIC-SODA-F
RETURN SODA
.FUNCT GENERIC-FOOD-F
EQUAL? PRSA,V?BUY \?ELS5
EQUAL? P-NAM,W?FOOD \?ELS5
RETURN MEAL
?ELS5: CALL2 VISIBLE?,TURKEY-SANDWICH
ZERO? STACK \FALSE
CALL2 VISIBLE?,HAM-SANDWICH
ZERO? STACK \FALSE
CALL2 VISIBLE?,GRANOLA-CLUSTER
ZERO? STACK \FALSE
CALL2 VISIBLE?,APPLE
ZERO? STACK \FALSE
CALL2 VISIBLE?,GROCERIES
ZERO? STACK \FALSE
CALL2 VISIBLE?,SOY-PATTY
ZERO? STACK \FALSE
CALL2 VISIBLE?,SALAD
ZERO? STACK \FALSE
RETURN MEAL
.FUNCT GENERIC-PERELMAN-F
RETURN PERELMAN
.FUNCT GENERIC-NEWSPAPER-F
RETURN NEWSPAPER
.FUNCT GENERIC-BED-F
RETURN BED
.FUNCT GENERIC-GUARD-F
INTBL? W?BSF,P-ADJW,2 \?ELS5
RETURN BSF-BASE
?ELS5: ZERO? SIMULATING \?ELS7
ZERO? SEIGE /?ELS7
RETURN NATIONAL-GUARDSMAN
?ELS7: EQUAL? HERE,MAIN-AND-WICKER \?ELS11
EQUAL? PRSA,V?FOLLOW \?ELS11
EQUAL? SYEAR,2051 \?ELS11
RETURN SPEAR-CARRIER
?ELS11: PUTP SPEAR-CARRIER,P?SDESC,STR?292
RETURN SPEAR-CARRIER
.FUNCT GENERIC-ROOM-F
EQUAL? HERE,DINING-ROOM \?ELS5
RETURN DINING-ROOM-OBJECT
?ELS5: EQUAL? HERE,LIVING-ROOM,EPILOGUE-LIVING-ROOM \?ELS7
RETURN LIVING-ROOM-OBJECT
?ELS7: EQUAL? HERE,BEDROOM,MASTER-BEDROOM \?ELS9
RETURN BEDROOM-OBJECT
?ELS9: EQUAL? HERE,BATHROOM,EPILOGUE-BATHROOM \?ELS11
RETURN BATHROOM-OBJECT
?ELS11: EQUAL? HERE,SOLARIUM \?ELS13
RETURN SOLARIUM-OBJECT
?ELS13: RETURN GLOBAL-ROOM
.FUNCT GENERIC-KITCHEN-F
RETURN KITCHEN-OBJECT
.FUNCT GENERIC-OFFICIAL-F
EQUAL? HERE,FIRST-METHODIST-CHURCH,ST-MICHAELS \?ELS5
RETURN CHURCH-OFFICIAL
?ELS5: RETURN GOVERNMENT-OFFICIAL
.FUNCT ROCKVIL-OBJECT-F
EQUAL? PRSA,V?WALK-TO,V?THROUGH \?ELS5
ZERO? SIMULATING /?ELS10
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS10: PRINTI "Try entering "
PRINTD SIMULATION-MODE
PRINTR "."
?ELS5: ZERO? SIMULATING \?ELS21
EQUAL? HERE,ROOFTOP /?ELS21
CALL1 MOBY-VERB?
ZERO? STACK \?ELS21
CALL2 CANT-SEE,ROCKVIL-OBJECT
RSTACK
?ELS21: EQUAL? HERE,ROOFTOP \?ELS25
EQUAL? PRSA,V?EXAMINE \?ELS25
PRINTI "All you can see of the city is a g"
GRTR? TIME,1155 /?THN33
LESS? TIME,430 \?ELS32
?THN33: PRINTI "low"
JUMP ?CND30
?ELS32: PRINTI "ray haze"
?CND30: PRINTR " on the horizon."
?ELS25: EQUAL? HERE,SKYCAB \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The city is spread below you like a map."
.FUNCT CANT-BUY,OBJ
PRINTI "You can't buy"
CALL2 ARTICLE,OBJ
PRINTR " here!"
.FUNCT TOO-POOR,AMOUNT,ITEM
LESS? CREDIT,AMOUNT \FALSE
PRINTI ", but are embarrassed when"
CALL2 ARTICLE,SPEAR-CARRIER
PRINTI " returns with your card and"
EQUAL? SYEAR,2041 \?ELS12
PRINTI " politely"
JUMP ?CND10
?ELS12: EQUAL? SYEAR,2051 \?ELS16
PRINTI ", with a slight smirk,"
JUMP ?CND10
?ELS16: EQUAL? SYEAR,2061 \?ELS20
PRINTI " rudely"
JUMP ?CND10
?ELS20: EQUAL? SYEAR,2071 \?CND10
PRINTI " almost abusively"
?CND10: PRINTI " informs you that you don't have enough funds in your account to cover the $"
PRINTN AMOUNT
PRINTI " cost of"
CALL ARTICLE,ITEM,TRUE-VALUE
PRINTR "."
.FUNCT DEBIT,AMOUNT
SUB CREDIT,AMOUNT >CREDIT
PRINTI ". After a moment,"
CALL ARTICLE,SPEAR-CARRIER,TRUE-VALUE
PRINTI " returns your card, informing you that your account has been debited for $"
PRINTN AMOUNT
PRINTI " and that your new balance is $"
PRINTN CREDIT
RTRUE
.FUNCT VENDING,VENDOR,ITEM,AMOUNT
PRINTI "You insert your card into the "
PRINTD VENDOR
PRINTI ". A readout flashes """
LESS? CREDIT,AMOUNT \?ELS9
PRINTR "INSUFFICIENT FUNDS"" and your card spits back into your hand."
?ELS9: FCLEAR ITEM,TRYTAKEBIT
FCLEAR ITEM,NDESCBIT
MOVE ITEM,PLAYER
SUB CREDIT,AMOUNT >CREDIT
PRINTI "NEW BALANCE: $"
PRINTN CREDIT
PRINTI """ and a "
PRINTD ITEM
PRINTR " pops out into your hands."
.FUNCT CLOSING-TIME,TIME,LOC-STRING,ACTOR-STRING,NEW-LOC
GRTR? STIME,TIME \FALSE
CRLF
PRINTI "An announcement heralds the closing of "
PRINT LOC-STRING
PRINTI " for the evening, and "
PRINT ACTOR-STRING
PRINTI " shows you to the exit."
CRLF
CRLF
EQUAL? HERE,JOYBOOTH \?CND8
MOVE HEADSET,HERE
FSET HEADSET,NDESCBIT
FCLEAR HEADSET,WORNBIT
?CND8: CALL2 GOTO,NEW-LOC
RTRUE
.FUNCT CURFEW-CLOSE,NEW-LOC
GRTR? STIME,1200 \FALSE
EQUAL? SYEAR,2041 /FALSE
CRLF
PRINTI "Someone calls out something about ""getting late"" and ""we gotta close up."" You follow everyone out."
CRLF
CRLF
MOVE BEER,LOCAL-GLOBALS
CALL2 GOTO,NEW-LOC
RTRUE
.FUNCT RESTAURANT-CLOSES,NEW-LOC
EQUAL? SYEAR,2041 /FALSE
GRTR? STIME,1200 \FALSE
CRLF
PRINTI "The waiter approaches. ""I'm sorry, but notice the hour."" He "
IN? CREDIT-CARD,SPEAR-CARRIER \?CND10
MOVE CREDIT-CARD,PLAYER
PRINTI "returns your credit card and "
?CND10: PRINTI "leads you out."
CRLF
CRLF
CALL2 GOTO,NEW-LOC
RTRUE
.FUNCT SHOP-CLOSES,TIME,LOC-STRING,ACTOR-STRING,NEW-LOC
GRTR? STIME,TIME \FALSE
CRLF
PRINT ACTOR-STRING
PRINTI " informs you that the "
PRINT LOC-STRING
PRINTI " is closing and ushers you to the door."
CRLF
CRLF
CALL2 GOTO,NEW-LOC
RTRUE
.FUNCT CLOSED-PRINT,LOC
GRTR? STIME,300 \?ELS5
LESS? STIME,840 \?ELS5
PRINT LOC
PRINTR " isn't open yet."
?ELS5: PRINT LOC
PRINTR " seems to be closed for the night."
.FUNCT SUBURBS-ENTER-F
EQUAL? HERE,SOUTHWAY-UNDERPASS \?ELS3
EQUAL? SYEAR,2071 \?ELS3
PRINTI "The collapsed highway blocks the road."
CRLF
RFALSE
?ELS3: SOUND 1
PRINTI "WARNING: You have reached the boundary of this simulation."
CRLF
RFALSE
.FUNCT OFFICE-BUILDING-ENTER-F
GRTR? STIME,1120 /?THN4
LESS? STIME,475 \?ELS3
?THN4: CALL2 CLOSED-PRINT,STR?293
RFALSE
?ELS3: EQUAL? SYEAR,2071 \?ELS7
SET 'BRUISED,TRUE-VALUE
CALL2 SCORE,98
PRINTI "As soon as you enter, two thugs in security uniforms beat you up and drag you out to the gutter. They laugh with mindless glee before returning to the building."
CRLF
RFALSE
?ELS7: PUTP SPEAR-CARRIER,P?SDESC,STR?292
SET 'FOLLOW-FLAG,9
CALL QUEUE,I-UNFOLLOW,2
PRINTI "As you enter, a security guard, seeing that you have no badge, "
EQUAL? SYEAR,2041 \?ELS16
PRINTI "politely leads "
JUMP ?CND14
?ELS16: EQUAL? SYEAR,2061 \?ELS20
CALL2 SCORE,97
PRINTI "roughly pushes "
JUMP ?CND14
?ELS20: PRINTI "escorts "
?CND14: PRINTI "you back out to the street and then returns to the building."
CRLF
RFALSE