.FUNCT FERRY-F EQUAL? PRSA,V?CLIMB-ON,V?THROUGH,V?BOARD \?ELS5 IN? FERRY,FERRY-LANDING \?ELS10 EQUAL? HERE,FERRY-LANDING \?ELS15 CALL TELL-CANT-BOARD RSTACK ?ELS15: CALL TELL-YOURE-NOT,STR?303 RSTACK ?ELS10: PRINTR "It's not at the landing. Be patient." ?ELS5: EQUAL? PRSA,V?WALK-TO \?ELS23 EQUAL? HERE,FERRY-LANDING /?ELS23 CALL TELL-SHD-DIR RSTACK ?ELS23: EQUAL? PRSA,V?LISTEN \FALSE PRINTR "You hear its engines." .FUNCT TELL-CANT-BOARD CALL TELL-DONT-HAVE,STR?304 RSTACK .FUNCT GLOBAL-FERRY-F EQUAL? PRSA,V?FIND,V?TELL,V?ASK-ABOUT /FALSE CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-FERRY RSTACK .FUNCT MM-FORE-DECK-F,RARG EQUAL? RARG,M-LOOK \FALSE CALL TELL-FORE-END,SALVAGER RSTACK .FUNCT TELL-FORE-END,OBJ PRINTI "You are at the fore end of the " CALL DPRINT,OBJ PRINTR ". You can see the ocean over the rail that runs around the deck. A ladder leads below deck, and the wheelhouse is aft of you. A chair is bolted to the deck." .FUNCT DECK-CHAIR-F,RARG=0 EQUAL? RARG,M-OBJDESC \?ELS5 IN? PETE,DECK-CHAIR \TRUE CALL TELL-IN-CHAIR,PETE RTRUE ?ELS5: ZERO? RARG \FALSE EQUAL? PRSA,V?EXAMINE \?ELS15 PRINTI "This weatherbeaten chair is used by a lookout while standing watch. It faces forward and is bolted to the deck. " IN? PETE,DECK-CHAIR \?CND18 CALL TELL-IN-CHAIR,PETE ?CND18: CRLF RTRUE ?ELS15: EQUAL? PRSA,V?ASK-ABOUT \?ELS22 PRINTR """It's the lookout's chair.""" ?ELS22: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS26 EQUAL? PRSI,DECK-CHAIR \?ELS26 CALL IDROP ZERO? STACK /TRUE IN? PLAYER,DECK-CHAIR \?CND32 LOC DECK-CHAIR MOVE PRSO,STACK ?CND32: PRINTR "It slides off the chair and onto the deck." ?ELS26: EQUAL? PRSA,V?BOARD \FALSE IN? PETE,DECK-CHAIR \FALSE CALL TELL-ALREADY,STR?305 RSTACK .FUNCT TELL-IN-CHAIR,OCC CALL START-SENTENCE,OCC PRINTR " is sitting in the chair." .FUNCT MM-PORT-DECK-F,RARG,DOCK? EQUAL? RARG,M-ENTER \?ELS5 MOVE BUNK,MM-CREW-QTRS MOVE UNDER-BUNK,MM-CREW-QTRS MOVE STOVE,MM-GALLEY MOVE DECK-CHAIR,MM-FORE-DECK MOVE REDS-BUNK,MM-CAPT-CABIN MOVE LOUNGE-CHAIR,MM-LOUNGE IN? PETE,MM-GALLEY \?CND6 MOVE FOOD,STOVE FSET FOOD,NDESCBIT ?CND6: ZERO? WATER-DELIVERED /FALSE EQUAL? SHIP-CHOSEN,SALVAGER \FALSE MOVE DRINKING-WATER,MM-GALLEY FSET DRINKING-WATER,NDESCBIT RFALSE ?ELS5: EQUAL? RARG,M-LOOK \FALSE CALL TELL-FOO-SIDE,SALVAGER,STR?184,STR?183 RTRUE .FUNCT TELL-FOO-SIDE,OBJ,SIDE,HOUSE,DOCK? PRINTI "You are on the " PRINT SIDE PRINTI " side of the " CALL DPRINT,OBJ PRINTI ", a sturdy vessel designed for " EQUAL? OBJ,TRAWLER \?ELS5 PRINTI "trawling" JUMP ?CND3 ?ELS5: PRINTI "deep-sea salvaging" ?CND3: PRINTI ". To " PRINT HOUSE PRINTI " is a small wheelhouse, while " EQUAL? OBJ,TRAWLER \?ELS16 SET 'DOCK?,TRAWLER-DOCKED JUMP ?CND14 ?ELS16: SET 'DOCK?,SALVAGER-DOCKED ?CND14: ZERO? DOCK? /?ELS23 PRINTI "to " PRINT SIDE PRINTR " is the gangway leading to the dock. The gentle rocking of the boat in port reminds you of time spent on the open sea." ?ELS23: PRINTI "the ocean, with its blue-green waves crashing, lies off the " PRINT SIDE PRINTR " rail." .FUNCT TELL-AFT-DECK PRINTI "The smell of diesel fuel is strong but reassuring here on the aft deck. A ladder leads below deck, while forward you can see the entrance to the command center of the boat, the wheelhouse." RTRUE .FUNCT MM-AFT-DECK-F,RARG EQUAL? RARG,M-LOOK \?ELS5 CALL TELL-AFT-DECK PRINTR " A huge air compressor is bolted to the deck by the aft rail." ?ELS5: EQUAL? RARG,M-BEG \?ELS9 EQUAL? PRSA,V?WALK \FALSE IN? AIR-HOSE,DEEP-SUIT \FALSE IN? DEEP-SUIT,PLAYER \FALSE PRINTI "You don't want to drag the " CALL DPRINT,AIR-HOSE PRINTR " around the boat." ?ELS9: EQUAL? RARG,M-FLASH \FALSE IN? WEASEL,MM-AFT-DECK \FALSE ZERO? AT-SEA /FALSE ZERO? WEASEL-APPREHENDED \FALSE CALL QUEUED?,I-PENDULUM ZERO? STACK \FALSE CALL QUEUE,I-PENDULUM,-1 PUT STACK,0,1 CALL TELL-WEASEL-TOSSES RSTACK .FUNCT TELL-WEASEL-TOSSES FCLEAR LINE-HACK,INVISIBLE LOC WEASEL MOVE LINE-HACK,STACK PRINTI "The Weasel tosses a line over the side and says, " PRINT LINE-STR CRLF RTRUE .FUNCT LINE-HACK-F,HOLDER=0 LOC LINE-HACK IN? WEASEL,STACK \?ELS3 SET 'HOLDER,WEASEL JUMP ?CND1 ?ELS3: LOC LINE-HACK IN? JOHNNY,STACK \?CND1 SET 'HOLDER,JOHNNY ?CND1: EQUAL? PRSA,V?EXAMINE \?ELS10 ZERO? HOLDER /?ELS15 CALL START-SENTENCE,HOLDER PRINTI " is holding one end of a weighted " CALL DPRINT,LINE-HACK PRINTR "." ?ELS15: PRINTI "One end of " CALL APRINT,LINE-HACK PRINTR " is here. Leave it alone." ?ELS10: EQUAL? PRSA,V?ASK-ABOUT,V?FIND /FALSE ZERO? HOLDER /?ELS31 CALL START-SENTENCE,HOLDER PRINTR " pulls it away. ""Don't mess with that!""" ?ELS31: PRINTR "Leave it alone." .FUNCT MM-COMPRESSOR-F,TICK EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 CALL TELL-NO-NO RSTACK ?ELS5: EQUAL? PRSA,V?PUT \?ELS7 EQUAL? PRSI,MM-COMPRESSOR \?ELS7 PRINTR "There's no place to put it." ?ELS7: EQUAL? PRSA,V?EXAMINE \?ELS13 PRINTI "The large, gasoline-powered air compressor is " FSET? MM-COMPRESSOR,ONBIT \?ELS18 PRINTI "on" JUMP ?CND16 ?ELS18: PRINTI "off" ?CND16: PRINTI ". You can quickly see it " CALL INT,I-MM-COMPRESSOR GET STACK,C-TICK >TICK ZERO? TICK \?ELS29 PRINTI "is out of fuel" JUMP ?CND27 ?ELS29: EQUAL? TICK,80 \?ELS36 PRINTI "has" JUMP ?CND34 ?ELS36: PRINTI "started with" ?CND34: PRINTI " fuel for an hour and a half's operation" ?CND27: PRINTI ". A retractable " CALL DPRINT,AIR-HOSE PRINTR " is built in." ?ELS13: EQUAL? PRSA,V?LAMP-ON \?ELS48 FSET? MM-COMPRESSOR,ONBIT \?ELS53 CALL TELL-ALREADY,STR?56 RSTACK ?ELS53: CALL INT,I-MM-COMPRESSOR PUT STACK,0,1 FSET MM-COMPRESSOR,ONBIT PRINTR "Okay. The compressor is on." ?ELS48: EQUAL? PRSA,V?LAMP-OFF \?ELS59 FSET? MM-COMPRESSOR,ONBIT \?ELS64 CALL INT,I-MM-COMPRESSOR PUT STACK,0,0 FCLEAR MM-COMPRESSOR,ONBIT CALL TELL-NOW,MM-COMPRESSOR,STR?264 RSTACK ?ELS64: CALL TELL-ALREADY,STR?264 RSTACK ?ELS59: EQUAL? PRSA,V?LISTEN \FALSE FSET? MM-COMPRESSOR,ONBIT \FALSE PRINTR "The compressor is making a steady loud noise." .FUNCT AIR-HOSE-F EQUAL? PRSA,V?EXAMINE \?ELS5 IN? AIR-HOSE,DEEP-SUIT \?ELS10 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS15 PRINTI "This " CALL DPRINT,AIR-HOSE PRINTI " goes from the aft deck of the " CALL DPRINT,SALVAGER PRINTR " and ends at your diving suit. Without it, you would find breathing impossible." ?ELS15: PRINTI "It connects the " CALL DPRINT,DEEP-SUIT PRINTI " and the " CALL DPRINT,MM-COMPRESSOR PRINTI " " EQUAL? HERE,MM-AFT-DECK \?ELS24 PRINTI "here" JUMP ?CND22 ?ELS24: PRINTI "on the aft deck" ?CND22: PRINTR "." ?ELS10: PRINTI "It is designed to be connected to a " CALL DPRINT,DEEP-SUIT PRINTR " to provide air and is about 600 feet long." ?ELS5: EQUAL? PRSA,V?TIE,V?PUT \?ELS38 EQUAL? PRSI,DEEP-SUIT /?THN41 EQUAL? PRSO,DEEP-SUIT \?ELS38 ?THN41: IN? AIR-HOSE,DEEP-SUIT \?ELS47 CALL TELL-ALREADY,STR?308 RSTACK ?ELS47: MOVE AIR-HOSE,DEEP-SUIT CALL TELL-NOW,AIR-HOSE,CONNECT-STR RSTACK ?ELS38: EQUAL? PRSA,V?TAKE \?ELS51 IN? AIR-HOSE,DEEP-SUIT \?ELS56 CALL TELL-ALREADY,CONNECT-STR RSTACK ?ELS56: PRINTI "Why drag it around? Just connect it to the " CALL DPRINT,DEEP-SUIT PRINTR "." ?ELS51: EQUAL? PRSA,V?TIE \?ELS62 CALL TELL-YOU-CANT,STR?309 RSTACK ?ELS62: EQUAL? PRSA,V?UNTIE \?ELS64 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS69 CALL JIGS-UP,STR?310 RSTACK ?ELS69: MOVE AIR-HOSE,MM-COMPRESSOR PRINTR "The hose retracts back to the compressor." ?ELS64: EQUAL? PRSA,V?MOVE \?ELS75 PRINTR "That was fun." ?ELS75: EQUAL? PRSA,V?CLIMB-FOO \FALSE CALL TELL-YOU-CANT,STR?311 RSTACK .FUNCT TELL-WHEELHOUSE,OBJ PRINTI " Through the glass windows you see the " ZERO? AT-SEA /?ELS7 PRINTR "ocean churning all around you." ?ELS7: CALL DPRINT,OBJ PRINTR " docked at the wharf, and the island stretching aft. Forward, you see the choppy waters of the bay." .FUNCT MM-WHEELHOUSE-F,RARG EQUAL? RARG,M-LOOK \?ELS5 PRINTI "You are in the wheelhouse with a passageway leading out onto the deck abaft. You can see the " CALL DPRINT,MM-COMPRESSOR PRINTI " sitting there, taking up most of the aft deck." CALL TELL-WHEELHOUSE,TRAWLER RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? OCEAN,PRSO,PRSI \FALSE EQUAL? PRSA,V?EXAMINE \?ELS19 PRINTR "You see the ocean through the window." ?ELS19: EQUAL? PRSA,V?ASK-ABOUT,V?FIND /FALSE CALL TELL-YOU-CANT,STR?313 RSTACK .FUNCT COMPRESSOR-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?314 RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 CALL TELL-YOU-CANT,STR?315 RSTACK ?ELS7: CALL TELL-CANT-REACH,STR?316 RSTACK .FUNCT MM-LOCKER-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a relatively empty locker." PRINT SPARE-PARTS-STR CRLF RTRUE .FUNCT METAL-DETECTOR-F,TMP EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "The " CALL DPRINT,METAL-DETECTOR PRINTI "'s label is well-worn. It has a " CALL DPRINT,DETECTOR-SWITCH PRINTI " which is currently " ZERO? DETECTOR-ON /?ELS10 PRINTI "on" JUMP ?CND8 ?ELS10: PRINTI "off" ?CND8: PRINTI ", and a compartment on the side which is " FSET? DETECTOR-COMPARTMENT,OPENBIT \?ELS22 PRINTI "open" FIRST? DETECTOR-COMPARTMENT >TMP \?CND20 PRINTI " and contains " CALL APRINT,TMP JUMP ?CND20 ?ELS22: PRINTI "closed" ?CND20: PRINTR "." ?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS37 SET 'DETECTOR-ON,TRUE-VALUE CALL TELL-SWITCH,STR?56 RTRUE ?ELS37: EQUAL? PRSA,V?LAMP-OFF \?ELS39 SET 'DETECTOR-ON,FALSE-VALUE CALL TELL-SWITCH,STR?264 RTRUE ?ELS39: EQUAL? PRSA,V?LISTEN \?ELS41 CALL DETECTOR-NOISE,TRUE-VALUE RTRUE ?ELS41: EQUAL? PRSA,V?PUT \?ELS43 EQUAL? PRSI,METAL-DETECTOR \?ELS43 CALL PERFORM,V?PUT,PRSO,DETECTOR-COMPARTMENT RTRUE ?ELS43: EQUAL? PRSA,V?EMPTY,V?CLOSE,V?OPEN \?ELS47 CALL PERFORM,PRSA,DETECTOR-COMPARTMENT SET 'P-IT-OBJECT,METAL-DETECTOR RTRUE ?ELS47: EQUAL? PRSA,V?LOOK-INSIDE \?ELS49 CALL PERFORM,V?EXAMINE,DETECTOR-COMPARTMENT SET 'P-IT-OBJECT,METAL-DETECTOR RTRUE ?ELS49: EQUAL? PRSA,V?SHAKE \FALSE FSET? DETECTOR-COMPARTMENT,OPENBIT \?ELS54 FIRST? DETECTOR-COMPARTMENT \?ELS54 MOVE DRY-CELL,HERE SET 'DETECTOR-POWERED,FALSE-VALUE PRINTI "The " CALL DPRINT,DRY-CELL PRINTR " falls out of the machine." ?ELS54: PRINTR "Nothing happens." .FUNCT DETECTOR-LABEL-F EQUAL? PRSA,V?TAKE \FALSE PRINTR "You tug at it, but it can't be pulled off." .FUNCT DETECTOR-SWITCH-F EQUAL? PRSA,V?EXAMINE \?ELS5 ZERO? DETECTOR-ON /?ELS8 CALL TELL-SWITCH,STR?56 RTRUE ?ELS8: CALL TELL-SWITCH,STR?264 RTRUE ?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS13 CALL PERFORM,V?LAMP-ON,METAL-DETECTOR SET 'P-IT-OBJECT,DETECTOR-SWITCH RTRUE ?ELS13: EQUAL? PRSA,V?LAMP-OFF \?ELS15 CALL PERFORM,V?LAMP-OFF,METAL-DETECTOR SET 'P-IT-OBJECT,DETECTOR-SWITCH RTRUE ?ELS15: EQUAL? PRSA,V?THROW,V?MOVE,V?TURN \FALSE ZERO? DETECTOR-ON /?ELS20 CALL PERFORM,V?LAMP-OFF,METAL-DETECTOR JUMP ?CND18 ?ELS20: CALL PERFORM,V?LAMP-ON,METAL-DETECTOR ?CND18: SET 'P-IT-OBJECT,DETECTOR-SWITCH RTRUE .FUNCT DETECTOR-COMPARTMENT-F,RARG=0 EQUAL? RARG,M-CONT \?ELS5 EQUAL? PRSA,V?TAKE \FALSE EQUAL? PRSO,DRY-CELL \FALSE CALL ITAKE ZERO? STACK /TRUE PRINTI "Taken." CRLF ZERO? DETECTOR-POWERED /TRUE SET 'DETECTOR-POWERED,FALSE-VALUE RTRUE ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS23 FSET? DETECTOR-COMPARTMENT,OPENBIT \?ELS26 PRINTI "The compartment is on the side of the machine. Inside " FIRST? DETECTOR-COMPARTMENT \?ELS31 PRINTI "is a connected" JUMP ?CND29 ?ELS31: PRINTI "are connections for a" ?CND29: PRINTI " nine-volt " CALL DPRINT,DRY-CELL PRINTR "." ?ELS26: CALL TELL-CLOSED,STR?319 RTRUE ?ELS23: EQUAL? PRSA,V?PUT \?ELS43 EQUAL? PRSO,DETECTOR-COMPARTMENT /FALSE FSET? DETECTOR-COMPARTMENT,OPENBIT /?ELS50 CALL TELL-CLOSED,STR?320 RSTACK ?ELS50: EQUAL? PRSO,DRY-CELL \?ELS52 MOVE DRY-CELL,DETECTOR-COMPARTMENT FSET? DRY-CELL,RMUNGBIT /?CND53 SET 'DETECTOR-POWERED,TRUE-VALUE ?CND53: PRINTI "The " CALL DPRINT,DRY-CELL PRINTR " fits snugly inside." ?ELS52: PRINTR "Unfortunately, it doesn't fit." ?ELS43: EQUAL? PRSA,V?OPEN \?ELS63 IN? DRY-CELL,DETECTOR-COMPARTMENT \?ELS63 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS63 CALL AIRTIGHT-ROOM? ZERO? STACK \?ELS63 FSET DRY-CELL,RMUNGBIT SET 'DETECTOR-POWERED,FALSE-VALUE RFALSE ?ELS63: EQUAL? PRSA,V?EMPTY \FALSE FSET? DETECTOR-COMPARTMENT,OPENBIT \FALSE SET 'DETECTOR-POWERED,FALSE-VALUE RFALSE .FUNCT DEEP-SUIT-F EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 CALL TELL-NO-NO RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 PRINTI "This " CALL DPRINT,DEEP-SUIT PRINTR " is bulky on land, but underwater it will protect you to 500 feet. It has a hood with ""viewport"" and a connection for a compressor hose." ?ELS7: EQUAL? PRSA,V?PUT \?ELS11 EQUAL? PRSI,DEEP-SUIT \?ELS11 EQUAL? PRSO,AIR-HOSE /?ELS11 CALL TELL-NO-NO RSTACK ?ELS11: EQUAL? PRSA,V?WEAR \?ELS15 FSET? WET-SUIT,WORNBIT \?ELS15 CALL TELL-NO-FIT,STR?321 RSTACK ?ELS15: EQUAL? PRSA,V?DISEMBARK,V?THROW,V?DROP \FALSE GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \FALSE CALL JIGS-UP,STR?322 RSTACK .FUNCT MM-CREW-QTRS-F,RARG,W EQUAL? RARG,M-LOOK \?ELS5 CALL TELL-CREW-QTRS RTRUE ?ELS5: EQUAL? RARG,M-ENTER \FALSE CALL MOVE-SHARED-OBJECTS,MM-CREW-QTRS RFALSE .FUNCT BUNK-F,RARG=0,F ZERO? RARG \FALSE EQUAL? PRSA,V?SLEEP,V?BOARD \?ELS10 FIRST? BUNK >F \?ELS16 EQUAL? F,PLAYER \?THN13 ?ELS16: CALL WEARING-SOMETHING? ZERO? STACK /?ELS10 ?THN13: CALL TELL-NOT-COMFORTABLE RSTACK ?ELS10: EQUAL? PRSA,V?HIDE-UNDER,V?PUT-UNDER \?ELS18 EQUAL? PRSO,GLOBAL-SELF,ME \?ELS23 PRINTR "You won't fit." ?ELS23: GETP PRSO,P?SIZE LESS? STACK,5 \?ELS27 FIRST? UNDER-BUNK \?ELS32 CALL TELL-NO-FIT RSTACK ?ELS32: MOVE PRSO,UNDER-BUNK FSET PRSO,NDESCBIT CALL TELL-NOW,PRSO,STR?323 RSTACK ?ELS27: CALL TELL-NO-FIT RSTACK ?ELS18: EQUAL? PRSA,V?LOOK-UNDER \FALSE FIRST? UNDER-BUNK >F \?ELS43 SET 'P-IT-OBJECT,F PRINTI "There is " CALL APRINT,F PRINTR " under the mattress." ?ELS43: PRINTR "Nobody's hidden his life savings there." .FUNCT WEARING-SOMETHING?,F FIRST? PLAYER >F /?KLU12 ?KLU12: ?PRG1: ZERO? F /FALSE FSET? F,WORNBIT \?ELS7 EQUAL? F,WATCH \TRUE ?ELS7: NEXT? F >F /?KLU13 ?KLU13: JUMP ?PRG1 .FUNCT UNDER-BUNK-F,RARG=0 EQUAL? RARG,M-OBJDESC /TRUE EQUAL? RARG,M-CONT \FALSE EQUAL? PRSA,V?TAKE \FALSE FCLEAR PRSO,NDESCBIT RFALSE .FUNCT BUNKS-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?324 RTRUE ?ELS5: PRINTR "The only bunk you should worry about is your own." .FUNCT MM-GALLEY-F,RARG CALL GENERIC-GALLEY-F,RARG,MM-GALLEY RSTACK .FUNCT GENERIC-GALLEY-F,RARG,PLACE,?TMP1 EQUAL? RARG,M-ENTER \?ELS5 PUTP GLOBAL-SURFACE,P?SDESC,STR?36 CALL MOVE-SHARED-OBJECTS,PLACE RFALSE ?ELS5: EQUAL? RARG,M-LOOK \?ELS7 PRINTI "You are in the " EQUAL? PLACE,MM-GALLEY \?ELS12 CALL DPRINT,SALVAGER JUMP ?CND10 ?ELS12: CALL DPRINT,TRAWLER ?CND10: PRINTI "'s galley. A stove and a small table are the fixtures here." IN? FOOD,STOVE \?CND21 CALL TELL-STEW-ON ?CND21: ZERO? WATER-DELIVERED /?CND24 GETP SHIP-CHOSEN,P?LINE >?TMP1 GETP PLACE,P?LINE EQUAL? ?TMP1,STACK \?CND24 PRINTI " Water is available." ?CND24: PRINTR " A ladder leads up through the deck to the wheelhouse for feeding the captain in rough weather." ?ELS7: EQUAL? RARG,M-BEG \FALSE CALL DOUBLE-DUTY-CHECK ZERO? STACK \TRUE RFALSE .FUNCT DOUBLE-DUTY-CHECK EQUAL? PRSA,V?ASK-FOR \FALSE EQUAL? PRSO,PETE \FALSE EQUAL? PRSI,FOOD \?ELS12 ZERO? SOUPS-ON /?ELS17 PRINTI """Take some " CALL DPRINT,GLOBAL-SELF PRINTR ".""" ?ELS17: PRINTR """Wait 'til it's ready.""" ?ELS12: EQUAL? PRSI,DRINKING-WATER \FALSE PRINTI """Take it " CALL DPRINT,GLOBAL-SELF PRINTR ".""" .FUNCT TELL-STEW-ON,LEAD?=1 ZERO? LEAD? /?CND1 PRINTI " " ?CND1: PRINTI "A pot of stew is simmering on the stove." RTRUE .FUNCT STOVE-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "The small stove rests on gimbals that keep it relatively level." IN? FOOD,STOVE \?CND8 CALL TELL-STEW-ON ?CND8: CRLF RTRUE ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS12 IN? FOOD,STOVE \?ELS12 CALL TELL-STEW-ON,FALSE-VALUE CRLF RTRUE ?ELS12: EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE PRINTR "That's Pete's job." .FUNCT MM-LOUNGE-F,RARG EQUAL? RARG,M-ENTER \FALSE PUTP GLOBAL-SURFACE,P?SDESC,STR?36 CALL MOVE-SHARED-OBJECTS,MM-LOUNGE RFALSE .FUNCT LOUNGE-CHAIR-F,RARG=0,F EQUAL? PRSO,CHAIR \FALSE EQUAL? PRSA,V?BOARD \FALSE FIRST? CHAIR >F \FALSE CALL TELL-NOT-COMFORTABLE RSTACK .FUNCT REDS-BUNK-F EQUAL? PRSA,V?SIT,V?SLEEP,V?BOARD /?THN6 EQUAL? PRSA,V?HIDE-UNDER,V?PUT-UNDER,V?SIT-ON /?THN6 EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,REDS-BUNK \?ELS5 ?THN6: PRINTR "You know better than to disturb the captain's bunk!" ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE PRINTR "It's shipshape." .FUNCT MM-ENGINE-ROOM-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a tiny cabin with barely enough room to breathe. By your feet lie the huge diesel engines of the " CALL DPRINT,SALVAGER PRINTR "." .FUNCT ENGINE-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?328 RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7 PRINTR "The engines are extremely complex and delicate pieces of machinery." ?ELS7: EQUAL? PRSA,V?PLUG,V?LAMP-OFF,V?LAMP-ON \?ELS11 PRINTI "Leave the engines to " CALL DPRINT,WEASEL PRINTR " and he'll leave the diving to you." ?ELS11: EQUAL? PRSA,V?ASK-ABOUT \?ELS15 EQUAL? PRSO,WEASEL \?ELS15 PRINTR """These are in pretty good shape.""" ?ELS15: EQUAL? PRSA,V?LISTEN \FALSE ZERO? AT-SEA /FALSE CALL TELL-YOU-CANT,STR?329 RSTACK .FUNCT NW-FORE-DECK-F,RARG EQUAL? RARG,M-LOOK \FALSE CALL TELL-FORE-END,TRAWLER RSTACK .FUNCT NW-STARBOARD-DECK-F,RARG EQUAL? RARG,M-ENTER \?ELS5 MOVE BUNK,NW-CREW-QTRS MOVE UNDER-BUNK,NW-CREW-QTRS MOVE STOVE,NW-GALLEY MOVE DECK-CHAIR,NW-FORE-DECK MOVE REDS-BUNK,NW-CAPT-CABIN MOVE LOUNGE-CHAIR,NW-LOUNGE IN? PETE,NW-GALLEY \?CND6 MOVE FOOD,STOVE FSET FOOD,NDESCBIT ?CND6: ZERO? WATER-DELIVERED /FALSE EQUAL? TRAWLER,SHIP-CHOSEN \FALSE MOVE DRINKING-WATER,NW-GALLEY FSET DRINKING-WATER,NDESCBIT RFALSE ?ELS5: EQUAL? RARG,M-LOOK \FALSE CALL TELL-FOO-SIDE,TRAWLER,STR?183,STR?184 RTRUE .FUNCT NW-AFT-DECK-F,RARG EQUAL? RARG,M-LOOK \?ELS5 CALL TELL-AFT-DECK CRLF RTRUE ?ELS5: EQUAL? RARG,M-FLASH \FALSE IN? WEASEL,NW-AFT-DECK \FALSE ZERO? AT-SEA /FALSE ZERO? WEASEL-APPREHENDED \FALSE CALL QUEUED?,I-PENDULUM ZERO? STACK \FALSE CALL QUEUE,I-PENDULUM,-1 PUT STACK,0,1 CALL TELL-WEASEL-TOSSES RSTACK .FUNCT NW-WHEELHOUSE-F,RARG EQUAL? RARG,M-LOOK \?ELS5 PRINTI "You are in the wheelhouse of the " CALL DPRINT,TRAWLER PRINTI ". The passageway leading out onto the deck lies abaft." CALL TELL-WHEELHOUSE,SALVAGER RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? OCEAN,PRSO,PRSI \FALSE EQUAL? PRSA,V?EXAMINE \?ELS19 PRINTR "You see the ocean through the window." ?ELS19: CALL TELL-YOU-CANT,STR?313 RSTACK .FUNCT NW-LOCKER-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a fairly empty storage locker. It must have been cleaned out after its last trawling expedition." PRINT SPARE-PARTS-STR CRLF RTRUE .FUNCT TELL-SWITCH,STR PRINTI "The switch is now in the """ PRINT STR PRINTR """ position." .FUNCT DRILL-F,RARG=0 EQUAL? RARG,M-CONT \?ELS5 EQUAL? PRSA,V?TAKE \FALSE EQUAL? PRSO,BATTERY \FALSE CALL ITAKE ZERO? STACK /TRUE PRINTI "Taken." ZERO? DRILL-POWERED /?CND18 SET 'DRILL-POWERED,FALSE-VALUE ZERO? DRILL-ON /?CND18 CALL INT,I-DRILL PUT STACK,0,0 PRINTI " The drill bit winds to a halt." ?CND18: CRLF RTRUE ?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS29 EQUAL? PRSO,DRILL \?ELS29 ZERO? DRILL-ON /?ELS36 CALL TELL-ALREADY,STR?56 RSTACK ?ELS36: ZERO? DRILL-POWERED /?ELS39 SET 'DRILL-ON,TRUE-VALUE CALL INT,I-DRILL PUT STACK,0,1 PRINTR "The drill bit begins to spin." ?ELS39: SET 'DRILL-ON,TRUE-VALUE CALL TELL-SWITCH,STR?56 RSTACK ?ELS29: EQUAL? PRSA,V?LAMP-OFF \?ELS46 EQUAL? PRSO,DRILL \?ELS46 ZERO? DRILL-ON \?ELS53 CALL TELL-ALREADY,STR?264 RSTACK ?ELS53: ZERO? DRILL-POWERED /?ELS55 SET 'DRILL-ON,FALSE-VALUE CALL INT,I-DRILL PUT STACK,0,0 PRINTR "The drill bit stops spinning." ?ELS55: SET 'DRILL-ON,FALSE-VALUE CALL TELL-SWITCH,STR?264 RSTACK ?ELS46: EQUAL? PRSA,V?EXAMINE \?ELS62 PRINTI "This waterproof wonder features a permanent bit" CALL QUEUED?,I-DRILL ZERO? STACK /?CND65 PRINTI " which is turning" ?CND65: PRINTI ", a panel which is " FSET? DRILL,OPENBIT \?ELS74 PRINTI "open" ZERO? DRILL-POWERED /?ELS79 PRINTI " with a C battery inside" JUMP ?CND72 ?ELS79: PRINTI ", revealing space for a C battery" JUMP ?CND72 ?ELS74: PRINTI "closed" ?CND72: PRINTI ", and a switch which is in the """ ZERO? DRILL-ON /?ELS95 PRINTI "on" JUMP ?CND93 ?ELS95: PRINTI "off" ?CND93: PRINTR """ position." ?ELS62: EQUAL? PRSA,V?LOOK-INSIDE \?ELS106 CALL PERFORM,V?EXAMINE,DRILL RTRUE ?ELS106: EQUAL? PRSA,V?OPEN \?ELS108 IN? BATTERY,DRILL \?ELS108 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS108 CALL AIRTIGHT-ROOM? ZERO? STACK \?ELS108 FSET BATTERY,RMUNGBIT SET 'DRILL-POWERED,FALSE-VALUE RFALSE ?ELS108: EQUAL? PRSI,DRILL \FALSE EQUAL? PRSA,V?PUT \?ELS117 FSET? DRILL,OPENBIT /?ELS122 SET 'P-IT-OBJECT,DRILL CALL TELL-CLOSED,STR?320 RSTACK ?ELS122: EQUAL? PRSO,BATTERY \?ELS124 MOVE BATTERY,DRILL FSET? BATTERY,RMUNGBIT \?CND125 CALL TELL-NOW,BATTERY,STR?332 RTRUE ?CND125: SET 'DRILL-POWERED,TRUE-VALUE ZERO? DRILL-ON /?ELS132 CALL INT,I-DRILL PUT STACK,0,1 PRINTR "The drill bit starts spinning." ?ELS132: CALL TELL-NOW,BATTERY,STR?332 RSTACK ?ELS124: CALL TELL-NO-FIT RSTACK ?ELS117: EQUAL? PRSA,V?TELL,V?ASK-ABOUT,V?TAKE /FALSE EQUAL? PRSA,V?PUT-ON,V?PUT-AGAINST /FALSE ZERO? DRILL-ON /?THN148 ZERO? DRILL-POWERED \FALSE ?THN148: EQUAL? PRSO,GLOBAL-TIME /FALSE SET 'P-IT-OBJECT,DRILL PRINTI "The " CALL DPRINT,DRILL PRINTR " isn't running!" .FUNCT GENERIC-HOLE-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "As holes go, it's very nice." ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS9 PRINTR "You see nothing new." ?ELS9: EQUAL? PRSA,V?REACH-IN \FALSE PRINTR "It's not that big." .FUNCT ADD-HOLE,OBJ,I FSET? HOLE-1,INVISIBLE \?ELS3 FCLEAR HOLE-1,INVISIBLE MOVE HOLE-1,OBJ JUMP ?CND1 ?ELS3: FSET? HOLE-2,INVISIBLE \?ELS5 FCLEAR HOLE-2,INVISIBLE PUTP HOLE-1,P?SDESC,STR?335 MOVE HOLE-2,OBJ JUMP ?CND1 ?ELS5: PRINTI "The drill should be dead now." CRLF ?CND1: CALL INT,I-DRILL >I GET I,C-TICK SUB STACK,1 PUT I,C-TICK,STACK GET I,C-TICK ZERO? STACK \TRUE CALL I-DRILL RTRUE .FUNCT TELL-CREW-QTRS PRINTR "You are below deck in the crew's quarters. Narrow, uncomfortable bunks line the bulkheads, and you note the similarity between this area and a sardine can. Sleeping here is necessary but uninviting. A ladder leads up and out to the fore deck." .FUNCT NW-CREW-QTRS-F,RARG,W EQUAL? RARG,M-LOOK \?ELS5 CALL TELL-CREW-QTRS RSTACK ?ELS5: EQUAL? RARG,M-ENTER \FALSE CALL MOVE-SHARED-OBJECTS,NW-CREW-QTRS RFALSE .FUNCT NW-GALLEY-F,RARG CALL GENERIC-GALLEY-F,RARG,NW-GALLEY RSTACK .FUNCT NW-LOUNGE-F,RARG EQUAL? RARG,M-ENTER \FALSE PUTP GLOBAL-SURFACE,P?SDESC,STR?36 CALL MOVE-SHARED-OBJECTS,NW-LOUNGE RFALSE .FUNCT NW-ENGINE-ROOM-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a tiny, smelly space where it is difficult to breathe. By your feet lie the diesel engines of the " CALL DPRINT,TRAWLER PRINTR "." .ENDI