From 47fbe00ae6b65b82283e9712feed8b5e8e5f5f87 Mon Sep 17 00:00:00 2001 From: historicalsource Date: Sat, 13 Apr 2019 20:20:29 -0400 Subject: [PATCH] Revision 23 (Original Source) --- README.md | 1 + boat.zap | 916 ++++ boat.zil | 1422 +++++ clock.zap | 98 + clock.zil | 108 + events.zap | 1392 +++++ events.zil | 1629 ++++++ globals.zap | 1313 +++++ globals.zil | 1651 ++++++ goal.zap | 528 ++ goal.zil | 746 +++ island.zap | 1670 ++++++ island.zil | 2520 +++++++++ macros.zap | 33 + macros.zil | 145 + main.zap | 481 ++ main.zil | 581 ++ parser.zap | 1521 ++++++ parser.zil | 1494 ++++++ people.zap | 1905 +++++++ people.zil | 2313 ++++++++ syntax.zap | 2 + syntax.zil | 821 +++ toa.xzap | 49 + toa.zap | 46 + toa.zil | 67 + toa.zip | Bin 0 -> 112558 bytes toadat.zap | 14265 +++++++++++++++++++++++++++++++++++++++++++++++++ toafreq.xzap | 200 + toastr.zap | 471 ++ verbs.zap | 3557 ++++++++++++ verbs.zil | 3337 ++++++++++++ wrecks.zap | 1531 ++++++ wrecks.zil | 1925 +++++++ 34 files changed, 48738 insertions(+) create mode 100644 README.md create mode 100644 boat.zap create mode 100644 boat.zil create mode 100644 clock.zap create mode 100644 clock.zil create mode 100644 events.zap create mode 100644 events.zil create mode 100644 globals.zap create mode 100644 globals.zil create mode 100644 goal.zap create mode 100644 goal.zil create mode 100644 island.zap create mode 100644 island.zil create mode 100644 macros.zap create mode 100644 macros.zil create mode 100644 main.zap create mode 100644 main.zil create mode 100644 parser.zap create mode 100644 parser.zil create mode 100644 people.zap create mode 100644 people.zil create mode 100644 syntax.zap create mode 100644 syntax.zil create mode 100644 toa.xzap create mode 100644 toa.zap create mode 100644 toa.zil create mode 100644 toa.zip create mode 100644 toadat.zap create mode 100644 toafreq.xzap create mode 100644 toastr.zap create mode 100644 verbs.zap create mode 100644 verbs.zil create mode 100644 wrecks.zap create mode 100644 wrecks.zil diff --git a/README.md b/README.md new file mode 100644 index 0000000..7154115 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# cutthroats diff --git a/boat.zap b/boat.zap new file mode 100644 index 0000000..e39d9d8 --- /dev/null +++ b/boat.zap @@ -0,0 +1,916 @@ + + + .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 diff --git a/boat.zil b/boat.zil new file mode 100644 index 0000000..25bdbdb --- /dev/null +++ b/boat.zil @@ -0,0 +1,1422 @@ +"BOAT ROOMS for TOA #2 + Copyright (C) 1984 Infocom, Inc." + + + + + + + ) + (T )>) + (T )>) + ( >> + ) + ( + )>> + +> + + + +> + )>> + + + + + )>> + +> + + + +)) + + + ) + ;( + )> + ) + ( + + + + ) + ( + + ;)> + ) + ( + ) + ( + > + + + >)> + )> + ) + ( + > + )>)>> + + + > + +; + +; + +; + >> + + + + ) + (T )> + + ) + ( + ) + (T )> + + >>>)> + )>> + +; + +; + ) + ( + ) + ( + )>> + + + + + + + + + + ; + + ; + + ; + + + + )> + > + + )> + ) + ( + + )>> + + + ) + (T )> + + ) + (T )> + ) + (T )>> + + + +> + + + + ) + (<==? .RARG ,M-BEG> + + + > + )>) + (<==? .RARG ,M-FLASH> + + ,AT-SEA + + >> + > + )>)>> + + + > + > + + + +)) + > + ) + (> + )> + + + ) + (T )>) + ( + ) + (T + + ) + (T )>)>> + + + + + ) + ( + > + ) + ( + + + ) + (T )> + + ,C-TICK>>> + ) + (T + + ) + (T )> + )> + ) + ( + + ) + (T + > + + )>) + ( + + > + + ) + (T )>) + ( + > + )>> + + + + + + + ,UNDERWATER-LINE-C> + ) + (T + + ) + (T )> + )>) + (T )>) + ( + + >> + + ) + (T + + )>) + ( + + ) + (T )>) + ( + ) + ( + + ,UNDERWATER-LINE-C> + ) + (T + + )>) + ( + ) + ( + )>> + + + + + + + ) + (T )>> + +; + + + + + ) + (<==? .RARG ,M-BEG> + + + ) + ( + ) + (T )>)>)>> + +)) + + ) + ( + ) + (T )>> + +; + + + + + )>> + + + + + + + + ) + (T )> + + + + > + )>) + (T )> + + ) + ( + + + ) + ( + > + + ) + ( + + ) + ( + > + + ) + ( + + + ) + ( + + + ) + ( + + > + + > + ) + (T )> + )>> + + + + + + )>> + + + + + ) + (T )> + ) + ( + + + ) + ( + + + ) + ( + ) + (T )> + + )>> + + + +)) + + + > + + + >)>)> + )>) + ( + + + + ) + (T )> + ) + (T + )> + ) + ( + + ) + (> + ) + ( + + > + )> + + ) + (T )>) + ( + + <==? ,UNDERWATER-LINE-C> + >> + + > + ) + ( + > + > + )>> + + + + + ) + ( + ) + ( + + >> + ) + ( + > + ) + ( + <==? ,UNDERWATER-LINE-C>> + )>> + + + + + + ) + (<==? .RARG ,M-ENTER> + + ) + ;(<==? .RARG ,M-BEG> + + ,AT-SEA + >> + + + + )>)>> + +;> + +; + ) + ( + ) + (T )>> + + + +) "AUX" F) + + + > + >> + >> + ) + ( + + ) + ( 5> + + ) + (T + + + )>) + (T )>) + ( + > + + ) + (T