diff --git a/compone.zabstr b/compone.zabstr new file mode 100644 index 0000000..9d7837c --- /dev/null +++ b/compone.zabstr @@ -0,0 +1,629 @@ + +) (UP TO CRAG) (DOWN TO UNDERWATER) (WEST TO UNDERWATER) (NORTH TO +UNDERWATER) (SOUTH TO UNDERWATER) (FLAGS ONBIT RWATERBIT) (ACTION UNDERWATER-F) +> + WORD> + +) (DOWN TO +UNDERWATER) (UP TO BALCONY) (FLAGS ONBIT RLANDBIT) (VALUE 3) (GLOBAL CLIFF +OCEAN) (PSEUDO "STRUCTURE" STRUCTURE-PSEUDO "CLEFT" CLEFT-PSEUDO) (ACTION +CRAG-F)> + +) (DOWN PER WATER-LEVEL-F) (UP TO WINDING-STAIR) (FLAGS ONBIT RLANDBIT) ( +PSEUDO "PLAQUE" PLAQUE-PSEUDO) (GLOBAL CLIFF OCEAN STAIRS WINDOW) (ACTION +BALCONY-F)> + +) (DOWN PER WATER-LEVEL-F) (UP TO COURTYARD) (FLAGS ONBIT +RLANDBIT) (GLOBAL CLIFF STAIRS) (ACTION WINDING-STAIR-F)> + +) (DOWN TO WINDING-STAIR) (SOUTH TO WINDING-STAIR) (WEST TO WEST-WING) ( +NORTH TO PLAIN-HALL) (FLAGS ONBIT RLANDBIT FLOYDBIT) (GLOBAL STAIRS) (PSEUDO +"CASTLE" CASTLE-PSEUDO "RUBBLE" RUBBLE-PSEUDO) (ACTION COURTYARD-F)> + + +) +(EAST TO COURTYARD) (DOWN "Certain death.") (FLAGS ONBIT RLANDBIT FLOYDBIT) ( +GLOBAL CLIFF OCEAN) (PSEUDO "CASTLE" CASTLE-PSEUDO "RUBBLE" RUBBLE-PSEUDO)> +) (SOUTH TO COURTYARD) (NORTH TO REC-AREA) (NE +TO REC-CORRIDOR) (FLAGS ONBIT RLANDBIT)> +) (NORTH TO CONFERENCE-ROOM IF CONFERENCE-DOOR IS OPEN) (SOUTH TO +PLAIN-HALL) (EAST TO REC-CORRIDOR) (FLAGS ONBIT RLANDBIT FLOYDBIT) (GLOBAL +CONFERENCE-DOOR) (PSEUDO "GAMES" GAMES-PSEUDO "TAPES" TAPES-PSEUDO) (ACTION +REC-AREA-F)> + WORD> + WORD> + +) (SOUTH TO REC-AREA IF CONFERENCE-DOOR IS OPEN) (OUT TO +REC-AREA IF CONFERENCE-DOOR IS OPEN) (IN TO BOOTH-1) (NORTH TO BOOTH-1) (FLAGS +RLANDBIT ONBIT) (PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO) (GLOBAL CONFERENCE-DOOR +TABLES) (ACTION CONFERENCE-ROOM-F)> + + + + + +) (SOUTH TO +CONFERENCE-ROOM) (OUT TO CONFERENCE-ROOM) (PSEUDO "BOOTH" IN-BOOTH-PSEUDO) ( +FLAGS ONBIT RLANDBIT) (GLOBAL CONTROLS SLOT TELEPORTATION-BUTTON-2 +TELEPORTATION-BUTTON-3)> +) (WEST +TO REC-AREA) (NORTH TO DORM-B) (SOUTH TO DORM-A) (EAST TO MESS-CORRIDOR) (SW TO +PLAIN-HALL) (FLAGS ONBIT RLANDBIT)> +) (SOUTH TO SANFAC-A) (NORTH TO +REC-CORRIDOR) (FLAGS FLOYDBIT ONBIT RLANDBIT) (GLOBAL BED) (PSEUDO "PARTITION" +PARTITION-PSEUDO)> +) (NORTH TO DORM-A) (FLAGS +ONBIT RLANDBIT FLOYDBIT) (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" +TOILET-PSEUDO)> +) (SOUTH TO REC-CORRIDOR) (NORTH TO +SANFAC-B) (FLAGS FLOYDBIT ONBIT RLANDBIT) (GLOBAL BED) (PSEUDO "PARTITION" +PARTITION-PSEUDO)> +) (SOUTH TO DORM-B) (FLAGS +FLOYDBIT ONBIT RLANDBIT) (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" +TOILET-PSEUDO)> +) (NORTH TO DORM-CORRIDOR) (SOUTH TO +SANFAC-C) (FLAGS ONBIT FLOYDBIT RLANDBIT) (GLOBAL BED) (PSEUDO "PARTITION" +PARTITION-PSEUDO)> +) (NORTH TO DORM-C) (FLAGS +FLOYDBIT ONBIT RLANDBIT) (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" +TOILET-PSEUDO)> +) (SOUTH TO DORM-CORRIDOR) (NORTH TO +SANFAC-D) (FLAGS FLOYDBIT ONBIT RLANDBIT) (GLOBAL BED) (PSEUDO "PARTITION" +PARTITION-PSEUDO)> +) (SOUTH TO DORM-D) (FLAGS +ONBIT FLOYDBIT RLANDBIT) (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" +TOILET-PSEUDO)> +) (SOUTH TO MESS-HALL) (NORTH TO STORAGE-WEST IF +STORAGE-WEST-DOOR IS OPEN) (EAST TO DORM-CORRIDOR) (WEST TO REC-CORRIDOR) ( +FLAGS ONBIT RLANDBIT) (GLOBAL STORAGE-WEST-DOOR) (ACTION MESS-CORRIDOR-F)> + + + + + %<> WORD> + +) (SOUTH TO MESS-CORRIDOR IF STORAGE-WEST-DOOR IS OPEN) ( +OUT TO MESS-CORRIDOR IF STORAGE-WEST-DOOR IS OPEN) (FLAGS RLANDBIT ONBIT) ( +VALUE 4) (GLOBAL SHELVES STORAGE-WEST-DOOR)> + + + + %<> WORD> + %<> WORD> + +) (NORTH TO DORM-D) ( +SOUTH TO DORM-C) (WEST TO MESS-CORRIDOR) (EAST PER LONG-HALL-F) (FLAGS ONBIT +RLANDBIT) (PSEUDO "WALKWAY" WALKWAY-PSEUDO)> +) (NORTH TO MESS-CORRIDOR) (OUT TO MESS-CORRIDOR) (SOUTH TO KITCHEN IF +KITCHEN-DOOR IS OPEN) (IN TO KITCHEN IF KITCHEN-DOOR IS OPEN) (GLOBAL TABLES +KITCHEN-DOOR SLOT) (FLAGS ONBIT FLOYDBIT RLANDBIT) (PSEUDO "BENCH" BENCH-PSEUDO +"BENCHE" BENCH-PSEUDO) (ACTION MESS-HALL-F)> + + + +) (NORTH TO +MESS-HALL) (OUT TO MESS-HALL) (GLOBAL KITCHEN-DOOR) (PSEUDO "SPOUT" +SPOUT-PSEUDO "BUTTON" BUTTON-PSEUDO) (FLAGS ONBIT RLANDBIT) (VALUE 4)> + + + + + + +) (NORTH TO ADMIN-CORRIDOR-S) +(SOUTH TO MECH-CORRIDOR-N) (WEST PER LONG-HALL-F) (EAST TO ELEVATOR-LOBBY) ( +FLAGS FLOYDBIT RLANDBIT ONBIT) (PSEUDO "WALKWAY" WALKWAY-PSEUDO)> + +) (SOUTH TO CORRIDOR-JUNCTION) (NORTH TO ADMIN-CORRIDOR +) (EAST TO SANFAC-E) (FLAGS RLANDBIT ONBIT) (ACTION ADMIN-CORRIDOR-S-F)> + + + + + +) (SOUTH TO ADMIN-CORRIDOR-S) (NORTH PER LADDER-EXIT-F) (WEST +TO SYSTEMS-MONITORS) (FLAGS RLANDBIT ONBIT) (GLOBAL RIFT) (PSEUDO "RUBBLE" +RUBBLE-PSEUDO) (ACTION ADMIN-CORRIDOR-F)> + +) (SOUTH PER LADDER-EXIT-F) (NORTH TO +TRANSPORTATION-SUPPLY) (EAST TO PLAN-ROOM) (WEST TO SMALL-OFFICE) (FLAGS +RLANDBIT ONBIT) (VALUE 4) (GLOBAL RIFT) (ACTION ADMIN-CORRIDOR-N-F)> + + + + +) (WEST TO +ADMIN-CORRIDOR-S) (OUT TO ADMIN-CORRIDOR-S) (FLAGS FLOYDBIT RLANDBIT ONBIT) ( +PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)> +) (EAST TO ADMIN-CORRIDOR) (OUT TO ADMIN-CORRIDOR) (FLAGS +FLOYDBIT RLANDBIT ONBIT) (GLOBAL TABLES) (PSEUDO "MONITORS" MONITORS-PSEUDO +"EQUIPM" EQUIPMENT-PSEUDO) (ACTION SYSTEMS-MONITORS-F)> + + +) (WEST TO +ADMIN-CORRIDOR-N) (FLAGS RLANDBIT ONBIT FLOYDBIT) (PSEUDO "CUBBYHOLE" +CUBBYHOLE-PSEUDO "MAPS" MAPS-PSEUDO)> + +) (SOUTH TO ADMIN-CORRIDOR-N) (NORTH TO TRANSPORTATION-SUPPLY) (EAST TO +TRANSPORTATION-SUPPLY) (WEST TO TRANSPORTATION-SUPPLY) (OUT TO ADMIN-CORRIDOR-N +) (FLAGS RLANDBIT)> +) (EAST TO ADMIN-CORRIDOR-N) (WEST TO LARGE-OFFICE) (FLAGS +RLANDBIT FLOYDBIT ONBIT)> + + + + + +) (EAST TO SMALL-OFFICE) (FLAGS FLOYDBIT +RLANDBIT ONBIT) (GLOBAL WINDOW OCEAN)> + + +) (EAST TO STORAGE-EAST) (WEST TO +PHYSICAL-PLANT) (NORTH TO CORRIDOR-JUNCTION) (SOUTH TO MECH-CORRIDOR) (FLAGS +RLANDBIT ONBIT)> +) (EAST TO REACTOR-CONTROL) (WEST TO +PHYSICAL-PLANT) (NORTH TO MECH-CORRIDOR-N) (SOUTH TO MECH-CORRIDOR-S) (FLAGS +RLANDBIT ONBIT)> +) (NORTH TO MECH-CORRIDOR) (SW TO +TOOL-ROOM) (SOUTH TO MACHINE-SHOP) (SE TO ROBOT-SHOP) (FLAGS RLANDBIT ONBIT)> +) (WEST TO MECH-CORRIDOR-N) (FLAGS RLANDBIT FLOYDBIT ONBIT) ( +GLOBAL SHELVES)> + + + + + + + + + + +) (NE TO MECH-CORRIDOR-N) (SE TO MECH-CORRIDOR) (FLAGS FLOYDBIT +RLANDBIT ONBIT) (PSEUDO "EQUIPM" EQUIPMENT-PSEUDO "CATWALK" CATWALK-PSEUDO)> +) (WEST TO MECH-CORRIDOR) (EAST TO REACTOR-ELEVATOR IF +REACTOR-ELEVATOR-DOOR IS OPEN) (IN TO REACTOR-ELEVATOR IF REACTOR-ELEVATOR-DOOR +IS OPEN) (DOWN TO REACTOR-ACCESS-STAIRS) (FLAGS RLANDBIT FLOYDBIT ONBIT) ( +PSEUDO "BUTTON" REACTOR-BUTTON-PSEUDO "DIAGRAM" DIAGRAM-PSEUDO) (GLOBAL +CONTROLS STAIRS REACTOR-ELEVATOR-DOOR)> +) (DOWN TO REACTOR-ACCESS-STAIRS) (UP TO REACTOR-CONTROL) (FLAGS RLANDBIT) ( +GLOBAL STAIRS)> + + + +) (WEST TO REACTOR-CONTROL) (OUT TO REACTOR-CONTROL) (FLAGS +RLANDBIT ONBIT) (GLOBAL REACTOR-ELEVATOR-DOOR SLOT ELEVATOR-BUTTON CONTROLS)> +) (NE TO MECH-CORRIDOR-S) (EAST TO +MACHINE-SHOP) (FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL SHELVES)> + + + + + + +) (NORTH TO MECH-CORRIDOR-S) (EAST TO ROBOT-SHOP) (WEST TO +TOOL-ROOM) (FLAGS RLANDBIT FLOYDBIT ONBIT) (PSEUDO "SPOUT" CHEM-SPOUT-PSEUDO) ( +ACTION MACHINE-SHOP-F)> + + + %<> WORD> + + + + + + + + + + + WORD> + %<> WORD> + +) (WEST TO MACHINE-SHOP) +(NW TO MECH-CORRIDOR-S) (FLAGS RLANDBIT FLOYDBIT ONBIT) (PSEUDO "DEVICE" +DEVICES-PSEUDO)> + + %<> WORD> + + + + + + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + + + + + + + %<> WORD> +) (NORTH PER ELEVATOR-ENTER-F) (SOUTH PER ELEVATOR-ENTER-F) ( +WEST TO CORRIDOR-JUNCTION) (EAST TO BOOTH-2) (IN TO BOOTH-2) (FLAGS RLANDBIT +FLOYDBIT ONBIT) (GLOBAL UPPER-ELEVATOR-DOOR LOWER-ELEVATOR-DOOR) (PSEUDO +"BOOTH" NEAR-BOOTH-PSEUDO) (ACTION ELEVATOR-LOBBY-F)> + +) (OUT PER ELEVATOR-EXIT-F) (SOUTH PER ELEVATOR-EXIT-F) (UP +"You'll have to use the elevator controls.") (DOWN +"You'll have to use the elevator controls.") (FLAGS RLANDBIT ONBIT) (GLOBAL +LIGHTS CONTROLS SLOT ELEVATOR-BUTTON UPPER-ELEVATOR-DOOR) (ACTION +UPPER-ELEVATOR-F)> + +) (NORTH PER ELEVATOR-EXIT-F) (OUT PER ELEVATOR-EXIT-F) (UP +"You'll have to use the elevator controls.") (DOWN +"You'll have to use the elevator controls.") (FLAGS RLANDBIT ONBIT) (GLOBAL +LIGHTS CONTROLS SLOT ELEVATOR-BUTTON LOWER-ELEVATOR-DOOR) (ACTION +LOWER-ELEVATOR-F)> + + + + + + + + + + + + + + + + %<> WORD> + WORD> + %<> WORD> + %<> WORD> + %<> WORD> + + + + WORD> + WORD> + + + +) (WEST TO +ELEVATOR-LOBBY) (OUT TO ELEVATOR-LOBBY) (FLAGS RLANDBIT ONBIT) (PSEUDO "BOOTH" +IN-BOOTH-PSEUDO) (GLOBAL CONTROLS SLOT TELEPORTATION-BUTTON-1 +TELEPORTATION-BUTTON-3)> +) (NORTH TO UPPER-ELEVATOR) (UP TO +HELIPAD) (SW TO OBSERVATION-DECK) (NE TO COMM-ROOM) (FLAGS RLANDBIT ONBIT) ( +VALUE 4) (GLOBAL STAIRS UPPER-ELEVATOR-DOOR)> +) (DOWN TO TOWER-CORE) (IN TO HELICOPTER) (EAST +"A fence keeps you away from the edge, where you would probably +be swept over the brink by the high winds.") (WEST +"A fence keeps you away from the edge, where you would probably +be swept over the brink by the high winds.") (NORTH +"A fence keeps you away from the edge, where you would probably +be swept over the brink by the high winds.") (SOUTH +"A fence keeps you away from the edge, where you would probably +be swept over the brink by the high winds.") (FLAGS RLANDBIT ONBIT) (PSEUDO +"FENCE" FENCE-PSEUDO) (GLOBAL STAIRS HELICOPTER-OBJECT)> + + +) (OUT TO HELIPAD) (FLAGS RLANDBIT ONBIT) ( +PSEUDO "LOCK" LOCK-PSEUDO) (GLOBAL OCEAN CONTROLS WINDOW HELICOPTER-OBJECT)> +) (SW TO TOWER-CORE) (FLAGS RLANDBIT ONBIT) (GLOBAL LIGHTS) (PSEUDO +"CABLES" CABLES-PSEUDO "ENUNCI" ENUNCIATOR-PSEUDO) (ACTION COMM-ROOM-F)> + + WORD> + +) (SYNONYM CONSOLE CONTRO) (ADJECTIVE +COMMUNICATIONS RECEIVE LEFT FIRST) (FLAGS NDESCBIT)> + + + +\"")> + + + + %<> WORD> + + + + + %<> WORD> + + + %<> WORD> + WORD> + WORD> +) (NE TO TOWER-CORE) (FLAGS RLANDBIT ONBIT) ( +GLOBAL OCEAN)> +) (EAST TO KALAMONTEE-PLATFORM) (SOUTH PER +OTHER-ELEVATOR-ENTER-F) (IN PER OTHER-ELEVATOR-ENTER-F) (PSEUDO "BENCH" +BENCH-PSEUDO "BENCHE" BENCH-PSEUDO) (GLOBAL LOWER-ELEVATOR-DOOR) (FLAGS +RLANDBIT ONBIT)> + +) (WEST TO WAITING-AREA) (SOUTH PER +SHUTTLE-ENTER-F) (NORTH PER SHUTTLE-ENTER-F) (FLAGS RLANDBIT ONBIT) (VALUE 4) ( +GLOBAL GLOBAL-SHUTTLE) (ACTION KALAMONTEE-PLATFORM-F)> + \ No newline at end of file diff --git a/compone.zap b/compone.zap new file mode 100644 index 0000000..1bcb163 --- /dev/null +++ b/compone.zap @@ -0,0 +1,1645 @@ + + + .FUNCT UNDERWATER-F,RARG + EQUAL? RARG,M-END \FALSE + IGRTR? 'DROWN,2 \FALSE + CALL JIGS-UP,STR?101 + RSTACK + + + .FUNCT CRAG-F,RARG + EQUAL? RARG,M-ENTER \FALSE + SET 'DROWN,3 + RETURN DROWN + + + .FUNCT BALCONY-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is an octagonal room, half carved into and half built out from the cliff wall. Through the shattered windows which ring the outer wall you can see ocean to the horizon. A weathered metal plaque with barely readable lettering rests below the windows. The language seems to be a corrupt form of Galalingua. A steep stairway, roughly cut into the face of the cliff, leads upward. " + EQUAL? DAY,1 \?CCL6 + PRINTR "A rocky crag can be seen about eight meters below." +?CCL6: EQUAL? DAY,2 \?CCL8 + PRINTR "The ocean waters swirl below. The crag where you landed yesterday is now underwater!" +?CCL8: EQUAL? DAY,3 \FALSE + PRINTR "Ocean waters are lapping at the base of the balcony." + + + .FUNCT WINDING-STAIR-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "The middle of a long, steep stairway carved into the face of a cliff." + EQUAL? DAY,4 \?CCL6 + PRINTR " You hear the lapping of water from below." +?CCL6: EQUAL? DAY,5 \?CND4 + PRINTR " You can see ocean water splashing against the steps below you." +?CND4: CRLF + RTRUE + + + .FUNCT COURTYARD-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "You are in the courtyard of an ancient stone edifice, vaguely reminiscent of the castles you saw during your leave on Ramos Two. It has decayed to the point where it can probably be termed a ruin. Openings lead north and west, and a stairway downward is visible to the south. " + EQUAL? DAY,6,7 \?CCL6 + PRINTR "From the direction of the stairway comes the sound of ocean surf." +?CCL6: EQUAL? DAY,8 \?CND4 + PRINTR "Ocean water washes against the top few steps." +?CND4: CRLF + RTRUE + + + .FUNCT WATER-LEVEL-F + EQUAL? HERE,BALCONY \?CCL3 + EQUAL? DAY,1 \?CCL6 + RETURN CRAG +?CCL6: RETURN UNDERWATER +?CCL3: EQUAL? HERE,WINDING-STAIR \?CCL8 + LESS? DAY,4 \?CCL11 + RETURN BALCONY +?CCL11: RETURN UNDERWATER +?CCL8: EQUAL? HERE,COURTYARD \FALSE + LESS? DAY,6 \?CCL16 + RETURN WINDING-STAIR +?CCL16: RETURN UNDERWATER + + + .FUNCT REC-AREA-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a recreational facility of some sort. Games and tapes are scattered about the room. Hallways head off to the east and south, and to the north is a door which is " + FSET? CONFERENCE-DOOR,OPENBIT \?CCL6 + PRINTI "open" + JUMP ?CND4 +?CCL6: PRINTI "closed and locked. A dial on the door is currently set to " + PRINTN DIAL-NUMBER +?CND4: PRINTR "." + + + .FUNCT CONFERENCE-ROOM-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a fairly square room, almost filled by a round conference table. To the south is a door which is " + CALL DDESC,CONFERENCE-DOOR + PRINTR ". To the north is a small room about the size of a phone booth." + + + .FUNCT COMBINATION-DIAL-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "The dial can be turned to any number between 0 and 1000." +?CCL3: EQUAL? PRSA,V?SET \FALSE + EQUAL? PRSI,INTNUM \FALSE + FSET? COMBINATION-DIAL,MUNGEDBIT \?CCL10 + PRINTR "The dial has somehow become fused and won't move." +?CCL10: EQUAL? P-NUMBER,DIAL-NUMBER \?CCL12 + PRINTR "That's what the dial is set to now!" +?CCL12: EQUAL? P-NUMBER,NUMBER-NEEDED \?CCL14 + SET 'DIAL-NUMBER,0 + FSET CONFERENCE-DOOR,OPENBIT + PRINTR "The door swings open, and the dial resets to 0." +?CCL14: GRTR? P-NUMBER,1000 \?CCL16 + PRINTR "The dial cannot be turned to a number that high." +?CCL16: SET 'DIAL-NUMBER,P-NUMBER + PRINTI "The dial is now set to " + PRINTN P-NUMBER + PRINTR "." + + + .FUNCT CONFERENCE-DOOR-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? CONFERENCE-DOOR,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: EQUAL? HERE,REC-AREA \?CCL9 + PRINTR "The door is locked. You probably have to turn the dial to some number to open it." +?CCL9: PRINTR "The door seems to be locked from the other side." +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? CONFERENCE-DOOR,OPENBIT \?CCL14 + FCLEAR CONFERENCE-DOOR,OPENBIT + PRINTR "The door closes and you hear a click as it locks." +?CCL14: CALL IS-CLOSED + RSTACK + + + .FUNCT MESS-CORRIDOR-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a wide, east-west hallway with a large portal to the south. A small door to the north is " + CALL DDESC,STORAGE-WEST-DOOR + ZERO? PADLOCK-REMOVED \?CND4 + PRINTI " and hooked with a simple steel padlock" + FSET? PADLOCK,OPENBIT \?CCL8 + PRINTI " which hangs unlocked" + JUMP ?CND4 +?CCL8: PRINTI " which is also closed" +?CND4: PRINTR "." + + + .FUNCT STORAGE-WEST-DOOR-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? STORAGE-WEST-DOOR,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: ZERO? PADLOCK-REMOVED /?CCL8 + FSET STORAGE-WEST-DOOR,OPENBIT + PRINTR "Opened." +?CCL8: PRINTR "The door cannot be opened until the padlock is removed." +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL10 + FSET? STORAGE-WEST-DOOR,OPENBIT \?CCL13 + FCLEAR STORAGE-WEST-DOOR,OPENBIT + PRINTR "The door is now closed." +?CCL13: CALL IS-CLOSED + RSTACK +?CCL10: EQUAL? PRSA,V?UNLOCK \FALSE + PRINTI "The door itself isn't locked." + FSET? PADLOCK,OPENBIT /?CND16 + PRINTR " It is the padlock on the door which is locked." +?CND16: CRLF + RTRUE + + + .FUNCT PADLOCK-F + EQUAL? HERE,BRIG \?CCL3 + PRINTR "You can't see or reach the lock from inside the cell." +?CCL3: EQUAL? PRSA,V?OPEN-WITH \?CCL5 + EQUAL? PADLOCK,PRSO \?CCL5 + CALL PERFORM,V?UNLOCK,PADLOCK,PRSI + RTRUE +?CCL5: EQUAL? PRSA,V?OPEN,V?UNLOCK \?CCL9 + FSET? PADLOCK,OPENBIT /?CCL12 + ZERO? PRSI \?CCL15 + PRINTR "You can't open it with your hands." +?CCL15: EQUAL? PRSI,KEY \?CCL17 + FSET? PADLOCK,MUNGEDBIT \?CCL20 + PRINTR "Tsk, tsk ... the padlock seems to be fused shut." +?CCL20: FSET PADLOCK,OPENBIT + PRINTR "The padlock springs open." +?CCL17: PRINTR "That doesn't work." +?CCL12: PRINTR "The padlock is already unlocked." +?CCL9: EQUAL? PRSA,V?LOCK,V?CLOSE \?CCL22 + FSET? PADLOCK,OPENBIT \?CCL25 + FCLEAR PADLOCK,OPENBIT + PRINTR "The padlock closes with a sharp click." +?CCL25: PRINTR "The padlock is already locked." +?CCL22: EQUAL? PRSA,V?TAKE \?CCL27 + ZERO? PADLOCK-REMOVED \?CCL27 + FSET? PADLOCK,OPENBIT \?CCL32 + SET 'PADLOCK-REMOVED,TRUE-VALUE + FCLEAR PADLOCK,TRYTAKEBIT + FCLEAR PADLOCK,NDESCBIT + RFALSE +?CCL32: FSET? PADLOCK,OPENBIT /FALSE + PRINTR "The padlock is locked to the door." +?CCL27: EQUAL? PRSA,V?MUNG \FALSE + PRINTR "And, as we go into the next round, it's Padlock 1, Adventurer 0..." + + + .FUNCT CAN-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "This is a rather normal tin can. It is large and is labelled ""Spam and Egz.""" +?CCL3: EQUAL? PRSA,V?OPEN \FALSE + PRINTR "You certainly can't open it with your hands, and you don't seem to have found a can opener yet." + + + .FUNCT LADDER-F + EQUAL? PRSA,V?TAKE \?CCL3 + ZERO? LADDER-EXTENDED /FALSE + PRINTR "You can't possibly carry the ladder while it's extended." +?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL8 + PRINTI "It is a heavy-duty ladder built of sturdy aluminum tubing. It is currently " + ZERO? LADDER-EXTENDED /?CCL11 + PRINTR "extended to its full length of about 8 meters, but could be collapsed to a shorter length for easier carrying." +?CCL11: PRINTR "collapsed and is around two-and-a-half meters long, but if extended would obviously be much longer." +?CCL8: EQUAL? PRSA,V?OPEN \?CCL13 + ZERO? LADDER-EXTENDED /?CCL16 + PRINTR "The ladder is already extended." +?CCL16: EQUAL? HERE,STORAGE-EAST,STORAGE-WEST,BOOTH-2 /?CTR17 + EQUAL? HERE,UPPER-ELEVATOR,LOWER-ELEVATOR \?CCL18 +?CTR17: PRINTR "You can't extend the ladder in this tiny space!" +?CCL18: IN? LADDER,ADVENTURER \?CCL22 + PRINTR "You couldn't possibly extend the ladder while you're holding it." +?CCL22: FSET LADDER,TRYTAKEBIT + SET 'LADDER-EXTENDED,TRUE-VALUE + SET 'C-ELAPSED,36 + PRINTR "The ladder extends to a length of around eight meters." +?CCL13: EQUAL? PRSA,V?CLOSE \?CCL24 + ZERO? LADDER-EXTENDED /?CCL27 + SET 'C-ELAPSED,21 + ZERO? LADDER-FLAG /?CCL30 + SET 'LADDER-FLAG,FALSE-VALUE + REMOVE LADDER + PRINTR "As the ladder shortens it plunges into the rift." +?CCL30: SET 'LADDER-EXTENDED,FALSE-VALUE + FCLEAR LADDER,TRYTAKEBIT + PRINTR "The ladder collapses to a length of around two-and-a-half meters." +?CCL27: PRINTR "The ladder is already in its collapsed state." +?CCL24: EQUAL? PRSA,V?ATTRACT,V?SPAN \?CCL32 + EQUAL? PRSI,RIFT \?CCL32 + ZERO? LADDER-FLAG /?CCL37 + PRINTR "The ladder already spans the rift." +?CCL37: ZERO? LADDER-EXTENDED /?CCL40 + SET 'LADDER-FLAG,TRUE-VALUE + FSET LADDER,NDESCBIT + PRINTR "The ladder swings out across the rift and comes to rest on the far edge, spanning the precipice." +?CCL40: REMOVE LADDER + PRINTR "The ladder, far too short to reach the other edge of the rift, plunges into the rift and is lost forever." +?CCL32: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE + ZERO? LADDER-FLAG /?CCL45 + PRINTR "You can't climb a horizontal ladder!" +?CCL45: IN? LADDER,ADVENTURER \FALSE + PRINTR "That would be a neat trick, considering that you're holding it." + + + .FUNCT MESS-HALL-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a large hall lined with tables and benches. An opening to the north leads back to the corridor. A door to the south is " + CALL DDESC,KITCHEN-DOOR + PRINTR ". Next to the door is a small slot." + + + .FUNCT KITCHEN-DOOR-F + EQUAL? PRSA,V?OPEN \FALSE + PRINTR "A light flashes ""Pleez yuuz kitcin akses kard.""" + + + .FUNCT DISPENSER-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTI "This wall-mounted unit contains an octagonal niche beneath a spout. " + IN? CANTEEN,DISPENSER \?CND4 + PRINTI "A canteen is resting in the niche, its mouth lying just below the spout. " +?CND4: PRINTR "Above the spout is a button. The machine is labelled ""Hii Prooteen Likwid Dispensur.""" +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL7 + CALL NO-CLOSE + RTRUE +?CCL7: EQUAL? PRSA,V?PUT \FALSE + EQUAL? PRSO,CANTEEN \?CCL12 + MOVE CANTEEN,DISPENSER + PRINTR "The canteen fits snugly into the octagonal niche, its mouth resting just below the spout of the machine." +?CCL12: PRINTR "It doesn't fit in the niche." + + + .FUNCT HIGH-PROTEIN-F,X=0 + EQUAL? PRSA,V?EAT \?CCL3 + IN? CANTEEN,ADVENTURER /?CCL6 + SET 'PRSO,CANTEEN + CALL NOT-HOLDING + RSTACK +?CCL6: ZERO? HUNGER-LEVEL \?CCL9 + PRINT NOT-HUNGRY + CRLF + RTRUE +?CCL9: REMOVE HIGH-PROTEIN + SET 'C-ELAPSED,15 + SET 'HUNGER-LEVEL,0 + CALL QUEUE,I-HUNGER-WARNINGS,3600 + PUT STACK,0,1 + PRINTR "Mmmm....that was good. It certainly quenched your thirst and satisfied your hunger." +?CCL3: EQUAL? PRSA,V?POUR \FALSE + EQUAL? PRSO,HIGH-PROTEIN \FALSE + IN? CANTEEN,ADVENTURER /?CCL16 + PRINTR "Maybe if you were holding the canteen..." +?CCL16: ZERO? PRSI \?CND14 + SET 'PRSI,GROUND +?CND14: EQUAL? PRSI,FLASK \?CCL20 + CALL WORTHLESS-ACTION + RSTACK +?CCL20: EQUAL? PRSI,FUNNEL-HOLE \?CCL22 + IN? CHEMICAL-FLUID,FLASK \?CND23 + SET 'X,TRUE-VALUE +?CND23: SET 'CHEMICAL-REQUIRED,10 + REMOVE HIGH-PROTEIN + CALL PERFORM,V?POUR,CHEMICAL-FLUID,FUNNEL-HOLE + ZERO? X /TRUE + MOVE CHEMICAL-FLUID,FLASK + RTRUE +?CCL22: REMOVE HIGH-PROTEIN + PRINTI "The protein-rich fluid pours over the " + PRINTD PRSI + PRINTR " and then dries up." + + + .FUNCT WORTHLESS-ACTION + PRINTR "A worthless action -- and much too difficult for a poorly-written program like this one to handle." + + + .FUNCT LONG-HALL-F + PRINTI "You walk down the long, featureless hallway for a long time. Finally, you see " + SET 'C-ELAPSED,160 + EQUAL? HERE,CORRIDOR-JUNCTION \?CCL3 + PRINTI "some doorways ahead..." + CRLF + CRLF + RETURN DORM-CORRIDOR +?CCL3: PRINTI "an intersection ahead..." + CRLF + CRLF + RETURN CORRIDOR-JUNCTION + + + .FUNCT ADMIN-CORRIDOR-S-F,RARG + EQUAL? RARG,M-END \FALSE + FSET? KEY,INVISIBLE \FALSE + RANDOM 100 + LESS? 20,STACK /FALSE + PRINTR "You catch, out of the corner of your eye, a glint of light from the direction of the floor." + + + .FUNCT CREVICE-F + EQUAL? PRSA,V?REACH \?CCL3 + PRINTR "The crevice is too narrow to reach into." +?CCL3: EQUAL? PRSA,V?SEARCH,V?EXAMINE,V?LOOK-INSIDE \FALSE + FSET? KEY,TOUCHBIT \?CCL8 + PRINTR "Nothing there but bunches of dust." +?CCL8: FCLEAR KEY,INVISIBLE + PRINTR "Lying at the bottom of the narrow crack, partly covered by layers of dust, is a shiny steel key!" + + + .FUNCT KEY-F + EQUAL? PRSA,V?MOVE,V?ZATTRACT,V?TAKE \?CCL3 + FSET? KEY,TOUCHBIT /?CCL3 + EQUAL? PRSI,PLIERS \?CCL8 + PRINTR "These are heavy-duty pliers, too large to reach into this narrow crack." +?CCL8: EQUAL? PRSI,MAGNET \?CCL10 + CALL PERFORM,V?ATTRACT,MAGNET,KEY + RTRUE +?CCL10: ZERO? PRSI /?CCL12 + PRINTR "Nice try." +?CCL12: PRINTR "Either the crevice is too narrow, or your fingers are too large." +?CCL3: EQUAL? PRSA,V?PUT \FALSE + EQUAL? PRSI,CREVICE \FALSE + PRINTR "And you wonder why you're still only an Ensign Seventh Class?" + + + .FUNCT ADMIN-CORRIDOR-F,RARG + ZERO? LADDER-FLAG /?CCL3 + EQUAL? RARG,M-ENTER \?CCL3 + MOVE LADDER,HERE + RTRUE +?CCL3: EQUAL? RARG,M-LOOK \FALSE + PRINTI "The hallway, in fact the entire building, has been rent apart here, presumably by seismic upheaval. You can see the sky through the severed roof above, and the ground is thick with rubble. To the north is a gaping rift, at least eight meters across and thirty meters deep. " + ZERO? LADDER-FLAG /?CND8 + PRINTI "A metal ladder spans the rift. " +?CND8: PRINTR "A wide doorway, labelled ""Sistumz Moniturz,"" leads west." + + + .FUNCT ADMIN-CORRIDOR-N-F,RARG + ZERO? LADDER-FLAG /?CCL3 + EQUAL? RARG,M-ENTER \?CCL3 + MOVE LADDER,HERE + RTRUE +?CCL3: EQUAL? RARG,M-LOOK \FALSE + PRINTI "The corridor ends here. Portals lead west, north, and east. Signs above these portals read, respectively, ""Administraativ Awfisiz,"" ""Tranzportaashun Suplii,"" and ""Plan Ruum."" To the south is a wide rift" + ZERO? LADDER-FLAG /?CND8 + PRINTI ", spanned by a metal ladder," +?CND8: PRINTR " separating this area from the rest of the building." + + + .FUNCT LADDER-EXIT-F + ZERO? LADDER-FLAG /?CCL3 + SET 'C-ELAPSED,33 + PRINTI "You slowly make your way across the swaying ladder. You can see sharp, pointy rocks at the bottom of the rift, far below..." + CRLF + CRLF + EQUAL? HERE,ADMIN-CORRIDOR-N \?CCL6 + RETURN ADMIN-CORRIDOR +?CCL6: RETURN ADMIN-CORRIDOR-N +?CCL3: PRINTI "The rift is too wide to jump across." + CRLF + RFALSE + + + .FUNCT RIFT-F + EQUAL? PRSA,V?LEAP \?CCL3 + CALL JIGS-UP,STR?122 + RSTACK +?CCL3: EQUAL? PRSA,V?PUT \?CCL5 + EQUAL? RIFT,PRSI \?CCL5 + EQUAL? PRSO,LASER \?CND8 + CALL INT,I-WARMTH + PUT STACK,0,0 +?CND8: REMOVE PRSO + EQUAL? PRSO,SCRUB-BRUSH \?CCL12 + PRINTR "You watch with tremendous satisfaction as the brush is lost forever." +?CCL12: PRINTI "The " + PRINTD PRSO + PRINTR " sails gracefully into the rift." +?CCL5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE + PRINTR "The rift is at least eight meters wide and more than thirty meters deep. The bottom is covered with sharp and nasty rocks." + + + .FUNCT SYSTEMS-MONITORS-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a large room filled with tables full of strange equipment. " + CALL DESCRIBE-MONITORS + RSTACK + + + .FUNCT DESCRIBE-MONITORS + PRINTI "The far wall is filled with a number of monitors. Of these, the ones labelled " + ZERO? DEFENSE-FIXED /?CND1 + PRINTI "PLANATEREE DEFENS, " +?CND1: ZERO? COURSE-CONTROL-FIXED /?CND3 + PRINTI "PLANATEREE KORS KUNTROOL, " +?CND3: ZERO? COMM-FIXED /?CND5 + PRINTI "KUMUUNIKAASHUNZ, " +?CND5: PRINTI "LIIBREREE, REEAKTURZ, and LIIF SUPORT are green, but the one" + ZERO? DEFENSE-FIXED /?CCL8 + ZERO? COURSE-CONTROL-FIXED /?CCL8 + ZERO? COMM-FIXED \?CND7 +?CCL8: PRINTC 115 +?CND7: PRINTI " labelled " + ZERO? DEFENSE-FIXED \?CND12 + PRINTI "PLANATEREE DEFENS, " +?CND12: ZERO? COURSE-CONTROL-FIXED \?CND14 + PRINTI "PLANATEREE KORS KUNTROOL, " +?CND14: ZERO? COMM-FIXED \?CND16 + PRINTI "KUMUUNIKAASHUNZ, " +?CND16: ZERO? DEFENSE-FIXED /?CCL19 + ZERO? COURSE-CONTROL-FIXED /?CCL19 + ZERO? COMM-FIXED \?CND18 +?CCL19: PRINTI "and " +?CND18: PRINTI "PRAJEKT KUNTROOL indicate" + ZERO? DEFENSE-FIXED /?CND23 + ZERO? COURSE-CONTROL-FIXED /?CND23 + ZERO? COMM-FIXED /?CND23 + PRINTC 115 +?CND23: PRINTR " a malfunctioning condition." + + + .FUNCT DESK-F + EQUAL? PRSA,V?EXAMINE,V?SEARCH \FALSE + PRINTI "The desk has a drawer which is currently " + CALL DDESC,PRSO + PRINTR "." + + + .FUNCT OIL-CAN-F + EQUAL? PRSA,V?POUR \?CCL3 + ZERO? PRSI \?CND4 + SET 'PRSI,GROUND +?CND4: CALL PERFORM,V?OIL,PRSI + RTRUE +?CCL3: EQUAL? PRSA,V?EMPTY \FALSE + PRINTR "Pretty much impossible -- you could only do that one drop at a time." + + + .FUNCT CARTON-F + EQUAL? PRSA,V?CLOSE \FALSE + CALL NO-CLOSE + RTRUE + + + .FUNCT CRACKED-BOARD-F + EQUAL? PRSA,V?EXAMINE \FALSE + CALL EXAMINE-BOARD + PRINTR " This one looks as though it's been dropped." + + + .FUNCT GOOD-BEDISTOR-F + EQUAL? PRSA,V?TAKE \FALSE + ZERO? COURSE-CONTROL-FIXED /FALSE + CALL JIGS-UP,STR?137 + RSTACK + + + .FUNCT REACTOR-ELEVATOR-DOOR-F + EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE + PRINTR "It won't budge." + + + .FUNCT I-REACTOR-DOOR-CLOSE + CALL QUEUE,I-REACTOR-DOOR-CLOSE,-1 + PUT STACK,0,1 + EQUAL? HERE,REACTOR-ELEVATOR /FALSE + FCLEAR REACTOR-ELEVATOR-DOOR,OPENBIT + EQUAL? HERE,REACTOR-CONTROL \?CND4 + CRLF + PRINTI "The elevator door slides shut." + CRLF +?CND4: CALL INT,I-REACTOR-DOOR-CLOSE + PUT STACK,0,0 + RTRUE + + + .FUNCT FLASK-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTI "The flask has a wide mouth and looks large enough to hold one or two liters. It is made of glass, or perhaps some tough plastic" + IN? CHEMICAL-FLUID,FLASK \?CND4 + PRINTI ", and is filled with a milky white fluid" +?CND4: PRINTR "." +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL7 + CALL NO-CLOSE + RTRUE +?CCL7: EQUAL? PRSA,V?EMPTY \FALSE + IN? CHEMICAL-FLUID,FLASK \FALSE + EQUAL? PRSI,FUNNEL-HOLE \FALSE + CALL PERFORM,V?POUR,CHEMICAL-FLUID,FUNNEL-HOLE + RTRUE + + + .FUNCT MAGNET-F + EQUAL? PRSA,V?TAKE \?CCL3 + CALL QUEUE,I-MAGNET,-1 + PUT STACK,0,1 + RFALSE +?CCL3: EQUAL? PRSA,V?PUT-ON,V?ATTRACT \FALSE + EQUAL? PRSO,MAGNET \?CCL8 + IN? MAGNET,ADVENTURER /?CCL8 + CALL NOT-HOLDING + RSTACK +?CCL8: FSET? KEY,TOUCHBIT \?CCL12 + EQUAL? PRSI,KEY \?CCL12 + MOVE KEY,ADVENTURER + PRINTR "The key jumps against the ends of the magnet and sticks there. Proud of your feat, you remove the key from the magnet." +?CCL12: FSET? KEY,TOUCHBIT /FALSE + EQUAL? PRSI,KEY,CREVICE \FALSE + MOVE KEY,ADVENTURER + FCLEAR KEY,INVISIBLE + FCLEAR KEY,TRYTAKEBIT + FSET KEY,TOUCHBIT + PRINTR "With a spray of dust and a loud clank, a piece of metal leaps from the crevice and affixes itself to the magnet. It is a steel key! With a tug, you remove the key from the magnet." + + + .FUNCT I-MAGNET + IN? MAGNET,ADVENTURER \?CCL3 + CALL HELD?,KITCHEN-CARD + ZERO? STACK /?CCL6 + FSET KITCHEN-CARD,SCRAMBLEDBIT + RFALSE +?CCL6: CALL HELD?,SHUTTLE-CARD + ZERO? STACK /?CCL8 + FSET SHUTTLE-CARD,SCRAMBLEDBIT + RFALSE +?CCL8: CALL HELD?,TELEPORTATION-CARD + ZERO? STACK /?CCL10 + FSET TELEPORTATION-CARD,SCRAMBLEDBIT + RFALSE +?CCL10: CALL HELD?,UPPER-ELEVATOR-CARD + ZERO? STACK /?CCL12 + FSET UPPER-ELEVATOR-CARD,SCRAMBLEDBIT + RFALSE +?CCL12: CALL HELD?,LOWER-ELEVATOR-CARD + ZERO? STACK /?CCL14 + FSET LOWER-ELEVATOR-CARD,SCRAMBLEDBIT + RFALSE +?CCL14: CALL HELD?,MINI-CARD + ZERO? STACK /?CCL16 + FSET MINI-CARD,SCRAMBLEDBIT + RFALSE +?CCL16: CALL HELD?,ID-CARD + ZERO? STACK /FALSE + FSET ID-CARD,SCRAMBLEDBIT + RFALSE +?CCL3: CALL INT,I-MAGNET + PUT STACK,0,0 + RFALSE + + + .FUNCT MACHINE-SHOP-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "This room is probably some sort of machine shop filled with a variety of unusual machines. Doorways lead north, east, and west. + +Standing against the rear wall is a large dispensing machine with a spout. " + EQUAL? SPOUT-PLACED,GROUND /?CND4 + PRINTI "Sitting under the spout is " + FSET? SPOUT-PLACED,VOWELBIT \?CCL8 + PRINTI "an " + JUMP ?CND6 +?CCL8: PRINTI "a " +?CND6: PRINTD SPOUT-PLACED + PRINTI ". " +?CND4: PRINTR "The dispenser is lined with brightly-colored buttons. The first four buttons, labelled ""KUULINTS 1 - 4"", are colored red, blue, green, and yellow. The next three buttons, labelled ""KATALISTS 1 - 3"", are colored gray, brown, and black. The last two buttons are both white. One of these is square and says ""BAAS."" The other white button is round and says ""ASID.""" +?CCL3: EQUAL? RARG,M-END \FALSE + EQUAL? SPOUT-PLACED,GROUND \FALSE + IN? FLOYD,HERE \FALSE + FSET? FLOYD,RLANDBIT \FALSE + RANDOM 100 + LESS? 15,STACK /FALSE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTR "Floyd pushes one of the dispenser buttons. Fluid pours from the spout and splashes across the floor. Floyd jumps up and down, giggling." + + + .FUNCT CHEMICAL-DISPENSER-F + EQUAL? PRSA,V?PUT-UNDER \FALSE + EQUAL? PRSI,CHEMICAL-DISPENSER \FALSE + EQUAL? SPOUT-PLACED,GROUND \?CCL8 + MOVE PRSO,HERE + PRINTI "The " + PRINTD PRSO + PRINTI " is now sitting under the spout." + CRLF + SET 'SPOUT-PLACED,PRSO + RETURN SPOUT-PLACED +?CCL8: PRINTI "The " + PRINTD SPOUT-PLACED + PRINTR " is already resting under the spout." + + + .FUNCT CHEM-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + FSET? CHEMICAL-DISPENSER,MUNGEDBIT \?CCL6 + PRINTR "The machine coughs a few times, but nothing else happens." +?CCL6: EQUAL? SPOUT-PLACED,FLASK \?CCL8 + IN? CHEMICAL-FLUID,FLASK \?CCL11 + PRINTR "Another dose of the chemical fluid pours out of the spout, splashes over the already-full flask, spills onto the floor, and dries up." +?CCL11: MOVE CHEMICAL-FLUID,FLASK + PRINTI "The flask fills with some " + GETP PRSO,P?C-MOVE >CHEMICAL-FLAG + GETP PRSO,P?C-MOVE + GET COLOR-LTBL,STACK + PRINT STACK + PRINTR " chemical fluid. The fluid gradually turns milky white." +?CCL8: EQUAL? SPOUT-PLACED,CANTEEN \?CCL13 + FSET? CANTEEN,OPENBIT \?CCL13 + PRINTR "Chemical fluid gushes from the spout. Unfortunately, the mouth of the canteen is very narrow, and the fluid just splashes over it." +?CCL13: PRINTI "Some sort of chemical fluid pours out of the spout, spills all over the " + PRINTD SPOUT-PLACED + PRINTI ", and dries up." + CRLF + EQUAL? PRSO,ROUND-WHITE-BUTTON,SQUARE-WHITE-BUTTON \TRUE + FSET? SPOUT-PLACED,ACIDBIT /?CCL17 + FSET? SPOUT-PLACED,MUNGBIT \TRUE +?CCL17: SET 'CHEMICAL-FLAG,9 + CALL PERFORM,V?POUR,CHEMICAL-FLUID,SPOUT-PLACED + RTRUE + + + .FUNCT FLOYD-F,X,N + EQUAL? FLOYD,WINNER \?CCL3 + SET 'FLOYD-SPOKE,TRUE-VALUE + EQUAL? PRSA,V?GIVE \?CCL6 + EQUAL? PRSI,ME \?CCL6 + SET 'WINNER,ADVENTURER + CALL PERFORM,V?ASK-FOR,FLOYD,PRSO + RTRUE +?CCL6: EQUAL? PRSA,V?SGIVE \?CCL10 + EQUAL? PRSO,ME \?CCL10 + SET 'WINNER,ADVENTURER + CALL PERFORM,V?ASK-FOR,FLOYD,PRSI + RTRUE +?CCL10: EQUAL? PRSA,V?WALK \?CCL14 + EQUAL? HERE,REPAIR-ROOM \?CCL17 + EQUAL? PRSO,P?NORTH,P?IN \?CCL17 + CALL FLOYD-THROUGH-HOLE + JUMP ?CND15 +?CCL17: EQUAL? HERE,BIO-LOCK-EAST \?CCL21 + EQUAL? PRSO,P?EAST \?CCL21 + CALL FLOYD-INTO-LAB + JUMP ?CND15 +?CCL21: EQUAL? HERE,RADIATION-LOCK-EAST \?CCL25 + EQUAL? PRSO,P?EAST \?CCL25 + PRINTI """After you.""" + CRLF + JUMP ?CND15 +?CCL25: PRINTI "Floyd looks slightly embarrassed. ""You know me and my sense of direction."" Then he looks up at you with wide, trusting eyes. ""Tell Floyd a story?""" + CRLF +?CND15: CALL FLUSH + ZERO? STACK /TRUE + RETURN 2 +?CCL14: EQUAL? PRSA,V?THROUGH \?CCL33 + CALL FLOYDS-FAMOUS-DOOR-ROUTINE + CALL FLUSH + ZERO? STACK /TRUE + RETURN 2 +?CCL33: EQUAL? PRSA,V?TAKE \?CCL39 + EQUAL? PRSO,GOOD-BOARD \?CCL39 + IN? GOOD-BOARD,ROBOT-HOLE /?CCL44 + PRINTI "Floyd looks half-bored and half-annoyed. " + PRINTR "Floyd already did that. How about some leap-frogger?""" +?CCL44: ZERO? BOARD-REPORTED /?CCL46 + MOVE GOOD-BOARD,ADVENTURER + FCLEAR GOOD-BOARD,NDESCBIT + FSET GOOD-BOARD,TAKEBIT + SET 'C-ELAPSED,22 + PRINTR "Floyd shrugs. ""If you say so."" He vanishes for a few minutes, and returns holding the fromitz board. It seems to be in good shape. He tosses it toward you, and you just manage to catch it before it smashes." +?CCL46: PRINTR """Huh?"" asks Floyd. ""What fromitz board?""" +?CCL39: EQUAL? PRSA,V?FOLLOW \?CCL48 + EQUAL? PRSO,ME \?CCL48 + PRINTR """Okay!""" +?CCL48: EQUAL? PRSA,V?HELLO \?CCL52 + SET 'WINNER,ADVENTURER + CALL PERFORM,V?HELLO,FLOYD + RTRUE +?CCL52: EQUAL? PRSA,V?DROP \?CCL54 + IN? PRSO,FLOYD \?CCL57 + RANDOM 100 + LESS? 50,STACK /?CCL60 + MOVE PRSO,HERE + PRINTI "Floyd shrugs and drops the " + PRINTD PRSO + PRINTR "." +?CCL60: PRINTI "Floyd clutches the " + PRINTD PRSO + PRINTR " even more tightly. ""Floyd won't,"" he says defiantly." +?CCL57: CALL FLOYD-NOT-HAVE + RSTACK +?CCL54: PRINTI "Floyd whines, ""Enough talking! Let's play Hider-and-Seeker.""" + CRLF + RETURN 2 +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL64 + PRINTR "Huh?" +?CCL64: EQUAL? PRSA,V?REACH,V?LOOK-INSIDE \?CCL66 + CALL PERFORM,V?OPEN,FLOYD + RTRUE +?CCL66: FSET? FLOYD,RLANDBIT \?CCL68 + SET 'FLOYD-SPOKE,TRUE-VALUE + EQUAL? PRSA,V?LAMP-ON \?CCL71 + PRINTR "He's already been activated." +?CCL71: EQUAL? PRSA,V?LAMP-OFF \?CCL73 + FCLEAR FLOYD,RLANDBIT + FCLEAR FLOYD,ACTORBIT + CALL INT,I-FLOYD + PUT STACK,0,0 + PRINTI "Floyd, shocked by this betrayal from his new-found friend, whimpers and keels over" + FIRST? FLOYD \?CCL76 + PRINTI ", dropping what he was carrying." + CRLF + JUMP ?CND74 +?CCL76: PRINTC 46 + CRLF +?CND74: FIRST? FLOYD >X /?PRG78 +?PRG78: ZERO? X /TRUE + NEXT? X >N /?BOGUS83 +?BOGUS83: MOVE X,HERE + SET 'X,N + JUMP ?PRG78 +?CCL73: EQUAL? PRSA,V?EXAMINE \?CCL85 + PRINTR "From its design, the robot seems to be of the multi-purpose sort. It is slightly cross-eyed, and its mechanical mouth forms a lopsided grin." +?CCL85: EQUAL? PRSA,V?KISS \?CCL87 + PRINTR "You receive a painful electric shock." +?CCL87: EQUAL? PRSA,V?SCOLD \?CCL89 + PRINTR "Floyd looks defensive. ""What did Floyd do wrong?""" +?CCL89: EQUAL? PRSA,V?PLAY-WITH \?CCL91 + SET 'C-ELAPSED,30 + CALL QUEUE,I-FLOYD,1 + PUT STACK,0,1 + PRINTR "You play with Floyd for several centichrons until you drop to the floor, exhausted. Floyd pokes at you gleefully. ""C'mon! Let's play some more!""" +?CCL91: EQUAL? PRSA,V?LISTEN \?CCL93 + PRINTR "Floyd is babbling about this and that." +?CCL93: EQUAL? PRSA,V?TAKE \?CCL95 + EQUAL? PRSO,FLOYD \?CCL95 + PRINTR "You manage to lift Floyd a few inches off the ground, but he is too heavy and you drop him suddenly. Floyd gives a surprised squeal and moves a respectable distance away." +?CCL95: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL99 + PRINTR "Floyd starts dashing around the room. ""Oh boy oh boy oh boy! I haven't played Chase and Tag for years! You be It! Nah, nah!""" +?CCL99: EQUAL? PRSA,V?SHAKE,V?KICK \?CCL101 + PRINTR """Why you do that?"" Floyd whines. ""I think a wire now shaken loose."" He goes off into a corner and sulks." +?CCL101: EQUAL? PRSA,V?TALK,V?HELLO \?CCL103 + PRINTR """Hi!"" Floyd grins and bounces up and down." +?CCL103: EQUAL? PRSA,V?OPEN,V?SCRUB,V?SEARCH \?CCL105 + PRINTR "Floyd giggles and pushes you away. ""You're tickling Floyd!"" He clutches at his side panels, laughing hysterically. Oil drops stream from his eyes." +?CCL105: EQUAL? PRSA,V?PUT,V?GIVE \?CCL107 + EQUAL? FLOYD,PRSI \?CCL107 + EQUAL? PRSO,LAZARUS-PART \?CCL112 + REMOVE FLOYD + SET 'FLOYD-FOLLOW,FALSE-VALUE + MOVE LAZARUS-PART,HERE + CALL QUEUE,I-FLOYD,40 + PUT STACK,0,1 + PRINTR "At first, Floyd is all grins because of your gift. Then, he realizes what it is, begins weeping, drops the breastplate, and rushes out of the room." +?CCL112: EQUAL? PRSO,RED-GOO,GREEN-GOO,BROWN-GOO \?CCL114 + PRINTR "Floyd looks at the goo. ""Yech! Got any Number Seven Heavy Grease?""" +?CCL114: FIRST? FLOYD /?CTR115 + RANDOM 100 + LESS? 25,STACK /?CCL116 +?CTR115: MOVE PRSO,HERE + PRINTI "Floyd examines the " + PRINTD PRSO + PRINTI ", shrugs, and drops " + EQUAL? PRSO,PLIERS \?CCL121 + PRINTR "them." +?CCL121: PRINTR "it." +?CCL116: MOVE PRSO,FLOYD + PRINTR """Neat!"" exclaims Floyd. He thanks you profusely." +?CCL107: EQUAL? PRSA,V?SHOW \?CCL123 + EQUAL? FLOYD,PRSI \?CCL123 + EQUAL? PRSO,PRINT-OUT \?CCL128 + ZERO? COMPUTER-FLAG \?CCL128 + CALL COMPUTER-ACTION + RSTACK +?CCL128: EQUAL? PRSO,ROBOT-HOLE \?CCL132 + CALL FLOYD-THROUGH-HOLE + RSTACK +?CCL132: EQUAL? HERE,REC-AREA \?CCL134 + EQUAL? PRSO,PSEUDO-OBJECT \?CCL134 + PRINTR """Too intellectual for Floyd. Any paddleball sets around?""" +?CCL134: EQUAL? PRSO,ID-CARD,SHUTTLE-CARD /?CTR137 + EQUAL? PRSO,KITCHEN-CARD,UPPER-ELEVATOR-CARD \?CCL138 +?CTR137: PRINTR "Floyd scratches his head. ""Aren't those things usually blue?""" +?CCL138: EQUAL? PRSO,LOWER-ELEVATOR-CARD \?CCL142 + ZERO? CARD-REVEALED \?CCL142 + SET 'CARD-REVEALED,TRUE-VALUE + PRINTR """I've got one just like that!"" says Floyd. He looks through several of his compartments, then glances at you suspiciously." +?CCL142: PRINTI "Floyd looks over the " + PRINTD PRSO + PRINTR ". ""Can you play any games with it?"" he asks." +?CCL123: EQUAL? PRSA,V?RUB \?CCL146 + PRINTR "Floyd gives a contented sigh." +?CCL146: EQUAL? PRSA,V?SMELL \?CCL148 + PRINTR "Floyd smells faintly of ozone and light machine oil." +?CCL148: EQUAL? PRSA,V?ASK-FOR \FALSE + IN? PRSI,FLOYD \?CCL153 + MOVE PRSI,ADVENTURER + PRINTI """Okay,"" says Floyd, handing you the " + PRINTD PRSI + PRINTR ", ""but only because you're Floyd's best friend.""" +?CCL153: CALL FLOYD-NOT-HAVE + RSTACK +?CCL68: EQUAL? PRSA,V?LAMP-ON \?CCL156 + ZERO? FLOYD-INTRODUCED /?CCL159 + CALL QUEUE,I-FLOYD,-1 + PUT STACK,0,1 + RTRUE +?CCL159: CALL QUEUE,I-FLOYD,25 + PUT STACK,0,1 + PRINTI "Nothing happens." + CRLF + ZERO? FLOYD-SCORE-FLAG \TRUE + SET 'FLOYD-SCORE-FLAG,TRUE-VALUE + ADD SCORE,2 >SCORE + RTRUE +?CCL156: EQUAL? PRSA,V?LAMP-OFF \?CCL163 + PRINTR "The robot doesn't seem to be on." +?CCL163: EQUAL? PRSA,V?EXAMINE \?CCL165 + PRINTR "The de-activated robot is leaning against the wall, its head lolling to the side. It is short, and seems to be equipped for general-purpose work. It has apparently been turned off." +?CCL165: EQUAL? PRSA,V?OPEN,V?SEARCH \FALSE + ZERO? CARD-REVEALED \?CCL170 + ZERO? CARD-STOLEN \?CCL170 + FCLEAR LOWER-ELEVATOR-CARD,INVISIBLE + MOVE LOWER-ELEVATOR-CARD,ADVENTURER + CALL SCORE-OBJ,LOWER-ELEVATOR-CARD + SET 'CARD-STOLEN,TRUE-VALUE + PRINTR "In one of the robot's compartments you find and take a magnetic-striped card embossed ""Loowur Elavaatur Akses Kard.""" +?CCL170: PRINTR "Your search discovers nothing in the robot's compartments except a single crayon which you leave where you found it." + + + .FUNCT FLOYDS-FAMOUS-DOOR-ROUTINE + EQUAL? PRSO,ROBOT-HOLE \?CCL3 + CALL FLOYD-THROUGH-HOLE + RSTACK +?CCL3: EQUAL? PRSO,BIO-DOOR-EAST \?CCL5 + CALL FLOYD-INTO-LAB + RSTACK +?CCL5: FSET? PRSO,DOORBIT \?CCL7 + PRINTR """You go first,"" says Floyd." +?CCL7: PRINTR "Floyd scratches his head and looks at you." + + + .FUNCT FLUSH + ZERO? P-CONT /FALSE + SET 'P-CONT,FALSE-VALUE + CRLF + PRINTR "Floyd scratches his head and looks at you. ""What else were you saying to Floyd? I can't remember.""" + + + .FUNCT FLOYD-INTO-LAB + ZERO? FLOYD-WAITING /?CCL3 + PRINTR """As soon as you open the door, dummy.""" +?CCL3: PRINTR """Are you kidding? Floyd not going in THERE without a good reason.""" + + + .FUNCT FLOYD-NOT-HAVE + PRINTR """Floyd does not one of those have!""" + + + .FUNCT FLOYD-COMES-ALIVE,FOO + IN? FLOYD,HERE \?CND1 + ZERO? FLOYD-REACTIVATED /?CCL5 + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTI "Floyd jumps to his feet, hopping mad. ""Why you turn Floyd off?"" he asks accusingly." + CRLF + JUMP ?CND1 +?CCL5: SET 'FLOYD-INTRODUCED,TRUE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTI "Suddenly, the robot comes to life and its head starts swivelling about. It notices you and bounds over. ""Hi! I'm B-19-7, but to everyperson I'm called Floyd. Are you a doctor-person or a planner-person? " + FIRST? ADVENTURER >FOO \?CND6 + PRINTI "That's a nice " + PRINTD FOO + PRINTI " you are having there. " +?CND6: PRINTI "Let's play Hider-and-Seeker you with me.""" + CRLF +?CND1: FSET FLOYD,RLANDBIT + FSET FLOYD,ACTORBIT + FSET FLOYD,TOUCHBIT + SET 'FLOYD-REACTIVATED,TRUE-VALUE + RETURN FLOYD-REACTIVATED + + + .FUNCT I-FLOYD + CALL QUEUE,I-FLOYD,-1 + PUT STACK,0,1 + FSET? FLOYD,RLANDBIT /?CCL3 + FSET FLOYD,ACTORBIT + CRLF + CALL FLOYD-COMES-ALIVE + JUMP ?CND1 +?CCL3: IN? FLOYD,HERE \?CCL5 + ZERO? FLOYD-INTRODUCED \?CCL8 + SET 'FLOYD-INTRODUCED,TRUE-VALUE + CRLF + PRINTI "The robot, now apparently active, notices you enter. ""Hi,"" he says. ""I'm Floyd!""" + CRLF + JUMP ?CND1 +?CCL8: ZERO? FLOYD-FOLLOW /?CCL10 + FSET? HERE,FLOYDBIT \?CCL10 + RANDOM 100 + LESS? 6,STACK /?CCL10 + REMOVE FLOYD + SET 'FLOYD-FOLLOW,FALSE-VALUE + CRLF + PRINTI "Floyd says ""Floyd going exploring. See you later."" He glides out of the room." + CRLF + JUMP ?CND1 +?CCL10: SET 'FLOYD-FOLLOW,TRUE-VALUE + RANDOM 100 + LESS? 40,STACK /?CND1 + ZERO? FLOYD-SPOKE \?CND1 + PRINTI "Floyd " + CALL PICK-ONE,FLOYDISMS + PRINT STACK + PRINTR "." +?CCL5: ZERO? FLOYD-FOLLOW /?CCL20 + RANDOM 100 + LESS? 80,STACK /?CCL20 + IN? LAZARUS-PART,HERE \?CND23 + SET 'FLOYD-FOLLOW,FALSE-VALUE + CRLF + PRINTR "Floyd starts to follow you but notices the Lazarus breast plate. He sniffs and leaves the room." +?CND23: MOVE FLOYD,HERE + PRINTI "Floyd follows you." + CRLF + CALL KLUDGE + JUMP ?CND1 +?CCL20: SET 'FLOYD-FOLLOW,FALSE-VALUE + EQUAL? HERE,BOOTH-1,BOOTH-2,BOOTH-3 \?CCL27 + MOVE FLOYD,HERE + ZERO? FLOYD-INTRODUCED \?CND28 + CRLF + CALL CALL-ME-FLOYD + RTRUE +?CND28: CRLF + PRINTI "Floyd scampers into the booth. ""Oooo, this is a tiny room,"" he remarks." + CRLF + JUMP ?CND1 +?CCL27: EQUAL? HERE,BIO-LOCK-EAST,BIO-LOCK-WEST \?PRD33 + ZERO? FLOYD-GAVE-UP /?CTR30 +?PRD33: EQUAL? HERE,RADIATION-LOCK-EAST,RADIATION-LOCK-WEST \?CCL31 +?CTR30: MOVE FLOYD,HERE + ZERO? FLOYD-INTRODUCED \?CND36 + CRLF + CALL CALL-ME-FLOYD + RTRUE +?CND36: CRLF + PRINTI "Floyd glides after you. ""Is this...is this a squash court?"" he asks." + CRLF + JUMP ?CND1 +?CCL31: EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST /?CTR38 + EQUAL? HERE,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST /?CTR38 + EQUAL? HERE,UPPER-ELEVATOR,LOWER-ELEVATOR,REACTOR-ELEVATOR /?CTR38 + EQUAL? HERE,MESS-HALL \?CCL39 + IN? FLOYD,KITCHEN \?CCL39 +?CTR38: MOVE FLOYD,HERE + ZERO? FLOYD-INTRODUCED \?CND46 + CRLF + CALL CALL-ME-FLOYD + RTRUE +?CND46: CRLF + PRINTI "Floyd bounces into the " + EQUAL? HERE,UPPER-ELEVATOR,LOWER-ELEVATOR,REACTOR-ELEVATOR \?CCL50 + PRINTI "elevator" + JUMP ?CND48 +?CCL50: EQUAL? HERE,MESS-HALL \?CCL52 + PRINTI "room" + JUMP ?CND48 +?CCL52: PRINTI "cabin" +?CND48: PRINTI ". ""Hey, wait for Floyd!"" he yells, smiling broadly." + CRLF + JUMP ?CND1 +?CCL39: EQUAL? HERE,MINI-BOOTH \?CCL54 + MOVE FLOYD,HERE + ZERO? FLOYD-INTRODUCED \?CND55 + CRLF + CALL CALL-ME-FLOYD + RTRUE +?CND55: CRLF + PRINTI """Hi,"" whispers Floyd, tiptoeing in. ""Are we going to teleport into the computer like Achilles always used to do?""" + CRLF + JUMP ?CND1 +?CCL54: RANDOM 100 + LESS? 30,STACK /?CND1 + EQUAL? HERE,INFIRMARY \?CND58 + ZERO? LAZARUS-FLAG \FALSE +?CND58: MOVE FLOYD,HERE + ZERO? FLOYD-INTRODUCED /?CCL64 + RANDOM 100 + LESS? 15,STACK /?CCL67 + IN? ADVENTURER,BED /?CCL67 + CRLF + PRINTI "Floyd rushes into the room and barrels into you. ""Oops, sorry,"" he says. ""Floyd not looking at where he was going to.""" + CRLF + JUMP ?CND65 +?CCL67: CRLF + PRINTI "Floyd bounds into the room. ""Floyd here now!"" he cries." + CRLF +?CND65: CALL KLUDGE + JUMP ?CND1 +?CCL64: CRLF + CALL CALL-ME-FLOYD +?CND1: SET 'FLOYD-SPOKE,FALSE-VALUE + RETURN FLOYD-SPOKE + + + .FUNCT CALL-ME-FLOYD + SET 'FLOYD-INTRODUCED,TRUE-VALUE + PRINTR "The robot you were fiddling with in the Robot Shop bounds into the room. ""Hi!"" he says, with a wide and friendly smile. ""You turn Floyd on? Be Floyd's friend, yes?""" + + + .FUNCT KLUDGE + EQUAL? HERE,REPAIR-ROOM \?CCL3 + ZERO? ACHILLES-FLAG \?CCL3 + SET 'ACHILLES-FLAG,TRUE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTR "Floyd points at the fallen robot. ""That's Achilles. He was in charge of repairing machinery. He repaired Floyd once. I never liked him much; he wasn't friendly like other robots. Looks like he fell down the stairs. He always had trouble with one of his feet working right. A Planner-person once told me that's why they named him Achilles.""" +?CCL3: EQUAL? HERE,COMPUTER-ROOM \FALSE + ZERO? COMPUTER-FLAG \FALSE + CALL COMPUTER-ACTION + RSTACK + + + .FUNCT DEAD-FLOYD-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "You turn to look at Floyd, but a tremendous sense of loss overcomes you, and you turn away." +?CCL3: EQUAL? PRSA,V?LAMP-ON \?CCL5 + PRINTR "As you touch Floyd's on-off switch, it falls off in your hands." +?CCL5: EQUAL? PRSA,V?LAMP-OFF \FALSE + PRINTR "I'm afraid that Floyd has already been turned off, permanently, and gone to that great robot shop in the sky." + + + .FUNCT ELEVATOR-LOBBY-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a wide, brightly lit lobby. A blue metal door to the north is " + FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6 + EQUAL? UPPER-ELEVATOR-UP,FALSE-VALUE \?CCL6 + PRINTI "open" + JUMP ?CND4 +?CCL6: PRINTI "closed" +?CND4: PRINTI " and a larger red metal door to the south is " + FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL11 + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL11 + FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CND14 + EQUAL? UPPER-ELEVATOR-UP,FALSE-VALUE \?CND14 + PRINTI "also " +?CND14: PRINTI "open" + JUMP ?CND9 +?CCL11: FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CCL19 + EQUAL? UPPER-ELEVATOR-UP,TRUE-VALUE \?CND18 +?CCL19: PRINTI "also " +?CND18: PRINTI "closed" +?CND9: PRINTR ". Beside the blue door is a blue button, and beside the red door is a red button. A corridor leads west. To the east is a small room about the size of a telephone booth." + + + .FUNCT UPPER-ELEVATOR-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "You have entered a tiny room with a sliding door to the south which is " + CALL DDESC,UPPER-ELEVATOR-DOOR + PRINTR ". A control panel contains an Up button, a Down button, and a narrow slot." +?CCL3: EQUAL? RARG,M-END \FALSE + FSET? UPPER-ELEVATOR-DOOR,OPENBIT /FALSE + RANDOM 100 + LESS? 10,STACK /FALSE + PRINTR "Some innocuous Hawaiian music oozes from the elevator's intercom." + + + .FUNCT LOWER-ELEVATOR-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a medium-sized room with a door to the north which is " + CALL DDESC,LOWER-ELEVATOR-DOOR + PRINTR ". A control panel contains an Up button, a Down button, and a narrow slot." + + + .FUNCT ELEVATOR-ENTER-F + EQUAL? PRSO,P?NORTH \?CCL3 + FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6 + EQUAL? UPPER-ELEVATOR-UP,FALSE-VALUE \?CCL6 + RETURN UPPER-ELEVATOR +?CCL6: CALL DOOR-CLOSED + RFALSE +?CCL3: EQUAL? PRSO,P?SOUTH \FALSE + FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL13 + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL13 + RETURN LOWER-ELEVATOR +?CCL13: CALL DOOR-CLOSED + RFALSE + + + .FUNCT ELEVATOR-EXIT-F + EQUAL? HERE,UPPER-ELEVATOR \?CCL3 + FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6 + EQUAL? UPPER-ELEVATOR-UP,TRUE-VALUE \?CCL9 + RETURN TOWER-CORE +?CCL9: RETURN ELEVATOR-LOBBY +?CCL6: CALL DOOR-CLOSED + RFALSE +?CCL3: EQUAL? HERE,LOWER-ELEVATOR \FALSE + FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL14 + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL17 + RETURN ELEVATOR-LOBBY +?CCL17: RETURN WAITING-AREA +?CCL14: CALL DOOR-CLOSED + RFALSE + + + .FUNCT UPPER-ELEVATOR-DOOR-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: PRINTR "It won't budge." +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? UPPER-ELEVATOR-DOOR,OPENBIT \?CCL11 + PRINTR "You can't close it yourself." +?CCL11: CALL IS-CLOSED + RSTACK + + + .FUNCT LOWER-ELEVATOR-DOOR-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL6 + EQUAL? HERE,ELEVATOR-LOBBY \?CCL6 + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL11 + EQUAL? HERE,WAITING-AREA \?CCL11 + EQUAL? LOWER-ELEVATOR-UP,FALSE-VALUE \?CCL11 + CALL ALREADY-OPEN + RSTACK +?CCL11: PRINTR "It won't budge." +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL19 + EQUAL? HERE,ELEVATOR-LOBBY \?CCL19 + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL19 + PRINTR "You can't close it yourself." +?CCL19: FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL24 + EQUAL? HERE,WAITING-AREA \?CCL24 + EQUAL? LOWER-ELEVATOR-UP,FALSE-VALUE \?CCL24 + PRINTR "You can't close it yourself." +?CCL24: CALL IS-CLOSED + RSTACK + + + .FUNCT DOOR-CLOSED + PRINTR "The door is closed." + + + .FUNCT BLUE-ELEVATOR-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + EQUAL? UPPER-ELEVATOR-UP,TRUE-VALUE \FALSE + CALL INT,I-UPPER-ELEVATOR-ARRIVE + GET STACK,C-ENABLED? + EQUAL? STACK,1 \?CCL8 + PRINTR "Patience, patience..." +?CCL8: RANDOM 20 + ADD STACK,40 + CALL QUEUE,I-UPPER-ELEVATOR-ARRIVE,STACK + PUT STACK,0,1 + PRINTR "You hear a faint whirring noise from behind the blue door." + + + .FUNCT RED-ELEVATOR-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + EQUAL? LOWER-ELEVATOR-UP,FALSE-VALUE \FALSE + CALL INT,I-LOWER-ELEVATOR-ARRIVE + GET STACK,C-ENABLED? + EQUAL? STACK,1 \?CCL8 + PRINTR "Patience, patience..." +?CCL8: RANDOM 40 + ADD STACK,80 + CALL QUEUE,I-LOWER-ELEVATOR-ARRIVE,STACK + PUT STACK,0,1 + PRINTR "The red door begins vibrating a bit." + + + .FUNCT I-UPPER-ELEVATOR-ARRIVE + FSET UPPER-ELEVATOR-DOOR,OPENBIT + SET 'UPPER-ELEVATOR-UP,FALSE-VALUE + CALL INT,I-UPPER-ELEVATOR-ARRIVE + PUT STACK,0,0 + EQUAL? HERE,ELEVATOR-LOBBY \FALSE + CRLF + PRINTR "The door at the north end of the room slides open." + + + .FUNCT I-LOWER-ELEVATOR-ARRIVE + FSET LOWER-ELEVATOR-DOOR,OPENBIT + SET 'LOWER-ELEVATOR-UP,TRUE-VALUE + CALL INT,I-LOWER-ELEVATOR-ARRIVE + PUT STACK,0,0 + EQUAL? HERE,ELEVATOR-LOBBY \FALSE + CRLF + PRINTR "The door at the south end of the room slides open." + + + .FUNCT ELEVATOR-BUTTON-F + EQUAL? PRSA,V?PUSH-UP \?CCL3 + EQUAL? HERE,LOWER-ELEVATOR \?CCL6 + EQUAL? LOWER-ELEVATOR-UP,FALSE-VALUE \?CCL6 + EQUAL? LOWER-ELEVATOR-ON,TRUE-VALUE \?CCL6 + EQUAL? ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL6 + PRINT ELEVATOR-STARTS + CRLF + FCLEAR LOWER-ELEVATOR-DOOR,OPENBIT + SET 'ELEVATOR-IN-TRANSIT,TRUE-VALUE + CALL QUEUE,I-LOWER-ELEVATOR-TRIP,100 + PUT STACK,0,1 + RTRUE +?CCL6: EQUAL? HERE,UPPER-ELEVATOR \?CCL12 + EQUAL? UPPER-ELEVATOR-UP,FALSE-VALUE \?CCL12 + EQUAL? UPPER-ELEVATOR-ON,TRUE-VALUE \?CCL12 + EQUAL? ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL12 + PRINT ELEVATOR-STARTS + CRLF + FCLEAR UPPER-ELEVATOR-DOOR,OPENBIT + SET 'ELEVATOR-IN-TRANSIT,TRUE-VALUE + CALL QUEUE,I-UPPER-ELEVATOR-TRIP,50 + PUT STACK,0,1 + RTRUE +?CCL12: PRINTR "Nothing happens." +?CCL3: EQUAL? PRSA,V?PUSH-DOWN \?CCL18 + EQUAL? HERE,LOWER-ELEVATOR \?CCL21 + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL21 + EQUAL? LOWER-ELEVATOR-ON,TRUE-VALUE \?CCL21 + EQUAL? ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL21 + PRINT ELEVATOR-STARTS + CRLF + FCLEAR LOWER-ELEVATOR-DOOR,OPENBIT + SET 'ELEVATOR-IN-TRANSIT,TRUE-VALUE + CALL QUEUE,I-LOWER-ELEVATOR-TRIP,100 + PUT STACK,0,1 + RTRUE +?CCL21: EQUAL? HERE,UPPER-ELEVATOR \?CCL27 + EQUAL? UPPER-ELEVATOR-UP,TRUE-VALUE \?CCL27 + EQUAL? UPPER-ELEVATOR-ON,TRUE-VALUE \?CCL27 + EQUAL? ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL27 + PRINT ELEVATOR-STARTS + CRLF + FCLEAR UPPER-ELEVATOR-DOOR,OPENBIT + SET 'ELEVATOR-IN-TRANSIT,TRUE-VALUE + CALL QUEUE,I-UPPER-ELEVATOR-TRIP,50 + PUT STACK,0,1 + RTRUE +?CCL27: PRINTR "Nothing happens." +?CCL18: EQUAL? PRSA,V?PUSH \FALSE + PRINTR "You must specify whether you want to push the Up button or the Down button." + + + .FUNCT I-TURNOFF-UPPER-ELEVATOR + ZERO? ELEVATOR-IN-TRANSIT /?CCL3 + CALL QUEUE,I-TURNOFF-UPPER-ELEVATOR,120 + PUT STACK,0,1 + RFALSE +?CCL3: SET 'UPPER-ELEVATOR-ON,FALSE-VALUE + EQUAL? HERE,UPPER-ELEVATOR \FALSE + CRLF + PRINT ELEVATOR-LIGHT-OFF + CRLF + RFALSE + + + .FUNCT I-TURNOFF-LOWER-ELEVATOR + ZERO? ELEVATOR-IN-TRANSIT /?CCL3 + CALL QUEUE,I-TURNOFF-LOWER-ELEVATOR,120 + PUT STACK,0,1 + RFALSE +?CCL3: SET 'LOWER-ELEVATOR-ON,FALSE-VALUE + EQUAL? HERE,LOWER-ELEVATOR \FALSE + CRLF + PRINT ELEVATOR-LIGHT-OFF + CRLF + RFALSE + + + .FUNCT I-UPPER-ELEVATOR-TRIP + EQUAL? UPPER-ELEVATOR-UP,TRUE-VALUE \?CCL3 + SET 'UPPER-ELEVATOR-UP,FALSE-VALUE + SET 'ELEVATOR-IN-TRANSIT,FALSE-VALUE + FSET UPPER-ELEVATOR-DOOR,OPENBIT + CRLF + CALL ELEVATOR-DOOR-OPENS + RSTACK +?CCL3: SET 'UPPER-ELEVATOR-UP,TRUE-VALUE + SET 'ELEVATOR-IN-TRANSIT,FALSE-VALUE + FSET UPPER-ELEVATOR-DOOR,OPENBIT + CRLF + CALL ELEVATOR-DOOR-OPENS + RSTACK + + + .FUNCT I-LOWER-ELEVATOR-TRIP + EQUAL? LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL3 + SET 'LOWER-ELEVATOR-UP,FALSE-VALUE + SET 'ELEVATOR-IN-TRANSIT,FALSE-VALUE + FSET LOWER-ELEVATOR-DOOR,OPENBIT + CRLF + CALL ELEVATOR-DOOR-OPENS + RSTACK +?CCL3: SET 'LOWER-ELEVATOR-UP,TRUE-VALUE + SET 'ELEVATOR-IN-TRANSIT,FALSE-VALUE + FSET LOWER-ELEVATOR-DOOR,OPENBIT + CRLF + CALL ELEVATOR-DOOR-OPENS + RSTACK + + + .FUNCT ELEVATOR-DOOR-OPENS + PRINTR "The elevator door slides open." + + + .FUNCT HELICOPTER-OBJECT-F + EQUAL? PRSA,V?WALK-TO,V?BOARD,V?THROUGH \?CCL3 + EQUAL? HERE,HELIPAD \?CCL6 + CALL GOTO,HELICOPTER + RSTACK +?CCL6: PRINTR "You're in it!" +?CCL3: EQUAL? PRSA,V?DISEMBARK,V?DROP,V?EXIT \?CCL8 + EQUAL? HERE,HELICOPTER \?CCL11 + CALL GOTO,HELIPAD + RSTACK +?CCL11: PRINTR "You're not in it!" +?CCL8: EQUAL? PRSA,V?FLY \FALSE + EQUAL? HERE,HELICOPTER \?CCL16 + PRINTR "The controls seem to be locked." +?CCL16: PRINTR "You're not even in it!" + + + .FUNCT COMM-ROOM-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "This is a small room with no windows. The sole exit is southwest. Two wide consoles fill either end of the room; thick cables lead up into the ceiling. + +The console on the left side of the room is labelled ""Reeseev Staashun."" A bright red light, labelled ""Tranzmishun Reeseevd"", is blinking rapidly. Next to the light is a glowing button marked ""Mesij Plaabak."" + +The console on the right side of the room is labelled ""Send Staashun."" A screen on the console displays a message. Next to the screen is a flashing sign which says " + ZERO? COMM-SHUTDOWN /?CCL6 + CALL SHUTDOWN + JUMP ?CND4 +?CCL6: ZERO? COMM-FIXED /?CCL8 + PRINTI """Tranzmishun in pragres.""" + JUMP ?CND4 +?CCL8: PRINTI """Malfunkshun in Sendeeng Kuulint Sistum.""" +?CND4: PRINTI " Next to this console is an enunciator" + ZERO? COMM-FIXED \?CCL10 + ZERO? COMM-SHUTDOWN /?CND9 +?CCL10: PRINTI " whose lights are all dark" +?CND9: PRINTR ". On the console next to the enunciator panel is a funnel-shaped hole labelled ""Kuulint Sistum Manyuuwul Oovuriid.""" +?CCL3: EQUAL? RARG,M-END \FALSE + ZERO? COMM-FIXED \FALSE + ZERO? COMM-SHUTDOWN \FALSE + ZERO? JUST-ENTERED /FALSE + CALL QUEUE,I-UNENTER,-1 + PUT STACK,0,1 + SET 'JUST-ENTERED,FALSE-VALUE + PRINTI "A " + EQUAL? CHEMICAL-REQUIRED,1 \?CCL21 + PRINTI "red" + JUMP ?CND19 +?CCL21: EQUAL? CHEMICAL-REQUIRED,2 \?CCL23 + PRINTI "blue" + JUMP ?CND19 +?CCL23: EQUAL? CHEMICAL-REQUIRED,3 \?CCL25 + PRINTI "green" + JUMP ?CND19 +?CCL25: EQUAL? CHEMICAL-REQUIRED,4 \?CCL27 + PRINTI "yellow" + JUMP ?CND19 +?CCL27: EQUAL? CHEMICAL-REQUIRED,5 \?CCL29 + PRINTI "gray" + JUMP ?CND19 +?CCL29: EQUAL? CHEMICAL-REQUIRED,6 \?CCL31 + PRINTI "brown" + JUMP ?CND19 +?CCL31: EQUAL? CHEMICAL-REQUIRED,7 \?CND19 + PRINTI "black" +?CND19: PRINTR " colored light is flashing on the enunciator panel." + + + .FUNCT I-UNENTER + EQUAL? HERE,COMM-ROOM /FALSE + SET 'JUST-ENTERED,TRUE-VALUE + CALL INT,I-UNENTER + PUT STACK,0,0 + RFALSE + + + .FUNCT PLAYBACK-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + PRINTR "A voice fills the room ... the voice of the Feinstein's communications officer! ""Stellar Patrol Ship Feinstein to planetside ... Please respond on frequency 48.5 ... SPS Feinstein to planetside ... Please come in ..."" After a pause you hear the officer, in a quieter voice, say ""Admiral, no response on any of the standard frequen..."" The sentence is cut short by the sound of an explosion and a loud burst of static, followed by silence." + + + .FUNCT RANDOMIZE-ORDER,COUNT=0,TEMP,?TMP1,?TMP2 +?PRG1: IGRTR? 'COUNT,7 /?REP2 + PUT ORDER-LTBL,COUNT,FALSE-VALUE + JUMP ?PRG1 +?REP2: SET 'COUNT,0 +?PRG6: IGRTR? 'COUNT,7 /TRUE + RANDOM 7 >TEMP + GET ORDER-LTBL,1 >?TMP2 + GET ORDER-LTBL,2 >?TMP1 + GET ORDER-LTBL,3 + EQUAL? TEMP,?TMP2,?TMP1,STACK /?CTR12 + GET ORDER-LTBL,4 >?TMP2 + GET ORDER-LTBL,5 >?TMP1 + GET ORDER-LTBL,6 + EQUAL? TEMP,?TMP2,?TMP1,STACK /?CTR12 + GET ORDER-LTBL,7 + EQUAL? TEMP,STACK \?CCL13 +?CTR12: DEC 'COUNT + JUMP ?PRG6 +?CCL13: PUT ORDER-LTBL,COUNT,TEMP + JUMP ?PRG6 + + + .FUNCT CHEMICAL-FLUID-F + EQUAL? PRSA,V?EAT \?CCL3 + CALL JIGS-UP,STR?184 + RSTACK +?CCL3: EQUAL? PRSA,V?PUT \?CCL5 + EQUAL? PRSI,CHEMICAL-FLUID \?CCL5 + CALL PERFORM,V?PUT,PRSO,FLASK + RTRUE +?CCL5: EQUAL? PRSA,V?POUR,V?THROW \?CCL9 + EQUAL? PRSI,RAT-ANT,TROLL /?CTR8 + EQUAL? PRSI,GRUE,TRIFFID \?CCL9 +?CTR8: CALL HELD?,FLASK + ZERO? STACK \?CND14 + PRINTR "You're not holding the flask." +?CND14: REMOVE CHEMICAL-FLUID + PRINTR "The mutants lap up the chemical, howling with delight. One immediately grows three new mouths." +?CCL9: EQUAL? PRSA,V?POUR,V?PUT \FALSE + CALL HELD?,FLASK + ZERO? STACK \?CCL20 + PRINTR "You're not holding the flask." +?CCL20: EQUAL? PRSI,CANTEEN \?CND18 + CALL WORTHLESS-ACTION + RTRUE +?CND18: REMOVE CHEMICAL-FLUID + ZERO? PRSI \?CND22 + SET 'PRSI,GROUND +?CND22: EQUAL? PRSI,FUNNEL-HOLE \?CCL26 + EQUAL? CHEMICAL-FLAG,CHEMICAL-REQUIRED \?CCL29 + GET ORDER-LTBL,STEPS-TO-GO >CHEMICAL-REQUIRED + DEC 'STEPS-TO-GO + PRINTI "The liquid disappears into the hole. The lights on the enunciator panel blink rapidly " + ZERO? STEPS-TO-GO \?CCL32 + SET 'COMM-FIXED,TRUE-VALUE + ADD SCORE,6 >SCORE + SET 'CHEMICAL-REQUIRED,10 + PRINTR "and then go dark. The coolant system warning light goes off, and another flashes, indicating that the help message is now being sent." +?CCL32: PRINTI "and all go off except one, a " + EQUAL? CHEMICAL-REQUIRED,1 \?CCL35 + PRINTI "red" + JUMP ?CND33 +?CCL35: EQUAL? CHEMICAL-REQUIRED,2 \?CCL37 + PRINTI "blue" + JUMP ?CND33 +?CCL37: EQUAL? CHEMICAL-REQUIRED,3 \?CCL39 + PRINTI "green" + JUMP ?CND33 +?CCL39: EQUAL? CHEMICAL-REQUIRED,4 \?CCL41 + PRINTI "yellow" + JUMP ?CND33 +?CCL41: EQUAL? CHEMICAL-REQUIRED,5 \?CCL43 + PRINTI "gray" + JUMP ?CND33 +?CCL43: EQUAL? CHEMICAL-REQUIRED,6 \?CCL45 + PRINTI "brown" + JUMP ?CND33 +?CCL45: EQUAL? CHEMICAL-REQUIRED,7 \?CND33 + PRINTI "black" +?CND33: PRINTR " light." +?CCL29: SET 'COMM-SHUTDOWN,TRUE-VALUE + ZERO? COMM-FIXED /?CND47 + SUB SCORE,6 >SCORE + SET 'COMM-FIXED,FALSE-VALUE +?CND47: PRINTI "An alarm sounds briefly, and a sign flashes " + CALL SHUTDOWN + PRINTR " A moment later, the lights in the room dim and the send console shuts down." +?CCL26: EQUAL? CHEMICAL-FLAG,8,9 \?CCL50 + FSET? PRSI,ACIDBIT \?CCL53 + EQUAL? PRSI,SPOUT-PLACED \?CND54 + SET 'SPOUT-PLACED,GROUND +?CND54: REMOVE PRSI + PRINTI "The " + PRINTD PRSI + PRINTI " dissolves right before your eyes!" + EQUAL? PRSI,BAD-BEDISTOR \?CCL58 + FSET? BAD-BEDISTOR,TOUCHBIT /?CCL58 + FSET CUBE,MUNGEDBIT + CALL CUBE-SEEMS + JUMP ?CND56 +?CCL58: EQUAL? PRSI,GOOD-BEDISTOR \?CND56 + ZERO? COURSE-CONTROL-FIXED /?CND56 + FSET CUBE,MUNGEDBIT + SUB SCORE,6 >SCORE + SET 'COURSE-CONTROL-FIXED,FALSE-VALUE + CALL CUBE-SEEMS +?CND56: CRLF + RTRUE +?CCL53: EQUAL? CREVICE,PRSI \?CCL65 + FSET? KEY,TOUCHBIT /?CCL65 + FSET? KEY,INVISIBLE \?CCL70 + PRINTI "A puff of smoke rises from the crevice." + CRLF + JUMP ?CND68 +?CCL70: PRINTI "Although the chemical has no effect on the crevice, it does seem to have dissolved the key that was lying in it." + CRLF +?CND68: REMOVE KEY + FSET KEY,TOUCHBIT + FCLEAR KEY,INVISIBLE + RTRUE +?CCL65: EQUAL? PRSI,HIGH-PROTEIN,MEDICINE \?CCL72 + CALL JIGS-UP,STR?185 + RSTACK +?CCL72: EQUAL? PRSI,ME,ADVENTURER,HANDS \?CCL74 + CALL JIGS-UP,STR?186 + RSTACK +?CCL74: EQUAL? PRSI,FLOYD \?CCL76 + FSET? FLOYD,RLANDBIT \?CCL76 + PRINTR "Floyd yelps. ""Hey, cut it out! That stuff burns!""" +?CCL76: EQUAL? PRSI,MICROBE \?CCL80 + PRINTI "The microbe writhes in pain. " + CALL STRIP-DISSOLVES + RSTACK +?CCL80: EQUAL? PRSI,STRIP,RELAY \?CCL82 + CALL STRIP-DISSOLVES + RSTACK +?CCL82: FSET? PRSI,MUNGBIT \?CCL84 + FSET PRSI,MUNGEDBIT + EQUAL? PRSI,CHRONOMETER \?CND85 + SET 'MUNGED-TIME,INTERNAL-MOVES +?CND85: PRINTI "The " + PRINTD PRSI + PRINTI " seems to undergo some damage as a result of your action." + CRLF + EQUAL? PRSI,CUBE \TRUE + ZERO? COURSE-CONTROL-FIXED /TRUE + SET 'COURSE-CONTROL-FIXED,FALSE-VALUE + REMOVE GOOD-BEDISTOR + SUB SCORE,6 >SCORE + PRINTR "The bedistor also happens to dissolve." +?CCL84: CALL CHEMICAL-POURS + RSTACK +?CCL50: CALL CHEMICAL-POURS + RSTACK + + + .FUNCT CUBE-SEEMS + PRINTI " Unfortunately, the cube seems to undergo some damage as well." + RTRUE + + + .FUNCT CHEMICAL-POURS + PRINTI "The chemical pours all over the " + PRINTD PRSI + PRINTR ", making quite a mess." + + + .FUNCT STRIP-DISSOLVES + CALL JIGS-UP,STR?187 + RSTACK + + + .FUNCT SHUTDOWN + PRINTI """Kuulint Sistum Imbalins Kritikul -- Shuteeng Down Awl Sistumz.""" + RTRUE + + + .FUNCT COMM-SETUP + RANDOM 3 + ADD 2,STACK >OLD-SHOTS + RANDOM 10 + ADD 20,STACK >NEW-SHOTS + CALL RANDOMIZE-ORDER + RANDOM 2 + ADD 1,STACK >STEPS-TO-GO + ADD STEPS-TO-GO,1 + GET ORDER-LTBL,STACK >CHEMICAL-REQUIRED + RETURN CHEMICAL-REQUIRED + + + .FUNCT OTHER-ELEVATOR-ENTER-F + FSET? LOWER-ELEVATOR-DOOR,OPENBIT \?CCL3 + ZERO? LOWER-ELEVATOR-UP \?CCL3 + RETURN LOWER-ELEVATOR +?CCL3: CALL DOOR-CLOSED + CALL THIS-IS-IT,LOWER-ELEVATOR-DOOR + RFALSE + + + .FUNCT KALAMONTEE-PLATFORM-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a wide, flat strip of concrete which continues westward. " + ZERO? BETTY-AT-KALAMONTEE /?CCL6 + ZERO? ALFIE-AT-KALAMONTEE /?CCL6 + PRINTI "Open shuttle cars lie on the north and south sides of the platform. " + JUMP ?CND4 +?CCL6: ZERO? BETTY-AT-KALAMONTEE /?CCL10 + PRINTI "An open shuttle car lies to the north. " + JUMP ?CND4 +?CCL10: ZERO? ALFIE-AT-KALAMONTEE /?CND4 + PRINTI "A large transport of some sort lies to the south, its open door beckoning you to enter. " +?CND4: PRINTR "A faded sign on the wall reads ""Shutul Platform -- Kalamontee Staashun.""" + + .ENDI diff --git a/compone.zil b/compone.zil index 753293c..e19a3c0 100644 --- a/compone.zil +++ b/compone.zil @@ -1667,14 +1667,6 @@ says \"ASID.\"" CR>) "Floyd pushes one of the dispenser buttons. Fluid pours from the spout and splashes across the floor. Floyd jumps up and down, giggling." CR>)>> -; - )>> "produces a crayon from one of his compartments and scrawls his name on the wall">> -^L + -;Elevator department +"Elevator department" )>> (IN LOCAL-GLOBALS) (DESC "red door") (SYNONYM DOOR) - (ADJECTIVE RED LOWER ELEVATOR) + (ADJECTIVE RED LOWER ELEVATOR METAL) (FLAGS NDESCBIT DOORBIT) (ACTION LOWER-ELEVATOR-DOOR-F)> diff --git a/comptwo.zabstr b/comptwo.zabstr new file mode 100644 index 0000000..18c19ac --- /dev/null +++ b/comptwo.zabstr @@ -0,0 +1,687 @@ + +) (NORTH PER SHUTTLE-ENTER-F) (SOUTH PER SHUTTLE-ENTER-F) +(EAST TO ESCALATOR) (UP TO ESCALATOR) (FLAGS FLOYDBIT RLANDBIT ONBIT) (VALUE 4) +(GLOBAL GLOBAL-SHUTTLE STAIRS) (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO) (ACTION +LAWANDA-PLATFORM-F)> + %<> WORD> + +) (UP +TO FORK) (EAST TO FORK) (DOWN TO LAWANDA-PLATFORM) (WEST TO LAWANDA-PLATFORM) ( +GLOBAL STAIRS) (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO) (FLAGS RLANDBIT FLOYDBIT +ONBIT)> +) ( +WEST TO ESCALATOR) (DOWN TO ESCALATOR) (NE TO SYSTEMS-CORRIDOR-WEST) (SE TO +PROJECT-CORRIDOR-WEST) (GLOBAL STAIRS) (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO) ( +FLAGS FLOYDBIT RLANDBIT ONBIT)> +) (SE TO SYSTEMS-CORRIDOR-WEST) (OUT TO +SYSTEMS-CORRIDOR-WEST) (FLAGS RLANDBIT ONBIT) (GLOBAL BED SHELVES) (PSEUDO +"EQUIPM" EQUIPMENT-PSEUDO "MACHIN" EQUIPMENT-PSEUDO) (ACTION INFIRMARY-F)> + + %<> WORD> + + + + + + +) (UP TO SYSTEMS-CORRIDOR-WEST) (SOUTH TO SYSTEMS-CORRIDOR-WEST) ( +NORTH "It is a robot-sized doorway -- a bit too small for you.") (FLAGS +RLANDBIT FLOYDBIT ONBIT) (GLOBAL STAIRS) (PSEUDO "CABINETS" CABINETS-PSEUDO +"MACHIN" EQUIPMENT-PSEUDO)> + %<> WORD> + + + + %<> WORD> + + + + %<> WORD> +) (NW TO INFIRMARY) (NORTH TO REPAIR-ROOM) ( +DOWN TO REPAIR-ROOM) (EAST TO SYSTEMS-CORRIDOR) (SW TO FORK) (FLAGS ONBIT +RLANDBIT) (GLOBAL STAIRS)> +) (NORTH TO PLANETARY-DEFENSE) (WEST TO SYSTEMS-CORRIDOR-WEST) (EAST +TO SYSTEMS-CORRIDOR-EAST) (FLAGS RLANDBIT ONBIT)> +) (WEST TO SYSTEMS-CORRIDOR) (SOUTH TO LIBRARY-LOBBY) (NORTH TO +PLANETARY-COURSE-CONTROL) (EAST TO PHYSICAL-PLANT-TWO) (FLAGS RLANDBIT ONBIT)> +) (WEST TO SYSTEMS-CORRIDOR-EAST) (OUT TO +SYSTEMS-CORRIDOR-EAST) (FLAGS FLOYDBIT RLANDBIT ONBIT) (PSEUDO "EQUIPM" +EQUIPMENT-PSEUDO)> + %<> WORD> + %<> WORD> + WORD> +) (SOUTH TO SYSTEMS-CORRIDOR) (OUT TO SYSTEMS-CORRIDOR) ( +FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL CONTROLS LIGHTS) (ACTION +PLANETARY-DEFENSE-F)> + + + + + + + + + + %<> WORD> + + + + +) (SOUTH TO SYSTEMS-CORRIDOR-EAST) (OUT TO +SYSTEMS-CORRIDOR-EAST) (FLAGS FLOYDBIT RLANDBIT ONBIT) (GLOBAL CONTROLS LIGHTS) +(ACTION PLANETARY-COURSE-CONTROL-F)> + + + + + +) (UP TO LIBRARY) (WEST TO +LIBRARY) (NORTH TO SYSTEMS-CORRIDOR-EAST) (SOUTH TO PROJECT-CORRIDOR-EAST) ( +EAST TO BOOTH-3) (IN TO BOOTH-3) (FLAGS FLOYDBIT RLANDBIT ONBIT) (GLOBAL TABLES +STAIRS) (PSEUDO "CARPET" CARPET-PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)> + + +) (WEST TO +LIBRARY-LOBBY) (OUT TO LIBRARY-LOBBY) (FLAGS RLANDBIT ONBIT) (GLOBAL CONTROLS +SLOT TELEPORTATION-BUTTON-1 TELEPORTATION-BUTTON-2) (PSEUDO "BOOTH" +IN-BOOTH-PSEUDO)> + +) (EAST TO LIBRARY-LOBBY) (OUT TO LIBRARY-LOBBY) (FLAGS RLANDBIT ONBIT FLOYDBIT +) (GLOBAL TABLES STAIRS) (PSEUDO "CARPET" CARPET-PSEUDO "DESK" DESK-PSEUDO)> + + WORD> + + + %<> WORD> + +WORD> + +WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + +WORD> + WORD> + WORD> + WORD> + WORD> + + %<> WORD> + + WORD> + WORD> + WORD> + WORD> +) (WEST TO SANFAC-F) ( +EAST TO PROJECT-CORRIDOR) (NW TO FORK) (FLAGS RLANDBIT ONBIT)> +) (EAST TO PROJECT-CORRIDOR-WEST) (OUT TO PROJECT-CORRIDOR-WEST) ( +FLAGS FLOYDBIT RLANDBIT ONBIT) (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" +TOILET-PSEUDO)> +) (EAST TO PROJECT-CORRIDOR-EAST) (WEST TO PROJECT-CORRIDOR-WEST) (SOUTH TO +PROJCON-OFFICE) (FLAGS RLANDBIT ONBIT)> +) (NORTH TO PROJECT-CORRIDOR) (SOUTH TO CRYO-ELEVATOR IF +CRYO-ELEVATOR-DOOR IS OPEN ELSE "You can't go that way.") (EAST TO +COMPUTER-ROOM) (FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL CRYO-ELEVATOR-DOOR) ( +PSEUDO "MURAL" MURAL-PSEUDO "LOGO" LOGO-PSEUDO) (ACTION PROJCON-OFFICE-F)> + + %<> WORD> + +) (NORTH PER CRYO-EXIT-F) (GLOBAL CRYO-ELEVATOR-DOOR) (FLAGS +RLANDBIT ONBIT) (PSEUDO "BUTTON" CRYO-BUTTON-PSEUDO) (ACTION CRYO-ELEVATOR-F)> + + + %<> WORD> + +) (FLAGS RLANDBIT ONBIT) (ACTION CRYO-ANTEROOM-F)> + +) (NORTH TO +LIBRARY-LOBBY) (SOUTH TO COMPUTER-ROOM) (WEST TO PROJECT-CORRIDOR) (EAST TO +MAIN-LAB) (FLAGS RLANDBIT ONBIT)> +) (NORTH TO +PROJECT-CORRIDOR-EAST) (WEST TO PROJCON-OFFICE) (SOUTH TO MINI-BOOTH) (IN TO +MINI-BOOTH) (NE TO MAIN-LAB) (FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL LIGHTS) ( +PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)> + %<> WORD> + + + +) (NORTH TO COMPUTER-ROOM) +(OUT TO COMPUTER-ROOM) (FLAGS RLANDBIT ONBIT) (GLOBAL SLOT) (PSEUDO "KEYBOARD" +KEYBOARD-PSEUDO "BOOTH" IN-BOOTH-PSEUDO)> + + +) (WEST TO PROJECT-CORRIDOR-EAST) (SOUTH TO LAB-STORAGE) (SW TO COMPUTER-ROOM +) (SE TO BIO-LOCK-WEST IF BIO-DOOR-WEST IS OPEN) (NE TO RADIATION-LOCK-WEST IF +RAD-DOOR-WEST IS OPEN) (FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL BIO-DOOR-WEST +RAD-DOOR-WEST)> +) (NORTH TO MAIN-LAB) ( +OUT TO MAIN-LAB) (FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL SHELVES) (PSEUDO +"RACK" CARPET-PSEUDO "SUPPLIES" SUPPLIES-PSEUDO)> + + %<> WORD> + + + + +) (EAST TO BIO-LOCK-EAST) (WEST TO +MAIN-LAB IF BIO-DOOR-WEST IS OPEN) (FLAGS RLANDBIT ONBIT) (GLOBAL BIO-DOOR-WEST +)> +) (EAST TO BIO-LAB IF BIO-DOOR-EAST IS OPEN) (WEST TO BIO-LOCK-WEST) ( +FLAGS RLANDBIT ONBIT) (GLOBAL BIO-DOOR-EAST WINDOW) (ACTION BIO-LOCK-EAST-F)> + + %<> WORD> + +) +(EAST TO RADIATION-LOCK-EAST) (WEST TO MAIN-LAB IF RAD-DOOR-WEST IS OPEN) ( +FLAGS RLANDBIT ONBIT) (GLOBAL RAD-DOOR-WEST)> +) (EAST TO RADIATION-LAB IF +RAD-DOOR-EAST IS OPEN) (WEST TO RADIATION-LOCK-WEST) (FLAGS RLANDBIT ONBIT) ( +GLOBAL RAD-DOOR-EAST)> + + + + + + + + + + + WORD> + WORD> + WORD> + %<> WORD> + WORD> + %<> WORD> + %<> WORD> + WORD> + + +) (EAST TO LAB-OFFICE IF OFFICE-DOOR IS OPEN) (WEST TO BIO-LOCK-EAST IF +BIO-DOOR-EAST IS OPEN) (FLAGS RLANDBIT ONBIT) (GLOBAL BIO-DOOR-EAST WINDOW +OFFICE-DOOR) (PSEUDO "CRACK" CRACK-PSEUDO) (ACTION BIO-LAB-F)> + + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + + %<> WORD> +) ( +WEST TO RADIATION-LOCK-EAST IF RAD-DOOR-EAST IS OPEN) (FLAGS RLANDBIT ONBIT) ( +GLOBAL TABLES RAD-DOOR-EAST) (PSEUDO "CRACK" CRACK-PSEUDO "EQUIPM" +EQUIPMENT-PSEUDO) (ACTION RADIATION-LAB-F)> + + WORD> + + + + + +) (WEST TO BIO-LAB IF OFFICE-DOOR IS OPEN) (SOUTH TO AUXILIARY-BOOTH) ( +IN TO AUXILIARY-BOOTH) (GLOBAL OFFICE-DOOR) (FLAGS RLANDBIT ONBIT) (PSEUDO +"FILES" CABINETS-PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO) (ACTION LAB-OFFICE-F)> + + + + + + + + + + %<> WORD> + %<> WORD> + + + WORD> + + +) (NORTH TO LAB-OFFICE) (OUT TO LAB-OFFICE) (FLAGS RLANDBIT ONBIT) (VALUE 4 +) (PSEUDO "BOOTH" IN-BOOTH-PSEUDO)> + %<> WORD> + +) (EAST TO +STRIP-NEAR-STATION) (FLAGS RLANDBIT ONBIT) (GLOBAL STRIP) (PSEUDO "PLATE" +PLATE-PSEUDO "PLATES" PLATE-PSEUDO) (ACTION STATION-384-F)> + + + %<> WORD> + %<> WORD> + WORD> +) (SOUTH "The plunge would probably be fatal.") (EAST +"The plunge would probably be fatal.") (NORTH TO MIDDLE-OF-STRIP) (WEST TO +STATION-384) (FLAGS RLANDBIT ONBIT) (VALUE 4) (PSEUDO "VOID" VOID-PSEUDO) ( +GLOBAL STRIP)> +) (NORTH TO STRIP-NEAR-RELAY) (SOUTH TO +STRIP-NEAR-STATION IF NO-MICROBE ELSE +"Not a chance -- unless, +of course, you don't mind walking into the gullet of a hungry microbe.") (EAST +"Do you have a penchant for bottomless voids?") (WEST +"Do you have a penchant for bottomless voids?") (FLAGS RLANDBIT ONBIT) (ACTION +MIDDLE-OF-STRIP-F) (PSEUDO "VOID" VOID-PSEUDO) (GLOBAL STRIP)> + WORD> + %<> WORD> + +) (NORTH +"There is a huge featureless wall there, remember?") (SOUTH TO MIDDLE-OF-STRIP +IF NO-MICROBE ELSE +"Not a chance -- unless, +of course, you don't mind walking into the gullet of a hungry microbe.") (EAST +PER RELAY-EXIT-F) (WEST "Do you have a penchant for bottomless voids?") (FLAGS +RLANDBIT ONBIT) (GLOBAL STRIP) (PSEUDO "VOID" VOID-PSEUDO) (ACTION +STRIP-NEAR-RELAY-F)> + + + + + + + + + + + WORD> + %<> WORD> + WORD> + WORD> + + + + + WORD> + %<> WORD> + + + + %<> WORD> + WORD> + + + %<> WORD> + + + + + %<> +WORD> + %<> WORD> + %<> WORD> + WORD> + + %<> WORD> + + + + + + + \ No newline at end of file diff --git a/comptwo.zap b/comptwo.zap new file mode 100644 index 0000000..e1689ae --- /dev/null +++ b/comptwo.zap @@ -0,0 +1,1854 @@ + + + .FUNCT LAWANDA-PLATFORM-F,RARG + ZERO? LAWANDA-PLATFORM-FLAG \?CND1 + SET 'LAWANDA-PLATFORM-FLAG,TRUE-VALUE + SET 'SICKNESS-WARNING-FLAG,TRUE-VALUE +?CND1: EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a wide, flat strip of concrete. " + ZERO? ALFIE-AT-KALAMONTEE \?CCL8 + ZERO? BETTY-AT-KALAMONTEE \?CCL8 + PRINTI "Open shuttle cars lie to the north and south." + JUMP ?CND6 +?CCL8: ZERO? ALFIE-AT-KALAMONTEE /?CCL11 + ZERO? BETTY-AT-KALAMONTEE \?CND6 +?CCL11: PRINTI "An open shuttle car lies to the " + ZERO? ALFIE-AT-KALAMONTEE /?CCL16 + PRINTI "north." + JUMP ?CND6 +?CCL16: PRINTI "south." +?CND6: PRINTR " A wide escalator, not currently operating, beckons upward at the east end of the platform. A faded sign reads ""Shutul Platform -- Lawanda Staashun.""" + + + .FUNCT INFIRMARY-F,RARG + EQUAL? RARG,M-END \FALSE + ZERO? LAZARUS-FLAG \FALSE + IN? FLOYD,HERE \FALSE + FSET? FLOYD,RLANDBIT \FALSE + RANDOM 100 + LESS? 30,STACK /FALSE + SET 'LAZARUS-FLAG,TRUE-VALUE + MOVE LAZARUS-PART,HERE + MOVE FLOYD,FORK + SET 'FLOYD-FOLLOW,FALSE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTR "Floyd, rummaging in a corner, finds something and carries it to the center of the room to examine it in the brighter light. It seems to be the breast plate of a robot, along with some connected inner circuitry. The entire piece is bent and rusting. Floyd stares at it in complete silence. A moment later, he begins sobbing quietly, awkwardly excuses himself, and runs out of the room. You look at the breast plate, and notice the name ""Lazarus"" engraved on it." + + + .FUNCT RED-SPOOL-F + EQUAL? PRSA,V?TAKE \FALSE + IN? RED-SPOOL,SPOOL-READER \FALSE + FSET? SPOOL-READER,ONBIT \FALSE + MOVE RED-SPOOL,ADVENTURER + FCLEAR RED-SPOOL,TRYTAKEBIT + PRINTR "The screen goes blank as you take the spool." + + + .FUNCT MEDICINE-F,X=0 + EQUAL? PRSA,V?POUR,V?EAT,V?TASTE \?CCL3 + IN? MEDICINE-BOTTLE,ADVENTURER /?CCL3 + SET 'PRSO,MEDICINE-BOTTLE + CALL NOT-HOLDING + CALL THIS-IS-IT,MEDICINE-BOTTLE + RSTACK +?CCL3: EQUAL? PRSA,V?POUR,V?EAT,V?TASTE \?CCL7 + FSET? MEDICINE-BOTTLE,OPENBIT /?CCL7 + PRINTR "The bottle is closed." +?CCL7: EQUAL? PRSA,V?TASTE \?CCL11 + PRINTR "It tastes fairly bitter." +?CCL11: EQUAL? PRSA,V?EAT \?CCL13 + REMOVE MEDICINE + SET 'C-ELAPSED,15 + SUB SICKNESS-LEVEL,2 >SICKNESS-LEVEL + ADD LOAD-ALLOWED,20 >LOAD-ALLOWED + PRINTR "The medicine tasted extremely bitter." +?CCL13: EQUAL? PRSA,V?POUR \?CCL15 + REMOVE MEDICINE + ZERO? PRSI \?CND16 + SET 'PRSI,GROUND +?CND16: EQUAL? PRSI,FUNNEL-HOLE \?CCL20 + IN? CHEMICAL-FLUID,FLASK \?CND21 + SET 'X,TRUE-VALUE +?CND21: SET 'CHEMICAL-REQUIRED,10 + CALL PERFORM,V?POUR,CHEMICAL-FLUID,FUNNEL-HOLE + ZERO? X /TRUE + MOVE CHEMICAL-FLUID,FLASK + RTRUE +?CCL20: PRINTI "It pours over the " + PRINTD PRSI + PRINTR " and evaporates." +?CCL15: EQUAL? PRSA,V?TAKE \FALSE + GET P-VTBL,0 + EQUAL? STACK,W?TAKE \FALSE + CALL PERFORM,V?EAT,MEDICINE + RTRUE + + + .FUNCT ROBOT-HOLE-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "It's too small for you to get through. It was presumably intended for robots, such as the broken repair robot lying over there." +?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \?CCL5 + PRINTR "You can make out a small supply room of some sort." +?CCL5: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE + PRINTR "There's no door, just an opening in the wall." + + + .FUNCT FLOYD-THROUGH-HOLE + ZERO? HOLE-TRIP-FLAG /?CCL3 + PRINTR """Not again,"" whines Floyd." +?CCL3: SET 'C-ELAPSED,50 + SET 'HOLE-TRIP-FLAG,TRUE-VALUE + SET 'BOARD-REPORTED,TRUE-VALUE + FCLEAR GOOD-BOARD,INVISIBLE + PRINTR "Floyd squeezes through the opening and is gone for quite a while. You hear thudding noises and squeals of enjoyment. After a while the noise stops, and Floyd emerges, looking downcast. ""Floyd found a rubber ball inside. Lots of fun for a while, but must have been old, because it fell apart. Nothing else interesting inside. Just a shiny fromitz board.""" + + + .FUNCT GOOD-BOARD-F + FSET? GOOD-BOARD,NDESCBIT \?CCL3 + EQUAL? PRSA,V?LOOK-UNDER /?PRD6 + EQUAL? PRSA,V?MOVE,V?PULL,V?PUSH /?PRD6 + EQUAL? PRSA,V?RUB,V?EXAMINE,V?TAKE \?CCL3 +?PRD6: EQUAL? GOOD-BOARD,PRSO \?CCL3 + PRINTI "You can't see any " + PRINTD PRSO + PRINTR " here." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + CALL EXAMINE-BOARD + CRLF + RTRUE + + + .FUNCT PLANETARY-DEFENSE-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This room is filled with a dazzling array of lights and controls. " + ZERO? DEFENSE-FIXED \?CND4 + PRINTI "One light, blinking quickly, catches your eye. It reads ""Surkit Boord Faalyur. WORNEENG: xis boord kuntroolz xe diskriminaashun surkits.""" +?CND4: PRINTI " There is a small access panel on one wall which is " + CALL DDESC,ACCESS-PANEL + PRINTR "." + + + .FUNCT ACCESS-PANEL-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? ACCESS-PANEL,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET ACCESS-PANEL,OPENBIT + PRINTI "The panel swings open." + CRLF + CALL PERFORM,V?LOOK-INSIDE,ACCESS-PANEL + RTRUE +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL8 + FSET? ACCESS-PANEL,OPENBIT \?CCL11 + FCLEAR ACCESS-PANEL,OPENBIT + PRINTR "The panel swings closed." +?CCL11: CALL IS-CLOSED + RSTACK +?CCL8: EQUAL? PRSA,V?PUT \FALSE + EQUAL? PRSI,ACCESS-PANEL \FALSE + FSET? ACCESS-PANEL,OPENBIT /?CCL18 + PRINTR "The panel is closed." +?CCL18: ZERO? ACCESS-PANEL-FULL /?CCL20 + PRINTR "There's no room." +?CCL20: EQUAL? PRSO,GOOD-BOARD \?CCL22 + REMOVE GOOD-BOARD + MOVE SECOND-BOARD,ACCESS-PANEL + CALL THIS-IS-IT,SECOND-BOARD + SET 'DEFENSE-FIXED,TRUE-VALUE + ADD SCORE,6 >SCORE + SET 'ACCESS-PANEL-FULL,TRUE-VALUE + CALL PUT-BOARD + PRINTR " The warning lights stop flashing." +?CCL22: EQUAL? PRSO,CRACKED-BOARD,FRIED-BOARD \?CCL24 + REMOVE PRSO + CALL THIS-IS-IT,SECOND-BOARD + MOVE SECOND-BOARD,ACCESS-PANEL + SET 'ACCESS-PANEL-FULL,TRUE-VALUE + EQUAL? PRSO,CRACKED-BOARD \?CND25 + SET 'ITS-CRACKED,TRUE-VALUE +?CND25: CALL PUT-BOARD + CRLF + RTRUE +?CCL24: PRINTI "The " + PRINTD PRSO + PRINTI " doesn't fit." + RTRUE + + + .FUNCT FRIED-BOARD-F + EQUAL? PRSA,V?EXAMINE \FALSE + CALL EXAMINE-BOARD + PRINTR " This one is a bit blackened around the edges, though." + + + .FUNCT BOARD-F + EQUAL? PRSA,V?TAKE \?CCL3 + EQUAL? PRSO,SECOND-BOARD \?CCL6 + ZERO? DEFENSE-FIXED /?CCL9 + CALL BOARD-SHOCK + RSTACK +?CCL9: PRINTI "The fromitz board slides out of the panel, producing an empty socket for another board." + CRLF + REMOVE SECOND-BOARD + SET 'ACCESS-PANEL-FULL,FALSE-VALUE + EQUAL? ITS-CRACKED,TRUE-VALUE \?CCL12 + MOVE CRACKED-BOARD,ADVENTURER + JUMP ?CND10 +?CCL12: MOVE FRIED-BOARD,ADVENTURER +?CND10: CALL THIS-IS-IT,FRIED-BOARD + RSTACK +?CCL6: CALL BOARD-SHOCK + RSTACK +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + CALL EXAMINE-BOARD + CRLF + RTRUE + + + .FUNCT EXAMINE-BOARD + PRINTI "Like most fromitz boards, it is a twisted maze of silicon circuits. It is square, approximately seventeen centimeters on each side." + RTRUE + + + .FUNCT PUT-BOARD + PRINTI "The card clicks neatly into the socket." + RTRUE + + + .FUNCT BOARD-SHOCK + PRINTR "You jerk your hand back as you receive a powerful shock from the fromitz board." + + + .FUNCT PLANETARY-COURSE-CONTROL-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a long room whose walls are covered with complicated controls and colored lights. " + ZERO? COURSE-CONTROL-FIXED /?CCL6 + PRINTI "One blinking light says ""Kors diivurjins minimiizeeng.""" + JUMP ?CND4 +?CCL6: PRINTI "Two of these lights are blinking. The first one reads ""Bedistur Faalyur!"" The other light reads ""Kritikul diivurjins frum pland kors.""" +?CND4: PRINTI " In one corner is a large metal cube whose lid is " + FSET? CUBE,OPENBIT \?CCL9 + PRINTI "open" + JUMP ?CND7 +?CCL9: PRINTI "closed" +?CND7: PRINTR "." + + + .FUNCT CUBE-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? CUBE,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET CUBE,OPENBIT + PRINTI "The lid swings open." + CRLF + CALL PERFORM,V?LOOK-INSIDE,CUBE + RTRUE +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL8 + FSET? CUBE,OPENBIT \?CCL11 + FCLEAR CUBE,OPENBIT + PRINTR "The lid swings closed." +?CCL11: CALL IS-CLOSED + RSTACK +?CCL8: EQUAL? PRSA,V?PUT \FALSE + EQUAL? PRSI,CUBE \FALSE + FSET? CUBE,OPENBIT /?CCL18 + PRINTR "The cube is closed." +?CCL18: IN? BAD-BEDISTOR,CUBE \?CCL20 + PRINTR "There's a fused bedistor in the way." +?CCL20: EQUAL? PRSO,GOOD-BEDISTOR \?CCL22 + MOVE GOOD-BEDISTOR,CUBE + FSET? CUBE,MUNGEDBIT /?CCL25 + SET 'COURSE-CONTROL-FIXED,TRUE-VALUE + FSET GOOD-BEDISTOR,TRYTAKEBIT + ADD SCORE,6 >SCORE + PRINTR "Done. The warning lights go out and another light goes on." +?CCL25: PRINTR "Done." +?CCL22: EQUAL? PRSO,BAD-BEDISTOR \?CCL27 + MOVE BAD-BEDISTOR,CUBE + PRINTR "Done." +?CCL27: PRINTI "The " + PRINTD PRSO + PRINTI " doesn't fit." + RTRUE + + + .FUNCT BAD-BEDISTOR-F + EQUAL? PRSA,V?TAKE \?CCL3 + IN? BAD-BEDISTOR,CUBE \?CCL3 + PRINTR "It seems to be fused to its socket." +?CCL3: EQUAL? PRSA,V?ZATTRACT \FALSE + EQUAL? PRSI,PLIERS \?CCL10 + MOVE BAD-BEDISTOR,ADVENTURER + FCLEAR BAD-BEDISTOR,TRYTAKEBIT + PRINTR "With a tug, you manage to remove the fused bedistor." +?CCL10: PRINTR "You can't get a grip on the bedistor with that." + + + .FUNCT GREEN-SPOOL-F + EQUAL? PRSA,V?TAKE \FALSE + IN? GREEN-SPOOL,SPOOL-READER \FALSE + FSET? SPOOL-READER,ONBIT \FALSE + MOVE GREEN-SPOOL,ADVENTURER + FCLEAR GREEN-SPOOL,TRYTAKEBIT + PRINTR "The screen goes blank as you take the spool." + + + .FUNCT TERMINAL-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTI "The computer terminal consists of a video display screen, a keyboard with ten keys numbered from zero through nine, and an on-off switch. " + FSET? TERMINAL,ONBIT \?CCL6 + PRINTI "The screen displays some writing:" + CRLF + PRINT SCREEN-TEXT + CRLF + GRTR? MENU-LEVEL,9 \TRUE + PRINT MORE-INFO + CRLF + RTRUE +?CCL6: PRINTR "The screen is dark." +?CCL3: EQUAL? PRSA,V?READ \?CCL10 + FSET? TERMINAL,ONBIT \?CCL13 + PRINT SCREEN-TEXT + CRLF + GRTR? MENU-LEVEL,9 \TRUE + PRINT MORE-INFO + CRLF + RTRUE +?CCL13: PRINTR "The screen is blank." +?CCL10: EQUAL? PRSA,V?LAMP-ON \?CCL17 + FSET? TERMINAL,ONBIT \?CCL20 + PRINTR "It's already on." +?CCL20: FSET TERMINAL,ONBIT + FSET TERMINAL,TOUCHBIT + SET 'SCREEN-TEXT,MAIN-MENU + PRINTI "The screen gives off a green flash, and then some writing appears on the screen:" + CRLF + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL17: EQUAL? PRSA,V?LAMP-OFF \FALSE + FSET? TERMINAL,ONBIT \?CCL25 + FCLEAR TERMINAL,ONBIT + SET 'MENU-LEVEL,0 + PRINTR "The screen goes dark." +?CCL25: PRINTR "It isn't on!" + + + .FUNCT LIBRARY-TYPE + EQUAL? PRSO,INTNUM /?CCL3 + CALL NUMBERS-ONLY + RSTACK +?CCL3: ZERO? MENU-LEVEL \?CCL5 + ZERO? P-NUMBER \?CCL8 + PRINT NO-MEANING + CRLF + RTRUE +?CCL8: EQUAL? P-NUMBER,1 \?CCL10 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,HISTORY-MENU + PRINT SCREEN-TEXT + CRLF + SET 'MENU-LEVEL,1 + RETURN MENU-LEVEL +?CCL10: EQUAL? P-NUMBER,2 \?CCL12 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,CULTURE-MENU + PRINT SCREEN-TEXT + CRLF + SET 'MENU-LEVEL,2 + RETURN MENU-LEVEL +?CCL12: EQUAL? P-NUMBER,3 \?CCL14 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,TECHNOLOGY-MENU + PRINT SCREEN-TEXT + CRLF + SET 'MENU-LEVEL,3 + RETURN MENU-LEVEL +?CCL14: EQUAL? P-NUMBER,4 \?CCL16 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,GEOGRAPHY-MENU + PRINT SCREEN-TEXT + CRLF + SET 'MENU-LEVEL,4 + RETURN MENU-LEVEL +?CCL16: EQUAL? P-NUMBER,5 \?CCL18 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,PROJECT-MENU + PRINT SCREEN-TEXT + CRLF + SET 'MENU-LEVEL,5 + RETURN MENU-LEVEL +?CCL18: EQUAL? P-NUMBER,6 \?CCL20 + SET 'MENU-LEVEL,6 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,INTERLOGIC-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL20: GRTR? P-NUMBER,6 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL5: EQUAL? MENU-LEVEL,1 \?CCL24 + ZERO? P-NUMBER \?CCL27 + SET 'MENU-LEVEL,0 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,MAIN-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL27: EQUAL? P-NUMBER,1 \?CCL29 + SET 'MENU-LEVEL,11 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,11-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL29: EQUAL? P-NUMBER,2 \?CCL31 + SET 'MENU-LEVEL,12 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,12-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL31: EQUAL? P-NUMBER,3 \?CCL33 + SET 'MENU-LEVEL,13 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,13-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL33: GRTR? P-NUMBER,3 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL24: EQUAL? MENU-LEVEL,2 \?CCL37 + ZERO? P-NUMBER \?CCL40 + SET 'MENU-LEVEL,0 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,MAIN-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL40: EQUAL? P-NUMBER,1 \?CCL42 + SET 'MENU-LEVEL,21 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,21-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL42: EQUAL? P-NUMBER,2 \?CCL44 + SET 'MENU-LEVEL,22 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,22-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL44: EQUAL? P-NUMBER,3 \?CCL46 + SET 'MENU-LEVEL,23 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,23-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL46: GRTR? P-NUMBER,4 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL37: EQUAL? MENU-LEVEL,3 \?CCL50 + ZERO? P-NUMBER \?CCL53 + SET 'MENU-LEVEL,0 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,MAIN-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL53: EQUAL? P-NUMBER,1 \?CCL55 + SET 'MENU-LEVEL,31 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,31-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL55: EQUAL? P-NUMBER,2 \?CCL57 + SET 'MENU-LEVEL,32 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,32-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL57: EQUAL? P-NUMBER,3 \?CCL59 + SET 'MENU-LEVEL,33 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,33-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL59: EQUAL? P-NUMBER,4 \?CCL61 + SET 'MENU-LEVEL,34 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,34-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL61: EQUAL? P-NUMBER,5 \?CCL63 + SET 'MENU-LEVEL,35 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,35-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL63: GRTR? P-NUMBER,5 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL50: EQUAL? MENU-LEVEL,4 \?CCL67 + ZERO? P-NUMBER \?CCL70 + SET 'MENU-LEVEL,0 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,MAIN-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL70: EQUAL? P-NUMBER,1 \?CCL72 + SET 'MENU-LEVEL,41 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,41-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL72: EQUAL? P-NUMBER,2 \?CCL74 + SET 'MENU-LEVEL,42 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,42-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL74: EQUAL? P-NUMBER,3 \?CCL76 + SET 'MENU-LEVEL,43 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,43-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL76: GRTR? P-NUMBER,3 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL67: EQUAL? MENU-LEVEL,5 \?CCL80 + ZERO? P-NUMBER \?CCL83 + SET 'MENU-LEVEL,0 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,MAIN-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL83: EQUAL? P-NUMBER,1 \?CCL85 + SET 'MENU-LEVEL,51 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,51-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL85: EQUAL? P-NUMBER,2 \?CCL87 + SET 'MENU-LEVEL,52 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,52-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL87: EQUAL? P-NUMBER,3 \?CCL89 + SET 'MENU-LEVEL,53 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,53-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL89: GRTR? P-NUMBER,3 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL80: EQUAL? MENU-LEVEL,6 \?CCL93 + ZERO? P-NUMBER \?CCL96 + SET 'MENU-LEVEL,0 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,MAIN-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL96: EQUAL? P-NUMBER,1 \?CCL98 + SET 'MENU-LEVEL,61 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,61-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + IN? FLOYD,HERE \FALSE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTR "Floyd, peering over your shoulder, says ""Oh, I love that game! Solved every problem, except couldn't figure out how to get into white house.""" +?CCL98: EQUAL? P-NUMBER,2 \?CCL103 + SET 'MENU-LEVEL,62 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,62-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL103: EQUAL? P-NUMBER,3 \?CCL105 + SET 'MENU-LEVEL,63 + PRINT TEXT-APPEARS + CRLF + SET 'SCREEN-TEXT,63-TEXT + PRINT SCREEN-TEXT + CRLF + PRINT MORE-INFO + CRLF + RTRUE +?CCL105: GRTR? P-NUMBER,3 \FALSE + PRINT NO-MEANING + CRLF + RTRUE +?CCL93: GRTR? MENU-LEVEL,10 \?CCL109 + LESS? MENU-LEVEL,20 \?CCL109 + ZERO? P-NUMBER \?CCL114 + SET 'MENU-LEVEL,1 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,HISTORY-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL114: PRINT LOW-END + CRLF + RTRUE +?CCL109: GRTR? MENU-LEVEL,20 \?CCL116 + LESS? MENU-LEVEL,30 \?CCL116 + ZERO? P-NUMBER \?CCL121 + SET 'MENU-LEVEL,2 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,CULTURE-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL121: PRINT LOW-END + CRLF + RTRUE +?CCL116: GRTR? MENU-LEVEL,30 \?CCL123 + LESS? MENU-LEVEL,40 \?CCL123 + ZERO? P-NUMBER \?CCL128 + SET 'MENU-LEVEL,3 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,TECHNOLOGY-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL128: PRINT LOW-END + CRLF + RTRUE +?CCL123: GRTR? MENU-LEVEL,40 \?CCL130 + LESS? MENU-LEVEL,50 \?CCL130 + ZERO? P-NUMBER \?CCL135 + SET 'MENU-LEVEL,4 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,GEOGRAPHY-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL135: PRINT LOW-END + CRLF + RTRUE +?CCL130: GRTR? MENU-LEVEL,50 \?CCL137 + LESS? MENU-LEVEL,60 \?CCL137 + ZERO? P-NUMBER \?CCL142 + SET 'MENU-LEVEL,5 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,PROJECT-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL142: PRINT LOW-END + CRLF + RTRUE +?CCL137: GRTR? MENU-LEVEL,60 \FALSE + LESS? MENU-LEVEL,70 \FALSE + ZERO? P-NUMBER \?CCL149 + SET 'MENU-LEVEL,6 + PRINT SCREEN-CLEARS + CRLF + SET 'SCREEN-TEXT,INTERLOGIC-MENU + PRINT SCREEN-TEXT + CRLF + RTRUE +?CCL149: PRINT LOW-END + CRLF + RTRUE + + + .FUNCT SPOOL-READER-F + EQUAL? PRSA,V?LAMP-ON \?CCL3 + FSET? SPOOL-READER,ONBIT \?CCL6 + PRINTR "The spool reader is already on." +?CCL6: FSET SPOOL-READER,ONBIT + FSET SPOOL-READER,TOUCHBIT + FIRST? SPOOL-READER \?CCL9 + PRINT SPOOL-TEXT + CRLF + RTRUE +?CCL9: PRINTR "The machine hums quietly, and the screen lights up with the phrase ""Pleez insurt spuul.""" +?CCL3: EQUAL? PRSA,V?LAMP-OFF \?CCL11 + FSET? SPOOL-READER,ONBIT \?CCL14 + FCLEAR SPOOL-READER,ONBIT + PRINTR "The spool reader is now off." +?CCL14: PRINTR "It's not on!" +?CCL11: EQUAL? PRSA,V?EXAMINE \?CCL16 + PRINTI "The machine has a small screen, and below that, a small circular opening. The screen is currently " + FSET? SPOOL-READER,ONBIT \?CCL19 + FIRST? SPOOL-READER \?CCL19 + PRINTI "displaying some information:" + CRLF + PRINT SPOOL-TEXT + CRLF + RTRUE +?CCL19: PRINTR "blank." +?CCL16: EQUAL? PRSA,V?READ \?CCL23 + FSET? SPOOL-READER,ONBIT \?CCL26 + FIRST? SPOOL-READER \?CCL26 + PRINT SPOOL-TEXT + CRLF + RTRUE +?CCL26: PRINTR "The screen is blank." +?CCL23: EQUAL? PRSA,V?PUT \?CCL30 + EQUAL? PRSI,SPOOL-READER \?CCL30 + FIRST? SPOOL-READER \?CCL35 + PRINTR "There's already a spool in the reader." +?CCL35: EQUAL? PRSO,GREEN-SPOOL \?CCL37 + SET 'SPOOL-TEXT,GREEN-TEXT + MOVE GREEN-SPOOL,SPOOL-READER + FSET GREEN-SPOOL,TRYTAKEBIT + PRINT SPOOL-FITS + FSET? SPOOL-READER,ONBIT \?CND38 + PRINT SOME-INFO +?CND38: CRLF + RTRUE +?CCL37: EQUAL? PRSO,RED-SPOOL \?CCL41 + SET 'SPOOL-TEXT,RED-TEXT + MOVE RED-SPOOL,SPOOL-READER + FSET RED-SPOOL,TRYTAKEBIT + PRINT SPOOL-FITS + FSET? SPOOL-READER,ONBIT \?CND42 + PRINT SOME-INFO +?CND42: CRLF + RTRUE +?CCL41: PRINTR "It doesn't fit in the circular opening." +?CCL30: EQUAL? PRSA,V?CLOSE \FALSE + CALL NO-CLOSE + RTRUE + + + .FUNCT PROJCON-OFFICE-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "This office looks like a headquarters of some kind. Exits lead north and east. The west wall displays a logo. " + ZERO? COMPUTER-FIXED /?CCL6 + PRINTR "The mural that previously adorned the south wall has slid away, revealing an open doorway to a large elevator!" +?CCL6: PRINTR "The south wall is completely covered by a garish mural which clashes with the other decor of the room." +?CCL3: EQUAL? RARG,M-END \FALSE + IN? FLOYD,HERE \FALSE + ZERO? MURAL-FLAG \FALSE + SET 'MURAL-FLAG,TRUE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTR "Floyd surveys the mural and scratches his head. ""I don't remember seeing this before,"" he comments." + + + .FUNCT CRYO-ELEVATOR-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a large, plain elevator with one solitary button and a door to the north which is " + CALL DDESC,CRYO-ELEVATOR-DOOR + PRINTR "." + + + .FUNCT CRYO-EXIT-F + FSET? CRYO-ELEVATOR-DOOR,OPENBIT \?CCL3 + ZERO? CRYO-SCORE-FLAG /?CCL6 + RETURN CRYO-ANTEROOM +?CCL6: RETURN PROJCON-OFFICE +?CCL3: CALL DOOR-CLOSED + RFALSE + + + .FUNCT I-CRYO-ELEVATOR-ARRIVE + FSET CRYO-ELEVATOR-DOOR,OPENBIT + CRLF + PRINTR "The elevator door opens onto a room to the north." + + + .FUNCT CRYO-ANTEROOM-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "The elevator closes as you leave it, and you find yourself in a small, chilly room. To the north, through a wide arch, is an enormous chamber lined from floor to ceiling with thousands of cryo-units. You can see similar chambers beyond, and your mind staggers at the thought of the millions of individuals asleep for countless centuries. + +In the anteroom where you stand is a solitary cryo-unit, its cover frosted. Next to the cryo-unit is a complicated control panel." + CRLF + CRLF + RTRUE +?CCL3: EQUAL? RARG,M-END \FALSE + PRINTI "A door slides open and a medical robot glides in. It opens the cryo-unit and administers an injection to its inhabitant. As the robot glides away, a figure rises from the cryo-unit -- a handsome, middle-aged woman with flowing red hair. She spends some time studying readouts from the control panel" + ZERO? COMM-FIXED /?CCL8 + ZERO? DEFENSE-FIXED /?CCL8 + PRINTI ", pressing several keys." + CRLF + JUMP ?CND6 +?CCL8: PRINTC 46 + CRLF +?CND6: ZERO? COURSE-CONTROL-FIXED /?CCL13 + PRINTI " +As other cryo-units in the chambers beyond begin opening, the woman turns to you, bows gracefully, and speaks in a beautiful, lilting voice. ""I am Veldina, leader of Resida. Thanks to you, the cure has been discovered, and the planetary systems repaired. We are eternally grateful.""" + CRLF + ZERO? COMM-FIXED /?CCL16 + ZERO? DEFENSE-FIXED /?CCL16 + PRINTI " +""You will also be glad to hear that a ship of your Stellar Patrol now orbits the planet. I have sent them the coordinates for this room."" As if on cue, a landing party from the S.P.S. Flathead materializes nearby. Blather is with them, having been picked up from deep space in another escape pod, babbling cravenly. Captain Sterling of the Flathead acknowledges your heroic actions, and informs you of your promotion to Lieutenant First Class. + +As a team of mutant hunters head for the cryo-elevator, Veldina mentions that the grateful people of Resida offer you leadership of their world. Captain Sterling points out that, even if you choose to remain on Resida, Blather (demoted to Ensign Twelfth Class) has been assigned as your personal toilet attendant. + +You feel a sting from your arm and turn to see a medical robot moving away after administering the antidote for The Disease. + +A team of robot technicians step into the anteroom. They part their ranks, and a familiar figure comes bounding toward you! ""Hi!"" shouts Floyd, with uncontrolled enthusiasm. ""Floyd feeling better now!"" Smiling from ear to ear, he says, ""Look what Floyd found!"" He hands you a helicopter key, a reactor elevator card, and a paddleball set. ""Maybe we can use them in the sequel...""" + CRLF + CRLF + CALL FINISH,FALSE-VALUE + RSTACK +?CCL16: PRINTI " +""Unfortunately, a second ship from your Stellar Patrol has " + ZERO? DEFENSE-FIXED \?CCL21 + PRINTI "been destroyed by our malfunctioning meteor defenses." + JUMP ?CND19 +?CCL21: PRINTI "come looking for survivors, and because of our malfunctioning communications system, has given up and departed." +?CND19: PRINTI " I fear that you are stranded on Resida, possibly forever. However, we show our gratitude by offering you an unlimited bank account and a house in the country.""" + CRLF + CRLF + CALL FINISH,FALSE-VALUE + RSTACK +?CCL13: PRINTI " +She turns to you and, with a strained voice says, ""You have fixed our computer and a Cure has been discovered, and we are grateful. But alas, it was all in vain. Our planetary course control system has malfunctioned, and the orbit has now decayed beyond correction. Soon Resida will plunge into the sun.""" + CRLF + CRLF + ZERO? COMM-FIXED /?CND22 + ZERO? DEFENSE-FIXED /?CND22 + PRINTI "Veldina examines the control panel again. ""Fortunately, another ship from your Stellar Patrol has arrived, so at least you will survive."" At that moment, a landing party from the S.P.S. Flathead materializes, and takes you away from the doomed world." + CRLF + CRLF +?CND22: CALL FINISH,FALSE-VALUE + RSTACK + + + .FUNCT COMPUTER-ACTION + SET 'COMPUTER-FLAG,TRUE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + PRINTI "Floyd examines the " + EQUAL? HERE,COMPUTER-ROOM \?CCL3 + PRINTI "glowing light" + JUMP ?CND1 +?CCL3: PRINTI "computer printout" +?CND1: PRINTR ". With a concerned frown, he says, ""Uh oh. Computer is broken. A Doctor-person once told Floyd that Computer is the most important part of the Project.""" + + + .FUNCT PRINT-OUT-F + EQUAL? PRSA,V?EXAMINE,V?READ \FALSE + CALL FIXED-FONT-ON + PRINTI "The printout is hundreds of pages long. It would take many chrons to read it all. The last page looks pretty interesting, though: + +""Daalee Statis Reeport: +PREELIMINEREE REESURC: 100.000% +INTURMEEDEEIT REESURC: 100.000% +FIINUL REESURC: 100.000% +DRUG PROODUKSHUN: 100.000% +DRUG TESTEENG: 99.985% +Proojektid tiim tuu reeviivul prooseedzur: 0 daaz, 0.8 kronz + + +*** ALURT! ALURT! *** +Malfunkshun in Sekshun 384! Sumuneeng reepaar roobot."" + +The printout ends at this point." + CRLF + CALL FIXED-FONT-OFF + RSTACK + + + .FUNCT MINI-CARD-F + FSET? MINI-CARD,NDESCBIT \FALSE + EQUAL? PRSA,V?SMELL,V?PULL /?CCL3 + EQUAL? PRSA,V?PUSH,V?TAKE,V?SET /?CCL3 + EQUAL? PRSA,V?TURN,V?MOVE,V?RUB \FALSE +?CCL3: PRINTR "It's in the next room." + + + .FUNCT LAB-UNIFORM-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTI "It is a plain lab uniform. The logo above the pocket depicts a flame burning above some kind of sleep chamber. The pocket is " + CALL DDESC,LAB-UNIFORM + PRINTR "." +?CCL3: EQUAL? PRSA,V?OPEN,V?SEARCH \?CCL5 + FSET? LAB-UNIFORM,OPENBIT \?CCL8 + PRINTR "The pocket is already open." +?CCL8: FSET LAB-UNIFORM,OPENBIT + ZERO? UNIFORM-OPENED /?CCL11 + FIRST? LAB-UNIFORM \?CCL14 + PRINTI "Opening the uniform's pocket reveals " + CALL PRINT-CONTENTS,LAB-UNIFORM + PRINTR "." +?CCL14: PRINTR "The pocket is empty." +?CCL11: FSET LAB-UNIFORM,OPENBIT + SET 'UNIFORM-OPENED,TRUE-VALUE + PRINTR "You discover a small piece of paper and a teleportation access card in the pocket of the uniform." +?CCL5: EQUAL? PRSA,V?WEAR \FALSE + FSET? PATROL-UNIFORM,WORNBIT \FALSE + PRINTR "It won't fit on top of the Patrol uniform." + + + .FUNCT COMBINATION-PAPER-F + EQUAL? PRSA,V?EXAMINE,V?READ \FALSE + PRINTI "Week uv 14-Juun--2882. Kombinaashun tuu Konfurins Ruum: " + PRINTN NUMBER-NEEDED + PRINTR "." + + + .FUNCT BIO-LOCK-EAST-F,RARG + EQUAL? RARG,M-END \FALSE + IN? FLOYD,HERE \FALSE + FSET? FLOYD,RLANDBIT \FALSE + EQUAL? FLOYD,WINNER /FALSE + ZERO? FLOYD-WAITING /?CCL10 + GRTR? WAITING-COUNTER,3 \?CCL13 + SET 'FLOYD-WAITING,FALSE-VALUE + SET 'FLOYD-GAVE-UP,TRUE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + SET 'FLOYD-FOLLOW,FALSE-VALUE + MOVE FLOYD,BIO-LOCK-WEST + CALL QUEUE,I-FLOYD,1 + PUT STACK,0,1 + PRINTR """Okay,"" says Floyd with uncharacteristic annoyance. ""Forget about the stupid card."" He goes to the other end of the bio-lock and sulks." +?CCL13: ZERO? FLOYD-FORAYED \FALSE + SET 'FLOYD-SPOKE,TRUE-VALUE + INC 'WAITING-COUNTER + PRINTR "Floyd looks at you with a dash of impatience and a healthy helping of nervousness. ""Well?"" he asks. ""Are you going to open the door?""" +?CCL10: ZERO? FLOYD-GAVE-UP \FALSE + ZERO? FLOYD-PEERED \FALSE + SET 'FLOYD-SPOKE,TRUE-VALUE + SET 'FLOYD-PEERED,TRUE-VALUE + CALL QUEUE,I-CLEAR-FLOYD-PEER,40 + PUT STACK,0,1 + FCLEAR MINI-CARD,INVISIBLE + PRINTI "Floyd stands on his tiptoes and peers in the window. " + ZERO? COMPUTER-FLAG /?CCL22 + SET 'FLOYD-WAITING,TRUE-VALUE + PRINTR """Looks dangerous in there,"" says Floyd. ""I don't think you should go inside."" He peers in again. ""We'll need card there to fix computer. Hmmm... I know! Floyd will get card. Robots are tough. Nothing can hurt robots. You open the door, then Floyd will rush in. Then you close door. When Floyd knocks, open door again. Okay? Go!"" Floyd's voice trembles slightly as he waits for you to open the door." +?CCL22: PRINTR """Ooo, look,"" he says. ""There's a miniaturization booth access card!""" + + + .FUNCT I-CLEAR-FLOYD-PEER + SET 'FLOYD-PEERED,FALSE-VALUE + RFALSE + + + .FUNCT BIO-DOOR-EAST-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? BIO-DOOR-EAST,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET? BIO-DOOR-WEST,OPENBIT \?CCL8 + PRINT BOTH-DOORS + CRLF + RTRUE +?CCL8: ZERO? FLOYD-WAITING /?CCL10 + FSET? FLOYD,RLANDBIT \?CCL10 + ZERO? FORAY-COUNTER \?CCL10 + CALL QUEUE,I-FLOYD-FORAY,-1 + PUT STACK,0,1 + SET 'FLOYD-FORAYED,TRUE-VALUE + FSET BIO-DOOR-EAST,OPENBIT + REMOVE FLOYD + CALL INT,I-FLOYD + PUT STACK,0,0 + PRINTR "The door opens and Floyd, pausing only for the briefest moment, plunges into the Bio Lab. Immediately, he is set upon by hideous, mutated monsters! More are heading straight toward the open door! Floyd shrieks and yells to you to close the door." +?CCL10: ZERO? FLOYD-FORAYED \?CCL15 + CALL INT,I-CHASE-SCENE + GET STACK,C-ENABLED? + ZERO? STACK \?CCL15 + CALL JIGS-UP,STR?265 + RSTACK +?CCL15: FSET BIO-DOOR-EAST,OPENBIT + CALL QUEUE,I-BIO-EAST-CLOSES,30 + PUT STACK,0,1 + PRINT DOOR-OPENS + CRLF + RTRUE +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? BIO-DOOR-EAST,OPENBIT \?CCL22 + EQUAL? FORAY-COUNTER,4 \?CND23 + SET 'C-ELAPSED,95 +?CND23: FCLEAR BIO-DOOR-EAST,OPENBIT + PRINTI "The door closes" + CALL INT,I-CHASE-SCENE + GET STACK,C-ENABLED? + EQUAL? STACK,1 \?CCL27 + PRINTR ", but not soon enough!" +?CCL27: PRINTR "." +?CCL22: CALL IS-CLOSED + RSTACK + + + .FUNCT I-BIO-EAST-CLOSES + FSET? BIO-DOOR-EAST,OPENBIT \FALSE + FCLEAR BIO-DOOR-EAST,OPENBIT + EQUAL? HERE,BIO-LOCK-EAST,BIO-LOCK-WEST,BIO-LAB \FALSE + CRLF + PRINTR "The door at the eastern end of the bio-lock closes silently." + + + .FUNCT BIO-DOOR-WEST-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? BIO-DOOR-WEST,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET? BIO-DOOR-EAST,OPENBIT \?CCL8 + PRINT BOTH-DOORS + CRLF + RTRUE +?CCL8: PRINT DOOR-OPENS + CRLF + CALL QUEUE,I-BIO-WEST-CLOSES,30 + PUT STACK,0,1 + FSET BIO-DOOR-WEST,OPENBIT + RTRUE +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? BIO-DOOR-WEST,OPENBIT \?CCL13 + FCLEAR BIO-DOOR-WEST,OPENBIT + PRINT DOOR-CLOSES + CRLF + RTRUE +?CCL13: CALL IS-CLOSED + RSTACK + + + .FUNCT I-BIO-WEST-CLOSES + FSET? BIO-DOOR-WEST,OPENBIT \FALSE + FCLEAR BIO-DOOR-WEST,OPENBIT + EQUAL? HERE,BIO-LOCK-WEST,BIO-LOCK-EAST,MAIN-LAB \FALSE + CRLF + PRINTR "The door at the western end of the bio-lock closes silently." + + + .FUNCT RAD-DOOR-EAST-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? RAD-DOOR-EAST,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET? RAD-DOOR-WEST,OPENBIT \?CCL8 + PRINT BOTH-DOORS + CRLF + RTRUE +?CCL8: FSET RAD-DOOR-EAST,OPENBIT + PRINT DOOR-OPENS + CRLF + RTRUE +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? RAD-DOOR-EAST,OPENBIT \?CCL13 + FCLEAR RAD-DOOR-EAST,OPENBIT + PRINT DOOR-CLOSES + CRLF + RTRUE +?CCL13: CALL IS-CLOSED + RSTACK + + + .FUNCT RAD-DOOR-WEST-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? RAD-DOOR-WEST,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: FSET? RAD-DOOR-EAST,OPENBIT \?CCL8 + PRINT BOTH-DOORS + CRLF + RTRUE +?CCL8: PRINT DOOR-OPENS + CRLF + FSET RAD-DOOR-WEST,OPENBIT + RTRUE +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? RAD-DOOR-WEST,OPENBIT \?CCL13 + FCLEAR RAD-DOOR-WEST,OPENBIT + PRINT DOOR-CLOSES + CRLF + RTRUE +?CCL13: CALL IS-CLOSED + RSTACK + + + .FUNCT I-FLOYD-FORAY + INC 'FORAY-COUNTER + EQUAL? FORAY-COUNTER,2 \?CCL3 + FSET? BIO-DOOR-EAST,OPENBIT \?CCL6 + CRLF + CALL MONSTER-DEATH + RSTACK +?CCL6: CRLF + PRINTR "From within the lab you hear ferocious growlings, the sounds of a skirmish, and then a high-pitched metallic scream!" +?CCL3: EQUAL? FORAY-COUNTER,3 \?CCL8 + FSET? BIO-DOOR-EAST,OPENBIT \?CCL11 + CRLF + CALL MONSTER-DEATH + RSTACK +?CCL11: CRLF + PRINTR "You hear, slightly muffled by the door, three fast knocks, followed by the distinctive sound of tearing metal." +?CCL8: EQUAL? FORAY-COUNTER,4 \?CCL13 + FSET? BIO-DOOR-EAST,OPENBIT \?CCL16 + MOVE FLOYD,HERE + CRLF + PRINTR "Floyd stumbles out of the Bio Lab, clutching the mini-booth card. The mutations rush toward the open doorway!" +?CCL16: CRLF + PRINTI "The three knocks come again, followed by a wild scream. Then, all is silence from within the Bio Lab, except for an occasional metallic crunch." + CRLF + FCLEAR FLOYD,RLANDBIT + CALL INT,I-FLOYD-FORAY + PUT STACK,0,0 + RTRUE +?CCL13: EQUAL? FORAY-COUNTER,5 \FALSE + FSET? BIO-DOOR-EAST,OPENBIT \?CCL21 + CRLF + CALL MONSTER-DEATH + RSTACK +?CCL21: REMOVE FLOYD + FCLEAR FLOYD,RLANDBIT + CALL INT,I-FLOYD + PUT STACK,0,0 + FSET FLOYD,INVISIBLE + MOVE DEAD-FLOYD,HERE + MOVE MINI-CARD,BIO-LOCK-EAST + FSET MINI-CARD,TOUCHBIT + ADD SCORE,2 >SCORE + CRLF + PRINTI "And not a moment too soon! You hear a pounding from the door as the monsters within vent their frustration at losing their prey. + +Floyd staggers to the ground, dropping the mini card. He is badly torn apart, with loose wires and broken circuits everywhere. Oil flows from his lubrication system. He obviously has only moments to live. + +You drop to your knees and cradle Floyd's head in your lap. Floyd looks up at his friend with half-open eyes. ""Floyd did it ... got card. Floyd a good friend, huh?"" Quietly, you sing Floyd's favorite song, the Ballad of the Starcrossed Miner: + +O, they ruled the solar system +Near ten thousand years before +In their single starcrossed scout ships +Mining ast'roids, spinning lore. + +Then one true courageous miner +Spied a spaceship from the stars +Boarded he that alien liner +Out beyond the orb of Mars. + +Yes, that ship was filled with danger +Mighty monsters barred his way +Yet he solved the alien myst'ries +Mining quite a lode that day. + +O, they ruled the solar system +Near ten thousand years before +'Til one brave advent'rous spirit +Brought that mighty ship to shore. + +As you finish the last verse, Floyd smiles with contentment, and then his eyes close as his head rolls to one side. You sit in silence for a moment, in memory of a brave friend who gave his life so that you might live." + CRLF + FCLEAR FLOYD,RLANDBIT + FCLEAR MINI-CARD,NDESCBIT + CALL INT,I-FLOYD-FORAY + PUT STACK,0,0 + RTRUE + + + .FUNCT MONSTER-DEATH + CALL JIGS-UP,STR?269 + RSTACK + + + .FUNCT BIO-LAB-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "This is a huge laboratory filled with many biological experiments. The lighting is " + ZERO? LAB-LIGHTS-ON /?CCL6 + PRINTI "bright." + JUMP ?CND4 +?CCL6: PRINTI "dim, and a faint blue glow comes from a gaping crack in the northern wall." +?CND4: PRINTR " Some of the experiments seem to be out of control..." +?CCL3: EQUAL? RARG,M-END \FALSE + CALL QUEUE,I-CHASE-SCENE,-1 + PUT STACK,0,1 + ZERO? LAB-FLOODED /?CCL11 + PRINTI "The air is filled with mist, which is affecting the mutants. They appear to be stunned and confused, but are slowly recovering." + CRLF + FSET? GAS-MASK,WORNBIT /FALSE + CALL JIGS-UP,STR?270 + RSTACK +?CCL11: CALL JIGS-UP,STR?271 + RSTACK + + + .FUNCT I-CHASE-SCENE + IN? RAT-ANT,HERE \?CCL3 + ZERO? LAB-FLOODED \?CCL3 + CALL JIGS-UP,STR?272 + JUMP ?CND1 +?CCL3: ZERO? LAB-FLOODED \?CND1 + EQUAL? HERE,BIO-LOCK-WEST \?CCL9 + ZERO? EXTRA-MOVE-FLAG \?CCL9 + SET 'EXTRA-MOVE-FLAG,TRUE-VALUE + CRLF + PRINTI "The monsters gallop toward you, smacking their lips." + CRLF + JUMP ?CND1 +?CCL9: EQUAL? HERE,CRYO-ELEVATOR \?CCL13 + ZERO? CRYO-MOVE-FLAG \?CCL13 + SET 'CRYO-MOVE-FLAG,TRUE-VALUE + CRLF + PRINTI "The monsters are storming straight toward the elevator door!" + CRLF + JUMP ?CND1 +?CCL13: EQUAL? HERE,SECOND-TO-LAST-ROOM \?CCL17 + EQUAL? PRSA,V?WALK \?CCL17 + CALL JIGS-UP,STR?273 + JUMP ?CND1 +?CCL17: EQUAL? HERE,CRYO-ELEVATOR \?CND20 + CRLF + CALL MONSTER-DEATH +?CND20: MOVE RAT-ANT,HERE + MOVE TRIFFID,HERE + MOVE TROLL,HERE + MOVE GRUE,HERE + CRLF + PRINTI "The mutants " + EQUAL? HERE,BIO-LOCK-WEST \?CCL24 + PRINTI "are almost upon you now!" + CRLF + JUMP ?CND1 +?CCL24: PRINTI "burst into the room right on your heels! " + CALL PICK-ONE,MONSTER-ENTRANCES + PRINT STACK + CRLF +?CND1: SET 'SECOND-TO-LAST-ROOM,LAST-CHASE-ROOM + SET 'LAST-CHASE-ROOM,HERE + RETURN LAST-CHASE-ROOM + + + .FUNCT RADIATION-LAB-F,RARG + EQUAL? RARG,M-ENTER \FALSE + FSET? RADIATION-LAB,TOUCHBIT /FALSE + CALL QUEUE,I-NUKED-BLUE,50 + PUT STACK,0,1 + RTRUE + + + .FUNCT I-NUKED-BLUE + CALL QUEUE,I-NUKED-BLUE,-1 + PUT STACK,0,1 + INC 'NUKED-COUNTER + EQUAL? NUKED-COUNTER,1 \?CCL3 + CRLF + PRINTR "You suddenly feel sick and dizzy." +?CCL3: EQUAL? NUKED-COUNTER,2 \?CCL5 + CRLF + PRINTI "You feel incredibly nauseous and begin vomiting. Also, all your hair has fallen out." + IN? FLOYD,HERE \?CND6 + PRINTR " Floyd points at you and laughs hysterically. ""You look funny with no hair,"" he gasps." +?CND6: CRLF + RTRUE +?CCL5: EQUAL? NUKED-COUNTER,3 \FALSE + CALL JIGS-UP,STR?279 + RSTACK + + + .FUNCT LAMP-F + EQUAL? PRSA,V?LAMP-ON \?CCL3 + FSET? LAMP,ONBIT \?CCL6 + PRINTR "It is on." +?CCL6: FSET LAMP,ONBIT + FSET LAMP,TOUCHBIT + PRINTR "The lamp is now producing a bright light." +?CCL3: EQUAL? PRSA,V?LAMP-OFF \FALSE + FSET? LAMP,ONBIT \?CCL11 + FCLEAR LAMP,ONBIT + PRINTR "The lamp goes dark." +?CCL11: PRINTR "It isn't on." + + + .FUNCT LAB-OFFICE-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "This is the office for storing files on Bio Lab experiments. A large and messy desk is surrounded by locked files. A small booth lies to the south. " + FSET? OFFICE-DOOR,OPENBIT \?CCL6 + PRINTI "An open" + JUMP ?CND4 +?CCL6: PRINTI "A closed" +?CND4: PRINTR " door to the west is labelled ""Biioo Lab."" You realize with shock and horror that the only way out is through the mutant-infested Bio Lab. + +On the wall are three buttons: a white button labelled ""Lab Liits On"", a black button labelled ""Lab Liits Of"", and a red button labelled ""Eemurjensee Sistum.""" +?CCL3: EQUAL? RARG,M-END \FALSE + FSET? OFFICE-DOOR,OPENBIT \FALSE + ZERO? LAB-FLOODED /?CCL13 + PRINTR "Through the open doorway you can see the Bio Lab. It seems to be filled with a light mist. Horrifying biological nightmares stagger about making choking noises." +?CCL13: CALL JIGS-UP,STR?283 + RSTACK + + + .FUNCT LAB-DESK-F + EQUAL? PRSA,V?SEARCH,V?EXAMINE \?CCL3 + FSET? LAB-DESK,TOUCHBIT /?CCL3 + MOVE MEMO,ADVENTURER + FSET LAB-DESK,TOUCHBIT + PRINTI "After inspecting the various papers on the desk, you find only one item of interest, a memo of some sort. The desk itself is " + FSET? LAB-DESK,OPENBIT \?CCL8 + PRINTI "open" + JUMP ?CND6 +?CCL8: PRINTI "closed, but it doesn't look locked" +?CND6: PRINTR "." +?CCL3: EQUAL? PRSA,V?OPEN \FALSE + IN? GAS-MASK,LAB-DESK \FALSE + CALL THIS-IS-IT,GAS-MASK + RFALSE + + + .FUNCT LIGHT-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + ZERO? LAB-LIGHTS-ON /?CCL6 + PRINTR "Nothing happens." +?CCL6: SET 'LAB-LIGHTS-ON,TRUE-VALUE + PRINT FAINT-SOUND + CRLF + RTRUE + + + .FUNCT DARK-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + ZERO? LAB-LIGHTS-ON /?CCL6 + SET 'LAB-LIGHTS-ON,FALSE-VALUE + PRINT FAINT-SOUND + CRLF + RTRUE +?CCL6: PRINTR "Nothing happens." + + + .FUNCT FUNGICIDE-BUTTON-F + EQUAL? PRSA,V?PUSH \FALSE + SET 'LAB-FLOODED,TRUE-VALUE + CALL QUEUE,I-UNFLOOD,50 + PUT STACK,0,1 + PRINTR "You hear a hissing from beyond the door to the west." + + + .FUNCT I-UNFLOOD + SET 'LAB-FLOODED,FALSE-VALUE + EQUAL? HERE,BIO-LAB \?CCL3 + CRLF + PRINTR "The last traces of mist in the air vanish. The mutants, recovering quickly, notice you and begin salivating." +?CCL3: EQUAL? HERE,LAB-OFFICE \FALSE + FSET? OFFICE-DOOR,OPENBIT \FALSE + CRLF + PRINTR "The mist in the Bio Lab clears. The mutants recover and rush toward the door!" + + + .FUNCT I-TURNOFF-MINI + SET 'MINI-ACTIVATED,FALSE-VALUE + EQUAL? HERE,MINI-BOOTH \FALSE + CRLF + PRINTR "A recorded voice says ""Miniaturization booth de-activated.""" + + + .FUNCT STATION-384-F,RARG + EQUAL? RARG,M-ENTER \FALSE + ZERO? BEEN-HERE /FALSE + SET 'BEEN-HERE,FALSE-VALUE + ZERO? COMPUTER-FIXED /?CCL9 + PRINTI "A voice seems to whisper in your ear ""Main Miniaturization and Teleportation Booth has malfunctioned...switching to Auxiliary Booth..."" " + CALL QUEUE,I-ANNOUNCEMENT,130 + PUT STACK,0,1 + PRINT FAMILIAR-WRENCHING + CRLF + CALL GOTO,AUXILIARY-BOOTH + RETURN 2 +?CCL9: PRINT FAMILIAR-WRENCHING + CRLF + CALL GOTO,MINI-BOOTH,FALSE-VALUE + RSTACK + + + .FUNCT I-ANNOUNCEMENT + CRLF + PRINTR "A recorded announcement blares from the public address system. ""Revival procedure beginning. Cryo-chamber access from Project Control Office now open.""" + + + .FUNCT MIDDLE-OF-STRIP-F,RARG + EQUAL? RARG,M-ENTER \FALSE + ZERO? COMPUTER-FIXED /FALSE + ZERO? NO-MICROBE /FALSE + ZERO? MICROBE-DISPATCHED \FALSE + MOVE MICROBE,HERE + CALL QUEUE,I-MICROBE,-1 + PUT STACK,0,1 + SET 'NO-MICROBE,FALSE-VALUE + PRINTI "Suddenly, with a loud plop, a giant elephant-sized monster lands on the strip just in front of you. It is amorphously shaped, its skin a slimy translucent red membrane. While most of your brain screams with panic about the disgusting monster that now blocks your exit, some small section in the back of your mind calmly realizes that this is merely some tiny microbe which has somehow violated the sterile environment of the computer interior. + +As you stand frozen with fear, the microbe slithers toward you, extending slimy pseudopods thick with waving cilia. It looks pretty hungry, and seems intent on having you for lunch." + CRLF + CRLF + RTRUE + + + .FUNCT STRIP-NEAR-RELAY-F,RARG + EQUAL? RARG,M-LOOK \?CCL3 + PRINTI "North of here, the filament ends at a huge featureless wall, presumably the side of some micro-component. " + IN? RELAY,HERE \?CCL6 + PRINTR "To the east is a vacuu-sealed micro-relay, sealed in transparent red plastic. You could probably see into the micro-relay." +?CCL6: PRINTR "To the east are the shattered remains of some large object." +?CCL3: EQUAL? RARG,M-ENTER \FALSE + ZERO? NO-MICROBE \FALSE + MOVE MICROBE,HERE + SET 'MICROBE-COUNTER,0 + PRINTR "The microbe, writhing angrily, follows you northward." + + + .FUNCT RELAY-EXIT-F + IN? RELAY,HERE \?CCL3 + PRINTI "The relay is sealed. Although you cannot enter it, you could look into it." + CRLF + RFALSE +?CCL3: PRINTI "You would slice yourself to ribbons on the shattered relay." + CRLF + RFALSE + + + .FUNCT RELAY-F + EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE + PRINTI "This is a vacuum-sealed micro-relay, encased in red translucent plastic." + ZERO? COMPUTER-FIXED \?CND4 + PRINTR " Within, you can see that some sort of speck or impurity has wedged itself into the contact point of the relay, preventing it from closing. The speck, presumably of microscopic size, resembles a blue boulder to you in your current size." +?CND4: CRLF + RTRUE + + + .FUNCT LASER-DIAL-F + EQUAL? PRSA,V?SET \?CCL3 + EQUAL? PRSI,INTNUM \?CCL3 + FSET? LASER-DIAL,MUNGEDBIT \?CCL8 + PRINTR "The laser dial seems to have become damaged and will not turn." +?CCL8: EQUAL? P-NUMBER,LASER-SETTING \?CCL10 + PRINTR "That's where it's set now!" +?CCL10: GRTR? P-NUMBER,6 /?CTR11 + ZERO? P-NUMBER \?CCL12 +?CTR11: PRINTR "The dial can only be set from 1 to 6." +?CCL12: SET 'LASER-SETTING,P-NUMBER + PRINTI "The dial is now set to " + PRINTN P-NUMBER + PRINTR "." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTI "The dial is currently set to " + PRINTN LASER-SETTING + PRINTR "." + + + .FUNCT ZAP-COUNT + IN? OLD-BATTERY,LASER \?CCL3 + GRTR? OLD-SHOTS,0 \TRUE + DEC 'OLD-SHOTS + RFALSE +?CCL3: IN? NEW-BATTERY,LASER \TRUE + GRTR? NEW-SHOTS,0 \TRUE + DEC 'NEW-SHOTS + RFALSE + + + .FUNCT LASER-F,RARG=0 + EQUAL? PRSA,V?SET \?CCL3 + EQUAL? PRSI,INTNUM \?CCL3 + CALL PERFORM,V?SET,LASER-DIAL,PRSI + RTRUE +?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7 + PRINTI "The laser, though portable, is still fairly heavy. It has a long, slender barrel and a dial with six settings, labelled ""1"" through ""6."" This dial is currently on setting " + PRINTN LASER-SETTING + PRINTI ". There is a depression on the top of the laser which " + IN? OLD-BATTERY,LASER \?CCL10 + PRINTI "contains an " + PRINTD OLD-BATTERY + JUMP ?CND8 +?CCL10: IN? NEW-BATTERY,LASER \?CCL12 + PRINTI "contains a " + PRINTD NEW-BATTERY + JUMP ?CND8 +?CCL12: PRINTI "is empty" +?CND8: PRINTR "." +?CCL7: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL14 + PRINTR "There doesn't seem to be any way to do that to this laser." +?CCL14: EQUAL? PRSA,V?PUT \?CCL16 + EQUAL? PRSO,OLD-BATTERY \?CCL19 + IN? NEW-BATTERY,LASER \?CCL22 + CALL ALREADY-BATTERY + RSTACK +?CCL22: MOVE OLD-BATTERY,LASER + CALL BATTERY-NOW + RSTACK +?CCL19: EQUAL? PRSO,NEW-BATTERY \?CCL24 + IN? OLD-BATTERY,LASER \?CCL27 + CALL ALREADY-BATTERY + RSTACK +?CCL27: MOVE NEW-BATTERY,LASER + CALL BATTERY-NOW + RSTACK +?CCL24: EQUAL? LASER,PRSO /FALSE + PRINTI "The " + PRINTD PRSO + PRINTR " doesn't fit the depression." +?CCL16: EQUAL? PRSA,V?ZAP \?CCL31 + IN? LASER,ADVENTURER /?CND32 + CALL NOT-HOLDING + RTRUE +?CND32: ZERO? LASER-SCORE-FLAG \?CND34 + SET 'LASER-SCORE-FLAG,TRUE-VALUE + ADD SCORE,2 >SCORE +?CND34: EQUAL? PRSI,LASER /?CTR37 + EQUAL? PRSI,LASER-DIAL /?CTR37 + EQUAL? PRSI,OLD-BATTERY \?PRD42 + IN? OLD-BATTERY,LASER /?CTR37 +?PRD42: EQUAL? PRSI,NEW-BATTERY \?CCL38 + IN? NEW-BATTERY,LASER \?CCL38 +?CTR37: PRINTR "Sorry, the laser doesn't have a rubber barrel." +?CCL38: CALL ZAP-COUNT + ZERO? STACK /?CCL48 + PRINTR "Click." +?CCL48: FSET? LASER,MUNGEDBIT \?CCL50 + PRINTR "The laser sparks a few times, whines, and then stops." +?CCL50: CALL QUEUE,I-WARMTH,-1 + PUT STACK,0,1 + SET 'LASER-JUST-SHOT,TRUE-VALUE + EQUAL? PRSI,SPECK \?CCL53 + CALL SHOOT-SPECK + RTRUE +?CCL53: EQUAL? PRSI,MICROBE \?CCL55 + CALL SHOOT-MICROBE + RTRUE +?CCL55: EQUAL? PRSI,ME,HANDS,ADVENTURER \?CCL57 + PRINTR "Ouch! You managed to burn yourself nicely." +?CCL57: PRINTI "The laser emits a narrow " + CALL BEAM-COLOR + PRINTI " beam of light" + ZERO? PRSI /?CCL60 + EQUAL? PRSI,TOWEL,BROCHURE,COMBINATION-PAPER /?CTR62 + EQUAL? PRSI,PRINT-OUT,LAB-UNIFORM,PATROL-UNIFORM /?CTR62 + EQUAL? PRSI,ID-CARD,KITCHEN-CARD,MINI-CARD /?CTR62 + EQUAL? PRSI,TELEPORTATION-CARD,SHUTTLE-CARD,UPPER-ELEVATOR-CARD /?CTR62 + EQUAL? PRSI,LOWER-ELEVATOR-CARD \?CCL63 +?CTR62: REMOVE PRSI + EQUAL? PRSI,SPOUT-PLACED \?CND69 + SET 'SPOUT-PLACED,GROUND +?CND69: PRINTI " which strikes the " + PRINTD PRSI + PRINTI ". The " + PRINTD PRSI + PRINTR " bursts into flame, blinding you momentarily, and is quickly consumed." +?CCL63: EQUAL? PRSI,FLOYD \?CCL72 + FSET? FLOYD,RLANDBIT \?CCL72 + PRINTR " which strikes Floyd. ""Yow!"" yells Floyd. He jumps to the other end of the room and eyes you warily." +?CCL72: EQUAL? PRSI,PSEUDO-OBJECT \?CCL76 + EQUAL? HERE,PROJCON-OFFICE \?CCL76 + PRINTI " which strikes the " + PRINTD PRSI + PRINTR ". However, this doesn't seem to affect it." +?CCL76: PRINTI " which strikes the " + PRINTD PRSI + PRINTI ". The " + PRINTD PRSI + PRINTR " grows a bit warm, but nothing else happens." +?CCL60: PRINTR "." +?CCL31: EQUAL? PRSA,V?DROP \FALSE + CALL INT,I-WARMTH + PUT STACK,0,0 + IN? MICROBE,HERE \FALSE + GRTR? WARMTH-FLAG,7 \FALSE + REMOVE LASER + PRINTR "The microbe rushes to envelop the laser. You hear a faint burp as the monster begins to look around for other morsels..." + + + .FUNCT ALREADY-BATTERY + PRINTR "There's already a battery there." + + + .FUNCT BATTERY-NOW + PRINTR "The battery is now resting in the depression, attached to the laser." + + + .FUNCT I-WARMTH + ZERO? LASER-JUST-SHOT /?CCL3 + SET 'LASER-JUST-SHOT,FALSE-VALUE + INC 'WARMTH-FLAG + EQUAL? WARMTH-FLAG,3 \?CCL6 + CALL LASER-FEELS,STR?298 + RSTACK +?CCL6: EQUAL? WARMTH-FLAG,6 \?CCL8 + CALL LASER-FEELS,STR?299 + RSTACK +?CCL8: EQUAL? WARMTH-FLAG,9 \?CCL10 + CALL LASER-FEELS,STR?300 + RSTACK +?CCL10: EQUAL? WARMTH-FLAG,12 \FALSE + CALL LASER-FEELS,STR?301 + RSTACK +?CCL3: ZERO? WARMTH-FLAG \?CCL15 + CALL INT,I-WARMTH + PUT STACK,0,0 + RTRUE +?CCL15: DEC 'WARMTH-FLAG + EQUAL? WARMTH-FLAG,12 \?CCL18 + CALL LASER-COOLS,STR?301 + RSTACK +?CCL18: EQUAL? WARMTH-FLAG,9 \?CCL20 + CALL LASER-COOLS,STR?302 + RSTACK +?CCL20: EQUAL? WARMTH-FLAG,6 \?CCL22 + CALL LASER-COOLS,STR?303 + RSTACK +?CCL22: EQUAL? WARMTH-FLAG,3 \FALSE + CALL LASER-COOLS,STR?304 + RSTACK + + + .FUNCT LASER-FEELS,STRING + CRLF + PRINTI "The laser feels " + PRINT STRING + PRINTR ", but that doesn't seem to affect its performance at all." + + + .FUNCT LASER-COOLS,STRING + CRLF + PRINTI "The laser has cooled, but it still feels " + PRINT STRING + PRINTR "." + + + .FUNCT BEAM-COLOR + EQUAL? LASER-SETTING,1 \?CCL3 + PRINTI "red" + RTRUE +?CCL3: EQUAL? LASER-SETTING,2 \?CCL5 + PRINTI "orange" + RTRUE +?CCL5: EQUAL? LASER-SETTING,3 \?CCL7 + PRINTI "yellow" + RTRUE +?CCL7: EQUAL? LASER-SETTING,4 \?CCL9 + PRINTI "green" + RTRUE +?CCL9: EQUAL? LASER-SETTING,5 \?CCL11 + PRINTI "blue" + RTRUE +?CCL11: EQUAL? LASER-SETTING,6 \FALSE + PRINTI "violet" + RTRUE + + + .FUNCT SHOOT-SPECK + EQUAL? LASER-SETTING,1 \?CCL3 + RANDOM 100 + LESS? MARKSMANSHIP-COUNTER,STACK /?CCL6 + ZERO? SPECK-HIT /?CCL9 + SET 'COMPUTER-FIXED,TRUE-VALUE + FSET CRYO-ELEVATOR-DOOR,OPENBIT + FCLEAR PROJCON-OFFICE,TOUCHBIT + FCLEAR CRYO-ELEVATOR-DOOR,INVISIBLE + CALL QUEUE,I-FRY,200 + PUT STACK,0,1 + ADD SCORE,8 >SCORE + REMOVE SPECK + PRINTR "The beam hits the speck again! This time, it vaporizes into a fine cloud of ash. The relay slowly begins to close, and a voice whispers in your ear ""Sector 384 will activate in 200 millichrons. Proceed to exit station.""" +?CCL9: SET 'SPECK-HIT,TRUE-VALUE + PRINTR "The speck is hit by the beam! It sizzles a little, but isn't destroyed yet." +?CCL6: ADD MARKSMANSHIP-COUNTER,12 >MARKSMANSHIP-COUNTER + CALL PICK-ONE,BEAM-MISSES + PRINT STACK + CRLF + RTRUE +?CCL3: REMOVE RELAY + PRINTI "A thin " + CALL BEAM-COLOR + PRINTR " beam shoots from the laser and slices through the red plastic covering of the relay like a hot knife through butter. Air rushes into the relay, which collapses into a heap of plastic shards." + + + .FUNCT I-FRY + EQUAL? HERE,MIDDLE-OF-STRIP,STRIP-NEAR-STATION,STRIP-NEAR-RELAY \FALSE + CRLF + CALL JIGS-UP,STR?308 + RSTACK + + + .FUNCT MICROBE-F + EQUAL? PRSA,V?TALK,V?HELLO /?CTR2 + EQUAL? MICROBE,WINNER \?CCL3 +?CTR2: PRINTI "You don't seem to have bridged the vast communication gulf between yourself and the microbe." + CRLF + SET 'P-CONT,FALSE-VALUE + SET 'QUOTE-FLAG,FALSE-VALUE + RETURN 2 +?CCL3: EQUAL? PRSA,V?GIVE,V?THROW \FALSE + EQUAL? PRSI,MICROBE \FALSE + EQUAL? PRSO,LASER \?CCL14 + GRTR? WARMTH-FLAG,7 \?CCL14 + REMOVE LASER + CALL INT,I-WARMTH + PUT STACK,0,0 + GRTR? WARMTH-FLAG,10 \?CCL19 + CALL INT,I-MICROBE + PUT STACK,0,0 + PRINTI "The microbe gobbles up the laser and turns toward you. A moment later, it begins writhing in pain. Apparently, eating the hot laser was a bit too much for it. With a bellow of agony, it rolls off the edge of the strip. (Whew!)" + CRLF + REMOVE LASER + REMOVE MICROBE + SET 'NO-MICROBE,TRUE-VALUE + SET 'MICROBE-DISPATCHED,TRUE-VALUE + RETURN MICROBE-DISPATCHED +?CCL19: PRINTR "The microbe greedily devours the laser, and turns toward you." +?CCL14: PRINTI "The microbe ignores the " + PRINTD PRSO + PRINTR ", but does attempt to digest your arm." + + + .FUNCT I-MICROBE + EQUAL? MICROBE-HIT,TRUE-VALUE \?CCL3 + CRLF + CALL PICK-ONE,WINNER-ATTACKED + PRINT STACK + GRTR? WARMTH-FLAG,13 \?CCL6 + IN? LASER,ADVENTURER \?CCL6 + CALL JIGS-UP,STR?310 + JUMP ?CND4 +?CCL6: GRTR? WARMTH-FLAG,7 \?CND4 + IN? LASER,ADVENTURER \?CND4 + PRINTI " Another pseudopod, perhaps attracted by the warmth of the laser, tries to envelop the weapon. You snatch it away from the monster's grasp." +?CND4: CRLF + JUMP ?CND1 +?CCL3: EQUAL? MICROBE-COUNTER,2 \?CCL14 + CALL JIGS-UP,STR?311 + JUMP ?CND1 +?CCL14: INC 'MICROBE-COUNTER + CRLF + CALL PICK-ONE,MONSTER-CLOSES + PRINT STACK + CRLF +?CND1: SET 'MICROBE-HIT,FALSE-VALUE + RETURN MICROBE-HIT + + + .FUNCT SHOOT-MICROBE + PRINTI "The laser beam strikes the microbe" + EQUAL? LASER-SETTING,1 \?CCL3 + PRINTR ", but passes harmlessly through its red skin." +?CCL3: SET 'MICROBE-HIT,TRUE-VALUE + PRINTI ". " + CALL PICK-ONE,MICROBE-STRIKES + PRINT STACK + CRLF + RTRUE + + + .FUNCT STRIP-F + EQUAL? PRSA,V?THROW-OFF \FALSE + EQUAL? PRSO,LASER \?CCL6 + GRTR? WARMTH-FLAG,7 \?CCL6 + CALL INT,I-WARMTH + PUT STACK,0,0 + CALL INT,I-MICROBE + PUT STACK,0,0 + PRINTI "As the laser flies over the edge of the strip, the hungry microbe lunges after it. Both the laser and the microbe plummet into the void. (Whew!)" + CRLF + REMOVE LASER + REMOVE MICROBE + SET 'NO-MICROBE,TRUE-VALUE + SET 'MICROBE-DISPATCHED,TRUE-VALUE + RETURN MICROBE-DISPATCHED +?CCL6: EQUAL? PRSO,LASER \?CND9 + CALL INT,I-WARMTH + PUT STACK,0,0 +?CND9: REMOVE PRSO + PRINTI "The " + PRINTD PRSO + PRINTR " flies over the edge of the strip and disappears into the void." + + + .FUNCT GRUE-F + EQUAL? PRSA,V?EXAMINE \FALSE + IN? GRUE,HERE /FALSE + PRINTR "Grues are vicious, carnivorous beasts first introduced to Earth by a visiting alien spaceship during the late 22nd century. Grues spread throughout the galaxy alongside man. Although now extinct on all civilized planets, they still exist in some backwater corners of the galaxy. Their favorite diet is Ensigns Seventh Class, but their insatiable appetite is tempered by their fear of light." + + .ENDI diff --git a/comptwo.zil b/comptwo.zil index 6d42b69..d9fbeb7 100644 --- a/comptwo.zil +++ b/comptwo.zil @@ -7,10 +7,7 @@ with Complex Two / the Eastern Complex / the Lawanda Compleks." ) + (C-MOVE ) (NORTH PER SHUTTLE-ENTER-F) (SOUTH PER SHUTTLE-ENTER-F) (EAST TO ESCALATOR) @@ -50,10 +47,7 @@ the platform. A faded sign reads \"Shutul Platform -- Lawanda Staashun.\"" CR>)> (LDESC "You are in the middle of a long mechanical stairway. It is not running, and seems to be in disrepair.") - (C-MOVE
) + (C-MOVE
) (UP TO FORK) (EAST TO FORK) (DOWN TO LAWANDA-PLATFORM) @@ -68,10 +62,9 @@ and seems to be in disrepair.") (LDESC "This is a hallway which forks to the northeast and southeast. To the west is the top of a long escalator.") - (C-MOVE
) + (C-MOVE
) (WEST TO ESCALATOR) (DOWN TO ESCALATOR) (NE TO SYSTEMS-CORRIDOR-WEST) @@ -80,7 +73,7 @@ is the top of a long escalator.") (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO) (FLAGS FLOYDBIT RLANDBIT ONBIT)> -^L + "He's dead, Jim" @@ -90,10 +83,9 @@ is the top of a long escalator.") (LDESC "You have entered a clean, well-lighted place. There are a number of beds, some complicated looking equipment, and many shelves that are mostly bare.") - (C-MOVE
) + (C-MOVE
) (SE TO SYSTEMS-CORRIDOR-WEST) (OUT TO SYSTEMS-CORRIDOR-WEST) (FLAGS RLANDBIT ONBIT) @@ -218,10 +210,9 @@ it." CR>)>> "You are in a dimly lit room, filled with strange machines and wide storage cabinets, all locked. To the south, a narrow stairway leads upward. On the north wall of the room is a very small doorway.") - (C-MOVE
) + (C-MOVE
) (UP TO SYSTEMS-CORRIDOR-WEST) (SOUTH TO SYSTEMS-CORRIDOR-WEST) (NORTH "It is a robot-sized doorway -- a bit too small for you.") @@ -305,10 +296,9 @@ interesting inside. Just a shiny fromitz board.\"" CR>)>> (LDESC "The corridor bends here, leading east and southwest. A doorway opens to the northwest, and a narrow stairway leads down to the north.") - (C-MOVE
) + (C-MOVE
) (NW TO INFIRMARY) (NORTH TO REPAIR-ROOM) (DOWN TO REPAIR-ROOM) @@ -323,10 +313,7 @@ to the northwest, and a narrow stairway leads down to the north.") (LDESC "This section of hallway has a doorway to the north labelled \"Planateree Deefens.\" The corridor continues east and west.") - (C-MOVE
) + (C-MOVE 0) (NORTH TO PLANETARY-DEFENSE) (WEST TO SYSTEMS-CORRIDOR-WEST) (EAST TO SYSTEMS-CORRIDOR-EAST) @@ -339,10 +326,7 @@ Deefens.\" The corridor continues east and west.") "The hallway ends here with a large doorway leading east, and smaller doorways to the north and south. The northern doorway is labelled \"Planateree Kors Kontrool.\" The hallway itself leads west.") - (C-MOVE
) + (C-MOVE 0) (WEST TO SYSTEMS-CORRIDOR) (SOUTH TO LIBRARY-LOBBY) (NORTH TO PLANETARY-COURSE-CONTROL) @@ -357,16 +341,13 @@ Kontrool.\" The hallway itself leads west.") intended to heat and ventilate the Lawanda Complex. Oddly, although the Lawanda Complex is slightly smaller than its counterpart, this plant is much larger than the one in the Kalamontee Complex. The only exit is westward.") - (C-MOVE
) + (C-MOVE 0) (WEST TO SYSTEMS-CORRIDOR-EAST) (OUT TO SYSTEMS-CORRIDOR-EAST) (FLAGS FLOYDBIT RLANDBIT ONBIT) (PSEUDO "EQUIPM" EQUIPMENT-PSEUDO)> -^L + "Planetary systems and repairs" @@ -379,10 +360,7 @@ larger than the one in the Kalamontee Complex. The only exit is westward.") ) + (C-MOVE 0) (SOUTH TO SYSTEMS-CORRIDOR) (OUT TO SYSTEMS-CORRIDOR) (FLAGS RLANDBIT FLOYDBIT ONBIT) @@ -534,10 +512,7 @@ shock from the fromitz board." CR>> ) + (C-MOVE 0) (SOUTH TO SYSTEMS-CORRIDOR-EAST) (OUT TO SYSTEMS-CORRIDOR-EAST) (FLAGS FLOYDBIT RLANDBIT ONBIT) @@ -631,7 +606,7 @@ The other light reads \"Kritikul diivurjins frum pland kors.\"">)> )>)>> -^L + "The Library" @@ -642,10 +617,7 @@ The other light reads \"Kritikul diivurjins frum pland kors.\"">)> "This is a carpeted room, thick with dust, with exits to the north and south. To the west, up a few steps, is a wide doorway. A small booth lies to the east.") - (C-MOVE
) + (C-MOVE 0) (UP TO LIBRARY) (WEST TO LIBRARY) (NORTH TO SYSTEMS-CORRIDOR-EAST) @@ -684,10 +656,7 @@ east.") "This is a tiny room with a large \"3\" painted on the wall. A panel contains a slot about ten centimeters wide, a brown button labelled \"1\" and a beige button labelled \"2.\"") - (C-MOVE
) + (C-MOVE 0) (WEST TO LIBRARY-LOBBY) (OUT TO LIBRARY-LOBBY) (FLAGS RLANDBIT ONBIT) @@ -700,10 +669,7 @@ button labelled \"2.\"") (LDESC "This is a large carpeted room with a desk and many small tables. The sole exit is down a few steps to the east.") - (C-MOVE
) + (C-MOVE 0) (EAST TO LIBRARY-LOBBY) (OUT TO LIBRARY-LOBBY) (FLAGS RLANDBIT ONBIT FLOYDBIT) @@ -1307,10 +1273,9 @@ using complicated medical procedures."> (LDESC "This is a curving hallway leading east and northwest. There is an opening to the west.") - (C-MOVE
) + (C-MOVE
) (WEST TO SANFAC-F) (EAST TO PROJECT-CORRIDOR) (NW TO FORK) @@ -1322,10 +1287,7 @@ to the west.") (LDESC "This is another dusty sanitary facility. Unlike the ones near the dorms, this one is smaller and has no bathing fixtures.") - (C-MOVE
) + (C-MOVE 0) (EAST TO PROJECT-CORRIDOR-WEST) (OUT TO PROJECT-CORRIDOR-WEST) (FLAGS FLOYDBIT RLANDBIT ONBIT) @@ -1337,10 +1299,7 @@ this one is smaller and has no bathing fixtures.") (LDESC "You are at the center of a long east-west hallway. A doorway, labelled \"PrajKon Awfis\", opens to the south.") - (C-MOVE
) + (C-MOVE 0) (EAST TO PROJECT-CORRIDOR-EAST) (WEST TO PROJECT-CORRIDOR-WEST) (SOUTH TO PROJCON-OFFICE) @@ -1349,10 +1308,7 @@ this one is smaller and has no bathing fixtures.") ) + (C-MOVE 0) (NORTH TO PROJECT-CORRIDOR) (SOUTH TO CRYO-ELEVATOR IF CRYO-ELEVATOR-DOOR IS OPEN ELSE "You can't go that way.") @@ -1396,10 +1352,7 @@ this before,\" he comments." CR>)>> ) + (C-MOVE 0) (NORTH PER CRYO-EXIT-F) (GLOBAL CRYO-ELEVATOR-DOOR) (FLAGS RLANDBIT ONBIT) @@ -1433,10 +1386,7 @@ to the north which is "> ) + (C-MOVE 0) (FLAGS RLANDBIT ONBIT) (ACTION CRYO-ANTEROOM-F)> @@ -1527,22 +1477,13 @@ moment, a landing party from the S.P.S. Flathead materializes, and takes you away from the doomed world." CR CR>)> >)>)>> -;(OLD HACK ENDING: -"A parchment containing Mike Dornbrook's phone number appears in the trophy -case. A holographic image of the Dungeon Master appears in the air before -you. He is carrying a letter from Chief Inspector Klutz. \"I hope to meet you -in person some day,\" he says.") - ) + (C-MOVE 0) (NORTH TO LIBRARY-LOBBY) (SOUTH TO COMPUTER-ROOM) (WEST TO PROJECT-CORRIDOR) @@ -1556,10 +1497,9 @@ north, south and east.") "This is the main computer room for the Project. The only sign of activity is a glowing red light. The exits are north, west, and northeast. To the south is a small booth.") - (C-MOVE
) + (C-MOVE
) (NORTH TO PROJECT-CORRIDOR-EAST) (WEST TO PROJCON-OFFICE) (SOUTH TO MINI-BOOTH) @@ -1621,10 +1561,7 @@ The printout ends at this point." CR> "This is a small room barely large enough for one person. Mounted on the wall is a small slot, and next to it a keyboard with numeric keys. The exit is to the north.") - (C-MOVE
) + (C-MOVE 0) (NORTH TO COMPUTER-ROOM) (OUT TO COMPUTER-ROOM) (FLAGS RLANDBIT ONBIT) @@ -1654,10 +1591,9 @@ the north.") "This is the heart of the Project's vast laboratory complex. There are exits to the west and southwest, and heavy metal doors to the northeast and southeast. A small doorway leads south.") - (C-MOVE
) + (C-MOVE
) (WEST TO PROJECT-CORRIDOR-EAST) (SOUTH TO LAB-STORAGE) (SW TO COMPUTER-ROOM) @@ -1672,10 +1608,7 @@ southeast. A small doorway leads south.") (LDESC "This is a tiny room for the storage of laboratory supplies. The sole exit is to the north.") - (C-MOVE
) + (C-MOVE 0) (NORTH TO MAIN-LAB) (OUT TO MAIN-LAB) (FLAGS RLANDBIT FLOYDBIT ONBIT) @@ -1736,14 +1669,6 @@ pocket of the uniform." CR>)>)>) (FLAGS TAKEBIT READBIT) (TEXT "The card is embossed \"teliportaashun akses kard.\"")> -; - )>)>) "This is the first half of a sterilization chamber to prevent contamination of the delicate biological experiments in the Bio Lab which lies beyond. The door to the west leads to the main lab, and the bio lock continues eastward.") - (C-MOVE
) + (C-MOVE
) (EAST TO BIO-LOCK-EAST) (WEST TO MAIN-LAB IF BIO-DOOR-WEST IS OPEN) (FLAGS RLANDBIT ONBIT) @@ -1781,10 +1705,9 @@ door to the west leads to the main lab, and the bio lock continues eastward.") "The is the second half of the sterilization chamber leading from the main lab to the Bio Lab. The door to the east, leading to the Bio Lab, has a window. The bio lock continues to the west.") - (C-MOVE
) + (C-MOVE
) (EAST TO BIO-LAB IF BIO-DOOR-EAST IS OPEN) (WEST TO BIO-LOCK-WEST) (FLAGS RLANDBIT ONBIT) @@ -1848,10 +1771,7 @@ you to open the door.">) "This is the western half of a decontamination chamber to prevent dangerous radioactive materials from leaving the Radiation Lab which lies to the east. The door leads west to the main lab.") - (C-MOVE
) + (C-MOVE 0) (EAST TO RADIATION-LOCK-EAST) (WEST TO MAIN-LAB IF RAD-DOOR-WEST IS OPEN) (FLAGS RLANDBIT ONBIT) @@ -1865,10 +1785,7 @@ The door leads west to the main lab.") east leads to the Radiation Lab, and the chamber continues westward. A sign on the wall reads \"WORNEENG! Raadeeaashun suuts must bee worn beeyond xis point.\"") - (C-MOVE
) + (C-MOVE 0) (EAST TO RADIATION-LAB IF RAD-DOOR-EAST IS OPEN) (WEST TO RADIATION-LOCK-WEST) (FLAGS RLANDBIT ONBIT) @@ -2121,10 +2038,7 @@ and you feel a powerful poison begin to work its numbing effects...">> ) + (C-MOVE 0) (EAST TO LAB-OFFICE IF OFFICE-DOOR IS OPEN) (WEST TO BIO-LOCK-EAST IF BIO-DOOR-EAST IS OPEN) (FLAGS RLANDBIT ONBIT) @@ -2146,6 +2060,7 @@ The lighting is "> " Some of the experiments seem to be out of control..." CR>) ( > + > ;"don't fall asleep in mid-chase" ) + (C-MOVE 0) (WEST TO RADIATION-LOCK-EAST IF RAD-DOOR-EAST IS OPEN) (FLAGS RLANDBIT ONBIT) (GLOBAL TABLES RAD-DOOR-EAST) @@ -2300,10 +2212,7 @@ It seems you have picked up a bad case of radiation poisoning.">)>> ) + (C-MOVE 0) (WEST TO BIO-LAB IF OFFICE-DOOR IS OPEN) (SOUTH TO AUXILIARY-BOOTH) (IN TO AUXILIARY-BOOTH) @@ -2465,17 +2374,14 @@ toward the door!" CR>)>> "This is another small booth. Unlike the Miniaturization Booth, this room has no slot or keyboard, so presumably it is intended only as a receiving station. The exit is on the northern side.") - (C-MOVE
) + (C-MOVE 0) (NORTH TO LAB-OFFICE) (OUT TO LAB-OFFICE) (FLAGS RLANDBIT ONBIT) (VALUE 4) (PSEUDO "BOOTH" IN-BOOTH-PSEUDO)> -^L + ;"INSIDE THE COMPUTER" @@ -2494,10 +2400,7 @@ station. The exit is on the northern side.") "You are standing on a square plate of heavy metal. Above your head, parallel to the plate beneath you, is an identical metal plate. To the east is a wide, metallic strip.") - (C-MOVE
) + (C-MOVE 0) (EAST TO STRIP-NEAR-STATION) (FLAGS RLANDBIT ONBIT) (GLOBAL STRIP) @@ -2541,10 +2444,7 @@ room whose distant walls are rushing straight toward you...|"> metal highway. South of here, the filament makes a right angle and heads straight down, like a cliff overlooking a black void. The filament can be followed north, however. Station 384 lies westward.") - (C-MOVE
) + (C-MOVE 0) (SOUTH "The plunge would probably be fatal.") (EAST "The plunge would probably be fatal.") (NORTH TO MIDDLE-OF-STRIP) @@ -2560,10 +2460,7 @@ followed north, however. Station 384 lies westward.") (LDESC "You are standing on a section of the strip with a bottomless void stretching out on both sides. The strip continues to the north and south.") - (C-MOVE
) + (C-MOVE 0) (NORTH TO STRIP-NEAR-RELAY) (SOUTH TO STRIP-NEAR-STATION IF NO-MICROBE ELSE "Not a chance -- unless, of course, you don't mind walking into the gullet of a hungry microbe.") @@ -2601,10 +2498,7 @@ hungry, and seems intent on having you for lunch." CR CR>)>)>> ) + (C-MOVE 0) (NORTH "There is a huge featureless wall there, remember?") (SOUTH TO MIDDLE-OF-STRIP IF NO-MICROBE ELSE "Not a chance -- unless, of course, you don't mind walking into the gullet of a hungry microbe.") @@ -2672,7 +2566,7 @@ current size.">)> (ADJECTIVE BLUE) (FLAGS NDESCBIT)> -^L + ;"Laserium" @@ -2888,16 +2782,6 @@ monster begins to look around for other morsels..." CR>) > -; - - ) - ( - ) - (T - )> - > - > @@ -3004,7 +2888,7 @@ With a furious storm of electrical mayhem, Sector 384 comes to life. A few micro-volts course through the silicon strip on which you stand. Unfortunately, at your current size, this is enough to barbecue you.">)>> -^L + ;"The microbe battle" @@ -3019,7 +2903,8 @@ towering over you.") (ACTION MICROBE-F)> + + > @@ -3045,11 +2930,11 @@ the strip. (Whew!)" CR> ) (T ) +"The microbe greedily devours the laser, and turns toward you." CR>)>) (T )>)>)>> +your arm." CR>)>)>> @@ -3150,7 +3035,7 @@ it. Both the laser and the microbe plummet into the void. (Whew!)" CR> "The " D ,PRSO " flies over the edge of the strip and disappears into the void." CR>)>)>> -^L + ;"Endgame -- The mutant chase scene" @@ -3201,4 +3086,4 @@ fear of light." CR>)>> toward you on three leg-like stalks.") (SYNONYM TRIFFID PLANT MUTANT MONSTER) (ADJECTIVE MOBILE MAN-EATING GIANT) - (FLAGS ACTORBIT)> \ No newline at end of file + (FLAGS ACTORBIL M \ No newline at end of file diff --git a/globals.zabstr b/globals.zabstr new file mode 100644 index 0000000..989dee7 --- /dev/null +++ b/globals.zabstr @@ -0,0 +1,389 @@ + + + + WORD> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) (SOUTH "The cell door is locked.") (FLAGS RLANDBIT ONBIT) (PSEUDO +"GRAFFITI" GRAFFITI-PSEUDO "DOOR" DOOR-PSEUDO)> +) (EAST TO REACTOR-LOBBY IF CORRIDOR-DOOR IS OPEN) (WEST TO ESCAPE-POD +IF POD-DOOR IS OPEN) (IN TO ESCAPE-POD IF POD-DOOR IS OPEN) (UP TO GANGWAY IF +GANGWAY-DOOR IS OPEN) (FLAGS RLANDBIT ONBIT) (GLOBAL POD-DOOR CORRIDOR-DOOR +GANGWAY-DOOR STAIRS GLOBAL-POD) (PSEUDO "TRANSL" TRANSLATOR-PSEUDO "SLIME" +SLIME-PSEUDO) (ACTION DECK-NINE-F)> + + + + + + WORD> + + + +) (WEST TO DECK-NINE IF CORRIDOR-DOOR IS OPEN) (SOUTH +"Ensign Blather pushes you roughly back toward your post.") (EAST +"Ensign Blather blocks your way, snarling angrily.") (FLAGS RLANDBIT ONBIT) ( +GLOBAL CORRIDOR-DOOR)> +) (UP TO DECK-EIGHT) ( +DOWN TO DECK-NINE IF GANGWAY-DOOR IS OPEN) (FLAGS RLANDBIT ONBIT) (GLOBAL +GANGWAY-DOOR STAIRS) (ACTION GANGWAY-F)> + +) (DOWN TO GANGWAY) (EAST +"Blather throws you to the deck and makes you do 20 push-ups.") (WEST +"Blather throws you to the deck and makes you do 20 push-ups.") (NORTH +"Blather blocks your path, growling about extra galley duty.") (FLAGS RLANDBIT +ONBIT) (GLOBAL STAIRS)> + WORD> + WORD> + + + + + + + WORD> + + + %<> +WORD> + +) (EAST PER POD-EXIT-F) (OUT PER POD-EXIT-F) (UP PER POD-EXIT-F) (FLAGS +RLANDBIT ONBIT) (VALUE 3) (GLOBAL POD-DOOR CONTROLS LIGHTS GLOBAL-POD WINDOW) ( +ACTION ESCAPE-POD-F)> + + + + + + + + + + + + + + + + + + + + WORD> + + WORD> + + WORD> + + + + +WORD> + WORD> + %<> WORD> + + + + + + %<> WORD> + + + + + + + +) (NORTH PER SHUTTLE-EXIT-F) (EAST TO ALFIE-CONTROL-EAST) +(WEST TO ALFIE-CONTROL-WEST) (FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-SHUTTLE +SHUTTLE-DOOR) (ACTION SHUTTLE-CAR-F)> +) (WEST TO SHUTTLE-CAR-ALFIE IF SHUTTLE-DOOR IS OPEN) ( +FLAGS RLANDBIT ONBIT) (GLOBAL SLOT WINDOW LEVER SHUTTLE-DOOR GLOBAL-SHUTTLE) ( +ACTION CONTROL-CABIN-F)> +) (EAST TO SHUTTLE-CAR-ALFIE IF SHUTTLE-DOOR IS OPEN) ( +FLAGS RLANDBIT ONBIT) (GLOBAL SLOT LEVER WINDOW SHUTTLE-DOOR GLOBAL-SHUTTLE) ( +ACTION CONTROL-CABIN-F)> + + + +) (SOUTH PER SHUTTLE-EXIT-F) (EAST TO BETTY-CONTROL-EAST) +(WEST TO BETTY-CONTROL-WEST) (FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-SHUTTLE +SHUTTLE-DOOR) (ACTION SHUTTLE-CAR-F)> +) (WEST TO SHUTTLE-CAR-BETTY IF SHUTTLE-DOOR IS OPEN) ( +FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-SHUTTLE SLOT WINDOW LEVER SHUTTLE-DOOR) ( +ACTION CONTROL-CABIN-F)> +) (EAST TO SHUTTLE-CAR-BETTY IF SHUTTLE-DOOR IS OPEN) ( +FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-SHUTTLE SLOT LEVER WINDOW SHUTTLE-DOOR) ( +ACTION CONTROL-CABIN-F)> + + + + + WORD> + + WORD> + %<> WORD> + %<> WORD> + %<> WORD> + WORD> + WORD> + + WORD> + WORD> + +WORD> + +WORD> + + WORD> + + + + %<> WORD> + %<> WORD> + + WORD> + WORD> + + + + + + %<> WORD> + + + WORD> + + WORD> + WORD> + %<> WORD> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/globals.zap b/globals.zap new file mode 100644 index 0000000..0861afc --- /dev/null +++ b/globals.zap @@ -0,0 +1,1993 @@ + + + .FUNCT GROUND-F + EQUAL? PRSA,V?PUT \?CCL3 + EQUAL? PRSI,GROUND \?CCL3 + CALL PERFORM,V?DROP,PRSO + RTRUE +?CCL3: EQUAL? PRSA,V?BOARD,V?CLIMB-ON \?CCL7 + SET 'C-ELAPSED,28 + PRINTR "You sit down on the floor. After a brief rest, you stand again." +?CCL7: EQUAL? PRSA,V?EXAMINE \FALSE + EQUAL? HERE,ADMIN-CORRIDOR-S \FALSE + PRINTR "A narrow, jagged crevice runs across the floor." + + + .FUNCT WINDOW-F + EQUAL? PRSA,V?LOOK-INSIDE \?CCL3 + EQUAL? HERE,BIO-LOCK-EAST \?CCL6 + PRINTI "You can see a large laboratory, dimly illuminated. A blue glow comes from a crack in the northern wall of the lab. Shadowy, ominous shapes move about within the room." + FSET? MINI-CARD,TOUCHBIT /?CND7 + PRINTR " On the floor, just inside the door, you can see a magnetic-striped card." +?CND7: CRLF + RTRUE +?CCL6: EQUAL? HERE,BIO-LAB \?CCL10 + PRINTR "You see the Bio Lock." +?CCL10: EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST /?CTR11 + EQUAL? HERE,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST \?CCL12 +?CTR11: PRINTI "You see " + CALL DESCRIBE-VIEW + CRLF + RTRUE +?CCL12: EQUAL? HERE,BALCONY \?CCL16 + PRINTR "Water. Lots and lots of water." +?CCL16: EQUAL? HERE,HELICOPTER \?CCL18 + PRINTR "You see the helipad and the ocean beyond." +?CCL18: EQUAL? HERE,ESCAPE-POD \?CCL20 + LESS? TRIP-COUNTER,2 \?CCL23 + PRINTR "You can see debris from the exploding Feinstein." +?CCL23: GRTR? TRIP-COUNTER,8 \?CCL25 + PRINTR "You can see a planet, hopefully a hospitable one." +?CCL25: PRINTR "The window has polarized to blackness." +?CCL20: EQUAL? HERE,LARGE-OFFICE \FALSE + PRINTR "You can see the dormitories and other parts of the complex in the distance. Water is visible in every direction." +?CCL3: EQUAL? PRSA,V?THROUGH \?CCL29 + EQUAL? HERE,BALCONY \?CCL29 + CALL JIGS-UP,STR?1 + RSTACK +?CCL29: EQUAL? PRSA,V?OPEN \?CCL33 + PRINTR "This window doesn't open." +?CCL33: EQUAL? PRSA,V?EXAMINE \?CCL35 + EQUAL? HERE,BALCONY \?CCL35 + PRINTR "They're shattered." +?CCL35: EQUAL? PRSA,V?MUNG \FALSE + EQUAL? HERE,BALCONY \?CCL42 + PRINTR "They're already broken." +?CCL42: PRINTR "It's made of tough Zynoid plastic." + + + .FUNCT CLIFF-F + EQUAL? HERE,WEST-WING \?CCL3 + EQUAL? PRSA,V?LEAP \?CCL6 + CALL JIGS-UP,STR?2 + RSTACK +?CCL6: EQUAL? PRSA,V?THROW-OFF \FALSE + EQUAL? PRSO,LASER \?CND9 + CALL INT,I-WARMTH + PUT STACK,0,0 +?CND9: REMOVE PRSO + PRINTI "The " + PRINTD PRSO + PRINTR " falls into the ocean below." +?CCL3: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?CCL13 + CALL DO-WALK,P?UP + RSTACK +?CCL13: EQUAL? PRSA,V?CLIMB-DOWN \FALSE + CALL DO-WALK,P?DOWN + RSTACK + + + .FUNCT OCEAN-F + EQUAL? PRSA,V?RUB,V?THROUGH,V?TAKE \?CCL3 + PRINTR "You can't reach the ocean from here." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "It stretches as far as you can see." + + + .FUNCT TABLES-F + EQUAL? PRSA,V?LOOK-UNDER \?CCL3 + EQUAL? HERE,MESS-HALL \?CCL3 + PRINTR "Wow!!! Under the table are three keys, a sack of food, a reactor elevator access pass, one hundred gold pieces ... Just kidding. Actually, there's nothing there." +?CCL3: EQUAL? PRSA,V?PUT-ON \FALSE + EQUAL? PRSI,TABLES \FALSE + PRINTR "That would accomplish nothing useful." + + + .FUNCT SHELVES-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "The shelves are pretty dusty." +?CCL3: EQUAL? PRSA,V?PUT-ON \FALSE + EQUAL? PRSI,SHELVES \FALSE + PRINTR "That would be a waste of time." + + + .FUNCT LIGHTS-F + EQUAL? PRSA,V?EXAMINE \FALSE + EQUAL? HERE,COMPUTER-ROOM \FALSE + PRINTR "The red light would seem to indicate a malfunction in the computer." + + + .FUNCT GLOBAL-DOORWAY-F + EQUAL? PRSA,V?THROUGH \?CCL3 + CALL USE-DIRECTIONS + RSTACK +?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL5 + PRINTR "It's just an opening; you can't open or close it." +?CCL5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + PRINTR "Can't see much from here. Try going there." + + + .FUNCT USE-DIRECTIONS + PRINTR "Use compass directions for movement." + + + .FUNCT NO-CLOSE + PRINTR "There's no way to close it." + + + .FUNCT CONTROLS-F + EQUAL? HERE,UPPER-ELEVATOR,LOWER-ELEVATOR,BOOTH-1 /?CTR2 + EQUAL? HERE,REACTOR-ELEVATOR,BOOTH-2,BOOTH-3 \?CCL3 +?CTR2: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "The control panel is a simple one, as described. Just a small slot and two buttons." +?CCL3: EQUAL? PRSA,V?PULL,V?PUSH /?CTR9 + EQUAL? PRSA,V?EXAMINE,V?TAKE,V?SET /?CTR9 + EQUAL? PRSA,V?TURN,V?MOVE,V?RUB \?CCL10 +?CTR9: EQUAL? HERE,HELICOPTER \?CCL16 + PRINTR "The controls are covered and locked." +?CCL16: EQUAL? HERE,ESCAPE-POD \?CCL18 + PRINTR "The controls are entirely automated." +?CCL18: PRINTR "The controls are incredibly complicated and you shouldn't even be thinking about touching them." +?CCL10: EQUAL? HERE,HELICOPTER \FALSE + EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE + PRINTR "You don't even have the orange key!" + + + .FUNCT GLOBAL-GAMES-F + EQUAL? PRSA,V?PLAY \FALSE + IN? FLOYD,HERE \?CCL6 + CALL PERFORM,V?PLAY-WITH,FLOYD + RTRUE +?CCL6: PRINTR "Okay. Gee, that was fun." + + + .FUNCT HANDS-F + EQUAL? PRSA,V?SHAKE \FALSE + IN? AMBASSADOR,HERE \?CCL6 + PRINTR "A repulsive idea." +?CCL6: IN? BLATHER,HERE \?CCL8 + PRINTR "Saluting might be a better idea." +?CCL8: IN? FLOYD,HERE \?CCL10 + FSET? FLOYD,RLANDBIT \?CCL10 + PRINTR "You shake one of Floyd's grasping extensions." +?CCL10: PRINTR "There's no one to shake hands with." + + + .FUNCT SLEEP-F + EQUAL? PRSA,V?WALK-TO \FALSE + CALL V-SLEEP + RSTACK + + + .FUNCT CRETIN-F + EQUAL? PRSA,V?GIVE \?CCL3 + CALL PERFORM,V?TAKE,PRSO + RTRUE +?CCL3: EQUAL? PRSA,V?SCRUB \?CCL5 + PRINTR "If only you'd done that before the last inspection, you wouldn't have gotten 300 demerits." +?CCL5: EQUAL? PRSA,V?DROP \?CCL7 + PRINTR "Huh?" +?CCL7: EQUAL? PRSA,V?SMELL \?CCL9 + PRINTR "Phew!" +?CCL9: EQUAL? PRSA,V?FOLLOW \?CCL11 + PRINTR "It would be hard not to." +?CCL11: EQUAL? PRSA,V?EAT \?CCL13 + PRINTR "Auto-cannibalism is not the answer." +?CCL13: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL15 + EQUAL? PRSO,ME \?CCL18 + CALL JIGS-UP,STR?3 + RSTACK +?CCL18: PRINTR "What a silly idea!" +?CCL15: EQUAL? PRSA,V?TAKE \?CCL20 + PRINTR "How romantic!" +?CCL20: EQUAL? PRSA,V?DISEMBARK \?CCL22 + PRINTR "You'll have to do that on your own." +?CCL22: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "That's difficult unless your eyes are prehensile." + + + .FUNCT DDESC,DOOR + FSET? DOOR,OPENBIT \?CCL3 + PRINTI "open" + RTRUE +?CCL3: PRINTI "closed" + RTRUE + + + .FUNCT ALREADY-OPEN + PRINTR "It's already open!" + + + .FUNCT IS-CLOSED + PRINTR "It is closed!" + + + .FUNCT V-THROUGH,OBJ=0,M + ZERO? OBJ \?CCL3 + FSET? PRSO,VEHBIT \?CCL3 + CALL PERFORM,V?BOARD,PRSO + RTRUE +?CCL3: ZERO? OBJ \?CCL7 + FSET? PRSO,TAKEBIT /?CCL7 + PRINTI "You hit your head against the " + PRINTD PRSO + PRINTR " as you attempt this feat." +?CCL7: ZERO? OBJ /?CCL11 + PRINTR "You can't do that!" +?CCL11: IN? PRSO,ADVENTURER \?CCL13 + PRINTR "That would involve quite a contortion!" +?CCL13: CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT FIND-IN,WHERE,WHAT,W + FIRST? WHERE >W /?BOGUS1 +?BOGUS1: ZERO? W /FALSE +?PRG4: FSET? W,WHAT \?CCL8 + RETURN W +?CCL8: NEXT? W >W /?PRG4 + RFALSE + + + .FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ + EQUAL? PRSO,NOT-HERE-OBJECT \?CCL3 + EQUAL? PRSI,NOT-HERE-OBJECT \?CCL3 + PRINTR "Those things aren't here!" +?CCL3: EQUAL? PRSO,NOT-HERE-OBJECT \?CCL7 + SET 'TBL,P-PRSO + JUMP ?CND1 +?CCL7: SET 'TBL,P-PRSI + SET 'PRSO?,FALSE-VALUE +?CND1: ZERO? PRSO? /?CND8 + EQUAL? PRSA,V?TYPE \?CCL12 + CALL PERFORM,V?TYPE,FLOYD + RTRUE +?CCL12: EQUAL? PRSA,V?EXAMINE /?CCL13 + EQUAL? WINNER,FLOYD \?CND8 + EQUAL? PRSA,V?FIND,V?TAKE \?CND8 +?CCL13: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ + ZERO? OBJ /FALSE + EQUAL? OBJ,NOT-HERE-OBJECT \TRUE +?CND8: EQUAL? WINNER,ADVENTURER \?CCL25 + PRINTI "You can't see any" + CALL NOT-HERE-PRINT,PRSO? + PRINTI " here!" + CRLF + EQUAL? PRSA,V?TELL \TRUE + SET 'P-CONT,FALSE-VALUE + SET 'QUOTE-FLAG,FALSE-VALUE + RETURN 2 +?CCL25: PRINTI "The " + PRINTD WINNER + PRINTI " seems confused. ""I don't see any" + CALL NOT-HERE-PRINT,PRSO? + PRINTR " here!""" + + + .FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ + CALL MOBY-FIND,TBL >M-F + EQUAL? 1,M-F \?CCL3 + ZERO? PRSO? /?CCL6 + SET 'PRSO,P-MOBY-FOUND + RFALSE +?CCL6: SET 'PRSI,P-MOBY-FOUND + RFALSE +?CCL3: ZERO? PRSO? \?CCL8 + PRINTI "You wouldn't find any" + CALL NOT-HERE-PRINT,PRSO? + PRINTR " there." +?CCL8: RETURN NOT-HERE-OBJECT + + + .FUNCT NOT-HERE-PRINT,PRSO?,?TMP1 + ZERO? P-OFLAG \?CTR2 + ZERO? P-MERGED /?CCL3 +?CTR2: ZERO? P-XADJ /?CND6 + PRINTC 32 + PRINTB P-XADJN +?CND6: ZERO? P-XNAM /FALSE + PRINTC 32 + PRINTB P-XNAM + RTRUE +?CCL3: ZERO? PRSO? /?CCL12 + GET P-ITBL,P-NC1 >?TMP1 + GET P-ITBL,P-NC1L + CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE + RSTACK +?CCL12: GET P-ITBL,P-NC2 >?TMP1 + GET P-ITBL,P-NC2L + CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE + RSTACK + + + .FUNCT DECK-NINE-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a featureless corridor similar to every other corridor on the ship. It curves away to starboard, and a gangway leads up" + FSET? GANGWAY-DOOR,OPENBIT \?CCL6 + PRINTC 46 + JUMP ?CND4 +?CCL6: PRINTI ", but both of these are blocked by closed bulkheads." +?CND4: PRINTI " To port is the entrance to one of the ship's primary escape pods. The pod bulkhead is " + CALL DDESC,POD-DOOR + PRINTR "." + + + .FUNCT CHRONOMETER-F + EQUAL? PRSA,V?READ,V?EXAMINE \FALSE + PRINTI "It is a standard wrist chronometer with a digital display. " + CALL TELL-TIME + PRINTR " The back is engraved with the message ""Good luck in the Patrol! Love, Mom and Dad.""" + + + .FUNCT TELL-TIME + PRINTI "According to the chronometer, the current time is " + FSET? CHRONOMETER,MUNGEDBIT \?CCL3 + PRINTN MUNGED-TIME + JUMP ?CND1 +?CCL3: PRINTN INTERNAL-MOVES +?CND1: PRINTC 46 + RTRUE + + + .FUNCT PATROL-UNIFORM-F + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTI "It is a standard-issue one-pocket Stellar Patrol uniform, a miracle of modern technology. It will keep its owner warm in cold climates and cool in warm locales. It provides protection against mild radiation, repels all insects, absorbs sweat, promotes healthy skin tone, and on top of everything else, it is super-comfy." + EQUAL? TRIP-COUNTER,15 \?CND4 + PRINTR " There are definitely worse things to find yourself wearing when stranded on a strange planet." +?CND4: CRLF + RTRUE +?CCL3: EQUAL? PRSA,V?WEAR \?CCL7 + FSET? LAB-UNIFORM,WORNBIT \?CCL7 + PRINTR "It won't fit over the lab uniform." +?CCL7: EQUAL? PRSA,V?TAKE-OFF \?CCL11 + FSET? PATROL-UNIFORM,WORNBIT \?CCL11 + FCLEAR PATROL-UNIFORM,WORNBIT + PRINTI "You have removed your Patrol uniform." + EQUAL? TRIP-COUNTER,15 \?CND14 + PRINTI " You suddenly realize how warm it is. You also feel naked and vulnerable." +?CND14: IN? BLATHER,HERE \?CCL18 + PRINTR " ""Removing your uniform while on duty? Five hundred demerits!""" +?CCL18: IN? FLOYD,HERE \?CND16 + PRINTR " Floyd giggles. ""You look funny without any clothes on.""" +?CND16: CRLF + RTRUE +?CCL11: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE + PRINTI "There's no way to open or close the pocket of the " + PRINTD PRSO + PRINTR "." + + + .FUNCT GANGWAY-F,RARG + EQUAL? RARG,M-END \FALSE + RANDOM 100 + LESS? 15,STACK /FALSE + ZERO? BLOWUP-COUNTER \FALSE + PRINTR "You hear a distant bellowing ... something about an Ensign Seventh Class whose life is in danger." + + + .FUNCT I-BLATHER + EQUAL? HERE,DECK-EIGHT,REACTOR-LOBBY \?CCL3 + IN? BLATHER,HERE \?CCL6 + IGRTR? 'BRIGS-UP,3 \?CCL9 + CRLF + PRINTI "Blather loses his last vestige of patience and drags you to the Feinstein's brig. He throws you in, and the door clangs shut behind you." + CRLF + CRLF + CALL GOTO,BRIG + CALL ROB,ADVENTURER,CRAG + MOVE PADLOCK,HERE + FCLEAR PADLOCK,TAKEBIT + RTRUE +?CCL9: CRLF + PRINTR """I said to return to your post, Ensign Seventh Class!"" bellows Blather, turning a deepening shade of crimson." +?CCL6: ZERO? BLOWUP-COUNTER \FALSE + MOVE BLATHER,HERE + CALL THIS-IS-IT,BLATHER + CRLF + PRINTR "Ensign Blather, his uniform immaculate, enters and notices you are away from your post. ""Twenty demerits, Ensign Seventh Class!"" bellows Blather. ""Forty if you're not back on Deck Nine in five seconds!"" He curls his face into a hideous mask of disgust at your unbelievable negligence." +?CCL3: EQUAL? HERE,DECK-NINE \FALSE + EQUAL? BLATHER-LEAVE,3 \?CCL16 + IN? BLATHER,HERE \?CCL16 + SET 'BLATHER-LEAVE,0 + REMOVE BLATHER + CRLF + PRINTR "Blather, adding fifty more demerits for good measure, moves off in search of more young ensigns to terrorize." +?CCL16: IN? BLATHER,DECK-NINE \?CCL20 + INC 'BLATHER-LEAVE + RFALSE +?CCL20: IN? AMBASSADOR,HERE /FALSE + ZERO? BLOWUP-COUNTER \FALSE + RANDOM 100 + LESS? 5,STACK /FALSE + MOVE BLATHER,HERE + CALL THIS-IS-IT,BLATHER + CRLF + PRINTI "Ensign First Class Blather swaggers in. He studies your work with half-closed eyes. ""You call this polishing, Ensign Seventh Class?"" he sneers. ""We have a position for an Ensign Ninth Class in the toilet-scrubbing division, you know. Thirty demerits." + FSET? PATROL-UNIFORM,WORNBIT /?CND26 + PRINTI " And another sixty for improper dress!" +?CND26: PRINTR """ He glares at you, his arms crossed." + + + .FUNCT BLATHER-F + EQUAL? PRSA,V?HELLO,V?TALK /?CTR2 + EQUAL? BLATHER,WINNER \?CCL3 +?CTR2: PRINTI "Blather shouts ""Speak when you're spoken to, Ensign Seventh Class!"" He breaks three pencil points in a frenzied rush to give you more demerits." + CRLF + SET 'P-CONT,FALSE-VALUE + SET 'QUOTE-FLAG,FALSE-VALUE + RETURN 2 +?CCL3: EQUAL? PRSA,V?KICK,V?ATTACK \?CCL9 + CALL JIGS-UP,STR?16 + RSTACK +?CCL9: EQUAL? PRSA,V?SALUTE \?CCL11 + PRINTR "Blather's sneer softens a bit. ""First right thing you've done today. Only five demerits.""" +?CCL11: EQUAL? PRSA,V?THROW \?CCL13 + EQUAL? BLATHER,PRSI \?CCL13 + MOVE PRSO,HERE + PRINTI "The " + PRINTD PRSO + PRINTR " bounces off Blather's bulbous nose. He becomes livid, orders you to do five hundred push-ups, gives you ten thousand demerits, and assigns you five years of extra galley duty." +?CCL13: EQUAL? PRSA,V?EXAMINE \?CCL17 + PRINTR "Ensign Blather is a tall, beefy officer with a tremendous, misshapen nose. His uniform is perfect in every respect, and the crease in his trousers could probably slice diamonds in half." +?CCL17: EQUAL? PRSA,V?TAKE \FALSE + PRINTR "Blather brushes you away, muttering about suspended shore leave." + + + .FUNCT CELERY-F + EQUAL? PRSA,V?EAT \?CCL3 + CALL JIGS-UP,STR?18 + RSTACK +?CCL3: EQUAL? PRSA,V?TAKE \FALSE + PRINTR "The ambassador seems perturbed by your lack of normal protocol." + + + .FUNCT I-AMBASSADOR + GRTR? AMBASSADOR-LEAVE,2 \?CCL3 + IN? AMBASSADOR,HERE \?CCL3 + REMOVE AMBASSADOR + REMOVE CELERY + EQUAL? HERE,DECK-NINE \?CND6 + CRLF + PRINTI "The ambassador grunts a polite farewell, and disappears up the gangway, leaving a trail of dripping slime." + CRLF +?CND6: CALL INT,I-AMBASSADOR + PUT STACK,0,0 + RTRUE +?CCL3: IN? AMBASSADOR,DECK-NINE \?CCL9 + INC 'AMBASSADOR-LEAVE + EQUAL? HERE,DECK-NINE \FALSE + CRLF + PRINTI "The ambassador " + CALL PICK-ONE,AMBASSADOR-QUOTES + PRINT STACK + CRLF + RTRUE +?CCL9: EQUAL? HERE,DECK-NINE \FALSE + IN? AMBASSADOR,HERE /FALSE + IN? BLATHER,HERE /FALSE + ZERO? BLOWUP-COUNTER \FALSE + RANDOM 100 + LESS? 15,STACK /FALSE + MOVE AMBASSADOR,HERE + MOVE CELERY,HERE + CALL THIS-IS-IT,AMBASSADOR + MOVE BROCHURE,ADVENTURER + CRLF + PRINTR "The alien ambassador from the planet Blow'k-bibben-Gordo ambles toward you from down the corridor. He is munching on something resembling an enormous stalk of celery, and he leaves a trail of green slime on the deck. He stops nearby, and you wince as a pool of slime begins forming beneath him on your newly-polished deck. The ambassador wheezes loudly and hands you a brochure outlining his planet's major exports." + + + .FUNCT AMBASSADOR-F + EQUAL? PRSA,V?HELLO,V?TALK /?CTR2 + EQUAL? AMBASSADOR,WINNER \?CCL3 +?CTR2: PRINTI "The ambassador taps his translator, and then touches his center knee to his left ear (the Blow'k-bibben-Gordoan equivalent of shrugging)." + CRLF + SET 'P-CONT,FALSE-VALUE + SET 'QUOTE-FLAG,FALSE-VALUE + RETURN 2 +?CCL3: EQUAL? PRSA,V?ASK-FOR \?CCL9 + EQUAL? PRSI,CELERY \?CCL9 + PRINTR "The ambassador seems willing to let you eat some of it, but I doubt he wants to part with the entire stalk." +?CCL9: EQUAL? PRSA,V?KICK,V?ATTACK \?CCL13 + PRINTR "The ambassador is startled, and emits an amazing quantity of slime which spreads across the section of the deck you just polished." +?CCL13: EQUAL? PRSA,V?EXAMINE \?CCL15 + PRINTR "The ambassador has around twenty eyes, seven of which are currently open. Half of his six legs are retracted. Green slime oozes from multiple orifices in his scaly skin. He speaks through a mechanical translator slung around his neck." +?CCL15: EQUAL? PRSA,V?LISTEN \FALSE + PRINTR "The alien makes a wheezing noise as he breathes." + + + .FUNCT GLOBAL-POD-F + EQUAL? PRSA,V?WALK-TO,V?BOARD,V?THROUGH \?CCL3 + EQUAL? HERE,ESCAPE-POD \?CCL6 + PRINTR "You're already in it!" +?CCL6: CALL DO-WALK,P?WEST + RTRUE +?CCL3: EQUAL? PRSA,V?DROP,V?DISEMBARK,V?EXIT \?CCL8 + EQUAL? HERE,DECK-NINE \?CCL11 + PRINTR "You're not in it!" +?CCL11: CALL DO-WALK,P?OUT + RTRUE +?CCL8: EQUAL? PRSA,V?OPEN \FALSE + CALL PERFORM,V?OPEN,POD-DOOR + RTRUE + + + .FUNCT POD-EXIT-F + GRTR? BLOWUP-COUNTER,4 \?CCL3 + EQUAL? PRSO,P?EAST \?CCL6 + PRINT CANT-GO + CRLF + RFALSE +?CCL6: FSET? POD-DOOR,OPENBIT /?CCL8 + PRINTI "The pod door is closed." + CRLF + RFALSE +?CCL8: SET 'C-ELAPSED,30 + RETURN UNDERWATER +?CCL3: EQUAL? PRSO,P?UP \?CCL11 + PRINT CANT-GO + CRLF + RFALSE +?CCL11: FSET? POD-DOOR,OPENBIT /?CCL13 + PRINTI "The pod door is closed." + CRLF + RFALSE +?CCL13: RETURN DECK-NINE + + + .FUNCT SAFETY-WEB-F,RARG=M-OBJECT + EQUAL? PRSA,V?EXAMINE \?CCL3 + ZERO? RARG \?CCL3 + PRINTR "The safety webbing fills most of the pod. It could accomodate from one to, perhaps, twenty people." +?CCL3: EQUAL? PRSA,V?TAKE \?CCL7 + ZERO? RARG \?CCL7 + PRINTR "The safety web seems to be more intended for getting into than grabbing onto." +?CCL7: EQUAL? PRSA,V?CLIMB-ON,V?BOARD \?CCL11 + ZERO? RARG \?CCL11 + MOVE ADVENTURER,SAFETY-WEB + PRINTR "You are now safely cushioned within the web." +?CCL11: EQUAL? PRSA,V?TAKE,V?OPEN \?CCL15 + EQUAL? RARG,M-BEG \?CCL15 + EQUAL? PRSO,SAFETY-WEB \?CCL20 + PRINTR "You're in it!" +?CCL20: PRINTR "You can't reach it from here." +?CCL15: EQUAL? PRSA,V?WALK \?CCL22 + EQUAL? RARG,M-BEG \?CCL22 + PRINTR "You'll have to stand up, first." +?CCL22: EQUAL? PRSA,V?STAND /?PRD28 + EQUAL? PRSA,V?DROP,V?DISEMBARK,V?EXIT \FALSE +?PRD28: ZERO? RARG \FALSE + IN? ADVENTURER,SAFETY-WEB \FALSE + MOVE ADVENTURER,HERE + GRTR? TRIP-COUNTER,14 \?CCL34 + CALL INT,I-SINK-POD + GET STACK,C-ENABLED? + ZERO? STACK \?CCL34 + CALL QUEUE,I-SINK-POD,-1 + PUT STACK,0,1 + PRINTR "As you stand, the pod shifts slightly and you feel it falling. A moment later, the fall stops with a shock, and you see water rising past the viewport." +?CCL34: PRINTR "You are standing again." + + + .FUNCT TOWEL-F + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "A pretty ordinary towel. Something is written in its corner." + + + .FUNCT FOOD-KIT-F + EQUAL? PRSA,V?EMPTY \FALSE + FSET? FOOD-KIT,OPENBIT /?CCL6 + PRINTR "The kit is closed!" +?CCL6: FIRST? PRSO \FALSE + PRINTR "The goo, being gooey, sticks to the inside of the kit. You would probably have to shake the kit to get the goo out." + + + .FUNCT GOO-F + EQUAL? PRSA,V?EAT \?CCL3 + ZERO? HUNGER-LEVEL \?CCL6 + PRINT NOT-HUNGRY + CRLF + RTRUE +?CCL6: IN? FOOD-KIT,ADVENTURER /?CCL8 + SET 'PRSO,FOOD-KIT + CALL NOT-HOLDING + CALL THIS-IS-IT,FOOD-KIT + RSTACK +?CCL8: REMOVE PRSO + SET 'C-ELAPSED,15 + SET 'HUNGER-LEVEL,0 + CALL QUEUE,I-HUNGER-WARNINGS,1450 + PUT STACK,0,1 + PRINTI "Mmmm...that tasted just like " + EQUAL? PRSO,BROWN-GOO \?CCL11 + PRINTI "delicious Nebulan fungus pudding" + JUMP ?CND9 +?CCL11: EQUAL? PRSO,RED-GOO \?CCL13 + PRINTI "scrumptious cherry pie" + JUMP ?CND9 +?CCL13: PRINTI "yummy lima beans" +?CND9: PRINTR "." +?CCL3: EQUAL? PRSA,V?DROP,V?TAKE \FALSE + EQUAL? PRSA,V?DROP \?CCL18 + PRINTI "The goo, being gooey, sticks where it is" + JUMP ?CND16 +?CCL18: EQUAL? PRSA,V?TAKE \?CND16 + PRINTI "It would ooze through your fingers" +?CND16: PRINTR ". You'll have to eat it right from the survival kit." + + + .FUNCT ESCAPE-POD-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is one of the Feinstein's primary escape pods, for use in extreme emergencies. A mass of safety webbing, large enough to hold several dozen people, fills half the pod. The controls are entirely automated. The bulkhead leading out is " + CALL DDESC,POD-DOOR + PRINTR "." + + + .FUNCT POD-DOOR-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? POD-DOOR,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: GRTR? TRIP-COUNTER,14 \?CCL8 + FSET POD-DOOR,OPENBIT + PRINTR "The bulkhead opens and cold ocean water rushes in!" +?CCL8: GRTR? BLOWUP-COUNTER,0 \?CCL10 + EQUAL? HERE,DECK-NINE \?CCL13 + PRINTR "Too late. The pod's launching procedure has already begun." +?CCL13: PRINTR "Opening the door now would be a phenomenally stupid idea." +?CCL10: PRINTR "Why open the door to the emergency escape pod if there's no emergency?" +?CCL3: EQUAL? PRSA,V?CLOSE \?CCL15 + FSET? POD-DOOR,OPENBIT /?CCL18 + CALL IS-CLOSED + RSTACK +?CCL18: PRINTR "You can't close it yourself." +?CCL15: EQUAL? PRSA,V?THROUGH \FALSE + EQUAL? HERE,DECK-NINE \?CCL23 + CALL DO-WALK,P?WEST + RSTACK +?CCL23: CALL DO-WALK,P?OUT + RSTACK + + + .FUNCT GANGWAY-DOOR-F + EQUAL? PRSA,V?OPEN \?CCL3 + FSET? PRSO,OPENBIT \?CCL6 + CALL ALREADY-OPEN + RSTACK +?CCL6: PRINTR "There doesn't seem to be any way to open it." +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + FSET? PRSO,OPENBIT \?CCL11 + PRINTR "You can't close it yourself." +?CCL11: CALL IS-CLOSED + RSTACK + + + .FUNCT I-BLOWUP-FEINSTEIN + CALL QUEUE,I-BLOWUP-FEINSTEIN,-1 + PUT STACK,0,1 + INC 'BLOWUP-COUNTER + EQUAL? BLOWUP-COUNTER,5 \?CCL3 + EQUAL? HERE,DECK-NINE \?CCL6 + CALL JIGS-UP,STR?29 + RSTACK +?CCL6: CRLF + PRINTI "Through the viewport of the pod you see the Feinstein dwindle as you head away. Bursts of light dot its hull. Suddenly, a huge explosion blows the Feinstein into tiny pieces, sending the escape pod tumbling away! " + CRLF + CALL QUEUE,I-POD-TRIP,-1 + PUT STACK,0,1 + CALL INT,I-BLOWUP-FEINSTEIN + PUT STACK,0,0 + IN? ADVENTURER,SAFETY-WEB /?CCL9 + RANDOM 100 + LESS? 20,STACK /?CCL9 + CALL JIGS-UP,STR?30 + RSTACK +?CCL9: IN? ADVENTURER,SAFETY-WEB /FALSE + CRLF + PRINTR "You are thrown against the bulkhead, bruising a few limbs. The safety webbing might have offered a bit more protection." +?CCL3: EQUAL? BLOWUP-COUNTER,4 \?CCL15 + CALL INT,I-BLATHER + PUT STACK,0,0 + CALL INT,I-AMBASSADOR + PUT STACK,0,0 + EQUAL? HERE,DECK-NINE \?CCL18 + CRLF + PRINTR "Explosions continue to rock the ship." +?CCL18: CRLF + PRINTR "You feel the pod begin to slide down its ejection tube as explosions shake the mother ship." +?CCL15: EQUAL? BLOWUP-COUNTER,3 \?CCL20 + FCLEAR POD-DOOR,OPENBIT + EQUAL? HERE,DECK-NINE \?CCL23 + CRLF + PRINTR "More powerful explosions buffet the ship. The lights flicker madly, and the escape-pod bulkhead clangs shut." +?CCL23: EQUAL? HERE,ESCAPE-POD \?CCL25 + CRLF + PRINTR "The pod door clangs shut as heavy explosions continue to buffet the Feinstein." +?CCL25: CALL JIGS-UP,STR?31 + RSTACK +?CCL20: EQUAL? BLOWUP-COUNTER,2 \?CCL27 + FCLEAR CORRIDOR-DOOR,OPENBIT + FCLEAR CORRIDOR-DOOR,INVISIBLE + FCLEAR GANGWAY-DOOR,OPENBIT + FCLEAR GANGWAY-DOOR,INVISIBLE + EQUAL? HERE,DECK-NINE \?CCL30 + CRLF + PRINTR "More distant explosions! A narrow emergency bulkhead at the base of the gangway and a wider one along the corridor to starboard both crash shut!" +?CCL30: EQUAL? HERE,ESCAPE-POD,BRIG \?CCL32 + CRLF + PRINTR "The ship shakes again. You hear, from close by, the sounds of emergency bulkheads closing." +?CCL32: EQUAL? HERE,GANGWAY \?CCL34 + CRLF + PRINTR "Another explosion. A narrow bulkhead at the base of the gangway slams shut!" +?CCL34: CRLF + PRINTI "You are deafened by more explosions and by the sound of emergency bulkheads slamming closed. " + IN? BLATHER,HERE \?CCL37 + PRINTI "Blather, foaming slightly at the mouth, screams at you to swab the decks" + JUMP ?CND35 +?CCL37: MOVE BLATHER,HERE + PRINTI "Blather enters, looking confused, and begins ranting madly at you" +?CND35: PRINTR "." +?CCL27: EQUAL? BLOWUP-COUNTER,1 \FALSE + SET 'BRIGS-UP,0 + FSET POD-DOOR,OPENBIT + CRLF + PRINTI "A massive explosion rocks the ship. Echoes from the explosion resound deafeningly down the halls. " + EQUAL? HERE,DECK-NINE \?CCL42 + PRINTI "The door to port slides open. " + IN? AMBASSADOR,HERE \?CCL45 + REMOVE AMBASSADOR + REMOVE CELERY + PRINTR "The ambassador squawks frantically, evacuates a massive load of gooey slime, and rushes away." +?CCL45: IN? BLATHER,HERE \?CCL47 + REMOVE BLATHER + PRINTR "Blather, confused by this non-routine occurrence, orders you to continue scrubbing the floor, and then dashes off." +?CCL47: CRLF + RTRUE +?CCL42: EQUAL? HERE,ESCAPE-POD,GANGWAY,BRIG \?CCL49 + CRLF + RTRUE +?CCL49: PRINTR "Blather, looking slightly disoriented, barks at you to resume your assigned duties." + + + .FUNCT I-POD-TRIP + INC 'TRIP-COUNTER + EQUAL? TRIP-COUNTER,1 \?CCL3 + CRLF + PRINTR "As the escape pod tumbles away from the former location of the Feinstein, its gyroscopes whine. The pod slowly stops tumbling. Lights on the control panel blink furiously as the autopilot searches for a reasonable destination." +?CCL3: EQUAL? TRIP-COUNTER,2 \?CCL5 + CRLF + PRINTR "The auxiliary rockets fire briefly, and a nearby planet swings into view through the port. It appears to be almost entirely ocean, with just a few visible islands and an unusually small polar ice cap. A moment later, the system's sun swings into view, and the viewport polarizes into a featureless black rectangle." +?CCL5: EQUAL? TRIP-COUNTER,3 \?CCL7 + CRLF + PRINTR "The main thrusters fire a long, gentle burst. A monotonic voice issues from the control panel. ""Approaching planet...human-habitable.""" +?CCL7: EQUAL? TRIP-COUNTER,7 \?CCL9 + CRLF + PRINTR "The pod is buffeted as it enters the planet's atmosphere." +?CCL9: EQUAL? TRIP-COUNTER,8 \?CCL11 + CRLF + PRINTR "You feel the temperature begin to rise, and the pod's climate control system roars as it labors to compensate." +?CCL11: EQUAL? TRIP-COUNTER,9 \?CCL13 + CRLF + PRINTR "The viewport suddenly becomes transparent again, giving you a view of endless ocean below. The lights on the control panel flash madly as the pod's computer searches for a suitable landing site. The thrusters fire long and hard, slowing the pod's descent." +?CCL13: EQUAL? TRIP-COUNTER,10 \?CCL15 + CRLF + PRINTR "The pod is now approaching the closer of a pair of islands. It appears to be surrounded by sheer cliffs rising from the water, and is topped by a wide plateau. The plateau seems to be covered by a sprawling complex of buildings." +?CCL15: EQUAL? TRIP-COUNTER,11 \FALSE + IN? ADVENTURER,SAFETY-WEB \?CCL20 + MOVE FOOD-KIT,HERE + MOVE TOWEL,HERE + CRLF + PRINTI "The pod lands with a thud. Through the viewport you can see a rocky cleft and some water below. The pod rocks gently back and forth as if it was precariously balanced. A previously unseen panel slides open, revealing some emergency provisions, including a survival kit and a towel." + CRLF + SET 'TRIP-COUNTER,15 + CALL INT,I-POD-TRIP + PUT STACK,0,0 + RTRUE +?CCL20: CALL JIGS-UP,STR?32 + RSTACK + + + .FUNCT I-SINK-POD + INC 'SINK-COUNTER + EQUAL? SINK-COUNTER,3 \?CCL3 + EQUAL? HERE,ESCAPE-POD \?CCL3 + CRLF + PRINTR "The pod is now completely submerged, and you feel it smash against underwater rocks. Bubbles streaming upward past the window indicate that the pod is continuing to sink." +?CCL3: EQUAL? SINK-COUNTER,4 \?CCL7 + EQUAL? HERE,ESCAPE-POD \?CCL7 + FSET? POD-DOOR,OPENBIT /?CCL7 + CRLF + PRINTR "The pod creaks ominously from the increasing pressure." +?CCL7: EQUAL? SINK-COUNTER,5 \FALSE + EQUAL? HERE,ESCAPE-POD \FALSE + FSET? POD-DOOR,OPENBIT \?CCL17 + CALL JIGS-UP,STR?33 + RSTACK +?CCL17: CALL JIGS-UP,STR?34 + RSTACK + + + .FUNCT SLOT-F + EQUAL? PRSA,V?PUT \?CCL3 + EQUAL? SLOT,PRSI \?CCL3 + PRINTR "The slot is shallow, so you can't put anything in it. It may be possible to slide something through the slot, though." +?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7 + PRINTR "The slot is about ten centimeters wide, but only about two centimeters deep. It is surrounded on its long sides by parallel ridges of metal." +?CCL7: EQUAL? PRSA,V?SLIDE \FALSE + EQUAL? SLOT,PRSI \FALSE + MOVE PRSO,ADVENTURER + FSET? PRSO,SCRAMBLEDBIT \?CCL14 + PRINTR "A sign flashes ""Magnetik striip randumiizd...konsult Prajekt Handbuk abowt propur kaar uv awtharazaashun kardz.""" +?CCL14: EQUAL? PRSO,KITCHEN-CARD \?CCL16 + EQUAL? HERE,MESS-HALL \?CCL19 + FSET? KITCHEN-DOOR,OPENBIT \?CCL22 + PRINTR "Nothing happens." +?CCL22: FSET KITCHEN-DOOR,OPENBIT + CALL QUEUE,I-KITCHEN-DOOR-CLOSES,50 + PUT STACK,0,1 + PRINTI "The kitchen door quietly slides open." + CRLF + CALL FLOYD-REVEAL-CARD-F + RTRUE +?CCL19: PRINT WRONG-CARD + CRLF + RTRUE +?CCL16: EQUAL? PRSO,UPPER-ELEVATOR-CARD \?CCL24 + EQUAL? HERE,UPPER-ELEVATOR \?CCL27 + SET 'UPPER-ELEVATOR-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-UPPER-ELEVATOR,180 + PUT STACK,0,1 + PRINT ELEVATOR-ENABLED + CRLF + CALL FLOYD-REVEAL-CARD-F + RTRUE +?CCL27: PRINT WRONG-CARD + CRLF + RTRUE +?CCL24: EQUAL? PRSO,LOWER-ELEVATOR-CARD \?CCL29 + EQUAL? HERE,LOWER-ELEVATOR \?CCL32 + SET 'LOWER-ELEVATOR-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-LOWER-ELEVATOR,200 + PUT STACK,0,1 + PRINT ELEVATOR-ENABLED + CRLF + RTRUE +?CCL32: PRINT WRONG-CARD + CRLF + RTRUE +?CCL29: EQUAL? PRSO,TELEPORTATION-CARD \?CCL34 + EQUAL? HERE,BOOTH-1,BOOTH-2,BOOTH-3 \?CCL37 + SET 'TELEPORTATION-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-TELEPORTATION,30 + PUT STACK,0,1 + PRINTR "Nothing happens for a moment. Then a light flashes ""Redee.""" +?CCL37: PRINT WRONG-CARD + CRLF + RTRUE +?CCL34: EQUAL? PRSO,SHUTTLE-CARD \?CCL39 + CALL SHUTTLE-ACTIVATE + RSTACK +?CCL39: EQUAL? PRSO,MINI-CARD \?CCL41 + EQUAL? HERE,MINI-BOOTH \?CCL44 + SET 'MINI-ACTIVATED,TRUE-VALUE + CALL QUEUE,I-TURNOFF-MINI,30 + PUT STACK,0,1 + PRINTR "A melodic high-pitched voice says ""Miniaturization and teleportation booth activated. Please type in damaged sector number.""" +?CCL44: PRINT WRONG-CARD + CRLF + RTRUE +?CCL41: EQUAL? PRSO,ID-CARD \FALSE + PRINT WRONG-CARD + CRLF + RTRUE + + + .FUNCT FLOYD-REVEAL-CARD-F + IN? FLOYD,HERE \FALSE + ZERO? CARD-REVEALED \FALSE + EQUAL? DAY,2 \?PRD8 + LESS? INTERNAL-MOVES,5000 \?PRD8 + RANDOM 100 + LESS? 5,STACK \?CCL3 +?PRD8: EQUAL? DAY,2 \?PRD12 + GRTR? INTERNAL-MOVES,4999 \?PRD12 + RANDOM 100 + LESS? 10,STACK \?CCL3 +?PRD12: EQUAL? DAY,3 \?PRD16 + LESS? INTERNAL-MOVES,5000 \?PRD16 + RANDOM 100 + LESS? 20,STACK \?CCL3 +?PRD16: EQUAL? DAY,3 \?PRD20 + GRTR? INTERNAL-MOVES,4999 \?PRD20 + RANDOM 100 + LESS? 40,STACK \?CCL3 +?PRD20: GRTR? DAY,3 \FALSE +?CCL3: SET 'CARD-REVEALED,TRUE-VALUE + SET 'FLOYD-SPOKE,TRUE-VALUE + ZERO? CARD-STOLEN \?CCL26 + MOVE LOWER-ELEVATOR-CARD,FLOYD + PRINTR "Floyd claps his hands with excitement. ""Those cards are really neat, huh? Floyd has one for himself--see?"" He reaches behind one of his panels and retrieves a magnetic-striped card. He waves it exuberantly in the air." +?CCL26: PRINTR "Floyd bobs up and down with excitement. ""Those cards are really neat! Floyd has one, too."" He begins searching through his compartments, but finds nothing. He scratches his head and looks confused." + + + .FUNCT I-KITCHEN-DOOR-CLOSES + EQUAL? HERE,KITCHEN \?CCL3 + CALL QUEUE,I-KITCHEN-DOOR-CLOSES,-1 + PUT STACK,0,1 + RFALSE +?CCL3: FCLEAR KITCHEN-DOOR,OPENBIT + CALL INT,I-KITCHEN-DOOR-CLOSES + PUT STACK,0,0 + EQUAL? HERE,MESS-HALL \FALSE + CRLF + PRINTR "The kitchen door slides quietly closed." + + + .FUNCT TELEPORT,BOOTH + EQUAL? PRSA,V?PUSH \FALSE + EQUAL? TELEPORTATION-ON,TRUE-VALUE \?CCL6 + PRINTI "You experience a strange feeling in the pit of your stomach." + CRLF + IN? FLOYD,HERE \?CND7 + PRINTI "Floyd gives a terrified squeal, and clutches at his guidance mechanism." + CRLF + SET 'FLOYD-SPOKE,TRUE-VALUE + CALL QUEUE,I-FLOYD,1 + PUT STACK,0,1 +?CND7: CALL ROB,HERE,BOOTH + CALL GOTO,BOOTH,FALSE-VALUE + CALL INT,I-TURNOFF-TELEPORTATION + PUT STACK,0,0 + SET 'TELEPORTATION-ON,FALSE-VALUE + RTRUE +?CCL6: PRINTR "A sign flashes ""Teleportaashun buux not aktivaatid.""" + + + .FUNCT TELEPORTATION-BUTTON-1-F + CALL TELEPORT,BOOTH-1 + RSTACK + + + .FUNCT TELEPORTATION-BUTTON-2-F + CALL TELEPORT,BOOTH-2 + RSTACK + + + .FUNCT TELEPORTATION-BUTTON-3-F + CALL TELEPORT,BOOTH-3 + RSTACK + + + .FUNCT I-TURNOFF-TELEPORTATION + SET 'TELEPORTATION-ON,FALSE-VALUE + EQUAL? HERE,BOOTH-1,BOOTH-2,BOOTH-3 \FALSE + CRLF + PRINTR "The ready light goes dark." + + + .FUNCT GLOBAL-SHUTTLE-F + EQUAL? PRSA,V?BOARD /?CTR2 + EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?ENTER \?CCL3 +?CTR2: EQUAL? HERE,SHUTTLE-CAR-ALFIE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST /?CTR7 + EQUAL? HERE,SHUTTLE-CAR-BETTY,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST \?CCL8 +?CTR7: PRINTR "You ARE in the shuttle car." +?CCL8: PRINTR "Use 'north' or 'south'." +?CCL3: EQUAL? PRSA,V?DROP,V?DISEMBARK,V?EXIT \FALSE + EQUAL? HERE,SHUTTLE-CAR-ALFIE \?CCL15 + CALL DO-WALK,P?NORTH + RSTACK +?CCL15: EQUAL? HERE,SHUTTLE-CAR-BETTY \?CCL17 + CALL DO-WALK,P?SOUTH + RSTACK +?CCL17: EQUAL? HERE,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST /?CTR18 + EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST \?CCL19 +?CTR18: PRINTR "You can't exit the shuttle car from here." +?CCL19: PRINTR "You're not in the shuttle car!" + + + .FUNCT SHUTTLE-CAR-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is the cabin of a large transport, with seating for around 20 people plus space for freight. There are open doors at the eastern and western ends of the cabin, and a doorway leads out to a wide platform to the " + EQUAL? HERE,SHUTTLE-CAR-ALFIE \?CCL6 + PRINTI "north" + JUMP ?CND4 +?CCL6: PRINTI "south" +?CND4: PRINTR "." + + + .FUNCT CONTROL-CABIN-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a small control cabin. A control panel contains a slot, a lever, and a display. The lever can be set at a central position, or it could be pushed up to a position labelled ""+"", or pulled down to a position labelled ""-"". It is currently at the " + ZERO? LEVER-SETTING \?CCL6 + PRINTI "center" + JUMP ?CND4 +?CCL6: EQUAL? LEVER-SETTING,1 \?CCL8 + PRINTI "upper" + JUMP ?CND4 +?CCL8: PRINTI "lower" +?CND4: PRINTI " setting. The display, a digital readout, currently reads " + PRINTN SHUTTLE-VELOCITY + PRINTI ". Through the cabin window you can see " + CALL DESCRIBE-VIEW + CRLF + RTRUE + + + .FUNCT DESCRIBE-VIEW + EQUAL? HERE,ALFIE-CONTROL-WEST \?PRD5 + ZERO? ALFIE-AT-KALAMONTEE \?CTR2 +?PRD5: EQUAL? HERE,BETTY-CONTROL-WEST \?PRD8 + ZERO? BETTY-AT-KALAMONTEE \?CTR2 +?PRD8: EQUAL? HERE,ALFIE-CONTROL-EAST \?PRD11 + ZERO? ALFIE-AT-KALAMONTEE /?CTR2 +?PRD11: EQUAL? HERE,BETTY-CONTROL-EAST \?CCL3 + ZERO? BETTY-AT-KALAMONTEE \?CCL3 +?CTR2: PRINTI "a featureless concrete wall." + RTRUE +?CCL3: ZERO? SHUTTLE-MOVING /?CCL17 + EQUAL? SHUTTLE-COUNTER,23 \?CCL17 + PRINTI "parallel rails ending at a brightly-lit station ahead." + RTRUE +?CCL17: PRINTI "parallel rails running along the floor of a long tunnel, vanishing in the distance." + RTRUE + + + .FUNCT SHUTTLE-DOOR-F + EQUAL? PRSA,V?OPEN \FALSE + ZERO? SHUTTLE-MOVING /?CCL6 + PRINTR "A recorded voice says ""Operator should remain in control cabin while shuttle car is between stations.""" +?CCL6: PRINTR "Are you sure it isn't?" + + + .FUNCT SHUTTLE-ENTER-F + EQUAL? HERE,KALAMONTEE-PLATFORM \?CCL3 + EQUAL? PRSO,P?NORTH \?CCL6 + ZERO? BETTY-AT-KALAMONTEE /?CCL9 + RETURN SHUTTLE-CAR-BETTY +?CCL9: PRINT CANT-GO + CRLF + RFALSE +?CCL6: EQUAL? PRSO,P?SOUTH \FALSE + ZERO? ALFIE-AT-KALAMONTEE /?CCL14 + RETURN SHUTTLE-CAR-ALFIE +?CCL14: PRINT CANT-GO + CRLF + RFALSE +?CCL3: EQUAL? HERE,LAWANDA-PLATFORM \FALSE + EQUAL? PRSO,P?NORTH \?CCL19 + ZERO? BETTY-AT-KALAMONTEE /?CCL22 + PRINT CANT-GO + CRLF + RFALSE +?CCL22: RETURN SHUTTLE-CAR-BETTY +?CCL19: EQUAL? PRSO,P?SOUTH \FALSE + ZERO? ALFIE-AT-KALAMONTEE /?CCL27 + PRINT CANT-GO + CRLF + RFALSE +?CCL27: RETURN SHUTTLE-CAR-ALFIE + + + .FUNCT SHUTTLE-EXIT-F + EQUAL? HERE,SHUTTLE-CAR-ALFIE \?CCL3 + ZERO? ALFIE-AT-KALAMONTEE /?CCL6 + RETURN KALAMONTEE-PLATFORM +?CCL6: RETURN LAWANDA-PLATFORM +?CCL3: EQUAL? HERE,SHUTTLE-CAR-BETTY \FALSE + ZERO? BETTY-AT-KALAMONTEE /?CCL11 + RETURN KALAMONTEE-PLATFORM +?CCL11: RETURN LAWANDA-PLATFORM + + + .FUNCT SHUTTLE-ACTIVATE + EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST /?CCL3 + EQUAL? HERE,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST /?CCL3 + PRINT WRONG-CARD + CRLF + RTRUE +?CCL3: ZERO? ALFIE-BROKEN /?PRD9 + EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST /?CTR6 +?PRD9: ZERO? BETTY-BROKEN /?CCL7 + EQUAL? HERE,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST \?CCL7 +?CTR6: PRINTR "A garbled recording mentions that the shuttle car has undergone some damage and that the repair robot has been summoned." +?CCL7: GRTR? INTERNAL-MOVES,6000 \?CND1 + PRINTR "A recorded voice explains that using the shuttle car during the evening hours requires special authorization." +?CND1: EQUAL? HERE,ALFIE-CONTROL-EAST \?CCL17 + ZERO? SHUTTLE-ON /?CCL20 + PRINT SHUTTLE-RECORDING-1 + CRLF + RTRUE +?CCL20: ZERO? ALFIE-AT-KALAMONTEE \?CCL22 + PRINT SHUTTLE-RECORDING-2 + CRLF + RTRUE +?CCL22: SET 'SHUTTLE-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-SHUTTLE,80 + PUT STACK,0,1 + PRINT SHUTTLE-RECORDING-3 + CRLF + RTRUE +?CCL17: EQUAL? HERE,ALFIE-CONTROL-WEST \?CCL24 + ZERO? SHUTTLE-ON /?CCL27 + PRINT SHUTTLE-RECORDING-1 + CRLF + RTRUE +?CCL27: ZERO? ALFIE-AT-KALAMONTEE /?CCL29 + PRINT SHUTTLE-RECORDING-2 + CRLF + RTRUE +?CCL29: SET 'SHUTTLE-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-SHUTTLE,80 + PUT STACK,0,1 + PRINT SHUTTLE-RECORDING-3 + CRLF + RTRUE +?CCL24: EQUAL? HERE,BETTY-CONTROL-EAST \?CCL31 + ZERO? SHUTTLE-ON /?CCL34 + PRINT SHUTTLE-RECORDING-1 + CRLF + RTRUE +?CCL34: ZERO? BETTY-AT-KALAMONTEE \?CCL36 + PRINT SHUTTLE-RECORDING-2 + CRLF + RTRUE +?CCL36: SET 'SHUTTLE-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-SHUTTLE,80 + PUT STACK,0,1 + PRINT SHUTTLE-RECORDING-3 + CRLF + RTRUE +?CCL31: EQUAL? HERE,BETTY-CONTROL-WEST \?CCL38 + ZERO? SHUTTLE-ON /?CCL41 + PRINT SHUTTLE-RECORDING-1 + CRLF + RTRUE +?CCL41: ZERO? BETTY-AT-KALAMONTEE /?CCL43 + PRINT SHUTTLE-RECORDING-2 + CRLF + RTRUE +?CCL43: SET 'SHUTTLE-ON,TRUE-VALUE + CALL QUEUE,I-TURNOFF-SHUTTLE,80 + PUT STACK,0,1 + PRINT SHUTTLE-RECORDING-3 + CRLF + RTRUE +?CCL38: PRINT WRONG-CARD + CRLF + RTRUE + + + .FUNCT I-TURNOFF-SHUTTLE + ZERO? SHUTTLE-MOVING /?CCL3 + CALL QUEUE,I-TURNOFF-SHUTTLE,80 + PUT STACK,0,1 + RFALSE +?CCL3: SET 'SHUTTLE-ON,FALSE-VALUE + RFALSE + + + .FUNCT LEVER-F + EQUAL? PRSA,V?PUSH-UP,V?PUSH \?CCL3 + ZERO? SHUTTLE-ON /?CCL6 + EQUAL? LEVER-SETTING,1 \?CCL9 + PRINTR "The lever is already in the upper position." +?CCL9: ZERO? LEVER-SETTING \?CCL11 + SET 'LEVER-SETTING,1 + CALL QUEUE,I-SHUTTLE,1 + PUT STACK,0,1 + PRINTR "The lever is now in the upper position." +?CCL11: SET 'LEVER-SETTING,0 + PRINTR "The lever is now in the central position." +?CCL6: PRINT SHUTTLE-RECORDING-4 + CRLF + RTRUE +?CCL3: EQUAL? PRSA,V?PUSH-DOWN,V?PULL \FALSE + ZERO? SHUTTLE-ON /?CCL16 + EQUAL? LEVER-SETTING,1 \?CCL19 + SET 'LEVER-SETTING,0 + PRINTR "The lever is now in the central position." +?CCL19: ZERO? LEVER-SETTING \?CCL21 + ZERO? SHUTTLE-VELOCITY \?CCL24 + PRINTR "The lever immediately pops back to the central position." +?CCL24: SET 'LEVER-SETTING,-1 + CALL QUEUE,I-SHUTTLE,1 + PUT STACK,0,1 + PRINTR "The lever is now in the lower position." +?CCL21: PRINTR "The lever is already in the lower position." +?CCL16: PRINT SHUTTLE-RECORDING-4 + CRLF + RTRUE + + + .FUNCT I-SHUTTLE + CALL QUEUE,I-SHUTTLE,-1 + PUT STACK,0,1 + ZERO? SHUTTLE-MOVING \?CCL3 + SET 'SHUTTLE-MOVING,TRUE-VALUE + FCLEAR SHUTTLE-DOOR,OPENBIT + FCLEAR SHUTTLE-DOOR,INVISIBLE + PRINTI "The control cabin door slides shut and the shuttle car begins to move " + EQUAL? LEVER-SETTING,1 \FALSE + ADD SHUTTLE-VELOCITY,5 >SHUTTLE-VELOCITY + PRINTR "forward! The display changes to 5." +?CCL3: GRTR? SHUTTLE-VELOCITY,0 \?CND7 + INC 'SHUTTLE-COUNTER +?CND7: EQUAL? LEVER-SETTING,1 \?CCL11 + ADD SHUTTLE-VELOCITY,5 >SHUTTLE-VELOCITY + JUMP ?CND9 +?CCL11: EQUAL? LEVER-SETTING,-1 \?CND9 + GRTR? SHUTTLE-VELOCITY,0 \?CCL15 + SUB SHUTTLE-VELOCITY,5 >SHUTTLE-VELOCITY + JUMP ?CND9 +?CCL15: SET 'LEVER-SETTING,0 + PRINTI "The shuttle car comes to a stop and the lever pops back to the central position." + CRLF +?CND9: EQUAL? SHUTTLE-COUNTER,24 \?CCL18 + CALL DESCRIBE-SHUTTLE-ARRIVE + RSTACK +?CCL18: GRTR? SHUTTLE-VELOCITY,0 \FALSE + CALL DESCRIBE-SHUTTLE-TRIP + RTRUE + + + .FUNCT DESCRIBE-SHUTTLE-TRIP + PRINTI "The shuttle car continues to move. The display " + ZERO? LEVER-SETTING \?CCL3 + PRINTI "still reads " + JUMP ?CND1 +?CCL3: PRINTI "blinks, and now reads " +?CND1: PRINTN SHUTTLE-VELOCITY + PRINTC 46 + CRLF + EQUAL? SHUTTLE-COUNTER,2 \?CND4 + PRINTI "You pass a sign which says ""Limit 45.""" + CRLF +?CND4: EQUAL? SHUTTLE-COUNTER,12 \?CND6 + PRINTI "The tunnel levels out and begins to slope upward. A sign flashes by which reads ""Hafwaa Mark -- Beegin Deeseluraashun.""" + CRLF +?CND6: EQUAL? SHUTTLE-COUNTER,20 \?CND8 + PRINT SIGN-PASS + PRINTI """15.""" + CRLF +?CND8: EQUAL? SHUTTLE-COUNTER,21 \?CND10 + PRINT SIGN-PASS + PRINTI """10.""" + CRLF +?CND10: EQUAL? SHUTTLE-COUNTER,22 \?CND12 + PRINT SIGN-PASS + PRINTI """5.""" + CRLF +?CND12: EQUAL? SHUTTLE-COUNTER,23 \FALSE + PRINTR "The shuttle car is approaching a brightly-lit area. As you near it, you make out the concrete platforms of a shuttle station." + + + .FUNCT DESCRIBE-SHUTTLE-ARRIVE + EQUAL? SHUTTLE-COUNTER,24 \FALSE + ZERO? SHUTTLE-VELOCITY \?CCL6 + PRINTI "The shuttle car glides into the station and comes to rest at the concrete platform. You hear the cabin doors slide open." + CRLF + JUMP ?CND4 +?CCL6: LESS? SHUTTLE-VELOCITY,20 \?CCL8 + EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST \?CCL11 + SET 'ALFIE-BROKEN,TRUE-VALUE + JUMP ?CND9 +?CCL11: SET 'BETTY-BROKEN,TRUE-VALUE +?CND9: PRINTI "The shuttle car rumbles through the station and smashes into the wall at the far end. You are thrown forward into the control panel. Both you and the shuttle car produce unhealthy crunching sounds as the cabin doors creak slowly open." + CRLF + JUMP ?CND4 +?CCL8: CALL JIGS-UP,STR?42 +?CND4: SET 'SHUTTLE-VELOCITY,0 + SET 'SHUTTLE-MOVING,FALSE-VALUE + SET 'SHUTTLE-COUNTER,0 + SET 'LEVER-SETTING,0 + SET 'SHUTTLE-ON,FALSE-VALUE + FSET SHUTTLE-DOOR,INVISIBLE + FSET SHUTTLE-DOOR,OPENBIT + CALL INT,I-SHUTTLE + PUT STACK,0,0 + EQUAL? HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST \?CCL14 + ZERO? ALFIE-AT-KALAMONTEE /?CCL17 + SET 'ALFIE-AT-KALAMONTEE,FALSE-VALUE + RETURN ALFIE-AT-KALAMONTEE +?CCL17: SET 'ALFIE-AT-KALAMONTEE,TRUE-VALUE + RETURN ALFIE-AT-KALAMONTEE +?CCL14: ZERO? BETTY-AT-KALAMONTEE /?CCL20 + SET 'BETTY-AT-KALAMONTEE,FALSE-VALUE + RETURN BETTY-AT-KALAMONTEE +?CCL20: SET 'BETTY-AT-KALAMONTEE,TRUE-VALUE + RETURN BETTY-AT-KALAMONTEE + + + .FUNCT I-SLEEP-WARNINGS + INC 'SLEEPY-LEVEL + IN? ADVENTURER,BED \?CND1 + CRLF + PRINTI "You suddenly realize how tired you were and how comfortable the bed is. You should be asleep in no time." + CRLF + CALL INT,I-SLEEP-WARNINGS + PUT STACK,0,0 + CALL QUEUE,I-FALL-ASLEEP,16 + PUT STACK,0,1 + RTRUE +?CND1: EQUAL? SLEEPY-LEVEL,1 \?CCL5 + CRLF + PRINTI "You begin to feel weary. It might be time to think about finding a nice safe place to sleep." + CRLF + CALL QUEUE,I-SLEEP-WARNINGS,400 + PUT STACK,0,1 + RTRUE +?CCL5: EQUAL? SLEEPY-LEVEL,2 \?CCL7 + CRLF + PRINTI "You're really tired now. You'd better find a place to sleep real soon." + CRLF + CALL QUEUE,I-SLEEP-WARNINGS,135 + PUT STACK,0,1 + RTRUE +?CCL7: EQUAL? SLEEPY-LEVEL,3 \?CCL9 + CRLF + PRINTI "If you don't get some sleep soon you'll probably drop." + CRLF + CALL QUEUE,I-SLEEP-WARNINGS,60 + PUT STACK,0,1 + RTRUE +?CCL9: EQUAL? SLEEPY-LEVEL,4 \?CCL11 + CRLF + PRINTI "You can barely keep your eyes open." + CRLF + CALL QUEUE,I-SLEEP-WARNINGS,50 + PUT STACK,0,1 + RTRUE +?CCL11: EQUAL? SLEEPY-LEVEL,5 \FALSE + EQUAL? HERE,BED \?CCL16 + CRLF + PRINTI "You slowly sink into a deep and blissful sleep." + CRLF + CALL DREAMING + RSTACK +?CCL16: EQUAL? HERE,DORM-A,DORM-B /?CTR17 + EQUAL? HERE,DORM-C,DORM-D \?CCL18 +?CTR17: CRLF + PRINTI "You climb into one of the bunk beds and immediately fall asleep." + CRLF + MOVE ADVENTURER,BED + CALL DREAMING + RSTACK +?CCL18: CRLF + PRINTI "You can't stay awake a moment longer. You drop to the ground and fall into a deep but fitful sleep." + CRLF + EQUAL? DAY,1 \?PRD25 + EQUAL? HERE,CRAG /?CTR22 +?PRD25: EQUAL? DAY,3 \?PRD28 + EQUAL? HERE,BALCONY /?CTR22 +?PRD28: EQUAL? DAY,5 \?CCL23 + EQUAL? HERE,WINDING-STAIR \?CCL23 +?CTR22: CALL JIGS-UP,STR?44 + RSTACK +?CCL23: RANDOM 100 + LESS? 30,STACK /?CCL34 + CALL JIGS-UP,STR?45 + RSTACK +?CCL34: CALL DREAMING + RSTACK + + + .FUNCT BED-F,RARG=M-OBJECT + EQUAL? PRSA,V?WALK \?CCL3 + EQUAL? RARG,M-BEG \?CCL3 + PRINTR "You'll have to stand up, first." +?CCL3: EQUAL? PRSA,V?RUB /?PRD9 + EQUAL? PRSA,V?CLOSE,V?OPEN,V?TAKE \?CCL7 +?PRD9: EQUAL? RARG,M-BEG \?CCL7 + EQUAL? PRSO,BED /?CCL7 + PRINTR "You can't reach it from here." +?CCL7: ZERO? RARG \FALSE + EQUAL? PRSA,V?WALK-TO,V?BOARD,V?THROUGH \?CCL16 + EQUAL? HERE,INFIRMARY \?CCL19 + CALL JIGS-UP,STR?46 + RSTACK +?CCL19: GRTR? SLEEPY-LEVEL,0 \?CCL21 + MOVE ADVENTURER,BED + CALL QUEUE,I-FALL-ASLEEP,16 + PUT STACK,0,1 + CALL INT,I-SLEEP-WARNINGS + PUT STACK,0,0 + PRINTR "Ahhh...the bed is soft and comfortable. You should be asleep in short order." +?CCL21: MOVE ADVENTURER,BED + PRINTR "You are now in bed." +?CCL16: EQUAL? PRSA,V?DROP /?PRD25 + EQUAL? PRSA,V?EXIT,V?STAND,V?DISEMBARK \?CCL23 +?PRD25: CALL INT,I-FALL-ASLEEP + GET STACK,C-TICK + ZERO? STACK /?CCL23 + PRINTR "How could you suggest such a thing when you're so tired and this bed is so comfy?" +?CCL23: EQUAL? PRSA,V?DROP,V?EXIT,V?LEAVE \?CCL29 + CALL PERFORM,V?DISEMBARK,BED + RTRUE +?CCL29: EQUAL? PRSA,V?PUT \FALSE + EQUAL? BED,PRSI \FALSE + MOVE PRSO,HERE + PRINTI "The " + PRINTD PRSO + PRINTR " bounces off the bed and lands on the floor." + + + .FUNCT I-FALL-ASLEEP + CRLF + PRINTI "You slowly sink into a deep and restful sleep." + CRLF + CALL INT,I-FALL-ASLEEP + PUT STACK,0,0 + CALL DREAMING + RSTACK + + + .FUNCT DREAMING + FSET? FORK,TOUCHBIT \?CCL3 + RANDOM 100 + LESS? 13,STACK /?CCL3 + PRINTI "You are in a busy office crowded with people. The only one you recognize is Floyd. He rushes back and forth between the desks, carrying papers and delivering coffee. He notices you, and asks how your project is coming, and whether you have time to tell him a story. You look into his deep, trusting eyes..." + CRLF + JUMP ?CND1 +?CCL3: RANDOM 100 + LESS? 60,STACK /?CND1 + CRLF + CALL PICK-ONE,DREAMS + PRINT STACK + CRLF +?CND1: CALL WAKING-UP + RSTACK + + + .FUNCT WAKING-UP,X,N + INC 'DAY + SET 'SICKNESS-WARNING-FLAG,TRUE-VALUE + SET 'SLEEPY-LEVEL,0 + CALL RESET-TIME + FIRST? ADVENTURER >X /?PRG2 +?PRG2: ZERO? X /?REP3 + NEXT? X >N /?BOGUS7 +?BOGUS7: FSET? X,WORNBIT /?CND8 + MOVE X,HERE +?CND8: EQUAL? X,CANTEEN \?CND10 + IN? HIGH-PROTEIN,CANTEEN \?CND10 + FSET? CANTEEN,OPENBIT \?CND10 + REMOVE HIGH-PROTEIN +?CND10: EQUAL? X,FLASK \?CND15 + IN? CHEMICAL-FLUID,FLASK \?CND15 + REMOVE CHEMICAL-FLUID +?CND15: SET 'X,N + JUMP ?PRG2 +?REP3: PRINTI " +***** SEPTEM " + ADD DAY,5 + PRINTN STACK + PRINTI ", 11344 ***** + +" + IN? ADVENTURER,BED /?CCL21 + PRINTI "You wake and slowly stand up, feeling stiff from your night on the floor." + JUMP ?CND19 +?CCL21: LESS? SICKNESS-LEVEL,3 \?CCL23 + PRINTI "You wake up feeling refreshed and ready to face the challenges of this mysterious world." + JUMP ?CND19 +?CCL23: LESS? SICKNESS-LEVEL,6 \?CCL25 + PRINTI "You wake after sleeping restlessly. You feel weak and listless." + JUMP ?CND19 +?CCL25: PRINTI "You wake feeling weak and worn-out. It will be an effort just to stand up." +?CND19: GRTR? HUNGER-LEVEL,0 \?CCL28 + SET 'HUNGER-LEVEL,4 + CALL QUEUE,I-HUNGER-WARNINGS,100 + PUT STACK,0,1 + PRINTI " You are also incredibly famished. Better get some breakfast!" + JUMP ?CND26 +?CCL28: CALL QUEUE,I-HUNGER-WARNINGS,400 + PUT STACK,0,1 +?CND26: CRLF + FSET? FLOYD,RLANDBIT \FALSE + ZERO? FLOYD-INTRODUCED /FALSE + MOVE FLOYD,HERE + SET 'FLOYD-SPOKE,TRUE-VALUE + IN? ADVENTURER,BED \?CCL36 + PRINTR "Floyd bounces impatiently at the foot of the bed. ""About time you woke up, you lazy bones! Let's explore around some more!""" +?CCL36: PRINTR "Floyd gives you a nudge with his foot and giggles. ""You sure look silly sleeping on the floor,"" he says." + + + .FUNCT RESET-TIME + EQUAL? DAY,2 \?CCL3 + FCLEAR BALCONY,TOUCHBIT + RANDOM 80 + ADD 1600,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,5800 + PUT STACK,0,1 + RTRUE +?CCL3: EQUAL? DAY,3 \?CCL5 + FCLEAR BALCONY,TOUCHBIT + RANDOM 80 + ADD 1750,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,5550 + PUT STACK,0,1 + RTRUE +?CCL5: EQUAL? DAY,4 \?CCL7 + FCLEAR WINDING-STAIR,TOUCHBIT + RANDOM 80 + ADD 1950,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,5200 + PUT STACK,0,1 + RTRUE +?CCL7: EQUAL? DAY,5 \?CCL9 + FCLEAR WINDING-STAIR,TOUCHBIT + RANDOM 80 + ADD 2150,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,4800 + PUT STACK,0,1 + RTRUE +?CCL9: EQUAL? DAY,6 \?CCL11 + FCLEAR COURTYARD,TOUCHBIT + RANDOM 80 + ADD 2450,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,4300 + PUT STACK,0,1 + RTRUE +?CCL11: EQUAL? DAY,7 \?CCL13 + FCLEAR COURTYARD,TOUCHBIT + RANDOM 80 + ADD 2800,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,3700 + PUT STACK,0,1 + RTRUE +?CCL13: EQUAL? DAY,8 \?CCL15 + RANDOM 80 + ADD 3200,STACK >INTERNAL-MOVES + CALL QUEUE,I-SLEEP-WARNINGS,3000 + PUT STACK,0,1 + RTRUE +?CCL15: EQUAL? DAY,9 \FALSE + CALL JIGS-UP,STR?52 + RSTACK + + + .FUNCT I-HUNGER-WARNINGS + INC 'HUNGER-LEVEL + EQUAL? HUNGER-LEVEL,1 \?CCL3 + CALL QUEUE,I-HUNGER-WARNINGS,450 + PUT STACK,0,1 + CRLF + PRINTR "A growl from your stomach warns that you're getting pretty hungry and thirsty." +?CCL3: EQUAL? HUNGER-LEVEL,2 \?CCL5 + CALL QUEUE,I-HUNGER-WARNINGS,150 + PUT STACK,0,1 + CRLF + PRINTR "You're now really ravenous and your lips are quite parched." +?CCL5: EQUAL? HUNGER-LEVEL,3 \?CCL7 + CALL QUEUE,I-HUNGER-WARNINGS,100 + PUT STACK,0,1 + CRLF + PRINTR "You're starting to feel faint from lack of food and liquid." +?CCL7: EQUAL? HUNGER-LEVEL,4 \?CCL9 + CALL QUEUE,I-HUNGER-WARNINGS,50 + PUT STACK,0,1 + CRLF + PRINTR "If you don't eat or drink something in a few millichrons, you'll probably pass out." +?CCL9: EQUAL? HUNGER-LEVEL,5 \FALSE + CALL JIGS-UP,STR?53 + RSTACK + + + .FUNCT I-SICKNESS-WARNINGS + CALL QUEUE,I-SICKNESS-WARNINGS,700 + PUT STACK,0,1 + ZERO? SICKNESS-WARNING-FLAG /FALSE + SET 'SICKNESS-WARNING-FLAG,FALSE-VALUE + SUB LOAD-ALLOWED,10 >LOAD-ALLOWED + INC 'SICKNESS-LEVEL + EQUAL? SICKNESS-LEVEL,1 \?CCL6 + CRLF + PRINTR "You notice that you feel a bit weak and slightly flushed, but you're not sure why." +?CCL6: EQUAL? SICKNESS-LEVEL,2 \?CCL8 + CRLF + PRINTR "You notice that you feel unusually weak, and you suspect that you have a fever." +?CCL8: EQUAL? SICKNESS-LEVEL,3 \?CCL10 + CRLF + PRINTR "You are now feeling quite under the weather, not unlike a bad flu." +?CCL10: EQUAL? SICKNESS-LEVEL,4 \?CCL12 + CRLF + PRINTR "Your fever seems to have gotten worse, and you're developing a bad headache." +?CCL12: EQUAL? SICKNESS-LEVEL,5 \?CCL14 + CRLF + PRINTR "Your health has deteriorated further. You feel hot and weak, and your head is throbbing." +?CCL14: EQUAL? SICKNESS-LEVEL,6 \?CCL16 + CRLF + PRINTR "You feel very, very sick, and have almost no strength left." +?CCL16: EQUAL? SICKNESS-LEVEL,7 \?CCL18 + CRLF + PRINTR "You feel like you're on fire, burning up from the fever. You're almost too weak to move, and your brain is reeling from the pounding headache." +?CCL18: EQUAL? SICKNESS-LEVEL,8 \?CCL20 + CRLF + PRINTR "You're no longer sure of where you are and what you're doing. You stumble about, your pain subsiding into a dull numbness." +?CCL20: EQUAL? SICKNESS-LEVEL,9 \FALSE + CALL JIGS-UP,STR?55 + RSTACK + + + .FUNCT TRANSLATOR-PSEUDO + IN? AMBASSADOR,HERE \?CCL3 + EQUAL? PRSA,V?TAKE \?CCL6 + PRINTR "The ambassador whimpers and slaps your wrist." +?CCL6: EQUAL? PRSA,V?MUNG \FALSE + PRINTR "Are you trying to create an interplanetary incident?" +?CCL3: PRINTR "What translator?" + + + .FUNCT SLIME-PSEUDO + IN? AMBASSADOR,HERE /?CTR2 + GRTR? AMBASSADOR-LEAVE,0 \?CCL3 +?CTR2: EQUAL? PRSA,V?TASTE,V?EAT \?CCL8 + CALL LIKE-SLIME,STR?56 + RSTACK +?CCL8: EQUAL? PRSA,V?RUB,V?TAKE \?CCL10 + CALL LIKE-SLIME,STR?57 + RSTACK +?CCL10: EQUAL? PRSA,V?EXAMINE \?CCL12 + CALL LIKE-SLIME,STR?58 + RSTACK +?CCL12: EQUAL? PRSA,V?SMELL \?CCL14 + CALL LIKE-SLIME,STR?59 + RSTACK +?CCL14: EQUAL? PRSA,V?REMOVE,V?SCRUB \FALSE + PRINTI "Whew. You've cleaned up maybe one ten-thousandth of the slime." + IN? BLATHER,HERE /?CND17 + PRINTR " If you hurry, it might be all cleaned up before Ensign Blather gets here." +?CND17: CRLF + RTRUE +?CCL3: PRINTR "What slime?" + + + .FUNCT LIKE-SLIME,STRING + PRINTI "It " + PRINT STRING + PRINTR " like slime. Aren't you glad you didn't step in it?" + + + .FUNCT GRAFFITI-PSEUDO + EQUAL? PRSA,V?READ \FALSE + SET 'C-ELAPSED,28 + PRINTR "All the graffiti seem to be about Blather. One of the least obscene items reads: + +There once was a krip, name of Blather +Who told a young Ensign named Smather +""I'll make you inherit +A trotting demerit +And ship you off to those stinking fawg-infested tar-pools of Krather."" + +It's not a very good limerick, is it?" + + + .FUNCT DOOR-PSEUDO + EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE + PRINTR "No way, Jose." + + + .FUNCT WALKWAY-PSEUDO + EQUAL? PRSA,V?LAMP-ON,V?EXAMINE \FALSE + PRINTR "The walkway, which hastened the trip down that long corridor, is no longer in service." + + + .FUNCT BENCH-PSEUDO + EQUAL? PRSA,V?BOARD,V?CLIMB-ON \FALSE + PRINTR "The benches look uncomfortable." + + + .FUNCT CATWALK-PSEUDO + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP,V?CLIMB-ON \FALSE + PRINTR "The catwalks are too high for you to access." + + + .FUNCT EQUIPMENT-PSEUDO + EQUAL? PRSA,V?LAMP-OFF /?CCL3 + EQUAL? PRSA,V?LAMP-ON,V?RUB,V?EXAMINE \FALSE +?CCL3: PRINTR "The equipment here is so complicated that you couldn't even begin to figure out how to operate it." + + + .FUNCT MONITORS-PSEUDO + EQUAL? PRSA,V?READ,V?EXAMINE \FALSE + CALL DESCRIBE-MONITORS + RSTACK + + + .FUNCT MURAL-PSEUDO + ZERO? COMPUTER-FIXED /?CCL3 + CALL ANYMORE + RSTACK +?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL6 + PRINTR "It's a gaudy work of orange and purple abstract shapes, reminiscent of the early works of Burstini Bonz. It doesn't appear to fit the decor of the room at all. The mural seems to ripple now and then, as though a breeze were blowing behind it." +?CCL6: EQUAL? PRSA,V?MUNG \?CCL8 + PRINTR "My sentiments also, but let's be civil." +?CCL8: EQUAL? PRSA,V?LOOK-BEHIND,V?MOVE \FALSE + PRINTR "It won't budge." + + + .FUNCT LOGO-PSEUDO + EQUAL? PRSA,V?EXAMINE,V?READ \FALSE + PRINTR "The logo shows a flame burning over a sleep chamber of some type. Under that is the phrase ""Prajekt Kuntrool.""" + + + .FUNCT KEYBOARD-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "It is a standard numeric keyboard with ten keys labelled from 0 through 9." + + + .FUNCT CRACK-PSEUDO + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "The crack is too small to go through, but large enough to look through." +?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + EQUAL? HERE,RADIATION-LAB \?CCL8 + PRINTR "You see a dimly lit Bio Lab. Sinister shapes lurk about within." +?CCL8: PRINTR "You see a laboratory suffused with a pale blue glow." + + + .FUNCT VOID-PSEUDO + EQUAL? PRSA,V?PUT \?CCL3 + EQUAL? PRSI,PSEUDO-OBJECT \?CCL3 + CALL PERFORM,V?THROW-OFF,PRSO,STRIP + RTRUE +?CCL3: EQUAL? PRSA,V?ZAP \?CCL7 + EQUAL? PRSO,LASER \?CCL7 + EQUAL? PRSI,PSEUDO-OBJECT \?CCL7 + SET 'PRSI,FALSE-VALUE + CALL PERFORM,V?ZAP,LASER + RTRUE +?CCL7: EQUAL? PRSA,V?LEAP,V?THROUGH \?CCL12 + CALL JIGS-UP,STR?60 + RSTACK +?CCL12: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE + PRINTR "The void extends downward into the gloom far below." + + + .FUNCT SPOUT-PSEUDO + EQUAL? PRSA,V?PUT-UNDER \?CCL3 + EQUAL? PRSO,CANTEEN \?CCL3 + CALL PERFORM,V?PUT,CANTEEN,DISPENSER + RTRUE +?CCL3: EQUAL? PRSA,V?LOOK-UNDER \FALSE + IN? CANTEEN,DISPENSER \FALSE + PRINTR "The canteen is sitting under the spout." + + + .FUNCT TOILET-PSEUDO + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "The fixtures are all dry and dusty." +?CCL3: EQUAL? PRSA,V?FLUSH \FALSE + PRINTR "The water seems to be turned off." + + + .FUNCT GAMES-PSEUDO + EQUAL? PRSA,V?PLAY \?CCL3 + CALL PERFORM,V?PLAY,GLOBAL-GAMES + RTRUE +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "All the usual games -- Chess, Cribbage, Galactic Overlord, Double Fannucci..." + + + .FUNCT TAPES-PSEUDO + EQUAL? PRSA,V?TAKE,V?PLAY,V?READ \?CCL3 + PRINTR "Hardly the time or place for reading recreational tapes." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "Let's see...here are some musical selections, here are some bestselling romantic novels, here is a biography of a famous Double Fannucci champion..." + + + .FUNCT PARTITION-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "The partitions are very plain, and were obviously intended to separate this huge room into smaller areas." + + + .FUNCT CUBBYHOLE-PSEUDO + EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE + PRINTR "The cubbyholes look like the kind that are used to hold maps or blueprints. They are all empty now." + + + .FUNCT MAPS-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "Examining the maps reveals no new information." + + + .FUNCT DEVICES-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "They are components of disassembled robots, beyond repair." + + + .FUNCT CABLES-PSEUDO + EQUAL? PRSA,V?FOLLOW,V?EXAMINE \?CCL3 + PRINTR "These heavy cables merely run from the two consoles up into the ceiling." +?CCL3: EQUAL? PRSA,V?MUNG \FALSE + CALL JIGS-UP,STR?61 + RSTACK + + + .FUNCT STRUCTURE-PSEUDO + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "You'd be able to tell more about it if you climbed up to it." +?CCL3: EQUAL? PRSA,V?CLIMB-UP \FALSE + CALL DO-WALK,P?UP + RSTACK + + + .FUNCT BUTTON-PSEUDO + EQUAL? PRSA,V?PUSH \FALSE + FSET? DISPENSER,MUNGEDBIT \?CCL6 + PRINTR "The dispenser sputters a few times." +?CCL6: IN? CANTEEN,DISPENSER \?CCL8 + FSET? CANTEEN,OPENBIT /?CCL11 + PRINTR "A thick, brown liquid spills over the closed canteen, dribbles down the side of the machine, and forms a puddle on the floor which quickly dries up." +?CCL11: IN? HIGH-PROTEIN,CANTEEN \?CCL13 + PRINTI "The brown liquid splashes over the mouth of the already-filled canteen, creating a mess" + FSET? PATROL-UNIFORM,WORNBIT \?CND14 + PRINTI " and staining your uniform" +?CND14: PRINTR "." +?CCL13: MOVE HIGH-PROTEIN,CANTEEN + PRINTR "The canteen fills almost to the brim with a brown liquid." +?CCL8: PRINTR "A thick, brownish liquid pours from the spout and splashes to the floor, where it quickly evaporates." + + + .FUNCT CARPET-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "It's pretty dusty." + + + .FUNCT CABINETS-PSEUDO + EQUAL? PRSA,V?OPEN,V?EXAMINE \?CCL3 + PRINTR "The cabinets are locked." +?CCL3: EQUAL? PRSA,V?UNLOCK \FALSE + PRINTR "You don't have the correct key." + + + .FUNCT PLATE-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "The plates seem to be featureless metal squares." + + + .FUNCT ESCALATOR-PSEUDO + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?CCL3 + EQUAL? HERE,FORK \?CCL6 + PRINTR "You're already at the top of the escalator." +?CCL6: CALL DO-WALK,P?UP + RSTACK +?CCL3: EQUAL? PRSA,V?CLIMB-DOWN \?CCL8 + EQUAL? HERE,LAWANDA-PLATFORM \?CCL11 + PRINTR "You're already at the bottom of the escalator." +?CCL11: CALL DO-WALK,P?DOWN + RSTACK +?CCL8: EQUAL? PRSA,V?LAMP-ON \FALSE + CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT REACTOR-BUTTON-PSEUDO + EQUAL? PRSA,V?PUSH \FALSE + FSET REACTOR-ELEVATOR-DOOR,OPENBIT + CALL QUEUE,I-REACTOR-DOOR-CLOSE,30 + PUT STACK,0,1 + PRINTR "The metal doors slide open, revealing a small room to the east." + + + .FUNCT SUPPLIES-PSEUDO + EQUAL? PRSA,V?TAKE \FALSE + PRINTR "These supplies are of absolutely no use." + + + .FUNCT DESK-PSEUDO + EQUAL? PRSA,V?OPEN \?CCL3 + PRINTR "All the drawers are empty." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "It is bare except for the microfilm reader." + + + .FUNCT CRYO-BUTTON-PSEUDO + EQUAL? PRSA,V?PUSH \?CCL3 + ZERO? CRYO-SCORE-FLAG \?CCL3 + CALL QUEUE,I-CRYO-ELEVATOR-ARRIVE,100 + PUT STACK,0,1 + CALL INT,I-CHASE-SCENE + PUT STACK,0,0 + FCLEAR CRYO-ELEVATOR-DOOR,OPENBIT + SET 'CRYO-SCORE-FLAG,TRUE-VALUE + ADD SCORE,5 >SCORE + PRINTR "The elevator door closes just as the monsters reach it! You slump back against the wall, exhausted from the chase. The elevator begins to move downward." +?CCL3: EQUAL? PRSA,V?PUSH \FALSE + ZERO? CRYO-SCORE-FLAG /FALSE + FSET? CRYO-ELEVATOR-DOOR,OPENBIT \FALSE + CALL JIGS-UP,STR?62 + RSTACK + + + .FUNCT CASTLE-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "The castle is ancient and crumbling." + + + .FUNCT CHEM-SPOUT-PSEUDO + EQUAL? PRSA,V?PUT-UNDER \?CCL3 + EQUAL? PRSI,PSEUDO-OBJECT \?CCL3 + CALL PERFORM,V?PUT-UNDER,PRSO,CHEMICAL-DISPENSER + RTRUE +?CCL3: EQUAL? PRSA,V?LOOK-UNDER \FALSE + ZERO? SPOUT-PLACED /FALSE + PRINTI "There is " + CALL A-AN + PRINTD SPOUT-PLACED + PRINTR " under the spout." + + + .FUNCT CLEFT-PSEUDO + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE + CALL DO-WALK,P?UP + RSTACK + + + .FUNCT RUBBLE-PSEUDO + EQUAL? PRSA,V?MOVE \FALSE + CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT PLAQUE-PSEUDO + EQUAL? PRSA,V?EXAMINE,V?READ \FALSE + PRINTR " +SEENIK VISTA +Xis stuneeng vuu uf xee Kalamontee Valee kuvurz oovur fortee skwaar miilz uf xat faamus tuurist spot. Xee larj bildeeng at xee bend in xee Gulmaan Rivur iz xee formur pravincul kapitul bildeeng." + + + .FUNCT FENCE-PSEUDO + EQUAL? PRSA,V?LEAP,V?CLIMB-FOO,V?CLIMB-UP \FALSE + PRINTR "You can't." + + + .FUNCT LOCK-PSEUDO + EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE + ZERO? PRSI /?CCL6 + PRINTR "That won't unlock it." +?CCL6: PRINTR "But you don't have the orange key!" + + + .FUNCT DIAGRAM-PSEUDO + EQUAL? PRSA,V?READ \FALSE + PRINTR "Not unless you've taken a special twelve-year course in ninth-order molecular physics." + + + .FUNCT ENUNCIATOR-PSEUDO + EQUAL? PRSA,V?MOVE,V?PUSH,V?LOOK-INSIDE \FALSE + CALL PICK-ONE,YUKS + PRINT STACK + RTRUE + + + .FUNCT NEAR-BOOTH-PSEUDO + EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?DROP \?CCL3 + PRINTR "You're not in the booth!" +?CCL3: EQUAL? PRSA,V?WALK-TO,V?BOARD,V?THROUGH \FALSE + CALL DO-WALK,P?IN + RSTACK + + + .FUNCT IN-BOOTH-PSEUDO + EQUAL? PRSA,V?WALK-TO,V?BOARD,V?THROUGH \?CCL3 + PRINTR "You're already in the booth!" +?CCL3: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?DROP \FALSE + CALL DO-WALK,P?OUT + RSTACK + + .ENDI diff --git a/globals.zil b/globals.zil index 9e95298..d7ec815 100644 --- a/globals.zil +++ b/globals.zil @@ -25,7 +25,7 @@ contains the opening sequence which occurs prior to planetfall." (CONTFCN 0) (DESCFCN 0) (SIZE 0) - (PSEUDO "FOO")> + ;(PSEUDO "FOO")> ;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh" @@ -360,11 +360,6 @@ gotten 300 demerits." CR>) )>> -;> - ) @@ -386,19 +381,11 @@ gotten 300 demerits." CR>) "You hit your head against the " D ,PRSO " as you attempt this feat." CR>) (.OBJ ) - ( + ( ) (T CR>)>> -;> - ) - (<==? .NOBJ ,WINNER> ) - (<==? .NOBJ ,ROOMS> )> - >> - > )> @@ -406,13 +393,6 @@ gotten 300 demerits." CR>) ) (>> >)>>> -; ;"this can't happen, of course" - ) - ( )> - >>> - ;"Stuff added for the NOT-HERE object" ) (T <>>)>> -^L + ;"Begin-game stuff aboard the Feinstein" @@ -691,22 +671,7 @@ down, and to fore is the Hyperspatial Jump Machinery Room.") (WEST "Blather throws you to the deck and makes you do 20 push-ups.") (NORTH "Blather blocks your path, growling about extra galley duty.") (FLAGS RLANDBIT ONBIT) - (GLOBAL STAIRS)> - -; - -; - - )>> + (GLOBAL STAIRS)> @@ -775,7 +740,8 @@ demerits onto an oversized clipboard.") (ACTION BLATHER-F)> + + > @@ -893,7 +859,8 @@ Buy one today. Better yet, buy a thousand.\"")> "offers you a bit of celery.">> + + > @@ -1208,13 +1175,13 @@ away. Bursts of light dot its hull. Suddenly, a huge explosion blows the Feinstein into tiny pieces, sending the escape pod tumbling away! " CR> > > - > + > > ) - (> + (> )>)>) @@ -1340,7 +1307,7 @@ to be surrounded by sheer cliffs rising from the water, and is topped by a wide plateau. The plateau seems to be covered by a sprawling complex of buildings." CR>) ( - + ) "| The pod splits open, and water pours in.">)>)>> -^L + "The next bunch of stuff is for the cards, slots, and associated junk." )>)>> )>)>> -^L + ;"teleportation stuff" @@ -1573,7 +1540,7 @@ nothing. He scratches his head and looks confused." CR>)>)>> )>> -^L + ;"shuttle system" @@ -2050,7 +2017,7 @@ condition to care.">)> -^L + "To sleep, perchance to dream..." @@ -2319,7 +2286,7 @@ sleeping on the floor,\" he says." CR>)>)>> )>> -^L + "Feed me!" @@ -2352,7 +2319,7 @@ You collapse from extreme thirst and hunger.">)>> -^L + "Sickness and disease" diff --git a/misc.zabstr b/misc.zabstr new file mode 100644 index 0000000..4d9e09f --- /dev/null +++ b/misc.zabstr @@ -0,0 +1,52 @@ + + + + + ) (ELSE
)>>)> < +REPEAT () )> > >>> !.L)> > < +COND (<==? 3> )>> !.O)> < +SET L ()>>> + >> +>>> + +> +> + >> + ) (T .NUM)>> + %<> WORD> + + +> + + +> + + + + + + + + + %<> WORD> + %<> WORD> + %<> WORD> + + + + %<> WORD> + WORD> + WORD> + WORD> + + + + + + + + + \ No newline at end of file diff --git a/misc.zap b/misc.zap new file mode 100644 index 0000000..798ed80 --- /dev/null +++ b/misc.zap @@ -0,0 +1,366 @@ + + + .FUNCT PICK-ONE,FROB + GET FROB,0 + RANDOM STACK + GET FROB,STACK + RSTACK + + + .FUNCT GO +START:: + +?FCN: PUTB P-LEXV,0,59 + CALL QUEUE,I-BLATHER,-1 + PUT STACK,0,1 + CALL QUEUE,I-AMBASSADOR,-1 + PUT STACK,0,1 + CALL QUEUE,I-RANDOM-INTERRUPTS,1 + PUT STACK,0,1 + CALL QUEUE,I-SLEEP-WARNINGS,3600 + PUT STACK,0,1 + CALL QUEUE,I-HUNGER-WARNINGS,2000 + PUT STACK,0,1 + CALL QUEUE,I-SICKNESS-WARNINGS,1000 + PUT STACK,0,1 + SET 'SPOUT-PLACED,GROUND + GETB 0,56 + ZERO? STACK \?CCL3 + RANDOM 180 + ADD 4450,STACK >INTERNAL-MOVES + JUMP ?CND1 +?CCL3: SET 'INTERNAL-MOVES,4540 +?CND1: SET 'MOVES,INTERNAL-MOVES + SET 'LIT,TRUE-VALUE + SET 'WINNER,ADVENTURER + SET 'HERE,DECK-NINE + SET 'P-IT-LOC,DECK-NINE + SET 'P-IT-OBJECT,POD-DOOR + FSET? HERE,TOUCHBIT /?CND4 + CALL V-VERSION + CRLF + PRINTI "Another routine day of drudgery aboard the Stellar Patrol Ship Feinstein. This morning's assignment for a certain lowly Ensign Seventh Class: scrubbing the filthy metal deck at the port end of Level Nine. With your Patrol-issue self-contained multi-purpose all-weather scrub brush you shine the floor with a diligence born of the knowledge that at any moment dreaded Ensign First Class Blather, the bane of your shipboard existence, could appear." + CRLF + CRLF +?CND4: CALL V-LOOK + CALL MAIN-LOOP + JUMP ?FCN + + + .FUNCT I-RANDOM-INTERRUPTS + RANDOM 90 + ADD STACK,240 + CALL QUEUE,I-BLOWUP-FEINSTEIN,STACK + PUT STACK,0,1 + CALL COMM-SETUP + RANDOM 1000 >NUMBER-NEEDED + RETURN NUMBER-NEEDED + + + .FUNCT MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1 +?PRG1: SET 'C-ELAPSED,C-ELAPSED-DEFAULT + SET 'CNT,0 + SET 'OBJ,FALSE-VALUE + SET 'PTBL,TRUE-VALUE + CALL PARSER >P-WON + ZERO? P-WON /?CCL5 + GET P-PRSI,P-MATCHLEN >ICNT + GET P-PRSO,P-MATCHLEN >OCNT + ZERO? P-IT-OBJECT /?CND6 + CALL ACCESSIBLE?,P-IT-OBJECT + ZERO? STACK /?CND6 + SET 'TMP,FALSE-VALUE +?PRG10: IGRTR? 'CNT,ICNT /?REP11 + GET P-PRSI,CNT + EQUAL? STACK,IT \?PRG10 + PUT P-PRSI,CNT,P-IT-OBJECT + SET 'TMP,TRUE-VALUE +?REP11: ZERO? TMP \?CND17 + SET 'CNT,0 +?PRG19: IGRTR? 'CNT,OCNT /?CND17 + GET P-PRSO,CNT + EQUAL? STACK,IT \?PRG19 + PUT P-PRSO,CNT,P-IT-OBJECT +?CND17: SET 'CNT,0 +?CND6: ZERO? OCNT \?CCL28 + SET 'NUM,OCNT + JUMP ?CND26 +?CCL28: GRTR? OCNT,1 \?CCL30 + SET 'TBL,P-PRSO + ZERO? ICNT \?CCL33 + SET 'OBJ,FALSE-VALUE + JUMP ?CND31 +?CCL33: GET P-PRSI,1 >OBJ +?CND31: SET 'NUM,OCNT + JUMP ?CND26 +?CCL30: GRTR? ICNT,1 \?CCL35 + SET 'PTBL,FALSE-VALUE + SET 'TBL,P-PRSI + GET P-PRSO,1 >OBJ + SET 'NUM,ICNT + JUMP ?CND26 +?CCL35: SET 'NUM,1 +?CND26: ZERO? OBJ \?CND36 + EQUAL? ICNT,1 \?CND36 + GET P-PRSI,1 >OBJ +?CND36: EQUAL? PRSA,V?WALK \?CCL42 + CALL PERFORM,PRSA,PRSO >V + JUMP ?CND40 +?CCL42: ZERO? NUM \?CCL44 + GETB P-SYNTAX,P-SBITS + BAND STACK,P-SONUMS + ZERO? STACK \?CCL47 + CALL PERFORM,PRSA >V + SET 'PRSO,FALSE-VALUE + JUMP ?CND40 +?CCL47: PRINTI "There isn't anything to " + GET P-ITBL,P-VERBN >TMP + ZERO? P-OFLAG \?CTR49 + ZERO? P-MERGED /?CCL50 +?CTR49: GET TMP,0 + PRINTB STACK + JUMP ?CND48 +?CCL50: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK +?CND48: PRINTC 33 + CRLF + SET 'V,FALSE-VALUE + JUMP ?CND40 +?CCL44: SET 'TMP,0 + SET 'ICNT,FALSE-VALUE +?PRG53: IGRTR? 'CNT,NUM \?CCL57 + GRTR? TMP,0 \?CCL60 + PRINTI "The " + EQUAL? TMP,NUM /?CND61 + PRINTI "other " +?CND61: PRINTI "object" + EQUAL? TMP,1 /?CND63 + PRINTC 115 +?CND63: PRINTI " that you mentioned " + EQUAL? TMP,1 /?CCL67 + PRINTI "are" + JUMP ?CND65 +?CCL67: PRINTI "is" +?CND65: PRINTI "n't here." + CRLF + JUMP ?CND40 +?CCL60: ZERO? ICNT \?CND40 + PRINTI "There's nothing there." + CRLF + JUMP ?CND40 +?CCL57: ZERO? PTBL /?CCL71 + GET P-PRSO,CNT >OBJ1 + JUMP ?CND69 +?CCL71: GET P-PRSI,CNT >OBJ1 +?CND69: ZERO? PTBL /?CCL74 + SET 'PRSO,OBJ1 + JUMP ?CND72 +?CCL74: SET 'PRSO,OBJ +?CND72: ZERO? PTBL /?CCL77 + SET 'PRSI,OBJ + JUMP ?CND75 +?CCL77: SET 'PRSI,OBJ1 +?CND75: GRTR? NUM,1 /?CCL79 + GET P-ITBL,P-NC1 + GET STACK,0 + EQUAL? STACK,W?ALL \?CND78 +?CCL79: EQUAL? OBJ1,NOT-HERE-OBJECT \?CCL84 + INC 'TMP + JUMP ?PRG53 +?CCL84: EQUAL? PRSA,V?TAKE \?CCL86 + ZERO? PRSI /?CCL86 + GET P-ITBL,P-NC1 + GET STACK,0 + EQUAL? STACK,W?ALL \?CCL86 + IN? PRSO,PRSI \?PRG53 +?CCL86: EQUAL? P-GETFLAGS,P-ALL \?CCL92 + EQUAL? PRSA,V?TAKE \?CCL92 + LOC OBJ1 + EQUAL? STACK,WINNER,HERE \?PRG53 +?CCL92: EQUAL? OBJ1,IT \?CCL98 + PRINTD P-IT-OBJECT + JUMP ?CND96 +?CCL98: PRINTD OBJ1 +?CND96: PRINTI ": " +?CND78: SET 'ICNT,TRUE-VALUE + CALL PERFORM,PRSA,PRSO,PRSI >V + EQUAL? V,M-FATAL \?PRG53 +?CND40: EQUAL? V,M-FATAL /?CND101 + LOC WINNER + GETP STACK,P?ACTION + CALL STACK,M-END >V +?CND101: EQUAL? PRSA,V?AGAIN /?CND103 + SET 'L-PRSA,PRSA + SET 'L-PRSO,PRSO + SET 'L-PRSI,PRSI +?CND103: CALL INT,I-POD-TRIP + GET STACK,C-ENABLED? + ZERO? STACK /?CCL107 + SET 'C-ELAPSED,54 + JUMP ?CND105 +?CCL107: GRTR? SHUTTLE-VELOCITY,0 \?CCL109 + DIV 600,SHUTTLE-VELOCITY >C-ELAPSED + JUMP ?CND105 +?CCL109: EQUAL? PRSA,V?TELL /?CTR110 + CALL TIMELESS-VERB?,PRSA + ZERO? STACK /?CCL111 +?CTR110: SET 'C-ELAPSED,0 + JUMP ?CND105 +?CCL111: EQUAL? PRSA,V?AGAIN \?CND105 + CALL TIMELESS-VERB?,L-PRSA + ZERO? STACK /?CND105 + SET 'C-ELAPSED,0 +?CND105: ADD INTERNAL-MOVES,C-ELAPSED >INTERNAL-MOVES + EQUAL? V,M-FATAL \?CND3 + SET 'P-CONT,FALSE-VALUE + JUMP ?CND3 +?CCL5: SET 'P-CONT,FALSE-VALUE +?CND3: IN? CHRONOMETER,ADVENTURER /?CCL121 + SET 'MOVES,0 + JUMP ?CND119 +?CCL121: FSET? CHRONOMETER,MUNGEDBIT \?CCL123 + SET 'MOVES,MUNGED-TIME + JUMP ?CND119 +?CCL123: SET 'MOVES,INTERNAL-MOVES +?CND119: ZERO? P-WON /?PRG1 + ZERO? C-ELAPSED /?PRG1 + CALL CLOCKER >V + JUMP ?PRG1 + + + .FUNCT TIMELESS-VERB?,VRB + EQUAL? VRB,V?BRIEF,V?SUPER-BRIEF,V?VERBOSE /TRUE + EQUAL? VRB,V?SAVE,V?RESTORE,V?SCORE /TRUE + EQUAL? VRB,V?SCRIPT,V?UNSCRIPT,V?TIME /TRUE + EQUAL? VRB,V?QUIT,V?RESTART,V?VERSION /TRUE + EQUAL? VRB,V?$RANDOM,V?$RECORD,V?$UNRECORD /TRUE + EQUAL? VRB,V?$COMMAND /TRUE + RFALSE + + + .FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI + SET 'OA,PRSA + SET 'OO,PRSO + SET 'OI,PRSI + EQUAL? IT,I,O \?CND1 + PRINTI "I don't see what you are referring to." + CRLF + SET 'P-IT-OBJECT,FALSE-VALUE + RETURN 2 +?CND1: SET 'PRSA,A + SET 'PRSO,O + ZERO? PRSO /?CND5 + EQUAL? PRSA,V?WALK /?CND5 + SET 'P-IT-OBJECT,PRSO + SET 'P-IT-LOC,HERE +?CND5: SET 'PRSI,I + EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CCL11 + CALL NOT-HERE-OBJECT-F >V + ZERO? V /?CCL11 + SET 'P-WON,FALSE-VALUE + JUMP ?CND9 +?CCL11: SET 'O,PRSO + ZERO? O /?CCL15 + SET 'I,PRSI + ZERO? I /?CCL15 + CALL NULL-F + ZERO? STACK /?CCL15 + PRINTI "[in case last clause changed PRSx]" + JUMP ?CND9 +?CCL15: GETP WINNER,P?ACTION + CALL STACK >V + ZERO? V \?CND9 + LOC WINNER + GETP STACK,P?ACTION + CALL STACK,M-BEG >V + ZERO? V \?CND9 + GET PREACTIONS,A + CALL STACK >V + ZERO? V \?CND9 + ZERO? I /?CCL26 + GETP I,P?ACTION + CALL STACK >V + ZERO? V \?CND9 +?CCL26: ZERO? O /?CCL30 + EQUAL? A,V?WALK /?CCL30 + GETP O,P?ACTION + CALL STACK >V + ZERO? V \?CND9 +?CCL30: GET ACTIONS,A + CALL STACK >V + ZERO? V /?CND9 +?CND9: SET 'PRSA,OA + SET 'PRSO,OO + SET 'PRSI,OI + RETURN V + + + .FUNCT META-LOC,OBJ +?PRG1: ZERO? OBJ /FALSE + IN? OBJ,GLOBAL-OBJECTS \?CND3 + RETURN GLOBAL-OBJECTS +?CND3: IN? OBJ,ROOMS \?CCL9 + RETURN OBJ +?CCL9: LOC OBJ >OBJ + JUMP ?PRG1 + + + .FUNCT QUEUE,RTN,TICK,CINT + CALL INT,RTN >CINT + PUT CINT,C-TICK,TICK + RETURN CINT + + + .FUNCT INT,RTN,DEMON=0,E,C,INT + ADD C-TABLE,C-TABLELEN >E + ADD C-TABLE,C-INTS >C +?PRG1: EQUAL? C,E \?CCL5 + SUB C-INTS,C-INTLEN >C-INTS + ZERO? DEMON /?PEN6 + SUB C-DEMONS,C-INTLEN >C-DEMONS +?PEN6: ADD C-TABLE,C-INTS >INT + PUT INT,C-RTN,RTN + RETURN INT +?CCL5: GET C,C-RTN + EQUAL? STACK,RTN \?CND3 + RETURN C +?CND3: ADD C,C-INTLEN >C + JUMP ?PRG1 + + + .FUNCT CLOCKER,C,E,TICK,FLG=0 + ZERO? P-WON /?CCL3 + PUSH C-INTS + JUMP ?CND1 +?CCL3: PUSH C-DEMONS +?CND1: ADD C-TABLE,STACK >C + ADD C-TABLE,C-TABLELEN >E +?PRG4: EQUAL? C,E \?CCL8 + RETURN FLG +?CCL8: GET C,C-ENABLED? + ZERO? STACK /?CND6 + GET C,C-TICK >TICK + ZERO? TICK /?CND6 + EQUAL? TICK,-1 \?CCL13 + GET C,C-RTN + CALL STACK + ZERO? STACK /?CND6 + SET 'FLG,TRUE-VALUE + JUMP ?CND6 +?CCL13: SUB TICK,C-ELAPSED >TICK + PUT C,C-TICK,TICK + GRTR? TICK,1 /?CND6 + PUT C,C-TICK,0 + GET C,C-RTN + CALL STACK + ZERO? STACK /?CND6 + SET 'FLG,TRUE-VALUE +?CND6: ADD C,C-INTLEN >C + JUMP ?PRG4 + + + .FUNCT NULL-F,A1,A2 + RFALSE + + .ENDI diff --git a/misc.zil b/misc.zil index c7a157c..d740ed6 100644 --- a/misc.zil +++ b/misc.zil @@ -1,74 +1,12 @@ "MISC for PLANETFALL (c) Copyright 1983 Infocom, Inc. All Rights Reserved." -^L - "old MACROS file" -;> )> - -;> - - >> - > "...">) - (T .STR)>> - -; for " - > - - )) - - >> - <1 .FF > - "...">>)>> - .F>)> - <1 .F TELL>> - - ) - (> - >)> - - > - "CRLF"> - <=? .P "CR">> - >) - ( - ) - (ELSE - > - > - > - "DESC"> - <=? .P "D"> - <=? .P "OBJ"> - <=? .P "O">> - >) - ( - <=? .P "N">> - >) - ( - <=? .P "CHR"> - <=? .P "C">> - >) - (ELSE - >>)>)>) - ( - >) - ( - >) - (ELSE )>>>>> - @@ -91,9 +29,6 @@ >>> -;>> - >>> @@ -109,7 +44,7 @@ ) (T .NUM)>> -^L + "old MAIN or VERMONT file" @@ -146,7 +81,11 @@ > ;"set up and go" - >> + ;"following COND avoids random-before-first-read message in ZIP20" + 0> + >>) + (T + )> @@ -332,11 +271,9 @@ Class Blather, the bane of your shipboard existence, could appear." CR CR>)> (T )>> -> - -> - -> +> +> +> % @@ -471,7 +408,7 @@ Class Blather, the bane of your shipboard existence, could appear." CR CR>)> (ELSE >)>>> -^L + "old CLOCK file" @@ -498,10 +435,6 @@ Class Blather, the bane of your shipboard existence, could appear." CR CR>)> -;> ,C-TICK .TICK> - .CINT> - > ,C-TICK .TICK> .CINT> diff --git a/parser.zabstr b/parser.zabstr new file mode 100644 index 0000000..77c3ffb --- /dev/null +++ b/parser.zabstr @@ -0,0 +1,139 @@ + + + WORD> + WORD> + WORD> + %<> WORD> + %<> WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + + + + + + + + + + + + %<> WORD> + %<> WORD> + %<> WORD> + WORD> + + + + + + + + + + + %<> WORD> + + %<> WORD> + + + + WORD> + + + + + + WORD> + + + + + + + + + + + + + + + + + + + + + + WORD> + + + + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + WORD> + WORD> + + + + %<> WORD> + %<> WORD> + %<> WORD> + + + + + + + + + + + + %<> WORD> + %<> WORD> + %<> WORD> + %<> WORD> + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/parser.zap b/parser.zap new file mode 100644 index 0000000..a7e1698 --- /dev/null +++ b/parser.zap @@ -0,0 +1,1331 @@ + + + .FUNCT PARSER,PTR=P-LEXSTART,WORD,VAL=0,VERB=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1 +?PRG1: IGRTR? 'CNT,P-ITBLLEN /?REP2 + PUT P-ITBL,CNT,0 + JUMP ?PRG1 +?REP2: SET 'P-ADVERB,FALSE-VALUE + SET 'P-ADJECTIVE,FALSE-VALUE + SET 'P-MERGED,FALSE-VALUE + PUT P-PRSO,P-MATCHLEN,0 + PUT P-PRSI,P-MATCHLEN,0 + PUT P-BUTS,P-MATCHLEN,0 + ZERO? QUOTE-FLAG \?CND6 + EQUAL? WINNER,ADVENTURER /?CND6 + SET 'WINNER,ADVENTURER + LOC WINNER + FSET? STACK,VEHBIT /?CND6 + LOC WINNER >HERE +?CND6: ZERO? P-CONT /?CCL14 + SET 'PTR,P-CONT + SET 'P-CONT,FALSE-VALUE + EQUAL? PRSA,V?TELL /?CND12 + ZERO? SUPER-BRIEF \?CND12 + CRLF + JUMP ?CND12 +?CCL14: SET 'WINNER,ADVENTURER + SET 'QUOTE-FLAG,FALSE-VALUE + LOC WINNER + FSET? STACK,VEHBIT /?CND19 + LOC WINNER >HERE +?CND19: SET 'SCNT,P-SPACE +?PRG21: DLESS? 'SCNT,0 /?REP22 + ZERO? SUPER-BRIEF \?PRG21 + CRLF + JUMP ?PRG21 +?REP22: PRINTC 62 + READ P-INBUF,P-LEXV +?CND12: GETB P-LEXV,P-LEXWORDS >P-LEN + ZERO? P-LEN \?CND27 + PRINTI "I beg your pardon?" + CRLF + RFALSE +?CND27: SET 'LEN,P-LEN + SET 'P-DIR,FALSE-VALUE + SET 'P-NCN,0 + SET 'P-GETFLAGS,0 +?PRG29: DLESS? 'P-LEN,0 \?CCL33 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?REP30 +?CCL33: GET P-LEXV,PTR >WORD + ZERO? WORD \?CTR34 + CALL NUMBER?,PTR >WORD + ZERO? WORD /?CCL35 +?CTR34: EQUAL? WORD,W?TO \?CCL40 + EQUAL? VERB,ACT?TELL \?CCL40 + SET 'WORD,W?QUOTE + JUMP ?CND38 +?CCL40: EQUAL? WORD,W?THEN \?CND38 + ZERO? VERB \?CND38 + ZERO? QUOTE-FLAG \?CND38 + PUT P-ITBL,P-VERB,ACT?TELL + PUT P-ITBL,P-VERBN,0 + SET 'WORD,W?QUOTE +?CND38: EQUAL? WORD,W?THEN,W?PERIOD /?CTR48 + EQUAL? WORD,W?QUOTE \?CCL49 +?CTR48: EQUAL? WORD,W?QUOTE \?CND52 + ZERO? QUOTE-FLAG /?CCL56 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?CND52 +?CCL56: SET 'QUOTE-FLAG,TRUE-VALUE +?CND52: ZERO? P-LEN /?PEN57 + ADD PTR,P-LEXELEN >P-CONT +?PEN57: PUTB P-LEXV,P-LEXWORDS,P-LEN + JUMP ?REP30 +?CCL49: CALL WT?,WORD,16,3 >VAL + ZERO? VAL /?CCL60 + EQUAL? LEN,1 /?CTR59 + EQUAL? LEN,2 \?PRD65 + EQUAL? VERB,ACT?WALK /?CTR59 +?PRD65: ADD PTR,P-LEXELEN + GET P-LEXV,STACK >NW + EQUAL? NW,W?THEN,W?QUOTE \?PRD68 + EQUAL? VERB,ACT?WALK \?PRD68 + GRTR? LEN,2 /?CTR59 +?PRD68: EQUAL? NW,W?PERIOD \?PRD72 + EQUAL? VERB,ACT?WALK,FALSE-VALUE \?PRD72 + GRTR? LEN,1 /?CTR59 +?PRD72: ZERO? QUOTE-FLAG /?PRD76 + EQUAL? LEN,2 \?PRD76 + EQUAL? NW,W?QUOTE /?CTR59 +?PRD76: GRTR? LEN,2 \?CCL60 + EQUAL? VERB,ACT?WALK \?CCL60 + EQUAL? NW,W?COMMA,W?AND \?CCL60 +?CTR59: SET 'DIR,VAL + EQUAL? NW,W?COMMA,W?AND \?CND83 + ADD PTR,P-LEXELEN + PUT P-LEXV,STACK,W?THEN +?CND83: GRTR? LEN,2 /?CND31 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?REP30 +?CCL60: CALL WT?,WORD,64,1 >VAL + ZERO? VAL /?CCL88 + ZERO? VERB \?CCL88 + SET 'VERB,VAL + PUT P-ITBL,P-VERB,VAL + PUT P-ITBL,P-VERBN,P-VTBL + PUT P-VTBL,0,WORD + MUL PTR,2 + ADD STACK,2 >NUM + GETB P-LEXV,NUM + PUTB P-VTBL,2,STACK + ADD NUM,1 + GETB P-LEXV,STACK + PUTB P-VTBL,3,STACK + JUMP ?CND31 +?CCL88: CALL WT?,WORD,8,0 >VAL + ZERO? VAL \?CTR91 + EQUAL? WORD,W?ALL,W?ONE,W?A /?CTR91 + EQUAL? WORD,W?BOTH /?CTR91 + CALL WT?,WORD,32 + ZERO? STACK \?CTR91 + CALL WT?,WORD,128 + ZERO? STACK /?CCL92 +?CTR91: GRTR? P-LEN,0 \?CCL101 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + EQUAL? STACK,W?OF \?CCL101 + ZERO? VAL \?CCL101 + EQUAL? WORD,W?ALL,W?ONE,W?A /?CCL101 + EQUAL? WORD,W?BOTH \?CND31 +?CCL101: ZERO? VAL /?CCL108 + ZERO? P-LEN /?CTR107 + ADD PTR,2 + GET P-LEXV,STACK + EQUAL? STACK,W?THEN,W?PERIOD \?CCL108 +?CTR107: LESS? P-NCN,2 \?CND31 + PUT P-ITBL,P-PREP1,VAL + PUT P-ITBL,P-PREP1N,WORD + JUMP ?CND31 +?CCL108: EQUAL? P-NCN,2 \?CCL116 + PRINTI "I found too many nouns in that sentence." + CRLF + RFALSE +?CCL116: INC 'P-NCN + CALL CLAUSE,PTR,VAL,WORD >PTR + ZERO? PTR /FALSE + LESS? PTR,0 \?CND31 + SET 'QUOTE-FLAG,FALSE-VALUE +?REP30: ZERO? DIR /?CND126 + SET 'PRSA,V?WALK + SET 'PRSO,DIR + SET 'P-WALK-DIR,DIR + RTRUE +?CCL92: CALL WT?,WORD,4 + ZERO? STACK \?CND31 + EQUAL? VERB,ACT?TELL \?CCL123 + CALL WT?,WORD,64,1 + ZERO? STACK /?CCL123 + PRINTI "Please consult your manual for the correct way to talk to other people or creatures." + CRLF + RFALSE +?CCL123: CALL CANT-USE,PTR + RFALSE +?CCL35: CALL UNKNOWN-WORD,PTR + RFALSE +?CND31: SET 'LW,WORD + ADD PTR,P-LEXELEN >PTR + JUMP ?PRG29 +?CND126: SET 'P-WALK-DIR,FALSE-VALUE + ZERO? P-OFLAG /?CND128 + CALL ORPHAN-MERGE +?CND128: CALL SYNTAX-CHECK + ZERO? STACK /FALSE + CALL SNARF-OBJECTS + ZERO? STACK /FALSE + CALL MANY-CHECK + ZERO? STACK /FALSE + CALL TAKE-CHECK + ZERO? STACK \TRUE + RFALSE + + + .FUNCT WT?,PTR,BIT,B1=5,OFFST=P-P1OFF,TYP + GETB PTR,P-PSOFF >TYP + BTST TYP,BIT \FALSE + GRTR? B1,4 /TRUE + EQUAL? BIT,128 /TRUE + BAND TYP,P-P1BITS >TYP + EQUAL? TYP,B1 /?CND9 + INC 'OFFST +?CND9: GETB PTR,OFFST + RSTACK + + + .FUNCT CLAUSE,PTR,VAL,WORD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1 + SUB P-NCN,1 + MUL STACK,2 >OFF + ZERO? VAL /?CCL3 + ADD P-PREP1,OFF >NUM + PUT P-ITBL,NUM,VAL + ADD NUM,1 + PUT P-ITBL,STACK,WORD + ADD PTR,P-LEXELEN >PTR + JUMP ?CND1 +?CCL3: INC 'P-LEN +?CND1: ZERO? P-LEN \?CND4 + DEC 'P-NCN + RETURN -1 +?CND4: ADD P-NC1,OFF >NUM + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,NUM,STACK + GET P-LEXV,PTR + EQUAL? STACK,W?THE,W?A,W?AN \?PRG8 + GET P-ITBL,NUM + ADD STACK,4 + PUT P-ITBL,NUM,STACK +?PRG8: DLESS? 'P-LEN,0 \?CND10 + ADD NUM,1 >?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + RETURN -1 +?CND10: GET P-LEXV,PTR >WORD + ZERO? WORD \?CTR13 + CALL NUMBER?,PTR >WORD + ZERO? WORD /?CCL14 +?CTR13: ZERO? P-LEN \?CCL19 + SET 'NW,0 + JUMP ?CND17 +?CCL19: ADD PTR,P-LEXELEN + GET P-LEXV,STACK >NW +?CND17: EQUAL? WORD,W?AND,W?COMMA \?CCL22 + SET 'ANDFLG,TRUE-VALUE + JUMP ?CND12 +?CCL22: EQUAL? WORD,W?ALL,W?BOTH,W?ONE \?CCL24 + EQUAL? NW,W?OF \?CND12 + DEC 'P-LEN + ADD PTR,P-LEXELEN >PTR + JUMP ?CND12 +?CCL24: EQUAL? WORD,W?THEN,W?PERIOD /?CTR27 + CALL WT?,WORD,8 + ZERO? STACK /?CCL28 + ZERO? FIRST?? \?CCL28 +?CTR27: INC 'P-LEN + ADD NUM,1 >?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + SUB PTR,P-LEXELEN + RSTACK +?CCL28: CALL WT?,WORD,128 + ZERO? STACK /?CCL34 + GRTR? P-LEN,0 \?CCL37 + EQUAL? NW,W?OF \?CCL37 + EQUAL? WORD,W?ALL,W?ONE \?CND12 +?CCL37: CALL WT?,WORD,32,2 + ZERO? STACK /?CCL41 + ZERO? NW /?CCL41 + CALL WT?,NW,128 + ZERO? STACK \?CND12 +?CCL41: ZERO? ANDFLG \?CCL46 + EQUAL? NW,W?BUT,W?EXCEPT /?CCL46 + EQUAL? NW,W?AND,W?COMMA /?CCL46 + ADD NUM,1 >?TMP1 + ADD PTR,2 + MUL STACK,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + RETURN PTR +?CCL46: SET 'ANDFLG,FALSE-VALUE + JUMP ?CND12 +?CCL34: ZERO? P-OFLAG \?PRD52 + ZERO? P-MERGED \?PRD52 + GET P-ITBL,P-VERB + ZERO? STACK /?CCL50 +?PRD52: CALL WT?,WORD,32 + ZERO? STACK \?CND12 + CALL WT?,WORD,4 + ZERO? STACK \?CND12 +?CCL50: ZERO? ANDFLG /?CCL59 + CALL WT?,WORD,16 + ZERO? STACK \?CTR58 + CALL WT?,WORD,64 + ZERO? STACK /?CCL59 +?CTR58: SUB PTR,4 >PTR + ADD PTR,2 + PUT P-LEXV,STACK,W?THEN + ADD P-LEN,2 >P-LEN +?CND12: SET 'LW,WORD + SET 'FIRST??,FALSE-VALUE + ADD PTR,P-LEXELEN >PTR + JUMP ?PRG8 +?CCL59: CALL WT?,WORD,8 + ZERO? STACK \?CND12 + CALL CANT-USE,PTR + RFALSE +?CCL14: CALL UNKNOWN-WORD,PTR + RFALSE + + + .FUNCT NUMBER?,PTR,CNT,BPTR,CHR,SUM=0,TIM=0,?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + GETB STACK,2 >CNT + MUL PTR,2 + ADD P-LEXV,STACK + GETB STACK,3 >BPTR +?PRG1: DLESS? 'CNT,0 /?REP2 + GETB P-INBUF,BPTR >CHR + GRTR? SUM,10000 /FALSE + LESS? CHR,58 \FALSE + GRTR? CHR,47 \FALSE + MUL SUM,10 >?TMP1 + SUB CHR,48 + ADD ?TMP1,STACK >SUM + INC 'BPTR + JUMP ?PRG1 +?REP2: PUT P-LEXV,PTR,W?INTNUM + GRTR? SUM,10000 /FALSE + SET 'P-NUMBER,SUM + RETURN W?INTNUM + + + .FUNCT ORPHAN-MERGE,CNT=-1,TEMP,VERB,BEG,END,ADJ=0,WRD,?TMP1 + SET 'P-OFLAG,FALSE-VALUE + GET P-ITBL,P-VERBN + GET STACK,0 >WRD + CALL WT?,WRD,32,2 + ZERO? STACK /?CCL3 + SET 'ADJ,TRUE-VALUE + JUMP ?CND1 +?CCL3: CALL WT?,WRD,128,0 + ZERO? STACK /?CND1 + ZERO? P-NCN \?CND1 + PUT P-ITBL,P-VERB,0 + PUT P-ITBL,P-VERBN,0 + ADD P-LEXV,2 + PUT P-ITBL,P-NC1,STACK + ADD P-LEXV,6 + PUT P-ITBL,P-NC1L,STACK + SET 'P-NCN,1 +?CND1: GET P-ITBL,P-VERB >VERB + ZERO? VERB /?CCL9 + ZERO? ADJ \?CCL9 + GET P-OTBL,P-VERB + EQUAL? VERB,STACK \FALSE +?CCL9: EQUAL? P-NCN,2 /FALSE + GET P-OTBL,P-NC1 + EQUAL? STACK,1 \?CCL16 + GET P-ITBL,P-PREP1 >TEMP + GET P-OTBL,P-PREP1 + EQUAL? TEMP,STACK /?CTR18 + ZERO? TEMP \FALSE +?CTR18: ZERO? ADJ /?CCL24 + ADD P-LEXV,2 + PUT P-OTBL,P-NC1,STACK + ADD P-LEXV,6 + PUT P-OTBL,P-NC1L,STACK + JUMP ?PRG64 +?CCL24: GET P-ITBL,P-NC1 + PUT P-OTBL,P-NC1,STACK + GET P-ITBL,P-NC1L + PUT P-OTBL,P-NC1L,STACK + JUMP ?PRG64 +?CCL16: GET P-OTBL,P-NC2 + EQUAL? STACK,1 \?CCL26 + GET P-ITBL,P-PREP1 >TEMP + GET P-OTBL,P-PREP2 + EQUAL? TEMP,STACK /?CTR28 + ZERO? TEMP \FALSE +?CTR28: ZERO? ADJ /?CND32 + ADD P-LEXV,2 + PUT P-ITBL,P-NC1,STACK + ADD P-LEXV,6 + PUT P-ITBL,P-NC1L,STACK +?CND32: GET P-ITBL,P-NC1 + PUT P-OTBL,P-NC2,STACK + GET P-ITBL,P-NC1L + PUT P-OTBL,P-NC2L,STACK + SET 'P-NCN,2 + JUMP ?PRG64 +?CCL26: ZERO? P-ACLAUSE /?PRG64 + EQUAL? P-NCN,1 /?CCL37 + ZERO? ADJ \?CCL37 + SET 'P-ACLAUSE,FALSE-VALUE + RFALSE +?CCL37: GET P-ITBL,P-NC1 >BEG + ZERO? ADJ /?CND40 + ADD P-LEXV,2 >BEG + SET 'ADJ,FALSE-VALUE +?CND40: GET P-ITBL,P-NC1L >END +?PRG42: GET BEG,0 >WRD + EQUAL? BEG,END \?CCL46 + ZERO? ADJ /?CCL49 + CALL ACLAUSE-WIN,ADJ + JUMP ?PRG64 +?CCL49: SET 'P-ACLAUSE,FALSE-VALUE + RFALSE +?CCL46: ZERO? ADJ \?CCL51 + GETB WRD,P-PSOFF + BTST STACK,32 /?CTR50 + EQUAL? WRD,W?ALL,W?ONE \?CCL51 +?CTR50: SET 'ADJ,WRD +?CND44: ADD BEG,P-WORDLEN >BEG + ZERO? END \?PRG42 + SET 'END,BEG + SET 'P-NCN,1 + SUB BEG,4 + PUT P-ITBL,P-NC1,STACK + PUT P-ITBL,P-NC1L,BEG + JUMP ?PRG42 +?CCL51: GETB WRD,P-PSOFF + BTST STACK,128 /?CCL56 + EQUAL? WRD,W?ONE \?CND44 +?CCL56: EQUAL? WRD,P-ANAM,W?ONE \FALSE + CALL ACLAUSE-WIN,ADJ +?PRG64: IGRTR? 'CNT,P-ITBLLEN \?CCL68 + SET 'P-MERGED,TRUE-VALUE + RTRUE +?CCL68: GET P-OTBL,CNT + PUT P-ITBL,CNT,STACK + JUMP ?PRG64 + + + .FUNCT ACLAUSE-WIN,ADJ + GET P-OTBL,P-VERB + PUT P-ITBL,P-VERB,STACK + SET 'P-CCSRC,P-OTBL + ADD P-ACLAUSE,1 + CALL CLAUSE-COPY,P-ACLAUSE,STACK,ADJ + GET P-OTBL,P-NC2 + ZERO? STACK /?PEN1 + SET 'P-NCN,2 +?PEN1: SET 'P-ACLAUSE,FALSE-VALUE + RTRUE + + + .FUNCT WORD-PRINT,CNT,BUF +?PRG1: DLESS? 'CNT,0 /TRUE + GETB P-INBUF,BUF + PRINTC STACK + INC 'BUF + JUMP ?PRG1 + + + .FUNCT UNKNOWN-WORD,PTR,BUF,?TMP1 + PRINTI "I don't know the word """ + MUL PTR,2 >BUF + ADD P-LEXV,BUF + GETB STACK,2 >?TMP1 + ADD P-LEXV,BUF + GETB STACK,3 + CALL WORD-PRINT,?TMP1,STACK + PRINTI ".""" + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-OFLAG,FALSE-VALUE + RETURN P-OFLAG + + + .FUNCT CANT-USE,PTR,BUF,?TMP1 + PRINTI "I can't use the word """ + MUL PTR,2 >BUF + ADD P-LEXV,BUF + GETB STACK,2 >?TMP1 + ADD P-LEXV,BUF + GETB STACK,3 + CALL WORD-PRINT,?TMP1,STACK + PRINTI """ here." + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-OFLAG,FALSE-VALUE + RETURN P-OFLAG + + + .FUNCT SYNTAX-CHECK,SYN,LEN,NUM,OBJ,DRIVE1=0,DRIVE2=0,PREP,VERB,TMP,?TMP2,?TMP1 + GET P-ITBL,P-VERB >VERB + ZERO? VERB \?CND1 + PRINTI "I can't find a verb in that sentence!" + CRLF + RFALSE +?CND1: SUB 255,VERB + GET VERBS,STACK >SYN + GETB SYN,0 >LEN + INC 'SYN +?PRG3: GETB SYN,P-SBITS + BAND STACK,P-SONUMS >NUM + GRTR? P-NCN,NUM /?CND5 + LESS? NUM,1 /?CCL9 + ZERO? P-NCN \?CCL9 + GET P-ITBL,P-PREP1 >PREP + ZERO? PREP /?CTR8 + GETB SYN,P-SPREP1 + EQUAL? PREP,STACK \?CCL9 +?CTR8: SET 'DRIVE1,SYN + JUMP ?CND5 +?CCL9: GETB SYN,P-SPREP1 >?TMP1 + GET P-ITBL,P-PREP1 + EQUAL? ?TMP1,STACK \?CND5 + EQUAL? NUM,2 \?CCL18 + EQUAL? P-NCN,1 \?CCL18 + SET 'DRIVE2,SYN +?CND5: DLESS? 'LEN,1 \?CCL24 + ZERO? DRIVE1 \?REP4 + ZERO? DRIVE2 \?REP4 + PRINTI "I don't understand that sentence." + CRLF + RFALSE +?CCL18: GETB SYN,P-SPREP2 >?TMP1 + GET P-ITBL,P-PREP2 + EQUAL? ?TMP1,STACK \?CND5 + CALL SYNTAX-FOUND,SYN + RTRUE +?CCL24: ADD SYN,P-SYNLEN >SYN + JUMP ?PRG3 +?REP4: ZERO? DRIVE1 /?CCL32 + GETB DRIVE1,P-SFWIM1 >?TMP2 + GETB DRIVE1,P-SLOC1 >?TMP1 + GETB DRIVE1,P-SPREP1 + CALL GWIM,?TMP2,?TMP1,STACK >OBJ + ZERO? OBJ /?CCL32 + PUT P-PRSO,P-MATCHLEN,1 + PUT P-PRSO,1,OBJ + CALL SYNTAX-FOUND,DRIVE1 + RSTACK +?CCL32: ZERO? DRIVE2 /?CCL36 + GETB DRIVE2,P-SFWIM2 >?TMP2 + GETB DRIVE2,P-SLOC2 >?TMP1 + GETB DRIVE2,P-SPREP2 + CALL GWIM,?TMP2,?TMP1,STACK >OBJ + ZERO? OBJ /?CCL36 + PUT P-PRSI,P-MATCHLEN,1 + PUT P-PRSI,1,OBJ + CALL SYNTAX-FOUND,DRIVE2 + RSTACK +?CCL36: EQUAL? VERB,ACT?FIND \?CCL40 + PRINTI "I can't answer that question." + CRLF + RFALSE +?CCL40: EQUAL? WINNER,ADVENTURER /?CCL42 + CALL CANT-ORPHAN + RSTACK +?CCL42: CALL ORPHAN,DRIVE1,DRIVE2 + PRINTI "What do you want to " + GET P-OTBL,P-VERBN >TMP + ZERO? TMP \?CCL45 + PRINTI "tell" + JUMP ?CND43 +?CCL45: GETB P-VTBL,2 + ZERO? STACK \?CCL47 + GET TMP,0 + PRINTB STACK + JUMP ?CND43 +?CCL47: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK + PUTB P-VTBL,2,0 +?CND43: ZERO? DRIVE2 /?CND48 + CALL CLAUSE-PRINT,P-NC1,P-NC1L +?CND48: SET 'P-OFLAG,TRUE-VALUE + ZERO? DRIVE1 /?CCL52 + GETB DRIVE1,P-SPREP1 + JUMP ?CND50 +?CCL52: GETB DRIVE2,P-SPREP2 +?CND50: CALL PREP-PRINT,STACK + PRINTC 63 + CRLF + RFALSE + + + .FUNCT CANT-ORPHAN + PRINTI """I don't understand! What are you referring to?""" + CRLF + RFALSE + + + .FUNCT ORPHAN,D1,D2,CNT=-1 + PUT P-OCLAUSE,P-MATCHLEN,0 + SET 'P-CCSRC,P-ITBL +?PRG1: IGRTR? 'CNT,P-ITBLLEN /?REP2 + GET P-ITBL,CNT + PUT P-OTBL,CNT,STACK + JUMP ?PRG1 +?REP2: EQUAL? P-NCN,2 \?CND6 + CALL CLAUSE-COPY,P-NC2,P-NC2L +?CND6: LESS? P-NCN,1 /?CND8 + CALL CLAUSE-COPY,P-NC1,P-NC1L +?CND8: ZERO? D1 /?CCL12 + GETB D1,P-SPREP1 + PUT P-OTBL,P-PREP1,STACK + PUT P-OTBL,P-NC1,1 + RTRUE +?CCL12: ZERO? D2 /FALSE + GETB D2,P-SPREP2 + PUT P-OTBL,P-PREP2,STACK + PUT P-OTBL,P-NC2,1 + RTRUE + + + .FUNCT CLAUSE-PRINT,BPTR,EPTR,THE?=1,?TMP1 + GET P-ITBL,BPTR >?TMP1 + GET P-ITBL,EPTR + CALL BUFFER-PRINT,?TMP1,STACK,THE? + RSTACK + + + .FUNCT BUFFER-PRINT,BEG,END,CP,NOSP=0,WRD,FIRST??=1,PN=0,?TMP1 +?PRG1: EQUAL? BEG,END /TRUE + ZERO? NOSP /?CCL8 + SET 'NOSP,FALSE-VALUE + JUMP ?CND6 +?CCL8: PRINTC 32 +?CND6: GET BEG,0 >WRD + EQUAL? WRD,W?PERIOD \?CCL11 + SET 'NOSP,TRUE-VALUE + JUMP ?CND3 +?CCL11: EQUAL? WRD,W?FLOYD,W?BLATHER \?CCL13 + CALL CAPITALIZE,BEG + SET 'PN,TRUE-VALUE + JUMP ?CND3 +?CCL13: ZERO? FIRST?? /?CND14 + ZERO? PN \?CND14 + ZERO? CP /?CND14 + PRINTI "the " +?CND14: ZERO? P-OFLAG /?CCL21 + PRINTB WRD + JUMP ?CND19 +?CCL21: EQUAL? WRD,W?IT \?CCL23 + EQUAL? P-IT-LOC,HERE \?CCL23 + PRINTD P-IT-OBJECT + JUMP ?CND19 +?CCL23: GETB BEG,2 >?TMP1 + GETB BEG,3 + CALL WORD-PRINT,?TMP1,STACK +?CND19: SET 'FIRST??,FALSE-VALUE +?CND3: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT CAPITALIZE,PTR,?TMP1 + GETB PTR,3 + GETB P-INBUF,STACK + SUB STACK,32 + PRINTC STACK + GETB PTR,2 + SUB STACK,1 >?TMP1 + GETB PTR,3 + ADD STACK,1 + CALL WORD-PRINT,?TMP1,STACK + RSTACK + + + .FUNCT PREP-PRINT,PREP,WRD + ZERO? PREP /FALSE + PRINTC 32 + CALL PREP-FIND,PREP >WRD + PRINTB WRD + RTRUE + + + .FUNCT CLAUSE-COPY,BPTR,EPTR,INSRT=0,BEG,END + GET P-CCSRC,BPTR >BEG + GET P-CCSRC,EPTR >END + GET P-OCLAUSE,P-MATCHLEN + MUL STACK,P-LEXELEN + ADD STACK,2 + ADD P-OCLAUSE,STACK + PUT P-OTBL,BPTR,STACK +?PRG1: EQUAL? BEG,END \?CCL5 + GET P-OCLAUSE,P-MATCHLEN + MUL STACK,P-LEXELEN + ADD STACK,2 + ADD P-OCLAUSE,STACK + PUT P-OTBL,EPTR,STACK + RTRUE +?CCL5: ZERO? INSRT /?CND6 + GET BEG,0 + EQUAL? P-ANAM,STACK \?CND6 + CALL CLAUSE-ADD,INSRT +?CND6: GET BEG,0 + CALL CLAUSE-ADD,STACK + ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT CLAUSE-ADD,WRD,PTR + GET P-OCLAUSE,P-MATCHLEN + ADD STACK,2 >PTR + SUB PTR,1 + PUT P-OCLAUSE,STACK,WRD + PUT P-OCLAUSE,PTR,0 + PUT P-OCLAUSE,P-MATCHLEN,PTR + RTRUE + + + .FUNCT PREP-FIND,PREP,CNT=0,SIZE + GET PREPOSITIONS,0 + MUL STACK,2 >SIZE +?PRG1: IGRTR? 'CNT,SIZE /FALSE + GET PREPOSITIONS,CNT + EQUAL? STACK,PREP \?PRG1 + SUB CNT,1 + GET PREPOSITIONS,STACK + RSTACK + + + .FUNCT SYNTAX-FOUND,SYN + SET 'P-SYNTAX,SYN + GETB SYN,P-SACTION >PRSA + RETURN PRSA + + + .FUNCT GWIM,GBIT,LBIT,PREP,OBJ + EQUAL? GBIT,RMUNGBIT \?CND1 + RETURN ROOMS +?CND1: SET 'P-GWIMBIT,GBIT + SET 'P-SLOCBITS,LBIT + PUT P-MERGE,P-MATCHLEN,0 + CALL GET-OBJECT,P-MERGE,FALSE-VALUE + ZERO? STACK /?CCL5 + SET 'P-GWIMBIT,0 + GET P-MERGE,P-MATCHLEN + EQUAL? STACK,1 \FALSE + GET P-MERGE,1 >OBJ + FSET? OBJ,VEHBIT \?CND9 + EQUAL? PREP,PR?DOWN \?CND9 + SET 'PREP,PR?ON +?CND9: PRINTC 40 + ZERO? PREP /?CND13 + CALL PREP-FIND,PREP + PRINTB STACK + PRINTI " the " +?CND13: PRINTD OBJ + PRINTC 41 + CRLF + RETURN OBJ +?CCL5: SET 'P-GWIMBIT,0 + RFALSE + + + .FUNCT SNARF-OBJECTS,PTR + GET P-ITBL,P-NC1 >PTR + ZERO? PTR /?CND1 + GETB P-SYNTAX,P-SLOC1 >P-SLOCBITS + GET P-ITBL,P-NC1L + CALL SNARFEM,PTR,STACK,P-PRSO + ZERO? STACK /FALSE + GET P-BUTS,P-MATCHLEN + ZERO? STACK /?CND1 + CALL BUT-MERGE,P-PRSO >P-PRSO +?CND1: GET P-ITBL,P-NC2 >PTR + ZERO? PTR /TRUE + GETB P-SYNTAX,P-SLOC2 >P-SLOCBITS + GET P-ITBL,P-NC2L + CALL SNARFEM,PTR,STACK,P-PRSI + ZERO? STACK /FALSE + GET P-BUTS,P-MATCHLEN + ZERO? STACK /TRUE + GET P-PRSI,P-MATCHLEN + EQUAL? STACK,1 \?CCL15 + CALL BUT-MERGE,P-PRSO >P-PRSO + RTRUE +?CCL15: CALL BUT-MERGE,P-PRSI >P-PRSI + RTRUE + + + .FUNCT BUT-MERGE,TBL,LEN,BUTLEN,CNT=1,MATCHES=0,OBJ,NTBL + GET TBL,P-MATCHLEN >LEN + PUT P-MERGE,P-MATCHLEN,0 +?PRG1: DLESS? 'LEN,0 /?REP2 + GET TBL,CNT >OBJ + CALL ZMEMQ,OBJ,P-BUTS + ZERO? STACK \?CND3 + ADD MATCHES,1 + PUT P-MERGE,STACK,OBJ + INC 'MATCHES +?CND3: INC 'CNT + JUMP ?PRG1 +?REP2: PUT P-MERGE,P-MATCHLEN,MATCHES + SET 'NTBL,P-MERGE + SET 'P-MERGE,TBL + RETURN NTBL + + + .FUNCT SNARFEM,PTR,EPTR,TBL,BUT=0,LEN,WV,WORD,NW + SET 'P-AND,FALSE-VALUE + SET 'P-GETFLAGS,0 + SET 'P-CSPTR,PTR + SET 'P-CEPTR,EPTR + PUT P-BUTS,P-MATCHLEN,0 + PUT TBL,P-MATCHLEN,0 + GET PTR,0 >WORD +?PRG1: EQUAL? PTR,EPTR \?CCL5 + ZERO? BUT /?PRD8 + PUSH BUT + JUMP ?PEN6 +?PRD8: PUSH TBL +?PEN6: CALL GET-OBJECT,STACK + RSTACK +?CCL5: GET PTR,P-LEXELEN >NW + EQUAL? WORD,W?ALL,W?BOTH \?CCL11 + SET 'P-GETFLAGS,P-ALL + EQUAL? NW,W?OF \?CND3 + ADD PTR,P-WORDLEN >PTR + JUMP ?CND3 +?CCL11: EQUAL? WORD,W?BUT,W?EXCEPT \?CCL15 + ZERO? BUT /?PRD20 + PUSH BUT + JUMP ?PEN18 +?PRD20: PUSH TBL +?PEN18: CALL GET-OBJECT,STACK + ZERO? STACK /FALSE + SET 'BUT,P-BUTS + PUT BUT,P-MATCHLEN,0 + JUMP ?CND3 +?CCL15: EQUAL? WORD,W?A,W?ONE \?CCL22 + ZERO? P-ADJ \?CCL25 + SET 'P-GETFLAGS,P-ONE + EQUAL? NW,W?OF \?CND3 + ADD PTR,P-WORDLEN >PTR + JUMP ?CND3 +?CCL25: SET 'P-NAM,P-ONEOBJ + ZERO? BUT /?PRD32 + PUSH BUT + JUMP ?PEN30 +?PRD32: PUSH TBL +?PEN30: CALL GET-OBJECT,STACK + ZERO? STACK /FALSE + ZERO? NW \?CND3 + RTRUE +?CCL22: EQUAL? WORD,W?AND,W?COMMA \?CCL36 + EQUAL? NW,W?AND,W?COMMA /?CCL36 + SET 'P-AND,TRUE-VALUE + ZERO? BUT /?PRD43 + PUSH BUT + JUMP ?PEN41 +?PRD43: PUSH TBL +?PEN41: CALL GET-OBJECT,STACK + ZERO? STACK \?CND3 + RFALSE +?CCL36: CALL WT?,WORD,8 + ZERO? STACK /?CCL45 + EQUAL? PTR,P-CSPTR \?CCL45 + ADD P-CSPTR,P-WORDLEN >P-CSPTR + JUMP ?CND3 +?CCL45: CALL WT?,WORD,4 + ZERO? STACK \?CND3 + EQUAL? WORD,W?AND,W?COMMA /?CND3 + EQUAL? WORD,W?OF \?CCL51 + ZERO? P-GETFLAGS \?CND3 + SET 'P-GETFLAGS,P-INHIBIT + JUMP ?CND3 +?CCL51: CALL WT?,WORD,32,2 >WV + ZERO? WV /?CCL55 + CALL ADJ-CHECK + ZERO? STACK /?CCL55 + SET 'P-ADJ,WV + SET 'P-ADJN,WORD + SET 'P-ADJECTIVE,WORD + JUMP ?CND3 +?CCL55: CALL WT?,WORD,128,0 + ZERO? STACK /?CND3 + SET 'P-NAM,WORD + SET 'P-ONEOBJ,WORD +?CND3: EQUAL? PTR,EPTR /?PRG1 + ADD PTR,P-WORDLEN >PTR + SET 'WORD,NW + JUMP ?PRG1 + + + .FUNCT ADJ-CHECK + ZERO? P-ADJ /TRUE + EQUAL? P-ADJ,A?FIRST,A?SECOND,A?THIRD /FALSE + EQUAL? P-ADJ,A?FOURTH,A?OLD,A?NEW /FALSE + EQUAL? P-ADJ,A?SEND,A?RECEIVE,A?KITCHEN /FALSE + EQUAL? P-ADJ,A?UPPER,A?LOWER,A?SHUTTL /FALSE + EQUAL? P-ADJ,A?ELEVATOR /FALSE + EQUAL? P-ADJ,A?SQUARE,A?ROUND,A?GOOD /FALSE + EQUAL? P-ADJ,A?SHINY,A?CRACKED,A?FRIED /FALSE + EQUAL? P-ADJ,A?TELEPO,A?MINI,A?MINIAT /FALSE + RTRUE + + + .FUNCT GET-OBJECT,TBL,VRB=1,BITS,LEN,XBITS,TLEN,GCHECK=0,OLEN=0,OBJ + SET 'XBITS,P-SLOCBITS + GET TBL,P-MATCHLEN >TLEN + BTST P-GETFLAGS,P-INHIBIT /TRUE + ZERO? P-NAM \?CND3 + ZERO? P-ADJ /?CND3 + CALL WT?,P-ADJN,128,0 + ZERO? STACK /?CND3 + SET 'P-NAM,P-ADJN + SET 'P-ADJ,FALSE-VALUE +?CND3: ZERO? P-NAM \?CND8 + ZERO? P-ADJ \?CND8 + EQUAL? P-GETFLAGS,P-ALL /?CND8 + ZERO? P-GWIMBIT \?CND8 + ZERO? VRB /FALSE + PRINTI "I couldn't find a noun in that sentence!" + CRLF + RFALSE +?CND8: EQUAL? P-GETFLAGS,P-ALL \?CCL17 + ZERO? P-SLOCBITS \?CND16 +?CCL17: SET 'P-SLOCBITS,-1 +?CND16: SET 'P-TABLE,TBL +?PRG20: ZERO? GCHECK /?CCL24 + CALL GLOBAL-CHECK,TBL + JUMP ?CND22 +?CCL24: ZERO? LIT /?CND25 + EQUAL? WINNER,ADVENTURER /?CND27 + FCLEAR WINNER,OPENBIT +?CND27: CALL DO-SL,HERE,SOG,SIR + EQUAL? WINNER,ADVENTURER /?CND25 + FSET WINNER,OPENBIT +?CND25: CALL DO-SL,WINNER,SH,SC + EQUAL? WINNER,ADVENTURER /?CND22 + EQUAL? P-GETFLAGS,P-ALL /?CND22 + CALL DO-SL,ADVENTURER,SH,SC +?CND22: GET TBL,P-MATCHLEN + SUB STACK,TLEN >LEN + BTST P-GETFLAGS,P-ALL /?CND35 + BTST P-GETFLAGS,P-ONE \?CCL38 + ZERO? LEN /?CCL38 + EQUAL? LEN,1 /?CND41 + RANDOM LEN + GET TBL,STACK + PUT TBL,1,STACK + PRINTI "(How about the " + GET TBL,1 + PRINTD STACK + PRINTI "?)" + CRLF +?CND41: PUT TBL,P-MATCHLEN,1 +?CND35: SET 'P-SLOCBITS,XBITS + SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RTRUE +?CCL38: GRTR? LEN,1 /?CTR43 + ZERO? LEN \?CCL44 + EQUAL? P-SLOCBITS,-1 /?CCL44 +?CTR43: EQUAL? P-SLOCBITS,-1 \?CCL51 + SET 'P-SLOCBITS,XBITS + SET 'OLEN,LEN + GET TBL,P-MATCHLEN + SUB STACK,LEN + PUT TBL,P-MATCHLEN,STACK + JUMP ?PRG20 +?CCL51: ZERO? LEN \?CND52 + SET 'LEN,OLEN +?CND52: EQUAL? WINNER,ADVENTURER /?CCL56 + CALL CANT-ORPHAN + RFALSE +?CCL56: ZERO? VRB /?CCL58 + ZERO? P-NAM /?CCL58 + CALL WHICH-PRINT,TLEN,LEN,TBL + EQUAL? TBL,P-PRSO \?CCL63 + SET 'P-ACLAUSE,P-NC1 + JUMP ?CND61 +?CCL63: SET 'P-ACLAUSE,P-NC2 +?CND61: SET 'P-AADJ,P-ADJ + SET 'P-ANAM,P-NAM + CALL ORPHAN,FALSE-VALUE,FALSE-VALUE + SET 'P-OFLAG,TRUE-VALUE + JUMP ?CND54 +?CCL58: ZERO? VRB /?CND54 + PRINTI "I couldn't find a noun in that sentence!" + CRLF +?CND54: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RFALSE +?CCL44: ZERO? LEN \?CCL66 + ZERO? GCHECK /?CCL66 + ZERO? VRB /?CND69 + SET 'P-SLOCBITS,XBITS + ZERO? LIT \?CTR72 + EQUAL? P-NAM,W?GRUE \?CCL73 +?CTR72: CALL OBJ-FOUND,NOT-HERE-OBJECT,TBL + SET 'P-XNAM,P-NAM + SET 'P-XADJ,P-ADJ + SET 'P-XADJN,P-ADJN + SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + SET 'P-ADJN,FALSE-VALUE + RTRUE +?CCL73: PRINTI "It's too dark to see!" + CRLF +?CND69: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RFALSE +?CCL66: ZERO? LEN \?CND35 + SET 'GCHECK,TRUE-VALUE + JUMP ?PRG20 + + + .FUNCT MOBY-FIND,TBL,FOO,LEN + SET 'P-SLOCBITS,-1 + SET 'P-NAM,P-XNAM + SET 'P-ADJ,P-XADJ + PUT TBL,P-MATCHLEN,0 + FIRST? ROOMS >FOO /?PRG2 +?PRG2: ZERO? FOO /?REP3 + CALL SEARCH-LIST,FOO,TBL,P-SRCALL + NEXT? FOO >FOO /?PRG2 + JUMP ?PRG2 +?REP3: GET TBL,P-MATCHLEN >LEN + ZERO? LEN \?CND8 + CALL DO-SL,LOCAL-GLOBALS,1,1 +?CND8: GET TBL,P-MATCHLEN >LEN + ZERO? LEN \?CND10 + CALL DO-SL,ROOMS,1,1 +?CND10: GET TBL,P-MATCHLEN >LEN + EQUAL? LEN,1 \?CND12 + GET TBL,1 >P-MOBY-FOUND +?CND12: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RETURN LEN + + + .FUNCT WHICH-PRINT,TLEN,LEN,TBL,OBJ,RLEN + SET 'RLEN,LEN + PRINTI "Which" + ZERO? P-OFLAG \?CTR2 + ZERO? P-MERGED \?CTR2 + ZERO? P-AND /?CCL3 +?CTR2: PRINTC 32 + PRINTB P-NAM + JUMP ?CND1 +?CCL3: EQUAL? TBL,P-PRSO \?CCL8 + CALL CLAUSE-PRINT,P-NC1,P-NC1L,FALSE-VALUE + JUMP ?CND1 +?CCL8: CALL CLAUSE-PRINT,P-NC2,P-NC2L,FALSE-VALUE +?CND1: PRINTI " do you mean, " +?PRG9: INC 'TLEN + GET TBL,TLEN >OBJ + PRINTI "the " + PRINTD OBJ + EQUAL? LEN,2 \?CCL13 + EQUAL? RLEN,2 /?CND14 + PRINTC 44 +?CND14: PRINTI " or " + JUMP ?CND11 +?CCL13: GRTR? LEN,2 \?CND11 + PRINTI ", " +?CND11: DLESS? 'LEN,1 \?PRG9 + PRINTR "?" + + + .FUNCT GLOBAL-CHECK,TBL,LEN,RMG,RMGL,CNT=0,OBJ,OBITS,FOO + GET TBL,P-MATCHLEN >LEN + SET 'OBITS,P-SLOCBITS + GETPT HERE,P?GLOBAL >RMG + ZERO? RMG /?CND1 + PTSIZE RMG + SUB STACK,1 >RMGL +?PRG3: GETB RMG,CNT >OBJ + CALL THIS-IT?,OBJ,TBL + ZERO? STACK /?CND5 + CALL OBJ-FOUND,OBJ,TBL +?CND5: IGRTR? 'CNT,RMGL \?PRG3 +?CND1: GETPT HERE,P?PSEUDO >RMG + ZERO? RMG /?CND9 + PTSIZE RMG + DIV STACK,4 + SUB STACK,1 >RMGL + SET 'CNT,0 +?PRG11: MUL CNT,2 + GET RMG,STACK + EQUAL? P-NAM,STACK \?CCL15 + SET 'LAST-PSEUDO-LOC,HERE + MUL CNT,2 + ADD STACK,1 + GET RMG,STACK + PUTP PSEUDO-OBJECT,P?ACTION,STACK + GETPT PSEUDO-OBJECT,P?ACTION + SUB STACK,5 >FOO + GET P-NAM,0 + PUT FOO,0,STACK + GET P-NAM,1 + PUT FOO,1,STACK + CALL OBJ-FOUND,PSEUDO-OBJECT,TBL + JUMP ?CND9 +?CCL15: IGRTR? 'CNT,RMGL \?PRG11 +?CND9: GET TBL,P-MATCHLEN + EQUAL? STACK,LEN \FALSE + SET 'P-SLOCBITS,-1 + SET 'P-TABLE,TBL + CALL DO-SL,GLOBAL-OBJECTS,1,1 + SET 'P-SLOCBITS,OBITS + GET TBL,P-MATCHLEN + ZERO? STACK \FALSE + EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH /?CCL25 + EQUAL? PRSA,V?EXAMINE,V?FIND,V?THROUGH \FALSE +?CCL25: CALL DO-SL,ROOMS,1,1 + RSTACK + + + .FUNCT DO-SL,OBJ,BIT1,BIT2 + ADD BIT1,BIT2 + BTST P-SLOCBITS,STACK \?CCL3 + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCALL + RSTACK +?CCL3: BTST P-SLOCBITS,BIT1 \?CCL6 + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCTOP + RSTACK +?CCL6: BTST P-SLOCBITS,BIT2 \TRUE + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCBOT + RSTACK + + + .FUNCT SEARCH-LIST,OBJ,TBL,LVL,FLS,NOBJ + FIRST? OBJ >OBJ \FALSE +?PRG4: EQUAL? LVL,P-SRCBOT /?CND6 + GETPT OBJ,P?SYNONYM + ZERO? STACK /?CND6 + CALL THIS-IT?,OBJ,TBL + ZERO? STACK /?CND6 + CALL OBJ-FOUND,OBJ,TBL +?CND6: FSET? OBJ,INVISIBLE /?CND11 + ZERO? LVL \?PRD15 + FSET? OBJ,SEARCHBIT /?PRD15 + FSET? OBJ,SURFACEBIT \?CND11 +?PRD15: FIRST? OBJ >NOBJ \?CND11 + FSET? OBJ,OPENBIT /?CCL12 + FSET? OBJ,TRANSBIT \?CND11 +?CCL12: ZERO? LVL \?CCL24 + FSET? OBJ,SEARCHBIT \?CCL24 + EQUAL? P-GETFLAGS,P-ALL /?CND11 +?CCL24: FSET? OBJ,SURFACEBIT \?CCL30 + PUSH P-SRCALL + JUMP ?CND28 +?CCL30: FSET? OBJ,SEARCHBIT \?CCL32 + PUSH P-SRCALL + JUMP ?CND28 +?CCL32: PUSH P-SRCTOP +?CND28: CALL SEARCH-LIST,OBJ,TBL,STACK >FLS +?CND11: NEXT? OBJ >OBJ /?PRG4 + RTRUE + + + .FUNCT OBJ-FOUND,OBJ,TBL,PTR + GET TBL,P-MATCHLEN >PTR + ADD PTR,1 + PUT TBL,STACK,OBJ + ADD PTR,1 + PUT TBL,P-MATCHLEN,STACK + RTRUE + + + .FUNCT TAKE-CHECK + GETB P-SYNTAX,P-SLOC1 + CALL ITAKE-CHECK,P-PRSO,STACK + ZERO? STACK /FALSE + GETB P-SYNTAX,P-SLOC2 + CALL ITAKE-CHECK,P-PRSI,STACK + RSTACK + + + .FUNCT ITAKE-CHECK,TBL,IBITS,PTR,OBJ,TAKEN + GET TBL,P-MATCHLEN >PTR + ZERO? PTR /TRUE + BTST IBITS,SHAVE /?PRG8 + BTST IBITS,STAKE \TRUE +?PRG8: DLESS? 'PTR,0 /TRUE + ADD PTR,1 + GET TBL,STACK >OBJ + EQUAL? OBJ,IT \?CND13 + SET 'OBJ,P-IT-OBJECT +?CND13: CALL HELD?,OBJ + ZERO? STACK \?PRG8 + EQUAL? OBJ,HANDS /?PRG8 + SET 'PRSO,OBJ + FSET? OBJ,TRYTAKEBIT \?CCL21 + SET 'TAKEN,TRUE-VALUE + JUMP ?CND19 +?CCL21: EQUAL? WINNER,ADVENTURER /?CCL23 + SET 'TAKEN,FALSE-VALUE + JUMP ?CND19 +?CCL23: BTST IBITS,STAKE \?CCL25 + CALL ITAKE,FALSE-VALUE + EQUAL? STACK,TRUE-VALUE \?CCL25 + SET 'TAKEN,FALSE-VALUE + JUMP ?CND19 +?CCL25: SET 'TAKEN,TRUE-VALUE +?CND19: ZERO? TAKEN /?CCL30 + BTST IBITS,SHAVE \?CCL30 + EQUAL? OBJ,NOT-HERE-OBJECT \?CND33 + PRINTI "You don't have that!" + CRLF + RFALSE +?CND33: PRINTI "You don't have the " + PRINTD OBJ + PRINTC 46 + CRLF + CALL THIS-IS-IT,OBJ + RFALSE +?CCL30: ZERO? TAKEN \?PRG8 + EQUAL? WINNER,ADVENTURER \?PRG8 + PRINTI "(Taking the " + PRINTD OBJ + PRINTI " first)" + CRLF + JUMP ?PRG8 + + + .FUNCT HERE?,CAN +?PRG1: LOC CAN >CAN + ZERO? CAN /?REP2 + EQUAL? CAN,HERE \?PRG1 + RTRUE +?REP2: CALL GLOBAL-IN?,CAN,HERE + ZERO? STACK \TRUE + EQUAL? CAN,PSEUDO-OBJECT /TRUE + RFALSE + + + .FUNCT HELD?,CAN +?PRG1: LOC CAN >CAN + ZERO? CAN /FALSE + EQUAL? CAN,WINNER \?PRG1 + RTRUE + + + .FUNCT MANY-CHECK,LOSS=0,TMP,?TMP1 + GET P-PRSO,P-MATCHLEN + GRTR? STACK,1 \?CCL3 + GETB P-SYNTAX,P-SLOC1 + BTST STACK,SMANY /?CCL3 + SET 'LOSS,1 + JUMP ?CND1 +?CCL3: GET P-PRSI,P-MATCHLEN + GRTR? STACK,1 \?CND1 + GETB P-SYNTAX,P-SLOC2 + BTST STACK,SMANY /?CND1 + SET 'LOSS,2 +?CND1: ZERO? LOSS /TRUE + PRINTI "I can't use multiple " + EQUAL? LOSS,2 \?CND12 + PRINTI "in" +?CND12: PRINTI "direct objects with """ + GET P-ITBL,P-VERBN >TMP + ZERO? TMP \?CCL16 + PRINTI "tell" + JUMP ?CND14 +?CCL16: ZERO? P-OFLAG \?CTR17 + ZERO? P-MERGED /?CCL18 +?CTR17: GET TMP,0 + PRINTB STACK + JUMP ?CND14 +?CCL18: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK +?CND14: PRINTI ".""" + CRLF + RFALSE + + + .FUNCT ZMEMQ,ITM,TBL,SIZE=-1,CNT=1 + ZERO? TBL /FALSE + LESS? SIZE,0 /?CCL5 + SET 'CNT,0 + JUMP ?PRG6 +?CCL5: GET TBL,0 >SIZE +?PRG6: GET TBL,CNT + EQUAL? ITM,STACK /TRUE + IGRTR? 'CNT,SIZE \?PRG6 + RFALSE + + + .FUNCT ZMEMQB,ITM,TBL,SIZE,CNT=0 +?PRG1: GETB TBL,CNT + EQUAL? ITM,STACK /TRUE + IGRTR? 'CNT,SIZE \?PRG1 + RFALSE + + + .FUNCT LIT?,RM,OHERE,LIT=0 + SET 'P-GWIMBIT,ONBIT + SET 'OHERE,HERE + SET 'HERE,RM + FSET? RM,ONBIT \?CCL3 + SET 'LIT,TRUE-VALUE + JUMP ?CND1 +?CCL3: PUT P-MERGE,P-MATCHLEN,0 + SET 'P-TABLE,P-MERGE + SET 'P-SLOCBITS,-1 + EQUAL? OHERE,RM \?CND4 + CALL DO-SL,WINNER,1,1 +?CND4: CALL DO-SL,RM,1,1 + GET P-TABLE,P-MATCHLEN + GRTR? STACK,0 \?CND1 + SET 'LIT,TRUE-VALUE +?CND1: SET 'HERE,OHERE + SET 'P-GWIMBIT,0 + RETURN LIT + + + .FUNCT PRSO-PRINT,PTR + ZERO? P-MERGED \?CTR2 + GET P-ITBL,P-NC1 >PTR + GET PTR,0 + EQUAL? STACK,W?IT \?CCL3 +?CTR2: PRINTC 32 + PRINTD PRSO + RTRUE +?CCL3: GET P-ITBL,P-NC1L + CALL BUFFER-PRINT,PTR,STACK,FALSE-VALUE + RSTACK + + + .FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1 + FSET? OBJ,INVISIBLE /FALSE + ZERO? P-NAM /?CCL5 + GETPT OBJ,P?SYNONYM >SYNS + PTSIZE SYNS + DIV STACK,2 + SUB STACK,1 + CALL ZMEMQ,P-NAM,SYNS,STACK + ZERO? STACK /FALSE +?CCL5: ZERO? P-ADJ /?CCL9 + GETPT OBJ,P?ADJECTIVE >SYNS + ZERO? SYNS /FALSE + PTSIZE SYNS + SUB STACK,1 + CALL ZMEMQB,P-ADJ,SYNS,STACK + ZERO? STACK /FALSE +?CCL9: ZERO? P-GWIMBIT /TRUE + FSET? OBJ,P-GWIMBIT /TRUE + RFALSE + + .ENDI diff --git a/parser.zil b/parser.zil index 599eb65..145d256 100644 --- a/parser.zil +++ b/parser.zil @@ -7,8 +7,6 @@ begin with 'P-'. Local variables are not restricted in any way." -;> - @@ -241,7 +239,7 @@ begin with 'P-'. Local variables are not restricted in any way." > - >> + ;>> <==? > @@ -309,6 +307,7 @@ or creatures." CR> > .BIT> ) + ( 1) (T > > >)> @@ -1235,15 +1234,6 @@ or creatures." CR> (T <>>)>> -;> 0> ,W?IT>> - ) - (T - <>>)>> - -;"former CRUFTY.ZIL routine, re-written by SWG" - ) ()) + ;> + ;)> + ;> )> + >> + > + ) + (>> + > + ) + (<==? .TICK -1> + > + )>) + (T + >> + > + + > + )>)>)>)> + >>> \ No newline at end of file diff --git a/planetfall.errors b/planetfall.errors new file mode 100644 index 0000000..13be664 --- /dev/null +++ b/planetfall.errors @@ -0,0 +1,22 @@ +Assembling PLANETFALL.ZAP.3 on Sunday, May 1, 1988 13:37:01 +Release: 39 + + 64 Inserting PLANETFALLFREQ.XZAP.1 (648 bytes) + 712 Inserting PLANETFALLDAT.ZAP.3 (21209 bytes) + 21921 Inserting PLANETFALLPUR.ZAP.2 (184 bytes) + 22105 Inserting MISC.ZAP.4 (1675 bytes) + 23780 Inserting GLOBALS.ZAP.3 (18243 bytes) + 42023 Inserting PARSER.ZAP.3 (5401 bytes) + 47424 Inserting VERBS.ZAP.3 (10683 bytes) + 58107 Inserting COMPONE.ZAP.3 (15047 bytes) + 73154 Inserting COMPTWO.ZAP.3 (15446 bytes) + 88600 Inserting PLANETFALLSTR.ZAP.3 (20682 bytes) +255 objects. +231 globals. +668 word vocabulary. + +109282 bytes (107K). + 21921 bytes of preload. + 14284 bytes of impure. + +Outputting symbol tables diff --git a/planetfall.record b/planetfall.record new file mode 100644 index 0000000..0146a64 --- /dev/null +++ b/planetfall.record @@ -0,0 +1,732 @@ + +Combined ZIL Compiler Ver 2.0 (MIM) +----------------------------------- + +Incremental compilation disabled, because top-level ZIL file changed. + +Input file: SS:PLANETFALL.ZIL.36 +[ZIP instructions] + +Loading SS:SYNTAX.ZIL.213 and compiling it. +Loading SS:MISC.ZIL.66 and compiling it. +Compiling routine: PICK-ONE +Compiling routine: GO +Compiling routine: I-RANDOM-INTERRUPTS +Compiling routine: MAIN-LOOP +Compiling routine: TIMELESS-VERB? +Compiling routine: PERFORM +Compiling routine: META-LOC +Compiling routine: QUEUE +Compiling routine: INT +Compiling routine: CLOCKER +Compiling routine: NULL-F +Abstracting SS:MISC. +Loading SS:GLOBALS.ZIL.748 and compiling it. +Compiling routine: GROUND-F +Compiling routine: WINDOW-F +Compiling routine: CLIFF-F +Compiling routine: OCEAN-F +Compiling routine: TABLES-F +Compiling routine: SHELVES-F +Compiling routine: LIGHTS-F +Compiling routine: GLOBAL-DOORWAY-F +Compiling routine: USE-DIRECTIONS +Compiling routine: NO-CLOSE +Compiling routine: CONTROLS-F +Compiling routine: GLOBAL-GAMES-F +Compiling routine: HANDS-F +Compiling routine: SLEEP-F +Compiling routine: CRETIN-F +Compiling routine: DDESC +Compiling routine: ALREADY-OPEN +Compiling routine: IS-CLOSED +Compiling routine: V-THROUGH +Compiling routine: FIND-IN +Compiling routine: NOT-HERE-OBJECT-F +Compiling routine: FIND-NOT-HERE +Compiling routine: NOT-HERE-PRINT +Compiling routine: DECK-NINE-F +Compiling routine: CHRONOMETER-F +Compiling routine: TELL-TIME +Compiling routine: PATROL-UNIFORM-F +Compiling routine: GANGWAY-F +Compiling routine: I-BLATHER +Compiling routine: BLATHER-F +Compiling routine: CELERY-F +Compiling routine: I-AMBASSADOR +Compiling routine: AMBASSADOR-F +Compiling routine: GLOBAL-POD-F +Compiling routine: POD-EXIT-F +Compiling routine: SAFETY-WEB-F +Compiling routine: TOWEL-F +Compiling routine: FOOD-KIT-F +Compiling routine: GOO-F +Compiling routine: ESCAPE-POD-F +Compiling routine: POD-DOOR-F +Compiling routine: GANGWAY-DOOR-F +Compiling routine: I-BLOWUP-FEINSTEIN +Compiling routine: I-POD-TRIP +Compiling routine: I-SINK-POD +Compiling routine: SLOT-F +Compiling routine: FLOYD-REVEAL-CARD-F +Compiling routine: I-KITCHEN-DOOR-CLOSES +Compiling routine: TELEPORT +Compiling routine: TELEPORTATION-BUTTON-1-F +Compiling routine: TELEPORTATION-BUTTON-2-F +Compiling routine: TELEPORTATION-BUTTON-3-F +Compiling routine: I-TURNOFF-TELEPORTATION +Compiling routine: GLOBAL-SHUTTLE-F +Compiling routine: SHUTTLE-CAR-F +Compiling routine: CONTROL-CABIN-F +Compiling routine: DESCRIBE-VIEW +Compiling routine: SHUTTLE-DOOR-F +Compiling routine: SHUTTLE-ENTER-F +Compiling routine: SHUTTLE-EXIT-F +Compiling routine: SHUTTLE-ACTIVATE +Compiling routine: I-TURNOFF-SHUTTLE +Compiling routine: LEVER-F +Compiling routine: I-SHUTTLE +Compiling routine: DESCRIBE-SHUTTLE-TRIP +Compiling routine: DESCRIBE-SHUTTLE-ARRIVE +Compiling routine: I-SLEEP-WARNINGS +Compiling routine: BED-F +Compiling routine: I-FALL-ASLEEP +Compiling routine: DREAMING +Compiling routine: WAKING-UP +Compiling routine: RESET-TIME +Compiling routine: I-HUNGER-WARNINGS +Compiling routine: I-SICKNESS-WARNINGS +Compiling routine: TRANSLATOR-PSEUDO +Compiling routine: SLIME-PSEUDO +Compiling routine: LIKE-SLIME +Compiling routine: GRAFFITI-PSEUDO +Compiling routine: DOOR-PSEUDO +Compiling routine: WALKWAY-PSEUDO +Compiling routine: BENCH-PSEUDO +Compiling routine: CATWALK-PSEUDO +Compiling routine: EQUIPMENT-PSEUDO +Compiling routine: MONITORS-PSEUDO +Compiling routine: MURAL-PSEUDO +Compiling routine: LOGO-PSEUDO +Compiling routine: KEYBOARD-PSEUDO +Compiling routine: CRACK-PSEUDO +Compiling routine: VOID-PSEUDO +Compiling routine: SPOUT-PSEUDO +Compiling routine: TOILET-PSEUDO +Compiling routine: GAMES-PSEUDO +Compiling routine: TAPES-PSEUDO +Compiling routine: PARTITION-PSEUDO +Compiling routine: CUBBYHOLE-PSEUDO +Compiling routine: MAPS-PSEUDO +Compiling routine: DEVICES-PSEUDO +Compiling routine: CABLES-PSEUDO +Compiling routine: STRUCTURE-PSEUDO +Compiling routine: BUTTON-PSEUDO +Compiling routine: CARPET-PSEUDO +Compiling routine: CABINETS-PSEUDO +Compiling routine: PLATE-PSEUDO +Compiling routine: ESCALATOR-PSEUDO +Compiling routine: REACTOR-BUTTON-PSEUDO +Compiling routine: SUPPLIES-PSEUDO +Compiling routine: DESK-PSEUDO +Compiling routine: CRYO-BUTTON-PSEUDO +Compiling routine: CASTLE-PSEUDO +Compiling routine: CHEM-SPOUT-PSEUDO +Compiling routine: CLEFT-PSEUDO +Compiling routine: RUBBLE-PSEUDO +Compiling routine: PLAQUE-PSEUDO +Compiling routine: FENCE-PSEUDO +Compiling routine: LOCK-PSEUDO +Compiling routine: DIAGRAM-PSEUDO +Compiling routine: ENUNCIATOR-PSEUDO +Compiling routine: NEAR-BOOTH-PSEUDO +Compiling routine: IN-BOOTH-PSEUDO +Abstracting SS:GLOBALS. +Loading SS:PARSER.ZIL.103 and compiling it. +Compiling routine: PARSER +Compiling routine: WT? +Compiling routine: CLAUSE +Compiling routine: NUMBER? +Compiling routine: ORPHAN-MERGE +Compiling routine: ACLAUSE-WIN +Compiling routine: WORD-PRINT +Compiling routine: UNKNOWN-WORD +Compiling routine: CANT-USE +Compiling routine: SYNTAX-CHECK +Compiling routine: CANT-ORPHAN +Compiling routine: ORPHAN +Compiling routine: CLAUSE-PRINT +Compiling routine: BUFFER-PRINT +Compiling routine: CAPITALIZE +Compiling routine: PREP-PRINT +Compiling routine: CLAUSE-COPY +Compiling routine: CLAUSE-ADD +Compiling routine: PREP-FIND +Compiling routine: SYNTAX-FOUND +Compiling routine: GWIM +Compiling routine: SNARF-OBJECTS +Compiling routine: BUT-MERGE +Compiling routine: SNARFEM +Compiling routine: ADJ-CHECK +Compiling routine: GET-OBJECT +Compiling routine: MOBY-FIND +Compiling routine: WHICH-PRINT +Compiling routine: GLOBAL-CHECK +Compiling routine: DO-SL +Compiling routine: SEARCH-LIST +Compiling routine: OBJ-FOUND +Compiling routine: TAKE-CHECK +Compiling routine: ITAKE-CHECK +Compiling routine: HERE? +Compiling routine: HELD? +Compiling routine: MANY-CHECK +Compiling routine: ZMEMQ +Compiling routine: ZMEMQB +Compiling routine: LIT? +Compiling routine: PRSO-PRINT +Compiling routine: THIS-IT? +Abstracting SS:PARSER. +Loading SS:VERBS.ZIL.518 and compiling it. +Compiling routine: V-VERBOSE +Compiling routine: V-BRIEF +Compiling routine: V-SUPER-BRIEF +Compiling routine: V-LOOK +Compiling routine: V-LOOK-CRETIN +Compiling routine: V-FIRST-LOOK +Compiling routine: PRE-EXAMINE +Compiling routine: V-EXAMINE +Compiling routine: DESCRIBE-ROOM +Compiling routine: DESCRIBE-OBJECTS +Compiling routine: DESCRIBE-OBJECT +Compiling routine: PRINT-CONT +Compiling routine: FIRSTER +Compiling routine: SCORE-OBJ +Compiling routine: V-SCORE +Compiling routine: FINISH +Compiling routine: V-QUIT +Compiling routine: YES? +Compiling routine: V-VERSION +Compiling routine: V-AGAIN + ** Warning: Possible bad 1st arg to PERFORM: ,L-PRSA! +Compiling routine: JIGS-UP +Compiling routine: V-RESTORE +Compiling routine: V-SAVE +Compiling routine: V-RESTART +Compiling routine: V-WALK-AROUND +Compiling routine: V-WALK-TO +Compiling routine: V-WALK +Compiling routine: V-INVENTORY +Compiling routine: PRE-TAKE +Compiling routine: V-TAKE +Compiling routine: TRYTAKE +Compiling routine: ITAKE +Compiling routine: PRE-PUT +Compiling routine: V-PUT +Compiling routine: V-SLIDE +Compiling routine: PRE-GIVE +Compiling routine: PRE-SGIVE +Compiling routine: V-GIVE +Compiling routine: V-SGIVE +Compiling routine: V-DROP +Compiling routine: V-THROW +Compiling routine: IDROP +Compiling routine: V-OPEN +Compiling routine: V-OPEN-WITH +Compiling routine: PRINT-CONTENTS +Compiling routine: V-CLOSE +Compiling routine: CCOUNT +Compiling routine: WEIGHT +Compiling routine: V-SCRIPT +Compiling routine: V-UNSCRIPT +Compiling routine: PRE-MOVE +Compiling routine: V-MOVE +Compiling routine: V-LAMP-ON +Compiling routine: V-LAMP-OFF +Compiling routine: V-WAIT +Compiling routine: PRE-BOARD +Compiling routine: V-BOARD +Compiling routine: V-DISEMBARK +Compiling routine: OWN-FEET +Compiling routine: V-STAND +Compiling routine: GOTO +Compiling routine: V-EAT +Compiling routine: V-EAT-FROM +Compiling routine: V-CURSE +Compiling routine: V-LISTEN +Compiling routine: V-FOLLOW +Compiling routine: V-LEAP +Compiling routine: V-SKIP +Compiling routine: V-LEAVE +Compiling routine: V-HELLO +Compiling routine: V-HELP +Compiling routine: PRE-READ +Compiling routine: V-READ +Compiling routine: V-LOOK-UNDER +Compiling routine: V-LOOK-BEHIND +Compiling routine: V-LOOK-INSIDE +Compiling routine: SEE-INSIDE? +Compiling routine: V-LOOK-DOWN +Compiling routine: V-TURN +Compiling routine: V-LOCK +Compiling routine: V-UNLOCK +Compiling routine: V-ATTACK +Compiling routine: V-KICK +Compiling routine: V-WAVE +Compiling routine: V-RUB +Compiling routine: V-PUSH +Compiling routine: NO-BUTTON +Compiling routine: V-PUSH-UP +Compiling routine: V-PUSH-DOWN +Compiling routine: V-PULL +Compiling routine: V-MUNG +Compiling routine: HACK-HACK +Compiling routine: WORD-TYPE +Compiling routine: V-KNOCK +Compiling routine: V-YELL +Compiling routine: BATTERY-FALLS +Compiling routine: V-SHAKE +Compiling routine: V-SHAKE-WITH +Compiling routine: V-SMELL +Compiling routine: GLOBAL-IN? +Compiling routine: V-SWIM +Compiling routine: V-SWIM-DIR +Compiling routine: V-SWIM-UP +Compiling routine: V-ALARM +Compiling routine: V-ZORK +Compiling routine: V-SIT +Compiling routine: V-SIT-DOWN +Compiling routine: V-GO-UP +Compiling routine: V-CLIMB-ON +Compiling routine: V-CLIMB-FOO +Compiling routine: V-CLIMB-UP +Compiling routine: V-CLIMB-DOWN +Compiling routine: PRE-PUT-UNDER +Compiling routine: V-PUT-UNDER +Compiling routine: V-ENTER +Compiling routine: V-EXIT +Compiling routine: V-SEARCH +Compiling routine: V-FIND +Compiling routine: V-TELL +Compiling routine: V-ASK-FOR +Compiling routine: V-SAY +Compiling routine: V-TALK +Compiling routine: V-ANSWER +Compiling routine: V-REPLY +Compiling routine: V-KISS +Compiling routine: V-RAPE +Compiling routine: V-DIAGNOSE +Compiling routine: V-WEAR +Compiling routine: V-REMOVE +Compiling routine: V-TAKE-OFF +Compiling routine: V-STEP-ON +Compiling routine: V-PUT-ON +Compiling routine: V-NO +Compiling routine: V-YES +Compiling routine: V-MAYBE +Compiling routine: V-POINT +Compiling routine: V-SET +Compiling routine: V-$VERIFY +Compiling routine: V-$COMMAND +Compiling routine: V-$RANDOM +Compiling routine: V-$RECORD +Compiling routine: V-$UNRECORD +Compiling routine: V-STAND-ON +Compiling routine: V-REACH +Compiling routine: V-REACH-FOR +Compiling routine: DO-WALK +Compiling routine: V-FLUSH +Compiling routine: V-FLY +Compiling routine: V-SMILE +Compiling routine: V-SALUTE +Compiling routine: V-ATTRACT +Compiling routine: V-ZATTRACT +Compiling routine: V-SPAN +Compiling routine: NUMBERS-ONLY +Compiling routine: V-TYPE +Compiling routine: PRE-SZAP +Compiling routine: PRE-ZAP +Compiling routine: V-ZAP +Compiling routine: V-SZAP +Compiling routine: V-SCRUB +Compiling routine: V-POUR +Compiling routine: V-EMPTY +Compiling routine: V-THROW-OFF +Compiling routine: V-SLEEP +Compiling routine: V-FIX-IT +Compiling routine: V-OIL +Compiling routine: V-SHOW +Compiling routine: V-INSERT +Compiling routine: V-TASTE +Compiling routine: V-ZESCAPE +Compiling routine: V-TIME +Compiling routine: V-PLAY +Compiling routine: V-PLAY-WITH +Compiling routine: V-SCOLD +Compiling routine: ROB +Compiling routine: THIS-IS-IT +Compiling routine: ACCESSIBLE? +Compiling routine: VISIBLE? +Compiling routine: A-AN +Compiling routine: ALREADY +Compiling routine: NOT-HOLDING +Compiling routine: TAKE-IT-OFF +Compiling routine: ANYMORE +Compiling routine: FIXED-FONT-ON +Compiling routine: FIXED-FONT-OFF +Abstracting SS:VERBS. +Loading SS:COMPONE.ZIL.733 and compiling it. +Compiling routine: UNDERWATER-F +Compiling routine: CRAG-F +Compiling routine: BALCONY-F +Compiling routine: WINDING-STAIR-F +Compiling routine: COURTYARD-F +Compiling routine: WATER-LEVEL-F +Compiling routine: REC-AREA-F +Compiling routine: CONFERENCE-ROOM-F +Compiling routine: COMBINATION-DIAL-F +Compiling routine: CONFERENCE-DOOR-F +Compiling routine: MESS-CORRIDOR-F +Compiling routine: STORAGE-WEST-DOOR-F +Compiling routine: PADLOCK-F +Compiling routine: CAN-F +Compiling routine: LADDER-F +Compiling routine: MESS-HALL-F +Compiling routine: KITCHEN-DOOR-F +Compiling routine: DISPENSER-F +Compiling routine: HIGH-PROTEIN-F +Compiling routine: WORTHLESS-ACTION +Compiling routine: LONG-HALL-F +Compiling routine: ADMIN-CORRIDOR-S-F +Compiling routine: CREVICE-F +Compiling routine: KEY-F +Compiling routine: ADMIN-CORRIDOR-F +Compiling routine: ADMIN-CORRIDOR-N-F +Compiling routine: LADDER-EXIT-F +Compiling routine: RIFT-F +Compiling routine: SYSTEMS-MONITORS-F +Compiling routine: DESCRIBE-MONITORS +Compiling routine: DESK-F +Compiling routine: OIL-CAN-F +Compiling routine: CARTON-F +Compiling routine: CRACKED-BOARD-F +Compiling routine: GOOD-BEDISTOR-F +Compiling routine: REACTOR-ELEVATOR-DOOR-F +Compiling routine: I-REACTOR-DOOR-CLOSE +Compiling routine: FLASK-F +Compiling routine: MAGNET-F +Compiling routine: I-MAGNET +Compiling routine: MACHINE-SHOP-F +Compiling routine: CHEMICAL-DISPENSER-F +Compiling routine: CHEM-BUTTON-F +Compiling routine: FLOYD-F +Compiling routine: FLOYDS-FAMOUS-DOOR-ROUTINE +Compiling routine: FLUSH +Compiling routine: FLOYD-INTO-LAB +Compiling routine: FLOYD-NOT-HAVE +Compiling routine: FLOYD-COMES-ALIVE +Compiling routine: I-FLOYD +Compiling routine: CALL-ME-FLOYD +Compiling routine: KLUDGE +Compiling routine: DEAD-FLOYD-F +Compiling routine: ELEVATOR-LOBBY-F +Compiling routine: UPPER-ELEVATOR-F +Compiling routine: LOWER-ELEVATOR-F +Compiling routine: ELEVATOR-ENTER-F +Compiling routine: ELEVATOR-EXIT-F +Compiling routine: UPPER-ELEVATOR-DOOR-F +Compiling routine: LOWER-ELEVATOR-DOOR-F +Compiling routine: DOOR-CLOSED +Compiling routine: BLUE-ELEVATOR-BUTTON-F +Compiling routine: RED-ELEVATOR-BUTTON-F +Compiling routine: I-UPPER-ELEVATOR-ARRIVE +Compiling routine: I-LOWER-ELEVATOR-ARRIVE +Compiling routine: ELEVATOR-BUTTON-F +Compiling routine: I-TURNOFF-UPPER-ELEVATOR +Compiling routine: I-TURNOFF-LOWER-ELEVATOR +Compiling routine: I-UPPER-ELEVATOR-TRIP +Compiling routine: I-LOWER-ELEVATOR-TRIP +Compiling routine: ELEVATOR-DOOR-OPENS +Compiling routine: HELICOPTER-OBJECT-F +Compiling routine: COMM-ROOM-F +Compiling routine: I-UNENTER +Compiling routine: PLAYBACK-BUTTON-F +Compiling routine: RANDOMIZE-ORDER +Compiling routine: CHEMICAL-FLUID-F +Compiling routine: CUBE-SEEMS +Compiling routine: CHEMICAL-POURS +Compiling routine: STRIP-DISSOLVES +Compiling routine: SHUTDOWN +Compiling routine: COMM-SETUP +Compiling routine: OTHER-ELEVATOR-ENTER-F +Compiling routine: KALAMONTEE-PLATFORM-F +Abstracting SS:COMPONE. +Loading SS:COMPTWO.ZIL.732 and compiling it. +Compiling routine: LAWANDA-PLATFORM-F +Compiling routine: INFIRMARY-F +Compiling routine: RED-SPOOL-F +Compiling routine: MEDICINE-F +Compiling routine: ROBOT-HOLE-F +Compiling routine: FLOYD-THROUGH-HOLE +Compiling routine: GOOD-BOARD-F +Compiling routine: PLANETARY-DEFENSE-F +Compiling routine: ACCESS-PANEL-F +Compiling routine: FRIED-BOARD-F +Compiling routine: BOARD-F +Compiling routine: EXAMINE-BOARD +Compiling routine: PUT-BOARD +Compiling routine: BOARD-SHOCK +Compiling routine: PLANETARY-COURSE-CONTROL-F +Compiling routine: CUBE-F +Compiling routine: BAD-BEDISTOR-F +Compiling routine: GREEN-SPOOL-F +Compiling routine: TERMINAL-F +Compiling routine: LIBRARY-TYPE +Compiling routine: SPOOL-READER-F +Compiling routine: PROJCON-OFFICE-F +Compiling routine: CRYO-ELEVATOR-F +Compiling routine: CRYO-EXIT-F +Compiling routine: I-CRYO-ELEVATOR-ARRIVE +Compiling routine: CRYO-ANTEROOM-F +Compiling routine: COMPUTER-ACTION +Compiling routine: PRINT-OUT-F +Compiling routine: MINI-CARD-F +Compiling routine: LAB-UNIFORM-F +Compiling routine: COMBINATION-PAPER-F +Compiling routine: BIO-LOCK-EAST-F +Compiling routine: I-CLEAR-FLOYD-PEER +Compiling routine: BIO-DOOR-EAST-F +Compiling routine: I-BIO-EAST-CLOSES +Compiling routine: BIO-DOOR-WEST-F +Compiling routine: I-BIO-WEST-CLOSES +Compiling routine: RAD-DOOR-EAST-F +Compiling routine: RAD-DOOR-WEST-F +Compiling routine: I-FLOYD-FORAY +Compiling routine: MONSTER-DEATH +Compiling routine: BIO-LAB-F +Compiling routine: I-CHASE-SCENE +Compiling routine: RADIATION-LAB-F +Compiling routine: I-NUKED-BLUE +Compiling routine: LAMP-F +Compiling routine: LAB-OFFICE-F +Compiling routine: LAB-DESK-F +Compiling routine: LIGHT-BUTTON-F +Compiling routine: DARK-BUTTON-F +Compiling routine: FUNGICIDE-BUTTON-F +Compiling routine: I-UNFLOOD +Compiling routine: I-TURNOFF-MINI +Compiling routine: STATION-384-F +Compiling routine: I-ANNOUNCEMENT +Compiling routine: MIDDLE-OF-STRIP-F +Compiling routine: STRIP-NEAR-RELAY-F +Compiling routine: RELAY-EXIT-F +Compiling routine: RELAY-F +Compiling routine: LASER-DIAL-F +Compiling routine: ZAP-COUNT +Compiling routine: LASER-F +Compiling routine: ALREADY-BATTERY +Compiling routine: BATTERY-NOW +Compiling routine: I-WARMTH +Compiling routine: LASER-FEELS +Compiling routine: LASER-COOLS +Compiling routine: BEAM-COLOR +Compiling routine: SHOOT-SPECK +Compiling routine: I-FRY +Compiling routine: MICROBE-F +Compiling routine: I-MICROBE +Compiling routine: SHOOT-MICROBE +Compiling routine: STRIP-F +Compiling routine: GRUE-F +Abstracting SS:COMPTWO. + +Warnings: 1 + ** Note: OBJECT has no properties: ROOMS + ** Note: OBJECT has no properties: GLOBAL-OBJECTS +Vocabulary: 668 + +Prepositions: 18 + +ACROSS AROUND BEHIND FOR IN OFF OUT TO UP +AGAINST AT DOWN FROM NEAR ON OVER UNDER WITH + +Real globals: 224 + +11-TEXT FLOYD-SPOKE P-INBUF +12-TEXT FLOYD-WAITING P-IT-LOC +13-TEXT FLOYDISMS P-IT-OBJECT +21-TEXT FORAY-COUNTER P-ITBL +22-TEXT FUMBLE-NUMBER P-LEN +23-TEXT FUMBLE-PROB P-LEXV +31-TEXT GEOGRAPHY-MENU P-MATCHLEN +32-TEXT GREEN-TEXT P-MERGE +33-TEXT HELLOS P-MERGED +34-TEXT HISTORY-MENU P-MOBY-FOUND +35-TEXT HO-HUM P-NAM +41-TEXT HOLE-TRIP-FLAG P-NCN +42-TEXT HUNGER-LEVEL P-NUMBER +43-TEXT INDENTS P-OCLAUSE +51-TEXT INTERLOGIC-MENU P-OFLAG +52-TEXT INTERNAL-MOVES P-ONEOBJ +53-TEXT ITS-CRACKED P-OTBL +61-TEXT JUST-ENTERED P-PRSI +62-TEXT L-PRSA P-PRSO +63-TEXT L-PRSI P-SLOCBITS +ACCESS-PANEL-FULL L-PRSO P-SPACE +ACHILLES-FLAG LAB-FLOODED P-SYNTAX +ALFIE-AT-KALAMONTEE LAB-LIGHTS-ON P-TABLE +ALFIE-BROKEN LADDER-EXTENDED P-VTBL +AMBASSADOR-LEAVE LADDER-FLAG P-WALK-DIR +AMBASSADOR-QUOTES LASER-JUST-SHOT P-WON +BEAM-MISSES LASER-SCORE-FLAG P-XADJ +BEEN-HERE LASER-SETTING P-XADJN +BETTY-AT-KALAMONTEE LAST-CHASE-ROOM P-XNAM +BETTY-BROKEN LAST-PSEUDO-LOC PADLOCK-REMOVED +BLATHER-LEAVE LAWANDA-PLATFORM-FLAG PROJECT-MENU +BLOWUP-COUNTER LAZARUS-FLAG PRSA +BOARD-REPORTED LEVER-SETTING PRSI +BOTH-DOORS LIT PRSO +BRIGS-UP LOAD-ALLOWED QUOTE-FLAG +C-DEMONS LOW-END RED-TEXT +C-ELAPSED LOWER-ELEVATOR-ON SCREEN-CLEARS +C-INTS LOWER-ELEVATOR-UP SCREEN-TEXT +C-TABLE MAIN-MENU SECOND-TO-LAST-ROOM +CANT-GO MARKSMANSHIP-COUNTER SHUTTLE-COUNTER +CARD-REVEALED MENU-LEVEL SHUTTLE-MOVING +CARD-STOLEN MICROBE-COUNTER SHUTTLE-ON +CHEMICAL-FLAG MICROBE-DISPATCHED SHUTTLE-RECORDING-1 +CHEMICAL-REQUIRED MICROBE-HIT SHUTTLE-RECORDING-2 +COLOR-LTBL MICROBE-STRIKES SHUTTLE-RECORDING-3 +COMM-FIXED MINI-ACTIVATED SHUTTLE-RECORDING-4 +COMM-SHUTDOWN MONSTER-CLOSES SHUTTLE-VELOCITY +COMPUTER-FIXED MONSTER-ENTRANCES SICKNESS-LEVEL +COMPUTER-FLAG MORE-INFO SICKNESS-WARNING-FLAG +COPR-NOTICE MUNGED-TIME SIGN-PASS +COURSE-CONTROL-FIXED MURAL-FLAG SINK-COUNTER +CRYO-MOVE-FLAG NEW-SHOTS SLEEPY-LEVEL +CRYO-SCORE-FLAG NO-MEANING SOME-INFO +CULTURE-MENU NO-MICROBE SPECK-HIT +DAY NOT-HUNGRY SPOOL-FITS +DEFENSE-FIXED NUKED-COUNTER SPOOL-TEXT +DIAL-NUMBER NUMBER-NEEDED SPOUT-PLACED +DOOR-CLOSES OLD-SHOTS STEPS-TO-GO +DOOR-OPENS ORDER-LTBL SUPER-BRIEF +DREAMS P-AADJ TECHNOLOGY-MENU +DROWN P-ACLAUSE TELEPORTATION-ON +ELEVATOR-ENABLED P-ADJ TEXT-APPEARS +ELEVATOR-IN-TRANSIT P-ADJECTIVE TRIP-COUNTER +ELEVATOR-LIGHT-OFF P-ADJN UNIFORM-OPENED +ELEVATOR-STARTS P-ADVERB UPPER-ELEVATOR-ON +EXTRA-MOVE-FLAG P-ANAM UPPER-ELEVATOR-UP +FAINT-SOUND P-AND VERBOSE +FAMILIAR-WRENCHING P-BUTS WAITING-COUNTER +FLOYD-FOLLOW P-CCSRC WARMTH-FLAG +FLOYD-FORAYED P-CEPTR WHEEEEE +FLOYD-GAVE-UP P-CONT WINNER +FLOYD-INTRODUCED P-CSPTR WINNER-ATTACKED +FLOYD-PEERED P-DIR WRONG-CARD +FLOYD-REACTIVATED P-GETFLAGS YUKS +FLOYD-SCORE-FLAG P-GWIMBIT + +Objects: 255 + +ACCESS-PANEL GLOBAL-GAMES PROJECT-CORRIDOR +ACHILLES GLOBAL-OBJECTS PROJECT-CORRIDOR-EAST +ADMIN-CORRIDOR GLOBAL-POD PROJECT-CORRIDOR-WEST +ADMIN-CORRIDOR-N GLOBAL-SHUTTLE PSEUDO-OBJECT +ADMIN-CORRIDOR-S GOOD-BEDISTOR RAD-DOOR-EAST +ADVENTURER GOOD-BOARD RAD-DOOR-WEST +ALFIE-CONTROL-EAST GRAY-BUTTON RADIATION-LAB +ALFIE-CONTROL-WEST GREEN-BUTTON RADIATION-LOCK-EAST +AMBASSADOR GREEN-GOO RADIATION-LOCK-WEST +AUXILIARY-BOOTH GREEN-SPOOL RAT-ANT +BAD-BEDISTOR GROUND REACTOR-ACCESS-STAIRS +BALCONY GRUE REACTOR-CONTROL +BED HANDS REACTOR-ELEVATOR +BETTY-CONTROL-EAST HELICOPTER REACTOR-ELEVATOR-DOOR +BETTY-CONTROL-WEST HELICOPTER-OBJECT REACTOR-LOBBY +BIO-DOOR-EAST HELIPAD REC-AREA +BIO-DOOR-WEST HIGH-PROTEIN REC-CORRIDOR +BIO-LAB ID-CARD RECEIVE-CONSOLE +BIO-LOCK-EAST INFIRMARY RED-BUTTON +BIO-LOCK-WEST INTNUM RED-ELEVATOR-BUTTON +BLACK-BUTTON IT RED-GOO +BLATHER KALAMONTEE-PLATFORM RED-SPOOL +BLUE-BUTTON KEY RELAY +BLUE-ELEVATOR-BUTTON KITCHEN REPAIR-ROOM +BOOTH-1 KITCHEN-CARD RIFT +BOOTH-2 KITCHEN-DOOR ROBOT-HOLE +BOOTH-3 LAB-DESK ROBOT-SHOP +BRIG LAB-OFFICE ROOMS +BROCHURE LAB-STORAGE ROUND-WHITE-BUTTON +BROWN-BUTTON LAB-UNIFORM SAFETY-WEB +BROWN-GOO LADDER SANFAC-A +BROWN-SPOOL LAMP SANFAC-B +CAN LARGE-DESK SANFAC-C +CANTEEN LARGE-OFFICE SANFAC-D +CARTON LASER SANFAC-E +CELERY LASER-DIAL SANFAC-F +CHEMICAL-DISPENSER LAWANDA-PLATFORM SCRUB-BRUSH +CHEMICAL-FLUID LAZARUS-PART SECOND-BOARD +CHRONOMETER LEVER SEND-CONSOLE +CLIFF LIBRARY SHELVES +COMBINATION-DIAL LIBRARY-LOBBY SHUTTLE-CAR-ALFIE +COMBINATION-PAPER LIGHT-BUTTON SHUTTLE-CAR-BETTY +COMM-ROOM LIGHTS SHUTTLE-CARD +COMM-SCREEN LOCAL-GLOBALS SHUTTLE-DOOR +COMPUTER-ROOM LOWER-ELEVATOR SLEEP +CONFERENCE-DOOR LOWER-ELEVATOR-CARD SLOT +CONFERENCE-ROOM LOWER-ELEVATOR-DOOR SMALL-DESK +CONTROLS MACHINE-SHOP SMALL-OFFICE +CORRIDOR-DOOR MAGNET SPECK +CORRIDOR-JUNCTION MAIN-LAB SPOOL-READER +COURTYARD ME SQUARE-WHITE-BUTTON +CRACKED-BOARD MECH-CORRIDOR STAIRS +CRAG MECH-CORRIDOR-N STATION-384 +CREVICE MECH-CORRIDOR-S STORAGE-EAST +CRYO-ANTEROOM MEDICINE STORAGE-WEST +CRYO-ELEVATOR MEDICINE-BOTTLE STORAGE-WEST-DOOR +CRYO-ELEVATOR-DOOR MEGAFUSE-B STRIP +CUBE MEGAFUSE-K STRIP-NEAR-RELAY +DARK-BUTTON MEMO STRIP-NEAR-STATION +DEAD-FLOYD MESS-CORRIDOR SYSTEMS-CORRIDOR +DECK-EIGHT MESS-HALL SYSTEMS-CORRIDOR-EAST +DECK-NINE MICROBE SYSTEMS-CORRIDOR-WEST +DISPENSER MIDDLE-OF-STRIP SYSTEMS-MONITORS +DORM-A MINI-BOOTH TABLES +DORM-B MINI-CARD TELEPORTATION-BUTTON-1 +DORM-C NEW-BATTERY TELEPORTATION-BUTTON-2 +DORM-CORRIDOR NOT-HERE-OBJECT TELEPORTATION-BUTTON-3 +DORM-D OBSERVATION-DECK TELEPORTATION-CARD +ELEVATOR-BUTTON OCEAN TERMINAL +ELEVATOR-LOBBY OFFICE-DOOR THIRD-BOARD +ESCALATOR OIL-CAN TOOL-ROOM +ESCAPE-POD OLD-BATTERY TOWEL +FIRST-BOARD PADLOCK TOWER-CORE +FLASK PATROL-UNIFORM TRANSPORTATION-SUPPLY +FLOYD PHYSICAL-PLANT TRIFFID +FOOD-KIT PHYSICAL-PLANT-TWO TROLL +FORK PLAIN-HALL UNDERWATER +FOURTH-BOARD PLAN-ROOM UPPER-ELEVATOR +FRIED-BOARD PLANETARY-COURSE-CONTROL UPPER-ELEVATOR-CARD +FUNGICIDE-BUTTON PLANETARY-DEFENSE UPPER-ELEVATOR-DOOR +FUNNEL-HOLE PLAYBACK-BUTTON WAITING-AREA +GANGWAY PLIERS WEST-WING +GANGWAY-DOOR POD-DOOR WINDING-STAIR +GAS-MASK PRINT-OUT WINDOW +GLOBAL-DOORWAY PROJCON-OFFICE YELLOW-BUTTON + +Properties: 26 + +P?ACTION P?DESCFCN P?IN P?OUT P?SW P?WEST +P?ADJECTIVE P?DOWN P?LDESC P?PSEUDO P?SYNONYM +P?C-MOVE P?EAST P?NE P?SE P?TEXT +P?CAPACITY P?FDESC P?NORTH P?SIZE P?UP +P?CONTFCN P?GLOBAL P?NW P?SOUTH P?VALUE + +Flags: 30 + +ACIDBIT FOODBIT ONBIT SCRAMBLEDBIT TRANSBIT +ACTORBIT INVISIBLE OPENBIT SEARCHBIT TRYTAKEBIT +CLIMBBIT LIGHTBIT READBIT SURFACEBIT VEHBIT +CONTBIT MUNGBIT RLANDBIT TAKEBIT VOWELBIT +DOORBIT MUNGEDBIT RMUNGBIT TOOLBIT WEARBIT +FLOYDBIT NDESCBIT RWATERBIT TOUCHBIT WORNBIT diff --git a/planetfall.zap b/planetfall.zap new file mode 100644 index 0000000..3fe5270 --- /dev/null +++ b/planetfall.zap @@ -0,0 +1,47 @@ +; Low core locations +%ZVERSION:: .BYTE 0 + .BYTE FLAGS +%ZORKID:: ZORKID +%ENDLOD:: ENDLOD +%START:: START +%VOCAB:: VOCAB +%OBJECT:: OBJECT +%GLOBAL:: GLOBAL +%PURBOT:: IMPURE +%FLAGS:: .WORD 64 +%SERIAL:: .WORD 0 +%SERI1:: .WORD 0 +%SERI2:: .WORD 0 +%FWORDS:: WORDS +%PLENTH:: .WORD 0 +%PCHKSM:: .WORD 0 +%INTWRD:: .WORD 0 +%SCRWRD:: .WORD 0 + .WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 +.WORD 0 + .INSERT "SS:PLANETFALLFREQ" ;Frequent word table + .INSERT "SS:PLANETFALLDAT" ; Data file + .INSERT "SS:PLANETFALLPUR" + .INSERT "SS:MISC" + .INSERT "SS:GLOBALS" + .INSERT "SS:PARSER" + .INSERT "SS:VERBS" + .INSERT "SS:COMPONE" + .INSERT "SS:COMPTWO" + + .INSERT "SS:PLANETFALLSTR" + + .END diff --git a/planetfall.zil b/planetfall.zil index b1094a9..50d115e 100644 --- a/planetfall.zil +++ b/planetfall.zil @@ -2,35 +2,29 @@ PLANETFALL (c) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED" - - - + + + ;"allows words to be adj/noun/verb all at once!" >> -) "AUX" (TIM