-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathparlor.zap
719 lines (651 loc) · 20.3 KB
/
parlor.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
.FUNCT FILM-F
EQUAL? PRSA,V?EXAMINE \?ELS5
IN? FILM,FILM-PROJECTOR \?ELS10
FSET? FILM-PROJECTOR,ONBIT \?ELS10
CALL PERFORM,V?EXAMINE,PROJECTION-SCREEN
RTRUE
?ELS10: CALL FILM-SLIDE-DESC,FILM,STR?78
RSTACK
?ELS5: EQUAL? PRSA,V?TAKE \?ELS16
IN? FILM,FILM-PROJECTOR \FALSE
FSET? FILM-PROJECTOR,ONBIT \FALSE
PRINTI "Even a nonunion projectionist like yourself should know how dangerous it is to try to take film from"
CALL APRINT,FILM-PROJECTOR
PRINTR " while it's running."
?ELS16: EQUAL? PRSA,V?PUT \?ELS25
FSET? FILM-PROJECTOR,ONBIT \?ELS25
EQUAL? PRSI,FILM-PROJECTOR \?ELS25
PRINTI "You start to put"
CALL TPRINT,FILM
PRINTI " in"
CALL TPRINT,FILM-PROJECTOR
PRINTI ", but glance up at a sign on the wall. The sign states: Remember, Perry Projectionist sez, ""Never try to put film in"
CALL APRINT,FILM-PROJECTOR
PRINTR " that's turned on."""
?ELS25: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,SLIDE-PROJECTOR \FALSE
PRINTI "The "
CALL DPRINT,FILM
PRINTI " won't fit in"
CALL TRPRINT,PRSI
RSTACK
.FUNCT SLIDE-F
EQUAL? PRSA,V?EXAMINE \FALSE
CALL FILM-SLIDE-DESC,SLIDE
RSTACK
.FUNCT FILM-SLIDE-DESC,OBJ,STRING=0
IN? OBJ,FILM-PROJECTOR /?THN6
IN? OBJ,SLIDE-PROJECTOR \?ELS5
?THN6: PRINTI "It's in"
LOC OBJ
CALL TPRINT,STACK
PRINTR "."
?ELS5: PRINTI "You examine the "
ZERO? STRING /?CND10
PRINT STRING
?CND10: CALL DPRINT,OBJ
PRINTR " closely. Whatever is on it is too small for you to make out."
.FUNCT FILM-PROJECTOR-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "It's a large, black, Simplex 70, 35mm "
CALL DPRINT,FILM-PROJECTOR
PRINTI ". In the front it has a short lens. "
IN? LENS-CAP,FILM-PROJECTOR \?CND6
PRINTI "There's a lens cap on the lens. "
?CND6: PRINTI "The "
CALL DPRINT,FILM-PROJECTOR
IN? FILM,FILM-PROJECTOR \?ELS11
PRINTI " has"
CALL APRINT,FILM
PRINTI " in it, and"
JUMP ?CND9
?ELS11: IN? CORPSE-LINE,FILM-PROJECTOR \?CND9
PRINTI " has"
CALL APRINT,CORPSE-LINE
PRINTI " in it, and"
?CND9: PRINTI " is turned o"
FSET? FILM-PROJECTOR,ONBIT \?ELS16
PRINTC 110
JUMP ?CND14
?ELS16: PRINTI "ff"
?CND14: PRINTR "."
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS20
FSET? FILM-PROJECTOR,ONBIT /?ELS20
PRINTI "Immediately the projector begins to roll"
FSET FILM-PROJECTOR,ONBIT
IN? FILM,FILM-PROJECTOR /?THN26
IN? CORPSE-LINE,FILM-PROJECTOR \?ELS25
?THN26: IN? FILM,FILM-PROJECTOR \?CND28
CALL QUEUE,I-FILM-DROP,2
?CND28: PRINTI ". The film starts to run through the projector"
FSET? LENS-CAP,LENS-CAP-OFF-BIT \?CND23
FSET SCREENING-ROOM,ONBIT
PRINTI " and a stream of colored light shoots out of the lens onto the screen in the screening room"
IN? CORPSE-LINE,FILM-PROJECTOR \?CND23
PRINTC 46
CRLF
CALL CORPSE-LINE-DEATH
JUMP ?CND23
?ELS25: FSET? LENS-CAP,LENS-CAP-OFF-BIT \?CND23
FSET SCREENING-ROOM,ONBIT
PRINTI ". A stream of white light shoots out of the lens of"
CALL TPRINT,FILM-PROJECTOR
PRINTI " onto the screen in the screening room"
?CND23: PRINTR "."
?ELS20: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS43
CALL CANT-OPEN-CLOSE
RSTACK
?ELS43: EQUAL? PRSA,V?LAMP-OFF \?ELS45
FSET? FILM-PROJECTOR,ONBIT \?ELS45
FCLEAR FILM-PROJECTOR,ONBIT
FSET? SLIDE-PROJECTOR,ONBIT /?CND48
FCLEAR SCREENING-ROOM,ONBIT
?CND48: PRINTI "You hear"
CALL TPRINT,FILM-PROJECTOR
PRINTR "'s whining trail off as it rolls to a stop."
?ELS45: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
EQUAL? PRSI,FILM-PROJECTOR \FALSE
EQUAL? PRSO,FILM,CORPSE-LINE /?ELS59
CALL WASTE-OF-TIME
RSTACK
?ELS59: IN? FILM,FILM-PROJECTOR /?THN62
IN? CORPSE-LINE,FILM-PROJECTOR \FALSE
?THN62: PRINTI "You'll have to take"
FIRST? FILM-PROJECTOR /?KLU64
?KLU64: CALL TPRINT,STACK
PRINTR " out first."
.FUNCT CORPSE-LINE-DEATH
CRLF
PRINTI "Your eyes are immediately drawn to the screen. "
FSET? SLIDE-PROJECTOR,ONBIT \?ELS3
PRINTI "Although it's a little distorted by the slide projector, you"
JUMP ?CND1
?ELS3: PRINTI "You"
?CND1: CALL JIGS-UP,STR?79
RSTACK
.FUNCT I-FILM-DROP
MOVE FILM,PROJECTION-BOOTH
EQUAL? HERE,PROJECTION-BOOTH \FALSE
CRLF
PRINTI "The "
CALL DPRINT,FILM
PRINTI " runs out of"
CALL TPRINT,FILM-PROJECTOR
PRINTR " and onto the floor."
.FUNCT PROJECTORS-DESC,OBJ,STRING=0
PRINTI "It's"
CALL APRINT,OBJ
ZERO? STRING /?CND1
PRINT STRING
?CND1: PRINTI ". The "
CALL DPRINT,OBJ
PRINTC 32
FIRST? OBJ \?ELS7
PRINTI "has"
FIRST? OBJ /?KLU15
?KLU15: CALL APRINT,STACK
PRINTI " in it"
JUMP ?CND5
?ELS7: PRINTI "is empty"
?CND5: PRINTI " and is turned o"
FSET? OBJ,ONBIT \?ELS12
PRINTC 110
JUMP ?CND10
?ELS12: PRINTI "ff"
?CND10: PRINTR "."
.FUNCT SLIDE-PROJECTOR-F
EQUAL? PRSA,V?EXAMINE \?ELS5
CALL PROJECTORS-DESC,SLIDE-PROJECTOR,STR?80
RSTACK
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS7
FSET? SLIDE-PROJECTOR,ONBIT /?ELS7
FSET SLIDE-PROJECTOR,ONBIT
FSET SCREENING-ROOM,ONBIT
PRINTI "A stream of "
IN? SLIDE,SLIDE-PROJECTOR \?ELS12
PRINTI "colored"
JUMP ?CND10
?ELS12: PRINTI "white"
?CND10: PRINTI " light shoots out of the lens of"
CALL TPRINT,SLIDE-PROJECTOR
PRINTR " onto the screen in the screening room."
?ELS7: EQUAL? PRSA,V?FOCUS \?ELS16
CALL PERFORM,V?FOCUS,SLIDE-PROJECTOR-LENS
RTRUE
?ELS16: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS18
CALL CANT-OPEN-CLOSE
RSTACK
?ELS18: EQUAL? PRSA,V?LAMP-OFF \FALSE
FSET? SLIDE-PROJECTOR,ONBIT \FALSE
FCLEAR SLIDE-PROJECTOR,ONBIT
FSET? FILM-PROJECTOR,ONBIT \?THN26
FSET? LENS-CAP,LENS-CAP-OFF-BIT /?CND23
?THN26: FCLEAR SCREENING-ROOM,ONBIT
?CND23: PRINTI "You turn off"
CALL TPRINT,SLIDE-PROJECTOR
PRINTR " and the light from the lens fades away."
.FUNCT PROJECTED-IMAGE-F
EQUAL? PRSI,PROJECTED-IMAGE \?ELS5
CALL PERFORM,PRSA,PRSO,PROJECTION-SCREEN
RTRUE
?ELS5: EQUAL? PRSO,PROJECTED-IMAGE \FALSE
CALL PERFORM,PRSA,PROJECTION-SCREEN,PRSI
RTRUE
.FUNCT PROJECTION-SCREEN-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTI "The "
CALL DPRINT,PROJECTION-SCREEN
PRINTI " is "
FSET? FILM-PROJECTOR,ONBIT \?ELS8
FSET? LENS-CAP,LENS-CAP-OFF-BIT \?ELS8
IN? FILM,FILM-PROJECTOR \?ELS13
FSET? SLIDE-PROJECTOR,ONBIT \?ELS16
IN? SLIDE,SLIDE-PROJECTOR \?ELS19
FSET? SLIDE-PROJECTOR-LENS,FOCUS-BIT \?ELS22
PRINTI "showing a message saying:
PLAY """
GET SONGS,SONG-NUMBER
PRINT STACK
PRINTI ".""
Love,
Aunt Hildegarde"
ZERO? PROJECTOR-POINTS \?CND6
ADD SCORE,10 >SCORE
SET 'PROJECTOR-POINTS,TRUE-VALUE
JUMP ?CND6
?ELS22: PRINTI "filled with bits of colored words and a blur of colored light"
JUMP ?CND6
?ELS19: PRINT WASHED-OUT-BITS
JUMP ?CND6
?ELS16: PRINT BITS-&-PIECES
JUMP ?CND6
?ELS13: FSET? SLIDE-PROJECTOR,ONBIT \?ELS36
IN? SLIDE,SLIDE-PROJECTOR \?ELS39
FSET? SLIDE-PROJECTOR-LENS,FOCUS-BIT \?ELS42
PRINT WASHED-OUT-BITS
JUMP ?CND6
?ELS42: PRINT WASHED-OUT-BITS
JUMP ?CND6
?ELS39: PRINT WHITE-LIGHT
JUMP ?CND6
?ELS36: PRINT WHITE-LIGHT
JUMP ?CND6
?ELS8: FSET? SLIDE-PROJECTOR,ONBIT \?ELS53
IN? SLIDE,SLIDE-PROJECTOR \?ELS56
FSET? SLIDE-PROJECTOR-LENS,FOCUS-BIT \?ELS59
PRINT BITS-&-PIECES
JUMP ?CND6
?ELS59: PRINTI "a blur of colored light"
JUMP ?CND6
?ELS56: PRINT WHITE-LIGHT
JUMP ?CND6
?ELS53: PRINTI "blank"
?CND6: PRINTR "."
.FUNCT LENS-CAP-F
EQUAL? PRSA,V?PUT-ON \?ELS5
EQUAL? PRSI,FILM-PROJECTOR,FILM-PROJECTOR-LENS \?ELS5
FCLEAR LENS-CAP,LENS-CAP-OFF-BIT
FSET LENS-CAP,NDESCBIT
FSET LENS-CAP,TRYTAKEBIT
MOVE LENS-CAP,FILM-PROJECTOR
FSET? SLIDE-PROJECTOR,ONBIT /?CND8
FSET? FILM-PROJECTOR,ONBIT \?CND8
FCLEAR SCREENING-ROOM,ONBIT
?CND8: PRINTI "You place"
CALL TPRINT,LENS-CAP
PRINTI " over"
CALL TRPRINT,FILM-PROJECTOR-LENS
RSTACK
?ELS5: EQUAL? PRSA,V?PUT-ON \?ELS14
EQUAL? PRSI,SLIDE-PROJECTOR,SLIDE-PROJECTOR-LENS \?ELS14
PRINTI "The "
CALL DPRINT,LENS-CAP
PRINTI " won't fit on"
CALL TRPRINT,PRSI
RSTACK
?ELS14: EQUAL? PRSA,V?UNTIE,V?TAKE-OFF \?ELS18
FSET? LENS-CAP,LENS-CAP-OFF-BIT /?ELS18
CALL PERFORM,V?TAKE,LENS-CAP
RTRUE
?ELS18: EQUAL? PRSA,V?TAKE \FALSE
EQUAL? PRSO,LENS-CAP \FALSE
FSET? LENS-CAP,LENS-CAP-OFF-BIT /FALSE
CALL ITAKE
ZERO? STACK /TRUE
FSET LENS-CAP,LENS-CAP-OFF-BIT
FCLEAR LENS-CAP,NDESCBIT
FCLEAR LENS-CAP,TRYTAKEBIT
FSET? FILM-PROJECTOR,ONBIT \FALSE
FSET SCREENING-ROOM,ONBIT
PRINTI "As you remove"
CALL TPRINT,LENS-CAP
PRINTI " a stream of "
IN? FILM,FILM-PROJECTOR /?THN36
IN? CORPSE-LINE,FILM-PROJECTOR \?ELS35
?THN36: PRINTI "colored"
JUMP ?CND33
?ELS35: PRINTI "white"
?CND33: PRINTI " light shoots from"
CALL TPRINT,FILM-PROJECTOR
PRINTI "'s lens."
CRLF
IN? CORPSE-LINE,FILM-PROJECTOR \TRUE
CALL CORPSE-LINE-DEATH
RTRUE
.FUNCT FILM-PROJECTOR-LENS-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "It's a hand-ground, all-aluminum, Bierman 500 "
CALL DPRINT,FILM-PROJECTOR-LENS
FSET? LENS-CAP,LENS-CAP-OFF-BIT /?ELS8
PRINTI " with"
CALL APRINT,LENS-CAP
PRINTI " on it"
JUMP ?CND6
?ELS8: FSET? FILM-PROJECTOR,ONBIT \?CND6
PRINTI ", with a spray of "
IN? FILM,FILM-PROJECTOR \?ELS16
PRINTI "colored"
JUMP ?CND14
?ELS16: PRINTI "white"
?CND14: PRINTI " light coming out of it"
?CND6: PRINTR "."
?ELS5: EQUAL? PRSA,V?TURN,V?FOCUS \?ELS20
PRINT YOU-CANT
PRINTI "adjust"
CALL TPRINT,FILM-PROJECTOR-LENS
PRINTR ". It's preset for Uncle Buddy's screening room."
?ELS20: EQUAL? PRSA,V?UNTIE,V?TAKE \FALSE
PRINT LENS-ATTACHED
CRLF
RTRUE
.FUNCT SLIDE-PROJECTOR-LENS-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "It's a fairly expensive, focusable "
CALL DPRINT,SLIDE-PROJECTOR-LENS
FSET? SLIDE-PROJECTOR,ONBIT \?CND6
PRINTI ". A stream of "
IN? SLIDE,SLIDE-PROJECTOR \?ELS11
PRINTI "colored"
JUMP ?CND9
?ELS11: PRINTI "white"
?CND9: PRINTI " light sprays from the lens"
?CND6: PRINTR "."
?ELS5: EQUAL? PRSA,V?TURN,V?FOCUS \?ELS15
FSET? SLIDE-PROJECTOR,ONBIT /?ELS20
PRINTI "How can you focus"
CALL TPRINT,SLIDE-PROJECTOR
PRINTR " when it's not turned on?"
?ELS20: FSET? SLIDE-PROJECTOR-LENS,FOCUS-BIT \?ELS22
CALL YOU-ALREADY
RSTACK
?ELS22: IN? SLIDE,SLIDE-PROJECTOR /?ELS24
PRINTI "How can you focus"
CALL TPRINT,SLIDE-PROJECTOR
PRINTR " when there's nothing in it?"
?ELS24: PRINTI "You twist"
CALL TRPRINT,SLIDE-PROJECTOR-LENS
FSET SLIDE-PROJECTOR-LENS,FOCUS-BIT
RTRUE
?ELS15: EQUAL? PRSA,V?TAKE \FALSE
PRINT LENS-ATTACHED
CRLF
RTRUE
.FUNCT PROJECTION-BOOTH-F,RARG
EQUAL? RARG,M-ENTER \FALSE
FSET? PROJECTION-BOOTH,EVERYBIT /FALSE
FSET PROJECTION-BOOTH,EVERYBIT
RANDOM 10
SUB STACK,1 >SONG-NUMBER
RETURN SONG-NUMBER
.FUNCT SCREENING-ROOM-PSEUDO-F
EQUAL? PRSA,V?EXAMINE \FALSE
CALL PERFORM,V?LOOK-INSIDE,WINDOW
RTRUE
.FUNCT OUTSIDE-PARLOR-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is a long hall stretching east and west."
FSET? WALL-SAFE,INVISIBLE \?ELS10
PRINTI " There is a painting hanging here."
RTRUE
?ELS10: PRINTI " There is a painting swung away from the wall. Next to the painting is a"
FSET? WALL-SAFE,OPENBIT \?ELS15
PRINTI "n open"
JUMP ?CND13
?ELS15: PRINTI " closed"
?CND13: PRINTI " wall safe."
RTRUE
.FUNCT PARLOR-F,RARG
EQUAL? RARG,M-LOOK \FALSE
ZERO? TIPPED /?ELS8
PRINTI "This room is askew with the floor tilting down in the "
EQUAL? TIPPED,CRAWL-SPACE-NORTH \?ELS12
PRINTI "north and up in the south"
JUMP ?CND10
?ELS12: PRINTI "south and up in the north"
?CND10: PRINTI ". The piano is "
JUMP ?CND6
?ELS8: PRINTI "This is the parlor where Uncle Buddy would bring potential investors. He would break out his finest scotch and Cuban cigars. Once the ""guests"" were tight he would present his latest movie idea. (You've seen his movies, so you know anyone who would agree to invest in one of them had to have been drinking.) Strange, you notice all the furniture in this room is bolted to the floor, except for the piano "
?CND6: EQUAL? PIANO-LOC,1 \?ELS19
PRINTI "against the northern wall"
JUMP ?CND17
?ELS19: EQUAL? PIANO-LOC,2 \?ELS21
PRINTI "in the middle of the room"
JUMP ?CND17
?ELS21: PRINTI "against the southern wall"
?CND17: FSET? CRAWL-SPACE-DOOR,OPENBIT \?CND24
PRINTI ". There is an open door in the floor"
?CND24: PRINTI ". A doorway leads west."
RTRUE
.FUNCT TO-CRAWL-SPACE-NORTH
FSET? CRAWL-SPACE-DOOR,OPENBIT \?ELS5
FSET? SKIS,WORNBIT \?ELS10
PRINTI "You can't fit through the opening wearing the skis."
CRLF
RFALSE
?ELS10: EQUAL? TIPPED,CRAWL-SPACE-NORTH \?ELS12
PRINTI "Now that the parlor is tilted, you can't fit into the crawl space."
CRLF
RFALSE
?ELS12: RETURN CRAWL-SPACE-NORTH
?ELS5: PRINTI "You can't go that way."
CRLF
RFALSE
.FUNCT CRAWL-SPACE-DOOR-F
EQUAL? PRSA,V?OPEN \FALSE
EQUAL? HERE,PARLOR \FALSE
ZERO? SONG-PLAYED /?ELS15
FSET? CRAWL-SPACE-DOOR,OPENBIT /?ELS15
FSET CRAWL-SPACE-DOOR,OPENBIT
PRINTR "Opened."
?ELS15: PRINTR "You can't seem to open it."
.FUNCT CRAWL-SPACE-NORTH-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is the northern half of an uncomfortably warm crawl space beneath the parlor. It appears as though this room is under construction."
CALL DESCRIBE-CRAWL-SPACE-BEAM,STR?97
PRINTI " To the north, about a foot above the floor, you see an entrance to a passage."
ZERO? TIPPED \?CND6
PRINTI " The entrance is partially blocked by the floor of the room above."
?CND6: CALL DESCRIBE-NICHE,NORTH-NICHE
PRINTI " There is a"
FSET? CRAWL-SPACE-DOOR,OPENBIT \?ELS11
PRINTI "n open"
JUMP ?CND9
?ELS11: PRINTI " closed"
?CND9: PRINTI " door above you."
RTRUE
.FUNCT TO-CRAWL-SPACE-SOUTH
EQUAL? TIPPED,CRAWL-SPACE-SOUTH \?ELS5
PRINTI "You won't fit in the southern half of the crawl space. The ceiling shifted and now fills the space."
CRLF
RFALSE
?ELS5: RETURN CRAWL-SPACE-SOUTH
.FUNCT TO-FIRST-SECRET-ROOM
EQUAL? TIPPED,CRAWL-SPACE-SOUTH \?ELS5
RETURN FIRST-SECRET-ROOM
?ELS5: PRINTI "You can't fit through the passage. It's partially blocked by the floor of the room above."
CRLF
RFALSE
.FUNCT PARKING-METER-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "This is the parking meter that was the final frustration for budding actor Alan Chaplin in Uncle Buddy's ""You Can't Fight City Hall, But You Can Blow It Up!"""
.FUNCT DESCRIBE-NICHE,NICHE
PRINTI " There is a niche in the ceiling here."
FIRST? NICHE \TRUE
PRINTI " In"
CALL TPRINT,NICHE
PRINTI " there is"
FIRST? NICHE /?KLU4
?KLU4: CALL APRINT,STACK
PRINTI " supporting the ceiling."
RTRUE
.FUNCT BEAM-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The thick, wooden beam runs across the ceiling of the crawl space."
.FUNCT DESCRIBE-CRAWL-SPACE-BEAM,STRING
PRINTI " A wooden beam runs east-west across the ceiling, forming the boundary between this side of the crawl space and the other half to the "
PRINT STRING
PRINTC 46
RTRUE
.FUNCT CRAWL-SPACE-SOUTH-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is the southern half of an uncomfortably warm crawl space beneath the parlor."
CALL DESCRIBE-CRAWL-SPACE-BEAM,STR?99
CALL DESCRIBE-NICHE,SOUTH-NICHE
RSTACK
.FUNCT POST-F,OARG,POST-LOC
LOC PRSO >POST-LOC
EQUAL? PRSA,V?MOVE,V?TAKE \?ELS5
FSET? PRSO,CANT-MOVE-POST-BIT \?ELS5
PRINTR "The pillar won't budge from the niche."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
EQUAL? POST-LOC,NORTH-NICHE,SOUTH-NICHE \?ELS14
PRINTI "It's in"
LOC PRSO
CALL TRPRINT,STACK
RSTACK
?ELS14: PRINTI "The "
CALL DPRINT,PRSO
PRINTR " is made of wood and is about two feet tall."
?ELS9: EQUAL? PRSA,V?PUT \?ELS18
EQUAL? PRSI,NORTH-NICHE,SOUTH-NICHE \?ELS18
ZERO? TIPPED /?ELS25
PRINTR "The post won't go in the niche now that the ceiling is tilted."
?ELS25: EQUAL? PRSI,NORTH-NICHE \?ELS32
EQUAL? PIANO-LOC,1 /?THN37
?ELS32: EQUAL? PRSI,SOUTH-NICHE \?ELS34
EQUAL? PIANO-LOC,3 /?THN37
?ELS34: EQUAL? PIANO-LOC,2 \FALSE
EQUAL? PRSI,NORTH-NICHE /?THN37
EQUAL? PRSI,SOUTH-NICHE \FALSE
?THN37: PRINTR "Because of the weight from above you can't put the pillar back in the niche."
?ELS18: EQUAL? PRSA,V?BURN \FALSE
PRINT PYRO
RTRUE
.FUNCT PIANO-F
EQUAL? PRSA,V?PUSH-TO \?ELS5
EQUAL? PRSI,INTDIR \?ELS5
EQUAL? TIPPED,CRAWL-SPACE-NORTH,CRAWL-SPACE-SOUTH /?ELS12
EQUAL? P-DIRECTION,P?NORTH \?ELS17
EQUAL? PIANO-LOC,1 \?ELS17
PRINTR "It's already up against the wall."
?ELS17: EQUAL? P-DIRECTION,P?NORTH \?ELS21
EQUAL? PIANO-LOC,2 \?ELS21
IN? ROUND-POST,NORTH-NICHE \?ELS28
FCLEAR SQUARE-POST,CANT-MOVE-POST-BIT
SET 'PIANO-LOC,1
PRINTR "The hearty breakfast you had this morning pays off as you push the piano north against the wall."
?ELS28: SET 'TIPPED,CRAWL-SPACE-NORTH
SET 'PIANO-LOC,1
PRINTR "You push the piano north a couple of feet and the room begins to tip. As the north side of the parlor tips down, the piano rolls across the floor and against the north wall with an atonal banging of the keys. The south side of the floor tilts up."
?ELS21: EQUAL? P-DIRECTION,P?NORTH \?ELS32
EQUAL? PIANO-LOC,3 \?ELS32
IN? ROUND-POST,NORTH-NICHE \?CND35
FSET ROUND-POST,CANT-MOVE-POST-BIT
?CND35: IN? SQUARE-POST,SOUTH-NICHE \?CND38
FSET SQUARE-POST,CANT-MOVE-POST-BIT
?CND38: SET 'PIANO-LOC,2
PRINTR "You push the piano north to the center of the room."
?ELS32: EQUAL? P-DIRECTION,P?SOUTH \?ELS42
EQUAL? PIANO-LOC,1 \?ELS42
IN? ROUND-POST,NORTH-NICHE \?CND45
FSET ROUND-POST,CANT-MOVE-POST-BIT
?CND45: IN? SQUARE-POST,SOUTH-NICHE \?CND48
FSET SQUARE-POST,CANT-MOVE-POST-BIT
?CND48: SET 'PIANO-LOC,2
PRINTR "You push the piano south to the center of the room."
?ELS42: EQUAL? P-DIRECTION,P?SOUTH \?ELS52
EQUAL? PIANO-LOC,2 \?ELS52
IN? SQUARE-POST,SOUTH-NICHE \?ELS59
FCLEAR ROUND-POST,CANT-MOVE-POST-BIT
SET 'PIANO-LOC,3
PRINTR "The hearty breakfast you had this morning pays off as you push the piano south against the wall."
?ELS59: MOVE ROUND-POST,CRAWL-SPACE-NORTH
FCLEAR ROUND-POST,NDESCBIT
FCLEAR ROUND-POST,CANT-MOVE-POST-BIT
SET 'TIPPED,CRAWL-SPACE-SOUTH
SET 'PIANO-LOC,3
PRINTR "You push the piano south a couple of feet and the room begins to tip. As the south side of the parlor tips down the piano rolls across the floor and slams against the south wall. The north side of the floor tilts up."
?ELS52: EQUAL? P-DIRECTION,P?SOUTH \?ELS63
EQUAL? PIANO-LOC,3 \?ELS63
PRINTR "It's already up against the wall."
?ELS63: EQUAL? P-DIRECTION,P?EAST,P?WEST,P?NE /?THN68
EQUAL? P-DIRECTION,P?NW,P?SE,P?SW \FALSE
?THN68: PRINTI "You try pushing the piano "
EQUAL? P-DIRECTION,P?EAST \?ELS72
PRINTI "east"
JUMP ?CND70
?ELS72: EQUAL? P-DIRECTION,P?WEST \?ELS74
PRINTI "west"
JUMP ?CND70
?ELS74: EQUAL? P-DIRECTION,P?NE \?ELS76
PRINTI "northeast"
JUMP ?CND70
?ELS76: EQUAL? P-DIRECTION,P?NW \?ELS78
PRINTI "northwest"
JUMP ?CND70
?ELS78: EQUAL? P-DIRECTION,P?SE \?ELS80
PRINTI "southeast"
JUMP ?CND70
?ELS80: EQUAL? P-DIRECTION,P?SW \?CND70
PRINTI "southwest"
?CND70: PRINTI " but the casters it rides on are old and worn. They're stuck, so"
CALL TPRINT,PIANO
PRINTR " will only move north and south."
?ELS12: PRINTR "Now that the room is tipped, the piano is too heavy to move."
?ELS5: EQUAL? PRSA,V?MOVE,V?PUSH \?ELS86
PRINTR "Did you have a direction in mind?"
?ELS86: EQUAL? PRSA,V?RAISE \?ELS88
CALL PERFORM,V?OPEN,PIANO
RTRUE
?ELS88: EQUAL? PRSA,V?LOWER \?ELS90
CALL PERFORM,V?CLOSE,PIANO
RTRUE
?ELS90: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "It's the baby grand that Aunt Hildegarde bought for you and Herman. Though neither of you practiced as you should, you've managed to maintain a shaky repertoire of standards. The casters on the piano's legs have seen better days. The piano lid is "
FSET? PIANO,OPENBIT \?ELS95
PRINTI "open"
JUMP ?CND93
?ELS95: PRINTI "closed"
?CND93: PRINTR "."
.FUNCT CASTERS-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The casters look old and worn, as if they have seen better days."
.FUNCT NICHE-F
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS5
PRINTI "You see"
FIRST? PRSO /?ELS8
PRINTI " nothing"
JUMP ?CND6
?ELS8: FIRST? PRSO /?KLU17
?KLU17: CALL APRINT,STACK
?CND6: PRINTI " in"
CALL TRPRINT,PRSO
RSTACK
?ELS5: EQUAL? PRSA,V?PUT \?ELS12
EQUAL? PRSI,SOUTH-NICHE,NORTH-NICHE \?ELS12
EQUAL? PRSO,SQUARE-POST,ROUND-POST /?ELS12
CALL WASTE-OF-TIME
RSTACK
?ELS12: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
CALL CANT-OPEN-CLOSE
RSTACK
.FUNCT I-NOISE
FSET? HERE,CAVEBIT \?CND1
CALL QUEUE,I-NOISE,5
RFALSE
?CND1: CRLF
FSET? HERE,OUTDOORSBIT \?ELS6
CALL PICK-ONE,OUTDOOR-NOISE
PRINT STACK
JUMP ?CND4
?ELS6: CALL PICK-ONE,INDOOR-NOISE
PRINT STACK
?CND4: CRLF
RANDOM 20
ADD 30,STACK
CALL QUEUE,I-NOISE,STACK
RFALSE
.FUNCT OUT-OF-P-DEBUG
FSET FLASHLIGHT,ONBIT
MOVE GREEN-MATCH,PLAYER
MOVE FLASHLIGHT,PLAYER
PRINTI "Your flashlight comes on and a green match appears in your hand as you exit the work room."
CRLF
CRLF
EQUAL? P-WALK-DIR,P?NORTH \?ELS5
RETURN CELLAR
?ELS5: EQUAL? P-WALK-DIR,P?SW \?ELS7
RETURN ATTIC
?ELS7: EQUAL? P-WALK-DIR,P?WEST \?ELS9
RETURN BOAT-DOCK
?ELS9: EQUAL? P-WALK-DIR,P?EAST \?ELS11
RETURN HEART-OF-MAZE
?ELS11: EQUAL? P-WALK-DIR,P?SOUTH \?ELS13
RETURN UPSTAIRS-HALL-MIDDLE
?ELS13: EQUAL? P-WALK-DIR,P?SE \?ELS15
RETURN BOMB-SHELTER
?ELS15: EQUAL? P-WALK-DIR,P?NE \?ELS17
RETURN CRAWL-SPACE-NORTH
?ELS17: EQUAL? P-WALK-DIR,P?NW \FALSE
RETURN CANNON-EMPLACEMENT
.ENDI