-
Notifications
You must be signed in to change notification settings - Fork 21
/
people.zap
549 lines (508 loc) · 13 KB
/
people.zap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
.FUNCT PLAYER-F:ANY:0:1,ARG,L
EQUAL? ARG,M-WINNER /?CCL3
EQUAL? PRSO,PLAYER \?CCL6
EQUAL? PRSA,V?THANK,V?SORRY,V?HELLO \?CCL9
ICALL1 HAR-HAR
RTRUE
?CCL9: EQUAL? PRSA,V?ALARM \?CCL11
PRINT YOU-ARE
CRLF
RTRUE
?CCL11: EQUAL? PRSA,V?FIND \?CCL13
PRINTI "You're right here, "
ICALL1 TELL-LOCATION
CRLF
RTRUE
?CCL13: EQUAL? PRSA,V?FOLLOW \?CCL15
PRINTR "I'd like to, but like most computers I don't have legs."
?CCL15: EQUAL? PRSA,V?MUNG,V?KILL \?CCL17
ICALL2 JIGS-UP,STR?185
RTRUE
?CCL17: EQUAL? PRSA,V?LISTEN \?CCL20
PRINTR "Yes?"
?CCL20: EQUAL? PRSA,V?MOVE \?CCL22
ICALL1 V-WALK-AROUND
RTRUE
?CCL22: EQUAL? PRSA,V?PULL-TOGETHER \?CCL24
PRINT ZEN
CRLF
RTRUE
?CCL24: EQUAL? PRSA,V?SEARCH \?CCL26
ICALL1 V-INVENTORY
RTRUE
?CCL26: EQUAL? PRSA,V?TELL \FALSE
ICALL1 FUCKING-CLEAR
PRINTR "Talking to yourself is a sign of impending mental collapse."
?CCL6: EQUAL? PRSI,PLAYER \FALSE
EQUAL? PRSA,V?GIVE \FALSE
IN? PRSO,PLAYER \?CCL36
EQUAL? PRSO,BABEL-FISH /?CCL36
ICALL1 PRE-TAKE
RTRUE
?CCL36: ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL3: ZERO? PRSI /?CCL40
EQUAL? PRSA,V?SEARCH-FOR /?CCL40
FSET? PRSI,SECRETBIT \?CCL40
FSET? PRSI,SEENBIT /?CCL40
ICALL2 NOT-FOUND,PRSI
RTRUE
?CCL40: ZERO? PRSO /?CCL46
EQUAL? PRSA,V?WALK,V?FIND /?CCL46
FSET? PRSO,SECRETBIT \?CCL46
FSET? PRSO,SEENBIT /?CCL46
ICALL2 NOT-FOUND,PRSO
RTRUE
?CCL46: LOC PLAYER >L
EQUAL? L,HERE /FALSE
ZERO? P-WALK-DIR /?CCL55
CALL1 TOO-BAD-SIT-HIDE
RSTACK
?CCL55: EQUAL? PRSO,FALSE-VALUE,ROOMS,L /FALSE
EQUAL? PRSA,V?FIND /?CTR58
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?WALK-TO \?CCL59
?CTR58: EQUAL? PRSO,SLEEP-GLOBAL /FALSE
CALL1 TOO-BAD-SIT-HIDE
RSTACK
?CCL59: CALL1 SPEAKING-VERB?
ZERO? STACK \FALSE
CALL1 GAME-VERB?
ZERO? STACK \FALSE
CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?SMILE /FALSE
EQUAL? PRSA,V?SHOOT,V?NOD,V?LOOK-ON /FALSE
EQUAL? PRSA,V?LISTEN,V?FAINT,V?AIM /FALSE
CALL2 HELD?,PRSO
ZERO? STACK \FALSE
CALL HELD?,PRSO,GLOBAL-OBJECTS
ZERO? STACK \FALSE
EQUAL? PRSA,V?EXAMINE /FALSE
CALL HELD?,PRSO,L
ZERO? STACK \?CCL83
CALL1 TOO-BAD-SIT-HIDE
RSTACK
?CCL83: ZERO? PRSI /FALSE
CALL2 HELD?,PRSI
ZERO? STACK \FALSE
CALL HELD?,PRSI,GLOBAL-OBJECTS
ZERO? STACK \FALSE
CALL HELD?,PRSI,L
ZERO? STACK \FALSE
CALL1 TOO-BAD-SIT-HIDE
RSTACK
.FUNCT TOO-BAD-SIT-HIDE:ANY:0:0
MOVE WINNER,HERE
ICALL2 FIRST-YOU,STR?186
RFALSE
.FUNCT FUCKING-CLEAR:ANY:0:0
SET 'P-CONT,FALSE-VALUE
RETURN 2
.FUNCT MARVIN-F:ANY:0:1,ARG,OBJ,X
EQUAL? ARG,M-WINNER \?CCL3
CALL2 GRAB-ATTENTION,MARVIN
ZERO? STACK \?CCL6
RETURN 2
?CCL6: CALL2 COM-CHECK,MARVIN >X
ZERO? X /?CCL10
EQUAL? X,M-FATAL /FALSE
EQUAL? X,M-OTHER \TRUE
RETURN 2
?CCL10: ICALL1 FUCKING-CLEAR
PRINTR """I think you ought to know I'm feeling very depressed."""
?CCL3: CALL2 ASKING-ABOUT?,MARVIN >OBJ
ZERO? OBJ /?CCL19
CALL GRAB-ATTENTION,MARVIN,OBJ
ZERO? STACK \?CCL22
RETURN 2
?CCL22: EQUAL? OBJ,OBJECT-OF-GAME \?CCL26
PRINTR """Being clever doesn't always make you happy, you know. Look at me, brain the size of a planet, how many points do you think I've got? Minus thirty zillion at the last count."""
?CCL26: CALL COMMON-ASK-ABOUT,MARVIN,OBJ >X
ZERO? X /?CCL28
EQUAL? X,M-FATAL /FALSE
RTRUE
?CCL28: CALL TELL-DUNNO,MARVIN,OBJ
RSTACK
?CCL19: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL33
GETP MARVIN,P?LDESC
EQUAL? STACK,14 \?CCL33
PRINTR "Rather like trying to wake the dead."
?CCL33: CALL PERSON-F,MARVIN,ARG
RSTACK
.FUNCT ASKING-ABOUT?:ANY:1:1,WHO,DR
EQUAL? PRSA,V?SHOW,V?ASK-ABOUT \FALSE
EQUAL? WHO,PRSO \FALSE
RETURN PRSI
.FUNCT FORD-F:ANY:0:1,ARG,OBJ,X
EQUAL? ARG,M-WINNER \?CCL3
CALL2 GRAB-ATTENTION,FORD
ZERO? STACK \?CCL6
RETURN 2
?CCL6: CALL2 COM-CHECK,FORD >X
ZERO? X /?CCL10
EQUAL? X,M-FATAL /FALSE
EQUAL? X,M-OTHER \TRUE
RETURN 2
?CCL10: ICALL1 FUCKING-CLEAR
PRINTI "Ford, busy scanning the sky"
EQUAL? HERE,PUB \?CND18
PRINTI " through the window"
?CND18: PRINTR ", ignores you."
?CCL3: CALL2 ASKING-ABOUT?,FORD >OBJ
ZERO? OBJ /?CCL21
CALL GRAB-ATTENTION,FORD,OBJ
ZERO? STACK \?CCL24
RETURN 2
?CCL24: EQUAL? OBJ,THIRD-PLANET \?CCL28
PRINTR "Ford explains that the Earth has been demolished. To cheer you up, he points out that there are an awful lot of little planets like that around, and the Earth wasn't even a particularly nice one."
?CCL28: CALL COMMON-ASK-ABOUT,FORD,OBJ >X
ZERO? X /?CCL30
EQUAL? X,M-FATAL /FALSE
RTRUE
?CCL30: CALL TELL-DUNNO,FORD,OBJ
RSTACK
?CCL21: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL35
GETP FORD,P?LDESC
EQUAL? STACK,14 \?CCL35
PRINTR "Rather like trying to wake the dead."
?CCL35: CALL PERSON-F,FORD,ARG
RSTACK
.FUNCT TELL-DUNNO:ANY:2:2,PER,OBJ
PRINTR """You know as much as I do."""
.FUNCT ZAPHOD-F:ANY:0:1,ARG,OBJ,X
EQUAL? ARG,M-WINNER \?CCL3
CALL2 GRAB-ATTENTION,ZAPHOD
ZERO? STACK \?CCL6
RETURN 2
?CCL6: CALL2 COM-CHECK,ZAPHOD >X
ZERO? X /?CCL10
EQUAL? X,M-FATAL /FALSE
EQUAL? X,M-OTHER \TRUE
RETURN 2
?CCL10: ICALL1 FUCKING-CLEAR
PRINTR """Shut up, Earthman."""
?CCL3: CALL2 ASKING-ABOUT?,ZAPHOD >OBJ
ZERO? OBJ /?CCL19
CALL GRAB-ATTENTION,ZAPHOD,OBJ
ZERO? STACK \?CCL22
RETURN 2
?CCL22: CALL COMMON-ASK-ABOUT,ZAPHOD,OBJ >X
ZERO? X /?CCL26
EQUAL? X,M-FATAL /FALSE
RTRUE
?CCL26: CALL TELL-DUNNO,ZAPHOD,OBJ
RSTACK
?CCL19: EQUAL? PRSA,V?EXAMINE \?CCL31
PRINTR "Zaphod has two heads."
?CCL31: CALL PERSON-F,ZAPHOD,ARG
RSTACK
.FUNCT TRILLIAN-F:ANY:0:1,ARG,OBJ,X
EQUAL? ARG,M-WINNER \?CCL3
CALL2 GRAB-ATTENTION,TRILLIAN
ZERO? STACK \?CCL6
RETURN 2
?CCL6: CALL2 COM-CHECK,TRILLIAN >X
ZERO? X /?CCL10
EQUAL? X,M-FATAL /FALSE
EQUAL? X,M-OTHER \TRUE
RETURN 2
?CCL10: ICALL1 FUCKING-CLEAR
PRINTD TRILLIAN
PRINTR " smiles disinterestedly at you and looks away."
?CCL3: CALL2 ASKING-ABOUT?,TRILLIAN >OBJ
ZERO? OBJ /?CCL19
CALL GRAB-ATTENTION,TRILLIAN,OBJ
ZERO? STACK \?CCL22
RETURN 2
?CCL22: CALL COMMON-ASK-ABOUT,TRILLIAN,OBJ >X
ZERO? X /?CCL26
EQUAL? X,M-FATAL /FALSE
RTRUE
?CCL26: CALL TELL-DUNNO,TRILLIAN,OBJ
RSTACK
?CCL19: CALL PERSON-F,TRILLIAN,ARG
RSTACK
.FUNCT MARVIN-D:ANY:0:1,ARG
ICALL2 DESCRIBE-PERSON,MARVIN
RTRUE
.FUNCT FORD-D:ANY:0:1,X
GETP FORD,P?LDESC
EQUAL? STACK,14 \?CCL3
PRINTR "Ford is in the corner, snoring loudly."
?CCL3: ICALL2 DESCRIBE-PERSON,FORD
RTRUE
.FUNCT ZAPHOD-D:ANY:0:1,ARG
ICALL2 DESCRIBE-PERSON,ZAPHOD
RTRUE
.FUNCT TRILLIAN-D:ANY:0:1,ARG
ICALL2 DESCRIBE-PERSON,TRILLIAN
RTRUE
.FUNCT DESCRIBE-PERSON:ANY:1:1,PER,STR
GETP PER,P?LDESC >STR
ZERO? STR /?CND1
GETP PER,P?CHARACTER
PUT TOUCHED-LDESCS,STACK,STR
RFALSE
?CND1: ICALL2 START-SENTENCE,PER
PRINTI " is "
GETPT PER,P?WEST >STR
ZERO? STR /?CCL6
GET STR,NEXITSTR >STR
ZERO? STR /?CCL6
PRINT STR
JUMP ?CND4
?CCL6: PRINTI "looking bored"
?CND4: PRINTC 46
EQUAL? STR,6 \?CCL11
PRINTC 32
RTRUE
?CCL11: CRLF
RTRUE
.FUNCT PERSON-F:ANY:2:2,PER,ARG,OBJ,X,L,C,N
LOC PER >L
GETP PER,P?CHARACTER >C
EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL3
EQUAL? PRSO,PER \FALSE
CALL UNSNOOZE,PER,TRUE-VALUE
ZERO? STACK /?CCL9
ICALL HE-SHE-IT,PER,1
PRINTR " gasps to see you so close!"
?CCL9: ICALL HE-SHE-IT,PER,1,STR?61
PRINTI " still "
GETP PER,P?LDESC >X
ZERO? X /?CCL12
GET LDESC-STRINGS,X
PRINT STACK
JUMP ?CND10
?CCL12: GETPT PER,P?WEST >X
ZERO? X /?CND10
GET X,NEXITSTR
PRINT STACK
?CND10: PRINTR "."
?CCL3: EQUAL? PRSA,V?GIVE \?CCL15
EQUAL? PRSI,PER \FALSE
CALL2 HELD?,PRSO
ZERO? STACK /FALSE
CALL2 GRAB-ATTENTION,PER
ZERO? STACK \FALSE
RETURN 2
?CCL15: EQUAL? PRSA,V?LAMP-OFF \?CCL26
GETP PER,P?LINE
ZERO? STACK /?CCL29
PRINTR "Seems you've already done that."
?CCL29: CALL1 WONT-HELP
RSTACK
?CCL26: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?MUNG \?CCL31
EQUAL? PER,PRSO \FALSE
FSET? PER,PERSONBIT \FALSE
FSET? PER,MUNGBIT /FALSE
GETP PER,P?LINE
ADD 1,STACK
PUTP PER,P?LINE,STACK
GETP PER,P?LDESC
EQUAL? STACK,4 /?CND38
PUTP PER,P?LDESC,20
?CND38: ICALL HE-SHE-IT,PER,1
PRINTR " pushes you away and mutters, ""I don't think that's called for."""
?CCL31: EQUAL? PRSA,V?SHOW \?CCL41
EQUAL? PER,PRSO \FALSE
CALL2 GRAB-ATTENTION,PER
ZERO? STACK \?CCL47
RETURN 2
?CCL47: ICALL PERFORM,V?TELL-ABOUT,PRSO,PRSI
RTRUE
?CCL41: EQUAL? PRSA,V?SMILE \?CCL52
EQUAL? PER,PRSO \FALSE
CALL2 GRAB-ATTENTION,PER
ZERO? STACK \?CCL58
RETURN 2
?CCL58: ICALL HE-SHE-IT,PRSO,1,STR?217
PRINTR " back at you."
?CCL52: EQUAL? PRSA,V?TELL-ABOUT \?CCL62
EQUAL? PER,PRSO \FALSE
CALL2 GRAB-ATTENTION,PER
ZERO? STACK \?CND66
RETURN 2
?CND66: PUTP PER,P?LDESC,12
PRINTR """I don't know what you mean."""
?CCL62: EQUAL? PRSA,V?THROW-AT \?CCL71
EQUAL? PER,PRSI \FALSE
FSET? PER,PERSONBIT \FALSE
FSET? PER,MUNGBIT /FALSE
MOVE PRSO,PRSI
ICALL HE-SHE-IT,PER,1
PRINTI " catches"
ICALL2 PRINT-THE,PRSO
PRINTI " with"
ICALL HIM-HER-IT,PER,0,TRUE-VALUE
PRINTC 32
PRINTI "righ"
PRINTR "t hand."
?CCL71: CALL2 COMMON-OTHER,PER
RSTACK
.FUNCT CARRY-CHECK:ANY:1:1,PER
FIRST? PER \FALSE
ICALL HE-SHE-IT,PER,1,STR?61
PRINTI " holding"
ICALL2 PRINT-CONTENTS,PER
PRINTR "."
.FUNCT TRANSIT-TEST:ANY:1:1,PER
EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /TRUE
EQUAL? PRSA,V?TAKE-TO,V?LEAVE,V?DISEMBARK /TRUE
RFALSE
.FUNCT COM-CHECK:ANY:1:1,PER,N
GETP PER,P?LINE >N
EQUAL? PRSA,V?$CALL \?CCL3
ICALL1 DONT-UNDERSTAND
RETURN M-OTHER
?CCL3: CALL2 TRANSIT-TEST,PER
ZERO? STACK /?CCL5
RETURN 2
?CCL5: EQUAL? PRSA,V?SORRY,V?HELLO,V?ALARM \?CCL9
EQUAL? PRSO,ROOMS /?CTR11
EQUAL? PRSO,PER \FALSE
?CTR11: SET 'WINNER,PLAYER
ICALL PERFORM,PRSA,PER
RTRUE
?CCL9: LESS? 0,N \?CCL16
PRINTI """I'm too "
EQUAL? N,1 \?CCL19
PRINTI "peeved"
JUMP ?CND17
?CCL19: PRINTI "angry"
?CND17: PRINTR " with you now."""
?CCL16: EQUAL? PRSA,V?YES,V?THANK,V?NO \?CCL21
RETURN 2
?CCL21: EQUAL? PRSA,V?WALK-TO,V?FOLLOW \?CCL25
EQUAL? PRSA,V?WALK-TO \?CCL28
EQUAL? PRSO,SLEEP-GLOBAL \?CCL28
RETURN 2
?CCL28: PRINTR """I will go where I please, thank you very much."""
?CCL25: EQUAL? PRSA,V?INVENTORY \?CCL34
CALL2 CARRY-CHECK,PER
ZERO? STACK \TRUE
ICALL HE-SHE-IT,PER,1,STR?61
PRINTR "n't holding anything."
?CCL34: EQUAL? PRSA,V?LISTEN \?CCL38
EQUAL? PRSO,PLAYER /?CTR40
IN? PRSO,GLOBAL-OBJECTS /FALSE
?CTR40: PRINTR """I'm trying to!"""
?CCL38: EQUAL? PRSA,V?RUB \?CND1
ICALL1 FACE-RED
RTRUE
?CND1: EQUAL? PRSA,V?WALK \?CCL47
EQUAL? PRSO,P?OUT \?CCL47
RETURN 2
?CCL47: EQUAL? PRSA,V?KISS \?CCL54
ICALL2 UNSNOOZE,PER
PRINTR """I really don't think this is the proper time or place."""
?CCL54: EQUAL? PRSA,V?TAKE \?CCL56
IN? PRSO,PLAYER \FALSE
SET 'WINNER,PLAYER
ICALL PERFORM,V?GIVE,PRSO,PER
RTRUE
?CCL56: EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?EXAMINE \?CCL61
IN? PRSO,PLAYER \FALSE
SET 'WINNER,PLAYER
ICALL PERFORM,V?SHOW,PER,PRSO
RTRUE
?CCL61: EQUAL? PRSA,V?THROW-AT,V?GIVE \?CCL66
FSET? PRSI,PERSONBIT \?CCL66
SET 'WINNER,PRSI
ICALL PERFORM,V?ASK-FOR,PER,PRSO
RTRUE
?CCL66: EQUAL? PRSA,V?SGIVE \?CCL70
FSET? PRSO,PERSONBIT \?CCL70
SET 'WINNER,PRSO
ICALL PERFORM,V?ASK-FOR,PER,PRSI
RTRUE
?CCL70: EQUAL? PRSA,V?HELP \?CCL74
EQUAL? PRSO,FALSE-VALUE,PLAYER \?PRG78
SET 'WINNER,PLAYER
ICALL PERFORM,V?ASK,PER
RTRUE
?PRG78: RETURN 2
?CCL74: EQUAL? PRSA,V?SSHOW,V?SHOW,V?FIND \?CCL81
EQUAL? PRSA,V?SHOW \?CND82
SET 'PRSA,V?SSHOW
SET 'N,PRSI
SET 'PRSI,PRSO
SET 'PRSO,N
?CND82: IN? PRSO,ROOMS \?CCL86
SET 'WINNER,PLAYER
ICALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CCL86: IN? PRSO,PER \?CCL88
CALL1 ITAKE
EQUAL? STACK,TRUE-VALUE \TRUE
ICALL HE-SHE-IT,PER,1
PRINTI " fumbles in"
ICALL HIM-HER-IT,PER,0,TRUE-VALUE
PRINTI " pocket and produces"
ICALL2 HIM-HER-IT,PRSO
PRINTR "."
?CCL88: EQUAL? PRSA,V?FIND \FALSE
RETURN 2
?CCL81: EQUAL? PRSA,V?TELL \?CCL96
EQUAL? PRSO,PLAYER \FALSE
SET 'WINNER,PLAYER
ICALL PERFORM,V?ASK,PER
RTRUE
?CCL96: EQUAL? PRSA,V?TELL-ABOUT \?CCL101
FSET? PRSO,PERSONBIT \FALSE
SET 'WINNER,PLAYER
ICALL PERFORM,V?ASK-ABOUT,PER,PRSI
RTRUE
?CCL101: EQUAL? PRSA,V?WAIT-FOR,V?STOP \?CCL106
EQUAL? PRSO,ROOMS /?CCL109
EQUAL? PRSO,PLAYER,GLOBAL-HERE,HERE \FALSE
?CCL109: EQUAL? PER,FOLLOWER \?CCL114
SET 'FOLLOWER,0
PRINTR """As you wish."""
?CCL114: SET 'WINNER,PLAYER
ICALL PERFORM,V?$CALL,PER
RTRUE
?CCL106: EQUAL? PRSA,V?TALK-ABOUT \FALSE
SET 'WINNER,PLAYER
ICALL PERFORM,V?ASK-ABOUT,PER,PRSO
RTRUE
.FUNCT COMMON-ASK-ABOUT:ANY:2:2,PER,OBJ
EQUAL? OBJ,PER \?CCL3
PRINTR """I have no secrets. Anyone can see what I am."""
?CCL3: EQUAL? OBJ,PLAYER \?CCL5
PRINTR """You're Arthur Dent, the next-to-last Earthling."""
?CCL5: FSET? OBJ,PERSONBIT /FALSE
EQUAL? OBJ,OBJECT-OF-GAME \?CCL9
PRINTR """Oh...you're trying to figure that out also? The manual's not much help, is it? By the way, do you know your score? I don't. My computer doesn't have a status line."""
?CCL9: IN? OBJ,PER \FALSE
PRINTR """I have it right here."""
.FUNCT COMMON-OTHER:ANY:1:1,PER,X,N
EQUAL? PRSA,V?ASK /FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
GETP PER,P?TEXT
PRINT STACK
CRLF
IN? PER,HERE \?CND6
FIRST? PER >N \?CND6
FSET? N,NDESCBIT /?CND6
CALL2 CARRY-CHECK,PER
ZERO? STACK /?CND6
SET 'X,TRUE-VALUE
?CND6: FSET? PER,MUNGBIT \TRUE
ZERO? X /?CND15
PRINTI "And"
?CND15: ZERO? X /?PRT17
PUSH 0
JUMP ?PRE19
?PRT17: PUSH 1
?PRE19: ICALL HE-SHE-IT,PER,STACK,STR?61
PRINTC 32
GETP PER,P?LDESC
GET LDESC-STRINGS,STACK
PRINT STACK
PRINTR "."
?CCL5: EQUAL? PRSO,PER \FALSE
EQUAL? PRSA,V?SHOW \FALSE
ICALL PERFORM,V?ASK-ABOUT,PRSO,PRSI
RTRUE
.ENDI