-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathprism.zap
More file actions
3443 lines (3188 loc) · 119 KB
/
prism.zap
File metadata and controls
3443 lines (3188 loc) · 119 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 PERELMAN-LEAVES-VIEW
CALL2 VISIBLE?,PERELMAN
ZERO? STACK /FALSE
CRLF
PRINTI "A "
PRINTD CC-STAFFER
PRINTR " dashes in and hands Perelman a note before leaving. Glancing at the note, Perelman walks to a point beyond your field of vision. A moment later, you hear a click, as of a switch being turned."
.FUNCT PERELMAN-RETURNS-TO-VIEW
CALL2 VISIBLE?,PERELMAN
ZERO? STACK /TRUE
CRLF
PRINTR "A moment later, Perelman walks back into your field of vision."
.FUNCT I-MESSAGE-C,OLD-WINNER
MOVE MESSAGE-C,PRISM-MESSAGES-DIRECTORY
CALL2 NAME-MESSAGE,MESSAGE-C
PUT SIM-LEVEL-TABLE,0,0
CALL QUEUE,I-MESSAGE-M,875
CALL1 PERELMAN-LEAVES-VIEW
SET 'OLD-WINNER,WINNER
SET 'WINNER,PLAYER
CRLF
PRINT MESSAGE-LINE
CALL PERFORM,V?READ,MESSAGE-C
SET 'WINNER,OLD-WINNER
CALL1 UPDATE-LIBRARY-BOX
CALL1 PERELMAN-RETURNS-TO-VIEW
RSTACK
.FUNCT I-MESSAGE-D,OLD-WINNER
ZERO? SIMULATING \FALSE
IN? MESSAGE-D,PRISM-MESSAGES-DIRECTORY \?ELS6
SET 'REVIEWING-RECORDINGS,TRUE-VALUE
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
PRINT PRIVATE-LINE
PRINTI "We're getting ready to review your new recordings. I hope everything's there this time."""
CRLF
CALL1 PERELMAN-RETURNS-TO-VIEW
JUMP ?CND1
?ELS6: SET 'REVIEWING-RECORDINGS,TRUE-VALUE
MOVE MESSAGE-D,PRISM-MESSAGES-DIRECTORY
CALL2 NAME-MESSAGE,MESSAGE-D
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
SET 'OLD-WINNER,WINNER
SET 'WINNER,PLAYER
CALL PERFORM,V?READ,MESSAGE-D
SET 'WINNER,OLD-WINNER
CALL1 UPDATE-LIBRARY-BOX
CALL1 PERELMAN-RETURNS-TO-VIEW
?CND1: GETP RECORD-BUFFER,P?SIZE
ADD STACK,10
CALL QUEUE,I-MESSAGE-E,STACK
RTRUE
.FUNCT I-MESSAGE-E
IN? MESSAGE-E,PRISM-MESSAGES-DIRECTORY \?ELS3
INC 'MESSAGE-E-COUNTER
EQUAL? MESSAGE-E-COUNTER,4 \?ELS6
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
PRINT PRIVATE-LINE
PRINTI "Why have you been ignoring my requests"
CALL1 DISCONNECTED
JUMP ?CND1
?ELS6: EQUAL? MESSAGE-E-COUNTER,1 \?ELS10
EQUAL? PART-FLAG,1 \?ELS10
CALL QUEUE,I-FIRST-SIMULATION-RESULT,7
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
PRINT PRIVATE-LINE
PRINT COME-TO-MY-OFFICE
CRLF
CALL1 PERELMAN-RETURNS-TO-VIEW
JUMP ?CND1
?ELS10: CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
PRINT PRIVATE-LINE
PRINTI "Please activate the comm outlet in my office! "
CALL2 QUEUED?,I-RORSCHACH
ZERO? STACK /?ELS21
PRINTI "Dr. Grimwold has some psych tests!"""
CRLF
JUMP ?CND19
?ELS21: PRINTI "I want to discuss the results of the simulation with you!"""
CRLF
?CND19: CALL1 PERELMAN-RETURNS-TO-VIEW
JUMP ?CND1
?ELS3: MOVE MESSAGE-E,PRISM-MESSAGES-DIRECTORY
CALL2 NAME-MESSAGE,MESSAGE-E
CALL QUEUE,I-FIRST-SIMULATION-RESULT,7
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
GETP MESSAGE-E,P?TEXT
PRINT STACK
CRLF
CALL1 UPDATE-LIBRARY-BOX
CALL1 PERELMAN-RETURNS-TO-VIEW
?CND1: CALL QUEUE,I-MESSAGE-E,14
RSTACK
.FUNCT I-MESSAGE-M
GETP MESSAGE-M,P?CAPACITY
ZERO? STACK \?ELS5
PUTP MESSAGE-M,P?CAPACITY,1
CALL2 NAME-MESSAGE,MESSAGE-M
MOVE MESSAGE-M,PRISM-MESSAGES-DIRECTORY
CALL QUEUE,I-MESSAGE-M,177
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
GETP MESSAGE-M,P?TEXT
PRINT STACK
CRLF
CALL1 UPDATE-LIBRARY-BOX
CALL1 PERELMAN-RETURNS-TO-VIEW
RSTACK
?ELS5: GETP MESSAGE-M,P?CAPACITY
EQUAL? STACK,1 \?ELS9
PUTP MESSAGE-M,P?CAPACITY,2
CALL QUEUE,I-MESSAGE-M,131
CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
PRINT PRIVATE-LINE
PRINTI "PRISM, what's the matter? You haven't started the simulation yet! For heaven's sake, don't you know the whole country's impatient? Vera is hopping mad -- if you don't begin soon, I can't tell what's going to happen!"""
CRLF
CALL1 PERELMAN-RETURNS-TO-VIEW
RSTACK
?ELS9: CALL1 PERELMAN-LEAVES-VIEW
CRLF
PRINT MESSAGE-LINE
PRINT PRIVATE-LINE
PRINTI """What's the matter with you? Why didn't you enter "
PRINTD SIMULATION-MODE
CALL1 DISCONNECTED
RSTACK
.FUNCT I-MESSAGE-Q
LESS? TIME,540 /?THN4
GRTR? TIME,1260 \?CND1
?THN4: CALL QUEUE,I-MESSAGE-Q,30
RFALSE
?CND1: MOVE MESSAGE-Q,PRISM-MESSAGES-DIRECTORY
CALL1 PERELMAN-LEAVES-VIEW
CALL2 NAME-MESSAGE,MESSAGE-Q
CRLF
PRINT MESSAGE-LINE
GETP MESSAGE-Q,P?TEXT
PRINT STACK
CRLF
CALL1 PERELMAN-RETURNS-TO-VIEW
CALL1 UPDATE-LIBRARY-BOX
RSTACK
.FUNCT I-MESSAGE-Z,OLD-WINNER
IN? MESSAGE-Z,PRISM-MESSAGES-DIRECTORY \?ELS5
MOVE WNN-FEEDER,INTERFACE-ROOM
MOVE WNN-INSTRUCTIONS,PRISM-INTERFACES-DIRECTORY
MOVE TRANSMITTER,INTERFACE-ROOM
MOVE NEWS-BUFFER,GLOBAL-OBJECTS
MOVE REPORT-BUFFER,GLOBAL-OBJECTS
RFALSE
?ELS5: CALL QUEUE,I-MESSAGE-Z,274
MOVE MESSAGE-Z,PRISM-MESSAGES-DIRECTORY
CALL2 NAME-MESSAGE,MESSAGE-Z
CRLF
PRINT MESSAGE-LINE
SET 'OLD-WINNER,WINNER
SET 'WINNER,PLAYER
CALL PERFORM,V?READ,MESSAGE-Z
SET 'WINNER,OLD-WINNER
CALL1 UPDATE-LIBRARY-BOX
RSTACK
.FUNCT I-MESSAGE-Y,OLD-WINNER
MOVE MESSAGE-Y,PRISM-MESSAGES-DIRECTORY
CALL2 NAME-MESSAGE,MESSAGE-Y
MOVE AUDITING-SYSTEM,INTERFACE-ROOM
MOVE AUDITING-INSTRUCTIONS,PRISM-INTERFACES-DIRECTORY
CRLF
PRINT MESSAGE-LINE
SET 'OLD-WINNER,WINNER
SET 'WINNER,PLAYER
CALL PERFORM,V?READ,MESSAGE-Y
SET 'WINNER,OLD-WINNER
CALL1 UPDATE-LIBRARY-BOX
RSTACK
.FUNCT NAME-MESSAGE,OBJ
GETP OBJ,P?MDESC
PUT STACK,0,MONTH
GETP OBJ,P?MDESC
PUT STACK,1,DATE
GETP OBJ,P?MDESC
PUT STACK,2,YEAR
GETP OBJ,P?MDESC
PUT STACK,3,TIME
INC 'NUMBER-OF-MESSAGES
PUTP OBJ,P?SIZE,NUMBER-OF-MESSAGES
RTRUE
.FUNCT UPDATE-LIBRARY-BOX
EQUAL? CURRENT-DIRECTORY,PRISM-MESSAGES-DIRECTORY \TRUE
ZERO? CURRENT-FILE /TRUE
CALL1 LIBRARY-BOX
RTRUE
.FUNCT SIMULATION-CHECK
ZERO? SIMULATING /FALSE
CALL ERR,STR?344,TRUE-VALUE
PRINTD SIMULATION-MODE
PRINTR "."
.FUNCT PSYCH-CHECK
GRTR? GRIMWOLD-COUNTER,0 \FALSE
PRINTR "It would be impolite to leave during the psych test."
.FUNCT RECORD-BUFFER-F
EQUAL? PRSA,V?ON \?ELS5
SET 'PRSO,FALSE-VALUE
CALL1 V-RECORD-ON
RSTACK
?ELS5: EQUAL? PRSA,V?OFF \FALSE
CALL1 V-ROFF
RSTACK
.FUNCT SCORE,NUM,VAL
ZERO? RECORDING /TRUE
GET SCORE-TABLE,NUM >VAL
PUT SCORE-TABLE,NUM,0
EQUAL? SYEAR,2051 \?ELS8
ADD 2051-SCORE,VAL >2051-SCORE
RETURN 2051-SCORE
?ELS8: EQUAL? SYEAR,2061 \?ELS10
ADD 2061-SCORE,VAL >2061-SCORE
RETURN 2061-SCORE
?ELS10: EQUAL? SYEAR,2071 \?ELS12
ADD 2071-SCORE,VAL >2071-SCORE
RETURN 2071-SCORE
?ELS12: EQUAL? SYEAR,2081 \FALSE
ADD 2081-SCORE,VAL >2081-SCORE
RETURN 2081-SCORE
.FUNCT LIBRARY-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You have entered Library Mode. Current directory is "
CALL2 DPRINT,CURRENT-DIRECTORY
PRINTR ". Consult menu for data retrieval."
.FUNCT LIBRARY-MODE-F
EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
EQUAL? MODE,LIBRARY-MODE \?ELS8
CALL ERR,STR?345,TRUE-VALUE
PRINTD LIBRARY-MODE
PRINTI "."
CRLF
RETURN 2
?ELS8: EQUAL? PART-FLAG,4 \?ELS14
PRINT NOT-ACTIVE
CRLF
RETURN 2
?ELS14: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS20
RETURN 2
?ELS20: CALL1 SIMULATION-CHECK
ZERO? STACK /?CND6
RETURN 2
?CND6: SET 'MODE,LIBRARY-MODE
CALL1 TURN-RECORD-OFF
CALL2 GOTO,LIBRARY-ROOM
CALL2 INIT-STATUS-LINE,10
FIRST? LIBRARY >CURRENT-DIRECTORY /?KLU27
?KLU27: CALL1 LIBRARY-BOX
CALL2 LIBRARY-ROOM-F,M-LOOK
CALL1 STATUS-LINE
CALL1 LIBRARY-ACTION
RSTACK
.FUNCT LIBRARY-BOX,CNT=4,DIR,?TMP1
SCREEN S-WINDOW
BUFOUT FALSE-VALUE
?PRG1: CALL2 INVERSE-LINE,CNT
INC 'CNT
EQUAL? CNT,11 \?PRG1
HLIGHT 1
SET 'CNT,0
ZERO? CURRENT-FILE /?ELS8
FIRST? CURRENT-DIRECTORY >DIR /?KLU63
?KLU63: JUMP ?CND6
?ELS8: FIRST? LIBRARY >DIR /?KLU64
?KLU64:
?CND6: EQUAL? CURRENT-DIRECTORY,PRISM-MESSAGES-DIRECTORY \?ELS14
ZERO? CURRENT-FILE /?ELS14
?PRG17: GET LINE-TABLE,CNT >?TMP1
GET COLUMN-TABLE,CNT
CURSET ?TMP1,STACK
?PRG19: GETP DIR,P?SIZE
EQUAL? CNT,STACK \?ELS23
CALL2 DPRINT,DIR
JUMP ?REP20
?ELS23: NEXT? DIR >DIR /?KLU65
?KLU65: JUMP ?PRG19
?REP20: EQUAL? CNT,HIGHLIGHT-CNT \?CND28
SET 'CURRENT-FILE,DIR
?CND28: INC 'CNT
FIRST? PRISM-MESSAGES-DIRECTORY >DIR /?KLU66
?KLU66: GRTR? CNT,NUMBER-OF-MESSAGES \?PRG17
JUMP ?CND12
?ELS14:
?PRG36: GET LINE-TABLE,CNT >?TMP1
GET COLUMN-TABLE,CNT
CURSET ?TMP1,STACK
CALL2 DPRINT,DIR
NEXT? DIR \?REP37
NEXT? DIR >DIR /?KLU67
?KLU67: INC 'CNT
JUMP ?PRG36
?REP37:
?CND12: GET LINE-TABLE,HIGHLIGHT-CNT >?TMP1
GET COLUMN-TABLE,HIGHLIGHT-CNT
SUB STACK,1
CURSET ?TMP1,STACK
PRINTI ">"
CURSET 9,2
ZERO? CURRENT-FILE /?ELS49
PRINTI "C=Close current directory, R=Read current file"
CURSET 10,2
PRINTI "N=Next file, P=Previous file"
JUMP ?CND47
?ELS49: PRINTI "O=Open current directory"
CURSET 10,2
PRINTI "N=Next directory, P=Previous directory"
?CND47: PRINTI ", E=Exit to "
PRINTD COMM-MODE
SCREEN S-TEXT
HLIGHT 0
BUFOUT TRUE-VALUE
RTRUE
.FUNCT ERASE-CURSOR,?TMP1
SCREEN S-WINDOW
BUFOUT FALSE-VALUE
HLIGHT 1
GET LINE-TABLE,HIGHLIGHT-CNT >?TMP1
GET COLUMN-TABLE,HIGHLIGHT-CNT
SUB STACK,1
CURSET ?TMP1,STACK
PRINTI " "
RTRUE
.FUNCT NEW-CURSOR,?TMP1
GET LINE-TABLE,HIGHLIGHT-CNT >?TMP1
GET COLUMN-TABLE,HIGHLIGHT-CNT
SUB STACK,1
CURSET ?TMP1,STACK
PRINTI ">"
BUFOUT TRUE-VALUE
SCREEN S-TEXT
HLIGHT 0
RTRUE
.FUNCT LIBRARY-ACTION,X
?PRG1: INPUT 1 >X
EQUAL? X,69,101 /?THN6
EQUAL? X,197,229 \?ELS5
?THN6: SET 'HIGHLIGHT-CNT,0
SET 'CURRENT-DIRECTORY,FALSE-VALUE
SET 'CURRENT-FILE,FALSE-VALUE
CALL2 INIT-STATUS-LINE,2
CALL PERFORM,V?THROUGH,COMM-MODE
RTRUE
?ELS5: EQUAL? X,67,99 /?THN12
EQUAL? X,195,227 \?ELS9
?THN12: ZERO? CURRENT-FILE /?ELS9
SET 'CURRENT-FILE,FALSE-VALUE
SET 'HIGHLIGHT-CNT,DIRECTORY-CNT
CALL1 LIBRARY-BOX
CALL2 DPRINT,CURRENT-DIRECTORY
PRINTI " is now closed."
CRLF
JUMP ?CND3
?ELS9: EQUAL? X,78,110 /?THN18
EQUAL? X,206,238 \?ELS17
?THN18: CALL1 NEXT-ITEM
JUMP ?CND3
?ELS17: EQUAL? X,80,112 /?THN22
EQUAL? X,208,240 \?ELS21
?THN22: CALL1 PREVIOUS-ITEM
JUMP ?CND3
?ELS21: EQUAL? X,79,111 /?THN28
EQUAL? X,207,239 \?ELS25
?THN28: ZERO? CURRENT-FILE \?ELS25
SET 'DIRECTORY-CNT,HIGHLIGHT-CNT
SET 'HIGHLIGHT-CNT,0
FIRST? CURRENT-DIRECTORY >CURRENT-FILE /?KLU42
?KLU42: CALL1 LIBRARY-BOX
CALL2 DPRINT,CURRENT-DIRECTORY
PRINTI " opened. Current file is "
CALL2 DPRINT,CURRENT-FILE
PRINTI "."
CRLF
JUMP ?CND3
?ELS25: EQUAL? X,82,114 /?THN36
EQUAL? X,210,242 \?ELS33
?THN36: ZERO? CURRENT-FILE /?ELS33
CRLF
CALL PERFORM,V?READ,CURRENT-FILE
PRINTI "-END OF FILE-"
CRLF
CRLF
JUMP ?CND3
?ELS33: CALL2 ERR,STR?346
?CND3: CALL2 INCREMENT-TIME,1
CALL1 CLOCKER
CALL1 STATUS-LINE
JUMP ?PRG1
.FUNCT NEXT-ITEM,NEW-MESSAGE
CALL1 ERASE-CURSOR
ZERO? CURRENT-FILE /?ELS3
EQUAL? CURRENT-DIRECTORY,PRISM-MESSAGES-DIRECTORY \?ELS7
GETP CURRENT-FILE,P?SIZE
EQUAL? STACK,NUMBER-OF-MESSAGES \?ELS10
SET 'HIGHLIGHT-CNT,0
JUMP ?CND8
?ELS10: INC 'HIGHLIGHT-CNT
?CND8: FIRST? PRISM-MESSAGES-DIRECTORY >NEW-MESSAGE /?KLU31
?KLU31:
?PRG13: GETP NEW-MESSAGE,P?SIZE
EQUAL? STACK,HIGHLIGHT-CNT \?ELS17
JUMP ?REP14
?ELS17: NEXT? NEW-MESSAGE >NEW-MESSAGE /?KLU32
?KLU32: JUMP ?PRG13
?REP14: SET 'CURRENT-FILE,NEW-MESSAGE
JUMP ?CND1
?ELS7: NEXT? CURRENT-FILE \?ELS21
NEXT? CURRENT-FILE >CURRENT-FILE /?KLU33
?KLU33: INC 'HIGHLIGHT-CNT
JUMP ?CND1
?ELS21: FIRST? CURRENT-DIRECTORY >CURRENT-FILE /?KLU34
?KLU34: SET 'HIGHLIGHT-CNT,0
JUMP ?CND1
?ELS3: NEXT? CURRENT-DIRECTORY \?ELS28
NEXT? CURRENT-DIRECTORY >CURRENT-DIRECTORY /?KLU35
?KLU35: INC 'HIGHLIGHT-CNT
JUMP ?CND1
?ELS28: FIRST? LIBRARY >CURRENT-DIRECTORY /?KLU36
?KLU36: SET 'HIGHLIGHT-CNT,0
?CND1: CALL1 NEW-CURSOR
CALL1 TELL-CURRENT
RSTACK
.FUNCT PREVIOUS-ITEM,ITEM,CNT
CALL1 ERASE-CURSOR
ZERO? CURRENT-FILE /?ELS3
SET 'ITEM,CURRENT-FILE
JUMP ?CND1
?ELS3: SET 'ITEM,CURRENT-DIRECTORY
?CND1: EQUAL? CURRENT-DIRECTORY,PRISM-MESSAGES-DIRECTORY \?ELS9
ZERO? CURRENT-FILE /?ELS9
GETP CURRENT-FILE,P?SIZE
ZERO? STACK \?ELS14
SET 'HIGHLIGHT-CNT,NUMBER-OF-MESSAGES
JUMP ?CND12
?ELS14: DEC 'HIGHLIGHT-CNT
?CND12: FIRST? PRISM-MESSAGES-DIRECTORY >ITEM /?KLU46
?KLU46:
?PRG17: GETP ITEM,P?SIZE
EQUAL? STACK,HIGHLIGHT-CNT \?ELS21
JUMP ?CND7
?ELS21: NEXT? ITEM >ITEM /?KLU47
?KLU47: JUMP ?PRG17
?ELS9: ZERO? HIGHLIGHT-CNT \?ELS25
?PRG26: INC 'HIGHLIGHT-CNT
NEXT? ITEM >ITEM /?KLU48
?KLU48: NEXT? ITEM /?PRG26
JUMP ?CND7
?ELS25: LOC ITEM
FIRST? STACK >ITEM /?KLU49
?KLU49: DEC 'HIGHLIGHT-CNT
?PRG33: EQUAL? CNT,HIGHLIGHT-CNT \?ELS37
JUMP ?CND7
?ELS37: NEXT? ITEM >ITEM /?KLU50
?KLU50: INC 'CNT
JUMP ?PRG33
?CND7: ZERO? CURRENT-FILE /?ELS42
SET 'CURRENT-FILE,ITEM
JUMP ?CND40
?ELS42: SET 'CURRENT-DIRECTORY,ITEM
?CND40: CALL1 NEW-CURSOR
CALL1 TELL-CURRENT
RSTACK
.FUNCT TELL-CURRENT
ZERO? CURRENT-FILE /?ELS5
PRINTI "Current file is now "
CALL2 DPRINT,CURRENT-FILE
PRINTR "."
?ELS5: PRINTI "Current directory is now "
CALL2 DPRINT,CURRENT-DIRECTORY
PRINTR "."
.FUNCT MESSAGE-C-F,CNT=1
EQUAL? PRSA,V?READ \FALSE
PRINTI """Perelman to PRISM. The programming team has finished entering the parameters for the Plan. This is it: you can enter "
PRINTD SIMULATION-MODE
PRINTI " at any time. The Social Science group has come up with a list of things to record:"
CRLF
?PRG10: PRINTI " "
GET RECORDING-TABLE,CNT
PRINT STACK
CRLF
ADD CNT,2 >CNT
GRTR? CNT,17 \?PRG10
PRINTI "By the way, since the "
PRINTD SIMULATION-CONTROLLER
PRINTR " will be doing so much data-crunching on the fly, it appears the simulation will run in real time -- a minute there will approximately equal a minute here. Well, good luck!"""
.FUNCT MESSAGE-D-F
EQUAL? PRSA,V?READ \FALSE
PRINTI """Perelman here. We see that you're out of "
PRINTD SIMULATION-MODE
PRINTI ". "
ZERO? SHORT-FIRST-SIMULATION \?THN13
GET SIM-LEVEL-TABLE,0
LESS? STACK,150 \?CND10
?THN13: SET 'SHORT-FIRST-SIMULATION,TRUE-VALUE
PRINTI "We didn't expect you to be done this soon! "
?CND10: PRINTR "We're about to start reviewing your recordings now. I'll let you know what the experts think. Talk to you soon."""
.FUNCT MESSAGE-Z-F
EQUAL? PRSA,V?READ \FALSE
CALL2 WARREN-SHARE,STR?355
RSTACK
.FUNCT MESSAGE-Y-F
EQUAL? PRSA,V?READ \FALSE
CALL2 WARREN-SHARE,STR?356
RSTACK
.FUNCT WARREN-SHARE,STRING
PRINTI """Message to PRISM from Emily Warren, Manager of Auxiliary System Functions. "
PRINT STRING
PRINTR ". This notification is purely procedural and requires no acknowledgment."""
.FUNCT SLEEP-MODE-F
EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
EQUAL? MODE,SLEEP-MODE \?ELS10
CALL2 ERR,STR?373
RETURN 2
?ELS10: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS14
RETURN 2
?ELS14: CALL1 SIMULATION-CHECK
ZERO? STACK /?ELS18
RETURN 2
?ELS18: CALL1 SIM-SLEEP
RSTACK
.FUNCT SIM-SLEEP,CNT=360
EQUAL? PART-FLAG,4 \?ELS3
PRINT NOT-ACTIVE
CRLF
RETURN 2
?ELS3: LESS? DATE,NEXT-SLEEP-DATE /?THN10
EQUAL? NEXT-SLEEP-DATE,DATE \?CND1
LESS? TIME,NEXT-SLEEP-TIME \?CND1
?THN10: PRINTI "It's too soon since your last sleep."
CRLF
RETURN 2
?CND1: CALL1 TURN-RECORD-OFF
SET 'MODE,SLEEP-MODE
CALL2 GOTO,SLEEP-ROOM
PRINTI "You enter Sleep Mode, slipping pleasantly into unconsciousness..."
CRLF
CALL1 STATUS-LINE
CALL2 INT,I-PERELMAN
PUT STACK,0,0
?PRG20: DEC 'CNT
EQUAL? CNT,240 \?ELS24
PRINTI "...you dream of your childhood..."
CRLF
JUMP ?CND22
?ELS24: EQUAL? CNT,120 \?ELS28
PRINTI "...and later, of Jill..."
CRLF
JUMP ?CND22
?ELS28: EQUAL? CNT,300,180,60 \?CND22
CRLF
?CND22: CALL1 CLOCKER
ZERO? STACK /?ELS35
JUMP ?REP21
?ELS35: ZERO? CNT \?PRG20
?REP21: SUB 360,CNT
CALL2 INCREMENT-TIME,STACK
CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE
CALL QUEUE,I-PERELMAN,-1
ZERO? CNT \?CND38
PRINTI "Some time later, you awake feeling relaxed and notice that about six hours have passed."
CRLF
?CND38: SET 'CLOCK-WAIT,TRUE-VALUE
GRTR? CNT,300 \?ELS45
SET 'NEXT-SLEEP-TIME,TIME
JUMP ?CND43
?ELS45: SUB 360,CNT
ADD TIME,STACK >NEXT-SLEEP-TIME
?CND43: GRTR? NEXT-SLEEP-TIME,1439 \?ELS52
SUB NEXT-SLEEP-TIME,1440 >NEXT-SLEEP-TIME
ADD DATE,1 >NEXT-SLEEP-DATE
RETURN NEXT-SLEEP-DATE
?ELS52: SET 'NEXT-SLEEP-DATE,DATE
RETURN NEXT-SLEEP-DATE
.FUNCT OUTLETS-F
EQUAL? PRSA,V?WHAT,V?READ,V?DISPLAY \FALSE
EQUAL? PART-FLAG,4 \?ELS10
PRINTR "There are currently no active outlets."
?ELS10: PRINTI " "
PRINTD CONTROL-CENTER
PRINTI " (PPCC)
"
PRINTD ROOFTOP
PRINTI " (RCRO)
"
PRINTD OFFICE
PRINTI " (PEOF)
"
PRINTD CAFETERIA
PRINTI " (PCAF)
"
PRINTD CORE
PRINTI " (MACO)
"
PRINTD NEWS
PRINTR " (WNNF)
To activate a specific outlet, submit the associated code."
.FUNCT COMM-MODE-F
EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
EQUAL? MODE,COMM-MODE \?ELS8
CALL ERR,STR?345,TRUE-VALUE
PRINTD COMM-MODE
PRINTI "."
CRLF
RETURN 2
?ELS8: CALL1 SIMULATION-CHECK
ZERO? STACK /?CND6
RETURN 2
?CND6: SET 'MODE,COMM-MODE
CALL2 GOTO,COMM-ROOM
CALL1 V-LOOK
RSTACK
.FUNCT CONTROL-CENTER-OBJECT-F
EQUAL? PRSA,V?EXAMINE \FALSE
CALL1 V-LOOK
RSTACK
.FUNCT CONTROL-CENTER-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
MOVE CHAIR,HERE
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
RANDOM 100
LESS? 8,STACK /?ELS10
PRINTI "Someone is standing in front of your visual receptor. "
JUMP ?CND8
?ELS10: PRINTI "You see a large, well-organized room filled with banks of terminals and similar equipment. "
?CND8: ZERO? SEIGE /?ELS21
PRINTI "A pair of National Guardsmen, bearing rifles, flank the doorway."
RTRUE
?ELS21: PRINTI "Your aural receptors pick up the buzz of many "
PRINTD CONVERSATION
PRINTI "s."
RTRUE
.FUNCT CC-STAFFER-F
EQUAL? CC-STAFFER,WINNER \FALSE
PRINTI """Uh, I don't, uh, you ought to ask Abe, uh, Dr. Perelman."""
CRLF
CALL1 CLEAR-BUF
RSTACK
.FUNCT CC-PRINTOUT-F
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
CALL PERFORM,V?READ,STACKS-OF-PAPERS
RTRUE
.FUNCT COMPUTER-TERMINAL-F
EQUAL? PRSA,V?READ \FALSE
CALL PERFORM,V?READ,STACKS-OF-PAPERS
RTRUE
.FUNCT ROOFTOP-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
LESS? TIME,1073 \?ELS8
GRTR? TIME,378 \?ELS8
PRINTI "The rooftop visual offers a view of the "
PRINTD COUNTRYSIDE
PRINTI " around the PRISM complex. The perimeter fence is visible near the horizon. A wide road leads north toward a distant gray haze, presumably Rockvil."
JUMP ?CND6
?ELS8: GRTR? TIME,1103 /?THN17
LESS? TIME,348 \?ELS16
?THN17: PRINTI "It is a dark, cloud"
EQUAL? DATE,17,19 \?ELS23
PRINTI "less"
JUMP ?CND21
?ELS23: PRINTI "y"
?CND21: PRINTI " night. The roof is splotchily lit by harsh spotlights. Beyond the edge of the roof, the only thing you can see is Rockvil, glowing with visible and infrared light on the northern horizon."
JUMP ?CND6
?ELS16: LESS? TIME,720 \?ELS33
PRINTI "The "
PRINTD PROTRUSIONS
PRINTI " of the rooftop cast long shadows in the gray light of dawn. A glistening layer of dew covers every surface."
JUMP ?CND6
?ELS33: PRINTI "A splash of red on the western end of a darkening sky heralds the coming of night. You watch the sunset with sadness, for it reminds you of so many things you can never do again...walking along a beach, lying in tall grass, holding a woman."
?CND6: CRLF
PRINTI "There is no one in sight."
RTRUE
?ELS5: EQUAL? RARG,M-END \FALSE
CALL1 RUSH-HOUR
ZERO? STACK /FALSE
RANDOM 100
LESS? 5,STACK /FALSE
PRINTI "A skybus glides by, carrying commuters "
GRTR? TIME,700 \?ELS52
PRINTI "away from"
JUMP ?CND50
?ELS52: PRINTI "into"
?CND50: PRINTR " Rockvil."
.FUNCT RUSH-HOUR
GRTR? TIME,420 \?ELS5
LESS? TIME,540 /TRUE
?ELS5: GRTR? TIME,960 \FALSE
LESS? TIME,1080 \FALSE
RTRUE
.FUNCT PROTRUSIONS-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The "
PRINTD PROTRUSIONS
PRINTR " on the roof are just pipes, vents, antennae, and so forth."
.FUNCT OFFICE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
MOVE BOOKS,HERE
MOVE CHAIR,HERE
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is the office of your creator, Dr. Abraham Perelman. It is cluttered and disorganized. Overstuffed bookshelves line the room. "
PRINT DESK-DESC
IN? COFFEE,HERE \?CND10
PRINTI ". Steam from a "
PRINTD COFFEE
PRINTI " is fogging the lens of your visual unit"
?CND10: PRINTI "."
RTRUE
.FUNCT OFFICE-OBJECT-F
EQUAL? PRSA,V?EXAMINE \FALSE
CALL1 V-LOOK
RSTACK
.FUNCT PERELMAN-DESK-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINT DESK-DESC
PRINTR "."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
CALL PERFORM,V?OPEN,PERELMAN-DESK
RTRUE
.FUNCT ITEM-IN-PACKAGE-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTI "[This is the "
PRINTD PRSO
PRINTI " that you'll find in your "
CALL1 TITLE-PRINT
PRINTR " package.]"
.FUNCT STACKS-OF-PAPERS-F
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
PRINTR "You can't do that from this angle."
.FUNCT COFFEE-F
EQUAL? PRSA,V?BUY \FALSE
CALL1 IN-RESTAURANT?
ZERO? STACK /?ELS10
PRINTR "Coffee with a meal is a custom that went out of style decades ago!"
?ELS10: CALL2 CANT-BUY,COFFEE
RSTACK
.FUNCT I-FIRST-SIMULATION-RESULT,CNT=0,NUM=0
ZERO? COMPLETED-TASKS /?CND1
PRINTI "Bug #3K"
CRLF
RFALSE
?CND1: PUTP RECORD-BUFFER,P?SIZE,0
SET 'RECORDINGS-INCLUDE-SIMULATION,FALSE-VALUE
CALL2 PERELMAN-SHARE,I-FIRST-SIMULATION-RESULT
ZERO? STACK /FALSE
CALL2 INT,I-MESSAGE-E
PUT STACK,0,0
SET 'MESSAGE-E-COUNTER,0
?PRG10: GET RECORDING-TABLE,CNT
EQUAL? STACK,1 \?CND12
INC 'NUM
?CND12: ADD CNT,2 >CNT
GRTR? CNT,16 \?PRG10
EQUAL? NUM,9 \?ELS22
MOVE PERELMAN,LOCAL-GLOBALS
MOVE COFFEE,LOCAL-GLOBALS
CALL2 VISIBLE?,PERELMAN
ZERO? STACK /?CND23
EQUAL? PERELMAN,WINNER \?CND23
CALL1 CLEAR-BUF
?CND23: ADD TIME,55 >LAST-ABE-TIME
CALL QUEUE,I-PERELMAN,60
SET 'COMPLETED-TASKS,TRUE-VALUE
PRINTI ", smiling. ""An excellent job, PRISM. We just finished viewing your recordings, and the experts were quite pleased."" He pauses, as though realizing something for the first time. ""In fact, I thought they looked pretty good myself. I suppose this means the Plan'll get adopted.
""What's next for you, I wonder? You're going to be a hero, you know. You'd probably get a call from the President congratulating you, except of course that he's against the Plan."" Perelman notices a paper on his desk. ""Oh, apparently the "
PRINTD SIMULATION-CONTROLLER
PRINTI " generated a lot of new data correlations while running your simulation. I'm not sure what the effect of that will be. Might make an even more accurate simulation possible.
""Well, I've got another meeting now, as usual. But once again, thanks for not letting me down."" Perelman leaves."
CALL1 CONTINUE
SET 'MODE,COMM-MODE
SET 'HERE,COMM-ROOM
MOVE PLAYER,COMM-ROOM
CALL2 INCREMENT-TIME,680
CALL QUEUE,I-MESSAGE-X,12
CALL QUEUE,I-MESSAGE-Q,77
CALL2 CHAPTER-PRINT,2
CRLF
CRLF
CRLF
CALL2 PRINT-SPACES,21
PRINTI """Deep into that darkness peering,"
CRLF
CALL2 PRINT-SPACES,27
PRINTI "long I stood there, wondering, fearing,"
CRLF
CALL2 PRINT-SPACES,22
PRINTI "Doubting, dreaming dreams no mortal"
CRLF
CALL2 PRINT-SPACES,27
PRINTI "ever dared to dream before."""
CRLF
CALL2 PRINT-SPACES,40
PRINTI "-- Edgar Allan Poe"
CRLF
CRLF
CRLF
CRLF
CALL1 CONTINUE
CALL2 INIT-STATUS-LINE,2
CALL1 V-LOOK
RSTACK
?ELS22: EQUAL? NUM,8 \?ELS45
CALL QUEUE,I-MESSAGE-M,875
PUTP MESSAGE-M,P?CAPACITY,1
PRINTI ". ""PRISM. Uh, overall, a fine job in the simulation. I hate to be a "
CALL ITALICIZE,STR?374,TRUE-VALUE
PRINTI ", but we just finished viewing the recordings, and there's one omission. Uh, let's see. Oh, right. "
SET 'CNT,0
?PRG50: GET RECORDING-TABLE,CNT
ZERO? STACK \?CND52
ADD CNT,1
GET RECORDING-TABLE,STACK
PRINT STACK
JUMP ?REP51
?CND52: ADD CNT,2 >CNT
JUMP ?PRG50
?REP51: SET 'YES-NO-FLAG,6
CALL QUEUE,I-YES-NO,2
PRINTI ". Could you, ah, go back into "
PRINTD SIMULATION-MODE
PRINTR " and make that one additional recording?"""
?ELS45: CALL QUEUE,I-MESSAGE-M,875
PUTP MESSAGE-M,P?CAPACITY,1
MOVE PERELMAN,LOCAL-GLOBALS
MOVE COFFEE,LOCAL-GLOBALS
CALL2 VISIBLE?,PERELMAN
ZERO? STACK /?CND63
EQUAL? PERELMAN,WINNER \?CND63
CALL1 CLEAR-BUF
?CND63: CALL QUEUE,I-PERELMAN,60
ADD TIME,55 >LAST-ABE-TIME
PRINTI ". He looks unhappy. ""PRISM, you didn't record "
ZERO? NUM \?ELS72
PRINTI "any"
JUMP ?CND70
?ELS72: PRINTI "some"
?CND70: PRINTI " of the events the experts asked you for."" He picks up a piece of paper from his desk. ""Let's see. "
SET 'CNT,0
?PRG81: GET RECORDING-TABLE,CNT
ZERO? STACK \?CND83
ADD CNT,1
GET RECORDING-TABLE,STACK
PRINT STACK
PRINTI ". "
?CND83: ADD CNT,2 >CNT
GRTR? CNT,16 \?PRG81
PRINTI "Please go back into "
PRINTD SIMULATION-MODE
PRINTR " and make these recordings."" Perelman lowers his eyes. ""Please don't let me down, PRISM."" He walks out of the office."
.FUNCT PERELMAN-SHARE,INTERRUPT,SAW-ENTER=0
IN? PERELMAN,OFFICE /?ELS3
MOVE PERELMAN,OFFICE
PUTP PERELMAN,P?LDESC,STR?375
EQUAL? HERE,OFFICE \?ELS6
SET 'SAW-ENTER,TRUE-VALUE
CRLF
PRINTI "Perelman walks into the office and"
PRINT SPOTS-ACTIVE-LIGHT
PRINTI " immediately. ""Hello, PRISM,"" he says, sitting down at his desk. """
PRINT IT-LOOKS-LIKE
PRINTI " you beat me here. Give me a moment, please."" He begins quickly jotting a few notes onto a pad."
CRLF
JUMP ?CND1
?ELS6: CALL QUEUE,INTERRUPT,1
RFALSE
?ELS3: EQUAL? HERE,OFFICE /?CND1
CALL QUEUE,INTERRUPT,1
RFALSE
?CND1: CRLF
PRINTI "Perelman looks up"
SET 'REVIEWING-RECORDINGS,FALSE-VALUE
ZERO? SAW-ENTER \TRUE
PRINTI ","
PRINT SPOTS-ACTIVE-LIGHT
PRINTI ", and nods toward your comm outlet"
RTRUE
.FUNCT PERELMAN-F
EQUAL? WINNER,PERELMAN \?ELS5
IN? RYDER,OFFICE \?ELS10
SET 'WINNER,PLAYER