Final Revision

This commit is contained in:
historicalsource 2019-04-13 22:12:44 -04:00
commit 8ae301e53b
78 changed files with 107421 additions and 0 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# checkpoint

252
cars.zap Normal file
View File

@ -0,0 +1,252 @@
.FUNCT DINER-F
EQUAL? PRSA,V?WALK-TO \FALSE
EQUAL? CAR-HERE,DINER-CAR \?ELS10
CALL1 HAR-HAR
RSTACK
?ELS10: ZERO? DINER-TOUCHED /FALSE
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "(You'll have to get there on your own.)"
.FUNCT GENERIC-BOOTH-F,X
EQUAL? HERE,HALL-1-DINER,BOOTH-1 \?ELS5
RETURN BOOTH-1
?ELS5: EQUAL? HERE,HALL-2-DINER,BOOTH-2 \?ELS7
RETURN BOOTH-2
?ELS7: EQUAL? HERE,HALL-3-DINER,BOOTH-3 \?ELS9
RETURN BOOTH-3
?ELS9: CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTI "(You can't see any booth here.)"
CRLF
RETURN NOT-HERE-OBJECT
.FUNCT PANTRY-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
CALL2 ROOM-IS-CROWDED,PANTRY
RSTACK
?ELS5: EQUAL? RARG,M-END \FALSE
IN? WAITER,PANTRY \FALSE
CALL2 INVASION?,WAITER
RFALSE
.FUNCT INVASION?,PER
GETP PER,P?SOUTH
LESS? 0,STACK /FALSE
EQUAL? PRSA,V?SMILE /FALSE
EQUAL? PRSA,V?KISS,V?GIVE,V?$CALL /FALSE
EQUAL? INVASION-TIME,PRESENT-TIME /FALSE
ZERO? CLOCK-WAIT \FALSE
SET 'INVASION-TIME,PRESENT-TIME
CALL HE-SHE-IT,PER,TRUE-VALUE,STR?154
PRINTI " a pushing motion with one hand and points forward with the other. "
CALL HE-SHE-IT,PER,TRUE-VALUE,STR?194
PRINTI " angry that you're invading"
CALL HIM-HER-IT,PER,FALSE-VALUE,TRUE-VALUE
PRINTR " space."
.FUNCT GALLEY-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
CALL2 ROOM-IS-CROWDED,GALLEY
RSTACK
?ELS5: EQUAL? RARG,M-END \FALSE
IN? COOK,GALLEY \FALSE
CALL2 INVASION?,COOK
RFALSE
.FUNCT COUNTER-GALLEY-F
EQUAL? PRSA,V?LOOK-ON,V?EXAMINE \FALSE
PRINTR "The counter is crowded with kitchen hardware and software."
.FUNCT ROOM-IS-CROWDED,RM
CALL2 START-SENTENCE,RM
PRINTI " is crowded with supplies and equipment. The locked cabinets are probably filled with "
EQUAL? RM,PANTRY \?ELS5
PRINTI "dishes, tableware, and napkins"
JUMP ?CND3
?ELS5: EQUAL? RM,GALLEY \?CND3
PRINTI "food, kettles, and kitchen tools. There's a crowded counter for preparing food"
?CND3: PRINTR ". If you want to find something, you'll have to search for it."
.FUNCT BOOTH-F,RARG=0,?TMP1
EQUAL? RARG,M-ENTER \?ELS5
ZERO? DEBUG /?CND6
PRINTI "[booth entry routine]"
CRLF
?CND6: IN? WAITER,HERE \?ELS16
PUTP WAITER,P?LDESC,25
RFALSE
?ELS16: EQUAL? SCENERY-OBJ,STATION-GRNZ /FALSE
CALL ESTABLISH-GOAL,WAITER,HERE
RFALSE
?ELS5: EQUAL? RARG,M-END \?ELS22
CALL1 EXIT-VERB?
ZERO? STACK /FALSE
CALL2 META-LOC,FOOD
EQUAL? HERE,STACK /?THN30
CALL2 META-LOC,CUP-A >?TMP1
CALL2 META-LOC,CUP-B
EQUAL? HERE,?TMP1,STACK \FALSE
?THN30: CALL ESTABLISH-GOAL,WAITER,HERE
RFALSE
?ELS22: EQUAL? RARG,M-LOOK \?ELS33
FSET BOOTH-1,TOUCHBIT
FSET BOOTH-2,TOUCHBIT
FSET BOOTH-3,TOUCHBIT
CALL1 BOOTH-DESC
CALL1 MOTION-PREFIX
RTRUE
?ELS33: EQUAL? RARG,M-BEG \FALSE
CALL1 PERSON-TAKES-GUN?
RSTACK
.FUNCT BOOTH-DESC
PRINTI "This is a diner booth on the "
PRINT TRAIN-NAME
PRINTR ". In fact, it looks as if the railway company just converted a first-class coach into a diner by removing the door and adding a table to each compartment."
.FUNCT FROY-F
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
FSET? FROY,TOUCHBIT /?ELS10
FSET FROY,TOUCHBIT
FSET FROY,NDESCBIT
PRINTR "It's hard to read in this light, but the writing seems to say ""FROY."""
?ELS10: PRINTR "Hmmm... The writing seems to have vanished."
.FUNCT REST-ROOM-REAR-DINER-DOOR-F
CALL REST-ROOM-DOOR-F,REST-ROOM-REAR-DINER-DOOR,REST-ROOM-REAR-DINER
RSTACK
.FUNCT REST-ROOM-FWD-DINER-DOOR-F
CALL REST-ROOM-DOOR-F,REST-ROOM-FWD-DINER-DOOR,REST-ROOM-FWD-DINER
RSTACK
.FUNCT MACHINE-F,P
EQUAL? PRSO,MACHINE \?ELS5
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
CALL1 YOU-CANT
RSTACK
?ELS5: EQUAL? PRSA,V?LOOK-THROUGH /?THN10
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?ANALYZE \?ELS9
?THN10: PRINTR "The plastic panel is so scratched and grimy that you can barely see the display of cigarette packs inside."
?ELS9: EQUAL? PRSA,V?MUNG \?ELS15
PRINTR "It seems that someone else beat you to it."
?ELS15: EQUAL? PRSA,V?SHAKE,V?SLAP,V?ATTACK \?ELS19
FSET? MACHINE,MUNGBIT /?ELS19
FSET? CIGARETTE,TOUCHBIT /?ELS19
LOC CIGARETTE >P
FSET? P,PERSONBIT \?CND22
GETP P,P?LDESC
EQUAL? 5,STACK \?CND22
FCLEAR P,TOUCHBIT
PUTP P,P?LDESC,4
?CND22: FSET CIGARETTE,TOUCHBIT
FSET CIGARETTE,TAKEBIT
MOVE CIGARETTE,HERE
CALL2 THIS-IS-IT,CIGARETTE
PRINTR "The machine shudders and disgorges a single cigarette onto the floor."
?ELS19: EQUAL? PRSA,V?PUT-IN /?THN31
EQUAL? PRSA,V?SHAKE,V?SLAP,V?ATTACK \FALSE
?THN31: EQUAL? PRSA,V?PUT-IN \?CND33
ZERO? P-DOLLAR-FLAG /?ELS38
EQUAL? PRSO,GLOBAL-MONEY,INTNUM \?ELS38
GETP PLAYER,P?SOUTH
LESS? STACK,P-AMOUNT /?ELS38
EQUAL? VARIATION,2,4 \?CND41
FSET MACHINE,MUNGBIT
?CND41: GETP PLAYER,P?SOUTH
SUB STACK,P-AMOUNT
PUTP PLAYER,P?SOUTH,STACK
JUMP ?CND33
?ELS38: CALL1 YOU-CANT
RTRUE
?CND33: RANDOM 100
LESS? 50,STACK /?ELS48
PRINTI """Whirr, buzz"
JUMP ?CND46
?ELS48: PRINTI """Whizz, burr"
?CND46: PRINTR ", click!"" Nothing else happens."
.FUNCT PICK-ONE-BOOTH,X
RANDOM 3 >X
EQUAL? X,1 \?ELS5
RETURN BOOTH-1
?ELS5: EQUAL? X,2 \?ELS7
RETURN BOOTH-2
?ELS7: EQUAL? X,3 \FALSE
RETURN BOOTH-3
.FUNCT SUITE-1-DOOR-F
CALL2 COMPARTMENT-DOOR-F,SUITE-1-DOOR
RSTACK
.FUNCT SUITE-2-DOOR-F
CALL2 COMPARTMENT-DOOR-F,SUITE-2-DOOR
RSTACK
.FUNCT SUITE-3-DOOR-F
CALL2 COMPARTMENT-DOOR-F,SUITE-3-DOOR
RSTACK
.FUNCT SUITE-F,RARG=0,N
ZERO? RARG /FALSE
CALL1 V-FOO
RTRUE
.FUNCT HALL-FANCY-F,RARG=0,X,TOUCHED=0,VAL=0
FSET? HALL-1-FANCY,TOUCHBIT /?THN4
FSET? HALL-1-FANCY,TOUCHBIT /?THN4
FSET? HALL-1-FANCY,TOUCHBIT \?CND1
?THN4: SET 'TOUCHED,TRUE-VALUE
?CND1: EQUAL? RARG,M-LOOK /?THN11
ZERO? RARG \?ELS10
EQUAL? PRSA,V?LOOK \?ELS10
?THN11: FSET HERE,TOUCHBIT
PRINTI "This is the "
PRINTD HERE
PRINTI " of the corridor."
EQUAL? PRSA,V?LOOK /?THN20
ZERO? TOUCHED \?CND17
?THN20: PRINTI " The floor and walls are covered with grey carpet, worn thin in spots but intact. A long series of windows, framed by polished wood, runs along the corridor on the right-hand side of the train."
?CND17: EQUAL? PLAYER-NOT-FACING,P?WEST \?ELS26
CRLF
RTRUE
?ELS26: GETPT HERE,P?IN
GET STACK,REXIT >X
CALL2 THIS-IS-IT,X
PRINTI " On the left side of the train, behind a locked door, lies the "
PRINTD X
PRINTR "."
?ELS10: EQUAL? RARG,M-ENTER \FALSE
CALL2 NOISY?,LAST-PLAYER-LOC
ZERO? STACK /?CND33
SET 'VAL,TRUE-VALUE
PRINTI "The relative quiet here is welcome. "
?CND33: ZERO? TOUCHED \?CND41
SET 'VAL,TRUE-VALUE
PRINTI "The feel of luxury here is unmistakable."
?CND41: ZERO? VAL /FALSE
CRLF
RFALSE
.ENDI

746
cars.zil Normal file
View File

@ -0,0 +1,746 @@
"CARS for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<OBJECT DINER
(LOC GLOBAL-OBJECTS)
(DESC "dining car")
(ADJECTIVE DINER DINING CLUB)
(SYNONYM DINER CAR CARRIAGE)
(ACTION DINER-F)>
<ROUTINE DINER-F ()
<COND (<VERB? WALK-TO>
<COND (<==? ,CAR-HERE ,DINER-CAR>
<HAR-HAR>)
(,DINER-TOUCHED
<SETG CLOCK-WAIT T>
<TELL "(You'll have to get there on your own.)" CR>)>)>>
<ROOM REST-ROOM-FWD-DINER
(LOC ROOMS)
;(OTHER OTHER-REST-ROOM-FWD)
(FLAGS ;RLANDBIT ONBIT)
(DESC "forward restroom")
(ADJECTIVE NORTH N FORWARD FRONT F FORE REST)
(SYNONYM RESTROOM BATHROOM LAVATORY TOILET ROOM)
(GENERIC GENERIC-REST-ROOM-F)
(LINE 3)
(STATION VESTIBULE-FWD-DINER)
;(NORTH TO VESTIBULE-FWD-DINER IF REST-ROOM-FWD-DINER-DOOR IS OPEN)
(WEST TO VESTIBULE-FWD-DINER IF REST-ROOM-FWD-DINER-DOOR IS OPEN)
(OUT TO VESTIBULE-FWD-DINER IF REST-ROOM-FWD-DINER-DOOR IS OPEN)
(GLOBAL REST-ROOM-FWD-DINER-DOOR ;STOP-CORD MIRROR TOILET
SINK TOWEL-FIXTURE TOWEL-LOOP FIXTURES)
(ACTION REST-ROOM-F)>
<ROOM BOOTH-1
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "first booth")
(ADJECTIVE FIRST)
(SYNONYM BOOTH ROOM)
(LINE 3)
(CORRIDOR *2000*)
(STATION HALL-1-DINER)
(EAST TO HALL-1-DINER)
(OUT TO HALL-1-DINER)
(GLOBAL WINDOW-1 SCENERY-LEFT ;STOP-CORD MENU ITEMS ;CHAIR)
(GENERIC GENERIC-BOOTH-F)
(ACTION BOOTH-F)>
<OBJECT TABLE-1
(LOC BOOTH-1)
(ADJECTIVE DINING)
(SYNONYM TABLE)
(FLAGS SEARCHBIT SURFACEBIT OPENBIT NDESCBIT ;VEHBIT)
(CAPACITY 100)
(DESC "dining table")>
<ROOM BOOTH-2
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "second booth")
(ADJECTIVE SECOND)
(SYNONYM BOOTH ROOM)
(STATION HALL-2-DINER)
(LINE 3)
(CORRIDOR *4000*)
(EAST TO HALL-2-DINER)
(OUT TO HALL-2-DINER)
(GLOBAL WINDOW-2 SCENERY-LEFT ;STOP-CORD MENU ITEMS ;CHAIR)
(GENERIC GENERIC-BOOTH-F)
(ACTION BOOTH-F)>
<OBJECT TABLE-2
(LOC BOOTH-2)
(ADJECTIVE DINING)
(SYNONYM TABLE)
(FLAGS SEARCHBIT SURFACEBIT OPENBIT NDESCBIT ;VEHBIT)
(CAPACITY 100)
(DESC "dining table")>
<ROOM BOOTH-3
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "third booth")
(ADJECTIVE THIRD LAST)
(SYNONYM BOOTH ROOM)
(STATION HALL-3-DINER)
(LINE 3)
(CORRIDOR *10000*)
(EAST TO HALL-3-DINER)
(OUT TO HALL-3-DINER)
(GLOBAL WINDOW-3 SCENERY-LEFT ;STOP-CORD MENU ITEMS ;CHAIR)
(GENERIC GENERIC-BOOTH-F)
(ACTION BOOTH-F)>
<OBJECT TABLE-3
(LOC BOOTH-3)
(ADJECTIVE DINING)
(SYNONYM TABLE)
(FLAGS SEARCHBIT SURFACEBIT OPENBIT NDESCBIT ;VEHBIT)
(CAPACITY 100)
(DESC "dining table")>
<ROUTINE GENERIC-BOOTH-F (X)
<COND (<EQUAL? ,HERE ,HALL-1-DINER ,BOOTH-1> ,BOOTH-1)
(<EQUAL? ,HERE ,HALL-2-DINER ,BOOTH-2> ,BOOTH-2)
(<EQUAL? ,HERE ,HALL-3-DINER ,BOOTH-3> ,BOOTH-3)
(<REMOTE-VERB?> <RFALSE>)
(T
<SETG CLOCK-WAIT T>
<TELL "(You can't see any booth here.)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT EQUIPMENT
(LOC LOCAL-GLOBALS)
(DESC "equipment")
(SYNONYM EQUIPMENT SUPPLIES)
(ACTION RANDOM-PSEUDO)>
<ROOM PANTRY
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "pantry")
(ADJECTIVE FOURTH)
(SYNONYM PANTRY ROOM)
(STATION HALL-4-DINER)
(LINE 3)
(CORRIDOR *20000*)
(EAST TO HALL-4-DINER)
(OUT TO HALL-4-DINER)
(GLOBAL WINDOW-4 SCENERY-LEFT ;STOP-CORD EQUIPMENT)
(ACTION PANTRY-F)>
<ROUTINE PANTRY-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<ROOM-IS-CROWDED ,PANTRY>)
(<==? .RARG ,M-END>
<COND (<IN? ,WAITER ,PANTRY>
<INVASION? ,WAITER>
<RFALSE>)>)>>
<GLOBAL INVASION-TIME 0>
<ROUTINE INVASION? (PER)
<COND (<L? 0 <GETP .PER ,P?SOUTH>> <RFALSE>) ;"(partly) bribed"
(<VERB? $CALL GIVE KISS SMILE> <RFALSE>)
(<==? ,INVASION-TIME ,PRESENT-TIME> <RFALSE>)
(<AND ;,P-WON <NOT ,CLOCK-WAIT>>
<SETG INVASION-TIME ,PRESENT-TIME>
<TELL
CHE .PER make " a pushing motion with one hand and points forward with
the other. " CHE .PER seem " angry that you're invading" HIS .PER
" space." CR>)>>
<ROOM GALLEY
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "galley")
(ADJECTIVE FIFTH)
(SYNONYM GALLEY KITCHEN ROOM)
(STATION HALL-5-DINER)
(LINE 3)
(CORRIDOR *40000*)
(EAST TO HALL-5-DINER)
(OUT TO HALL-5-DINER)
(GLOBAL WINDOW-5 SCENERY-LEFT ;STOP-CORD EQUIPMENT)
(ACTION GALLEY-F)>
<ROUTINE GALLEY-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<ROOM-IS-CROWDED ,GALLEY>)
(<==? .RARG ,M-END>
<COND (<IN? ,COOK ,GALLEY>
<INVASION? ,COOK>
<RFALSE>)>)>>
<OBJECT COUNTER-GALLEY
(LOC GALLEY)
(DESC "counter")
(ADJECTIVE CROWDED)
(SYNONYM COUNTER)
(FLAGS SEARCHBIT SURFACEBIT OPENBIT NDESCBIT ;VEHBIT)
(CAPACITY 200)
(ACTION COUNTER-GALLEY-F)>
<ROUTINE COUNTER-GALLEY-F ()
<COND (<VERB? EXAMINE LOOK-ON>
<TELL
"The counter is crowded with kitchen hardware and software." CR>)>>
<ROUTINE ROOM-IS-CROWDED (RM)
<TELL
CTHE .RM " is crowded with supplies and equipment. The locked cabinets
are probably filled with ">
<COND (<==? .RM ,PANTRY>
<TELL "dishes, tableware, and napkins">)
(<==? .RM ,GALLEY>
<TELL
"food, kettles, and kitchen tools. There's a crowded counter for preparing
food">)>
<TELL
". If you want to find something, you'll have to search for it." CR>>
<ROUTINE BOOTH-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (,DEBUG <TELL "[booth entry routine]" CR>)>
<COND (<IN? ,WAITER ,HERE>
<PUTP ,WAITER ,P?LDESC 25 ;"waiting for your order">
<RFALSE>)
(<NOT <EQUAL? ,SCENERY-OBJ ,STATION-GRNZ>>
<ESTABLISH-GOAL ,WAITER ,HERE>
<RFALSE>)
(T <RFALSE>)>)
(<EQUAL? .RARG ,M-END>
<COND (<AND <EXIT-VERB?>
<OR <EQUAL? ,HERE <META-LOC ,FOOD>>
<EQUAL? ,HERE <META-LOC ,CUP-A> <META-LOC ,CUP-B>>>>
<ESTABLISH-GOAL ,WAITER ,HERE>
<RFALSE>)>)
(<EQUAL? .RARG ,M-LOOK>
<FSET ,BOOTH-1 ,TOUCHBIT>
<FSET ,BOOTH-2 ,TOUCHBIT>
<FSET ,BOOTH-3 ,TOUCHBIT>
<BOOTH-DESC>
<MOTION-PREFIX>
<RTRUE>)
(<EQUAL? .RARG ,M-BEG>
<PERSON-TAKES-GUN?>)>>
<ROUTINE BOOTH-DESC ()
<TELL
"This is a diner booth on the " ,TRAIN-NAME ". In fact, it looks as if
the railway company just converted a first-class coach into a diner by
removing the door and adding a table to each compartment." CR>>
"Allusion to Hitchcock's THE LADY VANISHES --"
<OBJECT FROY
(DESC "window writing")
(ADJECTIVE WINDOW)
(SYNONYM WRITING SOMETHING MESSAGE)
(LDESC "There seems to be something written on the window.")
(FLAGS READBIT)
(ACTION FROY-F)>
<ROUTINE FROY-F ()
<COND (<VERB? ANALYZE EXAMINE READ>
<COND (<NOT <FSET? ,FROY ,TOUCHBIT>>
<FSET ,FROY ,TOUCHBIT>
<FSET ,FROY ,NDESCBIT>
<TELL
"It's hard to read in this light, but the writing seems to say \"FROY.\"" CR>)
(T
<TELL "Hmmm... The writing seems to have vanished." CR>)>)>>
<ROOM REST-ROOM-REAR-DINER
(LOC ROOMS)
;(OTHER OTHER-REST-ROOM-REAR)
(FLAGS ;RLANDBIT ONBIT)
(DESC "rear restroom")
(ADJECTIVE SOUTH S REAR R AFT REST)
(SYNONYM RESTROOM BATHROOM LAVATORY TOILET ROOM)
(GENERIC GENERIC-REST-ROOM-F)
(LINE 3)
(STATION VESTIBULE-REAR-DINER)
;(SOUTH TO VESTIBULE-REAR-DINER IF REST-ROOM-REAR-DINER-DOOR IS OPEN)
(WEST TO VESTIBULE-REAR-DINER IF REST-ROOM-REAR-DINER-DOOR IS OPEN)
(OUT TO VESTIBULE-REAR-DINER IF REST-ROOM-REAR-DINER-DOOR IS OPEN)
(GLOBAL REST-ROOM-REAR-DINER-DOOR ;STOP-CORD MIRROR TOILET
SINK TOWEL-FIXTURE TOWEL-LOOP FIXTURES)
(ACTION REST-ROOM-F)>
<OBJECT REST-ROOM-REAR-DINER-DOOR
(LOC LOCAL-GLOBALS)
(DESC "restroom door")
(ADJECTIVE RESTROOM BATHROOM LAVATORY TOILET ROOM SMALL)
(SYNONYM DOOR)
(FLAGS DOORBIT)
(ACTION REST-ROOM-REAR-DINER-DOOR-F)>
<ROUTINE REST-ROOM-REAR-DINER-DOOR-F ()
<REST-ROOM-DOOR-F ,REST-ROOM-REAR-DINER-DOOR ,REST-ROOM-REAR-DINER>>
<ROOM VESTIBULE-FWD-DINER
(LOC ROOMS)
;(OTHER OTHER-VESTIBULE-FWD)
(FLAGS ;RLANDBIT ONBIT)
(DESC "forward vestibule")
(ADJECTIVE NORTH N FORWARD FRONT F FORE)
(SYNONYM VESTIBULE V)
(GENERIC GENERIC-VESTIBULE-F)
(NORTH PER NEXT-CAR-TO-FWD-F)
(SOUTH TO HALL-1-DINER IF VESTIBULE-FWD-DOOR ;-DINER IS OPEN)
(EAST TO REST-ROOM-FWD-DINER IF REST-ROOM-FWD-DOOR IS OPEN)
(IN TO REST-ROOM-FWD-DINER IF REST-ROOM-FWD-DOOR IS OPEN)
(LINE 3)
(STATION VESTIBULE-FWD-DINER)
(GLOBAL REST-ROOM-FWD-DOOR VESTIBULE-FWD-DOOR ;-DINER
VESTIBULE-FWD-WINDOW ;STOP-CORD)
(CORRIDOR -1)
(ACTION VESTIBULE-FWD-F)>
<OBJECT REST-ROOM-FWD-DINER-DOOR
(LOC LOCAL-GLOBALS)
(DESC "restroom door")
(ADJECTIVE RESTROOM BATHROOM LAVATORY TOILET ROOM SMALL)
(SYNONYM DOOR)
(FLAGS DOORBIT)
(ACTION REST-ROOM-FWD-DINER-DOOR-F)>
<ROUTINE REST-ROOM-FWD-DINER-DOOR-F ()
<REST-ROOM-DOOR-F ,REST-ROOM-FWD-DINER-DOOR ,REST-ROOM-FWD-DINER>>
<ROOM HALL-1-DINER
(LOC ROOMS)
(DESC "forward end")
(ADJECTIVE NORTH N FORWARD FRONT F FORE)
(SYNONYM END)
(GENERIC GENERIC-HALL-1-F)
(STATION HALL-1-DINER)
(LINE 3)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO BOOTH-1)
(IN TO BOOTH-1)
(GLOBAL HALL-WINDOW SCENERY-RIGHT VESTIBULE-FWD-DOOR ;-DINER)
(NORTH TO VESTIBULE-FWD-DINER IF VESTIBULE-FWD-DOOR ;-DINER IS OPEN)
(SOUTH TO HALL-2-DINER)
(CORRIDOR *2002*)
(ACTION HALL-F)>
<ROOM HALL-2-DINER
(LOC ROOMS)
(DESC "forward middle")
(ADJECTIVE NORTH N FORWARD FRONT F FORE)
(SYNONYM MIDDLE)
(GENERIC GENERIC-MIDDLE-F)
(STATION HALL-2-DINER)
(LINE 3)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO BOOTH-2)
(IN TO BOOTH-2)
(GLOBAL HALL-WINDOW SCENERY-RIGHT)
(NORTH TO HALL-1-DINER)
(SOUTH TO HALL-3-DINER)
(CORRIDOR *4002*)
(ACTION HALL-F)>
<ROOM HALL-3-DINER
(LOC ROOMS)
(DESC "middle")
(SYNONYM MIDDLE)
(GENERIC GENERIC-MIDDLE-F)
(STATION HALL-3-DINER)
(LINE 3)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO BOOTH-3)
(IN TO BOOTH-3)
(GLOBAL HALL-WINDOW SCENERY-RIGHT)
(NORTH TO HALL-2-DINER)
(SOUTH TO HALL-4-DINER)
(CORRIDOR *10002*)
(ACTION HALL-3-F)>
<ROOM HALL-4-DINER
(DESC "rear middle")
(ADJECTIVE SOUTH S REAR R AFT)
(SYNONYM MIDDLE)
(GENERIC GENERIC-MIDDLE-F)
(LOC ROOMS)
(STATION HALL-4-DINER)
(LINE 3)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO PANTRY)
(IN TO PANTRY)
(GLOBAL HALL-WINDOW SCENERY-RIGHT)
(SOUTH TO HALL-5-DINER)
(NORTH TO HALL-3-DINER)
(CORRIDOR *20002*)
(ACTION HALL-F)>
<ROOM HALL-5-DINER
(DESC "rear end")
(ADJECTIVE SOUTH S REAR R AFT)
(SYNONYM END)
(GENERIC GENERIC-HALL-5-F)
(LOC ROOMS)
(STATION HALL-5-DINER)
(LINE 3)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO GALLEY)
(IN TO GALLEY)
(GLOBAL HALL-WINDOW SCENERY-RIGHT VESTIBULE-REAR-DOOR ;-DINER)
(SOUTH TO VESTIBULE-REAR-DINER IF VESTIBULE-REAR-DOOR ;-DINER IS OPEN)
(NORTH TO HALL-4-DINER)
(CORRIDOR *40002*)
(ACTION HALL-F)>
<ROOM VESTIBULE-REAR-DINER
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "rear vestibule")
(ADJECTIVE SOUTH S REAR R AFT)
(SYNONYM VESTIBULE V)
(GENERIC GENERIC-VESTIBULE-F)
(SOUTH PER NEXT-CAR-TO-REAR-F)
(NORTH TO HALL-5-DINER IF VESTIBULE-REAR-DOOR ;-DINER IS OPEN)
(EAST TO REST-ROOM-REAR-DINER IF REST-ROOM-REAR-DOOR IS OPEN)
(IN TO REST-ROOM-REAR-DINER IF REST-ROOM-REAR-DOOR IS OPEN)
(LINE 3)
(STATION VESTIBULE-REAR-DINER)
(GLOBAL REST-ROOM-REAR-DOOR VESTIBULE-REAR-DOOR ;-DINER
VESTIBULE-REAR-WINDOW ;STOP-CORD LADDER)
(WEST PER DETRAIN-F)
(OUT PER DETRAIN-F)
(DOWN PER DETRAIN-F)
(UP PER LADDER-EXIT-F)
(CORRIDOR -1)
(ACTION VESTIBULE-REAR-F)>
<OBJECT MACHINE
(LOC VESTIBULE-REAR-DINER)
(DESC "cigarette machine")
(ADJECTIVE CIGARETTE VENDING PLASTIC)
(SYNONYM MACHINE PANEL)
(FLAGS CONTBIT OPENBIT)
(CAPACITY 99)
(FDESC
"A cigarette machine stands in one corner, waiting to be either used or
discarded -- it's hard to say which.")
(ACTION MACHINE-F)>
<ROUTINE MACHINE-F ("AUX" P)
<COND (<AND <DOBJ? MACHINE> <VERB? OPEN CLOSE>>
<YOU-CANT>)
(<VERB? ANALYZE EXAMINE LOOK-INSIDE LOOK-THROUGH>
<TELL
"The plastic panel is so scratched and grimy that you can barely see
the display of cigarette packs inside." CR>)
(<VERB? MUNG>
<TELL "It seems that someone else beat you to it." CR>)
(<AND <VERB? ATTACK SLAP SHAKE>
<NOT <FSET? ,MACHINE ,MUNGBIT>>
<NOT <FSET? ,CIGARETTE ,TOUCHBIT>>>
<SET P <LOC ,CIGARETTE>>
<COND (<AND <FSET? .P ,PERSONBIT> <==? 5 <GETP .P ,P?LDESC>>>
<FCLEAR .P ,TOUCHBIT>
<PUTP .P ,P?LDESC 4 ;"gum">)>
<FSET ,CIGARETTE ,TOUCHBIT>
<FSET ,CIGARETTE ,TAKEBIT>
<MOVE ,CIGARETTE ,HERE>
<THIS-IS-IT ,CIGARETTE>
<TELL
"The machine shudders and disgorges a single cigarette onto the floor." CR>)
(<VERB? ATTACK SLAP SHAKE PUT-IN>
<COND (<VERB? PUT-IN>
<COND (<AND ,P-DOLLAR-FLAG
<DOBJ? INTNUM GLOBAL-MONEY>
<NOT <L? <GETP ,PLAYER ,P?SOUTH> ,P-AMOUNT>>>
<COND (<HARD?>
<FSET ,MACHINE ,MUNGBIT>)>
<PUTP ,PLAYER ,P?SOUTH
<- <GETP ,PLAYER ,P?SOUTH> ,P-AMOUNT>>)
(T <YOU-CANT> <RTRUE>)>)>
<COND (<PROB 50>
<TELL "\"Whirr, buzz">)
(T
<TELL "\"Whizz, burr">)>
<TELL ", click!\" Nothing else happens." CR>)>>
<ROOM LIMBO-FWD-DINER
(DESC "diner forward limbo")
(LOC ROOMS)
(SOUTH TO VESTIBULE-FWD-DINER)
(LINE 3)
(STATION LIMBO-FWD-DINER)>
<ROOM LIMBO-REAR-DINER
(DESC "diner rear limbo")
(LOC ROOMS)
(NORTH TO VESTIBULE-REAR-DINER)
(LINE 3)
(STATION LIMBO-REAR-DINER)>
;<OBJECT VESTIBULE-FWD-DINER-DOOR
(LOC LOCAL-GLOBALS)
(DESC "swinging door")
(FLAGS DOORBIT TRANSBIT)
(ADJECTIVE METAL VESTIBULE HALL SWINGING)
(SYNONYM DOOR)
(LDESC "This is a swinging metal door with a brass handle.")
(ACTION VESTIBULE-FWD-DINER-DOOR-F)>
;<ROUTINE VESTIBULE-FWD-DINER-DOOR-F ()
<VESTIBULE-DOOR-F ,VESTIBULE-FWD-DINER-DOOR>>
;<OBJECT VESTIBULE-REAR-DINER-DOOR
(LOC LOCAL-GLOBALS)
(DESC "swinging door")
(FLAGS DOORBIT TRANSBIT)
(ADJECTIVE METAL VESTIBULE HALL SWINGING)
(SYNONYM DOOR)
(LDESC "This is a swinging metal door with a brass handle.")
(ACTION VESTIBULE-REAR-DINER-DOOR-F)>
;<ROUTINE VESTIBULE-REAR-DINER-DOOR-F ()
<VESTIBULE-DOOR-F ,VESTIBULE-REAR-DINER-DOOR>>
<GLOBAL DINER-CAR 3> ;"Diner can't be first or last car."
<GLOBAL DINER-TOUCHED <>>
<GLOBAL FANCY-CAR 0>
<GLOBAL CAR-ROOMS-COMPS-DINER
<PLTABLE BOOTH-1 BOOTH-2 BOOTH-3 PANTRY GALLEY>>
<GLOBAL CAR-ROOMS-DINER
<PLTABLE REST-ROOM-FWD-DINER
BOOTH-1 BOOTH-2 BOOTH-3 PANTRY GALLEY REST-ROOM-REAR-DINER
VESTIBULE-FWD-DINER HALL-1-DINER HALL-2-DINER HALL-3-DINER
HALL-4-DINER HALL-5-DINER VESTIBULE-REAR-DINER>>
<GLOBAL CAR-ROOMS-FANCY
<PLTABLE ;REST-ROOM-FWD-FANCY
SUITE-1 SUITE-2 SUITE-3 ;REST-ROOM-REAR-FANCY
VESTIBULE-FWD-FANCY HALL-1-FANCY HALL-2-FANCY HALL-3-FANCY
VESTIBULE-REAR-FANCY>>
<ROUTINE PICK-ONE-BOOTH ("AUX" X)
<SET X <RANDOM 3>>
<COND (<==? .X 1> ,BOOTH-1)
(<==? .X 2> ,BOOTH-2)
(<==? .X 3> ,BOOTH-3)>>
<ROOM VESTIBULE-FWD-FANCY
(LOC ROOMS)
;(OTHER OTHER-VESTIBULE-FWD)
(FLAGS ;RLANDBIT ONBIT)
(DESC "forward vestibule")
(ADJECTIVE NORTH N FORWARD FRONT F FORE)
(SYNONYM VESTIBULE V)
(GENERIC GENERIC-VESTIBULE-F)
(NORTH PER NEXT-CAR-TO-FWD-F)
(SOUTH TO HALL-1-FANCY IF VESTIBULE-FWD-DOOR ;-FANCY IS OPEN)
(LINE 6)
(STATION VESTIBULE-FWD-FANCY)
(GLOBAL VESTIBULE-FWD-DOOR ;-FANCY VESTIBULE-FWD-WINDOW ;STOP-CORD)
(CORRIDOR -1)
(ACTION VESTIBULE-FWD-F)>
<ROOM HALL-1-FANCY
(LOC ROOMS)
(DESC "forward end")
(ADJECTIVE NORTH N FORWARD FRONT F FORE)
(SYNONYM END)
(GENERIC GENERIC-HALL-1-F)
(STATION HALL-1-FANCY)
(LINE 6)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO SUITE-1 IF SUITE-1-DOOR IS OPEN)
(IN TO SUITE-1 IF SUITE-1-DOOR IS OPEN)
(NORTH TO VESTIBULE-FWD-FANCY IF VESTIBULE-FWD-DOOR IS OPEN)
(SOUTH TO HALL-2-FANCY)
(CORRIDOR *10*)
(GLOBAL SUITE-1-DOOR HALL-WINDOW VESTIBULE-FWD-DOOR
SCENERY-RIGHT)
(ACTION HALL-FANCY-F)>
<OBJECT SUITE-1-DOOR
(LOC LOCAL-GLOBALS)
(DESC "compartment door")
(ADJECTIVE COMPARTMENT C)
(SYNONYM DOOR)
(FLAGS DOORBIT LOCKED)
(ACTION SUITE-1-DOOR-F)>
<ROUTINE SUITE-1-DOOR-F () <COMPARTMENT-DOOR-F ,SUITE-1-DOOR>>
<ROOM HALL-2-FANCY
(LOC ROOMS)
(DESC "middle")
(SYNONYM MIDDLE)
(GENERIC GENERIC-MIDDLE-F)
(STATION HALL-2-FANCY)
(LINE 6)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO SUITE-2 IF SUITE-2-DOOR IS OPEN)
(IN TO SUITE-2 IF SUITE-2-DOOR IS OPEN)
(GLOBAL SUITE-2-DOOR HALL-WINDOW SCENERY-RIGHT)
(NORTH TO HALL-1-FANCY)
(SOUTH TO HALL-3-FANCY)
(CORRIDOR *10*)
(ACTION HALL-FANCY-F ;HALL-3-F)>
<OBJECT SUITE-2-DOOR
(LOC LOCAL-GLOBALS)
(DESC "compartment door")
(ADJECTIVE COMPARTMENT C)
(SYNONYM DOOR)
(FLAGS DOORBIT LOCKED)
(ACTION SUITE-2-DOOR-F)>
<ROUTINE SUITE-2-DOOR-F () <COMPARTMENT-DOOR-F ,SUITE-2-DOOR>>
<ROOM HALL-3-FANCY
(LOC ROOMS)
(DESC "rear end")
(ADJECTIVE SOUTH S REAR R AFT)
(SYNONYM END)
(GENERIC GENERIC-HALL-5-F)
(STATION HALL-3-FANCY)
(LINE 6)
(FLAGS ;RLANDBIT ONBIT)
(WEST TO SUITE-3 IF SUITE-3-DOOR IS OPEN)
(IN TO SUITE-3 IF SUITE-3-DOOR IS OPEN)
(GLOBAL SUITE-3-DOOR HALL-WINDOW VESTIBULE-REAR-DOOR
SCENERY-RIGHT)
(SOUTH TO VESTIBULE-REAR-FANCY IF VESTIBULE-REAR-DOOR IS OPEN)
(NORTH TO HALL-2-FANCY)
(CORRIDOR *10*)
(ACTION HALL-FANCY-F)>
<OBJECT SUITE-3-DOOR
(LOC LOCAL-GLOBALS)
(DESC "compartment door")
(ADJECTIVE COMPARTMENT C)
(SYNONYM DOOR)
(FLAGS DOORBIT LOCKED)
(ACTION SUITE-3-DOOR-F)>
<ROUTINE SUITE-3-DOOR-F () <COMPARTMENT-DOOR-F ,SUITE-3-DOOR>>
<ROOM VESTIBULE-REAR-FANCY
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "rear vestibule")
(ADJECTIVE SOUTH S REAR R AFT)
(SYNONYM VESTIBULE V)
(GENERIC GENERIC-VESTIBULE-F)
(SOUTH PER NEXT-CAR-TO-REAR-F)
(NORTH TO HALL-3-FANCY IF VESTIBULE-REAR-DOOR ;-FANCY IS OPEN)
(LINE 6)
(STATION VESTIBULE-REAR-FANCY)
(GLOBAL VESTIBULE-REAR-DOOR ;-FANCY VESTIBULE-REAR-WINDOW LADDER)
(WEST PER DETRAIN-F)
(OUT PER DETRAIN-F)
(DOWN PER DETRAIN-F)
(UP PER LADDER-EXIT-F)
(CORRIDOR -1)
(ACTION VESTIBULE-REAR-F)>
<ROOM LIMBO-FWD-FANCY
(DESC "fancy forward limbo")
(LOC ROOMS)
(SOUTH TO VESTIBULE-FWD-FANCY)
(LINE 6)
(STATION LIMBO-FWD-FANCY)>
<ROOM LIMBO-REAR-FANCY
(DESC "fancy rear limbo")
(LOC ROOMS)
(NORTH TO VESTIBULE-REAR-FANCY)
(LINE 6)
(STATION LIMBO-REAR-FANCY)>
<ROOM SUITE-1
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "first suite")
(ADJECTIVE FIRST 1ST \#1)
(SYNONYM SUITE ROOM)
(STATION HALL-1-FANCY)
(LINE 6)
(EAST TO HALL-1-FANCY IF SUITE-1-DOOR IS OPEN)
(OUT TO HALL-1-FANCY IF SUITE-1-DOOR IS OPEN)
(GLOBAL SUITE-1-DOOR WINDOW-1 SCENERY-LEFT ;STOP-CORD)
;(GENERIC GENERIC-COMPARTMENT-F)
(ACTION SUITE-F)>
<ROOM SUITE-2
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "second suite")
(ADJECTIVE SECOND 2ND \#2)
(SYNONYM SUITE ROOM)
(STATION HALL-2-FANCY)
(LINE 6)
(EAST TO HALL-2-FANCY IF SUITE-2-DOOR IS OPEN)
(OUT TO HALL-2-FANCY IF SUITE-2-DOOR IS OPEN)
(GLOBAL SUITE-2-DOOR WINDOW-2 SCENERY-LEFT ;STOP-CORD)
;(GENERIC GENERIC-COMPARTMENT-F)
(ACTION SUITE-F)>
<ROOM SUITE-3
(LOC ROOMS)
(FLAGS ;RLANDBIT ONBIT)
(DESC "third suite")
(ADJECTIVE THIRD 3RD \#3 LAST)
(SYNONYM SUITE ROOM)
(STATION HALL-3-FANCY)
(LINE 6)
(EAST TO HALL-3-FANCY IF SUITE-3-DOOR IS OPEN)
(OUT TO HALL-3-FANCY IF SUITE-3-DOOR IS OPEN)
(GLOBAL SUITE-3-DOOR WINDOW-3 SCENERY-LEFT ;STOP-CORD)
;(GENERIC GENERIC-COMPARTMENT-F)
(ACTION SUITE-F)>
<ROUTINE SUITE-F ("OPTIONAL" (RARG <>) "AUX" N)
<COND (.RARG
<V-FOO>
<RTRUE>)>>
<ROUTINE HALL-FANCY-F ("OPTIONAL" (RARG <>) "AUX" X (TOUCHED <>) (VAL <>))
<COND (<OR <FSET? ,HALL-1-FANCY ,TOUCHBIT>
<FSET? ,HALL-1-FANCY ,TOUCHBIT>
<FSET? ,HALL-1-FANCY ,TOUCHBIT>>
<SET TOUCHED T>)>
<COND (<OR <EQUAL? .RARG ,M-LOOK>
<AND <ZERO? .RARG> <VERB? LOOK>>>
<FSET ,HERE ,TOUCHBIT>
<TELL "This is the " D ,HERE " of the corridor.">
<COND (<OR <VERB? LOOK> <ZERO? .TOUCHED>>
<TELL
" The floor and walls are covered with grey carpet, worn thin
in spots but intact. A long series of
windows, framed by polished wood, runs along the corridor on the right-hand
side of the train.">)>
<COND (<==? ,PLAYER-NOT-FACING ,P?WEST>
<CRLF>)
(T
<SET X <GET-REXIT-ROOM <GETPT ,HERE ,P?IN>>>
<THIS-IS-IT .X>
<TELL
" On the left side of the train, behind a locked door, lies the " D .X"."CR>)>
<RTRUE>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<NOISY? ,LAST-PLAYER-LOC>
<SET VAL T>
<COND (T;<OR <AND<EQUAL? ,LAST-PLAYER-LOC ,VESTIBULE-FWD-FANCY>
<EQUAL? ,HERE ,HALL-1-FANCY>>
<AND <EQUAL? ,LAST-PLAYER-LOC ,VESTIBULE-REAR-FANCY>
<EQUAL? ,HERE ,HALL-3-FANCY>>>
<TELL "The relative quiet here is welcome. ">)>)>
<COND (<NOT .TOUCHED>
<SET VAL T>
<TELL "The feel of luxury here is unmistakable.">)>
<COND (.VAL <CRLF>)>
<RFALSE>)>>

44
chase.blank Normal file
View File

@ -0,0 +1,44 @@
Chase Scene for CHECKPOINT
--------------------------
When you get through the checkpoint (at Frbz?), someone will get
suspicious (presumably seeing the camera) and will board the
train. As you are in 'friendly' territory after crossing the border,
the new 'bad spy' will be working behind enemy lines. He will therefore
be more dangerous and ruthless.
Perhaps some hint of what's coming could be presented in a description
of some officials carrying off your now bloodied contact, this being
printed as you re-board the train.
The new bad spy (NBS) will attempt to get you alone and thereupon kill
you and take the McGuffin. I would think that sometime soon upon
entering the train, you would catch a glimpse of this person from the
corner of your eye.
He will follow you into any compartment -
a) If it is empty, he will reach into his raincoat in a way that
should remind the player of someone reaching for a gun. The player
must do something the very next move or get killed. This could consist
of throwing something at the man, leaving the compartment, etc.
b) If it isn't empty, he will say something in Frotzer to the other
people there (presumably it is something like "My colleague and I need
to talk privately - would you mind leaving us for a few moments.")
In most (all?) cases, the others will leave, and you now are in
the previous situation.
If you are just walking around the train, he will follow at a distance
of a few locations (2?). Walking into a restroom is a good way to get
trapped. He will knock on the door. Then the following:
a) If you don't ever leave the restroom and its getting near the
stop at Gola, he will become desparate and shoot through the door,
wounding you badly. He will also take the camera, so the world is
lost.
b) If you leave the restroom, he will wedge his foot in the door
and point the barrel of the gun toward you. You have two moves before
you must pull the emergency cord of the train or (something else, so
there are multiple solutions). When you do so, his gun falls from his
hand. Before you can grab it, he runs off.

56
checkpoint.zil Normal file
View File

@ -0,0 +1,56 @@
"EXTENDED COMPILE/LOAD FILE for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " CHECKPOINT: interactive fiction from Infocom!
">
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>)>
<SET REDEFINE T>
"<GLOBAL BIGFIX 10000>"
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<DIRECTIONS ;"Do not change the order of the first eight
without consulting MARC! -- ENCHANTER"
NORTH ;NE EAST ;SE SOUTH ;SW WEST ;NW UP DOWN IN OUT>
<IFILE "MACROS" T>
<IFILE "SYNTAX" T>
<IFILE "MAIN" T>
<IFILE "THINGS" T>
<IFILE "PEOPLE" T>
<IFILE "PLACES" T>
<IFILE "GLOBAL" T>
<CONSTANT SERIAL 0>
<IFILE "CLOCK" T>
<IFILE "PARSER" T>
<IFILE "VERBS" T>
<IFILE "TRAIN" T>
<IFILE "CARS" T>
<IFILE "STATION" T>
<IFILE "GOAL" T>
<IFILE "SPIES" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<DEFINE ISL () <INIT-STATUS-LINE>>
<GC-MON T>
<COND (<GASSIGNED? MUDDLE>
<GC 0 T 5>)>

82
clock.cmp Normal file
View File

@ -0,0 +1,82 @@
;COMPARISON OF PS:<SWG>CLOCK.ZAP.1 AND PS:<SWG>CLOCK.ZAP.3
;OPTIONS ARE /1
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-12 (180)
?PRG1: EQUAL? C,E \?ELS5
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-12 (180)
?PRG1: EQUAL? C,E \?ELS4
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-17 (295)
?ELS5: GET C,C-RTN
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-17 (295)
?ELS4: GET C,C-RTN
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-29 (523)
IGRTR? 'MOVES,59 \?CND5
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-29 (523)
IGRTR? 'MOVES,59 \?CND3
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-31 (564)
IGRTR? 'SCORE,23 \?CND5
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-31 (564)
IGRTR? 'SCORE,23 \?CND3
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-33 (605)
?CND5: PUSH C-INTS
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-33 (605)
?CND3: PUSH C-INTS
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-36 (676)
?PRG16: EQUAL? C,E \?ELS20
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-36 (676)
?PRG10: EQUAL? C,E \?ELS13
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-38 (717)
?ELS20: GET C,C-ENABLED?
ZERO? STACK /?CND18
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-38 (717)
?ELS13: GET C,C-ENABLED?
ZERO? STACK /?CND12
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-41 (786)
ZERO? TICK \?ELS25
JUMP ?CND18
?ELS25: SUB TICK,1
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-41 (786)
ZERO? TICK \?ELS16
JUMP ?CND12
?ELS16: SUB TICK,1
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-45 (862)
GRTR? TICK,1 /?CND23
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-45 (862)
GRTR? TICK,1 /?CND15
***************
**** FILE PS:<SWG>CLOCK.ZAP.1, 1-48 (917)
ZERO? VAL /?CND23
ZERO? FLG /?THN36
EQUAL? VAL,M-FATAL \?CND18
?THN36: SET 'FLG,VAL
?CND23:
?CND18: ADD C,C-INTLEN >C
JUMP ?PRG16
**** FILE PS:<SWG>CLOCK.ZAP.3, 1-48 (917)
ZERO? VAL /?CND15
ZERO? FLG /?THN21
EQUAL? VAL,M-FATAL \?CND12
?THN21: SET 'FLG,VAL
?CND15:
?CND12: ADD C,C-INTLEN >C
JUMP ?PRG10
***************

65
clock.zap Normal file
View File

@ -0,0 +1,65 @@
.FUNCT QUEUE,RTN,TICK,CINT
CALL2 INT,RTN >CINT
PUT CINT,C-TICK,TICK
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?ELS5
SUB C-INTS,C-INTLEN >C-INTS
ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?ELS5: GET C,C-RTN
EQUAL? STACK,RTN \?CND3
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT QUEUED?,RTN,C
CALL2 INT,RTN >C
GET C,C-ENABLED?
ZERO? STACK /FALSE
GET C,C-TICK >C
ZERO? C /FALSE
RETURN C
.FUNCT CLOCKER,C,E,TICK,FLG=0,VAL
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: INC 'PRESENT-TIME
IGRTR? 'MOVES,59 \?CND5
SET 'MOVES,0
IGRTR? 'SCORE,23 \?CND5
SET 'SCORE,0
?CND5: PUSH C-INTS
ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG16: EQUAL? C,E \?ELS20
RETURN FLG
?ELS20: GET C,C-ENABLED?
ZERO? STACK /?CND18
GET C,C-TICK >TICK
ZERO? TICK \?ELS25
JUMP ?CND18
?ELS25: SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND23
GET C,C-RTN
CALL STACK >VAL
ZERO? VAL /?CND23
ZERO? FLG /?THN36
EQUAL? VAL,M-FATAL \?CND18
?THN36: SET 'FLG,VAL
?CND23:
?CND18: ADD C,C-INTLEN >C
JUMP ?PRG16
.ENDI

107
clock.zil Normal file
View File

@ -0,0 +1,107 @@
"CLOCK for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
"List of queued routines:
G-LEAVE-TRAIN
I-ARRIVE-WARNING
I-ATTENTION
I-BAD-SPY
I-BAD-SPY-W-CASE
I-BAD-SPY-W-YOU
I-BOND
I-BOND-OTHER
I-COME-TO
I-CONDUCTOR
I-CONTACT-APPEARS
I-CONTACT-GIVES-UP
I-DEPART
I-DEPART-WARNING
I-EXTRA
I-FOLLOW
I-LEAVE-TRAIN
I-PROMPT
I-TICKETS-PLEASE
I-TRAIN-ARREST
I-TRAIN-LURCH
I-TRAIN-RESTART
I-TRAIN-SCENERY
;I-TRAIN-SOUNDS
I-TRAVELER
I-TRAVELER-FINDS-CONTACT
I-TRAVELER-SEEKS-FLOWER
I-TRAVELER-TO-GRNZ
I-VESTIBULE-DOOR
"
<CONSTANT C-TABLELEN 222>
<GLOBAL C-TABLE %<COND ;(<GASSIGNED? PREDGEN> '<ITABLE NONE 111>)
(T '<ITABLE NONE 222>)>>
<GLOBAL C-INTS 222>
<CONSTANT C-INTLEN 6>
<CONSTANT C-ENABLED? 0>
<CONSTANT C-TICK 1>
<CONSTANT C-RTN 2>
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
;#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
<PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
.CINT>
<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
;#DECL ((RTN) ATOM (DEMON) <OR ATOM FALSE> (E C INT) <PRIMTYPE
VECTOR>)
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<==? .C .E>
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
;<AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
<SET INT <REST ,C-TABLE ,C-INTS>>
<PUT .INT ,C-RTN .RTN>
<RETURN .INT>)
(<EQUAL? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
<SET C <REST .C ,C-INTLEN>>>>
;<ROUTINE ENABLED? (RTN)
<NOT <ZERO? <GET <INT .RTN> ,C-ENABLED?>>>>
<ROUTINE QUEUED? (RTN "AUX" C)
<SET C <INT .RTN>>
<COND (<ZERO? <GET .C ,C-ENABLED?>> <RFALSE>)
(<ZERO? <SET C <GET .C ,C-TICK>>> <RFALSE>)
(T .C)>>
<GLOBAL CLOCK-WAIT <>>
"SCORE INDICATES HOURS / MOVES = MINUTES"
<GLOBAL SCORE 0>
<GLOBAL MOVES 0>
<GLOBAL PRESENT-TIME 600>
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>) VAL)
;#DECL ((C E) <PRIMTYPE VECTOR> (TICK) FIX ;(FLG) ;<OR FALSE ATOM>)
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
<SETG PRESENT-TIME <+ ,PRESENT-TIME 1>>
;<COND (<G? ,PRESENT-TIME 1199>
<TIMES-UP>)>
<COND (<G? <SETG MOVES <+ ,MOVES 1>> 59>
<SETG MOVES 0>
<COND (<G? <SETG SCORE <+ ,SCORE 1>> 23>
<SETG SCORE 0>)>)>
<SET C <REST ,C-TABLE <COND (T ;,P-WON ,C-INTS) ;(T ,C-DEMONS)>>>
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<REPEAT ()
<COND (<==? .C .E> <RETURN .FLG>)
(<NOT <ZERO? <GET .C ,C-ENABLED?>>>
<SET TICK <GET .C ,C-TICK>>
<COND (<ZERO? .TICK>)
(T
<PUT .C ,C-TICK <- .TICK 1>>
<COND (<AND <NOT <G? .TICK 1>>
<SET VAL <APPLY <GET .C ,C-RTN>>>>
<COND (<OR <NOT .FLG>
<==? .VAL ,M-FATAL>>
<SET FLG .VAL>)>)>)>)>
<SET C <REST .C ,C-INTLEN>>>>

90
frotzerland.mss Normal file
View File

@ -0,0 +1,90 @@
@style (spacing 2)
@title ("Seven Shadows" Browsie)
@pageheading (draft)
@majorheading ("SEVEN SHADOWS" BROWSIE)
@center (Comments to Stu Galley)
@blankspace(5)
@center (VUBSNAP NI FROTZ!)
@center (WELCOME TO FROTZENLAND!)
Whether you come to Frotzenland for business, for pleasure, or for neither,
our people will roll out the purple carpet to welcome you!
After years of isolation and fear, our hearts and minds are open!
Never before will you have seen such sights, ate such food, heard such
noises, or enjoyed our day-to-day life!
@center (FROTZENLAND - "SO GOOD YOU NEVER SAW")
Frotzenland is a country somewhere in Europe.
Its rugged terrain and mountainous borders help keep it safe from its
neighbours, yet easy to access with one airplane from Vienna.
Here you find something for every traveller: wild rivers, barren plains,
dark forests, clean cities, or friendly people.
@center (OUR BELOVED GOVERNMENT)
Every citizen in Frotzenland must vote in every election.
Our wise leaders find themselves elected again every time.
They conduct themselves as strictly neutral
government, with planning for every citizen's life and happiness.
@center (OUR BELOVED RAILWAY)
The Frotz National Railway ("Ferroglip Natsiolim Frotzilim")
carries our beloved people whenever they wish to get away.
It has more kilometers of trackage than highways or canals.
It always can run on time, so you don't usually
forget your printed timetable.
Modern equipments make every train a pleasure to watch.
First-class passenger wagons have:
@begin (itemize)
several identical compartments for equal rights to travel
a corridor you can walk in
two W.C@. or restrooms in case of emergency
also cars for dining as much as you feel
@end (itemize)
The stations are all equal too,
with these interesting rooms:
@begin (itemize)
platform, where you say hello and goodbye
waiting room, where you wait
cafe with delicious foods and also travelling necessaries in store
W.C@. or restroom in case of emergency
ticket area, where you buy side trips or scene excursions
luggage room (if you travel heavy) with careful clerks who don't damage
police persons can help you if you wander too far
@end (itemize)
@center (OUR BELOVED FOOD)
You will find something for every taste in Frotzenland.
Since the recent tractor reforms, all citizens do their parts
to grow abundantly for home use and visitors.
The good soil can produce fine meats and potatoes, wild games and cabbages.
And don't pass by local delicacies such as rumpled stilt's skin,
or fish heads and lice.
In a city you may find a good restaurant with Continental air
and attending services. The finest food we can find for you.
And you may enjoy a good wine, with the taste of good soil from the
Thnbrd district.
@center (PLEASE TO COME ENJOY OUR BELOVED COUNTRY BEFORE IT'S TOO LATE.)
@center (YOU @I[WILL] ENJOY YOUR VISIT!)

822
global.cmp Normal file
View File

@ -0,0 +1,822 @@
;COMPARISON OF PS:<SWG>GLOBAL.ZAP.1 AND PS:<SWG>GLOBAL.ZAP.3
;OPTIONS ARE /1
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-4 (37)
EQUAL? PRSI,OBJ2 \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-4 (37)
EQUAL? PRSI,OBJ2 \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-7 (102)
?ELS5: EQUAL? PRSO,OBJ2 \?ELS7
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-7 (102)
?ELS4: EQUAL? PRSO,OBJ2 \?ELS5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-10 (173)
?ELS7: CALL V-FOO
ZERO? STACK /FALSE
RTRUE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-10 (173)
?ELS5: CALL V-FOO
ZERO? STACK \TRUE
RFALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-22 (326)
EQUAL? PRSI,IT \?THN10
EQUAL? PRSA,V?TELL-ABOUT /?THN10
EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?THN14
?THN10: EQUAL? PRSO,IT \FALSE
EQUAL? PRSA,V?WHAT /?THN14
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-22 (326)
EQUAL? PRSI,IT \?ELS5
EQUAL? PRSA,V?TELL-ABOUT /?THN4
EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?THN4
?ELS5: EQUAL? PRSO,IT \FALSE
EQUAL? PRSA,V?WHAT /?THN4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-28 (569)
?THN14: CALL PRODUCE-GIBBERISH
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-28 (564)
?THN4: CALL PRODUCE-GIBBERISH
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-33 (636)
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,FLOOR \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-33 (630)
EQUAL? PRSA,V?PUT \?ELS4
EQUAL? PRSI,FLOOR \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-37 (726)
?ELS5: EQUAL? PRSA,V?LOOK-ON,V?SEARCH,V?EXAMINE \?ELS9
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-37 (720)
?ELS4: EQUAL? PRSA,V?LOOK-ON,V?SEARCH,V?EXAMINE \?ELS6
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-39 (825)
ZERO? OBJ /?ELS14
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-39 (819)
ZERO? OBJ /?ELS10
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-45 (965)
?ELS14: PRINTR "You don't find anything new there."
?ELS9: EQUAL? PRSA,V?TAKE,V?BRUSH \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-45 (959)
?ELS10: PRINTR "You don't find anything new there."
?ELS6: EQUAL? PRSA,V?TAKE,V?BRUSH \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-53 (1160)
EQUAL? PRSA,V?COUNT \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-53 (1154)
EQUAL? PRSA,V?COUNT \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-56 (1240)
?ELS5: ZERO? P-DOLLAR-FLAG /?ELS10
ZERO? P-AMOUNT \?CND8
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-56 (1234)
?ELS4: ZERO? P-DOLLAR-FLAG /?ELS6
ZERO? P-AMOUNT \?CND5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-59 (1318)
JUMP ?CND8
?ELS10: SET 'P-DOLLAR-FLAG,TRUE-VALUE
ZERO? P-NUMBER \?CND8
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-59 (1311)
JUMP ?CND5
?ELS6: SET 'P-DOLLAR-FLAG,TRUE-VALUE
ZERO? P-NUMBER \?CND5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-63 (1412)
?CND8: CALL DO-INSTEAD-OF,INTNUM,DOLLARS
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-63 (1404)
?CND5: CALL DO-INSTEAD-OF,INTNUM,DOLLARS
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-70 (1538)
ZERO? STACK /?ELS11
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-70 (1530)
ZERO? STACK /?ELS8
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-73 (1595)
?ELS11: EQUAL? PRSA,V?ASK-FOR,V?TAKE /FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-73 (1586)
?ELS8: EQUAL? PRSA,V?ASK-FOR,V?TAKE /FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-80 (1764)
EQUAL? WINNER,PLAYER /?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-80 (1754)
EQUAL? WINNER,PLAYER /?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-83 (1835)
?ELS5: EQUAL? PRSA,V?ASK-ABOUT \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-83 (1825)
?ELS4: EQUAL? PRSA,V?ASK-ABOUT \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-90 (1979)
EQUAL? PRSA,V?LOOK-UP,V?LOOK-DOWN /?THN6
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-90 (1969)
EQUAL? PRSA,V?LOOK-UP,V?LOOK-DOWN /?THN4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-92 (2077)
?THN6: ZERO? ON-TRAIN /FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-92 (2067)
?THN4: ZERO? ON-TRAIN /FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-94 (2142)
ZERO? STACK /?ELS14
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-94 (2132)
ZERO? STACK /?ELS10
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-97 (2195)
?ELS14: CALL NEXT-ROOM,HERE,P?OUT >RM
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-97 (2185)
?ELS10: CALL NEXT-ROOM,HERE,P?OUT >RM
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-104 (2339)
EQUAL? PRSA,V?WALK-TO \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-104 (2329)
EQUAL? PRSA,V?WALK-TO \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-107 (2417)
?ELS5: EQUAL? PRSA,V?KNOCK \?ELS7
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-107 (2407)
?ELS4: EQUAL? PRSA,V?KNOCK \?ELS5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-109 (2510)
?ELS7: EQUAL? PRSA,V?TIE-TO,V?PUT-IN,V?PUT \?ELS11
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-109 (2500)
?ELS5: EQUAL? PRSA,V?TIE-TO,V?PUT-IN,V?PUT \?ELS8
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-112 (2593)
?ELS11: EQUAL? PRSA,V?EXAMINE,V?SEARCH \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-112 (2582)
?ELS8: EQUAL? PRSA,V?EXAMINE,V?SEARCH \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-114 (2663)
ZERO? STACK /?ELS16
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-114 (2651)
ZERO? STACK /?ELS11
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-116 (2698)
JUMP ?CND14
?ELS16: GETP HERE,P?SIZE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-116 (2686)
JUMP ?CND10
?ELS11: GETP HERE,P?SIZE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-119 (2757)
?CND14: EQUAL? P-ADVERB,W?CAREFULLY \?CND19
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-119 (2745)
?CND10: EQUAL? P-ADVERB,W?CAREFULLY \?CND12
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-121 (2819)
?CND19: PRINTI "(It's better to examine or search one thing at a time. It would take a long time to search a whole room or area thoroughly. A "
EQUAL? P-ADVERB,W?CAREFULLY \?ELS26
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-121 (2807)
?CND12: PRINTI "(It's better to examine or search one thing at a time. It would take a long time to search a whole room or area thoroughly. A "
EQUAL? P-ADVERB,W?CAREFULLY \?ELS17
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-124 (3021)
JUMP ?CND24
?ELS26: PRINTI "brief"
?CND24: PRINTI " search would take "
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-124 (3009)
JUMP ?CND16
?ELS17: PRINTI "brief"
?CND16: PRINTI " search would take "
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-130 (3206)
ZERO? STACK /?ELS39
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-130 (3194)
ZERO? STACK /?ELS27
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-133 (3280)
ZERO? VAL /?ELS46
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-133 (3268)
ZERO? VAL /?ELS32
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-135 (3317)
EQUAL? P-ADVERB,W?CAREFULLY \?ELS54
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-135 (3305)
EQUAL? P-ADVERB,W?CAREFULLY \?ELS38
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-137 (3369)
JUMP ?CND50
?ELS54: PUSH STR?99
?CND50: PRINT STACK
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-137 (3357)
JUMP ?CND35
?ELS38: PUSH STR?99
?CND35: PRINT STACK
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-141 (3470)
?ELS46: PRINTR "You didn't finish looking over the place."
?ELS39: SET 'P-WON,FALSE-VALUE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-141 (3458)
?ELS32: PRINTR "You didn't finish looking over the place."
?ELS27: SET 'P-WON,FALSE-VALUE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-147 (3598)
EQUAL? PRSA,V?EXAMINE \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-147 (3586)
EQUAL? PRSA,V?EXAMINE \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-149 (3680)
?ELS5: EQUAL? PRSA,V?WALK-TO \?ELS9
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-149 (3668)
?ELS4: EQUAL? PRSA,V?WALK-TO \?ELS7
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-151 (3749)
?ELS9: EQUAL? PRSA,V?SMELL \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-151 (3737)
?ELS7: EQUAL? PRSA,V?SMELL \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-153 (3805)
ZERO? STACK /?ELS18
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-153 (3793)
ZERO? STACK /?ELS14
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-155 (3866)
?ELS18: CALL FRESH-AIR?,HERE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-155 (3854)
?ELS14: CALL FRESH-AIR?,HERE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-168 (4098)
EQUAL? PRSA,V?PUT-IN \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-168 (4086)
EQUAL? PRSA,V?PUT-IN \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-172 (4186)
?ELS5: EQUAL? PRSA,V?FLUSH-DOWN,V?FLUSH \FALSE
ZERO? IN-STATION /?ELS17
ZERO? ON-TRAIN /?ELS17
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-172 (4174)
?ELS4: EQUAL? PRSA,V?FLUSH-DOWN,V?FLUSH \FALSE
ZERO? IN-STATION /?ELS13
ZERO? ON-TRAIN /?ELS13
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-179 (4445)
?ELS17: EQUAL? PRSA,V?FLUSH-DOWN \?CND24
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-179 (4433)
?ELS13: EQUAL? PRSA,V?FLUSH-DOWN \?CND17
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-184 (4573)
?CND24: FIRST? TOILET \?CND30
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-184 (4561)
?CND17: FIRST? TOILET \?CND21
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-187 (4669)
?CND30: PRINTR "Whhoooossshhhhh!"
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-187 (4657)
?CND21: PRINTR "Whhoooossshhhhh!"
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-191 (4752)
FIRST? WHAT >X /?KLU29
?KLU29:
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-191 (4740)
FIRST? WHAT >X /?KLU20
?KLU20:
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-194 (4809)
NEXT? X >N /?KLU30
?KLU30: ZERO? N \?CND6
ZERO? TOLD? /?CND6
ZERO? TELL? /?CND6
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-194 (4797)
NEXT? X >N /?KLU21
?KLU21: ZERO? N \?CND5
ZERO? TOLD? /?CND5
ZERO? TELL? /?CND5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-199 (4912)
?CND6: SET 'TOLD?,TRUE-VALUE
ZERO? TELL? /?CND13
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-199 (4900)
?CND5: SET 'TOLD?,TRUE-VALUE
ZERO? TELL? /?CND10
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-202 (4980)
ZERO? N /?ELS21
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-202 (4968)
ZERO? N /?ELS15
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-204 (5011)
JUMP ?CND13
?ELS21: PRINTI ". "
?CND13: MOVE X,THIEF
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-204 (4999)
JUMP ?CND10
?ELS15: PRINTI ". "
?CND10: MOVE X,THIEF
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-213 (5131)
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-213 (5119)
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-216 (5193)
?ELS5: EQUAL? PRSA,V?LAMP-ON \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-216 (5181)
?ELS4: EQUAL? PRSA,V?LAMP-ON \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-221 (5398)
EQUAL? PRSA,V?CUT \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-221 (5386)
EQUAL? PRSA,V?CUT \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-234 (5824)
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS14
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-234 (5812)
?ELS4: EQUAL? PRSA,V?EXAMINE \?ELS11
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-236 (6011)
?ELS14: EQUAL? PRSA,V?TAKE /?THN19
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-236 (5999)
?ELS11: EQUAL? PRSA,V?TAKE /?THN14
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-238 (6092)
?THN19: PRINTR "As you pull on the towel, a fresh portion appears from a slot, and the used portion starts to disappear into the dispenser."
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-238 (6080)
?THN14: PRINTR "As you pull on the towel, a fresh portion appears from a slot, and the used portion starts to disappear into the dispenser."
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-242 (6267)
EQUAL? PRSA,V?EXAMINE \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-242 (6255)
EQUAL? PRSA,V?EXAMINE \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-244 (6440)
?ELS5: EQUAL? PRSA,V?TAKE,V?USE /?THN10
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-244 (6428)
?ELS4: EQUAL? PRSA,V?TAKE,V?USE /?THN7
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-246 (6526)
?THN10: PRINTR "There's not enough left!"
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-246 (6513)
?THN7: PRINTR "There's not enough left!"
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-256 (6698)
EQUAL? PRSA,V?TAKE /?THN6
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-256 (6684)
EQUAL? PRSA,V?TAKE /?THN4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-258 (6771)
?THN6: PRINTR "Whatever you have in mind, it'll never work!"
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-258 (6757)
?THN4: PRINTR "Whatever you have in mind, it'll never work!"
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-262 (6855)
EQUAL? PRSA,V?MUNG \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-262 (6841)
EQUAL? PRSA,V?MUNG \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-264 (6923)
?ELS5: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-264 (6909)
?ELS4: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-270 (7149)
ZERO? STACK /?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-270 (7135)
ZERO? STACK /?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-273 (7195)
?ELS5: EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE \?ELS7
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-273 (7181)
?ELS4: EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE \?ELS5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-275 (7279)
EQUAL? WINNER,PLAYER \?ELS10
GRTR? POCKET-CHANGE,0 \?ELS10
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-275 (7265)
EQUAL? WINNER,PLAYER \?ELS7
GRTR? POCKET-CHANGE,0 \?ELS7
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-278 (7373)
ZERO? X /?ELS15
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-278 (7357)
ZERO? X /?ELS10
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-280 (7418)
?ELS15: PRINTR "You have some money in your pocket."
?ELS10: ZERO? X \TRUE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-280 (7402)
?ELS10: PRINTR "You have some money in your pocket."
?ELS7: ZERO? X \TRUE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-283 (7528)
?ELS7: EQUAL? PRSA,V?EMPTY \?ELS28
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-283 (7511)
?ELS5: EQUAL? PRSA,V?EMPTY \?ELS18
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-289 (7671)
?ELS28: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS37
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-289 (7654)
?ELS18: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS25
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-291 (7753)
?ELS37: EQUAL? PRSA,V?PUT-IN \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-291 (7736)
?ELS25: EQUAL? PRSA,V?PUT-IN \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-293 (7818)
EQUAL? PRSO,GLOBAL-MONEY /?THN49
EQUAL? PRSO,INTNUM \?ELS48
ZERO? P-DOLLAR-FLAG /?ELS48
?THN49: PRINTR "It's already there."
?ELS48: IN? CUSTOMS-AGENT,HERE \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-293 (7801)
EQUAL? PRSO,GLOBAL-MONEY /?THN33
EQUAL? PRSO,INTNUM \?ELS34
ZERO? P-DOLLAR-FLAG /?ELS34
?THN33: PRINTR "It's already there."
?ELS34: IN? CUSTOMS-AGENT,HERE \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-307 (8165)
EQUAL? PRSA,V?FIND \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-307 (8148)
EQUAL? PRSA,V?FIND \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-309 (8224)
?ELS5: CALL REMOTE-VERB?
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-309 (8207)
?ELS4: CALL REMOTE-VERB?
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-311 (8271)
EQUAL? PRSA,V?PUT-IN,V?PUT \?ELS11
EQUAL? PRSO,GLOBAL-MONEY \?ELS11
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-311 (8254)
EQUAL? PRSA,V?PUT-IN,V?PUT \?ELS8
EQUAL? PRSO,GLOBAL-MONEY \?ELS8
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-315 (8374)
?ELS11: GRTR? POCKET-CHANGE,0 \?ELS15
EQUAL? PRSA,V?EXAMINE,V?COUNT \?ELS20
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-315 (8355)
?ELS8: GRTR? POCKET-CHANGE,0 \?ELS10
EQUAL? PRSA,V?EXAMINE,V?COUNT \?ELS14
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-321 (8543)
?ELS20: EQUAL? PRSA,V?GIVE \?ELS26
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-321 (8523)
?ELS14: EQUAL? PRSA,V?GIVE \?ELS19
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-324 (8656)
?ELS26: EQUAL? PRSA,V?TAKE \?ELS30
ZERO? PRSI /?ELS30
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-324 (8636)
?ELS19: EQUAL? PRSA,V?TAKE \?ELS22
ZERO? PRSI /?ELS22
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-329 (8788)
?ELS30: CALL TELL-FLASHING-CASH
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-329 (8768)
?ELS22: CALL TELL-FLASHING-CASH
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-331 (8831)
?ELS15: CALL NOT-HERE,GLOBAL-MONEY
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-331 (8811)
?ELS10: CALL NOT-HERE,GLOBAL-MONEY
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-344 (9016)
EQUAL? PRSA,V?BUY,V?ASK-FOR \?ELS5
EQUAL? P-ADJ,W?FIRST \?ELS10
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-344 (8996)
EQUAL? PRSA,V?BUY,V?ASK-FOR \?ELS4
EQUAL? P-ADJ,W?FIRST \?ELS8
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-348 (9125)
?ELS10: CALL DO-INSTEAD-OF,FOOD-2,ITEMS
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-348 (9104)
?ELS8: CALL DO-INSTEAD-OF,FOOD-2,ITEMS
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-350 (9175)
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-350 (9153)
?ELS4: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-358 (9306)
EQUAL? PRSA,V?SMELL,V?BUY,V?ASK-FOR \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-358 (9284)
EQUAL? PRSA,V?SMELL,V?BUY,V?ASK-FOR \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-361 (9398)
?ELS5: CALL REMOTE-VERB?
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-361 (9376)
?ELS4: CALL REMOTE-VERB?
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-378 (9657)
EQUAL? PRSA,V?DRINK,V?SMELL,V?EAT \?ELS5
EQUAL? PRSA,V?SMELL /?THN11
IN? PRSO,GLOBAL-OBJECTS /?ELS10
?THN11: PRINTR "It's pungent but not very flavorful."
?ELS10: PRINTR "That wouldn't be very polite."
?ELS5: EQUAL? PRSA,V?PUT-IN,V?PUT,V?POUR \?ELS20
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-378 (9635)
EQUAL? PRSA,V?DRINK,V?SMELL,V?EAT \?ELS4
EQUAL? PRSA,V?SMELL /?THN8
IN? PRSO,GLOBAL-OBJECTS /?ELS9
?THN8: PRINTR "It's pungent but not very flavorful."
?ELS9: PRINTR "That wouldn't be very polite."
?ELS4: EQUAL? PRSA,V?PUT-IN,V?PUT,V?POUR \?ELS14
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-385 (9957)
?ELS20: EQUAL? PRSA,V?BUY,V?ASK-FOR \FALSE
ZERO? ON-TRAIN /?ELS27
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-385 (9931)
?ELS14: EQUAL? PRSA,V?BUY,V?ASK-FOR \FALSE
ZERO? ON-TRAIN /?ELS19
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-388 (10044)
JUMP ?CND25
?ELS27: SET 'PER,WAITRESS
?CND25: ZERO? DRINK? /?ELS33
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-388 (10018)
JUMP ?CND18
?ELS19: SET 'PER,WAITRESS
?CND18: ZERO? DRINK? /?ELS21
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-392 (10135)
JUMP ?CND31
?ELS33: SET 'OBJ,FOOD
?CND31: ZERO? DRINK? /?ELS39
FSET? WINE-RED,TOUCHBIT /?THN44
FSET? WINE-WHITE,TOUCHBIT \?CND37
?THN44: PRINTR "You've bought enough drink already."
?ELS39: FSET? FOOD,TOUCHBIT \?CND37
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-392 (10109)
JUMP ?CND20
?ELS21: SET 'OBJ,FOOD
?CND20: ZERO? DRINK? /?ELS23
FSET? WINE-RED,TOUCHBIT /?THN25
FSET? WINE-WHITE,TOUCHBIT \?CND22
?THN25: PRINTR "You've bought enough drink already."
?ELS23: FSET? FOOD,TOUCHBIT \?CND22
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-400 (10409)
?CND37: ZERO? POCKET-CHANGE \?ELS56
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-400 (10383)
?CND22: ZERO? POCKET-CHANGE \?ELS35
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-402 (10486)
?ELS56: IN? PER,HERE /?ELS60
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-402 (10460)
?ELS35: IN? PER,HERE /?ELS38
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-406 (10583)
?ELS60: DEC 'POCKET-CHANGE
EQUAL? OBJ,WINE-RED,WINE-WHITE \?CND65
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-406 (10557)
?ELS38: DEC 'POCKET-CHANGE
EQUAL? OBJ,WINE-RED,WINE-WHITE \?CND41
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-412 (10728)
?CND65: CALL TABLE?,HERE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-412 (10702)
?CND41: CALL TABLE?,HERE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-414 (10768)
ZERO? ?ORTMP /?ORP71
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-414 (10742)
ZERO? ?ORTMP /?ORP45
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-416 (10805)
JUMP ?THN68
?ORP71: PUSH HERE
?THN68: MOVE OBJ,STACK
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-416 (10779)
JUMP ?THN43
?ORP45: PUSH HERE
?THN43: MOVE OBJ,STACK
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-434 (11164)
EQUAL? PRSA,V?EMPTY,V?THROW-THROUGH,V?THROW-AT \?ELS5
IN? WINE-RED,CUP \?CND6
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-434 (11138)
EQUAL? PRSA,V?EMPTY,V?THROW-THROUGH,V?THROW-AT \?ELS4
IN? WINE-RED,CUP \?CND5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-437 (11277)
?CND6: IN? WINE-WHITE,CUP \?CND9
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-437 (11251)
?CND5: IN? WINE-WHITE,CUP \?CND7
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-439 (11344)
?CND9: CALL ROB,CUP,HERE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-439 (11318)
?CND7: CALL ROB,CUP,HERE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-442 (11416)
?ELS5: EQUAL? PRSA,V?PUT-IN \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-442 (11390)
?ELS4: EQUAL? PRSA,V?PUT-IN \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-451 (11617)
EQUAL? PRSA,V?PUT \?ELS9
EQUAL? PRSI,TOWEL-WAITER,NAPKIN,SCARF \?ELS9
EQUAL? PRSO,WINE-RED \?ELS9
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-451 (11591)
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,TOWEL-WAITER,NAPKIN,SCARF \?ELS5
EQUAL? PRSO,WINE-RED \?ELS5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-455 (11737)
ZERO? OBJ \?THN6
?ELS9: EQUAL? PRSA,V?PUT-IN \?ELS5
EQUAL? PRSO,TOWEL-WAITER,NAPKIN,SCARF \?ELS5
EQUAL? PRSI,WINE-RED \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-455 (11711)
ZERO? 1 \?THN4
?ELS5: EQUAL? PRSA,V?PUT-IN \?ELS6
EQUAL? PRSO,TOWEL-WAITER,NAPKIN,SCARF \?ELS6
EQUAL? PRSI,WINE-RED \?ELS6
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-460 (11885)
ZERO? OBJ /?ELS5
?THN6: LOC OBJ
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-460 (11857)
ZERO? 1 /?ELS6
?THN4: LOC OBJ
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-471 (12108)
?ELS5: CALL FOOD-F,TRUE-VALUE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-471 (12078)
?ELS6: CALL FOOD-F,TRUE-VALUE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-476 (12176)
ZERO? ON-TRAIN /?ELS3
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-476 (12146)
ZERO? ON-TRAIN /?ELS2
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-479 (12231)
?ELS3: SET 'PER,WAITRESS
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-479 (12201)
?ELS2: SET 'PER,WAITRESS
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-490 (12547)
EQUAL? RM,CAFE \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-490 (12517)
EQUAL? RM,CAFE \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-492 (12593)
?ELS5: EQUAL? RM,BOOTH-1 \?ELS7
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-492 (12563)
?ELS4: EQUAL? RM,BOOTH-1 \?ELS5
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-494 (12643)
?ELS7: EQUAL? RM,BOOTH-2 \?ELS9
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-494 (12613)
?ELS5: EQUAL? RM,BOOTH-2 \?ELS6
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-496 (12693)
?ELS9: EQUAL? RM,BOOTH-3 \FALSE
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-496 (12663)
?ELS6: EQUAL? RM,BOOTH-3 \FALSE
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-506 (12993)
EQUAL? PRSA,V?LEARN,V?ANALYZE \?ELS5
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-506 (12963)
EQUAL? PRSA,V?LEARN,V?ANALYZE \?ELS4
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-508 (13201)
?ELS5: EQUAL? PRSA,V?MAKE \FALSE
ZERO? PRSI /?ELS12
FSET? PRSI,PERSONBIT \?ELS12
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-508 (13171)
?ELS4: EQUAL? PRSA,V?MAKE \FALSE
ZERO? PRSI /?ELS9
FSET? PRSI,PERSONBIT \?ELS9
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-512 (13301)
JUMP ?CND10
?ELS12: CALL QCONTEXT-GOOD?
ZERO? STACK /?ELS16
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-512 (13269)
JUMP ?CND8
?ELS9: CALL QCONTEXT-GOOD?
ZERO? STACK /?ELS11
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-516 (13384)
JUMP ?CND10
?ELS16: CALL FIND-FLAG,HERE,PERSONBIT,WINNER >P
ZERO? P \?CND10
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-516 (13350)
JUMP ?CND8
?ELS11: CALL FIND-FLAG,HERE,PERSONBIT,WINNER >P
ZERO? P \?CND8
***************
**** FILE PS:<SWG>GLOBAL.ZAP.1, 1-520 (13517)
?CND10: CALL START-SENTENCE,P
**** FILE PS:<SWG>GLOBAL.ZAP.3, 1-520 (13481)
?CND8: CALL START-SENTENCE,P
***************

657
global.zap Normal file
View File

@ -0,0 +1,657 @@
.FUNCT DO-INSTEAD-OF,OBJ1,OBJ2
EQUAL? PRSI,OBJ2 \?ELS5
CALL PERFORM,PRSA,PRSO,OBJ1
RTRUE
?ELS5: EQUAL? PRSO,OBJ2 \?ELS7
CALL PERFORM,PRSA,OBJ1,PRSI
RTRUE
?ELS7: CALL1 V-FOO
ZERO? STACK /FALSE
RTRUE
.FUNCT TURN-F
EQUAL? PRSA,V?USE \FALSE
CALL PERFORM,V?WAIT-FOR,PRSO
RTRUE
.FUNCT IT-F
EQUAL? PRSI,IT \?THN10
EQUAL? PRSA,V?TELL-ABOUT /?THN10
EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?THN14
?THN10: EQUAL? PRSO,IT \FALSE
EQUAL? PRSA,V?WHAT /?THN14
EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE
?THN14: CALL1 PRODUCE-GIBBERISH
RSTACK
.FUNCT FLOOR-F,OBJ
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,FLOOR \?ELS5
CALL PERFORM,V?DROP,PRSO
RTRUE
?ELS5: EQUAL? PRSA,V?LOOK-ON,V?SEARCH,V?EXAMINE \?ELS9
CALL FIND-FLAG,HERE,NDESCBIT,WINNER >OBJ
ZERO? OBJ /?ELS14
FCLEAR OBJ,NDESCBIT
CALL2 THIS-IS-IT,OBJ
PRINTI "Something catches your eye: it's "
CALL2 PRINTA,OBJ
PRINTR "."
?ELS14: PRINTR "You don't find anything new there."
?ELS9: EQUAL? PRSA,V?TAKE,V?BRUSH \FALSE
IN? BLOOD-SPOT,HERE \FALSE
CALL PERFORM,V?BRUSH,BLOOD-SPOT,PRSI
RTRUE
.FUNCT DOLLARS-F
EQUAL? PRSA,V?COUNT \?ELS5
CALL DO-INSTEAD-OF,GLOBAL-MONEY,DOLLARS
RTRUE
?ELS5: ZERO? P-DOLLAR-FLAG /?ELS10
ZERO? P-AMOUNT \?CND8
SET 'P-AMOUNT,1
JUMP ?CND8
?ELS10: SET 'P-DOLLAR-FLAG,TRUE-VALUE
ZERO? P-NUMBER \?CND8
SET 'P-AMOUNT,1
?CND8: CALL DO-INSTEAD-OF,INTNUM,DOLLARS
RTRUE
.FUNCT INTNUM-F
ZERO? P-DOLLAR-FLAG /FALSE
CALL2 DIVESTMENT?,PRSO
ZERO? STACK /?ELS11
CALL1 TELL-FLASHING-CASH
RTRUE
?ELS11: EQUAL? PRSA,V?ASK-FOR,V?TAKE /FALSE
EQUAL? WINNER,PLAYER \FALSE
GETP PLAYER,P?SOUTH
GRTR? P-AMOUNT,STACK \FALSE
PRINTR "You don't have that much."
.FUNCT YOU-F
EQUAL? WINNER,PLAYER /?ELS5
CALL DO-INSTEAD-OF,WINNER,YOU
RTRUE
?ELS5: EQUAL? PRSA,V?ASK-ABOUT \FALSE
EQUAL? PRSI,YOU \FALSE
CALL PERFORM,V?ASK-ABOUT,PRSO,PRSO
RTRUE
.FUNCT CORRIDOR-GLOBAL-F,RM
EQUAL? PRSA,V?LOOK-UP,V?LOOK-DOWN /?THN6
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?ANALYZE \FALSE
?THN6: ZERO? ON-TRAIN /FALSE
CALL ZMEMQ,HERE,CAR-ROOMS-CORRID
ZERO? STACK /?ELS14
CALL2 PERFORM,V?LOOK
RTRUE
?ELS14: CALL NEXT-ROOM,HERE,P?OUT >RM
ZERO? RM /FALSE
CALL ROOM-PEEK,RM,TRUE-VALUE
RSTACK
.FUNCT GLOBAL-HERE-F,FLG=0,F,HR,TIM,VAL
EQUAL? PRSA,V?SIT,V?WALK-TO \?ELS5
CALL DO-INSTEAD-OF,HERE,GLOBAL-HERE
RTRUE
?ELS5: EQUAL? PRSA,V?KNOCK \?ELS7
PRINTR "Knocking on the walls reveals nothing unusual."
?ELS7: EQUAL? PRSA,V?TIE-TO,V?PUT-IN,V?PUT \?ELS11
CALL1 MORE-SPECIFIC
RSTACK
?ELS11: EQUAL? PRSA,V?EXAMINE,V?SEARCH \FALSE
GETP HERE,P?CORRIDOR
ZERO? STACK /?ELS16
SET 'TIM,3
JUMP ?CND14
?ELS16: GETP HERE,P?SIZE
ADD 2,STACK >TIM
?CND14: EQUAL? P-ADVERB,W?CAREFULLY \?CND19
MUL 2,TIM >TIM
?CND19: PRINTI "(It's better to examine or search one thing at a time. It would take a long time to search a whole room or area thoroughly. A "
EQUAL? P-ADVERB,W?CAREFULLY \?ELS26
PRINTI "careful"
JUMP ?CND24
?ELS26: PRINTI "brief"
?CND24: PRINTI " search would take "
PRINTN TIM
PRINTI " minutes, and it might not reveal much. Would you like to do it anyway?)"
CALL1 YES?
ZERO? STACK /?ELS39
CALL2 INT-WAIT,TIM >VAL
EQUAL? M-FATAL,VAL /TRUE
ZERO? VAL /?ELS46
PRINTI "Your "
EQUAL? P-ADVERB,W?CAREFULLY \?ELS52
PRINTI "careful"
JUMP ?CND50
?ELS52: PRINTI "brief"
?CND50: PRINTI " search reveals"
CALL2 FOUND?,HERE >VAL
ZERO? VAL /?ELS65
CALL2 PRINTT,VAL
PRINTR " under the seat."
?ELS65: PRINTR " nothing exciting."
?ELS46: PRINTR "You didn't finish looking over the place."
?ELS39: SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "Okay."
.FUNCT FOUND?,RM,X
CALL ZMEMQ,RM,CAR-ROOMS-COMPS >X
ZERO? X /?ELS5
GET CAR-ROOMS-UNDER,X
FIRST? STACK >X \?ELS5
RETURN X
?ELS5: EQUAL? RM,BOOTH-1 \?ELS9
FIRST? UNDER-BOOTH-1 /TRUE
RFALSE
?ELS9: EQUAL? RM,BOOTH-2 \?ELS13
FIRST? UNDER-BOOTH-2 /TRUE
RFALSE
?ELS13: EQUAL? RM,BOOTH-3 \FALSE
FIRST? UNDER-BOOTH-3 /TRUE
RFALSE
.FUNCT AIR-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "You can see through the air around you."
?ELS5: EQUAL? PRSA,V?WALK-TO \?ELS9
PRINTR "It's all around you!"
?ELS9: EQUAL? PRSA,V?SMELL \FALSE
CALL2 OUTSIDE?,HERE
ZERO? STACK /?ELS18
PRINTR "The air is clear and fresh."
?ELS18: CALL2 FRESH-AIR?,HERE
ZERO? STACK \TRUE
PRINTR "The air is rather musty."
.FUNCT SOMETHING-F
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTI "(Type a real word instead of "
PRINTD SOMETHING
PRINTR ".)"
.FUNCT TOILET-F
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
CALL1 YOU-CANT
RSTACK
?ELS5: EQUAL? PRSA,V?PUT-IN \?ELS7
EQUAL? PRSI,TOILET \FALSE
FSET PRSO,MUNGBIT
RFALSE
?ELS7: EQUAL? PRSA,V?FLUSH-DOWN,V?FLUSH \FALSE
ZERO? IN-STATION /?ELS19
ZERO? ON-TRAIN /?ELS19
PRINTR "An old refrain comes to mind:
""Passengers will please refrain
From flushing toilets while the train
Is standing in the station. (I love you!)"""
?ELS19: EQUAL? PRSA,V?FLUSH-DOWN \?CND26
CALL1 ITAKE
EQUAL? STACK,TRUE-VALUE \TRUE
MOVE PRSO,TOILET
?CND26: FIRST? TOILET \?CND32
PRINTI "Say goodbye to"
CALL ROB,TOILET,LIMBO-FWD,TRUE-VALUE
?CND32: PRINTR """Whhoooossshhhhh!"""
.FUNCT ROB,WHAT,THIEF,TELL?=0,N,X,TOLD?=0
FIRST? WHAT >X /?KLU29
?KLU29:
?PRG1: ZERO? X /TRUE
NEXT? X >N /?KLU30
?KLU30: ZERO? N \?CND6
ZERO? TOLD? /?CND6
ZERO? TELL? /?CND6
PRINTI " and"
?CND6: SET 'TOLD?,TRUE-VALUE
ZERO? TELL? /?CND13
CALL2 PRINTT,X
ZERO? N /?ELS21
PRINTI ","
JUMP ?CND13
?ELS21: PRINTI ". "
?CND13: MOVE X,THIEF
FCLEAR X,TAKEBIT
SET 'X,N
JUMP ?PRG1
.FUNCT SINK-F
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
CALL1 YOU-CANT
RSTACK
?ELS5: EQUAL? PRSA,V?LAMP-ON \FALSE
PRINTR "You push on the handle, and water runs until you let go. A silly idea comes into your head: what is the sound of one hand washing?"
.FUNCT TOWEL-LOOP-F
EQUAL? PRSA,V?CUT \?ELS5
EQUAL? PRSI,KNIFE \FALSE
MOVE SCARF,PLAYER
FSET SCARF,TAKEBIT
PUTP SCARF,P?CAR,CAR-HERE
MOVE TOWEL-FIXTURE-BROKEN,HERE
PUTP TOWEL-FIXTURE-BROKEN,P?CAR,CAR-HERE
MOVE TOWEL-LOOP-BROKEN,HERE
PUTP TOWEL-LOOP-BROKEN,P?CAR,CAR-HERE
CALL2 THIS-IS-IT,TOWEL-LOOP-BROKEN
PRINTI "Well done! You now have a government-issue "
PRINTD SCARF
PRINTR ", and the janitor has a mess to repair."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS14
PRINTR "This cloth towel must be very long, but most of it is rolled up inside the dispenser. Only about a meter hangs below it in a ""U"" shape."
?ELS14: EQUAL? PRSA,V?TAKE /?THN19
EQUAL? PRSA,V?USE,V?MOVE-DIR,V?MOVE \FALSE
?THN19: PRINTR "As you pull on the towel, a fresh portion appears from a slot, and the used portion starts to disappear into the dispenser."
.FUNCT TOWEL-LOOP-BROKEN-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "This cloth towel must be very long, but most of it is rolled up inside the dispenser. The part that should hang below is cut away."
?ELS5: EQUAL? PRSA,V?TAKE,V?USE /?THN10
EQUAL? PRSA,V?MOVE-DIR,V?MOVE,V?CUT \FALSE
?THN10: PRINTR "There's not enough left!"
.FUNCT PAPER-FIXTURE-F
EQUAL? PRSA,V?LOOK-INSIDE \FALSE
FCLEAR PAPER-LOOP,NDESCBIT
RFALSE
.FUNCT PAPER-LOOP-F
EQUAL? PRSA,V?TAKE /?THN6
EQUAL? PRSA,V?USE,V?MOVE-DIR,V?MOVE \FALSE
?THN6: PRINTR "Whatever you have in mind, it'll never work!"
.FUNCT MIRROR-F
EQUAL? PRSA,V?MUNG \?ELS5
PRINTR "You don't need any bad luck!"
?ELS5: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE
PRINTI "A harried and weary "
EQUAL? VARIATION,3,4 \?ELS16
PUSH STR?151
JUMP ?CND12
?ELS16: PUSH STR?152
?CND12: PRINT STACK
PRINTR " looks back at you, with a look that seems to say, ""I don't need this aggravation!"""
.FUNCT POCKET-F,X
CALL2 DIVESTMENT?,POCKET
ZERO? STACK /?ELS5
CALL1 HAR-HAR
RSTACK
?ELS5: EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE \?ELS7
CALL2 PRINT-CONT,POCKET >X
EQUAL? WINNER,PLAYER \?ELS10
GETP PLAYER,P?SOUTH
GRTR? STACK,0 \?ELS10
CALL2 THIS-IS-IT,GLOBAL-MONEY
ZERO? X /?ELS15
PRINTR "And some money."
?ELS15: PRINTI "You have some money in your pocket."
IN? CUSTOMS-AGENT,HERE \?CND23
PRINTI " But"
CALL2 HE-SHE-IT,CUSTOMS-AGENT
PRINTI " won't mind."
?CND23: CRLF
RTRUE
?ELS10: ZERO? X \TRUE
PRINTR "Your pocket is empty."
?ELS7: EQUAL? PRSA,V?EMPTY \?ELS33
FIRST? POCKET \FALSE
PRINTI "You are now holding"
CALL ROB,POCKET,PLAYER,TRUE-VALUE
CRLF
RTRUE
?ELS33: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS42
PRINTR "You don't need to do that."
?ELS42: EQUAL? PRSA,V?PUT-IN \FALSE
EQUAL? PRSI,POCKET \FALSE
EQUAL? PRSO,GLOBAL-MONEY /?THN54
EQUAL? PRSO,INTNUM \?ELS53
ZERO? P-DOLLAR-FLAG /?ELS53
?THN54: PRINTR "It's already there."
?ELS53: EQUAL? PRSO,CAMERA \FALSE
FSET? PRSO,OPENBIT \FALSE
FCLEAR PRSO,OPENBIT
PRINTI "(You close"
CALL2 HIM-HER-IT,PRSO
PRINTI " first.)"
CRLF
RFALSE
.FUNCT POCKET-C-F,X
CALL2 DIVESTMENT?,POCKET-C
ZERO? STACK /?ELS5
CALL1 HAR-HAR
RSTACK
?ELS5: EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE \?ELS7
FSET? CONDUCTOR,MUNGBIT /?THN11
FSET? CONDUCTOR,PERSONBIT /?ELS10
?THN11: CALL2 PRINT-CONT,POCKET-C >X
RTRUE
?ELS10: CALL HE-SHE-IT,CONDUCTOR,TRUE-VALUE
PRINTR " brushes your hand away without even looking."
?ELS7: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS18
PRINTR "You don't need to do that."
?ELS18: EQUAL? PRSA,V?PUT-IN \FALSE
EQUAL? PRSI,POCKET-C \FALSE
EQUAL? PRSO,CAMERA \FALSE
FSET? PRSO,OPENBIT \FALSE
FCLEAR PRSO,OPENBIT
PRINTI "(You close"
CALL2 HIM-HER-IT,PRSO
PRINTI " first.)"
CRLF
RFALSE
.FUNCT TELL-FLASHING-CASH
PRINTR "Flashing your bankroll is not a good idea."
.FUNCT GLOBAL-MONEY-F
EQUAL? PRSA,V?FIND \?ELS5
PRINTR "It's not that easy!"
?ELS5: CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?PUT-IN,V?PUT \?ELS11
EQUAL? PRSO,GLOBAL-MONEY \?ELS11
CALL1 MORE-SPECIFIC
RSTACK
?ELS11: GETP PLAYER,P?SOUTH
GRTR? STACK,0 \?ELS15
EQUAL? PRSA,V?EXAMINE,V?COUNT \?ELS20
PRINTI "You are carrying "
PRINTC CURRENCY-SYMBOL
GETP PLAYER,P?SOUTH
PRINTN STACK
PRINTR "."
?ELS20: EQUAL? PRSA,V?GIVE \?ELS26
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "(You didn't say how much money to give.)"
?ELS26: EQUAL? PRSA,V?TAKE \?ELS30
ZERO? PRSI /?ELS30
PRINTI "You can't see any money on"
CALL2 HIM-HER-IT,PRSI
PRINTR "."
?ELS30: EQUAL? PRSA,V?SHOW /FALSE
CALL1 TELL-FLASHING-CASH
RSTACK
?ELS15: CALL2 NOT-HERE,GLOBAL-MONEY
RSTACK
.FUNCT MENU-F
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
GETP MENU,P?TEXT
PRINT STACK
CRLF
RTRUE
.FUNCT ITEMS-F
EQUAL? PRSA,V?BUY,V?ASK-FOR \?ELS5
EQUAL? P-ADJ,W?FIRST \?ELS10
CALL DO-INSTEAD-OF,FOOD,ITEMS
RTRUE
?ELS10: CALL DO-INSTEAD-OF,FOOD-2,ITEMS
RTRUE
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
GETP MENU,P?TEXT
PRINT STACK
CRLF
RTRUE
.FUNCT FOOD-GLOBAL-F
EQUAL? PRSA,V?SMELL,V?BUY,V?ASK-FOR \?ELS5
CALL DO-INSTEAD-OF,FOOD,FOOD-GLOBAL
RTRUE
?ELS5: CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
CALL2 NOT-HERE,FOOD-GLOBAL
RSTACK
.FUNCT DRINK-F
CALL2 FOOD-F,TRUE-VALUE
RSTACK
.FUNCT DRINK-1-F
CALL DO-INSTEAD-OF,DRINK-GLOBAL,DRINK-1
RTRUE
.FUNCT FOOD-F,DRINK?=0,PER,OBJ,X,?ORTMP
EQUAL? PRSA,V?DRINK,V?SMELL,V?EAT \?ELS5
EQUAL? PRSA,V?SMELL /?THN11
IN? PRSO,GLOBAL-OBJECTS /?ELS10
?THN11: PRINTI "It's pungent but not very flavorful."
EQUAL? PRSA,V?SMELL /?CND15
GETP PRSO,P?SIZE >X
PUTP PRSO,P?SIZE,X
EQUAL? X,FOOD-HALF-SIZE \?ELS20
PRINTI " And it's half gone."
JUMP ?CND15
?ELS20: ZERO? X \?CND15
MOVE PRSO,GLOBAL-OBJECTS
PRINTI " And it's gone."
?CND15: EQUAL? VARIATION,3,4 \?CND27
PRINTI " You've had better in some mighty dank corners of the world."
?CND27: CRLF
RTRUE
?ELS10: PRINTR "That wouldn't be very polite."
?ELS5: EQUAL? PRSA,V?MUNG /?THN38
EQUAL? PRSA,V?PUT-IN,V?PUT,V?POUR \?ELS37
?THN38: EQUAL? PRSI,TOILET /FALSE
EQUAL? PRSA,V?POUR /?ELS46
EQUAL? PRSI,TABLE-3,TABLE-2,TABLE-1 /FALSE
?ELS46: PRINTR "What a mess that would make!"
?ELS37: EQUAL? PRSA,V?BUY,V?ASK-FOR \FALSE
EQUAL? HERE,PANTRY \?CND55
CALL2 INVASION?,WAITER
ZERO? STACK \TRUE
?CND55: ZERO? ON-TRAIN /?ELS62
SET 'PER,WAITER
JUMP ?CND60
?ELS62: SET 'PER,WAITRESS
?CND60: ZERO? DRINK? /?ELS68
SET 'OBJ,WINE-RED
JUMP ?CND66
?ELS68: SET 'OBJ,FOOD
?CND66: ZERO? DRINK? /?ELS74
FSET? WINE-RED,TOUCHBIT /?THN79
FSET? WINE-WHITE,TOUCHBIT \?CND72
?THN79: PRINTR "You've bought enough to drink already."
?ELS74: FSET? FOOD,TOUCHBIT \?CND72
PRINTR "You've bought enough to eat already."
?CND72: GETP PLAYER,P?SOUTH
ZERO? STACK \?ELS91
PRINTR "You don't have enough money."
?ELS91: IN? PER,HERE /?ELS95
PRINTI "You'd better talk to "
CALL2 PRINTA,PER
PRINTR " first."
?ELS95: GETP PLAYER,P?SOUTH
SUB STACK,1
PUTP PLAYER,P?SOUTH,STACK
EQUAL? OBJ,WINE-RED,WINE-WHITE \?ELS102
CALL CALL-FOR-PROP,CUP-A,WAITER
POP '?ORTMP
ZERO? ?ORTMP /?ORP106
PUSH ?ORTMP
JUMP ?THN103
?ORP106: CALL CALL-FOR-PROP,CUP-B,WAITER
?THN103: POP 'X
MOVE OBJ,X
PUTP OBJ,P?CAR,CAR-HERE
PUTP OBJ,P?SIZE,FOOD-SIZE
FSET OBJ,TOUCHBIT
SET 'OBJ,X
JUMP ?CND100
?ELS102: PUTP OBJ,P?SIZE,FOOD-SIZE
?CND100: CALL2 TABLE?,HERE
POP '?ORTMP
ZERO? ?ORTMP /?ORP112
PUSH ?ORTMP
JUMP ?THN109
?ORP112: PUSH HERE
?THN109: MOVE OBJ,STACK
PUTP OBJ,P?CAR,CAR-HERE
FSET OBJ,TAKEBIT
FSET OBJ,TOUCHBIT
FCLEAR OBJ,NDESCBIT
FCLEAR PER,TOUCHBIT
PUTP PER,P?LDESC,29
CALL HE-SHE-IT,PER,TRUE-VALUE
PRINTI " returns in an instant with "
CALL2 PRINTA,OBJ
PRINTI " and takes "
PRINTC CURRENCY-SYMBOL
PRINTR "1 from you."
.FUNCT CUP-F
EQUAL? PRSA,V?EMPTY,V?THROW-THROUGH,V?THROW-AT \?ELS5
LOC WINE-RED
EQUAL? STACK,PRSO,PRSI \?CND6
MOVE WINE-RED,GLOBAL-OBJECTS
?CND6: LOC WINE-WHITE
EQUAL? STACK,PRSO,PRSI \?CND9
MOVE WINE-WHITE,GLOBAL-OBJECTS
?CND9: CALL ROB,PRSO,HERE
CALL ROB,PRSI,HERE
EQUAL? PRSA,V?EMPTY \FALSE
PRINTR "Okay."
?ELS5: EQUAL? PRSA,V?PUT-IN \FALSE
EQUAL? PRSO,TOWEL-WAITER,NAPKIN,SCARF \FALSE
EQUAL? PRSI,CUP-B,CUP-A \FALSE
IN? WINE-RED,PRSI \FALSE
CALL DO-INSTEAD-OF,WINE-RED,PRSI
RTRUE
.FUNCT WINE-PUT?
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,TOWEL-WAITER,NAPKIN,SCARF \FALSE
EQUAL? PRSO,WINE-RED \FALSE
RETURN PRSI
?ELS5: EQUAL? PRSA,V?PUT-IN \FALSE
EQUAL? PRSO,TOWEL-WAITER,NAPKIN,SCARF \FALSE
EQUAL? PRSI,WINE-RED \FALSE
RETURN PRSO
.FUNCT WINE-F,OBJ
EQUAL? PRSA,V?TAKE \?ELS5
LOC PRSO
EQUAL? STACK,CUP-A,CUP-B \?ELS5
LOC PRSO
CALL PERFORM,PRSA,STACK,PRSI
RTRUE
?ELS5: CALL1 WINE-PUT? >OBJ
ZERO? OBJ /?ELS9
LOC OBJ
MOVE HANKY,STACK
FSET HANKY,TAKEBIT
MOVE OBJ,LIMBO-FWD
FCLEAR OBJ,TAKEBIT
MOVE WINE-RED,GLOBAL-OBJECTS
PRINTI "The "
PRINTD OBJ
PRINTI " soaks up the wine, and the stain spreads to every nook and cranny. Within a minute, you have a decent imitation of a "
PRINTD HANKY
PRINTR "."
?ELS9: CALL2 FOOD-F,TRUE-VALUE
RSTACK
.FUNCT NO-FOOD-F,PER
ZERO? ON-TRAIN /?ELS3
SET 'PER,WAITER
JUMP ?CND1
?ELS3: SET 'PER,WAITRESS
?CND1: EQUAL? PRSA,V?BUY,V?ASK-ABOUT \FALSE
CALL2 START-SENTENCE,PER
PRINTI " shakes"
CALL HIM-HER-IT,PER,FALSE-VALUE,TRUE-VALUE
CALL2 THIS-IS-IT,FOOD
CALL2 THIS-IS-IT,PER
PRINTR " head and points to the first item on the menu, which you find unreadable."
.FUNCT TABLE?,RM
EQUAL? RM,CAFE \?ELS5
RETURN COUNTER-CAFE
?ELS5: EQUAL? RM,BOOTH-1 \?ELS7
RETURN TABLE-1
?ELS7: EQUAL? RM,BOOTH-2 \?ELS9
RETURN TABLE-2
?ELS9: EQUAL? RM,BOOTH-3 \FALSE
RETURN TABLE-3
.FUNCT LANGUAGE-F
EQUAL? PRSA,V?LEARN,V?ANALYZE \FALSE
PRINTR "Maybe you should have taken your company's offer to pay for language lessons before you started this trip. After all, English isn't spoken everywhere."
.FUNCT GESTURE-F,P
EQUAL? PRSA,V?LEARN,V?ANALYZE \?ELS5
PRINTR "Maybe you should have taken your company's offer to pay for gesture lessons before you started this trip. After all, English gestures aren't used everywhere."
?ELS5: EQUAL? PRSA,V?MAKE \FALSE
ZERO? PRSI /?ELS12
FSET? PRSI,PERSONBIT \?ELS12
SET 'P,PRSI
JUMP ?CND10
?ELS12: CALL1 QCONTEXT-GOOD?
ZERO? STACK /?ELS16
SET 'P,QCONTEXT
JUMP ?CND10
?ELS16: CALL FIND-FLAG,HERE,PERSONBIT,WINNER >P
ZERO? P \?CND10
CALL2 NOT-CLEAR-WHOM,TRUE-VALUE
RTRUE
?CND10: CALL2 START-SENTENCE,P
CALL HE-SHE-IT,P,-1,STR?154
PRINTR " a gesture right back. Somehow it looks nastier than yours."
.FUNCT GAME-F
EQUAL? PRSA,V?READ,V?PLAY,V?EXAMINE \FALSE
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "(You're doing it now!)"
.FUNCT HEAD-F
EQUAL? PRSA,V?NOD \?ELS5
CALL2 PERFORM,V?YES
RTRUE
?ELS5: EQUAL? PRSA,V?SHAKE \FALSE
CALL2 PERFORM,V?NO
RTRUE
.ENDI

980
global.zil Normal file
View File

@ -0,0 +1,980 @@
"GLOBALS for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<OBJECT GLOBAL-OBJECTS
(DESC "GO")
(FDESC 0)
(FLAGS BUSYBIT CONTBIT DOORBIT FEMALE
INVISIBLE LIGHTBIT LOCKED MUNGBIT
NARTICLEBIT NDESCBIT ONBIT ;ON?BIT OPENBIT
;PERSONBIT ;PLURAL READBIT RMUNGBIT
SEARCHBIT ;SEENBIT SURFACEBIT
TAKEBIT TOOLBIT TOUCHBIT TRANSBIT TRYTAKEBIT TURNBIT
VEHBIT VOWELBIT WEAPONBIT WEARBIT WINDOWBIT WORNBIT)>
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(DESC "LG")
(SYNONYM ZZZZLG) ;"This synonym is necessary - God knows">
<ROUTINE DO-INSTEAD-OF (OBJ1 OBJ2)
<COND (<EQUAL? ,PRSI .OBJ2> <PERFORM ,PRSA ,PRSO .OBJ1> <RTRUE>)
(<EQUAL? ,PRSO .OBJ2> <PERFORM ,PRSA .OBJ1 ,PRSI> <RTRUE>)
(<V-FOO>)>>
<OBJECT TURN
(LOC GLOBAL-OBJECTS)
(ADJECTIVE NUMBER FULL)
(SYNONYM TURN TURNS MINUTE)
(DESC "minute")
(ACTION TURN-F)>
<ROUTINE TURN-F ()
<COND (<VERB? USE>
<PERFORM ,V?WAIT-FOR ,PRSO>
<RTRUE>)>>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(SYNONYM IT THIS ;"FUCKER SUCKER")
(DESC "it")
(FLAGS VOWELBIT NARTICLEBIT)
(ACTION IT-F)>
<ROUTINE IT-F ()
<COND (<OR <AND <IOBJ? IT>
;<FSET? ,PRSO ,PERSONBIT>
<VERB? ASK-ABOUT ASK-FOR SEARCH-FOR TELL-ABOUT>>
<AND <DOBJ? IT>
<VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR FIND WHAT>>>
<PRODUCE-GIBBERISH>
;<TELL "\"I'm not sure what you're talking about.\"" CR>)>>
<OBJECT FLOOR
(LOC GLOBAL-OBJECTS)
(DESC "floor")
(SYNONYM FLOOR ;AREA GROUND)
(ACTION FLOOR-F)>
<ROUTINE FLOOR-F ("AUX" OBJ)
<COND ;(<REMOTE-VERB?> <RFALSE>)
(<AND <VERB? PUT> <IOBJ? FLOOR>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<VERB? EXAMINE SEARCH LOOK-ON>
<COND (<SET OBJ <FIND-FLAG ,HERE ,NDESCBIT ,WINNER>>
<FCLEAR .OBJ ,NDESCBIT>
<THIS-IS-IT .OBJ>
<TELL "Something catches your eye: it's " A .OBJ "." CR>)
(T <TELL "You don't find anything new there." CR>)>)
(<VERB? BRUSH TAKE>
<COND (<IN? ,BLOOD-SPOT ,HERE>
<PERFORM ,V?BRUSH ,BLOOD-SPOT ,PRSI>
<RTRUE>)>)>>
;<OBJECT DANGER
(LOC GLOBAL-OBJECTS)
(DESC "danger")
(SYNONYM DANGER THREAT)>
;<OBJECT MOTIVE
(LOC GLOBAL-OBJECTS)
(DESC "motive")
;(ADJECTIVE YOUR)
(SYNONYM MOTIVE)>
;<OBJECT PROBLEM
(LOC GLOBAL-OBJECTS)
(DESC "problem")
(ADJECTIVE URGENT)
(SYNONYM PROBLEM ;"WANT WRONG HAPPENING")>
;<OBJECT GLOBAL-WEAPON
(LOC GLOBAL-OBJECTS)
(DESC "weapon")
(ADJECTIVE ;YOUR SOME)
(SYNONYM WEAPON)>
;<OBJECT GLOBAL-EXPLOSIVE
(LOC GLOBAL-OBJECTS)
(DESC "explosive charge")
(ADJECTIVE ;YOUR SOME EXPLOSIVE)
(SYNONYM EXPLOSIVE CHARGE)
(FLAGS VOWELBIT)>
;<OBJECT GLOBAL-SURFACE
(LOC GLOBAL-OBJECTS)
(DESC "surface")
(SYNONYM SURFACE)>
<OBJECT DOLLARS
(LOC GLOBAL-OBJECTS)
(ADJECTIVE NUMBER)
(SYNONYM SLIMPUK)
(DESC "slimpuk")
(ACTION DOLLARS-F)>
<ROUTINE DOLLARS-F ()
<COND (<VERB? COUNT>
<DO-INSTEAD-OF ,GLOBAL-MONEY ,DOLLARS>
<RTRUE>)
(T
<COND (,P-DOLLAR-FLAG
<COND (<0? ,P-AMOUNT> <SETG P-AMOUNT 1>)>)
(T
<SETG P-DOLLAR-FLAG T>
<COND (<0? ,P-NUMBER> <SETG P-AMOUNT 1>)>)>
<DO-INSTEAD-OF ,INTNUM ,DOLLARS>
<RTRUE>)>>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(SYNONYM NUMBER)
(DESC "number")
(ACTION INTNUM-F)>
<ROUTINE INTNUM-F ()
<COND ;(<AND ;<VERB? GIVE WITHDRAW>
<NOT ,P-DOLLAR-FLAG>>
<TELL "(Please use units with numbers.)" CR>
<SETG CLOCK-WAIT T>
<RFATAL>)
(,P-DOLLAR-FLAG
<COND (<DIVESTMENT? ,PRSO>
<TELL-FLASHING-CASH>
<RTRUE>)
(<AND <NOT <VERB? ;WITHDRAW TAKE ASK-FOR>>
<==? ,WINNER ,PLAYER>
<G? ,P-AMOUNT <GETP ,PLAYER ,P?SOUTH>>>
<TELL "You don't have that much." CR>)>)>>
;<OBJECT GLOBAL-WATER
(LOC GLOBAL-OBJECTS)
(DESC "water")
(SYNONYM WATER)
(ACTION WATER-F)>
;<ROUTINE WATER-F ()
<COND (<REMOTE-VERB?> <RFALSE>)
(<VERB? SWIM THROUGH>
<TELL "This is no time for a swim!" CR>)>>
<OBJECT YOU
(LOC GLOBAL-OBJECTS)
(SYNONYM YOU YOURSELF HIMSELF HERSELF)
(DESC "himself or herself")
(FLAGS ;NDESCBIT NARTICLEBIT)
(ACTION YOU-F)>
<ROUTINE YOU-F ()
<COND (<NOT <==? ,WINNER ,PLAYER>>
<DO-INSTEAD-OF ,WINNER ,YOU>
<RTRUE>)
(<AND <VERB? ASK-ABOUT> <IOBJ? YOU>>
<PERFORM ,V?ASK-ABOUT ,PRSO ,PRSO>
<RTRUE>)>>
;<OBJECT HINT
(DESC "clue" ;"hint")
(LOC GLOBAL-OBJECTS)
(SYNONYM CLUE HINT HELP)
(ACTION HINT-F)>
;<ROUTINE HINT-F ()
<COND (<VERB? FIND>
<HELP-TEXT>)
(<VERB? ASK-FOR ASK-CONTEXT-FOR TAKE>
<MORE-SPECIFIC>)>>
<OBJECT CORRIDOR-GLOBAL
(LOC GLOBAL-OBJECTS)
(DESC "corridor")
(SYNONYM CORRIDOR)
(ACTION CORRIDOR-GLOBAL-F)>
<ROUTINE CORRIDOR-GLOBAL-F ("AUX" RM)
<COND (<VERB? ANALYZE EXAMINE LOOK-INSIDE LOOK-DOWN LOOK-UP>
<COND (<NOT ,ON-TRAIN>
<RFALSE>)
(<ZMEMQ ,HERE ,CAR-ROOMS-CORRID>
<PERFORM ,V?LOOK>
<RTRUE>)
(<SET RM <NEXT-ROOM ,HERE ,P?OUT>>
<ROOM-PEEK .RM T>)>)>>
<OBJECT GLOBAL-HERE
(LOC GLOBAL-OBJECTS)
(DESC "here")
(ADJECTIVE THIS)
(SYNONYM HERE AREA ROOM PLACE)
(FLAGS NARTICLEBIT)
(ACTION GLOBAL-HERE-F)>
<ROUTINE GLOBAL-HERE-F ("AUX" (FLG <>) F HR TIM VAL)
<COND (<VERB? WALK-TO SIT>
<DO-INSTEAD-OF ,HERE ,GLOBAL-HERE>
<RTRUE>)
(<VERB? KNOCK>
<TELL "Knocking on the walls reveals nothing unusual." CR>)
(<VERB? PUT PUT-IN TIE-TO>
<MORE-SPECIFIC>)
(<VERB? SEARCH EXAMINE>
<COND ;(<OUTSIDE? ,HERE>
<SET TIM 10>)
(<NOT <ZERO? <GETP ,HERE ,P?CORRIDOR>>>
<SET TIM 3>)
(T <SET TIM <+ 2 <GETP ,HERE ,P?SIZE>>>)>
<COND (<==? ,P-ADVERB ,W?CAREFULLY> <SET TIM <* 2 .TIM>>)>
<TELL
"(It's better to examine or search one thing at a time. It would take a
long time to search a whole room or area thoroughly. A ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY> <TELL "careful">)
(T <TELL "brief">)>
<TELL " search would take
" N .TIM " minutes, and it might not reveal much. Would you like
to do it anyway?)">
<COND (<YES?>
<COND (<==? ,M-FATAL <SET VAL <INT-WAIT .TIM>>>
<RTRUE>)
(.VAL
<TELL "Your ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
<TELL "careful">)
(T <TELL "brief">)>
<TELL " search reveals">
<COND (<SET VAL <FOUND? ,HERE>>
<TELL THE .VAL " under the seat." CR>)
(T <TELL " nothing exciting." CR>)>)
(T
<TELL
"You didn't finish looking over the place." CR>)>)
(T
<SETG CLOCK-WAIT T>
<TELL "Okay." CR>)>)>>
<ROUTINE FOUND? (RM "AUX" X)
<COND (<AND <SET X <ZMEMQ .RM ,CAR-ROOMS-COMPS>>
<SET X <FIRST? <GET ,CAR-ROOMS-UNDER .X>>>>
<RETURN .X>)
(<==? .RM ,BOOTH-1>
<FIRST? ,UNDER-BOOTH-1>)
(<==? .RM ,BOOTH-2>
<FIRST? ,UNDER-BOOTH-2>)
(<==? .RM ,BOOTH-3>
<FIRST? ,UNDER-BOOTH-3>)>>
<OBJECT AIR
(LOC GLOBAL-OBJECTS)
(DESC "air")
(SYNONYM AIR ;"WIND" BREEZE OXYGEN)
(FLAGS VOWELBIT)
(ACTION AIR-F)>
<ROUTINE AIR-F ()
<COND (<VERB? EXAMINE>
<TELL "You can see through the air around you." CR>)
(<VERB? WALK-TO>
<TELL "It's all around you!" CR>)
(<VERB? SMELL>
<COND (<OUTSIDE? ,HERE>
<TELL "The air is clear and fresh." CR>)
(<FRESH-AIR? ,HERE> <RTRUE>)
(T <TELL "The air is rather musty." CR>)>)>>
;<ROUTINE TOO-FAR-AWAY (OBJ) <TOO-BAD-BUT .OBJ "too far away">>
<OBJECT CHAIR
(LOC LOCAL-GLOBALS)
(DESC "chair")
(SYNONYM CHAIR ;CHAIRS SEAT BENCH STOOL)
(FLAGS NDESCBIT ;FURNITURE VEHBIT)
;(ACTION CHAIR-F)>
;<ROUTINE CHAIR-F ()
<COND (<VERB? SIT LOOK-UNDER CLIMB-ON CLIMB-DOWN>
<TELL "That's just a waste of time." CR>)>>
<OBJECT SOMETHING
(LOC GLOBAL-OBJECTS)
(DESC "(something)")
(SYNONYM \(SOMETHING\) )
(ACTION SOMETHING-F)>
<ROUTINE SOMETHING-F ()
<SETG CLOCK-WAIT T>
<TELL "(Type a real word instead of " D ,SOMETHING ".)" CR>>
;<OBJECT MORE
(DESC "more")
(LOC GLOBAL-OBJECTS)
(SYNONYM MORE)
(FLAGS NARTICLEBIT)>
;<OBJECT GLOBAL-SABOTAGE
(LOC GLOBAL-OBJECTS)
(DESC "sabotage")
(SYNONYM SABOTAGE)>
[
<OBJECT FIXTURES
(LOC LOCAL-GLOBALS)
(DESC "bunch of fixtures")
(SYNONYM BUNCH FIXTURE FIXTURES)>
<OBJECT TOILET
(LOC LOCAL-GLOBALS)
(DESC "toilet")
(SYNONYM TOILET ;FIXTURE)
(FLAGS NDESCBIT OPENBIT CONTBIT SEARCHBIT VEHBIT)
(CAPACITY 33)
(ACTION TOILET-F)>
<ROUTINE TOILET-F ()
<COND (<VERB? OPEN CLOSE>
<YOU-CANT>)
(<VERB? PUT-IN>
<COND (<IOBJ? TOILET>
<FSET ,PRSO ,MUNGBIT>
<RFALSE>)>)
(<VERB? FLUSH FLUSH-DOWN>
<COND (<AND ,IN-STATION ,ON-TRAIN>
<TELL
"An old refrain comes to mind:|
\"Passengers will please refrain|
From flushing toilets while the train|
Is standing in the station. (I love you!)\"" CR>)
(T
<COND (<VERB? FLUSH-DOWN>
<COND (<NOT <==? <ITAKE> T>> <RTRUE>)>
;<FSET ,TOILET ,OPENBIT>
<MOVE ,PRSO ,TOILET>)>
<COND (<FIRST? ,TOILET>
<TELL "Say goodbye to">
<ROB ,TOILET ,LIMBO-FWD T>)>
<TELL "\"Whhoooossshhhhh!\"" CR>)>)>>
<ROUTINE ROB (WHAT THIEF "OPTIONAL" (TELL? <>) "AUX" N X (TOLD? <>))
<SET X <FIRST? .WHAT>>
<REPEAT ()
<COND (<NOT .X> <RETURN>)>
<SET N <NEXT? .X>>
<COND (<AND <NOT .N> .TOLD? .TELL?>
<TELL " and">)>
<SET TOLD? T>
<COND (.TELL?
<TELL THE .X>
<COND (.N <TELL ",">)
(T <TELL ". ">)>)>
<MOVE .X .THIEF>
<FCLEAR .X ,TAKEBIT>
<SET X .N>>>
<OBJECT SINK
(LOC LOCAL-GLOBALS)
(DESC "sink")
(SYNONYM SINK BOWL BASIN FAUCET)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT)
(CAPACITY 15)
(TEXT
"It's a metal sink, a bit dented and scratched, with only one faucet.")
(ACTION SINK-F)>
<ROUTINE SINK-F ()
<COND (<VERB? OPEN CLOSE>
<YOU-CANT>)
(<VERB? LAMP-ON>
<TELL
"You push on the handle, and water runs until you let go. A silly idea
comes into your head: what is the sound of one hand washing?" CR>)>>
<OBJECT TOWEL-FIXTURE
(LOC LOCAL-GLOBALS)
(DESC "towel dispenser")
(ADJECTIVE TOWEL)
(SYNONYM DISPENSER ;FIXTURE HOLDER)
(FLAGS NDESCBIT)>
<OBJECT TOWEL-FIXTURE-BROKEN
;(LOC OTHER-REST-ROOM-REAR)
(CAR 0)
(DESC "towel dispenser")
(ADJECTIVE TOWEL)
(SYNONYM DISPENSER ;FIXTURE HOLDER)
(FLAGS NDESCBIT)>
<OBJECT TOWEL-LOOP
(LOC LOCAL-GLOBALS ;TOWEL-FIXTURE)
(DESC "towel")
(ADJECTIVE CLOTH FRESH)
(SYNONYM TOWEL PORTION)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION TOWEL-LOOP-F)>
<OBJECT TOWEL-LOOP-BROKEN
(CAR 0)
(DESC "towel remnant")
(ADJECTIVE CLOTH FRESH)
(SYNONYM TOWEL PORTION REMNANT)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION TOWEL-LOOP-BROKEN-F)>
<ROUTINE TOWEL-LOOP-F ()
<COND (<VERB? CUT>
<COND (<IOBJ? KNIFE>
<MOVE ,SCARF ,PLAYER>
<FSET ,SCARF ,TAKEBIT>
<PUTP ,SCARF ,P?CAR ,CAR-HERE>
<MOVE ,TOWEL-FIXTURE-BROKEN ,HERE>
<PUTP ,TOWEL-FIXTURE-BROKEN ,P?CAR ,CAR-HERE>
<MOVE ,TOWEL-LOOP-BROKEN ,HERE>
<PUTP ,TOWEL-LOOP-BROKEN ,P?CAR ,CAR-HERE>
<THIS-IS-IT ,TOWEL-LOOP-BROKEN>
<TELL
"Well done! You now have a government-issue " D ,SCARF ", and the janitor
has a mess to repair." CR>)>)
(<VERB? EXAMINE>
<TELL
"This cloth towel must be very long, but most of it is rolled up
inside the dispenser. Only about a meter hangs below it in a \"U\" shape."
CR>)
(<VERB? MOVE MOVE-DIR USE TAKE>
<TELL
"As you pull on the towel, a fresh portion appears from a slot, and
the used portion starts to disappear into the dispenser." CR>)>>
<ROUTINE TOWEL-LOOP-BROKEN-F ()
<COND (<VERB? EXAMINE>
<TELL
"This cloth towel must be very long, but most of it is rolled up
inside the dispenser. The part that should hang below is cut away." CR>)
(<VERB? CUT MOVE MOVE-DIR USE TAKE>
<TELL "There's not enough left!" CR>)>>
<OBJECT PAPER-FIXTURE
;(LOC LOCAL-GLOBALS)
(DESC "paper dispenser")
(ADJECTIVE ;TOILET PAPER TISSUE)
(SYNONYM DISPENSER ;FIXTURE HOLDER)
(FLAGS NDESCBIT OPENBIT CONTBIT SEARCHBIT)
(CAPACITY 3)
(ACTION PAPER-FIXTURE-F)>
<ROUTINE PAPER-FIXTURE-F ()
<COND (<VERB? LOOK-INSIDE>
<FCLEAR ,PAPER-LOOP ,NDESCBIT>
<RFALSE>)>>
<OBJECT PAPER-LOOP
(LOC PAPER-FIXTURE)
(CAR 0)
(DESC "paper")
(ADJECTIVE TOILET)
(SYNONYM PAPER TISSUE PORTION)
(FLAGS NARTICLEBIT NDESCBIT ;TRYTAKEBIT)
(SIZE 3)
(ACTION PAPER-LOOP-F)>
<ROUTINE PAPER-LOOP-F ()
<COND (<VERB? MOVE MOVE-DIR USE TAKE>
<TELL "Whatever you have in mind, it'll never work!" CR>)>>
<OBJECT MIRROR
(LOC LOCAL-GLOBALS)
(DESC "mirror")
(SYNONYM MIRROR)
(ACTION MIRROR-F)>
<ROUTINE MIRROR-F ()
<COND (<VERB? MUNG>
<TELL "You don't need any bad luck!"
;"According to superstition, it's bad luck to break mirrors." CR>)
(<VERB? LOOK-INSIDE EXAMINE>
<TELL "A harried and weary "
<COND (<SPY?> "spy") (T "traveler")>
" looks back at you, with a
look that seems to say, \"I don't need this aggravation!\"" CR>)>>
]
<OBJECT POCKET
(LOC PLAYER ;GLOBAL-OBJECTS)
(DESC "your pocket")
(ADJECTIVE MY)
(SYNONYM POCKET POCKETS)
(FLAGS CONTBIT OPENBIT NARTICLEBIT NDESCBIT SEARCHBIT)
(CAPACITY 15)
(ACTION POCKET-F)>
<ROUTINE POCKET-F ("AUX" X)
<COND (<DIVESTMENT? ,POCKET>
<HAR-HAR>)
;(<AND <VERB? TAKE>
<DOBJ? GLOBAL-MONEY>>
<TELL-FLASHING-CASH>)
(<VERB? LOOK-INSIDE LOOK-THROUGH>
<SET X <PRINT-CONT ,POCKET ;T>>
<COND (<AND <==? ,WINNER ,PLAYER>
<G? <GETP ,PLAYER ,P?SOUTH> 0>>
<THIS-IS-IT ,GLOBAL-MONEY>
<COND (.X <TELL "And some money." CR>)
(T
<TELL "You have some money in your pocket.">
<COND (<IN? ,CUSTOMS-AGENT ,HERE>
<TELL
" But" HE ,CUSTOMS-AGENT " won't mind.">)>
<CRLF>)>)
(<NOT .X> <TELL "Your pocket is empty." CR>)>
<RTRUE>)
(<VERB? EMPTY>
<COND (<FIRST? ,POCKET>
<TELL "You are now holding">
<ROB ,POCKET ,PLAYER T>
<CRLF>)>)
(<VERB? OPEN CLOSE>
<TELL "You don't need to do that." CR>)
(<AND <VERB? PUT-IN>
<IOBJ? POCKET>>
<COND (<OR <DOBJ? GLOBAL-MONEY>
<AND <DOBJ? INTNUM> ,P-DOLLAR-FLAG>>
<TELL "It's already there." CR>)
(<DOBJ? CAMERA>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "(You close" HIM ,PRSO " first.)" CR>
<RFALSE>)>)>)>>
<OBJECT POCKET-C
(LOC CONDUCTOR ;GLOBAL-OBJECTS)
(DESC "conductor's pocket")
(ADJECTIVE CONDUCTOR CONDUC COLLECTOR)
(SYNONYM POCKET POCKETS)
(FLAGS CONTBIT OPENBIT NDESCBIT SEARCHBIT)
(CAPACITY 15)
(ACTION POCKET-C-F)>
<ROUTINE POCKET-C-F ("AUX" X)
<COND (<DIVESTMENT? ,POCKET-C>
<HAR-HAR>)
(<VERB? LOOK-INSIDE LOOK-THROUGH>
<COND (<OR <FSET? ,CONDUCTOR ,MUNGBIT>
<NOT <FSET? ,CONDUCTOR ,PERSONBIT>>>
<SET X <PRINT-CONT ,POCKET-C ;T>>)
(T <TELL
CHE ,CONDUCTOR " brushes your hand away without even looking." CR>)>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL "You don't need to do that." CR>)
(<AND <VERB? PUT-IN>
<IOBJ? POCKET-C>>
<COND (<DOBJ? CAMERA>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "(You close" HIM ,PRSO " first.)" CR>
<RFALSE>)>)>)>>
<ROUTINE TELL-FLASHING-CASH ()
<TELL "Flashing your bankroll is not a good idea." CR>>
<OBJECT GLOBAL-MONEY
(LOC GLOBAL-OBJECTS)
(ADJECTIVE SOME MY)
(SYNONYM MONEY CASH \*)
(DESC "money")
(FLAGS NARTICLEBIT)
(ACTION GLOBAL-MONEY-F)>
<ROUTINE GLOBAL-MONEY-F ()
<COND (<VERB? FIND>
<TELL "It's not that easy!" CR>
<RTRUE>)
(<REMOTE-VERB?>
<RFALSE>)
(<AND <VERB? PUT PUT-IN> <DOBJ? GLOBAL-MONEY>>
<MORE-SPECIFIC>)
(<G? <GETP ,PLAYER ,P?SOUTH> 0>
<COND (<VERB? COUNT EXAMINE>
<TELL "You are carrying ">
<PRINTC ,CURRENCY-SYMBOL>
<TELL N <GETP ,PLAYER ,P?SOUTH> "." CR>)
(<VERB? GIVE>
<SETG CLOCK-WAIT T>
<TELL "(You didn't say how much money to give.)" CR>)
(<AND <VERB? TAKE> ,PRSI ;<FSET? ,PRSI ,PERSONBIT>>
<TELL "You can't see any money on" HIM ,PRSI "." CR>)
(<AND <VERB? SHOW> ;<DOBJ? CUSTOMS-AGENT>>
<RFALSE>)
(T <TELL-FLASHING-CASH>)>)
(T <NOT-HERE ,GLOBAL-MONEY>)>>
<OBJECT MENU
(DESC "menu")
(LOC LOCAL-GLOBALS)
(FLAGS READBIT)
(SYNONYM MENU)
(ACTION MENU-F)
(TEXT
"A sign on the wall has a long list of mysterious Frotzian phrases,
printed in ornate letters. All you can decipher is unpleasant things
like fish heads and lice, or rumpled stilt's skin. Wait! There's an
American phrase: Eggs McGuffin!")>
<ROUTINE MENU-F ()
<COND (<VERB? ANALYZE EXAMINE READ>
<TELL <GETP ,MENU ,P?TEXT> CR>)>>
<OBJECT ITEMS
(DESC "item")
(LOC LOCAL-GLOBALS)
(FLAGS READBIT VOWELBIT)
(ADJECTIVE ;FIRST SECOND THIRD FOURTH FIFTH)
(SYNONYM ITEM)
(ACTION ITEMS-F)>
<ROUTINE ITEMS-F ()
<COND (<VERB? ASK-FOR BUY>
<COND ;(<EQUAL? ,P-ADJ ;N ,W?FIRST>
<DO-INSTEAD-OF ,FOOD ,ITEMS>
<RTRUE>)
(T
<DO-INSTEAD-OF ,FOOD-2 ,ITEMS>
<RTRUE>)>)
(<VERB? ANALYZE EXAMINE READ>
<TELL <GETP ,MENU ,P?TEXT> CR>)>>
<OBJECT FOOD-GLOBAL
(DESC "food")
(LOC GLOBAL-OBJECTS)
(SYNONYM FOOD)
(FLAGS NARTICLEBIT)
(ACTION FOOD-GLOBAL-F)>
<ROUTINE FOOD-GLOBAL-F ()
<COND (<VERB? ASK-FOR BUY SMELL>
<DO-INSTEAD-OF ,FOOD ,FOOD-GLOBAL>
<RTRUE>)
(<REMOTE-VERB?> <RFALSE>)
(T <NOT-HERE ,FOOD-GLOBAL>)>>
<OBJECT DRINK-GLOBAL
(DESC "drink")
(LOC GLOBAL-OBJECTS)
(SYNONYM DRINK)
(FLAGS NARTICLEBIT)
(ACTION DRINK-F)>
<ROUTINE DRINK-F () <FOOD-F T>>
<OBJECT DRINK-1
(DESC "drink")
(LOC GLOBAL-OBJECTS)
(SYNONYM TEA BEER COFFEE)
(FLAGS NARTICLEBIT)
(ACTION DRINK-1-F)>
<ROUTINE DRINK-1-F ()
<DO-INSTEAD-OF ,DRINK-GLOBAL ,DRINK-1>
<RTRUE>>
;<ROUTINE GENERIC-FOOD-F (X)
<COND (<==? ,HERE <META-LOC ,FOOD>> ,FOOD)
(T ,FOOD-GLOBAL)>>
<OBJECT FOOD-CAFE
(DESC "food")
(LOC CAFE)
(SYNONYM FOOD)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION FOOD-F)>
<OBJECT FOOD ;"Make this similar to WINE-xxx."
(DESC "plate of thin gruel")
(LOC GALLEY)
(CAR 3)
(ADJECTIVE THIN FIRST)
(SYNONYM GRUEL PLATE DISH FOOD ITEM)
(FLAGS NDESCBIT SEARCHBIT)
(SIZE 20)
(ACTION FOOD-F)>
<CONSTANT FOOD-SIZE 4>
<CONSTANT FOOD-HALF-SIZE 2>
<ROUTINE FOOD-F ("OPTIONAL" (DRINK? <>) "AUX" PER OBJ X)
<COND (<VERB? EAT SMELL DRINK>
<COND (<OR <VERB? SMELL>
<NOT <IN? ,PRSO ,GLOBAL-OBJECTS>>
;<DOBJ? FOOD WINE-RED WINE-WHITE>>
<TELL "It's pungent but not very flavorful.">
<COND (<NOT <VERB? SMELL>>
<SET X <GETP ,PRSO ,P?SIZE>>
<PUTP ,PRSO ,P?SIZE .X>
<COND (<==? .X ,FOOD-HALF-SIZE>
<TELL " And it's half gone.">)
(<ZERO? .X>
<MOVE ,PRSO ,GLOBAL-OBJECTS>
<TELL " And it's gone.">)>)>
<COND (<SPY?>
<TELL
" You've had better in some mighty dank corners of the world.">)>
<CRLF>)
(T <TELL "That wouldn't be very polite." CR>)>)
(<VERB? POUR PUT PUT-IN MUNG>
<COND (<IOBJ? TOILET>
<RFALSE>)
(<AND <NOT <VERB? POUR>>
<IOBJ? TABLE-1 TABLE-2 TABLE-3>>
<RFALSE>)
(T <TELL "What a mess that would make!" CR>)>)
(<VERB? ASK-FOR BUY>
<COND (<AND <EQUAL? ,HERE ,PANTRY>
<INVASION? ,WAITER>>
<RTRUE>)>
<COND (,ON-TRAIN <SET PER ,WAITER>)
(T <SET PER ,WAITRESS>)>
<COND (.DRINK? <SET OBJ ,WINE-RED>)
(T <SET OBJ ,FOOD>)>
<COND (.DRINK?
<COND (<OR <FSET? ,WINE-RED ,TOUCHBIT>
<FSET? ,WINE-WHITE ,TOUCHBIT>>
<TELL "You've bought enough to drink already."CR>
<RTRUE>)>)
(<FSET? ,FOOD ,TOUCHBIT> ;<IN? ,FOOD ,HERE>
<TELL "You've bought enough to eat already." CR>
<RTRUE>)>
<COND (<0? <GETP ,PLAYER ,P?SOUTH>>
<TELL "You don't have enough money." CR>)
(<NOT <IN? .PER ,HERE>>
<TELL "You'd better talk to " A .PER " first." CR>)
(T
<PUTP ,PLAYER ,P?SOUTH <- <GETP ,PLAYER ,P?SOUTH> 1>>
<COND (<EQUAL? .OBJ ,WINE-RED ,WINE-WHITE>
<SET X <OR <CALL-FOR-PROP ,CUP-A ,WAITER>
<CALL-FOR-PROP ,CUP-B ,WAITER>>>
<MOVE .OBJ .X>
<PUTP .OBJ ,P?CAR ,CAR-HERE>
<PUTP .OBJ ,P?SIZE ,FOOD-SIZE>
<FSET .OBJ ,TOUCHBIT>
<SET OBJ .X>)
(T <PUTP .OBJ ,P?SIZE ,FOOD-SIZE>)>
<MOVE .OBJ <OR <TABLE? ,HERE> ,HERE>>
<PUTP .OBJ ,P?CAR ,CAR-HERE>
<FSET .OBJ ,TAKEBIT>
<FSET .OBJ ,TOUCHBIT>
<FCLEAR .OBJ ,NDESCBIT>
<FCLEAR .PER ,TOUCHBIT>
<PUTP .PER ,P?LDESC 29>
<TELL
CHE .PER " returns in an instant with " A .OBJ " and takes ">
<PRINTC ,CURRENCY-SYMBOL>
<TELL "1 from you." CR>)>)>>
<OBJECT CUP-A
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC "china cup")
(ADJECTIVE CHINA)
(SYNONYM CUP)
(FLAGS CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 15)
(SIZE 20)
(ACTION CUP-F)>
<OBJECT CUP-B
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC "enamel cup")
(ADJECTIVE ENAMEL)
(SYNONYM CUP)
(FLAGS CONTBIT OPENBIT SEARCHBIT VOWELBIT)
(CAPACITY 15)
(SIZE 20)
(ACTION CUP-F)>
<ROUTINE CUP-F ()
<COND (<VERB? THROW-AT THROW-THROUGH EMPTY>
<COND (<EQUAL? <LOC ,WINE-RED> ,PRSO ,PRSI>
<MOVE ,WINE-RED ,GLOBAL-OBJECTS>)>
<COND (<EQUAL? <LOC ,WINE-WHITE> ,PRSO ,PRSI>
<MOVE ,WINE-WHITE ,GLOBAL-OBJECTS>)>
<ROB ,PRSO ,HERE>
<ROB ,PRSI ,HERE>
<COND (<VERB? EMPTY> <TELL "Okay." CR>)
(T <RFALSE>)>)
(<AND <VERB? PUT-IN>
<DOBJ? SCARF NAPKIN TOWEL-WAITER>
<IOBJ? CUP-A CUP-B>
<IN? ,WINE-RED ,PRSI>>
<DO-INSTEAD-OF ,WINE-RED ,PRSI>
<RTRUE>)>>
<OBJECT WINE-RED
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC ;"cup of " "purple wine")
(ADJECTIVE PURPLE RED)
(SYNONYM WINE ;CUP)
(FLAGS NARTICLEBIT TRYTAKEBIT SEARCHBIT)
(SIZE 10)
(ACTION WINE-F)>
<OBJECT WINE-WHITE
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC ;"cup of " "yellow wine")
(ADJECTIVE YELLOW WHITE)
(SYNONYM WINE ;CUP)
(FLAGS NARTICLEBIT TRYTAKEBIT SEARCHBIT)
(SIZE 10)
(ACTION WINE-F)>
<ROUTINE WINE-PUT? ()
<COND (<VERB? PUT>
<COND (<AND <IOBJ? SCARF NAPKIN TOWEL-WAITER>
<DOBJ? WINE-RED>>
<RETURN ,PRSI>)>)
(<VERB? PUT-IN>
<COND (<AND <DOBJ? SCARF NAPKIN TOWEL-WAITER>
<IOBJ? WINE-RED>>
<RETURN ,PRSO>)>)>>
<ROUTINE WINE-F ("AUX" OBJ)
<COND (<AND <VERB? TAKE> <EQUAL? <LOC ,PRSO> ,CUP-A ,CUP-B>>
<PERFORM ,PRSA <LOC ,PRSO> ,PRSI>
<RTRUE>)
(<SET OBJ <WINE-PUT?>>
;<OR <AND <VERB? PUT>
<IOBJ? SCARF NAPKIN TOWEL-WAITER>
<DOBJ? WINE-RED>
<SET OBJ ,PRSI>>
<AND <VERB? PUT-IN>
<DOBJ? SCARF NAPKIN TOWEL-WAITER>
<IOBJ? WINE-RED>
<SET OBJ ,PRSO>>>
<MOVE ,HANKY <LOC .OBJ>>
<FSET ,HANKY ,TAKEBIT>
<MOVE .OBJ ,LIMBO-FWD ;,GLOBAL-OBJECTS>
<FCLEAR .OBJ ,TAKEBIT>
<MOVE ,WINE-RED ,GLOBAL-OBJECTS>
<TELL
"The " D .OBJ " soaks up the wine, and the stain spreads to every nook
and cranny. Within a minute, you have a decent imitation of a " D ,HANKY
"." CR>)
(T <FOOD-F T>)>>
<OBJECT FOOD-1
(DESC "food")
(LOC GLOBAL-OBJECTS)
(ADJECTIVE FISH RUMPLED STILT'S)
(SYNONYM FISH HEADS LICE SKIN)
(FLAGS NARTICLEBIT)
(ACTION NO-FOOD-F)>
<OBJECT FOOD-2
(DESC "food")
(LOC GLOBAL-OBJECTS)
(ADJECTIVE EGGS)
(SYNONYM ;FOOD EGGS MCGUFFIN MACGUFFIN ;ITEM)
(FLAGS NARTICLEBIT)
(ACTION NO-FOOD-F)>
<OBJECT FOOD-3
(DESC "food")
(LOC GLOBAL-OBJECTS)
(SYNONYM MEAL SNACK BREAKFAST LUNCH DINNER SANDWICH BREAD)
(FLAGS NARTICLEBIT)
(ACTION NO-FOOD-F)>
<ROUTINE NO-FOOD-F ("AUX" PER)
<COND (,ON-TRAIN <SET PER ,WAITER>)
(T <SET PER ,WAITRESS>)>
<COND (<VERB? ASK-ABOUT BUY>
<TELL CTHE .PER " shakes" HIS .PER>
<THIS-IS-IT ,FOOD>
<THIS-IS-IT .PER>
<TELL
" head and points to the first item on the menu, which you find unreadable."
CR>)>>
<ROUTINE TABLE? (RM)
<COND (<==? .RM ,CAFE> ,COUNTER-CAFE)
(<==? .RM ,BOOTH-1> ,TABLE-1)
(<==? .RM ,BOOTH-2> ,TABLE-2)
(<==? .RM ,BOOTH-3> ,TABLE-3)>>
<OBJECT LANGUAGE
(LOC GLOBAL-OBJECTS)
(DESC "language")
(ADJECTIVE FROTZIAN FOREIGN THEIR HIS ;HER)
(SYNONYM LANGUAGE FROTZIAN)
(ACTION LANGUAGE-F)>
<ROUTINE LANGUAGE-F ()
<COND (<VERB? ANALYZE LEARN>
<TELL
"Maybe you should have taken your company's offer to pay for language
lessons before you started this trip. After all, English isn't spoken
everywhere." CR>)>>
<OBJECT GESTURE
(LOC GLOBAL-OBJECTS)
(DESC "gesture")
(ADJECTIVE FROTZIAN FOREIGN THEIR HIS ;HER NASTY)
(SYNONYM GESTURE)
(ACTION GESTURE-F)>
<ROUTINE GESTURE-F ("AUX" P)
<COND (<VERB? ANALYZE LEARN>
<TELL
"Maybe you should have taken your company's offer to pay for gesture
lessons before you started this trip. After all, English gestures aren't used
everywhere." CR>)
(<VERB? MAKE>
<COND (<AND ,PRSI <FSET? ,PRSI ,PERSONBIT>>
<SET P ,PRSI>)
(<QCONTEXT-GOOD?> <SET P ,QCONTEXT>)
(<NOT <SET P <FIND-FLAG ,HERE ,PERSONBIT ,WINNER>>>
<NOT-CLEAR-WHOM T>
<RTRUE>)>
<TELL
CTHE .P V .P make " a gesture right back. Somehow it looks nastier than
yours." CR>)>>
<OBJECT LIGHT-GLOBAL
(LOC GLOBAL-OBJECTS)
(DESC "light")
(SYNONYM LIGHT SUNLIGHT MOONLIGHT)>
<OBJECT GAME
(LOC GLOBAL-OBJECTS)
(DESC ;"STEAM AND VARIATIONS" "CHECKPOINT" ;"SEVEN SHADOWS")
(ADJECTIVE SPY SHORT LONG)
(SYNONYM THRILLER GAME CHECKPOINT)
(FLAGS NARTICLEBIT)
(ACTION GAME-F)>
<ROUTINE GAME-F ()
<COND (<VERB? EXAMINE PLAY READ>
;<COND (<EQUAL? ,P-ADJ ;N ,W?SHORT> )>
<SETG CLOCK-WAIT T>
<TELL "(You're doing it now!)" CR>)>>
<OBJECT HANDS
(LOC GLOBAL-OBJECTS)
(DESC "your hands")
(SYNONYM HANDS)
(ADJECTIVE ;YOUR MY BARE)
(FLAGS NARTICLEBIT PLURALBIT)>
<OBJECT HEAD
(LOC GLOBAL-OBJECTS)
(DESC "your head")
(SYNONYM HEAD ;FACE)
(ADJECTIVE ;YOUR MY)
(FLAGS NARTICLEBIT)
(ACTION HEAD-F)>
<ROUTINE HEAD-F ()
<COND (<VERB? NOD>
<PERFORM ,V?YES>
<RTRUE>)
(<VERB? SHAKE>
<PERFORM ,V?NO>
<RTRUE>)>>

2643
goal.cmp Normal file

File diff suppressed because it is too large Load Diff

2130
goal.zap Normal file

File diff suppressed because it is too large Load Diff

1916
goal.zil Normal file

File diff suppressed because it is too large Load Diff

56
i1.zil Normal file
View File

@ -0,0 +1,56 @@
"EXTENDED COMPILE/LOAD FILE for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " CHECKPOINT: interactive fiction from Infocom!
">
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>)>
<SET REDEFINE T>
"<GLOBAL BIGFIX 10000>"
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<DIRECTIONS ;"Do not change the order of the first eight
without consulting MARC! -- ENCHANTER"
NORTH ;NE EAST ;SE SOUTH ;SW WEST ;NW UP DOWN IN OUT>
<IFILE "MACROS" T>
<IFILE "SYNTAX" T>
<IFILE "MAIN" T>
<IFILE "THINGS" T>
<IFILE "PEOPLE" T>
<IFILE "PLACES" T>
<IFILE "GLOBAL" T>
<CONSTANT SERIAL 0>
<IFILE "CLOCK" T>
<IFILE "PARSER" T>
<IFILE "VERBS" T>
<IFILE "TRAIN" T>
<IFILE "CARS" T>
<IFILE "STATION" T>
<IFILE "GOAL" T>
<IFILE "SPIES" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<DEFINE ISL () <INIT-STATUS-LINE>>
<GC-MON T>
<COND (<GASSIGNED? MUDDLE>
<GC 0 T 5>)>

368
macros.cmp Normal file
View File

@ -0,0 +1,368 @@
;COMPARISON OF PS:<SWG>MACROS.ZAP.1 AND PS:<SWG>MACROS.ZAP.3
;OPTIONS ARE /1
**** FILE PS:<SWG>MACROS.ZAP.1, 1-8 (112)
?CND1: EQUAL? OBJ,POCKET \?CND6
**** FILE PS:<SWG>MACROS.ZAP.3, 1-8 (112)
?CND1: EQUAL? OBJ,POCKET \?CND5
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-11 (177)
?CND6: EQUAL? OBJ,TICKET \?CND11
**** FILE PS:<SWG>MACROS.ZAP.3, 1-11 (177)
?CND5: EQUAL? OBJ,TICKET \?CND9
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-14 (243)
?CND11: EQUAL? OBJ,PASSPORT \?CND16
**** FILE PS:<SWG>MACROS.ZAP.3, 1-14 (242)
?CND9: EQUAL? OBJ,PASSPORT \?CND13
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-17 (314)
?CND16: FSET? OBJ,NARTICLEBIT /?CND21
FSET? OBJ,SEENBIT /?THN27
FSET? OBJ,PERSONBIT /?ELS26
?THN27: PRINTI "The "
JUMP ?CND21
?ELS26: FSET? OBJ,VOWELBIT \?ELS32
**** FILE PS:<SWG>MACROS.ZAP.3, 1-17 (312)
?CND13: FSET? OBJ,NARTICLEBIT /?CND17
FSET? OBJ,SEENBIT /?THN20
FSET? OBJ,PERSONBIT /?ELS21
?THN20: PRINTI "The "
JUMP ?CND17
?ELS21: FSET? OBJ,VOWELBIT \?ELS24
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-24 (499)
JUMP ?CND21
?ELS32: PRINTI "A "
?CND21: FSET? OBJ,PERSONBIT \?CND39
**** FILE PS:<SWG>MACROS.ZAP.3, 1-24 (497)
JUMP ?CND17
?ELS24: PRINTI "A "
?CND17: FSET? OBJ,PERSONBIT \?CND29
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-28 (590)
?CND39: PRINTD OBJ
**** FILE PS:<SWG>MACROS.ZAP.3, 1-28 (588)
?CND29: PRINTD OBJ
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-41 (825)
EQUAL? O,TURN \?ELS5
LESS? 1,P-NUMBER \?ELS5
**** FILE PS:<SWG>MACROS.ZAP.3, 1-41 (823)
EQUAL? O,TURN \?ELS4
LESS? 1,P-NUMBER \?ELS4
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-47 (934)
?ELS5: CALL THE?,O
**** FILE PS:<SWG>MACROS.ZAP.3, 1-47 (932)
?ELS4: CALL THE?,O
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-55 (1040)
FSET? OBJ,SEENBIT /?THN7
FSET? OBJ,PERSONBIT /?ELS6
?THN7: PRINTI " the"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-55 (1038)
FSET? OBJ,SEENBIT /?THN4
FSET? OBJ,PERSONBIT /?ELS5
?THN4: PRINTI " the"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-59 (1131)
?ELS6: FSET? OBJ,VOWELBIT \?ELS12
**** FILE PS:<SWG>MACROS.ZAP.3, 1-59 (1129)
?ELS5: FSET? OBJ,VOWELBIT \?ELS8
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-62 (1194)
?ELS12: PRINTI " a"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-62 (1191)
?ELS8: PRINTI " a"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-69 (1300)
EQUAL? O,INTNUM \?ELS3
ZERO? P-DOLLAR-FLAG /?ELS3
**** FILE PS:<SWG>MACROS.ZAP.3, 1-69 (1296)
EQUAL? O,INTNUM \?ELS2
ZERO? P-DOLLAR-FLAG /?ELS2
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-73 (1380)
?ELS3: FSET? O,NARTICLEBIT \?ELS9
**** FILE PS:<SWG>MACROS.ZAP.3, 1-73 (1376)
?ELS2: FSET? O,NARTICLEBIT \?ELS7
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-75 (1428)
?ELS9: FSET? O,VOWELBIT \?ELS13
**** FILE PS:<SWG>MACROS.ZAP.3, 1-75 (1424)
?ELS7: FSET? O,VOWELBIT \?ELS8
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-78 (1489)
?ELS13: PRINTI "a "
**** FILE PS:<SWG>MACROS.ZAP.3, 1-78 (1484)
?ELS8: PRINTI "a "
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-84 (1576)
FSET? OBJ,PERSONBIT /?ELS3
ZERO? CAP /?ELS6
**** FILE PS:<SWG>MACROS.ZAP.3, 1-84 (1570)
FSET? OBJ,PERSONBIT /?ELS2
ZERO? CAP /?ELS4
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-88 (1651)
?ELS6: PRINTI "it"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-88 (1645)
?ELS4: PRINTI "it"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-90 (1684)
?ELS3: EQUAL? OBJ,PLAYER \?ELS15
ZERO? CAP /?ELS18
**** FILE PS:<SWG>MACROS.ZAP.3, 1-90 (1678)
?ELS2: EQUAL? OBJ,PLAYER \?ELS9
ZERO? CAP /?ELS11
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-94 (1766)
?ELS18: PRINTI "you"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-94 (1759)
?ELS11: PRINTI "you"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-96 (1801)
?ELS15: FSET? OBJ,FEMALE \?ELS27
ZERO? CAP /?ELS30
**** FILE PS:<SWG>MACROS.ZAP.3, 1-96 (1794)
?ELS9: FSET? OBJ,FEMALE \?ELS16
ZERO? CAP /?ELS18
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-100 (1883)
?ELS30: PRINTI "she"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-100 (1875)
?ELS18: PRINTI "she"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-102 (1918)
?ELS27: CALL ZMEMQ,OBJ,COUPLE-TABLE
ZERO? STACK /?ELS39
ZERO? CAP /?ELS42
**** FILE PS:<SWG>MACROS.ZAP.3, 1-102 (1910)
?ELS16: CALL ZMEMQ,OBJ,COUPLE-TABLE
ZERO? STACK /?ELS23
ZERO? CAP /?ELS25
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-107 (2026)
?ELS42: PRINTI "they"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-107 (2018)
?ELS25: PRINTI "they"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-109 (2062)
?ELS39: ZERO? CAP /?ELS54
**** FILE PS:<SWG>MACROS.ZAP.3, 1-109 (2054)
?ELS23: ZERO? CAP /?ELS31
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-112 (2116)
?ELS54: PRINTI "he"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-112 (2108)
?ELS31: PRINTI "he"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-115 (2175)
EQUAL? VERB,STR?1 \?ELS72
EQUAL? OBJ,PLAYER /?THN78
**** FILE PS:<SWG>MACROS.ZAP.3, 1-115 (2167)
EQUAL? VERB,STR?1 \?ELS43
EQUAL? OBJ,PLAYER /?THN47
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-118 (2261)
ZERO? STACK /?ELS77
?THN78: PRINTI "are"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-118 (2253)
ZERO? STACK /?ELS48
?THN47: PRINTI "are"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-121 (2314)
?ELS77: PRINTI "is"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-121 (2306)
?ELS48: PRINTI "is"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-123 (2344)
?ELS72: PRINT VERB
EQUAL? OBJ,PLAYER /FALSE
**** FILE PS:<SWG>MACROS.ZAP.3, 1-123 (2336)
?ELS43: PRINT VERB
EQUAL? OBJ,PLAYER /?PRD57
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-126 (2421)
ZERO? STACK \FALSE
EQUAL? VERB,STR?2,STR?3 \?CND97
**** FILE PS:<SWG>MACROS.ZAP.3, 1-126 (2414)
ZERO? STACK \?PRD57
EQUAL? VERB,STR?2,STR?3 \?CND60
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-129 (2489)
?CND97: PRINTI "s"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-129 (2483)
?CND60: PRINTI "s"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-133 (2522)
**** FILE PS:<SWG>MACROS.ZAP.3, 1-131 (2512)
?PRD57: PUSH 0
RSTACK
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-134 (2563)
FSET? OBJ,PERSONBIT /?ELS3
ZERO? CAP /?ELS6
**** FILE PS:<SWG>MACROS.ZAP.3, 1-136 (2583)
FSET? OBJ,PERSONBIT /?ELS2
ZERO? CAP /?ELS4
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-137 (2625)
JUMP ?CND4
?ELS6: PRINTI "it"
?CND4: ZERO? POSSESS? /TRUE
**** FILE PS:<SWG>MACROS.ZAP.3, 1-139 (2645)
JUMP ?CND3
?ELS4: PRINTI "it"
?CND3: ZERO? POSSESS? /TRUE
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-142 (2709)
?ELS3: EQUAL? OBJ,PLAYER \?ELS21
ZERO? CAP /?ELS24
**** FILE PS:<SWG>MACROS.ZAP.3, 1-144 (2729)
?ELS2: EQUAL? OBJ,PLAYER \?ELS13
ZERO? CAP /?ELS15
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-145 (2778)
JUMP ?CND22
?ELS24: PRINTI "you"
?CND22: ZERO? POSSESS? /TRUE
**** FILE PS:<SWG>MACROS.ZAP.3, 1-147 (2798)
JUMP ?CND14
?ELS15: PRINTI "you"
?CND14: ZERO? POSSESS? /TRUE
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-150 (2866)
?ELS21: CALL ZMEMQ,OBJ,COUPLE-TABLE
ZERO? STACK /?ELS39
ZERO? POSSESS? /?ELS42
ZERO? CAP /?ELS46
**** FILE PS:<SWG>MACROS.ZAP.3, 1-152 (2886)
?ELS13: CALL ZMEMQ,OBJ,COUPLE-TABLE
ZERO? STACK /?ELS24
ZERO? POSSESS? /?ELS26
ZERO? CAP /?ELS28
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-156 (2996)
?ELS46: PRINTI "their"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-158 (3016)
?ELS28: PRINTI "their"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-158 (3029)
?ELS42: ZERO? CAP /?ELS58
**** FILE PS:<SWG>MACROS.ZAP.3, 1-160 (3049)
?ELS26: ZERO? CAP /?ELS34
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-161 (3081)
?ELS58: PRINTI "them"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-163 (3101)
?ELS34: PRINTI "them"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-163 (3113)
?ELS39: FSET? OBJ,FEMALE \?ELS67
ZERO? CAP /?ELS70
**** FILE PS:<SWG>MACROS.ZAP.3, 1-165 (3133)
?ELS24: FSET? OBJ,FEMALE \?ELS39
ZERO? CAP /?ELS41
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-167 (3191)
?ELS70: PRINTI "her"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-169 (3211)
?ELS41: PRINTI "her"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-169 (3222)
?ELS67: ZERO? POSSESS? /?ELS79
ZERO? CAP /?ELS83
**** FILE PS:<SWG>MACROS.ZAP.3, 1-171 (3242)
?ELS39: ZERO? POSSESS? /?ELS46
ZERO? CAP /?ELS48
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-173 (3298)
?ELS83: PRINTI "his"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-175 (3318)
?ELS48: PRINTI "his"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-175 (3329)
?ELS79: ZERO? CAP /?ELS95
**** FILE PS:<SWG>MACROS.ZAP.3, 1-177 (3349)
?ELS46: ZERO? CAP /?ELS54
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-178 (3380)
?ELS95: PRINTI "him"
**** FILE PS:<SWG>MACROS.ZAP.3, 1-180 (3400)
?ELS54: PRINTI "him"
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-189 (3567)
ZERO? THIS /?ELS3
ZERO? CNT \?ELS3
**** FILE PS:<SWG>MACROS.ZAP.3, 1-191 (3587)
ZERO? THIS /?ELS2
ZERO? CNT \?ELS2
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-193 (3635)
?ELS3: SUB L,CNT
**** FILE PS:<SWG>MACROS.ZAP.3, 1-195 (3655)
?ELS2: SUB L,CNT
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-200 (3765)
EQUAL? CNT,L \?CND8
**** FILE PS:<SWG>MACROS.ZAP.3, 1-202 (3785)
EQUAL? CNT,L \?CND4
***************
**** FILE PS:<SWG>MACROS.ZAP.1, 1-202 (3800)
?CND8: PUT FROB,0,CNT
**** FILE PS:<SWG>MACROS.ZAP.3, 1-204 (3820)
?CND4: PUT FROB,0,CNT
***************

270
macros.zap Normal file
View File

@ -0,0 +1,270 @@
.FUNCT START-SENTENCE,OBJ,INV?=0
CALL2 THIS-IS-IT,OBJ
EQUAL? OBJ,PLAYER \?ELS3
PRINTI "You"
RTRUE
?ELS3: EQUAL? OBJ,POCKET \?ELS7
PRINTI "Your pocket"
RTRUE
?ELS7: EQUAL? OBJ,TICKET \?ELS11
PRINTI "Your ticket"
RTRUE
?ELS11: EQUAL? OBJ,PASSPORT \?ELS15
PRINTI "Your passport"
RTRUE
?ELS15: EQUAL? OBJ,HEAD \?ELS19
PRINTI "Your head"
RTRUE
?ELS19: EQUAL? OBJ,HANDS \?CND1
PRINTI "Your hands"
RTRUE
?CND1: FSET? OBJ,NARTICLEBIT /?CND26
FSET? OBJ,PERSONBIT \?THN32
FSET? OBJ,SEENBIT \?ELS31
?THN32: PRINTI "The "
JUMP ?CND26
?ELS31: FSET? OBJ,VOWELBIT \?ELS37
PRINTI "An "
JUMP ?CND26
?ELS37: PRINTI "A "
?CND26: FSET? OBJ,PERSONBIT \?CND44
FSET OBJ,SEENBIT
?CND44: PRINTD OBJ
ZERO? INV? /FALSE
IN? BRIEFCASE,OBJ \FALSE
FSET? BRIEFCASE,SEENBIT /FALSE
FSET BRIEFCASE,SEENBIT
PRINTI ", carrying"
CALL2 HIM-HER-IT,BRIEFCASE
PRINTI ","
RTRUE
.FUNCT PRINTT,OBJ
EQUAL? OBJ,TURN \?ELS5
LESS? 1,P-NUMBER \?ELS5
PRINTI " "
PRINTN P-NUMBER
PRINTI " minutes"
RTRUE
?ELS5: EQUAL? OBJ,INTNUM \?ELS11
ZERO? P-DOLLAR-FLAG /?ELS11
PRINTI " that amount"
RTRUE
?ELS11: FSET? OBJ,WINDOWBIT \?ELS17
PRINTI " the window"
RTRUE
?ELS17: CALL2 THE?,OBJ
PRINTI " "
PRINTD OBJ
RTRUE
.FUNCT THE?,OBJ
FSET? OBJ,NARTICLEBIT /?CND1
FSET? OBJ,PERSONBIT \?THN7
FSET? OBJ,SEENBIT \?ELS6
?THN7: PRINTI " the"
JUMP ?CND1
?ELS6: FSET? OBJ,VOWELBIT \?ELS12
PRINTI " an"
JUMP ?CND1
?ELS12: PRINTI " a"
?CND1: FSET? OBJ,PERSONBIT \FALSE
FSET OBJ,SEENBIT
RTRUE
.FUNCT PRINTA,O
EQUAL? O,INTNUM \?ELS3
ZERO? P-DOLLAR-FLAG /?ELS3
PRINTI "money"
RTRUE
?ELS3: FSET? O,NARTICLEBIT \?ELS9
JUMP ?CND1
?ELS9: FSET? O,VOWELBIT \?ELS13
PRINTI "an "
JUMP ?CND1
?ELS13: PRINTI "a "
?CND1: PRINTD O
RTRUE
.FUNCT NO-PRONOUN?,OBJ,CAP=0
EQUAL? OBJ,PLAYER /FALSE
FSET? OBJ,PERSONBIT /?ELS5
EQUAL? OBJ,P-IT-OBJECT \?CND1
FSET? IT,TOUCHBIT \?CND1
RFALSE
?ELS5: FSET? OBJ,FEMALE \?ELS12
EQUAL? OBJ,P-HER-OBJECT \?CND1
FSET? HER,TOUCHBIT \?CND1
RFALSE
?ELS12: FSET? OBJ,PLURALBIT \?ELS19
EQUAL? OBJ,P-THEM-OBJECT \?CND1
FSET? THEM,TOUCHBIT \?CND1
RFALSE
?ELS19: EQUAL? OBJ,P-HIM-OBJECT \?CND1
FSET? HIM,TOUCHBIT /FALSE
?CND1: ZERO? CAP \?ELS34
CALL2 PRINTT,OBJ
RTRUE
?ELS34: CALL2 ONE?,CAP
ZERO? STACK /TRUE
CALL2 START-SENTENCE,OBJ
RTRUE
.FUNCT HE-SHE-IT,OBJ,CAP=0,VERB=0
CALL NO-PRONOUN?,OBJ,CAP
ZERO? STACK /?ELS3
JUMP ?CND1
?ELS3: FSET? OBJ,PERSONBIT /?ELS5
ZERO? CAP \?ELS8
PRINTI " it"
JUMP ?CND1
?ELS8: CALL2 ONE?,CAP
ZERO? STACK /?CND1
PRINTI "It"
JUMP ?CND1
?ELS5: EQUAL? OBJ,PLAYER \?ELS16
ZERO? CAP \?ELS19
PRINTI " you"
JUMP ?CND1
?ELS19: CALL2 ONE?,CAP
ZERO? STACK /?CND1
PRINTI "You"
JUMP ?CND1
?ELS16: FSET? OBJ,FEMALE \?ELS27
ZERO? CAP \?ELS30
PRINTI " she"
JUMP ?CND1
?ELS30: CALL2 ONE?,CAP
ZERO? STACK /?CND1
PRINTI "She"
JUMP ?CND1
?ELS27: FSET? OBJ,PLURALBIT \?ELS38
ZERO? CAP \?ELS41
PRINTI " they"
JUMP ?CND1
?ELS41: CALL2 ONE?,CAP
ZERO? STACK /?CND1
PRINTI "They"
JUMP ?CND1
?ELS38: ZERO? CAP \?ELS52
PRINTI " he"
JUMP ?CND1
?ELS52: CALL2 ONE?,CAP
ZERO? STACK /?CND1
PRINTI "He"
?CND1: ZERO? VERB /FALSE
PRINTC 32
EQUAL? OBJ,PLAYER /?THN70
FSET? OBJ,PLURALBIT \?ELS69
?THN70: EQUAL? VERB,STR?1 \?ELS76
PRINTI "are"
RTRUE
?ELS76: EQUAL? VERB,STR?2 \?ELS80
PRINTI "have"
RTRUE
?ELS80: PRINT VERB
RTRUE
?ELS69: PRINT VERB
EQUAL? VERB,STR?3,STR?4,STR?5 \?CND91
PRINTI "e"
?CND91: EQUAL? VERB,STR?1,STR?2 /FALSE
PRINTI "s"
RTRUE
.FUNCT ONE?,NUM
EQUAL? NUM,1,TRUE-VALUE /TRUE
RFALSE
.FUNCT HIM-HER-IT,OBJ,CAP=0,POSSESS?=0
CALL NO-PRONOUN?,OBJ,CAP
ZERO? STACK /?ELS3
ZERO? POSSESS? /TRUE
PRINTI "'s"
RTRUE
?ELS3: FSET? OBJ,PERSONBIT /?ELS11
ZERO? CAP \?ELS14
PRINTI " it"
JUMP ?CND12
?ELS14: PRINTI "It"
?CND12: ZERO? POSSESS? /TRUE
PRINTI "s"
RTRUE
?ELS11: EQUAL? OBJ,PLAYER \?ELS28
ZERO? CAP /?ELS31
PRINTI "You"
JUMP ?CND29
?ELS31: PRINTI " you"
?CND29: ZERO? POSSESS? /TRUE
PRINTI "r"
RTRUE
?ELS28: FSET? OBJ,PLURALBIT \?ELS46
ZERO? POSSESS? /?ELS49
ZERO? CAP \?ELS53
PRINTI " their"
RTRUE
?ELS53: PRINTI "Their"
RTRUE
?ELS49: ZERO? CAP \?ELS64
PRINTI " them"
RTRUE
?ELS64: PRINTI "Them"
RTRUE
?ELS46: FSET? OBJ,FEMALE \?ELS72
ZERO? CAP \?ELS75
PRINTI " her"
RTRUE
?ELS75: PRINTI "Her"
RTRUE
?ELS72: ZERO? POSSESS? /?ELS86
ZERO? CAP \?ELS90
PRINTI " his"
RTRUE
?ELS90: PRINTI "His"
RTRUE
?ELS86: ZERO? CAP \?ELS101
PRINTI " him"
RTRUE
?ELS101: PRINTI "Him"
RTRUE
.FUNCT PICK-ONE-NEW,FROB,THIS=0,L,CNT,RND,MSG,RFROB
GET FROB,0 >L
GET FROB,1 >CNT
DEC 'L
ADD FROB,2 >FROB
MUL CNT,2
ADD FROB,STACK >RFROB
ZERO? THIS /?ELS3
ZERO? CNT \?ELS3
SET 'RND,THIS
JUMP ?CND1
?ELS3: SUB L,CNT
RANDOM STACK >RND
?CND1: GET RFROB,RND >MSG
GET RFROB,1
PUT RFROB,RND,STACK
PUT RFROB,1,MSG
INC 'CNT
EQUAL? CNT,L \?CND8
SET 'CNT,0
?CND8: PUT FROB,0,CNT
RETURN MSG
.FUNCT PICK-ONE,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.ENDI

347
macros.zil Normal file
View File

@ -0,0 +1,347 @@
"MACROS for CHECKPOINT
Copyright (c) 1985 Infocom, Inc. All rights reserved."
<SETG C-ENABLED? 0>
<SETG C-ENABLED 1>
<SETG C-DISABLED 0>
<ZSTR-OFF>
<DEFMAC TELL ("ARGS" A)
<FORM PROG ()
!<MAPF ,LIST
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPSTOP>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<MAPRET '<CRLF>>)
(<EMPTY? .A>
<ERROR INDICATOR-AT-END? .E>)
(ELSE
<SET O <NTH .A 1>>
<SET A <REST .A>>
<COND (<OR <=? <SET P <SPNAME .E>>
"DESC">
<=? .P "D">
<=? .P "OBJ">
<=? .P "O">>
<MAPRET <FORM PRINTD .O>>)
(<OR <=? .P "A">
<=? .P "AN">>
<MAPRET <FORM PRINTA .O>>)
(<OR ;<=? .P "T">
<=? .P "THE">>
<MAPRET <FORM PRINTT .O>>)
(<OR ;<=? .P "CT">
<=? .P "CTHE">>
<MAPRET <FORM START-SENTENCE .O>>)
(<=? .P "CHE">
<COND (<OR <EMPTY? .A>
<NOT <TYPE? <NTH .A 1> ATOM>>>
<MAPRET <FORM HE-SHE-IT .O T>>)
(T
<SET P <SPNAME <NTH .A 1>>>
<SET A <REST .A>>
<MAPRET <FORM HE-SHE-IT .O T .P>>)>)
(<=? .P "HE">
<COND (<OR <EMPTY? .A>
<NOT <TYPE? <NTH .A 1> ATOM>>>
<MAPRET <FORM HE-SHE-IT .O>>)
(T
<SET P <SPNAME <NTH .A 1>>>
<SET A <REST .A>>
<MAPRET <FORM HE-SHE-IT .O 0 .P>>)>)
(<=? .P "V">
<SET P <SPNAME <NTH .A 1>>>
<SET A <REST .A>>
<MAPRET <FORM HE-SHE-IT .O -1 .P>>)
(<=? .P "HIM">
<MAPRET <FORM HIM-HER-IT .O>>)
;(<=? .P "CHIM">
<MAPRET <FORM HIM-HER-IT .O T>>)
(<=? .P "HIS">
<MAPRET <FORM HIM-HER-IT .O '<> T>>)
(<=? .P "CHIS">
<MAPRET <FORM HIM-HER-IT .O T T>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET <FORM PRINTN .O>>)
(<OR ;<=? .P "CHAR">
;<=? .P "CHR">
<=? .P "C">>
<MAPRET <FORM PRINTC <ASCII .O>>>)
(ELSE
<MAPRET <FORM PRINT <FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING ZSTRING>
<COND ;(<==? 1 <LENGTH .E>>
<MAPRET <FORM PRINTC <ASCII <1 .E>>>>)
(T <MAPRET <FORM PRINTI .E>>)>)
(<TYPE? .E FORM LVAL GVAL>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
<ROUTINE START-SENTENCE (OBJ "OPTIONAL" (INV? <>))
<THIS-IS-IT .OBJ>
<COND (<EQUAL? .OBJ ,PLAYER> <TELL "You"> <RTRUE>)
(<EQUAL? .OBJ ,POCKET> <TELL "Your pocket"> <RTRUE>)
(<EQUAL? .OBJ ,TICKET> <TELL "Your ticket"> <RTRUE>)
(<EQUAL? .OBJ ,PASSPORT> <TELL "Your passport"> <RTRUE>)
(<EQUAL? .OBJ ,HEAD> <TELL "Your head"> <RTRUE>)
(<EQUAL? .OBJ ,HANDS> <TELL "Your hands"> <RTRUE>)>
<COND (<NOT <FSET? .OBJ ,NARTICLEBIT>>
<COND (<OR <NOT <FSET? .OBJ ,PERSONBIT>>
<FSET? .OBJ ,SEENBIT>>
<TELL "The ">)
(<FSET? .OBJ ,VOWELBIT>
<TELL "An ">)
(T <TELL "A ">)>)>
<COND (<FSET? .OBJ ,PERSONBIT>
<FSET .OBJ ,SEENBIT>)>
<TELL D .OBJ>
<COND (<AND .INV?
<IN? ,BRIEFCASE .OBJ>
<NOT <FSET? ,BRIEFCASE ,SEENBIT>>>
<FSET ,BRIEFCASE ,SEENBIT>
<TELL ", carrying" HIM ,BRIEFCASE ",">
<RTRUE>)>>
<ROUTINE PRINTT (OBJ)
<COND (<AND <EQUAL? .OBJ ,TURN> <L? 1 ,P-NUMBER>>
<TELL " " N ,P-NUMBER " minutes">)
(<AND <EQUAL? .OBJ ,INTNUM> ,P-DOLLAR-FLAG>
<TELL " that amount">)
(<FSET? .OBJ ,WINDOWBIT>
<TELL " the window">)
;(<AND <EQUAL? .OBJ ,P-IT-OBJECT>
<FSET? ,IT ,TOUCHBIT>>
<TELL " it">
<RTRUE>)
(T
<THE? .OBJ>
<TELL " " D .OBJ>)>
;<THIS-IS-IT .OBJ>>
<ROUTINE THE? (OBJ)
<COND (<NOT <FSET? .OBJ ,NARTICLEBIT>>
<COND (<OR <NOT <FSET? .OBJ ,PERSONBIT>>
<FSET? .OBJ ,SEENBIT>>
<TELL " the">)
(<FSET? .OBJ ,VOWELBIT>
<TELL " an">)
(T <TELL " a">)>)>
<COND (<FSET? .OBJ ,PERSONBIT>
<FSET .OBJ ,SEENBIT>)>>
<ROUTINE PRINTA (O)
<COND (<AND <EQUAL? .O ,INTNUM> ,P-DOLLAR-FLAG>
<TELL "money">
<RTRUE>)
(<OR ;<FSET? .O ,PERSONBIT> <FSET? .O ,NARTICLEBIT>> T)
(<FSET? .O ,VOWELBIT> <TELL "an ">)
(T <TELL "a ">)>
<TELL D .O>>
<ROUTINE NO-PRONOUN? (OBJ "OPTIONAL" (CAP 0))
<COND (<EQUAL? .OBJ ,PLAYER>
<RFALSE>)
(<NOT <FSET? .OBJ ,PERSONBIT>>
<COND (<AND <EQUAL? .OBJ ,P-IT-OBJECT>
<FSET? ,IT ,TOUCHBIT>>
<RFALSE>)>)
(<FSET? .OBJ ,FEMALE>
<COND (<AND <EQUAL? .OBJ ,P-HER-OBJECT>
<FSET? ,HER ,TOUCHBIT>>
<RFALSE>)>)
(<FSET? .OBJ ,PLURALBIT>
<COND (<AND <EQUAL? .OBJ ,P-THEM-OBJECT>
<FSET? ,THEM ,TOUCHBIT>>
<RFALSE>)>)
(T
<COND (<AND <EQUAL? .OBJ ,P-HIM-OBJECT>
<FSET? ,HIM ,TOUCHBIT>>
<RFALSE>)>)>
<COND (<ZERO? .CAP> <TELL THE .OBJ>)
(<ONE? .CAP> <TELL CTHE .OBJ>)>
<RTRUE>>
<ROUTINE HE-SHE-IT (OBJ "OPTIONAL" (CAP 0) (VERB <>))
<COND (<NO-PRONOUN? .OBJ .CAP>
T)
(<NOT <FSET? .OBJ ,PERSONBIT>>
<COND (<ZERO? .CAP> <TELL " it">)
(<ONE? .CAP> <TELL "It">)>)
(<==? .OBJ ,PLAYER>
<COND (<ZERO? .CAP> <TELL " you">)
(<ONE? .CAP> <TELL "You">)>)
(<FSET? .OBJ ,FEMALE>
<COND (<ZERO? .CAP> <TELL " she">)
(<ONE? .CAP> <TELL "She">)>)
(<FSET? .OBJ ,PLURALBIT>
<COND (<ZERO? .CAP> <TELL " they">)
(<ONE? .CAP> <TELL "They">)>)
(T
<COND (<ZERO? .CAP> <TELL " he">)
(<ONE? .CAP> <TELL "He">)>)>
<COND (.VERB
<PRINTC 32>
<COND (<OR <EQUAL? .OBJ ,PLAYER>
<FSET? .OBJ ,PLURALBIT>>
<COND (<=? .VERB "is"> <TELL "are">)
(<=? .VERB "has"><TELL "have">)
(T <TELL .VERB>)>)
(T
<TELL .VERB>
<COND (<EQUAL? .VERB "do" "kiss" "push">
<TELL "e">)>
<COND (<NOT <EQUAL? .VERB "is" "has">>
<TELL "s">)>)>)>>
<ROUTINE ONE? (NUM) <EQUAL? .NUM 1 T>>
<ROUTINE HIM-HER-IT (OBJ "OPTIONAL" (CAP 0) (POSSESS? <>))
<COND (<NO-PRONOUN? .OBJ .CAP>
<COND (.POSSESS? <TELL "'s">)>)
(<NOT <FSET? .OBJ ,PERSONBIT>>
<COND (<ZERO? .CAP> <TELL " it">) (T <TELL "It">)>
<COND (.POSSESS? <TELL "s">)>)
(<==? .OBJ ,PLAYER>
<COND (.CAP <TELL "You">) (T <TELL " you">)>
<COND (.POSSESS? <TELL "r">)>)
(<FSET? .OBJ ,PLURALBIT>
<COND (.POSSESS?
<COND (<ZERO? .CAP> <TELL " their">)
(T <TELL "Their">)>)
(T
<COND (<ZERO? .CAP> <TELL " them">)
(T <TELL "Them">)>)>)
(<FSET? .OBJ ,FEMALE>
<COND (<ZERO? .CAP> <TELL " her">) (T <TELL "Her">)>)
(T
<COND (.POSSESS?
<COND (<ZERO? .CAP> <TELL " his">)
(T <TELL "His">)>)
(T
<COND (<ZERO? .CAP> <TELL " him">)
(T <TELL "Him">)>)>)>
<RTRUE>>
<DEFMAC VERB? ("TUPLE" ATMS "AUX" (O ()) (L ()))
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(ELSE <FORM OR !.O>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<CHTYPE <PARSE <STRING "V?"<SPNAME .ATM>>> GVAL>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O (<FORM EQUAL? ',PRSA !.L> !.O)>
<SET L ()>>>
<DEFMAC DOBJ? ("TUPLE" ATMS "AUX" (O ()) (L ()))
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(ELSE <FORM OR !.O>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L (<CHTYPE .ATM GVAL> !.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O (<FORM EQUAL? ',PRSO !.L> !.O)>
<SET L ()>>>
<DEFMAC IOBJ? ("TUPLE" ATMS "AUX" (O ()) (L ()))
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(ELSE <FORM OR !.O>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L (<CHTYPE .ATM GVAL> !.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O (<FORM EQUAL? ',PRSI !.L> !.O)>
<SET L ()>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<DEFMAC PROB ('BASE?)
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
<ROUTINE PICK-ONE-NEW (FROB "OPTIONAL" (THIS <>) "AUX" L CNT RND MSG RFROB)
<SET L <GET .FROB 0>>
<SET CNT <GET .FROB 1>>
<SET L <- .L 1>>
<SET FROB <REST .FROB 2>>
<SET RFROB <REST .FROB <* .CNT 2>>>
<COND (<AND .THIS <ZERO? .CNT>>
<SET RND .THIS>)
(T <SET RND <RANDOM <- .L .CNT>>>)>
<SET MSG <GET .RFROB .RND>>
<PUT .RFROB .RND <GET .RFROB 1>>
<PUT .RFROB 1 .MSG>
<SET CNT <+ .CNT 1>>
<COND (<==? .CNT .L> <SET CNT 0>)>
<PUT .FROB 0 .CNT>
.MSG>
<ROUTINE PICK-ONE (FROB) <GET .FROB <RANDOM <GET .FROB 0>>>>
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
;<DEFMAC FLAMING? ('OBJ)
<FORM AND <FORM FSET? .OBJ ',FLAMEBIT>
<FORM FSET? .OBJ ',ONBIT>>>
<DEFMAC OPENABLE? ('OBJ)
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
<FORM FSET? .OBJ ',CONTBIT>>>
<DEFMAC ABS ('NUM)
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
(T .NUM)>>
<DEFMAC GET-REXIT-ROOM ('PT)
<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
<FORM GET .PT ',REXIT>)
(T <FORM GETB .PT ',REXIT>)>>
<DEFMAC GET-DOOR-OBJ ('PT)
<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
<FORM GET .PT ',DEXITOBJ>)
(T <FORM GETB .PT ',DEXITOBJ>)>>
<DEFMAC GET/B ('TBL 'PTR)
<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
<FORM GET .TBL .PTR>)
(T <FORM GETB .TBL .PTR>)>>
<DEFMAC RMGL-SIZE ('TBL)
<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
<FORM - <FORM / <FORM PTSIZE .TBL> 2> 1>)
(T <FORM - <FORM PTSIZE .TBL> 1>)>>
<DEFMAC GT-O ('OBJ)
<FORM GET ',GOAL-TABLES <FORM GETP .OBJ ',P?CHARACTER>>>
<DEFMAC HARD? () '<EQUAL? ,VARIATION 2 4>>
<DEFMAC SPY? () '<EQUAL? ,VARIATION 3 4>>
<ZSTR-ON>
<SETG PLUS-MODE T>
<OBJECT LAST-OBJECT> "for MOBY-FIND"

406
main.cmp Normal file
View File

@ -0,0 +1,406 @@
;COMPARISON OF PS:<SWG>MAIN.ZAP.1 AND PS:<SWG>MAIN.ZAP.3
;OPTIONS ARE /1
**** FILE PS:<SWG>MAIN.ZAP.1, 1-36 (832)
EQUAL? N,W?SPY,W?S \?ELS11
**** FILE PS:<SWG>MAIN.ZAP.3, 1-36 (832)
EQUAL? N,W?SPY,W?S \?ELS10
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-39 (893)
?ELS11: SET 'VARIATION,1
**** FILE PS:<SWG>MAIN.ZAP.3, 1-39 (893)
?ELS10: SET 'VARIATION,1
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-44 (1074)
EQUAL? N,W?L,W?LONG \?CND23
**** FILE PS:<SWG>MAIN.ZAP.3, 1-44 (1074)
EQUAL? N,W?L,W?LONG \?CND18
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-47 (1145)
?CND23: CALL TAKE-YOUR-PLACES
**** FILE PS:<SWG>MAIN.ZAP.3, 1-47 (1145)
?CND18: CALL TAKE-YOUR-PLACES
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-51 (1227)
EQUAL? EGO,BAD-SPY \?ELS28
**** FILE PS:<SWG>MAIN.ZAP.3, 1-51 (1227)
EQUAL? EGO,BAD-SPY \?ELS21
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-66 (2493)
JUMP ?CND26
?ELS28: PRINTI "With your business deal behind you, you want only to get out of this bleak corner of Eastern Europe. The frontier is now only a few hours away, and from there it's not far to Vienna, and civilization....
**** FILE PS:<SWG>MAIN.ZAP.3, 1-66 (2493)
JUMP ?CND20
?ELS21: PRINTI "With your business deal behind you, you want only to get out of this bleak corner of Eastern Europe. The frontier is now only a few hours away, and from there it's not far to Vienna, and civilization....
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-74 (3456)
ZERO? HARD? /?ELS37
**** FILE PS:<SWG>MAIN.ZAP.3, 1-74 (3456)
ZERO? HARD? /?ELS27
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-83 (3701)
JUMP ?CND35
?ELS37: PRINTI "deliver a "
**** FILE PS:<SWG>MAIN.ZAP.3, 1-83 (3701)
JUMP ?CND26
?ELS27: PRINTI "deliver a "
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-86 (3762)
?CND35: PRINTI " to our special agent in Gola. An enemy agent spotted me on the train, and I only barely managed to escape."" He groans softly, examining his wound.
**** FILE PS:<SWG>MAIN.ZAP.3, 1-86 (3762)
?CND26: PRINTI " to our special agent in Gola. An enemy agent spotted me on the train, and I only barely managed to escape."" He groans softly, examining his wound.
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-89 (4249)
ZERO? HARD? /?ELS49
**** FILE PS:<SWG>MAIN.ZAP.3, 1-89 (4249)
ZERO? HARD? /?ELS35
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-91 (4293)
JUMP ?CND47
?ELS49: PRINTD STATION-GOLA
?CND47: PRINTI " is "
**** FILE PS:<SWG>MAIN.ZAP.3, 1-91 (4293)
JUMP ?CND34
?ELS35: PRINTD STATION-GOLA
?CND34: PRINTI " is "
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-96 (4417)
ZERO? HARD? \?CND57
**** FILE PS:<SWG>MAIN.ZAP.3, 1-96 (4417)
ZERO? HARD? \?CND40
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-99 (4495)
EQUAL? PASSWORD,CAMERA,HANKY,SCARF \?CND62
**** FILE PS:<SWG>MAIN.ZAP.3, 1-99 (4495)
EQUAL? PASSWORD,CAMERA,HANKY,SCARF \?CND44
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-101 (4553)
?CND62: PRINTI " '"
**** FILE PS:<SWG>MAIN.ZAP.3, 1-101 (4553)
?CND44: PRINTI " '"
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-104 (4606)
?CND57: PRINTI "...."" Then he stops and listens. Before you can say anything, he checks the corridor and races out.
**** FILE PS:<SWG>MAIN.ZAP.3, 1-104 (4606)
?CND40: PRINTI "...."" Then he stops and listens. Before you can say anything, he checks the corridor and races out.
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-109 (4767)
?CND26: CALL V-VERSION
**** FILE PS:<SWG>MAIN.ZAP.3, 1-109 (4767)
?CND20: CALL V-VERSION
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-122 (5009)
?PRG6: GET P-LEXV,L >N
**** FILE PS:<SWG>MAIN.ZAP.3, 1-122 (5009)
?PRG5: GET P-LEXV,L >N
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-124 (5059)
ZERO? STACK \?CND8
JUMP ?REP7
?CND8: ADD L,P-LEXELEN >L
JUMP ?PRG6
?REP7: EQUAL? N,WD1,WD2 /?THN14
EQUAL? N,WD3,WD4 \?CND11
?THN14: RETURN N
?CND11: CALL WT?,N,PS?VERB,P1?VERB >N
EQUAL? N,ACT?QUIT \?ELS18
**** FILE PS:<SWG>MAIN.ZAP.3, 1-124 (5059)
ZERO? STACK \?CND7
JUMP ?REP6
?CND7: ADD L,P-LEXELEN >L
JUMP ?PRG5
?REP6: EQUAL? N,WD1,WD2 /?THN10
EQUAL? N,WD3,WD4 \?CND9
?THN10: RETURN N
?CND9: CALL WT?,N,PS?VERB,P1?VERB >N
EQUAL? N,ACT?QUIT \?ELS13
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-137 (5321)
?ELS18: EQUAL? N,ACT?RESTART \?ELS22
**** FILE PS:<SWG>MAIN.ZAP.3, 1-137 (5319)
?ELS13: EQUAL? N,ACT?RESTART \?ELS16
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-142 (5405)
?ELS22: EQUAL? N,ACT?$VERIFY \?ELS26
**** FILE PS:<SWG>MAIN.ZAP.3, 1-142 (5403)
?ELS16: EQUAL? N,ACT?$VERIFY \?ELS19
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-145 (5472)
?ELS26: EQUAL? N,ACT?RELEASE \?ELS28
**** FILE PS:<SWG>MAIN.ZAP.3, 1-145 (5470)
?ELS19: EQUAL? N,ACT?RELEASE \?ELS20
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-148 (5539)
?ELS28: EQUAL? N,ACT?RESTORE \?CND16
**** FILE PS:<SWG>MAIN.ZAP.3, 1-148 (5537)
?ELS20: EQUAL? N,ACT?RESTORE \?CND12
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-154 (5649)
?CND16: CALL PLEASE-TYPE-OR,WD1,WD2
**** FILE PS:<SWG>MAIN.ZAP.3, 1-154 (5647)
?CND12: CALL PLEASE-TYPE-OR,WD1,WD2
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-171 (5918)
GRTR? N,L \?ELS5
**** FILE PS:<SWG>MAIN.ZAP.3, 1-171 (5916)
GRTR? N,L \?ELS4
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-173 (5948)
?ELS5: RETURN N
**** FILE PS:<SWG>MAIN.ZAP.3, 1-173 (5946)
?ELS4: RETURN N
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-186 (6332)
EQUAL? VARIATION,1,2 \?ELS3
**** FILE PS:<SWG>MAIN.ZAP.3, 1-186 (6330)
EQUAL? VARIATION,1,2 \?ELS2
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-197 (6623)
?ELS3: EQUAL? VARIATION,3,4 \?CND1
**** FILE PS:<SWG>MAIN.ZAP.3, 1-197 (6621)
?ELS2: EQUAL? VARIATION,3,4 \?CND1
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-207 (6873)
?PRG6: IGRTR? 'N,L \?ELS10
JUMP ?REP7
?ELS10: GET BRIEFCASE-TBL,N >P
ZERO? P /?PRG6
**** FILE PS:<SWG>MAIN.ZAP.3, 1-207 (6871)
?PRG4: IGRTR? 'N,L \?ELS7
JUMP ?REP5
?ELS7: GET BRIEFCASE-TBL,N >P
ZERO? P /?PRG4
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-212 (6982)
JUMP ?PRG6
?REP7: PUTP BAD-SPY,P?ACTION,TRAVELER-F
**** FILE PS:<SWG>MAIN.ZAP.3, 1-212 (6978)
JUMP ?PRG4
?REP5: PUTP BAD-SPY,P?ACTION,TRAVELER-F
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-230 (7487)
ZERO? HARD? /?CND13
**** FILE PS:<SWG>MAIN.ZAP.3, 1-230 (7483)
ZERO? HARD? /?CND9
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-236 (7657)
EQUAL? PICKPOCKET,BAD-SPY \?CND13
**** FILE PS:<SWG>MAIN.ZAP.3, 1-236 (7652)
EQUAL? PICKPOCKET,BAD-SPY \?CND9
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-239 (7737)
?CND13: CALL SET-PASSES
**** FILE PS:<SWG>MAIN.ZAP.3, 1-239 (7731)
?CND9: CALL SET-PASSES
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-266 (8263)
?CND3: ZERO? NEW? \?ELS8
EQUAL? L,COMPARTMENT-START \?ELS8
EQUAL? N,CAR-START \?ELS8
**** FILE PS:<SWG>MAIN.ZAP.3, 1-266 (8256)
?CND3: ZERO? NEW? \?ELS6
EQUAL? L,COMPARTMENT-START \?ELS6
EQUAL? N,CAR-START \?ELS6
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-270 (8362)
JUMP ?CND6
?ELS8: CALL ZMEMQ,L,CAR-ROOMS-REST
ZERO? STACK /?CND6
**** FILE PS:<SWG>MAIN.ZAP.3, 1-270 (8355)
JUMP ?CND5
?ELS6: CALL ZMEMQ,L,CAR-ROOMS-REST
ZERO? STACK /?CND5
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-274 (8462)
ZERO? STACK \?THN16
**** FILE PS:<SWG>MAIN.ZAP.3, 1-274 (8455)
ZERO? STACK \?THN10
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-276 (8505)
ZERO? STACK /?ELS15
?THN16: GETPT L,P?OUT
GET STACK,REXIT >L
JUMP ?CND6
?ELS15: EQUAL? N,CAR-HERE \?ELS19
**** FILE PS:<SWG>MAIN.ZAP.3, 1-276 (8498)
ZERO? STACK /?ELS11
?THN10: GETPT L,P?OUT
CALL GET-REXIT-ROOM,STACK >L
JUMP ?CND5
?ELS11: EQUAL? N,CAR-HERE \?ELS12
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-283 (8669)
JUMP ?CND6
?ELS19: CALL FIND-FLAG-LG,L,DOORBIT
**** FILE PS:<SWG>MAIN.ZAP.3, 1-283 (8672)
JUMP ?CND5
?ELS12: CALL FIND-FLAG-LG,L,DOORBIT
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-286 (8741)
?CND6: CALL TAKE-YOUR-PLACE-TEST,OBJ,STA-ONLY?
ZERO? STACK /?CND22
EQUAL? N,CAR-HERE \?ELS27
**** FILE PS:<SWG>MAIN.ZAP.3, 1-286 (8744)
?CND5: CALL TAKE-YOUR-PLACE-TEST,OBJ,STA-ONLY?
ZERO? STACK /?CND13
EQUAL? N,CAR-HERE \?ELS16
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-290 (8852)
JUMP ?CND25
?ELS27: GETP L,P?CAR >X
ZERO? X /?CND25
**** FILE PS:<SWG>MAIN.ZAP.3, 1-290 (8855)
JUMP ?CND15
?ELS16: GETP L,P?CAR >X
ZERO? X /?CND15
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-294 (8922)
?CND25: PUTP OBJ,P?CAR,N
?CND22: ZERO? NEW? /?CND30
**** FILE PS:<SWG>MAIN.ZAP.3, 1-294 (8925)
?CND15: PUTP OBJ,P?CAR,N
?CND13: ZERO? NEW? /?CND18
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-297 (9008)
ZERO? X /?CND34
**** FILE PS:<SWG>MAIN.ZAP.3, 1-297 (9011)
ZERO? X /?CND20
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-301 (9096)
?CND34: EQUAL? OBJ,BAD-SPY /?CND30
**** FILE PS:<SWG>MAIN.ZAP.3, 1-301 (9099)
?CND20: EQUAL? OBJ,BAD-SPY /?CND18
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-305 (9196)
?CND30: DLESS? 'P,1 \?PRG1
**** FILE PS:<SWG>MAIN.ZAP.3, 1-305 (9199)
?CND18: DLESS? 'P,1 \?PRG1
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-315 (9422)
ZERO? STA-ONLY? /?ELS10
**** FILE PS:<SWG>MAIN.ZAP.3, 1-315 (9425)
ZERO? STA-ONLY? /?ELS7
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-317 (9459)
?ELS10: ZERO? X /TRUE
**** FILE PS:<SWG>MAIN.ZAP.3, 1-317 (9461)
?ELS7: ZERO? X /TRUE
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-322 (9518)
EQUAL? L,GAS-CAR-RM \?ELS3
**** FILE PS:<SWG>MAIN.ZAP.3, 1-322 (9519)
EQUAL? L,GAS-CAR-RM \?ELS2
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-324 (9572)
?ELS3: EQUAL? N,CAR-HERE /?CND1
**** FILE PS:<SWG>MAIN.ZAP.3, 1-324 (9573)
?ELS2: EQUAL? N,CAR-HERE /?CND1
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-353 (10089)
ZERO? FIRST /?ELS6
**** FILE PS:<SWG>MAIN.ZAP.3, 1-353 (10090)
ZERO? FIRST /?ELS4
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-359 (10182)
JUMP ?CND4
?ELS6: PRINTI "Location:"
**** FILE PS:<SWG>MAIN.ZAP.3, 1-359 (10183)
JUMP ?CND3
?ELS4: PRINTI "Location:"
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-363 (10252)
?CND4: BUFOUT TRUE-VALUE
**** FILE PS:<SWG>MAIN.ZAP.3, 1-363 (10253)
?CND3: BUFOUT TRUE-VALUE
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-393 (10779)
EQUAL? LAST-PLAYER-LOC,HERE \?THN13
EQUAL? PLAYER-NOT-FACING-OLD,PLAYER-NOT-FACING /?CND10
?THN13: SET 'LAST-PLAYER-LOC,HERE
**** FILE PS:<SWG>MAIN.ZAP.3, 1-393 (10780)
EQUAL? LAST-PLAYER-LOC,HERE \?THN7
EQUAL? PLAYER-NOT-FACING-OLD,PLAYER-NOT-FACING /?CND6
?THN7: SET 'LAST-PLAYER-LOC,HERE
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-399 (10997)
ZERO? PLAYER-NOT-FACING /?CND17
**** FILE PS:<SWG>MAIN.ZAP.3, 1-399 (10995)
ZERO? PLAYER-NOT-FACING /?CND11
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-403 (11107)
?CND17: DIROUT D-NORMAL
**** FILE PS:<SWG>MAIN.ZAP.3, 1-403 (11105)
?CND11: DIROUT D-NORMAL
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-407 (11183)
ZERO? PLAYER-NOT-FACING /?CND24
**** FILE PS:<SWG>MAIN.ZAP.3, 1-407 (11181)
ZERO? PLAYER-NOT-FACING /?CND17
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-410 (11257)
?CND24: SUB 51,LEN
**** FILE PS:<SWG>MAIN.ZAP.3, 1-410 (11255)
?CND17: SUB 51,LEN
***************
**** FILE PS:<SWG>MAIN.ZAP.1, 1-412 (11303)
?CND10: CURSET 1,68
**** FILE PS:<SWG>MAIN.ZAP.3, 1-412 (11301)
?CND6: CURSET 1,68
***************

474
main.zap Normal file
View File

@ -0,0 +1,474 @@
.FUNCT GO
START::
?FCN: CALL2 INIT-STATUS-LINE,TRUE-VALUE
SET 'LIT,TRUE-VALUE
PUTB P-LEXV,0,59
PUTB YES-LEXV,0,4
SET 'WINNER,PLAYER
CALL QUEUE,I-PROMPT,1
PUT STACK,0,1
CALL1 INTRO
FSET HERE,SEENBIT
CALL1 START-MOVEMENT
CALL1 V-LOOK
CALL1 MAIN-LOOP
JUMP ?FCN
.FUNCT INTRO,N
SET 'HERE,GAME
PRINTI "Copyright (c) 1985 Infocom, Inc. All rights reserved.
Welcome to "
PRINTD GAME
PRINTI " (TM) - interactive fiction from Infocom!
"
PRINTI "[Note to testers: this story has the command GO TO, and the concept of not being able to see things behind your back. The unit of currency in this story is the Frotzian slimpuk, whose symbol is """
PRINTC CURRENCY-SYMBOL
PRINTI """.
Messages in square brackets [] will not be in the final release.
Remember: you can shorten your words only to NINE (9) letters.
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]
"
PRINTI "Do you want the viewpoint of the traveler or the spy? "
CALL READ-WORD,W?TRAVELER,W?SPY,W?T,W?S,W?TRAVELLER >N
EQUAL? N,W?SPY,W?S \?ELS11
SET 'VARIATION,3
JUMP ?CND9
?ELS11: SET 'VARIATION,1
?CND9: PRINTI "Do you want the short variation or the long one? "
CALL READ-WORD,W?SHORT,W?LONG,W?S,W?L >N
PRINTI "Then let the story begin!"
CRLF
EQUAL? N,W?L,W?LONG \?CND23
INC 'VARIATION
CALL ZMEMZ,MCGUFFIN,BRIEFCASE-TBL
PUT BRIEFCASE-TBL,STACK,0
FSET MCGUFFIN,NDESCBIT
FCLEAR MCGUFFIN,TAKEBIT
?CND23: CALL1 TAKE-YOUR-PLACES
EQUAL? VARIATION,2,4 \?CND26
MOVE MCGUFFIN,LIMBO-REAR
?CND26: CALL1 START-TRAIN
CLEAR 0
EQUAL? VARIATION,3,4 \?ELS31
REMOVE BOND
MOVE BOND-OTHER,HERE
CALL QUEUE,I-BOND-OTHER,-1
PUT STACK,0,1
PRINTI "Why did you want to be a spy anyway? You could have had a nice restful job, like an air-traffic controller. You could have tended flowers behind a white picket fence around your country cottage. At least they could let you grab a few winks between one job and the next. But no -- you finish debriefing in some dirty little city in Frotzerland, and before you can even find a phone book, let alone a hotel, they volunteer you for another assignment.
""You've got to intercept "
CALL2 PRINTA,MCGUFFIN
PRINTI "!"" they told you. ""Then deliver it to our agent in Gola so the leak can be traced. We don't know where it is for sure, but we think it's in a briefcase that's leaving town on the next train. You're the only agent that's close enough and experienced enough to be sent after it. And at the end of the trip, there will be a plane ticket to home waiting for you.""
So that's why you're climbing all over this stupid train. Finding the briefcase was easy enough, but the dude carrying it was something else. Even your well-placed bullet didn't make him drop. Now, if only he'll take the bait and follow you up here, you can .... Wait! Here he comes from the forward end! But he's not carrying the case!
"
JUMP ?CND29
?ELS31: PRINTI "With your business deal behind you, you want only to get out of this bleak corner of Eastern Europe. The frontier is now only a few hours away, and from there it's not far to Vienna, and civilization....
The ride seems endless, and you're dozing off again. The wheels of the train are ticking like a clock, ticking off the segments of track you're passing, and the compartment is rocking you back and forth, back and forth, making your eyelids slowly close.
Your slumber is cut short as a man staggers into your compartment, panting strangely. From his demeanor, you guess that he has drunk too much. But before you can dismiss him, you notice that he's grasping a bright red spot on his shirt. He speaks quietly, but in a hurry.
""I've got only a moment, so listen carefully! Since you were reading the International Herald over lunch, I assume you're an American. I am an agent of our government, and I've been sent to "
EQUAL? VARIATION,2,4 \?ELS40
PRINTI "pick up some kind of "
PRINTD MCGUFFIN
PRINTI " in Frbz and take it"
JUMP ?CND38
?ELS40: PRINTI "deliver a "
PRINTD MCGUFFIN
?CND38: PRINTI " to our special agent in Gola. An enemy agent spotted me on the train, and I only barely managed to escape."" He groans softly, examining his wound.
""The best I can do now is throw the enemy off the scent, but I need you, and your country needs you, to carry out my assignment."" You start to interrupt, a thousand questions racing through your mind. ""There's no time! Here! Take my briefcase, but be careful with it! Our enemies are all around us! My contact in "
EQUAL? VARIATION,2,4 \?ELS51
PRINTD STATION-FRBZ
JUMP ?CND49
?ELS51: PRINTD STATION-GOLA
?CND49: PRINTI " is "
CALL2 PRINTA,CONTACT
PRINTI ", and I was to display "
EQUAL? VARIATION,2,4 /?CND58
CALL2 PRINTA,PASSOBJECT
PRINTI ", then use the word"
EQUAL? PASSWORD,CAMERA,HANKY,SCARF \?CND63
PRINTI "s"
?CND63: PRINTI " '"
PRINTD PASSWORD
PRINTI "' "
?CND58: PRINTI "...."" Then he stops and listens. Before you can say anything, he checks the corridor and races out.
"
CALL QUEUE,I-BOND,1
PUT STACK,0,1
?CND29: CALL1 V-VERSION
CRLF
CALL1 INIT-STATUS-LINE
RSTACK
.FUNCT READ-WORD,WD1,WD2,WD3=0,WD4=0,WD5=0,N,L
?FCN: PRINTI ">"
READ P-INBUF,P-LEXV
GETB P-LEXV,P-LEXWORDS
ZERO? STACK \?CND3
CALL PLEASE-TYPE-OR,WD1,WD2
JUMP ?FCN
?CND3: SET 'L,P-LEXSTART
?PRG6: GET P-LEXV,L >N
CALL WT?,N,PS?BUZZ-WORD
ZERO? STACK \?CND8
JUMP ?REP7
?CND8: ADD L,P-LEXELEN >L
JUMP ?PRG6
?REP7: EQUAL? N,WD1,WD2 /?THN14
EQUAL? N,WD3,WD4,WD5 \?CND11
?THN14: RETURN N
?CND11: CALL WT?,N,PS?VERB,P1?VERB >N
EQUAL? N,ACT?QUIT \?ELS18
QUIT
CALL1 TELL-FAILED
JUMP ?FCN
?ELS18: EQUAL? N,ACT?RESTART \?ELS20
RESTART
CALL1 TELL-FAILED
JUMP ?FCN
?ELS20: EQUAL? N,ACT?$VERIFY \?ELS22
CALL1 V-$VERIFY
JUMP ?FCN
?ELS22: EQUAL? N,ACT?RELEASE \?ELS24
CALL1 V-VERSION
JUMP ?FCN
?ELS24: EQUAL? N,ACT?RESTORE \?CND16
CALL1 V-RESTORE
ZERO? STACK /?FCN
CALL1 TELL-FAILED
JUMP ?FCN
?CND16: CALL PLEASE-TYPE-OR,WD1,WD2
JUMP ?FCN
.FUNCT PLEASE-TYPE-OR,WD1,WD2
PRINTI "Please type """
PRINTB WD1
PRINTI """ or """
PRINTB WD2
PRINTI """. "
RTRUE
.FUNCT RANDOM-PER-VAR,L,N
MUL VARIATION,L
DIV STACK,MAX-VAR
ADD 1,STACK >N
GRTR? N,L \?ELS5
RETURN L
?ELS5: RETURN N
.FUNCT TAKE-YOUR-PLACES,P,N,L,?TMP1
PUTP WAITER,P?CAR,DINER-CAR
PUTP COOK,P?CAR,DINER-CAR
CALL2 PICK-ONE,CAR-ROOMS-COMPS >COMPARTMENT-START
EQUAL? VARIATION,3,4 \?CND1
ADD 1,CAR-START >CAR-HERE
?CND1: CALL2 TAKE-YOUR-PLACES-CAST,EXTRA-TABLE
CALL2 TAKE-YOUR-PLACES-CAST,SPY-TABLE
CALL TAKE-YOUR-PLACES-CAST,MARKS-TABLE,FALSE-VALUE,FALSE-VALUE,FALSE-VALUE
GET SPY-TABLE,0
CALL2 RANDOM-PER-VAR,STACK
GET SPY-TABLE,STACK >BAD-SPY
GETP BAD-SPY,P?CHARACTER >BAD-SPY-C
GETP BAD-SPY,P?ACTION >BAD-SPY-DEFAULT-F
EQUAL? VARIATION,3,4 /?ELS6
SET 'HERE,COMPARTMENT-START
CALL2 GENERIC-SEAT-F,0 >PLAYER-SEATED
MOVE BLOOD-SPOT,HERE
MOVE BRIEFCASE,PLAYER-SEATED
PUTP BRIEFCASE,P?CAR,CAR-HERE
PUTP BAD-SPY,P?ACTION,BAD-SPY-F
ADD 1,CAR-START
PUTP BAD-SPY,P?CAR,STACK
MOVE BAD-SPY,OTHER-ROOF
JUMP ?CND4
?ELS6: SET 'HERE,ROOF
PUTP PLAYER,P?CAR,CAR-HERE
MOVE BRIEFCASE,BAD-SPY
PUTP BRIEFCASE,P?CAR,CAR-START
FCLEAR BRIEFCASE,TAKEBIT
SET 'N,0
GET BRIEFCASE-TBL,0 >L
?PRG9: IGRTR? 'N,L \?ELS13
JUMP ?REP10
?ELS13: GET BRIEFCASE-TBL,N >P
ZERO? P /?PRG9
FCLEAR P,TAKEBIT
JUMP ?PRG9
?REP10: RANDOM 6
ADD 9,STACK
CALL QUEUE,I-TRAVELER-TO-GRNZ,STACK
PUT STACK,0,1
PUTP BAD-SPY,P?ACTION,TRAVELER-F
PUTP BAD-SPY,P?CAR,CAR-START
PUTP BAD-SPY,P?LDESC,35
GETP COMPARTMENT-START,P?OTHER >L
MOVE BAD-SPY,L
SET 'BAD-SPY-DONE-PEEKING,TRUE-VALUE
MOVE BLOOD-SPOT,L
FCLEAR GUN,NDESCBIT
FSET GUN,TAKEBIT
MOVE GUN,POCKET
?CND4: MOVE PLAYER,HERE
SET 'LAST-CAR-HERE,CAR-HERE
ADD 1,CONTACT-MAX >?TMP1
CALL2 RANDOM-PER-VAR,CONTACT-MAX
SUB ?TMP1,STACK
GET EXTRA-TABLE,STACK >CONTACT
GETP CONTACT,P?ACTION >CONTACT-DEFAULT-F
PUTP CONTACT,P?ACTION,CONTACT-F
EQUAL? VARIATION,2,4 \?CND16
CALL1 MOVE-CONTACT
PUTP TICKET,P?CAPACITY,STATION-WIEN
PUTP TICKET-OTHER,P?CAPACITY,STATION-WIEN
SET 'LATCH-TURNED,FALSE-VALUE
CALL PICK-ONE-NOT,SPY-TABLE,BAD-SPY >PICKPOCKET
CALL PICK-ONE-NOT,SPY-TABLE,BAD-SPY >PEEKER
ADD 2,CAR-START
PUTP PEEKER,P?CAR,STACK
MOVE PEEKER,OTHER-VESTIBULE-REAR
GETP PEEKER,P?CHARACTER
GET GOAL-TABLES,STACK
PUT STACK,GOAL-ENABLE,1
CALL ESTABLISH-GOAL-TRAIN,PEEKER,VESTIBULE-FWD,1
PUTP PEEKER,P?LDESC,PEEKING-CODE
?CND16: CALL1 SET-PASSES
RSTACK
.FUNCT SET-PASSES,NUM=0,L,N,P
SET 'PASSWORD-GIVEN,FALSE-VALUE
SET 'PASSWORD-GIVEN-OTHER,FALSE-VALUE
SET 'PASSOBJECT-GIVEN,FALSE-VALUE
SET 'PASSOBJECT-GIVEN-OTHER,FALSE-VALUE
ZERO? NUM /?CND1
FSET SPY-LIST,MUNGBIT
?CND1: SET 'L,6
ADD NUM,VARIATION >P
GET PASS-TABLE,P >PASSOBJECT
CALL2 RANDOM-PER-VAR,L
ADD NUM,STACK >N
EQUAL? P,N \?CND4
IGRTR? 'N,L \?CND4
SET 'N,1
?CND4: GET PASS-TABLE,N >PASSWORD
RETURN PASSWORD
.FUNCT TAKE-YOUR-PLACES-CAST,TBL,NEW?=0,STA-ONLY?=0,PEOPLE?=1,P,OBJ,N,L,M,X
GET TBL,0 >P
GET CAR-ROOMS,0 >M
?PRG1: GET TBL,P >OBJ
ZERO? PEOPLE? /?CND3
FSET OBJ,LOCKED
?CND3: RANDOM M
GET CAR-ROOMS,STACK >L
RANDOM CAR-MAX >N
EQUAL? N,DINER-CAR,FANCY-CAR \?CND7
DEC 'N
?CND7: ZERO? PEOPLE? \?ELS12
JUMP ?CND10
?ELS12: ZERO? NEW? \?ELS14
EQUAL? L,COMPARTMENT-START \?ELS14
EQUAL? N,CAR-START \?ELS14
DEC 'N
JUMP ?CND10
?ELS14: CALL ZMEMQ,L,CAR-ROOMS-REST
ZERO? STACK /?CND10
FSET? OBJ,PLURALBIT /?THN22
CALL OCCUPIED?,L,N
ZERO? STACK /?ELS21
?THN22: GETPT L,P?OUT
GET STACK,REXIT >L
JUMP ?CND10
?ELS21: EQUAL? N,CAR-HERE \?ELS25
CALL FIND-FLAG-LG,L,DOORBIT
FSET STACK,LOCKED
JUMP ?CND10
?ELS25: CALL FIND-FLAG-LG,L,DOORBIT
FCLEAR STACK,LOCKED
?CND10: ZERO? PEOPLE? /?THN31
CALL TAKE-YOUR-PLACE-TEST,OBJ,STA-ONLY?
ZERO? STACK /?CND28
?THN31: EQUAL? N,CAR-HERE,DINER-CAR,FANCY-CAR \?ELS35
MOVE OBJ,L
JUMP ?CND33
?ELS35: GETP L,P?OTHER >X
ZERO? X /?CND33
MOVE OBJ,X
?CND33: PUTP OBJ,P?CAR,N
?CND28: ZERO? NEW? /?CND38
ZERO? PEOPLE? /?CND38
CALL ZMEMQ,OBJ,EXTRA-TABLE >X
ZERO? X /?CND43
GET EXTRA-SEEN-TABLE,X
SUB 0,STACK
PUT EXTRA-SEEN-TABLE,X,STACK
?CND43: EQUAL? OBJ,BAD-SPY /?CND38
FCLEAR OBJ,SEENBIT
FCLEAR OBJ,TOUCHBIT
PUTP OBJ,P?LDESC,0
?CND38: DLESS? 'P,1 \?PRG1
RTRUE
.FUNCT TAKE-YOUR-PLACE-TEST,OBJ,STA-ONLY?,X
EQUAL? OBJ,CONTACT /FALSE
CALL IN-MOTION?,OBJ,TRUE-VALUE
ZERO? STACK \FALSE
CALL2 META-LOC,OBJ
CALL ZMEMQ,STACK,STATION-ROOMS >X
ZERO? STA-ONLY? /?ELS10
RETURN X
?ELS10: ZERO? X /TRUE
RFALSE
.FUNCT OCCUPIED?,L,N
EQUAL? L,GAS-CAR-RM \?ELS3
EQUAL? N,GAS-CAR /TRUE
?ELS3: EQUAL? N,CAR-HERE,DINER-CAR,FANCY-CAR /?CND1
GETP L,P?OTHER >L
?CND1: CALL FIND-FLAG-CAR,L,N,PERSONBIT
RSTACK
.FUNCT MOVE-CONTACT,N
SUB PLATFORM-MAX,1
RANDOM STACK
ADD 1,STACK >N
PUTP CONTACT,P?CAR,N
GET STATION-ROOMS,N
MOVE CONTACT,STACK
FSET CONTACT,NDESCBIT
FCLEAR CONTACT,TOUCHBIT
PUTP CONTACT,P?LDESC,10
RTRUE
.FUNCT INIT-STATUS-LINE,FIRST=0
GETB 0,18
ZERO? STACK /TRUE
ZERO? FIRST /?CND4
CLEAR -1
SPLIT 2
?CND4: SCREEN 1
BUFOUT FALSE-VALUE
CALL2 INVERSE-LINE,1
HLIGHT H-INVERSE
ZERO? FIRST /?ELS10
GETB 0,33
SUB STACK,10
DIV STACK,2
CURSET 1,STACK
PRINTD GAME
JUMP ?CND8
?ELS10: CURSET 1,1
PRINTI "You are "
CURSET 1,63
PRINTI "It is now "
?CND8: SET 'PLAYER-NOT-FACING-OLD,99
BUFOUT TRUE-VALUE
HLIGHT H-NORMAL
SCREEN 0
RTRUE
.FUNCT INVERSE-LINE,LIN,CNT=79
CURSET LIN,1
HLIGHT H-INVERSE
CALL2 PRINT-SPACES,CNT
HLIGHT H-NORMAL
RTRUE
.FUNCT PRINT-SPACES,CNT
?PRG1: DLESS? 'CNT,0 /TRUE
PRINTC 32
JUMP ?PRG1
.FUNCT STATUS-LINE,LEN,X=0
GETB 0,18
ZERO? STACK /TRUE
EQUAL? LAST-PLAYER-LOC,HERE \?THN7
EQUAL? PLAYER-NOT-FACING-OLD,PLAYER-NOT-FACING \?THN7
EQUAL? PLAYER-SEATED-OLD,PLAYER-SEATED /?CND4
?THN7: SET 'X,TRUE-VALUE
?CND4: ZERO? X \?CND9
ZERO? CLOCK-WAIT \TRUE
?CND9: BUFOUT FALSE-VALUE
SCREEN 1
HLIGHT H-INVERSE
ZERO? X /?CND16
SET 'LAST-PLAYER-LOC,HERE
SET 'PLAYER-NOT-FACING-OLD,PLAYER-NOT-FACING
SET 'PLAYER-SEATED-OLD,PLAYER-SEATED
DIROUT -1
DIROUT 3,SL-BUFFER
CALL1 TELL-LOCATION
DIROUT -3
DIROUT 1
GET SL-BUFFER,0 >LEN
CURSET 1,9
CALL1 TELL-LOCATION
SUB 54,LEN
CALL2 PRINT-SPACES,STACK
?CND16: CURSET 1,73
CALL2 TIME-PRINT,PRESENT-TIME
PRINTI ". "
SCREEN 0
BUFOUT TRUE-VALUE
HLIGHT H-NORMAL
RTRUE
.FUNCT TELL-LOCATION,DIR
EQUAL? HERE,UNCONSCIOUS \?CND1
PRINTI "unconscious."
RTRUE
?CND1: ZERO? PLAYER-SEATED \?ELS8
JUMP ?CND6
?ELS8: LESS? 0,PLAYER-SEATED \?ELS10
PRINTI "sitting "
JUMP ?CND6
?ELS10: PRINTI "lying "
?CND6: FSET? HERE,SURFACEBIT \?ELS19
PRINTI "on"
JUMP ?CND17
?ELS19: EQUAL? HERE,BESIDE-TRACKS /?CND17
PRINTI "in"
?CND17: CALL2 PRINTT,HERE
ZERO? PLAYER-NOT-FACING /?CND28
PRINTI ", facing "
CALL2 OPP-DIR,PLAYER-NOT-FACING >DIR
EQUAL? DIR,P?EAST \?ELS35
ZERO? ON-TRAIN /?ELS35
PRINTI "the right side"
JUMP ?CND28
?ELS35: EQUAL? DIR,P?WEST \?ELS41
ZERO? ON-TRAIN /?ELS41
PRINTI "the left side"
JUMP ?CND28
?ELS41: CALL2 DIR-PRINT,DIR
?CND28: PRINTI "."
RTRUE
.ENDI

512
main.zil Normal file
View File

@ -0,0 +1,512 @@
"MAIN for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<ROUTINE GO ()
<INIT-STATUS-LINE T>
<SETG LIT T>
<PUTB ,P-LEXV 0 59>
<PUTB ,YES-LEXV 0 4>
<SETG WINNER ,PLAYER>
<ENABLE <QUEUE I-PROMPT 1>>
<INTRO>
<FSET ,HERE ,SEENBIT>
<START-MOVEMENT>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<GLOBAL VARIATION 0>
<CONSTANT MAX-VAR 6>
"<GLOBAL LONG-INTRO <>>
<GLOBAL HARD? <>>
<GLOBAL EGO <>>"
<ROUTINE INTRO ("AUX" N)
<SETG HERE ,GAME>
<TELL
"Copyright (c) 1985 Infocom, Inc. All rights reserved.|
|
Welcome to " D ,GAME " (TM) - interactive fiction from Infocom!|
|
">
<TELL
"[Note to testers: this story has the command GO TO,
and the concept of not being able to see things behind your back.
The unit of currency in this story is the Frotzian slimpuk, whose
symbol is \"">
<PRINTC ,CURRENCY-SYMBOL>
<TELL "\".|
|
Messages in square brackets [] will not be in the final release.
|
Remember: you can shorten your words only to NINE (9) letters.|
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]|
|
">
<TELL "Do you want the viewpoint of the traveler or the spy? ">
<SET N <READ-WORD ,W?TRAVELER ,W?SPY ,W?T ,W?S ,W?TRAVELLER>>
<COND (<EQUAL? .N ,W?SPY ,W?S>
<SETG VARIATION 3>)
(T <SETG VARIATION 1>)>
<REPEAT ()
<TELL
"Do you want the short variation or the long one? "
;"Please type a number to choose the one you want this time. ">
<SET N <READ-WORD ,W?SHORT ,W?LONG ,W?S ,W?L>>
;<TELL "Is variation #">
;<COND (<L? .N 10> <PRINTC %<ASCII !\0>>)>
;<TELL N .N " the one you want?">
<COND (T ;<YES?> <RETURN>)>>
<TELL "Then let the story begin!" CR>
<COND (<EQUAL? .N ,W?L ,W?LONG>
<INC VARIATION>
<PUT ,BRIEFCASE-TBL <ZMEMZ ,MCGUFFIN ,BRIEFCASE-TBL> 0>
<FSET ,MCGUFFIN ,NDESCBIT>
<FCLEAR ,MCGUFFIN ,TAKEBIT>
;"<SETG HARD? T>")>
<TAKE-YOUR-PLACES>
<COND (<HARD?>
<MOVE ,MCGUFFIN ,LIMBO-REAR ;"non-spoiler">)>
<START-TRAIN>
;<COND (<==? ,TRAIN-NAME <GET ,TRAIN-TABLE-B 0>>
<PUTP ,COAT ,P?CAR ,PLATFORM-MAX>)
(T <MOVE ,COAT ,LIMBO-FWD>)>
;<CRLF>
<CLEAR 0>
<COND (<SPY?> ;<EQUAL? ,VARIATION 3 4>
<REMOVE ,BOND>
<MOVE ,BOND-OTHER ,HERE>
;"<PUTP ,BOND-OTHER ,P?LDESC 33>
<FCLEAR ,BOND-OTHER ,TOUCHBIT>"
<ENABLE <QUEUE I-BOND-OTHER -1>>
<TELL
"Why did you want to be a spy anyway? You could have had a nice restful
job, like an air-traffic controller. You could have tended flowers
behind a white picket fence around your country cottage. At least they
could let you grab a few winks between one job and the next. But no --
you finish debriefing in some dirty little city in Frotzerland, and
before you can even find a phone book, let alone a hotel, they volunteer
you for another assignment.|
|
\"You've got to intercept " A ,MCGUFFIN "!\" they told you. \"Then
deliver it to our agent in Gola so the leak can be traced.
We don't know where it is for sure,
but we think it's in a briefcase that's leaving town on the next train.
You're the only agent that's close enough and experienced enough to be
sent after it. And at the end of the trip, there will be a plane ticket
to home waiting for you.\"|
|
So that's why you're climbing all over this stupid train. Finding the
briefcase was easy enough, but the dude carrying it was something else.
Even your well-placed bullet didn't make him drop. Now, if only he'll take
the bait and follow you up here, you can .... Wait! Here he comes from
the forward end! But he's not carrying the case!|
|
">)
(T
<TELL
"With your business deal behind you, you want only to get out of this
bleak corner of Eastern Europe. The frontier is now only a few hours
away, and from there it's not far to Vienna, and
civilization....|
|
The ride seems endless, and you're dozing off again. The
wheels of the train are ticking like a clock, ticking off the segments
of track you're passing, and the compartment is rocking you back and
forth, back and forth, making your eyelids slowly close.|
|
Your slumber is cut short as a man staggers into your compartment,
panting strangely. From his demeanor, you guess that he has drunk too
much. But before you can dismiss him, you notice that he's grasping a
bright red spot on his shirt. He speaks quietly, but in a hurry.|
|
\"I've got only a moment, so listen carefully! Since you were reading
the International Herald over lunch, I assume you're an
American. I am an agent of our government, and I've been sent to ">
<COND (<HARD?>
<TELL
"pick up some kind of " D ,MCGUFFIN " in Frbz and take it">)
(T <TELL "deliver a " D ,MCGUFFIN>)>
<TELL " to our special agent in
Gola. An enemy agent spotted me on the train, and I only barely managed
to escape.\" He groans softly, examining his wound.|
|
\"The best I can do now is throw the enemy off the scent, but I need
you, and your country needs you, to carry out my assignment.\" You start
to interrupt, a thousand questions racing through your mind. \"There's
no time! Here! Take my briefcase, but be careful with it!
Our enemies are all around us! My contact in ">
<COND (<HARD?> <PRINTD ,STATION-FRBZ>)
(T <PRINTD ,STATION-GOLA>)>
<TELL " is ">
<TELL A ,CONTACT ", and I was to display ">
<COND (<NOT <HARD?>>
<TELL A ,PASSOBJECT ", then use the word">
<COND (<EQUAL? ,PASSWORD ,CAMERA ,HANKY ,SCARF>
<TELL "s">)>
<TELL " '" D ,PASSWORD "' ">)>
<TELL
"....\" Then he stops and listens.
Before you can say anything, he checks the corridor and races out.|
|
">
<ENABLE <QUEUE I-BOND 1>>)>
<V-VERSION>
<CRLF>
<INIT-STATUS-LINE>>
<ROUTINE READ-WORD (WD1 WD2 "OPTIONAL" (WD3 <>) (WD4 <>) (WD5 <>) "AUX" N L)
<TELL ">">
<READ ,P-INBUF ,P-LEXV>
<COND (<0? <GETB ,P-LEXV ,P-LEXWORDS>>
<PLEASE-TYPE-OR .WD1 .WD2>
<AGAIN>)>
<SET L ,P-LEXSTART>
<REPEAT ()
<SET N <GET ,P-LEXV .L>>
<COND (<NOT <WT? .N ,PS?BUZZ-WORD>> <RETURN>)>
<SET L <+ .L ,P-LEXELEN>>>
<COND (<OR <EQUAL? .N .WD1 .WD2>
<EQUAL? .N .WD3 .WD4 .WD5>>
<RETURN .N>)>
<SET N <WT? .N ,PS?VERB ,P1?VERB>>
<COND (<EQUAL? .N ,ACT?QUIT>
<QUIT>
<TELL-FAILED>
<AGAIN>)
(<EQUAL? .N ,ACT?RESTART>
<RESTART>
<TELL-FAILED>
<AGAIN>)
(<EQUAL? .N ,ACT?$VERIFY>
<V-$VERIFY>
<AGAIN>)
(<EQUAL? .N ,ACT?RELEASE>
<V-VERSION>
<AGAIN>)
(<EQUAL? .N ,ACT?RESTORE>
<COND (<V-RESTORE>
<TELL-FAILED>)>
<AGAIN>)>
<PLEASE-TYPE-OR .WD1 .WD2>
<AGAIN>>
<ROUTINE PLEASE-TYPE-OR (WD1 WD2)
<TELL "Please type \"">
<PRINTB .WD1>
<TELL "\" or \"">
<PRINTB .WD2>
<TELL "\". ">>
;<ROUTINE READ-NUM ("AUX" N)
<TELL ">">
<READ ,P-INBUF ,P-LEXV>
<COND (<0? <GETB ,P-LEXV ,P-LEXWORDS>>
<TELL "I beg your pardon?" CR>
<AGAIN>)>
<COND (<NUMBER? ,P-LEXSTART>
<COND (<==? ,P-NUMBER ,MAX-VAR>
<RETURN ,P-NUMBER>)
(<L? 0 ,P-NUMBER>
<RETURN <MOD ,P-NUMBER ,MAX-VAR>>)>)
(<NOT <ZERO? <SET N <GET ,P-LEXV ,P-LEXSTART>>>>
<SET N <WT? .N ,PS?VERB ,P1?VERB>>
<COND (<EQUAL? .N ,ACT?RESTART>
<RESTART>
<TELL-FAILED>
<AGAIN>)
(<EQUAL? .N ,ACT?$VERIFY>
<V-$VERIFY>
<AGAIN>)
(<EQUAL? .N ,ACT?RELEASE>
<V-VERSION>
<AGAIN>)
(<EQUAL? .N ,ACT?RESTORE>
<COND (<V-RESTORE>
<TELL-FAILED>
<AGAIN>)
(T
<AGAIN>)>)>)>
<TELL "Please type a number between 1 and " N ,MAX-VAR ". ">
<AGAIN>>
"<GLOBAL RSEED 6969>
<ROUTINE RANDOM-PER-VAR (N) ;'lower digits w/ correction'
<SETG RSEED <MOD <* <+ 2 ,VARIATION> <+ 2 ,RSEED>>
10000>>
;<SETG RSEED <+ <+ 1 ,VARIATION> ,RSEED>>
%<COND (<NOT <GASSIGNED? PREDGEN>>
'<COND (<GASSIGNED? RSEED-LIST>
<COND (<MEMQ ,RSEED ,RSEED-LIST>
<TELL '[Dup. seed=' N ,RSEED ']' CR>)
(T <SETG RSEED-LIST (,RSEED !,RSEED-LIST)>)>)
(T <SETG RSEED-LIST (,RSEED)>)>)
(T '<COND (,DEBUG <TELL '[Seed=' N ,RSEED ']' CR>)>)>
<+ 1 <MOD ,RSEED .N>>>"
<ROUTINE RANDOM-PER-VAR (L "AUX" N)
<SET N <+ 1 </ <* ,VARIATION .L> ,MAX-VAR>>>
<COND (<G? .N .L> .L) (T .N)>>
<ROUTINE TAKE-YOUR-PLACES ("AUX" P N L)
;<TELL CR "(Take your places ..." CR>
<PUTP ,WAITER ,P?CAR ,DINER-CAR>
<PUTP ,COOK ,P?CAR ,DINER-CAR>
<SETG COMPARTMENT-START <PICK-ONE ,CAR-ROOMS-COMPS>>
<COND (<SPY?> <SETG CAR-HERE <+ 1 ,CAR-START>>)>
<TAKE-YOUR-PLACES-CAST ,EXTRA-TABLE>
<TAKE-YOUR-PLACES-CAST ,SPY-TABLE>
<TAKE-YOUR-PLACES-CAST ,MARKS-TABLE <> <> <>>
<SETG BAD-SPY <GET ,SPY-TABLE <RANDOM-PER-VAR <GET ,SPY-TABLE 0>>>>
<SETG BAD-SPY-C <GETP ,BAD-SPY ,P?CHARACTER>>
<SETG BAD-SPY-DEFAULT-F <GETP ,BAD-SPY ,P?ACTION>>
<COND (<NOT <SPY?>> ;<EQUAL? ,VARIATION 1 2>
<SETG HERE ,COMPARTMENT-START>
<SETG PLAYER-SEATED <GENERIC-SEAT-F 0>>
<MOVE ,BLOOD-SPOT ,HERE>
;"<MOVE ,RACK ,HERE>
<MOVE ,OTHER-RACK <GETP ,HERE ,P?OTHER>>"
<MOVE ,BRIEFCASE ,PLAYER-SEATED>
<PUTP ,BRIEFCASE ,P?CAR ,CAR-HERE>
<PUTP ,BAD-SPY ,P?ACTION ,BAD-SPY-F>
<PUTP ,BAD-SPY ,P?CAR <+ 1 ,CAR-START>>
<MOVE ,BAD-SPY ,OTHER-ROOF>
;"<MOVE ,GUN ,BAD-SPY>")
(T ;<EQUAL? ,VARIATION 3 4>
;"<SETG EGO ,BAD-SPY>"
;<SETG CAR-HERE <+ 1 ,CAR-START>>
<SETG HERE ,ROOF>
<PUTP ,PLAYER ,P?CAR ,CAR-HERE>
<MOVE ,BRIEFCASE ,BAD-SPY>
<PUTP ,BRIEFCASE ,P?CAR ,CAR-START>
<FCLEAR ,BRIEFCASE ,TAKEBIT>
<SET N 0>
<SET L <GET ,BRIEFCASE-TBL 0>>
<REPEAT ()
<COND (<IGRTR? N .L> <RETURN>)
(<NOT <ZERO? <SET P <GET ,BRIEFCASE-TBL .N>>>>
<FCLEAR .P ,TAKEBIT>)>>
<ENABLE <QUEUE I-TRAVELER-TO-GRNZ <+ 9 <RANDOM 6>>>>
<PUTP ,BAD-SPY ,P?ACTION ,TRAVELER-F>
<PUTP ,BAD-SPY ,P?CAR ,CAR-START>
<PUTP ,BAD-SPY ,P?LDESC 35 ;"deep in thought">
<SET L <GETP ,COMPARTMENT-START ,P?OTHER>>
<MOVE ,BAD-SPY .L ;,OTHER-COMPARTMENT-1>
<SETG BAD-SPY-DONE-PEEKING T>
<MOVE ,BLOOD-SPOT .L>
<FCLEAR ,GUN ,NDESCBIT>
<FSET ,GUN ,TAKEBIT>
<MOVE ,GUN ,POCKET ;,PLAYER>)>
<MOVE ,PLAYER ,HERE>
;<SETG LAST-PLAYER-LOC ,HERE>
<SETG LAST-CAR-HERE ,CAR-HERE>
<SETG CONTACT <GET ,EXTRA-TABLE
<- <+ 1 ,CONTACT-MAX>
<RANDOM-PER-VAR ,CONTACT-MAX>>>>
<SETG CONTACT-DEFAULT-F <GETP ,CONTACT ,P?ACTION>>
<PUTP ,CONTACT ,P?ACTION ,CONTACT-F>
<COND (<HARD?>
<MOVE-CONTACT>
<PUTP ,TICKET ,P?CAPACITY ,STATION-WIEN>
<PUTP ,TICKET-OTHER ,P?CAPACITY ,STATION-WIEN>
<SETG LATCH-TURNED <>>
<SETG PICKPOCKET <PICK-ONE-NOT ,SPY-TABLE ,BAD-SPY>>
<SETG PEEKER <PICK-ONE-NOT ,SPY-TABLE ,BAD-SPY ;,PICKPOCKET>>
<PUTP ,PEEKER ,P?CAR <+ 2 ,CAR-START>>
<MOVE ,PEEKER ,OTHER-VESTIBULE-REAR>
<PUT <GT-O ,PEEKER> ,GOAL-ENABLE 1>
<ESTABLISH-GOAL-TRAIN ,PEEKER ,VESTIBULE-FWD 1>
<PUTP ,PEEKER ,P?LDESC ,PEEKING-CODE>)>
<SET-PASSES>
;"<TELL CR 'Lights ...' CR>
<SET N <* 15 ,VARIATION>>
<SETG SCORE </ .N 60>>
<SETG MOVES <MOD .N 60>>
<SETG PRESENT-TIME <+ ,MOVES <* ,SCORE 60>>>
<TELL CR 'Action!)' CR>">
<ROUTINE SET-PASSES ("OPTIONAL" (NUM 0) "AUX" L N P)
<SETG PASSWORD-GIVEN <>>
<SETG PASSWORD-GIVEN-OTHER <>>
<SETG PASSOBJECT-GIVEN <>>
<SETG PASSOBJECT-GIVEN-OTHER <>>
<COND (<NOT <ZERO? .NUM>> <FSET ,SPY-LIST ,MUNGBIT>)>
<SET L 6 ;<GET ,PASS-TABLE 0>>
<SET P <+ .NUM ,VARIATION>
;<+ 1 <MOD <- ,VARIATION 1> .L>> ;<RANDOM-PER-VAR .L>>
<SETG PASSOBJECT <GET ,PASS-TABLE .P>>
<SET N <+ .NUM <RANDOM-PER-VAR .L>>>
<COND (<==? .P .N>
<COND (<IGRTR? N .L> <SET N 1>)>)>
<SETG PASSWORD <GET ,PASS-TABLE .N>>>
<ROUTINE TAKE-YOUR-PLACES-CAST
(TBL "OPTIONAL" (NEW? <>) (STA-ONLY? <>) (PEOPLE? T)
"AUX" P OBJ N L M X)
<SET P <GET .TBL 0>>
<SET M <GET ,CAR-ROOMS 0>>
<REPEAT ()
;<COND (<AND ;,LONG-INTRO <NOT .NEW?>> <CRLF> <CRLF>)>
<SET OBJ <GET .TBL .P>>
<COND (.PEOPLE? <FSET .OBJ ,LOCKED>)> ;"ticket not punched"
<SET L <GET ,CAR-ROOMS <RANDOM ;-PER-VAR .M>>>
<SET N <RANDOM ;-PER-VAR ,CAR-MAX>>
<COND (<EQUAL? .N ,DINER-CAR ,FANCY-CAR>
<DEC N>)>
<COND (<ZERO? .PEOPLE?> T)
(<AND <NOT .NEW?>
<EQUAL? .L ,COMPARTMENT-START>
<EQUAL? .N ,CAR-START>>
<DEC N>)
(<ZMEMQ .L ,CAR-ROOMS-REST>
<COND (<OR <FSET? .OBJ ,PLURALBIT>
<OCCUPIED? .L .N>>
<SET L <GET-REXIT-ROOM <GETPT .L ,P?OUT>>>)
(<==? .N ,CAR-HERE>
<FSET <FIND-FLAG-LG .L ,DOORBIT> ,LOCKED>)
(T <FCLEAR <FIND-FLAG-LG .L ,DOORBIT>,LOCKED>)>)>
<COND (<OR <ZERO? .PEOPLE?>
<TAKE-YOUR-PLACE-TEST .OBJ .STA-ONLY?>>
<COND (<EQUAL? .N ,CAR-HERE ,DINER-CAR ,FANCY-CAR>
<MOVE .OBJ .L>)
(<SET X <GETP .L ,P?OTHER>>
<MOVE .OBJ .X>)>
<PUTP .OBJ ,P?CAR .N>)>
<COND (<AND .NEW? .PEOPLE?>
<COND (<SET X <ZMEMQ .OBJ ,EXTRA-TABLE>>
<PUT ,EXTRA-SEEN-TABLE
.X
<- 0 <GET ,EXTRA-SEEN-TABLE .X>>>)>
<COND (<NOT <EQUAL? .OBJ ,BAD-SPY>>
<FCLEAR .OBJ ,SEENBIT>
<FCLEAR .OBJ ,TOUCHBIT>
<PUTP .OBJ ,P?LDESC 0>)>)>
<COND (<DLESS? P 1> <RETURN>)>>>
<ROUTINE TAKE-YOUR-PLACE-TEST (OBJ STA-ONLY? "AUX" X)
<COND (<EQUAL? .OBJ ,CONTACT> <RFALSE>)
(<IN-MOTION? .OBJ T> <RFALSE>)>
<SET X <ZMEMQ <META-LOC .OBJ> ,STATION-ROOMS>>
<COND (.STA-ONLY? .X)
(<NOT .X> <RTRUE>)>>
<ROUTINE OCCUPIED? (L N)
<COND (<AND <==? .L ,GAS-CAR-RM>
<==? .N ,GAS-CAR>>
<RTRUE>)
(<NOT <EQUAL? .N ,CAR-HERE ,DINER-CAR ,FANCY-CAR>>
<SET L <GETP .L ,P?OTHER>>)>
<FIND-FLAG-CAR .L .N ,PERSONBIT>>
<ROUTINE MOVE-CONTACT ("AUX" N)
<SET N <+ 1 <RANDOM <- ,PLATFORM-MAX 1>>>>
<PUTP ,CONTACT ,P?CAR .N>
<MOVE ,CONTACT <GET ,STATION-ROOMS .N>>
<FSET ,CONTACT ,NDESCBIT>
<FCLEAR ,CONTACT ,TOUCHBIT>
<PUTP ,CONTACT ,P?LDESC 10 ;"looking platform">>
<CONSTANT H-NORMAL 0>
<CONSTANT H-INVERSE 1>
<CONSTANT D-NORMAL 0>
<CONSTANT D-TABLE 1>
<ROUTINE INIT-STATUS-LINE ("OPTIONAL" (FIRST <>))
<COND (<ZERO? <GETB 0 18>> ;"not ZIP"
<RTRUE>)>
<COND (.FIRST
<CLEAR -1>
<SPLIT 2>)>
<SCREEN 1>
<BUFOUT <>>
<INVERSE-LINE 1>
<HLIGHT ,H-INVERSE>
<COND (.FIRST
<CURSET 1 </ <- <GETB 0 33> 10> 2>>
<TELL D ,GAME>)
(T
<CURSET 1 1>
<TELL "You are ">
<CURSET 1 63>
<TELL "It is now ">)>
<SETG PLAYER-NOT-FACING-OLD 99> ;"to ensure USL"
<BUFOUT T>
<HLIGHT ,H-NORMAL>
<SCREEN 0>>
<ROUTINE INVERSE-LINE (LIN "AUX" (CNT 79))
<CURSET .LIN 1>
<HLIGHT ,H-INVERSE>
<PRINT-SPACES .CNT>
<HLIGHT ,H-NORMAL>>
<ROUTINE PRINT-SPACES (CNT)
<REPEAT ()
<COND (<DLESS? CNT 0> <RETURN>) (T <PRINTC 32>)>>>
<GLOBAL SL-BUFFER <ITABLE NONE 80>>
<ROUTINE STATUS-LINE ("AUX" LEN (X <>))
<COND (<ZERO? <GETB 0 18>> ;"not ZIP"
<RTRUE>)>
<COND (<OR <NOT <==? ,LAST-PLAYER-LOC ,HERE>>
<NOT <==? ,PLAYER-NOT-FACING-OLD ,PLAYER-NOT-FACING>>
<NOT <==? ,PLAYER-SEATED-OLD ,PLAYER-SEATED>>>
<SET X T>)>
<COND (<AND <ZERO? .X>
<OR ;<NOT ,P-WON> ,CLOCK-WAIT>>
<RTRUE>)>
<BUFOUT <>>
<SCREEN 1>
<HLIGHT ,H-INVERSE>
<COND (.X
<SETG LAST-PLAYER-LOC ,HERE>
<SETG PLAYER-NOT-FACING-OLD ,PLAYER-NOT-FACING>
<SETG PLAYER-SEATED-OLD ,PLAYER-SEATED>
<DIROUT -1>
<DIROUT 3 ;,D-TABLE ,SL-BUFFER>
<TELL-LOCATION>
<DIROUT -3>
<DIROUT 1 ;,D-NORMAL>
<SET LEN <GET ,SL-BUFFER 0>>
<CURSET 1 9>
<TELL-LOCATION>
<PRINT-SPACES <- %<- 64 10> .LEN>>)>
<CURSET 1 73>
<TIME-PRINT ,PRESENT-TIME>
<PRINTI ". ">
<SCREEN 0>
;<CURSET <- <GETB 0 32> 1> 1> ;<CURSET 23 1>
<BUFOUT T>
<HLIGHT ,H-NORMAL>>
<ROUTINE TELL-LOCATION ("AUX" DIR)
<COND (<EQUAL? ,HERE ,UNCONSCIOUS>
<TELL "unconscious.">
<RTRUE>)>
<COND (<ZERO? ,PLAYER-SEATED> T)
(<L? 0 ,PLAYER-SEATED> <TELL "sitting ">)
(T <TELL "lying ">)>
<COND (<FSET? ,HERE ,SURFACEBIT>
<TELL "on">)
(<NOT <EQUAL? ,HERE ,BESIDE-TRACKS>>
<TELL "in">)>
<TELL THE ,HERE>
<COND (<NOT <ZERO? ,PLAYER-NOT-FACING>>
<TELL ", facing ">
<SET DIR <OPP-DIR ,PLAYER-NOT-FACING>>
<COND (<AND <==? .DIR ,P?EAST> ,ON-TRAIN>
<TELL "the right side" ;" of the train">)
(<AND <==? .DIR ,P?WEST> ,ON-TRAIN>
<TELL "the left side" ;" of the train">)
(T <DIR-PRINT .DIR>)>)
;(<NOT <ZERO? ,PLAYER-SEATED>>
<TELL ", ">
<COND (<L? 0 ,PLAYER-SEATED>
<TELL "sitting on" THE ,PLAYER-SEATED>)
(T <TELL "lying on" THE <- 0 ,PLAYER-SEATED>>)>)>
<TELL ".">>

248
p.cmp Normal file
View File

@ -0,0 +1,248 @@
**** FILE PS:<S5>PARSER.ZIL.30, 1-1 (0)
**** FILE PS:<SWG>PARSER.ZIL.85, 1-1 (0)
<GLOBAL P-DIR 0>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 1-89 (1651)
**** FILE PS:<SWG>PARSER.ZIL.85, 2-56 (1976)
<GLOBAL P-WON <>>
<ROUTINE VERB-ALL-TEST (OBJ1 OBJ) ;"OBJ1=PRSO OBJ=PRSI"
<COND (<VERB? DROP GIVE>
<COND (<EQUAL? .OBJ1 ,POCKET>
<RFALSE>)
(<OR <IN? .OBJ1 ,WINNER> ;<IN? ,P-IT-OBJECT ,WINNER>>
<RTRUE>)
;(T <RFALSE>)>)
(<VERB? PUT PUT-IN>
<COND (<EQUAL? .OBJ1 ,POCKET>
<RFALSE>)
(<NOT <HELD? .OBJ1 .OBJ>>
<RTRUE>)
;(T <RFALSE>)>)
(<VERB? TAKE>
<COND (<AND <NOT <FSET? .OBJ1 ,TAKEBIT>>
<NOT <FSET? .OBJ1 ,TRYTAKEBIT>>>
<RFALSE>)
(<NOT <ZERO? .OBJ>>
<COND (<IN? .OBJ1 .OBJ>
<RTRUE>)
;(T <RFALSE>)>)
(<EQUAL? <LOC .OBJ1> ,WINNER ,HERE>
<RTRUE>)
(<FSET? <LOC .OBJ1> ,SURFACEBIT>
<RTRUE>)
;(T <RFALSE>)>)
(<NOT <ZERO? .OBJ>>
<COND (<NOT <==? .OBJ1 .OBJ>>
<RTRUE>)
;(T <RFALSE>)>)
(T <RTRUE>)>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 2-7 (2236)
**** FILE PS:<SWG>PARSER.ZIL.85, 4-122 (20094)
<SETG P-NUMBER -1>
<SETG P-NAM <>>
<SETG P-ADJ <>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 2-154 (6879)
<COND (,P-OFLAG
<ORPHAN-MERGE>)>
<SETG P-WALK-DIR <>>>
**** FILE PS:<SWG>PARSER.ZIL.85, 4-317 (26593)
<SETG P-WALK-DIR <>>
<COND (<AND ,P-OFLAG
<ORPHAN-MERGE>>
<SETG WINNER .OWINNER>)>
<COND (<==? <GET ,P-ITBL ,P-VERB> 0>
<PUT ,P-ITBL ,P-VERB ,ACT?$CALL>)>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 2-220 (9379)
;"This next clause was 2 clauses further down"
;"This attempts to fix EDDIE, TURN ON COMPUTER"
(<AND .ANDFLG
<EQUAL? <GET ,P-ITBL ,P-VERB> 0>>
**** FILE PS:<SWG>PARSER.ZIL.85, 5-63 (29606)
;"3/16/83: This clause used to be later."
(<AND .ANDFLG
<OR ;"3/25/83: next statement added."
<EQUAL? <GET ,P-ITBL ,P-VERBN> 0>
;"10/26/84: next stmt changed"
<VERB-DIR-ONLY? .WRD>>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 2-245 (10269)
;(<AND <OR ,P-MERGED
**** FILE PS:<SWG>PARSER.ZIL.85, 5-90 (30506)
(<AND <OR ,P-MERGED
***************
**** FILE PS:<S5>PARSER.ZIL.30, 2-252 (10536)
(<OR <WT? .WRD ,PS?ADJECTIVE>
<WT? .WRD ,PS?BUZZ-WORD>>)
**** FILE PS:<SWG>PARSER.ZIL.85, 5-95 (30685)
(<AND .ANDFLG
<EQUAL? <GET ,P-ITBL ,P-VERB> 0>>
<SET PTR <- .PTR 4>>
<PUT ,P-LEXV <+ .PTR 2> ,W?THEN>
<SETG P-LEN <+ ,P-LEN 2>>)
***************
**** FILE PS:<S5>PARSER.ZIL.30, 2-270 (11096)
**** FILE PS:<SWG>PARSER.ZIL.85, 5-123 (31557)
<GLOBAL P-DIRECTION 0>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 3-18 (12217)
**** FILE PS:<SWG>PARSER.ZIL.85, 6-23 (33526)
(<AND ,P-CONT
<==? .VERB ,ACT?TELL>>
<RFALSE>)
***************
**** FILE PS:<S5>PARSER.ZIL.30, 3-23 (12370)
<PUT ,P-OTBL ,P-NC1 <REST ,P-LEXV 2>>
<COND (<0? <GET ,P-ITBL ,P-NC1L>>
<PUT ,P-ITBL ,P-NC1L <REST ,P-LEXV 6>>)>
<COND (<0? ,P-NCN> <SETG P-NCN 1>)>)
(T
<PUT ,P-OTBL ,P-NC1 <GET ,P-ITBL ,P-NC1>>)>
**** FILE PS:<SWG>PARSER.ZIL.85, 6-31 (33742)
<PUT ,P-OTBL ,P-NC1 <REST ,P-LEXV 2>>)
(T
<PUT ,P-OTBL ,P-NC1 <GET ,P-ITBL ,P-NC1>>)>
<COND (<0? <GET ,P-ITBL ,P-NC1L>>
<PUT ,P-ITBL ,P-NC1L <REST ,P-LEXV 6>>)>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 3-37 (12873)
<PUT ,P-ITBL ,P-NC1 <REST ,P-LEXV 2>>
<COND (<0? <GET ,P-ITBL ,P-NC1L>>
<PUT ,P-ITBL ,P-NC1L <REST ,P-LEXV 6>>)>)>
<PUT ,P-OTBL ,P-NC2 <GET ,P-ITBL ,P-NC1>>
**** FILE PS:<SWG>PARSER.ZIL.85, 6-43 (34155)
<PUT ,P-ITBL ,P-NC1 <REST ,P-LEXV 2>>)>
<PUT ,P-OTBL ,P-NC2 <GET ,P-ITBL ,P-NC1>>
<COND (<0? <GET ,P-ITBL ,P-NC1L>>
<PUT ,P-ITBL ,P-NC1L <REST ,P-LEXV 6>>)>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 3-82 (14311)
;<AND <NOT <==? <GET ,P-OTBL ,P-NC2> 0>> <SETG P-NCN 2>>
**** FILE PS:<SWG>PARSER.ZIL.85, 6-88 (35577)
<COND (<NOT <==? <GET ,P-OTBL ,P-NC2> 0>> <SETG P-NCN 2>)
(T <SETG P-NCN 1>)>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 5-47 (17784)
(<NOT <==? ,WINNER ,PROTAGONIST>>
<CANT-ORPHAN>)
(T
<ORPHAN .DRIVE1 .DRIVE2>
<TELL "What do you want to ">
<SET TMP <GET ,P-OTBL ,P-VERBN>>
<COND (<EQUAL? .TMP 0>
<TELL "tell">)
**** FILE PS:<SWG>PARSER.ZIL.85, 8-50 (40244)
(T
<COND (<EQUAL? ,WINNER ,PLAYER>
<ORPHAN .DRIVE1 .DRIVE2>
<TELL "(Wh"
<COND (<EQUAL? .VERB ,ACT?WALK ,ACT?FACE> "ere")
(T "at")>
" do you want to ">)
(T
<TELL
"(Your command was not complete. Next time, type wh"
<COND (<EQUAL? .VERB ,ACT?WALK ,ACT?FACE> "ere") (T "at")>
" you want" THE ,WINNER " to ">)>
<VERB-PRINT>
<COND (.DRIVE2
<CLAUSE-PRINT ,P-NC1 ,P-NC1L>)>
<PREP-PRINT <COND (.DRIVE1 <GETB .DRIVE1 ,P-SPREP1>)
(T <GETB .DRIVE2 ,P-SPREP2>)>>
<COND (<EQUAL? ,WINNER ,PLAYER>
<SETG P-OFLAG T>
<TELL "?)" CR>)
(T
<SETG P-OFLAG <>>
<TELL ".)" CR>)>
<RFALSE>)>>
<ROUTINE DONT-UNDERSTAND ()
<TELL
"(Sorry, but I don't understand. Please reword that or try something else.)"
CR>>
<ROUTINE VERB-PRINT ("AUX" TMP)
<SET TMP <GET ,P-ITBL ,P-VERBN>> ;"? ,P-OTBL?"
<COND (<==? .TMP 0> <TELL "tell">)
***************
**** FILE PS:<S5>PARSER.ZIL.30, 5-62 (18271)
<PUTB ,P-VTBL 2 0>)>
<COND (.DRIVE2
<CLAUSE-PRINT ,P-NC1 ,P-NC1L>)>
<SETG P-OFLAG T>
<PREP-PRINT <COND (.DRIVE1 <GETB .DRIVE1 ,P-SPREP1>)
(T <GETB .DRIVE2 ,P-SPREP2>)>>
<TELL "?" CR>
<RFALSE>)>>
**** FILE PS:<SWG>PARSER.ZIL.85, 8-90 (41487)
<PUTB ,P-VTBL 2 0>)>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 8-19 (23978)
**** FILE PS:<SWG>PARSER.ZIL.85, 11-20 (48448)
<GLOBAL P-ADJN <>>
<GLOBAL P-XADJN <>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 9-3 (24357)
<ROUTINE SNARFEM (...)
**** FILE PS:<SWG>PARSER.ZIL.85, 12-2 (48905)
<ROUTINE SNARFEM (... WV)
***************
**** FILE PS:<S5>PARSER.ZIL.30, 9-46 (25706)
(<AND <WT? .WRD ,PS?ADJECTIVE>
<NOT ,P-ADJ>>
<SETG P-ADJ .WRD>)>)>>>
**** FILE PS:<SWG>PARSER.ZIL.85, 12-54 (50492)
(<AND <SET WV <WT? .WRD ,PS?ADJECTIVE ,P1?ADJECTIVE>>
<NOT ,P-ADJ>>
<SETG P-ADJ .WV>
<SETG P-ADJN .WRD>)>)>>>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 9-79 (26371)
<ROUTINE GET-OBJECT (TBL "OPTIONAL" (VRB T)
"AUX" GEN BITS LEN XBITS TLEN (GCHECK <>) (OLEN 0) OBJ)
...
<COND (<AND <NOT ,P-NAM> ,P-ADJ <WT? ,P-ADJ ,PS?OBJECT>>
<SETG P-NAM ,P-ADJ>
<SETG P-ADJ <>>)>
**** FILE PS:<SWG>PARSER.ZIL.85, 13-2 (50989)
<ROUTINE GET-OBJECT (TBL
"OPTIONAL" (VRB T)
"AUX" BTS LEN XBITS TLEN (GCHECK <>) (OLEN 0) OBJ ADJ)
...
<SET ADJ ,P-ADJN>
<COND (<AND <NOT ,P-NAM> ,P-ADJ>
<COND (<WT? ,P-ADJN ,PS?OBJECT>
<SETG P-NAM ,P-ADJN>
<SETG P-ADJ <>>)
(<SET BTS <WT? ,P-ADJN ,PS?DIRECTION ,P1?DIRECTION>>
<SETG P-ADJ <>>
<PUT .TBL ,P-MATCHLEN 1>
<PUT .TBL 1 ,INTDIR>
<SETG P-DIRECTION .BTS>
<RTRUE>)>)>
***************
**** FILE PS:<S5>PARSER.ZIL.30, 9-170 (29350)
**** FILE PS:<SWG>PARSER.ZIL.85, 13-96 (53976)
<SETG P-XADJN ,P-ADJN>
<SETG P-ADJN <>>
***************

910
parser.cmp Normal file
View File

@ -0,0 +1,910 @@
;COMPARISON OF PS:<CHECKPOINT>PARSER.ZIL.151 AND PS:<CHECKPOINT>PARSER.ZIL.170
;OPTIONS ARE /3
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 1-8 (222)
<SETG SIBREAKS ".,\"!?">
"<GLOBAL GWIM-DISABLE <>>"
<GLOBAL PRSA 0>
<GLOBAL PRSI 0>
<GLOBAL PRSO 0>
"<GLOBAL P-TABLE 0>
<GLOBAL P-ONEOBJ 0>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-8 (222)
<SETG SIBREAKS ".,\"!?">
<GLOBAL PRSA 0>
<GLOBAL PRSI 0>
<GLOBAL PRSO 0>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 1-34 (564)
"INBUF - Input buffer for READ"
<GLOBAL P-INBUF <ITABLE BYTE 100>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-26 (483)
<GLOBAL AGAIN-LEXV <ITABLE BYTE 120>>
<GLOBAL RESERVE-LEXV <ITABLE BYTE 120>>
<GLOBAL RESERVE-PTR <>>
"INBUF - Input buffer for READ"
<GLOBAL P-INBUF <ITABLE BYTE 60>>
<GLOBAL OOPS-INBUF <ITABLE BYTE 60>>
<GLOBAL OOPS-TABLE <TABLE <> <> <> <>>>
<CONSTANT O-PTR 0>
<CONSTANT O-START 1>
<CONSTANT O-LENGTH 2>
<CONSTANT O-END 3>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 1-56 (926)
"Parser variables and temporaries"
"<CONSTANT P-PHRLEN 3>
<CONSTANT P-ORPHLEN 7>
<CONSTANT P-RTLEN 3>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-58 (1115)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-14 (1292)
<CONSTANT P-PSOFF 6 ;4>
"Offset to first part of speech"
<CONSTANT P-P1OFF 7 ;5>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-70 (1371)
<CONSTANT P-PSOFF %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE> 6) (T 4)>>
"Offset to first part of speech"
<CONSTANT P-P1OFF %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE> 7) (T 5)>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-58 (1980)
"<GLOBAL P-WHAT-IGNORED <>>
<GLOBAL P-WON <>>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-114 (2165)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-77 (2349)
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
<GLOBAL L-WINNER <>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP X)
;#DECL((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ)<OR FALSE OBJECT>
(OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
<REPEAT ()
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-130 (2483)
<ROUTINE MAIN-LOOP ("AUX" X) <REPEAT () <SET X <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP X)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-98 (3028)
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
<PUT ,P-PRSI .CNT ,P-IT-OBJECT>
<TELL ,I-ASSUME THE ,P-IT-OBJECT ".)" CR>
<SET TMP T>
<RETURN>)>)>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-145 (2998)
<COND (<IGRTR? CNT .ICNT>
<RETURN>)>
<COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
<PUT ,P-PRSI .CNT ,P-IT-OBJECT>
<TELL ,I-ASSUME THE ,P-IT-OBJECT ".)" CR>
<SET TMP T>
<RETURN>)>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-109 (3333)
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
<PUT ,P-PRSO .CNT ,P-IT-OBJECT>
<TELL ,I-ASSUME THE ,P-IT-OBJECT ".)" CR>
<RETURN>)>)>>)>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-155 (3280)
<COND (<IGRTR? CNT .OCNT>
<RETURN>)>
<COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
<PUT ,P-PRSO .CNT ,P-IT-OBJECT>
<TELL ,I-ASSUME THE ,P-IT-OBJECT ".)" CR>
<RETURN>)>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-163 (4830)
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-208 (4754)
<COND (<IGRTR? CNT .NUM>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-207 (6192)
<COND (<GAME-VERB?> T)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-252 (6103)
;<COND (<GAME-VERB?> T)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-219 (6493)
<COND (<AND <NOT <VERB? SAVE RESTORE>>
<GAME-VERB?>> T)
(<AND <VERB? AGAIN>
<NOT <EQUAL? ,L-PRSA ,V?SAVE ,V?RESTORE>>
<GAME-VERB? ,L-PRSA>>
T)
(T
<SET V <CLOCKER>>)>)>>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-264 (6405)
<COND (<OR <VERB? SAVE RESTORE>
<NOT <GAME-VERB?>>>
<SET V <CLOCKER>>)>)>
<SETG PRSA <>>
<SETG PRSO <>>
<SETG PRSI <>>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-268 (7797)
(<EQUAL? .V ,V?$AGAIN ,V?$QUEUE ,V?$STATION> <RTRUE>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-311 (7659)
(<EQUAL? .V ;,V?$AGAIN ,V?$QUEUE ,V?$STATION> <RTRUE>)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-293 (8828)
<SETG L-WINNER ,WINNER>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-336 (8691)
;<SETG L-WINNER ,WINNER>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 2-311 (9347)
<RTRUE>)>
<COND (<AND <VERB? WALK FACE> <==? .OBJ ,PRSO>>
<RTRUE>)>
<COND (<NOT <FSET? .OBJ ,PERSONBIT>>
<COND (<NOT <EQUAL? .OBJ ,GLOBAL-HERE ,INTDIR>>
<FSET ,IT ,TOUCHBIT> ;"to cause pronoun 'it' in output"
<SETG P-IT-OBJECT .OBJ>)>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 1-354 (9211)
<RTRUE>)
(<EQUAL? .OBJ ,INTDIR ,GLOBAL-HERE>
<RTRUE>)
(<AND <VERB? WALK WALK-TO FACE> <==? .OBJ ,PRSO>>
<RTRUE>)>
<COND (<NOT <FSET? .OBJ ,PERSONBIT>>
<FSET ,IT ,TOUCHBIT> ;"to cause pronoun 'it' in output"
<SETG P-IT-OBJECT .OBJ>)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-17 (10550)
<GLOBAL NOW-PRSI <>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-17 (10410)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-48 (11630)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-46 (11466)
<GLOBAL NOW-PRSI <>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-65 (12130)
<COND (<NOT <EQUAL? .A ,V?WALK ,V?FACE>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-65 (11990)
<COND ;(<AND <NOT ,LIT>
<SEE-VERB?>>
<TOO-DARK>
<RFATAL>)
(<NOT <EQUAL? .A ,V?WALK ,V?FACE>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-121 (14238)
(<AND <SET O ,PRSO>
<SET V <THIS-IS-IT ,PRSO>>
<SET I ,PRSI>
<SET V <THIS-IS-IT ,PRSI>>
<SET V <THIS-IS-IT ,PRSO>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-125 (14183)
(<AND <SET V <THIS-IS-IT ,PRSI>>
<SET V <THIS-IS-IT ,PRSO>>
<SET O ,PRSO>
<SET I ,PRSI>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-143 (14925)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-146 (14836)
(<AND .I ;"This new clause applies CONTFCN to PRSI, BM 2/85"
<SETG NOW-PRSI T>
<NOT <EQUAL? .A ,V?WALK>>
<LOC .I>
<SET V <GETP <LOC .I> ,P?CONTFCN>>
<SET V <APPLY .V ,M-CONT>>>
.V)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-152 (15181)
<SET V <APPLY .V ,M-CONT>>
;<SET V <DD-APPLY "Container" <LOC .O>
<GETP <LOC .O> ,P?CONTFCN>>>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-162 (15325)
<SET V <APPLY .V ,M-CONT>>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 3-174 (15802)
;"<ROUTINE DD-APPLY (STR OBJ FCN)
<COND (,DEBUG
<PRINTC %<ASCII !\[>>
<TELL D .OBJ '=]'>)>
<D-APPLY .STR .FCN>>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 2-182 (15862)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-16 (17116)
<RFALSE>
;<COND (<NOT <ZERO? ,P-PROMPT>>
<ENABLE <QUEUE I-PROMPT 9>>
<RFALSE>)
(T
<TELL "|
(You won't see \"What next?\" any more.)" CR>
<COND (<VERB? ;WAIT WAIT-FOR WAIT-UNTIL> <CRLF>)>
<DISABLE <INT I-PROMPT>>
<RFALSE>)>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-16 (17038)
<RFALSE>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-67 (18978)
<COND (<G? ,QUESTION-WORD-COUNT 9>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-58 (18663)
<COND (<G? ,QUESTION-WORD-COUNT 4 ;9>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-76 (19282)
Now you can try again.)" CR>)
(T <TELL ", not statements or questions.)" CR>)>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-67 (18970)
Now you can try again">)
(T <TELL ", not statements or questions">)>
<TELL ".)" CR>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-101 (20351)
PISS SCREW SHIT CRAP SUCK>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-93 (20053)
PISS SCREW SHIT CRAP SUCK
FUCKED GODDAMN ASSHOLE CUNT SHITHEAD SUCKS DAMNED PEE COCKSUCKER BITCH>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-108 (20605)
<EQUAL? .WORD ,W?BASTARD ,W?SCREW ,W?CRAP>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-101 (20380)
<EQUAL? .WORD ,W?BASTARD ,W?SCREW ,W?CRAP>
<EQUAL? .WORD ,W?FUCKED ,W?GODDAMN ,W?ASSHOLE>
<EQUAL? .WORD ,W?CUNT ,W?SHITHEAD ,W?SUCKS>
<EQUAL? .WORD ,W?DAMNED ,W?PEE ,W?COCKSUCKER>
<EQUAL? .WORD ,W?BITCH>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-116 (20781)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-113 (20741)
"What charming language!"
"Computers aren't impressed by naughty words!"
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-121 (20933)
<ROUTINE PARSER ("AUX" (PTR ,P-LEXSTART) WRD (VAL 0) (VERB <>) (OF-FLAG <>)
LEN (DIR <>) (NW 0) (LW 0) NUM SCNT (CNT -1) OWINNER)
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> ,P-ITBLLEN> <RETURN>)
(T <PUT ,P-ITBL .CNT 0>)>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-120 (20972)
<BUZZ AGAIN G OOPS>
<ROUTINE PARSER ("AUX" (PTR ,P-LEXSTART) WRD (VAL 0) (VERB <>) (OF-FLAG <>)
LEN (DIR <>) (NW 0) (LW 0) (CNT -1) OMERGED OWINNER
OLEN)
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> ,P-ITBLLEN> <RETURN>)
(T
<COND (<NOT ,P-OFLAG>
<PUT ,P-OTBL .CNT <GET ,P-ITBL .CNT>>)>
<PUT ,P-ITBL .CNT 0>)>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-130 (21259)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-135 (21427)
<SET OMERGED ,P-MERGED>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-138 (21504)
<SETG L-WINNER ,WINNER>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-144 (21698)
;<SETG L-WINNER ,WINNER>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-144 (21734)
<COND (<NOT <ZERO? ,P-CONT>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-150 (21929)
<COND (,RESERVE-PTR
<SET PTR ,RESERVE-PTR>
<STUFF ,P-LEXV ,RESERVE-LEXV>
<COND (<AND <EQUAL? ,VERBOSE 1 2>
<==? ,PLAYER ,WINNER>>
<CRLF>)>
<SETG RESERVE-PTR <>>
<SETG P-CONT <>>)
(<NOT <ZERO? ,P-CONT>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-153 (21999)
<SETG L-WINNER ,WINNER>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-167 (22436)
;<SETG L-WINNER ,WINNER>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-171 (22689)
;<==? <SETG P-PROMPT <- ,P-PROMPT 1>> 0>
<TELL "(You won't see \"What next?\" any more.)|
">
;<COND (<VERB? ;WAIT WAIT-FOR WAIT-UNTIL>
<CRLF>)>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-185 (23127)
<TELL
"(You won't see \"What next?\" any more.)|
">)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-179 (22951)
<STATUS-LINE>
<TELL ">">
<READ ,P-INBUF ,P-LEXV>)>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-191 (23271)
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<PROG ()
<STATUS-LINE>
<TELL ">">>)
(T
'<TELL ">">)>
<READ ,P-INBUF ,P-LEXV>
<SET OLEN <GETB ,P-LEXV ,P-LEXWORDS>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-196 (23742)
<COND (<0? ,P-LEN> <TELL "I beg your pardon?" CR> <RFALSE>)>
<SET LEN ,P-LEN>
<SETG P-DIR <>>
<SETG P-NCN 0>
<SETG P-GETFLAGS 0>
;"3/25/83: Next statement added."
<PUT ,P-ITBL ,P-VERBN 0>
<REPEAT ()
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-213 (24226)
<COND (<0? ,P-LEN> <TELL "I beg your pardon?" CR> <RFALSE>)
(<EQUAL? <GET ,P-LEXV .PTR> ,W?OOPS>
<COND (<NOT <G? ,P-LEN 1>>
<TELL "I can't help your clumsiness." CR>
<RFALSE>)
(<GET ,OOPS-TABLE ,O-PTR>
<PUT ,AGAIN-LEXV <GET ,OOPS-TABLE ,O-PTR>
<GET ,P-LEXV <+ .PTR ,P-LEXELEN>>>
<INBUF-ADD <GETB ,P-LEXV <+ <* .PTR ,P-LEXELEN> 6>>
<GETB ,P-LEXV <+ <* .PTR ,P-LEXELEN> 7>>
<+ <* <GET ,OOPS-TABLE ,O-PTR> ,P-LEXELEN> 3>>
<STUFF ,P-LEXV ,AGAIN-LEXV>
<SETG P-LEN <GETB ,P-LEXV ,P-LEXWORDS>>;"Will this help?"
<SET PTR <GET ,OOPS-TABLE ,O-START>>
<INBUF-STUFF ,P-INBUF ,OOPS-INBUF>)
(T
<PUT ,OOPS-TABLE ,O-END <>>
<TELL "There was no word to replace!" CR>
<RFALSE>)>)
(T <PUT ,OOPS-TABLE ,O-END <>>)>
<COND (<EQUAL? <GET ,P-LEXV .PTR> ,W?AGAIN ,W?G>
<COND (,P-OFLAG
<TELL "It's difficult to repeat fragments." CR>
<RFALSE>)
(<G? ,P-LEN 1>
<COND (<OR <EQUAL? <GET ,P-LEXV <+ .PTR ,P-LEXELEN>>
,W?PERIOD ,W?COMMA ,W?THEN>
<EQUAL? <GET ,P-LEXV <+ .PTR ,P-LEXELEN>>
,W?AND>>
<SET PTR <+ .PTR <* 2 ,P-LEXELEN>>>
<PUTB ,P-LEXV ,P-LEXWORDS
<- <GETB ,P-LEXV ,P-LEXWORDS> 2>>)
(T
<TELL "I couldn't understand that sentence." CR>
<RFALSE>)>)
(T
<SET PTR <+ .PTR ,P-LEXELEN>>
<PUTB ,P-LEXV ,P-LEXWORDS
<- <GETB ,P-LEXV ,P-LEXWORDS> 1>>)>
<COND (<G? <GETB ,P-LEXV ,P-LEXWORDS> 0>
<STUFF ,RESERVE-LEXV ,P-LEXV>
<SETG RESERVE-PTR .PTR>)
(T
<SETG RESERVE-PTR <>>)>
;<SETG P-LEN <GETB ,AGAIN-LEXV ,P-LEXWORDS>>
<SETG WINNER .OWINNER>
<SETG P-MERGED .OMERGED>
<INBUF-STUFF ,P-INBUF ,OOPS-INBUF>
<STUFF ,P-LEXV ,AGAIN-LEXV>
<SET CNT -1>
<SET DIR ,P-WALK-DIR>
<REPEAT ()
<COND (<IGRTR? CNT ,P-ITBLLEN> <RETURN>)
(T <PUT ,P-ITBL .CNT <GET ,P-OTBL .CNT>>)>>)
(T
<STUFF ,AGAIN-LEXV ,P-LEXV>
<INBUF-STUFF ,OOPS-INBUF ,P-INBUF>
<PUT ,OOPS-TABLE ,O-START .PTR>
<PUT ,OOPS-TABLE ,O-LENGTH <* 4 .OLEN>>
<SETG RESERVE-PTR <>>
<SET LEN ,P-LEN>
<SETG P-DIR <>>
<SETG P-NCN 0>
<SETG P-GETFLAGS 0>
;"3/25/83: Next statement added."
<PUT ,P-ITBL ,P-VERBN 0>
<REPEAT ()
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-226 (24687)
(<OR <EQUAL? .WRD ,W?THEN ,W?PERIOD>
<EQUAL? .WRD ,W?QUOTE>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-302 (27443)
(<EQUAL? .WRD ,W?THEN ,W?PERIOD ,W?QUOTE>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-276 (26283)
<SET NUM
<+ <* .PTR 2> 2>>>>
<PUTB ,P-VTBL 3 <GETB ,P-LEXV <+ .NUM 1>>>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-351 (29013)
<SET ?TMP1
<+ <* .PTR 2> 2>>>>
<PUTB ,P-VTBL 3 <GETB ,P-LEXV <+ .?TMP1 1>>>)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 4-343 (28348)
<SET PTR <+ .PTR ,P-LEXELEN>>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 3-418 (31082)
<SET PTR <+ .PTR ,P-LEXELEN>>>)>
<PUT ,OOPS-TABLE ,O-PTR <>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 5-2 (28917)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 4-2 (31685)
"For AGAIN purposes, put contents of one LEXV table into another:"
<ROUTINE STUFF (DEST SRC "OPTIONAL" (MAX 29) "AUX" (PTR ,P-LEXSTART) (CTR 1)
BPTR)
<PUTB .DEST 0 <GETB .SRC 0>>
<PUTB .DEST 1 <GETB .SRC 1>>
<REPEAT ()
<PUT .DEST .PTR <GET .SRC .PTR>>
<SET BPTR <+ <* .PTR 2> 2>>
<PUTB .DEST .BPTR <GETB .SRC .BPTR>>
<SET BPTR <+ <* .PTR 2> 3>>
<PUTB .DEST .BPTR <GETB .SRC .BPTR>>
<SET PTR <+ .PTR ,P-LEXELEN>>
<COND (<IGRTR? CTR .MAX>
<RETURN>)>>>
"Put contents of one INBUF into another:"
<ROUTINE INBUF-STUFF (DEST SRC "AUX" (CNT -1))
<REPEAT ()
<COND (<IGRTR? CNT 59> <RETURN>)
(T <PUTB .DEST .CNT <GETB .SRC .CNT>>)>>>
"Put the word in the positions specified from P-INBUF to the end of
OOPS-INBUF, leaving the appropriate pointers in AGAIN-LEXV:"
<ROUTINE INBUF-ADD (LEN BEG SLOT "AUX" DBEG (CTR 0) TMP)
<COND (<SET TMP <GET ,OOPS-TABLE ,O-END>>
<SET DBEG .TMP>)
(T
<SET DBEG <+ <GETB ,AGAIN-LEXV
<SET TMP <GET ,OOPS-TABLE ,O-LENGTH>>>
<GETB ,AGAIN-LEXV <+ .TMP 1>>>>)>
<PUT ,OOPS-TABLE ,O-END <+ .DBEG .LEN>>
<REPEAT ()
<PUTB ,OOPS-INBUF <+ .DBEG .CTR> <GETB ,P-INBUF <+ .BEG .CTR>>>
<SET CTR <+ .CTR 1>>
<COND (<EQUAL? .CTR .LEN> <RETURN>)>>
<PUTB ,AGAIN-LEXV .SLOT .DBEG>
<PUTB ,AGAIN-LEXV <- .SLOT 1> .LEN>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 5-18 (29639)
;#DECL ((PTR VAL OFF NUM) FIX (WRD NW) <OR FALSE FIX TABLE>
(ANDFLG FIRST??) <OR ATOM FALSE>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 4-59 (33766)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 6-24 (36837)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 5-24 (40859)
<COND (<ZERO? <GET ,P-ITBL ,P-NC1L>> ;"? DELETE?"
<PUT ,P-ITBL ,P-NC1L <REST ,P-LEXV 6>>)>
<COND (<ZERO? ,P-NCN> ;"? DELETE?"
<SETG P-NCN 1>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 6-36 (37254)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 5-40 (41449)
<COND (<ZERO? <GET ,P-ITBL ,P-NC1L>> ;"? DELETE?"
<PUT ,P-ITBL ,P-NC1L <REST ,P-LEXV 6>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 6-87 (38823)
"New ACLAUSE-WIN for TRAP retrofix 6/21/84"
<ROUTINE ACLAUSE-WIN (ADJ)
<PUT ,P-ITBL ,P-VERB <GET ,P-OTBL ,P-VERB>>
<CLAUSE-COPY ,P-OTBL ,P-OTBL ,P-ACLAUSE <+ ,P-ACLAUSE 1>
,P-ACLAUSE <+ ,P-ACLAUSE 1> .ADJ>
;"<PUT ,P-CCTBL ,CC-SBPTR ,P-ACLAUSE>
<PUT ,P-CCTBL ,CC-SEPTR <+ ,P-ACLAUSE 1>>
<PUT ,P-CCTBL ,CC-DBPTR ,P-ACLAUSE>
<PUT ,P-CCTBL ,CC-DEPTR <+ ,P-ACLAUSE 1>>
<CLAUSE-COPY ,P-OTBL ,P-OTBL .ADJ>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 5-93 (43124)
<ROUTINE ACLAUSE-WIN (ADJ "AUX" X)
<PUT ,P-ITBL ,P-VERB <GET ,P-OTBL ,P-VERB>>
<SET X <+ ,P-ACLAUSE 1>>
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<CLAUSE-COPY ,P-OTBL ,P-OTBL ,P-ACLAUSE .X ,P-ACLAUSE .X .ADJ>)
(T
'<PROG ()
<PUT ,P-CCTBL ,CC-SBPTR ,P-ACLAUSE>
<PUT ,P-CCTBL ,CC-SEPTR .X>
<PUT ,P-CCTBL ,CC-DBPTR ,P-ACLAUSE>
<PUT ,P-CCTBL ,CC-DEPTR .X>
<CLAUSE-COPY ,P-OTBL ,P-OTBL .ADJ>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 6-103 (39369)
<CLAUSE-COPY ,P-ITBL ,P-OTBL ,P-NC1 ,P-NC1L
,P-ACLAUSE <+ ,P-ACLAUSE 1>>
;"<PUT ,P-CCTBL ,CC-SBPTR ,P-NC1>
<PUT ,P-CCTBL ,CC-SEPTR ,P-NC1L>
<PUT ,P-CCTBL ,CC-DBPTR ,P-ACLAUSE>
<PUT ,P-CCTBL ,CC-DEPTR <+ ,P-ACLAUSE 1>>
<CLAUSE-COPY ,P-ITBL ,P-OTBL>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 5-110 (43715)
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<CLAUSE-COPY ,P-ITBL ,P-OTBL ,P-NC1 ,P-NC1L
,P-ACLAUSE <+ ,P-ACLAUSE 1>>)
(T
'<PROG ()
<PUT ,P-CCTBL ,CC-SBPTR ,P-NC1>
<PUT ,P-CCTBL ,CC-SEPTR ,P-NC1L>
<PUT ,P-CCTBL ,CC-DBPTR ,P-ACLAUSE>
<PUT ,P-CCTBL ,CC-DEPTR <+ ,P-ACLAUSE 1>>
<CLAUSE-COPY ,P-ITBL ,P-OTBL>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 7-2 (39741)
"Print undefined word in input.
PTR points to the unknown word in P-LEXV"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 6-2 (44207)
"Print undefined word in input. PTR points to the unknown word in P-LEXV:"
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 7-25 (40401)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 6-24 (44864)
<PUT ,OOPS-TABLE ,O-PTR .PTR>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 7-52 (41477)
<GLOBAL P-SLOCBITS 0>
<CONSTANT P-SYNLEN 8>
<CONSTANT P-SBITS 0>
<CONSTANT P-SPREP1 1>
<CONSTANT P-SPREP2 2>
<CONSTANT P-SFWIM1 3>
<CONSTANT P-SFWIM2 4>
<CONSTANT P-SLOC1 5>
<CONSTANT P-SLOC2 6>
<CONSTANT P-SACTION 7>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 6-53 (45974)
<GLOBAL P-SLOCBITS 0>
<CONSTANT P-SYNLEN 8>
<CONSTANT P-SBITS 0>
<CONSTANT P-SPREP1 1>
<CONSTANT P-SPREP2 2>
<CONSTANT P-SFWIM1 3>
<CONSTANT P-SFWIM2 4>
<CONSTANT P-SLOC1 5>
<CONSTANT P-SLOC2 6>
<CONSTANT P-SACTION 7>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 9-13 (45365)
<CLAUSE-COPY ,P-ITBL ,P-OTBL ,P-NC2 ,P-NC2L ,P-NC2 ,P-NC2L>
;"<PUT ,P-CCTBL ,CC-SBPTR ,P-NC2>
<PUT ,P-CCTBL ,CC-SEPTR ,P-NC2L>
<PUT ,P-CCTBL ,CC-DBPTR ,P-NC2>
<PUT ,P-CCTBL ,CC-DEPTR ,P-NC2L>
<CLAUSE-COPY ,P-ITBL ,P-OTBL>")>
<COND (<NOT <L? ,P-NCN 1>>
<CLAUSE-COPY ,P-ITBL ,P-OTBL ,P-NC1 ,P-NC1L ,P-NC1 ,P-NC1L>
;"<PUT ,P-CCTBL ,CC-SBPTR ,P-NC1>
<PUT ,P-CCTBL ,CC-SEPTR ,P-NC1L>
<PUT ,P-CCTBL ,CC-DBPTR ,P-NC1>
<PUT ,P-CCTBL ,CC-DEPTR ,P-NC1L>
<CLAUSE-COPY ,P-ITBL ,P-OTBL>")>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 8-13 (49820)
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<CLAUSE-COPY ,P-ITBL ,P-OTBL
,P-NC2 ,P-NC2L ,P-NC2 ,P-NC2L>)
(T
'<PROG ()
<PUT ,P-CCTBL ,CC-SBPTR ,P-NC2>
<PUT ,P-CCTBL ,CC-SEPTR ,P-NC2L>
<PUT ,P-CCTBL ,CC-DBPTR ,P-NC2>
<PUT ,P-CCTBL ,CC-DEPTR ,P-NC2L>
<CLAUSE-COPY ,P-ITBL ,P-OTBL>>)>)>
<COND (<NOT <L? ,P-NCN 1>>
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<CLAUSE-COPY ,P-ITBL ,P-OTBL
,P-NC1 ,P-NC1L ,P-NC1 ,P-NC1L>)
(T
'<PROG ()
<PUT ,P-CCTBL ,CC-SBPTR ,P-NC1>
<PUT ,P-CCTBL ,CC-SEPTR ,P-NC1L>
<PUT ,P-CCTBL ,CC-DBPTR ,P-NC1>
<PUT ,P-CCTBL ,CC-DEPTR ,P-NC1L>
<CLAUSE-COPY ,P-ITBL ,P-OTBL>>)>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 9-116 (48910)
"<GLOBAL P-CCTBL <TABLE 0 0 0 0>>"
"pointers used by CLAUSE-COPY (source/destination beginning/end pointers)"
"<CONSTANT CC-SBPTR 0>
<CONSTANT CC-SEPTR 1>
<CONSTANT CC-DBPTR 2>
<CONSTANT CC-DEPTR 3>"
;<ROUTINE CLAUSE-COPY (SRC DEST "OPTIONAL" (INSRT <>) "AUX" BEG END)
<SET BEG <GET .SRC <GET ,P-CCTBL ,CC-SBPTR>>>
<SET END <GET .SRC <GET ,P-CCTBL ,CC-SEPTR>>>
<PUT .DEST
<GET ,P-CCTBL ,CC-DBPTR>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 8-124 (53579)
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<ROUTINE CLAUSE-COPY (SRC DEST SRCBEG SRCEND DESTBEG DESTEND
"OPTIONAL" (INSRT <>) "AUX" BEG END)
<SET BEG <GET .SRC .SRCBEG>>
<SET END <GET .SRC .SRCEND>>
<PUT .DEST .DESTBEG
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 9-131 (49424)
<COND (<==? .BEG .END>
<PUT .DEST
<GET ,P-CCTBL ,CC-DEPTR>
<REST ,P-OCLAUSE
<+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN>
2>>>
<RETURN>)
(T
<COND (<AND .INSRT <==? ,P-ANAM <GET .BEG 0>>>
<CLAUSE-ADD .INSRT>)>
<CLAUSE-ADD <GET .BEG 0>>)>
<SET BEG <REST .BEG ,P-WORDLEN>>>>
<ROUTINE CLAUSE-COPY (SRC DEST SRCBEG SRCEND DESTBEG DESTEND
"OPTIONAL" (INSRT <>) "AUX" BEG END)
<SET BEG <GET .SRC .SRCBEG>>
<SET END <GET .SRC .SRCEND>>
<PUT .DEST .DESTBEG
<REST ,P-OCLAUSE
<+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN> 2>>>
<REPEAT ()
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 8-133 (53916)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 10-2 (50396)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 8-143 (54225)
)(T
"pointers used by CLAUSE-COPY (source/destination beginning/end pointers)"
'(
<CONSTANT CC-SBPTR 0>
<CONSTANT CC-SEPTR 1>
<CONSTANT CC-DBPTR 2>
<CONSTANT CC-DEPTR 3>
<GLOBAL P-CCTBL <TABLE 0 0 0 0>>
<ROUTINE CLAUSE-COPY (SRC DEST "OPTIONAL" (INSRT <>) "AUX" BEG END)
<SET BEG <GET .SRC <GET ,P-CCTBL ,CC-SBPTR>>>
<SET END <GET .SRC <GET ,P-CCTBL ,CC-SEPTR>>>
<PUT .DEST
<GET ,P-CCTBL ,CC-DBPTR>
<REST ,P-OCLAUSE
<+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN> 2>>>
<REPEAT ()
<COND (<==? .BEG .END>
<PUT .DEST
<GET ,P-CCTBL ,CC-DEPTR>
<REST ,P-OCLAUSE
<+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN>
2>>>
<RETURN>)
(T
<COND (<AND .INSRT <==? ,P-ANAM <GET .BEG 0>>>
<CLAUSE-ADD .INSRT>)>
<CLAUSE-ADD <GET .BEG 0>>)>
<SET BEG <REST .BEG ,P-WORDLEN>>>>
))>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 11-18 (52884)
<GLOBAL P-NAM <>>
<GLOBAL P-XNAM <>>
<GLOBAL P-ADJ <>>
<GLOBAL P-XADJ <>>
"<GLOBAL P-ADJN <>>
<GLOBAL P-XADJN <>>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 10-18 (57608)
<GLOBAL P-NAM <>>
<GLOBAL P-XNAM <>>
<GLOBAL P-ADJ <>>
<GLOBAL P-XADJ <>>
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>)
(T
'(<GLOBAL P-ADJN <>>
<GLOBAL P-XADJN <>>))>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 12-7 (53462)
"AUX" (BUT <>) LEN WV WRD NW (WAS-ALL <>) TMP ONEOBJ)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 11-7 (58240)
"AUX" (BUT <>) LEN WV WRD NW (WAS-ALL <>) ONEOBJ)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 12-20 (53855)
<SET TMP <GET-OBJECT <OR .BUT .TBL>>>
<COND (.WAS-ALL <SETG P-GETFLAGS ,P-ALL>)>
<RETURN .TMP>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 11-20 (58629)
<SET WV <GET-OBJECT <OR .BUT .TBL>>>
<COND (.WAS-ALL <SETG P-GETFLAGS ,P-ALL>)>
<RETURN .WV>)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 12-55 (54967)
(<AND <WT? .WRD ,PS?ADJECTIVE>
<NOT ,P-ADJ>>
<SETG P-ADJ .WRD>)
;(<AND <SET WV <WT? .WRD ,PS?ADJECTIVE ,P1?ADJECTIVE>>
<NOT ,P-ADJ>>
<SETG P-ADJ .WV>
<SETG P-ADJN .WRD>)
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 11-55 (59739)
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'(<AND <WT? .WRD ,PS?ADJECTIVE>
<NOT ,P-ADJ>>
<SETG P-ADJ .WRD>))
(T
'(<AND <SET WV <WT? .WRD ,PS?ADJECTIVE
,P1?ADJECTIVE>>
<NOT ,P-ADJ>>
<SETG P-ADJ .WV>
<SETG P-ADJN .WRD>))>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 12-69 (55368)
<CONSTANT SH 128>
<CONSTANT SC 64>
<CONSTANT SIR 32>
<CONSTANT SOG 16>
<CONSTANT STAKE 8>
<CONSTANT SMANY 4>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 11-72 (60231)
<CONSTANT SH 128>
<CONSTANT SC 64>
<CONSTANT SIR 32>
<CONSTANT SOG 16>
<CONSTANT STAKE 8>
<CONSTANT SMANY 4>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 13-11 (55934)
<SET ADJ ,P-ADJ ;N>
<COND (<AND <NOT ,P-NAM> ,P-ADJ>
<COND (<WT? ,P-ADJ ;N ,PS?OBJECT ;,P1?OBJECT>
<SETG P-NAM ,P-ADJ ;N>
<SETG P-ADJ <>>)
(<SET BTS <WT? ,P-ADJ ;N ,PS?DIRECTION ,P1?DIRECTION>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 12-11 (60762)
<SET ADJ %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
',P-ADJ)
(T
',P-ADJN)>>
<COND (<AND <NOT ,P-NAM> ,P-ADJ>
<COND (<WT? %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
',P-ADJ)
(T ',P-ADJN)>
,PS?OBJECT>
<SETG P-NAM %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
',P-ADJ)
(T ',P-ADJN)>>
<SETG P-ADJ <>>)
(<SET BTS <WT? %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
',P-ADJ)
(T ',P-ADJN)>
,PS?DIRECTION ,P1?DIRECTION>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 13-69 (57809)
<SETG P-ADJ <>>
;<SETG P-ADJN <>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 12-80 (62948)
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<SETG P-ADJ <>>)
(T
'<PROG ()
<SETG P-ADJ <>>
<SETG P-ADJN <>>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 13-96 (58566)
<SETG P-XADJ ,P-ADJ>
;<SETG P-XADJN ,P-ADJN>
<SETG P-NAM <>>
<SETG P-ADJ <>>
;<SETG P-ADJN <>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 12-111 (63830)
<SETG P-NAM <>>
%<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<PROG ()
<SETG P-XADJ ,P-ADJ>
<SETG P-ADJ <>>>)
(T
'<PROG ()
<SETG P-XADJ ,P-ADJ>
<SETG P-XADJN ,P-ADJN>
<SETG P-ADJ <>>
<SETG P-ADJN <>>>)>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 13-122 (59358)
(<EQUAL? .V ,V?YES ,V?TALK-ABOUT> <RTRUE>)
(<EQUAL? .V ,V?ASK-CONTEXT-ABOUT ,V?ASK-CONTEXT-FOR> <RTRUE>)>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 12-143 (64801)
(<EQUAL? .V ,V?YES ,V?TALK-ABOUT ,V?ANSWER> <RTRUE>)
(<EQUAL? .V ,V?ASK-CONTEXT-ABOUT ,V?ASK-CONTEXT-FOR ,V?REPLY>
<RTRUE>)>>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 13-179 (61065)
"<GLOBAL P-MOBY-FLAG <>>"
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 12-202 (66536)
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 14-63 (64082)
<CONSTANT P-SRCBOT 2>
<CONSTANT P-SRCTOP 0>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 13-63 (69524)
<CONSTANT P-SRCBOT 2>
<CONSTANT P-SRCTOP 0>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 14-84 (64752)
<OR <FSET? .OBJ ,OPENBIT>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 13-82 (70182)
<OR .MOBY-FLAG <SEE-INSIDE? .OBJ>>
;<OR <FSET? .OBJ ,OPENBIT>
***************
**** FILE PS:<CHECKPOINT>PARSER.ZIL.151, 14-106 (65485)
<NOT <ZMEMQ ;B ,P-ADJ .SYNS <RMGL-SIZE .SYNS>>>>>
**** FILE PS:<CHECKPOINT>PARSER.ZIL.170, 13-105 (70959)
<NOT %<COND (<AND <GASSIGNED? PLUS-MODE> ,PLUS-MODE>
'<ZMEMQ ,P-ADJ .SYNS <RMGL-SIZE .SYNS>>)
(T
'<ZMEMQB ,P-ADJ .SYNS <RMGL-SIZE .SYNS>>)>>>>
***************

2148
parser.true Normal file

File diff suppressed because it is too large Load Diff

2530
parser.zap Normal file

File diff suppressed because it is too large Load Diff

2443
parser.zil Normal file

File diff suppressed because it is too large Load Diff

1332
people.cmp Normal file

File diff suppressed because it is too large Load Diff

1537
people.zap Normal file

File diff suppressed because it is too large Load Diff

1863
people.zil Normal file

File diff suppressed because it is too large Load Diff

183
places.cmp Normal file
View File

@ -0,0 +1,183 @@
;COMPARISON OF PS:<SWG>PLACES.ZAP.1 AND PS:<SWG>PLACES.ZAP.3
;OPTIONS ARE /1
**** FILE PS:<SWG>PLACES.ZAP.1, 1-21 (330)
FIRST? RM >O /?KLU14
?KLU14: GETP WINNER,P?CAR >CAR
**** FILE PS:<SWG>PLACES.ZAP.3, 1-21 (330)
FIRST? RM >O /?KLU8
?KLU8: GETP WINNER,P?CAR >CAR
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-25 (444)
FSET? O,FLAG \?ELS7
EQUAL? O,EXCLUDED /?ELS7
ZERO? STA? \?THN10
**** FILE PS:<SWG>PLACES.ZAP.3, 1-25 (442)
FSET? O,FLAG \?ELS5
EQUAL? O,EXCLUDED /?ELS5
ZERO? STA? \?THN6
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-29 (529)
EQUAL? STACK,CAR \?ELS7
?THN10: RETURN O
?ELS7: NEXT? O >O /?KLU15
?KLU15: JUMP ?PRG1
**** FILE PS:<SWG>PLACES.ZAP.3, 1-29 (526)
EQUAL? STACK,CAR \?ELS5
?THN6: RETURN O
?ELS5: NEXT? O >O /?PRG1
JUMP ?PRG1
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-36 (661)
FIRST? RM >O /?KLU12
?KLU12:
**** FILE PS:<SWG>PLACES.ZAP.3, 1-36 (649)
FIRST? RM >O /?KLU7
?KLU7:
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-39 (717)
FSET? O,FLAG \?ELS7
**** FILE PS:<SWG>PLACES.ZAP.3, 1-39 (703)
FSET? O,FLAG \?ELS5
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-41 (754)
EQUAL? STACK,CAR \?ELS7
**** FILE PS:<SWG>PLACES.ZAP.3, 1-41 (740)
EQUAL? STACK,CAR \?ELS5
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-43 (791)
?ELS7: NEXT? O >O /?KLU13
?KLU13: JUMP ?PRG1
**** FILE PS:<SWG>PLACES.ZAP.3, 1-43 (777)
?ELS5: NEXT? O >O /?PRG1
JUMP ?PRG1
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-50 (933)
PTSIZE TBL
DIV STACK,2
SUB STACK,1 >SIZE
?PRG6: GET TBL,CNT >O
FSET? O,FLAG \?ELS10
**** FILE PS:<SWG>PLACES.ZAP.3, 1-50 (911)
CALL RMGL-SIZE,TBL >SIZE
?PRG5: CALL GET-OBJ,TBL,CNT >O
FSET? O,FLAG \?ELS8
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-56 (1037)
?ELS10: IGRTR? 'CNT,SIZE \?PRG6
**** FILE PS:<SWG>PLACES.ZAP.3, 1-54 (1003)
?ELS8: IGRTR? 'CNT,SIZE \?PRG5
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-61 (1138)
FIRST? HERE >O /?KLU14
?KLU14: GETP WINNER,P?CAR >CAR
**** FILE PS:<SWG>PLACES.ZAP.3, 1-59 (1103)
FIRST? HERE >O /?KLU8
?KLU8: GETP WINNER,P?CAR >CAR
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-65 (1256)
FSET? O,FLAG \?ELS7
EQUAL? O,NOT1,NOT2 /?ELS7
ZERO? STA? \?THN10
**** FILE PS:<SWG>PLACES.ZAP.3, 1-63 (1219)
FSET? O,FLAG \?ELS5
EQUAL? O,NOT1,NOT2 /?ELS5
ZERO? STA? \?THN6
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-69 (1342)
EQUAL? STACK,CAR \?ELS7
?THN10: RETURN O
?ELS7: NEXT? O >O /?KLU15
?KLU15: JUMP ?PRG1
**** FILE PS:<SWG>PLACES.ZAP.3, 1-67 (1304)
EQUAL? STACK,CAR \?ELS5
?THN6: RETURN O
?ELS5: NEXT? O >O /?PRG1
JUMP ?PRG1
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-76 (1494)
FIRST? HERE >O /?KLU14
?KLU14: GETP WINNER,P?CAR >CAR
**** FILE PS:<SWG>PLACES.ZAP.3, 1-74 (1447)
FIRST? HERE >O /?KLU8
?KLU8: GETP WINNER,P?CAR >CAR
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-80 (1612)
FSET? O,FLAG \?ELS7
FSET? O,NFLAG /?ELS7
EQUAL? O,NOT2 /?ELS7
ZERO? STA? \?THN10
**** FILE PS:<SWG>PLACES.ZAP.3, 1-78 (1563)
FSET? O,FLAG \?ELS5
FSET? O,NFLAG /?ELS5
EQUAL? O,NOT2 /?ELS5
ZERO? STA? \?THN6
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-85 (1716)
EQUAL? STACK,CAR \?ELS7
?THN10: RETURN O
?ELS7: NEXT? O >O /?KLU15
?KLU15: JUMP ?PRG1
**** FILE PS:<SWG>PLACES.ZAP.3, 1-83 (1666)
EQUAL? STACK,CAR \?ELS5
?THN6: RETURN O
?ELS5: NEXT? O >O /?PRG1
JUMP ?PRG1
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-95 (1898)
EQUAL? PTS,UEXIT \?ELS10
**** FILE PS:<SWG>PLACES.ZAP.3, 1-93 (1839)
EQUAL? PTS,UEXIT \?ELS8
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-98 (1950)
?ELS10: EQUAL? PTS,NEXIT /FALSE
EQUAL? PTS,FEXIT \?ELS14
**** FILE PS:<SWG>PLACES.ZAP.3, 1-96 (1890)
?ELS8: EQUAL? PTS,NEXIT /FALSE
EQUAL? PTS,FEXIT \?ELS10
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-103 (2051)
?ELS14: EQUAL? PTS,CEXIT \?ELS16
**** FILE PS:<SWG>PLACES.ZAP.3, 1-101 (1990)
?ELS10: EQUAL? PTS,CEXIT \?ELS11
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-109 (2165)
?ELS16: EQUAL? PTS,DEXIT \FALSE
**** FILE PS:<SWG>PLACES.ZAP.3, 1-107 (2104)
?ELS11: EQUAL? PTS,DEXIT \FALSE
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-132 (2559)
EQUAL? L,DEXIT \?PRG1
GET TBL,DEXITOBJ >O
FSET? O,OPENBIT \?PRG1
**** FILE PS:<SWG>PLACES.ZAP.3, 1-130 (2498)
EQUAL? L,DEXIT \?CND6
CALL GET-DOOR-OBJ,TBL >O
FSET? O,OPENBIT \?CND6
***************
**** FILE PS:<SWG>PLACES.ZAP.1, 1-139 (2713)
**** FILE PS:<SWG>PLACES.ZAP.3, 1-136 (2655)
?CND6: JUMP ?PRG1
***************

165
places.zap Normal file
View File

@ -0,0 +1,165 @@
.FUNCT NULL-F,A1,A2
RFALSE
.FUNCT DOOR-ROOM,RM,DR,P=0,TBL
?PRG1: NEXTP RM,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /FALSE
GETPT RM,P >TBL
PTSIZE TBL
EQUAL? DEXIT,STACK \?PRG1
GET TBL,DEXITOBJ
EQUAL? DR,STACK \?PRG1
GET TBL,REXIT
RETURN STACK
.FUNCT DOOR-DIR,RM,DR,P=0,TBL
?PRG1: NEXTP RM,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /FALSE
GETPT RM,P >TBL
PTSIZE TBL
EQUAL? DEXIT,STACK \?PRG1
GET TBL,DEXITOBJ
EQUAL? DR,STACK \?PRG1
EQUAL? P,P?NORTH,P?EAST /?THN12
EQUAL? P,P?SOUTH,P?WEST \?PRG1
?THN12: RETURN P
.FUNCT FACE-DOOR,DR,PER
EQUAL? PRSA,V?UNLOCK,V?OPEN,V?LOOK-THROUGH /?THN8
EQUAL? PRSA,V?LOCK,V?KNOCK,V?CLOSE \FALSE
?THN8: CALL DOOR-DIR,HERE,DR >PER
ZERO? PER /FALSE
CALL2 OPP-DIR,PER >PLAYER-NOT-FACING
EQUAL? PLAYER-NOT-FACING-OLD,PLAYER-NOT-FACING /FALSE
PRINTI "[You're facing to "
CALL2 DIR-PRINT,PER
PRINTR ".]"
.FUNCT FIND-FLAG,RM,FLAG,EXCLUDED=0,O,CAR,STA?
FIRST? RM >O /?KLU14
?KLU14: GETP WINNER,P?CAR >CAR
CALL ZMEMQ,RM,STATION-ROOMS >STA?
?PRG1: ZERO? O /FALSE
FSET? O,FLAG \?ELS7
EQUAL? O,EXCLUDED /?ELS7
ZERO? STA? \?THN10
GETP O,P?CAR
EQUAL? STACK,CAR \?ELS7
?THN10: RETURN O
?ELS7: NEXT? O >O /?KLU15
?KLU15: JUMP ?PRG1
.FUNCT FIND-FLAG-CAR,RM,CAR,FLAG,O
FIRST? RM >O /?KLU12
?KLU12:
?PRG1: ZERO? O /FALSE
FSET? O,FLAG \?ELS7
GETP O,P?CAR
EQUAL? STACK,CAR \?ELS7
RETURN O
?ELS7: NEXT? O >O /?KLU13
?KLU13: JUMP ?PRG1
.FUNCT FIND-FLAG-LG,RM,FLAG,TBL,O,CNT=0,SIZE
GETPT RM,P?GLOBAL >TBL
ZERO? TBL /FALSE
PTSIZE TBL
DIV STACK,2
SUB STACK,1 >SIZE
?PRG6: GET TBL,CNT >O
FSET? O,FLAG \?ELS10
RETURN O
?ELS10: IGRTR? 'CNT,SIZE \?PRG6
RFALSE
.FUNCT FIND-FLAG-HERE,FLAG,NOT1=0,NOT2=0,NOT3=0,O,CAR,STA?
FIRST? HERE >O /?KLU14
?KLU14: GETP WINNER,P?CAR >CAR
CALL ZMEMQ,HERE,STATION-ROOMS >STA?
?PRG1: ZERO? O /FALSE
FSET? O,FLAG \?ELS7
EQUAL? O,NOT1,NOT2,NOT3 /?ELS7
ZERO? STA? \?THN10
GETP O,P?CAR
EQUAL? STACK,CAR \?ELS7
?THN10: RETURN O
?ELS7: NEXT? O >O /?KLU15
?KLU15: JUMP ?PRG1
.FUNCT FIND-FLAG-HERE-NOT,FLAG,NFLAG,NOT2=0,O,CAR,STA?
FIRST? HERE >O /?KLU14
?KLU14: GETP WINNER,P?CAR >CAR
CALL ZMEMQ,HERE,STATION-ROOMS >STA?
?PRG1: ZERO? O /FALSE
FSET? O,FLAG \?ELS7
FSET? O,NFLAG /?ELS7
EQUAL? O,NOT2 /?ELS7
ZERO? STA? \?THN10
GETP O,P?CAR
EQUAL? STACK,CAR \?ELS7
?THN10: RETURN O
?ELS7: NEXT? O >O /?KLU15
?KLU15: JUMP ?PRG1
.FUNCT NEXT-ROOM,RM,DIR,PT,PTS
GETPT RM,DIR >PT
ZERO? PT /FALSE
PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?ELS10
GET PT,REXIT
RSTACK
?ELS10: EQUAL? PTS,NEXIT /FALSE
EQUAL? PTS,FEXIT \?ELS14
GET PT,FEXITFCN
CALL STACK
RSTACK
?ELS14: EQUAL? PTS,CEXIT \?ELS16
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /FALSE
GET PT,REXIT
RSTACK
?ELS16: EQUAL? PTS,DEXIT \FALSE
GET PT,REXIT
RSTACK
.FUNCT OUTSIDE?,RM
EQUAL? RM,ROOF,OTHER-ROOF,BESIDE-TRACKS /TRUE
EQUAL? RM,SIDEWALK,OTHER-BESIDE-TRACKS /TRUE
RFALSE
.FUNCT WINDOW-IN?,RM
CALL FIND-FLAG-LG,RM,WINDOWBIT
RSTACK
.FUNCT FRESH-AIR?,RM,P,L,TBL,O
SET 'P,0
?PRG1: NEXTP HERE,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /?PRG1
GETPT HERE,P >TBL
PTSIZE TBL >L
EQUAL? L,DEXIT \?PRG1
GET TBL,DEXITOBJ >O
FSET? O,OPENBIT \?PRG1
PRINTI "There's a pleasant breeze coming through the "
PRINTD O
PRINTR "."
.ENDI

159
places.zil Normal file
View File

@ -0,0 +1,159 @@
"PLACES for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
"The usual globals"
<OBJECT ROOMS
(DESC "that")
(FLAGS NARTICLEBIT)>
<ROUTINE NULL-F ("OPTIONAL" A1 A2)
<RFALSE>>
<ROUTINE DOOR-ROOM (RM DR "AUX" (P 0) TBL)
<REPEAT ()
<COND (<OR <0? <SET P <NEXTP .RM .P>>>
<L? .P ,LOW-DIRECTION>>
<RFALSE>)
(<AND <==? ,DEXIT <PTSIZE <SET TBL <GETPT .RM .P>>>>
<==? .DR <GET-DOOR-OBJ .TBL>>>
<RETURN <GET-REXIT-ROOM .TBL>>)>>>
<ROUTINE DOOR-DIR (RM DR "AUX" (P 0) TBL)
<REPEAT ()
<COND (<OR <0? <SET P <NEXTP .RM .P>>>
<L? .P ,LOW-DIRECTION>>
<RFALSE>)
(<AND <==? ,DEXIT <PTSIZE <SET TBL <GETPT .RM .P>>>>
<==? .DR <GET-DOOR-OBJ .TBL>>
<OR <EQUAL? .P ,P?NORTH ,P?EAST>
<EQUAL? .P ,P?SOUTH ,P?WEST>>>
<RETURN .P>)>>>
<ROUTINE FACE-DOOR (DR "AUX" PER)
<COND (<AND <VERB? CLOSE KNOCK LOCK LOOK-THROUGH OPEN UNLOCK>
;<NOT ,PLAYER-SEATED>
;<NOT ,PLAYER-HIDING>
<SET PER <DOOR-DIR ,HERE .DR>>>
<SETG PLAYER-NOT-FACING <OPP-DIR .PER>>
<COND (<NOT <==? ,PLAYER-NOT-FACING-OLD
,PLAYER-NOT-FACING>>
<TELL "[You're facing to ">
<DIR-PRINT .PER ;<OPP-DIR ,PLAYER-NOT-FACING>>
<TELL ".]" CR>)>)>>
<ROUTINE FIND-FLAG (RM FLAG "OPTIONAL" (EXCLUDED <>) "AUX" O CAR STA?)
<SET O <FIRST? .RM>>
<SET CAR <GETP ,WINNER ,P?CAR>>
<SET STA? <ZMEMQ .RM ,STATION-ROOMS>>
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG>
<NOT <==? .O .EXCLUDED>>
<OR .STA?
<==? <GETP .O ,P?CAR> .CAR>>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>
<ROUTINE FIND-FLAG-CAR (RM CAR FLAG "AUX" O)
<SET O <FIRST? .RM>>
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG>
<==? <GETP .O ,P?CAR> .CAR>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>
<ROUTINE FIND-FLAG-LG (RM FLAG "AUX" TBL O (CNT 0) SIZE)
<COND (<SET TBL <GETPT .RM ,P?GLOBAL>>
<SET SIZE <RMGL-SIZE .TBL>>
<REPEAT ()
<COND (<FSET? <SET O <GET/B .TBL .CNT>> .FLAG>
<RETURN .O>)
(<IGRTR? CNT .SIZE> <RFALSE>)>>)>>
<ROUTINE FIND-FLAG-HERE (FLAG "OPTIONAL" (NOT1 <>) (NOT2 <>) (NOT3 <>)
"AUX" O CAR STA?)
<SET O <FIRST? ,HERE>>
<SET CAR <GETP ,WINNER ,P?CAR>>
<SET STA? <ZMEMQ ,HERE ,STATION-ROOMS>>
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG>
<NOT <EQUAL? .O .NOT1 .NOT2 .NOT3>>
<OR .STA?
<==? <GETP .O ,P?CAR> .CAR>>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>
<ROUTINE FIND-FLAG-HERE-NOT (FLAG NFLAG "OPTIONAL" (NOT2 <>) "AUX" O CAR STA?)
<SET O <FIRST? ,HERE>>
<SET CAR <GETP ,WINNER ,P?CAR>>
<SET STA? <ZMEMQ ,HERE ,STATION-ROOMS>>
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG>
<NOT <FSET? .O .NFLAG>>
<NOT <EQUAL? .O .NOT2>>
<OR .STA?
<==? <GETP .O ,P?CAR> .CAR>>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>
"<ROUTINE FIND-FLAG-NOT (RM FLAG1 FLAG2 'AUX' (O <FIRST? .RM>))
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG1> <NOT <FSET? .O .FLAG2>>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>"
<ROUTINE NEXT-ROOM (RM DIR "AUX" PT PTS)
<COND (<SET PT <GETPT .RM .DIR>>
<COND (<==? <SET PTS <PTSIZE .PT>> ,UEXIT>
<GET-REXIT-ROOM .PT>)
(<==? .PTS ,NEXIT>
<RFALSE>)
(<==? .PTS ,FEXIT>
<APPLY <GET .PT ,FEXITFCN>>)
(<==? .PTS ,CEXIT>
<COND (<VALUE <GETB .PT ,CEXITFLAG>>
<GET-REXIT-ROOM .PT>)>)
(<==? .PTS ,DEXIT>
<COND (T ;<FSET? <GET-DOOR-OBJ .PT> ,OPENBIT>
<GET-REXIT-ROOM .PT>)>)>)>>
<ROUTINE OUTSIDE? (RM)
<OR <EQUAL? .RM ,ROOF ,OTHER-ROOF ,BESIDE-TRACKS>
<EQUAL? .RM ,SIDEWALK ,OTHER-BESIDE-TRACKS>>>
<ROUTINE WINDOW-IN? (RM) <FIND-FLAG-LG .RM ,WINDOWBIT>>
"<ROUTINE WINDOW-IN? (RM 'AUX' RMG RMGL (CNT 0))
<COND (<SET RMG <GETPT .RM ,P?GLOBAL>>
<SET RMGL <RMGL-SIZE .RMG>>
<REPEAT ()
<COND (<WORD-TYPE <GET/B .RMG .CNT> ,W?WINDOW>
<RTRUE>)>
<COND (<IGRTR? CNT .RMGL> <RFALSE>)>>)>>"
;<ROUTINE WORD-TYPE (OBJ WORD "AUX" SYNS)
<ZMEMQ .WORD
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
<- </ <PTSIZE .SYNS> 2> 1>>>
"Other stuff"
<ROUTINE FRESH-AIR? (RM "AUX" P L TBL O)
<SET P 0>
<REPEAT ()
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RFALSE>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET TBL <GETPT ,HERE .P>>
<SET L <PTSIZE .TBL>>
<COND (<AND <EQUAL? .L ,DEXIT> ;"Door EXIT"
<FSET? <SET O <GET-DOOR-OBJ .TBL>>
,OPENBIT>>
<TELL
"There's a pleasant breeze coming through the " D .O "." CR>
<RETURN>)>)>>>

14173
script.gary Normal file

File diff suppressed because it is too large Load Diff

544
script.jw Normal file
View File

@ -0,0 +1,544 @@
[Automatic transcript: User is JW]
Copyright (c) 1985 Infocom, Inc. All rights reserved.
Welcome to CHECKPOINT (TM) - interactive fiction from Infocom!
[Note to testers: this story has the command GO TO, and the concept of not
being able to see things behind your back. The unit of currency in this story
is the Frotzian slimpuk, whose symbol is "*".
Messages in square brackets [] will not be in the final release.
Remember: you can shorten your words only to NINE (9) letters.
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]
Do you want the viewpoint of the traveler or the spy? >S
Do you want the short variation or the long one? >S
Then let the story begin!
Why did you want to be a spy anyway? You could have had a nice restful job,
like an air-traffic controller. You could have tended flowers behind a white
picket fence around your country cottage. At least they could let you grab a
few winks between one job and the next. But no -- you finish debriefing in some
dirty little city in Frotzerland, and before you can even find a phone book,
let alone a hotel, they volunteer you for another assignment.
"You've got to intercept a document!" they told you. "Then deliver it to our
agent in Gola so the leak can be traced. We don't know where it is for sure,
but we think it's in a briefcase that's leaving town on the next train. You're
the only agent that's close enough and experienced enough to be sent after it.
And at the end of the trip, there will be a plane ticket to home waiting for
you."
So that's why you're climbing all over this stupid train. Finding the briefcase
was easy enough, but the dude carrying it was something else. Even your
well-placed bullet didn't make him drop. Now, if only he'll take the bait and
follow you up here, you can .... Wait! Here he comes from the forward end! But
he's not carrying the case!
CHECKPOINT
Infocom interactive fiction - a story of intrigue
Copyright (c) 1985 by Infocom, Inc. All rights reserved.
CHECKPOINT is a trademark of Infocom, Inc.
Release 14 / Serial number 850403 / Spy's viewpoint, short variation
(roof)
You are on the roof of the train. The wind blows your hair, and the rocking,
lurching train threatens to buck you right off. It occurs to you that this
might not be the safest place to be right now.
The other spy is here, preparing to knock you off.
Okay, what do you want to do now?
>KICK
(What do you want to kick?)
>SPY
The train lurches a bit.
You go for him, but he dodges. He hesitates, preparing his next move.
What next?
>G
You go for him, but he dodges. He hesitates, preparing his next move.
What next?
>G
You go for him, but he dodges. He hesitates, then lunges at you!
He crouches low and prepares to lunge.
What next?
>G
You go for him, but he dodges. He hesitates, preparing his next move.
He slips but then regains his footing.
What next?
>G
You lunge at him and almost miss, but he loses footing and falls off the edge
of the roof! The train quickly leaves his body behind.
What next?
>D
(rear vestibule)
This is a small vestibule at the rear end of the car. There's a short flight of
metal steps on the left side of the train leading down off the train, and a
narrow metal ladder leading up to the roof. A small door leads to a restroom,
and a big window is open to the outside. A red handle is hanging by a short
length of cord from the ceiling, swinging in time to the train's rocking
motion. The train is steaming along a barren stubble-plain.
The clatter of the wheels on the track is almost deafening.
A young man and an old couple are off to the rear.
A cigarette machine stands in one corner, waiting to be either used or
discarded -- it's hard to say which.
What next?
>SAVE
(In this variation, 1 minute will pass in the story before you can type another
command. Are you sure you want to SAVE now? >Y
Okay.)
To file: START.CSS14.1Okay.
What next?
>GO TO FRONT VESTIB
(Sorry, but this story doesn't recognize the word "vestib".)
(You won't see "What next?" any more.)
>GO TO FRONT VESTIBULE
The relative quiet here is welcome. The smell of food is unmistakable.
The relative quiet here is welcome.
The relative quiet here is welcome.
The relative quiet here is welcome.
(forward vestibule)
[You're facing to the front.]
This is a small vestibule at the forward end of the car. It's just like the
rear vestibule, but with no steps or ladder.
>N
[Debugging info: you are entering car #2.]
(rear vestibule)
There's a young woman here, chewing gum.
There's a boy here, reading a newspaper.
>N
(You open the swinging door and close it again.)
The relative quiet here is welcome.
(rear end)
This is the rear end of the corridor. The floor and walls are covered with
cream-colored linoleum, worn away in spots to reveal the original hardwood
finish. A long series of windows, still framed by wood, runs along the corridor
on the right-hand side of the train. On the left side of the train, behind a
windowed door, lies the fifth compartment.
An attractive woman is in the fifth compartment.
A regal woman is off to the front.
The girl, off to the front, opens the compartment door for a moment and enters
the first compartment.
>W
(You open the compartment door and close it again.)
(fifth compartment)
[You're facing to the left side of the train.]
This is a once-luxurious first-class compartment on the Znuk-Potrzebie Express.
The plush red upholstery on the two facing seats, shiny and worn in spots, and
the greasy lace on the headrests, give the car an air of faded elegance. A red
handle is hanging by a short length of cord from the ceiling, swinging in time
to the train's rocking motion. The corridor is outside, past a window with a
red curtain on it.
The train is steaming along a barren stubble-plain.
The attractive woman is here, holding the briefcase and deep in thought.
Your sharp eyes notice a spot of blood on the floor.
>EXAMINE SPOT
Yup. That's a spot of blood, all right.
>SAVE
(In this variation, 1 minute will pass in the story before you can type another
command. Are you sure you want to SAVE now? >Y
Okay.)
To file: CASETIME.CSS14.1Okay.
>HIT WOMAN
The train lurches a bit.
She blocks your thrust and delivers a chop to your nose.
>G
She blocks your thrust and knocks you unconscious....
You shake your head and come to.
>RESTOR
From file: CASETIME.CSS14.1Okay.
(fifth compartment)
[You're facing to the left side of the train.]
The attractive woman is here, still holding the briefcase and deep in thought.
A spot of blood is still on the floor.
>HIT WOMAN
She drops the briefcase and slumps on the floor.
>TAKE CASE
You are now holding it.
>E
(You open the compartment door and close it again.)
(rear end)
[You're facing to the right side of the train.]
The conductor and the regal woman are off to the front.
He punches her ticket.
The girl, off to the front, opens the swinging door for a moment and disappears
to the front.
>N
(rear middle)
[You're facing to the front.]
This is the rear middle of the corridor. On the left side of the train, behind
a windowed door, lies the fourth compartment.
The conductor and the regal woman are off to the front.
The conductor is off to the front, heading toward you.
He, off to the front, stops to punch tickets.
>W
(You open the compartment door and close it again.)
(fourth compartment)
[You're facing to the left side of the train.]
There's a young man here, smoking a cigarette.
>TURN LATCH
A mechanical click comes from within the briefcase.
>OPEN IT
(I assume you mean: the briefcase latch.)
The metal latch snaps open. At the same time, a loud thump comes from within
the briefcase.
The conductor appears and makes a gesture, asking for your ticket.
>GIVE CONDUC TICKET
(Whom do you want to give the conduc ticket to?)
>CONDUC
(You don't seem to be holding that!)
>GIVE CONDUCTOR TICKET
(Whom do you want to give the conductor ticket to?)
>GIVE TICKET TO CONDUCTOR
The conductor punches your ticket and then gives it back to you.
He punches the young man's ticket.
>TURN LATCH
A mechanical click comes from within the briefcase.
The conductor touches a finger to his cap and opens the compartment door for a
moment and leaves.
>OPEN CASE
You open it a crack before you realize that everything inside would fall out.
You quickly close it again.
>SIT
(on the train seat)
You're now sitting on it.
A young couple, just outside, disappear to the rear.
Just outside the attractive woman appears from the rear end.
>OPEN CASE
Opening it reveals a document, a miniature camera, a cassette of film, a
magnifying glass, and a scrap of newsprint.
The attractive woman stops here.
>EXAMINE DOCUMENT
It's not a very handsome document, scrawled in a hurry by a hand that wouldn't
win any prizes under the best of conditions. But it seems to contain crucial
information -- times, places, a crude map, even code words -- about a plan to
kidnap some high-ranking official. Were the plan to succeed, several
governments would be embarrassed, if not in mortal danger, and the balance of
power would become precarious.
>EXAMINE NEWSPRINT
There doesn't seem to be anything written on the scrap of newsprint.
>HOLD NEWSPRINT TO LIGHT
That doesn't seem to help at all.
>RUB NEWSPRINT
Fiddling with it is a waste of time.
>RESTORE
From file: CASETIME.CSS14.1Okay.
(fifth compartment)
[You're facing to the left side of the train.]
The attractive woman is here, still holding the briefcase and deep in thought.
A spot of blood is still on the floor.
>HIT WOMAN
She blocks your thrust and knocks you unconscious....
You shake your head and come to.
>RESTOR
From file: CASETIME.CSS14.1Okay.
(fifth compartment)
[You're facing to the left side of the train.]
The attractive woman is here, still holding the briefcase and deep in thought.
A spot of blood is still on the floor.
>HIT WOMAN
She drops the briefcase and slumps on the floor.
>TAKE CASE
You are now holding it.
>E
(You open the compartment door and close it again.)
(rear end)
[You're facing to the right side of the train.]
The conductor and the regal woman are off to the front.
He punches her ticket.
The girl is off to the front, heading toward you.
>S
(You open the swinging door and close it again.)
(rear vestibule)
[You're facing to the rear.]
The young woman is here, still chewing gum.
The boy is here, still reading a newspaper.
>IN
(You open the restroom door and close it again.)
(rear restroom)
As you'd expect, the restroom is tidy but small, almost too small for comfort.
But it does have the usual fixtures.
>SAVE
(In this variation, 1 minute will pass in the story before you can type another
command. Are you sure you want to SAVE now? >Y
Okay.)
To file: HAVECASE.CSS14.1Okay.
>LOCK DOOR
[You're facing to the left side of the train.]
Okay, it is now locked.
>DROP CASE
Okay, it is now on the floor.
>OPEN LATCH
The metal latch snaps open.
>OPEN CASE
Opening it reveals a document, a miniature camera, a cassette of film, a
magnifying glass, and a scrap of newsprint.
>I
You are not holding anything. But there's something in your pocket.
>L IN POCKET
The train lurches a bit.
Your pocket contains a gun, your ticket, a timetable, a traveler's check, and
your passport.
And some money.
You hear a knock on the door.
>CLOSE CASE
Closed.
The conductor appears and makes a gesture, asking for your ticket.
>GIVE CONDUC TICKET
(Whom do you want to give the conduc ticket to?)
>GIVE CONDUC THE TICKET
The conductor punches your ticket and then gives it back to you.
He touches a finger to his cap and opens the restroom door for a moment and
leaves.
>LOCK DOOR
Okay, it is now locked.
>OPEN CASE
Opening it reveals a scrap of newsprint, a magnifying glass, a cassette of
film, a miniature camera, and a document.
>TAKE NEWSPRINT
(You can't take it.)
>I
You're holding your ticket.
And there's something in your pocket.
>HOLD NEWSPRINT TO LOGHT
(I don't know the word "loght".)
>TAKE SCRAPO
(I don't know the word "scrapo".)
>TAKE SCRAP
(You can't take it.)
>TAKE ALL FROM CASE
(Please be more specific.)
>L
(rear restroom)
(You're facing to the left side of the train, but you look in all directions
for a moment.)
As you'd expect, the restroom is tidy but small, almost too small for comfort.
But it does have the usual fixtures.
A black briefcase with a chrome latch is here, open.
>L IN CASE
The briefcase contains a scrap of newsprint, a magnifying glass, a cassette of
film, a miniature camera, and a document.
>TAKE SCRAP
(You can't take it.)
>TAKE CASE
Too bad, but it is open.
>SIT
(on the toilet)
The train lurches a bit.
You're now sitting on it.
>TAKE CASE
(You stand up first.)
Too bad, but it is open.
>CLOSE CASE
Closed.
>TAKE IT
(I assume you mean: the briefcase.)
You are now holding it.
The train is now racing past a dark, violent river.
>SIT
(on the toilet)
You're now sitting on it.
>OPEN CASE
Opening it reveals a document, a miniature camera, a cassette of film, a
magnifying glass, and a scrap of newsprint.
>TAKE SCRAP
You are now holding it.
>HOLD IT TO LIGHT
(I assume you mean: the scrap of newsprint.)
That doesn't seem to help at all.
>EXAMINE IT CAREFULLY
(I assume you mean: the scrap of newsprint.)
There are some shiny lines on the scrap of newsprint, maybe invisible ink.
>L IN POCKET
Your pocket contains a gun, a timetable, a traveler's check, and your passport.
And some money.
>COUNT MONEY
You are carrying *49.
>COUNT SLIMPUKS
(Sorry, but the word "slimpuks" is not in the vocabulary that you can use.)
>LICK SCRAP
(I don't know the word "lick".)
>TURN ON WATER
(I don't know the word "water".)
>Q
(If you want to continue from this point at another time, you must "SAVE"
first.)
Do you want to stop the story now? >Y

1558
script.liz Normal file

File diff suppressed because it is too large Load Diff

812
script.md Normal file
View File

@ -0,0 +1,812 @@
[Automatic transcript: User is MD]
Copyright (c) 1985 Infocom, Inc. All rights reserved.
Welcome to CHECKPOINT (TM) - interactive fiction from Infocom!
[Note to testers: this story has the command GO TO, and the concept of not
being able to see things behind your back. The unit of currency in this story
is the Frotzian slimpuk, whose symbol is "*".
Messages in square brackets [] will not be in the final release.
Remember: you can shorten your words only to NINE (9) letters.
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]
Do you want the viewpoint of the traveler or the spy? >t
Do you want the short variation or the long one? >S
Then let the story begin!
With your business deal behind you, you want only to get out of this bleak
corner of Eastern Europe. The frontier is now only a few hours away, and from
there it's not far to Vienna, and civilization....
The ride seems endless, and you're dozing off again. The wheels of the train
are ticking like a clock, ticking off the segments of track you're passing, and
the compartment is rocking you back and forth, back and forth, making your
eyelids slowly close.
Your slumber is cut short as a man staggers into your compartment, panting
strangely. From his demeanor, you guess that he has drunk too much. But before
you can dismiss him, you notice that he's grasping a bright red spot on his
shirt. He speaks quietly, but in a hurry.
"I've got only a moment, so listen carefully! Since you were reading the
International Herald over lunch, I assume you're an American. I am an agent of
our government, and I've been sent to deliver a document to our special agent
in Gola. An enemy agent spotted me on the train, and I only barely managed to
escape." He groans softly, examining his wound.
"The best I can do now is throw the enemy off the scent, but I need you, and
your country needs you, to carry out my assignment." You start to interrupt, a
thousand questions racing through your mind. "There's no time! Here! Take my
briefcase, but be careful with it! Our enemies are all around us! My contact in
Gola is an old woman, and I was to display a pen, then use the words 'red
handkerchief' ...." Then he stops and listens. Before you can say anything, he
checks the corridor and races out.
CHECKPOINT
Infocom interactive fiction - a story of intrigue
Copyright (c) 1985 by Infocom, Inc. All rights reserved.
CHECKPOINT is a trademark of Infocom, Inc.
Release 11 / Serial number 850402 / Traveler's viewpoint, short variation
(fourth compartment)
This is a once-luxurious first-class compartment on the Znuk-Wien Express. The
plush red upholstery on the two facing seats, shiny and worn in spots, and the
greasy lace on the headrests, give the car an air of faded elegance. A red
handle is hanging by a short length of cord from the ceiling, swinging in time
to the train's rocking motion. The corridor is outside, past a window with a
red curtain on it.
The train is racing along a barren stubble-plain.
You notice a worn spot on the floor.
Sitting on the train seat is a briefcase.
Okay, what do you want to do now?
>EXAMINE BRIEFCASE
The train lurches a bit.
It's an expensive-looking case, built like a tank.
You hear some kind of noise from the roof of the train.
What next?
>OPEN THE BRIEFCASE
The latch is closed.
What next?
>OPEN THE LATCH
The metal latch snaps open.
Something outside the window catches your eye. It looks like the stranger
falling off the roof of the train.
What next?
>LOOK OUT WINDOW
The train is speeding along a barren stubble-plain.
What next?
>OPEN THE BRIEFCASE
Opening it reveals a document, a miniature camera, a cassette of film, a
magnifying glass, and a scrap of newsprint.
What next?
>EXAMINE DOCUMENT
The train lurches a bit.
It's not a very handsome document, scrawled in a hurry by a hand that wouldn't
win any prizes under the best of conditions. But it seems to contain crucial
information -- times, places, a crude map, even code words -- about a plan to
kidnap some high-ranking official tomorrow. Were the plan to succeed, several
governments would be embarrassed, if not in mortal danger, and the balance of
power would become precarious.
What next?
>EXAMINE NEWSPRINT
There doesn't seem to be anything written on the scrap of newsprint.
Just outside an attractive woman appears from the middle.
What next?
>EXAMINE FILM
The train lurches a bit.
It looks like instant film, in a special miniature format.
The attractive woman, just outside, disappears to the rear.
(You won't see "What next?" any more.)
>EXAMINE FILM THROUGH MAGNIFYING GLASS
(taking the cassette of film first)
(taking the magnifying glass first)
With the aid of the magnifying glass you can just make out what's on the film.
The whole film is unexposed.
>EXAMINE NEWSPAPER THROUGH MAGNIFYING GLASS
(You can't see any newspaper here.)
>EXAMINE NEWSPRINT THROUGH MAGNIFYING GLASS
(taking the scrap of newsprint first)
It looks the same, only much larger.
>I
You're holding a scrap of newsprint, a magnifying glass, and a cassette of
film.
And there's something in your pocket.
>TAKE THING FROM POCKET
(Sorry, but this story doesn't recognize the word "thing".)
>LOOK IN POCKET
Your pocket contains your ticket, a timetable, a traveler's check, and your
passport.
And some money.
>COUNT MONEY
You are carrying *49.
Just outside a fat man appears from the rear end.
>PUT ALL IN BRIEFCASE
scrap of newsprint: Okay.
magnifying glass: Okay.
cassette of film: Okay.
your ticket: Okay.
timetable: There's not enough room.
traveler's check: Okay.
your passport: There's not enough room.
The fat man enters, looks around, and sits down.
Then he notices the briefcase and takes it.
>TAKE BRIEFCASE
(You stand up first.)
The fat man holds it more tightly and looks at you defiantly.
Just outside a young couple appear from the rear end.
The fat man, carrying it, opens the compartment door for a moment and leaves.
>FOLLOW FAT MAN
The train lurches a bit.
(rear middle)
[You're facing to the right side of the train.]
This is the rear middle of the corridor. The floor and walls are covered with
cream-colored linoleum, worn away in spots to reveal the original hardwood
finish. A long series of windows, still framed by wood, runs along the corridor
on the right-hand side of the train.
The conductor is off to the front.
The young couple are here, walking along. They head off to the front.
The fat man is here, holding the briefcase and walking along. He heads off to
the rear.
>FOLLOW FAT MAN
(rear end)
[You're facing to the rear.]
This is the rear end of the corridor. On the left side of the train, behind a
windowed door, lies the fifth compartment.
The fat man is here, still holding the briefcase and walking along. He opens
the swinging door for a moment and heads off to the rear.
>FOLLOW FAT MAN
(You can't see any fat man here.)
>OPEN DOOR
(Which door do you mean, the compartment door or the swinging door?)
>SWINGING
The swinging door swings noisily open.
>REAR
(rear vestibule)
This is a small vestibule at the rear end of the car. There's a short flight of
metal steps on the left side of the train leading down off the train, and a
narrow metal ladder leading up to the roof. A small door leads to a restroom,
and a big window is open to the outside. A red handle is hanging by a short
length of cord from the ceiling, swinging in time to the train's rocking
motion. The train is racing along a barren stubble-plain.
The clatter of the wheels on the track is almost deafening.
The swinging door automatically swings shut.
The fat man, carrying the briefcase, off to the rear, opens the swinging door
for a moment and disappears to the rear.
>OPEN DOOR
(Which door do you mean, the restroom door or the swinging door?)
>SWINGING
The swinging door swings noisily open.
The conductor stops here to punch tickets.
>REAR
[Debugging info: you are entering car #3.]
(forward vestibule)
This is a small vestibule at the forward end of the car. It's just like the
rear vestibule, but with no steps or ladder.
>REAR
(You open the swinging door and close it again.)
The relative quiet here is welcome. The smell of food is unmistakable.
(forward end)
This is the forward end of the corridor. On the left side of the train lies the
first booth.
The fat man, carrying the briefcase, is off to the rear, heading away from you.
>REAR
The train lurches a bit.
(forward middle)
This is the forward middle of the corridor. On the left side of the train lies
the second booth.
The fat man is off to the rear, heading away from you.
>REAR
(middle)
This is the middle of the corridor. On the left side of the train lies the
third booth.
The attractive woman is in the third booth.
The fat man, off to the rear, opens the swinging door for a moment and
disappears to the rear.
>REAR
(rear middle)
This is the rear middle of the corridor. On the left side of the train lies the
pantry.
A waiter is in the pantry.
>REA
(I don't know the word "rea".)
>REAR
(rear end)
This is the rear end of the corridor. On the left side of the train lies the
galley.
A cook is in the galley.
>REAR
(You open the swinging door and close it again.)
(rear vestibule)
A cigarette machine stands in one corner, waiting to be either used or
discarded -- it's hard to say which.
>REAR
[Debugging info: you are entering car #4.]
(forward vestibule)
>REAR
(You open the swinging door and close it again.)
The relative quiet here is welcome.
(forward end)
This is the forward end of the corridor. On the left side of the train, behind
a windowed door, lies the first compartment.
There's an attractive man here, gazing out the window.
The fat man, carrying the briefcase, is off to the rear, heading away from you.
>REAR
(forward middle)
This is the forward middle of the corridor. On the left side of the train,
behind a windowed door, lies the second compartment.
The fat man is off to the rear, heading away from you.
>REAR
(middle)
This is the middle of the corridor. On the left side of the train, behind a
windowed door, lies the third compartment.
The fat man, off to the rear, opens the swinging door for a moment and
disappears to the rear.
>REAR
(rear middle)
>REAR
(rear end)
>REAR
(You open the swinging door and close it again.)
(rear vestibule)
A middle-aged couple are off to the rear.
>REAR
The train lurches a bit.
[Debugging info: you are entering car #5.]
(forward vestibule)
The middle-aged couple are here, looking at you with suspicion.
>REAR
(You open the swinging door and close it again.)
The relative quiet here is welcome.
(forward end)
A thin man is off to the rear.
The fat man, carrying the briefcase, is off to the rear, heading away from you.
>REAR
(forward middle)
The thin man is off to the rear.
The fat man is off to the rear, heading away from you.
The train is now rocketing past a dark, violent river.
>REAR
(middle)
An old couple are in the third compartment.
The thin man is off to the rear.
You notice marks and scratches on the walls.
The fat man, off to the rear, opens the compartment door for a moment and
enters the fifth compartment.
>REAR
(rear middle)
The thin man is here, reading a newspaper.
Off to the rear the fat man, carrying the briefcase, appears.
>REAR
(rear end)
The fat man is here, holding the briefcase and walking along. He heads off to
the front.
>FRONT
(rear middle)
[You're facing to the front.]
The thin man is here, still reading a newspaper.
Off to the front the conductor appears from the forward vestibule.
The fat man is here, holding the briefcase and about to leave.
He heads off to the rear.
>REAR
The train lurches a bit.
(rear end)
[You're facing to the rear.]
The fat man is here, holding the briefcase and looking in your direction.
>HIT FAT MAN
The train lurches a bit.
He blocks your thrust and knocks you unconscious....
You shake your head and come to.
>L
(rear end)
(You're facing to the rear, but you look in all directions for a moment.)
This is the rear end of the corridor. The floor and walls are covered with
cream-colored linoleum, worn away in spots to reveal the original hardwood
finish. A long series of windows, still framed by wood, runs along the corridor
on the right-hand side of the train. On the left side of the train, behind a
windowed door, lies the fifth compartment.
The thin man is off to the front.
>ENTER FIFTH COMPARTMENT
(You stand up first.)
(fifth compartment)
[You're facing to the left side of the train.]
There's an old couple here, talking quietly.
>EXAMINE COUPLE
The train lurches a bit.
They are dressed for business, in shades of gray, with a strange odor. They
have a birthmark on one cheek like a wine stain.
>SEARCH COUPLE
The train lurches a bit.
They push you away and mutter, "Azit jon chofrp frobnoshbobnash lizjer?"
>HIT COUPLE
The train lurches a bit.
They slap you right back. Wow, is your face red!
The train is now rocketing along the edge of a rocky precipice.
>RESTART
Do you want to start over from the beginning? >Y
Copyright (c) 1985 Infocom, Inc. All rights reserved.
Welcome to CHECKPOINT (TM) - interactive fiction from Infocom!
[Note to testers: this story has the command GO TO, and the concept of not
being able to see things behind your back. The unit of currency in this story
is the Frotzian slimpuk, whose symbol is "*".
Messages in square brackets [] will not be in the final release.
Remember: you can shorten your words only to NINE (9) letters.
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]
Do you want the viewpoint of the traveler or the spy? >T
Do you want the short variation or the long one? >S
Then let the story begin!
With your business deal behind you, you want only to get out of this bleak
corner of Eastern Europe. The frontier is now only a few hours away, and from
there it's not far to Vienna, and civilization....
The ride seems endless, and you're dozing off again. The wheels of the train
are ticking like a clock, ticking off the segments of track you're passing, and
the compartment is rocking you back and forth, back and forth, making your
eyelids slowly close.
Your slumber is cut short as a man staggers into your compartment, panting
strangely. From his demeanor, you guess that he has drunk too much. But before
you can dismiss him, you notice that he's grasping a bright red spot on his
shirt. He speaks quietly, but in a hurry.
"I've got only a moment, so listen carefully! Since you were reading the
International Herald over lunch, I assume you're an American. I am an agent of
our government, and I've been sent to deliver a document to our special agent
in Gola. An enemy agent spotted me on the train, and I only barely managed to
escape." He groans softly, examining his wound.
"The best I can do now is throw the enemy off the scent, but I need you, and
your country needs you, to carry out my assignment." You start to interrupt, a
thousand questions racing through your mind. "There's no time! Here! Take my
briefcase, but be careful with it! Our enemies are all around us! My contact in
Gola is an old woman, and I was to display a pen, then use the words 'red
handkerchief' ...." Then he stops and listens. Before you can say anything, he
checks the corridor and races out.
CHECKPOINT
Infocom interactive fiction - a story of intrigue
Copyright (c) 1985 by Infocom, Inc. All rights reserved.
CHECKPOINT is a trademark of Infocom, Inc.
Release 11 / Serial number 850402 / Traveler's viewpoint, short variation
(second compartment)
This is a once-luxurious first-class compartment on the Znuk-Wien Express. The
plush red upholstery on the two facing seats, shiny and worn in spots, and the
greasy lace on the headrests, give the car an air of faded elegance. A red
handle is hanging by a short length of cord from the ceiling, swinging in time
to the train's rocking motion. The corridor is outside, past a window with a
red curtain on it.
The train is speeding along a barren stubble-plain.
Sitting on the train seat is a briefcase.
Okay, what do you want to do now?
>TAKE BRIEFCASE
The train lurches a bit.
The train's lurching puts you off balance, and you miss it.
You hear some kind of noise from the roof of the train.
What next?
>G
The train lurches a bit.
The train's lurching puts you off balance, and you miss it.
What next?
>G
You are now holding it.
Something outside the window catches your eye. It looks like the stranger
falling off the roof of the train.
What next?
>OUT
The train lurches a bit.
(You stand up first.)
(You open the compartment door and close it again.)
(forward middle)
[You're facing to the right side of the train.]
This is the forward middle of the corridor. The floor and walls are covered
with cream-colored linoleum, worn away in spots to reveal the original hardwood
finish. A long series of windows, still framed by wood, runs along the corridor
on the right-hand side of the train.
An old woman is off to the rear.
What next?
>REAR
(middle)
[You're facing to the rear.]
This is the middle of the corridor. On the left side of the train, behind a
windowed door, lies the third compartment.
The old woman is here, gazing out the window.
What next?
>EXAMINE WOMAN
She is dressed for an outing, in shades of purple, with a cane. She has a wart
that's hard to avoid looking at.
What next?
>REAR
The train lurches a bit.
(rear middle)
This is the rear middle of the corridor. On the left side of the train, behind
a windowed door, lies the fourth compartment.
A boy is in the fourth compartment.
What next?
>LOOK AT BOY
He is dressed for business, in shades of brown, with an umbrella.
(You won't see "What next?" any more.)
>REAR
(rear end)
This is the rear end of the corridor. On the left side of the train, behind a
windowed door, lies the fifth compartment.
>REAR
(You open the swinging door and close it again.)
(rear vestibule)
This is a small vestibule at the rear end of the car. There's a short flight of
metal steps on the left side of the train leading down off the train, and a
narrow metal ladder leading up to the roof. A small door leads to a restroom,
and a big window is open to the outside. A red handle is hanging by a short
length of cord from the ceiling, swinging in time to the train's rocking
motion. The train is speeding along a barren stubble-plain.
The clatter of the wheels on the track is almost deafening.
There's a middle-aged couple here, looking at you with suspicion.
Off to the rear a fat man appears from the forward end.
>U
The rungs of the ladder are cold, the wind fierce, and the train bucks like a
wild animal, but somehow you manage to make it to the roof. Your sense of
satisfaction, however, is short-lived when you notice that the train is rapidly
approaching a tunnel.
(roof)
You are on the roof of the train. The wind blows your hair, and the rocking,
lurching train threatens to buck you right off. It occurs to you that this
might not be the safest place to be right now.
>D
(rear vestibule)
The fat man is here, walking along. The middle-aged couple are here, still
looking at you with suspicion.
He pauses a minute.
An attractive man opens the swinging door for a moment and walks past you from
the front.
>OPEN DOOR
(Which door do you mean, the restroom door or the swinging door?)
>RESTROOM
Too bad, but it is locked.
The attractive man heads off to the rear.
The train is now hurtling through a dark tunnel.
>EXAMINE COUPLE
They are dressed for an outing, in shades of blue, with a beret. Their teeth
and fingers are well-stained with nicotine.
The attractive man, off to the rear, opens the swinging door for a moment and
disappears to the rear.
>PULL RED HANDLE
The air fills with the high-pitched whine of metal on metal, and you are thrown
violently forward as the train comes to an emergency stop.
>FORWARD
(You open the swinging door and close it again.)
(rear end)
[You're facing to the front.]
The conductor, the girl and the old woman are off to the front.
The fat man pauses a minute.
>FORWARD
(rear middle)
The boy is in the fourth compartment.
The conductor, the girl and the old woman are off to the front.
The fat man pauses a minute.
>WAIT
(I assume you mean: wait 10 minutes.)
Time passes...
A whistle sounds, and the train briefly shudders and starts moving again.
The conductor punches the girl's ticket.
The girl is off to the front, heading away from you.
Do you want to keep waiting? >N
The time is now 13.41.
>F
(middle)
The conductor is here, making his rounds. The old woman is here, still gazing
out the window.
He makes a gesture, asking for your ticket.
The girl is off to the front, heading away from you.
The fat man pauses a minute.
>GIVE TICKET TO CONDUCTOR
The conductor punches your ticket and then gives it back to you.
He punches the fat man's ticket.
The girl, off to the front, opens the swinging door for a moment and disappears
to the front.
>F
(forward middle)
The fat man pauses a minute.
>F
(forward end)
This is the forward end of the corridor. On the left side of the train, behind
a windowed door, lies the first compartment.
The fat man pauses a minute.
>F
(You open the swinging door and close it again.)
(forward vestibule)
This is a small vestibule at the forward end of the car. It's just like the
rear vestibule, but with no steps or ladder.
The fat man pauses a minute.
>F
[Debugging info: you are entering car #1.]
(rear vestibule)
The fat man walks past you from the rear.
>F
(You open the swinging door and close it again.)
The relative quiet here is welcome.
(rear end)
An old couple are in the fifth compartment.
The girl is off to the front, heading away from you.
>EXAMINE COUPLE
They are dressed for business, in shades of gray, with a strange odor.
The girl is off to the front, heading away from you.
The fat man pauses a minute.
>F
(rear middle)
The girl, off to the front, opens the compartment door for a moment and enters
the first compartment.
The fat man pauses a minute.
>F
(middle)
A thin woman is in the third compartment.
The fat man pauses a minute.
>F
The train lurches a bit.
(forward middle)
An old man is in the second compartment.
The fat man pauses a minute.
>F
The train lurches a bit.
(forward end)
The girl is in the first compartment.
The fat man pauses a minute.
>ENTER FIRST
(I couldn't find enough nouns in that sentence!)
>ENTER
The train lurches a bit.
(You open the compartment door and close it again.)
(first compartment)
[You're facing to the left side of the train.]
The girl is here, smoking a cigarette.
The fat man enters and sits down.
>EXAMINE GIRL
She is dressed for a long trip, in shades of red, with a brown-paper package.
Her glittering black eyes turn away whenever you try to look into them.
>TAKE PACKAGE
(You don't need to use the word "package" to finish this story.)
>EXIT
(You open the compartment door and close it again.)
(forward end)
[You're facing to the right side of the train.]
The fat man pauses a minute.
>;SHOULDN'T IT MENTION THAT THE FAT MAN GOT UP AND FOLLOWED ME?
GO TO THIRD CAR
(You can't see any third car here!)
>GO TO LADDER
(Please be more specific.)
>QUIT
(If you want to continue from this point at another time, you must "SAVE"
first.)
Do you want to stop playing now? >Y

9408
script.scf Normal file

File diff suppressed because it is too large Load Diff

802
script.swg Normal file
View File

@ -0,0 +1,802 @@
[Automatic transcript: User is SWG]
Copyright (c) 1985 Infocom, Inc. All rights reserved.
Welcome to CHECKPOINT (TM) - interactive fiction from Infocom!
[Note to testers: this story has the command GO TO, and the concept of not
being able to see things behind your back. The unit of currency in this story
is the Frotzian slimpuk, whose symbol is "*".
Messages in square brackets [] will not be in the final release.
Remember: you can shorten your words only to NINE (9) letters.
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]
Do you want the viewpoint of the traveler or the spy? >S
Do you want the short variation or the long one? >S
Then let the story begin!
Why did you want to be a spy anyway? You could have had a nice restful job,
like an air-traffic controller. You could have tended flowers behind a white
picket fence around your country cottage. At least they could let you grab a
few winks between one job and the next. But no -- you finish debriefing in some
dirty little city in Frotzerland, and before you can even find a phone book,
let alone a hotel, they volunteer you for another assignment.
"You've got to intercept a document!" they told you. "Then deliver it to our
agent in Gola so the leak can be traced. We don't know where it is for sure,
but we think it's in a briefcase that's leaving town on the next train. You're
the only agent that's close enough and experienced enough to be sent after it.
And at the end of the trip, there will be a plane ticket to home waiting for
you."
So that's why you're climbing all over this stupid train. Finding the briefcase
was easy enough, but the dude carrying it was something else. Even your
well-placed bullet didn't make him drop. Now, if only he'll take the bait and
follow you up here, you can .... Wait! Here he comes from the forward end! But
he's not carrying the case!
CHECKPOINT
Infocom interactive fiction - a story of intrigue
Copyright (c) 1985 by Infocom, Inc. All rights reserved.
CHECKPOINT is a trademark of Infocom, Inc.
Release 15 / Serial number 850404 / Spy's viewpoint, short variation
(roof)
You are on the roof of the train. The wind blows your hair, and the rocking,
lurching train threatens to buck you right off. It occurs to you that this
might not be the safest place to be right now.
The other spy is here, preparing to knock you off.
Okay, what do you want to do now?
>#DBG
Find them bugs, boss!
Okay, what do you want to do now?
>KILL SPY
(with the gun)
[Perform: 93/other spy/gun]
The train lurches a bit.
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: You go for him, but he dodges. He hesitates, then lunges at you!
Handled]
[Room (M-END): Not handled]
[The conductor punches a regal woman's ticket.]
[GOAL: old couple at second booth (car #3) to first compartment (car #2).]
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 93/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: He dodges away. A sudden lurch knocks you off balance, and your last
sight is the ground speeding up to meet you.
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[Enroute: [Enroute: Not handled]
Not handled]
[conductor is in (car #1) the other forward end.
]
[Enroute: [Enroute: Not handled]
Not handled]
[old couple is in (car #3) the forward middle (diner).
]
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 93/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: You go for him, but he dodges. He hesitates, then lunges at you!
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[Enroute: [Enroute: [The conductor stops to punch tickets.
Handled]
Handled]
[conductor is in (car #1) the other forward middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[old couple is in (car #3) the forward end (diner).
]
[GOAL: regal woman at other front vestibule (car #1) to first booth (car #3).]
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 93/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: You go for him, but he dodges. He hesitates, preparing his next move.
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[The conductor punches a thin man's ticket.]
[Enroute: [Enroute: Not handled]
Not handled]
[old couple is in (car #3) the forward vestibule (diner).
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #1) the other forward end.
]
The other spy slips but then regains his footing.
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 93/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: He dodges away. A sudden lurch knocks you off balance, and your last
sight is the ground speeding up to meet you.
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[The conductor punches a boy's ticket.]
[Reached: Not handled]
[old couple is in (car #2) the diner forward limbo.
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #1) the other forward middle.
]
The other spy leaps at you and tries to kick your feet out from under you. You
respond with your best moves. But after wrestling together for what seems like
ages, you both reach the edge of the roof and plunge over it!
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 93/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: You go for him, but he dodges. He hesitates, preparing his next move.
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[Enroute: [Enroute: [The conductor stops to punch tickets.
Handled]
Handled]
[conductor is in (car #1) the other middle.
]
[Enroute: Not handled]
[old couple is in (car #2) the other rear end.
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #1) the other middle.
]
The other spy crouches low and prepares to lunge.
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 93/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[PRSI: Not handled]
[PRSO: You lunge at him and almost miss, but he loses footing and falls off the
edge of the roof! The train quickly leaves his body behind.
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[The conductor punches a young couple's ticket.]
[Enroute: Not handled]
[old couple is in (car #2) the other rear middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #1) the other rear middle.
]
What next?
>#GOAL
[Perform: 7]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
conductor: other rear limbo/I:0/Q:rear vestibule(car #5) (DISABLED)
[I-WALK-TRAIN: [I-CONDUCTOR:
old couple: other forward end/F:other first compartment/I:0 [I-EXTRA: [I-EXTRA:
regal woman: other rear limbo/I:0/Q:first booth(car #3) [I-WALK-TRAIN:
[STOP-WALKING-F:
(You won't see "What next?" any more.)
>
I beg your pardon?
>L
[Perform: 105]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(roof)
You are on the roof of the train. The wind blows your hair, and the rocking,
lurching train threatens to buck you right off. It occurs to you that this
might not be the safest place to be right now.
[Room (M-END): Not handled]
[Enroute: [Enroute: [The conductor stops to punch tickets.
Handled]
Handled]
[conductor is in (car #1) the other rear middle.
]
[Enroute: Not handled]
[old couple is in (car #2) the other middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #1) the other rear end.
]
>D
[Perform: 185/58]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(rear vestibule)
This is a small vestibule at the rear end of the car. There's a short flight of
metal steps on the left side of the train leading down off the train, and a
narrow metal ladder leading up to the roof. A small door leads to a restroom,
and a big window is open to the outside. A red handle is hanging by a short
length of cord from the ceiling, swinging in time to the train's rocking
motion. The train is hurtling along a barren stubble-plain.
The clatter of the wheels on the track is almost deafening.
A cigarette machine stands in one corner, waiting to be either used or
discarded -- it's hard to say which.
[Room (M-END): Not handled]
[The conductor punches a young woman's ticket.]
[Enroute: Not handled]
[old couple is in (car #2) the other forward middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #1) the other rear vestibule.
]
>F
[Perform: 185/63]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(You open the swinging door and close it again.)
The relative quiet here is welcome. The smell of food is unmistakable.
(rear end)
[You're facing to the front.]
This is the rear end of the corridor. The floor and walls are covered with
cream-colored linoleum, worn away in spots to reveal the original hardwood
finish. A long series of windows, still framed by wood, runs along the corridor
on the right-hand side of the train. On the left side of the train lies the
galley.
A cook is in the galley.
[Room (M-END): Not handled]
[Enroute: [Enroute: [The conductor stops to punch tickets.
Handled]
Handled]
[conductor is in (car #1) the other rear end.
]
[Enroute: Not handled]
[old couple is in (car #2) the other forward end.
]
[Reached: Not handled]
[regal woman is in (car #2) the other rear limbo.
]
>IN
[Perform: 185/57]
The train lurches a bit.
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(galley)
[You're facing to the left side of the train.]
The galley is crowded with supplies and equipment. The locked cabinets are
probably filled with food, kettles, and kitchen tools. There's a crowded
counter for preparing food. If you want to find something, you'll have to
search for it.
[ndescbit] There's a knife on the floor.
[ndescbit] There's a counter on the floor.
[ndescbit] There's a plate of thin gruel on the floor.
The cook is here, cooking.
[Room (M-END): He makes a pushing motion with one hand and points forward with
the other. He seems angry that you're invading his space.
Not handled]
[The conductor punches a young man's ticket.]
[Reached: [CALL-FOR-EXTRA@third booth: boy
Not handled]
[old couple is in (car #2) the other first compartment.
]
[Enroute: [Enroute: Not handled]
Not handled]
[regal woman is in (car #2) the other forward end.
]
[GOAL: boy at third booth (car #3) to first compartment (car #4).]
>GIVE COOK *50
(You don't seem to be holding the number!)
>
I beg your pardon?
>
I beg your pardon?
>
I beg your pardon?
>RESTART
[Perform: 128]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
Do you want to start over from the beginning? >Y
Copyright (c) 1985 Infocom, Inc. All rights reserved.
Welcome to CHECKPOINT (TM) - interactive fiction from Infocom!
[Note to testers: this story has the command GO TO, and the concept of not
being able to see things behind your back. The unit of currency in this story
is the Frotzian slimpuk, whose symbol is "*".
Messages in square brackets [] will not be in the final release.
Remember: you can shorten your words only to NINE (9) letters.
But you can use C for COMPARTMENT, V for VESTIBULE, and F for FORWARD.]
Do you want the viewpoint of the traveler or the spy? >S
Do you want the short variation or the long one? >S
Then let the story begin!
Why did you want to be a spy anyway? You could have had a nice restful job,
like an air-traffic controller. You could have tended flowers behind a white
picket fence around your country cottage. At least they could let you grab a
few winks between one job and the next. But no -- you finish debriefing in some
dirty little city in Frotzerland, and before you can even find a phone book,
let alone a hotel, they volunteer you for another assignment.
"You've got to intercept a document!" they told you. "Then deliver it to our
agent in Gola so the leak can be traced. We don't know where it is for sure,
but we think it's in a briefcase that's leaving town on the next train. You're
the only agent that's close enough and experienced enough to be sent after it.
And at the end of the trip, there will be a plane ticket to home waiting for
you."
So that's why you're climbing all over this stupid train. Finding the briefcase
was easy enough, but the dude carrying it was something else. Even your
well-placed bullet didn't make him drop. Now, if only he'll take the bait and
follow you up here, you can .... Wait! Here he comes from the forward end! But
he's not carrying the case!
CHECKPOINT
Infocom interactive fiction - a story of intrigue
Copyright (c) 1985 by Infocom, Inc. All rights reserved.
CHECKPOINT is a trademark of Infocom, Inc.
Release 15 / Serial number 850404 / Spy's viewpoint, short variation
(roof)
You are on the roof of the train. The wind blows your hair, and the rocking,
lurching train threatens to buck you right off. It occurs to you that this
might not be the safest place to be right now.
The other spy is here, preparing to knock you off.
Okay, what do you want to do now?
>#DBG
Find them bugs, boss!
Okay, what do you want to do now?
>GET OFF OF ROOF
[Perform: 166/that thing]
The train lurches a bit.
[Not Here: (You can't see any roof here!)
Fatal]
Okay, what do you want to do now?
>
I beg your pardon?
Okay, what do you want to do now?
>
I beg your pardon?
Okay, what do you want to do now?
>
I beg your pardon?
Okay, what do you want to do now?
>L
[Perform: 105]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(roof)
You are on the roof of the train. The wind blows your hair, and the rocking,
lurching train threatens to buck you right off. It occurs to you that this
might not be the safest place to be right now.
The other spy is here, still preparing to knock you off.
[Room (M-END): Not handled]
[GOAL: young couple at first booth (car #3) to second compartment (car #4).]
He leaps at you and tries to kick your feet out from under you. You respond
with your best moves. But after wrestling together for what seems like ages,
you both reach the edge of the roof and plunge over it!
What next?
>D
[Perform: 185/58]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
The other spy blocks your way.
[Enroute: [Enroute: Not handled]
Not handled]
[conductor is in (car #1) the other forward end.
]
[Enroute: [Enroute: Not handled]
Not handled]
[young couple is in (car #3) the forward end (diner).
]
He slips but then regains his footing.
What next?
>SHOOT IM
(You don't need to use the word "im" to finish this story.)
What next?
>SHOOT HIM
(with the gun)
[Perform: 150/him(gl)/gun]
[other spy:LO]
(I assume you mean: the other spy.)
[him=other spy]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: Not handled]
[PRSI: Not handled]
[PRSO: Your shot goes wild. He hesitates, then lunges at you!
Handled]
[Room (M-END): Not handled]
[Enroute: [Enroute: [The conductor stops to punch tickets.
Handled]
Handled]
[conductor is in (car #1) the other forward middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[young couple is in (car #3) the forward middle (diner).
]
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 150/him(gl)/gun]
[conductor:NA]
(I assume you mean: the conductor.)
[him=conductor]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: Not handled]
[PRSI: Not handled]
[PRSO: (He isn't here!)
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
What next?
>SHOOT SPY
(with the gun)
[Perform: 150/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: Not handled]
[PRSI: Not handled]
[PRSO: Your shot goes wild. He hesitates, then lunges at you!
Handled]
[Room (M-END): Not handled]
[The conductor punches an old woman's ticket.]
[Enroute: [Enroute: Not handled]
Not handled]
[young couple is in (car #3) the middle (diner).
]
What next?
>G
[Perform: 11]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Perform: 150/other spy/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: Not handled]
[PRSI: Not handled]
[PRSO: Your shot almost misses, but it wings him and he falls off the edge of
the roof! The train quickly leaves his body behind.
Handled]
[Room (M-END): Not handled]
[Room (M-END): Not handled]
[Enroute: [Enroute: Not handled]
Not handled]
[conductor is in (car #1) the other middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[young couple is in (car #3) the rear middle (diner).
]
What next?
>VERSION
[Perform: 181]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
CHECKPOINT
Infocom interactive fiction - a story of intrigue
Copyright (c) 1985 by Infocom, Inc. All rights reserved.
CHECKPOINT is a trademark of Infocom, Inc.
Release 15 / Serial number 850404 / Spy's viewpoint, short variation
(You won't see "What next?" any more.)
>SAVE
[Perform: 135]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(In this variation, 1 minute will pass in the story before you can type another
command. Are you sure you want to SAVE now? >Y
Okay.)
To file: ROOF.SPY.15Okay.
[Room (M-END): Not handled]
[Enroute: [Enroute: Not handled]
Not handled]
[conductor is in (car #1) the other rear middle.
]
[Enroute: [Enroute: Not handled]
Not handled]
[young couple is in (car #3) the rear end (diner).
]
>D
[Perform: 185/58]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(rear vestibule)
This is a small vestibule at the rear end of the car. There's a short flight of
metal steps on the left side of the train leading down off the train, and a
narrow metal ladder leading up to the roof. A small door leads to a restroom,
and a big window is open to the outside. A red handle is hanging by a short
length of cord from the ceiling, swinging in time to the train's rocking
motion. The train is rocketing along a barren stubble-plain.
The clatter of the wheels on the track is almost deafening.
A thin man is off to the rear.
A cigarette machine stands in one corner, waiting to be either used or
discarded -- it's hard to say which.
[Room (M-END): Not handled]
[Enroute: [Enroute: [The conductor stops to punch tickets.
Handled]
Handled]
[conductor is in (car #1) the other rear end.
]
A young couple open the swinging door for a moment and walk past you from the
front.
[Enroute: [Enroute: Handled]
Handled]
[young couple is in (car #3) the rear vestibule (diner).
]
>#WHERE
[Perform: 10]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
yourself is in (car #3) the rear vestibule (diner).
conductor is in (car #1) the other rear end.
waiter is in (car #3) the pantry (diner).
cook is in (car #3) the galley (diner).
young couple is in (car #3) the rear vestibule (diner).
stranger is nowhere.
thin man is in (car #4) the other front vestibule.
fat man is in (car #2) the forward end.
attractive man is in (car #4) the other rear vestibule.
attractive woman is in (car #2) the other fifth compartment.
regal woman is in (car #1) the other fifth compartment.
thin woman is in (car #2) the forward middle.
guard is in (car #2) the platform (1).
large man is nowhere.
small man is in (car #2) the third suite (fancy).
old couple is in (car #5) the other fifth compartment.
middle-aged couple is in (car #5) the other third compartment.
young couple is in (car #3) the rear vestibule (diner).
girl is in (car #2) the second compartment.
boy is in (car #4) the other forward end.
old woman is in (car #1) the other second compartment.
old man is in (car #2) the rear restroom.
young woman is in (car #2) the forward vestibule.
young man is in (car #5) the other rear restroom.
>R
[Perform: 185/61]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
[Debugging info: you are entering car #4.]
(forward vestibule)
[You're facing to the rear.]
This is a small vestibule at the forward end of the car. It's just like the
rear vestibule, but with no steps or ladder.
The thin man is here, looking at you with suspicion.
There's a young woman here, reading a newspaper.
[Room (M-END): Not handled]
[The conductor punches a regal woman's ticket.]
The young couple walk along with you.
[Reached: Not handled]
[young couple is in (car #4) the diner rear limbo.
]
>SHOOT THIN MAN
(with the gun)
[Perform: 150/thin man/gun]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: Not handled]
[PRSI: Not handled]
[PRSO: He slumps on the floor.
The young couple stare at him for a moment, not believing their eyes. Then they
leave in a hurry.
Handled]
[Room (M-END): Not handled]
[GOAL: attractive man at rear vestibule (car #4) to second booth (car #3).]
>L
[Perform: 105]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Action:]
(forward vestibule)
(You're facing to the rear, but you look in all directions for a moment.)
This is a small vestibule at the forward end of the car. It's just like the
rear vestibule, but with no steps or ladder. A small door leads to a restroom,
and a big window is open to the outside. A red handle is hanging by a short
length of cord from the ceiling, swinging in time to the train's rocking
motion. The train is speeding along a barren stubble-plain.
The clatter of the wheels on the track is almost deafening.
The thin man is here, dead.
The young woman is here, still reading a newspaper.
[Room (M-END): Not handled]
[Enroute: [Enroute: Not handled]
Not handled]
[attractive man is in (car #4) the rear end.
]
>TAKE THIN MAN
[Perform: 32/thin man]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: You try to pick up the body, but the gun keeps getting in the way.
Handled]
[Room (M-END): Not handled]
[Enroute: [Enroute: Not handled]
Not handled]
[attractive man is in (car #4) the rear middle.
]
>PUT GUN IN POCKET
[Perform: 58/gun/your pocket]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: Not handled]
[PRSI: Not handled]
[PRSO: Not handled]
[Action:]
Okay.
[Room (M-END): Not handled]
[Enroute: [Enroute: Not handled]
Not handled]
[attractive man is in (car #4) the middle.
]
>TAKE THIN MAN
[Perform: 32/thin man]
[yourself=][Actor: Not handled]
[Room (M-BEG): Not handled]
[Preaction: You try to pick up the body, but your pocket keeps getting in the
way.
Handled]
[Room (M-END): Not handled]
The conductor approaches, accompanied by two grim-faced soldiers armed with
machine guns. They take things like homicide very seriously here. He isn't
smiling as he says, "E qwamrkniglip glob floo gorm frobbobnosh."
After your arrest and a little gentle persuasion with beatings, cigarette burns
and starvation, you confess to the crime of espionage. Within days your
confession is front-page news around the world. And the Cold War gets a little
bit hotter...
[Enroute: [Enroute: Not handled]
Not handled]
[attractive man is in (car #4) the forward middle.
]
>

1138
spies.cmp Normal file

File diff suppressed because it is too large Load Diff

146
spies.txt Normal file
View File

@ -0,0 +1,146 @@
SCRIPTS FOR YOUR OPPONENT IN "CHECKPOINT"
Note: O = opponent, C = compartment, RV = rear vestibule, PO = passobject.
Rules:
If you knock out O, script is suspended until O wakes up.
If you kill O, script is suspended forever.
If O is spy and you show McGuffin to him/her, O shoots you on the spot.
"S" script ("spy"):
0. If you take traveler's viewpoint, this begins when stranger is killed.
1. O starts at RV in car just behind yours and heads for "your" C.
(Reason: O is looking for case and saw stranger reach roof from your
car.)
2. If O reaches room where case is (and not hidden), O heads for that room.
3. If O reaches room where blood spot is, O heads for that room.
4. If O sees you and case is in same place as you, O heads for you and
starts "FY" script.
5. When O reaches destination,
5a. If blood spot is on floor: If O can see you, O starts "FY"
script. If O can see case, O "looks triumphant".
5b. In any case: If you're holding case or O can't see it, O heads
for C1 behind diner. Else O takes case and starts "WC" script.
"T" script ("traveler"):
0. If you take spy's viewpoint, this begins 10-15 minutes after story begins.
1. If O isn't holding case:
1a. If case is sitting on floor, O takes it.
1b. If case is elsewhere in room, O "tries" to take it.
1c. Otherwise, O heads for your location and starts "FY" script.
2. O examines latch, turns it, opens it, opens case, examines scrap.
(1 min each)
3. O examines case. If McGuffin not in case, go to step 5.
4. O takes camera, examines it, opens it, examines film, loads camera,
closes it, cocks it, photographs McGuffin, opens camera, pockets film,
puts away camera. (1 min each)
5. O closes case, closes latch, turns latch (if long var.), takes case.
(1 min each)
6. If PO is knife, O heads for diner's RV and starts "SK" script.
7. If PO is flower, O heads for RV (if O not in restroom) and starts
"SF" script.
8. Else, O heads for nearest restroom and starts "FM" script.
"AR" event ("train arrives at station"):
1. If you are spy and station is Frbz or Gola, O heads for platform and
starts "FC" script.
2. If you are spy and station is Knut and O has PO:
2a. If you are not on train and O is on platform, O boards train,
heads for C5 and continues "T" script.
2b. Else, O heads for RV and starts "ST" script.
3. If O is following "I" script, O heads for RV.
"DP" event ("train departs from station"):
1. If O has identified you, O (boards train and) heads for you.
"F" script ("flee"):
When O reaches destination, O continues "T" script.
"FC" script ("find contact"):
1. O walks from one end of platform to other, looking for contact.
2. If and when O finds contact, O shows PO, and talks to contact (1
min each).
2a. If station is not Gola, contact whispers and O starts "RR" script.
2b. If O has film, O gives it to contact, and story is over.
"FM" script ("flush McGuffin"):
When O reaches restroom, O flushes McGuffin (1 min) and waits.
"FY" script ("follow you"):
1. En route, if O discovers case and you're not holding it, O takes it
and starts "WC" script. Else if O can't see you, O heads for you.
2. If O reaches destination, O waits until you move again. But if you
are still there, alone in a C or booth, O immediately threatens you with
gun.
3. While O waits: If you stay in a C or booth, O threatens you with gun.
Else O heads for your location.
4. After gun threat, if you don't leave immediately, O shoots you dead.
"I" script ("imitate"):
1. When O reaches RV, O leaves train and heads for north end of platform.
2. When O reaches north end (not at checkpoint), O heads for south end.
3. When O reaches north end (at checkpoint) or O reaches south end, O
boards train and heads for C5 in car #5.
4. En route, O searches the crowd.
"PC" script ("passed customs"):
1. When O reaches any destination but diner RV,
1a. If PO is lighter, O heads for diner RV.
1b. If PO is flower, O heads for RV and waits.
2. When O reaches diner RV, O kicks machine, starts "SL" script and
heads for front of train.
"RR" script ("restroom"):
1. O heads for restroom of contact's gender.
"SF" script ("seek flower"):
1. When O reaches destination, O waits.
2. When train reaches meadow, train stops, O leaves restroom (if in
one), leaves train, picks flower, boards train (1 min each), and waits.
"SK" script ("seek knife"):
1. When O reaches diner RV, O pulls stop cord and heads for galley.
2. When O reaches galley, O takes knife and heads for C1 in next car rear.
3. When O reaches C1, O waits.
"SL" script ("seek lighter"):
1. When O reaches front of train, O heads for rear of train, and vice
versa. En route, O tries to acquire lighter from passenger.
2. If O acquires lighter, O heads for rear of train.
"ST" script ("seek ticket"):
0. When train reaches Knut, O leaves restroom if in one.
1. When O reaches RV, O leaves train and heads for ticket area.
2. When O reaches ticket area, O buys ticket for Gola and heads for
middle of platform.
3. When O reaches there, O waits.
"WC" script ("with case"):
0. If you talk to O, O hurries away toward destination.
1. O heads for C5 in car #5. When reached, O tries to open case. If case
was open when O took it, no problem. Else:
1a. If latch OK or long story:
1a1. If McGuffin is in case, O just waits.
1a2. If scrap is in case, O reads it and either heads for
diner RV to start "SK" script, or heads for RV to start "SF"
script, unless O already has PO.
1a3. If O identified you, O starts "FY" script and heads for you.
1a4. Else O starts "I" script.
1b. Else O takes gas and dies. (So does anyone else in O's C.)

1685
spies.zap Normal file

File diff suppressed because it is too large Load Diff

1331
spies.zil Normal file

File diff suppressed because it is too large Load Diff

67
spoiler.mss Normal file
View File

@ -0,0 +1,67 @@
@style (spacing 2)
@title (Spy Thriller - Spoilers)
@pageheading (draft)
@majorheading (SPY THRILLER - SPOILERS AND INTERNALS)
@center (22 August 1984)
@center (Comments to Stu Galley)
@blankspace(5)
@heading (GEOGRAPHY)
Basic rule: the trains and stations should be as realistic as the
technology and storage space will allow. Moving around should not in
itself be a puzzle, but the limitations should be realistic. Example:
you can move in one turn from one place to any other place in the same
car (or in the station), provided you don't bump into another character;
of course, you may overlook details along the way that you would see if
you moved one ROOM at a time.
@heading (VARIATIONS ON ACTION)
At the beginning, if you try to follow the good spy out of your
compartment, a bad spy might notice you and bother you during the
rest of the trip.
Instead of (or in addition to) providing the MacGuffin in the briefcase,
the good spy could provide you with a camera to photograph the
MacGuffin. Then you might have to locate the MacGuffin and either
steal it or photograph it secretly. Once you have the photo, you
could let the bad guys keep (or find) the real MacGuffin and thus
throw them off your trail.
The conductor himself and/or the customs agent could be a bad spy.
@heading (OBJECTS)
It would be nice if some of the "passobjects" were interdependent,
so that obtaining one made it more difficult to perform some other
crucial step.
Here's how you can improvise some of the "passobjects":
@begin (itemize)
lighter - Find smoker in cafe or diner and steal it carefully.
Or buy it in the store in a station.
flower - Take it from an empty table in cafe or diner without anyone noticing.
Or pull emergency cord to stop train and pick it from beside the tracks.
camera - Buy it in the store in a station.
hat - Take it from an unguarded compartment.
pen - Buy it in the store in a station.
knife - Take it from kitchen when no one's looking.
ring - Use wrench to steal washer from faucet in rest room.
towel - All rest rooms have endless-loop towels, so use knife to cut
a portion out. Or cut from diner tablecloth.
brass lantern (!) - Pull train's stop cord to create diversion, then
steal lantern from conductor's compartment.
@end (itemize)

43
spoiler.rno Normal file
View File

@ -0,0 +1,43 @@
.lm 10;.rm 70;.paragraph 0, 0;.br;.lm 10;.rm 70;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.nj;.i 0;.sp 2;.title *DRAFT* Spy Thriller - Spoilers *DRAFT* 2/13/85 11:43
.subtitle Proprietary Information of Infocom, Inc.#(Company Confidential)
.pg;.sp 1;.s 4;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.nf;.c;^#SPY THRILLER - SPOILERS AND INTERNALS\#
.sp 1;.s 3;.sp 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.c;22 August 1984
.s 1;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.c;Comments to Stu Galley
.s 1;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 4;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*GEOGRAPHY\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;Basic rule: the trains and stations should be as realistic as the
technology and storage space will allow. Moving around should not in
itself be a puzzle, but the limitations should be realistic. Example:
you can move in one turn from one place to any other place in the same
car (or in the station), provided you don't bump into another character_;
of course, you may overlook details along the way that you would see if
you moved one ROOM at a time.
.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*VARIATIONS ON ACTION\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;At the beginning, if you try to follow the good spy out of your
compartment, a bad spy might notice you and bother you during the
rest of the trip.
.sp 1;.s 1;.sp 2;Instead of (or in addition to) providing the MacGuffin in the briefcase,
the good spy could provide you with a camera to photograph the
MacGuffin. Then you might have to locate the MacGuffin and either
steal it or photograph it secretly. Once you have the photo, you
could let the bad guys keep (or find) the real MacGuffin and thus
throw them off your trail.
.sp 1;.s 1;.sp 2;The conductor himself and/or the customs agent could be a bad spy.
.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*OBJECTS\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;It would be nice if some of the "passobjects" were interdependent,
so that obtaining one made it more difficult to perform some other
crucial step.
.sp 1;.s 1;.sp 2;Here's how you can improvise some of the "passobjects":
.sp 1;.s 1;.sp 2;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* lighter - Find smoker in cafe or diner and steal it carefully.
Or buy it in the store in a station.
.s 1;.i -4;* flower - Take it from an empty table in cafe or diner without anyone noticing.
Or pull emergency cord to stop train and pick it from beside the tracks.
.s 1;.i -4;* camera - Buy it in the store in a station.
.s 1;.i -4;* hat - Take it from an unguarded compartment.
.s 1;.i -4;* pen - Buy it in the store in a station.
.s 1;.i -4;* knife - Take it from kitchen when no one's looking.
.s 1;.i -4;* ring - Use wrench to steal washer from faucet in rest room.
.s 1;.i -4;* towel - All rest rooms have endless-loop towels, so use knife to cut
a portion out. Or cut from diner tablecloth.
.s 1;.i -4;* brass lantern (!) - Pull train's stop cord to create diversion, then
steal lantern from conductor's compartment.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.j;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;

4
spy.chart Normal file
View File

@ -0,0 +1,4 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
7/24 17 124816 29862 301 233 882
7/24 17 124908 29862 301 233 882
7/24 17 124900 29862 301 233 882

27
spy.errors Normal file
View File

@ -0,0 +1,27 @@
Assembling SPY.XZAP.7 on Wednesday, July 24, 1985 14:52:05
Release: 17
64 Inserting SPYFREQ.XZAP.3 (646 bytes)
710 Inserting SPYDAT.ZAP.17 (30388 bytes)
31098 Inserting MACROS.ZAP.1 (906 bytes)
32004 Inserting SYNTAX.ZAP.1 (0 bytes)
32004 Inserting MAIN.ZAP.1 (3737 bytes)
35741 Inserting PARSER.ZAP.2 (10731 bytes)
46472 Inserting THINGS.ZAP.1 (5208 bytes)
51680 Inserting PEOPLE.ZAP.1 (6659 bytes)
58339 Inserting PLACES.ZAP.1 (636 bytes)
58975 Inserting GLOBAL.ZAP.1 (3788 bytes)
62763 Inserting CLOCK.ZAP.1 (214 bytes)
62977 Inserting VERBS.ZAP.1 (19170 bytes)
82147 Inserting TRAIN.ZAP.1 (11501 bytes)
93648 Inserting CARS.ZAP.1 (1590 bytes)
95238 Inserting STATION.ZAP.1 (2166 bytes)
97404 Inserting GOAL.ZAP.1 (9810 bytes)
107214 Inserting SPIES.ZAP.1 (11651 bytes)
118865 Inserting SPYSTR.ZAP.17 (6035 bytes)
301 objects.
233 globals.
882 word vocabulary.
124900 bytes (122K).
29862 bytes of preload.

393
spy.mem Normal file
View File

@ -0,0 +1,393 @@
CHECKPOINT __________
14 January 1985
Comments to Stu Galley
RAISONS D'ETRE _______ ______
* This is a collection of stories in one product. Some of the
stories should be short enough to finish in one session. All of
the stories take place in the same general setting.
* The setting should justify some of the limitations of our current
technology. Since it is hard to converse with characters, all or
most of them don't understand English. Since "geography" is
limited in scope, the setting is on trains and in stations, where
movement is naturally restricted.
SYNOPSES ________
All of the stories are based on a similar plot; the difference among them is
which role you play in the story. I visualize printing the beginning of each _____ ____
variation in the browsie, and continuing it on the screen. In each variation,
you can also choose between easier and harder levels of difficulty.
"Traveller" Variation: ___________ __________
You're travelling alone, on business of some kind, on a train in the European
country of Frotzerland (see below). Suddenly a fellow passenger, recognizing
you as friendly, bursts into your compartment. He explains that he wants to
entrust his briefcase to you while he handles some dangerous business, but it's
*DRAFT* Checkpoint *DRAFT* 3/4/85 11:29 Page 2
Proprietary Information of Infocom, Inc. (Company Confidential)
vital that you follow his instructions, which vary depending on the level.
Then he dashes out, and a short time later you see his body falling from the
roof past your window. Obviously the "bad guys" are after his briefcase and/or
the "MacGuffin"! When you open the briefcase (which is in itself a puzzle),
you discover the MacGuffin or clue(s) as to how to acquire it.
The easier level has these features:
* The briefcase contains the MacGuffin, as well as a camera and the
name of an object (chosen by the program from a secret list),
which is a password that you have to say to whoever meets the
train. So you have to reach the frontier, pass customs with the
MacGuffin, and deliver it to the contact (a "good guy") who will
meet the train at the first station across the frontier -- all
while avoiding the "bad guy(s)" and not attracting attention to
yourself.
* The "bad" spy (who killed the "good" spy in the beginning) tries
to get the MacGuffin from you, without explicit violence. You
must avoid him/her, or you can get trapped and killed.
The harder level has the above features, plus these new ones:
* The briefcase contains the names of two objects, the password and ___
a "passobject" that you have to display so the contact can
recognize you. The "good" spy had such an object, but now he's
gone, so you have to improvise the passobject somehow.
* The "bad" spy is more aggressive and smart, and he/she will force
you to fight rather than flee. (Rated PG)
* You don't have the MacGuffin at the start; you must first contact
an agent at the next train station down the line by displaying a
second passobject in order to receive the MacGuffin.
* You're not on the right train for meeting the final contact. You
must consult your timetable, change your itinerary, buy a new
ticket, catch the right train at the right station, and proceed
as before.
* There's also a pickpocket on the loose. If you bump into
him/her, you may lose some item that you're carrying. (I suppose
the briefcase is immune, but on the other hand it's a pain to
keep things in it.)
*DRAFT* Checkpoint *DRAFT* 3/4/85 11:29 Page 3
Proprietary Information of Infocom, Inc. (Company Confidential)
"Spy" Variation: _____ __________
In this variation you play the role of the "bad" spy that goes after the
"innocent" traveller and the MacGuffin. Naturally, you think of yourself as a
"good" spy. Your goal is to find the MacGuffin and alter it so that the "bad
guys" receive false information. You begin on the roof of the train and
immediately fight the "bad" spy (who's "good" in the "traveller" variation).
Assuming that you win the fight, you next have to find the traveller with the
MacGuffin (or, in the harder level, the info to acquire it). You could try to
get the briefcase and snoop in it, observe the other passengers' behavior (or
speak to them in English, but they may not answer), and/or observe the platform
during stops. Once you locate the MacGuffin, you have to fight or trick the
courier, acquire the MacGuffin, alter it, and either return it to the courier
or deliver it yourself (using password and passobject).
Any feature not mentioned in the following lists is like the previous
variation. The easier level has these features:
* The traveller carries the briefcase all the time, so you can tell
who s/he is. But you can't acquire it without trickery or
violence.
* You have limited means of aggression, e.g. just a gun and no
special abilities.
The harder level has the above features, plus these new ones:
* The traveller hides the briefcase whenever feasible, so you can't
tell who s/he is. If you can find and open it, you may get
clues.
* You have no weapon, but you can indulge in some unarmed violence
(rated PG) or trickery (e.g. pose as contact, or acquire
passobject and pose as traveller) to try to get what you want.
*DRAFT* Checkpoint *DRAFT* 3/4/85 11:29 Page 4
Proprietary Information of Infocom, Inc. (Company Confidential)
"Conductor" Variation: ___________ __________
Your role is the conductor on the train, and your goal is to avoid getting
blamed for any trouble that occurs in your jurisdiction, like delays,
stowaways, violence, or smuggling. (Note: as a conductor, you can speak the
local language, which thus will be "dubbed" into English; but by the same taken
the "traveller," spy, etc. will be dubbed into Frotzian.) Your first duty is
to punch all passengers' tickets after each stop; if you miss one, he/she will
turn out to be a railway employee who is testing your performance, and you lose
your job. (This means you can't freely observe the suspect(s) during
ticket-punching time, so the McGuffin may change hands without your knowing
it.) Your second duty is to stand at the front end of the platform in each
station and give the order for the train to depart. At the frontier
checkpoint, you should stand by the customs agent and try to detect any
smuggling, such as the MacGuffin. If you observe the passengers while making
your rounds, you might be able to spot someone on a spy mission by their odd
behavior.
Any feature not mentioned in the following lists is like the previous
variations. The easier level has these features:
* It is sufficient to catch either traveller or spy with the
McGuffin in hand. At the checkpoint, all passengers empty their
pockets to aid inspection.
The harder level has the above features, plus these new ones:
* At the beginning, your train isn't headed for the frontier. But,
if you report spy activity to a station guard, you will receive a
new assignment on the train that the traveller and spy will use.
(Your bosses will explain that a professional agent is replacing
you in order to catch the spies; but -- by Murphy's Law -- the
spies change trains too!)
* You get a better ending if you don't apprehend the smuggler at
the checkpoint, but rather apprehend the contact also, at the
*DRAFT* Checkpoint *DRAFT* 3/4/85 11:29 Page 5
Proprietary Information of Infocom, Inc. (Company Confidential)
station past the checkpoint.
Other features: _____ _________
For variety, the variations also differ in:
* which objects are the password and passobject (and in the harder
levels the passobject is harder to obtain);
* which fellow passenger is the "bad" spy (this is especially
appropriate for a spy story, since appearances deceive and all
that);
* which person waiting at the station is your contact (ditto);
* and perhaps which train you begin on, thus changing your plan for
catching the right connecting train (so it's vital to have the
timetable and hence the package, in order to play).
INNOVATIONS ___________
Characters: Besides the "major" characters, with whom you can have some
meaningful interaction, there will be numerous "extras" appearing in the
"crowd" scenes, such as on the train and the platforms. (Other new products,
such as "Cutthroats" and "Suspect," have these to some extent.)
Limited freedom of action: Since you're on a train most of the time, the
limited geography is more acceptable, as is the slow way you move about. Also,
it would be fun if the "bad guys" could capture you, bind and gag you, injure
you, etc. Then many verbs would not work, and you'd have to escape by some
cleverness.
*DRAFT* Checkpoint *DRAFT* 3/4/85 11:29 Page 6
Proprietary Information of Infocom, Inc. (Company Confidential)
SETTING _______
Some people might think that the story should be set in a real country, like
Yugoslavia. It would immediately lend realism and a sense of "being there."
But there are problems. Would a player who happens to know Croatian complain
that the other characters don't understand it? Or, more likely, would the
story's timetable have to conform with a real one from that country? Would
everything have to be realistic: train layout, station layout, food menu, ...?
To avoid these problems, I'm assuming (for now) that the country is fictitious.
Frotzerland is a country somewhere in the middle of Europe, with a neutral but
paranoid government. (Any similarity to actual countries living or dead is
just "tough noogies.") The Frotz National Railway ("Ferroglip Natsiolim
Frotzilim") tends to run on time, so you can usually depend on the printed
timetable. All action takes place on the trains and in the stations. A train
is made up of several identical passenger cars (technical note: single ROOMs
serve multiple locations), each with several compartments, a corridor, and two
rest rooms; also cars for baggage and dining. The stations are all identical
too, with these interesting rooms: platform, waiting room, cafe/store, rest
rooms, ticket/info window, baggage room. You can't leave a station without
boarding a train, since the police would take you in for an improper visa.
CHARACTERS __________
The characters include:
* The innocent traveller, who through pure chance gets mixed up in
spy business
* The "good" spy (at the beginning) is a James Bond type, daring
enough to go fight the "bad" spy and lose big.
*DRAFT* Checkpoint *DRAFT* 3/4/85 11:29 Page 7
Proprietary Information of Infocom, Inc. (Company Confidential)
* The "bad" spy
* The train conductor -- helpful but suspicious, s/he doesn't want
trouble in HIS (or HER) jurisdiction.
* The contact(s)
* Waiters, clerks, passengers, spear carriers, etc.
Some of the characters will be chosen from the following list, depending on
which plot variation you choose. (Appearances will be randomly matched with
personalities.)
* a devious "femme fatale"
* an attractive man
* a merciless, masculine woman
* a jovial, rotund, threatening man
* a regal older woman
* a tall, thin silent man
* and so on
PACKAGE _______
* In the "browsie" could be a short prose introduction to each
plot, in lieu of a long "boot screen."
* Timetable (and route map?) should be printed in a color(s) that
can't easily be photocopied, and it should be a "feelie" so
pirates can't read it in their local store.
* train ticket(s)
* "sound sheet" with useless phrases in Frotzian and English
* tourist guide to Frotzerland for "browsie"

334
spy.mss Normal file
View File

@ -0,0 +1,334 @@
@style (spacing 2)
@title (Checkpoint)
@pageheading (draft)
@majorheading (CHECKPOINT)
@center (28 March 1985)
@center (Comments to Stu Galley)
@blankspace(5)
@heading (RAISONS D'ETRE)
@begin (itemize)
This is a collection of stories in one product. Some of the stories
should be short enough to finish in one session. All of the stories
take place in the same general setting.
The setting should justify some of the limitations of our current
technology. Since it is hard to converse with characters, all or most
of them don't understand English. Since "geography" is limited in scope,
the setting is on trains and in stations, where movement is naturally
restricted.
The stories should convey a theme that Hitchcock used often in his
movies: a very important mission can be delayed or even doomed by
ordinary people that just happen to be in the way at the wrong time.
@end (itemize)
@heading (SYNOPSES)
All of the stories are based on a similar plot; the difference among
them is @U(which role) you play in the story.
I visualize printing the beginning of each variation in the
browsie, and continuing it on the screen.
In each variation, you can also choose between easier and harder levels
of difficulty.
@subheading ("Traveller" Variation:)
You're travelling alone, on business of some kind, on a train
in the European country of Frotzerland (see
below). Suddenly a fellow passenger,
recognizing you as friendly,
bursts into your compartment. He explains that he wants
to entrust his briefcase to you while he handles some dangerous
business, but it's vital that
@comment ( the contents reach N.A.T.O@. headquarters in Brussels without delay.
If anything happens to him, would you please give the briefcase )
you follow his instructions, which vary depending on the level.
Then he dashes out, and a short time later
you see his body falling from the roof past your window. Obviously
the "bad guys" are after his briefcase and/or the "MacGuffin"!
When you open the briefcase (which is in itself a puzzle), you discover
@comment [ the MacGuffin; let's say it's a copy (small enough to conceal in your clothing -- say, in a pocket) of the "bad" guys' secret plan to kidnap the N.A.T.O@. Commander tomorrow. You also discover ]
the MacGuffin or clue(s) as to how to acquire it.
The easier level has these features:
@begin (itemize)
The briefcase contains the MacGuffin, as well as
a camera and the name
of an object (chosen by the program from a secret
list), which is a password that you have to say to whoever
meets the train.
So you have to reach the frontier, pass customs with
the MacGuffin, and deliver it
to the contact (a "good guy") who will meet the train at the
first station across the frontier -- all
while avoiding the "bad guy(s)" and not attracting attention to yourself.
The "bad" spy (who killed the "good" spy in the beginning)
tries to get the MacGuffin from you, without explicit violence.
You must avoid him/her, or you can get trapped and killed.
@end (itemize)
The harder level has the above features, plus these new ones:
@begin (itemize)
The briefcase contains the names of @u(two) objects, the password
and a "passobject" that you have to display
so the contact can recognize you. The "good" spy had such an object, but
now he's gone, so you have to improvise the passobject somehow.
The "bad" spy is more aggressive and smart, and he/she will force you
to fight rather than flee. (Rated PG)
You don't have the MacGuffin at the start; you must first
contact an agent at the next train station down the line by displaying
a second passobject in order to receive the MacGuffin.
You're not on the right train for meeting the final contact. You must
consult your timetable, change your
itinerary, buy a new ticket, catch the right train
at the right station, and proceed as before.
There's also a pickpocket on the loose.
If you bump into him/her, you may lose some item that you're carrying.
(I suppose the briefcase is immune, but on the
other hand it's a pain to keep things in it.)
@end (itemize)
@comment [
@U(Variation 2:)
This plot differs from the first in that the "good" spy that enters
at the beginning is actually, unknown to you, a bad spy.
So your ostensible goal is the same, but you get the best ending only if
(the information in) the MacGuffin is made useless before delivery.
(If you don't deliver the MacGuffin as instructed, you learn that
the bad guys just used another method for delivery and
succeeded.) To avoid getting bogged down in the details of munging
the MacGuffin, you have a helper: an actual "good" spy who will mung it
for you. But you have to find this person (maybe the bad spy gives
you a photo and instructs you to avoid him/her) and ask properly.]
@subheading ("Spy" Variation:)
In this variation you play the role of the "bad" spy
that goes after the "innocent" traveller and the MacGuffin.
Naturally, you think of yourself as a "good" spy.
Your goal is to find the MacGuffin and alter it so that the
"bad guys" receive false information, or even better, deliver the
original MacGuffin (not a photo) to your side for analysis
to trace the leak of secret information.
You begin on the roof of the train and immediately fight the
"bad" spy (who's "good" in the "traveller" variation). Assuming that you win the
fight, you next have to find the traveller with the MacGuffin (or, in the
harder level,
the info to acquire it). You could try to get the briefcase and snoop
in it, observe
the other passengers' behavior (or speak to them in English, but they
may not answer), and/or observe the platform during stops.
Once you locate the MacGuffin, you have to fight or trick the courier, and
acquire the MacGuffin.
Then you have a choice: you can alter it, and either return it to the courier
or deliver it yourself (using password and passobject); or you can
try to sneak it through customs and deliver it to your "team."
Any feature not mentioned in the following lists is like the previous
variation. The easier level has these features:
@begin (itemize)
The traveller carries the briefcase all the time, so you can tell
who s/he is. But you can't acquire it without trickery or violence.
You have limited means of aggression, e.g. just a gun and no special
abilities.
@end (itemize)
The harder level has the above features, plus these new ones:
@begin (itemize)
The traveller hides the briefcase whenever feasible, so you can't tell
who s/he is. If you can find and open it, you may get clues.
You have no weapon, but you can indulge in some unarmed violence (rated PG)
or trickery (e.g. pose as contact, or acquire passobject and pose as traveller)
to try to get what you want.
If you succeed in delivering the MacGuffin itself, your contact will
give you one more task: to help recapture a defector who's riding on the
very same train.
(The MacGuffin is in fact a copy of the secret plan to recapture him.)
Your role in the recapture is simple, but it serves to make your final
goal significantly different from your goal as "traveller."
@end (itemize)
@subheading ("Conductor" Variation [deleted as of now]:)
Your role is the conductor on the train, and your goal is to avoid
getting blamed for any trouble that occurs in your jurisdiction,
like delays, stowaways, violence, or smuggling.
(Note: as a conductor, you can speak the local language, which thus
will be "dubbed" into English; but by the same token the "traveller," spy,
etc. will be dubbed into Frotzian.)
Your first duty is to punch all passengers' tickets after each stop;
if you miss one, he/she will turn out to be a railway employee
who is testing your performance, and you lose your job.
(This means you can't freely observe the suspect(s) during ticket-punching
time, so the MacGuffin may change hands without your knowing it.)
Your second duty is to stand at the front end of the platform
in each station and give the order for the train to depart.
At the frontier checkpoint, you should stand by the customs agent
and try to detect any smuggling, such as the MacGuffin.
If you observe the passengers while making your rounds, you
might be able to spot someone on a spy mission by their odd behavior.
Any feature not mentioned in the following lists is like the previous
variations. The easier level has these features:
@begin (itemize)
It is sufficient to catch either traveller or spy with the MacGuffin in
hand. At the checkpoint, all passengers empty their pockets to aid
inspection.
@end (itemize)
The harder level has the above features, plus these new ones:
@begin (itemize)
At the beginning, your train isn't headed for the frontier.
But, if you report spy activity to a station guard, you will receive
a new assignment on the train that the traveller and spy will use.
(Your bosses will explain that a professional agent is replacing you
in order to catch the spies; but -- by Murphy's Law -- the spies
change trains too!)
You get a better ending
if you don't apprehend the smuggler at the checkpoint, but rather
apprehend the contact also, at the station past the checkpoint.
@end (itemize)
@subheading (Other features:)
For variety, the variations also differ in:
@begin (itemize)
which objects are the password and passobject
(and in the harder levels the passobject is harder to obtain);
which fellow passenger is the "bad" spy
@comment (and what their cover stories are )
(this is especially appropriate for
a spy story, since appearances deceive and all that);
which person waiting at the station is your contact (ditto);
and perhaps which train you begin on, thus changing your plan for catching the
right connecting train (so it's vital to have the timetable and hence
the package, in order to play).
@end (itemize)
@heading (INNOVATIONS)
Characters:
Besides the "major" characters, with whom you can have some
meaningful interaction, there will be numerous "extras" appearing
in the "crowd" scenes, such as on the train and the platforms.
(Other new products, such as "Cutthroats" and "Suspect," have
these to some extent.)
@comment [
Parser:
To make the limitations on talking to
characters more acceptable, all other characters will
have limited knowledge of English; so if you give a bad
command to a character, s/he will complain instead of the parser.
Examples: "Please, I not know English word 'fooble'." "Please,
to me simple English speak." "Buzbar frbz mrtzki."]
Limited freedom of action:
Since you're on a train most of the time, the limited geography is
more acceptable, as is the slow way you move about.
Also, it would be fun if the "bad guys" could capture you, bind and gag you,
injure you, etc. Then many verbs would not work,
and you'd have to escape by some cleverness.
@heading (SETTING)
Some people might think that the story should be set in a real country,
like Yugoslavia. It
would immediately lend realism and a sense of "being there." But
there are problems. Would a player who happens to know Croatian
complain that the other characters don't understand it? Or, more
likely, would the story's timetable have to conform with a real one
from that country? Would everything have to be realistic: train
layout, station layout, food menu, ...? To avoid these problems,
I'm assuming (for now) that the country is fictitious.
Frotzerland is a country somewhere in the middle
of Europe, with a neutral but paranoid
government. (Any similarity to actual countries living or dead is just "tough
noogies.") The Frotz National Railway ("Ferroglip Natsiolim Frotzilim")
tends to run on time, so you can usually
depend on the printed timetable. All action takes place on the trains
and in the stations. A train is made up of several identical passenger
cars (technical note: single ROOMs serve multiple locations),
each with several compartments, a corridor, and two rest rooms;
also cars for baggage and dining, and a special luxury car to carry
the defector. The stations are all identical too,
with these interesting rooms: platform, waiting room, cafe/store,
rest rooms, ticket/info window, baggage room. You can't leave a station
without boarding a train, since the police would
take you in for an improper visa.
@heading (CHARACTERS)
The characters include:
@begin (itemize)
The innocent traveller, who through pure chance gets mixed up in spy business
The "good" spy (at the beginning) is a James Bond type, daring enough
to go fight the "bad" spy and lose big.
The "bad" spy
The train conductor -- helpful but suspicious, s/he doesn't want trouble
in HIS (or HER) jurisdiction.
The contact(s)
Waiters, clerks, passengers, spear carriers, etc.
@end (itemize)
Some of the characters will be chosen from the following list,
depending on which plot variation you choose. (Appearances
will be randomly matched with personalities.)
@begin (itemize)
a devious "femme fatale"
an attractive man
a merciless, masculine woman
a jovial, rotund, threatening man
a regal older woman
a tall, thin silent man
@comment ( and her innocent-eyed maid, a man with a fez or turban)
and so on
@end (itemize)
@heading (PACKAGE)
@begin (itemize)
In the "browsie" could be a
short prose introduction to each plot, in lieu of a long "boot screen."
Timetable (and route map?) should be printed in a color(s) that
can't easily be photocopied,
and it should be a "feelie" so pirates can't read it in their local store.
@comment (Or should it be part of the "browsie" so pirates can't call us up
and claim they lost it?)
train ticket(s)
"sound sheet" with useless phrases in Frotzian and English
tourist guide to Frotzerland for "browsie"
@end (itemize)

1527
spy.record Normal file

File diff suppressed because it is too large Load Diff

221
spy.rno Normal file
View File

@ -0,0 +1,221 @@
.lm 10;.rm 70;.paragraph 0, 0;.br;.lm 10;.rm 70;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.nj;.i 0;.sp 2;.title *DRAFT* Checkpoint *DRAFT* 4/5/85 12:46
.subtitle Proprietary Information of Infocom, Inc.#(Company Confidential)
.pg;.sp 1;.s 4;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.nf;.c;^#CHECKPOINT\#
.sp 1;.s 3;.sp 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.c;28 March 1985
.s 1;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.c;Comments to Stu Galley
.s 1;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 4;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*RAISONS D'ETRE\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* This is a collection of stories in one product. Some of the stories
should be short enough to finish in one session. All of the stories
take place in the same general setting.
.s 1;.i -4;* The setting should justify some of the limitations of our current
technology. Since it is hard to converse with characters, all or most
of them don't understand English. Since "geography" is limited in scope,
the setting is on trains and in stations, where movement is naturally
restricted.
.s 1;.i -4;* The stories should convey a theme that Hitchcock used often in his
movies: a very important mission can be delayed or even doomed by
ordinary people that just happen to be in the way at the wrong time.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*SYNOPSES\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;All of the stories are based on a similar plot_; the difference among
them is ^&which role\& you play in the story.
I visualize printing the beginning of each variation in the
browsie, and continuing it on the screen.
In each variation, you can also choose between easier and harder levels
of difficulty.
.sp 1;.s 2;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*"Traveller" Variation:\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;You're travelling alone, on business of some kind, on a train
in the European country of Frotzerland (see
below). Suddenly a fellow passenger,
recognizing you as friendly,
bursts into your compartment. He explains that he wants
to entrust his briefcase to you while he handles some dangerous
business, but it's vital that
you follow his instructions, which vary depending on the level.
Then he dashes out, and a short time later
you see his body falling from the roof past your window. Obviously
the "bad guys" are after his briefcase and/or the "MacGuffin"!
When you open the briefcase (which is in itself a puzzle), you discover
the MacGuffin or clue(s) as to how to acquire it.
.sp 1;.s 1;.sp 2;The easier level has these features:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* The briefcase contains the MacGuffin, as well as
a camera and the name
of an object (chosen by the program from a secret
list), which is a password that you have to say to whoever
meets the train.
So you have to reach the frontier, pass customs with
the MacGuffin, and deliver it
to the contact (a "good guy") who will meet the train at the
first station across the frontier -- all
while avoiding the "bad guy(s)" and not attracting attention to yourself.
.s 1;.i -4;* The "bad" spy (who killed the "good" spy in the beginning)
tries to get the MacGuffin from you, without explicit violence.
You must avoid him/her, or you can get trapped and killed.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;The harder level has the above features, plus these new ones:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* The briefcase contains the names of ^&two\& objects, the password
and a "passobject" that you have to display
so the contact can recognize you. The "good" spy had such an object, but
now he's gone, so you have to improvise the passobject somehow.
.s 1;.i -4;* The "bad" spy is more aggressive and smart, and he/she will force you
to fight rather than flee. (Rated PG)
.s 1;.i -4;* You don't have the MacGuffin at the start_; you must first
contact an agent at the next train station down the line by displaying
a second passobject in order to receive the MacGuffin.
.s 1;.i -4;* You're not on the right train for meeting the final contact. You must
consult your timetable, change your
itinerary, buy a new ticket, catch the right train
at the right station, and proceed as before.
.s 1;.i -4;* There's also a pickpocket on the loose.
If you bump into him/her, you may lose some item that you're carrying.
(I suppose the briefcase is immune, but on the
other hand it's a pain to keep things in it.)
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 2;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*"Spy" Variation:\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;In this variation you play the role of the "bad" spy
that goes after the "innocent" traveller and the MacGuffin.
Naturally, you think of yourself as a "good" spy.
Your goal is to find the MacGuffin and alter it so that the
"bad guys" receive false information, or even better, deliver the
original MacGuffin (not a photo) to your side for analysis
to trace the leak of secret information.
You begin on the roof of the train and immediately fight the
"bad" spy (who's "good" in the "traveller" variation). Assuming that you win the
fight, you next have to find the traveller with the MacGuffin (or, in the
harder level,
the info to acquire it). You could try to get the briefcase and snoop
in it, observe
the other passengers' behavior (or speak to them in English, but they
may not answer), and/or observe the platform during stops.
Once you locate the MacGuffin, you have to fight or trick the courier, and
acquire the MacGuffin.
Then you have a choice: you can alter it, and either return it to the courier
or deliver it yourself (using password and passobject)_; or you can
try to sneak it through customs and deliver it to your "team."
.sp 1;.s 1;.sp 2;Any feature not mentioned in the following lists is like the previous
variation. The easier level has these features:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* The traveller carries the briefcase all the time, so you can tell
who s/he is. But you can't acquire it without trickery or violence.
.s 1;.i -4;* You have limited means of aggression, e.g. just a gun and no special
abilities.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 1;.sp 2;The harder level has the above features, plus these new ones:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* The traveller hides the briefcase whenever feasible, so you can't tell
who s/he is. If you can find and open it, you may get clues.
.s 1;.i -4;* You have no weapon, but you can indulge in some unarmed violence (rated PG)
or trickery (e.g. pose as contact, or acquire passobject and pose as traveller)
to try to get what you want.
.s 1;.i -4;* If you succeed in delivering the MacGuffin itself, your contact will
give you one more task: to help recapture a defector who's riding on the
very same train.
(The MacGuffin is in fact a copy of the secret plan to recapture him.)
Your role in the recapture is simple, but it serves to make your final
goal significantly different from your goal as "traveller."
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 2;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*"Conductor" Variation [deleted as of now]:\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;Your role is the conductor on the train, and your goal is to avoid
getting blamed for any trouble that occurs in your jurisdiction,
like delays, stowaways, violence, or smuggling.
(Note: as a conductor, you can speak the local language, which thus
will be "dubbed" into English_; but by the same token the "traveller," spy,
etc. will be dubbed into Frotzian.)
Your first duty is to punch all passengers' tickets after each stop_;
if you miss one, he/she will turn out to be a railway employee
who is testing your performance, and you lose your job.
(This means you can't freely observe the suspect(s) during ticket-punching
time, so the MacGuffin may change hands without your knowing it.)
Your second duty is to stand at the front end of the platform
in each station and give the order for the train to depart.
At the frontier checkpoint, you should stand by the customs agent
and try to detect any smuggling, such as the MacGuffin.
If you observe the passengers while making your rounds, you
might be able to spot someone on a spy mission by their odd behavior.
.sp 1;.s 1;.sp 2;Any feature not mentioned in the following lists is like the previous
variations. The easier level has these features:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* It is sufficient to catch either traveller or spy with the MacGuffin in
hand. At the checkpoint, all passengers empty their pockets to aid
inspection.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 1;.sp 2;The harder level has the above features, plus these new ones:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* At the beginning, your train isn't headed for the frontier.
But, if you report spy activity to a station guard, you will receive
a new assignment on the train that the traveller and spy will use.
(Your bosses will explain that a professional agent is replacing you
in order to catch the spies_; but -- by Murphy's Law -- the spies
change trains too!)
.s 1;.i -4;* You get a better ending
if you don't apprehend the smuggler at the checkpoint, but rather
apprehend the contact also, at the station past the checkpoint.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 2;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*Other features:\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;For variety, the variations also differ in:
.br;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* which objects are the password and passobject
(and in the harder levels the passobject is harder to obtain)_;
.s 1;.i -4;* which fellow passenger is the "bad" spy
(this is especially appropriate for
a spy story, since appearances deceive and all that)_;
.s 1;.i -4;* which person waiting at the station is your contact (ditto)_;
.s 1;.i -4;* and perhaps which train you begin on, thus changing your plan for catching the
right connecting train (so it's vital to have the timetable and hence
the package, in order to play).
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*INNOVATIONS\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;Characters:
Besides the "major" characters, with whom you can have some
meaningful interaction, there will be numerous "extras" appearing
in the "crowd" scenes, such as on the train and the platforms.
(Other new products, such as "Cutthroats" and "Suspect," have
these to some extent.)
.sp 1;.s 1;.sp 2;Limited freedom of action:
Since you're on a train most of the time, the limited geography is
more acceptable, as is the slow way you move about.
Also, it would be fun if the "bad guys" could capture you, bind and gag you,
injure you, etc. Then many verbs would not work,
and you'd have to escape by some cleverness.
.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*SETTING\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;Some people might think that the story should be set in a real country,
like Yugoslavia. It
would immediately lend realism and a sense of "being there." But
there are problems. Would a player who happens to know Croatian
complain that the other characters don't understand it_? Or, more
likely, would the story's timetable have to conform with a real one
from that country_? Would everything have to be realistic: train
layout, station layout, food menu, ..._? To avoid these problems,
I'm assuming (for now) that the country is fictitious.
.sp 1;.s 1;.sp 2;Frotzerland is a country somewhere in the middle
of Europe, with a neutral but paranoid
government. (Any similarity to actual countries living or dead is just "tough
noogies.") The Frotz National Railway ("Ferroglip Natsiolim Frotzilim")
tends to run on time, so you can usually
depend on the printed timetable. All action takes place on the trains
and in the stations. A train is made up of several identical passenger
cars (technical note: single ROOMs serve multiple locations),
each with several compartments, a corridor, and two rest rooms_;
also cars for baggage and dining, and a special luxury car to carry
the defector. The stations are all identical too,
with these interesting rooms: platform, waiting room, cafe/store,
rest rooms, ticket/info window, baggage room. You can't leave a station
without boarding a train, since the police would
take you in for an improper visa.
.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*CHARACTERS\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;The characters include:
.sp 1;.s 1;.sp 2;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* The innocent traveller, who through pure chance gets mixed up in spy business
.s 1;.i -4;* The "good" spy (at the beginning) is a James Bond type, daring enough
to go fight the "bad" spy and lose big.
.s 1;.i -4;* The "bad" spy
.s 1;.i -4;* The train conductor -- helpful but suspicious, s/he doesn't want trouble
in HIS (or HER) jurisdiction.
.s 1;.i -4;* The contact(s)
.s 1;.i -4;* Waiters, clerks, passengers, spear carriers, etc.
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 1;.sp 2;Some of the characters will be chosen from the following list,
depending on which plot variation you choose. (Appearances
will be randomly matched with personalities.)
.sp 1;.s 1;.sp 2;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* a devious "femme fatale"
.s 1;.i -4;* an attractive man
.s 1;.i -4;* a merciless, masculine woman
.s 1;.i -4;* a jovial, rotund, threatening man
.s 1;.i -4;* a regal older woman
.s 1;.i -4;* a tall, thin silent man
.s 1;.i -4;* and so on
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.sp 1;.s 3;.sp 2;.tp 7;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;.nf;.i 0;^*PACKAGE\*
.s 2;.f;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.lm 17;.rm 63;.ts 17,25,33,41,49,57,65,73,81,89;.sp 1;.i -4;* In the "browsie" could be a
short prose introduction to each plot, in lieu of a long "boot screen."
.s 1;.i -4;* Timetable (and route map_?) should be printed in a color(s) that
can't easily be photocopied,
and it should be a "feelie" so pirates can't read it in their local store.
.s 1;.i -4;* train ticket(s)
.s 1;.i -4;* "sound sheet" with useless phrases in Frotzian and English
.s 1;.i -4;* tourist guide to Frotzerland for "browsie"
.s 1;.rm 70;.lm 10;.ts 10,18,26,34,42,50,58,66,74,82;.sp 2;.j;.ts 10,18,26,34,42,50,58,66,74,82;.sp 1;

1020
spy.script Normal file

File diff suppressed because it is too large Load Diff

1
spy.serial Normal file
View File

@ -0,0 +1 @@
371

92
spy.txt Normal file
View File

@ -0,0 +1,92 @@
;"The opening scene..."
"The business deal behind you, you wish only to be out of this bleak
corner of Eastern Europe. The border to the West is now only a few
hours away at Gola, and from there its a quick flight to Trieste, and then
back to civilization...|
|
The ride is interminable, and it seems you're dozing off again. The wheels of
the train are ticking like a clock, ticking off the segments of track you're
passing, and the compartment is rocking you back and forth, back and forth,
slowly closing your eyelids.|
|
Your slumber is cut short as a man staggers into your compartment, panting
strangely. From his demeanor, you would guess he'd been drinking heavily.
Before you can dismiss him, though, you notice a dark red spot beneath his
coat which he grasps tightly. He speaks softly, but hurriedly.|
|
\"I've only got a moment, so listen carefully! Since you were reading a copy
of the International Herald over lunch, I'll assume you're an American. I am
an agent of our government and I've been sent to pick up <a vital microfilm>
in Frbz and pass it along to our special agent in Gola. An enemy agent
spotted me on the train, and I only barely managed to escape.\" He groans
softly, examining his wound.|
|
\"The best I can do now is throw the enemy off the scent, but I need you, your
country needs you, to carry out my assignment.\" You start to interrupt,
a thousand questions racing through your mind. \"There's no time! My
contact in Frbz is <an old man reading a newspaper> and I was to offer
him a <light>, then say the words <'Fromzi remax uzbuz'>. He was to hand
over the <film> and I was to take it to our contact in Gola, <a woman in
white> who was to greet me at the station with the words <'Have you a
train schedule?'>. Here! Take my briefcase - there are things you might
find useful inside. And be careful! Our enemies are all around us!\" Before
you can respond, he checks the corridor and races out."
;"Problems:
1) Cleaning off the floor (blood stains will lead the enemy agents to
you)
2) Checking out the briefcase and what's in it.
3) Finding the pass object (other compartments, making them out of
crude devices, buying it, etc.)
4) Making the first rendezvous successfully. This will involve getting
off the train, meeting the correct person, saying the magic words,
and getting that person to meet you in a shop, w.c., etc. for the
exchange. >SIT DOWN NEXT TO OLD MAN >OFFER HIM A LIGHT >SAY 'FRNZI
BRNZI UZBUZ' >OLD MAN, MEET ME AT THE COFFEE SHOP >GIVE ME THE
MICROFILM
5) Hiding the MacGuffin during the trip and especially at the border
when your stuff is searched.
6) Avoiding the enemy agent(s) and delivering the goods to the contact
at Gola
"
;"Combinations of pass object and action on the part of the contact
Object Action
Lighter Pulls out a cigarette
Cigarette Feels within jacket for something
Dollar Bill Reaching on ground for something
"
;"Ways of getting the pass object:
1) From another character or that character's compartment (stealing)
2) Consing up a makeshift equivalent of the object
3) Buying the object at one of the train stations.
"
;"Complications:
1) The contact might be replaced by someone else (as you have replaced
the original spy. The code word/object would remain the same, of course.
There might be some giveaway (like someone with an unlighted cigarette
in his mouth or searching the ground for something). Showing the pass
object to the wrong people would arouse the suspicion of an enemy
agent (guard) at the station.
2) The pass object might have to be manufactured, rather than obtained
(stolen).
"

21
spy.xzap Normal file
View File

@ -0,0 +1,21 @@
.NEW
.TIME
.INSERT "SPYFREQ"
.INSERT "SPYDAT"
.INSERT "MACROS"
.INSERT "SYNTAX"
.INSERT "MAIN"
.INSERT "PARSER"
.INSERT "THINGS"
.INSERT "PEOPLE"
.INSERT "PLACES"
.INSERT "GLOBAL"
.INSERT "CLOCK"
.INSERT "VERBS"
.INSERT "TRAIN"
.INSERT "CARS"
.INSERT "STATION"
.INSERT "GOAL"
.INSERT "SPIES"
.INSERT "SPYSTR"
.END

53
spy.zap Normal file
View File

@ -0,0 +1,53 @@
.NEW ; NEW ZIP INTERPRETER
.INSERT "SPYDAT" ; DATA IS IN THIS FILE
.INSERT "MACROS"
.INSERT "SYNTAX"
.INSERT "MAIN"
.INSERT "THINGS"
.INSERT "PEOPLE"
.INSERT "PLACES"
.INSERT "GLOBAL"
.INSERT "CLOCK"
.INSERT "PARSER"
.INSERT "VERBS"
.INSERT "TRAIN"
.INSERT "CARS"
.INSERT "STATION"
.INSERT "GOAL"
.INSERT "SPIES"
.INSERT "SPYSTR"
.END

51
spy.zbin Normal file
View File

@ -0,0 +1,51 @@
"COMPILE/LOAD FILE for SPY THRILLER
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " SPY THRILLER: interactive fiction from Infocom!
">
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>
<SET REDEFINE T>
"<GLOBAL BIGFIX 10000>"
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
;<DIRECTIONS NORTH SOUTH EAST WEST NE NW SE SW UP DOWN IN OUT>
<DIRECTIONS ;"Do not change the order of the first eight
without consulting MARC! -- ENCHANTER"
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
<IFILE "MACROS.ZEN" T>
<IFILE "SYNTAX.ZEN" T>
<IFILE "MAIN.ZEN" T>
<IFILE "THINGS.ZEN" T>
<IFILE "PEOPLE.ZEN" T>
<IFILE "PLACES.ZEN" T>
<IFILE "GLOBAL.ZEN" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<IFILE "CLOCK.ZEN" T>
;<ENDLOAD>
<IFILE "PARSER.ZEN" T>
<IFILE "VERBS.ZEN" T>
<IFILE "TRAIN.ZEN" T>
<IFILE "STATION.ZEN" T>
<IFILE "GOAL.ZEN" T>
<IFILE "SPIES.ZEN" T>
<GC-MON T>
<GC 0 T 5>

15
spy.zebra Normal file
View File

@ -0,0 +1,15 @@
.INSERT "MACROS"
.INSERT "SYNTAX"
.INSERT "MAIN"
.INSERT "THINGS"
.INSERT "PEOPLE"
.INSERT "PLACES"
.INSERT "GLOBAL"
.INSERT "CLOCK"
.INSERT "PARSER"
.INSERT "VERBS"
.INSERT "TRAIN"
.INSERT "STATION"
.INSERT "GOAL"
.INSERT "SPIES"
.END

61
spy.zil Normal file
View File

@ -0,0 +1,61 @@
"EXTENDED COMPILE/LOAD FILE for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " CHECKPOINT: interactive fiction from Infocom!
">
ON!-INITIAL "for DEBUGR"
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>)>
<SET REDEFINE T>
"<GLOBAL BIGFIX 10000>"
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<DIRECTIONS ;"Do not change the order of the first eight
without consulting MARC! -- ENCHANTER"
NORTH ;NE EAST ;SE SOUTH ;SW WEST ;NW UP DOWN IN OUT>
<IFILE "MACROS" T>
<IFILE "SYNTAX" T>
<IFILE "MAIN" T>
<IFILE "THINGS" T>
<IFILE "PEOPLE" T>
<IFILE "PLACES" T>
<IFILE "GLOBAL" T>
<CONSTANT SERIAL 0>
<IFILE "CLOCK" T>
<IFILE "PARSER" T>
<IFILE "VERBS" T>
<IFILE "TRAIN" T>
<IFILE "CARS" T>
<IFILE "STATION" T>
<IFILE "GOAL" T>
<IFILE "SPIES" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<DEFINE ISL () <INIT-STATUS-LINE>>
<GC-MON T>
<COND (<GASSIGNED? MUDDLE>
<GC 0 T 5>)>

BIN
spy.zip Normal file

Binary file not shown.

17961
spydat.zap Normal file

File diff suppressed because it is too large Load Diff

200
spyfreq.xzap Normal file
View File

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;754 378
.FSTR FSTR?2,"You " ;420 141
.FSTR FSTR?3,", " ;353 354
.FSTR FSTR?4,"you " ;334 168
.FSTR FSTR?5,"and " ;326 164
.FSTR FSTR?6,"can't " ;240 49
.FSTR FSTR?7,"The " ;228 77
.FSTR FSTR?8,"to " ;219 220
.FSTR FSTR?9,"There's " ;216 28
.FSTR FSTR?10,"your " ;201 68
.FSTR FSTR?11,"that " ;189 64
.FSTR FSTR?12,"You're " ;175 26
.FSTR FSTR?13,"train " ;156 40
.FSTR FSTR?14,"other " ;152 39
.FSTR FSTR?15,". " ;141 142
.FSTR FSTR?16,"with " ;138 47
.FSTR FSTR?17,"It's " ;135 28
.FSTR FSTR?18,"for " ;128 65
.FSTR FSTR?19,"of " ;126 127
.FSTR FSTR?20,"don't " ;115 24
.FSTR FSTR?21,"forward " ;114 20
.FSTR FSTR?22,"is " ;100 101
.FSTR FSTR?23,"compartment" ;99 12
.FSTR FSTR?24,"but " ;96 49
.FSTR FSTR?25,"train" ;93 32
.FSTR FSTR?26,"this " ;93 32
.FSTR FSTR?27,"from " ;93 32
.FSTR FSTR?28,"have " ;90 31
.FSTR FSTR?29,"in " ;88 89
.FSTR FSTR?30,"not " ;88 45
.FSTR FSTR?31,"enough " ;85 18
.FSTR FSTR?32,"looks " ;84 22
.FSTR FSTR?33,"you're " ;84 15
.FSTR FSTR?34,"compartment " ;80 9
.FSTR FSTR?35,"luggage " ;78 14
.FSTR FSTR?36,"nothing " ;72 13
.FSTR FSTR?37,"can " ;66 34
.FSTR FSTR?38,"want " ;66 23
.FSTR FSTR?39,"here" ;64 33
.FSTR FSTR?40,"something " ;64 9
.FSTR FSTR?41,"briefcase " ;64 9
.FSTR FSTR?42,"TRAVELER" ;63 10
.FSTR FSTR?43,"on " ;60 61
.FSTR FSTR?44,"under " ;60 16
.FSTR FSTR?45,"waiting " ;60 11
.FSTR FSTR?46,"platform" ;60 11
.FSTR FSTR?47,"looking " ;60 11
.FSTR FSTR?48,"already " ;60 11
.FSTR FSTR?49,"find " ;57 20
.FSTR FSTR?50,"anything " ;56 9
.FSTR FSTR?51,"won't " ;55 12
.FSTR FSTR?52,"restroom" ;54 10
.FSTR FSTR?53,"Your " ;52 14
.FSTR FSTR?54,"This " ;52 14
.FSTR FSTR?55,"rear " ;51 18
.FSTR FSTR?56,"into " ;51 18
.FSTR FSTR?57,"around " ;50 11
.FSTR FSTR?58,"vestibule" ;49 8
.FSTR FSTR?59,"see " ;48 25
.FSTR FSTR?60,"are " ;48 25
.FSTR FSTR?61,"n't " ;48 17
.FSTR FSTR?62,"like " ;48 17
.FSTR FSTR?63,"through " ;48 9
.FSTR FSTR?64,"you" ;47 48
.FSTR FSTR?65,"Okay" ;45 16
.FSTR FSTR?66,"station" ;45 10
.FSTR FSTR?67,"window" ;44 12
.FSTR FSTR?68,"seems " ;44 12
.FSTR FSTR?69,"Sorry" ;44 12
.FSTR FSTR?70,"it " ;42 43
.FSTR FSTR?71,"look " ;42 15
.FSTR FSTR?72,"holding " ;42 8
.FSTR FSTR?73,"Please " ;42 8
.FSTR FSTR?74,"You'll " ;42 7
.FSTR FSTR?75,"would " ;40 11
.FSTR FSTR?76,"What " ;40 11
.FSTR FSTR?77,"points " ;40 9
.FSTR FSTR?78,"some " ;39 14
.FSTR FSTR?79,"only " ;39 14
.FSTR FSTR?80,"good " ;39 14
.FSTR FSTR?81,"first" ;39 14
.FSTR FSTR?82,"out " ;38 20
.FSTR FSTR?83,"his " ;36 19
.FSTR FSTR?84,"right " ;36 10
.FSTR FSTR?85,"middle" ;36 10
.FSTR FSTR?86,"it's " ;36 10
.FSTR FSTR?87,"gesture" ;35 8
.FSTR FSTR?88,"before " ;35 8
.FSTR FSTR?89,"standing " ;35 6
.FSTR FSTR?90,"restroom " ;35 6
.FSTR FSTR?91,"doesn't " ;35 6
.FSTR FSTR?92,"dispenser" ;35 6
.FSTR FSTR?93,"That's " ;35 6
.FSTR FSTR?94,"seat" ;34 18
.FSTR FSTR?95,"at " ;33 34
.FSTR FSTR?96,"then " ;33 12
;word frequency table of 96 most common words
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

368
spystr.zap Normal file
View File

@ -0,0 +1,368 @@
; STRINGS ARE DEFINED HERE
.GSTR STR?1,"is"
.GSTR STR?2,"has"
.GSTR STR?3,"do"
.GSTR STR?4,"kiss"
.GSTR STR?5,"push"
.GSTR STR?6,"say"
.GSTR STR?7,"It's your last $10 Mariners' Trust traveler's check, ""accepted and even revered the world over."""
.GSTR STR?8,"nod"
.GSTR STR?9,"display"
.GSTR STR?10,"look"
.GSTR STR?11,"It's not a very handsome document, scrawled in a hurry by a hand that wouldn't win any prizes under the best of conditions. But it seems to contain crucial information -- times, places, a crude map, even code words -- about a plan to kidnap some high-ranking official. Were the plan to succeed, several governments would be embarrassed, if not in mortal danger, and the balance of power would become precarious."
.GSTR STR?12,"open"
.GSTR STR?13,"closed"
.GSTR STR?14,"A sign on the wall announces something in large, unfriendly letters."
.GSTR STR?15,"written and directed by Stu Galley, with a little help from his friends"
.GSTR STR?16,"with some narration by Bruce Schechter"
.GSTR STR?17,"dedicated to the late Sir Alfred Hitchcock"
.GSTR STR?18,"proofed by the Infocom Quality Assurance Dept"
.GSTR STR?19,"It's all in some foreign language."
.GSTR STR?20,"It's a small burst of color in this colorless country."
.GSTR STR?21,"find"
.GSTR STR?22,"You notice marks and scratches on the walls."
.GSTR STR?23,"The scratches are dark but indistinct, probably from rubber-soled shoes, as if there had once been a desparate struggle here."
.GSTR STR?24,"You notice a worn spot on the floor."
.GSTR STR?25,"The linoleum is completely gone from this spot, leaving the floor itself exposed in a roundish shape, as if someone with itchy feet had stood or sat in the same place over and over again."
.GSTR STR?26,"You notice some graffiti on the wall."
.GSTR STR?27,"The graffiti artist made do with a lead pencil, since felt pens and spray paint are probably expensive here. As near as you can make out, the graffiti extol the artist's virtues, and recommend a phone number to call in a place called Zgrf."
.GSTR STR?28,"homicide"
.GSTR STR?29,"lying down"
.GSTR STR?30,"sitting down"
.GSTR STR?31,"hiding"
.GSTR STR?32,"He's helpful but suspicious, and doesn't want trouble in HIS jurisdiction."
.GSTR STR?33,"proper tickets"
.GSTR STR?34,"smile"
.GSTR STR?35,"His bushy black moustache and neatly combed hair go perfectly with his black formal jacket and bow tie, but his floor-length apron has seen better days and a few spills already on this trip."
.GSTR STR?36,"hat fashioned out of a napkin"
.GSTR STR?37,"torn T-shirt"
.GSTR STR?38,"He has the uniform jacket of the Frotzian Railway, and a tie worn loosely with an open collar, but blue jeans below. It seems a sensible outfit for both selling tickets and hauling luggage."
.GSTR STR?39,"For this guy, the word ""thin"" was invented: thin hair, narrow eyes, thin lips, pale bluish skin. If his expression weren't so pleasant, he'd look really menacing."
.GSTR STR?40,"For this guy, the word ""fat"" was invented: oily hair, puffy eyes, fat lips, pudgy pink skin. If his expression weren't so menacing, he'd look rather pleasant."
.GSTR STR?41,"He looks almost too good for a nowhere country like this: sparkling eyes, good bone structure, clear skin, tall and smooth. Of course, it's hard to tell whether or not he can think in complete sentences."
.GSTR STR?42,"She looks almost too good for a nowhere country like this: sparkling eyes, good bone structure, clear skin, tall and smooth. Of course, it's hard to tell whether or not she can think in complete sentences."
.GSTR STR?43,"She was clearly beautiful as a young woman. Now her heavy make-up and cologne, her fur piece and black net veil make her beauty a matter of personal preference."
.GSTR STR?44,"For this gal, the word ""thin"" was invented: thin hair, narrow eyes, thin lips, pale bluish skin. If her expression weren't so pleasant, she'd look really menacing."
.GSTR STR?45,"She wears a military-style uniform proudly, even though it fits her poorly. She seems to be watching for suspicious activities, such as people looking at her or at other people too much."
.GSTR STR?46,"He seems almost too big to fit into normal clothes, yet his clothes are impeccably tailored and he wears them perfectly."
.GSTR STR?47,"His small size makes him seem mostly harmless, yet there is something about the intensity of his glances that makes you uneasy."
.GSTR STR?48,"Her wad of gum could choke a yak. In fact she's the only one here with anything decent to chew on."
.GSTR STR?49,"Mikel Jaxon"
.GSTR STR?50,"Ronald Raygun"
.GSTR STR?51,"Jhon Lenin"
.GSTR STR?52,"Magi Thacher"
.GSTR STR?53,"Duglas Adamz"
.GSTR STR?54,"Stevn Apple"
.GSTR STR?55,"accept"
.GSTR STR?56,"battery"
.GSTR STR?57,"block"
.GSTR STR?58,"deliver"
.GSTR STR?59,"knock"
.GSTR STR?60,"mutter"
.GSTR STR?61,"carrying weapons"
.GSTR STR?62,"lend"
.GSTR STR?63,"point"
.GSTR STR?64,"drop"
.GSTR STR?65,"slump"
.GSTR STR?66,"a holiday"
.GSTR STR?67,"an outing"
.GSTR STR?68,"business"
.GSTR STR?69,"a long trip"
.GSTR STR?70,"brown"
.GSTR STR?71,"red"
.GSTR STR?72,"green"
.GSTR STR?73,"blue"
.GSTR STR?74,"gray"
.GSTR STR?75,"purple"
.GSTR STR?76,"a brown-paper package"
.GSTR STR?77,"a string bag"
.GSTR STR?78,"a beret"
.GSTR STR?79,"a strange odor"
.GSTR STR?80,"facial sores"
.GSTR STR?81,"a cane"
.GSTR STR?82,"an umbrella"
.GSTR STR?83,"looking at you with suspicion"
.GSTR STR?84,"snoozing"
.GSTR STR?85,"gazing out the window"
.GSTR STR?86,"chewing gum"
.GSTR STR?87,"smoking a cigarette"
.GSTR STR?88,"reading a newspaper"
.GSTR STR?89,"talking quietly"
.GSTR STR?90,"exchanging kisses"
.GSTR STR?91,"looking up and down the platform"
.GSTR STR?92,"re-arranging luggage"
.GSTR STR?93,"checking a timetable"
.GSTR STR?94,"about to leave"
.GSTR STR?95,"walking along"
.GSTR STR?96,"waiting for the train to start"
.GSTR STR?97,"waiting with him"
.GSTR STR?98,"walking to the front of the train"
.GSTR STR?99,"looking triumphant"
.GSTR STR?100,"making his rounds"
.GSTR STR?101,"searching out the window"
.GSTR STR?102,"listening to you"
.GSTR STR?103,"listening to you expectantly"
.GSTR STR?104,"looking at you expectantly"
.GSTR STR?105,"waiting for you"
.GSTR STR?106,"waiting for your order"
.GSTR STR?107,"waiting"
.GSTR STR?108,"cooking"
.GSTR STR?109,"hurrying away"
.GSTR STR?110,"waiting for another order"
.GSTR STR?111,"looking in your direction"
.GSTR STR?112,"inspecting luggage and passports"
.GSTR STR?113,"slumped on the floor"
.GSTR STR?114,"preparing to knock you off"
.GSTR STR?115,"out cold"
.GSTR STR?116,"deep in thought"
.GSTR STR?117,"dead"
.GSTR STR?118," gorm"
.GSTR STR?119,"nash"
.GSTR STR?120," floo"
.GSTR STR?121,"snap"
.GSTR STR?122," nom"
.GSTR STR?123,"nets"
.GSTR STR?124," mush"
.GSTR STR?125,"pro"
.GSTR STR?126," frob"
.GSTR STR?127,"zit"
.GSTR STR?128," qwa"
.GSTR STR?129,"mrk"
.GSTR STR?130," vub"
.GSTR STR?131,"ulp"
.GSTR STR?132," liz"
.GSTR STR?133,"ni"
.GSTR STR?134," cho"
.GSTR STR?135,"glip"
.GSTR STR?136," quid"
.GSTR STR?137,"zrk"
.GSTR STR?138," fim"
.GSTR STR?139,"nosh"
.GSTR STR?140," glob"
.GSTR STR?141,"frp"
.GSTR STR?142," jon"
.GSTR STR?143,"stu"
.GSTR STR?144," dav"
.GSTR STR?145,"bob"
.GSTR STR?146," jef"
.GSTR STR?147,"jer"
.GSTR STR?148," bri"
.GSTR STR?149,"stev"
.GSTR STR?150,"It's a metal sink, a bit dented and scratched, with only one faucet."
.GSTR STR?151,"spy"
.GSTR STR?152,"traveler"
.GSTR STR?153,"A sign on the wall has a long list of mysterious Frotzian phrases, printed in ornate letters. All you can decipher is unpleasant things like fish heads and lice, or rumpled stilt's skin. Wait! There's an American phrase: Eggs McGuffin!"
.GSTR STR?154,"make"
.GSTR STR?155,"Not Here"
.GSTR STR?156,"Actor"
.GSTR STR?157,"Room (M-BEG)"
.GSTR STR?158,"Preaction"
.GSTR STR?159,"PRSI"
.GSTR STR?160,"PRSO"
.GSTR STR?161,"Room (M-END)"
.GSTR STR?162,"Container"
.GSTR STR?163,"What charming language!"
.GSTR STR?164,"Computers aren't impressed by naughty words!"
.GSTR STR?165,"You ought to be ashamed of yourself!"
.GSTR STR?166,"Hey, save that talk for the locker room!"
.GSTR STR?167,"Step outside and say that!"
.GSTR STR?168,"And so's your old man!"
.GSTR STR?169,"(I don't know the word """
.GSTR STR?170,""".)"
.GSTR STR?171,"(Sorry, but the word """
.GSTR STR?172,""" is not in the vocabulary that you can use.)"
.GSTR STR?173,"(You don't need to use the word """
.GSTR STR?174,""" to finish this story.)"
.GSTR STR?175,"(Sorry, but this story doesn't recognize the word """
.GSTR STR?176,"(I assume you mean:"
.GSTR STR?177,"begin"
.GSTR STR?178,"end"
.GSTR STR?179,"brief"
.GSTR STR?180,"superbrief"
.GSTR STR?181,"verbose"
.GSTR STR?182,"go"
.GSTR STR?183,"turn off"
.GSTR STR?184,"turn on"
.GSTR STR?185," won't help any."
.GSTR STR?186," is a waste of time."
.GSTR STR?187,"hold"
.GSTR STR?188,"take"
.GSTR STR?189,"on"
.GSTR STR?190,"off"
.GSTR STR?191,"locked"
.GSTR STR?192,"unlocked"
.GSTR STR?193,"let"
.GSTR STR?194,"seem"
.GSTR STR?195,"n't appear interested"
.GSTR STR?196,"n't care"
.GSTR STR?197," out a loud yawn"
.GSTR STR?198," impatient"
.GSTR STR?199,"That's ridiculous!"
.GSTR STR?200,"Surely you jest."
.GSTR STR?201,"Not a chance."
.GSTR STR?202,"Not bloody likely."
.GSTR STR?203,"What a fruitcake!"
.GSTR STR?204,"What a screwball!"
.GSTR STR?205,"What a concept!"
.GSTR STR?206,"Like, totally grody, for sure."
.GSTR STR?207,"You can't be serious!"
.GSTR STR?208,"attack"
.GSTR STR?209,"catch"
.GSTR STR?210,"stop"
.GSTR STR?211,"turn"
.GSTR STR?212,"ignore"
.GSTR STR?213,"not wired for phoning"
.GSTR STR?214,"get in"
.GSTR STR?215,"climb onto"
.GSTR STR?216,"on the roof"
.GSTR STR?217,"on the ground"
.GSTR STR?218,"on the floor"
.GSTR STR?219,"empty"
.GSTR STR?220,"bang"
.GSTR STR?221,"too far away"
.GSTR STR?222,"here"
.GSTR STR?223,"Hello"
.GSTR STR?224,"Good-bye"
.GSTR STR?225,"applaud"
.GSTR STR?226,"kill"
.GSTR STR?227,"standing up"
.GSTR STR?228,"look inside"
.GSTR STR?229,"look outside"
.GSTR STR?230,"look through"
.GSTR STR?231,"Pushing"
.GSTR STR?232,"pick up"
.GSTR STR?233,"in"
.GSTR STR?234,"Fiddling with"
.GSTR STR?235,"talk into"
.GSTR STR?236,"shoot"
.GSTR STR?237,"slap"
.GSTR STR?238,"smell"
.GSTR STR?239,"holding it"
.GSTR STR?240,"reach"
.GSTR STR?241,"acknowledge"
.GSTR STR?242,"duck"
.GSTR STR?243,"om"
.GSTR STR?244,"ich"
.GSTR STR?245,"wait until"
.GSTR STR?246,"not asleep"
.GSTR STR?247,"go under"
.GSTR STR?248,"being worn"
.GSTR STR?249,"through a grade crossing."
.GSTR STR?250,"by a grade crossing."
.GSTR STR?251,"A country road crosses the tracks here, marked only by large ""X""-shaped signs. A cross-country vehicle is waiting."
.GSTR STR?252,"past a dark, violent river."
.GSTR STR?253,"on the bank of a violent river."
.GSTR STR?254,"The river splashes and swirls around huge granite boulders. In the center a dark current carries bits of foam swiftly along."
.GSTR STR?255,"through a dark tunnel."
.GSTR STR?256,"in the middle of a long, dark tunnel."
.GSTR STR?257,"The tunnel is really too dark to see anything clearly. You can bet that some nasty beasties inhabit it."
.GSTR STR?258,"past a wild meadow."
.GSTR STR?259,"at the edge of a wild meadow."
.GSTR STR?260,"The meadow looks too full of knolls and bumps for farming, but livestock can graze in it. A wild flower grows here and there."
.GSTR STR?261,"along a barren stubble-plain."
.GSTR STR?262,"at the edge of a barren stubble-plain."
.GSTR STR?263,"There's not enough water supply here to support much obvious life. Dry stems cover the plain like a four-day-old beard."
.GSTR STR?264,"through a mysterious forest."
.GSTR STR?265,"in the middle of a mysterious forest."
.GSTR STR?266,"So many tree trunks fill the view that you can't really see the forest. There might be a sun-dappled glade not far away, but the undergrowth is too thick to tell."
.GSTR STR?267,"along the edge of a rocky precipice."
.GSTR STR?268,"on tracks that skirt the edge of a rocky precipice."
.GSTR STR?269,"The view down the cliff is so steep that you can't bear to look at it."
.GSTR STR?270,"past a small town."
.GSTR STR?271,"near a small town."
.GSTR STR?272,"Only a few poor souls walk the streets of this town at this hour. The nearest buildings look run-down and cold, and the farther ones blend together into a jumble of wooden shingles."
.GSTR STR?273,"through a railway station."
.GSTR STR?274,"in a railway station."
.GSTR STR?275,"Glrp-Wien Express"
.GSTR STR?276,"Znuk-Potrzebie Express"
.GSTR STR?277,"hide"
.GSTR STR?278,"rac"
.GSTR STR?279,"hurtl"
.GSTR STR?280,"steam"
.GSTR STR?281,"rocket"
.GSTR STR?282,"speed"
.GSTR STR?283,"rear "
.GSTR STR?284,"forward "
.GSTR STR?285,"delaying trains"
.GSTR STR?286,"If you want to jump, say so!"
.GSTR STR?287,"This is a swinging metal door with a brass handle."
.GSTR STR?288,"notice"
.GSTR STR?289,"too big to fit"
.GSTR STR?290,"platform #"
.GSTR STR?291,"car #"
.GSTR STR?292,"There seems to be something written on the window."
.GSTR STR?293,"A cigarette machine stands in one corner, waiting to be either used or discarded -- it's hard to say which."
.GSTR STR?294,"This is the end of the platform."
.GSTR STR?295,"The place is crowded with people."
.GSTR STR?296,"You are standing in the railway station. You can see a cafe on the north side and the ticket counter on the south. The street is west. The place is crowded with people."
.GSTR STR?297,"This restroom is impressively tidy. That's a good thing, because it's one of the only pair in the whole station."
.GSTR STR?298,"give"
.GSTR STR?299,"Through a blue haze of cigarette smoke, you can see travelers sipping their food while waiting for their trains."
.GSTR STR?300,"The station faces a small square, crowded with people."
.GSTR STR?301,"south"
.GSTR STR?302,"north"
.GSTR STR?303,"east"
.GSTR STR?304,"west"
.GSTR STR?305,"up the steps"
.GSTR STR?306,"down the steps"
.GSTR STR?307,"out"
.GSTR STR?308,"front"
.GSTR STR?309,"rear"
.GSTR STR?310,"right side of the train"
.GSTR STR?311,"left side of the train"
.GSTR STR?312,"up the ladder"
.GSTR STR?313,"down the ladder"
.GSTR STR?314,"Reached"
.GSTR STR?315,"leave"
.GSTR STR?316,"enter"
.GSTR STR?317,"check"
.GSTR STR?318,"head"
.GSTR STR?319,"walk"
.GSTR STR?320,"disappear"
.GSTR STR?321,"appear"
.GSTR STR?322,"Enroute"
.GSTR STR?323,"bump"
.GSTR STR?324,"get"
.GSTR STR?325,"show"
.GSTR STR?326," crouches low and prepares to lunge"
.GSTR STR?327," slips but then regains his footing"
.GSTR STR?328," creeps a little closer"
.GSTR STR?329,"Impatient"
.GSTR STR?330,"asleep"
.GSTR STR?331,"busy"
.GSTR STR?332," again"
.GSTR STR?333," strongly"
.GSTR STR?334," forcefully"
.GSTR STR?335," wildly"
.GSTR STR?336," frantically"
.GSTR STR?337,"smuggling"
.GSTR STR?338,"stare"
.GSTR STR?339,"leav"
.GSTR STR?340,"board"
.GSTR STR?341,"pause"
.GSTR STR?342,"passports"
.GSTR STR?343," takes"
.GSTR STR?344," tries to take"
.GSTR STR?345," closes"
.GSTR STR?346," examines"
.GSTR STR?347," turns"
.GSTR STR?348," opens"
.GSTR STR?349," loads"
.GSTR STR?350," cocks"
.GSTR STR?351," pockets"
.GSTR STR?352," puts away"
.GSTR STR?353," picks up"
.GSTR STR?354," finds and picks "
.GSTR STR?355," buys"
.GSTR STR?356," kicks"
.GSTR STR?357," acquires "
.GSTR STR?358," pulls"
.GSTR STR?359," finds"
.GSTR STR?360," shows"
.GSTR STR?361," talks to"
.GSTR STR?362," hands over"
.ENDI

352
station.cmp Normal file
View File

@ -0,0 +1,352 @@
;COMPARISON OF PS:<SWG>STATION.ZAP.1 AND PS:<SWG>STATION.ZAP.3
;OPTIONS ARE /1
**** FILE PS:<SWG>STATION.ZAP.1, 1-10 (163)
EQUAL? PRSA,V?WALK-TO \?ELS5
ZERO? ON-TRAIN /?ELS5
**** FILE PS:<SWG>STATION.ZAP.3, 1-10 (163)
EQUAL? PRSA,V?WALK-TO \?ELS4
ZERO? ON-TRAIN /?ELS4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-14 (256)
?ELS5: CALL ON-PLATFORM?,HERE
ZERO? STACK /?ELS9
**** FILE PS:<SWG>STATION.ZAP.3, 1-14 (256)
?ELS4: CALL ON-PLATFORM?,HERE
ZERO? STACK /?ELS6
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-18 (359)
?ELS9: CALL ZMEMQ,HERE,STATION-ROOMS
ZERO? STACK \?THN12
**** FILE PS:<SWG>STATION.ZAP.3, 1-18 (359)
?ELS6: CALL ZMEMQ,HERE,STATION-ROOMS
ZERO? STACK \?THN7
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-24 (526)
?THN12: GETP HERE,P?CAR
**** FILE PS:<SWG>STATION.ZAP.3, 1-24 (525)
?THN7: GETP HERE,P?CAR
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-31 (657)
ZERO? CUSTOMS-SWEEP \?ELS5
**** FILE PS:<SWG>STATION.ZAP.3, 1-31 (655)
ZERO? CUSTOMS-SWEEP \?ELS4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-33 (706)
?ELS5: FSET? PASSPORT,LOCKED \?ELS7
**** FILE PS:<SWG>STATION.ZAP.3, 1-33 (704)
?ELS4: FSET? PASSPORT,LOCKED \?ELS5
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-42 (928)
?ELS7: ZERO? BRIEFCASE-PASSED \?ELS11
IN? BRIEFCASE,PLAYER \?ELS11
**** FILE PS:<SWG>STATION.ZAP.3, 1-42 (926)
?ELS5: ZERO? BRIEFCASE-PASSED \?ELS8
IN? BRIEFCASE,PLAYER \?ELS8
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-48 (1124)
FSET? BRIEFCASE,OPENBIT \?ELS18
**** FILE PS:<SWG>STATION.ZAP.3, 1-48 (1120)
FSET? BRIEFCASE,OPENBIT \?ELS13
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-54 (1236)
?ELS18: PRINTI "as if to say, ""Open"
**** FILE PS:<SWG>STATION.ZAP.3, 1-54 (1232)
?ELS13: PRINTI "as if to say, ""Open"
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-59 (1332)
?ELS11: FIRST? POCKET \?ELS26
**** FILE PS:<SWG>STATION.ZAP.3, 1-59 (1328)
?ELS8: FIRST? POCKET \?ELS18
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-68 (1557)
?ELS26: IN? MCGUFFIN,PLAYER \?ELS30
**** FILE PS:<SWG>STATION.ZAP.3, 1-68 (1552)
?ELS18: IN? MCGUFFIN,PLAYER \?ELS21
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-76 (1738)
?ELS30: IN? BRIEFCASE,PLAYER /?CND35
**** FILE PS:<SWG>STATION.ZAP.3, 1-76 (1733)
?ELS21: IN? BRIEFCASE,PLAYER /?CND24
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-78 (1803)
?CND35: CALL QUEUE,I-DEPART-WARNING,5
**** FILE PS:<SWG>STATION.ZAP.3, 1-78 (1798)
?CND24: CALL QUEUE,I-DEPART-WARNING,5
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-84 (1908)
ZERO? CUSTOMS-SWEEP /?ELS5
ZERO? IN-STATION /?ELS5
**** FILE PS:<SWG>STATION.ZAP.3, 1-84 (1903)
ZERO? CUSTOMS-SWEEP /?ELS4
ZERO? IN-STATION /?ELS4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-90 (2059)
?ELS5: RETURN PLATFORM-B
**** FILE PS:<SWG>STATION.ZAP.3, 1-90 (2054)
?ELS4: RETURN PLATFORM-B
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-94 (2118)
EQUAL? RARG,M-LOOK \?ELS5
**** FILE PS:<SWG>STATION.ZAP.3, 1-94 (2113)
EQUAL? RARG,M-LOOK \?ELS4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-101 (2310)
EQUAL? HERE,PLATFORM-A \?ELS10
**** FILE PS:<SWG>STATION.ZAP.3, 1-101 (2305)
EQUAL? HERE,PLATFORM-A \?ELS8
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-103 (2375)
JUMP ?CND8
?ELS10: EQUAL? HERE,PLATFORM-E \?ELS14
**** FILE PS:<SWG>STATION.ZAP.3, 1-103 (2369)
JUMP ?CND7
?ELS8: EQUAL? HERE,PLATFORM-E \?ELS11
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-106 (2460)
JUMP ?CND8
?ELS14: PRINTI "on "
?CND8: PRINTI "the platform of the "
**** FILE PS:<SWG>STATION.ZAP.3, 1-106 (2453)
JUMP ?CND7
?ELS11: PRINTI "on "
?CND7: PRINTI "the platform of the "
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-111 (2604)
EQUAL? HERE,PLATFORM-A \?ELS25
**** FILE PS:<SWG>STATION.ZAP.3, 1-111 (2597)
EQUAL? HERE,PLATFORM-A \?ELS19
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-113 (2656)
JUMP ?CND23
?ELS25: EQUAL? HERE,PLATFORM-E \?ELS27
**** FILE PS:<SWG>STATION.ZAP.3, 1-113 (2649)
JUMP ?CND18
?ELS19: EQUAL? HERE,PLATFORM-E \?ELS20
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-116 (2732)
JUMP ?CND23
?ELS27: EQUAL? HERE,PLATFORM-C \?ELS32
**** FILE PS:<SWG>STATION.ZAP.3, 1-116 (2725)
JUMP ?CND18
?ELS20: EQUAL? HERE,PLATFORM-C \?ELS22
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-119 (2810)
JUMP ?CND30
?ELS32: PRINTI "wall of "
?CND30: PRINTI "the station house"
?CND23: PRINTI ". To the east "
ZERO? IN-STATION /?ELS45
**** FILE PS:<SWG>STATION.ZAP.3, 1-119 (2803)
JUMP ?CND21
?ELS22: PRINTI "wall of "
?CND21: PRINTI "the station house"
?CND18: PRINTI ". To the east "
ZERO? IN-STATION /?ELS32
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-126 (3004)
EQUAL? HERE,PLATFORM-A \?CND43
**** FILE PS:<SWG>STATION.ZAP.3, 1-126 (2997)
EQUAL? HERE,PLATFORM-A \?CND31
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-128 (3080)
JUMP ?CND43
?ELS45: PRINTI "are the train tracks"
?CND43: PRINTR ". The place is crowded with people."
?ELS5: EQUAL? RARG,M-BEG \?ELS61
**** FILE PS:<SWG>STATION.ZAP.3, 1-128 (3073)
JUMP ?CND31
?ELS32: PRINTI "are the train tracks"
?CND31: PRINTR ". The place is crowded with people."
?ELS4: EQUAL? RARG,M-BEG \?ELS43
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-136 (3328)
EQUAL? P,GUARD \?CND72
ZERO? GUARD-SUSPICION /?CND72
FSET? GUARD,TOUCHBIT \?CND72
**** FILE PS:<SWG>STATION.ZAP.3, 1-136 (3321)
EQUAL? P,GUARD \?CND51
ZERO? GUARD-SUSPICION /?CND51
FSET? GUARD,TOUCHBIT \?CND51
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-143 (3516)
?CND72: FSET P,NDESCBIT
**** FILE PS:<SWG>STATION.ZAP.3, 1-143 (3509)
?CND51: FSET P,NDESCBIT
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-145 (3551)
?ELS61: EQUAL? RARG,M-END \?ELS80
**** FILE PS:<SWG>STATION.ZAP.3, 1-145 (3544)
?ELS43: EQUAL? RARG,M-END \?ELS56
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-148 (3622)
?ELS80: EQUAL? RARG,M-ENTER \?ELS82
**** FILE PS:<SWG>STATION.ZAP.3, 1-148 (3615)
?ELS56: EQUAL? RARG,M-ENTER \?ELS57
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-157 (3856)
?ELS82: ZERO? RARG \FALSE
**** FILE PS:<SWG>STATION.ZAP.3, 1-157 (3849)
?ELS57: ZERO? RARG \FALSE
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-176 (4228)
ZERO? STACK /?ELS5
**** FILE PS:<SWG>STATION.ZAP.3, 1-176 (4221)
ZERO? STACK /?ELS4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-182 (4342)
?ELS5: ZERO? IN-STATION \?THN10
EQUAL? HERE,BESIDE-TRACKS \?ELS9
?THN10: SET 'ON-TRAIN,TRUE-VALUE
ZERO? PULLED-STOP-CORD /?CND12
**** FILE PS:<SWG>STATION.ZAP.3, 1-182 (4335)
?ELS4: ZERO? IN-STATION \?THN7
EQUAL? HERE,BESIDE-TRACKS \?ELS8
?THN7: SET 'ON-TRAIN,TRUE-VALUE
ZERO? PULLED-STOP-CORD /?CND9
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-187 (4499)
?CND12: FSET? PEN,TOUCHBIT /?CND16
**** FILE PS:<SWG>STATION.ZAP.3, 1-187 (4489)
?CND9: FSET? PEN,TOUCHBIT /?CND11
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-190 (4573)
?CND16: ZERO? IN-STATION /?CND19
**** FILE PS:<SWG>STATION.ZAP.3, 1-190 (4562)
?CND11: ZERO? IN-STATION /?CND13
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-193 (4667)
?CND19: CALL V-REAR,CAR-HERE
**** FILE PS:<SWG>STATION.ZAP.3, 1-193 (4656)
?CND13: CALL V-REAR,CAR-HERE
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-195 (4707)
?ELS9: PRINTI "Walking on the tracks is not a good idea."
**** FILE PS:<SWG>STATION.ZAP.3, 1-195 (4696)
?ELS8: PRINTI "Walking on the tracks is not a good idea."
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-201 (4815)
ZERO? ARG \?THN8
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?THN8
**** FILE PS:<SWG>STATION.ZAP.3, 1-201 (4804)
ZERO? ARG \?THN4
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?THN4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-204 (4937)
?THN8: SET 'OBJ,GOOD-SPY
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
**** FILE PS:<SWG>STATION.ZAP.3, 1-204 (4926)
?THN4: SET 'OBJ,GOOD-SPY
PUSH 1
IN? STACK,HERE \?ELS11
FSET? OBJ,NDESCBIT /?THN10
?ELS11: SET 'OBJ,GUARD
PUSH 1
IN? STACK,HERE \?ELS12
FSET? OBJ,NDESCBIT /?THN10
?ELS12: CALL CALL-FOR-EXTRA,HERE,FALSE-VALUE >OBJ
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-212 (5161)
?THN15: CALL THIS-IS-IT,OBJ
**** FILE PS:<SWG>STATION.ZAP.3, 1-214 (5172)
?THN10: CALL THIS-IS-IT,OBJ
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-226 (5444)
EQUAL? RARG,M-ENTER \?ELS5
**** FILE PS:<SWG>STATION.ZAP.3, 1-228 (5455)
EQUAL? RARG,M-ENTER \?ELS4
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-229 (5509)
?ELS5: EQUAL? RARG,M-FLASH \FALSE
**** FILE PS:<SWG>STATION.ZAP.3, 1-231 (5520)
?ELS4: EQUAL? RARG,M-FLASH \FALSE
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-239 (5803)
ZERO? STACK \?CND10
**** FILE PS:<SWG>STATION.ZAP.3, 1-241 (5814)
ZERO? STACK \?CND7
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-241 (5847)
?PRG13: GET EXTRA-TABLE,N >X
**** FILE PS:<SWG>STATION.ZAP.3, 1-243 (5857)
?PRG9: GET EXTRA-TABLE,N >X
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-243 (5910)
ZERO? STACK /?ELS17
JUMP ?CND10
?ELS17: DLESS? 'N,1 \?PRG13
**** FILE PS:<SWG>STATION.ZAP.3, 1-245 (5919)
ZERO? STACK /?ELS12
JUMP ?CND7
?ELS12: DLESS? 'N,1 \?PRG9
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-247 (5988)
JUMP ?PRG13
?CND10: CALL START-SENTENCE,GOOD-SPY
**** FILE PS:<SWG>STATION.ZAP.3, 1-249 (5995)
JUMP ?PRG9
?CND7: CALL START-SENTENCE,GOOD-SPY
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-256 (6229)
EQUAL? PASSWORD,CAMERA,HANKY,SCARF \?CND22
**** FILE PS:<SWG>STATION.ZAP.3, 1-258 (6234)
EQUAL? PASSWORD,CAMERA,HANKY,SCARF \?CND16
***************
**** FILE PS:<SWG>STATION.ZAP.1, 1-258 (6287)
?CND22: PRINTI " '"
**** FILE PS:<SWG>STATION.ZAP.3, 1-260 (6292)
?CND16: PRINTI " '"
***************

407
station.zap Normal file
View File

@ -0,0 +1,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

614
station.zil Normal file
View File

@ -0,0 +1,614 @@
"STATION for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<ROUTINE ON-PLATFORM? (RM)
<COND (<OR <EQUAL? .RM ,PLATFORM-A ,PLATFORM-B ,PLATFORM-C>
<EQUAL? .RM ,PLATFORM-D ,PLATFORM-E>>
<GETP .RM ,P?CAR>)>>
<OBJECT PLATFORM-GLOBAL
(LOC GLOBAL-OBJECTS)
(DESC "platform")
(SYNONYM PLATFORM)
(ACTION PLATFORM-GLOBAL-F)>
<ROUTINE PLATFORM-GLOBAL-F ("AUX" P)
<COND (<AND <VERB? WALK-TO> ,ON-TRAIN>
<PERFORM ,V?LEAVE ,TRAIN>
<RTRUE>)
(<ON-PLATFORM? ,HERE>
<DO-INSTEAD-OF ,HERE ,PLATFORM-GLOBAL>
<RTRUE>)
(<ZMEMQ ,HERE ,STATION-ROOMS>
<DO-INSTEAD-OF <GET ,STATION-ROOMS <GETP ,HERE ,P?CAR>>
,PLATFORM-GLOBAL>
<RTRUE>)
(<AND ,ON-TRAIN ,IN-STATION <GLOBAL-IN? ,SCENERY-LEFT ,HERE>>
<DO-INSTEAD-OF <GET ,STATION-ROOMS ,CAR-HERE>
,PLATFORM-GLOBAL>
<RTRUE>)>>
<ROOM PLATFORM-A
(LOC ROOMS)
(CAR 1)
(FLAGS ONBIT SURFACEBIT)
(DESC "platform")
(SYNONYM PLATFORM)
;(LDESC "You are standing on the platform of the railway station.")
(UP PER EMBARK-F)
(EAST PER EMBARK-F)
(NORTH SORRY "This is the end of the platform.")
(SOUTH PER UNPASS-CUSTOMS-F)
(WEST TO REST-ROOM-MEN ;"ENTER-STATION-F")
(IN TO REST-ROOM-MEN ;"ENTER-STATION-F")
(GLOBAL ;WINDOW-0 WINDOW-1 WINDOW-2 WINDOW-3
WINDOW-4 WINDOW-5 ;WINDOW-N CROWD)
(CORRIDOR 4)
(LINE 4)
(STATION PLATFORM-A)
(DESCFCN PLATFORM-F)
(ACTION PLATFORM-F)>
<ROUTINE PASS-CUSTOMS-F ()
<COND (<NOT ,CUSTOMS-SWEEP>
<NEXT-CAR-SWITCHEROO ,CAR-HERE <GETP ,PLATFORM-A ,P?CAR>>
,PLATFORM-A)
(<FSET? ,PASSPORT ,LOCKED>
<TELL
CTHE ,CUSTOMS-AGENT " makes a gesture, asking for " D ,PASSPORT "." CR>
<THIS-IS-IT ,PASSPORT>
<THIS-IS-IT ,CUSTOMS-AGENT>
<RFALSE>)
(<AND <NOT ,BRIEFCASE-PASSED> <IN? ,BRIEFCASE ,PLAYER>>
<TELL CTHE ,CUSTOMS-AGENT " makes a gesture, ">
<COND (<FSET? ,BRIEFCASE ,OPENBIT>
<TELL "pointing at" HIM ,BRIEFCASE "." CR>)
(T
<TELL "as if to say, \"Open" HIM ,BRIEFCASE ".\"" CR>)>
<THIS-IS-IT ,BRIEFCASE>
<THIS-IS-IT ,CUSTOMS-AGENT>
<RFALSE>)
(<FIRST? ,POCKET>
<TELL
CTHE ,CUSTOMS-AGENT " makes a gesture, as if to say, \"Empty " D ,POCKET ".\""
CR>
<THIS-IS-IT ,POCKET>
<THIS-IS-IT ,CUSTOMS-AGENT>
<RFALSE>)
(<IN? ,MCGUFFIN ,PLAYER>
<START-SENTENCE ,CUSTOMS-AGENT>
<TELL " confiscates" HIM ,MCGUFFIN " and arrests you!" CR>
<FINISH>)
(<IN? ,GUN ,PLAYER>
<START-SENTENCE ,CUSTOMS-AGENT>
<TELL " confiscates" HIM ,GUN " and arrests you!" CR>
<FINISH>)
(T
<FLUSH? ,CAR-ROOMS <> <> <>>
<FLUSH? ,CAR-ROOMS T <> <>>
<FLUSH? ,CAR-ROOMS-DINER <> <> <>>
<FLUSH? ,CAR-ROOMS-FANCY <> <> <>>
;<COND (<NOT <FSET? <LOC ,BRIEFCASE> ,PERSONBIT>>
<NOT <IN? ,BRIEFCASE ,PLAYER>>
<MOVE ,BRIEFCASE ,LIMBO-FWD>)>
<ENABLE <QUEUE I-DEPART-WARNING 5 ;<GETP ,SCENERY-OBJ ,P?SIZE>>>
<NEXT-CAR-SWITCHEROO ,CAR-HERE <GETP ,PLATFORM-A ,P?CAR>>
<TELL CHE ,CUSTOMS-AGENT smile " approvingly." CR>
,PLATFORM-A)>>
<ROUTINE UNPASS-CUSTOMS-F ()
<COND (<AND ,CUSTOMS-SWEEP ,IN-STATION>
<TELL CTHE ,GUARD " prevents you and points to the train." CR>
<RFALSE>)
(T
<NEXT-CAR-SWITCHEROO ,CAR-HERE <GETP ,PLATFORM-B ,P?CAR>>
,PLATFORM-B)>>
<ROOM PLATFORM-B
(LOC ROOMS)
(CAR 2)
(FLAGS ONBIT SURFACEBIT)
(DESC "platform")
(SYNONYM PLATFORM)
;(LDESC "You are standing on the platform of the railway station.")
(UP PER EMBARK-F)
(EAST PER EMBARK-F)
(NORTH PER PASS-CUSTOMS-F)
(SOUTH PER NEXT-PLATFORM-TO-REAR-F)
(WEST TO REST-ROOM-WOMEN ;"ENTER-STATION-F")
(IN TO REST-ROOM-WOMEN ;"ENTER-STATION-F")
(GLOBAL ;WINDOW-0 WINDOW-1 WINDOW-2 WINDOW-3
WINDOW-4 WINDOW-5 ;WINDOW-N CROWD)
(CORRIDOR 4 ;*14*)
(LINE 4)
(STATION PLATFORM-B)
(DESCFCN PLATFORM-F)
(ACTION PLATFORM-F)>
<ROUTINE NEXT-PLATFORM-TO-REAR-F () <NEXT-PLATFORM-F +1>>
<ROUTINE NEXT-PLATFORM-TO-FWD-F () <NEXT-PLATFORM-F -1>>
<ROUTINE NEXT-PLATFORM-F (D "AUX" N)
<SET N <+ .D <GETP ,HERE ,P?CAR> ;<ZMEMQ ,HERE ,STATION-ROOMS>>>
<NEXT-CAR-SWITCHEROO ,CAR-HERE .N>
<GET ,STATION-ROOMS .N>>
<ROOM PLATFORM-C
(LOC ROOMS)
(CAR 3)
(FLAGS ONBIT SURFACEBIT)
(DESC "platform")
(SYNONYM PLATFORM)
;(LDESC "You are standing on the platform of the railway station.")
(UP PER EMBARK-F)
(EAST PER EMBARK-F)
(NORTH PER NEXT-PLATFORM-TO-FWD-F)
(SOUTH PER NEXT-PLATFORM-TO-REAR-F)
(WEST TO WAITING-ROOM ;"ENTER-STATION-F")
(IN TO WAITING-ROOM ;"ENTER-STATION-F")
(GLOBAL ;WINDOW-0 WINDOW-1 WINDOW-2 WINDOW-3
WINDOW-4 WINDOW-5 ;WINDOW-N CROWD)
(CORRIDOR *24* ;*34*)
(LINE 4)
(STATION PLATFORM-C)
(DESCFCN PLATFORM-F)
(ACTION PLATFORM-F)>
<ROOM PLATFORM-D
(LOC ROOMS)
(CAR 4)
(FLAGS ONBIT SURFACEBIT)
(DESC "platform")
(SYNONYM PLATFORM)
;(LDESC "You are standing on the platform of the railway station.")
(UP PER EMBARK-F)
(EAST PER EMBARK-F)
(NORTH PER NEXT-PLATFORM-TO-FWD-F)
(SOUTH PER NEXT-PLATFORM-TO-REAR-F)
;(WEST PER ENTER-STATION-F)
;(IN PER ENTER-STATION-F)
(GLOBAL ;WINDOW-0 WINDOW-1 WINDOW-2 WINDOW-3
WINDOW-4 WINDOW-5 ;WINDOW-N CROWD)
(CORRIDOR *20* ;*30*)
(LINE 4)
(STATION PLATFORM-D)
(DESCFCN PLATFORM-F)
(ACTION PLATFORM-F)>
<ROOM PLATFORM-E
(LOC ROOMS)
(CAR 5)
(FLAGS ONBIT SURFACEBIT)
(DESC "platform")
(SYNONYM PLATFORM)
(UP PER EMBARK-F)
(EAST PER EMBARK-F)
(NORTH PER NEXT-PLATFORM-TO-FWD-F)
(SOUTH SORRY "This is the end of the platform.")
(WEST TO LUGGAGE-ROOM ;"ENTER-STATION-F")
(IN TO LUGGAGE-ROOM ;"ENTER-STATION-F")
(GLOBAL ;WINDOW-0 WINDOW-1 WINDOW-2 WINDOW-3
WINDOW-4 WINDOW-5 ;WINDOW-N CROWD)
(CORRIDOR *20*)
(LINE 4)
(STATION PLATFORM-E)
(DESCFCN PLATFORM-F)
(ACTION PLATFORM-F)>
<CONSTANT PLATFORM-MIN 1>
<CONSTANT PLATFORM-STA 3>
<CONSTANT PLATFORM-MAX 5>
<ROUTINE PLATFORM-F ("OPTIONAL" (RARG <>) P)
<COND (<EQUAL? .RARG ,M-LOOK>
<FSET ,PLATFORM-A ,TOUCHBIT>
<FSET ,PLATFORM-B ,TOUCHBIT>
<FSET ,PLATFORM-C ,TOUCHBIT>
<FSET ,PLATFORM-D ,TOUCHBIT>
<FSET ,PLATFORM-E ,TOUCHBIT>
<TELL "You are standing ">
<COND (<==? ,HERE ,PLATFORM-A>
<TELL "at the north end of ">)
(<==? ,HERE ,PLATFORM-E>
<TELL "at the south end of ">)
(T <TELL "on ">)>
<TELL
"the concrete platform of the " D ,SCENERY-OBJ " railway station. A
cantilevered roof looms overhead, with occasional drops of rain water
falling from its edge. To the west is the ">
<COND (<==? ,HERE ,PLATFORM-A>
<PRINTD ,REST-ROOM-MEN>)
(<==? ,HERE ,PLATFORM-B>
<PRINTD ,REST-ROOM-WOMEN>)
(<==? ,HERE ,PLATFORM-E>
<PRINTD ,LUGGAGE-ROOM>)
(T
<COND (<==? ,HERE ,PLATFORM-C>
<TELL "entrance to ">)
(T <TELL "wall of ">)>
<TELL "the station house">)>
<TELL ". To the east ">
<COND (,IN-STATION
<TELL "is a passenger train, the " ,TRAIN-NAME>
<COND (T ;<==? ,HERE ,PLATFORM-A>
<TELL ", hissing and blowing off steam">)>)
(T <TELL "are the train tracks">)>
<TELL
". The place is crowded with people milling about, searching
for a certain passenger or the right car, or simply waiting." CR>)
(<EQUAL? .RARG ,M-BEG>
<COND (<EXIT-VERB?>
<COND (<HARD?>
<SET P <FIND-FLAG-HERE ,PERSONBIT
,PLAYER>>)
(T
<SET P <FIND-FLAG-HERE ,PERSONBIT
,PLAYER ,CONTACT ,BAD-SPY>>)>
<COND (<AND .P
<NOT <IN-MOTION? .P T>>
;<==? ,EXTRA-C <GETP .P ,P?CHARACTER>>>
<COND (<AND <EQUAL? .P ,GUARD>
<NOT <ZERO? ,GUARD-SUSPICION>>
<FSET? ,GUARD ,TOUCHBIT>>
<FCLEAR ,GUARD ,TOUCHBIT>
<PUTP ,GUARD ,P?LDESC 10 ;"looking up and down">
<TELL "You lose the guard in the crowd." CR>)>
<FSET .P ,NDESCBIT>)>
<RFALSE>)>)
(<EQUAL? .RARG ,M-END>
<CROWD-F T>
<RFALSE>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<AND ,CUSTOMS-SWEEP
,IN-STATION
<NOT <ON-PLATFORM? <LOC ,CONDUCTOR>>>
<NOT <QUEUED? ,I-TRAIN-ARREST>>>
<CONDUCTOR-OFF <GET ,GOAL-TABLES ,CONDUCTOR-C> <>>
<RFALSE>)>)
(.RARG <RFALSE>)
(<VERB? EXAMINE ;LOOK-INSIDE>
<COND (<NOT <IN? ,CONTACT ,HERE>>
<CALL-FOR-EXTRA ,HERE>)>
<RFALSE>)>>
<ROUTINE NO-EMBARK-TEST ()
<COND (<NOT ,IN-STATION> <RFALSE>)
(<NOT ,CUSTOMS-SWEEP> <RFALSE>)
(<FSET? ,PASSPORT ,LOCKED> <RTRUE>)
;(<FIRST? ,POCKET> <RTRUE>)
(<NOT <==? ,HERE ,PLATFORM-A>> <RTRUE>)
(,BRIEFCASE-PASSED <RFALSE>)
(<IN? ,BRIEFCASE ,WINNER>
;<==? ,HERE <META-LOC ,BRIEFCASE>>
<RTRUE>)>>
<ROUTINE EMBARK-F ()
<COND (<NO-EMBARK-TEST>
<TELL "You have to pass" HIM ,CUSTOMS-AGENT " first." CR>
<RFALSE>)
(<OR ,IN-STATION <==? ,HERE ,BESIDE-TRACKS>>
<SETG ON-TRAIN T>
<COND (,PULLED-STOP-CORD ;"JIGS-UP!"
<I-TRAIN-ARREST>)>
<COND (<NOT <FSET? ,PEN ,TOUCHBIT>>
<FSET ,PEN ,NDESCBIT>
;<MOVE ,PEN ,WAITER>)>
;<COND (,IN-STATION
<NEXT-CAR-SWITCHEROO ,CAR-HERE <GETP ,HERE ,P?CAR>>)>
<RETURN <V-REAR ,CAR-HERE>>)
(T
<TELL "Walking on the tracks looks too dangerous!" CR>
<RFALSE>)>>
<OBJECT CROWD
(LOC LOCAL-GLOBALS)
(DESC "crowd of people")
(SYNONYM CROWD PEOPLE PASSENGER)
(LDESC "The place is crowded with people.")
(ACTION CROWD-F)>
<ROUTINE CROWD-F ("OPTIONAL" (ARG <>) "AUX" OBJ)
<COND (<OR .ARG <VERB? EXAMINE LOOK-INSIDE LOOK-THROUGH SEARCH SEARCH-FOR>>
<COND (<OR <AND <IN? <SET OBJ ,CONTACT> ,HERE>
<FSET? .OBJ ,NDESCBIT>>
<AND <IN? <SET OBJ ,GUARD> ,HERE>
<FSET? .OBJ ,NDESCBIT>>
<SET OBJ <CALL-FOR-EXTRA ,HERE <>>>>
<FCLEAR .OBJ ,NDESCBIT>
<TELL "One part of the crowd catches your eye: ">
<DESCRIBE-PERSON .OBJ>
<THIS-IS-IT .OBJ>
<RTRUE>)>)
(<VERB? THROUGH>
<TELL
"You do your best to mingle with the crowd, but you can't help feeling
like a conspicuous foreigner." CR>)
(<VERB? LISTEN>
<TELL
"Familiar crowd noises: the buzz of conversations, the clunk of luggage
and parcels, and echoes from the bare surfaces." CR>)>>
<ROOM WAITING-ROOM
(LOC ROOMS)
(CAR 3)
(FLAGS ONBIT ;RLANDBIT)
(DESC "waiting room")
(ADJECTIVE WAITING)
(SYNONYM ROOM AREA)
(LDESC
"You are standing in the railway station. You can see a cafe on the
north side and the ticket counter on the south. The street is west.
The place is crowded with people.")
(NORTH TO CAFE)
(WEST TO SIDEWALK)
(SOUTH TO TICKET-AREA)
(EAST TO PLATFORM-C)
(OUT TO PLATFORM-C)
(GLOBAL CROWD CHAIR)
(LINE 5)
(STATION WAITING-ROOM)
;(ACTION WAITING-ROOM-F)>
;<OBJECT SEAT-WAITING-ROOM
(LOC WAITING-ROOM)
(SYNONYM SEAT CHAIR BENCH)
(GENERIC GENERIC-SEAT-F)
(FLAGS SURFACEBIT OPENBIT NDESCBIT VEHBIT)
(CAPACITY 100)
(DESC "bench")>
<ROOM LUGGAGE-ROOM
(LOC ROOMS)
(CAR 5)
(FLAGS ONBIT ;RLANDBIT)
(DESC "luggage room")
(ADJECTIVE LUGGAGE)
(SYNONYM ROOM)
(EAST TO PLATFORM-E)
(OUT TO PLATFORM-E)
(LINE 4)
(STATION PLATFORM-E)
(ACTION LUGGAGE-ROOM-F)>
<ROUTINE LUGGAGE-ROOM-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-ENTER>
<MOVE ,CLERK ,LUGGAGE-ROOM>
<RFALSE>)>>
<OBJECT ROOM-LUGGAGE
(LOC LUGGAGE-ROOM)
(DESC "bunch of luggage")
(SYNONYM BUNCH LUGGAGE)
(FLAGS NDESCBIT)>
<ROOM REST-ROOM-MEN
(LOC ROOMS)
(CAR 1)
(FLAGS ONBIT ;RLANDBIT)
(DESC "men's restroom")
(LDESC
"This restroom is impressively tidy. That's a good thing, because it's
one of the only pair in the whole station.")
(ADJECTIVE REST MALE MEN\'S)
(SYNONYM RESTROOM BATHROOM LAVATORY TOILET ROOM)
(GENERIC GENERIC-REST-ROOM-F)
(EAST TO PLATFORM-A)
(OUT TO PLATFORM-A)
(GLOBAL TOILET SINK TOWEL-FIXTURE TOWEL-LOOP MIRROR ;PAPER-FIXTURE)
(LINE 4)
(STATION PLATFORM-A)
(ACTION REST-ROOM-STATION-F)>
<ROOM REST-ROOM-WOMEN
(LOC ROOMS)
(CAR 2)
(FLAGS ONBIT ;RLANDBIT)
(DESC "women's restroom")
(LDESC
"This restroom is impressively tidy. That's a good thing, because it's
one of the only pair in the whole station.")
(ADJECTIVE REST FEMALE WOMEN\'S)
(SYNONYM RESTROOM BATHROOM LAVATORY TOILET ROOM)
(GENERIC GENERIC-REST-ROOM-F)
(EAST TO PLATFORM-B)
(OUT TO PLATFORM-B)
(GLOBAL TOILET SINK TOWEL-FIXTURE TOWEL-LOOP MIRROR ;PAPER-FIXTURE)
(LINE 4)
(STATION PLATFORM-B)
(ACTION REST-ROOM-STATION-F)>
<ROUTINE REST-ROOM-STATION-TEST (RARG)
<COND (<NOT <EQUAL? <LOC ,CONTACT> ,REST-ROOM-MEN ,REST-ROOM-WOMEN>>
<RFALSE>)
(<SPY?>
<COND (<==? .RARG ,M-OTHER> <RTRUE>)
(T <RFALSE>)>)
(T ;<ZERO? ,EGO>
<COND (<==? .RARG ,M-FLASH> <RTRUE>)
(T <RFALSE>)>)
;(T <RFALSE>)>>
<ROUTINE REST-ROOM-STATION-F ("OPTIONAL" (RARG <>) "AUX" X Y N V)
<COND (<==? .RARG ,M-ENTER>
<MOVE ,PAPER-FIXTURE ,HERE>
<RFALSE>)
(<REST-ROOM-STATION-TEST .RARG>
<SET X <GET ,EXTRA-TABLE <RANDOM-PER-VAR ,CONTACT-MAX>>>
<COND (<NOT <MOVE-EXTRA? .X ,LIMBO-FWD 1>>
<SET N ,CONTACT-MAX>
<REPEAT ()
<SET X <GET ,EXTRA-TABLE .N>>
<COND (<MOVE-EXTRA? .X ,LIMBO-FWD 1>
<RETURN>)
(<DLESS? N 1>
<V-FOO>)>>)>
<SET V <VISIBLE? ,CONTACT>>
<COND (<==? .RARG ,M-FLASH> ;<AND ,PASSOBJECT-GIVEN ,PASSWORD-GIVEN>
<GUARD-NOTICES>
<FCLEAR ,MCGUFFIN ,NDESCBIT>
<MOVE ,MCGUFFIN ,PLAYER>
<SET-PASSES 3>
<FSET ,MCGUFFIN ,TAKEBIT>
<TELL CHE ,CONTACT give " you the " D ,MCGUFFIN>)
(T
<SETG TRAVELER-CHECKED-CASE <>>
<SET N 0>
<SET Y <GET ,BRIEFCASE-TBL 0>>
<REPEAT ()
<COND (<IGRTR? N .Y>
<MOVE ,MCGUFFIN ,BAD-SPY>
<RETURN>)
(<ZERO? <GET ,BRIEFCASE-TBL .N>>
<PUT ,BRIEFCASE-TBL .N ,MCGUFFIN>
<RETURN>)>>
<SET-PASSES 2>
<COND (.V
<TELL
CTHE ,BAD-SPY " enters, looking very nervous. " CTHE ,CONTACT " gives
something to">
<THIS-IS-IT ,BAD-SPY>
<TELL HIM ,BAD-SPY>)>)>
<COND (.V
<TELL " and whispers, ">
<COND (<SPY?> ;<NOT <ZERO? ,EGO>>
<PRODUCE-GIBBERISH 4>
<TELL
"(Fortunately, you can translate two phrases: \"" D ,PASSWORD "\" and \""
D ,PASSOBJECT ".\")" CR>)
(T
<TELL
"\"No time. Meet agent, "A .X ", in Gola; display " A ,PASSOBJECT "; use word">
<COND (<EQUAL? ,PASSWORD ,CAMERA ,HANKY ,SCARF>
<TELL "s">)>
<TELL " '" D ,PASSWORD "'.\" ">)>
<TELL "Then" HE ,CONTACT " is gone." CR>)>
<NEW-CONTACT .X>
<COND (<OR <==? .RARG ,M-FLASH> .V>
<RTRUE>)>)>>
<ROUTINE NEW-CONTACT (X)
<FCLEAR ,CONTACT ,TOUCHBIT>
<PUTP ,CONTACT ,P?LDESC 0>
<MOVE ,CONTACT ,LIMBO-FWD>
;<MOVE ,CONTACT ,GLOBAL-OBJECTS>
<PUTP ,CONTACT ,P?ACTION ,CONTACT-DEFAULT-F>
<SETG CONTACT .X>
<SETG CONTACT-DEFAULT-F <GETP ,CONTACT ,P?ACTION>>
<PUTP ,CONTACT ,P?ACTION ,CONTACT-F>>
<ROOM CAFE
(LOC ROOMS)
(CAR 3)
(FLAGS ONBIT ;RLANDBIT)
(DESC "cafe")
(SYNONYM CAFE)
(LDESC
"Through a blue haze of cigarette smoke, you can see travelers
sipping their food while waiting for their trains."
;"The place is crowded with people. But you can see a few items for sale
besides food.")
(SOUTH TO WAITING-ROOM)
(OUT TO WAITING-ROOM)
(GLOBAL CROWD MENU ITEMS CHAIR)
(LINE 5)
(STATION CAFE)
;(ACTION CAFE-F)>
;<ROUTINE CAFE-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-END>
<RFALSE>)
;(<VERB? BUY>
<COND (<DOBJ? DRINK-GLOBAL FOOD FOOD-GLOBAL FOOD-1 FOOD-2 FOOD-CAFE>
<RFALSE>)
;(<ZMEMQ ,PRSO ,PASS-TABLE> <RFALSE>)
(T <TELL "You can't buy " A ,PRSO " here." CR>)>)>>
<OBJECT COUNTER-CAFE
(LOC CAFE)
(DESC "counter")
(SYNONYM COUNTER)
(FLAGS SEARCHBIT SURFACEBIT OPENBIT NDESCBIT ;VEHBIT)
(CAPACITY 200)
(ACTION COUNTER-CAFE-F)>
<ROUTINE COUNTER-CAFE-F ()
<COND (<VERB? SIT-AT>
<PERFORM ,V?SIT ,CHAIR ;,SEAT-CAFE>
<RTRUE>)>>
;<OBJECT SEAT-CAFE
(LOC CAFE)
(SYNONYM SEAT CHAIR BENCH STOOL)
(GENERIC GENERIC-SEAT-F)
(FLAGS SURFACEBIT OPENBIT NDESCBIT VEHBIT)
(CAPACITY 100)
(DESC "stool")>
<ROOM TICKET-AREA
(LOC ROOMS)
(CAR 3)
(FLAGS ONBIT ;RLANDBIT)
(DESC "ticket area")
(ADJECTIVE TICKET)
(SYNONYM AREA COUNTER WINDOW PLACE)
;(LDESC "")
(NORTH TO WAITING-ROOM)
(OUT TO WAITING-ROOM)
(LINE 5)
(STATION WAITING-ROOM)
(ACTION TICKET-AREA-F)>
<ROUTINE TICKET-AREA-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-ENTER>
<MOVE ,CLERK ,TICKET-AREA>
<RFALSE>)>>
<OBJECT COUNTER-TICKET
(LOC TICKET-AREA)
(DESC "counter")
(SYNONYM COUNTER)
(FLAGS SURFACEBIT NDESCBIT)
(CAPACITY 200)>
<ROOM SIDEWALK
(LOC ROOMS)
(CAR 3)
(FLAGS ONBIT ;RLANDBIT)
(DESC "sidewalk")
(SYNONYM SIDEWALK STREET)
(LDESC "The station faces a small square, crowded with people.")
(NORTH PER TOWN-F)
(WEST PER TOWN-F)
(SOUTH PER TOWN-F)
(EAST TO WAITING-ROOM)
(IN TO WAITING-ROOM)
(GLOBAL CROWD)
(LINE 5)
(STATION WAITING-ROOM)
(ACTION SIDEWALK-F)>
<ROUTINE TOWN-F ()
<TELL "As you start to venture into the town," HE ,OFFICER>
<THIS-IS-IT ,OFFICER>
<TELL
" recognizes you as an unauthorized foreigner and takes a step in your
direction. As you stop walking, so does" HE ,OFFICER "." CR>
<FSET ,OFFICER ,SEENBIT>
<RFALSE>>
<ROUTINE SIDEWALK-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-END>
<CROWD-F T>
<RFALSE>)
(.RARG <RFALSE>)
(<VERB? EXAMINE ;LOOK-INSIDE>
<COND (<NOT <IN? ,CONTACT ,HERE>>
<CALL-FOR-EXTRA ,HERE>)>
<RFALSE>)>>
<GLOBAL STATION-ROOMS
<PLTABLE PLATFORM-A PLATFORM-B PLATFORM-C PLATFORM-D PLATFORM-E
PLATFORM-E PLATFORM-E ;"for last cars on long train"
WAITING-ROOM CAFE TICKET-AREA SIDEWALK
LUGGAGE-ROOM REST-ROOM-MEN REST-ROOM-WOMEN>>

2
syntax.zap Normal file
View File

@ -0,0 +1,2 @@
.ENDI

848
syntax.zil Normal file
View File

@ -0,0 +1,848 @@
"SYNTAX for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<SYNONYM PHOTO PICTURE PHOTOGRAPH SNAPSHOT>
<SYNONYM WITH USING BY>
<SYNONYM THROUGH THRU>
<SYNONYM IN INSIDE INTO>
<SYNONYM ON ONTO>
<SYNONYM OUT OUTSIDE>
<SYNONYM UNDER BELOW UNDERNEATH BENEATH>
<SYNONYM NORTH N FORWARD FRONT F FORE>
<SYNONYM EAST E RIGHT>
<SYNONYM SOUTH S REAR R AFT ;"BACK B">
<SYNONYM WEST W LEFT>
<SYNONYM DOWN D>
<SYNONYM UP U>
<SYNONYM NW NORTHWEST>
<SYNONYM NE NORTHEAST>
<SYNONYM SW SOUTHWEST>
<SYNONYM SE SOUTHEAST>
<BUZZ A AN THE AND OF THEN \. \, \" \! \?
NOW SOON WELL THERE PLEASE MAYBE BACK
CAREFULLY CLOSELY ;THOROUGHLY QUIETLY SLOWLY QUICKLY BRIEFLY
NE SE SW NW ALL BOTH BUT EXCEPT FUCKING CHOMPING>
<SYNTAX $ID = V-$ID>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
<SYNTAX \#DBG = V-DEBUG>
<SYNTAX \#DBG OBJECT = V-DEBUG>
;<SYNTAX \#AGAIN = V-$AGAIN>
<SYNTAX \#ANSWER = V-$ANSWER>
"<SYNTAX \#CUSTOM = V-$CUSTOMS>"
<SYNTAX \#FCLEAR OBJECT OBJECT = V-$FCLEAR>
<SYNONYM \#QFSET \#FSET?>
<SYNTAX \#QFSET OBJECT OBJECT = V-$QFSET>
<SYNTAX \#FSET OBJECT OBJECT = V-$FSET>
<SYNTAX \#GOAL = V-$GOAL>
<SYNTAX \#QUEUE = V-$QUEUE>
<SYNTAX \#STATION OBJECT = V-$STATION>
<SYNTAX \#WHERE = V-$WHERE>
<SYNTAX \#WHERE OBJECT = V-$WHERE>
<SYNTAX \#WHERE OBJECT OBJECT = V-$WHERE>
<SYNONYM POINT AIM>
<SYNTAX POINT OBJECT AT OBJECT = V-AIM ;PRE-AIM>
<SYNTAX POINT OBJECT TO OBJECT = V-AIM ;PRE-AIM>
<SYNTAX POINT OBJECT OBJECT = V-AIM ;PRE-AIM>
<SYNTAX POINT AT OBJECT = V-SSHOW PRE-SSHOW
;"V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR">
<SYNTAX POINT AT OBJECT WITH OBJECT = V-SAIM PRE-SAIM>
<SYNTAX POINT TO OBJECT = V-SSHOW PRE-SSHOW
;"V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR">
<SYNONYM CHECK TEST ANALYSE ANALYZE ;DUST TROUBLESHOOT>
<SYNTAX CHECK OBJECT = V-ANALYZE PRE-ANALYZE>
<SYNTAX CHECK OBJECT ;(FIND RMUNGBIT) FOR OBJECT = V-ANALYZE PRE-ANALYZE>
<SYNTAX CHECK OUT OBJECT = V-ANALYZE PRE-ANALYZE>
<SYNTAX CHECK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX CHECK OBJECT IN OBJECT = V-LOOK-UP>
<SYNTAX CHECK OBJECT ON OBJECT = V-SANALYZE PRE-SANALYZE>
<SYNONYM ANSWER REPLY RESPOND>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>
"<SYNONYM ARREST CAPTURE>
<SYNTAX ARREST OBJECT (FIND PERSONBIT) = V-ARREST PRE-ARREST>
<SYNTAX ARREST OBJECT FOR OBJECT = V-ARREST PRE-ARREST>"
<SYNONYM ASK QUESTION INQUIRE CONSULT>
<SYNTAX ASK OBJECT (FIND PERSONBIT) = V-ASK PRE-ASK>
<SYNTAX ASK ABOUT OBJECT = V-ASK-CONTEXT-ABOUT PRE-ASK-CONTEXT-ABOUT>
<SYNTAX ASK FOR OBJECT = V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR>
<SYNTAX ASK OBJECT ABOUT OBJECT = V-ASK-ABOUT PRE-ASK-ABOUT>
<SYNTAX ASK OBJECT FOR OBJECT = V-ASK-FOR PRE-ASK-FOR>
<SYNONYM ATTACK FIGHT RAPE MOLEST ASSAULT REPEL>
<SYNTAX ATTACK OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OFF OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT ;(FIND WEAPONBIT) (HELD ;CARRIED HAVE TAKE)
= V-ATTACK>
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX BRIBE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (MANY HELD HAVE TAKE)
= V-SGIVE PRE-SGIVE>
<SYNONYM BRING FETCH>
<SYNTAX BRING OBJECT = V-BRING PRE-BRING>
<SYNTAX BRING OBJECT OBJECT = V-SBRING PRE-SBRING>
<SYNTAX BRING OBJECT TO OBJECT = V-BRING PRE-BRING>
<SYNONYM BRUSH CLEAN WIPE>
<SYNTAX BRUSH OBJECT ;(HELD CARRIED ON-GROUND IN-ROOM) = V-BRUSH>
<SYNTAX BRUSH OBJECT ;(HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED TAKE HAVE)
= V-BRUSH>
"<SYNTAX BRUSH OFF OBJECT (HELD CARRIED) = V-BRUSH>"
<SYNTAX BRUSH UP OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNONYM BURN INCINERATE IGNITE>
<SYNTAX BURN OBJECT ;(FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE)
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE)
= V-BURN PRE-BURN>
<SYNTAX BURN DOWN OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE)
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE)
= V-BURN PRE-BURN>
<SYNONYM BUY PURCHASE ORDER>
<SYNTAX BUY OBJECT (IN-ROOM ON-GROUND) (MANY)= V-BUY PRE-BUY>
<SYNTAX BUY OBJECT (IN-ROOM ON-GROUND) (MANY)
FROM OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-BUY PRE-BUY>
<SYNTAX BUY OBJECT FOR OBJECT = V-BUY-TICKET PRE-BUY-TICKET>
<SYNTAX BUY OBJECT TO OBJECT = V-BUY-TICKET PRE-BUY-TICKET>
<SYNONYM CALL ;HEY PHONE SUMMON SIGNAL CONTACT>
"<SYNTAX CALL = V-CALL-LOSE>"
<SYNTAX $CALL OBJECT = V-$CALL>
<SYNTAX CALL OBJECT = V-PHONE PRE-PHONE>
<SYNTAX CALL OBJECT BY OBJECT = V-PHONE PRE-PHONE>
"<SYNTAX CALL OBJECT FOR OBJECT = V-CALL-FOR>"
<SYNTAX CALL OBJECT ON OBJECT = V-PHONE PRE-PHONE>
<SYNTAX CALL FOR OBJECT = V-PHONE PRE-PHONE>
<SYNTAX CALL TO OBJECT = V-$CALL>
<SYNTAX CALL UP OBJECT = V-PHONE PRE-PHONE>
<SYNONYM CHANGE ALTER>
<SYNTAX CHANGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
WITH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-CHANGE>
<SYNONYM CLIMB BOARD>
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-BOARD> "(FIND CLIMBBIT)"
<SYNTAX CLIMB DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>"(FIND CLIMBBIT)"
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD>
<SYNTAX CLIMB OFF OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB OUT OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB THROUGH OBJECT (FIND DOORBIT) = V-THROUGH ;PRE-THROUGH>
<SYNTAX CLIMB UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP> "(FIND CLIMBBIT)"
<SYNONYM CLOSE DRAW>
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE>
<SYNTAX CLOSE OBJECT ;(FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT
= V-CLOSE>
<SYNTAX COME OBJECT = V-WALK-TO ;V-COME>
<SYNTAX COME TO OBJECT = V-WALK-TO ;V-COME>
<SYNTAX COME WITH OBJECT = V-FOLLOW>
<SYNTAX COME WITH OBJECT TO OBJECT = V-COME-WITH PRE-COME-WITH>
"<SYNONYM COMPARE MATCH>
<SYNTAX COMPARE OBJECT (MANY) = V-COMPARE PRE-COMPARE>
<SYNTAX COMPARE OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-COMPARE>
<SYNTAX COMPARE OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-COMPARE>"
<SYNTAX CONFRONT OBJECT (FIND PERSONBIT) WITH OBJECT = V-CONFRONT>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNONYM CUT ;INTERRUPT SLICE PIERCE>
<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
<SYNONYM DAMAGE DESTROY BREAK SMASH CRUSH CRUMBLE KICK>
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-MUNG>
<SYNTAX DAMAGE UP OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-MUNG>
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED HAVE TAKE)
= V-MUNG>
<SYNTAX DAMAGE DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED HAVE TAKE)
= V-MUNG>
"<SYNONYM DEVELOP PROCESS>
<SYNTAX DEVELOP OBJECT = V-DEVELOP>"
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX DIAGNOSE OBJECT = V-DIAGNOSE>
<SYNTAX DISCUSS OBJECT = V-DISCUSS PRE-DISCUSS>
<SYNTAX DISCUSS OBJECT WITH OBJECT = V-DISCUSS PRE-DISCUSS>
<SYNONYM DRINK SWALLOW SIP>
<SYNTAX DRINK OBJECT ;(FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNONYM DROP LOWER>
<SYNTAX DROP OBJECT (HELD MANY ;HAVE) = V-DROP>
<SYNTAX DROP OBJECT (CARRIED HELD MANY HAVE TAKE) DOWN ;ON OBJECT
= V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (CARRIED HELD MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX DROP OBJECT (CARRIED HELD MANY HAVE TAKE) ON OBJECT
= V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (CARRIED HELD MANY HAVE TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH>
<SYNONYM EAT DINE TASTE CONSUME>
<SYNTAX EAT OBJECT ;(FIND FOODBIT)
(HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE ;MANY)
= V-EAT>
<SYNONYM EMPTY DRAIN BLOW>
<SYNTAX EMPTY OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-EMPTY PRE-EMPTY>
<SYNTAX ENTER = V-ENTER>
<SYNTAX ENTER OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNONYM EXAMINE EXAMIN DESCRIBE INSPECT SCRUTINIZE STUDY OBSERVE EXPLORE>
<SYNTAX EXAMINE OBJECT (FIND READBIT) (HELD CARRIED IN-ROOM ON-GROUND ;MANY)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX EXAMINE OBJECT ;(FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX EXAMINE OBJECT ;(FIND READBIT) (HELD CARRIED IN-ROOM ON-GROUND ;MANY)
WITH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX EXAMINE UNDER OBJECT = V-LOOK-UNDER>
<SYNONYM EXTINGUISH DOUSE>
<SYNTAX EXTINGUISH
OBJECT (FIND LIGHTBIT) (MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-OFF>
<SYNONYM HEAD FACE>
<SYNTAX HEAD OBJECT = V-FACE>
"<SYNTAX HEAD TO OBJECT = V-FACE>"
<SYNTAX \#FACE = V-$FACE>
<SYNONYM FAINT SLEEP NAP SNOOZE>
<SYNTAX FAINT = V-FAINT>
<SYNONYM FILL FLOOD>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-FILL PRE-FILL>
<SYNTAX FILL OBJECT ;(FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT
= V-FILL PRE-FILL>
<SYNONYM FIND DETECT LOCATE>
<SYNTAX FIND OBJECT (;"HELD CARRIED HAVE" MANY) = V-FIND PRE-FIND>
<SYNTAX FIND OBJECT (;"HELD CARRIED HAVE" MANY) WITH OBJECT = V-FIND-WITH>
<SYNTAX FIND OBJECT ;(HELD CARRIED HAVE) IN OBJECT
= V-SSEARCH-FOR PRE-SSEARCH-FOR>
<SYNTAX FIND OBJECT ;(HELD CARRIED HAVE) ON OBJECT
= V-SSEARCH-FOR PRE-SSEARCH-FOR>
<SYNTAX FIND OUT OBJECT = V-ASK-CONTEXT-ABOUT PRE-ASK-CONTEXT-ABOUT>
<SYNONYM FIX REPAIR>
<SYNTAX FIX OBJECT = V-FIX>
<SYNTAX FIX OBJECT WITH OBJECT ;(FIND TOOLBIT) = V-FIX>
<SYNTAX FLUSH OBJECT (ON-GROUND IN-ROOM) (FIND VEHBIT) = V-FLUSH>
<SYNTAX FLUSH AWAY OBJECT (HELD CARRIED TAKE HAVE) = V-FLUSH-AWAY>
<SYNTAX FLUSH OBJECT (HELD CARRIED TAKE HAVE)
DOWN OBJECT (ON-GROUND IN-ROOM) (FIND VEHBIT) = V-FLUSH-DOWN>
<SYNONYM FOLLOW PURSUE CHASE TRACE>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNTAX FOLLOW OBJECT OBJECT = V-FOLLOW> "Follow me north."
<SYNTAX FOLLOW OBJECT TO OBJECT = V-FOLLOW> "F. me to office."
<SYNTAX GESTURE = V-GESTURE PRE-GESTURE>
"? <SYNTAX GESTURE FOR OBJECT = V-GESTURE-FOR PRE-GESTURE-FOR>"
<SYNTAX GESTURE TO OBJECT (FIND PERSONBIT) = V-GESTURE PRE-GESTURE>
<SYNTAX GET OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (IN-ROOM CARRIED MANY)
IN OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OFF OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OUT ;OF OBJECT ;(FIND CONTBIT)
= V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (MANY TAKE) TO OBJECT = V-TAKE-TO>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (ON-GROUND MANY)
WITH OBJECT = V-TAKE-WITH PRE-TAKE-WITH>
<SYNTAX GET IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD>
<SYNTAX GET OFF OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX GET ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX GET OUT ;OF OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX GET RID ;OF OBJECT = V-DROP>
<SYNTAX GET UP OBJECT (FIND RMUNGBIT) = V-STAND>
<SYNONYM HAND GIVE DONATE OFFER ;"ASSIGN" FEED>
<SYNTAX HAND UP OBJECT (FIND RMUNGBIT) = V-QUIT>
<SYNTAX HAND OBJECT (MANY HELD HAVE TAKE ;"CARRIED ON-GROUND IN-ROOM")
TO OBJECT (FIND PERSONBIT) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX HAND OBJECT ;(FIND PERSONBIT) (ON-GROUND)
OBJECT (MANY HELD HAVE TAKE)
= V-SGIVE PRE-SGIVE>
<SYNONYM GOODBYE GOOD-BYE BYE>
<SYNTAX GOODBYE = V-GOODBYE PRE-GOODBYE>
<SYNTAX GOODBYE OBJECT = V-GOODBYE PRE-GOODBYE>
<SYNTAX HANG UP OBJECT (FIND RMUNGBIT) = V-HANGUP PRE-HANGUP>
<SYNTAX HEAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
WITH OBJECT ;(FIND FLAMEBIT) (HELD CARRIED TAKE HAVE)
= V-HEAT PRE-HEAT>
<SYNONYM HELLO HI GREET GREETINGS HOWDY>
<SYNTAX HELLO = V-HELLO PRE-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO PRE-HELLO>
"<SYNTAX HELP = V-HELP>"
<SYNTAX HELP OBJECT (FIND PERSONBIT) = V-HELP>
<SYNONYM HIDE ;CROUCH>
<SYNTAX HIDE = V-HIDE>
<SYNTAX HIDE BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX HIDE IN OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNTAX HIDE ON OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNTAX HIDE UNDER OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNTAX HIDE OBJECT (CARRIED HELD MANY HAVE TAKE) UNDER OBJECT
= V-PUT-UNDER>
<SYNTAX HIDE OBJECT (CARRIED HELD MANY HAVE TAKE) BEHIND OBJECT
= V-HIDE-BEHIND>
<SYNTAX HIDE OBJECT (CARRIED HELD MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX HOLD OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX HOLD OBJECT (IN-ROOM ON-GROUND CARRIED HELD TAKE HAVE)
OVER OBJECT (IN-ROOM ON-GROUND CARRIED HELD TAKE HAVE)
= V-HOLD-OVER PRE-HOLD-OVER>
<SYNTAX HOLD OBJECT (IN-ROOM CARRIED TAKE HAVE) TO OBJECT = V-HOLD-UP>
<SYNTAX HOLD OBJECT (IN-ROOM ON-GROUND CARRIED HELD TAKE HAVE)
UNDER OBJECT(IN-ROOM ON-GROUND CARRIED HELD TAKE HAVE) = V-HOLD-UNDER>
<SYNTAX HOLD OBJECT (IN-ROOM CARRIED TAKE HAVE) UP ;TO OBJECT = V-HOLD-UP>
<SYNTAX HOLD UP OBJECT (IN-ROOM CARRIED TAKE HAVE) = V-HOLD-UP>
"<SYNONYM I INVENT>"
<SYNTAX I = V-INVENTORY>
<SYNTAX INVENT = V-INVENTORY>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP FROM OBJECT = V-DISEMBARK>
<SYNTAX JUMP IN OBJECT = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-DISEMBARK>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNONYM KILL MURDER STAB WASTE STRANGLE>
"<SYNTAX KILL OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-KILL>"
<SYNTAX KILL OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE TAKE)
= V-KILL>
<SYNONYM KISS HUG>
<SYNTAX KISS OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-KISS>
<SYNONYM KNOCK RAP>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX KNOCK OFF OBJECT (FIND PERSONBIT) (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX KNOCK OUT OBJECT (FIND PERSONBIT) (IN-ROOM ON-GROUND) = V-SLAP>
<SYNTAX KNOCK OBJECT (IN-ROOM ON-GROUND MANY) OFF ;OF OBJECT (FIND RMUNGBIT)
= V-PUSH>
<SYNTAX KNOCK OBJECT ;(FIND PERSONBIT) (IN-ROOM ON-GROUND) ON OBJECT = V-SLAP>
<SYNTAX LEARN OBJECT = V-LEARN>
<SYNONYM LEAVE EMERGE ABANDON EVACUATE DETRAIN DEBARK DISEMBARK EXIT SCRAM>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT = V-LEAVE>
<SYNTAX LEAVE FROM OBJECT = V-LEAVE>
<SYNTAX LIE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-LIE PRE-LIE>
<SYNTAX LIE DOWN ;ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-LIE PRE-LIE>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT)(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-ON>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT)(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
WITH OBJECT ;(FIND FLAMEBIT) (HELD CARRIED TAKE HAVE)
= V-BURN PRE-BURN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN AT OBJECT = V-LISTEN>
<SYNTAX LOAD OBJECT (HELD HAVE TAKE) WITH OBJECT (CARRIED HELD HAVE TAKE)
= V-SPUT-IN PRE-SPUT-IN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) = V-LOCK>
<SYNONYM LOOK L STARE GAZE PEEK SEE>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK OBJECT = V-CHASTISE>
<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK AT OBJECT (HELD CARRIED MANY)
THROUGH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX LOOK AT OBJECT (HELD CARRIED MANY)
WITH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK DOWN OBJECT (FIND RMUNGBIT) = V-LOOK-DOWN>
<SYNTAX LOOK FOR OBJECT (MANY) = V-FIND PRE-FIND>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) (FIND RMUNGBIT)
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
"<SYNTAX LOOK NEAR OBJECT = V-SEARCH-AROUND>"
<SYNTAX LOOK ON OBJECT (ON-GROUND IN-ROOM) = V-LOOK-ON>
<SYNTAX LOOK OUT OBJECT (FIND RMUNGBIT) = V-LOOK-OUTSIDE>
<SYNTAX LOOK OVER OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK UP OBJECT (FIND RMUNGBIT) = V-LOOK-UP>
<SYNTAX LOOK UP OBJECT IN OBJECT = V-LOOK-UP>
<SYNTAX LOOK THROUGH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LOOK-THROUGH>
<SYNTAX LUNGE AT OBJECT (FIND PERSONBIT) = V-ATTACK>
<SYNONYM MAKE BUILD PREPARE>
<SYNTAX MAKE OBJECT = V-MAKE>
<SYNTAX MAKE OBJECT TO OBJECT (ON-GROUND IN-ROOM) = V-MAKE>
<SYNTAX MAKE OBJECT FROM OBJECT (ON-GROUND IN-ROOM) = V-MAKE>
<SYNTAX MAKE OBJECT ;WITH OBJECT (ON-GROUND IN-ROOM) = V-MAKE>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) OBJECT = V-MOVE-DIR PRE-MOVE-DIR>
<SYNONYM NO NAY NEGATIVE NOPE>
<SYNTAX NO = V-NO>
<SYNTAX NOD OBJECT = V-NOD>
<SYNTAX NOD AT OBJECT = V-HELLO PRE-HELLO>
<SYNTAX NOD TO OBJECT = V-HELLO PRE-HELLO>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN OBJECT ;(FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT ;(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-OPEN-WITH PRE-OPEN-WITH>
<SYNTAX PASS OBJECT = V-PASS>
<SYNTAX PASS OUT OBJECT (FIND RMUNGBIT) = V-FAINT>
<SYNTAX PICK OBJECT (FIND TAKEBIT) (ON-GROUND MANY)
= V-TAKE PRE-TAKE>
<SYNTAX PICK OBJECT ;(FIND TAKEBIT) (ON-GROUND MANY) WITH OBJECT
= V-TAKE-WITH PRE-TAKE-WITH>
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY)
= V-TAKE PRE-TAKE>
<SYNTAX PICK UP OBJECT ;(FIND TAKEBIT) (ON-GROUND MANY) WITH OBJECT
= V-TAKE-WITH PRE-TAKE-WITH>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX PLAY WITH OBJECT = V-PLAY>
<SYNTAX POCKET OBJECT (HELD CARRIED HAVE TAKE) = V-POCKET PRE-POCKET>
<SYNONYM POUR SPILL>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) = V-POUR ;V-DROP>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) FROM OBJECT = V-POUR ;V-DROP>
<SYNTAX POUR OBJECT (CARRIED HELD MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX POUR OBJECT (CARRIED HELD MANY HAVE TAKE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX POUR OBJECT (CARRIED HELD MANY HAVE TAKE) OVER OBJECT = V-PUT PRE-PUT>
<SYNONYM PULL TUG>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) OBJECT = V-MOVE-DIR PRE-MOVE-DIR>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNONYM PUSH PRESS SHOVE>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) OBJECT
= V-MOVE-DIR PRE-MOVE-DIR>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) OFF ;OF OBJECT (FIND RMUNGBIT)
= V-PUSH>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) TO OBJECT
= V-MOVE-DIR PRE-MOVE-DIR>
<SYNTAX PUSH OBJECT (CARRIED HELD MANY HAVE TAKE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNONYM PLACE PUT STUFF INSERT INSTALL DEPOSIT DIP>
<SYNTAX PLACE OBJECT (CARRIED HELD MANY HAVE TAKE) ON OBJECT (FIND SURFACEBIT)
= V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (CARRIED HELD MANY HAVE TAKE) DOWN ;ON OBJECT
= V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (CARRIED HELD MANY HAVE TAKE) IN OBJECT ;(FIND CONTBIT)
= V-PUT-IN PRE-PUT-IN>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH>
<SYNTAX PLACE OBJECT (CARRIED HELD MANY HAVE TAKE) UNDER OBJECT
= V-PUT-UNDER>
<SYNTAX PLACE DOWN OBJECT (HELD MANY HAVE TAKE) = V-DROP>
<SYNTAX PLACE ON OBJECT (FIND WEARBIT) (HAVE TAKE) = V-WEAR> "PUT ON OBJ"
<SYNONYM QUIT Q LOGOUT LOGOFF>
<SYNTAX QUIT = V-QUIT>
<SYNONYM RAISE LIFT>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
"<SYNTAX RAISE OBJECT OFF OBJECT = V-TAKE>"
<SYNONYM READ SKIM PERUSE>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ>
<SYNTAX READ OBJECT ;(FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
OBJECT = V-READ PRE-READ>
<SYNTAX READ OBJECT ;(FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX READ OBJECT ;(FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
WITH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX READ ABOUT OBJECT
IN OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LOOK-UP>
<SYNONYM REMOVE DOFF SHED>
<SYNTAX REMOVE OBJECT (FIND WORNBIT) = V-REMOVE>
<SYNTAX REMOVE OBJECT ;(FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX REQUEST OBJECT = V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR>
<SYNTAX RESTART = V-RESTART>
<SYNONYM RESTORE RESTOR ;CONTINUE RESUME>
<SYNTAX RESTORE = V-RESTORE>
<SYNONYM RING PEAL>
<SYNTAX RING OBJECT (FIND RMUNGBIT) = V-RING>
<SYNTAX RING OBJECT WITH OBJECT = V-RING>
<SYNONYM RIP TEAR>
<SYNTAX RIP OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-RIP>
<SYNTAX RIP UP OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-RIP>
<SYNONYM RISE ASCEND>
<SYNTAX RISE = V-RISE>
<SYNTAX RISE OBJECT = V-CLIMB-UP>
<SYNTAX RISE BY OBJECT = V-CLIMB-UP>
<SYNTAX RISE TO OBJECT = V-RISE>
<SYNONYM RUB TOUCH FEEL SHADE ;"PAT PET">
<SYNTAX RUB OBJECT = V-RUB>
<SYNTAX RUB OBJECT (TAKE HAVE) ON OBJECT = V-RUB-OVER PRE-RUB-OVER>
<SYNTAX RUB OBJECT (TAKE HAVE) OVER OBJECT = V-RUB-OVER PRE-RUB-OVER>
<SYNTAX RUB OBJECT WITH OBJECT (TAKE HAVE) = V-RUB>
<SYNONYM SAVE SUSPEND PAUSE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SAVE OBJECT ;(FIND PERSONBIT) = V-HELP>
<SYNONYM SAY TALK SPEAK WHISPER STATE EXPLAIN>
<SYNTAX SAY = V-SAY>
<SYNTAX SAY OBJECT = V-TALK-ABOUT PRE-TALK-ABOUT>
<SYNTAX SAY OBJECT TO OBJECT = V-STELL-ABOUT PRE-STELL-ABOUT>
<SYNTAX SAY ABOUT OBJECT = V-TALK-ABOUT PRE-TALK-ABOUT>
<SYNTAX SAY IN OBJECT = V-SAY-INTO PRE-SAY-INTO>
<SYNTAX SAY TO OBJECT (IN-ROOM) = V-TELL>
<SYNTAX SAY TO OBJECT (IN-ROOM) ABOUT OBJECT
= V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNTAX SAY WITH OBJECT (IN-ROOM) = V-TELL>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNONYM SEARCH DIG>
<SYNTAX SEARCH OBJECT = V-SEARCH PRE-SEARCH>
<SYNTAX SEARCH OBJECT FOR OBJECT ;(HELD CARRIED HAVE)
= V-SEARCH-FOR PRE-SEARCH-FOR>
<SYNTAX SEARCH FOR OBJECT (MANY) = V-FIND PRE-FIND>
<SYNTAX SEARCH IN OBJECT = V-SEARCH PRE-SEARCH>
<SYNTAX SEARCH UP OBJECT = V-SEARCH PRE-SEARCH>
<SYNTAX SEND OBJECT = V-SEND>
"<SYNTAX SEND FOR OBJECT = V-SEND-FOR>"
<SYNTAX SEND OUT OBJECT = V-SEND-OUT>
<SYNTAX SEND OBJECT OBJECT = V-SSEND PRE-SSEND>
<SYNTAX SEND OBJECT TO OBJECT = V-SEND-TO PRE-SEND-TO>
<SYNTAX SET OBJECT (CARRIED HELD MANY HAVE TAKE) ON OBJECT (FIND RMUNGBIT)
= V-PUT PRE-PUT>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNONYM FIRE SHOOT BLAST>
<SYNTAX FIRE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE TAKE)
= V-SHOOT PRE-SHOOT>
<SYNTAX FIRE OBJECT ;(FIND WEAPONBIT) (HELD CARRIED HAVE TAKE)
AT OBJECT ;(FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-SSHOOT PRE-SSHOOT>
<SYNONYM SHOW DISPLAY>
<SYNTAX SHOW OBJECT (TAKE HAVE HELD CARRIED) TO OBJECT (FIND PERSONBIT)
= V-SSHOW PRE-SSHOW>
<SYNTAX SHOW OBJECT ;(FIND PERSONBIT) OBJECT (TAKE HAVE HELD CARRIED)
= V-SHOW>
<SYNTAX SHUT OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE>
<SYNTAX SHUT OBJECT ;(FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT
= V-CLOSE>
<SYNTAX SHUT OFF OBJECT(FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
= V-LAMP-OFF>
<SYNTAX SHUT OFF OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY)
WITH OBJECT
= V-LAMP-OFF>
<SYNTAX SIGN OBJECT (TAKE HAVE HELD CARRIED)
WITH OBJECT (TAKE HAVE HELD CARRIED) = V-SIGN>
<SYNONYM SIT CROUCH HUNKER SQUAT STOOP>
<SYNTAX SIT ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT PRE-SIT>
<SYNTAX SIT AT OBJECT (ON-GROUND IN-ROOM) = V-SIT-AT>
<SYNTAX SIT BESIDE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-SIT-AT>
<SYNTAX SIT DOWN ;ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT PRE-SIT>
<SYNTAX SIT IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT PRE-SIT>
<SYNONYM SLAP HURT INJURE HIT PUNCH STRIKE ;"KICK BITE" BEAT>
<SYNTAX SLAP OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-SLAP>
<SYNTAX SLAP OBJECT (ON-GROUND IN-ROOM) AROUND OBJECT (FIND RMUNGBIT)= V-SLAP>
<SYNTAX SLAP OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE) = V-SLAP>
<SYNTAX SLIDE OBJECT = V-SLIDE>
<SYNTAX SLIDE OBJECT (CARRIED HELD MANY HAVE TAKE) UNDER OBJECT
= V-PUT-UNDER>
<SYNTAX SLIDE OBJECT (CARRIED HELD MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNONYM SMELL SNIFF>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNONYM SMILE GRIN WINK>
<SYNTAX SMILE AT OBJECT (FIND PERSONBIT) = V-SMILE>
<SYNTAX SMOKE OBJECT (HELD CARRIED TAKE HAVE) = V-SMOKE>
"<SYNONYM PHOTO PHOTOGRAPH ;SNAP SNAPSHOT>"
<SYNTAX PHOTO OBJECT = V-PHOTO PRE-PHOTO>
<SYNTAX PHOTO OBJECT WITH OBJECT(HELD ;CARRIED TAKE HAVE) = V-PHOTO PRE-PHOTO>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RMUNGBIT) = V-STAND>
<SYNONYM START ACTIVATE ENGAGE>
<SYNTAX START OBJECT = V-LAMP-ON>
<SYNTAX START OVER OBJECT (FIND RMUNGBIT) = V-RESTART>
<SYNTAX STOP OBJECT (FIND RMUNGBIT) = V-STOP>
<SYNONYM SUPER SUPERB SUPERBRIEF>
<SYNTAX SUPER = V-SUPER-BRIEF>
<SYNONYM SWIM BATHE WADE>
<SYNTAX SWIM = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNONYM TAKE ;GET CARRY ;REMOVE LEAD STEAL SEIZE GRAB CONFISCATE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT ;(FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT ;(FIND TAKEBIT) (IN-ROOM CARRIED MANY)
IN OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT ;(FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OFF OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT ;(FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OUT ;OF OBJECT ;(FIND CONTBIT)
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT ;(FIND TAKEBIT) (MANY TAKE) TO OBJECT = V-TAKE-TO>
<SYNTAX TAKE OBJECT (IN-ROOM CARRIED TAKE HAVE) UP ;TO OBJECT = V-HOLD-UP>
"<SYNTAX TAKE OBJECT ;WITH OBJECT = V-TAKE-PHOTO PRE-TAKE-PHOTO>"
<SYNTAX TAKE OBJECT ;(FIND TAKEBIT) (ON-GROUND MANY)
WITH OBJECT = V-TAKE-WITH PRE-TAKE-WITH>
<SYNTAX TAKE OFF OBJECT (FIND WORNBIT) ;(HAVE) = V-TAKE-OFF>
"What about TAKE THE COOK'S PICTURE ?"
<SYNTAX TAKE PHOTO ;OF OBJECT = V-PHOTO PRE-PHOTO>
<SYNTAX TELL OBJECT (FIND PERSONBIT) (IN-ROOM) = V-TELL>
<SYNTAX TELL OBJECT (IN-ROOM) OBJECT = V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNTAX TELL ABOUT OBJECT = V-TALK-ABOUT PRE-TALK-ABOUT>
<SYNTAX TELL OBJECT (IN-ROOM) ABOUT OBJECT = V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNONYM THANKS THANK>
<SYNTAX THANKS = V-THANKS>
<SYNTAX THANKS OBJECT = V-THANKS>
<SYNONYM THROW HURL CHUCK TOSS>
<SYNTAX THROW AWAY OBJECT (HELD CARRIED HAVE) = V-DROP>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
AT OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-THROW-AT>
<SYNTAX THROW OBJECT (CARRIED HELD MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX THROW OBJECT (CARRIED HELD MANY HAVE TAKE) ON OBJECT
= V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED MANY HAVE TAKE) OFF ;OF OBJECT
= V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE) OUT ;OF OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH>
<SYNTAX THROW OBJECT (CARRIED HELD MANY HAVE TAKE) OVER OBJECT
= V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH>
<SYNONYM TIE FASTEN SECURE ATTACH>
<SYNTAX TIE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
TO OBJECT ;(FIND FURNITURE) (ON-GROUND IN-ROOM)
= V-TIE-TO PRE-TIE-TO>
<SYNTAX TIE UP OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
TO OBJECT ;(FIND FURNITURE) (ON-GROUND IN-ROOM)
= V-TIE-TO PRE-TIE-TO>
<SYNTAX TIE OBJECT ;(FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-TIE-WITH PRE-TIE-WITH>
<SYNTAX TIE UP OBJECT ;(FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-TIE-WITH PRE-TIE-WITH>
<SYNONYM TIME T>
<SYNTAX TIME = V-TIME>
"<SYNTAX OFFER OBJECT FOR OBJECT>"
"<SYNTAX TRADE OBJECT FOR OBJECT>" "?"
<SYNONYM SWITCH TURN FLIP SWING>
<SYNTAX SWITCH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-TURN>
"<SYNTAX SWITCH OBJECT IN ;FOR OBJECT (FIND RMUNGBIT) = V-ARREST PRE-ARREST>"
<SYNTAX SWITCH AROUND OBJECT (FIND RMUNGBIT) = V-TURN-AROUND>
<SYNTAX SWITCH OFF OBJECT(FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
= V-LAMP-OFF>
<SYNTAX SWITCH OFF OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY)
WITH OBJECT
= V-LAMP-OFF>
<SYNTAX SWITCH ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
= V-LAMP-ON>
<SYNTAX SWITCH ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY)
WITH OBJECT
= V-LAMP-ON> "? IS MANY O.K.?"
<SYNTAX SWITCH TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-TURN>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) = V-UNLOCK>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT = V-UNLOCK>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
"<SYNTAX UNSPACE = V-UNSPACE>"
<SYNONYM UNTIE FREE UNFASTEN UNATTACH UNHOOK UNCUFF>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-UNTIE>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
FROM OBJECT
= V-UNTIE>
<SYNONYM USE CASH>
<SYNTAX USE OBJECT = V-USE>
<SYNTAX USE OBJECT AGAINST OBJECT = V-USE-AGAINST>
<SYNTAX VERBOSE = V-VERBOSE>
<SYNONYM RELEASE REVISION VERSION EDITION VARIATION>
<SYNTAX RELEASE = V-VERSION>
<SYNTAX RELEASE OBJECT = V-UNTIE>
<SYNONYM WAIT Z STAY MEDITATE RELAX ;REST>
"<SYNTAX WAIT = V-WAIT>"
<SYNTAX WAIT OBJECT (FIND RMUNGBIT) = V-WAIT-FOR>
<SYNTAX WAIT FOR OBJECT (FIND RMUNGBIT) = V-WAIT-FOR>
<SYNTAX WAIT TILL OBJECT = V-WAIT-UNTIL>
<SYNTAX WAIT UNTIL OBJECT = V-WAIT-UNTIL>
<SYNONYM WAKE AWAKE SURPRISE STARTLE>
<SYNTAX WAKE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND RMUNGBIT ;PERSONBIT) (ON-GROUND IN-ROOM)
= V-ALARM>
<SYNONYM WALK GO RUN PROCEED STEER DRIVE>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
<SYNTAX WALK BEHIND OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN> "(FIND CLIMBBIT)"
<SYNTAX WALK IN OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNTAX WALK OUT ;OF OBJECT = V-LEAVE>
<SYNTAX WALK THROUGH OBJECT = V-THROUGH ;PRE-THROUGH>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNTAX WALK UNDER OBJECT = V-WALK-UNDER>
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP> "(FIND CLIMBBIT)"
<SYNTAX WALK WITH OBJECT = V-FOLLOW>
<SYNTAX WALK OBJECT OVER OBJECT = V-RUN-OVER>
<SYNTAX WATCH OBJECT = V-EXAMINE>
<SYNONYM WEAR DON>
<SYNTAX WEAR OBJECT (FIND WEARBIT) (HAVE TAKE) = V-WEAR>
<SYNONYM WIND COCK ADVANCE>
<SYNTAX WIND OBJECT (TAKE HAVE HELD CARRIED) = V-WIND>
<SYNONYM NAME IDENTIFY>
<SYNTAX NAME OBJECT ;(HELD CARRIED HAVE) = V-WHAT>
<SYNTAX WRITE ON OBJECT (TAKE HAVE HELD CARRIED)
WITH OBJECT (TAKE HAVE HELD CARRIED) = V-SIGN>
<SYNONYM YELL SCREAM SHOUT>
<SYNTAX YELL = V-YELL>
<SYNTAX YELL AT OBJECT (ON-GROUND IN-ROOM) = V-TELL>
<SYNTAX YELL FOR OBJECT = V-YELL-FOR>
<SYNTAX YELL IN OBJECT = V-SAY-INTO PRE-SAY-INTO>
<SYNTAX YELL TO OBJECT (ON-GROUND IN-ROOM) = V-TELL>
<SYNONYM YES Y AYE ROGER WILCO OK OKAY 10-4 SURE YUP YEAH AFFIRM>
<SYNTAX YES = V-YES>

1391
things.cmp Normal file

File diff suppressed because it is too large Load Diff

949
things.zap Normal file
View File

@ -0,0 +1,949 @@
.FUNCT RANDOM-PSEUDO
PRINTR "You can't do anything useful with that."
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3
EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3
PRINTI "(Those things aren't here!)"
CRLF
RETURN 2
?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS11
SET 'TBL,P-PRSO
JUMP ?CND1
?ELS11: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT \?CND14
FSET? PRSO,PERSONBIT \?CND14
IN? PRSO,GLOBAL-OBJECTS \?CND14
CALL2 NOT-HERE-PERSON,PRSO
RETURN 2
?CND14: ZERO? PRSO? /?ELS27
CALL1 PRSO-VERB?
ZERO? STACK \?THN24
?ELS27: ZERO? PRSO? \?CND21
CALL1 PRSI-VERB?
ZERO? STACK /?CND21
?THN24: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
ZERO? OBJ /FALSE
EQUAL? OBJ,NOT-HERE-OBJECT /?CND30
RETURN 2
?CND30:
?CND21: PRINTI "(You can't see any"
CALL1 NOT-HERE-PRINT
PRINTI " here!)"
CRLF
RETURN 2
.FUNCT PRSO-VERB?,V=0,W=0
ZERO? V \?CND1
SET 'V,PRSA
?CND1: ZERO? W \?CND4
SET 'W,WINNER
?CND4: CALL2 SPEAKING-VERB?,V
ZERO? STACK \TRUE
EQUAL? V,V?$WHERE,V?ASK-CONTEXT-ABOUT,V?ASK-CONTEXT-FOR /TRUE
EQUAL? V,V?$FCLEAR,V?$FSET,V?$QFSET /TRUE
EQUAL? V,V?BOARD,V?BUY,V?DISEMBARK /TRUE
EQUAL? V,V?EXAMINE,V?FIND,V?FOLLOW /TRUE
EQUAL? V,V?LEAVE,V?PHONE,V?THROUGH /TRUE
EQUAL? V,V?USE,V?WAIT-FOR,V?WALK-TO /TRUE
EQUAL? V,V?WHAT,V?PASS /TRUE
EQUAL? V,V?SHOOT,V?SIT,V?LIE /TRUE
EQUAL? W,PLAYER /FALSE
EQUAL? V,V?BRING,V?TAKE,V?SSHOW /TRUE
RFALSE
.FUNCT PRSI-VERB?,V=0,W=0
ZERO? V \?CND1
SET 'V,PRSA
?CND1: ZERO? W \?CND4
SET 'W,WINNER
?CND4: EQUAL? V,V?$WHERE,V?ASK-ABOUT,V?ASK-FOR /TRUE
EQUAL? V,V?SEARCH-FOR,V?TAKE-TO,V?TELL-ABOUT /TRUE
EQUAL? V,V?SSHOOT /TRUE
EQUAL? W,PLAYER /FALSE
EQUAL? V,V?SBRING,V?SHOW /TRUE
RFALSE
.FUNCT GEN-TEST,OBJ
IN? OBJ,HERE /TRUE
CALL2 CORRIDOR-LOOK,OBJ
ZERO? STACK \TRUE
EQUAL? PRSA,V?FOLLOW /?THN12
CALL1 REMOTE-VERB?
ZERO? STACK /FALSE
?THN12: FSET? OBJ,PERSONBIT \FALSE
FSET? OBJ,SEENBIT /TRUE
RFALSE
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ,LEN,CNT,LOCAL=0
CALL2 MOBY-FIND,TBL >M-F
ZERO? DEBUG /?CND1
PRINTI "[Found "
PRINTN M-F
PRINTI " objects]"
CRLF
EQUAL? 1,M-F /?CND1
PRINTI "[Namely: "
SET 'CNT,1
GET TBL,P-MATCHLEN >LEN
?PRG12: DLESS? 'LEN,0 \?ELS16
JUMP ?REP13
?ELS16: GET TBL,CNT
PRINTD STACK
PRINTI ", "
?CND14: INC 'CNT
JUMP ?PRG12
?REP13: PRINTI "]"
CRLF
?CND1: GRTR? M-F,1 \?CND23
SET 'CNT,0
?PRG26: IGRTR? 'CNT,M-F \?CND28
JUMP ?REP27
?CND28: GET TBL,CNT >OBJ
CALL2 GEN-TEST,OBJ
ZERO? STACK /?PRG26
IGRTR? 'LOCAL,1 \?ELS36
JUMP ?REP27
?ELS36: SET 'P-MOBY-FOUND,OBJ
JUMP ?PRG26
?REP27: EQUAL? LOCAL,1 \?CND23
SET 'M-F,1
?CND23: EQUAL? 1,M-F \?ELS46
ZERO? DEBUG /?CND47
PRINTI "[Namely: "
PRINTD P-MOBY-FOUND
PRINTI "]"
CRLF
?CND47: CALL1 REMOTE-VERB?
ZERO? STACK \?CND53
EQUAL? PRSA,V?$CALL /?CND53
CALL2 VISIBLE?,P-MOBY-FOUND
ZERO? STACK \?CND53
CALL2 NOT-HERE,P-MOBY-FOUND
RETURN TRUE-VALUE
?CND53: ZERO? PRSO? /?ELS60
SET 'PRSO,P-MOBY-FOUND
RFALSE
?ELS60: SET 'PRSI,P-MOBY-FOUND
RFALSE
?ELS46: LESS? 1,M-F \?ELS65
GET TBL,1 >OBJ
FSET? OBJ,PERSONBIT \?ELS65
SET 'CNT,1
GET TBL,P-MATCHLEN >LEN
?PRG68: GET TBL,CNT >OBJ
CALL2 GEN-TEST,OBJ
ZERO? STACK \?CND70
DEC 'LEN
CALL ELIMINATE,TBL,CNT,LEN
GRTR? CNT,LEN /?CND70
JUMP ?PRG68
?CND70: IGRTR? 'CNT,LEN \?PRG68
PUT TBL,P-MATCHLEN,LEN
ZERO? LEN \?ELS81
RETURN NOT-HERE-OBJECT
?ELS81: EQUAL? LEN,1 /?CND79
CALL WHICH-PRINT,0,LEN,TBL
EQUAL? TBL,P-PRSO \?ELS88
PUSH P-NC1
JUMP ?CND84
?ELS88: PUSH P-NC2
?CND84: SET 'P-ACLAUSE,STACK
SET 'P-AADJ,P-ADJ
SET 'P-ANAM,P-NAM
CALL ORPHAN,FALSE-VALUE,FALSE-VALUE
SET 'P-OFLAG,TRUE-VALUE
RTRUE
?CND79: ZERO? DEBUG /?CND91
PRINTI "[Corridor: "
PRINTD OBJ
PRINTI "]"
CRLF
?CND91: ZERO? PRSO? /?ELS99
SET 'PRSO,OBJ
RFALSE
?ELS99: SET 'PRSI,OBJ
RFALSE
?ELS65: LESS? 1,M-F \?ELS104
GET TBL,1 >OBJ
GETP OBJ,P?GENERIC
CALL STACK,TBL >OBJ
ZERO? OBJ /?ELS104
ZERO? DEBUG /?CND107
PRINTI "[Generic: "
PRINTD OBJ
PRINTI "]"
CRLF
?CND107: EQUAL? OBJ,NOT-HERE-OBJECT /TRUE
ZERO? PRSO? /?ELS117
SET 'PRSO,OBJ
RFALSE
?ELS117: SET 'PRSI,OBJ
RFALSE
?ELS104: ZERO? PRSO? \?ELS126
IN? PRSO,HERE \?ELS126
EQUAL? PRSA,V?TELL-ABOUT,V?ASK-FOR,V?ASK-ABOUT /?THN131
?ELS126: ZERO? PRSO? /?ELS128
CALL1 QCONTEXT-GOOD?
ZERO? STACK /?ELS128
EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT /?THN131
?ELS128: EQUAL? WINNER,PLAYER /?ELS122
EQUAL? PRSA,V?SGIVE /?THN131
EQUAL? PRSA,V?GIVE,V?WHAT,V?FIND \?ELS122
?THN131: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS135
SET 'LEN,PRSO
JUMP ?CND133
?ELS135: CALL1 QCONTEXT-GOOD?
ZERO? STACK /?ELS137
SET 'LEN,QCONTEXT
JUMP ?CND133
?ELS137: EQUAL? WINNER,PLAYER /?ELS139
SET 'LEN,WINNER
JUMP ?CND133
?ELS139: CALL FIND-FLAG,HERE,PERSONBIT,WINNER >OBJ
ZERO? OBJ /?ELS141
SET 'LEN,OBJ
JUMP ?CND133
?ELS141: SET 'LEN,GAME
?CND133: CALL2 START-SENTENCE,LEN
CALL HE-SHE-IT,LEN,-1,STR?6
PRINTI ", "
CALL1 PRODUCE-GIBBERISH
RTRUE
?ELS122: ZERO? PRSO? \?ELS147
PRINTI "You wouldn't find any"
CALL1 NOT-HERE-PRINT
PRINTR " there."
?ELS147: RETURN NOT-HERE-OBJECT
.FUNCT NOT-HERE-PRINT,?TMP1
ZERO? P-OFLAG \?THN6
ZERO? P-MERGED /?ELS5
?THN6: ZERO? P-XADJ /?CND8
PRINTI " "
PRINTB P-XADJ
?CND8: ZERO? P-XNAM /FALSE
PRINTI " "
PRINTB P-XNAM
RTRUE
?ELS5: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS23
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?ELS23: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT GIVE-SHOW,P1,P2
EQUAL? PRSA,V?GIVE \?ELS5
EQUAL? PRSI,P1,P2 \FALSE
RETURN PRSO
?ELS5: EQUAL? PRSA,V?SHOW \FALSE
EQUAL? PRSO,P1,P2 \FALSE
RETURN PRSI
.FUNCT TICKET-F,COST,OBJ,TKT
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \?ELS5
PRINTI "All you can make out is the destination: "
GETP PRSO,P?CAPACITY
PRINTD STACK
EQUAL? PRSO,TICKET \?ELS10
ZERO? TICKET-VIA /?ELS10
PRINTI " via "
PRINTD TICKET-VIA
JUMP ?CND8
?ELS10: EQUAL? PRSO,TICKET-OTHER \?CND8
ZERO? TICKET-OTHER-VIA /?CND8
PRINTI " via "
PRINTD TICKET-OTHER-VIA
?CND8: PRINTR "."
?ELS5: CALL GIVE-SHOW,CONDUCTOR,GUARD >TKT
ZERO? TKT /?ELS24
EQUAL? TKT,PRSO \?ELS27
SET 'OBJ,PRSI
JUMP ?CND25
?ELS27: EQUAL? TKT,PRSI \?ELS29
SET 'OBJ,PRSO
JUMP ?CND25
?ELS29: PRINTI "[BUG #1]"
CRLF
?CND25: ZERO? ON-TRAIN \FALSE
CALL2 START-SENTENCE,OBJ
PRINTI " looks at"
CALL2 HIM-HER-IT,TKT
PRINTR " and points to this train track."
?ELS24: EQUAL? PRSA,V?BUY-TICKET,V?BUY \FALSE
EQUAL? PRSO,TICKET-OTHER,TICKET \FALSE
EQUAL? HERE,TICKET-AREA /?ELS47
CALL1 YOU-CANT
RTRUE
?ELS47: EQUAL? PRSA,V?BUY /?THN50
ZERO? PRSI \?CND45
?THN50: SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "(You didn't say where the ticket is for.)"
?CND45: GETP PRSI,P?NORTH >COST
GRTR? COST,0 \?THN57
FSET? PRSI,PERSONBIT \?ELS56
?THN57: PRINTI "You can't buy a ticket to"
CALL2 PRINTT,PRSI
PRINTR "."
?ELS56: GETP PLAYER,P?SOUTH
GRTR? COST,STACK \?CND54
PRINTR "You don't have enough money."
?CND54: GETP PLAYER,P?SOUTH
SUB STACK,COST
PUTP PLAYER,P?SOUTH,STACK
PUTP PRSO,P?CAPACITY,PRSI
CALL ZMEMZ,PRSI,TRAIN-TABLE
ZERO? STACK \?ELS67
EQUAL? SCENERY-OBJ,STATION-KNUT /?ELS67
EQUAL? PRSO,TICKET \?ELS72
SET 'TICKET-VIA,STATION-KNUT
JUMP ?CND65
?ELS72: EQUAL? PRSO,TICKET-OTHER \?CND65
SET 'TICKET-OTHER-VIA,STATION-KNUT
JUMP ?CND65
?ELS67: EQUAL? PRSO,TICKET \?ELS79
SET 'TICKET-VIA,FALSE-VALUE
JUMP ?CND65
?ELS79: EQUAL? PRSO,TICKET-OTHER \?CND65
SET 'TICKET-OTHER-VIA,FALSE-VALUE
?CND65: MOVE PRSO,PLAYER
CALL2 START-SENTENCE,CLERK
PRINTI " takes your money and stamps "
PRINTD PRSO
PRINTR "."
.FUNCT PASSPORT-F
EQUAL? PRSA,V?OPEN,V?READ \FALSE
CALL PERFORM,V?EXAMINE,PRSO,PRSI
RTRUE
.FUNCT CHECK-F,P
EQUAL? PRSA,V?ANALYZE \?ELS5
CALL PERFORM,V?EXAMINE,PRSO,PRSI
RTRUE
?ELS5: EQUAL? PRSA,V?SHOW \?ELS7
EQUAL? PRSO,CLERK,WAITER \?ELS12
FSET? PEN,TOUCHBIT /?ELS12
MOVE PEN,PRSO
FCLEAR PEN,NDESCBIT
FSET PEN,TAKEBIT
CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?8
PRINTI " and"
CALL HE-SHE-IT,PRSO,-1,STR?9
PRINTI " "
CALL2 PRINTA,PEN
PRINTR "."
?ELS12: EQUAL? PRSO,WAITRESS,GUARD,CONDUCTOR \FALSE
CALL HE-SHE-IT,PRSO,TRUE-VALUE
PRINTI " shakes"
CALL HIM-HER-IT,PRSO,FALSE-VALUE,TRUE-VALUE
PRINTI " head and points "
EQUAL? HERE,CAFE \?ELS25
PRINTI "toward"
CALL2 HIM-HER-IT,TICKET-AREA
PRINTR "."
?ELS25: ZERO? ON-TRAIN \?ELS29
PRINTR "into the station."
?ELS29: LESS? CAR-HERE,DINER-CAR \?ELS33
PRINTR "to the rear."
?ELS33: GRTR? CAR-HERE,DINER-CAR \?ELS37
PRINTR "forward."
?ELS37: PRINTR "to a booth."
?ELS7: EQUAL? PRSA,V?USE,V?SIGN \FALSE
SET 'P,WAITER
IN? P,HERE /?THN51
SET 'P,CLERK
IN? P,HERE \FALSE
?THN51: EQUAL? PRSI,PEN /?THN58
FSET? PEN,TOUCHBIT \?THN58
LOC PEN
EQUAL? STACK,PLAYER,POCKET \?ELS57
?THN58: CALL2 START-SENTENCE,P
FSET? PEN,TOUCHBIT /?CND62
PRINTI " lends you a pen and then"
MOVE PEN,PLAYER
FCLEAR PEN,NDESCBIT
FSET PEN,TOUCHBIT
?CND62: MOVE CHECK,P
FCLEAR CHECK,TAKEBIT
GETP PLAYER,P?SOUTH
ADD 20,STACK
PUTP PLAYER,P?SOUTH,STACK
PRINTI " gives you "
PRINTC CURRENCY-SYMBOL
PRINTR "20 in exchange for the check."
?ELS57: CALL2 START-SENTENCE,P
PRINTR " shakes his head and shrugs his shoulders."
.FUNCT CAMERA-F
IN? CAMERA,POCKET \?CND1
EQUAL? PRSA,V?WIND /?THN6
EQUAL? PRSA,V?SHOOT,V?OPEN,V?LOOK-THROUGH /?THN6
EQUAL? PRSA,V?EXAMINE,V?CLOSE,V?AIM \?CND1
?THN6: MOVE CAMERA,PLAYER
?CND1: EQUAL? PRSA,V?AIM \?ELS12
EQUAL? PRSO,CAMERA \FALSE
PRINTR "Okay, then what?"
?ELS12: EQUAL? PRSA,V?EXAMINE \?ELS21
FSET? PRSO,OPENBIT /FALSE
IN? FILM,CAMERA \?ELS28
ZERO? CAMERA-COCKED \?ELS28
PRINTR "It looks as if it needs to be cocked."
?ELS28: PRINTI "Ah! Is this the masterwork of some paranoid genius in ""Q"" Section? A product of years of technological innovation, bordering on magic? Nah, it's just an ordinary "
PRINTD CAMERA
PRINTR " -- no weapons, no motors, nothing to break down. And it's closed."
?ELS21: EQUAL? PRSA,V?LOOK-THROUGH \?ELS38
PRINTR "Everything appears normal."
?ELS38: EQUAL? PRSA,V?OPEN \?ELS42
ZERO? CAMERA-COCKED /FALSE
PUT FILM-TBL,PICTURE-NUMBER,-1
RFALSE
?ELS42: EQUAL? PRSA,V?SHOOT \?ELS50
EQUAL? PRSI,CAMERA \FALSE
CALL PERFORM,V?PHOTO,PRSO,PRSI
RTRUE
?ELS50: EQUAL? PRSA,V?WIND \FALSE
FSET? CAMERA,OPENBIT /?THN61
IN? FILM,CAMERA \?THN61
ZERO? CAMERA-COCKED \?THN61
GRTR? PICTURE-NUMBER,3 \?ELS60
?THN61: PRINTR "You try to cock it, but the lever won't move."
?ELS60: INC 'PICTURE-NUMBER
SET 'CAMERA-COCKED,TRUE-VALUE
PRINTR "Okay."
.FUNCT FILM-F
EQUAL? PRSA,V?WIND \?ELS5
CALL PERFORM,PRSA,CAMERA
RTRUE
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTR "It looks like instant-developing film, in a special miniature format."
.FUNCT GLASS-F,X,CNT
EQUAL? PRSA,V?LOOK-THROUGH \?ELS5
PRINTR "Everything appears bigger."
?ELS5: EQUAL? PRSA,V?EXAMINE,V?READ \?ELS9
EQUAL? PRSI,GLASS \?ELS9
EQUAL? PRSO,FILM \?ELS16
PRINTI "With the aid of the magnifying glass you can just make out what's on the film."
ZERO? PICTURE-NUMBER \?CND19
PRINTR " The whole film is unexposed."
?CND19: CRLF
SET 'CNT,1
?PRG24: PRINTI "Picture "
PRINTN CNT
PRINTI " is "
GET FILM-TBL,CNT >X
ZERO? X \?ELS30
PRINTI "unexposed."
JUMP ?CND28
?ELS30: EQUAL? -1,X \?ELS34
PRINTI "fogged."
JUMP ?CND28
?ELS34: PRINTI "a picture of "
EQUAL? X,GLOBAL-OBJECTS \?ELS43
PRINTI "something you can't make out."
JUMP ?CND28
?ELS43: FSET? X,WINDOWBIT \?ELS47
PRINTI "a window."
JUMP ?CND28
?ELS47: ZERO? X /?ELS51
CALL2 PRINTA,X
PRINTI "."
JUMP ?CND28
?ELS51: PRINTI "nothing."
?CND28: CRLF
IGRTR? 'CNT,4 \?PRG24
RTRUE
?ELS16: EQUAL? PRSO,GLASS \?ELS63
CALL1 HAR-HAR
RSTACK
?ELS63: EQUAL? PRSO,PLAYER,MIRROR \?ELS65
PRINTR "You see yourself, only bigger and uglier than ever. Ugh!"
?ELS65: CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?10
PRINTR " the same, only much larger."
?ELS9: EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
EQUAL? PRSO,GLASS \FALSE
ZERO? PRSI /FALSE
CALL PERFORM,V?READ,PRSI,PRSO
RTRUE
.FUNCT MCGUFFIN-F
EQUAL? PRSA,V?MUNG \?ELS5
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "(How do you want to do that?)"
?ELS5: EQUAL? PRSA,V?CHANGE \FALSE
EQUAL? PRSI,PEN \FALSE
FSET MCGUFFIN,LOCKED
PRINTI "With a deft hand, you alter"
CALL2 HIM-HER-IT,MCGUFFIN
PRINTR " in a subtle way so that it conveys serious disinformation."
.FUNCT SPY-LIST-F,X
EQUAL? PRSA,V?EAT \?ELS5
MOVE PRSO,LIMBO-FWD
PRINTR "Gulp!"
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \?ELS9
ZERO? LIST-RUBBED /?ELS14
PRINTI "Examining the "
PRINTD SPY-LIST
CALL1 PAD-READ
RSTACK
?ELS14: EQUAL? P-ADVERB,W?CAREFULLY \?ELS19
PRINTI "There are some shiny lines on the "
PRINTD SPY-LIST
PRINTR ", maybe invisible ink."
?ELS19: PRINTI "There doesn't seem to be anything written on the "
PRINTD SPY-LIST
PRINTR "."
?ELS9: EQUAL? PRSA,V?HEAT \FALSE
ZERO? PRSI \?ELS32
PRINTR "It heats up like ordinary newsprint."
?ELS32: EQUAL? PRSI,LIGHTER \?ELS36
SET 'LIST-RUBBED,TRUE-VALUE
PRINTI "Heating"
CALL2 HIM-HER-IT,SPY-LIST
PRINTI " with"
CALL2 HIM-HER-IT,PRSI
CALL1 PAD-READ
RSTACK
?ELS36: PRINTI "Nothing "
ZERO? LIST-RUBBED /?CND43
PRINTI "new "
?CND43: PRINTR "appears."
.FUNCT PAD-READ,CNT,OBJ
FSET? SPY-LIST,MUNGBIT \?CND1
PRINTR " reveals nothing intelligible."
?CND1: PRINTI " shows two things written on it"
EQUAL? VARIATION,3,4 \?CND8
PRINTI ", which you easily translate into English"
?CND8: PRINTI ":
"
SET 'CNT,6
?PRG15: GET PASS-TABLE,CNT >OBJ
EQUAL? OBJ,PASSWORD,PASSOBJECT \?CND17
PRINTI " "
PRINTD OBJ
CRLF
?CND17: DLESS? 'CNT,1 \?PRG15
RTRUE
.FUNCT BRIEFCASE-F,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
PRINTI "A black briefcase with a chrome latch is here, "
FSET? BRIEFCASE,SURFACEBIT \?ELS12
PRINTR "closed."
?ELS12: PRINTR "open."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS20
PRINTI "It's an expensive-looking case, built as sturdy as a tank."
EQUAL? P-ADVERB,W?CAREFULLY \?CND23
CALL1 CASE-CAREFUL
?CND23: CRLF
RTRUE
?ELS20: CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?MOVE,V?TAKE \?ELS29
EQUAL? PRSO,BRIEFCASE \?ELS29
LOC BRIEFCASE
FSET? STACK,PERSONBIT /FALSE
?ELS29: LOC BRIEFCASE
FSET? STACK,PERSONBIT \?ELS33
CALL2 NOT-HOLDING?,BRIEFCASE
ZERO? STACK \TRUE
?ELS33: EQUAL? PRSA,V?MOVE,V?TAKE \?ELS37
EQUAL? PRSO,BRIEFCASE \?ELS37
FSET? BRIEFCASE,OPENBIT \?ELS44
ZERO? PLAYER-SEATED \?ELS44
CALL TOO-BAD-BUT,BRIEFCASE,STR?12
RTRUE
?ELS44: FSET? BRIEFCASE,SURFACEBIT \FALSE
CALL2 OBJS-SLIDE-OFF,BRIEFCASE
RFALSE
?ELS37: EQUAL? PRSA,V?OPEN \?ELS50
FSET? BRIEFCASE-LATCH,OPENBIT /?ELS55
CALL2 THIS-IS-IT,BRIEFCASE-LATCH
PRINTR "The latch is closed."
?ELS55: IN? BRIEFCASE,PLAYER \?ELS59
ZERO? PLAYER-SEATED \?ELS59
CALL2 TBL-FIRST?,BRIEFCASE-TBL
ZERO? STACK /?ELS59
PRINTR "You open it a crack before you realize that everything inside would fall out. You quickly close it again."
?ELS59: ZERO? LATCH-TURNED \?ELS65
FSET? BRIEFCASE,SURFACEBIT \?ELS65
CALL1 TELL-GAS
RSTACK
?ELS65: FSET BRIEFCASE,OPENBIT
CALL TBL-TO-INSIDE,BRIEFCASE,BRIEFCASE-TBL
RTRUE
?ELS50: EQUAL? PRSA,V?CLOSE \?ELS71
FCLEAR BRIEFCASE,OPENBIT
CALL INSIDE-OBJ-TO,BRIEFCASE-TBL,BRIEFCASE
RSTACK
?ELS71: EQUAL? PRSA,V?LOOK-INSIDE \?ELS73
FSET? BRIEFCASE,OPENBIT /FALSE
CALL TOO-BAD-BUT,BRIEFCASE,STR?13
RTRUE
?ELS73: EQUAL? PRSA,V?SHAKE \FALSE
GET BRIEFCASE-TBL,1
ZERO? STACK /FALSE
PRINTR "Hmm. Something's in there."
.FUNCT TELL-GAS,YOU?=1
ZERO? YOU? /?ELS3
PRINTI "As the lid is lifted, you hear an explosion from inside the case. P"
JUMP ?CND1
?ELS3: PRINTI "Too late, you notice that the compartment is filled with p"
?CND1: PRINTI "ale yellow gas, practically invisible"
ZERO? YOU? /?CND13
PRINTI ", hisses out of tiny vents set into the briefcase's spine"
?CND13: PRINTI ". Holding your breath will not help: this cunning creation of the chemical warfare chaps is absorbed through the skin. Well, ""only the good die young."""
CRLF
CRLF
CALL1 FINISH
RSTACK
.FUNCT LATCH-F
CALL2 VISIBLE?,BRIEFCASE
ZERO? STACK \?ELS5
CALL2 NOT-HERE,BRIEFCASE-LATCH
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
PRINTI "The latch on the briefcase is operated by sliding a short metal bar that points "
ZERO? LATCH-TURNED \?ELS12
PRINTI "away from "
JUMP ?CND10
?ELS12: PRINTI "toward "
?CND10: PRINTI "the handle of the briefcase. The latch is "
FSET? BRIEFCASE-LATCH,OPENBIT /?ELS23
PRINTI "closed."
JUMP ?CND21
?ELS23: PRINTI "open."
?CND21: EQUAL? P-ADVERB,W?CAREFULLY \?CND30
CALL1 CASE-CAREFUL
?CND30: CRLF
RTRUE
?ELS7: CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
LOC BRIEFCASE
FSET? STACK,PERSONBIT \?ELS36
CALL2 NOT-HOLDING?,BRIEFCASE
ZERO? STACK \TRUE
?ELS36: EQUAL? PRSA,V?TAKE,V?REMOVE \?ELS40
CALL1 YOU-CANT
RSTACK
?ELS40: EQUAL? PRSA,V?AIM,V?TURN \?ELS42
EQUAL? PRSO,BRIEFCASE-LATCH \?ELS42
ZERO? LATCH-TURNED \?PRD45
PUSH 1
JUMP ?PRD46
?PRD45: PUSH 0
?PRD46: SET 'LATCH-TURNED,STACK
PRINTR "A mechanical click comes from within the briefcase."
?ELS42: EQUAL? PRSA,V?CLOSE \?ELS50
FSET? BRIEFCASE,OPENBIT \?ELS55
CALL TOO-BAD-BUT,BRIEFCASE,STR?12
RTRUE
?ELS55: FSET? BRIEFCASE-LATCH,OPENBIT /?ELS57
CALL ALREADY,BRIEFCASE-LATCH,STR?13
RTRUE
?ELS57: CALL OKAY,BRIEFCASE-LATCH,STR?13
RSTACK
?ELS50: EQUAL? PRSA,V?RUB,V?SLIDE,V?MOVE /?THN64
EQUAL? PRSA,V?RAISE,V?OPEN,V?PUSH \FALSE
?THN64: EQUAL? PRSO,BRIEFCASE-LATCH \FALSE
FSET? BRIEFCASE-LATCH,OPENBIT /?ELS70
FSET BRIEFCASE-LATCH,OPENBIT
PRINTI "The metal latch snaps open."
ZERO? LATCH-TURNED \?CND73
PRINTI " At the same time, a loud thump comes from within the briefcase."
?CND73: CRLF
RTRUE
?ELS70: CALL ALREADY,PRSO,STR?12
RSTACK
.FUNCT CASE-CAREFUL
PRINTI " A careful examination shows that the latch can be turned as well as opened. And there are tiny vents set into the briefcase's spine."
RTRUE
.FUNCT BRIEFCASE-HANDLE-F
CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
CALL2 VISIBLE?,BRIEFCASE
ZERO? STACK \?ELS7
CALL2 NOT-HERE,BRIEFCASE-HANDLE
RSTACK
?ELS7: EQUAL? PRSA,V?EXAMINE \FALSE
CALL1 NOTHING-SPECIAL
RSTACK
.FUNCT PLAQUE-F
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
PRINTI "If you could read the language, it would say:
""This is the CHECKPOINT. All passengers who are crossing the frontier must pass through customs inspection before boarding the train.
CHECKPOINT is also a trademark and product of Infocom, Inc., "
GET CREDITS,0
SUB STACK,1
MOD VARIATION,STACK
ADD 1,STACK
CALL PICK-ONE-NEW,CREDITS,STACK
PRINT STACK
PRINTR "."""
.FUNCT TBL-FIRST?,TBL,OFFS=0,THING,MAX
GET TBL,0 >MAX
?PRG1: IGRTR? 'OFFS,MAX /FALSE
GET TBL,OFFS >THING
EQUAL? 0,THING /?PRG1
RETURN THING
.FUNCT TBL-TO-INSIDE,OBJ,TBL,STR=0,THING,OFFS=0,MAX
FSET? OBJ,SURFACEBIT /?CND1
CALL ALREADY,OBJ,STR?12
RTRUE
?CND1: FIRST? OBJ \?CND4
CALL2 OBJS-SLIDE-OFF,OBJ
?CND4: GET TBL,0 >MAX
ZERO? DEBUG \?THN10
ZERO? STR \?ELS9
?THN10: ZERO? STR /?CND7
PRINTC 91
PRINTI "Opened."
CRLF
JUMP ?CND7
?ELS9: EQUAL? STR,1 /?CND7
PRINT STR
CRLF
?CND7: FCLEAR OBJ,SURFACEBIT
?PRG22: IGRTR? 'OFFS,MAX \?ELS26
JUMP ?REP23
?ELS26: GET TBL,OFFS >THING
ZERO? THING /?PRG22
IN? OBJ,PLAYER \?CND29
FSET THING,TAKEBIT
?CND29: MOVE THING,OBJ
PUT TBL,OFFS,0
JUMP ?PRG22
?REP23: EQUAL? STR,1 /TRUE
FIRST? OBJ \TRUE
PRINTI "Opening"
CALL2 HIM-HER-IT,OBJ
PRINTI " reveals "
CALL2 PRINT-CONTENTS,OBJ
PRINTR "."
.FUNCT INSIDE-OBJ-TO,TBL,OBJ,STR=0,OFFS=0,F,N
FSET? OBJ,SURFACEBIT \?CND1
CALL ALREADY,OBJ,STR?13
RTRUE
?CND1: FSET OBJ,SURFACEBIT
ZERO? DEBUG \?THN7
ZERO? STR \?ELS6
?THN7: ZERO? STR /?CND9
PRINTC 91
?CND9: PRINTI "Closed."
CRLF
JUMP ?CND4
?ELS6: EQUAL? STR,1 /?CND4
PRINT STR
CRLF
?CND4: FIRST? OBJ >F \TRUE
?PRG22: ZERO? F /TRUE
SET 'N,F
NEXT? N >F /?KLU37
?KLU37: MOVE N,LIMBO-FWD
?PRG32: INC 'OFFS
GET TBL,OFFS
ZERO? STACK \?PRG32
PUT TBL,OFFS,N
JUMP ?PRG22
.FUNCT OBJS-SLIDE-OFF,OBJ,SLIDE=0,THERE,F,N
LOC OBJ >THERE
EQUAL? THERE,WINNER \?CND1
SET 'THERE,HERE
?CND1: FIRST? OBJ >F /?KLU22
?KLU22:
?PRG4: ZERO? F \?ELS8
JUMP ?REP5
?ELS8: SET 'N,F
NEXT? N >F /?KLU23
?KLU23: MOVE N,THERE
SET 'SLIDE,TRUE-VALUE
JUMP ?PRG4
?REP5: FIRST? OBJ >F /?KLU24
?KLU24: ZERO? SLIDE /FALSE
PRINTI "Everything on"
CALL2 HIM-HER-IT,OBJ
PRINTI " falls off."
CRLF
CRLF
RTRUE
.FUNCT NEWSPAPER-F
EQUAL? PRSA,V?OPEN \FALSE
PRINTR "You flip through the pages but find nothing readable."
.FUNCT CIGARETTE-F
EQUAL? PRSA,V?BUY \?ELS5
IN? MACHINE,HERE \FALSE
GETP PLAYER,P?SOUTH
GRTR? STACK,0 /?CND11
PRINTI "You dig in "
PRINTD POCKET
PRINTR " but find no cash."
?CND11: SET 'P-DOLLAR-FLAG,TRUE-VALUE
SET 'P-AMOUNT,1
CALL PERFORM,V?PUT-IN,INTNUM,MACHINE
RTRUE
?ELS5: EQUAL? PRSA,V?LAMP-ON,V?SMOKE \FALSE
PRINTR "You think it over and decide that this mission is dangerous enough already."
.FUNCT LIGHTER-F
EQUAL? PRSA,V?HOLD-UNDER \?ELS5
EQUAL? PRSO,LIGHTER \FALSE
CALL PERFORM,V?HEAT,PRSI,PRSO
RTRUE
?ELS5: EQUAL? PRSA,V?LAMP-OFF \?ELS12
PRINTR "It stays off by itself!"
?ELS12: EQUAL? PRSA,V?LAMP-ON \FALSE
PRINTR "The lighter spurts to life for a minute until you turn it off again."
.FUNCT FLOWER-F
FSET? FLOWER-1,NDESCBIT \?ELS5
CALL2 SEARCHING-FOR?,FLOWER-1
RSTACK
?ELS5: FSET? FLOWER-2,NDESCBIT \FALSE
CALL2 SEARCHING-FOR?,FLOWER-2
RSTACK
.FUNCT SEARCHING-FOR?,OBJ
EQUAL? PRSA,V?EXAMINE /?THN6
CALL2 SNEAKY-TAKE?,OBJ
ZERO? STACK /?ELS5
?THN6: PRINTI "You haven't found "
CALL2 PRINTA,OBJ
PRINTR " yet!"
?ELS5: IN? OBJ,HERE \FALSE
EQUAL? PRSA,V?FIND /?THN14
EQUAL? PRSA,V?SEARCH-FOR \FALSE
EQUAL? PRSI,OBJ \FALSE
?THN14: FCLEAR OBJ,NDESCBIT
FSET OBJ,TAKEBIT
MOVE OBJ,WINNER
PRINTI "You find "
CALL2 PRINTA,OBJ
PRINTR " in short order and take it."
.FUNCT BLOOD-SPOT-DESC,X
IN? BLOOD-SPOT,COMPARTMENT-START \FALSE
FSET? BLOOD-SPOT,TOUCHBIT \?ELS7
PRINTR "A spot of blood is still on the floor."
?ELS7: FSET BLOOD-SPOT,TOUCHBIT
PRINTR "Your sharp eyes notice a spot of blood on the floor."
.FUNCT FIND-SEARCH
EQUAL? PRSA,V?FIND \?ELS5
RETURN PRSO
?ELS5: EQUAL? PRSA,V?SEARCH-FOR \FALSE
RETURN PRSI
.FUNCT BLOOD-SPOT-F,OBJ
CALL1 FIND-SEARCH >OBJ
ZERO? OBJ /?ELS5
LOC OBJ
EQUAL? HERE,STACK \FALSE
FSET? OBJ,NDESCBIT \FALSE
FCLEAR OBJ,NDESCBIT
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?21
PRINTR " it in short order."
?ELS5: EQUAL? PRSA,V?TAKE \?ELS16
PRINTI "You can't pick"
CALL2 HIM-HER-IT,PRSO
PRINTR " up with your bare hands!"
?ELS16: EQUAL? PRSA,V?BRUSH,V?TAKE-WITH \FALSE
EQUAL? PRSI,SPY-LIST /?THN26
ZERO? PRSI \FALSE
IN? SPY-LIST,WINNER \FALSE
?THN26: MOVE PRSO,SPY-LIST
FCLEAR PRSO,NDESCBIT
PRINTR "Okay."
.FUNCT KNIFE-F
CALL KNIFE-NAPKIN-F,KNIFE,COOK
RSTACK
.FUNCT KNIFE-NAPKIN-F,OBJ,PER
FSET? OBJ,NDESCBIT \FALSE
IN? PER,HERE \?ELS10
CALL2 BRIBED?,PER
ZERO? STACK \?ELS10
FCLEAR PER,TOUCHBIT
PUTP PER,P?LDESC,1
CALL2 START-SENTENCE,PER
PRINTI " says, "
CALL1 PRODUCE-GIBBERISH
RSTACK
?ELS10: CALL2 SEARCHING-FOR?,OBJ
RSTACK
.FUNCT NAPKIN-F
CALL KNIFE-NAPKIN-F,NAPKIN,WAITER
RSTACK
.FUNCT SNEAKY-TAKE?,OBJ
EQUAL? PRSO,OBJ \?ELS5
EQUAL? PRSA,V?TAKE /TRUE
GETB P-SYNTAX,P-SLOC1
BTST STACK,STAKE /TRUE
?ELS5: EQUAL? PRSI,OBJ \FALSE
GETB P-SYNTAX,P-SLOC2
BTST STACK,STAKE /TRUE
RFALSE
.ENDI

1239
things.zil Normal file

File diff suppressed because it is too large Load Diff

2271
train.cmp Normal file

File diff suppressed because it is too large Load Diff

2263
train.zap Normal file

File diff suppressed because it is too large Load Diff

3115
train.zil Normal file

File diff suppressed because it is too large Load Diff

5412
verbs.cmp Normal file

File diff suppressed because it is too large Load Diff

4501
verbs.zap Normal file

File diff suppressed because it is too large Load Diff

3445
verbs.zil Normal file

File diff suppressed because it is too large Load Diff

14
zapch.ctl Normal file
View File

@ -0,0 +1,14 @@
@CONN PS:<SWG>
@TERM WIDTH 79
@DELETE *.ZAP
@UNDELE SPYDAT.ZAP.*
@DELETE *.RECORD
@EXPUNGE
@Z:ZILCH SPY
@DELETE SPYM.EXE.*
@Z:ZIL
=SPY
=
=<SAVE!- "SPYM.EXE" <>>
=<QUIT>
@Z:ZAP SPY.XZAP /R 17