.FUNCT DO-INSTEAD-OF,OBJ1,OBJ2 EQUAL? PRSI,OBJ2 \?ELS5 CALL PERFORM,PRSA,PRSO,OBJ1 RSTACK ?ELS5: EQUAL? PRSO,OBJ2 \?ELS7 CALL PERFORM,PRSA,OBJ1,PRSI RSTACK ?ELS7: CALL 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: PRINTR """I'm not sure what you're talking about.""" .FUNCT FLOOR-F EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,FLOOR \?ELS5 CALL PERFORM,V?DROP,PRSO RTRUE ?ELS5: EQUAL? PRSA,V?WALK-TO,V?THROUGH \?ELS9 ZERO? SUB-IN-TANK /FALSE CALL PERFORM,PRSA,TEST-TANK RTRUE ?ELS9: EQUAL? PRSA,V?LOOK-ON,V?SEARCH,V?EXAMINE \FALSE PRINTR "You don't find anything new there." .FUNCT GLOBAL-SNARK-F EQUAL? PRSA,V?FIND,V?EXAMINE \?ELS5 ZERO? SNARK-ATTACK-COUNT \TRUE ?ELS5: EQUAL? PRSA,V?FIND \FALSE ZERO? MONSTER-GONE \FALSE PRINTI "It's attacking the " PRINTD AQUADOME PRINTR "!" .FUNCT MIKE-3-F,OBJ PRINTI "The " PRINTD OBJ PRINTI " is mounted on " CALL PRINTA,CLAW PRINTR "." .FUNCT CANT-SEND PRINTR "You can't send it. Only you can pilot it there." .FUNCT LOCAL-SUB-F EQUAL? PRSA,V?TURN,V?PUT \?ELS5 CALL MORE-SPECIFIC RSTACK ?ELS5: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \?ELS7 CALL DO-INSTEAD-OF,SUB,LOCAL-SUB RTRUE ?ELS7: EQUAL? PRSA,V?EXAMINE \?ELS9 GET ON-SUB,0 ZERO? STACK \?CND10 GET ON-SUB,1 ZERO? STACK \?CND10 GETP LOCAL-SUB,P?TEXT PRINT STACK CRLF RTRUE ?CND10: GET ON-SUB,0 ZERO? STACK /?CND17 GET ON-SUB,0 CALL MIKE-3-F,STACK ?CND17: GET ON-SUB,1 ZERO? STACK /TRUE GET ON-SUB,1 CALL MIKE-3-F,STACK RTRUE ?ELS9: EQUAL? PRSA,V?FIND \?ELS24 CALL INT,I-SEND-SUB PUT STACK,0,0 PRINTR "It's right here!" ?ELS24: EQUAL? PRSA,V?LOOK-BEHIND /?THN29 EQUAL? PRSA,V?LOOK-OUTSIDE \?ELS28 EQUAL? HERE,SUB \?ELS28 ?THN29: CALL PERFORM,V?LOOK-OUTSIDE,SUB-WINDOW RTRUE ?ELS28: EQUAL? PRSA,V?LOOK-INSIDE \?ELS34 EQUAL? HERE,SUB,CRAWL-SPACE \?ELS39 CALL PERFORM,V?LOOK RTRUE ?ELS39: PRINTR "You can't see much from here." ?ELS34: EQUAL? PRSA,V?SEND-TO,V?SEND-OUT,V?SEND \?ELS45 EQUAL? PRSO,LOCAL-SUB \?ELS45 CALL CANT-SEND RSTACK ?ELS45: EQUAL? PRSA,V?BOARD,V?THROUGH \?ELS49 EQUAL? HERE,SUB,CRAWL-SPACE \?ELS54 CALL ALREADY,WINNER,STR?117 RSTACK ?ELS54: EQUAL? HERE,AIRLOCK-WALL \?ELS56 CALL GOTO,AIRLOCK ZERO? STACK /FALSE CALL GOTO,SUB ZERO? STACK /TRUE EQUAL? WINNER,PLAYER /TRUE CALL OKAY RTRUE ?ELS56: EQUAL? HERE,WEST-TANK-AREA,SOUTH-TANK-AREA \?ELS68 GETP WEST-TANK-AREA,P?EAST PRINT STACK CRLF RTRUE ?ELS68: CALL DO-WALK,P?IN RTRUE ?ELS49: EQUAL? PRSA,V?RAISE,V?DROP,V?DISEMBARK \?ELS74 EQUAL? HERE,SUB,CRAWL-SPACE /?ELS79 PRINTR "You're not in it!" ?ELS79: EQUAL? PRSA,V?DROP \?ELS83 CALL DO-WALK,P?DOWN RTRUE ?ELS83: EQUAL? PRSA,V?RAISE \?ELS85 CALL DO-WALK,P?UP RTRUE ?ELS85: CALL DO-WALK,P?OUT RTRUE ?ELS74: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS89 EQUAL? HERE,CRAWL-SPACE,AIRLOCK-WALL /?ELS89 CALL PERFORM,PRSA,SUB-DOOR RTRUE ?ELS89: EQUAL? PRSA,V?ANALYZE \?ELS93 EQUAL? PRSI,DAMAGE,GLOBAL-SABOTAGE,FALSE-VALUE \?ELS93 PRINTI "You can do this by pushing the " PRINTD TEST-BUTTON EQUAL? HERE,SUB,CRAWL-SPACE /?CND98 PRINTI " on the " PRINTD CONTROLS PRINTI " inside" ?CND98: PRINTR "." ?ELS93: EQUAL? PRSA,V?LAMP-ON \?ELS106 EQUAL? HERE,SUB /?ELS111 CALL THIS-IS-IT,SUB PRINTI "You have to be in the " PRINTD SUB PRINTR " to start it." ?ELS111: FSET? REACTOR,ONBIT /?ELS115 CALL THIS-IS-IT,REACTOR PRINTR "The reactor is off!" ?ELS115: ZERO? SUB-IN-TANK /?ELS123 ZERO? TEST-TANK-FULL \?ELS123 CALL THIS-IS-IT,TEST-TANK ZERO? STACK \?THN120 ?ELS123: ZERO? SUB-IN-DOME /?ELS119 ZERO? AIRLOCK-FULL \?ELS119 CALL THIS-IS-IT,AIRLOCK ZERO? STACK /?ELS119 ?THN120: PRINTR "The tank is empty!" ?ELS119: ZERO? SUB-IN-TANK /?ELS133 FSET? TANK-GATE,OPENBIT /?ELS133 CALL THIS-IS-IT,TANK-GATE ZERO? STACK \?THN130 ?ELS133: ZERO? SUB-IN-DOME /?ELS129 FSET? AIRLOCK-HATCH,OPENBIT /?ELS129 CALL THIS-IS-IT,AIRLOCK-HATCH ZERO? STACK /?ELS129 ?THN130: PRINTR "The gate is closed!" ?ELS129: FSET? ENGINE,ONBIT /?ELS139 CALL THIS-IS-IT,ENGINE PRINTR "The engine is off!" ?ELS139: PRINTI "You can do this by setting the throttle to the speed you want (slow, medium, or fast) and by moving the " PRINTD JOYSTICK PRINTI " in the " PRINTD INTDIR PRINTR " you wish to go." ?ELS106: EQUAL? PRSA,V?STOP \FALSE EQUAL? HERE,SUB /?ELS152 CALL THIS-IS-IT,SUB PRINTI "You have to be in the " PRINTD SUB PRINTR " to stop it." ?ELS152: FSET? ENGINE,ONBIT /?ELS156 PRINTR "The engine is off!" ?ELS156: SET 'TARGET-DEPTH,SUB-DEPTH PRINT I-ASSUME PRINTI " close the " PRINTD THROTTLE PRINTI ".)" CRLF CALL PERFORM,V?CLOSE,THROTTLE RTRUE .FUNCT GLOBAL-SUB-2-F CALL DO-INSTEAD-OF,GLOBAL-SUB,GLOBAL-SUB-2 RTRUE .FUNCT GLOBAL-SUB-F ZERO? SUB-IN-TANK /?ELS5 ZERO? BLY-TOLD-PROBLEM \?THN8 EQUAL? PRSO,GLOBAL-BLY /?ELS5 ?THN8: EQUAL? PRSA,V?FIND /?THN10 EQUAL? PRSA,V?ASK-ABOUT \?ELS5 FSET? PRSO,PERSON \?ELS5 ?THN10: CALL INT,I-SEND-SUB PUT STACK,0,0 PRINTI "The only sub at" CALL RESEARCH-LAB PRINTI " is your new " PRINTD GLOBAL-SUB PRINTI ". It's located in the test tank just south of " PRINTD YOUR-LABORATORY PRINTR "." ?ELS5: EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?BOARD \?ELS19 CALL CHEERS? CALL GOTO,SUB ZERO? STACK /TRUE EQUAL? WINNER,PLAYER /TRUE CALL OKAY RTRUE ?ELS19: EQUAL? PRSA,V?PUT \?ELS26 FSET? PRSO,WEAPONBIT /FALSE CALL MORE-SPECIFIC RSTACK ?ELS26: EQUAL? PRSA,V?SEND-TO,V?SEND-OUT,V?SEND \FALSE EQUAL? PRSO,GLOBAL-SUB \FALSE CALL CANT-SEND RSTACK .FUNCT CONTROLS-F EQUAL? HERE,CENTER-OF-LAB \?ELS5 EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON,V?EXAMINE /?ELS5 CALL DO-INSTEAD-OF,VIDEOPHONE,CONTROLS RTRUE ?ELS5: EQUAL? HERE,WEST-TANK-AREA \FALSE EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "These are valves, gauges and control gear needed to make full use of the tank. Two important controls are the " PRINTD OPEN-GATE-BUTTON PRINTI " and the " PRINTD FILL-TANK-BUTTON PRINTI ". This gear can be operated by remote control from all " CALL PRINT-NAME,LAST-NAME PRINTR " subs." .FUNCT PHONE-ON,PER,PWHERE,ON SET 'REMOTE-PERSON,PER SET 'QCONTEXT,PER CALL THIS-IS-IT,PER SET 'REMOTE-PERSON-REMLOC,PWHERE SET 'REMOTE-PERSON-ON,ON SET 'REMOTE-PERSON-LOC,HERE SET 'QCONTEXT-ROOM,HERE MOVE REMOTE-PERSON,REMOTE-PERSON-LOC RTRUE .FUNCT PHONE-OFF ZERO? REMOTE-PERSON /FALSE MOVE REMOTE-PERSON,GLOBAL-OBJECTS SET 'REMOTE-PERSON,FALSE-VALUE SET 'REMOTE-PERSON-LOC,FALSE-VALUE SET 'REMOTE-PERSON-ON,FALSE-VALUE RETURN REMOTE-PERSON-ON .FUNCT INTERCOM-F,P,L EQUAL? PRSA,V?SAY-INTO,V?LAMP-ON \?ELS5 PRINTR "Try the command: CALL (someone) ON THE INTERCOM." ?ELS5: EQUAL? PRSA,V?PHONE \FALSE FSET? PRSO,PERSON \?ELS12 GETP PRSO,P?CHARACTER GET CHARACTER-TABLE,STACK >P LOC P >L JUMP ?CND10 ?ELS12: CALL HAR-HAR RTRUE ?CND10: EQUAL? L,EAST-WALL \?ELS21 EQUAL? HERE,OFFICE /?THN18 ?ELS21: EQUAL? HERE,EAST-WALL \?ELS17 EQUAL? L,OFFICE \?ELS17 ?THN18: EQUAL? P,SHARON \?CND24 IN? SHARON,OFFICE \?CND24 FCLEAR SHARON,NDESCBIT FCLEAR FILE-DRAWER,NDESCBIT FCLEAR PAPERS,NDESCBIT ?CND24: MOVE P,HERE PRINTI "Here " JUMP ?CND15 ?ELS17: PRINTI "There's no " PRINTD INTERCOM PRINTI " line to where " ?CND15: CALL HE-SHE-IT,P PRINTR " is." .FUNCT A-O-K PRINTR "All systems A-O-K." .FUNCT TEST-BUTTON-F EQUAL? PRSA,V?LAMP-ON /?THN6 EQUAL? PRSA,V?LAMP-OFF,V?TURN,V?PUSH \FALSE ?THN6: EQUAL? HERE,CENTER-OF-LAB \?ELS12 FSET? VIDEOPHONE,MUNGBIT \?ELS15 CALL TELL-HINT,83,POWER-SUPPLY,FALSE-VALUE RTRUE ?ELS15: EQUAL? P-XADJN,W?TEST \?ELS17 CALL A-O-K RTRUE ?ELS17: IN? MICROPHONE,PLAYER \?ELS19 EQUAL? PRSA,V?LAMP-ON,V?LAMP-OFF \?ELS22 CALL PERFORM,PRSA,MICROPHONE RTRUE ?ELS22: FSET? MICROPHONE,ONBIT \?ELS24 CALL PERFORM,V?LAMP-OFF,MICROPHONE RTRUE ?ELS24: CALL PERFORM,V?LAMP-ON,MICROPHONE RTRUE ?ELS19: EQUAL? PRSA,V?LAMP-OFF \?ELS28 CALL PERFORM,V?LAMP-OFF,VIDEOPHONE RTRUE ?ELS28: CALL PERFORM,V?LAMP-ON,VIDEOPHONE RTRUE ?ELS12: EQUAL? HERE,SUB,CRAWL-SPACE \?ELS32 ZERO? TEST-BUTTON-READOUT /FALSE PRINTI "Readout display says: " EQUAL? TEST-BUTTON-READOUT,TEST-BUTTON-NORMAL \?ELS43 CALL A-O-K RTRUE ?ELS43: EQUAL? TEST-BUTTON-READOUT,GATE-CRASHED-MSG \?ELS45 PRINTI "No damage. Hull still watertight." JUMP ?CND41 ?ELS45: EQUAL? TEST-BUTTON-READOUT,REGULATOR-MSG \?ELS49 SET 'REGULATOR-MSG-SEEN,TRUE-VALUE PRINTI "Lasers in operational computers are over-charging. To correct, adjust " PRINTD VOLTAGE-REGULATOR PRINTI ". WARNING: " PRINTD VOLTAGE-REGULATOR PRINTI " is reachable only from " PRINTD CRAWL-SPACE PRINTI ", behind the " PRINTD ENGINE-ACCESS-HATCH PRINTI ". This is a hazardous operation at sea!" JUMP ?CND41 ?ELS49: EQUAL? TEST-BUTTON-READOUT,TEST-BUTTON-POD \?ELS53 PRINTD ESCAPE-POD-UNIT PRINTI " is not properly connected." JUMP ?CND41 ?ELS53: EQUAL? TEST-BUTTON-READOUT,CLAW-MUNGED-MSG \?CND41 PRINTI "The " PRINTD CLAW PRINTI " is damaged." ?CND41: CRLF RTRUE ?ELS32: EQUAL? P-XADJN,W?TEST \?ELS61 CALL A-O-K RSTACK ?ELS61: EQUAL? HERE,EAST-WALL \?ELS63 EQUAL? PRSA,V?LAMP-OFF \?ELS66 CALL PERFORM,V?LAMP-OFF,MICROWAVE-SECURITY-SCANNER RTRUE ?ELS66: CALL PERFORM,V?LAMP-ON,MICROWAVE-SECURITY-SCANNER RTRUE ?ELS63: EQUAL? HERE,NORTH-WALL \FALSE EQUAL? PRSA,V?LAMP-OFF \?ELS73 CALL PERFORM,V?LAMP-OFF,COMPUTESTOR RTRUE ?ELS73: CALL PERFORM,V?LAMP-ON,COMPUTESTOR RTRUE .FUNCT GLOBAL-SONAR-F EQUAL? HERE,SUB,CRAWL-SPACE \?ELS5 CALL DO-INSTEAD-OF,SONARSCOPE,GLOBAL-SONAR RTRUE ?ELS5: ZERO? SUB-IN-DOME /?ELS7 CALL DO-INSTEAD-OF,SONAR-EQUIPMENT,GLOBAL-SONAR RTRUE ?ELS7: CALL REMOTE-VERB? ZERO? STACK \FALSE CALL NOT-HERE,GLOBAL-SONAR RSTACK .FUNCT ALARM-F EQUAL? PRSA,V?STOP /?THN6 EQUAL? PRSA,V?REPLY,V?LISTEN,V?LAMP-OFF \FALSE ?THN6: ZERO? ALARM-RINGING /?ELS12 CALL WHY-NOT-VP RSTACK ?ELS12: PRINTR "It's not ringing!" .FUNCT WHY-NOT-VP PRINTI "Why not turn on the " PRINTD VIDEOPHONE PRINTR "?" .FUNCT VIDEOPHONE-2-F PRINT I-ASSUME PRINTI " the " PRINTD VIDEOPHONE PRINTI ".)" CRLF CALL DO-INSTEAD-OF,VIDEOPHONE,VIDEOPHONE-2 RTRUE .FUNCT VIDEOPHONE-F,ARG,V EQUAL? PRSA,V?READ,V?EXAMINE \?ELS5 EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?ELS10 PRINTI "You can see " PRINTD REMOTE-PERSON PRINTI " on" CALL THE-PRSO-PRINT PRINTR "." ?ELS10: ZERO? WOMAN-ON-SCREEN /?ELS14 PRINTI "You can see a fuzzy picture of a woman on" CALL THE-PRSO-PRINT PRINTR ". Maybe you should turn the knob." ?ELS14: FSET? VIDEOPHONE,ONBIT \?ELS19 PRINTI "The " PRINTD VIDEOPHONE PRINTR " is on, but no one's on the screen." ?ELS19: PRINTR "The screen is dark." ?ELS5: EQUAL? PRSA,V?LISTEN \?ELS27 EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?ELS32 CALL PERFORM,PRSA,REMOTE-PERSON RTRUE ?ELS32: ZERO? WOMAN-ON-SCREEN /?ELS34 PRINTI "You can hear fuzzy sound from" CALL THE-PRSO-PRINT PRINTR ". Maybe you should turn the knob." ?ELS34: ZERO? ALARM-RINGING /FALSE PRINTI "An " PRINTD ALARM PRINTI " on the " PRINTD VIDEOPHONE PRINTR " is ringing." ?ELS27: EQUAL? PRSA,V?ANALYZE \?ELS44 EQUAL? PRSI,GLOBAL-SABOTAGE \?ELS44 ZERO? SUB-IN-TANK /?ELS44 PRINTI "If you wish to determine at once whether any saboteur or other intruder may have penetrated" CALL RESEARCH-LAB PRINTI ", activate the " PRINTD MICROWAVE-SECURITY-SCANNER PRINTR "." ?ELS44: EQUAL? PRSA,V?WALK-TO \?ELS52 ZERO? SUB-IN-TANK \?THN55 ZERO? SUB-IN-DOME /?ELS52 ?THN55: EQUAL? HERE,CENTER-OF-LAB,COMM-BLDG /?ELS52 ZERO? SUB-IN-TANK /?ELS59 CALL PERFORM,V?WALK-TO,CENTER-OF-LAB RTRUE ?ELS59: CALL PERFORM,V?WALK-TO,COMM-BLDG RTRUE ?ELS52: CALL REMOTE-VERB? ZERO? STACK \FALSE EQUAL? HERE,CENTER-OF-LAB,COMM-BLDG /?ELS66 PRINTI "You must be in the " ZERO? SUB-IN-TANK /?ELS71 PRINTD CENTER-OF-LAB JUMP ?CND69 ?ELS71: PRINTD COMM-BLDG ?CND69: PRINTR " to do that." ?ELS66: EQUAL? PRSA,V?TURN,V?FIX,V?ADJUST \?ELS82 FSET? VIDEOPHONE,MUNGBIT \?ELS85 PRINTI "You can't fix the " PRINTD VIDEOPHONE PRINTI " until you know what is wrong. The simplest way to find out is to consult your " CALL PRINT-NAME,LAST-NAME PRINTI " " PRINTD COMPUTESTOR PRINTI ", which is programmed to troubleshoot many of your inventions. Or, alternately, you may have the " PRINTD VIDEOPHONE PRINTI " repaired by a " PRINTD GLOBAL-TECHNICIAN PRINTR "." ?ELS85: FSET? VIDEOPHONE,ONBIT /?ELS89 CALL WHY-NOT-VP RTRUE ?ELS89: ZERO? WOMAN-ON-SCREEN \?CND83 PRINTR "Nothing changes." ?CND83: SET 'WOMAN-ON-SCREEN,FALSE-VALUE CALL PHONE-ON,GLOBAL-BLY,AQUADOME,VIDEOPHONE CALL THIS-IS-IT,PROBLEM PRINTI "Ah, that's better! You recognize the woman as " PRINTD BLY PRINTI ", who's in charge of the " PRINT URS PRINTI " of " PRINTD IU-GLOBAL PRINTI ", called the " PRINTD AQUADOME PRINTI ", just off the Atlantic coast. """ CALL PRINT-NAME,FIRST-NAME PRINTI "! " CALL PRINT-NAME,FIRST-NAME PRINTI "!"" she's saying. ""This is the " PRINTD AQUADOME PRINTI " calling" CALL RESEARCH-LAB PRINTI "! We have an urgent problem!""" CRLF CALL SCORE-OBJ,VIDEOPHONE-2 RTRUE ?ELS82: EQUAL? PRSA,V?LAMP-OFF \?ELS99 FSET? VIDEOPHONE,ONBIT \FALSE SET 'WOMAN-ON-SCREEN,FALSE-VALUE FCLEAR VIDEOPHONE,ONBIT EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?ELS107 FSET? MICROPHONE,ONBIT \?ELS107 CALL PERFORM,V?GOODBYE,REMOTE-PERSON RTRUE ?ELS107: CALL PHONE-OFF PRINTR "The screen goes dark." ?ELS99: EQUAL? PRSA,V?REPLY,V?LAMP-ON \?ELS115 ZERO? SUB-IN-TANK /?ELS115 FSET? VIDEOPHONE,ONBIT \?ELS120 CALL ALREADY,VIDEOPHONE,STR?42 RTRUE ?ELS120: FSET? CIRCUIT-BREAKER,OPENBIT /?THN123 FSET? VIDEOPHONE,MUNGBIT \?CND118 ?THN123: PRINTR "You can't. It's conked out." ?CND118: CALL INT,I-LAMP-ON-SCOPE PUT STACK,0,0 FSET VIDEOPHONE,ONBIT ZERO? ALARM-RINGING /?ELS131 SET 'ALARM-RINGING,FALSE-VALUE CALL QUEUE,I-ALARM-RINGING,0 SET 'WOMAN-ON-SCREEN,TRUE-VALUE CALL THIS-IS-IT,GLOBAL-BLY PRINTI "As the " PRINTD ALARM PRINTI " stops ringing, a picture of a woman holding a " PRINTD MICROPHONE PRINTI " appears, and you can hear her voice from the speaker. But both sound and picture are fuzzy." CRLF CALL SCORE-OBJ,VIDEOPHONE RTRUE ?ELS131: PRINTR "A test pattern appears." ?ELS115: EQUAL? PRSA,V?PHONE \FALSE ZERO? WOMAN-ON-SCREEN \?THN144 EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?CND141 ?THN144: PRINTI "You should finish talking with " ZERO? WOMAN-ON-SCREEN /?ELS150 PRINTI "the woman" JUMP ?CND148 ?ELS150: PRINTD REMOTE-PERSON ?CND148: PRINTR " first." ?CND141: EQUAL? PRSO,YOUR-LABORATORY \?ELS164 ZERO? SUB-IN-DOME /?ELS164 PRINTR "There's no answer." ?ELS164: EQUAL? PRSO,GLOBAL-BLY,AQUADOME \FALSE ZERO? SUB-IN-TANK /FALSE ZERO? BLY-TOLD-PROBLEM /?ELS177 PRINTI "There's no answer. The crew must be busy with the " PRINTD SNARK PRINTR "." ?ELS177: ZERO? ALARM-RINGING /FALSE CALL PERFORM,V?LAMP-ON,VIDEOPHONE RTRUE .FUNCT GLOBAL-SABOTAGE-F EQUAL? PRSA,V?ANALYZE \FALSE EQUAL? PRSO,VIDEOPHONE \FALSE CALL INT,I-TIP-SAYS PUT STACK,0,0 RFALSE .FUNCT WATER-F CALL REMOTE-VERB? ZERO? STACK \FALSE ZERO? SUB-IN-TANK /?ELS7 CALL IN-TANK-AREA?,HERE ZERO? STACK /FALSE ZERO? TEST-TANK-FULL /FALSE CALL DO-INSTEAD-OF,TEST-TANK,GLOBAL-WATER RTRUE ?ELS7: EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS17 CALL GLOBAL-IN?,WINDOW,HERE ZERO? STACK /?ELS22 CALL PERFORM,V?LOOK-OUTSIDE,WINDOW RTRUE ?ELS22: EQUAL? HERE,SUB \FALSE CALL PERFORM,V?LOOK-OUTSIDE,SUB-WINDOW RTRUE ?ELS17: EQUAL? PRSA,V?THROUGH,V?SWIM \FALSE PRINTI "This is no time for a swim, " CALL PRINT-NAME,FIRST-NAME PRINTR "!" .FUNCT SEA-F EQUAL? PRSA,V?ANALYZE,V?EXAMINE \?ELS5 ZERO? SUB-IN-DOME \?THN11 ZERO? SUB-IN-OPEN-SEA \?THN11 EQUAL? NOW-TERRAIN,SEA-TERRAIN \FALSE ?THN11: CALL PLENTY-WATER RSTACK ?ELS5: EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?FIND \FALSE ZERO? SUB-IN-DOME \?THN20 ZERO? SUB-IN-OPEN-SEA \?THN20 EQUAL? NOW-TERRAIN,SEA-TERRAIN \?ELS19 ?THN20: PRINTR "You're in it!" ?ELS19: EQUAL? HERE,SUB,CRAWL-SPACE \?ELS25 PRINTR "The nautical chart in your SEASTALKER package should help." ?ELS25: PRINTI "First you must get in the " PRINTD SUB PRINTR "." .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 HINT-F EQUAL? PRSA,V?FIND \?ELS5 PRINT HELP-TEXT CRLF RTRUE ?ELS5: EQUAL? PRSA,V?TAKE,V?ASK-CONTEXT-FOR,V?ASK-FOR \FALSE EQUAL? TIP,PRSO,PRSI,WINNER \?ELS14 PRINT HELP-TEXT CRLF RTRUE ?ELS14: CALL MORE-SPECIFIC RSTACK .FUNCT DIRNS-F EQUAL? PRSA,V?ASK-FOR \FALSE EQUAL? PRSO,GLOBAL-BLY \FALSE SET 'WINNER,GLOBAL-BLY CALL PERFORM,V?FIND,AQUADOME RTRUE .FUNCT GLOBAL-HERE-F,FLG=0,F,HR,TIM,VAL EQUAL? PRSA,V?KNOCK \?ELS5 PRINTR "Knocking on the walls reveals nothing unusual." ?ELS5: EQUAL? PRSA,V?TIE-TO,V?PUT \?ELS9 CALL MORE-SPECIFIC RSTACK ?ELS9: EQUAL? PRSA,V?EXAMINE,V?SEARCH \?ELS11 GETP HERE,P?CORRIDOR ZERO? STACK /?ELS14 SET 'TIM,3 JUMP ?CND12 ?ELS14: GETP HERE,P?SIZE ADD 2,STACK >TIM ?CND12: EQUAL? P-ADVERB,W?CAREFULLY \?CND17 MUL 2,TIM >TIM ?CND17: 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 \?ELS24 PRINTI "careful" JUMP ?CND22 ?ELS24: PRINTI "brief" ?CND22: PRINTI " search would take " PRINTN TIM PRINTI " turns, and it might not reveal much. Would you like to do it anyway?)" CALL YES? ZERO? STACK /?ELS37 CALL INT-WAIT,TIM >VAL EQUAL? M-FATAL,VAL /TRUE ZERO? VAL /?ELS44 PRINTI "Your " EQUAL? P-ADVERB,W?CAREFULLY \?ELS52 PUSH STR?118 JUMP ?CND48 ?ELS52: PUSH STR?119 ?CND48: PRINT STACK PRINTR " search reveals nothing exciting." ?ELS44: PRINTR "You didn't finish looking over the place." ?ELS37: PRINTR "Okay." ?ELS11: EQUAL? PRSA,V?ANALYZE,V?WHAT \FALSE FIRST? HERE >F /?KLU83 ?KLU83: ?PRG65: ZERO? F \?ELS69 JUMP ?REP66 ?ELS69: FSET? F,CONTBIT \?ELS71 CALL INHABITED?,F ZERO? STACK /?ELS71 SET 'FLG,TRUE-VALUE SET 'HR,HERE SET 'HERE,F CALL GLOBAL-HERE-F SET 'HERE,HR JUMP ?CND67 ?ELS71: FSET? F,PERSON \?CND67 EQUAL? F,PLAYER /?CND67 SET 'FLG,TRUE-VALUE CALL DESCRIBE-OBJECT,F,TRUE-VALUE,0 ?CND67: NEXT? F >F /?KLU84 ?KLU84: JUMP ?PRG65 ?REP66: ZERO? FLG \TRUE PRINTR "There's nobody else here." .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 CALL FRESH-AIR?,HERE ZERO? STACK \TRUE PRINTR "The air is rather musty." .FUNCT GENERIC-TANK-F,OBJ ZERO? SUB-IN-TANK /?ELS5 RETURN TEST-TANK ?ELS5: ZERO? SUB-IN-DOME \?THN9 CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK /FALSE ?THN9: RETURN DOCKING-TANK .FUNCT TOO-FAR-AWAY,OBJ CALL TOO-BAD-BUT,OBJ,STR?16 RSTACK .FUNCT TEST-TANK-F EQUAL? PRSA,V?WALK-TO \?ELS5 CALL IN-TANK-AREA?,HERE ZERO? STACK /?ELS10 CALL ALREADY,PLAYER,STR?117 RSTACK ?ELS10: ZERO? SUB-IN-TANK /FALSE CALL PERFORM,PRSA,NORTH-TANK-AREA RTRUE ?ELS5: CALL REMOTE-VERB? ZERO? STACK \FALSE EQUAL? NOW-TERRAIN,BAY-TERRAIN \?ELS17 CALL TOO-FAR-AWAY,TEST-TANK RSTACK ?ELS17: ZERO? SUB-IN-TANK \?ELS19 PRINTI "You're nowhere near" CALL RESEARCH-LAB PRINTR "!" ?ELS19: EQUAL? HERE,SUB \?THN28 ZERO? SUB-IN-TANK \?ELS25 ?THN28: EQUAL? HERE,NORTH-TANK-AREA,WEST-TANK-AREA,SOUTH-TANK-AREA /?ELS25 CALL NOT-HERE,TEST-TANK RSTACK ?ELS25: EQUAL? PRSA,V?BOARD \?ELS31 PRINTR "That won't do any good." ?ELS31: EQUAL? PRSA,V?LEAVE \?ELS35 PRINTI "You can either walk north, or get in the " PRINTD SUB PRINTR " and go east." ?ELS35: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?ANALYZE \?ELS39 CALL FILL-TANK-BUTTON-F RSTACK ?ELS39: EQUAL? PRSA,V?FILL,V?EMPTY \?ELS41 EQUAL? HERE,WEST-TANK-AREA,SUB /?ELS41 PRINTR "You'll have to go west to do that." ?ELS41: EQUAL? PRSA,V?EMPTY \?ELS47 FSET? TANK-GATE,OPENBIT \?ELS52 CALL YOU-CANT,STR?65,TANK-GATE,STR?21 RSTACK ?ELS52: FSET? ENGINE,ONBIT \?ELS54 CALL YOU-CANT,STR?65,ENGINE,STR?42 RSTACK ?ELS54: ZERO? TEST-TANK-FULL /?ELS56 SET 'TEST-TANK-FULL,FALSE-VALUE PRINTI "The " PRINTD GLOBAL-WATER PRINTR " quickly drains from the tank." ?ELS56: CALL ALREADY,TEST-TANK,STR?65 RSTACK ?ELS47: EQUAL? PRSA,V?FILL \?ELS63 ZERO? TEST-TANK-FULL /?ELS68 CALL ALREADY,TEST-TANK,STR?66 RSTACK ?ELS68: SET 'TEST-TANK-FULL,TRUE-VALUE PRINTI "The " PRINTD GLOBAL-WATER PRINTR " quickly fills the tank, up to the level of the walkway." ?ELS63: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS75 CALL PERFORM,PRSA,TANK-GATE RTRUE ?ELS75: EQUAL? PRSA,V?THROUGH,V?SWIM \FALSE PRINTI "This is no time for a swim, " CALL PRINT-NAME,FIRST-NAME PRINTR "!" .FUNCT FILL-TANK-BUTTON-F,OBJ,FLAG ZERO? SUB-IN-TANK /?ELS3 SET 'FLAG,TEST-TANK-FULL SET 'OBJ,TEST-TANK JUMP ?CND1 ?ELS3: ZERO? SUB-IN-DOME \?THN7 CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK /FALSE ?THN7: SET 'FLAG,AIRLOCK-FULL SET 'OBJ,AIRLOCK ?CND1: EQUAL? PRSA,V?EMPTY /?THN16 EQUAL? PRSA,V?FILL,V?CLOSE,V?OPEN \?ELS15 ?THN16: CALL PERFORM,PRSA,OBJ RTRUE ?ELS15: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?ANALYZE \?ELS19 PRINTI "The " PRINTD OBJ PRINTI " is " CALL TANK-STATUS PRINT STACK PRINTR "." ?ELS19: EQUAL? PRSA,V?USE,V?PUSH,V?MOVE \FALSE ZERO? FLAG /?ELS28 PRINT I-ASSUME PRINTI " empty" CALL PRINTT,OBJ PRINTI ".)" CRLF CALL PERFORM,V?EMPTY,OBJ RTRUE ?ELS28: PRINT I-ASSUME PRINTI " fill" CALL PRINTT,OBJ PRINTI ".)" CRLF CALL PERFORM,V?FILL,OBJ RTRUE .FUNCT TANK-GATE-F EQUAL? PRSA,V?FIND \?ELS5 PRINTR "It's on the east wall of the test tank." ?ELS5: CALL REMOTE-VERB? ZERO? STACK \FALSE EQUAL? HERE,SUB /?ELS11 CALL IN-TANK-AREA?,HERE ZERO? STACK \?ELS11 CALL NOT-HERE,TANK-GATE RSTACK ?ELS11: EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS15 PRINTI "This gate " FSET? TANK-GATE,OPENBIT \?ELS22 PUSH STR?113 JUMP ?CND18 ?ELS22: PUSH STR?120 ?CND18: PRINT STACK PRINTI " raised to permit submarines to go in or out of the tank. The gate can be raised or lowered by wall controls or by remote control from all " CALL PRINT-NAME,LAST-NAME PRINTR " subs." ?ELS15: EQUAL? PRSA,V?DROP /?THN27 EQUAL? PRSA,V?RAISE,V?CLOSE,V?OPEN \FALSE ?THN27: EQUAL? HERE,WEST-TANK-AREA,SUB /?CND29 PRINTR "You'll have to go west to do that." ?CND29: CALL OPEN-CLOSE-GATE,TANK-GATE,TEST-TANK-FULL,TEST-TANK RSTACK .FUNCT OPEN-GATE-BUTTON-F,OBJ ZERO? SUB-IN-TANK /?ELS3 SET 'OBJ,TANK-GATE JUMP ?CND1 ?ELS3: ZERO? SUB-IN-DOME \?THN7 CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK /FALSE ?THN7: SET 'OBJ,AIRLOCK-HATCH ?CND1: EQUAL? PRSA,V?DROP /?THN16 EQUAL? PRSA,V?RAISE,V?CLOSE,V?OPEN \?ELS15 ?THN16: CALL PERFORM,PRSA,OBJ RTRUE ?ELS15: EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS19 PRINTI "The " PRINTD OBJ PRINTI " is " CALL GATE-STATUS PRINT STACK PRINTR "." ?ELS19: EQUAL? PRSA,V?USE,V?PUSH,V?MOVE \FALSE FSET? OBJ,OPENBIT \?ELS28 PRINT I-ASSUME PRINTI " close" CALL PRINTT,OBJ PRINTI ".)" CRLF CALL PERFORM,V?CLOSE,OBJ RTRUE ?ELS28: PRINT I-ASSUME PRINTI " open" CALL PRINTT,OBJ PRINTI ".)" CRLF CALL PERFORM,V?OPEN,OBJ RTRUE .FUNCT GATE-STATUS ZERO? SUB-IN-TANK /?ELS5 FSET? TANK-GATE,OPENBIT \?ELS11 RETURN STR?21 ?ELS11: RETURN STR?17 ?ELS5: ZERO? SUB-IN-DOME \?THN16 CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK /?ELS15 ?THN16: FSET? AIRLOCK-HATCH,OPENBIT \?ELS22 RETURN STR?21 ?ELS22: RETURN STR?17 ?ELS15: RETURN STR?121 .FUNCT TANK-STATUS ZERO? SUB-IN-TANK /?ELS5 ZERO? TEST-TANK-FULL /?ELS11 RETURN STR?66 ?ELS11: RETURN STR?65 ?ELS5: ZERO? SUB-IN-DOME \?THN17 CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK /?ELS16 ?THN17: ZERO? AIRLOCK-FULL /?ELS23 RETURN STR?66 ?ELS23: RETURN STR?65 ?ELS16: RETURN STR?121 .FUNCT AIRLOCK-HATCH-F EQUAL? PRSA,V?FIND \?ELS5 PRINTI "It's on the south wall of the " PRINTD AQUADOME PRINTI " " PRINTD AIRLOCK PRINTR "." ?ELS5: CALL REMOTE-VERB? ZERO? STACK \FALSE ZERO? SUB-IN-DOME /?THN14 EQUAL? HERE,SUB,AIRLOCK,BLY-OFFICE /?ELS11 ?THN14: CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK \?ELS11 CALL TOO-FAR-AWAY,AIRLOCK-HATCH RSTACK ?ELS11: ZERO? SNARK-ATTACK-COUNT /?ELS17 PRINTR "It's too late now! The machinery is jammed!" ?ELS17: EQUAL? PRSA,V?DROP /?THN22 EQUAL? PRSA,V?RAISE,V?CLOSE,V?OPEN \FALSE ?THN22: CALL OPEN-CLOSE-GATE,AIRLOCK-HATCH,AIRLOCK-FULL,AIRLOCK RSTACK .FUNCT OPEN-CLOSE-GATE,GATE,FULL,TANK EQUAL? PRSA,V?RAISE,V?OPEN \?ELS3 FSET? GATE,OPENBIT \?ELS6 CALL ALREADY,GATE,STR?21 RTRUE ?ELS6: ZERO? FULL \?ELS8 PRINTI "You'd better fill the " PRINTD TANK PRINTR " first, unless you want to go surfing!" ?ELS8: EQUAL? GATE,TANK-GATE \?CND13 EQUAL? HERE,SUB \?CND13 SET 'OPENED-GATE-FROM-SUB,TRUE-VALUE ?CND13: FSET GATE,OPENBIT JUMP ?CND1 ?ELS3: FSET? GATE,OPENBIT \?ELS22 FCLEAR GATE,OPENBIT JUMP ?CND1 ?ELS22: CALL ALREADY,GATE,STR?17 RTRUE ?CND1: FSET? GATE,OPENBIT \?ELS27 PRINTI "Opened" JUMP ?CND25 ?ELS27: PRINTI "Closed" ?CND25: EQUAL? HERE,SUB \?CND34 PRINTI " (by remote control)" ?CND34: PRINTR "." .FUNCT AIRLOCK-POP? ZERO? GREENUP-ESCAPE /?ELS5 CALL FIND-FLAG,AIRLOCK,PERSON,GREENUP RSTACK ?ELS5: CALL FIND-FLAG,AIRLOCK,PERSON RSTACK .FUNCT GENERIC-GATE-F,OBJ ZERO? SUB-IN-TANK /?ELS5 RETURN TANK-GATE ?ELS5: ZERO? SUB-IN-DOME \?THN9 CALL SUB-OUTSIDE-AIRLOCK? ZERO? STACK /FALSE ?THN9: RETURN AIRLOCK-HATCH .FUNCT SUB-OUTSIDE-AIRLOCK? EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE ZERO? SUB-LON \FALSE ZERO? FINE-SONAR /?ELS9 EQUAL? -2,SUB-LAT /TRUE ?ELS9: EQUAL? -1,SUB-LAT /TRUE RFALSE .FUNCT AIRLOCK-ROOF-F EQUAL? PRSA,V?FIND \?ELS5 PRINTI "It covers the " PRINTD AQUADOME PRINTI " " PRINTD AIRLOCK PRINTR "." ?ELS5: CALL REMOTE-VERB? ZERO? STACK \FALSE ZERO? SUB-IN-DOME /?THN12 EQUAL? HERE,SUB,AIRLOCK,BLY-OFFICE /?ELS11 EQUAL? HERE,AIRLOCK-WALL /?ELS11 ?THN12: CALL TOO-FAR-AWAY,AIRLOCK-ROOF RSTACK ?ELS11: EQUAL? PRSA,V?OPEN \?ELS17 FSET? AIRLOCK-ROOF,OPENBIT \?ELS20 CALL ALREADY,AIRLOCK-ROOF,STR?21 RTRUE ?ELS20: FSET? AIRLOCK-HATCH,OPENBIT \?CND18 CALL THIS-IS-IT,AIRLOCK-HATCH PRINTI "A safety mechanism prevents it. The " PRINTD AIRLOCK-HATCH PRINTR " is open!" ?CND18: FSET AIRLOCK-ROOF,OPENBIT PRINTI "Opened" EQUAL? HERE,SUB \?CND27 PRINTI " (by remote control)" ?CND27: PRINTR "." ?ELS17: EQUAL? PRSA,V?CLOSE \FALSE FSET? AIRLOCK-ROOF,OPENBIT /?CND36 CALL ALREADY,AIRLOCK-ROOF,STR?17 RTRUE ?CND36: FCLEAR AIRLOCK-ROOF,OPENBIT PRINTI "Closed" EQUAL? HERE,SUB \?CND41 PRINTI " (by remote control)" ?CND41: PRINTI "." CRLF ZERO? GREENUP-ESCAPE /TRUE GRTR? 3,GREENUP-ESCAPE \TRUE PRINTI "Greenup can't get into the " PRINTD SUB PRINTI " and escape any more. " CALL GREENUP-CUFF RTRUE .FUNCT EVIDENCE-F ZERO? ZOE-MENTIONED-EVIDENCE /FALSE EQUAL? PRSA,V?TAKE \FALSE CALL PERFORM,PRSA,BLACK-BOX RTRUE .FUNCT LAB-ASSISTANT-F EQUAL? PRSA,V?WALK-TO,V?FIND \FALSE CALL DO-INSTEAD-OF,LOWELL,LAB-ASSISTANT RSTACK .FUNCT DOC-LABORATORY-F EQUAL? PRSA,V?THROUGH,V?WALK-TO \FALSE CALL PERFORM,V?WALK-TO,DOME-LAB RTRUE .FUNCT YOUR-LABORATORY-F CALL IN-LAB?,HERE ZERO? STACK /?ELS5 CALL DO-INSTEAD-OF,HERE,YOUR-LABORATORY RTRUE ?ELS5: EQUAL? PRSA,V?THROUGH,V?WALK-TO \FALSE CALL PERFORM,V?WALK-TO,CENTER-OF-LAB RTRUE .FUNCT GENERIC-LABORATORY-F,OBJ ZERO? SUB-IN-TANK /?ELS5 RETURN YOUR-LABORATORY ?ELS5: ZERO? SUB-IN-DOME /FALSE RETURN DOME-LAB .FUNCT TRAITOR-F,X EQUAL? PRSA,V?ASK-ABOUT \?ELS9 FSET? PRSO,PERSON /?THN6 ?ELS9: EQUAL? PRSA,V?WHAT,V?FIND \FALSE ?THN6: ZERO? QCONTEXT /?ORP13 PUSH QCONTEXT JUMP ?THN10 ?ORP13: EQUAL? PRSA,V?ASK-ABOUT /?ORT12 PUSH 0 JUMP ?THN10 ?ORT12: PUSH 1 ?THN10: POP 'X ZERO? X /?CND14 PRINTI """" ?CND14: PRINTI "I guess you'll have to figure that out, " CALL PRINT-NAME,FIRST-NAME PRINTI "." ZERO? X /?CND22 PRINTI """" ?CND22: CRLF RTRUE .FUNCT CHAIR-F EQUAL? PRSA,V?CLIMB-DOWN /?THN6 EQUAL? PRSA,V?CLIMB-ON,V?LOOK-UNDER,V?SIT \FALSE ?THN6: PRINTR "That's just a waste of time." .FUNCT UNDERWATER-F EQUAL? PRSA,V?WALK \FALSE PRINTI "You must be in the " PRINTD SUB PRINTR " to do that." .FUNCT GAME-F EQUAL? PRSA,V?READ,V?PLAY,V?EXAMINE \FALSE SET 'P-WON,FALSE-VALUE PRINTR "(You're doing it!)" .FUNCT SOMETHING-F SET 'P-WON,FALSE-VALUE PRINTI "(Type a real word instead of " PRINTD SOMETHING PRINTR ".)" .FUNCT LEFT-RIGHT-F EQUAL? PRSA,V?LOOK-OUTSIDE,V?LOOK-INSIDE,V?EXAMINE \?ELS5 EQUAL? HERE,SUB \?ELS8 CALL PERFORM,PRSA,SUB-WINDOW RTRUE ?ELS8: CALL PERFORM,PRSA,WINDOW RTRUE ?ELS5: EQUAL? PRSA,V?WALK,V?TURN \FALSE CALL V-WALK-AROUND RSTACK .ENDI