-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathstation.zap
More file actions
407 lines (368 loc) · 9.61 KB
/
station.zap
File metadata and controls
407 lines (368 loc) · 9.61 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
.FUNCT ON-PLATFORM?,RM
EQUAL? RM,PLATFORM-A,PLATFORM-B,PLATFORM-C /?THN6
EQUAL? RM,PLATFORM-D,PLATFORM-E \FALSE
?THN6: GETP RM,P?CAR
RSTACK
.FUNCT PLATFORM-GLOBAL-F,P
EQUAL? PRSA,V?WALK-TO \?ELS5
ZERO? ON-TRAIN /?ELS5
CALL PERFORM,V?LEAVE,TRAIN
RTRUE
?ELS5: CALL2 ON-PLATFORM?,HERE
ZERO? STACK /?ELS9
CALL DO-INSTEAD-OF,HERE,PLATFORM-GLOBAL
RTRUE
?ELS9: CALL ZMEMQ,HERE,STATION-ROOMS
ZERO? STACK /?ELS11
GETP HERE,P?CAR
GET STATION-ROOMS,STACK
CALL DO-INSTEAD-OF,STACK,PLATFORM-GLOBAL
RTRUE
?ELS11: ZERO? ON-TRAIN /FALSE
ZERO? IN-STATION /FALSE
CALL GLOBAL-IN?,SCENERY-LEFT,HERE
ZERO? STACK /FALSE
GET STATION-ROOMS,CAR-HERE
CALL DO-INSTEAD-OF,STACK,PLATFORM-GLOBAL
RTRUE
.FUNCT PASS-CUSTOMS-F
ZERO? CUSTOMS-SWEEP \?ELS5
GETP PLATFORM-A,P?CAR
CALL NEXT-CAR-SWITCHEROO,CAR-HERE,STACK
RETURN PLATFORM-A
?ELS5: FSET? PASSPORT,LOCKED \?ELS7
CALL2 START-SENTENCE,CUSTOMS-AGENT
PRINTI " makes a gesture, asking for "
PRINTD PASSPORT
PRINTI "."
CRLF
CALL2 THIS-IS-IT,PASSPORT
CALL2 THIS-IS-IT,CUSTOMS-AGENT
RFALSE
?ELS7: ZERO? BRIEFCASE-PASSED \?ELS11
IN? BRIEFCASE,PLAYER \?ELS11
CALL2 START-SENTENCE,CUSTOMS-AGENT
PRINTI " makes a gesture, "
FSET? BRIEFCASE,OPENBIT \?ELS18
PRINTI "pointing at"
CALL2 HIM-HER-IT,BRIEFCASE
PRINTI "."
CRLF
JUMP ?CND16
?ELS18: PRINTI "as if to say, ""Open"
CALL2 HIM-HER-IT,BRIEFCASE
PRINTI "."""
CRLF
?CND16: CALL2 THIS-IS-IT,BRIEFCASE
CALL2 THIS-IS-IT,CUSTOMS-AGENT
RFALSE
?ELS11: FIRST? POCKET \?ELS26
CALL2 START-SENTENCE,CUSTOMS-AGENT
PRINTI " makes a gesture, as if to say, ""Empty "
PRINTD POCKET
PRINTI "."""
CRLF
CALL2 THIS-IS-IT,POCKET
CALL2 THIS-IS-IT,CUSTOMS-AGENT
RFALSE
?ELS26: IN? MCGUFFIN,PLAYER \?ELS30
CALL2 START-SENTENCE,CUSTOMS-AGENT
PRINTI " confiscates"
CALL2 HIM-HER-IT,MCGUFFIN
PRINTI " and arrests you!"
CRLF
CALL1 FINISH
RSTACK
?ELS30: IN? GUN,PLAYER \?ELS34
CALL2 START-SENTENCE,CUSTOMS-AGENT
PRINTI " confiscates"
CALL2 HIM-HER-IT,GUN
PRINTI " and arrests you!"
CRLF
CALL1 FINISH
RSTACK
?ELS34: CALL FLUSH?,CAR-ROOMS,FALSE-VALUE,FALSE-VALUE,FALSE-VALUE
CALL FLUSH?,CAR-ROOMS,TRUE-VALUE,FALSE-VALUE,FALSE-VALUE
CALL FLUSH?,CAR-ROOMS-DINER,FALSE-VALUE,FALSE-VALUE,FALSE-VALUE
CALL FLUSH?,CAR-ROOMS-FANCY,FALSE-VALUE,FALSE-VALUE,FALSE-VALUE
CALL QUEUE,I-DEPART-WARNING,5
PUT STACK,0,1
GETP PLATFORM-A,P?CAR
CALL NEXT-CAR-SWITCHEROO,CAR-HERE,STACK
CALL HE-SHE-IT,CUSTOMS-AGENT,TRUE-VALUE,STR?34
PRINTI " approvingly."
CRLF
RETURN PLATFORM-A
.FUNCT UNPASS-CUSTOMS-F
ZERO? CUSTOMS-SWEEP /?ELS5
ZERO? IN-STATION /?ELS5
CALL2 START-SENTENCE,GUARD
PRINTI " prevents you and points to the train."
CRLF
RFALSE
?ELS5: GETP PLATFORM-B,P?CAR
CALL NEXT-CAR-SWITCHEROO,CAR-HERE,STACK
RETURN PLATFORM-B
.FUNCT NEXT-PLATFORM-TO-REAR-F
CALL2 NEXT-PLATFORM-F,1
RSTACK
.FUNCT NEXT-PLATFORM-TO-FWD-F
CALL2 NEXT-PLATFORM-F,-1
RSTACK
.FUNCT NEXT-PLATFORM-F,D,N
GETP HERE,P?CAR
ADD D,STACK >N
CALL NEXT-CAR-SWITCHEROO,CAR-HERE,N
GET STATION-ROOMS,N
RSTACK
.FUNCT PLATFORM-F,RARG=0,P
EQUAL? RARG,M-LOOK \?ELS5
FSET PLATFORM-A,TOUCHBIT
FSET PLATFORM-B,TOUCHBIT
FSET PLATFORM-C,TOUCHBIT
FSET PLATFORM-D,TOUCHBIT
FSET PLATFORM-E,TOUCHBIT
PRINTI "You are standing "
EQUAL? HERE,PLATFORM-A \?ELS10
PRINTI "at the north end of "
JUMP ?CND8
?ELS10: EQUAL? HERE,PLATFORM-E \?ELS14
PRINTI "at the south end of "
JUMP ?CND8
?ELS14: PRINTI "on "
?CND8: PRINTI "the concrete platform of the "
PRINTD SCENERY-OBJ
PRINTI " railway station. A cantilevered roof looms overhead, with occasional drops of rain water falling from its edge. To the west is the "
EQUAL? HERE,PLATFORM-A \?ELS25
PRINTD REST-ROOM-MEN
JUMP ?CND23
?ELS25: EQUAL? HERE,PLATFORM-B \?ELS27
PRINTD REST-ROOM-WOMEN
JUMP ?CND23
?ELS27: EQUAL? HERE,PLATFORM-E \?ELS29
PRINTD LUGGAGE-ROOM
JUMP ?CND23
?ELS29: EQUAL? HERE,PLATFORM-C \?ELS34
PRINTI "entrance to "
JUMP ?CND32
?ELS34: PRINTI "wall of "
?CND32: PRINTI "the station house"
?CND23: PRINTI ". To the east "
ZERO? IN-STATION /?ELS47
PRINTI "is a passenger train, the "
PRINT TRAIN-NAME
PRINTI ", hissing and blowing off steam"
JUMP ?CND45
?ELS47: PRINTI "are the train tracks"
?CND45: PRINTR ". The place is crowded with people milling about, searching for a certain passenger or the right car, or simply waiting."
?ELS5: EQUAL? RARG,M-BEG \?ELS63
CALL1 EXIT-VERB?
ZERO? STACK /FALSE
EQUAL? VARIATION,2,4 \?ELS71
CALL FIND-FLAG-HERE,PERSONBIT,PLAYER >P
JUMP ?CND69
?ELS71: CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,CONTACT,BAD-SPY >P
?CND69: ZERO? P /FALSE
CALL IN-MOTION?,P,TRUE-VALUE
ZERO? STACK \FALSE
EQUAL? P,GUARD \?CND79
ZERO? GUARD-SUSPICION /?CND79
FSET? GUARD,TOUCHBIT \?CND79
FCLEAR GUARD,TOUCHBIT
PUTP GUARD,P?LDESC,10
PRINTI "You lose the guard in the crowd."
CRLF
?CND79: FSET P,NDESCBIT
RFALSE
?ELS63: EQUAL? RARG,M-END \?ELS87
CALL2 CROWD-F,TRUE-VALUE
RFALSE
?ELS87: EQUAL? RARG,M-ENTER \?ELS89
ZERO? CUSTOMS-SWEEP /FALSE
ZERO? IN-STATION /FALSE
LOC CONDUCTOR
CALL2 ON-PLATFORM?,STACK
ZERO? STACK \FALSE
CALL2 QUEUED?,I-TRAIN-ARREST
ZERO? STACK \FALSE
GET GOAL-TABLES,CONDUCTOR-C
CALL CONDUCTOR-OFF,STACK,FALSE-VALUE
RFALSE
?ELS89: ZERO? RARG \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
IN? CONTACT,HERE /FALSE
CALL2 CALL-FOR-EXTRA,HERE
RFALSE
.FUNCT NO-EMBARK-TEST
ZERO? IN-STATION /FALSE
ZERO? CUSTOMS-SWEEP /FALSE
FSET? PASSPORT,LOCKED /TRUE
EQUAL? HERE,PLATFORM-A \TRUE
ZERO? BRIEFCASE-PASSED \FALSE
IN? BRIEFCASE,WINNER /TRUE
RFALSE
.FUNCT EMBARK-F
CALL1 NO-EMBARK-TEST
ZERO? STACK /?ELS5
PRINTI "You have to pass"
CALL2 HIM-HER-IT,CUSTOMS-AGENT
PRINTI " first."
CRLF
RFALSE
?ELS5: ZERO? IN-STATION \?THN10
EQUAL? HERE,BESIDE-TRACKS \?ELS9
?THN10: SET 'ON-TRAIN,TRUE-VALUE
ZERO? PULLED-STOP-CORD /?CND12
CALL1 I-TRAIN-ARREST
?CND12: FSET? PEN,TOUCHBIT /?CND16
FSET PEN,NDESCBIT
?CND16: CALL2 V-REAR,CAR-HERE
RSTACK
?ELS9: PRINTI "Walking on the tracks looks too dangerous!"
CRLF
RFALSE
.FUNCT CROWD-F,ARG=0,OBJ
ZERO? ARG \?THN8
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?THN8
EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE,V?EXAMINE \?ELS5
?THN8: SET 'OBJ,CONTACT
IN? OBJ,HERE \?ELS18
FSET? OBJ,NDESCBIT /?THN15
?ELS18: SET 'OBJ,GUARD
IN? OBJ,HERE \?ELS20
FSET? OBJ,NDESCBIT /?THN15
?ELS20: CALL CALL-FOR-EXTRA,HERE,FALSE-VALUE >OBJ
ZERO? OBJ /FALSE
?THN15: FCLEAR OBJ,NDESCBIT
PRINTI "One part of the crowd catches your eye: "
CALL2 DESCRIBE-PERSON,OBJ
CALL2 THIS-IS-IT,OBJ
RTRUE
?ELS5: EQUAL? PRSA,V?THROUGH \?ELS24
PRINTR "You do your best to mingle with the crowd, but you can't help feeling like a conspicuous foreigner."
?ELS24: EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "Familiar crowd noises: the buzz of conversations, the clunk of luggage and parcels, and echoes from the bare surfaces."
.FUNCT LUGGAGE-ROOM-F,RARG=0
EQUAL? RARG,M-ENTER \FALSE
MOVE CLERK,LUGGAGE-ROOM
RFALSE
.FUNCT REST-ROOM-STATION-TEST,RARG
LOC CONTACT
EQUAL? STACK,REST-ROOM-MEN,REST-ROOM-WOMEN \FALSE
EQUAL? VARIATION,3,4 \?ELS7
EQUAL? RARG,M-OTHER \FALSE
RTRUE
?ELS7: EQUAL? RARG,M-FLASH \FALSE
RTRUE
.FUNCT REST-ROOM-STATION-F,RARG=0,X,Y,N,V
EQUAL? RARG,M-ENTER \?ELS5
MOVE PAPER-FIXTURE,HERE
RFALSE
?ELS5: CALL2 REST-ROOM-STATION-TEST,RARG
ZERO? STACK /FALSE
CALL2 RANDOM-PER-VAR,CONTACT-MAX
GET EXTRA-TABLE,STACK >X
CALL MOVE-EXTRA?,X,LIMBO-FWD,1
ZERO? STACK \?CND8
SET 'N,CONTACT-MAX
?PRG11: GET EXTRA-TABLE,N >X
CALL MOVE-EXTRA?,X,LIMBO-FWD,1
ZERO? STACK /?ELS15
JUMP ?CND8
?ELS15: DLESS? 'N,1 \?PRG11
CALL1 V-FOO
JUMP ?PRG11
?CND8: CALL2 VISIBLE?,CONTACT >V
EQUAL? RARG,M-FLASH \?ELS20
CALL1 GUARD-NOTICES
FCLEAR MCGUFFIN,NDESCBIT
MOVE MCGUFFIN,PLAYER
CALL2 SET-PASSES,3
FSET MCGUFFIN,TAKEBIT
CALL HE-SHE-IT,CONTACT,TRUE-VALUE,STR?298
PRINTI " you the "
PRINTD MCGUFFIN
JUMP ?CND18
?ELS20: SET 'TRAVELER-CHECKED-CASE,FALSE-VALUE
SET 'N,0
GET BRIEFCASE-TBL,0 >Y
?PRG25: IGRTR? 'N,Y \?ELS29
MOVE MCGUFFIN,BAD-SPY
JUMP ?REP26
?ELS29: GET BRIEFCASE-TBL,N
ZERO? STACK \?PRG25
PUT BRIEFCASE-TBL,N,MCGUFFIN
?REP26: CALL2 SET-PASSES,2
ZERO? V /?CND18
CALL2 START-SENTENCE,BAD-SPY
PRINTI " enters, looking very nervous. "
CALL2 START-SENTENCE,CONTACT
PRINTI " gives something to"
CALL2 THIS-IS-IT,BAD-SPY
CALL2 HIM-HER-IT,BAD-SPY
?CND18: ZERO? V /?CND40
PRINTI " and whispers, "
EQUAL? VARIATION,3,4 \?ELS48
CALL2 PRODUCE-GIBBERISH,4
PRINTI "(Fortunately, you can translate two phrases: """
PRINTD PASSWORD
PRINTI """ and """
PRINTD PASSOBJECT
PRINTI "."")"
CRLF
JUMP ?CND46
?ELS48: PRINTI """No time. Meet agent, "
CALL2 PRINTA,X
PRINTI ", in Gola; display "
CALL2 PRINTA,PASSOBJECT
PRINTI "; use word"
EQUAL? PASSWORD,CAMERA,HANKY,SCARF \?CND55
PRINTI "s"
?CND55: PRINTI " '"
PRINTD PASSWORD
PRINTI "'."" "
?CND46: PRINTI "Then"
CALL2 HE-SHE-IT,CONTACT
PRINTI " is gone."
CRLF
?CND40: CALL2 NEW-CONTACT,X
EQUAL? RARG,M-FLASH /TRUE
ZERO? V \TRUE
RFALSE
.FUNCT NEW-CONTACT,X
FCLEAR CONTACT,TOUCHBIT
PUTP CONTACT,P?LDESC,0
MOVE CONTACT,LIMBO-FWD
PUTP CONTACT,P?ACTION,CONTACT-DEFAULT-F
SET 'CONTACT,X
GETP CONTACT,P?ACTION >CONTACT-DEFAULT-F
PUTP CONTACT,P?ACTION,CONTACT-F
RTRUE
.FUNCT COUNTER-CAFE-F
EQUAL? PRSA,V?SIT-AT \FALSE
CALL PERFORM,V?SIT,CHAIR
RTRUE
.FUNCT TICKET-AREA-F,RARG=0
EQUAL? RARG,M-ENTER \FALSE
MOVE CLERK,TICKET-AREA
RFALSE
.FUNCT TOWN-F
PRINTI "As you start to venture into the town,"
CALL2 HE-SHE-IT,OFFICER
CALL2 THIS-IS-IT,OFFICER
PRINTI " recognizes you as an unauthorized foreigner and takes a step in your direction. As you stop walking, so does"
CALL2 HE-SHE-IT,OFFICER
PRINTI "."
CRLF
FSET OFFICER,SEENBIT
RFALSE
.FUNCT SIDEWALK-F,RARG=0
EQUAL? RARG,M-END \?ELS5
CALL2 CROWD-F,TRUE-VALUE
RFALSE
?ELS5: ZERO? RARG \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
IN? CONTACT,HERE /FALSE
CALL2 CALL-FOR-EXTRA,HERE
RFALSE
.ENDI