seastalker/places.zap
historicalsource 7ef7f3e553 Final Revision
2019-04-13 22:35:09 -04:00

866 lines
20 KiB
Plaintext

.FUNCT DIR-PRINT,DIR,THE?=1,CNT=0
?PRG1: GET DIR-STRINGS,CNT
EQUAL? STACK,DIR \?CND3
ZERO? THE? /?CND6
PRINTI "the "
?CND6: ADD CNT,1
GET DIR-STRINGS,STACK
PRINT STACK
RTRUE
?CND3: INC 'CNT
JUMP ?PRG1
.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
GETB TBL,DEXITOBJ
EQUAL? DR,STACK \?PRG1
GETB TBL,REXIT
RETURN STACK
.FUNCT FIND-FLAG,RM,FLAG,EXCLUDED=0,O
FIRST? RM >O /?KLU12
?KLU12:
?PRG1: ZERO? O /FALSE
FSET? O,FLAG \?ELS7
EQUAL? O,EXCLUDED /?ELS7
RETURN O
?ELS7: NEXT? O >O /?KLU13
?KLU13: JUMP ?PRG1
.FUNCT META-LOC,OBJ,L
LOC OBJ >L
?PRG1: ZERO? L /FALSE
EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS \?ELS7
RETURN L
?ELS7: IN? OBJ,ROOMS \?ELS9
RETURN OBJ
?ELS9: SET 'OBJ,L
LOC OBJ >L
JUMP ?PRG1
.FUNCT IN-LAB-AREA?,RM
ZERO? SUB-IN-TANK /?ELS5
EQUAL? RM,SUB,CRAWL-SPACE /TRUE
?ELS5: EQUAL? RM,HALLWAY,LAB-STORAGE,OFFICE /TRUE
CALL IN-LAB?,RM
ZERO? STACK \TRUE
CALL IN-TANK-AREA?,RM
ZERO? STACK \TRUE
RFALSE
.FUNCT IN-LAB?,RM
EQUAL? RM,NORTH-WALL,EAST-WALL,SOUTH-WALL /TRUE
EQUAL? RM,WEST-WALL,CENTER-OF-LAB /TRUE
RFALSE
.FUNCT IN-TANK-AREA?,RM
EQUAL? RM,SOUTH-TANK-AREA,WEST-TANK-AREA,NORTH-TANK-AREA /TRUE
RFALSE
.FUNCT SHARON-PASSES-YOU?,L,?ORTMP
EQUAL? HERE,OFFICE /TRUE
EQUAL? HERE,HALLWAY /?THN8
EQUAL? HERE,LAB-STORAGE \?ELS7
FSET? STORAGE-DOOR,OPENBIT \?ELS7
?THN8: EQUAL? L,OFFICE /FALSE
RTRUE
?ELS7: EQUAL? HERE,LAB-STORAGE \?ELS15
EQUAL? L,LAB-STORAGE /TRUE
RFALSE
?ELS15: CALL IN-LAB?,HERE
ZERO? STACK /?ELS19
EQUAL? L,OFFICE,HALLWAY,LAB-STORAGE /FALSE
RTRUE
?ELS19: CALL IN-TANK-AREA?,HERE
ZERO? STACK /?ELS23
CALL IN-TANK-AREA?,L
POP '?ORTMP
ZERO? ?ORTMP /?ORP27
RETURN ?ORTMP
?ORP27: EQUAL? L,SUB,CRAWL-SPACE /TRUE
RFALSE
?ELS23: EQUAL? HERE,SUB \?ELS29
EQUAL? L,SUB,CRAWL-SPACE /TRUE
RFALSE
?ELS29: EQUAL? L,CRAWL-SPACE /TRUE
RFALSE
.FUNCT RESEARCH-LAB
PRINTI " the "
CALL PRINT-NAME,LAST-NAME
PRINTI " Research Lab"
RTRUE
.FUNCT NORTH-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD NORTH-WALL
PRINTI " of "
PRINTD YOUR-LABORATORY
PRINTI ". A "
PRINTD COMPUTESTOR
PRINTR " stands here to help test your inventions."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT COMPUTESTOR-F
EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-ON,V?LOOK-INSIDE /FALSE
EQUAL? PRSA,V?LOOK-BEHIND,V?WALK-TO,V?TAKE /FALSE
EQUAL? PRSA,V?EXAMINE \?ELS9
PRINTI "The "
PRINTD COMPUTESTOR
PRINTI " is o"
FSET? COMPUTESTOR,ONBIT \?ELS16
PUSH STR?40
JUMP ?CND12
?ELS16: PUSH STR?41
?CND12: PRINT STACK
PRINTR "."
?ELS9: EQUAL? PRSA,V?LAMP-ON \?ELS20
FSET? COMPUTESTOR,ONBIT /FALSE
FSET COMPUTESTOR,ONBIT
PRINTI "The "
PRINTD COMPUTESTOR
PRINTR " is ready for questions."
?ELS20: CALL REMOTE-VERB?
ZERO? STACK /?ELS29
EQUAL? PRSA,V?ASK-ABOUT \FALSE
EQUAL? PRSO,COMPUTESTOR \FALSE
?ELS29: FSET? COMPUTESTOR,ONBIT /?ELS35
PRINTI "The "
PRINTD COMPUTESTOR
PRINTR " is off!"
?ELS35: EQUAL? PRSA,V?USE,V?ASK \?ELS39
FSET? VIDEOPHONE,MUNGBIT \?ELS44
CALL PERFORM,V?ASK-ABOUT,COMPUTESTOR,VIDEOPHONE
RTRUE
?ELS44: IN? CATALYST-CAPSULE,REACTOR /FALSE
CALL PERFORM,V?ASK-ABOUT,COMPUTESTOR,GLOBAL-SUB
RTRUE
?ELS39: EQUAL? PRSA,V?ASK-ABOUT \FALSE
EQUAL? PRSO,COMPUTESTOR \FALSE
EQUAL? PRSI,CIRCUIT-BREAKER \?ELS57
FSET? CIRCUIT-BREAKER,OPENBIT \?ELS57
PRINTI """A "
PRINTD CIRCUIT-BREAKER
PRINTR " is open."""
?ELS57: EQUAL? PRSI,VIDEOPHONE \?ELS63
FSET? VIDEOPHONE,MUNGBIT \?ELS63
SET 'TIP-SAYS-1,32
SET 'TIP-SAYS-2,VIDEOPHONE
CALL QUEUE,I-TIP-SAYS,3
PUT STACK,0,1
PRINTI """Symptoms: no picture, no sound.
Possible causes:
1) Failure of the "
PRINTD VIDEOPHONE-TRANSMITTER
PRINTI " at source.
2) A short in the "
PRINTD VIDEOPHONE-CABLE
PRINTI " linking "
PRINTD VIDEOPHONE-TRANSMITTER
PRINTI " to"
CALL RESEARCH-LAB
PRINTI ", if signal is coming from "
PRINTD AQUADOME
PRINTI ".
3) Sunspot interference or "
PRINTD VIDEOPHONE-SATELLITE
PRINTI " malfunction if "
PRINTD VIDEOPHONE-TRANSMITTER
PRINTI " is at earth's surface.
4) Failure of the video receiver.
5) Overload in the "
PRINTD ELECTRICAL-CONTROL-PANEL
PRINTI " ("
PRINTD CIRCUIT-BREAKER
PRINTI " popped).
6) Sabotage ("
PRINTD CIRCUIT-BREAKER
PRINTR " open)."""
?ELS63: EQUAL? PRSI,VIDEOPHONE-TRANSMITTER \?ELS71
FSET? VIDEOPHONE,MUNGBIT \?ELS71
PRINTI "Impossible. It's located "
PRINTD UNDERWATER
PRINTI " at the "
PRINTD AQUADOME
PRINTI ", beyond your control. Right now you have no communication with the "
PRINTD AQUADOME
PRINTR "."
?ELS71: EQUAL? PRSI,VIDEOPHONE-CABLE \?ELS77
PRINTR "This can be done only by submarine."
?ELS77: EQUAL? PRSI,VIDEOPHONE-SATELLITE \?ELS81
PRINTI "You're goofing off, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". Video signals from the "
PRINTD AQUADOME
PRINTI " to"
CALL RESEARCH-LAB
PRINTI " are NOT relayed by a space "
PRINTD VIDEOPHONE-SATELLITE
PRINTR "."
?ELS81: EQUAL? PRSI,VIDEOPHONE-RECEIVER \?ELS87
PRINTI "You can do this by pushing the "
PRINTD TEST-BUTTON
PRINTI " on the "
PRINTD VIDEOPHONE
PRINTR "."
?ELS87: EQUAL? PRSI,REACTOR,GLOBAL-SUB \?ELS91
IN? CATALYST-CAPSULE,REACTOR /?ELS91
PRINTI """Symptom: "
PRINTD ENGINE
PRINTI " won't start.
Possible causes:
1) The "
PRINTD CATALYST-CAPSULE
PRINTI " is not inserted in the "
PRINTD REACTOR
PRINTI ".
2) The "
PRINTD REACTOR
PRINTI " is not turned on.
3) The "
PRINTD TEST-TANK
PRINTR " is not filled."""
?ELS91: PRINTI """This device is designed only to troubleshoot operating problems.""
(Maybe you can find information about"
CALL THE-PRSI-PRINT
PRINTR " in your SEASTALKER package.)"
.FUNCT VIDEOPHONE-TEST-F
EQUAL? PRSA,V?ANALYZE \FALSE
CALL PERFORM,V?ASK-ABOUT,COMPUTESTOR,PRSO
RTRUE
.FUNCT EAST-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD EAST-WALL
PRINTI " of "
PRINTD YOUR-LABORATORY
PRINTI ". A doorway leads out through a "
PRINTD HALLWAY
PRINTI " to the office of your "
PRINTD LAB-ASSISTANT
PRINTI ", "
PRINTD GLOBAL-SHARON
PRINTI ". A "
PRINTD MICROWAVE-SECURITY-SCANNER
PRINTI " stands against the wall. An "
PRINTD INTERCOM
PRINTI " sits on the "
PRINTD DESK
PRINTR "."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT VIDEOPHONE-WORKING
ZERO? BREAKER-JUST-FIXED /FALSE
FSET? CIRCUIT-BREAKER,OPENBIT /FALSE
SET 'BREAKER-JUST-FIXED,FALSE-VALUE
PRINTI "As you re-enter the lab, "
CALL TIP-SAYS
PRINTI "Look, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! The "
PRINTD VIDEOPHONE
PRINTR "'s working again! There's a normal test pattern on the screen!"""
.FUNCT MICROWAVE-SECURITY-SCANNER-F
EQUAL? PRSA,V?LAMP-ON \FALSE
PRINTR "No beep occurs. Scanner displays: ""NO INTRUDER PRESENT ON GROUNDS."""
.FUNCT DESK-F
CALL COMMON-DESK-F,DESK
RSTACK
.FUNCT COMMON-DESK-F,OBJ
EQUAL? PRSA,V?OPEN \?ELS5
PRINTR "It has no drawers."
?ELS5: EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
EQUAL? PRSO,OBJ \FALSE
PRINTI "An "
PRINTD INTERCOM
PRINTI " is on the desk"
FIRST? OBJ \?CND14
PRINTI ", as well as "
CALL PRINT-CONTENTS,OBJ
?CND14: PRINTR "."
.FUNCT GENERIC-DESK-F,OBJ
CALL IN-LAB?,HERE
ZERO? STACK /?ELS5
RETURN DESK
?ELS5: EQUAL? HERE,OFFICE \?ELS7
RETURN KEMP-DESK
?ELS7: ZERO? SUB-IN-DOME /FALSE
RETURN BLY-DESK
.FUNCT HALLWAY-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in a "
PRINTD HALLWAY
PRINTI ", with "
PRINTD YOUR-LABORATORY
PRINTI " to the west, a "
PRINTD LAB-STORAGE
PRINTI " to the south, and "
PRINTD OFFICE
PRINTI " to the east. An "
PRINTD ELECTRICAL-CONTROL-PANEL
PRINTR " fills most of the north wall."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
FSET? CIRCUIT-BREAKER,MUNGBIT \FALSE
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,FALSE-VALUE
RSTACK
.FUNCT ELECTRICAL-CONTROL-PANEL-F
EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS5
FSET? CIRCUIT-BREAKER,OPENBIT \?ELS5
CALL THIS-IS-IT,CIRCUIT-BREAKER
PRINTI "A "
PRINTD CIRCUIT-BREAKER
PRINTI " on the "
PRINTD ELECTRICAL-CONTROL-PANEL
PRINTI " is open. This "
PRINTD CIRCUIT-BREAKER
PRINTI " controls the "
PRINTD POWER-SUPPLY
PRINTI " to the "
PRINTD VIDEOPHONE
PRINTI " and other equipment in the private "
PRINTD VIDEOPHONE
PRINTI " network."
CRLF
IN? TIP,HERE \TRUE
CALL TIP-SAYS
PRINTR "How did that happen? You didn't overload the circuit."""
?ELS5: EQUAL? PRSA,V?OPEN \FALSE
PRINTI "You don't need to open the "
PRINTD ELECTRICAL-CONTROL-PANEL
PRINTR "."
.FUNCT CIRCUIT-BREAKER-F,V
EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS5
FSET? PRSO,OPENBIT \?ELS5
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,FALSE-VALUE
RSTACK
?ELS5: EQUAL? PRSA,V?LAMP-ON,V?TURN,V?MOVE /?THN10
EQUAL? PRSA,V?FIX,V?PUSH,V?CLOSE \?ELS9
?THN10: FSET? PRSO,OPENBIT \?ELS16
FSET PRSO,NDESCBIT
CALL OKAY,CIRCUIT-BREAKER,STR?17
FSET? PRSO,MUNGBIT \TRUE
SET 'BREAKER-JUST-FIXED,TRUE-VALUE
FCLEAR PRSO,MUNGBIT
FCLEAR VIDEOPHONE,MUNGBIT
FSET VIDEOPHONE,ONBIT
CALL SCORE-OBJ,CIRCUIT-BREAKER
RTRUE
?ELS16: CALL ALREADY,CIRCUIT-BREAKER,STR?17
RSTACK
?ELS9: EQUAL? PRSA,V?LAMP-OFF,V?OPEN \FALSE
FSET? PRSO,OPENBIT \?ELS28
CALL ALREADY,CIRCUIT-BREAKER,STR?21
RSTACK
?ELS28: PRINTR "You shouldn't do that."
.FUNCT GENERIC-STORAGE-ROOM-F,OBJ
ZERO? SUB-IN-DOME /?ELS5
RETURN DOME-STORAGE
?ELS5: ZERO? SUB-IN-TANK /FALSE
RETURN LAB-STORAGE
.FUNCT GENERIC-OFFICE-F,OBJ
ZERO? SUB-IN-DOME /?ELS5
RETURN BLY-OFFICE
?ELS5: ZERO? SUB-IN-TANK /FALSE
RETURN OFFICE
.FUNCT OFFICE-F,ARG=0
EQUAL? ARG,M-LOOK \?ELS5
PRINTI "You're in the office of your "
PRINTD LAB-ASSISTANT
PRINTI ", "
PRINTD GLOBAL-SHARON
PRINTI ". There is a desk and chair here, and the "
PRINTD OFFICE-DOOR
PRINTI " leading out to the parking lot. To the west, a "
PRINTD HALLWAY
PRINTI " leads back to "
PRINTD YOUR-LABORATORY
PRINTR "."
?ELS5: IN? SHARON,OFFICE \?ELS9
EQUAL? ARG,M-BEG \?ELS9
CALL EXIT-VERB?
ZERO? STACK /?ELS9
FSET SHARON,NDESCBIT
FSET FILE-DRAWER,NDESCBIT
FSET PAPERS,NDESCBIT
RFALSE
?ELS9: EQUAL? ARG,M-ENTER \FALSE
FCLEAR SHARON,NDESCBIT
FCLEAR FILE-DRAWER,NDESCBIT
FCLEAR PAPERS,NDESCBIT
IN? SHARON,OFFICE \FALSE
CALL THIS-IS-IT,SHARON
CALL THIS-IS-IT,FILE-DRAWER
PRINTI "As you enter, Sharon is hastily going through the contents of an open "
PRINTD FILE-DRAWER
PRINTR ". She turns with a startled expression as you appear in the doorway. Her face is flushed and her manner seems slightly emotional."
.FUNCT OFFICE-DOOR-F
EQUAL? PRSA,V?OPEN \FALSE
PRINTR "There's nothing outside to help your mission!"
.FUNCT PAPERS-F,X
EQUAL? PRSA,V?LOOK-UP \?ELS5
EQUAL? PRSI,PAPERS,FILE-DRAWER \?ELS5
FSET? PRSO,PERSON \?ELS10
GETP LOCAL-SUB,P?TEXT
PRINT STACK
CRLF
JUMP ?CND8
?ELS10: PRINTI "There's no information in the drawer about that."
?CND8: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?CLOSE \?ELS18
IN? SHARON,OFFICE \?ELS18
PRINTI "Sharon stops you from closing it. ""Hey, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "! I can't do my job here if you interfere!"""
?ELS18: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?TAKE /?THN25
EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?EXAMINE \FALSE
?THN25: FSET? FILE-DRAWER,OPENBIT /?CND27
CALL TOO-BAD-BUT,FILE-DRAWER,STR?17
RTRUE
?CND27: FSET PAPERS,TOUCHBIT
PRINTI "You look "
EQUAL? P-ADVERB,W?CAREFULLY \?ELS34
PRINTI "more thoroughly through the drawer and still"
JUMP ?CND32
?ELS34: PRINTI "quickly through the drawer but"
?CND32: PRINTR " find nothing suspicious, so you decide to leave the papers alone."
.FUNCT KEMP-DESK-F
CALL COMMON-DESK-F,KEMP-DESK
RSTACK
.FUNCT SOUTH-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD SOUTH-WALL
PRINTI " of "
PRINTD YOUR-LABORATORY
PRINTI ", next to shelves full of chemical and electronic supplies. A door leads south to the "
PRINTD TEST-TANK
PRINTR "."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT CHEMICAL-SUPPLY-SHELVES-F
EQUAL? PRSA,V?PUT /?THN6
EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
?THN6: FCLEAR CHEMICALS,NDESCBIT
RFALSE
.FUNCT ELECTRONIC-SUPPLY-SHELVES-F
EQUAL? PRSA,V?PUT /?THN6
EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
?THN6: FCLEAR ELECTRONICS,NDESCBIT
RFALSE
.FUNCT WEST-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD WEST-WALL
PRINTI " of "
PRINTD YOUR-LABORATORY
PRINTR ", next to a shelf full of mechanical supplies."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT MECHANICAL-SUPPLY-SHELVES-F
EQUAL? PRSA,V?PUT /?THN6
EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
?THN6: FCLEAR MECHANICALS,NDESCBIT
RFALSE
.FUNCT GENERIC-CENTER-F,OBJ
ZERO? SUB-IN-TANK /?ELS5
RETURN CENTER-OF-LAB
?ELS5: ZERO? SUB-IN-DOME /FALSE
RETURN CENTER-OF-DOME
.FUNCT CENTER-OF-LAB-F,RARG=0
EQUAL? RARG,M-BEG \?ELS5
LOC MICROPHONE
EQUAL? STACK,WINNER \?ELS5
CALL EXIT-VERB?
ZERO? STACK /?ELS5
CALL THIS-IS-IT,MICROPHONE
CALL HE-SHE-IT,WINNER,TRUE-VALUE
PRINTI " can't walk away while "
CALL HE-SHE-IT,WINNER,FALSE-VALUE,STR?113
PRINTI " holding the "
PRINTD MICROPHONE
PRINTR "!"
?ELS5: EQUAL? RARG,M-LOOK \?ELS13
PRINTI "You're at your workbench in the center of "
PRINTD YOUR-LABORATORY
PRINTI ", a small part of"
CALL RESEARCH-LAB
PRINTI " in the town of Frobton. The "
PRINTD VIDEOPHONE
PRINTI " screen looms overhead"
ZERO? ALARM-RINGING /?CND18
PRINTI ", with its "
PRINTD ALARM
PRINTI " ringing"
?CND18: PRINTR "."
?ELS13: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT WORKBENCH-F
EQUAL? PRSA,V?PUT,V?LOOK-ON,V?LOOK-INSIDE /?THN6
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
?THN6: FCLEAR SUB-PLANS,NDESCBIT
RFALSE
.FUNCT SCREENPLAY
PRINTR "Screenplay by Jim Lawrence"
.FUNCT SUB-PLANS-F,X
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
PRINTI "Written in one corner is the legend:
"
RANDOM 2 >X
EQUAL? X,1 \?CND8
CALL SCREENPLAY
?CND8: PRINTI " Directed by Stu Galley
"
EQUAL? X,1 /?CND13
CALL SCREENPLAY
?CND13: CRLF
CALL V-VERSION
RSTACK
.FUNCT GENERIC-MICROPHONE-F,OBJ
ZERO? SUB-IN-TANK /?ELS5
RETURN MICROPHONE
?ELS5: ZERO? SUB-IN-DOME /FALSE
RETURN MICROPHONE-DOME
.FUNCT MICROPHONE-F,DOME?=0
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The "
PRINTD MICROPHONE
PRINTI " is connected to the "
PRINTD VIDEOPHONE
PRINTI " by a coiled cord. At the moment, it is turned o"
ZERO? DOME? /?ELS16
FSET? MICROPHONE-DOME,ONBIT /?THN13
?ELS16: ZERO? DOME? \?ELS12
FSET? MICROPHONE,ONBIT \?ELS12
?THN13: PRINTR "n."
?ELS12: PRINTR "ff."
?ELS5: EQUAL? PRSA,V?LAMP-OFF /?THN29
CALL DIVESTMENT?,MICROPHONE
ZERO? STACK \?THN29
CALL DIVESTMENT?,MICROPHONE-DOME
ZERO? STACK /?ELS26
?THN29: EQUAL? PRSO,MICROPHONE-DOME,MICROPHONE \?ELS26
EQUAL? VIDEOPHONE,REMOTE-PERSON-ON \?ELS26
PRINTI "You'd better say ""Good-bye"" to "
PRINTD REMOTE-PERSON
PRINTR " first."
?ELS26: EQUAL? PRSA,V?SAY-INTO,V?REPLY \?ELS34
FSET? VIDEOPHONE,ONBIT /?ELS34
PRINTI "That won't do any good while the "
PRINTD VIDEOPHONE
PRINTR " is off."
?ELS34: EQUAL? PRSA,V?SAY-INTO \?ELS40
EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?ELS45
PRINTD REMOTE-PERSON
PRINTR " nods at you."
?ELS45: ZERO? WOMAN-ON-SCREEN /?ELS49
PRINTR "That won't do any good while the sound is fuzzy."
?ELS49: PRINTR "It's not clear whom you're talking to."
?ELS40: EQUAL? PRSA,V?LAMP-ON \FALSE
IN? MICROPHONE,PLAYER /?THN61
IN? MICROPHONE-DOME,PLAYER \FALSE
?THN61: ZERO? DOME? /?ELS69
FSET? MICROPHONE-DOME,ONBIT /?THN66
?ELS69: ZERO? DOME? \?CND63
FSET? MICROPHONE,ONBIT \?CND63
?THN66: CALL ALREADY,MICROPHONE,STR?42
RTRUE
?CND63: ZERO? DOME? /?ELS76
CALL OKAY,MICROPHONE-DOME,STR?42
RSTACK
?ELS76: CALL OKAY,MICROPHONE,STR?42
RSTACK
.FUNCT TECHNICIAN-F
EQUAL? PRSA,V?$CALL /?THN6
EQUAL? PRSA,V?TAKE,V?PHONE,V?FIND \FALSE
?THN6: PRINTI "How can you do that? By telepathy or carrier pigeon? "
IN? SHARON,OFFICE \?CND10
PRINTI "Seriously, your "
PRINTD LAB-ASSISTANT
PRINTI ", "
PRINTD SHARON
PRINTI ", is in her office, which is through a doorway to the east. Or, you could summon her by the "
PRINTD INTERCOM
PRINTI " on your desk."
?CND10: CRLF
RTRUE
.FUNCT GANGPLANK-F
EQUAL? PRSA,V?CLIMB-ON,V?CLIMB-DOWN,V?BOARD \FALSE
CALL DO-WALK,P?SOUTH
RTRUE
.FUNCT GENERIC-TANK-CONTROL-GEAR-F,OBJ
RETURN TANK-CONTROL-GEAR-1
.FUNCT GENERIC-TANK-AREA-F,OBJ
RETURN NORTH-TANK-AREA
.FUNCT TANK-AREA-F,RARG=0
EQUAL? RARG,M-LOOK \FALSE
USL
FSET NORTH-TANK-AREA,TOUCHBIT
FSET WEST-TANK-AREA,TOUCHBIT
FSET SOUTH-TANK-AREA,TOUCHBIT
EQUAL? HERE,NORTH-TANK-AREA \?ELS8
PRINTI "You're at a temporary runway or gangplank that leads from the walkway to the "
PRINTD SUB-DOOR
PRINTI " of the "
PRINTD GLOBAL-SUB
PRINTI ". "
CALL CHECK-DOOR,SUB-DOOR
JUMP ?CND6
?ELS8: EQUAL? HERE,WEST-TANK-AREA \?CND6
PRINTI "You're at a "
PRINTD WORK-COUNTER
PRINTI ", next to the "
PRINTD TANK-CONTROL-GEAR-1
PRINTI " used to operate the "
PRINTD TEST-TANK
PRINTI ".
"
?CND6: PRINTI "The test tank (which is now "
ZERO? TEST-TANK-FULL /?ELS19
PRINTI "filled with "
JUMP ?CND17
?ELS19: PRINTI "empty of "
?CND17: PRINTD GLOBAL-WATER
PRINTI ") is located in a large work room, just south of "
PRINTD YOUR-LABORATORY
PRINTI ", with concrete-block walls on three sides and a high metal roof. Most of its floor is dug out and lined with steel, to form the huge tank used for developing and testing "
PRINTD UNDERWATER
PRINTR " gear and the pilot models of your submarine craft.
There's a walkway around the tank on three sides -- north, west and south. On the east side, a steel gate forms the wall of the room."
.FUNCT FRESH-AIR?,RM,P,L,TBL,O
ZERO? DOME-AIR-BAD? /?CND1
ZERO? SUB-IN-DOME /?CND1
PRINTR "It's impossible to tell that way whether the air is good."
?CND1: SET 'P,0
?PRG8: NEXTP HERE,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /?PRG8
GETPT HERE,P >TBL
PTSIZE TBL >L
EQUAL? L,DEXIT \?PRG8
GETB TBL,DEXITOBJ >O
FSET? O,OPENBIT \?PRG8
PRINTI "There's a pleasant breeze coming through the "
PRINTD O
PRINTR "."
.FUNCT CORRIDOR-LOOK,ITM=0,C,Z,COR,VAL,FOUND=0
GETP HERE,P?CORRIDOR >C
ZERO? C /FALSE
?PRG6: SUB C,8192 >Z
LESS? Z,0 /?ELS10
SET 'COR,COR-20000
JUMP ?CND8
?ELS10: SUB C,4096 >Z
LESS? Z,0 /?ELS12
SET 'COR,COR-10000
JUMP ?CND8
?ELS12: SUB C,2048 >Z
LESS? Z,0 /?ELS14
SET 'COR,COR-4000
JUMP ?CND8
?ELS14: SUB C,1024 >Z
LESS? Z,0 /?ELS16
SET 'COR,COR-2000
JUMP ?CND8
?ELS16: SUB C,512 >Z
LESS? Z,0 /?ELS18
SET 'COR,COR-1000
JUMP ?CND8
?ELS18: SUB C,256 >Z
LESS? Z,0 /?ELS20
SET 'COR,COR-400
JUMP ?CND8
?ELS20: SUB C,128 >Z
LESS? Z,0 /?ELS22
SET 'COR,COR-200
JUMP ?CND8
?ELS22: SUB C,64 >Z
LESS? Z,0 /?ELS24
SET 'COR,COR-64
JUMP ?CND8
?ELS24: SUB C,32 >Z
LESS? Z,0 /?ELS26
SET 'COR,COR-32
JUMP ?CND8
?ELS26: SUB C,16 >Z
LESS? Z,0 /?ELS28
SET 'COR,COR-16
JUMP ?CND8
?ELS28: SUB C,8 >Z
LESS? Z,0 /?ELS30
SET 'COR,COR-8
JUMP ?CND8
?ELS30: SUB C,4 >Z
LESS? Z,0 /?ELS32
SET 'COR,COR-4
JUMP ?CND8
?ELS32: SUB C,2 >Z
LESS? Z,0 /?ELS34
SET 'COR,COR-2
JUMP ?CND8
?ELS34: SUB C,1 >Z
LESS? Z,0 /?REP7
SET 'COR,COR-1
?CND8: CALL CORRIDOR-CHECK,COR,ITM >VAL
ZERO? FOUND \?CND39
SET 'FOUND,VAL
?CND39: SET 'C,Z
JUMP ?PRG6
?REP7: RETURN FOUND
.FUNCT CORRIDOR-CHECK,COR,ITM,CNT=2,PAST=0,FOUND=0,RM,OBJ
?PRG1: GET COR,CNT >RM
ZERO? RM /FALSE
EQUAL? RM,HERE \?ELS7
SET 'PAST,1
JUMP ?CND3
?ELS7: FIRST? RM >OBJ \?CND3
?PRG10: ZERO? ITM /?ELS14
EQUAL? OBJ,ITM \?CND12
GET COR,PAST >FOUND
JUMP ?REP11
?ELS14: FSET? OBJ,PERSON \?CND12
FSET? OBJ,INVISIBLE /?CND12
FSET? OBJ,NDESCBIT /?CND12
CALL IS-CREW?,OBJ
ZERO? STACK /?ELS25
CALL CREW-5-TOGETHER?
ZERO? STACK /?ELS25
FSET? BLY,MUNGBIT /?ELS25
EQUAL? OBJ,LOWELL \?CND23
PRINTI "The five "
PRINTD CREW
PRINTI " members are off to "
GET COR,PAST
CALL DIR-PRINT,STACK
PRINTI "."
CRLF
JUMP ?CND23
?ELS25: FSET? OBJ,TOUCHBIT /?ELS36
PRINTI "Someone is off to "
GET COR,PAST
CALL DIR-PRINT,STACK
PRINTI "."
CRLF
JUMP ?CND12
?ELS36: PRINTD OBJ
PRINTI " is off to "
GET COR,PAST
CALL DIR-PRINT,STACK
PRINTI "."
CRLF
?CND23:
?CND12: NEXT? OBJ >OBJ /?KLU54
?KLU54: ZERO? OBJ \?PRG10
?REP11: ZERO? FOUND /?CND3
RETURN FOUND
?CND3: INC 'CNT
JUMP ?PRG1
.ENDI