Final Revision

master
historicalsource 2019-04-14 16:25:39 -04:00
commit 2ac9da82cb
103 changed files with 54604 additions and 0 deletions

21
README Normal file
View File

@ -0,0 +1,21 @@
A few notes on the walk-thru version of The Abyss.
The game currently supports only the correct instructions to
make it through to the end. Doing something other than what is
required may result in unexpected results (and may void the
warranty).
Two 'cheat' verbs are required to get through the game. When you
oxygen in the breathing mix gets low, or when the nitrogen level
is high, after solving the stopper puzzle, you must use the $AIR
command to restore to breathing mix to nominal values. Also,
when you trap Coffey in the compression chamber, you must use
the $NITROGEN command to get him to say the wiring code
mnemonic.
When the crane crashes, you have enough time to do all the
things yourself, and in fact cannot ask anyone else to do
something for you.
The helium descrambler puzzle is not yet implemented.

1
README.md Normal file
View File

@ -0,0 +1 @@
# abyss

11
abyss-mac Normal file
View File

@ -0,0 +1,11 @@
File 1: 6 pictures.
ID Pixels RLE Huff Name
1 960 51 25 GAUGE.LBM
2 960 42 20 GAUGE.LBM
3 960 51 25 GAUGE.LBM
4 960 36 16 GAUGE.LBM
5 12 4 3 GAUGE.LBM
6 12 4 3 GAUGE.LBM
Segment Size

0
abyss-mac.g Normal file
View File

6
abyss-pix.zil Normal file
View File

@ -0,0 +1,6 @@
<SETG GAUGE.LBM 1>
<SETG GAUGE.LBM 2>
<SETG GAUGE.LBM 3>
<SETG GAUGE.LBM 4>
<SETG GAUGE.LBM 5>
<SETG GAUGE.LBM 6>

2
abyss.chart Normal file
View File

@ -0,0 +1,2 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
3/20 1 109416 25134 203 123 626

39
abyss.errors Normal file
View File

@ -0,0 +1,39 @@
Release: 1
0 Inserting abyss.zap.
64 Inserting abyssfreq.xzap.
720 Inserting abyssdat.zap.
25134 Inserting abysspur.zap.
26198 Inserting pstack.zap.
26234 Inserting pmem.zap.
26377 Inserting parser.zap.
36010 Inserting find.zap.
38166 Inserting reds.zap.
44860 Inserting breds.zap.
47154 Inserting top.zap.
48929 Inserting prare.zap.
53280 Inserting misc.zap.
56372 Inserting gas-mix.zap.
59524 Inserting verbs.zap.
67067 Inserting be.zap.
68282 Inserting sub-bay.zap.
81752 Inserting command.zap.
84030 Inserting montana.zap.
90442 Inserting return1.zap.
91141 Inserting return2.zap.
91443 Inserting ocean.zap.
92347 Inserting crane.zap.
99062 Inserting global.zap.
99563 Inserting util.zap.
104295 Inserting stopper.zap.
105650 Inserting alien.zap.
106830 Inserting endgame.zap.
107356 Inserting abyssstr.zap.
Lexical buffer space allocated: 608152
Max lexical space allocated at any one time: 48012
Object buffer space allocated: 112000
Source bytes read: 531619
Object bytes written: 109416
Preload: 25134; 203 objects; 123 globals; 626 words.
Used 1:58
Elapsed time 2:23

2
abyss.lowcore Normal file
View File

@ -0,0 +1,2 @@
2

BIN
abyss.mac.1 Normal file

Binary file not shown.

8
abyss.mpf Normal file
View File

@ -0,0 +1,8 @@
abyss -c -h -t
.file 1 *
1 gauge.lbm -x 016 008 135 015 -0 ;"Oxygen gauge"
2 gauge.lbm -x 016 024 135 031 -0 ;"CO2 gauge"
3 gauge.lbm -x 016 040 135 047 -0 ;"Nitrogen gauge"
4 gauge.lbm -x 016 056 135 063 -0 ;"Helium gauge"
5 gauge.lbm -x 044 073 045 078 -0 ;"Needle (dark)"
6 gauge.lbm -x 058 073 059 078 -0 ;"Needle (light)"

946
abyss.record Normal file
View File

@ -0,0 +1,946 @@
ZILCH of 3/2/89 12:41
Combined ZIL Compiler Ver 2.0 (MIM)
-----------------------------------
Incremental compilation disabled, because top-level ZIL file changed.
Input file: /USR/DEVELOPMENT/ABYSS/ABYSS.ZIL
[Object numbers assigned rooms first]
[Zaps always go to current directory]
[YZIP instructions]
Loading /USR/DEVELOPMENT/ABYSS/DEFS.ZIL and compiling it.
XFLOAD /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PARSER.REST.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/CONSTANTS.ZIL and compiling it.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PSTACK.ZIL and compiling it.
Start segment 0
Compiling routine: PEEK-PSTACK
End segment 0
Abstracting PSTACK to /USR/DEVELOPMENT/ABYSS/PSTACK.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PMEM.ZIL and compiling it.
Start segment 0
Compiling routine: PMEM?
Compiling routine: PMEM-RESET
Compiling routine: DO-PMEM-ALLOC
End segment 0
Abstracting PMEM to /USR/DEVELOPMENT/ABYSS/PMEM.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PDEFS.ZIL and compiling it.
Loading /USR/DEVELOPMENT/ABYSS/DEFS2.ZIL and compiling it.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PARSER.ZIL and compiling it.
Start segment 0
Compiling routine: INIT-STATUS-LINE
Compiling routine: UPDATE-STATUS-LINE
Compiling routine: RT-PRINT-MENU
Compiling routine: RT-PRINT-MENU-ENTRY
Compiling routine: RT-HLIGHT-MENU
Compiling routine: RT-GET-PREPS
Compiling routine: RT-GET-OBJS
Compiling routine: RT-DO-OBJECTS
Compiling routine: RT-GET-MEM
Compiling routine: RT-FREE-MEM
Compiling routine: RT-STOP-READ
Compiling routine: MOUSE-INPUT?
Compiling routine: READ-INPUT
Compiling routine: SPECIAL-CONTRACTION?
Compiling routine: EXPAND-BE-CONTRACTIONS
Compiling routine: TELL-THE
Compiling routine: TELL-CTHE
Compiling routine: NAKED-DIR?
Compiling routine: PARSER
Compiling routine: GAME-VERB?
Compiling routine: RED-SD
Compiling routine: P-P
Compiling routine: PARSE-IT
Compiling routine: PARSE-SENTENCE
Compiling routine: GET-TERMINAL-ACTION
Compiling routine: GET-NONTERMINAL-ACTION
Compiling routine: BE-PATIENT
Compiling routine: MAIN-LOOP
Compiling routine: MAIN-LOOP-1
Compiling routine: QCONTEXT-CHECK
Compiling routine: LIT?
Compiling routine: IGNORE-FIRST-WORD
Compiling routine: FIX-QUOTATIONS
Compiling routine: MAIN-LOOP-IT
Compiling routine: P-NO-MEM-ROUTINE
Compiling routine: BEG-PARDON
Compiling routine: UNKNOWN-WORD
Compiling routine: WORD-PRINT
Compiling routine: PRINT-VOCAB-WORD
Compiling routine: DO-OOPS
Compiling routine: DO-AGAIN
Compiling routine: NP-SAVE
Compiling routine: PARSER-ERROR
Compiling routine: BUZZER-WORD?
Compiling routine: NUMBER?
Compiling routine: CHANGE-LEXV
Compiling routine: TELL-GWIM-MSG
Compiling routine: DO-IT-AGAIN
End segment 0
Abstracting PARSER to /USR/DEVELOPMENT/ABYSS/PARSER.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/FIND.ZIL and compiling it.
Start segment 0
Compiling routine: FIND-DESCENDANTS
Compiling routine: EXCLUDED?
Compiling routine: INVALID-OBJECT?
Compiling routine: MATCH-OBJECT
Compiling routine: TEST-OBJECT
Compiling routine: ADD-OBJECT
Compiling routine: NOT-IN-FIND-RES?
Compiling routine: EVERYWHERE-VERB?
Compiling routine: MULTIPLE-EXCEPTION?
Compiling routine: CHECK-ADJS-THERE?
Compiling routine: CHECK-ADJS
Compiling routine: SEARCH-IN-LG?
Compiling routine: EXCLUDE-HERE-OBJECT?
Compiling routine: FIND-OBJECTS
Compiling routine: TEST-THINGS
End segment 0
Abstracting FIND to /USR/DEVELOPMENT/ABYSS/FIND.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/REDS.ZIL and compiling it.
Start segment 0
Compiling routine: NOT-HERE-VERB?
Compiling routine: RED-FCN
Compiling routine: RED-PART
Compiling routine: GET-SYNTAX
Compiling routine: RED-SV
Compiling routine: ROOT-VERB
Compiling routine: RED-SVN
Compiling routine: RED-SVNP
Compiling routine: RED-SVNPN
Compiling routine: RED-SVPNN
Compiling routine: RED-SVPNPN
Compiling routine: RED-SVD
Compiling routine: RED-SP
Compiling routine: IREDUCE-EXCEPTION
Compiling routine: REDUCE-EXCEPT-IT
Compiling routine: REDUCE-EXCEPTION
Compiling routine: REDUCE-LOCATION
Compiling routine: DETERMINE-OBJ
Compiling routine: CHECK-DIR-ADJS
Compiling routine: NUMERIC-ADJ?
Compiling routine: DETERMINE-NP
Compiling routine: DET-NP-NOT-HERE?
Compiling routine: DET-NP-OWNEE?
Compiling routine: FIND-OWNERS
Compiling routine: READY-TO-DISAMBIGUATE?
Compiling routine: DETERMINE-NP-XFER
Compiling routine: DO-ORPHAN-TEST
Compiling routine: RED-O-ADJ
Compiling routine: RED-O-PP
Compiling routine: INSERT-NP
Compiling routine: TEST-SR
Compiling routine: RED-O-NP
Compiling routine: RED-PERS
Compiling routine: HACK-TELL
Compiling routine: HACK-TELL-1
Compiling routine: RED-VP
Compiling routine: RED-NP
Compiling routine: RED-OF
Compiling routine: RED-QT
Compiling routine: GET-QUANTITY-WORD
Compiling routine: GET-QUANTITY
Compiling routine: RED-QN
Compiling routine: RED-NPP
Compiling routine: RED-PP
Compiling routine: RED-POSS
Compiling routine: RED-ADJ
Compiling routine: RED-QUOTE
End segment 0
Abstracting REDS to /USR/DEVELOPMENT/ABYSS/REDS.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/BREDS.ZIL and compiling it.
Start segment 0
Compiling routine: RED-BE-FORM
Compiling routine: EXCH-4-5-Q
Compiling routine: RED-SBNN
Compiling routine: RED-SNBN
Compiling routine: DETERMINE-SUBJ
Compiling routine: RED-SBNA
Compiling routine: RED-SNBA
Compiling routine: RED-SBNP
Compiling routine: RED-SNBP
Compiling routine: RED-SNBAP
Compiling routine: P-PP-OBJ
Compiling routine: P-PP-PREP
Compiling routine: RED-SQBN
Compiling routine: RED-BE
Compiling routine: RED-NOT
Compiling routine: RED-CANDO
Compiling routine: INSERT-WHAT
End segment 0
Abstracting BREDS to /USR/DEVELOPMENT/ABYSS/BREDS.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/GRAM.ZIL and compiling it.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/TOP.ZIL and compiling it.
Start segment 0
Compiling routine: MORE-SPECIFIC
Compiling routine: V-PDEBUG
Compiling routine: VERB-ALL-TEST
Compiling routine: FIX-HIM-HER-IT
Compiling routine: TELL-PRONOUN
Compiling routine: NO-M-WINNER-VERB?
Compiling routine: FIND-A-WINNER
Compiling routine: TELL-SAID-TO
Compiling routine: QCONTEXT-GOOD?
Compiling routine: META-LOC
Compiling routine: CANT-UNDO
Compiling routine: SEE-VERB?
Compiling routine: PERFORM
Compiling routine: TELL-TOO-DARK
Compiling routine: ITAKE-CHECK
Compiling routine: TELL-D-LOC
Compiling routine: D-APPLY
Compiling routine: CAPITAL-NOUN?
Compiling routine: NOT-HERE
Compiling routine: SPEAKING-VERB?
Compiling routine: GET-OWNER
Compiling routine: GET-NP
Compiling routine: NOUN-USED?
Compiling routine: ADJ-USED?
End segment 0
Abstracting TOP to /USR/DEVELOPMENT/ABYSS/TOP.
Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PRARE.ZIL and compiling it.
Start segment 0
Compiling routine: TOO-MANY-NEW
Compiling routine: NAKED-OOPS
Compiling routine: CANT-OOPS
Compiling routine: CANT-AGAIN
Compiling routine: CANT-USE-MULTIPLE
Compiling routine: MAKE-ROOM-FOR-TOKENS
Compiling routine: REPLACE-ONE-TOKEN
Compiling routine: V-$REFRESH
Compiling routine: PRINT-INTQUOTE
Compiling routine: PRINT-LEXV
Compiling routine: COPY-INPUT
End segment 0
Start segment 0
Compiling routine: BUFFER-PRINT
Compiling routine: CAPITALIZE
Compiling routine: PRINT-PARSER-FAILURE
Compiling routine: NAKED-ADJECTIVE?
Compiling routine: CHANGE-AND-TO-THEN?
Compiling routine: DONT-UNDERSTAND
Compiling routine: MISSING
Compiling routine: CANT-FIND-OBJECT
Compiling routine: NP-CANT-SEE
Compiling routine: WINNER-SAYS-WHICH?
Compiling routine: WHICH-LIST?
Compiling routine: WHICH-PRINT
Compiling routine: NP-PRINT
Compiling routine: ADJS-PRINT
Compiling routine: TOO-MANY-NOUNS
Compiling routine: INBUF-ADD
Compiling routine: INBUF-PRINT
Compiling routine: YES?
Compiling routine: SETUP-ORPHAN
Compiling routine: SETUP-ORPHAN-NP
Compiling routine: INSERT-ADJS
Compiling routine: INSERT-ADJS-WD
End segment 0
Abstracting PRARE to /USR/DEVELOPMENT/ABYSS/PRARE.
Loading /USR/DEVELOPMENT/ABYSS/MACROS.ZIL and compiling it.
Loading /USR/DEVELOPMENT/ABYSS/MISC.ZIL and compiling it.
Compiling routine: VISIBLE?
Compiling routine: CLOSED?
Compiling routine: ACCESSIBLE?
Compiling routine: RT-PRINT-DESC
Compiling routine: RT-PRINT-ARTICLE
Compiling routine: RT-PRINT-OBJ
Compiling routine: RT-PRINT-VERB
Compiling routine: THIS-IS-IT
Compiling routine: RT-IN-ON-MSG
Compiling routine: RT-OUT-OFF-MSG
Compiling routine: RT-OPEN-MSG
Compiling routine: TOUCH-VERB?
Compiling routine: CLOCKER
Compiling routine: RT-QUEUE
Compiling routine: RT-DEQUEUE
Compiling routine: RT-IS-QUEUED?
Compiling routine: C-PIXELS
Compiling routine: L-PIXELS
Compiling routine: PIXELS-C
Compiling routine: PIXELS-L
Compiling routine: CCURSET
Compiling routine: CCURGET
Compiling routine: CSPLIT
Compiling routine: CWINPOS
Compiling routine: CWINSIZE
Compiling routine: CSCROLL
Compiling routine: RT-SCRIPT-INBUF
Compiling routine: GO
Abstracting MISC to /USR/DEVELOPMENT/ABYSS/MISC.
Loading /USR/DEVELOPMENT/ABYSS/GAS-MIX.ZIL and compiling it.
Compiling routine: V-$SCRUB
Compiling routine: V-$AIR
Compiling routine: RT-NUM-DIGITS
Compiling routine: RT-PRINT-FLOAT
Compiling routine: RT-NITROGEN-MSG
Compiling routine: RT-OXYGEN-MSG
Compiling routine: RT-CO2-MSG
Compiling routine: RT-I-GAS-MIX
Compiling routine: V-$HEAT
Compiling routine: RT-TH-THERMOMETER
Compiling routine: RT-TEMP-MSG
Compiling routine: RT-I-DEEPCORE-TEMP
Compiling routine: RT-I-TEMP
Abstracting GAS-MIX to /USR/DEVELOPMENT/ABYSS/GAS-MIX.
Loading /USR/DEVELOPMENT/ABYSS/SYNTAX.ZIL and compiling it.
Loading /USR/DEVELOPMENT/ABYSS/VERBS.ZIL and compiling it.
Compiling routine: V-DESC-LEVEL
Compiling routine: V-SCRIPT
Compiling routine: V-VERIFY
Compiling routine: V-COMMAND
Compiling routine: V-RECORD
Compiling routine: V-UNRECORD
Compiling routine: V-INVENTORY
Compiling routine: V-QUIT
Compiling routine: RT-FAILED-MSG
Compiling routine: V-RESTART
Compiling routine: V-SAVE
Compiling routine: V-RESTORE
Compiling routine: RT-PRINT-CONTENTS
Compiling routine: RT-DESCRIBE-OBJECTS
Compiling routine: RT-DESCRIBE-ROOM
Compiling routine: NOT-HOLDING?
Compiling routine: HELD?
Compiling routine: TOO-DARK
Compiling routine: V-ASK-ABOUT
Compiling routine: V-ATTACH
Compiling routine: V-CLOSE
Compiling routine: V-CUT
Compiling routine: IDROP
Compiling routine: V-DROP
Compiling routine: PRE-EMPTY
Compiling routine: V-EMPTY
Compiling routine: RT-EMPTY-MSG
Compiling routine: V-EMPTY-FROM
Compiling routine: V-ENTER
Compiling routine: V-EXIT
Compiling routine: RT-NOT-IN-ROOM-MSG
Compiling routine: RT-DO-WALK
Compiling routine: V-EXAMINE
Compiling routine: RT-NOTHING-SPECIAL-MSG
Compiling routine: V-EXTINGUISH
Compiling routine: V-FOLLOW
Compiling routine: V-GIVE
Compiling routine: V-GIVE-SWP
Compiling routine: V-HIT
Compiling routine: V-INFLATE
Compiling routine: V-LIFT
Compiling routine: V-LISTEN
Compiling routine: V-LOCK
Compiling routine: V-LOOK
Compiling routine: V-LOOK-BEHIND
Compiling routine: V-LOOK-UNDER
Compiling routine: V-LOOK-IN
Compiling routine: TELL-CANT-FIND
Compiling routine: V-LOOK-ON
Compiling routine: V-MOVE
Compiling routine: V-NO
Compiling routine: RT-MATCH-KEY
Compiling routine: RT-OTHER-SIDE
Compiling routine: RT-LOCK-MSG
Compiling routine: RT-OPEN-DOOR-MSG
Compiling routine: V-OPEN
Compiling routine: V-PLUG-IN
Compiling routine: V-PULL
Compiling routine: V-PUSH
Compiling routine: PRE-PUT
Compiling routine: V-PUT
Compiling routine: TELL-FIND-NONE
Compiling routine: PRE-PUT-IN
Compiling routine: V-PUT-IN
Compiling routine: RT-PUT-ON-OR-IN
Compiling routine: RT-TOTAL-SIZE
Compiling routine: RT-OBJ-TOO-LARGE?
Compiling routine: RT-ROOM-IN-MSG?
Compiling routine: RT-CHECK-MOVE-MSG?
Compiling routine: V-REACH-BEHIND
Compiling routine: V-REACH-IN
Compiling routine: V-REACH-UNDER
Compiling routine: V-READ
Compiling routine: V-SHOW
Compiling routine: V-SHOW-SWP
Compiling routine: V-SIT
Compiling routine: ITAKE
Compiling routine: RT-DO-TAKE
Compiling routine: PRE-TAKE
Compiling routine: PRE-TAKE-WITH
Compiling routine: V-TAKE
Compiling routine: V-TAKE-WITH
Compiling routine: V-TALK-TO
Compiling routine: V-TELL
Compiling routine: WONT-HELP-TO-TALK-TO
Compiling routine: V-TELL-ABOUT
Compiling routine: V-THANK
Compiling routine: V-TIE-TO
Compiling routine: V-TURN
Compiling routine: V-TURN-OFF
Compiling routine: V-TURN-ON
Compiling routine: V-TURN-TO
Compiling routine: V-UNDO
Compiling routine: V-UNLOCK
Compiling routine: V-UNWEAR
Compiling routine: V-WAIT
Compiling routine: RT-FIND-DIR
Compiling routine: RT-FIND-ROOM
Compiling routine: RT-SET-PUPPY
Compiling routine: RT-CLEAR-PUPPY
Compiling routine: V-WALK
Compiling routine: WALK-THRU-DOOR?
Compiling routine: RT-GOTO
Compiling routine: RT-ENTER-ROOM
Compiling routine: RT-ROOM-NAME-MSG
Compiling routine: V-WALK-AROUND
Compiling routine: V-WALK-TO
Compiling routine: RT-WALK-WITHIN-ROOM-MSG
Compiling routine: V-WEAR
Compiling routine: V-WELD
Compiling routine: V-YES
Abstracting VERBS to /USR/DEVELOPMENT/ABYSS/VERBS.
Loading /USR/DEVELOPMENT/ABYSS/BE.ZIL and compiling it.
Compiling routine: V-STATEMENT
Compiling routine: V-BE
Compiling routine: TELL-Q-WORD
Compiling routine: RIGHT-PREP?
Compiling routine: IS-QUIET?
Compiling routine: IS-OUTSIDE?
Compiling routine: IS-OPEN?
Compiling routine: IS-CLOSED?
Compiling routine: IS-LOCKED?
Compiling routine: IS-UNLOCKED?
Compiling routine: IS-DEAD?
Compiling routine: IS-ALIVE?
Compiling routine: IS-HERE?
Compiling routine: PRSO-IS
Compiling routine: IS-PRSO-ADJ?
Compiling routine: YES-BUT?
Compiling routine: V-CAN?
Compiling routine: V-MAY?
Compiling routine: V-DO?
Compiling routine: V-COULD?
Compiling routine: V-WOULD?
Compiling routine: V-SHOULD?
Compiling routine: V-MIGHT?
Compiling routine: V-WILL?
Compiling routine: V-MUST?
Compiling routine: V-BE?
Compiling routine: V-WHO
Compiling routine: V-WHAT
Compiling routine: V-WHEN
Compiling routine: V-WHERE
Compiling routine: V-WHY
Compiling routine: V-HOW
Abstracting BE to /USR/DEVELOPMENT/ABYSS/BE.
Loading /USR/DEVELOPMENT/ABYSS/SUB-BAY.ZIL and compiling it.
Compiling routine: RT-RM-SUB-BAY
Compiling routine: RT-TH-MOON-POOL
Compiling routine: RT-TH-FIRE
Compiling routine: RT-I-FIRE-1
Compiling routine: RT-I-FIRE-2
Compiling routine: RT-TH-WATER-HOSE
Compiling routine: RT-TH-NOZZLE
Compiling routine: RT-TH-OXYGEN-CYLINDER
Compiling routine: RT-CH-COFFEY
Compiling routine: RT-CH-ONE-NIGHT
Compiling routine: RT-TH-DRY-SUIT
Compiling routine: RT-TH-FACEPLATE
Compiling routine: RT-TH-HELMET
Compiling routine: RT-TH-HOOK-1
Compiling routine: RT-TH-LIFT-BAG
** Warning: Undefined variable assumed LOCAL L
Compiling routine: RT-TH-CO2-CANNISTER
Compiling routine: RT-TH-RED-BUTTON
Compiling routine: RT-RM-COMPRESSION-CHAMBER
Compiling routine: RT-LG-CHAMBER-HATCH
Compiling routine: RT-I-LEAVE-1
Compiling routine: RT-I-LEAVE-2
Compiling routine: RT-I-LEAVE-3
Compiling routine: RT-I-LEAVE-4
Compiling routine: RT-I-RETURN-1
Compiling routine: RT-I-RETURN-2
Compiling routine: RT-I-RETURN-3
Compiling routine: RT-I-RETURN-4
Compiling routine: RT-I-UFO-MESSAGE
Compiling routine: RT-RM-CAB-THREE
Compiling routine: RT-OUT-CAB
Compiling routine: RT-I-CAB-FIXED
Compiling routine: RT-TH-CAB-HOOKAH
Compiling routine: RT-RM-GAS-MIX-ROOM
Compiling routine: RT-RM-CORRIDOR
Compiling routine: RT-TH-PANEL
Compiling routine: RT-RM-LADDER-A2
Compiling routine: RT-RM-LOUNGE
Compiling routine: RT-RM-INFIRMARY
Compiling routine: RT-RM-MESS-HALL
Compiling routine: RT-RM-GALLEY
Compiling routine: RT-RM-PANTRY
Compiling routine: RT-TH-HOOK-2
Compiling routine: RT-TH-GAME-BAG
Compiling routine: RT-RM-WALDORF
Compiling routine: RT-RM-PERSONAL-STORAGE-1
Compiling routine: RT-RM-ZOOTOWN
Compiling routine: RT-RM-LADDER-C2
Compiling routine: RT-TH-S-BILGE-BUTT
Compiling routine: RT-RM-LADDER-A1
Compiling routine: RT-RM-LAUNDRY
Compiling routine: RT-RM-PT-LIFE-SUPPORT
Compiling routine: RT-RM-COMPRESSOR-ROOM
Compiling routine: RT-TH-COMPRESSOR
Compiling routine: RT-RM-LADDER-D1
Compiling routine: RT-RM-TOOL-PUSHER-OFFICE
Compiling routine: RT-RM-DRILL-ROOM
Compiling routine: RT-RM-LADDER-B1
Compiling routine: RT-RM-SB-BATTERY-ROOM
Compiling routine: RT-RM-SB-HEAD
Compiling routine: RT-RM-SB-LIFE-SUPPORT
Compiling routine: RT-RM-PUMP-ROOM
Compiling routine: RT-RM-FRESH-WATER-STORAGE
Compiling routine: RT-RM-LADDER-C1
Compiling routine: RT-RM-LADDER-A3
Compiling routine: RT-RM-PT-HEAD
Compiling routine: RT-RM-MOTEL-QUICK
Compiling routine: RT-RM-PERSONAL-STORAGE-2
Compiling routine: RT-RM-SWAMP
Compiling routine: RT-RM-LADDER-D3
Compiling routine: RT-RM-LADDER-B3
Compiling routine: RT-RM-SB-OBS-DECK
Compiling routine: RT-RM-COMPUTER-CENTER
Compiling routine: RT-RM-ELECTRONICS-SHOP
Compiling routine: RT-TH-ELEC-SHOP-DRAWER
Compiling routine: RT-RM-LAB
Compiling routine: RT-RM-TAPE-LIBRARY
Compiling routine: RT-RM-LADDER-C3
Abstracting SUB-BAY to /USR/DEVELOPMENT/ABYSS/SUB-BAY.
Loading /USR/DEVELOPMENT/ABYSS/COMMAND.ZIL and compiling it.
Compiling routine: RT-RM-COMMAND-MODULE
Compiling routine: RT-TH-MONITORS
Compiling routine: RT-TH-COMMAND-CHAIR
Compiling routine: RT-COMMAND-MENU
Compiling routine: RT-EMERGENCY-MENU
** Warning: Undefined variable assumed LOCAL C
** Warning: Undefined variable assumed LOCAL L
Compiling routine: RT-ROV-MENU
Compiling routine: RT-AIR-MENU
Compiling routine: RT-GAS-LEVEL-MSG
Compiling routine: RT-POWER-MENU
Compiling routine: RT-LIGHT-MENU
Compiling routine: RT-SUPPORT-MENU
** Warning: Undefined variable assumed LOCAL C
** Warning: Undefined variable assumed LOCAL L
Compiling routine: RT-PUMP-MENU
** Warning: Undefined variable assumed LOCAL C
** Warning: Undefined variable assumed LOCAL L
Compiling routine: RT-TH-DESCRAMBLER-CONTROL-BOX
Abstracting COMMAND to /USR/DEVELOPMENT/ABYSS/COMMAND.
Loading /USR/DEVELOPMENT/ABYSS/MONTANA.ZIL and compiling it.
Compiling routine: RT-RM-MIDSHIP-HATCH
Compiling routine: RT-LG-MIDSHIP-HATCH
Compiling routine: RT-TO-TRENCH-BOTTOM
Compiling routine: RT-RM-MISSILE-HATCH
Compiling routine: RT-TH-MISSILE
Compiling routine: RT-TH-MISSILE-TIMER
Compiling routine: RT-TH-MISSILE-PANEL
Compiling routine: RT-TH-WIRES
Compiling routine: RT-TH-WIRE
Compiling routine: RT-CORRECT-WIRE?
Compiling routine: RT-TH-WIRE-CUTTERS
Compiling routine: RT-I-INTO-TRENCH-1
Compiling routine: RT-I-INTO-TRENCH-2
Compiling routine: RT-I-OUT-OF-AIR-1
Compiling routine: RT-I-OUT-OF-AIR-2
Compiling routine: RT-RM-BOW
Compiling routine: RT-RM-TORPEDO-ROOM
Compiling routine: RT-RM-ENGINE-ROOM
Compiling routine: RT-RM-MISSILE-ROOM
Compiling routine: RT-TH-MISSILE-ACCESS-KEY
Compiling routine: RT-RM-ATTACK-CENTER
Compiling routine: RT-RM-SONAR-ROOM
Compiling routine: RT-RM-COMM-ROOM
Compiling routine: RT-THRU-BUCKLED-DOOR
Compiling routine: RT-LG-BUCKLED-DOOR
Compiling routine: RT-RM-SUB-CORRIDOR
Compiling routine: RT-RM-CAPTAINS-ROOM
Compiling routine: RT-TH-PHOTOGRAPH
Compiling routine: RT-TH-SAFE
Compiling routine: RT-TH-PLASTIC-CARD
Compiling routine: RT-TH-PLASTIQUE
Compiling routine: RT-TH-DETONATOR
Compiling routine: RT-I-DETONATOR
Abstracting MONTANA to /USR/DEVELOPMENT/ABYSS/MONTANA.
Loading /USR/DEVELOPMENT/ABYSS/RETURN1.ZIL and compiling it.
Compiling routine: RT-TH-CATFISH-LOCKER
Compiling routine: RT-TH-STEEL-BOX
Compiling routine: RT-TH-CLUE-PAPER
Compiling routine: RT-TH-STEEL-KEY
Compiling routine: RT-TH-DRYER
Compiling routine: RT-TH-PASSPORT
Compiling routine: RT-TH-DISCHARGE
Abstracting RETURN1 to /USR/DEVELOPMENT/ABYSS/RETURN1.
Loading /USR/DEVELOPMENT/ABYSS/RETURN2.ZIL and compiling it.
Compiling routine: RT-TH-GUN
Compiling routine: RT-TH-FBS-SUIT
Compiling routine: RT-TH-DIVE-LOCKER
Compiling routine: RT-TH-ELECTRONIC-LOCK
Compiling routine: RT-TH-DEVICE
Compiling routine: V-$NITROGEN
Abstracting RETURN2 to /USR/DEVELOPMENT/ABYSS/RETURN2.
Loading /USR/DEVELOPMENT/ABYSS/OCEAN.ZIL and compiling it.
Compiling routine: RT-RM-UNDER-MOONPOOL
Compiling routine: RT-RM-OCEAN-NORTH
Compiling routine: RT-RM-OCEAN-SOUTH
Compiling routine: RT-RM-OCEAN-WEST
Compiling routine: RT-SWIM-TO-FROM-TRENCH
Compiling routine: RT-RM-TROUGH-LIP
Abstracting OCEAN to /USR/DEVELOPMENT/ABYSS/OCEAN.
Loading /USR/DEVELOPMENT/ABYSS/CRANE.ZIL and compiling it.
Compiling routine: RT-I-CRANE-1
Compiling routine: RT-I-CRANE-2
Compiling routine: RT-I-CRANE-3
Compiling routine: RT-I-CRANE-4
Compiling routine: RT-I-CRANE-5
Compiling routine: RT-I-HIPPY-RETURN
Compiling routine: RT-I-KLAXON
Compiling routine: RT-I-BATTERY-LEAK
Compiling routine: RT-RM-PT-BATTERY-ROOM
Compiling routine: RT-TH-POWERCEL
Compiling routine: RT-TH-POOL-OF-WATER
Compiling routine: RT-RM-PT-OBS-DECK
Compiling routine: RT-TH-CRACK
Compiling routine: RT-WELD-CRACK
** Note: Atomic argument to routine assumed constant - RT-I-BATTERY-LEAK
Compiling routine: RT-TH-ARC-WELDER
Compiling routine: RT-TH-WELDING-ROD
Compiling routine: RT-TH-RED-CABLE
Compiling routine: RT-TH-BLACK-CABLE
Compiling routine: RT-TH-WELDER-SWITCH
Compiling routine: RT-TH-WELDER-CORD
Compiling routine: RT-RM-LADDER-D2
Compiling routine: RT-TH-PT-BILGE-BUTTON
Compiling routine: RT-TH-SB-BILGE-BUTTON
Compiling routine: RT-I-CATFISH-TRAPPED
Compiling routine: RT-RM-DIVE-GEAR-STORAGE
Compiling routine: RT-TH-BUD-GEAR-LOCKER
Compiling routine: RT-TH-BIG-LOCKER
Compiling routine: RT-GN-LOCKER
Compiling routine: RT-LG-DGS-DOOR
Compiling routine: RT-RM-RECREATION-ROOM
Compiling routine: RT-TH-BARBELL
Compiling routine: RT-TH-WEIGHTS
Compiling routine: RT-TH-LIFT-BENCH
Compiling routine: RT-TH-TREADMILL
Compiling routine: RT-TH-CYCLE
Compiling routine: RT-RM-LADDER-B2
Compiling routine: RT-TH-HYDRAULIC-HOSE
Compiling routine: RT-TH-HYDRAULIC-FLUID
Compiling routine: RT-LG-FLOOD-DOOR
Compiling routine: RT-TH-KNIFE
Abstracting CRANE to /USR/DEVELOPMENT/ABYSS/CRANE.
Loading /USR/DEVELOPMENT/ABYSS/GLOBAL.ZIL and compiling it.
Compiling routine: RT-GLOBAL-HERE
Compiling routine: RT-YOU
Compiling routine: RT-TH-HUMAN-BODY
Compiling routine: RT-GN-BODY
Compiling routine: RT-TH-PLAYER-BODY
Compiling routine: RT-TH-GROUND
Compiling routine: RT-TH-SKY
Compiling routine: RT-LG-DEEPCORE
Compiling routine: RT-LG-TROUGH
Compiling routine: RT-LG-MONTANA
Abstracting GLOBAL to /USR/DEVELOPMENT/ABYSS/GLOBAL.
Loading /USR/DEVELOPMENT/ABYSS/UTIL.ZIL and compiling it.
Compiling routine: V-$STEAL
Compiling routine: V-$GOTO
Compiling routine: V-VERSION
Compiling routine: V-COLOR
Compiling routine: RT-DO-COLOR
Compiling routine: RT-PICK-COLOR
Compiling routine: MAC-II?
Compiling routine: Y?
Compiling routine: RT-CHECK-ADJ
Compiling routine: RT-UPDATE-ADJ
Compiling routine: RT-SCORE-MSG
Compiling routine: RT-SCORE-OBJ
Compiling routine: V-SCORE
Compiling routine: V-DIAGNOSE
** Warning: Undefined variable assumed LOCAL M
Compiling routine: RT-WORD-NUMBERS
Compiling routine: RT-END-OF-GAME
Compiling routine: RT-COMMA-MSG
Compiling routine: FIND-FLAG-LG
Compiling routine: FIND-FLAG
Compiling routine: RT-ALREADY-MSG
Compiling routine: RT-META-IN?
Compiling routine: NO-NEED
Compiling routine: RT-YOU-CANT-MSG
Compiling routine: HAR-HAR
Compiling routine: RT-IMPOSSIBLE-MSG
Compiling routine: WONT-HELP
Compiling routine: PICK-ONE
Compiling routine: GLOBAL-IN?
Compiling routine: RT-FIRST-YOU-MSG
Compiling routine: RT-SEE-INSIDE?
Compiling routine: RT-SEE-ANYTHING-IN?
Compiling routine: RT-MOVE-ALL
Compiling routine: RT-MOVE-ALL-BUT-WORN
Compiling routine: RT-MOVE-ALL-WORN
Compiling routine: RT-NOT-LIKELY-MSG
Compiling routine: RT-NO-POINT-MSG
Compiling routine: RT-PICK-NEXT
Compiling routine: RT-NO-RESPONSE-MSG
Compiling routine: RT-FOOLISH-TO-TALK?
Compiling routine: RT-WASTE-OF-TIME-MSG
Compiling routine: V-$P
Compiling routine: RT-CENTER-PIC
Compiling routine: V-$D
Compiling routine: V-$SHOW
Compiling routine: V-$W
Abstracting UTIL to /USR/DEVELOPMENT/ABYSS/UTIL.
Loading /USR/DEVELOPMENT/ABYSS/STOPPER.ZIL and compiling it.
Compiling routine: RT-RM-TRI-MIX-STORAGE
Compiling routine: RT-TH-NITROGEN-TANK
Compiling routine: RT-TH-NIT-VALVE
Compiling routine: RT-TH-NIT-STOPPER
Compiling routine: RT-GET-STOPPER
Compiling routine: RT-I-NITROGEN-LEAK
Compiling routine: RT-TH-NIT-BASE
Compiling routine: RT-TH-OXYGEN-TANK
Compiling routine: RT-TH-OXY-VALVE
Compiling routine: RT-TH-OXY-STOPPER
Compiling routine: RT-TH-OXY-BASE
Compiling routine: RT-TH-HELIUM-TANK
Compiling routine: RT-TH-HEL-VALVE
Compiling routine: RT-TH-HEL-STOPPER
Compiling routine: RT-TH-HEL-BASE
Compiling routine: RT-GN-TANK
Compiling routine: RT-GN-VALVE
Compiling routine: RT-GN-STOPPER
Compiling routine: RT-RM-TOOL-ROOM
Compiling routine: RT-TH-BIN
Compiling routine: RT-TH-MAGNET
Abstracting STOPPER to /USR/DEVELOPMENT/ABYSS/STOPPER.
Loading /USR/DEVELOPMENT/ABYSS/ALIEN.ZIL and compiling it.
Compiling routine: RT-RM-TRENCH-BOTTOM
Compiling routine: RT-TH-PURPLE-BUTTON
Compiling routine: RT-RM-ALIEN-CHAMBER
Compiling routine: RT-TH-FUSCHIA-BUTTON
Abstracting ALIEN to /USR/DEVELOPMENT/ABYSS/ALIEN.
Loading /USR/DEVELOPMENT/ABYSS/ENDGAME.ZIL and compiling it.
Compiling routine: RT-TH-WINDOW-BENCH
Compiling routine: RT-TH-RED-LEVER
Abstracting ENDGAME to /USR/DEVELOPMENT/ABYSS/ENDGAME.
** Warning: Undefined Routine: DIR-VERB-PRSI?
** Warning: Undefined Routine: COLLECTIVE-VERB?
** Warning: Never defined - W?SWIM
** Warning: Never defined - FL-TRY-TAKE
** Warning: Never defined - FL-TRANSPARENT
** Warning: Never defined - FL-TOUCHED
** Warning: Never defined - FL-TAKEABLE
** Warning: Never defined - FL-SURFACE
** Warning: Never defined - FL-SEARCH
** Warning: Never defined - FL-ROOMS
** Warning: Never defined - FL-PLURAL
** Warning: Never defined - FL-PERSON
** Warning: Never defined - FL-OPEN
** Warning: Never defined - FL-LIGHTED
** Warning: Never defined - FL-NO-ARTICLE
** Warning: Never defined - FL-INVISIBLE
** Warning: Never defined - FL-FEMALE
** Warning: Never defined - FL-CONTAINER
Warnings: 26
** Note: OBJECT has no properties: INTQUOTE
** Note: OBJECT has no properties: ROOMS
Vocabulary: 626
Verbs: 102
Real globals: 121
CLOCK-WAIT GL-MOVES P-HER-OBJECT
CLOCKER-RUNNING GL-N-LOOP P-HIM-OBJECT
CURRENT-REDUCTION GL-NEW-TIME P-IT-OBJECT
DEMO-VERSION? GL-NITROGEN-LEAK? P-LEN
ERROR-PRIORITY GL-NITROGEN-MSG P-MULT
ERROR-STRING GL-NITROGEN-QTY P-NOT-HERE
GL-B-COLOR GL-NOUN-TBL P-NUMBER
GL-BATTERY-LEAK GL-OXYGEN-MSG P-OFLAG
GL-CAB-DOCKED? GL-OXYGEN-QTY P-OLEN
GL-CATFISH-SPY-MSG? GL-PLAYER-TEMP P-ONE-NOUN
GL-CLK-RUN GL-PREP-TBL P-PRSA-WORD
GL-CO2-MSG GL-PUPPY P-PRSI
GL-CO2-QTY GL-Q-MAX P-PRSO
GL-COFFEY-SHOOT GL-Q-TBL P-RESPONDED
GL-COLOR-NOTE GL-RETURN1-DONE? P-RUNNING
GL-CORRIDOR-BLOCKED? GL-RETURN2-DONE? P-THEM-OBJECT
GL-CRANE-DOWN? GL-SAFE-NUM P-WALK-DIR
GL-CRANE-FALLING? GL-SCORE P-WON
GL-DEEPCORE-TEMP GL-SCR-WID P-WORD-NUMBER
GL-DETONATOR-TIME GL-SCRUBBERS-ON P-WORDS-AGAIN
GL-DOOR-DIR GL-SL-HERE PARSE-SENTENCE-ACTIVATION
GL-F-COLOR GL-SPACE-WIDTH PARSER-RESULT
GL-FALLING-INTO-TRENCH? GL-TEMP-MSG PMEM-STORE-POINTER
GL-FONT-X GL-VERB-TBL PMEM-STORE-WARN
GL-FONT-Y GL-WATER-LEVEL PMEM-STORE-WORDS
GL-FREE-PTR GL-WATER-PUMP-ON PMEM-WORDS-USED
GL-HEATERS-ON GL-WIRE-SEQUENCE PRSA
GL-HELIUM-QTY GL-WIRES-CUT PRSI
GL-INPUT-PREP1 HERE PRSI-NP
GL-INPUT-PREP2 IDEBUG PRSO
GL-INPUT-STATE LAST-PSEUDO-LOC PRSO-NP
GL-INPUT-TIMEOUT LIT PRSQ
GL-INPUT-VERB NOW-PRSI PRSS
GL-INPUT-WINNER OBJ-SWAP QCONTEXT
GL-ITEM-NUM OHERE SEARCH-FLAGS
GL-KLAXON-ON OPRSO SPLITS
GL-LIFT-OBJ OTLEXV TLEXV
GL-LOC-TRAIL P-CAN-UNDO VERBOSITY
GL-MENU-NUM P-CONT WINNER
GL-MOUSE-X P-DBUG
GL-MOUSE-Y P-DIRECTION
Objects: 203
CH-ALIEN ROOMS
CH-CATFISH TH-ALIEN-SHIP
CH-COFFEY TH-ARC-WELDER
CH-HIPPY TH-BARBELL
CH-LINDSEY TH-BIG-LOCKER
CH-ONE-NIGHT TH-BIN
CH-PLAYER TH-BLACK-CABLE
CH-SEALS TH-BLUE-WIRE
GENERIC-OBJECTS TH-BUD-GEAR-LOCKER
GLOBAL-HERE TH-CAB-HOOKAH
GLOBAL-OBJECTS TH-CATFISH-LOCKER
HER TH-CLUE-PAPER
HIM TH-CO2-CANNISTER
INTADJ TH-COMMAND-CHAIR
INTDIR TH-COMPRESSOR
INTNUM TH-CRACK
INTPP TH-CYCLE
INTQUOTE TH-DESCRAMBLER-CONTROL-BOX
IT TH-DETONATOR
LG-BUCKLED-DOOR TH-DEVICE
LG-CHAMBER-DOOR TH-DISCHARGE
LG-CHAMBER-HATCH TH-DIVE-LOCKER
LG-DEEPCORE TH-DRY-SUIT
LG-DGS-DOOR TH-DRYER
LG-FLOOD-DOOR TH-ELEC-SHOP-DRAWER
LG-MIDSHIP-HATCH TH-ELECTRONIC-LOCK
LG-MONTANA TH-FACEPLATE
LG-OUTLET TH-FBS-SUIT
LG-TROUGH TH-FIRE
LG-WALL TH-FLATBED
LOCAL-GLOBALS TH-FUSCHIA-BUTTON
NOT-HERE-OBJECT TH-GAME-BAG
PSEUDO-OBJECT TH-GREEN-WIRE
RM-ALIEN-CHAMBER TH-GROUND
RM-ATTACK-CENTER TH-GUN
RM-BOW TH-HANDS
RM-CAB-THREE TH-HEAD
RM-CAPTAINS-ROOM TH-HEL-STOPPER
RM-COMM-ROOM TH-HEL-VALVE
RM-COMMAND-MODULE TH-HELIUM-TANK
RM-COMPRESSION-CHAMBER TH-HELMET
RM-COMPRESSOR-ROOM TH-HOOK-1
RM-COMPUTER-CENTER TH-HOOK-2
RM-CORRIDOR TH-HUMAN-BODY
RM-DIVE-GEAR-STORAGE TH-HYDRAULIC-FLUID
RM-DRILL-ROOM TH-HYDRAULIC-HOSE
RM-ELECTRONICS-SHOP TH-KNIFE
RM-ENGINE-ROOM TH-LIFT-BAG
RM-FRESH-WATER-STORAGE TH-LIFT-BENCH
RM-GALLEY TH-MAGNET
RM-GAS-MIX-ROOM TH-MISSILE
RM-INFIRMARY TH-MISSILE-ACCESS-KEY
RM-LAB TH-MISSILE-PANEL
RM-LADDER-A1 TH-MISSILE-TIMER
RM-LADDER-A2 TH-MONITORS
RM-LADDER-A3 TH-MOON-POOL
RM-LADDER-B1 TH-NIT-STOPPER
RM-LADDER-B2 TH-NIT-VALVE
RM-LADDER-B3 TH-NITROGEN-TANK
RM-LADDER-C1 TH-NOZZLE
RM-LADDER-C2 TH-ORANGE-WIRE
RM-LADDER-C3 TH-OXY-STOPPER
RM-LADDER-D1 TH-OXY-VALVE
RM-LADDER-D2 TH-OXYGEN-CYLINDER
RM-LADDER-D3 TH-OXYGEN-TANK
RM-LAUNDRY TH-PANEL
RM-LOUNGE TH-PASSPORT
RM-MESS-HALL TH-PHOTOGRAPH
RM-MIDSHIP-HATCH TH-PLASTIC-CARD
RM-MISSILE-HATCH TH-PLASTIQUE
RM-MISSILE-ROOM TH-PLAYER-BODY
RM-MOTEL-QUICK TH-POOL-OF-WATER
RM-OCEAN-NORTH TH-POWERCEL
RM-OCEAN-SOUTH TH-PT-BILGE-BUTTON
RM-OCEAN-WEST TH-PURPLE-BUTTON
RM-PANTRY TH-RED-BUTTON
RM-PERSONAL-STORAGE-1 TH-RED-CABLE
RM-PERSONAL-STORAGE-2 TH-RED-LEVER
RM-PT-BATTERY-ROOM TH-RED-WIRE
RM-PT-HEAD TH-S-BILGE-BUTT
RM-PT-LIFE-SUPPORT TH-SAFE
RM-PT-OBS-DECK TH-SB-BILGE-BUTTON
RM-PUMP-ROOM TH-SKY
RM-RECREATION-ROOM TH-STEEL-BOX
RM-SB-BATTERY-ROOM TH-STEEL-KEY
RM-SB-HEAD TH-THERMOMETER
RM-SB-LIFE-SUPPORT TH-TIME
RM-SB-OBS-DECK TH-TREADMILL
RM-SONAR-ROOM TH-UFO
RM-SUB-BAY TH-WATER-HOSE
RM-SUB-CORRIDOR TH-WEIGHTS
RM-SWAMP TH-WELDER-CORD
RM-TAPE-LIBRARY TH-WELDER-SWITCH
RM-TOOL-PUSHER-OFFICE TH-WELDING-ROD
RM-TOOL-ROOM TH-WHITE-WIRE
RM-TORPEDO-ROOM TH-WINDOW-BENCH
RM-TRENCH-BOTTOM TH-WIRE-CUTTERS
RM-TRI-MIX-STORAGE TH-WIRES
RM-TROUGH-LIP TH-YELLOW-WIRE
RM-UNDER-MOONPOOL THEM
RM-WALDORF YOU
RM-ZOOTOWN
Properties: 25
P?ACTION P?CONTFCN P?GLOBAL P?OWNER P?STARBOARD
P?ADJACENT P?DOWN P?IN P?PORT P?SYNONYM
P?ADJECTIVE P?EAST P?MENU P?SCORE P?THINGS
P?AFT P?FORE P?NORTH P?SIZE P?UP
P?CAPACITY P?GENERIC P?OUT P?SOUTH P?WEST
Flags: 48
FL-ALIVE FL-CONTAINER FL-KNIFE FL-PERSON FL-TRANSPARENT
FL-ASLEEP FL-DOOR FL-LAMP FL-PLURAL FL-TRY-TAKE
FL-AUTO-ENTER FL-FEMALE FL-LIGHTED FL-READABLE FL-VEHICLE
FL-AUTO-OPEN FL-HAS-DESCFCN FL-LOCKED FL-ROOMS FL-VOWEL
FL-BODY-PART FL-HAS-LDESC FL-NO-ALL FL-SEARCH FL-WATER
FL-BROKEN FL-HAS-SDESC FL-NO-ARTICLE FL-SEEN FL-WEAPON
FL-BURNABLE FL-INDOORS FL-NO-DESC FL-SURFACE FL-WORN
FL-BY-HAND FL-INSIDE FL-ON FL-TAKEABLE FL-YOUR
FL-CLOTHING FL-INVISIBLE FL-OPEN FL-TOOL
FL-COLLECTIVE FL-KEY FL-OPENABLE FL-TOUCHED

BIN
abyss.seg Normal file

Binary file not shown.

2797
abyss.seginfo Normal file

File diff suppressed because it is too large Load Diff

BIN
abyss.syms Normal file

Binary file not shown.

66
abyss.zap Normal file
View File

@ -0,0 +1,66 @@
.NEW 6
; Low core locations
%ZVERSION:: .BYTE 6
.BYTE FLAGS
%ZORKID:: ZORKID
%ENDLOD:: ENDLOD
%START:: GO
%VOCAB:: VOCAB
%OBJECT:: OBJECT
%GLOBAL:: GLOBAL
%PURBOT:: IMPURE
%FLAGS:: .WORD 112
%SERIAL:: .WORD 0
%SERI1:: .WORD 0
%SERI2:: .WORD 0
%FWORDS:: WORDS
%PLENTH:: .WORD 0
%PCHKSM:: .WORD 0
%INTWRD:: .WORD 0
%SCRWRD:: .WORD 0
%HWRD:: .WORD 0
%VWRD:: .WORD 0
%FWRD:: .WORD 0
%FOFF:: FOFF
%SOFF:: SOFF
%CLRWRD:: .WORD 0
%TCHAR:: TCHARS
%TWID:: .WORD 0
%CRFUNC:: .WORD 0
%CHRSET:: .WORD 0
%EXTAB:: LOWCORE-TABLE
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.INSERT "ABYSSFREQ" ;Frequent word table
.INSERT "ABYSSDAT" ; Data file
.INSERT "ABYSSPUR"
.INSERT "PSTACK"
.INSERT "PMEM"
.INSERT "PARSER"
.INSERT "FIND"
.INSERT "REDS"
.INSERT "BREDS"
.INSERT "TOP"
.INSERT "PRARE"
.INSERT "MISC"
.INSERT "GAS-MIX"
.INSERT "VERBS"
.INSERT "BE"
.INSERT "SUB-BAY"
.INSERT "COMMAND"
.INSERT "MONTANA"
.INSERT "RETURN1"
.INSERT "RETURN2"
.INSERT "OCEAN"
.INSERT "CRANE"
.INSERT "GLOBAL"
.INSERT "UTIL"
.INSERT "STOPPER"
.INSERT "ALIEN"
.INSERT "ENDGAME"
.INSERT "ABYSSSTR"
.END

83
abyss.zil Normal file
View File

@ -0,0 +1,83 @@
;"***************************************************************************"
; "game : Abyss"
; "file : ABYSS.ZIL"
; "auth : $Author: RAB $"
; "date : $Date: 16 Mar 1989 17:36:40 $"
; "rev : $Revision: 1.9 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Compile/Load file"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<SETG ZDEBUGGING? T>
<DEFINE DEBUG-CODE ('X "OPTIONAL" ('Y T))
<COND
(,ZDEBUGGING?
.X
)
(ELSE
.Y
)
>
>
<SETG NEW-PARSER? T>
<FREQUENT-WORDS?>
<LONG-WORDS?>
<ZIP-OPTIONS UNDO COLOR MOUSE>
<ORDER-OBJECTS? ROOMS-FIRST>
<NEVER-ZAP-TO-SOURCE-DIRECTORY?>
<VERSION YZIP>
<IFFLAG
(IN-ZILCH
<PRINC "Compiling">
)
(T
<PRINC "Loading">
)
>
<PRINC ": Abyss by Challenge, Inc.
">
ON!-INITIAL "for DEBUGR"
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<SET REDEFINE T>
<COMPILATION-FLAG P-BE-VERB T>
;<SETG L-SEARCH-PATH (["~PARSER" ""] !,L-SEARCH-PATH)>
<INSERT-FILE "DEFS">
<XFLOAD ;"~PARSER/" "PARSER.REST">
<INSERT-FILE "MACROS">
<INSERT-FILE "MISC">
<INSERT-FILE "GAS-MIX">
<INSERT-FILE "SYNTAX">
<INSERT-FILE "VERBS">
<IF-P-BE-VERB!- <INSERT-FILE "BE">>
<INSERT-FILE "SUB-BAY">
<INSERT-FILE "COMMAND">
<INSERT-FILE "MONTANA">
<INSERT-FILE "RETURN1">
<INSERT-FILE "RETURN2">
<INSERT-FILE "OCEAN">
<INSERT-FILE "CRANE">
<INSERT-FILE "GLOBAL">
<INSERT-FILE "UTIL">
<INSERT-FILE "STOPPER">
<INSERT-FILE "ALIEN">
<INSERT-FILE "ENDGAME">
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

BIN
abyss.zip Normal file

Binary file not shown.

13790
abyssdat.zap Normal file

File diff suppressed because it is too large Load Diff

198
abyssfreq.xzap Normal file
View File

@ -0,0 +1,198 @@
.FSTR FSTR?1,"the " ;1636 819 819
.FSTR FSTR?2,"You " ;615 206 206
.FSTR FSTR?3,"and " ;502 252 252
.FSTR FSTR?4,". " ;448 449 449
.FSTR FSTR?5,", " ;390 391 391
.FSTR FSTR?6,"you " ;384 193 193
.FSTR FSTR?7,"The " ;352 177 177
.FSTR FSTR?8,"ladderwell " ;325 26 26
.FSTR FSTR?9,"that " ;294 99 99
.FSTR FSTR?10,"to " ;290 291 291
.FSTR FSTR?11,"starboard " ;279 32 32
.FSTR FSTR?12,"your " ;228 77 77
.FSTR FSTR?13,"Deepcore" ;224 33 45
.FSTR FSTR?14,"are " ;224 113 113
.FSTR FSTR?15,"hatch " ;220 45 45
.FSTR FSTR?16,"of " ;214 215 215
.FSTR FSTR?17,"is " ;210 211 211
.FSTR FSTR?18,"into " ;207 70 70
.FSTR FSTR?19,"bulkhead" ;204 35 35
.FSTR FSTR?20,"can't " ;170 35 35
.FSTR FSTR?21,"room" ;160 81 81
.FSTR FSTR?22,"with " ;156 53 53
.FSTR FSTR?23,"RED" ;148 38 38
.FSTR FSTR?24,"enter" ;147 50 50
.FSTR FSTR?25,"in " ;140 141 141
.FSTR FSTR?26,"through " ;138 24 24
.FSTR FSTR?27,"Suddenly" ;133 20 20
.FSTR FSTR?28,"compression " ;130 14 14
.FSTR FSTR?29,"from " ;129 44 44
.FSTR FSTR?30,"currently " ;128 17 17
.FSTR FSTR?31,"Coffey " ;126 22 22
.FSTR FSTR?32,"Catfish " ;119 18 18
.FSTR FSTR?33,"cylinder" ;114 20 20
.FSTR FSTR?34,"Montana" ;108 19 19
.FSTR FSTR?35,"forward " ;108 19 19
.FSTR FSTR?36,"has " ;106 54 54
.FSTR FSTR?37,"floor" ;105 36 36
.FSTR FSTR?38,"water " ;104 27 27
.FSTR FSTR?39,"chamber" ;100 21 21
.FSTR FSTR?40,"handling" ;96 17 17
.FSTR FSTR?41,"default " ;96 17 17
.FSTR FSTR?42,"Your " ;96 25 25
.FSTR FSTR?43,"have " ;93 32 32
.FSTR FSTR?44,"disappear" ;91 14 14
.FSTR FSTR?45,"out " ;86 44 44
.FSTR FSTR?46,"Lindsey " ;84 13 13
.FSTR FSTR?47,"level " ;84 22 22
.FSTR FSTR?48,"button" ;84 22 22
.FSTR FSTR?49,"only " ;84 29 29
.FSTR FSTR?50,"over " ;81 28 28
.FSTR FSTR?51,"surface" ;80 17 17
.FSTR FSTR?52,"look" ;80 41 41
.FSTR FSTR?53,"MoonPool" ;80 11 11
.FSTR FSTR?54,"open" ;78 40 40
.FSTR FSTR?55,"but " ;76 39 39
.FSTR FSTR?56,"There " ;76 20 20
.FSTR FSTR?57,"locker " ;75 16 16
.FSTR FSTR?58,"around " ;75 16 16
.FSTR FSTR?59,"don't " ;75 16 16
.FSTR FSTR?60,"begin" ;72 25 25
.FSTR FSTR?61,"here" ;72 37 37
.FSTR FSTR?62,"back " ;72 25 25
.FSTR FSTR?63,"battery " ;72 13 13
.FSTR FSTR?64,"hear " ;69 24 24
.FSTR FSTR?65,"wall " ;66 23 23
.FSTR FSTR?66,"close" ;66 23 23
.FSTR FSTR?67,"control" ;65 14 14
.FSTR FSTR?68,"fore " ;64 17 17
.FSTR FSTR?69,"lead" ;64 33 33
.FSTR FSTR?70,"submersible" ;63 8 8
.FSTR FSTR?71,"door " ;63 22 22
.FSTR FSTR?72,"for " ;62 32 32
.FSTR FSTR?73,"see" ;62 63 63
.FSTR FSTR?74,"still " ;60 16 16
.FSTR FSTR?75,"yourself" ;60 11 11
.FSTR FSTR?76,"then " ;60 21 21
.FSTR FSTR?77,"storage" ;60 13 13
.FSTR FSTR?78,"start" ;60 21 21
.FSTR FSTR?79,"missile " ;60 11 11
.FSTR FSTR?80,"corridor" ;60 11 11
.FSTR FSTR?81,"which " ;60 16 16
.FSTR FSTR?82,"aft " ;58 30 30
.FSTR FSTR?83,"port " ;57 20 20
.FSTR FSTR?84,"feel " ;57 20 20
.FSTR FSTR?85,"down " ;57 20 20
.FSTR FSTR?86,"it " ;57 58 58
.FSTR FSTR?87,"nitrogen " ;56 9 9
.FSTR FSTR?88,"compressor" ;56 8 8
.FSTR FSTR?89,"Deepcore's " ;55 12 12
.FSTR FSTR?90,"stopper" ;55 12 12
.FSTR FSTR?91,"nothing" ;55 12 12
.FSTR FSTR?92,"Th" ;55 56 253
.FSTR FSTR?93,"Hippy " ;55 12 12
.FSTR FSTR?94,"I " ;55 56 56
.FSTR FSTR?95,"ceiling" ;55 12 12
.FSTR FSTR?96,"observation" ;54 7 7
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

888
abysspur.zap Normal file
View File

@ -0,0 +1,888 @@
; PURE TABLES ARE DEFINED HERE
PURTBL::
; LONG WORD TABLE
LONG-WORD-TABLE:: .TABLE
38
W?THERMOMETER
STR?183
W?SUPERBRIEF
STR?184
W?STATIONARY
STR?185
W?RECREATION
STR?186
W?PHOTOGRAPH
STR?187
W?OBSERVATION
STR?188
W?LADDERWELL
STR?189
W?LABORATORY
STR?190
W?EXTINGUISH
STR?191
W?END.OF.INPUT
STR?192
W?ELECTRONIC
STR?193
W?ELECTRICAL
STR?194
W?DOWNSTAIRS
STR?195
W?DESCRAMBLER
STR?196
W?COMPRESSOR
STR?197
W?COMPRESSION
STR?198
W?COMMUNICATIONS
STR?199
W?COCKSUCKER
STR?200
W?ARC-WELDER
STR?201
.ENDT
PT?105::
NP-QUANT-TBL:: .TABLE
NP-QUANT-ALL
W?ALL
NP-QUANT-BOTH
W?BOTH
NP-QUANT-A
W?ONE
NP-QUANT-A
W?EITHER
NP-QUANT-A
W?ANY
.ENDT
PT?107::
K-PICTURE-TBL:: .TABLE
.BYTE 64
.BYTE 4
.BYTE 7
.BYTE 10
.BYTE 11
.BYTE 12
.BYTE 13
.BYTE 14
.BYTE 15
.BYTE 16
.BYTE 18
.BYTE 20
.BYTE 21
.BYTE 22
.BYTE 23
.BYTE 24
.BYTE 26
.BYTE 27
.BYTE 28
.BYTE 29
.BYTE 30
.BYTE 31
.BYTE 32
.BYTE 33
.BYTE 34
.BYTE 36
.BYTE 37
.BYTE 38
.BYTE 39
.BYTE 40
.BYTE 42
.BYTE 43
.BYTE 44
.BYTE 46
.BYTE 47
.BYTE 48
.BYTE 49
.BYTE 50
.BYTE 52
.BYTE 55
.BYTE 56
.BYTE 58
.BYTE 60
.BYTE 61
.BYTE 62
.BYTE 63
.BYTE 65
.BYTE 66
.BYTE 67
.BYTE 69
.BYTE 70
.BYTE 71
.BYTE 72
.BYTE 73
.BYTE 74
.BYTE 75
.BYTE 76
.BYTE 77
.BYTE 78
.BYTE 81
.BYTE 86
.BYTE 89
.BYTE 101
.BYTE 102
.BYTE 157
.ENDT
PT?207:: .TABLE
1
W?FORE
.ENDT
PT?307:: .TABLE
1
W?AFT
.ENDT
PT?407:: .TABLE
1
W?PORT
.ENDT
PT?507:: .TABLE
1
W?STARBOARD
.ENDT
PT?607:: .TABLE
1
W?NORTH
.ENDT
PT?707:: .TABLE
1
W?SOUTH
.ENDT
PT?807:: .TABLE
1
W?EAST
.ENDT
PT?907:: .TABLE
1
W?WEST
.ENDT
PT?1007:: .TABLE
1
W?UP
.ENDT
PT?1107:: .TABLE
1
W?DOWN
.ENDT
PT?1207:: .TABLE
1
W?IN
.ENDT
PT?1307:: .TABLE
1
W?OUT
.ENDT
PT?1407::
PT?6707:: .TABLE
1
W?TAKE
.ENDT
PT?1507::
PT?3007:: .TABLE
1
W?DROP
.ENDT
PT?1607::
PT?5307:: .TABLE
1
W?PUT
.ENDT
PT?1707::
PT?5107:: .TABLE
1
W?OPEN
.ENDT
PT?1807::
PT?2907:: .TABLE
1
W?CLOSE
.ENDT
PT?1907::
PT?3307:: .TABLE
1
W?EXAMINE
.ENDT
PT?2007::
PT?4607:: .TABLE
1
W?LOOK
.ENDT
PT?2107::
PT?4107:: .TABLE
1
W?INVENTORY
.ENDT
PT?2207:: .TABLE
1
W?QUIT
.ENDT
PT?2307:: .TABLE
1
W?RESTORE
.ENDT
PT?2407:: .TABLE
1
W?RESTART
.ENDT
PT?2507:: .TABLE
1
W?SAVE
.ENDT
PT?2607:: .TABLE
1
W?UNDO
.ENDT
PT?2707:: .TABLE
1
W?ASK
.ENDT
PT?2807:: .TABLE
1
W?ATTACH
.ENDT
PT?3107:: .TABLE
1
W?EMPTY
.ENDT
PT?3207:: .TABLE
1
W?ENTER
.ENDT
PT?3407:: .TABLE
1
W?EXIT
.ENDT
PT?3507:: .TABLE
1
W?FOLLOW
.ENDT
PT?3607:: .TABLE
1
W?GET
.ENDT
PT?3707:: .TABLE
2
W?GET
W?IN
.ENDT
PT?3807:: .TABLE
2
W?GET
W?OFF
.ENDT
PT?3907:: .TABLE
3
W?GET
W?OUT
W?OF
.ENDT
PT?4007:: .TABLE
1
W?HOLD
.ENDT
PT?4207:: .TABLE
2
W?JUMP
W?IN
.ENDT
PT?4307:: .TABLE
3
W?JUMP
W?OUT
W?OF
.ENDT
PT?4407:: .TABLE
1
W?LISTEN
.ENDT
PT?4507:: .TABLE
2
W?LISTEN
W?TO
.ENDT
PT?4707:: .TABLE
2
W?LOOK
W?AT
.ENDT
PT?4807:: .TABLE
2
W?LOOK
W?IN
.ENDT
PT?4907:: .TABLE
2
W?LOOK
W?ON
.ENDT
PT?5007:: .TABLE
2
W?LOOK
W?OVER
.ENDT
PT?5207:: .TABLE
2
W?OPEN
W?UP
.ENDT
PT?5407:: .TABLE
2
W?PUT
W?AWAY
.ENDT
PT?5507:: .TABLE
2
W?PUT
W?DOWN
.ENDT
PT?5607:: .TABLE
2
W?PUT
W?ON
.ENDT
PT?5707:: .TABLE
1
W?REMOVE
.ENDT
PT?5807:: .TABLE
1
W?SET
.ENDT
PT?5907:: .TABLE
2
W?SIT
W?AT
.ENDT
PT?6007:: .TABLE
2
W?SIT
W?DOWN
.ENDT
PT?6107:: .TABLE
2
W?SIT
W?IN
.ENDT
PT?6207:: .TABLE
2
W?SIT
W?ON
.ENDT
PT?6307:: .TABLE
1
W?SWIM
.ENDT
PT?6407:: .TABLE
2
W?SWIM
W?TO
.ENDT
PT?6507:: .TABLE
2
W?SWITCH
W?OFF
.ENDT
PT?6607:: .TABLE
2
W?SWITCH
W?ON
.ENDT
PT?6807:: .TABLE
2
W?TAKE
W?OFF
.ENDT
PT?6907:: .TABLE
2
W?TAKE
W?OUT
.ENDT
PT?7007:: .TABLE
2
W?TAKE
W?UP
.ENDT
PT?7107:: .TABLE
1
W?TELL
.ENDT
PT?7207:: .TABLE
1
W?THANK
.ENDT
PT?7307:: .TABLE
1
W?THROW
.ENDT
PT?7407:: .TABLE
2
W?THROW
W?AWAY
.ENDT
PT?7507:: .TABLE
1
W?TURN
.ENDT
PT?7607:: .TABLE
2
W?TURN
W?OFF
.ENDT
PT?7707:: .TABLE
2
W?TURN
W?ON
.ENDT
PT?7807:: .TABLE
1
W?WAIT
.ENDT
PT?7907:: .TABLE
2
W?WAIT
W?FOR
.ENDT
PT?8007:: .TABLE
1
W?WALK
.ENDT
PT?8107:: .TABLE
2
W?WALK
W?TO
.ENDT
PT?8207:: .TABLE
1
W?WEAR
.ENDT
PT?8307::
K-DEFAULT-VERB-TBL::
T?GL-VERB-TBL:: .TABLE
84
PT?207
PT?307
PT?407
PT?507
PT?607
PT?707
PT?807
PT?907
PT?1007
PT?1107
PT?1207
PT?1307
0
PT?1407
PT?1507
PT?1607
PT?1707
PT?1807
PT?1907
PT?2007
PT?2107
0
PT?2207
PT?2307
PT?2407
PT?2507
PT?2607
0
PT?2707
PT?2807
PT?2907
PT?3007
PT?3107
PT?3207
PT?3307
PT?3407
PT?3507
PT?3607
PT?3707
PT?3807
PT?3907
PT?4007
PT?4107
PT?4207
PT?4307
PT?4407
PT?4507
PT?4607
PT?4707
PT?4807
PT?4907
PT?5007
PT?5107
PT?5207
PT?5307
PT?5407
PT?5507
PT?5607
PT?5707
PT?5807
PT?5907
PT?6007
PT?6107
PT?6207
PT?6307
PT?6407
PT?6507
PT?6607
PT?6707
PT?6807
PT?6907
PT?7007
PT?7107
PT?7207
PT?7307
PT?7407
PT?7507
PT?7607
PT?7707
PT?7807
PT?7907
PT?8007
PT?8107
PT?8207
.ENDT
PT?8407::
P-QB-WORDS-1:: .TABLE
20
W?ARE
W?CAN
W?COULD
W?DO
W?DOES
W?DID
W?HE
W?I
W?IS
W?IT
W?SHE
W?SHOULD
W?THAT
W?THEY
W?WAS
W?WE
W?WERE
W?WILL
W?WOULD
W?YOU
.ENDT
PT?8507::
P-QB-WORDS-2:: .TABLE
20
W?NOT
W?NOT
W?NOT
W?NOT
W?NOT
W?NOT
W?IS
W?AM
W?NOT
W?IS
W?IS
W?NOT
W?IS
W?ARE
W?NOT
W?ARE
W?NOT
W?NOT
W?NOT
W?ARE
.ENDT
PT?8607::
P-QA-WORDS1:: .TABLE
20
W?AREN
W?CAN
W?COULDN
W?DON
W?DOESN
W?DIDN
W?HE
W?I
W?ISN
W?IT
W?SHE
W?SHOULDN
W?THAT
W?THEY
W?WASN
W?WE
W?WEREN
W?WON
W?WOULDN
W?YOU
.ENDT
PT?8707::
P-QA-WORDS2:: .TABLE
20
W?T
W?T
W?T
W?T
W?T
W?T
W?S
W?M
W?T
W?S
W?S
W?T
W?S
W?RE
W?T
W?RE
W?T
W?T
W?T
W?RE
.ENDT
PT?8807::
P-N-WORDS:: .TABLE
23
W?ZERO
W?TEN
W?ELEVEN
W?TWELVE
W?THIRTEEN
W?FOURTEEN
W?FIFTEEN
W?SIXTEEN
W?SEVENTEEN
W?EIGHTEEN
W?NINETEEN
W?TWENTY
W?THIRTY
W?FORTY
W?FIFTY
W?SIXTY
W?SEVENTY
W?EIGHTY
W?NINETY
W?HUNDRED
W?THOUSAND
W?MILLION
W?BILLION
.ENDT
PT?8907::
P-C-WORDS:: .TABLE
23
W?ASS
W?ASSHOLE
W?BASTARD
W?BITCH
W?COCK
W?COCKSUCKER
W?CRAP
W?CUNT
W?CUSS
W?DAMN
W?DAMNED
W?FUCK
W?FUCKED
W?FUCKER
W?FUCKING
W?GODDAMN
W?GODDAMNED
W?HELL
W?PISS
W?SCREW
W?SHIT
W?SHITHEAD
W?SUCKS
.ENDT
PT?112::
OWNERS:: .TABLE
3
CH-PLAYER
CH-COFFEY
CH-LINDSEY
.ENDT
PT?212::
NO-M-WINNER-VERB-TABLE:: .TABLE
1
V?TELL-ABOUT
.ENDT
PT?312::
PT?127:: .TABLE
.BYTE 1
0
.ENDT
PT?119::
QACTIONS:: .TABLE
3
V-BE
V-BE?
0
.ENDT
PT?120:: .TABLE
.BYTE RM-GAS-MIX-ROOM
.BYTE 1
.ENDT
PT?220:: .TABLE
.BYTE RM-COMPRESSION-CHAMBER
.BYTE 1
.ENDT
PT?227::
K-BODY-OWNER-TBL:: .TABLE
2
CH-COFFEY
CH-LINDSEY
.ENDT
PT?128::
K-MACHINE-NAME-TBL:: .TABLE
10
STR?139
STR?140
STR?141
STR?142
STR?143
STR?144
STR?145
STR?146
STR?147
STR?148
.ENDT
PT?228::
K-COLOR-TABLE:: .TABLE
STR?152
STR?153
STR?154
STR?155
STR?156
STR?157
STR?158
STR?159
STR?160
STR?161
.ENDT
PT?328:: .TABLE
4
STR?162
STR?163
STR?164
STR?165
.ENDT
PT?428:: .TABLE
6
STR?166
STR?167
STR?168
STR?169
STR?170
STR?171
.ENDT
PT?528:: .TABLE
6
STR?172
STR?173
STR?174
STR?175
STR?176
STR?177
.ENDT
PURTND::
.ENDI

233
abyssstr.zap Normal file
View File

@ -0,0 +1,233 @@
; STRINGS ARE DEFINED HERE
STRBEG::
.SEGMENT "0"
.GSTR STR?1,"M-END"
.GSTR STR?2,"What charming language!"
.GSTR STR?3,"Computers aren't impressed by naughty words!"
.GSTR STR?4,"You ought to be ashamed of yourself!"
.GSTR STR?5,"Hey, save that talk for the locker room!"
.GSTR STR?6,"Step outside and say that!"
.GSTR STR?7,"And so's your old man!"
.GSTR STR?8,"No inside"
P-NO-INSIDE=STR?8
.GSTR STR?9,"No surface"
P-NO-SURFACE=STR?9
.GSTR STR?10,"Nothing"
P-NOTHING=STR?10
.GSTR STR?11,"RED-SP"
.GSTR STR?12,"RED-SV"
.GSTR STR?13,"RED-SVPNN"
.GSTR STR?14,"RED-SVNPN"
.GSTR STR?15,"RED-SVPNPN"
.GSTR STR?16,"RED-SVNP"
.GSTR STR?17,"RED-SVN"
.GSTR STR?18,"RED-SD"
.GSTR STR?19,"RED-SVD"
.GSTR STR?20,"RED-VP"
.GSTR STR?21,"RED-CANDO"
.GSTR STR?22,"RED-PART"
.GSTR STR?23,"RED-FCN"
.GSTR STR?24,"RED-NPP"
.GSTR STR?25,"RED-QUOTE"
.GSTR STR?26,"RED-OF"
.GSTR STR?27,"RED-QT"
.GSTR STR?28,"RED-QN"
.GSTR STR?29,"RED-NP"
.GSTR STR?30,"RED-PP"
.GSTR STR?31,"RED-ADJ"
.GSTR STR?32,"RED-POSS"
.GSTR STR?33,"RED-BE-FORM"
.GSTR STR?34,"RED-SNBN"
.GSTR STR?35,"RED-SNBA"
.GSTR STR?36,"RED-SNBP"
.GSTR STR?37,"RED-SNBAP"
.GSTR STR?38,"RED-SQBN"
.GSTR STR?39,"RED-SBNN"
.GSTR STR?40,"RED-SBNA"
.GSTR STR?41,"RED-SBNP"
.GSTR STR?42,"RED-BE"
.GSTR STR?43,"RED-NOT"
.GSTR STR?44,"RED-PERS"
.GSTR STR?45,"DO-ORPHAN-TEST"
.GSTR STR?46,"RED-O-NP"
.GSTR STR?47,"RED-O-ADJ"
.GSTR STR?48,"RED-O-PP"
.GSTR STR?49,"Winner"
.GSTR STR?50,"Subject"
.GSTR STR?51,"Preaction"
.GSTR STR?52,"M-BEG"
.GSTR STR?53,"Container"
.GSTR STR?54,"PRSI"
.GSTR STR?55,"PRSO"
.GSTR STR?56,"are"
.GSTR STR?57,"word"
.GSTR STR?58,"letter"
.GSTR STR?59,"verb"
.GSTR STR?60,"me"
.GSTR STR?61,"have"
.GSTR STR?62,"try"
.GSTR STR?63,"empty"
.GSTR STR?64,"fly"
.GSTR STR?65,"dry"
.GSTR STR?66,"do"
.GSTR STR?67,"kiss"
.GSTR STR?68,"push"
.GSTR STR?69,"miss"
.GSTR STR?70,"pass"
.GSTR STR?71,"toss"
.GSTR STR?72,"touch"
.GSTR STR?73,"Time passes...
"
K-TIME-PASSES-MSG=STR?73
.GSTR STR?74,"Restart"
.GSTR STR?75,"Save"
.GSTR STR?76,"Restore"
.GSTR STR?77,"see"
.GSTR STR?78,"close"
.GSTR STR?79,"closed"
.GSTR STR?80,"take off"
.GSTR STR?81,"drop"
.GSTR STR?82,"land"
.GSTR STR?83,"get"
.GSTR STR?84,"[You didn't say w"
YOU-DIDNT-SAY-W=STR?84
.GSTR STR?85,"hear"
.GSTR STR?86,"locked"
.GSTR STR?87,"lock"
.GSTR STR?88,"look inside"
.GSTR STR?89,"look outside"
.GSTR STR?90,"put"
.GSTR STR?91,"give"
.GSTR STR?92,"swing"
.GSTR STR?93,"open"
.GSTR STR?94,"step"
.GSTR STR?95,"in it"
.GSTR STR?96,"an opening in"
.GSTR STR?97,"There's not enough room.
"
NOT-ENOUGH-ROOM=STR?97
.GSTR STR?98,"seem"
.GSTR STR?99,"Sitting on"
.GSTR STR?100,"take"
.GSTR STR?101,"reach"
.GSTR STR?102,"look"
.GSTR STR?103,"shrug"
.GSTR STR?104,"is"
.GSTR STR?105,"unlocked"
.GSTR STR?106,"go"
.GSTR STR?107,"follow"
.GSTR STR?108,"Which direction do you want to go in?"
K-WHICH-DIR-MSG=STR?108
.GSTR STR?109,"move around within"
.GSTR STR?110,"put on"
.GSTR STR?111,"has"
.GSTR STR?112,"can"
.GSTR STR?113,"may"
.GSTR STR?114,"could"
.GSTR STR?115,"would"
.GSTR STR?116,"should"
.GSTR STR?117,"will"
.GSTR STR?118,"might"
.GSTR STR?119,"must"
.GSTR STR?120,"chamber"
.GSTR STR?121,"hatch"
.GSTR STR?122,"""I swear it's all true, Bud. I saw...something. It was right in front of us and then it dived into the trench, pulling us along after it. Then we hit the side of the trench and I blacked out for a second. When I came to, Flatbed was spinning out of control into the trench. None of the controls worked. I did the only thing I could do. I bailed out. But I didn't kill those men..."" her voice trails off, ""...there was nothing I could do...""
"
K-UFO-MSG=STR?122
.GSTR STR?123,"door"
.GSTR STR?124,"life support"
.GSTR STR?125,"control box"
.GSTR STR?126,"cut"
.GSTR STR?127,"armed"
.GSTR STR?128,"disarmed"
.GSTR STR?129,"battery room"
.GSTR STR?130,"on"
.GSTR STR?131,"off"
.GSTR STR?132,"plugged in"
.GSTR STR?133,"gear storage"
.GSTR STR?134,"rec room"
.GSTR STR?135,"hose"
.GSTR STR?136,"fluid"
.GSTR STR?137,"[You don't need to refer to "
K-NO-REFER-MSG=STR?137
.GSTR STR?138,"appear"
.GSTR STR?139,"Debugging"
.GSTR STR?140,"Apple IIe"
.GSTR STR?141,"Macintosh"
.GSTR STR?142,"Amiga"
.GSTR STR?143,"Atari ST"
.GSTR STR?144,"IBM"
.GSTR STR?145,"Commodore 128"
.GSTR STR?146,"Commodore 64"
.GSTR STR?147,"Apple IIc"
.GSTR STR?148,"Apple IIgs"
.GSTR STR?149,"text"
.GSTR STR?150,"background"
.GSTR STR?151,"Please press a number from 1 to "
K-TYPE-NUMBER-MSG=STR?151
.GSTR STR?152,"no change"
.GSTR STR?153,"the standard color"
.GSTR STR?154,"black"
.GSTR STR?155,"red"
.GSTR STR?156,"green"
.GSTR STR?157,"yellow"
.GSTR STR?158,"blue"
.GSTR STR?159,"magenta"
.GSTR STR?160,"cyan"
.GSTR STR?161,"white"
.GSTR STR?162,"isn't likely"
.GSTR STR?163,"seems doubtful"
.GSTR STR?164,"seems unlikely"
.GSTR STR?165,"doesn't seem likely"
.GSTR STR?166,"not do anything useful"
.GSTR STR?167,"accomplish nothing"
.GSTR STR?168,"have no desirable effect"
.GSTR STR?169,"not be very productive"
.GSTR STR?170,"serve no purpose"
.GSTR STR?171,"be pointless"
.GSTR STR?172,"unusual"
.GSTR STR?173,"special"
.GSTR STR?174,"interesting"
.GSTR STR?175,"important"
.GSTR STR?176,"of interest"
.GSTR STR?177,"out of the ordinary"
.GSTR STR?178,"It's too dark to see."
K-TOO-DARK-MSG=STR?178
.GSTR STR?179,"[Talking to yourself is a bad sign.]"
K-TALK-TO-SELF-MSG=STR?179
.GSTR STR?180,"[How do you intend to do that?]"
K-HOW-INTEND-MSG=STR?180
.GSTR STR?181," You hear a loud hissing coming from somewhere in the room.
"
K-HISS-MSG=STR?181
.GSTR STR?182," It is a huge cylinder that looks like a giant capsule. It is supported by four legs that are welded to a steel base to provide stability. The base is raised up off the floor by about an inch.
On the front of the tank is a k-valve that looks a little like a beer tap."
K-GAS-TANK-MSG=STR?182
.GSTR STR?183,"thermometer"
.GSTR STR?184,"superbrief"
.GSTR STR?185,"stationary"
.GSTR STR?186,"recreation"
.GSTR STR?187,"photograph"
.GSTR STR?188,"observation"
.GSTR STR?189,"ladderwell"
.GSTR STR?190,"laboratory"
.GSTR STR?191,"extinguish"
.GSTR STR?192,"end.of.input"
.GSTR STR?193,"electronic"
.GSTR STR?194,"electrical"
.GSTR STR?195,"downstairs"
.GSTR STR?196,"descrambler"
.GSTR STR?197,"compressor"
.GSTR STR?198,"compression"
.GSTR STR?199,"communications"
.GSTR STR?200,"cocksucker"
.GSTR STR?201,"arc-welder"
.ENDSEG
.ENDI

20
alien.zabstr Normal file
View File

@ -0,0 +1,20 @@
<ROOM RM-TRENCH-BOTTOM (LOC ROOMS) (DESC "bottom of trench") (FLAGS FL-WATER
FL-LIGHTED) (SYNONYM TRENCH BOTTOM) (ADJECTIVE FOOT TRENCH) (IN TO
RM-ALIEN-CHAMBER) (UP TO RM-MIDSHIP-HATCH) (ACTION RT-RM-TRENCH-BOTTOM)>
<DEFINE-ROUTINE RT-RM-TRENCH-BOTTOM>
<OBJECT TH-PURPLE-BUTTON (LOC TH-ALIEN-SHIP) (DESC "purple button") (FLAGS
FL-NO-DESC) (SYNONYM BUTTON) (ADJECTIVE PURPLE) (ACTION RT-TH-PURPLE-BUTTON)>
<DEFINE-ROUTINE RT-TH-PURPLE-BUTTON>
<OBJECT TH-ALIEN-SHIP (LOC RM-TRENCH-BOTTOM) (DESC "alien ship") (FLAGS
FL-SEARCH FL-SURFACE) (SYNONYM SHIP) (ADJECTIVE ALIEN)>
<ROOM RM-ALIEN-CHAMBER (LOC ROOMS) (DESC "alien chamber") (FLAGS FL-WATER
FL-INSIDE FL-LIGHTED) (SYNONYM CHAMBER) (ADJECTIVE ALIEN) (ACTION
RT-RM-ALIEN-CHAMBER)>
<DEFINE-ROUTINE RT-RM-ALIEN-CHAMBER>
<OBJECT TH-FUSCHIA-BUTTON (LOC RM-ALIEN-CHAMBER) (DESC "fuschia button") (FLAGS
FL-NO-DESC) (SYNONYM BUTTON) (ADJECTIVE FUSCHIA) (ACTION RT-TH-FUSCHIA-BUTTON)>
<DEFINE-ROUTINE RT-TH-FUSCHIA-BUTTON>
<OBJECT CH-ALIEN (LOC RM-ALIEN-CHAMBER) (DESC "alien") (FLAGS FL-ALIVE FL-OPEN
FL-PERSON FL-SEARCH) (SYNONYM ALIEN)>

52
alien.zap Normal file
View File

@ -0,0 +1,52 @@
.FUNCT RT-RM-TRENCH-BOTTOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "arrive at"
?CND4: PRINTI " the bottom of the trench. You are next to a huge alien ship that will be much more vividly described in later versions of this game. Once we hook up the graphics, on the side of the ship you will see a picture of a panel with a series of dots on it. For now, let's just say there's a purple button that you have to push in order to get inside the ship.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-PURPLE-BUTTON:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " Pretty normal-looking button, considering it's purple."
?CCL5: EQUAL? PRSA,V?PUSH \FALSE
MOVE CH-PLAYER,RM-ALIEN-CHAMBER
PRINTR " The door swings open and you enter the Alien ship. You walk down a long, luminescent corridor and eventually come to a large room. Lindsey is sitting in the middle of the floor, her tear-stained face looking up at some large TV screens on the wall. You walk toward her. She silently stretches out her hand to take yours, and then motions you to look at the screens. You do so and quickly realize why she's been crying.
Up on the screen you see pictures of incredible destruction. Major cities all over the world are being inundated by water. In some places, the flooding is complete. In others it has just begun. But all over the planet, water is rising up to wipe out humanity in the flood that Noah was promised would never come.
One of the Alien creatures materializes at your side and explains why they are doing what they are doing. He bears a strong resemblance to Don Rubin. ""Soon there will be a puzzle here,"" he says. ""Otherwise, Bob will write it when he gets back from vacation. Until that time, simply push the fuschia button over there on the wall. Doing so will save the world and return you to Deepcore. Not a bad deal, if you ask me."""
.FUNCT RT-RM-ALIEN-CHAMBER:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "arrive at"
?CND4: PRINTI " the alien chamber. There is a fuschia button on the wall.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-FUSCHIA-BUTTON:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " Pretty normal-looking button, considering it's fuschia."
?CCL5: EQUAL? PRSA,V?PUSH \FALSE
MOVE CH-PLAYER,RM-SUB-BAY
MOVE CH-LINDSEY,RM-SUB-BAY
FSET CH-ALIEN,FL-BROKEN
PRINTR " A flash of lighting. A clap of thunder. And suddenly you and Lindsey are back in the Sub-bay."
.ENDI

187
alien.zil Normal file
View File

@ -0,0 +1,187 @@
;"***************************************************************************"
; "game : Abyss"
; "file : ALIEN.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 18 Mar 1989 14:02:54 $"
; "rev : $Revision: 1.2 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Crane crash"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
;"---------------------------------------------------------------------------"
; "RM-TRENCH-BOTTOM"
;"---------------------------------------------------------------------------"
<ROOM RM-TRENCH-BOTTOM
(LOC ROOMS)
(DESC "bottom of trench")
(FLAGS FL-WATER FL-LIGHTED)
(SYNONYM TRENCH BOTTOM)
(ADJECTIVE FOOT TRENCH)
(IN TO RM-ALIEN-CHAMBER)
(UP TO RM-MIDSHIP-HATCH)
(ACTION RT-RM-TRENCH-BOTTOM)
>
<ROUTINE RT-RM-TRENCH-BOTTOM ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL " You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are in">
)
(T
<TELL "arrive at">
)
>
<TELL
" the bottom of the trench. You are next to a huge alien ship that will be
much more vividly described in later versions of this game. Once we hook up
the graphics, on the side of the ship you will see a picture of a panel with
a series of dots on it. For now, let's just say there's a purple button that
you have to push in order to get inside the ship.|"
>
<RFALSE>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-PURPLE-BUTTON"
;"---------------------------------------------------------------------------"
<OBJECT TH-PURPLE-BUTTON
(LOC TH-ALIEN-SHIP)
(DESC "purple button")
(FLAGS FL-NO-DESC)
(SYNONYM BUTTON)
(ADJECTIVE PURPLE)
(ACTION RT-TH-PURPLE-BUTTON)
>
<ROUTINE RT-TH-PURPLE-BUTTON ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL " Pretty normal-looking button, considering it's purple." CR>
)
(<VERB? PUSH>
<MOVE ,CH-PLAYER ,RM-ALIEN-CHAMBER>
<TELL
" The door swings open and you enter the Alien ship. You walk down a long,
luminescent corridor and eventually come to a large room. Lindsey is sitting
in the middle of the floor, her tear-stained face looking up at some large TV
screens on the wall. You walk toward her. She silently stretches out her hand
to take yours, and then motions you to look at the screens. You do so and
quickly realize why she's been crying.|
Up on the screen you see pictures of incredible destruction. Major cities
all over the world are being inundated by water. In some places, the flooding
is complete. In others it has just begun. But all over the planet, water is
rising up to wipe out humanity in the flood that Noah was promised would
never come.|
One of the Alien creatures materializes at your side and explains why they
are doing what they are doing. He bears a strong resemblance to Don Rubin.
\"Soon there will be a puzzle here,\" he says. \"Otherwise, Bob will write it
when he gets back from vacation. Until that time, simply push the fuschia
button over there on the wall. Doing so will save the world and return you to
Deepcore. Not a bad deal, if you ask me.\"" CR
>
)
>
>
<OBJECT TH-ALIEN-SHIP
(LOC RM-TRENCH-BOTTOM)
(DESC "alien ship")
(FLAGS FL-SEARCH FL-SURFACE)
(SYNONYM SHIP)
(ADJECTIVE ALIEN)
>
;"---------------------------------------------------------------------------"
; "RM-ALIEN-CHAMBER"
;"---------------------------------------------------------------------------"
<ROOM RM-ALIEN-CHAMBER
(LOC ROOMS)
(DESC "alien chamber")
(FLAGS FL-WATER FL-INSIDE FL-LIGHTED)
(SYNONYM CHAMBER)
(ADJECTIVE ALIEN)
(ACTION RT-RM-ALIEN-CHAMBER)
>
<ROUTINE RT-RM-ALIEN-CHAMBER ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL " You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are in">
)
(T
<TELL "arrive at">
)
>
<TELL " the alien chamber. There is a fuschia button on the wall.|">
<RFALSE>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-FUSCHIA-BUTTON"
;"---------------------------------------------------------------------------"
<OBJECT TH-FUSCHIA-BUTTON
(LOC RM-ALIEN-CHAMBER)
(DESC "fuschia button")
(FLAGS FL-NO-DESC)
(SYNONYM BUTTON)
(ADJECTIVE FUSCHIA)
(ACTION RT-TH-FUSCHIA-BUTTON)
>
<ROUTINE RT-TH-FUSCHIA-BUTTON ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL " Pretty normal-looking button, considering it's fuschia." CR>
)
(<VERB? PUSH>
<MOVE ,CH-PLAYER ,RM-SUB-BAY>
<MOVE ,CH-LINDSEY ,RM-SUB-BAY>
<FSET ,CH-ALIEN ,FL-BROKEN>
<TELL
" A flash of lighting. A clap of thunder. And suddenly you and Lindsey are
back in the Sub-bay." CR
>
)
>
>
<OBJECT CH-ALIEN
(LOC RM-ALIEN-CHAMBER)
(DESC "alien")
(FLAGS FL-ALIVE FL-OPEN FL-PERSON FL-SEARCH)
(SYNONYM ALIEN)
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

64
be.zabstr Normal file
View File

@ -0,0 +1,64 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<CONSTANT QACTIONS <PLTABLE V-BE V-BE? 0>>
<SYNTAX BE OBJECT (EVERYWHERE) = V-BE>
<SYNTAX BE OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-BE>
<SYNTAX BE? OBJECT (EVERYWHERE) = V-BE?>
<SYNTAX BE? OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-BE?>
<SYNTAX WHO OBJECT (EVERYWHERE) = V-WHO>
<SYNTAX WHO OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHO>
<SYNTAX WHAT OBJECT (EVERYWHERE) = V-WHAT>
<SYNTAX WHAT OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHAT>
<SYNTAX WHERE OBJECT (EVERYWHERE) = V-WHERE>
<SYNTAX WHERE OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHERE>
<SYNTAX WHEN OBJECT (EVERYWHERE) = V-WHEN>
<SYNTAX WHEN OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHEN>
<SYNTAX WHY OBJECT (EVERYWHERE) = V-WHY>
<SYNTAX WHY OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHY>
<SYNTAX HOW OBJECT (EVERYWHERE) = V-HOW>
<SYNTAX HOW OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-HOW>
<SYNTAX CAN OBJECT (EVERYWHERE) = V-CAN?>
<SYNTAX MAY OBJECT (EVERYWHERE) = V-MAY?>
<SYNTAX DO OBJECT (EVERYWHERE) = V-DO?>
<SYNTAX COULD OBJECT (EVERYWHERE) = V-COULD?>
<SYNTAX WOULD OBJECT (EVERYWHERE) = V-WOULD?>
<SYNTAX SHOULD OBJECT (EVERYWHERE) = V-SHOULD?>
<SYNTAX MIGHT OBJECT (EVERYWHERE) = V-MIGHT?>
<SYNTAX WILL OBJECT (EVERYWHERE) = V-WILL?>
<SYNTAX MUST OBJECT (EVERYWHERE) = V-MUST?>
<DEFINE-ROUTINE V-STATEMENT>
<DEFINE-ROUTINE V-BE>
<DEFINE-ROUTINE TELL-Q-WORD>
<DEFINE-ROUTINE RIGHT-PREP?>
<CONSTANT ADJ-TABLE <LTABLE <VOC "OUTSIDE" ADJ> IS-OUTSIDE? <VOC "OPEN" ADJ>
IS-OPEN? <VOC "CLOSED" ADJ> IS-CLOSED? <VOC "LOCKED" ADJ> IS-LOCKED? <VOC
"UNLOCKED" ADJ> IS-UNLOCKED? <VOC "DEAD" ADJ> IS-DEAD? <VOC "ALIVE" ADJ>
IS-ALIVE? <VOC "QUIET" ADJ> IS-QUIET? <VOC "HERE" ADJ> IS-HERE?>>
<DEFINE-ROUTINE IS-QUIET?>
<DEFINE-ROUTINE IS-OUTSIDE?>
<DEFINE-ROUTINE IS-OPEN?>
<DEFINE-ROUTINE IS-CLOSED?>
<DEFINE-ROUTINE IS-LOCKED?>
<DEFINE-ROUTINE IS-UNLOCKED?>
<DEFINE-ROUTINE IS-DEAD?>
<DEFINE-ROUTINE IS-ALIVE?>
<DEFINE-ROUTINE IS-HERE?>
<DEFINE-ROUTINE PRSO-IS>
<DEFINE-ROUTINE IS-PRSO-ADJ?>
<DEFINE-ROUTINE YES-BUT?>
<DEFINE-ROUTINE V-CAN?>
<DEFINE-ROUTINE V-MAY?>
<DEFINE-ROUTINE V-DO?>
<DEFINE-ROUTINE V-COULD?>
<DEFINE-ROUTINE V-WOULD?>
<DEFINE-ROUTINE V-SHOULD?>
<DEFINE-ROUTINE V-MIGHT?>
<DEFINE-ROUTINE V-WILL?>
<DEFINE-ROUTINE V-MUST?>
<DEFINE-ROUTINE V-BE?>
<DEFINE-ROUTINE V-WHO>
<DEFINE-ROUTINE V-WHAT>
<DEFINE-ROUTINE V-WHEN>
<DEFINE-ROUTINE V-WHERE>
<DEFINE-ROUTINE V-WHY>
<DEFINE-ROUTINE V-HOW>

374
be.zap Normal file
View File

@ -0,0 +1,374 @@
.FUNCT V-STATEMENT:ANY:0:0
CALL1 V-DO?
RSTACK
.FUNCT V-BE:ANY:0:0,TMP,NOT?,ADJ?,LOC?,OBJ,PREP
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK >NOT?
GET PARSE-RESULT,11 >ADJ?
GET PARSE-RESULT,9 >LOC?
EQUAL? PRSA,V?HOW /?CTR2
EQUAL? PRSA,V?WHEN,V?WHY,V?WHERE /?CTR2
EQUAL? PRSA,V?WHAT,V?WHO,V?BE? \?CCL3
?CTR2: EQUAL? PRSI,INTADJ \?CCL9
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK \?CND10
PRINTI "n't"
?CND10: PRINTC 32
PRINTB ADJ?
PRINTC 46
CRLF
RTRUE
?CCL9: EQUAL? PRSI,INTPP \?CCL13
CALL1 P-PP-PREP >PREP
ZERO? PREP /?CCL16
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /?CCL16
EQUAL? PRSA,V?BE? \?CCL21
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
CALL RIGHT-PREP?,PREP,PRSO,OBJ
ZERO? STACK \?CND22
PRINTI "n't"
?CND22: PRINTC 32
PRINTB PREP
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL21: PRINTI "You want to know "
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
PRINTB PREP
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL16: PRINTI "You want to know "
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
GET LOC?,1
PRINTB STACK
PRINTC 32
GET LOC?,2
ICALL2 NP-PRINT,STACK
PRINTC 46
CRLF
RTRUE
?CCL13: ZERO? PRSI \?CCL25
EQUAL? PRSA,V?WHERE \?CCL25
LOC PRSO >LOC?
IN? PRSO,HERE \?CCL30
ICALL PRSO-IS,FALSE-VALUE,TRUE-VALUE
PRINTR " here."
?CCL30: EQUAL? LOC?,GLOBAL-OBJECTS \?CCL32
PRINTI "No doubt"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
ICALL RT-PRINT-VERB,PRSO,STR?56
PRINTR " around here somewhere."
?CCL32: EQUAL? LOC?,LOCAL-GLOBALS \?CCL34
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL34
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " nearby."
?CCL34: FSET? LOC?,FL-PERSON \?CCL38
ICALL RT-PRINT-OBJ,LOC?,K-ART-THE,TRUE-VALUE,STR?111
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL38: CALL2 META-LOC,PRSO
EQUAL? STACK,HERE \?CCL40
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
ICALL2 RT-IN-ON-MSG,LOC?
ICALL RT-PRINT-OBJ,LOC?,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL40: IN? LOC?,ROOMS \?CCL42
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE
PRINTI " is probably "
FSET? PRSO,TOUCHBIT \?CCL45
PRINTI "still in"
ICALL RT-PRINT-OBJ,LOC?,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL45: PRINTR "lying around somewhere."
?CCL42: PRINTI "That's an excellent question. Just where"
ICALL RT-PRINT-VERB,PRSO,STR?56
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTC 63
CRLF
RTRUE
?CCL25: PRINTI "You want to know "
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND46
ICALL RT-PRINT-OBJ,PRSI,K-ART-A
?CND46: PRINTC 63
CRLF
RTRUE
?CCL3: EQUAL? PRSI,INTADJ \?CCL50
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL53
ZERO? NOT? /?CCL56
PRINTI "Wrong,"
JUMP ?CND54
?CCL56: PRINTI "Right,"
?CND54: ICALL2 PRSO-IS,FALSE-VALUE
JUMP ?CND51
?CCL53: ZERO? NOT? /?CCL59
PRINTI "Right,"
JUMP ?CND57
?CCL59: PRINTI "Wrong,"
?CND57: ICALL2 PRSO-IS,TRUE-VALUE
?CND51: PRINTC 32
PRINTB ADJ?
PRINTC 46
CRLF
RTRUE
?CCL50: EQUAL? PRSI,INTPP \?CCL61
PRINTI "So, you say"
ICALL2 PRSO-IS,NOT?
CALL1 P-PP-PREP >PREP
ZERO? PREP /?CCL64
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /?CCL64
PRINTB PREP
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
JUMP ?CND62
?CCL64: GET LOC?,1
PRINTB STACK
GET LOC?,2
CALL2 NP-PRINT,STACK
ICALL RT-PRINT-OBJ,STACK,K-ART-THE
?CND62: PRINTC 46
CRLF
RTRUE
?CCL61: PRINTI "So you think"
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND67
ICALL RT-PRINT-OBJ,PRSI,K-ART-A
?CND67: PRINTC 63
CRLF
RTRUE
.FUNCT TELL-Q-WORD:ANY:0:0
EQUAL? PRSA,V?BE? \?CCL3
PRINTI "if"
RTRUE
?CCL3: EQUAL? PRSA,V?WHY \?CCL5
PRINTI "why"
RTRUE
?CCL5: EQUAL? PRSA,V?WHO \?CCL7
PRINTI "who"
RTRUE
?CCL7: EQUAL? PRSA,V?WHAT \?CCL9
PRINTI "what"
RTRUE
?CCL9: EQUAL? PRSA,V?WHERE \?CCL11
PRINTI "where"
RTRUE
?CCL11: EQUAL? PRSA,V?WHEN \?CCL13
PRINTI "when"
RTRUE
?CCL13: EQUAL? PRSA,V?HOW \?CCL15
PRINTI "how"
RTRUE
?CCL15: PRINTB P-PRSA-WORD
RTRUE
.FUNCT RIGHT-PREP?:ANY:3:3,PREP,OBJ,CONT
IN? OBJ,CONT \FALSE
EQUAL? PREP,W?IN,W?INSIDE \?CCL5
CALL2 RT-SEE-INSIDE?,CONT
ZERO? STACK /FALSE
RTRUE
?CCL5: EQUAL? PREP,W?ON \FALSE
FSET? CONT,FL-SURFACE /TRUE
RFALSE
.FUNCT IS-QUIET?:ANY:1:1,OBJ
RTRUE
.FUNCT IS-OUTSIDE?:ANY:1:1,OBJ
FSET? HERE,FL-INDOORS /FALSE
RTRUE
.FUNCT IS-OPEN?:ANY:1:1,OBJ
FSET? OBJ,FL-OPENABLE \FALSE
FSET? OBJ,FL-OPEN /TRUE
RFALSE
.FUNCT IS-CLOSED?:ANY:1:1,OBJ
FSET? OBJ,FL-OPENABLE \FALSE
FSET? OBJ,FL-OPEN /FALSE
RTRUE
.FUNCT IS-LOCKED?:ANY:1:1,OBJ
FSET? OBJ,FL-OPENABLE \FALSE
FSET? OBJ,FL-LOCKED /TRUE
RFALSE
.FUNCT IS-UNLOCKED?:ANY:1:1,OBJ
FSET? OBJ,FL-OPENABLE \FALSE
FSET? OBJ,FL-LOCKED /FALSE
RTRUE
.FUNCT IS-DEAD?:ANY:1:1,OBJ
FSET? OBJ,FL-PERSON \FALSE
FSET? OBJ,FL-ALIVE /FALSE
RTRUE
.FUNCT IS-ALIVE?:ANY:1:1,OBJ
FSET? OBJ,FL-PERSON \FALSE
FSET? OBJ,FL-ALIVE /TRUE
RFALSE
.FUNCT IS-HERE?:ANY:1:1,OBJ,L
LOC OBJ >L
?PRG1: ZERO? L /FALSE
EQUAL? L,GLOBAL-OBJECTS,LOCAL-GLOBALS,ROOMS /FALSE
EQUAL? L,HERE /TRUE
LOC L >L
JUMP ?PRG1
.FUNCT PRSO-IS:ANY:1:2,NOT?,CAP?
ZERO? CAP? /?CCL3
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE
JUMP ?CND1
?CCL3: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
?CND1: ICALL RT-PRINT-VERB,PRSO,STR?56
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
.FUNCT IS-PRSO-ADJ?:ANY:1:1,ADJ,TMP
GETPT PRSO,P?ADJECTIVE >TMP
ZERO? TMP /?CCL3
PTSIZE TMP
DIV STACK,2
INTBL? ADJ,TMP,STACK /TRUE
?CCL3: GET ADJ-TABLE,0
INTBL? ADJ,ADJ-TABLE,STACK >TMP \FALSE
GET TMP,1
CALL STACK,PRSO
ZERO? STACK \TRUE
RFALSE
.FUNCT YES-BUT?:ANY:2:2,STR1,STR2
GET PARSE-RESULT,10
ZERO? STACK \FALSE
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE
PRINTC 32
PRINT STR1
PRINTI ", but "
PRINT STR2
ICALL RT-PRINT-OBJ,PRSO,K-ART-HE
PRINTC 63
CRLF
RTRUE
.FUNCT V-CAN?:ANY:0:0
CALL YES-BUT?,STR?112,STR?113
RSTACK
.FUNCT V-MAY?:ANY:0:0
CALL YES-BUT?,STR?113,STR?112
RSTACK
.FUNCT V-DO?:ANY:0:0
GET PARSE-RESULT,10
ZERO? STACK \FALSE
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?66
PRINTR ", but why?"
.FUNCT V-COULD?:ANY:0:0
CALL YES-BUT?,STR?114,STR?115
RSTACK
.FUNCT V-WOULD?:ANY:0:0
CALL YES-BUT?,STR?115,STR?114
RSTACK
.FUNCT V-SHOULD?:ANY:0:0
CALL YES-BUT?,STR?116,STR?117
RSTACK
.FUNCT V-MIGHT?:ANY:0:0
CALL YES-BUT?,STR?118,STR?117
RSTACK
.FUNCT V-WILL?:ANY:0:0
CALL YES-BUT?,STR?117,STR?116
RSTACK
.FUNCT V-MUST?:ANY:0:0
CALL YES-BUT?,STR?119,STR?112
RSTACK
.FUNCT V-BE?:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHO:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHAT:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHEN:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHERE:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHY:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-HOW:ANY:0:0
CALL1 V-BE
RSTACK
.ENDI

550
be.zil Normal file
View File

@ -0,0 +1,550 @@
;"***************************************************************************"
; "game : Abyss"
; "file : BE.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 09 Dec 1988 23:24:34 $"
; "rev : $Revision: 1.0 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Be verbs and syntaxes"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
; "PERFORM uses two additional GLOBALs, 'q-verb' and subject, each of which
can be false. Examples:
'IS THE POPE CATHOLIC'
becomes
<SETG PRSQ T>
<PERFORM ,V?BE ,POPE ,INTADJ ;T>
'DOES THE GOVERNMENT TAKE MONEY FROM ME'
becomes
<SETG PRSQ ,V?DO>
<SETG PRSS ,GOVERNMENT>
<PERFORM ,V?TAKE ,MONEY ,ME>
'WHY DOES THE GOVERNMENT TAKE MONEY FROM ME'
becomes
<SETG PRSQ ,V?WHY>
<SETG PRSS ,GOVERNMENT>
<PERFORM ,V?TAKE ,MONEY ,ME>
When PERFORM notices the presence of a q-verb, it calls action routines
in this order:
WINNER
SUBJECT
; M-BEG
Q-PREACTION (from the QACTIONS table)
; OBJECT #2
; OBJECT #1
Q-ACTION (from the QACTIONS table) or V-STATEMENT
PERFORM also handles statements, for example:
'MY NAME IS ARTHUR DENT'
becomes
<PERFORM ,V?IS ,NAME ,ARTHUR>"
<CONSTANT QACTIONS
<PLTABLE
V-BE V-BE? 0
; "V-DISEMBARK V-DISEMBARK? 0
V-DROP V-DROP? PRE-DROP?
V-TAKE V-TAKE? PRE-TAKE?"
>
>
<SYNTAX BE OBJECT (EVERYWHERE) = V-BE>
<SYNTAX BE OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-BE>
<SYNTAX BE? OBJECT (EVERYWHERE) = V-BE?>
<SYNTAX BE? OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-BE?>
<SYNTAX WHO OBJECT (EVERYWHERE) = V-WHO>
<SYNTAX WHO OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHO>
<SYNTAX WHAT OBJECT (EVERYWHERE) = V-WHAT>
<SYNTAX WHAT OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHAT>
<SYNTAX WHERE OBJECT (EVERYWHERE) = V-WHERE>
<SYNTAX WHERE OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHERE>
<SYNTAX WHEN OBJECT (EVERYWHERE) = V-WHEN>
<SYNTAX WHEN OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHEN>
<SYNTAX WHY OBJECT (EVERYWHERE) = V-WHY>
<SYNTAX WHY OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-WHY>
<SYNTAX HOW OBJECT (EVERYWHERE) = V-HOW>
<SYNTAX HOW OBJECT (EVERYWHERE) OBJECT (EVERYWHERE) = V-HOW>
<SYNTAX CAN OBJECT (EVERYWHERE) = V-CAN?>
<SYNTAX MAY OBJECT (EVERYWHERE) = V-MAY?>
<SYNTAX DO OBJECT (EVERYWHERE) = V-DO?>
<SYNTAX COULD OBJECT (EVERYWHERE) = V-COULD?>
<SYNTAX WOULD OBJECT (EVERYWHERE) = V-WOULD?>
<SYNTAX SHOULD OBJECT (EVERYWHERE) = V-SHOULD?>
<SYNTAX MIGHT OBJECT (EVERYWHERE) = V-MIGHT?>
<SYNTAX WILL OBJECT (EVERYWHERE) = V-WILL?>
<SYNTAX MUST OBJECT (EVERYWHERE) = V-MUST?>
<ROUTINE V-STATEMENT ()
<V-DO?>
>
<ROUTINE V-BE ("AUX" TMP NOT? ADJ? LOC? OBJ PREP)
<SET NOT? <ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>>
<SET ADJ? <PARSE-ADJ ,PARSE-RESULT>>
<SET LOC? <PARSE-LOC ,PARSE-RESULT>>
<COND
(<VERB? BE? WHO WHAT WHERE WHY WHEN HOW>
<COND
(<EQUAL? ,PRSI ,INTADJ>
<TELL The+verb ,PRSO "are">
<COND
(<NOT <IS-PRSO-ADJ? .ADJ?>>
<TELL "n't">
)
>
<TELL !\ >
<PRINTB .ADJ?>
<TELL !\. CR>
)
(<EQUAL? ,PRSI ,INTPP>
<COND
(<AND <SET PREP <P-PP-PREP>>
<SET OBJ <P-PP-OBJ>>
>
<COND
(<VERB? BE?>
<TELL The+verb ,PRSO "are">
<COND
(<NOT <RIGHT-PREP? .PREP ,PRSO .OBJ>>
<TELL "n't">
)
>
<TELL !\ >
<PRINTB .PREP>
<TELL the .OBJ !\. CR>
)
(T
<TELL "You want to know ">
<TELL-Q-WORD>
<PRSO-IS .NOT?>
<TELL !\ >
<PRINTB .PREP>
<TELL the .OBJ !\. CR>
)
>
)
(T
<TELL "You want to know ">
<TELL-Q-WORD>
<PRSO-IS .NOT?>
<TELL !\ >
<PRINTB <PP-PREP .LOC?>>
<TELL !\ >
<NP-PRINT <PP-NOUN .LOC?>>
<TELL !\. CR>
)
>
)
(<AND <NOT ,PRSI>
<VERB? WHERE>
>
<SET LOC? <LOC ,PRSO>>
<COND
(<IN? ,PRSO ,HERE>
<PRSO-IS <> T>
<TELL " here." CR>
)
(<EQUAL? .LOC? ,GLOBAL-OBJECTS>
<TELL "No doubt" the ,PRSO verb ,PRSO "are" " around here somewhere." CR>
)
(<AND <EQUAL? .LOC? ,LOCAL-GLOBALS>
<GLOBAL-IN? ,PRSO ,HERE>
>
<TELL The+verb ,PRSO "are" " nearby." CR>
)
(<FSET? .LOC? ,FL-PERSON>
<TELL The+verb .LOC? "has" the ,PRSO !\. CR>
)
(<EQUAL? <META-LOC ,PRSO> ,HERE>
<TELL The+verb ,PRSO "are" in .LOC? the .LOC? !\. CR>
)
(<IN? .LOC? ,ROOMS>
<TELL The ,PRSO " is probably ">
<COND
(<FSET? ,PRSO ,TOUCHBIT>
<TELL "still in" the .LOC? !\. CR>
)
(T
<TELL "lying around somewhere." CR>
)
>
)
(T
<TELL "That's an excellent question. Just where" verb ,PRSO "are" the ,PRSO !\? CR>
)
>
)
(T
<TELL "You want to know ">
<TELL-Q-WORD>
<PRSO-IS .NOT?>
<COND
(,PRSI
<TELL a ,PRSI>
)
>
<TELL !\? CR>
)
>
)
(T
<COND
(<EQUAL? ,PRSI ,INTADJ>
<COND
(<IS-PRSO-ADJ? .ADJ?>
<COND
(.NOT?
<TELL "Wrong,">
)
(T
<TELL "Right,">
)
>
<PRSO-IS <>>
)
(T
<COND
(.NOT?
<TELL "Right,">
)
(T
<TELL "Wrong,">
)
>
<PRSO-IS T>
)
>
<TELL !\ >
<PRINTB .ADJ?>
<TELL !\. CR>
)
(<EQUAL? ,PRSI ,INTPP>
<TELL "So, you say">
<PRSO-IS .NOT?>
<COND
(<AND <SET PREP <P-PP-PREP>>
<SET OBJ <P-PP-OBJ>>
>
<PRINTB .PREP>
<TELL the .OBJ>
)
(T
<PRINTB <PP-PREP .LOC?>>
<TELL the <NP-PRINT <PP-NOUN .LOC?>>>
)
>
<TELL !\. CR>
)
(T
<TELL "So you think">
<PRSO-IS .NOT?>
<COND
(,PRSI
<TELL a ,PRSI>
)
>
<TELL !\? CR>
)
>
)
>
>
;<ROUTINE P-NEGATIVE? ()
<ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>
>
<ROUTINE TELL-Q-WORD ()
<COND
(<VERB? BE?>
<TELL "if">
)
(<VERB? WHY>
<TELL "why">
)
(<VERB? WHO>
<TELL "who">
)
(<VERB? WHAT>
<TELL "what">
)
(<VERB? WHERE>
<TELL "where">
)
(<VERB? WHEN>
<TELL "when">
)
(<VERB? HOW>
<TELL "how">
)
(T
<PRINTB ,P-PRSA-WORD>
)
>
>
<ROUTINE RIGHT-PREP? (PREP OBJ CONT)
<COND
(<NOT <IN? .OBJ .CONT>>
<RFALSE>
)
(<EQUAL? .PREP ,W?IN ,W?INSIDE>
<COND
(<RT-SEE-INSIDE? .CONT>
<RTRUE>
)
(T
<RFALSE>
)
>
)
(<AND <EQUAL? .PREP ,W?ON>
<FSET? .CONT ,FL-SURFACE>
>
<RTRUE>
)
>
>
<CONSTANT ADJ-TABLE
<LTABLE
<VOC "OUTSIDE" ADJ>
IS-OUTSIDE?
; <VOC "INSIDE" ADJ>
; IS-INSIDE?
<VOC "OPEN" ADJ>
IS-OPEN?
<VOC "CLOSED" ADJ>
IS-CLOSED?
<VOC "LOCKED" ADJ>
IS-LOCKED?
<VOC "UNLOCKED" ADJ>
IS-UNLOCKED?
<VOC "DEAD" ADJ>
IS-DEAD?
<VOC "ALIVE" ADJ>
IS-ALIVE?
<VOC "QUIET" ADJ>
IS-QUIET?
<VOC "HERE" ADJ>
IS-HERE?
>
>
<ROUTINE IS-QUIET? (OBJ)
<RTRUE>
>
<ROUTINE IS-OUTSIDE? (OBJ)
<NOT <FSET? ,HERE ,FL-INDOORS>>
>
;<ROUTINE IS-INSIDE? (OBJ)
<FSET? ,HERE ,FL-INDOORS>
>
<ROUTINE IS-OPEN? (OBJ)
<AND
<FSET? .OBJ ,FL-OPENABLE>
<FSET? .OBJ ,FL-OPEN>
>
>
<ROUTINE IS-CLOSED? (OBJ)
<AND
<FSET? .OBJ ,FL-OPENABLE>
<NOT <FSET? .OBJ ,FL-OPEN>>
>
>
<ROUTINE IS-LOCKED? (OBJ)
<AND
<FSET? .OBJ ,FL-OPENABLE>
<FSET? .OBJ ,FL-LOCKED>
>
>
<ROUTINE IS-UNLOCKED? (OBJ)
<AND
<FSET? .OBJ ,FL-OPENABLE>
<NOT <FSET? .OBJ ,FL-LOCKED>>
>
>
<ROUTINE IS-DEAD? (OBJ)
<AND
<FSET? .OBJ ,FL-PERSON>
<NOT <FSET? .OBJ ,FL-ALIVE>>
>
>
<ROUTINE IS-ALIVE? (OBJ)
<AND
<FSET? .OBJ ,FL-PERSON>
<FSET? .OBJ ,FL-ALIVE>
>
>
<ROUTINE IS-HERE? (OBJ "AUX" L)
<SET L <LOC .OBJ>>
<REPEAT ()
<COND
(<OR <ZERO? .L>
<EQUAL? .L ,GLOBAL-OBJECTS ,LOCAL-GLOBALS ,ROOMS>
>
<RFALSE>
)
(<EQUAL? .L ,HERE>
<RTRUE>
)
(T
<SET L <LOC .L>>
)
>
>
>
<ROUTINE PRSO-IS (NOT? "OPT" (CAP? <>))
<COND
(.CAP?
<TELL The ,PRSO>
)
(T
<TELL the ,PRSO>
)
>
<TELL verb ,PRSO "are">
<COND
(.NOT?
<TELL "n't">
)
>
>
<ROUTINE IS-PRSO-ADJ? (ADJ "AUX" TMP)
<COND
(<AND <SET TMP <GETPT ,PRSO ,P?ADJECTIVE>>
<INTBL? .ADJ .TMP </ <PTSIZE .TMP> 2>>
>
<RTRUE>
)
(<AND <SET TMP <INTBL? .ADJ ,ADJ-TABLE <GET ,ADJ-TABLE 0>>>
<APPLY <GET .TMP 1> ,PRSO>
>
<RTRUE>
)
>
>
;<ROUTINE PP? (P N "AUX" (TMP <PARSE-LOC ,PARSE-RESULT>))
<COND
(<NOT .TMP>
<RFALSE>
)
(<NOT <AND
.P
<EQUAL? .P <P-PP-PREP>>
>
>
<RFALSE>
)
(<NOT <AND
.N
<EQUAL? .N <P-PP-OBJ>>
>
>
<RFALSE>
)
(T
<RTRUE>
)
>
>
<ROUTINE YES-BUT? (STR1 STR2)
<COND
(<NOT <PARSE-QW ,PARSE-RESULT>>
<TELL The ,PRSO !\ .STR1 ", but " .STR2 he ,PRSO !\? CR>
)
>
>
<ROUTINE V-CAN? ()
<YES-BUT? "can" "may">
>
<ROUTINE V-MAY? ()
<YES-BUT? "may" "can">
>
<ROUTINE V-DO? ()
<COND
(<NOT <PARSE-QW ,PARSE-RESULT>>
<TELL The+verb ,PRSO "do" ", but why?" CR>
)
>
>
<ROUTINE V-COULD? ()
<YES-BUT? "could" "would">
>
<ROUTINE V-WOULD? ()
<YES-BUT? "would" "could">
>
<ROUTINE V-SHOULD? ()
<YES-BUT? "should" "will">
>
<ROUTINE V-MIGHT? ()
<YES-BUT? "might" "will">
>
<ROUTINE V-WILL? ()
<YES-BUT? "will" "should">
>
<ROUTINE V-MUST? ()
<YES-BUT? "must" "can">
>
<ROUTINE V-BE? ()
<V-BE>
>
<ROUTINE V-WHO ()
<V-BE>
>
<ROUTINE V-WHAT ()
<V-BE>
>
<ROUTINE V-WHEN ()
<V-BE>
>
<ROUTINE V-WHERE ()
<V-BE>
>
<ROUTINE V-WHY ()
<V-BE>
>
<ROUTINE V-HOW ()
<V-BE>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

58
breds.zabstr Normal file
View File

@ -0,0 +1,58 @@
<FLAGS-AND-DEFAULTS (("ONE-BYTE-PARTS-OF-SPEECH" %<>)("IN-ZILCH" T)(
"WORD-FLAGS-IN-TABLE" T)) ()>
<ZZPACKAGE "REDS">
<ENTRY RED-BE-FORM RED-BE RED-NOT RED-SNBN RED-SNBA RED-SNBP RED-SNBAP
RED-CANDO>
<INCLUDE "BASEDEFS" "FIND" "PBITDEFS" "PDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM" "PSTACK">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<NEW-ADD-WORD "AM" TOBE <> <ORB ,FIRST-PERSON ,PRESENT-TENSE>>
<NEW-ADD-WORD "ARE" TOBE <> <ORB ,FIRST-PERSON ,SECOND-PERSON ,THIRD-PERSON ,
PRESENT-TENSE ,PLURAL-FLAG>>
<NEW-ADD-WORD "IS" TOBE <> <ORB ,THIRD-PERSON ,PRESENT-TENSE>>
<NEW-ADD-WORD "WAS" TOBE <> <ORB ,FIRST-PERSON ,THIRD-PERSON ,PAST-TENSE>>
<NEW-ADD-WORD "WERE" TOBE <> <ORB ,FIRST-PERSON ,SECOND-PERSON ,THIRD-PERSON ,
PAST-TENSE ,PLURAL-FLAG>>
<NEW-ADD-WORD "WILL" TOBE <> ,FUTURE-TENSE>
<NEW-ADD-WORD "SHALL" TOBE <> ,FUTURE-TENSE>
<ADD-WORD "HOW" QWORD>
<ADD-WORD "WHAT" QWORD>
<ADD-WORD "WHEN" QWORD>
<ADD-WORD "WHERE" QWORD>
<ADD-WORD "WHO" QWORD>
<ADD-WORD "WHY" QWORD>
<DEFINE-ROUTINE RED-BE-FORM>
<DEFINE-ROUTINE EXCH-4-5-Q>
<DEFINE-ROUTINE RED-SBNN>
<DEFINE-ROUTINE RED-SNBN>
<DEFINE-ROUTINE DETERMINE-SUBJ>
<DEFINE-ROUTINE RED-SBNA>
<DEFINE-ROUTINE RED-SNBA>
<OBJECT INTADJ (LOC GLOBAL-OBJECTS) (DESC "adjective") (SYNONYM L.G)>
<DEFINE-ROUTINE RED-SBNP>
<DEFINE-ROUTINE RED-SNBP>
<DEFINE-ROUTINE RED-SNBAP>
<DEFINE-ROUTINE P-PP-OBJ>
<DEFINE-ROUTINE P-PP-PREP>
<OBJECT INTPP (LOC GLOBAL-OBJECTS) (DESC "prep phrase") (SYNONYM L.G)>
<DEFINE-ROUTINE RED-SQBN>
<DEFINE-ROUTINE RED-BE>
<DEFINE-ROUTINE RED-NOT>
<NEW-ADD-WORD "CAN" CANDO <>>
<NEW-ADD-WORD "COULD" CANDO <>>
<NEW-ADD-WORD "DO" CANDO <>>
<NEW-ADD-WORD "DOES" CANDO <VOC "DO"> <ORB ,THIRD-PERSON>>
<NEW-ADD-WORD "DID" CANDO <VOC "DO"> ,PAST-TENSE>
<NEW-ADD-WORD "MAY" CANDO <>>
<NEW-ADD-WORD "MIGHT" CANDO <>>
<NEW-ADD-WORD "WILL" CANDO <>>
<NEW-ADD-WORD "SHALL" CANDO <VOC "WILL"> ,FUTURE-TENSE>
<NEW-ADD-WORD "WOULD" CANDO <>>
<NEW-ADD-WORD "SHOULD" CANDO <>>
<NEW-ADD-WORD "MUST" CANDO <>>
<DEFINE-ROUTINE RED-CANDO>
<DEFINE-ROUTINE INSERT-WHAT>
<END-SEGMENT>
<ENDPACKAGE>

572
breds.zap Normal file
View File

@ -0,0 +1,572 @@
.SEGMENT "0"
.FUNCT RED-BE-FORM:ANY:0:2,N,TYP
PUT PARSE-RESULT,2,TLEXV
POP DATA-STACK
PUT PARSE-RESULT,1,STACK
RTRUE
.FUNCT EXCH-4-5-Q:ANY:3:3,RED,N,TYP,X1,X2,X3,X4,X5
POP DATA-STACK >X1
POP DATA-STACK >X2
POP DATA-STACK >X3
POP DATA-STACK >X4
POP DATA-STACK >X5
EQUAL? N,6 \?CCL3
DEC 'N
POP DATA-STACK
PUT PARSE-RESULT,10,STACK
JUMP ?CND1
?CCL3: PUT PARSE-RESULT,10,0
?CND1: CALL2 PMEM?,X3
ZERO? STACK /?CCL6
XPUSH X3,DATA-STACK /?CND4
JUMP ?CND4
?CCL6: XPUSH X4,DATA-STACK /?CND4
?CND4: XPUSH X5,DATA-STACK /?BOGUS9
?BOGUS9: CALL2 PMEM?,X3
ZERO? STACK /?CCL12
XPUSH X4,DATA-STACK /?CND10
JUMP ?CND10
?CCL12: XPUSH X3,DATA-STACK /?CND10
?CND10: XPUSH X2,DATA-STACK /?BOGUS15
?BOGUS15: XPUSH X1,DATA-STACK /?BOGUS16
?BOGUS16: GET PARSE-RESULT,16
BOR PARSE-QUESTION,STACK
PUT PARSE-RESULT,16,STACK
CALL RED,N,TYP
RSTACK
.FUNCT RED-SBNN:ANY:0:2,N,TYP
CALL EXCH-4-5-Q,RED-SNBN,N,TYP
RSTACK
.FUNCT RED-SNBN:ANY:0:2,N,TYP,OK,NPP,OBJ,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >NPP
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
CALL DETERMINE-OBJ,NPP,2 >OBJ
ZERO? OBJ \?CCL19
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,NPP
RSTACK
?CCL19: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD26
PUSH ?TMP1
JUMP ?PEN24
?PRD26: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN24: BTST STACK,32768 /?CCL21
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD29
PUSH ?TMP1
JUMP ?PEN27
?PRD29: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN27: BAND STACK,256
BAND STACK,32767
ZERO? STACK \FALSE
?CCL21: PUT PARSE-RESULT,6,OBJ
RETURN PARSE-RESULT
.FUNCT DETERMINE-SUBJ:ANY:1:3,VERB,SHORT,N1,DATA,TMP,OBJ1,?TMP1
ZERO? SHORT \?CND1
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
GET PARSE-RESULT,16
BOR PARSE-NOT,STACK
PUT PARSE-RESULT,16,STACK
?CND1: POP DATA-STACK
ZERO? SHORT /?CCL7
POP DATA-STACK >TMP
PUT PARSE-RESULT,10,TMP
JUMP ?CND5
?CCL7: GET PARSE-RESULT,10 >TMP
?CND5: EQUAL? TMP,0,1 /?CCL9
GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD16
PUSH ?TMP1
JUMP ?PEN14
?PRD16: GET TMP,3
GET STACK,4
?PEN14: BTST STACK,32768 /?CCL9
GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD19
PUSH ?TMP1
JUMP ?PEN17
?PRD19: GET TMP,3
GET STACK,4
?PEN17: BAND STACK,256
BAND STACK,32767
ZERO? STACK \?CND8
?CCL9: GET PARSE-RESULT,16
BTST STACK,2 \?CCL22
SET 'TMP,W?BE?
JUMP ?CND8
?CCL22: SET 'TMP,W?BE
?CND8: GET TMP,3 >DATA
ZERO? SHORT /?CCL28
GET DATA,2 >TMP
JUMP ?CND26
?CCL28: GET DATA,3 >TMP
?CND26: ZERO? TMP \?CCL25
CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN
RSTACK
?CCL25: CALL GET-SYNTAX,TMP,1,1 >TMP
ZERO? TMP \?CCL30
CALL PARSER-ERROR,0,PARSER-ERROR-NOUND
RSTACK
?CCL30: ZERO? N1 /?PRD35
PUSH N1
JUMP ?PEN33
?PRD35: POP DATA-STACK >N1
PUSH N1
?PEN33: CALL DETERMINE-OBJ,STACK,1 >OBJ1
ZERO? OBJ1 \?CCL32
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,N1
RSTACK
?CCL32: PUT PARSE-RESULT,5,OBJ1
GET TMP,0
PUT PARSE-RESULT,4,STACK
RTRUE
.FUNCT RED-SBNA:ANY:0:2,N,TYP
CALL EXCH-4-5-Q,RED-SNBA,N,TYP
RSTACK
.FUNCT RED-SNBA:ANY:0:2,N,TYP,OK,ADJ,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >ADJ
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD24
PUSH ?TMP1
JUMP ?PEN22
?PRD24: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN22: BTST STACK,32768 /?CCL19
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD27
PUSH ?TMP1
JUMP ?PEN25
?PRD27: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN25: BAND STACK,256
BAND STACK,32767
ZERO? STACK \FALSE
?CCL19: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >X
PUT X,1,1
PUT X,3,INTADJ
PUT PARSE-RESULT,6,X
PUT PARSE-RESULT,11,ADJ
RETURN PARSE-RESULT
.FUNCT RED-SBNP:ANY:0:2,N,TYP
CALL EXCH-4-5-Q,RED-SNBP,N,TYP
RSTACK
.FUNCT RED-SNBP:ANY:0:2,N,TYP,OK,PP,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >PP
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD25
PUSH ?TMP1
JUMP ?PEN23
?PRD25: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN23: BTST STACK,32768 /?CCL20
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD28
PUSH ?TMP1
JUMP ?PEN26
?PRD28: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN26: BAND STACK,256
BAND STACK,32767
ZERO? STACK \FALSE
?CCL20: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >X
PUT X,1,1
PUT X,3,INTPP
PUT PARSE-RESULT,6,X
GET PARSE-RESULT,3
CALL REDUCE-LOCATION,PP,STACK,2 >OK
ZERO? OK /?CCL31
PUT PARSE-RESULT,9,OK
RETURN PARSE-RESULT
?CCL31: PUT PARSE-RESULT,9,PP
RETURN PARSE-RESULT
.FUNCT RED-SNBAP:ANY:0:2,N,TYP,OK,ADJ,PP,VERB,X,?TMP1
GET PARSE-RESULT,1 >VERB
POP DATA-STACK >PP
POP DATA-STACK >ADJ
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? VERB,?TMP1,STACK,132 >X \?CCL6
GET X,1
JUMP ?CND4
?CCL6: PUSH FALSE-VALUE
?CND4: BTST STACK,1024 \?CCL3
POP DATA-STACK
EQUAL? TRUE-VALUE,STACK /?CND1
SET 'OK,TRUE-VALUE
JUMP ?CND1
?CCL3: POP DATA-STACK
EQUAL? TRUE-VALUE,STACK \?CND1
SET 'OK,TRUE-VALUE
?CND1: ZERO? OK /FALSE
CALL2 DETERMINE-SUBJ,VERB
ZERO? STACK /FALSE
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD25
PUSH ?TMP1
JUMP ?PEN23
?PRD25: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN23: BTST STACK,32768 /?CCL20
GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD28
PUSH ?TMP1
JUMP ?PEN26
?PRD28: GET PARSE-RESULT,5
GET STACK,4
GET STACK,2
GET STACK,3
GET STACK,4
?PEN26: BAND STACK,256
BAND STACK,32767
ZERO? STACK \FALSE
?CCL20: CALL DO-PMEM-ALLOC,4,4 >X
PUT X,1,1
PUT X,3,INTPP
SET 'OK,X
PUT PARSE-RESULT,6,OK
GET PARSE-RESULT,3
CALL REDUCE-LOCATION,PP,STACK,2 >OK
ZERO? OK /?CCL31
PUT PARSE-RESULT,9,OK
JUMP ?CND29
?CCL31: GET PP,2
CALL2 DETERMINE-OBJ,STACK >OK
ZERO? OK /?CND32
PUT PP,2,OK
PUTB PP,1,PMEM-TYPE-LOCATION
?CND32: PUT PARSE-RESULT,9,PP
?CND29: PUT PARSE-RESULT,11,ADJ
RETURN PARSE-RESULT
.FUNCT P-PP-OBJ:ANY:0:0,TMP
GET PARSE-RESULT,9 >TMP
ZERO? TMP /FALSE
GETB TMP,1
EQUAL? STACK,6 \FALSE
GET TMP,2 >TMP
ZERO? TMP /FALSE
GET TMP,3
RSTACK
.FUNCT P-PP-PREP:ANY:0:0,TMP
GET PARSE-RESULT,9 >TMP
ZERO? TMP /FALSE
GET TMP,1
RSTACK
.FUNCT RED-SQBN:ANY:0:2,N,TYP,?TMP1
GET PARSE-RESULT,1 >?TMP1
POP DATA-STACK
CALL DETERMINE-SUBJ,?TMP1,TRUE-VALUE,STACK
ZERO? STACK /FALSE
RETURN PARSE-RESULT
.FUNCT RED-BE:ANY:0:2,N,TYP,E
EQUAL? N,1 \TRUE
POP DATA-STACK >E
EQUAL? W?BE,E \FALSE
RETURN E
.FUNCT RED-NOT:ANY:0:2,N,TYP,E
EQUAL? N,1 \TRUE
POP DATA-STACK >E
EQUAL? W?NOT,E \FALSE
RETURN E
.FUNCT RED-CANDO:ANY:0:2,N,TYP,TMP,OBJ,SUBJ,WD,END,?TMP1
ZERO? N /TRUE
EQUAL? N,1 \?CCL5
POP DATA-STACK >SUBJ
GET SUBJ,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD13
PUSH ?TMP1
JUMP ?PEN11
?PRD13: GET SUBJ,2
GET STACK,3
GET STACK,4
?PEN11: BTST STACK,32768 /?CCL8
GET SUBJ,2
GET STACK,4 >?TMP1
ZERO? ?TMP1 /?PRD16
PUSH ?TMP1
JUMP ?PEN14
?PRD16: GET SUBJ,2
GET STACK,3
GET STACK,4
?PEN14: BAND STACK,256
BAND STACK,32767
ZERO? STACK \FALSE
?CCL8: CALL2 DETERMINE-OBJ,SUBJ >OBJ
ZERO? OBJ \?CCL19
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,SUBJ
RSTACK
?CCL19: GET OBJ,1
EQUAL? STACK,1 \FALSE
GET OBJ,3
FSET? STACK,PERSONBIT \FALSE
PUT PARSE-RESULT,13,OBJ
RTRUE
?CCL5: POP DATA-STACK >SUBJ
CALL2 PMEM?,SUBJ
ZERO? STACK /?CCL26
POP DATA-STACK
GET PARSE-RESULT,16
BOR PARSE-NOT,STACK
PUT PARSE-RESULT,16,STACK
JUMP ?CND24
?CCL26: EQUAL? TRUE-VALUE,SUBJ /?CND27
GET PARSE-RESULT,16
BOR PARSE-NOT,STACK
PUT PARSE-RESULT,16,STACK
?CND27: POP DATA-STACK >SUBJ
EQUAL? N,3 \?CND24
PUT PARSE-RESULT,14,SUBJ
?CND24: POP DATA-STACK >TMP
EQUAL? N,3 \?CCL33
SET 'SUBJ,TMP
GET PARSE-RESULT,14 >TMP
JUMP ?CND31
?CCL33: GET PARSE-RESULT,16
BOR PARSE-QUESTION,STACK
PUT PARSE-RESULT,16,STACK
PUT PARSE-RESULT,14,TMP
?CND31: GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD42
PUSH ?TMP1
JUMP ?PEN40
?PRD42: GET TMP,3
GET STACK,4
?PEN40: BTST STACK,32768 /?PRD37
GET TMP,4 >?TMP1
ZERO? ?TMP1 /?PRD45
PUSH ?TMP1
JUMP ?PEN43
?PRD45: GET TMP,3
GET STACK,4
?PEN43: BAND STACK,1
BAND STACK,32767
ZERO? STACK \?CND34
?PRD37: GET TMP,3 >OBJ
ZERO? OBJ /?CND34
SET 'TMP,OBJ
?CND34: GET TMP,3
GET STACK,2 >TMP
ZERO? TMP \?CCL48
CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN
RSTACK
?CCL48: CALL GET-SYNTAX,TMP,1,1 >TMP
ZERO? TMP \?CCL50
CALL PARSER-ERROR,0,PARSER-ERROR-NOUND
RSTACK
?CCL50: CALL DETERMINE-OBJ,SUBJ,1 >OBJ
ZERO? OBJ \?CCL52
CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,SUBJ
RSTACK
?CCL52: PUT PARSE-RESULT,13,OBJ
PUT PARSE-RESULT,15,TMP
EQUAL? N,3 /TRUE
POP DATA-STACK >TMP
EQUAL? TRUE-VALUE,TMP \?CCL57
PUSH 0
JUMP ?CND55
?CCL57: PUSH TMP
?CND55: PUT PARSE-RESULT,10,STACK
EQUAL? TMP,W?WHAT,W?WHO \TRUE
INTBL? W?PERIOD,TLEXV,P-LEN,132 >SUBJ /?BOGUS60
?BOGUS60: ZERO? SUBJ \?CND61
INTBL? W?THEN,TLEXV,P-LEN,132 >SUBJ /?CND61
?CND61: ZERO? SUBJ \?CND64
INTBL? W??,TLEXV,P-LEN,132 >SUBJ /?CND64
?CND64: ZERO? SUBJ \?CND67
SUB P-LEN,1
MUL STACK,4
ADD TLEXV,STACK >SUBJ
?CND67: SET 'END,4
?PRG69: GET SUBJ,0 >WD
EQUAL? TMP,WD /TRUE
GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD80
PUSH ?TMP1
JUMP ?PEN78
?PRD80: GET WD,3
GET STACK,4
?PEN78: BTST STACK,32768 /?CCL75
GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD83
PUSH ?TMP1
JUMP ?PEN81
?PRD83: GET WD,3
GET STACK,4
?PEN81: BAND STACK,1
BAND STACK,32767
ZERO? STACK /?CCL75
ADD SUBJ,4
ICALL INSERT-WHAT,TMP,STACK
RTRUE
?CCL75: GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD90
PUSH ?TMP1
JUMP ?PEN88
?PRD90: GET WD,3
GET STACK,4
?PEN88: BTST STACK,32768 /?CCL85
GET WD,4 >?TMP1
ZERO? ?TMP1 /?PRD93
PUSH ?TMP1
JUMP ?PEN91
?PRD93: GET WD,3
GET STACK,4
?PEN91: BAND STACK,2048
BAND STACK,32767
ZERO? STACK /?CCL85
ADD SUBJ,END
ICALL INSERT-WHAT,TMP,STACK
RTRUE
?CCL85: SUB SUBJ,4 >SUBJ
GRTR? TLEXV,SUBJ \?PRG69
SET 'END,0
RTRUE
.FUNCT INSERT-WHAT:ANY:2:2,TMP,SUBJ
SUB SUBJ,4
GET STACK,0
EQUAL? TMP,STACK /FALSE
SUB SUBJ,P-LEXV
DIV STACK,2
ICALL INSERT-ADJS-WD,STACK,TMP
INC 'P-OLEN
CALL2 COPY-INPUT,1
RSTACK
.ENDSEG
.ENDI

25
command.zabstr Normal file
View File

@ -0,0 +1,25 @@
<ROOM RM-COMMAND-MODULE (LOC ROOMS) (DESC "command module") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM MODULE) (ADJECTIVE COMMAND) (AFT TO RM-CORRIDOR) (GLOBAL
LG-WALL RM-CORRIDOR) (ACTION RT-RM-COMMAND-MODULE)>
<DEFINE-ROUTINE RT-RM-COMMAND-MODULE>
<OBJECT TH-MONITORS (LOC RM-COMMAND-MODULE) (DESC "monitors") (FLAGS FL-NO-DESC
) (SYNONYM MONITOR MONITORS) (ACTION RT-TH-MONITORS)>
<DEFINE-ROUTINE RT-TH-MONITORS>
<OBJECT TH-COMMAND-CHAIR (LOC RM-COMMAND-MODULE) (DESC "chair") (FLAGS
FL-NO-DESC) (SYNONYM CHAIR) (ADJECTIVE COMMAND) (ACTION RT-TH-COMMAND-CHAIR)>
<DEFINE-ROUTINE RT-TH-COMMAND-CHAIR>
<DEFINE-ROUTINE RT-COMMAND-MENU>
<DEFINE-ROUTINE RT-EMERGENCY-MENU>
<DEFINE-ROUTINE RT-ROV-MENU>
<DEFINE-ROUTINE RT-AIR-MENU>
<DEFINE-ROUTINE RT-GAS-LEVEL-MSG>
<DEFINE-ROUTINE RT-POWER-MENU>
<DEFINE-ROUTINE RT-LIGHT-MENU>
<DEFINE-ROUTINE RT-SUPPORT-MENU>
<GLOBAL GL-WATER-PUMP-ON <> <> BYTE>
<DEFINE-ROUTINE RT-PUMP-MENU>
<OBJECT TH-DESCRAMBLER-CONTROL-BOX (LOC TH-BIN) (DESC "descrambler control box"
) (MENU "control box") (SYNONYM DESCRAMBLER BOX) (ADJECTIVE CONTROL DESCRAMBLER
) (ACTION RT-TH-DESCRAMBLER-CONTROL-BOX)>
<DEFINE-ROUTINE RT-TH-DESCRAMBLER-CONTROL-BOX>

510
command.zap Normal file
View File

@ -0,0 +1,510 @@
.FUNCT RT-RM-COMMAND-MODULE:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
PRINTI "You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: ICALL RT-PRINT-OBJ,RM-COMMAND-MODULE,K-ART-THE
PRINTI ", a long narrow cabin like the inside of a Winnebago packed with instrumentation. At the far end, a chair sits in front of a bank of monitors. The only exit is in the aft wall."
CRLF
RFALSE
?CCL3: EQUAL? CONTEXT,M-BEG \?CCL8
EQUAL? PRSA,V?SIT \FALSE
EQUAL? PRSO,ROOMS \FALSE
CALL1 RT-COMMAND-MENU
RSTACK
?CCL8: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-MONITORS:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTC TAB
PRINTR "The monitors glow with data gathered from all over Deepcore."
?CCL5: EQUAL? PRSA,V?SIT \FALSE
CALL1 RT-COMMAND-MENU
RSTACK
.FUNCT RT-TH-COMMAND-CHAIR:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTC TAB
PRINTR "The chair is right in front of the main control panel."
?CCL5: EQUAL? PRSA,V?ENTER,V?SIT \FALSE
CALL1 RT-COMMAND-MENU
RSTACK
.FUNCT RT-COMMAND-MENU:ANY:0:0,C,L,ON?,X1,Y1,X2,Y2,?TMP2,?TMP1
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,16 >X2
CALL2 L-PIXELS,12 >Y2
MOUSE-LIMIT -1
CLEAR -1
GET 0,18 >?TMP1
MUL 6,GL-FONT-Y
SUB ?TMP1,STACK
ADD 1,STACK
WINPOS 0,STACK,1
MUL 6,GL-FONT-Y >?TMP1
GET 0,17
WINSIZE 0,?TMP1,STACK
ADD GL-FONT-Y,1
WINPOS 2,STACK,1
GET 0,18 >?TMP2
MUL 7,GL-FONT-Y
SUB ?TMP2,STACK >?TMP1
GET 0,17
WINSIZE 2,?TMP1,STACK
WINPOS 7,1,1
GET 0,18 >?TMP1
GET 0,17
WINSIZE 7,?TMP1,STACK
SET 'GL-SL-HERE,FALSE-VALUE
?PRG1: CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Main menu"
ICALL CCURSET,4,1
PRINTI "Emergency"
ICALL CCURSET,4,15
PRINTC 69
ICALL CCURSET,5,1
PRINTI "ROV"
ICALL CCURSET,5,15
PRINTC 82
ICALL CCURSET,6,1
PRINTI "Air"
ICALL CCURSET,6,15
PRINTC 65
ICALL CCURSET,7,1
PRINTI "Power"
ICALL CCURSET,7,15
PRINTC 80
ICALL CCURSET,8,1
PRINTI "Lights"
ICALL CCURSET,8,15
PRINTC 76
ICALL CCURSET,9,1
PRINTI "Life Support"
ICALL CCURSET,9,15
PRINTC 83
ICALL CCURSET,10,1
PRINTI "Pump"
ICALL CCURSET,10,15
PRINTC 77
ICALL CCURSET,11,1
PRINTI "Exit"
ICALL CCURSET,11,15
PRINTC 88
?PRG3: SCREEN 0
SET 'GL-INPUT-TIMEOUT,FALSE-VALUE
INPUT 1,3,RT-STOP-READ >C
ZERO? GL-INPUT-TIMEOUT \?CCL7
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL10
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CCL13
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL16
SET 'C,101
JUMP ?REP4
?CCL16: EQUAL? L,2 \?CCL18
SET 'C,114
JUMP ?REP4
?CCL18: EQUAL? L,3 \?CCL20
SET 'C,97
JUMP ?REP4
?CCL20: EQUAL? L,4 \?CCL22
SET 'C,112
JUMP ?REP4
?CCL22: EQUAL? L,5 \?CCL24
SET 'C,108
JUMP ?REP4
?CCL24: EQUAL? L,6 \?CCL26
SET 'C,115
JUMP ?REP4
?CCL26: EQUAL? L,7 \?CCL28
SET 'C,109
JUMP ?REP4
?CCL28: SET 'C,120
JUMP ?REP4
?CCL13: SOUND S-BEEP
JUMP ?PRG3
?CCL10: LESS? C,65 /?CND29
GRTR? C,90 /?CND29
ADD C,32 >C
?CND29: EQUAL? C,101,114,97 /?REP4
EQUAL? C,112,108,115 /?REP4
EQUAL? C,109,120 /?REP4
SOUND S-BEEP
JUMP ?PRG3
?CCL7: SCREEN 2
ICALL CCURSET,4,1
ZERO? ON? /?PRT41
SET 'ON?,0
JUMP ?PRE43
?PRT41: SET 'ON?,1
?PRE43: ZERO? ON? /?CND39
HLIGHT K-H-INV
?CND39: PRINTI "Emergency"
HLIGHT K-H-NRM
JUMP ?PRG3
?REP4: EQUAL? C,101 \?CCL46
ICALL1 RT-EMERGENCY-MENU
JUMP ?PRG1
?CCL46: EQUAL? C,114 \?CCL48
ICALL1 RT-ROV-MENU
JUMP ?PRG1
?CCL48: EQUAL? C,97 \?CCL50
ICALL1 RT-AIR-MENU
JUMP ?PRG1
?CCL50: EQUAL? C,112 \?CCL52
ICALL1 RT-POWER-MENU
JUMP ?PRG1
?CCL52: EQUAL? C,108 \?CCL54
ICALL1 RT-LIGHT-MENU
JUMP ?PRG1
?CCL54: EQUAL? C,115 \?CCL56
ICALL1 RT-SUPPORT-MENU
JUMP ?PRG1
?CCL56: EQUAL? C,109 \?CCL58
ICALL1 RT-PUMP-MENU
JUMP ?PRG1
?CCL58: EQUAL? C,120 \?PRG1
CLEAR -1
ICALL1 INIT-STATUS-LINE
SCREEN 0
PRINTC TAB
PRINTR "You get up from the command chair."
.FUNCT RT-EMERGENCY-MENU:ANY:0:0,X1,Y1,X2,Y2,C,L
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,25 >X2
CALL2 L-PIXELS,6 >Y2
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Emergency menu"
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-KLAXON-ON /?CCL3
PRINTI "ON "
JUMP ?CND1
?CCL3: PRINTI "OFF"
?CND1: HLIGHT K-H-NRM
ICALL CCURSET,4,4
PRINTI "Emergency klaxons"
ICALL CCURSET,4,24
PRINTC 75
HLIGHT K-H-NRM
ICALL CCURSET,5,4
PRINTI "Exit"
ICALL CCURSET,5,24
PRINTC 88
?PRG4: SCREEN 0
INPUT 1 >C
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL8
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CND6
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL13
SET 'C,107
JUMP ?CND6
?CCL13: SET 'C,120
JUMP ?CND6
?CCL8: LESS? C,65 /?CND6
GRTR? C,90 /?CND6
ADD C,32 >C
?CND6: EQUAL? C,107 \?CCL19
SCREEN 2
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-KLAXON-ON /?PRT23
SET 'GL-KLAXON-ON,0
JUMP ?PRE25
?PRT23: SET 'GL-KLAXON-ON,1
?PRE25: ZERO? GL-KLAXON-ON /?CCL22
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-KLAXON,STACK
PRINTI "ON "
JUMP ?CND20
?CCL22: ICALL2 RT-DEQUEUE,RT-I-KLAXON
PRINTI "OFF"
?CND20: HLIGHT K-H-NRM
JUMP ?PRG4
?CCL19: EQUAL? C,120 /TRUE
SOUND S-BEEP
JUMP ?PRG4
.FUNCT RT-ROV-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "R.O.V. menu"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-AIR-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Breathing Mix menu"
ICALL CCURSET,4,1
PRINTI "Oxygen: "
ICALL RT-PRINT-FLOAT,GL-OXYGEN-QTY,K-OXYGEN-FACTOR
PRINTI "% - "
ICALL RT-GAS-LEVEL-MSG,GL-OXYGEN-QTY,K-OXY-LOW-1,K-OXY-HIGH-1,K-OXY-NOM
PRINTI "
Carbon dioxide: "
ICALL RT-PRINT-FLOAT,GL-CO2-QTY,K-CO2-FACTOR
PRINTI "% - "
ICALL RT-GAS-LEVEL-MSG,GL-CO2-QTY,-1,K-CO2-HIGH-1,K-CO2-NOM
PRINTI "
Nitrogen: "
ICALL RT-PRINT-FLOAT,GL-NITROGEN-QTY,K-NITROGEN-FACTOR
PRINTI "% - "
ICALL RT-GAS-LEVEL-MSG,GL-NITROGEN-QTY,K-NIT-LOW-1,K-NIT-HIGH-1,K-NIT-NOM
PRINTI "
Helium: "
ICALL RT-PRINT-FLOAT,GL-HELIUM-QTY,K-HELIUM-FACTOR
PRINTI "%
"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-GAS-LEVEL-MSG:ANY:4:4,QTY,LOW,HIGH,NOM
GRTR? QTY,LOW /?CCL3
PRINTI "low"
RTRUE
?CCL3: LESS? QTY,HIGH /?CCL5
PRINTI "high"
RTRUE
?CCL5: EQUAL? QTY,NOM \?CCL7
PRINTI "nominal"
RTRUE
?CCL7: LESS? QTY,NOM \?CCL9
PRINTI "less than nominal"
RTRUE
?CCL9: PRINTI "more than nominal"
RTRUE
.FUNCT RT-POWER-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Power menu"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-LIGHT-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Lighting menu"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-SUPPORT-MENU:ANY:0:0,X1,Y1,X2,Y2,C,L
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,28 >X2
CALL2 L-PIXELS,9 >Y2
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Life support menu"
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-SCRUBBERS-ON /?CCL3
PRINTI "ON "
JUMP ?CND1
?CCL3: PRINTI "OFF"
?CND1: HLIGHT K-H-NRM
ICALL CCURSET,4,4
PRINTI "CO2 scrubbers"
ICALL CCURSET,4,27
PRINTC 83
ICALL CCURSET,5,1
HLIGHT K-H-INV
ZERO? GL-HEATERS-ON /?CCL6
PRINTI "ON "
JUMP ?CND4
?CCL6: PRINTI "OFF"
?CND4: HLIGHT K-H-NRM
ICALL CCURSET,5,4
PRINTI "Heaters"
ICALL CCURSET,5,27
PRINTC 72
ICALL CCURSET,6,1
HLIGHT K-H-INV
PRINTI "ON "
HLIGHT K-H-NRM
ICALL CCURSET,6,4
PRINTI "Helium de-scramblers"
ICALL CCURSET,6,27
PRINTC 68
ICALL CCURSET,7,1
HLIGHT K-H-INV
PRINTI "ON "
HLIGHT K-H-NRM
ICALL CCURSET,7,4
PRINTI "De-humidifiers"
ICALL CCURSET,7,27
PRINTC 77
HLIGHT K-H-NRM
ICALL CCURSET,8,4
PRINTI "Exit"
ICALL CCURSET,8,27
PRINTC 88
ICALL CCURSET,4,50
PRINTI "Interior temp:"
ICALL CCURSET,5,50
ICALL RT-PRINT-FLOAT,GL-DEEPCORE-TEMP,K-TEMP-FACTOR
PRINTI " deg. F"
?PRG7: SCREEN 0
INPUT 1 >C
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL11
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CND9
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL16
SET 'C,115
JUMP ?CND9
?CCL16: EQUAL? L,2 \?CCL18
SET 'C,104
JUMP ?CND9
?CCL18: EQUAL? L,3 \?CCL20
SET 'C,100
JUMP ?CND9
?CCL20: EQUAL? L,4 \?CCL22
SET 'C,109
JUMP ?CND9
?CCL22: SET 'C,120
JUMP ?CND9
?CCL11: LESS? C,65 /?CND9
GRTR? C,90 /?CND9
ADD C,32 >C
?CND9: EQUAL? C,115 \?CCL28
ZERO? GL-SCRUBBERS-ON /?PRT29
SET 'GL-SCRUBBERS-ON,0
JUMP ?PRE31
?PRT29: SET 'GL-SCRUBBERS-ON,1
?PRE31: SCREEN 2
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-SCRUBBERS-ON /?CCL34
PRINTI "ON "
JUMP ?CND32
?CCL34: PRINTI "OFF"
?CND32: HLIGHT K-H-NRM
JUMP ?PRG7
?CCL28: EQUAL? C,104 \?CCL36
ZERO? GL-HEATERS-ON /?PRT37
SET 'GL-HEATERS-ON,0
JUMP ?PRE39
?PRT37: SET 'GL-HEATERS-ON,1
?PRE39: SCREEN 2
ICALL CCURSET,5,1
HLIGHT K-H-INV
ZERO? GL-HEATERS-ON /?CCL42
PRINTI "ON "
JUMP ?CND40
?CCL42: PRINTI "OFF"
?CND40: HLIGHT K-H-NRM
JUMP ?PRG7
?CCL36: EQUAL? C,100 /?PRG7
EQUAL? C,109 /?PRG7
EQUAL? C,120 /TRUE
SOUND S-BEEP
JUMP ?PRG7
.FUNCT RT-PUMP-MENU:ANY:0:0,X1,Y1,X2,Y2,C,L
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,24 >X2
CALL2 L-PIXELS,6 >Y2
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Pump and compressor menu"
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-WATER-PUMP-ON /?CCL3
PRINTI "ON "
JUMP ?CND1
?CCL3: PRINTI "OFF"
?CND1: HLIGHT K-H-NRM
ICALL CCURSET,4,4
PRINTI "Fresh water pumps"
ICALL CCURSET,4,23
PRINTC 80
HLIGHT K-H-NRM
ICALL CCURSET,5,4
PRINTI "Exit"
ICALL CCURSET,5,23
PRINTC 88
?PRG4: SCREEN 0
INPUT 1 >C
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL8
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CND6
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL13
SET 'C,112
JUMP ?CND6
?CCL13: SET 'C,120
JUMP ?CND6
?CCL8: LESS? C,65 /?CND6
GRTR? C,90 /?CND6
ADD C,32 >C
?CND6: EQUAL? C,112 \?CCL19
SCREEN 2
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-WATER-PUMP-ON /?PRT23
SET 'GL-WATER-PUMP-ON,0
JUMP ?PRE25
?PRT23: SET 'GL-WATER-PUMP-ON,1
?PRE25: ZERO? GL-WATER-PUMP-ON /?CCL22
PRINTI "ON "
JUMP ?CND20
?CCL22: PRINTI "OFF"
?CND20: HLIGHT K-H-NRM
JUMP ?PRG4
?CCL19: EQUAL? C,120 /TRUE
SOUND S-BEEP
JUMP ?PRG4
.FUNCT RT-TH-DESCRAMBLER-CONTROL-BOX:ANY:0:1,CONTEXT
RFALSE
.ENDI

775
command.zil Normal file
View File

@ -0,0 +1,775 @@
;"***************************************************************************"
; "game : Abyss"
; "file : COMMAND.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:43:42 $"
; "rev : $Revision: 1.9 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Miscellaneous"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
;"---------------------------------------------------------------------------"
; "RM-COMMAND-MODULE"
;"---------------------------------------------------------------------------"
<ROOM RM-COMMAND-MODULE
(LOC ROOMS)
(DESC "command module")
(FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM MODULE)
(ADJECTIVE COMMAND)
(AFT TO RM-CORRIDOR)
(GLOBAL LG-WALL RM-CORRIDOR)
(ACTION RT-RM-COMMAND-MODULE)
>
<ROUTINE RT-RM-COMMAND-MODULE ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL TAB "You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are in">
)
(T
<TELL "enter">
)
>
<TELL
the ,RM-COMMAND-MODULE ", a long narrow cabin like the inside of a Winnebago
packed with instrumentation. At the far end, a chair sits in front of a bank
of monitors. The only exit is in the aft wall." CR
>
<RFALSE>
)
(<MC-CONTEXT? ,M-BEG>
<COND
(<AND <VERB? SIT>
<MC-PRSO? ,ROOMS>
>
<RT-COMMAND-MENU>
)
>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-MONITORS"
;"---------------------------------------------------------------------------"
<OBJECT TH-MONITORS
(LOC RM-COMMAND-MODULE)
(DESC "monitors")
(FLAGS FL-NO-DESC)
(SYNONYM MONITOR MONITORS)
(ACTION RT-TH-MONITORS)
>
<ROUTINE RT-TH-MONITORS ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL
TAB "The monitors glow with data gathered from all over Deepcore." CR
>
)
(<VERB? SIT>
<RT-COMMAND-MENU>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-COMMAND-CHAIR"
;"---------------------------------------------------------------------------"
<OBJECT TH-COMMAND-CHAIR
(LOC RM-COMMAND-MODULE)
(DESC "chair")
(FLAGS FL-NO-DESC)
(SYNONYM CHAIR)
(ADJECTIVE COMMAND)
(ACTION RT-TH-COMMAND-CHAIR)
>
<ROUTINE RT-TH-COMMAND-CHAIR ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL
TAB "The chair is right in front of the main control panel." CR
>
)
(<VERB? SIT ENTER>
<RT-COMMAND-MENU>
)
>
>
<ROUTINE RT-COMMAND-MENU ("AUX" C L (ON? <>) X1 Y1 X2 Y2)
<SET X1 1>
<SET Y1 <L-PIXELS 4>>
<SET X2 <C-PIXELS 16>>
<SET Y2 <L-PIXELS 12>>
<MOUSE-LIMIT -1>
<CLEAR -1>
; "Text window"
<WINPOS 0 <+ 1 <- <LOWCORE VWRD> <* 6 ,GL-FONT-Y>>> 1>
<WINSIZE 0 <* 6 ,GL-FONT-Y> <LOWCORE HWRD>>
; "Status line -- Already defined."
; <WINPOS 1 1 1>
; <WINSIZE 1 ,GL-FONT-Y <LOWCORE HWRD>>
; "Menu window"
<WINPOS 2 <+ ,GL-FONT-Y 1> 1>
<WINSIZE 2 <- <LOWCORE VWRD> <* 7 ,GL-FONT-Y>> <LOWCORE HWRD>>
<WINPOS 7 1 1>
<WINSIZE 7 <LOWCORE VWRD> <LOWCORE HWRD>>
<SETG GL-SL-HERE <>>
<REPEAT ()
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Main menu">
<CCURSET 4 1>
<TELL "Emergency">
<CCURSET 4 15>
<TELL "E">
<CCURSET 5 1>
<TELL "ROV">
<CCURSET 5 15>
<TELL "R">
<CCURSET 6 1>
<TELL "Air">
<CCURSET 6 15>
<TELL "A">
<CCURSET 7 1>
<TELL "Power">
<CCURSET 7 15>
<TELL "P">
<CCURSET 8 1>
<TELL "Lights">
<CCURSET 8 15>
<TELL "L">
<CCURSET 9 1>
<TELL "Life Support">
<CCURSET 9 15>
<TELL "S">
<CCURSET 10 1>
<TELL "Pump">
<CCURSET 10 15>
<TELL "M">
<CCURSET 11 1>
<TELL "Exit">
<CCURSET 11 15>
<TELL "X">
<REPEAT ()
<SCREEN 0>
<SETG GL-INPUT-TIMEOUT <>>
<SET C <INPUT 1 3 ,RT-STOP-READ>>
<COND
(<NOT ,GL-INPUT-TIMEOUT>
<COND
(<EQUAL? .C ,K-CLICK1 ,K-CLICK2>
<COND
(<MOUSE-INPUT? 2 .X1 .Y1 .X2 .Y2>
<SET L <PIXELS-L ,GL-MOUSE-Y>>
<COND
(<EQUAL? .L 1>
<SET C !\e>
)
(<EQUAL? .L 2>
<SET C !\r>
)
(<EQUAL? .L 3>
<SET C !\a>
)
(<EQUAL? .L 4>
<SET C !\p>
)
(<EQUAL? .L 5>
<SET C !\l>
)
(<EQUAL? .L 6>
<SET C !\s>
)
(<EQUAL? .L 7>
<SET C !\m>
)
(T
<SET C !\x>
)
>
<RETURN>
)
(T
<SOUND ,S-BEEP>
)
>
)
(T
<COND
(<AND <G=? .C !\A>
<L=? .C !\Z>
>
<SET C <+ .C 32>> ; "Change to lower case"
)
>
<COND
(<EQUAL? .C !\e !\r !\a !\p !\l !\s !\m !\x>
<RETURN>
)
(T
<SOUND ,S-BEEP>
)
>
)
>
)
(T
<SCREEN 2>
<CCURSET 4 1>
<COND
(<SET ON? <NOT .ON?>>
<HLIGHT ,K-H-INV>
)
>
<TELL "Emergency">
<HLIGHT ,K-H-NRM>
)
>
>
<COND
(<EQUAL? .C !\e>
<RT-EMERGENCY-MENU>
)
(<EQUAL? .C !\r>
<RT-ROV-MENU>
)
(<EQUAL? .C !\a>
<RT-AIR-MENU>
)
(<EQUAL? .C !\p>
<RT-POWER-MENU>
)
(<EQUAL? .C !\l>
<RT-LIGHT-MENU>
)
(<EQUAL? .C !\s>
<RT-SUPPORT-MENU>
)
(<EQUAL? .C !\m>
<RT-PUMP-MENU>
)
(<EQUAL? .C !\x>
<RETURN>
)
>
>
<CLEAR -1>
<INIT-STATUS-LINE>
<SCREEN 0>
<TELL TAB "You get up from the command chair." CR>
>
<ROUTINE RT-EMERGENCY-MENU ("AUX" X1 Y1 X2 Y2)
<SET X1 1>
<SET Y1 <L-PIXELS 4>>
<SET X2 <C-PIXELS 25>>
<SET Y2 <L-PIXELS 6>>
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Emergency menu">
<CCURSET 4 1>
<HLIGHT ,K-H-INV>
<COND
(,GL-KLAXON-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
<CCURSET 4 4>
<TELL "Emergency klaxons">
<CCURSET 4 24>
<TELL "K">
<HLIGHT ,K-H-NRM>
<CCURSET 5 4>
<TELL "Exit">
<CCURSET 5 24>
<TELL "X">
<REPEAT ()
<SCREEN 0>
<SET C <INPUT 1>>
<COND
(<EQUAL? .C ,K-CLICK1 ,K-CLICK2>
<COND
(<MOUSE-INPUT? 2 .X1 .Y1 .X2 .Y2>
<SET L <PIXELS-L ,GL-MOUSE-Y>>
<COND
(<EQUAL? .L 1>
<SET C !\k>
)
(T
<SET C !\x>
)
>
)
>
)
(<AND <G=? .C !\A>
<L=? .C !\Z>
>
<SET C <+ .C 32>> ; "Change to lower case"
)
>
<COND
(<EQUAL? .C !\k>
<SCREEN 2>
<CCURSET 4 1>
<HLIGHT ,K-H-INV>
<COND
(<SETG GL-KLAXON-ON <NOT ,GL-KLAXON-ON>>
<RT-QUEUE ,RT-I-KLAXON <+ ,GL-MOVES 1>>
<TELL "ON ">
)
(T
<RT-DEQUEUE ,RT-I-KLAXON>
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
)
(<EQUAL? .C !\x>
<RETURN>
)
(T
<SOUND ,S-BEEP>
)
>
>
<RTRUE>
>
<ROUTINE RT-ROV-MENU ()
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "R.O.V. menu">
<SCREEN 0>
<INPUT 1>
<RTRUE>
>
<ROUTINE RT-AIR-MENU ()
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Breathing Mix menu">
<CCURSET 4 1>
<TELL "Oxygen: ">
<RT-PRINT-FLOAT ,GL-OXYGEN-QTY ,K-OXYGEN-FACTOR>
<TELL "% - ">
<RT-GAS-LEVEL-MSG ,GL-OXYGEN-QTY ,K-OXY-LOW-1 ,K-OXY-HIGH-1 ,K-OXY-NOM>
<TELL "|Carbon dioxide: ">
<RT-PRINT-FLOAT ,GL-CO2-QTY ,K-CO2-FACTOR>
<TELL "% - ">
<RT-GAS-LEVEL-MSG ,GL-CO2-QTY -1 ,K-CO2-HIGH-1 ,K-CO2-NOM>
<TELL "|Nitrogen: ">
<RT-PRINT-FLOAT ,GL-NITROGEN-QTY ,K-NITROGEN-FACTOR>
<TELL "% - ">
<RT-GAS-LEVEL-MSG ,GL-NITROGEN-QTY ,K-NIT-LOW-1 ,K-NIT-HIGH-1 ,K-NIT-NOM>
<TELL "|Helium: ">
<RT-PRINT-FLOAT ,GL-HELIUM-QTY ,K-HELIUM-FACTOR>
<TELL "%|">
<SCREEN 0>
<INPUT 1>
<RTRUE>
>
<ROUTINE RT-GAS-LEVEL-MSG (QTY LOW HIGH NOM)
<COND
(<L=? .QTY .LOW>
<TELL "low">
)
(<G=? .QTY .HIGH>
<TELL "high">
)
(<EQUAL? .QTY .NOM>
<TELL "nominal">
)
(<L? .QTY .NOM>
<TELL "less than nominal">
)
(T
<TELL "more than nominal">
)
>
>
<ROUTINE RT-POWER-MENU ()
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Power menu">
<SCREEN 0>
<INPUT 1>
<RTRUE>
>
<ROUTINE RT-LIGHT-MENU ()
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Lighting menu">
<SCREEN 0>
<INPUT 1>
<RTRUE>
>
<ROUTINE RT-SUPPORT-MENU ("AUX" X1 Y1 X2 Y2)
<SET X1 1>
<SET Y1 <L-PIXELS 4>>
<SET X2 <C-PIXELS 28>>
<SET Y2 <L-PIXELS 9>>
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Life support menu">
<CCURSET 4 1>
<HLIGHT ,K-H-INV>
<COND
(,GL-SCRUBBERS-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
<CCURSET 4 4>
<TELL "CO2 scrubbers">
<CCURSET 4 27>
<TELL "S">
<CCURSET 5 1>
<HLIGHT ,K-H-INV>
<COND
(,GL-HEATERS-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
<CCURSET 5 4>
<TELL "Heaters">
<CCURSET 5 27>
<TELL "H">
<CCURSET 6 1>
<HLIGHT ,K-H-INV>
<TELL "ON ">
<HLIGHT ,K-H-NRM>
<CCURSET 6 4>
<TELL "Helium de-scramblers">
<CCURSET 6 27>
<TELL "D">
<CCURSET 7 1>
<HLIGHT ,K-H-INV>
<TELL "ON ">
<HLIGHT ,K-H-NRM>
<CCURSET 7 4>
<TELL "De-humidifiers">
<CCURSET 7 27>
<TELL "M">
<HLIGHT ,K-H-NRM>
<CCURSET 8 4>
<TELL "Exit">
<CCURSET 8 27>
<TELL "X">
<CCURSET 4 50>
<TELL "Interior temp:">
<CCURSET 5 50>
<RT-PRINT-FLOAT ,GL-DEEPCORE-TEMP ,K-TEMP-FACTOR>
<TELL " deg. F">
<REPEAT ()
<SCREEN 0>
<SET C <INPUT 1>>
<COND
(<EQUAL? .C ,K-CLICK1 ,K-CLICK2>
<COND
(<MOUSE-INPUT? 2 .X1 .Y1 .X2 .Y2>
<SET L <PIXELS-L ,GL-MOUSE-Y>>
<COND
(<EQUAL? .L 1>
<SET C !\s>
)
(<EQUAL? .L 2>
<SET C !\h>
)
(<EQUAL? .L 3>
<SET C !\d>
)
(<EQUAL? .L 4>
<SET C !\m>
)
(T
<SET C !\x>
)
>
)
>
)
(<AND <G=? .C !\A>
<L=? .C !\Z>
>
<SET C <+ .C 32>> ; "Change to lower case"
)
>
<COND
(<EQUAL? .C !\s>
<SETG GL-SCRUBBERS-ON <NOT ,GL-SCRUBBERS-ON>>
<SCREEN 2>
<CCURSET 4 1>
<HLIGHT ,K-H-INV>
<COND
(,GL-SCRUBBERS-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
)
(<EQUAL? .C !\h>
<SETG GL-HEATERS-ON <NOT ,GL-HEATERS-ON>>
<SCREEN 2>
<CCURSET 5 1>
<HLIGHT ,K-H-INV>
<COND
(,GL-HEATERS-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
)
(<EQUAL? .C !\d>)
(<EQUAL? .C !\m>)
(<EQUAL? .C !\x>
<RETURN>
)
(T
<SOUND ,S-BEEP>
)
>
>
<RTRUE>
>
;<GLOBAL GL-PT-BILGE-ON <> <> BYTE>
;<GLOBAL GL-SB-BILGE-ON <> <> BYTE>
<GLOBAL GL-WATER-PUMP-ON <> <> BYTE>
<ROUTINE RT-PUMP-MENU ("AUX" X1 Y1 X2 Y2)
<SET X1 1>
<SET Y1 <L-PIXELS 4>>
<SET X2 <C-PIXELS 24>>
<SET Y2 <L-PIXELS 6>>
<CLEAR 2>
<UPDATE-STATUS-LINE>
<SCREEN 2>
<CURSET 1 1>
<TELL "Pump and compressor menu">
<CCURSET 4 1>
<HLIGHT ,K-H-INV>
<COND
(,GL-WATER-PUMP-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
<CCURSET 4 4>
<TELL "Fresh water pumps">
<CCURSET 4 23>
<TELL "P">
; <CCURSET 4 1>
; <HLIGHT ,K-H-INV>
; <COND
(,GL-PT-BILGE-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
; <HLIGHT ,K-H-NRM>
; <CCURSET 4 4>
; <TELL "Port bilge pumps">
; <CCURSET 4 27>
; <TELL "P">
; <CCURSET 5 1>
; <HLIGHT ,K-H-INV>
; <COND
(,GL-SB-BILGE-ON
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
; <HLIGHT ,K-H-NRM>
; <CCURSET 5 4>
; <TELL "Starboard bilge pumps">
; <CCURSET 5 27>
; <TELL "S">
<HLIGHT ,K-H-NRM>
<CCURSET 5 4>
<TELL "Exit">
<CCURSET 5 23>
<TELL "X">
<REPEAT ()
<SCREEN 0>
<SET C <INPUT 1>>
<COND
(<EQUAL? .C ,K-CLICK1 ,K-CLICK2>
<COND
(<MOUSE-INPUT? 2 .X1 .Y1 .X2 .Y2>
<SET L <PIXELS-L ,GL-MOUSE-Y>>
<COND
(<EQUAL? .L 1>
<SET C !\p>
)
; (<EQUAL? .L 2>
<SET C !\s>
)
(T
<SET C !\x>
)
>
)
>
)
(<AND <G=? .C !\A>
<L=? .C !\Z>
>
<SET C <+ .C 32>> ; "Change to lower case"
)
>
<COND
(<EQUAL? .C !\p>
<SCREEN 2>
<CCURSET 4 1>
<HLIGHT ,K-H-INV>
<COND
(<SETG GL-WATER-PUMP-ON <NOT ,GL-WATER-PUMP-ON>>
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
)
; (<EQUAL? .C !\s>
<SCREEN 2>
<CCURSET 5 1>
<HLIGHT ,K-H-INV>
<COND
(<SETG GL-SB-BILGE-ON <NOT ,GL-SB-BILGE-ON>>
<TELL "ON ">
)
(T
<TELL "OFF">
)
>
<HLIGHT ,K-H-NRM>
)
(<EQUAL? .C !\x>
<RETURN>
)
(T
<SOUND ,S-BEEP>
)
>
>
<RTRUE>
>
;"---------------------------------------------------------------------------"
; "TH-DESCRAMBLER-CONTROL-BOX"
;"---------------------------------------------------------------------------"
<OBJECT TH-DESCRAMBLER-CONTROL-BOX
(LOC TH-BIN)
(DESC "descrambler control box")
(MENU "control box")
(SYNONYM DESCRAMBLER BOX)
(ADJECTIVE CONTROL DESCRAMBLER)
(ACTION RT-TH-DESCRAMBLER-CONTROL-BOX)
>
<ROUTINE RT-TH-DESCRAMBLER-CONTROL-BOX ("OPT" (CONTEXT <>))
<RFALSE>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

125
crane.zabstr Normal file
View File

@ -0,0 +1,125 @@
<GLOBAL GL-CRANE-FALLING? <> <> BYTE>
<GLOBAL GL-CRANE-DOWN? <> <> BYTE>
<DEFINE-ROUTINE RT-I-CRANE-1>
<DEFINE-ROUTINE RT-I-CRANE-2>
<DEFINE-ROUTINE RT-I-CRANE-3>
<DEFINE-ROUTINE RT-I-CRANE-4>
<DEFINE-ROUTINE RT-I-CRANE-5>
<DEFINE-ROUTINE RT-I-HIPPY-RETURN>
<GLOBAL GL-KLAXON-ON <> <> BYTE>
<DEFINE-ROUTINE RT-I-KLAXON>
<GLOBAL GL-BATTERY-LEAK <> <> BYTE>
<GLOBAL GL-WATER-LEVEL 0 <> BYTE>
<DEFINE-ROUTINE RT-I-BATTERY-LEAK>
<ROOM RM-PT-BATTERY-ROOM (LOC ROOMS) (DESC "port battery room") (MENU
"battery room") (FLAGS FL-INDOORS FL-LIGHTED) (SYNONYM ROOM) (ADJECTIVE PORT
BATTERY) (AFT TO RM-LADDER-A1) (GLOBAL LG-WALL RM-LADDER-A1) (ACTION
RT-RM-PT-BATTERY-ROOM)>
<DEFINE-ROUTINE RT-RM-PT-BATTERY-ROOM>
<OBJECT TH-POWERCEL (LOC RM-PT-BATTERY-ROOM) (DESC "fuel cell") (SYNONYM
POWERCEL CELL) (ADJECTIVE FUEL POWER) (ACTION RT-TH-POWERCEL)>
<DEFINE-ROUTINE RT-TH-POWERCEL>
<OBJECT TH-POOL-OF-WATER (DESC "pool") (SYNONYM POOL WATER) (ADJECTIVE WATER) (
ACTION RT-TH-POOL-OF-WATER)>
<DEFINE-ROUTINE RT-TH-POOL-OF-WATER>
<ROOM RM-PT-OBS-DECK (LOC ROOMS) (DESC "port observation deck") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM DECK) (ADJECTIVE PORT OBSERVATION) (AFT TO
RM-LADDER-A3) (GLOBAL LG-WALL RM-LADDER-A3) (ACTION RT-RM-PT-OBS-DECK)>
<DEFINE-ROUTINE RT-RM-PT-OBS-DECK>
<OBJECT TH-CRACK (DESC "crack") (SYNONYM CRACK) (ACTION RT-TH-CRACK)>
<DEFINE-ROUTINE RT-TH-CRACK>
<DEFINE-ROUTINE RT-WELD-CRACK>
<OBJECT TH-ARC-WELDER (DESC "arc welder") (FLAGS FL-SEARCH FL-SURFACE
FL-TAKEABLE) (SYNONYM WELDER ARC-WELDER) (ADJECTIVE ARC) (ACTION
RT-TH-ARC-WELDER)>
<DEFINE-ROUTINE RT-TH-ARC-WELDER>
<OBJECT TH-WELDING-ROD (DESC "welding rod") (FLAGS FL-TAKEABLE) (SYNONYM ROD) (
ADJECTIVE ARC WELDING) (ACTION RT-TH-WELDING-ROD)>
<DEFINE-ROUTINE RT-TH-WELDING-ROD>
<OBJECT TH-RED-CABLE (LOC TH-ARC-WELDER) (DESC "red cable") (FLAGS FL-CONTAINER
FL-NO-DESC FL-OPEN FL-SEARCH) (SYNONYM CABLE CLAMP) (ADJECTIVE RED RUBBER) (
ACTION RT-TH-RED-CABLE)>
<DEFINE-ROUTINE RT-TH-RED-CABLE>
<OBJECT TH-BLACK-CABLE (LOC TH-ARC-WELDER) (DESC "black cable") (FLAGS
FL-NO-DESC) (SYNONYM CABLE CUP ELECTRODE) (ADJECTIVE BLACK RUBBER SUCTION) (
OWNER 0) (ACTION RT-TH-BLACK-CABLE)>
<DEFINE-ROUTINE RT-TH-BLACK-CABLE>
<OBJECT TH-WELDER-SWITCH (LOC TH-ARC-WELDER) (DESC "power switch") (FLAGS
FL-NO-DESC) (SYNONYM SWITCH PLUG) (ADJECTIVE POWER) (ACTION RT-TH-WELDER-SWITCH
)>
<DEFINE-ROUTINE RT-TH-WELDER-SWITCH>
<OBJECT TH-WELDER-CORD (LOC TH-ARC-WELDER) (DESC "power cord") (FLAGS
FL-NO-DESC) (SYNONYM CORD) (ADJECTIVE POWER) (ACTION RT-TH-WELDER-CORD)>
<DEFINE-ROUTINE RT-TH-WELDER-CORD>
<ROOM RM-LADDER-D2 (LOC ROOMS) (DESC "ladderwell D") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-PANTRY) (UP TO RM-LADDER-D3) (DOWN TO RM-LADDER-D1) (GLOBAL LG-WALL
RM-PANTRY RM-LADDER-D3 RM-LADDER-D1) (ACTION RT-RM-LADDER-D2)>
<DEFINE-ROUTINE RT-RM-LADDER-D2>
<OBJECT TH-PT-BILGE-BUTTON (LOC RM-LADDER-D2) (DESC "button") (SYNONYM BUTTON)
(ADJECTIVE YELLOW) (ACTION RT-TH-PT-BILGE-BUTTON)>
<DEFINE-ROUTINE RT-TH-PT-BILGE-BUTTON>
<OBJECT TH-SB-BILGE-BUTTON (LOC RM-LADDER-C2) (DESC "button") (SYNONYM BUTTON)
(ADJECTIVE YELLOW) (ACTION RT-TH-SB-BILGE-BUTTON)>
<DEFINE-ROUTINE RT-TH-SB-BILGE-BUTTON>
<DEFINE-ROUTINE RT-I-CATFISH-TRAPPED>
<ROOM RM-DIVE-GEAR-STORAGE (LOC ROOMS) (DESC "dive gear storage") (MENU
"gear storage") (FLAGS FL-INDOORS FL-LIGHTED) (SYNONYM STORAGE) (ADJECTIVE DIVE
GEAR) (AFT TO RM-LADDER-B2 IF LG-DGS-DOOR IS OPEN) (GLOBAL LG-DGS-DOOR LG-WALL
RM-LADDER-B2) (ACTION RT-RM-DIVE-GEAR-STORAGE)>
<DEFINE-ROUTINE RT-RM-DIVE-GEAR-STORAGE>
<OBJECT TH-BUD-GEAR-LOCKER (LOC RM-DIVE-GEAR-STORAGE) (DESC "gear locker") (
FLAGS FL-CONTAINER FL-OPENABLE FL-SEARCH FL-YOUR) (SYNONYM LOCKER) (ADJECTIVE
BUD GEAR) (OWNER CH-PLAYER) (SIZE 5) (GENERIC RT-GN-LOCKER) (ACTION
RT-TH-BUD-GEAR-LOCKER)>
<DEFINE-ROUTINE RT-TH-BUD-GEAR-LOCKER>
<OBJECT TH-BIG-LOCKER (LOC RM-DIVE-GEAR-STORAGE) (DESC "big locker") (FLAGS
FL-CONTAINER FL-OPENABLE FL-SEARCH) (SYNONYM LOCKER) (ADJECTIVE BIG DIVE GEAR)
(SIZE 5) (GENERIC RT-GN-LOCKER) (ACTION RT-TH-BIG-LOCKER)>
<DEFINE-ROUTINE RT-TH-BIG-LOCKER>
<DEFINE-ROUTINE RT-GN-LOCKER>
<OBJECT LG-DGS-DOOR (LOC LOCAL-GLOBALS) (DESC "fore door") (FLAGS FL-DOOR
FL-OPEN FL-OPENABLE) (SYNONYM DOOR) (ADJECTIVE FORE DIVE GEAR STORAGE) (ACTION
RT-LG-DGS-DOOR)>
<DEFINE-ROUTINE RT-LG-DGS-DOOR>
<ROOM RM-RECREATION-ROOM (LOC ROOMS) (DESC "recreation room") (MENU "rec room")
(FLAGS FL-INDOORS FL-LIGHTED) (SYNONYM ROOM) (ADJECTIVE RECREATION REC) (PORT
TO RM-LADDER-B2) (GLOBAL LG-WALL RM-LADDER-B2) (ACTION RT-RM-RECREATION-ROOM)>
<DEFINE-ROUTINE RT-RM-RECREATION-ROOM>
<OBJECT TH-BARBELL (LOC RM-RECREATION-ROOM) (DESC "barbell") (FLAGS FL-SURFACE
FL-TAKEABLE) (SYNONYM BARBELL BAR) (ACTION RT-TH-BARBELL)>
<DEFINE-ROUTINE RT-TH-BARBELL>
<OBJECT TH-WEIGHTS (LOC TH-BARBELL) (DESC "weights") (FLAGS FL-TAKEABLE) (
SYNONYM WEIGHTS) (ACTION RT-TH-WEIGHTS)>
<DEFINE-ROUTINE RT-TH-WEIGHTS>
<OBJECT TH-LIFT-BENCH (LOC RM-RECREATION-ROOM) (DESC "bench") (FLAGS FL-SURFACE
) (SYNONYM BENCH) (ADJECTIVE LIFT) (ACTION RT-TH-LIFT-BENCH)>
<DEFINE-ROUTINE RT-TH-LIFT-BENCH>
<OBJECT TH-TREADMILL (LOC RM-RECREATION-ROOM) (DESC "treadmill") (FLAGS
FL-SURFACE) (SYNONYM TREADMILL) (ACTION RT-TH-TREADMILL)>
<DEFINE-ROUTINE RT-TH-TREADMILL>
<OBJECT TH-CYCLE (LOC RM-RECREATION-ROOM) (DESC "cycle") (FLAGS FL-SURFACE) (
SYNONYM CYCLE BICYCLE) (ADJECTIVE STATIONARY EXERCISE) (ACTION RT-TH-CYCLE)>
<DEFINE-ROUTINE RT-TH-CYCLE>
<ROOM RM-LADDER-B2 (LOC ROOMS) (DESC "ladderwell B") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-DIVE-GEAR-STORAGE IF LG-DGS-DOOR IS OPEN) (AFT TO RM-WALDORF) (STARBOARD TO
RM-RECREATION-ROOM) (PORT TO RM-CORRIDOR IF LG-FLOOD-DOOR IS OPEN) (UP TO
RM-LADDER-B3) (DOWN TO RM-LADDER-B1) (GLOBAL LG-FLOOD-DOOR LG-DGS-DOOR LG-WALL
RM-DIVE-GEAR-STORAGE RM-WALDORF RM-RECREATION-ROOM RM-CORRIDOR RM-LADDER-B3
RM-LADDER-B1) (ACTION RT-RM-LADDER-B2)>
<DEFINE-ROUTINE RT-RM-LADDER-B2>
<OBJECT TH-HYDRAULIC-HOSE (LOC RM-LADDER-B2) (DESC "hydraulic hose") (MENU
"hose") (SYNONYM HOSE) (ADJECTIVE HYDRAULIC) (ACTION RT-TH-HYDRAULIC-HOSE)>
<DEFINE-ROUTINE RT-TH-HYDRAULIC-HOSE>
<OBJECT TH-HYDRAULIC-FLUID (DESC "hydraulic fluid") (MENU "fluid") (SYNONYM
FLUID) (ADJECTIVE HYDRAULIC RED STICKY) (ACTION RT-TH-HYDRAULIC-FLUID)>
<DEFINE-ROUTINE RT-TH-HYDRAULIC-FLUID>
<OBJECT LG-FLOOD-DOOR (LOC LOCAL-GLOBALS) (DESC "flood door") (FLAGS FL-DOOR
FL-OPEN FL-OPENABLE) (SYNONYM DOOR) (ADJECTIVE AUTOMATIC FLOOD CONTROL) (ACTION
RT-LG-FLOOD-DOOR)>
<DEFINE-ROUTINE RT-LG-FLOOD-DOOR>
<OBJECT TH-KNIFE (LOC CH-PLAYER) (DESC "dive knife") (FLAGS FL-KNIFE
FL-TAKEABLE) (SYNONYM KNIFE) (ADJECTIVE DIVE) (ACTION RT-TH-KNIFE)>
<DEFINE-ROUTINE RT-TH-KNIFE>

482
crane.zap Normal file
View File

@ -0,0 +1,482 @@
.FUNCT RT-I-CRANE-1:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-CRANE-2,STACK
SET 'GL-CRANE-FALLING?,TRUE-VALUE
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-KLAXON,STACK
SET 'GL-KLAXON-ON,TRUE-VALUE
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-DEEPCORE-TEMP,STACK
PRINTI " Suddenly the lights go out and emergency klaxons start blaring. "
EQUAL? HERE,RM-COMMAND-MODULE \?CCL3
PRINTI "The control panel starts flashing wildly. Lindsey takes one look out of the front viewport, slaps the intercom button, and screams,"
JUMP ?CND1
?CCL3: PRINTI "A second later Lindsey's voice screams over the intercom,"
?CND1: PRINTI " ""Emergency! The umbilicus is falling on top of us. It's coiling up on top of the starboard cylinders. God help us if it's still hooked to the crane. We've got two minutes before whatever's attached to the other end hits us. Everybody get the hell out of the starboard cylinders. Repeat. Evacuate the starboard cylinders immediately."" Emergency lights flicker on.
"
EQUAL? HERE,RM-COMMAND-MODULE \TRUE
MOVE CH-CATFISH,RM-CORRIDOR
PRINTR " Catfish says, ""Shit! The arc-welding kit's in one of the starboard cylinders. If that crane hits us, we're gonna need it for damage control."" He tears out of the cylinder."
.FUNCT RT-I-CRANE-2:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-CRANE-3,STACK
PRINTR " A rasping sound grates against your ears as loops of the umbilicus hit Deepcore and strafe the starboard cylinders."
.FUNCT RT-I-CRANE-3:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-CRANE-4,STACK
MOVE CH-CATFISH,RM-LADDER-B2
PRINTR " A grinding crash of metal reverberates throughout Deepcore as some huge piece of equipment strikes one of the cylinders and bounces off."
.FUNCT RT-I-CRANE-4:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-CRANE-5,STACK
PRINTI " Lindsey"
EQUAL? HERE,RM-COMMAND-MODULE \?CCL3
PRINTI " hits the intercom button again and screams,"
JUMP ?CND1
?CCL3: PRINTI "'s voice shrieks over the intercom."
?CND1: PRINTR " ""Here it comes! All hands rig for impact!"""
.FUNCT RT-I-CRANE-5:ANY:0:0
SET 'GL-CRANE-FALLING?,FALSE-VALUE
SET 'GL-CRANE-DOWN?,TRUE-VALUE
MOVE TH-FIRE,RM-SUB-BAY
ADD GL-MOVES,14
ICALL RT-QUEUE,RT-I-FIRE-1,STACK
SET 'GL-BATTERY-LEAK,TRUE-VALUE
MOVE TH-CRACK,RM-PT-OBS-DECK
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-BATTERY-LEAK,STACK
MOVE CH-COFFEY,RM-COMMAND-MODULE
MOVE CH-CATFISH,RM-DIVE-GEAR-STORAGE
FSET CH-CATFISH,FL-LOCKED
FCLEAR LG-DGS-DOOR,FL-OPEN
MOVE CH-HIPPY,RM-FRESH-WATER-STORAGE
ADD GL-MOVES,30
ICALL RT-QUEUE,RT-I-HIPPY-RETURN,STACK
EQUAL? HERE,RM-DIVE-GEAR-STORAGE \?CCL3
PRINTI " Catfish rushes in, slamming the door behind him. He starts rummaging around in his locker. ""I've got to find the arc-welder,"" he yells.
"
JUMP ?CND1
?CCL3: ADD GL-MOVES,4
ICALL RT-QUEUE,RT-I-CATFISH-TRAPPED,STACK
?CND1: PRINTI " The inside of your head explodes as the crane slams into Deepcore with the impact of a hundred sticks of dynamite. The crane crashes into the starboard cylinders at an angle, toppling Deepcore almost over onto its side. You collide with the starboard bulkhead as the floor tilts crazily below your feet. Then you're thrown to the deck as the crane shears off the top of two aft cylinders and the rest of the rig crashes back onto the ocean floor with a shuddering jolt.
"
EQUAL? HERE,RM-COMMAND-MODULE \?CCL6
PRINTR " Coffey saunters into the command module, looking unconcerned about the chaos that surrounds him. Lindsey looks up at you and says, ""I know we have our differences, Bud. But you're the one in command here, and I'll do whatever you tell me to."""
?CCL6: EQUAL? HERE,RM-DIVE-GEAR-STORAGE \?CCL8
PRINTR " When your head clears you look around and take stock of your situation. A locker has fallen over, pinning Catfish to the floor. Water is cascading down into the room from the ceiling above."
?CCL8: EQUAL? HERE,RM-SUB-BAY \TRUE
PRINTR " A reserve oxygen cylinder has been knocked loose of its mooring and lies on the floor. You can hear the hiss of the pure oxygen as it escapes into the breathing mix. Suddenly, an exposed wire along the wall begins to spark. The insulation nearby catches fire and the flames start to work their way towards the wooden dive locker."
.FUNCT RT-I-HIPPY-RETURN:ANY:0:0
MOVE CH-HIPPY,HERE
PRINTR " Hippy stumbles into the room, sopping wet and gasping for air. ""I got trapped down in Fresh Water Storage,"" he gasps. ""The doors buckled and the only way out was through the emergency escape hatch in the bottom of the cylinder. But the wheel was jammed and I couldn't turn it. I had just given myself up for dead, when suddenly the wheel started turning all by itself! I was pretty spooked, but I didn't sit around to figure it out. I opened the hatch and swam over to the MoonPool. But just as I came out of the cylinder, I saw this...shape...disappear off towards the trench."""
.FUNCT RT-I-KLAXON:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-KLAXON,STACK
FSET? HERE,FL-WATER /FALSE
PRINTR " The klaxons continue to blare in your ears."
.FUNCT RT-I-BATTERY-LEAK:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-BATTERY-LEAK,STACK
FSET? TH-PT-BILGE-BUTTON,FL-ON \?CCL3
GRTR? GL-WATER-LEVEL,0 \FALSE
DEC 'GL-WATER-LEVEL
RFALSE
?CCL3: IGRTR? 'GL-WATER-LEVEL,19 \?CCL7
EQUAL? HERE,RM-PT-BATTERY-ROOM \?CCL10
PRINTI " Slowly, the water level rises until it encases the base of the huge powercels. Suddenly, everything goes dark and you hear all Deepcore's machinery grind to a halt. You see a few blue flashes below the water level, and then everything becomes very still. With"
JUMP ?CND8
?CCL10: FSET? HERE,FL-WATER \?CCL12
FSET? HERE,FL-INDOORS /?CND8
PRINTI " You glance back at Deepcore and see all the lights flicker out. You realize immediately that something has shorted out the powercels in the battery room. You swim back to investigate, emerge into the MoonPool, and try to make your way down to the battery room. But with"
JUMP ?CND8
?CCL12: PRINTI " Suddenly, everything goes dark and you hear all of Deepcore's machinery grind to a halt. In the eerie silence that follows, you realize that something has shorted out the powercels in the battery room. With"
?CND8: PRINTI " no power to maintain the temperature and the air supply, the end comes much more quickly than you would have expected.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL7: EQUAL? HERE,RM-PT-BATTERY-ROOM \FALSE
PRINTI " The pool of water"
GRTR? GL-WATER-LEVEL,17 \?CCL19
PRINTR " will reach the battery cases within seconds. If it does, all will be lost."
?CCL19: GRTR? GL-WATER-LEVEL,10 \?CCL21
PRINTR " is rising rapidly, and will soon short out the batteries."
?CCL21: GRTR? GL-WATER-LEVEL,5 \?CCL23
PRINTR ", if it rises much further, will reach the battery cases and short out Deepcore's sole remaining source of emergency power."
?CCL23: PRINTR " is approaching the base of the battery cases."
.FUNCT RT-RM-PT-BATTERY-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " This is one of the rooms that contain the huge fuelcells that power Deepcore. The powercels are surrounded by a wire cage that is festooned with signs that warn of the dangers of electricity. The fuelcells are humming ominously - as usual - and an acrid, ozone smell fills the air. The only exit is through the hatch in the aft bulkhead.
"
ZERO? GL-BATTERY-LEAK /FALSE
PRINTI " A stream of water is flowing down the wall from the ceiling "
FSET? TH-PT-BILGE-BUTTON,FL-ON \?CCL8
ZERO? GL-WATER-LEVEL \?CCL11
PRINTI "but it is sucked up by the pump as soon as it hits the floor."
JUMP ?CND6
?CCL11: PRINTI "into the pool of water on the floor. The pool looks like it is getting smaller."
JUMP ?CND6
?CCL8: LESS? GL-WATER-LEVEL,6 \?CCL13
PRINTI "into a pool of water on the floor. As the water rises, it approaches the base of the battery cases."
JUMP ?CND6
?CCL13: LESS? GL-WATER-LEVEL,11 \?CCL15
PRINTI "into the pool of water. If the water rises much further, it will reach the battery cases and short out Deepcore's sole remaining source of emergency power."
JUMP ?CND6
?CCL15: LESS? GL-WATER-LEVEL,18 \?CCL17
PRINTI "into the rapidly rising water."
JUMP ?CND6
?CCL17: LESS? GL-WATER-LEVEL,20 \?CCL19
PRINTI "into the pool of water. The water will reach the battery cases within seconds. If it does, all will be lost."
JUMP ?CND6
?CCL19: PRINTI "into the rapidly rising water below."
?CND6: CRLF
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-POWERCEL:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-POOL-OF-WATER:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-RM-PT-OBS-DECK:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the port observation deck, which has a huge domed plexiglass window where the forward bulkhead should be. The only exit is in the aft bulkhead.
"
ZERO? GL-BATTERY-LEAK /FALSE
PRINTI " There is a fair-sized crack in the starboard bulkhead, up near the ceiling. Water is pouring in through the crack, running down the wall, and disappearing into the room below.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-CRACK:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL5
EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSO,TH-WELDING-ROD \FALSE
CALL1 RT-WELD-CRACK
RSTACK
?CCL5: EQUAL? PRSA,V?WELD \FALSE
CALL1 RT-WELD-CRACK
RSTACK
.FUNCT RT-WELD-CRACK:ANY:0:0
CALL RT-META-IN?,TH-ARC-WELDER,HERE
ZERO? STACK /?CCL3
IN? TH-WELDING-ROD,TH-RED-CABLE \?CCL3
FSET? TH-ARC-WELDER,FL-ON \?CCL8
GETP TH-BLACK-CABLE,P?OWNER
EQUAL? STACK,LG-WALL \?CCL8
REMOVE TH-CRACK
SET 'GL-BATTERY-LEAK,FALSE-VALUE
SET 'GL-WATER-LEVEL,0
ICALL2 RT-DEQUEUE,RT-I-BATTERY-LEAK
FCLEAR TH-PT-BILGE-BUTTON,FL-ON
PRINTR " You hold the rod up to the crack. Sparks immediately start to fly from the tip of the rod and the end starts to glow. Soon, the softened metal begins to melt into the crack, and the stream of water gradually disappears."
?CCL8: PRINTR " You hold the rod up next to the crack, but nothing happens."
?CCL3: EQUAL? PRSA,V?WELD \?CCL12
PRINT K-HOW-INTEND-MSG
CRLF
RETURN 2
?CCL12: PRINTR " You hold the rod up next to the crack, but nothing happens."
.FUNCT RT-TH-ARC-WELDER:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " The arc welder is a sturdy black box with red and black cables coming out of it. The red cable looks like a jumper cable, except that the clamp at the end is wrapped with thick rubber insulation. The black cable ends in an suction cup that has an exposed electrode in the center. In addition, it has an on/off switch and a power cord."
?CCL5: EQUAL? PRSA,V?TURN-ON \?CCL7
FSET? TH-ARC-WELDER,FL-ON \?CCL10
CALL2 RT-ALREADY-MSG,STR?130
RSTACK
?CCL10: FSET? TH-WELDER-CORD,FL-ON \?CCL12
FSET TH-ARC-WELDER,FL-ON
PRINTR " The machine begins to hum."
?CCL12: PRINTR " The welder isn't plugged in."
?CCL7: EQUAL? PRSA,V?TURN-OFF \?CCL14
FSET? TH-ARC-WELDER,FL-ON /?CCL17
CALL2 RT-ALREADY-MSG,STR?131
RSTACK
?CCL17: FCLEAR TH-ARC-WELDER,FL-ON
PRINTR " The machine stops humming."
?CCL14: EQUAL? PRSA,V?PLUG-IN \FALSE
FSET? TH-WELDER-CORD,FL-ON \?CCL22
CALL2 RT-ALREADY-MSG,STR?132
RSTACK
?CCL22: FSET TH-WELDER-CORD,FL-ON
PRINTR " You plug the power cord into the wall outlet."
.FUNCT RT-TH-WELDING-ROD:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR " It's a stiff metal rod, about 14 inches long."
.FUNCT RT-TH-RED-CABLE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL5
EQUAL? PRSA,V?PUT-IN,V?ATTACH,V?TAKE-WITH \FALSE
EQUAL? PRSO,TH-WELDING-ROD \FALSE
MOVE TH-WELDING-ROD,TH-RED-CABLE
PRINTR " You put the welding rod into the clamp."
?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL13
PRINTR " The red cable looks like a jumper cable, ending in a large insulated clamp with sharp steel teeth."
?CCL13: EQUAL? PRSA,V?ATTACH \FALSE
EQUAL? PRSI,TH-WELDING-ROD \FALSE
MOVE TH-WELDING-ROD,TH-RED-CABLE
PRINTR " You put the welding rod into the clamp."
.FUNCT RT-TH-BLACK-CABLE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL7
PRINTR " The black cable ends in an suction cup that has an exposed electrode in the center."
?CCL7: EQUAL? PRSA,V?ATTACH \FALSE
PUTP TH-BLACK-CABLE,P?OWNER,PRSI
PRINTI " You put the suction cup on"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR ", pressing hard to ensure a good contact for the electrode."
.FUNCT RT-TH-WELDER-SWITCH:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " The power switch is labelled 'ON' and 'OFF'."
?CCL5: EQUAL? PRSA,V?TURN-OFF,V?TURN-ON \FALSE
CALL1 RT-TH-ARC-WELDER
RSTACK
.FUNCT RT-TH-WELDER-CORD:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " The power cord will plug into any wall outlet."
?CCL5: EQUAL? PRSA,V?PLUG-IN \FALSE
FSET? TH-WELDER-CORD,FL-ON \?CCL10
CALL2 RT-ALREADY-MSG,STR?132
RSTACK
?CCL10: FSET TH-WELDER-CORD,FL-ON
PRINTR " You plug the power cord into the wall outlet."
.FUNCT RT-RM-LADDER-D2:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the middle level of ladderwell D. A hatch in the forward bulkhead opens onto the pantry. There is a yellow button here, with a sign underneath it.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-PT-BILGE-BUTTON:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?READ \?CCL5
PRINTR "It says, ""Port Bilge Pumps."""
?CCL5: EQUAL? PRSA,V?HIT,V?PUSH \FALSE
PRINTI " You press the button and "
FSET? TH-PT-BILGE-BUTTON,FL-ON \?CCL10
FCLEAR TH-PT-BILGE-BUTTON,FL-ON
PRINTR "the whirring stops."
?CCL10: GRTR? GL-WATER-LEVEL,0 \?CCL12
FSET TH-PT-BILGE-BUTTON,FL-ON
PRINTR "hear a distant whirring."
?CCL12: FCLEAR TH-PT-BILGE-BUTTON,FL-ON
PRINTR "hear a distant whirring which stops soon after it starts. There must not be any water in the port bilge."
.FUNCT RT-TH-SB-BILGE-BUTTON:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?READ \?CCL5
PRINTR "It says, ""Starboard Bilge Pumps."""
?CCL5: EQUAL? PRSA,V?HIT,V?PUSH \FALSE
PRINTR " You press the button and hear a distant whirring which stops soon after it starts. There must not be any water in the starboard bilge."
.FUNCT RT-I-CATFISH-TRAPPED:ANY:0:0
PRINTR " The intercom buzzes. Then you hear a weak voice. ""This is Catfish. I'm trapped under a locker in Dive Gear Storage. The water in here is rising faster than the Johnstown flood. If one of y'all don't get down here pronto, I'm gonnna be singin' with the angels."""
.FUNCT RT-RM-DIVE-GEAR-STORAGE:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " a room that looks like the locker room at the local health club. The walls are lined with floor-to-ceiling lockers, one for each crew member. Your locker is the one next to the exit in the aft bulkhead.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-BUD-GEAR-LOCKER:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-BIG-LOCKER:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?PULL /?CTR4
EQUAL? PRSA,V?PUSH,V?LIFT,V?MOVE \?CCL5
?CTR4: EQUAL? PRSI,FALSE-VALUE,ROOMS,TH-HANDS \?CCL10
PRINTR " You strain at the locker, but you just don't have enough leverage to move it."
?CCL10: EQUAL? PRSI,TH-BARBELL \FALSE
FCLEAR CH-CATFISH,FL-LOCKED
ICALL2 RT-SET-PUPPY,CH-CATFISH
PRINTR " Using the bar as a lever, you strain against the weight of the dive locker. Slowly, it inches up. Just when you realize that the bar is starting to slip from your grasp, Catfish manages to squirm free and roll out of the way. The locker crashes back to the floor. Catfish drags himself unsteadily to his feet and says, ""Thanks a lot, Chief. Nothing seems to be broken. Let's get the hell out of here."""
?CCL5: EQUAL? PRSA,V?OPEN \FALSE
PRINTR " The doors are jammed shut."
.FUNCT RT-GN-LOCKER:ANY:2:2,TBL,FINDER,PTR,N
ADD TBL,8 >PTR
GET TBL,1 >N
EQUAL? HERE,RM-DIVE-GEAR-STORAGE \FALSE
IN? CH-CATFISH,RM-DIVE-GEAR-STORAGE \FALSE
INTBL? TH-BIG-LOCKER,PTR,N \FALSE
PRINTI "[the big locker]
"
RETURN TH-BIG-LOCKER
.FUNCT RT-LG-DGS-DOOR:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?OPEN \FALSE
FSET? LG-DGS-DOOR,FL-OPEN /FALSE
FSET? CH-CATFISH,FL-LOCKED \FALSE
FSET LG-DGS-DOOR,FL-OPEN
FCLEAR LG-FLOOD-DOOR,FL-OPEN
SET 'OHERE,HERE
SET 'HERE,RM-DIVE-GEAR-STORAGE
MOVE CH-PLAYER,RM-DIVE-GEAR-STORAGE
PRINTR " You open the door to the cylinder. Inside is a jumbled chaos. Water is streaming down from the ceiling into an ever-rising pool on the floor. Catfish is sitting with his back to the wall, up to his chest in water. His legs are pinned by a huge locker that has fallen over on top of him, and he is turning blue from the cold.
Water gushes out of the chamber when you open the door. It falls to the level below, triggering the automated flood control door that seals the starboard side of Deepcore off from the central core. The hydraulic hose stiffens and the door swings shut.
You step into the chamber. The frigid water comes up to your knees. Catfish looks up at you and grins weakly. ""Howdy, pardner."""
.FUNCT RT-RM-RECREATION-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "step into"
?CND4: PRINTI " the recreation and exercise room. Against the wall is a stationary bicycle. Next to it is a treadmill. In the middle of the room is a lift bench with a barbell resting on the stand. The only exit is to port.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-BARBELL:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?LIFT,V?TAKE \FALSE
IN? TH-WEIGHTS,TH-BARBELL \FALSE
PRINTR " The barbell is too heavy to lift."
.FUNCT RT-TH-WEIGHTS:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?TAKE,V?UNWEAR \FALSE
IN? TH-WEIGHTS,TH-BARBELL \FALSE
MOVE TH-WEIGHTS,HERE
PRINTR " You remove the weights from the barbell and lay them on the floor."
.FUNCT RT-TH-LIFT-BENCH:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-TREADMILL:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-CYCLE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-RM-LADDER-B2:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the middle level of ladderwell B. A corridor leads to the port side of Deepcore. A hatch in the starboard bulkhead opens onto the recreation room. Dive gear storage is forward, and aft is the entrance to your own living quarters.
"
RFALSE
?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL8
EQUAL? GL-PUPPY,CH-CATFISH \FALSE
LOC TH-ARC-WELDER
ZERO? STACK \FALSE
MOVE TH-ARC-WELDER,CH-CATFISH
MOVE TH-WELDING-ROD,CH-CATFISH
PRINTR " Catfish follows you out, holding up the arc-welder triumphantly. ""Dry as a bone, Boss. It was stowed on a shelf the water hadn't reached yet."""
?CCL8: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-HYDRAULIC-HOSE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?CUT \FALSE
EQUAL? PRSI,TH-KNIFE \FALSE
FSET? TH-HYDRAULIC-HOSE,FL-BROKEN \?CCL11
CALL2 RT-ALREADY-MSG,STR?126
RSTACK
?CCL11: FSET TH-HYDRAULIC-HOSE,FL-BROKEN
MOVE TH-HYDRAULIC-FLUID,HERE
PRINTR " You cut the hose with the knife. Red fluid pours out onto the floor."
.FUNCT RT-TH-HYDRAULIC-FLUID:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-LG-FLOOD-DOOR:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?OPEN \FALSE
FSET? LG-FLOOD-DOOR,FL-OPEN /FALSE
FSET? TH-HYDRAULIC-HOSE,FL-BROKEN /FALSE
PRINTR " The door refuses to budge."
.FUNCT RT-TH-KNIFE:ANY:0:1,CONTEXT
RFALSE
.ENDI

1345
crane.zil Normal file

File diff suppressed because it is too large Load Diff

BIN
deepcore.lbm Normal file

Binary file not shown.

2140
defs.zil Normal file

File diff suppressed because it is too large Load Diff

413
defs2.zil Normal file
View File

@ -0,0 +1,413 @@
;"***************************************************************************"
; "game : Abyss"
; "file : DEFS2.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 16 Dec 1988 3:02:42 $"
; "rev : $Revision: 1.1 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Default substitutions after PDEFS"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<INCLUDE "PDEFS" "BASEDEFS" "PBITDEFS">
<USE "PMEM">
<CONSTANT SEARCH-ADJACENT <ORB ,SEARCH-MUST-HAVE ,SEARCH-MOBY>>
<REPLACE-DEFINITION PSEUDO-OBJECTS
<PUTPROP THINGS PROPSPEC HACK-PSEUDOS>
<DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0) NL)
<SET LIST <REST .LIST>>
<SET LIST
<MAPF
,LIST
<FUNCTION (X)
<COND
(<0? .N>
<SET CT <+ .CT 1>>
<SET N 1>
<COND
(<TYPE? .X ATOM>
<TABLE (PURE PATTERN (BYTE [REST WORD]))
1
<VOC <SPNAME .X> ADJ>
>
)
(<TYPE? .X LIST>
<EVAL
<CHTYPE
(TABLE (PURE PATTERN (BYTE [REST WORD]))
<LENGTH .X>
!<MAPF ,LIST
<FUNCTION (Y)
<VOC <SPNAME .Y> ADJ>
>
.X
>
)
FORM
>
>
)
(T
0
)
>
)
(<1? .N>
<SET N 2>
<COND
(<TYPE? .X ATOM>
<TABLE (PURE PATTERN (BYTE [REST WORD]))
1
<VOC <SPNAME .X> NOUN>
>
)
(<TYPE? .X LIST>
<EVAL
<CHTYPE
(TABLE (PURE PATTERN (BYTE [REST WORD]))
<LENGTH .X>
!<MAPF ,LIST
<FUNCTION (Y)
<VOC <SPNAME .Y> NOUN>
>
.X
>
)
FORM
>
>
)
(T
0
)
>
)
(T
<SET N 0>
.X
)
>
>
.LIST
>
>
(<>
<EVAL
<CHTYPE
(TABLE (PURE PATTERN (BYTE [REST WORD]))
.CT
!.LIST
)
FORM
>
>
)
>
<GLOBAL LAST-PSEUDO-LOC:OBJECT <>>
<COND
(<CHECK-VERSION? ZIP>
<OBJECT PSEUDO-OBJECT
(LOC LOCAL-GLOBALS)
(DESC "pseudo")
(ACTION 0)
>
)
(T
<OBJECT PSEUDO-OBJECT
(LOC LOCAL-GLOBALS)
(FLAGS FL-HAS-DESCFCN FL-HAS-SDESC FL-NO-ARTICLE)
(ACTION 0)
>
)
>
<DEFINE TEST-THINGS (RM F "AUX" CT GLBS N)
<SET GLBS <GETP .RM ,P?THINGS>>
<SET N <GETB .GLBS 0>>
<SET GLBS <REST .GLBS>>
;"? maybe use theory from B'cy?"
<COND
(<T? <SET CT <FIND-ADJS .F>>>
<SET CT <ADJS-COUNT .CT>>
)
>
<REPEAT
( (NOUN <FIND-NOUN .F>)
(V <REST-TO-SLOT <FIND-ADJS .F> ADJS-COUNT 1>)
TTBL
(MATCH <>)
)
;------------
<COND
(<AND <SET TTBL <GET .GLBS 1>>
<INTBL? .NOUN <ZREST .TTBL 1> <GETB .TTBL 0>>
>
<COND
(<ZERO? .CT>
<SET MATCH T>
)
(<SET TTBL <ZGET .GLBS 0>>
<REPEAT ((I 0))
<COND
(<INTBL? <ZGET .V .I> <ZREST .TTBL 1> <GETB .TTBL 0>>
<SET MATCH T>
<RETURN>
)
(<IGRTR? .I <- .CT 1>>
<RETURN>
)
>
>
)
>
<COND
(.MATCH
<SETG LAST-PSEUDO-LOC .RM>
<PUTP ,PSEUDO-OBJECT ,P?ACTION <ZGET .GLBS 2>>
<ADD-OBJECT ,PSEUDO-OBJECT .F>
<RFALSE>
)
>
)
>
<SET GLBS <REST .GLBS 6>>
<COND
(<DLESS? .N 1>
<RFALSE>
)
>
>
>
>
<REPLACE-DEFINITION WHICH-PRINT
<DEFINE WHICH-PRINT
(NP "AUX"
(SR ,ORPHAN-SR)
(LEN <FIND-RES-COUNT .SR>)
(SZ <FIND-RES-SIZE .SR>)
(NS 0)
)
<COND
(<WHICH-LIST? .NP .SR>
; "Count the number of objects to print (only FL-SEEN)"
<SET NS 0>
<REPEAT ((N .LEN) (S .SZ) (VEC <REST-TO-SLOT .SR FIND-RES-OBJ1>))
<COND
(<DLESS? N 0>
<RETURN>
)
(<DLESS? S 0>
<RETURN>
)
>
<COND
(<FSET? <ZGET .VEC 0> ,FL-SEEN>
<INC NS>
)
>
<SET VEC <ZREST .VEC 2>>
>
)
>
<COND
(<NOT <EQUAL? ,WINNER ,CH-PLAYER>>
<TELL "[You must specify ">
<COND
(<AND <WHICH-LIST? .NP .SR>
<G? .NS 1>
>
<TELL "if">
)
(T
<TELL "which">
<COND
(<T? .NP>
; <SETG P-ONE-NOUN <NP-NAME .NP>>
<TELL !\ >
<NP-PRINT .NP>
)
>
)
>
)
(T
<TELL "[Which">
<COND
(<T? .NP>
; <SETG P-ONE-NOUN <NP-NAME .NP>>
<TELL !\ >
<NP-PRINT .NP>
)
>
<TELL " do">
)
>
<TELL " you mean">
<COND
(<AND <WHICH-LIST? .NP .SR>
<G? .NS 1>
>
<COND
(<==? ,WINNER ,CH-PLAYER>
<TELL !\,>
)
>
<REPEAT ((N .LEN) (S .SZ) (VEC <REST-TO-SLOT .SR FIND-RES-OBJ1>) (REM .NS) OBJ)
<COND
(<DLESS? N 0>
<RETURN>
)
(<DLESS? S 0>
<RETURN>
)
>
<COND
(<FSET? <SET OBJ <ZGET .VEC 0>> ,FL-SEEN>
<TELL the .OBJ>
<DEC REM>
<COND
(<==? .REM 1>
<COND
(<NOT <==? .NS 2>>
<TELL !\,>
)
>
<TELL " or">
)
(<G? .REM 1>
<TELL !\,>
)
>
)
>
<SET VEC <ZREST .VEC 2>>
>
)
>
<COND
(<==? ,WINNER ,CH-PLAYER>
<TELL "?]" CR>
)
(T
<TELL ".]" CR>
)
>
>
>
<REPLACE-DEFINITION CANT-FIND-OBJECT
<DEFINE CANT-FIND-OBJECT (NP SEARCH "AUX" OTHER)
<COND
(<EQUAL? .NP ,ORPHAN-NP>
<NP-CANT-SEE .NP>
)
(T
<TELL "[There isn't anything to ">
<COND
(<SET OTHER <PARSE-VERB ,PARSE-RESULT>>
<PRINT-VOCAB-WORD .OTHER>
)
(T
<TELL "do that to">
)
>
<TELL ".]" CR>
)
>
>
<DEFINE NP-CANT-SEE ("OPT" (NP <GET-NP>) "AUX" OTHER)
<COND
(<OR <SET OTHER <NP-NAME .NP>>
<NP-QUANT .NP> ;"for PUT ALL IN CRATE BUT CANDLE"
>
<TELL !\[ The ,WINNER " can't see ">
<COND
(.OTHER
<TELL "any ">
<NP-PRINT .NP>
)
(T
<NP-PRINT .NP T>
)
>
<TELL !\ >
<COND
(<AND <SET OTHER <NP-LOC .NP>>
<OR
<PMEM-TYPE? .OTHER NOUN-PHRASE>
<AND
<PMEM-TYPE? .OTHER LOCATION>
<SET OTHER <LOCATION-OBJECT .OTHER>>
>
>
>
<TELL "in" the <NOUN-PHRASE-OBJ1 .OTHER>>
)
(T
<COND
; (<ZAPPLY ,MOBY-FIND? .SEARCH>
<TELL "anyw">
)
(T
<TELL "right ">
)
>
<TELL "here">
)
>
<TELL ".]" CR>
)
(T
<MORE-SPECIFIC>
)
>
>
>
<REPLACE-DEFINITION TELL-GWIM-MSG
<DEFINE TELL-GWIM-MSG ("AUX" WD VB OBJ)
<SET OBJ <ZGET ,GWIM-MSG 1>>
<COND
(<NOT <EQUAL? .OBJ ,TH-HANDS ;,TH-MOUTH>>
<TELL !\[>
<COND
(<SET WD <ZGET ,GWIM-MSG 0>>
<PRINT-VOCAB-WORD .WD>
<SET VB <PARSE-VERB ,PARSER-RESULT>>
<COND
(<EQUAL? .VB ,W?SIT ,W?LIE>
<COND
(<EQUAL? .WD ,W?DOWN>
<TELL " on">
)
>
)
(<EQUAL? .VB ,W?GET>
<COND
(<EQUAL? .WD ,W?OUT>
<TELL " of">
)
>
)
>
)
>
<TELL the <ZGET ,GWIM-MSG 1> !\] CR>
)
>
>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

BIN
emrgency.lbm Normal file

Binary file not shown.

8
endgame.zabstr Normal file
View File

@ -0,0 +1,8 @@
<OBJECT TH-WINDOW-BENCH (LOC RM-COMPRESSION-CHAMBER) (DESC "bench") (FLAGS
FL-CONTAINER FL-OPENABLE FL-SEARCH) (SYNONYM BENCH SEAT) (ADJECTIVE WINDOW) (
ACTION RT-TH-WINDOW-BENCH)>
<DEFINE-ROUTINE RT-TH-WINDOW-BENCH>
<OBJECT TH-RED-LEVER (LOC TH-WINDOW-BENCH) (DESC "lever") (SYNONYM LEVER) (
ADJECTIVE RED) (ACTION RT-TH-RED-LEVER)>
<DEFINE-ROUTINE RT-TH-RED-LEVER>

29
endgame.zap Normal file
View File

@ -0,0 +1,29 @@
.FUNCT RT-TH-WINDOW-BENCH:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?OPEN,V?LIFT \FALSE
FSET TH-WINDOW-BENCH,FL-OPEN
PRINTR " You lift the seat to reveal the red lever underneath."
.FUNCT RT-TH-RED-LEVER:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?PULL \?CCL5
FSET? LG-CHAMBER-DOOR,FL-OPEN /?CCL8
FSET? CH-ALIEN,FL-BROKEN \?CCL8
PRINTI " You pull the lever and feel an immediate jolt as the compression chamber pulls away from Deepcore. Through the porthole, you get a glimpse of the crippled Deepcore as you slowly rise through the water.
[GRAPHIC #22]
For a long time after that you have no sensation of motion, but then the water through the porthole starts to get lighter as you near the surface.
Suddenly chamber burst through the surface and sunlight floods through the porthole. You feel the motion of the waves for the first time in weeks as the chamber gently rises and falls. Through the porthole you see the Benthic Explorer steaming towards you.
Trumpets sound. Fair young maidens cluster round to look at you admiringly. You have won the game."
CRLF
CALL2 RT-END-OF-GAME,TRUE-VALUE
RSTACK
?CCL8: PRINTR " Nothing happens."
?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks an awful lot like a red lever."
.ENDI

92
endgame.zil Normal file
View File

@ -0,0 +1,92 @@
;"***************************************************************************"
; "game : Abyss"
; "file : ENDGAME.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:45:00 $"
; "rev : $Revision: 1.3 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Crane crash"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
;"---------------------------------------------------------------------------"
; "TH-WINDOW-BENCH"
;"---------------------------------------------------------------------------"
<OBJECT TH-WINDOW-BENCH
(LOC RM-COMPRESSION-CHAMBER)
(DESC "bench")
(FLAGS FL-CONTAINER FL-OPENABLE FL-SEARCH)
(SYNONYM BENCH SEAT)
(ADJECTIVE WINDOW)
(ACTION RT-TH-WINDOW-BENCH)
>
<ROUTINE RT-TH-WINDOW-BENCH ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? LIFT OPEN>
<FSET ,TH-WINDOW-BENCH ,FL-OPEN>
<TELL " You lift the seat to reveal the red lever underneath." CR>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-RED-LEVER"
;"---------------------------------------------------------------------------"
<OBJECT TH-RED-LEVER
(LOC TH-WINDOW-BENCH)
(DESC "lever")
(SYNONYM LEVER)
(ADJECTIVE RED)
(ACTION RT-TH-RED-LEVER)
>
<ROUTINE RT-TH-RED-LEVER ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? PULL>
<COND
(<AND <NOT <FSET? ,LG-CHAMBER-DOOR ,FL-OPEN>>
<FSET? ,CH-ALIEN ,FL-BROKEN>
>
<TELL
" You pull the lever and feel an immediate jolt as the compression chamber
pulls away from Deepcore. Through the porthole, you get a glimpse of
the crippled Deepcore as you slowly rise through the water.||
[GRAPHIC #22]||
For a long time after that you have no sensation of motion, but then the
water through the porthole starts to get lighter as you near the surface.|
Suddenly chamber burst through the surface and sunlight floods through
the porthole. You feel the motion of the waves for the first time in weeks
as the chamber gently rises and falls. Through the porthole you see the
Benthic Explorer steaming towards you.|
Trumpets sound. Fair young maidens cluster round to look at you admiringly.
You have won the game." CR
>
<RT-END-OF-GAME T>
)
(T
<TELL " Nothing happens." CR>
)
>
)
(<VERB? EXAMINE>
<TELL "It looks an awful lot like a red lever." CR>
)
>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

80
find.zabstr Normal file
View File

@ -0,0 +1,80 @@
<FLAGS-AND-DEFAULTS (("ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE" T)(
"IN-ZILCH" T)) (("PSEUDO-OBJECTS" "DEFS2" #WORD *37202215421*))>
<ZZSECTION "FIND">
<INCLUDE "BASEDEFS" "PDEFS" "PBITDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM">
<BLOCK (<ROOT>)>
THINGS
<ENDBLOCK>
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
<DEFAULTS-DEFINED EXCLUDE-HERE-OBJECT? INVALID-OBJECT? MOBY-FIND?
LAST-PSEUDO-LOC PSEUDO-OBJECTS SEARCH-IN-LG?>
<BEGIN-SEGMENT 0>
<PUT-DECL BOOLEAN '<OR ATOM FALSE>>
<DEFMAC FD-FLAG (WHICH 'VAL "OPT" 'NEW) <COND (<ASSIGNED? NEW> <COND (<OR <
TYPE? .NEW ATOM FALSE> <AND <TYPE? .NEW FORM> <EMPTY? .NEW>>> <COND (<TYPE? .
NEW ATOM> <FORM ORB ,.WHICH .VAL>) (T <FORM ANDB .VAL <XORB ,.WHICH -1>>)>) (<
TYPE? .VAL FIX LVAL GVAL> <FORM COND (.NEW <FORM ORB .VAL ,.WHICH>) (T <FORM
ANDB .VAL <XORB ,.WHICH -1>>)>) (T <FORM BIND ((FLAG .VAL)) <FORM COND (.NEW <
FORM ORB ,.WHICH '.FLAG>) (T <FORM ANDB '.FLAG <XORB ,.WHICH -1>>)>>)>) (T <
FORM NOT <FORM 0? <FORM ANDB .VAL ,.WHICH>>>)>>
<CONSTANT FIND-FLAGS-GWIM 1>
<DEFMAC FIND-GWIM? ('F) <FORM NOT <FORM 0? <FORM ANDB <FORM FIND-FLAGS .F> ,
FIND-FLAGS-GWIM>>>>
<CONSTANT FINDER <MAKE-FINDER>>
<GLOBAL P-NOT-HERE:NUMBER 0>
<DEFINE-ROUTINE FIND-DESCENDANTS>
<DEFINE-ROUTINE EXCLUDED?>
<DEFAULT-DEFINITION INVALID-OBJECT? <ROUTINE INVALID-OBJECT?>>
<DEFINE-ROUTINE MATCH-OBJECT>
<CONSTANT SYN-FIND-PROP 256>
<DEFINE-ROUTINE TEST-OBJECT>
<DEFINE-ROUTINE ADD-OBJECT>
<DEFINE-ROUTINE NOT-IN-FIND-RES?>
<DEFINE-ROUTINE EVERYWHERE-VERB?>
<DEFINE-ROUTINE MULTIPLE-EXCEPTION?>
<ADD-WORD OPEN ADJ>
<ADD-WORD CLOSED ADJ>
<ADD-WORD SHUT ADJ>
<DEFINE-ROUTINE CHECK-ADJS-THERE?>
<DEFINE-ROUTINE CHECK-ADJS>
<OBJECT GENERIC-OBJECTS (ADJACENT 0)>
<DEFAULT-DEFINITION MOBY-FIND? <DEFMAC MOBY-FIND? ('SEARCH) <FORM OR <FORM AND
<FORM BAND .SEARCH ',SEARCH-MOBY> <FORM 0? <FORM BAND .SEARCH ',
SEARCH-MUST-HAVE>>> <FORM BAND ',PAST-TENSE <FORM WORD-FLAGS <FORM PARSE-VERB '
,PARSE-RESULT>>>>>>
<DEFAULT-DEFINITION SEARCH-IN-LG? <ROUTINE SEARCH-IN-LG?>>
<DEFAULT-DEFINITION EXCLUDE-HERE-OBJECT? <ROUTINE EXCLUDE-HERE-OBJECT?>>
<DEFINE-ROUTINE FIND-OBJECTS>
<DEFAULT-DEFINITION PSEUDO-OBJECTS <PUTPROP THINGS PROPSPEC HACK-PSEUDOS> <
DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0)) <SET LIST <REST .LIST>> <SET
LIST <MAPR ,LIST <FUNCTION (X "AUX" L (ACT 0) (NCT 0)) <COND (<0? .N> <SET CT <
+ .CT 1>> <SET N 1> <COND (<TYPE? <1 .X> ATOM> <SET ACT 1>) (<TYPE? <1 .X> LIST
> <SET ACT <LENGTH <1 .X>>>) (T <SET ACT 0>)> <COND (<LENGTH? .X 1>) (<TYPE? <2
.X> ATOM> <SET NCT 1>) (<TYPE? <2 .X> LIST> <SET NCT <LENGTH <2 .X>>>) (T <SET
NCT 0>)> <TABLE (PURE) <BYTE .ACT> <BYTE .NCT> <COND (<0? .ACT> 0) (<==? .ACT 1
> <VOC <SPNAME <1 .X>> ADJ>) (T <EVAL <CHTYPE (TABLE (PURE) !<MAPF ,LIST <
FUNCTION (Y) <VOC <SPNAME .Y> ADJ>> <1 .X>!>) FORM>>)> <COND (<0? .NCT> 0) (<
==? .NCT 1> <VOC <SPNAME <2 .X>> NOUN>) (T <EVAL <CHTYPE (TABLE (PURE) !<MAPF ,
LIST <FUNCTION (Y) <VOC <SPNAME .Y> NOUN>> <2 .X>!>) FORM>>)>>) (<1? .N> <SET N
2> <MAPRET>) (T <SET N 0> <1 .X>)>> .LIST>> (<> <EVAL <CHTYPE (TABLE (PURE) .CT
!.LIST) FORM>>)> <DEFINE TEST-THINGS (RM F "AUX" CT (RMG <GETP .RM ,P?THINGS>)
(RMGL <GET .RMG 0>)) <SET RMG <REST .RMG 2>> <COND (<T? <SET CT <FIND-ADJS .F>>
> <SET CT <ADJS-COUNT .CT>>)> <REPEAT (TTBL (NOUN <FIND-NOUN .F>) XCT (V <
REST-TO-SLOT <FIND-ADJS .F> ADJS-COUNT 1>)) <SET TTBL <GET .RMG 0>> <COND (<AND
<OR <EQUAL? .NOUN ,W?ONE> <AND <1? <SET XCT <GETB .TTBL 1>>> <EQUAL? .NOUN <
ZGET .TTBL 2>>> <INTBL? .NOUN <ZGET .TTBL 2> .XCT>> <OR <0? .CT> <AND <1? <SET
XCT <GETB .TTBL 0>>> <EQUAL? <ZGET .V 0> <ZGET .TTBL 1>>> <INTBL? <ZGET .V 0> <
ZGET .TTBL 1> .XCT>> <OR <NOT <FIND-OF .F>> <AND <EQUAL? 1 <FIND-RES-COUNT ,
OWNER-SR-HERE>> <EQUAL? ,PSEUDO-OBJECT <FIND-RES-OBJ1 ,OWNER-SR-HERE>> <EQUAL?
,LAST-PSEUDO-LOC .RM> <EQUAL? <GETP ,PSEUDO-OBJECT ,P?ACTION> <GET .RMG 1>>>>>
<SETG LAST-PSEUDO-LOC .RM> <PUTP ,PSEUDO-OBJECT ,P?ACTION <GET .RMG 1>> <SET V
<ZBACK <GETPT ,PSEUDO-OBJECT ,P?ACTION> 7>> <COPYT .NOUN .V 6> <COND (<BTST <
WORD-FLAGS .NOUN> ,PLURAL-FLAG> <FSET ,PSEUDO-OBJECT ,PLURAL>) (T <FCLEAR ,
PSEUDO-OBJECT ,PLURAL>)> <ADD-OBJECT ,PSEUDO-OBJECT .F> <RFALSE>)> <SET RMG <
ZREST .RMG 4>> <COND (<L? <SET RMGL <- .RMGL 1>> 1> <RTRUE>)>>> <GLOBAL
LAST-PSEUDO-LOC:OBJECT <>> <OBJECT PSEUDO-OBJECT (LOC LOCAL-GLOBALS) (DESC
"pseudoxxx") (ACTION 0)>>
<END-SEGMENT>
<END-DEFINITIONS>

578
find.zap Normal file
View File

@ -0,0 +1,578 @@
.SEGMENT "0"
.FUNCT FIND-DESCENDANTS:ANY:2:2,PARENT,FLAGS,F,FOBJ
SET 'F,FINDER
EQUAL? PARENT,GLOBAL-HERE \?CND1
SET 'PARENT,HERE
?CND1: FIRST? PARENT >FOBJ \TRUE
?PRG6: CALL2 VISIBLE?,FOBJ
ZERO? STACK /?CND8
BTST FLAGS,8 /?CND10
BTST FLAGS,1 \?PRF16
PUSH 1
JUMP ?PEN14
?PRF16: PUSH 0
?PEN14: CALL MATCH-OBJECT,FOBJ,F,STACK
ZERO? STACK /FALSE
?CND10: BTST FLAGS,4 \?CND8
FIRST? FOBJ \?CND8
EQUAL? FOBJ,WINNER /?CND8
FSET? FOBJ,SEARCHBIT \?PRD24
FSET? FOBJ,OPENBIT /?CCL18
FSET? FOBJ,TRANSBIT /?CCL18
?PRD24: FSET? FOBJ,SURFACEBIT \?CND8
?CCL18: BTST FLAGS,1 \?CCL33
PUSH 5
JUMP ?CND31
?CCL33: PUSH 4
?CND31: CALL FIND-DESCENDANTS,FOBJ,STACK
ZERO? STACK /FALSE
?CND8: NEXT? FOBJ >FOBJ /?PRG6
RTRUE
.FUNCT EXCLUDED?:ANY:2:2,FOBJ,F,EXC,PHRASE,CT,VEC,VV
GET F,8 >EXC
ZERO? EXC /FALSE
GET EXC,3 >PHRASE
GET PHRASE,1 >CT
ADD PHRASE,6 >VEC
?PRG6: DLESS? 'CT,0 \?CND8
SET 'VV,FALSE-VALUE
JUMP ?REP7
?CND8: GET VEC,0
EQUAL? FOBJ,STACK \?CND10
SET 'VV,TRUE-VALUE
?REP7: ZERO? VV \TRUE
GET EXC,1 >EXC
ZERO? EXC /FALSE
GET EXC,3 >PHRASE
GET PHRASE,1 >CT
ADD PHRASE,6 >VEC
JUMP ?PRG6
?CND10: ADD VEC,4 >VEC
JUMP ?PRG6
.FUNCT INVALID-OBJECT?:ANY:1:1,OBJ
RFALSE
.FUNCT MATCH-OBJECT:ANY:3:3,FOBJ,F,INCLUDE?,NOUN,ADJS,APP,TB,RES,?TMP1
GET F,9 >RES
FSET? FOBJ,INVISIBLE /TRUE
GET F,6 >NOUN
EQUAL? NOUN,FALSE-VALUE,W?ONE /?PRD6
GETPT FOBJ,P?SYNONYM >TB
ZERO? TB /TRUE
PTSIZE TB
DIV STACK,2
INTBL? NOUN,TB,STACK \TRUE
?PRD6: GET F,7 >ADJS
ZERO? ADJS /?PRD11
CALL CHECK-ADJS,FOBJ,F,ADJS
ZERO? STACK /TRUE
?PRD11: GET F,5 >ADJS
ZERO? ADJS /?PRD14
CALL CHECK-ADJS,FOBJ,F,ADJS
ZERO? STACK /TRUE
?PRD14: CALL EXCLUDED?,FOBJ,F
ZERO? STACK \TRUE
GET F,1
BTST STACK,1 /?CTR2
CALL2 INVALID-OBJECT?,FOBJ
ZERO? STACK \TRUE
?CTR2: ZERO? INCLUDE? /TRUE
GET F,5 >ADJS
ZERO? ADJS /?CCL24
GET ADJS,4 >?TMP1
GETPT FOBJ,P?ADJECTIVE
PTSIZE STACK
DIV STACK,2
EQUAL? ?TMP1,STACK \?CCL24
PUT RES,1,1
PUT RES,2,FALSE-VALUE
PUT RES,4,FOBJ
EQUAL? FOBJ,HERE \FALSE
PUT RES,4,GLOBAL-HERE
RFALSE
?CCL24: GET F,0 >APP
ZERO? APP /?CCL31
GET F,1
BTST STACK,1 /?CCL31
GET RES,1
ZERO? STACK /?CTR35
GET F,2
ZERO? STACK /?CCL36
?CTR35: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL36: CALL TEST-OBJECT,FOBJ,APP,F
ZERO? STACK /FALSE
GET RES,1
EQUAL? STACK,1 \?CCL43
GET RES,4
CALL TEST-OBJECT,STACK,APP,F
ZERO? STACK \?CCL46
PUT RES,4,FOBJ
EQUAL? FOBJ,HERE \TRUE
PUT RES,4,GLOBAL-HERE
RTRUE
?CCL46: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL43: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL31: ZERO? APP \?CCL50
GET F,1
BTST STACK,1 \?CTR52
GET F,2
ZERO? STACK /TRUE
?CTR52: CALL ADD-OBJECT,FOBJ,F
RSTACK
?CCL50: CALL TEST-OBJECT,FOBJ,APP,F
ZERO? STACK /TRUE
CALL ADD-OBJECT,FOBJ,F
RSTACK
.FUNCT TEST-OBJECT:ANY:3:3,FOBJ,APP,F,N,NN,?TMP1
BAND APP,65280
ZERO? STACK \?CCL3
BTST APP,128 \?CCL6
BAND APP,63
FSET? FOBJ,STACK /FALSE
RTRUE
?CCL6: FSET? FOBJ,APP /TRUE
RFALSE
?CCL3: GET APP,1
BTST STACK,256 \?CND12
GET APP,1
BAND STACK,63
GETP FOBJ,STACK >?TMP1
GET APP,2
EQUAL? ?TMP1,STACK /TRUE
RFALSE
?CND12: GET APP,0 >N
?PRG17: GET APP,N >NN
BTST NN,128 \?CCL21
BAND NN,63
FSET? FOBJ,STACK /?CND19
RTRUE
?CCL21: FSET? FOBJ,NN /TRUE
?CND19: DLESS? 'N,1 \?PRG17
RFALSE
.FUNCT ADD-OBJECT:ANY:2:2,OBJ,F,VEC,NC,DOIT?,SYN,WHICH,?TMP1
GET F,9 >VEC
SET 'DOIT?,TRUE-VALUE
GET F,3 >SYN
GET F,4 >WHICH
EQUAL? OBJ,HERE \?CND1
SET 'OBJ,GLOBAL-HERE
?CND1: GET F,2
ZERO? STACK \?CND3
ZERO? SYN /?CND3
GET VEC,1
EQUAL? 1,STACK \?CND3
CALL MULTIPLE-EXCEPTION?,OBJ,SYN,WHICH,F
ZERO? STACK /?CCL10
SET 'DOIT?,FALSE-VALUE
JUMP ?CND3
?CCL10: GET VEC,4
CALL MULTIPLE-EXCEPTION?,STACK,SYN,WHICH,F
ZERO? STACK /?CND3
PUT VEC,4,OBJ
SET 'DOIT?,FALSE-VALUE
?CND3: ZERO? DOIT? /TRUE
GET F,2
ZERO? STACK /?PRD17
GET F,3
ZERO? STACK /?PRD17
GET F,3 >?TMP1
GET F,4
CALL MULTIPLE-EXCEPTION?,OBJ,?TMP1,STACK,F
ZERO? STACK \TRUE
?PRD17: CALL NOT-IN-FIND-RES?,OBJ,VEC >WHICH
ZERO? WHICH /TRUE
GET VEC,1
ADD 1,STACK
PUT VEC,1,STACK
PUT WHICH,0,OBJ
GET F,2
EQUAL? STACK,NP-QUANT-A /FALSE
RTRUE
.FUNCT NOT-IN-FIND-RES?:ANY:2:3,OBJ,VEC,NO-CHANGE?,CT,SZ,ANS,NVEC,NEW-OBJECT
GET VEC,1 >CT
GET VEC,0 >SZ
?PRG1: ADD VEC,8 >ANS
LESS? CT,1 \?CCL5
RETURN ANS
?CCL5: GRTR? CT,SZ \?CCL7
SUB CT,SZ >CT
JUMP ?CND3
?CCL7: SET 'SZ,CT
?CND3: INTBL? OBJ,ANS,SZ /FALSE
GET VEC,2 >NVEC
ZERO? NVEC /?CCL12
SET 'VEC,NVEC
SET 'SZ,FIND-RES-MAXOBJ
JUMP ?PRG1
?CCL12: LESS? SZ,FIND-RES-MAXOBJ \?CCL14
MUL 2,SZ
ADD ANS,STACK
RSTACK
?CCL14: ZERO? NO-CHANGE? \TRUE
SET 'SZ,FIND-RES-MAXOBJ
CALL DO-PMEM-ALLOC,7,9 >NEW-OBJECT
SET 'NVEC,NEW-OBJECT
PUT VEC,2,NVEC
ADD NVEC,8
RSTACK
.FUNCT EVERYWHERE-VERB?:ANY:0:2,WHICH,SYNTAX,SYN
ASSIGNED? 'WHICH /?CND1
GET FINDER,4 >WHICH
?CND1: ASSIGNED? 'SYNTAX /?CND3
GET PARSE-RESULT,3 >SYNTAX
?CND3: EQUAL? WHICH,1 \?CCL7
GETB SYNTAX,5 >SYN
JUMP ?CND5
?CCL7: GETB SYNTAX,9 >SYN
?CND5: BTST SYN,128 \FALSE
BTST SYN,64 \TRUE
RFALSE
.FUNCT MULTIPLE-EXCEPTION?:ANY:4:4,OBJ,SYNTAX,WHICH,F,L,VB
LOC OBJ >L
GET SYNTAX,0 >VB
EQUAL? OBJ,FALSE-VALUE,ROOMS \?CCL3
INC 'P-NOT-HERE
RTRUE
?CCL3: CALL EVERYWHERE-VERB?,WHICH,SYNTAX
ZERO? STACK \?CCL5
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK /TRUE
?CCL5: EQUAL? VB,V?TAKE \?CCL9
GET F,6
ZERO? STACK \?CCL9
EQUAL? WHICH,1 \?CCL9
FSET? OBJ,TAKEBIT /?CCL15
FSET? OBJ,TRYTAKEBIT \TRUE
?CCL15: EQUAL? L,WINNER /TRUE
RFALSE
?CCL9: EQUAL? VB,V?DROP \FALSE
IN? OBJ,WINNER \TRUE
RFALSE
.FUNCT CHECK-ADJS-THERE?:ANY:1:1,OWNER,TMP
GET OWNER-SR-THERE,1 >TMP
ZERO? TMP /FALSE
INTBL? OWNER,OWNER-SR-THERE+8,TMP /TRUE
RFALSE
.FUNCT CHECK-ADJS:ANY:3:3,OBJ,F,ADJS,CNT,TMP,OWNER,ID,VEC,CT,ADJ,FL,OADJS,NUM,?TMP1
GETP OBJ,P?OWNER >OWNER
GETB ADJS,1
EQUAL? STACK,2 /?CCL2
GET ADJS,2 >TMP
ZERO? TMP /?CND1
?CCL2: SET 'ID,OWNER
LESS? 0,ID \?CCL7
SET 'ID,OWNER
GRTR? ID,LAST-OBJECT /?CCL7
EQUAL? OWNER,TMP /?CND1
EQUAL? OWNER,ROOMS \?CCL14
GET OWNER-SR-HERE,1
ZERO? STACK /?CCL17
GET OWNER-SR-HERE,4 >ID
JUMP ?CND1
?CCL17: GET OWNER-SR-THERE,1
ZERO? STACK /FALSE
GET OWNER-SR-THERE,4 >ID
JUMP ?CND1
?CCL14: GET OWNER-SR-HERE,1 >TMP
ZERO? TMP \?CCL21
CALL2 CHECK-ADJS-THERE?,OWNER
ZERO? STACK \?CND1
RFALSE
?CCL21: INTBL? OWNER,OWNER-SR-HERE+8,TMP /?CND1
CALL2 CHECK-ADJS-THERE?,OWNER
ZERO? STACK \?CND1
RFALSE
?CCL7: ZERO? OWNER /?CCL28
GET OWNER-SR-HERE,1 >CNT
ZERO? CNT \?CCL31
SET 'ID,PLAYER
JUMP ?CND1
?CCL31: ADD OWNER,2 >TMP
SET 'VEC,OWNER-SR-HERE+8
?PRG33: DLESS? 'CNT,0 /FALSE
GET VEC,0 >?TMP1
GET OWNER,0
INTBL? ?TMP1,TMP,STACK >ID \?CCL39
GET ID,0 >ID
JUMP ?CND1
?CCL39: ADD VEC,2 >VEC
JUMP ?PRG33
?CCL28: LESS? 0,TMP \?CCL41
GRTR? TMP,LAST-OBJECT /?CCL41
CALL HELD?,OBJ,TMP
ZERO? STACK \?CND1
RFALSE
?CCL41: GET OWNER-SR-HERE,1 >TMP
ZERO? TMP /FALSE
LOC OBJ
INTBL? STACK,OWNER-SR-HERE+8,TMP >ID \FALSE
?CND1: EQUAL? ID,0,OBJ /?CND50
GET F,9
PUT STACK,3,ID
?CND50: GETB ADJS,1
EQUAL? STACK,2 /TRUE
ADD ADJS,10 >VEC
GET ADJS,4 >CT
GETPT OBJ,P?ADJECTIVE >OADJS
PTSIZE OADJS
DIV STACK,2 >NUM
?PRG54: DLESS? 'CT,0 /TRUE
GET VEC,CT >ADJ
SET 'ID,ADJ
EQUAL? ADJ,W?NO.WORD /?PRG54
INTBL? ID,OADJS,NUM /?PRG54
EQUAL? ID,W?CLOSED,W?SHUT \?CCL63
FSET? OBJ,OPENBIT \?PRG54
?CCL63: EQUAL? ID,W?OPEN \FALSE
FSET? OBJ,OPENBIT /?PRG54
RFALSE
.FUNCT SEARCH-IN-LG?:ANY:1:1,OBJ
RFALSE
.FUNCT EXCLUDE-HERE-OBJECT?:ANY:0:0
RFALSE
.FUNCT FIND-OBJECTS:ANY:0:3,SEARCH,PARENT,NO-ADJACENT,GLBS,CONT?,N,RES,NEW-OBJECT,LOSING?,FLAG,?PR-FLAG,O,OBJ,?TMP1,?TMP2
ASSIGNED? 'SEARCH /?CND1
GET FINDER,4
EQUAL? 1,STACK \?CCL5
GET PARSE-RESULT,3
GETB STACK,5 >SEARCH
JUMP ?CND1
?CCL5: GET PARSE-RESULT,3
GETB STACK,9 >SEARCH
?CND1: SET 'CONT?,TRUE-VALUE
GET FINDER,9 >RES
PUT RES,1,0
PUT RES,2,FALSE-VALUE
ZERO? PARENT /?CCL8
CALL FIND-DESCENDANTS,PARENT,7
ZERO? STACK /?CND6
GET RES,1
ZERO? STACK \?CND6
?CCL8: ZERO? PARENT /?CND13
ZERO? NO-ADJACENT \?CND13
GET FINDER,5 >GLBS
ZERO? GLBS \?CND13
CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT
PUT NEW-OBJECT,2,PARENT
SET 'GLBS,NEW-OBJECT
PUT FINDER,5,GLBS
?CND13: BTST SEARCH,128 \?CND19
BTST SEARCH,64 /?CND19
FIRST? GENERIC-OBJECTS \?CND19
FIRST? GENERIC-OBJECTS >NEW-OBJECT /?PRG25
?PRG25: CALL MATCH-OBJECT,NEW-OBJECT,FINDER,TRUE-VALUE
ZERO? STACK /?REP26
NEXT? NEW-OBJECT >NEW-OBJECT /?PRG25
?REP26: GET RES,1 >CONT?
ZERO? CONT? /?CND19
EQUAL? CONT?,1 /TRUE
RFALSE
?CND19: SET 'LOSING?,FALSE-VALUE
?PRG35: ZERO? LOSING? \?PRD40
BAND SEARCH,12
ZERO? STACK \?CCL38
?PRD40: ZERO? LOSING? /?CND37
?CCL38: ZERO? LOSING? \?CTR44
BTST SEARCH,8 \?CCL45
?CTR44: SET '?PR-FLAG,6
JUMP ?CND43
?CCL45: SET '?PR-FLAG,2
?CND43: ZERO? LOSING? \?CTR49
BAND SEARCH,12
ZERO? STACK /?CCL50
?CTR49: BOR 1,?PR-FLAG >FLAG
JUMP ?CND48
?CCL50: BAND ?PR-FLAG,-2 >FLAG
?CND48: ZERO? LOSING? \?CCL55
BTST SEARCH,4 /?CCL55
BOR 8,FLAG
JUMP ?CND53
?CCL55: BAND FLAG,-9
?CND53: CALL FIND-DESCENDANTS,WINNER,STACK >CONT?
?CND37: ZERO? LOSING? \?CCL59
BAND SEARCH,3
ZERO? STACK /?CND58
?CCL59: ZERO? LOSING? \?CTR63
BAND SEARCH,3
ZERO? STACK /?CCL64
?CTR63: SET '?PR-FLAG,3
JUMP ?CND62
?CCL64: SET '?PR-FLAG,2
?CND62: ZERO? LOSING? \?CTR69
BTST SEARCH,2 \?CCL70
?CTR69: BOR 4,?PR-FLAG >FLAG
JUMP ?CND68
?CCL70: BAND ?PR-FLAG,-5 >FLAG
?CND68: ZERO? LOSING? \?CCL75
BTST SEARCH,1 /?CCL75
BOR 8,FLAG
JUMP ?CND73
?CCL75: BAND FLAG,-9
?CND73: CALL FIND-DESCENDANTS,HERE,STACK >CONT?
?CND58: GET RES,1
ZERO? STACK \?CND6
BTST SEARCH,15 /?CND78
ZERO? LOSING? \?CND78
GET TLEXV,0 >GLBS
ZERO? GLBS /?CCL86
GET GLBS,4
ZERO? STACK \?CTR85
GET GLBS,3
ZERO? STACK /?CCL86
?CTR85: SET 'LOSING?,TRUE-VALUE
JUMP ?PRG35
?CCL86: BTST SEARCH,64 \?CND78
BTST SEARCH,128 \FALSE
?CND78: GETPT HERE,P?GLOBAL >GLBS
ZERO? GLBS /?CND94
PTSIZE GLBS
DIV STACK,2 >N
?PRG97: DLESS? 'N,0 /?CND94
GET GLBS,N >O
CALL MATCH-OBJECT,O,FINDER,TRUE-VALUE >CONT?
ZERO? CONT? /?CND94
FIRST? O \?PRG97
BTST SEARCH,2 \?PRG97
CALL2 SEARCH-IN-LG?,O
ZERO? STACK /?PRG97
CALL FIND-DESCENDANTS,O,FD-INCLUDE? >CONT?
ZERO? CONT? \?PRG97
?CND94: ZERO? CONT? /?CND111
CALL1 EXCLUDE-HERE-OBJECT?
ZERO? STACK \?CND111
CALL MATCH-OBJECT,HERE,FINDER,TRUE-VALUE >CONT?
?CND111: ZERO? CONT? /?CND115
LOC PLAYER
EQUAL? HERE,STACK /?CND115
LOC PLAYER
GETP STACK,P?THINGS
ZERO? STACK /?CND115
LOC PLAYER
CALL TEST-THINGS,STACK,FINDER >CONT?
?CND115: ZERO? CONT? /?CND120
GETP HERE,P?THINGS
ZERO? STACK /?CND120
CALL TEST-THINGS,HERE,FINDER >CONT?
?CND120: GET RES,1
ZERO? STACK /?CND124
SET 'CONT?,FALSE-VALUE
?CND124: ZERO? CONT? /?CND126
BTST SEARCH,2 \?CCL130
PUSH 5
JUMP ?CND128
?CCL130: PUSH 1
?CND128: CALL FIND-DESCENDANTS,GLOBAL-OBJECTS,STACK >CONT?
?CND126: ZERO? CONT? /?CND131
GET RES,1
ZERO? STACK \?CND131
ZERO? NO-ADJACENT \?CND131
GETP HERE,P?ADJACENT >GLBS
ZERO? GLBS /?CND131
GETB GLBS,0 >N
?PRG137: GETB GLBS,N
ZERO? STACK /?CCL141
DEC 'N
GETB GLBS,N
ICALL FIND-OBJECTS,1,STACK,TRUE-VALUE
JUMP ?CND139
?CCL141: DEC 'N
?CND139: DLESS? 'N,1 \?PRG137
GET RES,1
ZERO? STACK /?CND131
SET 'CONT?,FALSE-VALUE
?CND131: ZERO? CONT? /?CND6
GET RES,1
ZERO? STACK \?CND6
BTST SEARCH,128 \?PRD152
BTST SEARCH,64 \?CCL147
?PRD152: GET PARSE-RESULT,1 >?TMP2
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? ?TMP2,?TMP1,STACK,132 >O \?CCL157
GET O,1
JUMP ?CND155
?CCL157: PUSH FALSE-VALUE
?CND155: BTST STACK,512 \?CND6
?CCL147: SET 'OBJ,1
?PRG158: CALL MATCH-OBJECT,OBJ,FINDER,TRUE-VALUE
ZERO? STACK /?CND6
IGRTR? 'OBJ,LAST-OBJECT \?PRG158
?CND6: GET RES,1
EQUAL? STACK,1 /TRUE
RFALSE
.FUNCT TEST-THINGS:ANY:2:2,RM,F,CT,GLBS,N,NOUN,V,TTBL,MATCH,I,?TMP2,?TMP1
GETP RM,P?THINGS >GLBS
GETB GLBS,0 >N
INC 'GLBS
GET F,5 >CT
ZERO? CT /?CND1
GET CT,4 >CT
?CND1: GET F,6 >NOUN
GET F,5
ADD STACK,10 >V
SET 'MATCH,FALSE-VALUE
?PRG3: GET GLBS,1 >TTBL
ZERO? TTBL /?CND5
ADD TTBL,1 >?TMP1
GETB TTBL,0
INTBL? NOUN,?TMP1,STACK \?CND5
ZERO? CT \?CCL11
SET 'MATCH,TRUE-VALUE
JUMP ?CND9
?CCL11: GET GLBS,0 >TTBL
ZERO? TTBL /?CND9
SET 'I,0
?PRG13: GET V,I >?TMP2
ADD TTBL,1 >?TMP1
GETB TTBL,0
INTBL? ?TMP2,?TMP1,STACK \?CCL17
SET 'MATCH,TRUE-VALUE
JUMP ?CND9
?CCL17: SUB CT,1
IGRTR? 'I,STACK \?PRG13
?CND9: ZERO? MATCH /?CND5
SET 'LAST-PSEUDO-LOC,RM
GET GLBS,2
PUTP PSEUDO-OBJECT,P?ACTION,STACK
ICALL ADD-OBJECT,PSEUDO-OBJECT,F
RFALSE
?CND5: ADD GLBS,6 >GLBS
DLESS? 'N,1 \?PRG3
RFALSE
.ENDSEG
.ENDI

71
gas-mix.zabstr Normal file
View File

@ -0,0 +1,71 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<GLOBAL GL-OXYGEN-QTY 3400>
<GLOBAL GL-OXYGEN-MSG 3400>
<CONSTANT K-OXYGEN-FACTOR -4>
<CONSTANT K-OXY-LOW-4 850>
<CONSTANT K-OXY-LOW-3 1133>
<CONSTANT K-OXY-LOW-2 1417>
<CONSTANT K-OXY-LOW-1 1700>
<CONSTANT K-OXY-NOM 3400>
<CONSTANT K-OXY-HIGH-1 20400>
<CONSTANT K-OXY-HIGH-2 23800>
<CONSTANT K-OXY-HIGH-3 27200>
<CONSTANT K-OXY-HIGH-4 30600>
<GLOBAL GL-CO2-QTY 536>
<GLOBAL GL-CO2-MSG 536>
<CONSTANT K-CO2-FACTOR -6>
<CONSTANT K-CO2-NOM 536>
<CONSTANT K-CO2-HIGH-1 22725>
<CONSTANT K-CO2-HIGH-2 25971>
<CONSTANT K-CO2-HIGH-3 29218>
<CONSTANT K-CO2-HIGH-4 32464>
<GLOBAL GL-NITROGEN-QTY 1267>
<GLOBAL GL-NITROGEN-MSG 1267>
<CONSTANT K-NITROGEN-FACTOR -3>
<CONSTANT K-NIT-LOW-4 211>
<CONSTANT K-NIT-LOW-3 253>
<CONSTANT K-NIT-LOW-2 317>
<CONSTANT K-NIT-LOW-1 422>
<CONSTANT K-NIT-NOM 1267>
<CONSTANT K-NIT-HIGH-1 3802>
<CONSTANT K-NIT-HIGH-2 5070>
<CONSTANT K-NIT-HIGH-3 6337>
<CONSTANT K-NIT-HIGH-4 7605>
<GLOBAL GL-HELIUM-QTY 9839>
<CONSTANT K-HELIUM-FACTOR -2>
<CONSTANT K-HEL-NOM 9839>
<GLOBAL GL-SCRUBBERS-ON <> <> BYTE>
<SYNTAX $SCRUB = V-$SCRUB>
<DEFINE-ROUTINE V-$SCRUB>
<SYNTAX $AIR = V-$AIR>
<DEFINE-ROUTINE V-$AIR>
<DEFINE-ROUTINE RT-NUM-DIGITS>
<DEFINE-ROUTINE RT-PRINT-FLOAT>
<DEFINE-ROUTINE RT-NITROGEN-MSG>
<DEFINE-ROUTINE RT-OXYGEN-MSG>
<DEFINE-ROUTINE RT-CO2-MSG>
<DEFINE-ROUTINE RT-I-GAS-MIX>
<GLOBAL GL-HEATERS-ON <> <> BYTE>
<SYNTAX $HEAT = V-$HEAT>
<DEFINE-ROUTINE V-$HEAT>
<CONSTANT K-AMBIENT-TEMP 3400>
<GLOBAL GL-DEEPCORE-TEMP 9000>
<GLOBAL GL-PLAYER-TEMP 9860>
<GLOBAL GL-TEMP-MSG 9860>
<CONSTANT K-TEMP-FACTOR -2>
<CONSTANT K-TEMP-LOW-4 8600>
<CONSTANT K-TEMP-LOW-3 9100>
<CONSTANT K-TEMP-LOW-2 9300>
<CONSTANT K-TEMP-LOW-1 9500>
<CONSTANT K-TEMP-NOM 9860>
<CONSTANT K-TEMP-HIGH-1 10000>
<CONSTANT K-TEMP-HIGH-2 10500>
<CONSTANT K-TEMP-HIGH-3 11000>
<CONSTANT K-TEMP-HIGH-4 11500>
<OBJECT TH-THERMOMETER (LOC CH-PLAYER) (DESC "thermometer") (FLAGS FL-READABLE
FL-TAKEABLE) (SYNONYM THERMOMETER) (ACTION RT-TH-THERMOMETER)>
<DEFINE-ROUTINE RT-TH-THERMOMETER>
<DEFINE-ROUTINE RT-TEMP-MSG>
<DEFINE-ROUTINE RT-I-DEEPCORE-TEMP>
<DEFINE-ROUTINE RT-I-TEMP>

427
gas-mix.zap Normal file
View File

@ -0,0 +1,427 @@
.FUNCT V-$SCRUB:ANY:0:0
PRINTI "[CO2 scrubbers "
ZERO? GL-SCRUBBERS-ON /?PRT4
SET 'GL-SCRUBBERS-ON,0
JUMP ?PRE6
?PRT4: SET 'GL-SCRUBBERS-ON,1
?PRE6: ZERO? GL-SCRUBBERS-ON /?CCL3
PRINTI "on"
JUMP ?CND1
?CCL3: PRINTI "off"
?CND1: PRINTI ".]
"
RETURN 2
.FUNCT V-$AIR:ANY:0:0
SET 'GL-OXYGEN-QTY,K-OXY-NOM
SET 'GL-OXYGEN-MSG,K-OXY-NOM
SET 'GL-CO2-QTY,K-CO2-NOM
SET 'GL-CO2-MSG,K-CO2-NOM
SET 'GL-NITROGEN-QTY,K-NIT-NOM
SET 'GL-NITROGEN-MSG,K-NIT-NOM
SET 'GL-HELIUM-QTY,K-HEL-NOM
PRINTI "[Breathing mix returned to nominal.]
"
RETURN 2
.FUNCT RT-NUM-DIGITS:ANY:1:1,N
LESS? N,0 \?CND1
SUB 0,N >N
?CND1: LESS? N,10 /TRUE
LESS? N,100 \?CCL8
RETURN 2
?CCL8: LESS? N,1000 \?CCL10
RETURN 3
?CCL10: LESS? N,10000 /?CTR11
RETURN 5
?CTR11: RETURN 4
.FUNCT RT-PRINT-FLOAT:ANY:2:3,F,E,D,N,M
ASSIGNED? 'D /?CND1
SET 'D,-1
?CND1: LESS? E,0 \?CCL5
CALL2 RT-NUM-DIGITS,F
SUB 0,STACK >N
GRTR? E,N /?CCL8
PRINTI "0."
?PRG9: LESS? E,N \?REP10
PRINTC 48
INC 'E
JUMP ?PRG9
?REP10: PRINTN F
RTRUE
?CCL8: SUB 0,N
EQUAL? STACK,5 \?CCL16
SET 'M,10000
JUMP ?PRG23
?CCL16: SUB 0,N
EQUAL? STACK,4 \?CCL18
SET 'M,1000
JUMP ?PRG23
?CCL18: SUB 0,N
EQUAL? STACK,3 \?CCL20
SET 'M,100
JUMP ?PRG23
?CCL20: SUB 0,N
EQUAL? STACK,2 \?CCL22
SET 'M,10
JUMP ?PRG23
?CCL22: SET 'M,1
?PRG23: DIV F,M
MOD STACK,10
PRINTN STACK
INC 'N
EQUAL? E,N \?CND25
PRINTC 46
?CND25: DIV M,10 >M
ZERO? M \?PRG23
RTRUE
?CCL5: PRINTN F
SET 'N,0
?PRG29: LESS? N,E \TRUE
PRINTC 48
INC 'N
JUMP ?PRG29
.FUNCT RT-NITROGEN-MSG:ANY:0:0
GRTR? GL-NITROGEN-QTY,GL-NITROGEN-MSG \?CCL3
LESS? GL-NITROGEN-QTY,K-NIT-HIGH-4 /?CCL6
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTI " The high nitrogen level finally overcomes you and you fall to the floor, unconscious.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL6: LESS? GL-NITROGEN-QTY,K-NIT-HIGH-3 /?CCL9
LESS? GL-NITROGEN-MSG,K-NIT-HIGH-3 \FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " You are beginning to hallucinate."
?CCL9: LESS? GL-NITROGEN-QTY,K-NIT-HIGH-2 /?CCL14
LESS? GL-NITROGEN-MSG,K-NIT-HIGH-2 \FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " Your head is beginning to spin."
?CCL14: LESS? GL-NITROGEN-QTY,K-NIT-HIGH-1 /?CCL19
LESS? GL-NITROGEN-MSG,K-NIT-HIGH-1 \FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " You are beginning to feel light-headed."
?CCL19: GRTR? GL-NITROGEN-QTY,K-NIT-LOW-1 \?CCL24
GRTR? GL-NITROGEN-MSG,K-NIT-LOW-1 /FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " Your hands stop trembling. The nitrogen level must be back to normal."
?CCL24: GRTR? GL-NITROGEN-QTY,K-NIT-LOW-2 \?CCL29
GRTR? GL-NITROGEN-MSG,K-NIT-LOW-2 /FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " Most of the trembling in your hands has disappeared."
?CCL29: GRTR? GL-NITROGEN-QTY,K-NIT-LOW-3 \FALSE
GRTR? GL-NITROGEN-MSG,K-NIT-LOW-3 /FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " The flashes of irritibility cease, but your fingertips are still trembling."
?CCL3: LESS? GL-NITROGEN-QTY,GL-NITROGEN-MSG \FALSE
GRTR? GL-NITROGEN-QTY,K-NIT-LOW-4 /?CCL42
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTI " You slump to the floor, a victim of High Pressure Nervous Syndrome.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL42: GRTR? GL-NITROGEN-QTY,K-NIT-LOW-3 /?CCL45
GRTR? GL-NITROGEN-MSG,K-NIT-LOW-3 \FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " You begin to have flashes of sudden irritibility."
?CCL45: GRTR? GL-NITROGEN-QTY,K-NIT-LOW-2 /?CCL50
GRTR? GL-NITROGEN-MSG,K-NIT-LOW-2 \FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " The trembling in your fingertips gets worse."
?CCL50: GRTR? GL-NITROGEN-QTY,K-NIT-LOW-1 /?CCL55
GRTR? GL-NITROGEN-MSG,K-NIT-LOW-1 \FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " Your hands begin to tremble."
?CCL55: LESS? GL-NITROGEN-QTY,K-NIT-HIGH-1 \?CCL60
LESS? GL-NITROGEN-MSG,K-NIT-HIGH-1 /FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " You no longer feel dizzy. The nitrogen level must be back to normal."
?CCL60: LESS? GL-NITROGEN-QTY,K-NIT-HIGH-2 \?CCL65
LESS? GL-NITROGEN-MSG,K-NIT-HIGH-2 /FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " Your head stops spinning, but you still feel dizzy."
?CCL65: LESS? GL-NITROGEN-QTY,K-NIT-HIGH-3 \FALSE
LESS? GL-NITROGEN-MSG,K-NIT-HIGH-3 /FALSE
SET 'GL-NITROGEN-MSG,GL-NITROGEN-QTY
PRINTR " The hallucinations fade, but your head is still spinning."
.FUNCT RT-OXYGEN-MSG:ANY:0:0
GRTR? GL-OXYGEN-QTY,GL-OXYGEN-MSG \?CCL3
LESS? GL-OXYGEN-QTY,K-OXY-HIGH-4 /?CCL6
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTI " The high oxygen level finally overcomes you. You go into convulsions, fall to the floor, and pass out.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL6: LESS? GL-OXYGEN-QTY,K-OXY-HIGH-3 /?CCL9
LESS? GL-OXYGEN-MSG,K-OXY-HIGH-3 \FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " Suddenly, your stomach muscles tighten up and you fight off the urge to vomit."
?CCL9: LESS? GL-OXYGEN-QTY,K-OXY-HIGH-2 /?CCL14
LESS? GL-OXYGEN-MSG,K-OXY-HIGH-2 \FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " You begin to feel nauseous."
?CCL14: LESS? GL-OXYGEN-QTY,K-OXY-HIGH-1 /?CCL19
LESS? GL-OXYGEN-MSG,K-OXY-HIGH-1 \FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " Suddenly, you feel a twitch in your lower lip."
?CCL19: GRTR? GL-OXYGEN-QTY,K-OXY-LOW-1 \?CCL24
GRTR? GL-OXYGEN-MSG,K-OXY-LOW-1 /FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " Your headache disappears. The oxygen level must be back to normal."
?CCL24: GRTR? GL-OXYGEN-QTY,K-OXY-LOW-2 \?CCL29
GRTR? GL-OXYGEN-MSG,K-OXY-LOW-2 /FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " You begin to see colors again, but you still have a mild headache."
?CCL29: GRTR? GL-OXYGEN-QTY,K-OXY-LOW-3 \FALSE
GRTR? GL-OXYGEN-MSG,K-OXY-LOW-3 /FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " Your tunnel vision begins to fade."
?CCL3: LESS? GL-OXYGEN-QTY,GL-OXYGEN-MSG \FALSE
GRTR? GL-OXYGEN-QTY,K-OXY-LOW-4 /?CCL42
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTI " You collapse, a victim of oxygen starvation.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL42: GRTR? GL-OXYGEN-QTY,K-OXY-LOW-3 /?CCL45
GRTR? GL-OXYGEN-MSG,K-OXY-LOW-3 \FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " You notice that your peripheral vision is beginning to disappear."
?CCL45: GRTR? GL-OXYGEN-QTY,K-OXY-LOW-2 /?CCL50
GRTR? GL-OXYGEN-MSG,K-OXY-LOW-2 \FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " The colors around you seem to fade."
?CCL50: GRTR? GL-OXYGEN-QTY,K-OXY-LOW-1 /?CCL55
GRTR? GL-OXYGEN-MSG,K-OXY-LOW-1 \FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " Your head begins to ache."
?CCL55: LESS? GL-OXYGEN-QTY,K-OXY-HIGH-1 \?CCL60
LESS? GL-OXYGEN-MSG,K-OXY-HIGH-1 /FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " You lip stops twitching. The oxygen level must be back to normal."
?CCL60: LESS? GL-OXYGEN-QTY,K-OXY-HIGH-2 \?CCL65
LESS? GL-OXYGEN-MSG,K-OXY-HIGH-2 /FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " You no longer feel nauseous, but your lip still twitches occasionally."
?CCL65: LESS? GL-OXYGEN-QTY,K-OXY-HIGH-3 \FALSE
LESS? GL-OXYGEN-MSG,K-OXY-HIGH-3 /FALSE
SET 'GL-OXYGEN-MSG,GL-OXYGEN-QTY
PRINTR " The tension in your stomach disappears, but you still feel slightly nauseous."
.FUNCT RT-CO2-MSG:ANY:0:0
GRTR? GL-CO2-QTY,GL-CO2-MSG \?CCL3
LESS? GL-CO2-QTY,K-CO2-HIGH-4 /?CCL6
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTI " You pass out from carbon dioxide poisoning.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL6: LESS? GL-CO2-QTY,K-CO2-HIGH-3 /?CCL9
LESS? GL-CO2-MSG,K-CO2-HIGH-3 \FALSE
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTR " Suddenly the muscles in your arm begin to spasm."
?CCL9: LESS? GL-CO2-QTY,K-CO2-HIGH-2 /?CCL14
LESS? GL-CO2-MSG,K-CO2-HIGH-2 \FALSE
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTR " Your chest muscles are beginning to ache."
?CCL14: LESS? GL-CO2-QTY,K-CO2-HIGH-1 /FALSE
LESS? GL-CO2-MSG,K-CO2-HIGH-1 \FALSE
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTR " You begin to feel a little short of breath."
?CCL3: LESS? GL-CO2-QTY,GL-CO2-MSG \FALSE
LESS? GL-CO2-QTY,K-CO2-HIGH-1 \?CCL27
LESS? GL-CO2-MSG,K-CO2-HIGH-1 /FALSE
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTR " You begin to breathe more easily. The carbon dioxide level must have returned to normal."
?CCL27: LESS? GL-CO2-QTY,K-CO2-HIGH-2 \?CCL32
LESS? GL-CO2-MSG,K-CO2-HIGH-2 /FALSE
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTR " Your chest muscles feel better, but you are still short of breath."
?CCL32: LESS? GL-CO2-QTY,K-CO2-HIGH-3 \FALSE
LESS? GL-CO2-MSG,K-CO2-HIGH-3 /FALSE
SET 'GL-CO2-MSG,GL-CO2-QTY
PRINTR " The spasms in your arm have stopped, but your chest muscles still ache."
.FUNCT RT-I-GAS-MIX:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-GAS-MIX,STACK
SUB GL-OXYGEN-QTY,4 >GL-OXYGEN-QTY
LESS? GL-OXYGEN-QTY,0 \?CND1
SET 'GL-OXYGEN-QTY,0
?CND1: ZERO? GL-SCRUBBERS-ON /?CCL5
SUB GL-CO2-QTY,340 >GL-CO2-QTY
LESS? GL-CO2-QTY,0 \?CND3
SET 'GL-CO2-QTY,0
JUMP ?CND3
?CCL5: ADD GL-CO2-QTY,340 >GL-CO2-QTY
?CND3: CALL1 RT-OXYGEN-MSG
ZERO? STACK \TRUE
CALL1 RT-CO2-MSG
ZERO? STACK \TRUE
RFALSE
.FUNCT V-$HEAT:ANY:0:0
PRINTI "[Heaters "
ZERO? GL-HEATERS-ON /?PRT4
SET 'GL-HEATERS-ON,0
JUMP ?PRE6
?PRT4: SET 'GL-HEATERS-ON,1
?PRE6: ZERO? GL-HEATERS-ON /?CCL3
PRINTI "on"
JUMP ?CND1
?CCL3: PRINTI "off"
?CND1: PRINTI ".]
"
RETURN 2
.FUNCT RT-TH-THERMOMETER:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
PRINTI " The thermometer says your core temperature is "
ICALL RT-PRINT-FLOAT,GL-PLAYER-TEMP,K-TEMP-FACTOR
PRINTR " degrees Fahrenheit."
.FUNCT RT-TEMP-MSG:ANY:0:0
LESS? GL-PLAYER-TEMP,GL-TEMP-MSG \?CCL3
GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-4 /?CCL6
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTI " The cold finally overpowers you and you pass out.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL6: GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-3 /?CCL9
GRTR? GL-TEMP-MSG,K-TEMP-LOW-3 \FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You're so cold you can hardly move."
?CCL9: GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-2 /?CCL14
GRTR? GL-TEMP-MSG,K-TEMP-LOW-2 \FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " The cold begins to creep into your bones."
?CCL14: GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-1 /?CCL19
GRTR? GL-TEMP-MSG,K-TEMP-LOW-1 \FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You begin to shiver."
?CCL19: LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-1 \?CCL24
LESS? GL-TEMP-MSG,K-TEMP-HIGH-1 /FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You stop sweating. Your body temperature must have returned to normal."
?CCL24: LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-2 \?CCL29
LESS? GL-TEMP-MSG,K-TEMP-HIGH-2 /FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " Your face is no longer flushed, but you are still sweating."
?CCL29: LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-3 \FALSE
LESS? GL-TEMP-MSG,K-TEMP-HIGH-3 /FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " Your breathing returns to normal, but your face is still red."
?CCL3: GRTR? GL-PLAYER-TEMP,GL-TEMP-MSG \FALSE
LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-4 /?CCL42
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTI " The heat becomes overpowering and you collapse.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL42: LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-3 /?CCL45
LESS? GL-TEMP-MSG,K-TEMP-HIGH-3 \FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You're so hot you can hardly move. Your breathing speeds up dangerously."
?CCL45: LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-2 /?CCL50
LESS? GL-TEMP-MSG,K-TEMP-HIGH-2 \FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " Your face turns red from the heat."
?CCL50: LESS? GL-PLAYER-TEMP,K-TEMP-HIGH-1 /?CCL55
LESS? GL-TEMP-MSG,K-TEMP-HIGH-1 \FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You feel uncomfortably hot and begin to sweat."
?CCL55: GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-1 \?CCL60
GRTR? GL-TEMP-MSG,K-TEMP-LOW-1 /FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You stop shivering. Your body temperature must be back to normal."
?CCL60: GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-2 \?CCL65
GRTR? GL-TEMP-MSG,K-TEMP-LOW-2 /FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " Your hands and feet tingle as they begin to warm up."
?CCL65: GRTR? GL-PLAYER-TEMP,K-TEMP-LOW-3 \FALSE
GRTR? GL-TEMP-MSG,K-TEMP-LOW-3 /FALSE
SET 'GL-TEMP-MSG,GL-PLAYER-TEMP
PRINTR " You're beginning to thaw out."
.FUNCT RT-I-DEEPCORE-TEMP:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-DEEPCORE-TEMP,STACK
ZERO? GL-HEATERS-ON /?CCL3
ADD GL-DEEPCORE-TEMP,5 >GL-DEEPCORE-TEMP
RFALSE
?CCL3: SUB GL-DEEPCORE-TEMP,5 >GL-DEEPCORE-TEMP
RFALSE
.FUNCT RT-I-TEMP:ANY:0:0,L,D1,D2
LOC CH-PLAYER >L
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-TEMP,STACK
FSET? L,FL-WATER \?CCL3
IN? TH-FBS-SUIT,CH-PLAYER \?PRD8
FSET? TH-FBS-SUIT,FL-WORN /?CTR5
?PRD8: IN? TH-DRY-SUIT,CH-PLAYER \?CCL6
FSET? TH-DRY-SUIT,FL-WORN \?CCL6
?CTR5: SUB GL-PLAYER-TEMP,10 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL6: SUB GL-PLAYER-TEMP,500 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL3: LESS? GL-PLAYER-TEMP,K-TEMP-NOM \?CCL14
SUB GL-PLAYER-TEMP,860
GRTR? GL-DEEPCORE-TEMP,STACK \?CCL14
SUB GL-PLAYER-TEMP,860
SUB GL-DEEPCORE-TEMP,STACK >D1
SUB K-TEMP-NOM,GL-PLAYER-TEMP >D2
GRTR? D2,D1 /?CCL19
GRTR? D2,5 /?CCL19
SET 'GL-PLAYER-TEMP,K-TEMP-NOM
JUMP ?CND1
?CCL19: LESS? D1,5 /?CCL23
ADD GL-PLAYER-TEMP,5 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL23: ADD GL-PLAYER-TEMP,D1 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL14: GRTR? GL-PLAYER-TEMP,K-TEMP-NOM \?CCL25
SUB GL-PLAYER-TEMP,860
LESS? GL-DEEPCORE-TEMP,STACK \?CCL25
SUB GL-PLAYER-TEMP,860
SUB STACK,GL-DEEPCORE-TEMP >D1
SUB GL-PLAYER-TEMP,K-TEMP-NOM >D2
GRTR? D2,D1 /?CCL30
GRTR? D2,5 /?CCL30
SET 'GL-PLAYER-TEMP,K-TEMP-NOM
JUMP ?CND1
?CCL30: LESS? D1,5 /?CCL34
SUB GL-PLAYER-TEMP,5 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL34: SUB GL-PLAYER-TEMP,D1 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL25: ADD GL-PLAYER-TEMP,600
GRTR? GL-DEEPCORE-TEMP,STACK \?CCL36
ADD GL-PLAYER-TEMP,5 >GL-PLAYER-TEMP
JUMP ?CND1
?CCL36: SUB GL-PLAYER-TEMP,1200
LESS? GL-DEEPCORE-TEMP,STACK \?CND1
SUB GL-PLAYER-TEMP,5 >GL-PLAYER-TEMP
?CND1: CALL1 RT-TEMP-MSG
RSTACK
.ENDI

872
gas-mix.zil Normal file
View File

@ -0,0 +1,872 @@
;"***************************************************************************"
; "game : Abyss"
; "file : GAS-MIX.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:44:46 $"
; "rev : $Revision: 1.11 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Default substitutions"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<GLOBAL GL-OXYGEN-QTY 3400>
<GLOBAL GL-OXYGEN-MSG 3400>
<CONSTANT K-OXYGEN-FACTOR -4>
<CONSTANT K-OXY-LOW-4 850>
<CONSTANT K-OXY-LOW-3 1133>
<CONSTANT K-OXY-LOW-2 1417>
<CONSTANT K-OXY-LOW-1 1700>
<CONSTANT K-OXY-NOM 3400>
<CONSTANT K-OXY-HIGH-1 20400>
<CONSTANT K-OXY-HIGH-2 23800>
<CONSTANT K-OXY-HIGH-3 27200>
<CONSTANT K-OXY-HIGH-4 30600>
<GLOBAL GL-CO2-QTY 536>
<GLOBAL GL-CO2-MSG 536>
<CONSTANT K-CO2-FACTOR -6>
<CONSTANT K-CO2-NOM 536>
<CONSTANT K-CO2-HIGH-1 22725>
<CONSTANT K-CO2-HIGH-2 25971>
<CONSTANT K-CO2-HIGH-3 29218>
<CONSTANT K-CO2-HIGH-4 32464>
<GLOBAL GL-NITROGEN-QTY 1267>
<GLOBAL GL-NITROGEN-MSG 1267>
<CONSTANT K-NITROGEN-FACTOR -3>
<CONSTANT K-NIT-LOW-4 211>
<CONSTANT K-NIT-LOW-3 253>
<CONSTANT K-NIT-LOW-2 317>
<CONSTANT K-NIT-LOW-1 422>
<CONSTANT K-NIT-NOM 1267>
<CONSTANT K-NIT-HIGH-1 3802>
<CONSTANT K-NIT-HIGH-2 5070>
<CONSTANT K-NIT-HIGH-3 6337>
<CONSTANT K-NIT-HIGH-4 7605>
<GLOBAL GL-HELIUM-QTY 9839>
<CONSTANT K-HELIUM-FACTOR -2>
<CONSTANT K-HEL-NOM 9839>
<GLOBAL GL-SCRUBBERS-ON <> <> BYTE>
<SYNTAX $SCRUB = V-$SCRUB>
<ROUTINE V-$SCRUB ()
<TELL "[CO2 scrubbers ">
<COND
(<SETG GL-SCRUBBERS-ON <NOT ,GL-SCRUBBERS-ON>>
<TELL "on">
)
(T
<TELL "off">
)
>
<TELL ".]|">
<RFATAL>
>
<SYNTAX $AIR = V-$AIR>
<ROUTINE V-$AIR ()
<SETG GL-OXYGEN-QTY ,K-OXY-NOM>
<SETG GL-OXYGEN-MSG ,K-OXY-NOM>
<SETG GL-CO2-QTY ,K-CO2-NOM>
<SETG GL-CO2-MSG ,K-CO2-NOM>
<SETG GL-NITROGEN-QTY ,K-NIT-NOM>
<SETG GL-NITROGEN-MSG ,K-NIT-NOM>
<SETG GL-HELIUM-QTY ,K-HEL-NOM>
<TELL "[Breathing mix returned to nominal.]|">
<RFATAL>
>
<ROUTINE RT-NUM-DIGITS (N)
<SET N <ABS .N>>
<COND
(<L? .N 10>
<RETURN 1>
)
(<L? .N 100>
<RETURN 2>
)
(<L? .N 1000>
<RETURN 3>
)
(<L? .N 10000>
<RETURN 4>
)
(T
<RETURN 5>
)
>
>
<ROUTINE RT-PRINT-FLOAT (F E "OPT" (D -1) "AUX" N M)
<COND
(<L? .E 0>
<SET N <- <RT-NUM-DIGITS .F>>>
<COND
(<L=? .E .N>
<TELL "0.">
<REPEAT ()
<COND
(<L? .E .N>
<TELL !\0>
<INC E>
)
(T
<RETURN>
)
>
>
<TELL N .F>
)
(T
<COND
(<EQUAL? <- .N> 5>
<SET M 10000>
)
(<EQUAL? <- .N> 4>
<SET M 1000>
)
(<EQUAL? <- .N> 3>
<SET M 100>
)
(<EQUAL? <- .N> 2>
<SET M 10>
)
(T
<SET M 1>
)
>
<REPEAT ()
<TELL N <MOD </ .F .M> 10>>
<INC N>
<COND
(<EQUAL? .E .N>
<TELL !\.>
)
>
<SET M </ .M 10>>
<COND
(<EQUAL? .M 0>
<RETURN>
)
>
>
)
>
)
(T
<TELL N .F>
<SET N 0>
<REPEAT ()
<COND
(<L? .N .E>
<TELL !\0>
<INC N>
)
(T
<RETURN>
)
>
>
)
>
>
<ROUTINE RT-NITROGEN-MSG ()
<COND
(<G? ,GL-NITROGEN-QTY ,GL-NITROGEN-MSG>
; "Nitrogen going up"
<COND
(<G=? ,GL-NITROGEN-QTY ,K-NIT-HIGH-4>
<COND
(T ;<L? ,GL-NITROGEN-MSG ,K-NIT-HIGH-4>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" The high nitrogen level finally overcomes you and you fall to the floor,
unconscious.|"
>
<RT-END-OF-GAME>
)
>
)
(<G=? ,GL-NITROGEN-QTY ,K-NIT-HIGH-3>
<COND
(<L? ,GL-NITROGEN-MSG ,K-NIT-HIGH-3>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL " You are beginning to hallucinate." CR>
)
>
)
(<G=? ,GL-NITROGEN-QTY ,K-NIT-HIGH-2>
<COND
(<L? ,GL-NITROGEN-MSG ,K-NIT-HIGH-2>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL " Your head is beginning to spin." CR>
)
>
)
(<G=? ,GL-NITROGEN-QTY ,K-NIT-HIGH-1>
<COND
(<L? ,GL-NITROGEN-MSG ,K-NIT-HIGH-1>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL " You are beginning to feel light-headed." CR>
)
>
)
(<G? ,GL-NITROGEN-QTY ,K-NIT-LOW-1>
<COND
(<L=? ,GL-NITROGEN-MSG ,K-NIT-LOW-1>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" Your hands stop trembling. The nitrogen level must be back to normal." CR
>
)
>
)
(<G? ,GL-NITROGEN-QTY ,K-NIT-LOW-2>
<COND
(<L=? ,GL-NITROGEN-MSG ,K-NIT-LOW-2 ;317>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" Most of the trembling in your hands has disappeared." CR
>
)
>
)
(<G? ,GL-NITROGEN-QTY ,K-NIT-LOW-3>
<COND
(<L=? ,GL-NITROGEN-MSG ,K-NIT-LOW-3 ;253>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" The flashes of irritibility cease, but your fingertips are still
trembling." CR
>
)
>
)
>
)
(<L? ,GL-NITROGEN-QTY ,GL-NITROGEN-MSG>
; "Nitrogen going down"
<COND
(<L=? ,GL-NITROGEN-QTY ,K-NIT-LOW-4>
<COND
(T ;<G? ,GL-NITROGEN-MSG ,K-NIT-LOW-4>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" You slump to the floor, a victim of High Pressure Nervous Syndrome.|"
>
<RT-END-OF-GAME>
)
>
)
(<L=? ,GL-NITROGEN-QTY ,K-NIT-LOW-3>
<COND
(<G? ,GL-NITROGEN-MSG ,K-NIT-LOW-3>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" You begin to have flashes of sudden irritibility." CR
>
)
>
)
(<L=? ,GL-NITROGEN-QTY ,K-NIT-LOW-2>
<COND
(<G? ,GL-NITROGEN-MSG ,K-NIT-LOW-2>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" The trembling in your fingertips gets worse." CR
>
)
>
)
(<L=? ,GL-NITROGEN-QTY ,K-NIT-LOW-1>
<COND
(<G? ,GL-NITROGEN-MSG ,K-NIT-LOW-1>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL " Your hands begin to tremble." CR>
)
>
)
(<L? ,GL-NITROGEN-QTY ,K-NIT-HIGH-1>
<COND
(<G=? ,GL-NITROGEN-MSG ,K-NIT-HIGH-1>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" You no longer feel dizzy. The nitrogen level must be back to normal." CR
>
)
>
)
(<L? ,GL-NITROGEN-QTY ,K-NIT-HIGH-2>
<COND
(<G=? ,GL-NITROGEN-MSG ,K-NIT-HIGH-2>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" Your head stops spinning, but you still feel dizzy." CR
>
)
>
)
(<L? ,GL-NITROGEN-QTY ,K-NIT-HIGH-3>
<COND
(<G=? ,GL-NITROGEN-MSG ,K-NIT-HIGH-3>
<SETG GL-NITROGEN-MSG ,GL-NITROGEN-QTY>
<TELL
" The hallucinations fade, but your head is still spinning." CR
>
)
>
)
>
)
>
>
<ROUTINE RT-OXYGEN-MSG ()
<COND
(<G? ,GL-OXYGEN-QTY ,GL-OXYGEN-MSG>
; "Oxygen going up"
<COND
(<G=? ,GL-OXYGEN-QTY ,K-OXY-HIGH-4>
<COND
(T ;<L? ,GL-OXYGEN-MSG ,K-OXY-HIGH-4>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" The high oxygen level finally overcomes you. You go into convulsions, fall
to the floor, and pass out.|"
>
<RT-END-OF-GAME>
)
>
)
(<G=? ,GL-OXYGEN-QTY ,K-OXY-HIGH-3>
<COND
(<L? ,GL-OXYGEN-MSG ,K-OXY-HIGH-3>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" Suddenly, your stomach muscles tighten up and you fight off the urge to
vomit." CR
>
)
>
)
(<G=? ,GL-OXYGEN-QTY ,K-OXY-HIGH-2>
<COND
(<L? ,GL-OXYGEN-MSG ,K-OXY-HIGH-2>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL " You begin to feel nauseous." CR>
)
>
)
(<G=? ,GL-OXYGEN-QTY ,K-OXY-HIGH-1>
<COND
(<L? ,GL-OXYGEN-MSG ,K-OXY-HIGH-1>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL " Suddenly, you feel a twitch in your lower lip." CR>
)
>
)
(<G? ,GL-OXYGEN-QTY ,K-OXY-LOW-1>
<COND
(<L=? ,GL-OXYGEN-MSG ,K-OXY-LOW-1>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" Your headache disappears. The oxygen level must be back to normal." CR
>
)
>
)
(<G? ,GL-OXYGEN-QTY ,K-OXY-LOW-2>
<COND
(<L=? ,GL-OXYGEN-MSG ,K-OXY-LOW-2>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" You begin to see colors again, but you still have a mild headache." CR
>
)
>
)
(<G? ,GL-OXYGEN-QTY ,K-OXY-LOW-3>
<COND
(<L=? ,GL-OXYGEN-MSG ,K-OXY-LOW-3>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL " Your tunnel vision begins to fade." CR>
)
>
)
>
)
(<L? ,GL-OXYGEN-QTY ,GL-OXYGEN-MSG>
; "Oxygen going down"
<COND
(<L=? ,GL-OXYGEN-QTY ,K-OXY-LOW-4>
<COND
(T ;<G? ,GL-OXYGEN-MSG ,K-OXY-LOW-4>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL " You collapse, a victim of oxygen starvation.|">
<RT-END-OF-GAME>
)
>
)
(<L=? ,GL-OXYGEN-QTY ,K-OXY-LOW-3>
<COND
(<G? ,GL-OXYGEN-MSG ,K-OXY-LOW-3>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" You notice that your peripheral vision is beginning to disappear." CR
>
)
>
)
(<L=? ,GL-OXYGEN-QTY ,K-OXY-LOW-2>
<COND
(<G? ,GL-OXYGEN-MSG ,K-OXY-LOW-2>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL " The colors around you seem to fade." CR>
)
>
)
(<L=? ,GL-OXYGEN-QTY ,K-OXY-LOW-1>
<COND
(<G? ,GL-OXYGEN-MSG ,K-OXY-LOW-1>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL " Your head begins to ache." CR>
)
>
)
(<L? ,GL-OXYGEN-QTY ,K-OXY-HIGH-1>
<COND
(<G=? ,GL-OXYGEN-MSG ,K-OXY-HIGH-1>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" You lip stops twitching. The oxygen level must be back to normal." CR
>
)
>
)
(<L? ,GL-OXYGEN-QTY ,K-OXY-HIGH-2>
<COND
(<G=? ,GL-OXYGEN-MSG ,K-OXY-HIGH-2>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" You no longer feel nauseous, but your lip still twitches occasionally." CR
>
)
>
)
(<L? ,GL-OXYGEN-QTY ,K-OXY-HIGH-3>
<COND
(<G=? ,GL-OXYGEN-MSG ,K-OXY-HIGH-3>
<SETG GL-OXYGEN-MSG ,GL-OXYGEN-QTY>
<TELL
" The tension in your stomach disappears, but you still feel slightly
nauseous." CR
>
)
>
)
>
)
>
>
<ROUTINE RT-CO2-MSG ()
<COND
(<G? ,GL-CO2-QTY ,GL-CO2-MSG>
; "Carbon Dioxide going up"
<COND
(<G=? ,GL-CO2-QTY ,K-CO2-HIGH-4>
<COND
(T ;<L? ,GL-CO2-MSG ,K-CO2-HIGH-4>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL " You pass out from carbon dioxide poisoning.|">
<RT-END-OF-GAME>
)
>
)
(<G=? ,GL-CO2-QTY ,K-CO2-HIGH-3>
<COND
(<L? ,GL-CO2-MSG ,K-CO2-HIGH-3>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL
" Suddenly the muscles in your arm begin to spasm." CR
>
)
>
)
(<G=? ,GL-CO2-QTY ,K-CO2-HIGH-2>
<COND
(<L? ,GL-CO2-MSG ,K-CO2-HIGH-2>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL " Your chest muscles are beginning to ache." CR>
)
>
)
(<G=? ,GL-CO2-QTY ,K-CO2-HIGH-1>
<COND
(<L? ,GL-CO2-MSG ,K-CO2-HIGH-1>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL " You begin to feel a little short of breath." CR>
)
>
)
>
)
(<L? ,GL-CO2-QTY ,GL-CO2-MSG>
; "Carbon Dioxide going down"
<COND
(<L? ,GL-CO2-QTY ,K-CO2-HIGH-1>
<COND
(<G=? ,GL-CO2-MSG ,K-CO2-HIGH-1>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL
" You begin to breathe more easily. The carbon dioxide level must have
returned to normal." CR
>
)
>
)
(<L? ,GL-CO2-QTY ,K-CO2-HIGH-2>
<COND
(<G=? ,GL-CO2-MSG ,K-CO2-HIGH-2>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL
" Your chest muscles feel better, but you are still short of breath." CR
>
)
>
)
(<L? ,GL-CO2-QTY ,K-CO2-HIGH-3>
<COND
(<G=? ,GL-CO2-MSG ,K-CO2-HIGH-3>
<SETG GL-CO2-MSG ,GL-CO2-QTY>
<TELL
" The spasms in your arm have stopped, but your chest muscles still ache." CR
>
)
>
)
>
)
>
>
<ROUTINE RT-I-GAS-MIX ()
<RT-QUEUE ,RT-I-GAS-MIX <+ ,GL-MOVES 1>>
<SETG GL-OXYGEN-QTY <- ,GL-OXYGEN-QTY 4>>
<COND
(<L? ,GL-OXYGEN-QTY 0>
<SETG GL-OXYGEN-QTY 0>
)
>
<COND
(,GL-SCRUBBERS-ON
<SETG GL-CO2-QTY <- ,GL-CO2-QTY 340>>
<COND
(<L? ,GL-CO2-QTY 0>
<SETG GL-CO2-QTY 0>
)
>
)
(T
<SETG GL-CO2-QTY <+ ,GL-CO2-QTY 340>>
)
>
<COND
(<OR <RT-OXYGEN-MSG>
<RT-CO2-MSG>
>
<RTRUE>
)
>
>
<GLOBAL GL-HEATERS-ON <> <> BYTE>
<SYNTAX $HEAT = V-$HEAT>
<ROUTINE V-$HEAT ()
<TELL "[Heaters ">
<COND
(<SETG GL-HEATERS-ON <NOT ,GL-HEATERS-ON>>
<TELL "on">
)
(T
<TELL "off">
)
>
<TELL ".]|">
<RFATAL>
>
<CONSTANT K-AMBIENT-TEMP 3400>
<GLOBAL GL-DEEPCORE-TEMP 9000>
<GLOBAL GL-PLAYER-TEMP 9860> ; "98.6 deg F"
<GLOBAL GL-TEMP-MSG 9860>
<CONSTANT K-TEMP-FACTOR -2>
<CONSTANT K-TEMP-LOW-4 8600>
<CONSTANT K-TEMP-LOW-3 9100>
<CONSTANT K-TEMP-LOW-2 9300>
<CONSTANT K-TEMP-LOW-1 9500>
<CONSTANT K-TEMP-NOM 9860>
<CONSTANT K-TEMP-HIGH-1 10000>
<CONSTANT K-TEMP-HIGH-2 10500>
<CONSTANT K-TEMP-HIGH-3 11000>
<CONSTANT K-TEMP-HIGH-4 11500>
<OBJECT TH-THERMOMETER
(LOC CH-PLAYER)
(DESC "thermometer")
(FLAGS FL-READABLE FL-TAKEABLE)
(SYNONYM THERMOMETER)
(ACTION RT-TH-THERMOMETER)
>
<ROUTINE RT-TH-THERMOMETER ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? READ EXAMINE>
<TELL " The thermometer says your core temperature is ">
<RT-PRINT-FLOAT ,GL-PLAYER-TEMP ,K-TEMP-FACTOR>
<TELL " degrees Fahrenheit." CR>
)
>
>
<ROUTINE RT-TEMP-MSG ()
<COND
(<L? ,GL-PLAYER-TEMP ,GL-TEMP-MSG>
; "Temperature going down."
<COND
(<L=? ,GL-PLAYER-TEMP ,K-TEMP-LOW-4>
<COND
(T ;<G? ,GL-TEMP-MSG ,K-TEMP-LOW-4>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " The cold finally overpowers you and you pass out.|">
<RT-END-OF-GAME>
)
>
)
(<L=? ,GL-PLAYER-TEMP ,K-TEMP-LOW-3>
<COND
(<G? ,GL-TEMP-MSG ,K-TEMP-LOW-3>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " You're so cold you can hardly move." CR>
)
>
)
(<L=? ,GL-PLAYER-TEMP ,K-TEMP-LOW-2>
<COND
(<G? ,GL-TEMP-MSG ,K-TEMP-LOW-2>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " The cold begins to creep into your bones." CR>
)
>
)
(<L=? ,GL-PLAYER-TEMP ,K-TEMP-LOW-1>
<COND
(<G? ,GL-TEMP-MSG ,K-TEMP-LOW-1>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " You begin to shiver." CR>
)
>
)
(<L? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-1>
<COND
(<G=? ,GL-TEMP-MSG ,K-TEMP-HIGH-1>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL
" You stop sweating. Your body temperature must have returned to normal." CR
>
)
>
)
(<L? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-2>
<COND
(<G=? ,GL-TEMP-MSG ,K-TEMP-HIGH-2>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL
" Your face is no longer flushed, but you are still sweating." CR
>
)
>
)
(<L? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-3>
<COND
(<G=? ,GL-TEMP-MSG ,K-TEMP-HIGH-3>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL
" Your breathing returns to normal, but your face is still red." CR
>
)
>
)
>
)
(<G? ,GL-PLAYER-TEMP ,GL-TEMP-MSG>
; "Temperature going up."
<COND
(<G=? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-4>
<COND
(T ;<L? ,GL-TEMP-MSG ,K-TEMP-HIGH-4>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " The heat becomes overpowering and you collapse.|">
<RT-END-OF-GAME>
)
>
)
(<G=? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-3>
<COND
(<L? ,GL-TEMP-MSG ,K-TEMP-HIGH-3>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL
" You're so hot you can hardly move. Your breathing speeds up dangerously." CR
>
)
>
)
(<G=? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-2>
<COND
(<L? ,GL-TEMP-MSG ,K-TEMP-HIGH-2>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " Your face turns red from the heat." CR>
)
>
)
(<G=? ,GL-PLAYER-TEMP ,K-TEMP-HIGH-1>
<COND
(<L? ,GL-TEMP-MSG ,K-TEMP-HIGH-1>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " You feel uncomfortably hot and begin to sweat." CR>
)
>
)
(<G? ,GL-PLAYER-TEMP ,K-TEMP-LOW-1>
<COND
(<L=? ,GL-TEMP-MSG ,K-TEMP-LOW-1>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL
" You stop shivering. Your body temperature must be back to normal." CR
>
)
>
)
(<G? ,GL-PLAYER-TEMP ,K-TEMP-LOW-2>
<COND
(<L=? ,GL-TEMP-MSG ,K-TEMP-LOW-2>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL
" Your hands and feet tingle as they begin to warm up." CR
>
)
>
)
(<G? ,GL-PLAYER-TEMP ,K-TEMP-LOW-3>
<COND
(<L=? ,GL-TEMP-MSG ,K-TEMP-LOW-3>
<SETG GL-TEMP-MSG ,GL-PLAYER-TEMP>
<TELL " You're beginning to thaw out." CR>
)
>
)
>
)
>
>
<ROUTINE RT-I-DEEPCORE-TEMP ()
<RT-QUEUE ,RT-I-DEEPCORE-TEMP <+ ,GL-MOVES 1>>
<COND
(,GL-HEATERS-ON
<SETG GL-DEEPCORE-TEMP <+ ,GL-DEEPCORE-TEMP 5>>
)
(T
<SETG GL-DEEPCORE-TEMP <- ,GL-DEEPCORE-TEMP 5>>
)
>
<RFALSE>
>
<ROUTINE RT-I-TEMP ("AUX" L D1 D2)
<SET L <LOC ,CH-PLAYER>>
<RT-QUEUE ,RT-I-TEMP <+ ,GL-MOVES 1>>
<COND
(<FSET? .L ,FL-WATER>
<COND
(<OR <AND
<IN? ,TH-FBS-SUIT ,CH-PLAYER>
<FSET? ,TH-FBS-SUIT ,FL-WORN>
>
<AND
<IN? ,TH-DRY-SUIT ,CH-PLAYER>
<FSET? ,TH-DRY-SUIT ,FL-WORN>
>
>
<SETG GL-PLAYER-TEMP <- ,GL-PLAYER-TEMP 10>>
)
(T
<SETG GL-PLAYER-TEMP <- ,GL-PLAYER-TEMP 500>>
)
>
)
(<AND <L? ,GL-PLAYER-TEMP ,K-TEMP-NOM>
<G? ,GL-DEEPCORE-TEMP <- ,GL-PLAYER-TEMP 860>>
>
<SET D1 <- ,GL-DEEPCORE-TEMP <- ,GL-PLAYER-TEMP 860>>>
<SET D2 <- ,K-TEMP-NOM ,GL-PLAYER-TEMP>>
<COND
(<AND <L=? .D2 .D1>
<L=? .D2 5>
>
<SETG GL-PLAYER-TEMP ,K-TEMP-NOM>
)
(<G=? .D1 5>
<SETG GL-PLAYER-TEMP <+ ,GL-PLAYER-TEMP 5>>
)
(T
<SETG GL-PLAYER-TEMP <+ ,GL-PLAYER-TEMP .D1>>
)
>
)
(<AND <G? ,GL-PLAYER-TEMP ,K-TEMP-NOM>
<L? ,GL-DEEPCORE-TEMP <- ,GL-PLAYER-TEMP 860>>
>
<SET D1 <- <- ,GL-PLAYER-TEMP 860> ,GL-DEEPCORE-TEMP>>
<SET D2 <- ,GL-PLAYER-TEMP ,K-TEMP-NOM>>
<COND
(<AND <L=? .D2 .D1>
<L=? .D2 5>
>
<SETG GL-PLAYER-TEMP ,K-TEMP-NOM>
)
(<G=? .D1 5>
<SETG GL-PLAYER-TEMP <- ,GL-PLAYER-TEMP 5>>
)
(T
<SETG GL-PLAYER-TEMP <- ,GL-PLAYER-TEMP .D1>>
)
>
)
(<G? ,GL-DEEPCORE-TEMP <+ ,GL-PLAYER-TEMP 600>> ;"+6 deg."
<SETG GL-PLAYER-TEMP <+ ,GL-PLAYER-TEMP 5>>
)
(<L? ,GL-DEEPCORE-TEMP <- ,GL-PLAYER-TEMP 1200>> ;"-12 deg."
<SETG GL-PLAYER-TEMP <- ,GL-PLAYER-TEMP 5>>
)
>
<RT-TEMP-MSG>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

BIN
gas.lbm Normal file

Binary file not shown.

BIN
gauge.lbm Normal file

Binary file not shown.

74
global.zabstr Normal file
View File

@ -0,0 +1,74 @@
<GLOBAL HERE:OBJECT RM-SUB-BAY <> BYTE>
<GLOBAL OHERE:OBJECT <> <> BYTE>
<OBJECT ROOMS (DESC "that") (FLAGS FL-NO-ARTICLE)>
<OBJECT GLOBAL-OBJECTS (DESC "GO") (GENERIC 0) (GLOBAL 0) (OWNER 0) (THINGS 0)
(CAPACITY 0) (SCORE 0) (FLAGS FL-ALIVE FL-ASLEEP FL-AUTO-ENTER FL-AUTO-OPEN
FL-BODY-PART FL-BROKEN FL-BURNABLE FL-BY-HAND FL-CLOTHING FL-COLLECTIVE
FL-CONTAINER FL-DOOR FL-FEMALE FL-HAS-LDESC FL-HAS-SDESC FL-INDOORS
FL-INVISIBLE FL-KEY FL-KNIFE FL-LAMP FL-LIGHTED FL-LOCKED FL-NO-ALL
FL-NO-ARTICLE FL-NO-DESC FL-ON FL-OPEN FL-OPENABLE FL-PERSON FL-PLURAL
FL-READABLE FL-SEARCH FL-SEEN FL-SURFACE FL-TAKEABLE FL-TOOL FL-TOUCHED
FL-TRANSPARENT FL-TRY-TAKE FL-VEHICLE FL-VOWEL FL-WATER FL-WEAPON FL-WORN
FL-YOUR)>
<OBJECT LOCAL-GLOBALS (LOC GLOBAL-OBJECTS) (DESC "LG") (SYNONYM L.G) (FLAGS
FL-NO-ARTICLE)>
<OBJECT GLOBAL-HERE (LOC GLOBAL-OBJECTS) (DESC "here") (FLAGS FL-NO-ARTICLE) (
SYNONYM HERE PLACE ROOM AREA) (ACTION RT-GLOBAL-HERE)>
<DEFINE-ROUTINE RT-GLOBAL-HERE>
<OBJECT IT (LOC GLOBAL-OBJECTS) (DESC "it") (SYNONYM IT THIS) (FLAGS
FL-NO-ARTICLE FL-VOWEL)>
<OBJECT THEM (LOC GLOBAL-OBJECTS) (DESC "them") (SYNONYM THEM) (FLAGS
FL-NO-ARTICLE FL-PLURAL)>
<OBJECT INTNUM (LOC GLOBAL-OBJECTS) (DESC "number") (SYNONYM INT.NUM)>
<OBJECT YOU (LOC GLOBAL-OBJECTS) (DESC "you") (SYNONYM YOU YOURSELF) (ACTION
RT-YOU)>
<DEFINE-ROUTINE RT-YOU>
<OBJECT HER (LOC GLOBAL-OBJECTS) (DESC "her") (SYNONYM HER) (FLAGS
FL-NO-ARTICLE)>
<OBJECT HIM (LOC GLOBAL-OBJECTS) (DESC "him") (SYNONYM HIM) (FLAGS
FL-NO-ARTICLE)>
<OBJECT TH-HUMAN-BODY (LOC GLOBAL-OBJECTS) (FLAGS FL-HAS-SDESC FL-NO-ARTICLE) (
SYNONYM BODY SKIN ARM ARMS HAND HANDS LEG LEGS ANKLE ANKLES FOOT FEET HEAD HAIR
EYE EYES EAR EARS NOSE FACE CHEEK CHEEKS LIP LIPS MOUTH NECK SHOULDER SHOULDERS
CHEST TORSO BACK WAIST) (ADJECTIVE LEFT RIGHT) (OWNER K-BODY-OWNER-TBL) (
GENERIC RT-GN-BODY) (ACTION RT-TH-HUMAN-BODY)>
<CONSTANT K-BODY-OWNER-TBL <TABLE (PURE LENGTH) CH-COFFEY CH-LINDSEY>>
<CONSTANT K-NO-REFER-MSG "[You don't need to refer to ">
<DEFINE-ROUTINE RT-TH-HUMAN-BODY>
<DEFINE-ROUTINE RT-GN-BODY>
<OBJECT TH-PLAYER-BODY (LOC GLOBAL-OBJECTS) (DESC "body") (FLAGS FL-BODY-PART
FL-YOUR) (SYNONYM BODY SKIN ARM ARMS ANKLE ANKLES FOOT FEET HAIR EYE EYES EAR
EARS NOSE FACE CHEEK CHEEKS LIP LIPS TONGUE NECK SHOULDER SHOULDERS CHEST TORSO
BACK WAIST) (ADJECTIVE LEFT RIGHT) (OWNER CH-PLAYER) (GENERIC RT-GN-BODY) (
ACTION RT-TH-PLAYER-BODY)>
<DEFINE-ROUTINE RT-TH-PLAYER-BODY>
<OBJECT TH-HEAD (LOC GLOBAL-OBJECTS) (DESC "head") (FLAGS FL-BODY-PART FL-YOUR)
(SYNONYM HEAD) (OWNER CH-PLAYER) (GENERIC RT-GN-BODY)>
<OBJECT TH-HANDS (LOC GLOBAL-OBJECTS) (DESC "hands") (FLAGS FL-BODY-PART
FL-BY-HAND FL-PLURAL FL-TOOL FL-WEAPON FL-YOUR) (SYNONYM HAND HANDS) (ADJECTIVE
LEFT RIGHT) (OWNER CH-PLAYER) (GENERIC RT-GN-BODY)>
<OBJECT TH-GROUND (LOC GLOBAL-OBJECTS) (SYNONYM GROUND FLOOR) (FLAGS
FL-HAS-SDESC FL-SEARCH FL-SURFACE) (ACTION RT-TH-GROUND)>
<DEFINE-ROUTINE RT-TH-GROUND>
<OBJECT TH-SKY (LOC GLOBAL-OBJECTS) (SYNONYM SKY CEILING) (FLAGS FL-HAS-SDESC)
(ACTION RT-TH-SKY)>
<DEFINE-ROUTINE RT-TH-SKY>
<OBJECT TH-TIME (LOC GENERIC-OBJECTS) (DESC "time") (SYNONYM TURN TURNS MINUTE
MINUTES MIN HOUR HOURS) (ADJECTIVE INT.NUM)>
<OBJECT LG-WALL (LOC LOCAL-GLOBALS) (DESC "wall") (SYNONYM WALL WALLS BULKHEAD)
(ADJECTIVE FORE AFT PORT STARBOARD)>
<OBJECT TH-FLATBED (LOC GENERIC-OBJECTS) (DESC "Flatbed") (FLAGS FL-NO-ARTICLE)
(SYNONYM FLATBED)>
<OBJECT TH-UFO (LOC GENERIC-OBJECTS) (DESC "UFO") (SYNONYM UFO)>
<OBJECT LG-DEEPCORE (LOC LOCAL-GLOBALS) (DESC "Deepcore") (SYNONYM DEEPCORE) (
ACTION RT-LG-DEEPCORE)>
<DEFINE-ROUTINE RT-LG-DEEPCORE>
<OBJECT LG-TROUGH (LOC LOCAL-GLOBALS) (DESC "Cayman trough") (SYNONYM TROUGH) (
ACTION RT-LG-TROUGH)>
<DEFINE-ROUTINE RT-LG-TROUGH>
<OBJECT LG-MONTANA (LOC LOCAL-GLOBALS) (DESC "Montana") (SYNONYM MONTANA
SUBMARINE SUB) (ADJECTIVE NAVY USS OHIO CLASS) (ACTION RT-LG-MONTANA)>
<DEFINE-ROUTINE RT-LG-MONTANA>
<OBJECT LG-OUTLET (LOC LOCAL-GLOBALS) (DESC "outlet") (SYNONYM OUTLET SOCKET) (
ADJECTIVE WALL ELECTRICAL)>

147
global.zap Normal file
View File

@ -0,0 +1,147 @@
.FUNCT RT-GLOBAL-HERE:ANY:0:1,CONTEXT,P
ZERO? HERE /FALSE
GETP HERE,P?ACTION >P
ZERO? P /FALSE
CALL P,CONTEXT
RSTACK
.FUNCT RT-YOU:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL5
CALL PERFORM,PRSA,PRSO,WINNER
RSTACK
?CCL5: CALL PERFORM,PRSA,WINNER,PRSI
RSTACK
.FUNCT RT-TH-HUMAN-BODY:ANY:0:1,CONTEXT,TMP,PERSON
EQUAL? CONTEXT,M-OBJDESC \?CCL3
PRINTI "their body"
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
CALL1 GET-NP
GET STACK,1 >TMP
ZERO? TMP /?CND6
GET TMP,2 >PERSON
?CND6: ZERO? PERSON /?CCL10
CALL2 VISIBLE?,PERSON
ZERO? STACK \?CCL10
ICALL1 NP-CANT-SEE
RETURN 2
?CCL10: PRINT K-NO-REFER-MSG
PRINTI "any"
PRINTI " part of"
ZERO? PERSON /?CCL16
ICALL RT-PRINT-OBJ,PERSON,K-ART-THE
PRINTC 39
FSET? PERSON,FL-PLURAL \?CCL18
FSET? PERSON,FL-COLLECTIVE \?CND14
?CCL18: PRINTC 115
JUMP ?CND14
?CCL16: PRINTI " their"
?CND14: PRINTI " body.]"
CRLF
RETURN 2
.FUNCT RT-GN-BODY:ANY:2:2,TBL,FINDER,PART,PTR,N
ADD TBL,8 >PTR
GET TBL,1 >N
?PRG1: DLESS? 'N,0 /FALSE
GET PTR,0 >PART
ZERO? PART /?CND3
FSET? PART,FL-YOUR /?REP2
EQUAL? PART,TH-PLAYER-BODY /?REP2
EQUAL? PART,TH-HUMAN-BODY /?CND3
RETURN PART
?CND3: ADD PTR,2 >PTR
JUMP ?PRG1
?REP2: RETURN PART
.FUNCT RT-TH-PLAYER-BODY:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
PRINT K-NO-REFER-MSG
PRINTI "that part of your body.]"
CRLF
RETURN 2
.FUNCT RT-TH-GROUND:ANY:0:3,CONTEXT,ART,CAP?
EQUAL? CONTEXT,M-OBJDESC \?CCL3
ZERO? ART /?CND4
ICALL RT-PRINT-ARTICLE,TH-GROUND,ART,CAP?
?CND4: EQUAL? ART,FALSE-VALUE,K-ART-THE,K-ART-A /?CCL8
EQUAL? ART,K-ART-ANY \FALSE
?CCL8: ZERO? ART /?CND11
PRINTC 32
?CND11: FSET? HERE,FL-INDOORS \?CCL15
PRINTI "floor"
RTRUE
?CCL15: PRINTI "ground"
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?LOOK-ON,V?EXAMINE \FALSE
CALL2 RT-SEE-ANYTHING-IN?,HERE
ZERO? STACK /FALSE
PRINTI "You see"
ICALL2 RT-PRINT-CONTENTS,HERE
PRINTI " on"
ICALL RT-PRINT-OBJ,TH-GROUND,K-ART-THE
PRINTC 46
CRLF
RTRUE
.FUNCT RT-TH-SKY:ANY:0:3,CONTEXT,ART,CAP?,RM
EQUAL? CONTEXT,M-OBJDESC \?CCL3
ZERO? ART /?CND4
ICALL RT-PRINT-ARTICLE,TH-SKY,ART,CAP?
?CND4: EQUAL? ART,FALSE-VALUE,K-ART-THE,K-ART-A /?CCL8
EQUAL? ART,K-ART-ANY \FALSE
?CCL8: ZERO? ART /?CND11
PRINTC 32
?CND11: FSET? HERE,FL-INDOORS \?CCL15
PRINTI "ceiling"
RTRUE
?CCL15: PRINTI "sky"
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL22
PUSH 2
JUMP ?CND20
?CCL22: PUSH 1
?CND20: CALL2 EVERYWHERE-VERB?,STACK
ZERO? STACK \FALSE
FSET? HERE,FL-INDOORS \?CCL25
CALL NOUN-USED?,TH-SKY,W?SKY
ZERO? STACK /FALSE
CALL1 NP-CANT-SEE
RSTACK
?CCL25: CALL NOUN-USED?,TH-SKY,W?CEILING
ZERO? STACK /FALSE
CALL1 NP-CANT-SEE
RSTACK
.FUNCT RT-LG-DEEPCORE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks like Deepcore."
.FUNCT RT-LG-TROUGH:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks like the Cayman trough."
.FUNCT RT-LG-MONTANA:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks like the Montana."
.ENDI

601
global.zil Normal file
View File

@ -0,0 +1,601 @@
;"***************************************************************************"
; "game : Abyss"
; "file : GLOBAL.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 13 Mar 1989 19:20:32 $"
; "rev : $Revision: 1.6 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Global objects"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<GLOBAL HERE:OBJECT RM-SUB-BAY <> BYTE>
<GLOBAL OHERE:OBJECT <> <> BYTE>
<OBJECT ROOMS
(DESC "that")
(FLAGS FL-NO-ARTICLE)
>
<OBJECT GLOBAL-OBJECTS
(DESC "GO")
; (FDESC 0)
(GENERIC 0)
(GLOBAL 0)
(OWNER 0)
; (TEXT 0)
(THINGS 0)
(CAPACITY 0)
(SCORE 0)
(FLAGS
FL-ALIVE ; 1
FL-ASLEEP ; 2
FL-AUTO-ENTER ; 3
FL-AUTO-OPEN ; 4
FL-BODY-PART ; 5
FL-BROKEN ; 6
FL-BURNABLE ; 7
FL-BY-HAND ; 8
FL-CLOTHING ; 9
FL-COLLECTIVE ; 10
FL-CONTAINER ; 11
FL-DOOR ; 12
FL-FEMALE ; 13
FL-HAS-LDESC ; 14
FL-HAS-SDESC ; 15
FL-INDOORS ; 16
FL-INVISIBLE ; 17
FL-KEY ; 18
FL-KNIFE ; 19
FL-LAMP ; 20
FL-LIGHTED ; 21
FL-LOCKED ; 22
FL-NO-ALL ; 23
FL-NO-ARTICLE ; 24
FL-NO-DESC ; 25
FL-ON ; 26
FL-OPEN ; 27
FL-OPENABLE ; 28
FL-PERSON ; 29
FL-PLURAL ; 30
FL-READABLE ; 31
; FL-ROOMS ; 32
FL-SEARCH ; 33
FL-SEEN ; 34
FL-SURFACE ; 35
FL-TAKEABLE ; 36
FL-TOOL ; 37
FL-TOUCHED ; 38
FL-TRANSPARENT ; 39
FL-TRY-TAKE ; 40
FL-VEHICLE ; 41
FL-VOWEL ; 42
FL-WATER ; 43
FL-WEAPON ; 44
FL-WORN ; 45
FL-YOUR ; 46
; FL-FLAG-47 ; 47
; FL-FLAG-48 ; 48
)
>
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(DESC "LG")
(SYNONYM L.G)
(FLAGS FL-NO-ARTICLE)
>
<OBJECT GLOBAL-HERE
(LOC GLOBAL-OBJECTS)
(DESC "here")
(FLAGS FL-NO-ARTICLE)
(SYNONYM HERE PLACE ROOM AREA)
(ACTION RT-GLOBAL-HERE)
>
<ROUTINE RT-GLOBAL-HERE ("OPT" (CONTEXT <>) "AUX" P)
<COND
(,HERE
<COND
(<SET P <GETP ,HERE ,P?ACTION>>
<APPLY .P .CONTEXT>
)
>
)
>
>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(DESC "it")
(SYNONYM IT THIS)
(FLAGS FL-NO-ARTICLE FL-VOWEL)
>
<OBJECT THEM
(LOC GLOBAL-OBJECTS)
(DESC "them")
(SYNONYM THEM)
(FLAGS FL-NO-ARTICLE FL-PLURAL)
>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(DESC "number")
(SYNONYM INT.NUM)
>
<OBJECT YOU
(LOC GLOBAL-OBJECTS)
(DESC "you")
(SYNONYM YOU YOURSELF)
(ACTION RT-YOU)
>
<ROUTINE RT-YOU ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(,NOW-PRSI
<PERFORM ,PRSA ,PRSO ,WINNER>
)
(T
<PERFORM ,PRSA ,WINNER ,PRSI>
)
>
>
<OBJECT HER
(LOC GLOBAL-OBJECTS)
(DESC "her")
(SYNONYM HER)
(FLAGS FL-NO-ARTICLE)
>
<OBJECT HIM
(LOC GLOBAL-OBJECTS)
(DESC "him")
(SYNONYM HIM)
(FLAGS FL-NO-ARTICLE)
>
;"---------------------------------------------------------------------------"
; "TH-HUMAN-BODY"
;"---------------------------------------------------------------------------"
<OBJECT TH-HUMAN-BODY
(LOC GLOBAL-OBJECTS)
(FLAGS FL-HAS-SDESC FL-NO-ARTICLE)
(SYNONYM
BODY
SKIN
ARM ARMS
HAND HANDS
LEG LEGS
ANKLE ANKLES
FOOT FEET
HEAD
HAIR
EYE EYES
EAR EARS
NOSE
FACE
CHEEK CHEEKS
LIP LIPS
MOUTH
NECK
SHOULDER SHOULDERS
CHEST
TORSO
BACK
WAIST
)
(ADJECTIVE LEFT RIGHT)
(OWNER K-BODY-OWNER-TBL)
(GENERIC RT-GN-BODY)
(ACTION RT-TH-HUMAN-BODY)
>
<CONSTANT K-BODY-OWNER-TBL
<TABLE (PURE LENGTH)
CH-COFFEY
CH-LINDSEY
>
>
<CONSTANT K-NO-REFER-MSG "[You don't need to refer to ">
<ROUTINE RT-TH-HUMAN-BODY ("OPT" (CONTEXT <>) "AUX" TMP (PERSON <>))
<COND
(<MC-CONTEXT? ,M-OBJDESC>
<TELL "their body">
)
(.CONTEXT
<RFALSE>
)
(T
<COND
(<SET TMP <NP-ADJS <GET-NP>>>
<SET PERSON <ADJS-POSS .TMP>>
)
>
<COND
(<AND .PERSON
<NOT <VISIBLE? .PERSON>>
>
<NP-CANT-SEE>
)
(T
<TELL ,K-NO-REFER-MSG>
<COND
; (<EQUAL? .PERSON>
<TELL "that">
)
(T
<TELL "any">
)
>
<TELL " part of">
<COND
(.PERSON
<TELL the .PERSON !\'>
<COND
(<OR <NOT <FSET? .PERSON ,FL-PLURAL>>
<FSET? .PERSON ,FL-COLLECTIVE>
>
<TELL !\s>
)
>
)
(T
<TELL " their">
)
>
<TELL " body.]" CR>
)
>
<RFATAL>
)
>
>
<ROUTINE RT-GN-BODY (TBL FINDER "AUX" (PART <>))
<REPEAT (
(PTR <REST-TO-SLOT .TBL FIND-RES-OBJ1>)
(N <FIND-RES-COUNT .TBL>)
)
<COND
(<DLESS? N 0>
<RFALSE>
)
(<NOT <SET PART <ZGET .PTR 0>>>)
(<FSET? .PART ,FL-YOUR>
<RETURN>
)
(<EQUAL? .PART ,TH-PLAYER-BODY>
<RETURN>
)
(<NOT <EQUAL? .PART ,TH-HUMAN-BODY>>
<RETURN>
)
>
<SET PTR <ZREST .PTR 2>>
>
<RETURN .PART>
>
;"---------------------------------------------------------------------------"
; "TH-PLAYER-BODY"
;"---------------------------------------------------------------------------"
<OBJECT TH-PLAYER-BODY
(LOC GLOBAL-OBJECTS)
(DESC "body")
(FLAGS FL-BODY-PART FL-YOUR)
(SYNONYM
BODY
SKIN
ARM ARMS
ANKLE ANKLES
FOOT FEET
HAIR
EYE EYES
EAR EARS
NOSE
FACE
CHEEK CHEEKS
LIP LIPS
TONGUE
NECK
SHOULDER SHOULDERS
CHEST
TORSO
BACK
WAIST
)
(ADJECTIVE LEFT RIGHT)
(OWNER CH-PLAYER)
(GENERIC RT-GN-BODY)
(ACTION RT-TH-PLAYER-BODY)
>
<ROUTINE RT-TH-PLAYER-BODY ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(T
<TELL ,K-NO-REFER-MSG "that part of your body.]" CR>
<RFATAL>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-HEAD"
;"---------------------------------------------------------------------------"
<OBJECT TH-HEAD
(LOC GLOBAL-OBJECTS)
(DESC "head")
(FLAGS FL-BODY-PART FL-YOUR)
(SYNONYM HEAD)
(OWNER CH-PLAYER)
(GENERIC RT-GN-BODY)
>
;"---------------------------------------------------------------------------"
; "TH-HANDS"
;"---------------------------------------------------------------------------"
<OBJECT TH-HANDS
(LOC GLOBAL-OBJECTS)
(DESC "hands")
(FLAGS FL-BODY-PART FL-BY-HAND FL-PLURAL FL-TOOL FL-WEAPON FL-YOUR)
(SYNONYM HAND HANDS)
(ADJECTIVE LEFT RIGHT)
(OWNER CH-PLAYER)
(GENERIC RT-GN-BODY)
>
;"---------------------------------------------------------------------------"
; "TH-GROUND"
;"---------------------------------------------------------------------------"
<OBJECT TH-GROUND
(LOC GLOBAL-OBJECTS)
(SYNONYM GROUND FLOOR)
(FLAGS FL-HAS-SDESC FL-SEARCH FL-SURFACE)
(ACTION RT-TH-GROUND)
>
<ROUTINE RT-TH-GROUND ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
<COND
(<MC-CONTEXT? ,M-OBJDESC>
<COND
(.ART
<RT-PRINT-ARTICLE ,TH-GROUND .ART .CAP?>
)
>
<COND
(<EQUAL? .ART <> ,K-ART-THE ,K-ART-A ,K-ART-ANY>
<COND
(.ART
<TELL !\ >
)
>
<COND
(<FSET? ,HERE ,FL-INDOORS>
<TELL "floor">
)
(T
<TELL "ground">
)
>
)
>
)
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE LOOK-ON>
<COND
(<RT-SEE-ANYTHING-IN? ,HERE>
<TELL "You see">
<RT-PRINT-CONTENTS ,HERE>
<TELL " on" the ,TH-GROUND !\. CR>
)
>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-SKY"
;"---------------------------------------------------------------------------"
<OBJECT TH-SKY
(LOC GLOBAL-OBJECTS)
(SYNONYM SKY CEILING)
(FLAGS FL-HAS-SDESC)
(ACTION RT-TH-SKY)
>
<ROUTINE RT-TH-SKY ("OPT" (CONTEXT <>) (ART <>) (CAP? <>) "AUX" RM)
<COND
(<MC-CONTEXT? ,M-OBJDESC>
<COND
(.ART
<RT-PRINT-ARTICLE ,TH-SKY .ART .CAP?>
)
>
<COND
(<EQUAL? .ART <> ,K-ART-THE ,K-ART-A ,K-ART-ANY>
<COND
(.ART
<TELL !\ >
)
>
<COND
(<FSET? ,HERE ,FL-INDOORS>
<TELL "ceiling">
)
(T
<TELL "sky">
)
>
)
>
)
(.CONTEXT
<RFALSE>
)
(<NOT <EVERYWHERE-VERB? <COND (,NOW-PRSI 2) (T 1)>>>
<COND
(<FSET? ,HERE ,FL-INDOORS>
<COND
(<NOUN-USED? ,TH-SKY ,W?SKY>
<NP-CANT-SEE>
)
>
)
(T
<COND
(<NOUN-USED? ,TH-SKY ,W?CEILING>
<NP-CANT-SEE>
)
>
)
>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-TIME"
;"---------------------------------------------------------------------------"
<OBJECT TH-TIME
(LOC GENERIC-OBJECTS)
(DESC "time")
(SYNONYM TURN TURNS MINUTE MINUTES MIN HOUR HOURS)
(ADJECTIVE INT.NUM)
>
;"---------------------------------------------------------------------------"
; "LG-WALL"
;"---------------------------------------------------------------------------"
<OBJECT LG-WALL
(LOC LOCAL-GLOBALS)
(DESC "wall")
(SYNONYM WALL WALLS BULKHEAD)
(ADJECTIVE FORE AFT PORT STARBOARD)
>
;"---------------------------------------------------------------------------"
; "TH-FLATBED"
;"---------------------------------------------------------------------------"
<OBJECT TH-FLATBED
(LOC GENERIC-OBJECTS)
(DESC "Flatbed")
(FLAGS FL-NO-ARTICLE)
(SYNONYM FLATBED)
>
;"---------------------------------------------------------------------------"
; "TH-UFO"
;"---------------------------------------------------------------------------"
<OBJECT TH-UFO
(LOC GENERIC-OBJECTS)
(DESC "UFO")
(SYNONYM UFO)
>
;"---------------------------------------------------------------------------"
; "LG-DEEPCORE"
;"---------------------------------------------------------------------------"
<OBJECT LG-DEEPCORE
(LOC LOCAL-GLOBALS)
(DESC "Deepcore")
(SYNONYM DEEPCORE)
(ACTION RT-LG-DEEPCORE)
>
<ROUTINE RT-LG-DEEPCORE ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL "It looks like Deepcore." CR>
)
>
>
;"---------------------------------------------------------------------------"
; "LG-TROUGH"
;"---------------------------------------------------------------------------"
<OBJECT LG-TROUGH
(LOC LOCAL-GLOBALS)
(DESC "Cayman trough")
(SYNONYM TROUGH)
(ACTION RT-LG-TROUGH)
>
<ROUTINE RT-LG-TROUGH ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL "It looks like the Cayman trough." CR>
)
>
>
;"---------------------------------------------------------------------------"
; "LG-MONTANA"
;"---------------------------------------------------------------------------"
<OBJECT LG-MONTANA
(LOC LOCAL-GLOBALS)
(DESC "Montana")
(SYNONYM MONTANA SUBMARINE SUB)
(ADJECTIVE NAVY USS OHIO CLASS)
(ACTION RT-LG-MONTANA)
>
<ROUTINE RT-LG-MONTANA ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL "It looks like the Montana." CR>
)
>
>
;"---------------------------------------------------------------------------"
; "LG-OUTLET"
;"---------------------------------------------------------------------------"
<OBJECT LG-OUTLET
(LOC LOCAL-GLOBALS)
(DESC "outlet")
(SYNONYM OUTLET SOCKET)
(ADJECTIVE WALL ELECTRICAL)
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

BIN
icons.lbm Normal file

Binary file not shown.

BIN
letters.lbm Normal file

Binary file not shown.

BIN
lifesupp.lbm Normal file

Binary file not shown.

BIN
lights.lbm Normal file

Binary file not shown.

273
macros.zil Normal file
View File

@ -0,0 +1,273 @@
;"***************************************************************************"
; "game : Abyss"
; "file : MACROS.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 07 Mar 1989 2:29:28 $"
; "rev : $Revision: 1.3 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Macro definition file"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<CONSTANT M-ENTERED 42>
<CONSTANT M-F-LOOK 43>
<CONSTANT M-V-LOOK 44>
<CONSTANT M-B-LOOK 45>
<CONSTANT M-END-LOOK 46>
<CONSTANT K-W-YPOS 0>
<CONSTANT K-W-XPOS 1>
<CONSTANT K-W-YSIZE 2>
<CONSTANT K-W-XSIZE 3>
<CONSTANT K-W-YCURPOS 4>
<CONSTANT K-W-XCURPOS 5>
<CONSTANT K-W-LMARG 6>
<CONSTANT K-W-RMARG 7>
<CONSTANT K-W-CRFCN 8>
<CONSTANT K-W-CRCNT 9>
<CONSTANT K-W-HLIGHT 10>
<CONSTANT K-W-COLOR 11>
<CONSTANT K-W-FONT 12>
<CONSTANT K-W-FONTSIZE 13>
<CONSTANT K-W-ATTR 14>
<CONSTANT K-W-MORE 15>
<CONSTANT TAB 9>
<CONSTANT LF 10>
<CONSTANT CR 13>
<CONSTANT ESC 27>
<CONSTANT ESCAPE 27>
<CONSTANT M-EXIT ,M-LEAVE>
<CONSTANT K-S-NOR ,S-TEXT>
<CONSTANT K-S-WIN ,S-WINDOW>
<CONSTANT K-H-NRM ,H-NORMAL>
<CONSTANT K-H-INV ,H-INVERSE>
<CONSTANT K-H-BLD ,H-BOLD>
<CONSTANT K-H-ITL ,H-ITALIC>
<CONSTANT K-D-SCR-ON ,D-SCREEN-ON>
<CONSTANT K-D-SCR-OFF ,D-SCREEN-OFF>
<CONSTANT K-D-PRT-ON ,D-PRINTER-ON>
<CONSTANT K-D-PRT-OFF ,D-PRINTER-OFF>
<CONSTANT K-D-TBL-ON ,D-TABLE-ON>
<CONSTANT K-D-TBL-OFF ,D-TABLE-OFF>
<CONSTANT K-D-REC-ON ,D-RECORD-ON>
<CONSTANT K-D-REC-OFF ,D-RECORD-OFF>
<DEFMAC ONE? ('TERM)
<FORM EQUAL? .TERM 1 T>
>
<DEFMAC MC-IS? ('OBJ 'FLAG)
<FORM FSET? .OBJ .FLAG>
>
<DEFMAC MC-ISNOT? ('OBJ 'FLAG)
<FORM NOT <FORM FSET? .OBJ .FLAG>>
>
<DEFMAC MC-MAKE ('OBJ 'FLAG)
<FORM FSET .OBJ .FLAG>
>
<DEFMAC MC-UNMAKE ('OBJ 'FLAG)
<FORM FCLEAR .OBJ .FLAG>
>
<DEFMAC MC-T? ('TERM)
<FORM .TERM>
>
<DEFMAC MC-F? ('TERM)
<FORM NOT .TERM>
>
<DEFMAC MC-THIS-WINNER? ()
<FORM EQUAL? '.CONTEXT ',M-WINNER>
>
<DEFMAC MC-CONTEXT? ("ARGS" L)
<FORM EQUAL? '.CONTEXT !.L>
>
<DEFMAC MC-WINNER? ("ARGS" L)
<FORM EQUAL? ',WINNER !.L>
>
<DEFMAC PROB ('BASE)
<FORM NOT <FORM L? .BASE '<RANDOM 100>>>
>
<DEFMAC MC-PROB? ('BASE)
<FORM PROB .BASE>
>
<DEFMAC MC-ABS ('NUM)
<FORM ABS .NUM>
>
<DEFMAC RT-PERFORM ("ARGS" L)
<FORM PERFORM !.L>
>
<DEFMAC RT-ACCESSIBLE? ("ARGS" L)
<FORM ACCESSIBLE? !.L>
>
<DEFMAC RT-VISIBLE? ("ARGS" L)
<FORM VISIBLE? !.L>
>
<DEFMAC MC-VERB? ("ARGS" L)
<FORM VERB? !.L>
>
<DEFMAC MC-VERB-WORD? ("ARGS" L)
<FORM EQUAL? ',P-PRSA-WORD !.L>
>
<DEFMAC VERB-WORD? ("ARGS" L)
<FORM EQUAL? ',P-PRSA-WORD !.L>
>
<DEFMAC MC-PRSO? ("ARGS" L)
<FORM EQUAL? ',PRSO !.L>
>
<DEFMAC MC-PRSI? ("ARGS" L)
<FORM EQUAL? ',PRSI !.L>
>
<DEFMAC MC-HERE? ("ARGS" L)
<FORM EQUAL? ',HERE !.L>
>
<DEFMAC RT-GLOBAL-IN? ("ARGS" L)
<FORM GLOBAL-IN? !.L>
>
<DEFMAC RT-PICK-ONE ("ARGS" L)
<FORM PICK-ONE !.L>
>
<VERSION?
(ZIP
<DEFMAC GET/B ('TBL 'PTR)
<FORM GETB .TBL .PTR>
>
<DEFMAC PUT/B ('TBL 'PTR 'OBJ)
<FORM PUTB .TBL .PTR .OBJ>
>
<DEFMAC RMGL-SIZE ('TBL)
<FORM - <FORM PTSIZE .TBL> 1>
>
)
(T
<DEFMAC GET/B ('TBL 'PTR)
<FORM GET .TBL .PTR>
>
<DEFMAC PUT/B ('TBL 'PTR 'OBJ)
<FORM PUT .TBL .PTR .OBJ>
>
<DEFMAC RMGL-SIZE ('TBL)
<FORM - <FORM / <FORM PTSIZE .TBL> 2> 1>
>
)
>
;<DEFMAC BIT-FLAGS ("TUPLE" FLAGS "AUX" FLAG VAL (I 0) (L ()) (N 0) (B 0))
<REPEAT ()
<COND
(<EMPTY? .FLAGS>
<COND
(<G? .N 0>
<SET L (!.L .B)>
)
>
<RETURN!->
)
(T
<SET FLAG <NTH .FLAGS 1>>
<COND
(<TYPE? .FLAG ATOM>
<SET VAL <>>
)
(<AND <TYPE? .FLAG LIST>
<==? <LENGTH .FLAG> 2>
>
<SET VAL <NTH .FLAG 2>>
<SET FLAG <NTH .FLAG 1>>
)
(T
;"Warning message"
<WARN!-ZILCH!-PACKAGE!- "Unknown bit flag: " .FLAG>
)
>
<EVAL <FORM CONSTANT .FLAG .I>>
<COND
(.VAL
<SET B <ORB .B <LSH 1 .N>>>
)
>
<SET I <+ .I 1>>
<COND
(<G? <SET N <+ .N 1>> 7>
<SET L (!.L .B)>
<SET N 0>
<SET B 0>
)
>
<SET FLAGS <REST .FLAGS>>
)
>
>
<COND
(<G? <LENGTH .L> 0>
<EVAL <FORM CONSTANT BIT-FLAG-TBL <FORM TABLE (BYTE) !.L>>>
<EVAL
<FORM ROUTINE BIT-FLAG? (FLAG "AUX" N B)
<FORM SET N <FORM / '.FLAG 8>>
<FORM SET B <FORM LSH 1 <FORM MOD '.FLAG 8>>>
<FORM COND
(<FORM ANDB <FORM GETB ',BIT-FLAG-TBL '.N> '.B>
<FORM RTRUE>
)
>
>
>
<EVAL
<FORM ROUTINE BIT-FLAG-SET (FLAG "AUX" N B)
<FORM SET N <FORM / '.FLAG 8>>
<FORM SET B <FORM LSH 1 <FORM MOD '.FLAG 8>>>
<FORM PUTB ',BIT-FLAG-TBL '.N
<FORM ORB <FORM GETB ',BIT-FLAG-TBL '.N> '.B>
>
>
>
<EVAL
<FORM ROUTINE BIT-FLAG-CLEAR (FLAG "AUX" N B)
<FORM SET N <FORM / '.FLAG 8>>
<FORM SET B <FORM LSH 1 <FORM MOD '.FLAG 8>>>
<FORM PUTB ',BIT-FLAG-TBL '.N
<FORM ANDB <FORM GETB ',BIT-FLAG-TBL '.N> <FORM BCOM '.B>>
>
>
>
)
>
>
;<BIT-FLAGS
F-SCRUBBERS
F-HEATERS
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

BIN
main.lbm Normal file

Binary file not shown.

78
misc.zabstr Normal file
View File

@ -0,0 +1,78 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<OBJECT CH-PLAYER (LOC RM-COMMAND-MODULE) (DESC "yourself") (MENU "me") (
SYNONYM ME MYSELF SELF BUD BRIGMAN) (ADJECTIVE BUD) (FLAGS FL-ALIVE FL-NO-DESC
FL-NO-ARTICLE FL-OPEN FL-PERSON FL-SEARCH FL-SEEN FL-TOUCHED)>
<CONSTANT ME:OBJECT CH-PLAYER>
<GLOBAL GL-LOC-TRAIL:TABLE <ITABLE 8 0>>
<DEFINE-ROUTINE VISIBLE?>
<DEFINE-ROUTINE CLOSED?>
<DEFINE-ROUTINE ACCESSIBLE?>
<CONSTANT K-ART-A 1>
<CONSTANT K-ART-THE 2>
<CONSTANT K-ART-ANY 3>
<CONSTANT K-ART-HE 4>
<CONSTANT K-ART-HIM 5>
<CONSTANT K-ART-HIS 6>
<DEFINE-ROUTINE RT-PRINT-DESC>
<DEFINE-ROUTINE RT-PRINT-ARTICLE>
<DEFINE-ROUTINE RT-PRINT-OBJ>
<DEFINE-ROUTINE RT-PRINT-VERB>
<GLOBAL QCONTEXT:OBJECT <>>
<GLOBAL LIT:OBJECT <>>
<GLOBAL P-IT-OBJECT:OBJECT <>>
<GLOBAL P-THEM-OBJECT:OBJECT <>>
<GLOBAL P-HER-OBJECT:OBJECT <>>
<GLOBAL P-HIM-OBJECT:OBJECT <>>
<GLOBAL P-ONE-NOUN <>>
<CONSTANT K-DIROUT-TBL <ITABLE 255 (BYTE) 0>>
<DEFINE-ROUTINE THIS-IS-IT>
<DEFINE-ROUTINE RT-IN-ON-MSG>
<DEFINE-ROUTINE RT-OUT-OFF-MSG>
<DEFINE-ROUTINE RT-OPEN-MSG>
<DEFINE-ROUTINE TOUCH-VERB?>
<GLOBAL CLOCK-WAIT:FLAG <>>
<GLOBAL GL-CLK-RUN:FLAG <>>
<GLOBAL GL-Q-MAX 0 <> BYTE>
<CONSTANT K-Q-NUM 20>
<CONSTANT K-Q-SIZE <* ,K-Q-NUM 2>>
<GLOBAL GL-Q-TBL <ITABLE ,K-Q-SIZE 0>>
<GLOBAL GL-MOVES 360>
<GLOBAL GL-NEW-TIME 0>
<CONSTANT K-TIME-PASSES-MSG "Time passes...|">
<DEFINE-ROUTINE CLOCKER>
<DEFINE-ROUTINE RT-QUEUE>
<DEFINE-ROUTINE RT-DEQUEUE>
<DEFINE-ROUTINE RT-IS-QUEUED?>
<BIND () <ROUTINE C-PIXELS (X) <ADD #ZLOCAL!-IZILCH STACK 1>> <ROUTINE L-PIXELS
(Y) <ADD #ZLOCAL!-IZILCH STACK 1>> <ROUTINE PIXELS-C (X) <ADD #ZLOCAL!-IZILCH
STACK 1>> <ROUTINE PIXELS-L (Y) <ADD #ZLOCAL!-IZILCH STACK 1>> <ROUTINE CCURSET
(Y X "OPT" (W -3)) <CURSET #ZLOCAL!-IZILCH ?TMP1!-IZILCH #ZLOCAL!-IZILCH STACK
.W>> <ROUTINE CCURGET (TBL) <CURGET .TBL> <PUT .TBL 0 #ZLOCAL!-IZILCH STACK> <
PUT .TBL 1 #ZLOCAL!-IZILCH STACK> .TBL> <ROUTINE CSPLIT (Y) <SPLIT #
ZLOCAL!-IZILCH STACK>> <ROUTINE CWINPOS (W Y X) <WINPOS .W #ZLOCAL!-IZILCH
?TMP1!-IZILCH #ZLOCAL!-IZILCH STACK>> <ROUTINE CWINSIZE (W Y X) <WINSIZE .W #
ZLOCAL!-IZILCH ?TMP1!-IZILCH #ZLOCAL!-IZILCH STACK>> <ROUTINE CSCROLL (W "OPT"
(Y 1)) <SCROLL .W #ZLOCAL!-IZILCH STACK>> <ROUTINE RT-SCRIPT-INBUF ("OPT" (BUF
,P-INBUF) "AUX" (CNT 0) N CHR) <SET N <GETB .BUF 1>> <DIROUT ,D-SCREEN-OFF> <
SET BUF <ADD 1 .BUF>> <REPEAT () <COND (<GRTR? <SET CNT <ADD CNT 1>> .N> <
RETURN>) (ELSE <SET CHR <GETB .BUF .CNT>> <COND (<AND <NOT <LESS? .CHR !\a>> <
NOT <GRTR? .CHR !\z>>> <PRINTC #ZLOCAL!-IZILCH STACK>) (ELSE <PRINTC .CHR>)>)>>
<CRLF> <DIROUT ,D-SCREEN-ON>>>
<DEFINE-ROUTINE C-PIXELS>
<DEFINE-ROUTINE L-PIXELS>
<DEFINE-ROUTINE PIXELS-C>
<DEFINE-ROUTINE PIXELS-L>
<DEFINE-ROUTINE CCURSET>
<DEFINE-ROUTINE CCURGET>
<DEFINE-ROUTINE CSPLIT>
<DEFINE-ROUTINE CWINPOS>
<DEFINE-ROUTINE CWINSIZE>
<DEFINE-ROUTINE CSCROLL>
<DEFINE-ROUTINE RT-SCRIPT-INBUF>
<GLOBAL GL-SCR-WID:NUMBER 79>
<CONSTANT K-WIN-TBL <TABLE 0 0 0>>
<GLOBAL GL-FONT-X 7 <> BYTE>
<GLOBAL GL-FONT-Y 10 <> BYTE>
<GLOBAL GL-SPACE-WIDTH 0 <> BYTE>
<DEFINE-ROUTINE GO>

610
misc.zap Normal file
View File

@ -0,0 +1,610 @@
.FUNCT VISIBLE?:ANY:1:1,OBJ
CALL ACCESSIBLE?,OBJ,TRUE-VALUE
RSTACK
.FUNCT CLOSED?:ANY:1:2,OBJ,VIS?
ZERO? OBJ /TRUE
IN? OBJ,ROOMS /FALSE
FSET? OBJ,FL-CONTAINER \?CCL7
FSET? OBJ,FL-OPEN /FALSE
ZERO? VIS? /TRUE
FSET? OBJ,FL-TRANSPARENT /FALSE
RTRUE
?CCL7: FSET? OBJ,FL-SURFACE /FALSE
FSET? OBJ,FL-ALIVE /FALSE
FSET? OBJ,FL-PERSON /FALSE
RTRUE
.FUNCT ACCESSIBLE?:ANY:1:2,OBJ,VIS?,WLOC,OLOC,CLSD-PTR,PTR,CNT,TBL,END
ZERO? OBJ /FALSE
EQUAL? OBJ,ROOMS /TRUE
SET 'PTR,GL-LOC-TRAIL
SET 'OLOC,OBJ
?PRG5: PUT PTR,0,OLOC
INC 'CNT
ZERO? OLOC /?REP6
EQUAL? OLOC,WINNER /?REP6
IN? OLOC,ROOMS /?REP6
IN? OLOC,LOCAL-GLOBALS /?REP6
IN? OLOC,GLOBAL-OBJECTS /?REP6
IN? OLOC,GENERIC-OBJECTS /?REP6
LOC OLOC >OLOC
ADD PTR,2 >PTR
ZERO? OLOC /?PRG5
CALL CLOSED?,OLOC,VIS?
ZERO? STACK /?PRG5
ZERO? CLSD-PTR \?PRG5
SET 'CLSD-PTR,PTR
JUMP ?PRG5
?REP6: SET 'PTR,FALSE-VALUE
SET 'WLOC,WINNER
?PRG21: ZERO? WLOC /FALSE
INTBL? WLOC,GL-LOC-TRAIL,CNT >PTR /?REP22
IN? WLOC,ROOMS /?REP22
LOC WLOC >WLOC
ZERO? WLOC /?PRG21
CALL CLOSED?,WLOC,VIS?
ZERO? STACK /?PRG21
RFALSE
?REP22: ZERO? WLOC /?CND33
IN? WLOC,ROOMS \?CND33
ZERO? PTR \?CND33
GETPT WLOC,P?GLOBAL >TBL
ZERO? TBL /?CND33
PTSIZE TBL
ADD TBL,STACK >END
?PRG41: LESS? TBL,END \?CND33
GET TBL,0
INTBL? STACK,GL-LOC-TRAIL,CNT >PTR /?CND33
ADD TBL,2 >TBL
JUMP ?PRG41
?CND33: ZERO? WLOC /?CND47
IN? WLOC,ROOMS \?CND47
ZERO? PTR \?CND47
FIRST? GLOBAL-OBJECTS >TBL /?PRG54
?PRG54: ZERO? TBL /?CND47
INTBL? TBL,GL-LOC-TRAIL,CNT >PTR /?CND47
NEXT? TBL >TBL /?PRG54
JUMP ?PRG54
?CND47: ZERO? PTR /FALSE
ZERO? CLSD-PTR /TRUE
GRTR? PTR,CLSD-PTR /FALSE
RTRUE
.FUNCT RT-PRINT-DESC:ANY:1:1,OBJ
FSET? OBJ,FL-HAS-SDESC \?CCL3
GETP OBJ,P?ACTION
CALL STACK,M-OBJDESC
RSTACK
?CCL3: PRINTD OBJ
RTRUE
.FUNCT RT-PRINT-ARTICLE:ANY:3:3,OBJ,ART,CAP?,MASK
ZERO? CAP? \?CND1
PRINTC 32
SET 'MASK,32
?CND1: EQUAL? ART,K-ART-A \?CCL5
FSET? OBJ,FL-YOUR \?CCL8
BOR 89,MASK
PRINTC STACK
PRINTI "our"
RTRUE
?CCL8: FSET? OBJ,FL-PLURAL \?CCL10
BOR 83,MASK
PRINTC STACK
PRINTI "ome"
RTRUE
?CCL10: BOR 65,MASK
PRINTC STACK
FSET? OBJ,FL-VOWEL \FALSE
PRINTC 110
RTRUE
?CCL5: EQUAL? ART,K-ART-THE \?CCL15
FSET? OBJ,FL-YOUR \?CCL18
BOR 89,MASK
PRINTC STACK
PRINTI "our"
RTRUE
?CCL18: BOR 84,MASK
PRINTC STACK
PRINTI "he"
RTRUE
?CCL15: EQUAL? ART,K-ART-ANY \?CCL20
BOR 65,MASK
PRINTC STACK
PRINTI "ny"
RTRUE
?CCL20: EQUAL? ART,K-ART-HE \?CCL22
FSET? OBJ,FL-PLURAL \?CCL25
FSET? OBJ,FL-COLLECTIVE /?CCL25
BOR 84,MASK
PRINTC STACK
PRINTI "hey"
RTRUE
?CCL25: FSET? OBJ,FL-PERSON /?CCL29
BOR 73,MASK
PRINTC STACK
PRINTC 116
RTRUE
?CCL29: EQUAL? OBJ,CH-PLAYER \?CCL31
BOR 89,MASK
PRINTC STACK
PRINTI "ou"
RTRUE
?CCL31: FSET? OBJ,FL-FEMALE \?CCL33
BOR 83,MASK
PRINTC STACK
PRINTI "he"
RTRUE
?CCL33: BOR 72,MASK
PRINTC STACK
PRINTC 101
RTRUE
?CCL22: EQUAL? ART,K-ART-HIM \?CCL35
FSET? OBJ,FL-PLURAL \?CCL38
FSET? OBJ,FL-COLLECTIVE /?CCL38
BOR 84,MASK
PRINTC STACK
PRINTI "hem"
RTRUE
?CCL38: FSET? OBJ,FL-PERSON /?CCL42
BOR 73,MASK
PRINTC STACK
PRINTC 116
RTRUE
?CCL42: EQUAL? OBJ,CH-PLAYER \?CCL44
BOR 89,MASK
PRINTC STACK
PRINTI "ou"
RTRUE
?CCL44: FSET? OBJ,FL-FEMALE \?CCL46
BOR 72,MASK
PRINTC STACK
PRINTI "er"
RTRUE
?CCL46: BOR 72,MASK
PRINTC STACK
PRINTI "im"
RTRUE
?CCL35: EQUAL? ART,K-ART-HIS \FALSE
FSET? OBJ,FL-PLURAL \?CCL51
FSET? OBJ,FL-COLLECTIVE /?CCL51
BOR 84,MASK
PRINTC STACK
PRINTI "heir"
RTRUE
?CCL51: FSET? OBJ,FL-PERSON /?CCL55
BOR 73,MASK
PRINTC STACK
PRINTI "ts"
RTRUE
?CCL55: EQUAL? OBJ,CH-PLAYER \?CCL57
BOR 89,MASK
PRINTC STACK
PRINTI "our"
RTRUE
?CCL57: FSET? OBJ,FL-FEMALE \?CCL59
BOR 72,MASK
PRINTC STACK
PRINTI "er"
RTRUE
?CCL59: BOR 72,MASK
PRINTC STACK
PRINTI "is"
RTRUE
.FUNCT RT-PRINT-OBJ:ANY:0:4,O,ART,CAP?,VERB,MASK
ASSIGNED? 'ART /?CND1
SET 'ART,K-ART-THE
?CND1: ZERO? O \?CND3
SET 'O,PRSO
?CND3: FSET? O,FL-HAS-SDESC \?CCL7
GETP O,P?ACTION
ICALL STACK,M-OBJDESC,ART,CAP?
JUMP ?CND5
?CCL7: EQUAL? ART,K-ART-HE,K-ART-HIM,K-ART-HIS \?CCL9
FSET O,FL-SEEN
ICALL RT-PRINT-ARTICLE,O,ART,CAP?
JUMP ?CND5
?CCL9: FSET? O,FL-NO-ARTICLE /?CCL11
FSET O,FL-SEEN
ICALL RT-PRINT-ARTICLE,O,ART,CAP?
PRINTC 32
ICALL2 RT-PRINT-DESC,O
JUMP ?CND5
?CCL11: ZERO? CAP? \?CND12
PRINTC 32
SET 'MASK,32
?CND12: EQUAL? O,CH-PLAYER \?CCL16
BOR 89,MASK
PRINTC STACK
PRINTI "ou"
JUMP ?CND5
?CCL16: ICALL2 RT-PRINT-DESC,O
?CND5: ZERO? VERB /FALSE
CALL RT-PRINT-VERB,O,VERB
RSTACK
.FUNCT RT-PRINT-VERB:ANY:2:2,OBJ,VERB
PRINTC 32
EQUAL? OBJ,CH-PLAYER /?CTR2
FSET? OBJ,FL-PLURAL \?CCL3
FSET? OBJ,FL-COLLECTIVE /?CCL3
?CTR2: PRINT VERB
RTRUE
?CCL3: EQUAL? VERB,STR?56 \?CCL10
PRINTI "is"
RTRUE
?CCL10: EQUAL? VERB,STR?61 \?CCL12
PRINTI "has"
RTRUE
?CCL12: EQUAL? VERB,STR?62 \?CCL14
PRINTI "tries"
RTRUE
?CCL14: EQUAL? VERB,STR?63 \?CCL16
PRINTI "empties"
RTRUE
?CCL16: EQUAL? VERB,STR?64 \?CCL18
PRINTI "flies"
RTRUE
?CCL18: EQUAL? VERB,STR?65 \?CCL20
PRINTI "dries"
RTRUE
?CCL20: PRINT VERB
EQUAL? VERB,STR?66,STR?67,STR?68 /?CCL22
EQUAL? VERB,STR?69,STR?70,STR?71 /?CCL22
EQUAL? VERB,STR?72 \?CND21
?CCL22: PRINTC 101
?CND21: PRINTC 115
RTRUE
.FUNCT THIS-IS-IT:ANY:1:1,OBJ
EQUAL? OBJ,FALSE-VALUE,ROOMS,NOT-HERE-OBJECT /TRUE
EQUAL? OBJ,CH-PLAYER,INTDIR,GLOBAL-HERE /TRUE
EQUAL? PRSA,V?WALK \?CND1
EQUAL? OBJ,PRSO /TRUE
?CND1: FSET? OBJ,FL-PERSON \?CCL11
FSET? OBJ,FL-FEMALE \?CCL14
FSET HER,FL-TOUCHED
SET 'P-HER-OBJECT,OBJ
RTRUE
?CCL14: FSET HIM,FL-TOUCHED
SET 'P-HIM-OBJECT,OBJ
RTRUE
?CCL11: FSET? OBJ,FL-PLURAL \?CCL16
FSET? OBJ,FL-COLLECTIVE /?CCL16
FSET THEM,FL-TOUCHED
SET 'P-THEM-OBJECT,OBJ
RTRUE
?CCL16: FSET IT,FL-TOUCHED
SET 'P-IT-OBJECT,OBJ
RTRUE
.FUNCT RT-IN-ON-MSG:ANY:1:2,OBJ,CAP?,MASK
ZERO? CAP? \?CND1
PRINTC 32
SET 'MASK,32
?CND1: FSET? OBJ,FL-SURFACE \?CCL5
BOR 79,MASK
PRINTC STACK
JUMP ?CND3
?CCL5: BOR 73,MASK
PRINTC STACK
?CND3: PRINTC 110
RTRUE
.FUNCT RT-OUT-OFF-MSG:ANY:1:2,OBJ,CAP?
FSET? OBJ,FL-SURFACE /?CCL3
FSET? OBJ,FL-CONTAINER \FALSE
?CCL3: ZERO? CAP? \?CCL8
PRINTI " o"
JUMP ?CND6
?CCL8: PRINTC 79
?CND6: FSET? OBJ,FL-SURFACE \?CCL11
PRINTI "ff"
RTRUE
?CCL11: PRINTI "ut"
RTRUE
.FUNCT RT-OPEN-MSG:ANY:0:1,OBJ
ZERO? OBJ \?CND1
SET 'OBJ,PRSO
?CND1: PRINTC 32
FSET? OBJ,FL-OPEN \?CCL5
PRINTI "open"
RTRUE
?CCL5: PRINTI "closed"
RTRUE
.FUNCT TOUCH-VERB?:ANY:0:0
EQUAL? PRSA,V?UNWEAR,V?WEAR /TRUE
EQUAL? PRSA,V?TAKE,V?PUT-IN,V?PUT /TRUE
EQUAL? PRSA,V?OPEN,V?DROP,V?CLOSE /TRUE
RFALSE
.FUNCT CLOCKER:ANY:0:0,NT,RTN,TIME,ANY?,MULT?,DIF,N,VAL,I,Z1,Z2
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: SET 'NT,GL-MOVES
SET 'GL-NEW-TIME,NT
SET 'VAL,FALSE-VALUE
?PRG3: SET 'RTN,FALSE-VALUE
SET 'TIME,NT
SET 'ANY?,FALSE-VALUE
SET 'MULT?,FALSE-VALUE
SET 'I,0
?PRG5: GET GL-Q-TBL,I >Z1
ADD I,1
GET GL-Q-TBL,STACK >Z2
ZERO? Z1 /?CND7
GRTR? Z2,TIME /?CND7
ZERO? RTN /?CND11
EQUAL? Z2,TIME \?CND11
SET 'MULT?,TRUE-VALUE
?CND11: SET 'RTN,Z1
SET 'TIME,Z2
SET 'N,I
SET 'ANY?,TRUE-VALUE
?CND7: ADD I,2 >I
LESS? I,K-Q-SIZE \?REP6
LESS? I,GL-Q-MAX /?PRG5
?REP6: ZERO? ANY? /?REP4
SET 'GL-MOVES,TIME
FSET? CH-PLAYER,FL-ASLEEP /?CND22
ICALL1 UPDATE-STATUS-LINE
?CND22: LESS? TIME,NT /?PRD24
PUSH 0
JUMP ?PRD25
?PRD24: PUSH 1
?PRD25: SET 'DIF,STACK
PUT GL-Q-TBL,N,0
ADD N,1
PUT GL-Q-TBL,STACK,0
ADD N,2
EQUAL? STACK,GL-Q-MAX \?CND26
SUB GL-Q-MAX,2 >GL-Q-MAX
?CND26: SET 'GL-CLK-RUN,TRUE-VALUE
CALL RTN
ZERO? STACK /?CND28
SET 'VAL,TRUE-VALUE
?CND28: SET 'GL-CLK-RUN,FALSE-VALUE
GRTR? GL-MOVES,NT \?CND30
SET 'GL-NEW-TIME,GL-MOVES
SET 'NT,GL-MOVES
?CND30: ZERO? VAL /?PRG3
ZERO? MULT? \?PRG3
ZERO? DIF /?PRG3
EQUAL? PRSA,V?WAIT \?PRG3
FSET? CH-PLAYER,FL-ASLEEP /?PRG3
SET 'VAL,FALSE-VALUE
CRLF
PRINTI "Do you want to continue waiting"
CALL1 YES?
ZERO? STACK \?CCL41
SET 'NT,TIME
?REP4: SET 'GL-MOVES,NT
INC 'GL-MOVES
RFALSE
?CCL41: PRINT K-TIME-PASSES-MSG
JUMP ?PRG3
.FUNCT RT-QUEUE:ANY:2:3,RTN,TIME,ABS?,I
?PRG1: GET GL-Q-TBL,I
ZERO? STACK \?CCL5
PUT GL-Q-TBL,I,RTN
ADD I,1
PUT GL-Q-TBL,STACK,TIME
ADD I,2
GRTR? STACK,GL-Q-MAX \TRUE
ADD I,2 >GL-Q-MAX
RTRUE
?CCL5: ADD I,2 >I
LESS? I,K-Q-SIZE /?PRG1
RFALSE
.FUNCT RT-DEQUEUE:ANY:1:1,RTN,I
?PRG1: GET GL-Q-TBL,I
EQUAL? STACK,RTN \?CCL5
PUT GL-Q-TBL,I,0
ADD I,1
PUT GL-Q-TBL,STACK,0
ADD I,2
EQUAL? STACK,GL-Q-MAX \TRUE
SUB GL-Q-MAX,2 >GL-Q-MAX
RTRUE
?CCL5: ADD I,2 >I
LESS? I,K-Q-SIZE \FALSE
LESS? I,GL-Q-MAX /?PRG1
RFALSE
.FUNCT RT-IS-QUEUED?:ANY:1:1,RTN,TIME,I
?PRG1: GET GL-Q-TBL,I
EQUAL? STACK,RTN \?CCL5
ADD I,1
GET GL-Q-TBL,STACK >TIME
RETURN TIME
?CCL5: ADD I,2 >I
LESS? I,K-Q-SIZE \FALSE
LESS? I,GL-Q-MAX /?PRG1
RFALSE
.FUNCT C-PIXELS:ANY:1:1,X
SUB X,1
MUL STACK,GL-FONT-X
ADD STACK,1
RSTACK
.FUNCT L-PIXELS:ANY:1:1,Y
SUB Y,1
MUL STACK,GL-FONT-Y
ADD STACK,1
RSTACK
.FUNCT PIXELS-C:ANY:1:1,X
SUB X,1
DIV STACK,GL-FONT-X
ADD STACK,1
RSTACK
.FUNCT PIXELS-L:ANY:1:1,Y
SUB Y,1
DIV STACK,GL-FONT-Y
ADD STACK,1
RSTACK
.FUNCT CCURSET:ANY:2:3,Y,X,W,?TMP1
ASSIGNED? 'W /?CND1
SET 'W,-3
?CND1: CALL2 L-PIXELS,Y >?TMP1
CALL2 C-PIXELS,X
CURSET ?TMP1,STACK,W
RTRUE
.FUNCT CCURGET:ANY:1:1,TBL
CURGET TBL
GET TBL,0
CALL2 PIXELS-L,STACK
PUT TBL,0,STACK
GET TBL,1
CALL2 PIXELS-C,STACK
PUT TBL,1,STACK
RETURN TBL
.FUNCT CSPLIT:ANY:1:1,Y
MUL Y,GL-FONT-Y
SPLIT STACK
RTRUE
.FUNCT CWINPOS:ANY:3:3,W,Y,X,?TMP1
CALL2 L-PIXELS,Y >?TMP1
CALL2 C-PIXELS,X
WINPOS W,?TMP1,STACK
RTRUE
.FUNCT CWINSIZE:ANY:3:3,W,Y,X,?TMP1
MUL Y,GL-FONT-Y >?TMP1
MUL X,GL-FONT-X
WINSIZE W,?TMP1,STACK
RTRUE
.FUNCT CSCROLL:ANY:1:2,W,Y
ASSIGNED? 'Y /?CND1
SET 'Y,1
?CND1: MUL Y,GL-FONT-Y
SCROLL W,STACK
RTRUE
.FUNCT RT-SCRIPT-INBUF:ANY:0:1,BUF,CNT,N,CHR
ASSIGNED? 'BUF /?CND1
SET 'BUF,P-INBUF
?CND1: GETB BUF,1 >N
DIROUT D-SCREEN-OFF
INC 'BUF
?PRG3: IGRTR? 'CNT,N /?REP4
GETB BUF,CNT >CHR
LESS? CHR,97 /?CCL10
GRTR? CHR,122 /?CCL10
SUB CHR,32
PRINTC STACK
JUMP ?PRG3
?CCL10: PRINTC CHR
JUMP ?PRG3
?REP4: CRLF
DIROUT D-SCREEN-ON
RTRUE
.FUNCT GO:ANY:0:0
?FCN: GETB 0,33 >GL-SCR-WID
LESS? GL-SCR-WID,64 \?CND1
PRINTI "[The screen is too narrow.]"
CRLF
QUIT
?CND1: WINGET 0,WFSIZE
SHIFT STACK,-8 >GL-FONT-Y
WINGET 0,WFSIZE
BAND STACK,255 >GL-FONT-X
DIROUT K-D-TBL-ON,K-DIROUT-TBL
PRINTC 32
DIROUT K-D-TBL-OFF
GET 0,24 >GL-SPACE-WIDTH
ZERO? GL-SPACE-WIDTH \?CND3
GET 0,17 >GL-SPACE-WIDTH
GETB 0,33
DIV GL-SPACE-WIDTH,STACK >GL-SPACE-WIDTH
?CND3: MOUSE-LIMIT -1
CLEAR -1
ICALL2 INIT-STATUS-LINE,FALSE-VALUE
ICALL1 UPDATE-STATUS-LINE
ICALL RT-QUEUE,RT-I-GAS-MIX,GL-MOVES
ICALL RT-QUEUE,RT-I-LEAVE-1,GL-MOVES
ADD GL-MOVES,90
ICALL RT-QUEUE,RT-I-RETURN-1,STACK
ADD GL-MOVES,120
ICALL RT-QUEUE,RT-I-CRANE-1,STACK
ADD GL-MOVES,3
ICALL RT-QUEUE,RT-I-NITROGEN-LEAK,STACK
ICALL RT-QUEUE,RT-I-TEMP,GL-MOVES
ADD GL-MOVES,1320
ICALL RT-QUEUE,RT-I-CAB-FIXED,STACK
ICALL1 V-VERSION
CRLF
PRINTI " 'Catfish' DeVries runs his eye over the gauges on the wall of Deepcore's gas-mix room. ""They're done, Bud,"" he says, ""Cooked to a turn."" He spins the wheel in the steel door to the compression chamber, and it eases open with a sigh.
A man with a military haircut quickly steps through the door, apparently undisturbed by the six claustrophobic hours of compression that will enable him to survive the atmosphere 2,000 feet below the sea's surface. He is followed by three other men and one very pretty woman.
""Brigman?"" he says to you. ""Coffey. Team leader."" He gestures to the others. ""Willhite, Schoenick, Monk. I gather you already know the little lady.""
Lindsey glares at him. ""Listen, Tarzan,"" she snaps, ""Let's get one thing straight...""
A nervous voice over the intercom interrupts her. ""Bud? It's Hippy. I'm in the Control Module and I got something here on the screen you should take a look at. Pronto.""
You run out through the sub-bay with the others close on your heels. When you arrive in the Command Module, Hippy is pointing to the ROV screen. Coffey and the others crowd around behind you, looking over your shoulder.
""It's a small submersible over by the Montana,"" Hippy says. ""I can't make it out real well, but I saw some divers leaving her just a minute ago.""
"
MARGIN 50,50
PRINTI "[GRAPHIC: A close-up of the ROV screen, with a hint of the controls that surround it. On the screen is a murky picture of a submersible.]
"
MARGIN 0,0
PRINTI " ""Shit!"" Coffey shouts. ""We've got to secure that boat! Monk, take Willhite and Schoenick and that big rig we saw in the MoonPool. I'll go in the submersible we came down on. Brigman, I need some drivers.""
One-Night cuts him off. ""I decide who drives what around here, mister. I'll take your boys over in Flatbed. Hippy will drive you in Cab Three. We leave in two minutes.""
One-Night and Hippy leave the Command Module, followed by the SEALs. You are left alone with Lindsey and Catfish.
"
PRINTI "[MORE]"
INPUT 1
CRLF
ICALL1 INIT-STATUS-LINE
CLEAR 6
WINGET 0,K-W-YSIZE
SUB STACK,GL-FONT-Y
CURSET STACK,1
ICALL1 MAIN-LOOP
JUMP ?FCN
.ENDI

1069
misc.zil Normal file

File diff suppressed because it is too large Load Diff

134
montana.zabstr Normal file
View File

@ -0,0 +1,134 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)) ()>
<ROOM RM-MIDSHIP-HATCH (LOC ROOMS) (DESC "midship hatch") (FLAGS FL-LIGHTED
FL-WATER) (UP TO RM-TROUGH-LIP) (EAST TO RM-TROUGH-LIP) (FORE TO
RM-MISSILE-HATCH) (NORTH TO RM-MISSILE-HATCH) (WEST TO RM-ATTACK-CENTER IF
LG-MIDSHIP-HATCH IS OPEN) (IN TO RM-ATTACK-CENTER IF LG-MIDSHIP-HATCH IS OPEN)
(DOWN PER RT-TO-TRENCH-BOTTOM) (GLOBAL LG-MIDSHIP-HATCH LG-MONTANA LG-TROUGH
RM-ATTACK-CENTER) (ACTION RT-RM-MIDSHIP-HATCH)>
<DEFINE-ROUTINE RT-RM-MIDSHIP-HATCH>
<OBJECT LG-MIDSHIP-HATCH (LOC LOCAL-GLOBALS) (DESC "midship hatch") (FLAGS
FL-DOOR) (SYNONYM HATCH) (ADJECTIVE MIDSHIP) (ACTION RT-LG-MIDSHIP-HATCH)>
<DEFINE-ROUTINE RT-LG-MIDSHIP-HATCH>
<DEFINE-ROUTINE RT-TO-TRENCH-BOTTOM>
<ROOM RM-MISSILE-HATCH (LOC ROOMS) (DESC "missile hatch") (FLAGS FL-LIGHTED
FL-WATER) (SYNONYM HATCH) (ADJECTIVE MISSILE) (FORE TO RM-BOW) (AFT TO
RM-MIDSHIP-HATCH) (GLOBAL LG-MONTANA LG-TROUGH RM-MISSILE-ROOM) (ACTION
RT-RM-MISSILE-HATCH)>
<DEFINE-ROUTINE RT-RM-MISSILE-HATCH>
<OBJECT TH-MISSILE (LOC RM-MISSILE-HATCH) (DESC "missile") (FLAGS FL-NO-DESC
FL-SURFACE FL-SEARCH) (SYNONYM MISSILE) (ACTION RT-TH-MISSILE)>
<DEFINE-ROUTINE RT-TH-MISSILE>
<OBJECT TH-MISSILE-TIMER (LOC TH-MISSILE) (DESC "timer") (FLAGS FL-NO-DESC) (
SYNONYM TIMER) (ADJECTIVE MISSILE) (ACTION RT-TH-MISSILE-TIMER)>
<DEFINE-ROUTINE RT-TH-MISSILE-TIMER>
<OBJECT TH-MISSILE-PANEL (LOC TH-MISSILE) (DESC "access panel") (FLAGS
FL-CONTAINER FL-LOCKED FL-OPENABLE FL-SEARCH) (SYNONYM PANEL HATCH PLATE) (
ADJECTIVE MISSILE ACCESS COVER) (ACTION RT-TH-MISSILE-PANEL)>
<DEFINE-ROUTINE RT-TH-MISSILE-PANEL>
<NEW-ADD-WORD "WIRES" NOUN <VOC "WIRE"> ,PLURAL-FLAG>
<GLOBAL GL-WIRE-SEQUENCE 0 <> BYTE>
<GLOBAL GL-WIRES-CUT 0>
<OBJECT TH-WIRES (LOC TH-MISSILE-PANEL) (DESC "wires") (FLAGS FL-NO-DESC) (
SYNONYM WIRES) (ACTION RT-TH-WIRES)>
<DEFINE-ROUTINE RT-TH-WIRES>
<OBJECT TH-RED-WIRE (LOC TH-MISSILE-PANEL) (DESC "red wire") (SYNONYM WIRE) (
ADJECTIVE RED) (ACTION RT-TH-WIRE)>
<OBJECT TH-BLUE-WIRE (LOC TH-MISSILE-PANEL) (DESC "blue wire") (SYNONYM WIRE) (
ADJECTIVE BLUE) (ACTION RT-TH-WIRE)>
<OBJECT TH-GREEN-WIRE (LOC TH-MISSILE-PANEL) (DESC "green wire") (SYNONYM WIRE)
(ADJECTIVE GREEN) (ACTION RT-TH-WIRE)>
<OBJECT TH-YELLOW-WIRE (LOC TH-MISSILE-PANEL) (DESC "yellow wire") (SYNONYM
WIRE) (ADJECTIVE YELLOW) (ACTION RT-TH-WIRE)>
<OBJECT TH-ORANGE-WIRE (LOC TH-MISSILE-PANEL) (DESC "orange wire") (SYNONYM
WIRE) (ADJECTIVE ORANGE) (ACTION RT-TH-WIRE)>
<OBJECT TH-WHITE-WIRE (LOC TH-MISSILE-PANEL) (DESC "white wire") (SYNONYM WIRE)
(ADJECTIVE WHITE) (ACTION RT-TH-WIRE)>
<DEFINE-ROUTINE RT-TH-WIRE>
<DEFINE-ROUTINE RT-CORRECT-WIRE?>
<OBJECT TH-WIRE-CUTTERS (LOC TH-ELEC-SHOP-DRAWER) (DESC "wire cutters") (FLAGS
FL-TAKEABLE FL-KNIFE) (SYNONYM CUTTERS) (ADJECTIVE WIRE) (ACTION
RT-TH-WIRE-CUTTERS)>
<DEFINE-ROUTINE RT-TH-WIRE-CUTTERS>
<GLOBAL GL-FALLING-INTO-TRENCH? <> <> BYTE>
<DEFINE-ROUTINE RT-I-INTO-TRENCH-1>
<DEFINE-ROUTINE RT-I-INTO-TRENCH-2>
<DEFINE-ROUTINE RT-I-OUT-OF-AIR-1>
<DEFINE-ROUTINE RT-I-OUT-OF-AIR-2>
<ROOM RM-BOW (LOC ROOMS) (DESC "bow") (FLAGS FL-LIGHTED FL-WATER) (SYNONYM BOW)
(AFT TO RM-MISSILE-HATCH) (WEST TO RM-TORPEDO-ROOM) (IN TO RM-TORPEDO-ROOM) (
GLOBAL LG-MONTANA LG-TROUGH RM-MISSILE-HATCH) (ACTION RT-RM-BOW)>
<DEFINE-ROUTINE RT-RM-BOW>
<ROOM RM-TORPEDO-ROOM (LOC ROOMS) (DESC "torpedo room") (FLAGS FL-INDOORS
FL-LIGHTED FL-WATER) (SYNONYM ROOM) (ADJECTIVE TORPEDO) (EAST TO RM-BOW) (OUT
TO RM-BOW) (AFT TO RM-ENGINE-ROOM) (GLOBAL LG-WALL LG-MONTANA RM-BOW
RM-ENGINE-ROOM) (ACTION RT-RM-TORPEDO-ROOM)>
<DEFINE-ROUTINE RT-RM-TORPEDO-ROOM>
<ROOM RM-ENGINE-ROOM (LOC ROOMS) (DESC "engine room") (FLAGS FL-INDOORS
FL-LIGHTED FL-WATER) (SYNONYM ROOM) (ADJECTIVE ENGINE) (FORE TO RM-TORPEDO-ROOM
) (AFT TO RM-MISSILE-ROOM) (GLOBAL LG-WALL LG-MONTANA RM-TORPEDO-ROOM
RM-MISSILE-ROOM) (ACTION RT-RM-ENGINE-ROOM)>
<DEFINE-ROUTINE RT-RM-ENGINE-ROOM>
<ROOM RM-MISSILE-ROOM (LOC ROOMS) (DESC "missile launching room") (FLAGS
FL-INDOORS FL-LIGHTED FL-WATER) (SYNONYM ROOM) (ADJECTIVE MISSILE LAUNCHING) (
FORE TO RM-ENGINE-ROOM) (GLOBAL LG-WALL LG-MONTANA RM-ENGINE-ROOM) (ACTION
RT-RM-MISSILE-ROOM)>
<DEFINE-ROUTINE RT-RM-MISSILE-ROOM>
<OBJECT TH-MISSILE-ACCESS-KEY (LOC RM-MISSILE-ROOM) (DESC "access key") (FLAGS
FL-KEY FL-TAKEABLE) (SYNONYM KEY) (ADJECTIVE MISSILE ACCESS) (ACTION
RT-TH-MISSILE-ACCESS-KEY)>
<DEFINE-ROUTINE RT-TH-MISSILE-ACCESS-KEY>
<ROOM RM-ATTACK-CENTER (LOC ROOMS) (DESC "attack center") (FLAGS FL-INDOORS
FL-LIGHTED FL-WATER) (SYNONYM CENTER) (ADJECTIVE ATTACK) (EAST TO
RM-MIDSHIP-HATCH IF LG-MIDSHIP-HATCH IS OPEN) (OUT TO RM-MIDSHIP-HATCH IF
LG-MIDSHIP-HATCH IS OPEN) (AFT TO RM-SONAR-ROOM) (GLOBAL LG-MIDSHIP-HATCH
LG-WALL LG-MONTANA RM-SONAR-ROOM) (ACTION RT-RM-ATTACK-CENTER)>
<DEFINE-ROUTINE RT-RM-ATTACK-CENTER>
<ROOM RM-SONAR-ROOM (LOC ROOMS) (DESC "sonar room") (FLAGS FL-INDOORS
FL-LIGHTED FL-WATER) (SYNONYM SHACK) (ADJECTIVE SONAR) (FORE TO
RM-ATTACK-CENTER) (AFT TO RM-COMM-ROOM) (GLOBAL LG-WALL LG-MONTANA
RM-ATTACK-CENTER RM-COMM-ROOM) (ACTION RT-RM-SONAR-ROOM)>
<DEFINE-ROUTINE RT-RM-SONAR-ROOM>
<ROOM RM-COMM-ROOM (LOC ROOMS) (DESC "comm room") (FLAGS FL-INDOORS FL-LIGHTED
FL-WATER) (SYNONYM ROOM) (ADJECTIVE COMM COMMUNICATIONS) (FORE TO RM-SONAR-ROOM
) (AFT PER RT-THRU-BUCKLED-DOOR) (GLOBAL LG-BUCKLED-DOOR LG-WALL LG-MONTANA
RM-SONAR-ROOM RM-SUB-CORRIDOR) (ACTION RT-RM-COMM-ROOM)>
<DEFINE-ROUTINE RT-RM-COMM-ROOM>
<DEFINE-ROUTINE RT-THRU-BUCKLED-DOOR>
<OBJECT LG-BUCKLED-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (FLAGS FL-DOOR
FL-OPENABLE) (SYNONYM DOOR) (ADJECTIVE BUCKLED JAMMED) (ACTION
RT-LG-BUCKLED-DOOR)>
<DEFINE-ROUTINE RT-LG-BUCKLED-DOOR>
<ROOM RM-SUB-CORRIDOR (LOC ROOMS) (DESC "corridor") (FLAGS FL-INDOORS
FL-LIGHTED FL-WATER) (SYNONYM CORRIDOR) (FORE TO RM-COMM-ROOM) (DOWN TO
RM-CAPTAINS-ROOM) (GLOBAL LG-WALL LG-MONTANA RM-COMM-ROOM RM-CAPTAINS-ROOM) (
ACTION RT-RM-SUB-CORRIDOR)>
<GLOBAL GL-CORRIDOR-BLOCKED? T <> BYTE>
<DEFINE-ROUTINE RT-RM-SUB-CORRIDOR>
<ROOM RM-CAPTAINS-ROOM (LOC ROOMS) (DESC "captain's quarters") (FLAGS
FL-INDOORS FL-LIGHTED FL-WATER) (SYNONYM QUARTERS ROOM STATEROOM) (ADJECTIVE
CAPTAIN STATE!-LALRDEFS!-PACKAGE) (UP TO RM-SUB-CORRIDOR) (GLOBAL LG-WALL
LG-MONTANA RM-SUB-CORRIDOR) (ACTION RT-RM-CAPTAINS-ROOM)>
<DEFINE-ROUTINE RT-RM-CAPTAINS-ROOM>
<OBJECT TH-PHOTOGRAPH (LOC RM-CAPTAINS-ROOM) (DESC "photograph") (FLAGS
FL-NO-DESC) (SYNONYM PHOTOGRAPH PICTURE FRAME) (ADJECTIVE FRAMED) (ACTION
RT-TH-PHOTOGRAPH)>
<DEFINE-ROUTINE RT-TH-PHOTOGRAPH>
<OBJECT TH-SAFE (LOC RM-CAPTAINS-ROOM) (DESC "safe") (FLAGS FL-CONTAINER
FL-LOCKED FL-NO-DESC FL-OPENABLE FL-SEARCH) (SYNONYM SAFE DIAL) (ADJECTIVE WALL
) (ACTION RT-TH-SAFE)>
<GLOBAL GL-SAFE-NUM 0 <> BYTE>
<DEFINE-ROUTINE RT-TH-SAFE>
<OBJECT TH-PLASTIC-CARD (LOC TH-SAFE) (DESC "plastic card") (FLAGS FL-READABLE
FL-TAKEABLE) (SYNONYM CARD CODE CODES) (ADJECTIVE PLASTIC WIRING) (ACTION
RT-TH-PLASTIC-CARD)>
<DEFINE-ROUTINE RT-TH-PLASTIC-CARD>
<OBJECT TH-PLASTIQUE (LOC RM-DRILL-ROOM) (DESC "plastique") (FLAGS FL-SURFACE
FL-TAKEABLE FL-SEARCH) (SYNONYM PLASTIQUE EXPLOSIVE TAPE) (ADJECTIVE PLASTIC) (
OWNER 0) (ACTION RT-TH-PLASTIQUE)>
<DEFINE-ROUTINE RT-TH-PLASTIQUE>
<OBJECT TH-DETONATOR (LOC RM-DRILL-ROOM) (DESC "detonator") (FLAGS FL-TAKEABLE)
(SYNONYM DETONATOR TIMER DIAL SWITCH) (ACTION RT-TH-DETONATOR)>
<GLOBAL GL-DETONATOR-TIME 10 <> BYTE>
<DEFINE-ROUTINE RT-TH-DETONATOR>
<DEFINE-ROUTINE RT-I-DETONATOR>

580
montana.zap Normal file
View File

@ -0,0 +1,580 @@
.FUNCT RT-RM-MIDSHIP-HATCH:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are at"
JUMP ?CND4
?CCL6: PRINTI "come to"
?CND4: PRINTI " the midship hatch of the Montana. The trough wall rises sharply to the east and the missile hatch is to the fore. Through the hatch is the attack center.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-LG-MIDSHIP-HATCH:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " The hatch is a heavy, circular lid with a handle in the middle. Because the sub is resting on its side, the hinges are at the top."
?CCL5: EQUAL? PRSA,V?OPEN \?CCL7
FSET? LG-MIDSHIP-HATCH,FL-OPEN \?CCL10
CALL RT-ALREADY-MSG,PRSO,STR?93
RSTACK
?CCL10: PRINTR " You grab the handle and try to lift the hatch, but only succeed in pushing yourself down in the water."
?CCL7: EQUAL? PRSA,V?CLOSE \FALSE
FSET? LG-MIDSHIP-HATCH,FL-OPEN /?CCL15
CALL RT-ALREADY-MSG,PRSO,STR?79
RSTACK
?CCL15: PRINTR " You can't close the hatch against the buoyancy of the lift bag."
.FUNCT RT-TO-TRENCH-BOTTOM:ANY:0:0,QUIET
ZERO? QUIET /?CCL3
RETURN RM-TRENCH-BOTTOM
?CCL3: IN? TH-FBS-SUIT,CH-PLAYER \?CTR4
FSET? TH-FBS-SUIT,FL-WORN /?CCL5
?CTR4: PRINTI " You can't go down that deep with a regular dry suit.
"
RFALSE
?CCL5: RETURN RM-TRENCH-BOTTOM
.FUNCT RT-RM-MISSILE-HATCH:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are at"
JUMP ?CND4
?CCL6: PRINTI "come to"
?CND4: PRINTI " the missile hatch of the Montana. To the aft is the midship hatch, and the bow lies foreward.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-MISSILE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-MISSILE-TIMER:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-MISSILE-PANEL:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-WIRES:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " The wires are red, green, orange, yellow, blue, and white."
?CCL5: EQUAL? PRSA,V?CUT \FALSE
PRINTI "[You must specify which wire you want to cut.]
"
RETURN 2
.FUNCT RT-TH-WIRE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?CUT \FALSE
EQUAL? PRSI,TH-KNIFE \?CCL8
PRINTR "The wires are too close together to get the large blade of your knife between them."
?CCL8: EQUAL? PRSI,TH-WIRE-CUTTERS \FALSE
FSET? PRSO,FL-BROKEN \?CCL13
CALL2 RT-ALREADY-MSG,STR?126
RSTACK
?CCL13: CALL2 RT-CORRECT-WIRE?,PRSO
ZERO? STACK /?CCL15
FSET PRSO,FL-BROKEN
INC 'GL-WIRES-CUT
EQUAL? GL-WIRES-CUT,6 \?CCL18
SET 'GL-FALLING-INTO-TRENCH?,TRUE-VALUE
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-INTO-TRENCH-1,STACK
PRINTR " You hold your breath and cut the last wire. Nothing happens. Lindsey smiles at you and gives you a big thumbs up.
Lindsey pats you on the back and then starts to climb back into the Cab. The sudden imbalance makes it wobble precariously. Suddenly you realize that it is slipping off the curved side of the sub! Desperately, you make a lunge for the hatch to try to scramble inside, but it's too late. The Cab is falling into the trench, and you are going to be dragged along with it."
?CCL18: PRINTI " You cut"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL15: PRINTI " The explosion is so instantaneous and so massive that you have no sensation of dying. You simply cease to be.
"
CALL1 RT-END-OF-GAME
RSTACK
.FUNCT RT-CORRECT-WIRE?:ANY:1:1,WIRE
ZERO? GL-WIRE-SEQUENCE /FALSE
EQUAL? PRSO,TH-RED-WIRE \?CCL5
EQUAL? GL-WIRE-SEQUENCE,1,4 \?CCL8
FSET? TH-ORANGE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL8: EQUAL? GL-WIRE-SEQUENCE,2 \?CCL13
FSET? TH-YELLOW-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL13: EQUAL? GL-WIRE-SEQUENCE,3 \FALSE
FSET? TH-GREEN-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL5: EQUAL? PRSO,TH-BLUE-WIRE \?CCL23
EQUAL? GL-WIRE-SEQUENCE,1,2 \?CCL26
FSET? TH-GREEN-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL26: EQUAL? GL-WIRE-SEQUENCE,3 \?CCL31
FSET? TH-WHITE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL31: EQUAL? GL-WIRE-SEQUENCE,4 \FALSE
FSET? TH-YELLOW-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL23: EQUAL? PRSO,TH-GREEN-WIRE \?CCL41
EQUAL? GL-WIRE-SEQUENCE,1 \?CCL44
FSET? TH-RED-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL44: EQUAL? GL-WIRE-SEQUENCE,2 \TRUE
FSET? TH-ORANGE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL41: EQUAL? PRSO,TH-YELLOW-WIRE \?CCL54
EQUAL? GL-WIRE-SEQUENCE,1,4 \?CCL57
FSET? TH-WHITE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL57: EQUAL? GL-WIRE-SEQUENCE,2 /TRUE
EQUAL? GL-WIRE-SEQUENCE,3 \FALSE
FSET? TH-ORANGE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL54: EQUAL? PRSO,TH-ORANGE-WIRE \?CCL69
EQUAL? GL-WIRE-SEQUENCE,1 /TRUE
EQUAL? GL-WIRE-SEQUENCE,2 \?CCL74
FSET? TH-WHITE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL74: EQUAL? GL-WIRE-SEQUENCE,3 \?CCL79
FSET? TH-RED-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL79: EQUAL? GL-WIRE-SEQUENCE,4 \FALSE
FSET? TH-BLUE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL69: EQUAL? PRSO,TH-WHITE-WIRE \FALSE
EQUAL? GL-WIRE-SEQUENCE,1 \?CCL92
FSET? TH-BLUE-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL92: EQUAL? GL-WIRE-SEQUENCE,2 \?CCL97
FSET? TH-RED-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL97: EQUAL? GL-WIRE-SEQUENCE,3 \?CCL102
FSET? TH-YELLOW-WIRE,FL-BROKEN /TRUE
RFALSE
?CCL102: EQUAL? GL-WIRE-SEQUENCE,4 \FALSE
FSET? TH-GREEN-WIRE,FL-BROKEN /TRUE
RFALSE
.FUNCT RT-TH-WIRE-CUTTERS:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-I-INTO-TRENCH-1:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-INTO-TRENCH-2,STACK
PRINTR " The hookah line goes taut and drags you down after the sub. A quick glance to your right reveals that Lindsey's hookah has caught on the Cab's open hatch and she is being dragged down too. Your chest begins to tighten under the additional pressure. If you don't do something quickly, you will die."
.FUNCT RT-I-INTO-TRENCH-2:ANY:0:0
PRINTI " The cab pulls you deeper and deeper. Suddenly you feel a massive pain in your chest and you black out. The last thing you see before dying is Lindsey's hand reaching toward you for help.
"
CALL1 RT-END-OF-GAME
RSTACK
.FUNCT RT-I-OUT-OF-AIR-1:ANY:0:0
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-OUT-OF-AIR-2,STACK
PRINTR " You can't hold your breath much longer."
.FUNCT RT-I-OUT-OF-AIR-2:ANY:0:0
MOVE CH-PLAYER,RM-SUB-BAY
MOVE TH-DRY-SUIT,RM-SUB-BAY
FCLEAR TH-DRY-SUIT,FL-WORN
FCLEAR TH-DIVE-LOCKER,FL-LOCKED
FSET TH-DIVE-LOCKER,FL-OPEN
MOVE CH-HIPPY,RM-SUB-BAY
MOVE CH-CATFISH,RM-SUB-BAY
PRINTR " You realize that you can't hold your breath any longer and that you are going to die. Your chest aches, and you see bright lights dancing before your eyes. But all you can think of is Lindsey's face as she disappeared into the trough. Just when you think you are going to pass out, you notice that the lights seem to be clustering around you, pushing you gently back towards Deepcore. Unable to hold the air any longer, you expel it and expect to inhale a mouthful of water. Instead you discover that you can breathe quite normally.
You reach out to touch the lights, but your hand passes right through them. After a few moments, you relax and enjoy the ride. Soon you find yourself approaching Deepcore. The lights stay with you until you surface inside the MoonPool, and then they streak away back toward the trench.
Catfish grabs your hand and hoists you to firm ground as easily as if you were a child. He helps you out of your dive suit and into dry clothes. He says that he thinks that there is some kind of benevolent alien at the bottom of the Trench, and that Lindsey's monitoring system shows she is still alive, down near the bottom of the trench.
Hippy comes in and says, ""I think I can open this locker now."" He holds an electronic device near the lock, and the locker pops open. Inside it is the fluid breathing system suit."
.FUNCT RT-RM-BOW:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are at"
JUMP ?CND4
?CCL6: PRINTI "come to"
?CND4: PRINTI " the bow of the Montana. The missile hatch is aft of here. You see the huge gash that was the Montana's death wound. When we get graphics into the game you will only be able to fly the ROV in here. But for now, come on in!
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-TORPEDO-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the Montana's torpedo room. Foreward lies the gash in the hull and aft is the engine room.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-ENGINE-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the engine room of the Montana. The torpedo room is foreward, and aft is the missile launching room.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-MISSILE-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the missile launching room. On the wall hangs the missile access key.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-MISSILE-ACCESS-KEY:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-RM-ATTACK-CENTER:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK \?CCL3
PRINTR " Cautiously, you swim through the hatch. You pull yourself along by the rungs on the ladder, and then find yourself in the attack center. Your helmet light reveals an eerie scene of floating debris and lop-sided high-tech wreckage. You fight off the disorientation caused by everything being on its side, and then locate the body of the captain and confirm that the missile access key has been removed from his neck. Fighting the urge to vomit, you turn away and see a companionway leading aft."
?CCL3: EQUAL? CONTEXT,M-V-LOOK,M-LOOK \?CCL5
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL8
PRINTI "are in"
RFALSE
?CCL8: EQUAL? OHERE,RM-MIDSHIP-HATCH \?CCL10
PRINTI "swim through the hatch to the attack center. Aft, you see a companionway leading into the darkness.
"
RFALSE
?CCL10: PRINTI "enter the attack center. Above you is the midship hatch and the sonar shack lies aft.
"
RFALSE
?CCL5: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-SONAR-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK \?CCL3
PRINTR " Slowly, you swim through the doorway and come to the sonar room. The sonarman is slewed sideways, still strapped into his chair. He stares at the broken screen through blank eyes.
Doors here lead fore and aft."
?CCL3: EQUAL? CONTEXT,M-V-LOOK,M-LOOK \?CCL5
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL8
PRINTI "are in"
JUMP ?CND6
?CCL8: PRINTI "enter"
?CND6: PRINTI " the sonar room. Doors here lead fore and aft.
"
RFALSE
?CCL5: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-COMM-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK \?CCL3
PRINTR " You swim into the communications room, which was stacked floor to ceiling with high-tech equipment. The door in the aft bulkhead has buckled and looks as if it is jammed shut."
?CCL3: EQUAL? CONTEXT,M-V-LOOK,M-LOOK \?CCL5
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL8
PRINTI "are in"
JUMP ?CND6
?CCL8: PRINTI "enter"
?CND6: PRINTI " the communications room. The sonar shack is to the fore and aft lies a corridor.
"
RFALSE
?CCL5: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-THRU-BUCKLED-DOOR:ANY:0:1,QUIET
FSET? LG-BUCKLED-DOOR,FL-OPEN \?CCL3
RETURN RM-SUB-CORRIDOR
?CCL3: ZERO? QUIET \FALSE
PRINTI " You push up against the door. It gives a little, and then refuses to budge.
"
RFALSE
.FUNCT RT-LG-BUCKLED-DOOR:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTR " The door in the aft bulkhead has buckled and looks as if it is jammed shut."
?CCL5: EQUAL? PRSA,V?PUSH,V?OPEN \FALSE
PRINTI " You push up against the door. It gives a little, and then refuses to budge.
"
RTRUE
.FUNCT RT-RM-SUB-CORRIDOR:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK \?CCL3
PRINTR " You enter a corridor that leads into the heart of the submarine. Below you is an open door leading into a stateroom. Only a few feet beyond the door, the floor starts to pinch in to meet the ceiling where the corridor has been crushed like the end of a paper towel roll."
?CCL3: EQUAL? CONTEXT,M-V-LOOK,M-LOOK \?CCL5
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL8
PRINTI "are in"
JUMP ?CND6
?CCL8: PRINTI "enter"
?CND6: PRINTI " a corridor. The comm room is foreward and below you is the captain's quarters.
"
RFALSE
?CCL5: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-CAPTAINS-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK \?CCL3
PRINTR " You swim down into the room below you, which turns out to be the captain's stateroom. The room is curiously untouched by the disaster. Except for the fact that everything has rotated ninety degrees, it is as neat and tidy as if it were awaiting an admiral's inspection. The bunk is made. Interestingly enough, the framed photograph on the wall doesn't seem to have shifted position, even though the sub is lying on its side."
?CCL3: EQUAL? CONTEXT,M-V-LOOK,M-LOOK \?CCL5
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL8
PRINTI "are in"
JUMP ?CND6
?CCL8: PRINTI "enter"
?CND6: PRINTI " the captain's stateroom. Above you is a corridor.
"
RFALSE
?CCL5: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-PHOTOGRAPH:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
FSET TH-PHOTOGRAPH,FL-SEEN
PRINTR " The picture is of the same man whose body you saw in the control room. He is standing with his arm around a woman, and they are both smiling into the camera. At the bottom is scrawled, ""Twenty years before the mast. June 30, 1989. Love, Helen."""
?CCL5: EQUAL? PRSA,V?LOOK-BEHIND \FALSE
FSET? TH-SAFE,FL-SEEN \?CCL10
PRINTR " Behind the picture is the wall safe."
?CCL10: FSET TH-SAFE,FL-SEEN
MOVE TH-SAFE,RM-CAPTAINS-ROOM
PRINTR " You push aside the picture and discover a wall safe."
.FUNCT RT-TH-SAFE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
CALL NOUN-USED?,TH-SAFE,W?DIAL
ZERO? STACK /?CCL5
EQUAL? PRSA,V?EXAMINE \?CCL8
PRINTI " The dial is turned to "
PRINTN GL-SAFE-NUM
PRINTR "."
?CCL8: EQUAL? PRSA,V?TURN \?CCL10
RANDOM 101
SUB STACK,1 >GL-SAFE-NUM
PRINTR " You spin the dial."
?CCL10: EQUAL? PRSA,V?TURN-TO \FALSE
EQUAL? PRSI,INTNUM \FALSE
LESS? P-NUMBER,0 /?CTR17
GRTR? P-NUMBER,100 \?CCL18
?CTR17: PRINTR " The dial can only be turned to numbers between 0 and 100, inclusive."
?CCL18: PRINTI " You turn the dial to "
PRINTN P-NUMBER
PRINTC 46
FSET? TH-SAFE,FL-OPEN /?CND21
EQUAL? P-NUMBER,30 \?CCL24
EQUAL? GL-SAFE-NUM,6 \?CCL27
FSET TH-SAFE,FL-ON
JUMP ?CND21
?CCL27: FCLEAR TH-SAFE,FL-ON
JUMP ?CND21
?CCL24: EQUAL? P-NUMBER,69 \?CND21
EQUAL? GL-SAFE-NUM,30 \?CCL31
FSET? TH-SAFE,FL-ON \?CCL31
FCLEAR TH-SAFE,FL-ON
FCLEAR TH-SAFE,FL-LOCKED
FSET TH-SAFE,FL-OPEN
PRINTI " The safe door opens."
CALL2 RT-SEE-ANYTHING-IN?,TH-SAFE
ZERO? STACK /?CND21
PRINTI " Inside you see"
ICALL2 RT-PRINT-CONTENTS,TH-SAFE
PRINTC 46
JUMP ?CND21
?CCL31: FCLEAR TH-SAFE,FL-ON
?CND21: SET 'GL-SAFE-NUM,P-NUMBER
CRLF
RTRUE
?CCL5: EQUAL? PRSA,V?CLOSE \?CCL37
FSET? TH-SAFE,FL-OPEN \FALSE
FCLEAR TH-SAFE,FL-OPEN
FSET TH-SAFE,FL-LOCKED
RANDOM 101
SUB STACK,1 >GL-SAFE-NUM
PRINTR " You close the safe and spin the dial."
?CCL37: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR " The safe is a combination safe with numbers on the dial from 0 to 100."
.FUNCT RT-TH-PLASTIC-CARD:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTR " The card has row after row of meaningless numbers written on it."
.FUNCT RT-TH-PLASTIQUE:ANY:0:1,CONTEXT,OBJ,V
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL7
PRINTI " The plastique is a flat package with some sticky, two-sided tape on the bottom."
IN? TH-DETONATOR,TH-PLASTIQUE \?CND8
PRINTR " There is a detonator attached to it."
?CND8: CRLF
RTRUE
?CCL7: EQUAL? PRSA,V?PUT,V?ATTACH \?CCL11
EQUAL? PRSI,LG-BUCKLED-DOOR \FALSE
MOVE TH-PLASTIQUE,HERE
PUTP TH-PLASTIQUE,P?OWNER,LG-BUCKLED-DOOR
PRINTR " You stick the plastique to the door."
?CCL11: EQUAL? PRSA,V?TAKE \FALSE
GETP TH-PLASTIQUE,P?OWNER >OBJ
ZERO? OBJ /FALSE
CALL1 ITAKE >V
EQUAL? V,M-FATAL \?CCL22
RETURN 2
?CCL22: ZERO? V /FALSE
PUTP TH-PLASTIQUE,P?OWNER,FALSE-VALUE
PRINTI " You remove the plastique from"
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
PRINTR "."
.FUNCT RT-TH-DETONATOR:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
CALL NOUN-USED?,TH-DETONATOR,W?DIAL,W?TIMER
ZERO? STACK /?CCL8
PRINTI " The dial is set to "
PRINTN GL-DETONATOR-TIME
PRINTR "."
?CCL8: CALL NOUN-USED?,TH-DETONATOR,W?SWITCH
ZERO? STACK /?CCL10
PRINTI " The switch is "
FSET? TH-DETONATOR,FL-ON \?CCL13
PRINTI "on"
JUMP ?CND11
?CCL13: PRINTI "off"
?CND11: PRINTR "."
?CCL10: PRINTR " The detonator is deceptively innocent looking. It has a timer that is calibrated in units of 5 from 10 to 60. Below the face of the timer is a single switch."
?CCL5: EQUAL? PRSA,V?PUT,V?PUT-IN,V?ATTACH \?CCL15
EQUAL? PRSO,TH-DETONATOR \FALSE
EQUAL? PRSI,TH-PLASTIQUE \FALSE
MOVE TH-DETONATOR,TH-PLASTIQUE
PRINTR " You firmly imbed the prongs of the detonator into the plastique."
?CCL15: EQUAL? PRSA,V?TURN-TO \?CCL22
EQUAL? PRSI,INTNUM \?CTR24
LESS? P-NUMBER,10 /?CTR24
GRTR? P-NUMBER,60 /?CTR24
MOD P-NUMBER,5
ZERO? STACK /?CCL25
?CTR24: PRINTI " The timer can only be set in increments of 5 between the numbers of 10 and 60, inclusive.
"
RETURN 2
?CCL25: SET 'GL-DETONATOR-TIME,P-NUMBER
PRINTI " You set the dial to "
PRINTN P-NUMBER
PRINTR "."
?CCL22: EQUAL? PRSA,V?LISTEN \?CCL33
FSET? TH-DETONATOR,FL-ON \FALSE
PRINTR " You hear a faint whirring."
?CCL33: EQUAL? PRSA,V?TURN-ON \?CCL38
FSET? TH-DETONATOR,FL-ON \?CCL41
CALL2 RT-ALREADY-MSG,STR?127
RSTACK
?CCL41: FSET TH-DETONATOR,FL-ON
MUL GL-DETONATOR-TIME,2
ADD GL-MOVES,STACK
ICALL RT-QUEUE,RT-I-DETONATOR,STACK
PRINTR " You turn the switch and hear a faint whirr."
?CCL38: EQUAL? PRSA,V?TURN-OFF \FALSE
FSET? TH-DETONATOR,FL-ON /?CCL46
CALL2 RT-ALREADY-MSG,STR?128
RSTACK
?CCL46: FCLEAR TH-DETONATOR,FL-ON
ICALL2 RT-DEQUEUE,RT-I-DETONATOR
SET 'GL-DETONATOR-TIME,10
PRINTR " You turn off the detonator. The timer resets itself to ten minutes."
.FUNCT RT-I-DETONATOR:ANY:0:1,CONTEXT,L,M
LOC TH-PLASTIQUE >L
CALL2 META-LOC,TH-PLASTIQUE >M
IN? TH-DETONATOR,TH-PLASTIQUE \?CCL3
REMOVE TH-PLASTIQUE
FSET? M,FL-WATER \?CCL6
FSET? M,FL-INDOORS \?CCL6
FSET? HERE,FL-WATER \?CCL6
FSET? HERE,FL-INDOORS \?CCL6
EQUAL? HERE,M \?CCL13
PRINTI " Suddenly you see a bright flash. An enormous shock wave slams into you and instantly kills you.
"
JUMP ?CND11
?CCL13: PRINTI " Suddenly you hear a muffled explosion. Seconds later an enormous shock wave slams you up against a bulkhead and kills you.
"
?CND11: CALL1 RT-END-OF-GAME
RSTACK
?CCL6: EQUAL? L,RM-COMM-ROOM \?CCL15
GETP TH-PLASTIQUE,P?OWNER
EQUAL? STACK,LG-BUCKLED-DOOR \?CCL15
FSET LG-BUCKLED-DOOR,FL-OPEN
CALL GLOBAL-IN?,LG-MONTANA,HERE
ZERO? STACK /?CCL20
PRINTR " Suddenly you hear a muffled explosion. The Montana seems to rock for a moment, and then settle back into its former position on the ledge."
?CCL20: PRINTR " From far away, you hear a muffled thud. The plastique must have gone off inside the Montana."
?CCL15: FSET? M,FL-WATER \?CCL22
FSET? M,FL-INDOORS \?CCL25
CALL GLOBAL-IN?,LG-MONTANA,HERE
ZERO? STACK /?CCL28
PRINTI " Suddenly you hear a muffled explosion. The Montana seems to rock for a moment, and then it slides off the ledge and plummets into the chasm!"
JUMP ?CND26
?CCL28: PRINTI " From far away, you hear a muffled thud. The plastique must have gone off inside the Montana. Unbeknownst to you, the blast jars loose the submarine, and it falls into the chasm."
?CND26: PRINTI " Seconds later, the sub slams against the wall of the chasm, ripping off the timing device, and igniting the nuclear warhead. Everything nearby is instantly vaporized, including you.
"
CALL1 RT-END-OF-GAME
RSTACK
?CCL25: PRINTR " The plastique goes ""BOOM"" in the water."
?CCL22: FSET? HERE,FL-WATER /?CCL31
PRINTI " Suddenly, a huge explosion rips through Deepcore, killing you before you even have time to figure out what caused it.
"
JUMP ?CND29
?CCL31: PRINTI " Suddenly, a huge explosion rips through Deepcore, causing you to lose the will to live.
"
?CND29: CALL1 RT-END-OF-GAME
RSTACK
?CCL3: CALL2 ACCESSIBLE?,TH-DETONATOR
ZERO? STACK /FALSE
FCLEAR TH-DETONATOR,FL-ON
SET GL-DETONATOR-TIME,10
PRINTR " The detonator makes a faint 'click'."
.ENDI

1525
montana.zil Normal file

File diff suppressed because it is too large Load Diff

42
mpf.out Normal file
View File

@ -0,0 +1,42 @@
makepicf of 3/14/89 11:50.
Generating picture file for mac for abyss.
IFF format.
Huffing enabled.
Pictures will be huffed together.
1: new file.
Extract: (16, 8) to (135, 15).
No background color allowed.
1: new picture from gauge.lbm.
Loading from IFF file.
Extract: (16, 24) to (135, 31).
No background color allowed.
2: new picture from gauge.lbm.
Loading from IFF file.
Extract: (16, 40) to (135, 47).
No background color allowed.
3: new picture from gauge.lbm.
Loading from IFF file.
Extract: (16, 56) to (135, 63).
No background color allowed.
4: new picture from gauge.lbm.
Loading from IFF file.
Extract: (44, 73) to (45, 78).
No background color allowed.
5: new picture from gauge.lbm.
Loading from IFF file.
Extract: (58, 73) to (59, 78).
No background color allowed.
6: new picture from gauge.lbm.
Loading from IFF file.
Opening variable file abyss-pix.zil.
6 pictures; 1 file.
17152 allocated so far.
Building file 1; 6 pictures.
Writing picture files to /home/development/curpix.
File version is 1.
File size is 476.
3864 pixels; 92 picture data; 384 overhead.
188 bytes huffed to 92.
Checksum: 4d43
Used 6
Elapsed time 8

25
ocean.zabstr Normal file
View File

@ -0,0 +1,25 @@
<ROOM RM-UNDER-MOONPOOL (LOC ROOMS) (DESC "under moonpool") (FLAGS FL-LIGHTED
FL-SURFACE FL-WATER) (UP TO RM-SUB-BAY) (IN TO RM-SUB-BAY) (NORTH TO
RM-OCEAN-NORTH) (WEST TO RM-OCEAN-WEST) (SOUTH TO RM-OCEAN-SOUTH) (GLOBAL
TH-MOON-POOL LG-DEEPCORE RM-SUB-BAY) (ACTION RT-RM-UNDER-MOONPOOL)>
<DEFINE-ROUTINE RT-RM-UNDER-MOONPOOL>
<ROOM RM-OCEAN-NORTH (LOC ROOMS) (DESC "ocean floor") (FLAGS FL-LIGHTED
FL-SURFACE FL-WATER) (SYNONYM FLOOR OCEAN) (ADJECTIVE OCEAN) (SOUTH TO
RM-UNDER-MOONPOOL) (GLOBAL LG-DEEPCORE) (ACTION RT-RM-OCEAN-NORTH)>
<DEFINE-ROUTINE RT-RM-OCEAN-NORTH>
<ROOM RM-OCEAN-SOUTH (LOC ROOMS) (DESC "ocean floor") (FLAGS FL-LIGHTED
FL-SURFACE FL-WATER) (SYNONYM FLOOR OCEAN) (ADJECTIVE OCEAN) (NORTH TO
RM-UNDER-MOONPOOL) (GLOBAL LG-DEEPCORE) (ACTION RT-RM-OCEAN-SOUTH)>
<DEFINE-ROUTINE RT-RM-OCEAN-SOUTH>
<ROOM RM-OCEAN-WEST (LOC ROOMS) (DESC "ocean floor") (FLAGS FL-LIGHTED
FL-SURFACE FL-WATER) (SYNONYM FLOOR OCEAN) (ADJECTIVE OCEAN) (EAST TO
RM-UNDER-MOONPOOL) (WEST PER RT-SWIM-TO-FROM-TRENCH) (GLOBAL LG-DEEPCORE) (
ACTION RT-RM-OCEAN-WEST)>
<DEFINE-ROUTINE RT-RM-OCEAN-WEST>
<DEFINE-ROUTINE RT-SWIM-TO-FROM-TRENCH>
<ROOM RM-TROUGH-LIP (LOC ROOMS) (DESC "trough lip") (FLAGS FL-LIGHTED FL-WATER)
(SYNONYM LIP) (ADJECTIVE TROUGH) (DOWN TO RM-MIDSHIP-HATCH) (WEST TO
RM-MIDSHIP-HATCH) (EAST PER RT-SWIM-TO-FROM-TRENCH) (GLOBAL LG-TROUGH
LG-MONTANA LG-DEEPCORE) (ACTION RT-RM-TROUGH-LIP)>
<DEFINE-ROUTINE RT-RM-TROUGH-LIP>

129
ocean.zap Normal file
View File

@ -0,0 +1,129 @@
.FUNCT RT-RM-UNDER-MOONPOOL:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
PRINTI "You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are"
JUMP ?CND4
?CCL6: PRINTI "arrive"
?CND4: PRINTI " under the moonpool.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-OCEAN-NORTH:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
PRINTI "You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are on"
JUMP ?CND4
?CCL6: PRINTI "proceed along"
?CND4: PRINTI " the ocean floor. Deepcore is to the south.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-OCEAN-SOUTH:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
PRINTI "You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are on"
JUMP ?CND4
?CCL6: PRINTI "proceed along"
?CND4: PRINTI " the ocean floor. Deepcore is to the north.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-RM-OCEAN-WEST:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
PRINTI "You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are on"
JUMP ?CND4
?CCL6: PRINTI "proceed along"
?CND4: PRINTI " the ocean floor. Looking east, you see Deepcore, an island of light in the vast blackness. The crane, now only a mass of twisted metal, hangs crookedly off the starboard cylinders.
"
RFALSE
?CCL3: EQUAL? CONTEXT,M-BEG \?CCL8
EQUAL? PRSA,V?WALK-TO \FALSE
EQUAL? PRSO,LG-MONTANA \FALSE
CALL2 RT-DO-WALK,P?WEST
RSTACK
?CCL8: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-SWIM-TO-FROM-TRENCH:ANY:0:1,QUIET,N
ZERO? QUIET \?CND1
PRINTC TAB
PRINTI "You swim along the ocean floor, pausing every few moments to take your bearings and consult your compass.
"
ADD GL-MOVES,43 >GL-MOVES
ICALL1 CLOCKER
?CND1: EQUAL? HERE,RM-OCEAN-WEST /?CTR4
RETURN RM-OCEAN-WEST
?CTR4: RETURN RM-TROUGH-LIP
.FUNCT RT-RM-TROUGH-LIP:ANY:0:1,CONTEXT,N
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "You are at"
JUMP ?CND4
?CCL6: EQUAL? OHERE,RM-OCEAN-WEST \?CCL8
PRINTI "Eventually, you come to the jagged edge of a chasm that extends to the north and south. Looking down, you see the murky outline of the Montana, perched on a ledge below you.
"
RFALSE
?CCL8: PRINTI "You come to"
?CND4: PRINTI " the lip of the Cayman trough. Just below, you can see the Montana. Deepcore lies east of here.
"
RFALSE
?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL10
EQUAL? OHERE,RM-OCEAN-WEST \FALSE
PRINTC TAB
PRINTI "Automatically, you glance at your watch. The journey over from Deepcore took about twenty two minutes and you have"
SUB GL-PLAYER-TEMP,K-TEMP-LOW-4
DIV STACK,20 >N
ICALL2 RT-WORD-NUMBERS,N
PRINTI " minute"
EQUAL? N,1 /?CND14
PRINTC 115
?CND14: PRINTI " left before hypothermia sets in. A quick calculation reveals that you have "
SUB N,22 >N
LESS? N,0 \?CCL18
PRINTI "insufficient time to make it back to Deepcore.
"
RTRUE
?CCL18: ZERO? N \?CCL21
PRINTI "no time"
JUMP ?CND19
?CCL21: PRINTI "only"
ICALL2 RT-WORD-NUMBERS,N
PRINTI " minute"
EQUAL? N,1 /?CND19
PRINTC 115
?CND19: PRINTI " to explore the Montana before you must start back.
"
RTRUE
?CCL10: EQUAL? CONTEXT,M-BEG \?CCL25
EQUAL? PRSA,V?WALK-TO \FALSE
EQUAL? PRSO,LG-DEEPCORE \FALSE
CALL2 RT-DO-WALK,P?EAST
RSTACK
?CCL25: ZERO? CONTEXT \FALSE
RFALSE
.ENDI

300
ocean.zil Normal file
View File

@ -0,0 +1,300 @@
;"***************************************************************************"
; "game : Abyss"
; "file : OCEAN.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:45:12 $"
; "rev : $Revision: 1.7 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Ocean floor"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
;"---------------------------------------------------------------------------"
; "RM-UNDER-MOONPOOL"
;"---------------------------------------------------------------------------"
<ROOM RM-UNDER-MOONPOOL
(LOC ROOMS)
(DESC "under moonpool")
(FLAGS FL-LIGHTED FL-SURFACE FL-WATER)
; (SYNONYM MOONPOOL)
; (ADJECTIVE UNDER)
(UP TO RM-SUB-BAY)
(IN TO RM-SUB-BAY)
(NORTH TO RM-OCEAN-NORTH)
(WEST TO RM-OCEAN-WEST)
(SOUTH TO RM-OCEAN-SOUTH)
(GLOBAL TH-MOON-POOL LG-DEEPCORE RM-SUB-BAY)
(ACTION RT-RM-UNDER-MOONPOOL)
>
<ROUTINE RT-RM-UNDER-MOONPOOL ("OPT" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL TAB "You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are">
)
(T
<TELL "arrive">
)
>
<TELL " under the moonpool.|">
<RFALSE>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "RM-OCEAN-NORTH"
;"---------------------------------------------------------------------------"
<ROOM RM-OCEAN-NORTH
(LOC ROOMS)
(DESC "ocean floor")
(FLAGS FL-LIGHTED FL-SURFACE FL-WATER)
(SYNONYM FLOOR OCEAN)
(ADJECTIVE OCEAN)
(SOUTH TO RM-UNDER-MOONPOOL)
(GLOBAL LG-DEEPCORE)
(ACTION RT-RM-OCEAN-NORTH)
>
<ROUTINE RT-RM-OCEAN-NORTH ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL TAB "You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are on">
)
(T
<TELL "proceed along">
)
>
<TELL " the ocean floor. Deepcore is to the south.|">
<RFALSE>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "RM-OCEAN-SOUTH"
;"---------------------------------------------------------------------------"
<ROOM RM-OCEAN-SOUTH
(LOC ROOMS)
(DESC "ocean floor")
(FLAGS FL-LIGHTED FL-SURFACE FL-WATER)
(SYNONYM FLOOR OCEAN)
(ADJECTIVE OCEAN)
(NORTH TO RM-UNDER-MOONPOOL)
(GLOBAL LG-DEEPCORE)
(ACTION RT-RM-OCEAN-SOUTH)
>
<ROUTINE RT-RM-OCEAN-SOUTH ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL TAB "You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are on">
)
(T
<TELL "proceed along">
)
>
<TELL " the ocean floor. Deepcore is to the north.|">
<RFALSE>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "RM-OCEAN-WEST"
;"---------------------------------------------------------------------------"
<ROOM RM-OCEAN-WEST
(LOC ROOMS)
(DESC "ocean floor")
(FLAGS FL-LIGHTED FL-SURFACE FL-WATER)
(SYNONYM FLOOR OCEAN)
(ADJECTIVE OCEAN)
(EAST TO RM-UNDER-MOONPOOL)
(WEST PER RT-SWIM-TO-FROM-TRENCH)
(GLOBAL LG-DEEPCORE)
(ACTION RT-RM-OCEAN-WEST)
>
<ROUTINE RT-RM-OCEAN-WEST ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL TAB "You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are on">
)
(T
<TELL "proceed along">
)
>
<TELL
" the ocean floor. Looking east, you see Deepcore, an island of light
in the vast blackness. The crane, now only a mass of twisted metal, hangs
crookedly off the starboard cylinders.|"
>
<RFALSE>
)
(<MC-CONTEXT? ,M-BEG>
<COND
(<AND <VERB? WALK-TO>
<MC-PRSO? ,LG-MONTANA>
>
<RT-DO-WALK ,P?WEST>
)
>
)
(.CONTEXT
<RFALSE>
)
>
>
<ROUTINE RT-SWIM-TO-FROM-TRENCH ("OPT" (QUIET <>) "AUX" N)
<COND
(<NOT .QUIET>
<TELL
TAB "You swim along the ocean floor, pausing every few moments to take your
bearings and consult your compass.|"
>
<SETG GL-MOVES <+ ,GL-MOVES 43>> ; "44 moves (22 min) minus one"
<CLOCKER>
)
>
<COND
(<MC-HERE? ,RM-OCEAN-WEST>
<RETURN ,RM-TROUGH-LIP>
)
(T
<RETURN ,RM-OCEAN-WEST>
)
>
>
;"---------------------------------------------------------------------------"
; "RM-TROUGH-LIP"
;"---------------------------------------------------------------------------"
<ROOM RM-TROUGH-LIP
(LOC ROOMS)
(DESC "trough lip")
(FLAGS FL-LIGHTED FL-WATER)
(SYNONYM LIP)
(ADJECTIVE TROUGH)
(DOWN TO RM-MIDSHIP-HATCH)
(WEST TO RM-MIDSHIP-HATCH)
(EAST PER RT-SWIM-TO-FROM-TRENCH)
(GLOBAL LG-TROUGH LG-MONTANA LG-DEEPCORE)
(ACTION RT-RM-TROUGH-LIP)
>
<ROUTINE RT-RM-TROUGH-LIP ("OPTIONAL" (CONTEXT <>) "AUX" N)
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL TAB>
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "You are at">
)
(<EQUAL? ,OHERE ,RM-OCEAN-WEST>
<TELL
"Eventually, you come to the jagged edge of a chasm that extends to the north
and south. Looking down, you see the murky outline of the Montana, perched on
a ledge below you.|"
>
<RFALSE>
)
(T
<TELL "You come to">
)
>
<TELL
" the lip of the Cayman trough. Just below, you can see the Montana. Deepcore
lies east of here.|"
>
<RFALSE>
)
(<MC-CONTEXT? ,M-ENTERED>
<COND
(<EQUAL? ,OHERE ,RM-OCEAN-WEST>
<TELL
TAB "Automatically, you glance at your watch. The journey over from Deepcore
took about twenty two minutes and you have"
>
<SET N </ <- ,GL-PLAYER-TEMP ,K-TEMP-LOW-4> 20>>
<TELL wn .N>
<TELL " minute">
<COND
(<NOT <EQUAL? .N 1>>
<TELL "s">
)
>
<TELL
" left before hypothermia sets in. A quick calculation reveals that you have "
>
<SET N <- .N 22>>
<COND
(<L? .N 0>
<TELL "insufficient time to make it back to Deepcore.|">
)
(T
<COND
(<ZERO? .N>
<TELL "no time">
)
(T
<TELL "only" wn .N " minute">
<COND
(<NOT <EQUAL? .N 1>>
<TELL "s">
)
>
)
>
<TELL " to explore the Montana before you must start back.|">
)
>
)
>
)
(<MC-CONTEXT? ,M-BEG>
<COND
(<AND <VERB? WALK-TO>
<MC-PRSO? ,LG-DEEPCORE>
>
<RT-DO-WALK ,P?EAST>
)
>
)
(.CONTEXT
<RFALSE>
)
>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

267
parser.zabstr Normal file
View File

@ -0,0 +1,267 @@
<FLAGS-AND-DEFAULTS (("LONG-WORDS" T)("UNDO" T)("P-DEBUGGING-PARSER" T)(
"P-BE-VERB" T)("ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE" T)(
"IN-ZILCH" T)) (("TELL-GWIM-MSG" "DEFS2" #WORD *01006570730*) ("QCONTEXT-CHECK"
"DEFS" #WORD *03512635533*) ("COLLECTIVE-VERB?" "DEFS" #WORD *12337265607*) (
"GAME-VERB?" "DEFS" #WORD *13713442223*) ("READ-INPUT" "DEFS" #WORD
*13315277233*) ("STATUS-LINE" "DEFS" #WORD *32273775332*) ("TRYTAKEBIT" "DEFS"
#WORD *37163230545*) ("TRANSBIT" "DEFS" #WORD *04126724227*) ("TOUCHBIT" "DEFS"
#WORD *20633602015*) ("TAKEBIT" "DEFS" #WORD *02247224556*) ("SURFACEBIT"
"DEFS" #WORD *25336654726*) ("SEARCHBIT" "DEFS" #WORD *06473661734*) (
"ROOMSBIT" "DEFS" #WORD *32212654426*) ("PLURAL" "DEFS" #WORD *02362767724*) (
"PLAYER" "DEFS" #WORD *07702724764*) ("PERSONBIT" "DEFS" #WORD *33273660774*) (
"OPENBIT" "DEFS" #WORD *13113464424*) ("ONBIT" "DEFS" #WORD *21662644317*) (
"NARTICLEBIT" "DEFS" #WORD *15044252200*) ("INVISIBLE" "DEFS" #WORD
*13307541331*) ("FEMALE" "DEFS" #WORD *05062720704*) ("CONTBIT" "DEFS" #WORD
*20466407540*))>
<ZZPACKAGE "PARSER">
<ENTRY PARSER PARSE-SENTENCE PARSE-IT PARSER-ERROR TLEXV P-OFLAG P-WALK-DIR
RED-SD>
<RENTRY DEBUG-PARSER>
<RENTRY ACCESSIBLE? BUZZER-WORD? DIR-VERB? FEMALE GLOBAL-OBJECTS LIT LIT? ONBIT
OPENBIT P-INBUF P-LEXV P-NUMBER P?THINGS PERFORM PERSONBIT PLAYER
PRINT-VOCAB-WORD SEARCHBIT SPECIAL-CONTRACTION? SURFACEBIT TAKEBIT TELL-CTHE
TELL-THE TITLE-ABBR? TRANSBIT TRYTAKEBIT VERBOSITY VISIBLE? WINNER>
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS" "SYMBOLS">
<USE "PSTACK" "PMEM">
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
<BEGIN-SEGMENT 0>
<COMPILATION-FLAG-DEFAULT P-APOSTROPHE-BREAKS-WORDS T>
<COMPILATION-FLAG-DEFAULT P-BE-VERB <>>
<DEFAULTS-DEFINED BE-PATIENT BEG-PARDON BUZZER-WORD? COLLECTIVE-VERB? CONTBIT
DIR-VERB? FEMALE GAME-VERB? INVISIBLE LIT? NARTICLEBIT NUMBER? ONBIT OPENBIT
P-NO-MEM-ROUTINE PERSONBIT PLAYER PLURAL QCONTEXT-CHECK READ-INPUT ROOMSBIT
SEARCHBIT SEENBIT SPECIAL-CONTRACTION? STATUS-LINE SURFACEBIT TAKEBIT TELL-CTHE
TELL-GWIM-MSG TELL-THE TITLE-ABBR? TOUCHBIT TRANSBIT TRYTAKEBIT UNKNOWN-WORD>
<COND (<NOT <GASSIGNED? DEBUG-PARSER>> <SETG DEBUG-PARSER <>>)>
<DEFAULT-DEFINITION CONTBIT T>
<DEFAULT-DEFINITION FEMALE T>
<DEFAULT-DEFINITION INVISIBLE T>
<DEFAULT-DEFINITION NARTICLEBIT T>
<DEFAULT-DEFINITION ONBIT T>
<DEFAULT-DEFINITION OPENBIT T>
<DEFAULT-DEFINITION PERSONBIT T>
<DEFAULT-DEFINITION PLAYER T>
<DEFAULT-DEFINITION PLURAL T>
<DEFAULT-DEFINITION ROOMSBIT T>
<DEFAULT-DEFINITION SEARCHBIT T>
<DEFAULT-DEFINITION SEENBIT T>
<DEFAULT-DEFINITION SURFACEBIT T>
<DEFAULT-DEFINITION TAKEBIT T>
<DEFAULT-DEFINITION TOUCHBIT T>
<DEFAULT-DEFINITION TRANSBIT T>
<DEFAULT-DEFINITION TRYTAKEBIT T>
<DEFMAC IF-SHORT ('EXPR1 "OPT" 'EXPR2) <COND (<L=? ,NUMBER-WORD-CLASSES 15> <
COND (<AND .EXPR1 <N==? .EXPR1 '<>>> .EXPR1)>) (<ASSIGNED? EXPR2> .EXPR2)>>
<CONSTANT STATE-STACK <ALLOCATE-PSTACK>>
<CONSTANT SPLIT-STACK <ALLOCATE-PSTACK>>
<CONSTANT DATA-STACK <ALLOCATE-PSTACK>>
<CONSTANT LEXV-LENGTH 59>
<CONSTANT LEXV-LENGTH-BYTES <+ 2 <* 4 ,LEXV-LENGTH>>>
<CONSTANT P-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
*00000000000*>>
<CONSTANT G-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
*00000000000*>>
<CONSTANT O-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
*00000000000*>>
<CONSTANT INBUF-LENGTH <+ 1 ,LEXV-LENGTH>>
<CONSTANT P-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
<CONSTANT G-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
<CONSTANT O-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
<CONSTANT P-LEXWORDS 1>
<CONSTANT P-LEXSTART 1>
<CONSTANT P-LEXELEN 2>
<CONSTANT OOPS-TABLE <TABLE <> <> <> <> <>>>
<CONSTANT O-START 0>
<CONSTANT O-LENGTH 1>
<CONSTANT O-END 2>
<CONSTANT O-PTR 3>
<CONSTANT O-AGAIN 4>
<GLOBAL WINNER:OBJECT PLAYER>
<GLOBAL P-OFLAG:NUMBER 0>
<GLOBAL P-NUMBER:NUMBER 0>
<GLOBAL CURRENT-REDUCTION <>>
<GLOBAL PARSER-RESULT <>>
<GLOBAL P-WALK-DIR <>>
<GLOBAL TLEXV 0>
<GLOBAL OTLEXV 0>
<CONSTANT ERROR-ARGS:TABLE <ITABLE 4 <>>>
<GLOBAL ERROR-STRING:STRING <>>
<GLOBAL ERROR-PRIORITY:NUMBER 0>
<ADD-WORD "AGAIN" MISCWORD>
<ADD-WORD "G" MISCWORD>
<ADD-WORD "OOPS" MISCWORD>
<ADD-WORD "O" MISCWORD>
<GLOBAL P-LEN:NUMBER 0>
<DEFAULT-DEFINITION STATUS-LINE <DEFINE INIT-STATUS-LINE () <SPLIT 1> <SCREEN ,
S-WINDOW> <CURSET 1 1> <HLIGHT ,H-INVERSE> <ERASE 1> <HLIGHT ,H-NORMAL> <SCREEN
,S-TEXT> <RTRUE>> <GLOBAL OLD-HERE:OBJECT <>> <DEFINE UPDATE-STATUS-LINE () <
SCREEN ,S-WINDOW> <HLIGHT ,H-INVERSE> <COND (<NOT <EQUAL? ,HERE ,OLD-HERE>> <
SETG OLD-HERE ,HERE> <CURSET 1 1> <ERASE 1> <CURSET 1 1> <TELL D ,HERE>)> <
CURSET 1 <- <LOWCORE SCRH> <+ <DIGITS ,SCORE> <DIGITS ,MOVES>>>> <TELL N ,SCORE
C !\/ N ,MOVES> <HLIGHT ,H-NORMAL> <SCREEN ,S-TEXT> <RTRUE>> <DEFINE DIGITS (N
"AUX" (D 1)) <COND (<L? .N 0> <SET D <+ 1 .D>> <SET N <- 0 .N>>)> <REPEAT () <
SET N </ .N 10>> <COND (<0? .N> <RETURN>) (T <SET D <+ 1 .D>>)>> .D>>
<DEFAULT-DEFINITION READ-INPUT <GLOBAL DEMO-VERSION? <>> <DEFINE READ-INPUT ()
<TELL ">"> <COND (T <PUTB ,P-INBUF 1 0>)> <COND (,DEMO-VERSION? <READ-DEMO ,
P-INBUF ,P-LEXV>) (T <ZREAD ,P-INBUF ,P-LEXV>)> <COND (T <SCRIPT-INBUF>)>> <
DEFINE SCRIPT-INBUF ("AUX" BUF (CNT 0) (N <GETB ,P-INBUF 1>) CHR) <DIROUT ,
D-SCREEN-OFF> <SET BUF <REST ,P-INBUF>> <REPEAT () <COND (<IGRTR? CNT .N> <
RETURN>) (ELSE <SET CHR <GETB .BUF .CNT>> <COND (<AND <G=? .CHR !\a> <L=? .CHR
!\z>> <PRINTC <- .CHR 32>>) (ELSE <PRINTC .CHR>)>)>> <CRLF> <DIROUT ,
D-SCREEN-ON>>>
<LOWCORE MSLOCX %<> T>
<LOWCORE MSLOCY %<> T>
<CONSTANT P-QB-WORDS-1 <PLTABLE <VOC "ARE"> <VOC "CAN"> <VOC "COULD"> <VOC "DO"
> <VOC "DOES"> <VOC "DID"> <VOC "HE"> <VOC "I"> <VOC "IS"> <VOC "IT"> <VOC
"SHE"> <VOC "SHOULD"> <VOC "THAT"> <VOC "THEY"> <VOC "WAS"> <VOC "WE"> <VOC
"WERE"> <VOC "WILL"> <VOC "WOULD"> <VOC "YOU">>>
<CONSTANT P-QB-WORDS-2 <PLTABLE <VOC "NOT"> <VOC "NOT"> <VOC "NOT"> <VOC "NOT">
<VOC "NOT"> <VOC "NOT"> <VOC "IS"> <VOC "AM"> <VOC "NOT"> <VOC "IS"> <VOC "IS">
<VOC "NOT"> <VOC "IS"> <VOC "ARE"> <VOC "NOT"> <VOC "ARE"> <VOC "NOT"> <VOC
"NOT"> <VOC "NOT"> <VOC "ARE">>>
<CONSTANT P-QA-WORDS1 <PLTABLE <VOC "AREN"> <VOC "CAN"> <VOC "COULDN"> <VOC
"DON"> <VOC "DOESN"> <VOC "DIDN"> <VOC "HE"> <VOC "I"> <VOC "ISN"> <VOC "IT"> <
VOC "SHE"> <VOC "SHOULDN"> <VOC "THAT"> <VOC "THEY"> <VOC "WASN"> <VOC "WE"> <
VOC "WEREN"> <VOC "WON"> <VOC "WOULDN"> <VOC "YOU">>>
<CONSTANT P-QA-WORDS2 <PLTABLE <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"
> <VOC "T"> <VOC "S"> <VOC "M"> <VOC "T"> <VOC "S"> <VOC "S"> <VOC "T"> <VOC
"S"> <VOC "RE"> <VOC "T"> <VOC "RE"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "RE">>>
<DEFAULT-DEFINITION SPECIAL-CONTRACTION? <ROUTINE SPECIAL-CONTRACTION?>>
<DEFINE-ROUTINE EXPAND-BE-CONTRACTIONS>
<DEFAULT-DEFINITION TELL-THE <ROUTINE TELL-THE>>
<DEFAULT-DEFINITION TELL-CTHE <ROUTINE TELL-CTHE>>
<COMPILATION-FLAG-DEFAULT P-ZORK0 <>>
<COMPILATION-FLAG-DEFAULT P-PS-ADV T>
<GLOBAL P-DIRECTION:NUMBER 0>
<COMPILATION-FLAG-DEFAULT P-TITLE-ABBRS <>>
<DEFAULT-DEFINITION TITLE-ABBR? <DEFMAC TITLE-ABBR? ('WRD) <FORM EQUAL? .WRD ,
W?MR ,W?MRS ,W?MS>>>
<DEFINE-ROUTINE NAKED-DIR?>
<DEFINE-ROUTINE PARSER>
<DEFAULT-DEFINITION GAME-VERB? <CONSTANT GAME-VERB-TABLE <LTABLE V?BRIEF V?QUIT
V?RESTART V?RESTORE V?SAVE V?SCORE V?SCRIPT V?SUPER-BRIEF V?TELL V?UNSCRIPT
V?VERBOSE V?VERSION V?$VERIFY>> <DEFINE GAME-VERB? () <COND (<INTBL? ,PRSA <
ZREST ,GAME-VERB-TABLE 2> <ZGET ,GAME-VERB-TABLE 0>> <RTRUE>)> <COND (<VERB?
$RANDOM $COMMAND $RECORD $UNRECORD> <RTRUE>)>>>
<DEFINE-ROUTINE RED-SD>
<GLOBAL SPLITS:NUMBER 0>
<DEFINE-ROUTINE P-P>
<CONSTANT PARSE-RESULT <MAKE-PARSE-RESULT>>
<GLOBAL P-WORD-NUMBER:NUMBER 0>
<GLOBAL P-WORDS-AGAIN:NUMBER 0>
<GLOBAL P-OLEN:NUMBER 0>
<DEFINE-ROUTINE PARSE-IT>
<GLOBAL P-RUNNING:TABLE <>>
<GLOBAL PARSE-SENTENCE-ACTIVATION <>>
<DEFINE-ROUTINE PARSE-SENTENCE>
<DEFINE-ROUTINE GET-TERMINAL-ACTION>
<DEFINE-ROUTINE GET-NONTERMINAL-ACTION>
<DEFAULT-DEFINITION BE-PATIENT <GLOBAL P-RESPONDED:FLAG <>> <ROUTINE BE-PATIENT
>>
<DEFINE-ROUTINE MAIN-LOOP>
<DEFAULT-DEFINITION COLLECTIVE-VERB? <DEFMAC COLLECTIVE-VERB? () '<VERB? COUNT>
>>
<DEFAULT-DEFINITION DIR-VERB? <DEFMAC DIR-VERB? () '<VERB? WALK>>>
<DEFINE-ROUTINE MAIN-LOOP-1>
<DEFAULT-DEFINITION QCONTEXT-CHECK <DEFINE QCONTEXT-CHECK (PER "AUX" (WHO <>))
<COND (<OR <AND <VERB? SHOW TELL-ABOUT> <EQUAL? .PER ,PLAYER>>> <COND (<SET WHO
<FIND-A-WINNER ,HERE>> <SETG QCONTEXT .WHO>)> <COND (<AND <QCONTEXT-GOOD?> <
EQUAL? ,WINNER ,PLAYER>> <SETG WINNER ,QCONTEXT> <TELL-SAID-TO ,QCONTEXT> <
RTRUE>)>)>>>
<GLOBAL LIT:OBJECT <>>
<DEFAULT-DEFINITION LIT? <ROUTINE LIT?>>
<DEFINE-ROUTINE IGNORE-FIRST-WORD>
<DEFINE-ROUTINE FIX-QUOTATIONS>
<DEFINE-ROUTINE MAIN-LOOP-IT>
<DEFAULT-DEFINITION P-NO-MEM-ROUTINE <ROUTINE P-NO-MEM-ROUTINE>>
<DEFAULT-DEFINITION BEG-PARDON <ROUTINE BEG-PARDON>>
<DEFAULT-DEFINITION UNKNOWN-WORD <ROUTINE UNKNOWN-WORD>>
<DEFINE-ROUTINE WORD-PRINT>
<DEFINE-ROUTINE PRINT-VOCAB-WORD>
<DEFINE-ROUTINE DO-OOPS>
<DEFINE-ROUTINE DO-AGAIN>
<DEFINE-ROUTINE NP-SAVE>
<DEFINE-ROUTINE PARSER-ERROR>
<DEFAULT-DEFINITION BUZZER-WORD? <IFN-P-BE-VERB <CONSTANT P-W-WORDS <PLTABLE <
VOC "WHAT"> <IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHAT'S">> <VOC "WHEN"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHEN'S">> <VOC "WHERE"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHERE'S">> <VOC "WHO"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHO'S">> <VOC "WHY"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHY'S">> <VOC "HOW"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "HOW'S">> <VOC "WOULD"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WOULDN'T">> <VOC "COULD"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "COULDN'T">> <VOC "SHOULD"> <
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "SHOULDN'T">>>>> <IFN-P-BE-VERB <IFFLAG (
P-APOSTROPHE-BREAKS-WORDS <CONSTANT P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC
"AREN">> <IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULDN">> <
IFN-P-BE-VERB <VOC "DIDN">> <IFN-P-BE-VERB <VOC "DOESN">> <IFN-P-BE-VERB <VOC
"DON">> <VOC "HASN"> <VOC "HAVEN"> <IFN-P-BE-VERB <VOC "HE">> <VOC "I"> <VOC
"I"> <IFN-P-BE-VERB <VOC "I">> <VOC "I"> <IFN-P-BE-VERB <VOC "ISN">> <
IFN-P-BE-VERB <VOC "IT">> <VOC "LET"> <IFN-P-BE-VERB <VOC "SHE">> <
IFN-P-BE-VERB <VOC "SHOULDN">> <IFN-P-BE-VERB <VOC "THAT">> <IFN-P-BE-VERB <VOC
"THEY">> <IFN-P-BE-VERB <VOC "WASN">> <IFN-P-BE-VERB <VOC "WE">> <VOC "WE"> <
IFN-P-BE-VERB <VOC "WEREN">> <IFN-P-BE-VERB <VOC "WON">> <IFN-P-BE-VERB <VOC
"WOULDN">> <IFN-P-BE-VERB <VOC "YOU">>>> <CONSTANT P-Q-WORDS2 <PLTABLE <
IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
VOC "T"> <VOC "T"> <IFN-P-BE-VERB <VOC "S">> <VOC "D"> <VOC "LL"> <
IFN-P-BE-VERB <VOC "M">> <VOC "VE"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
VOC "S">> <VOC "S"> <IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "T">> <
IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "RE">> <IFN-P-BE-VERB <VOC "T">> <
IFN-P-BE-VERB <VOC "RE">> <VOC "LL"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "RE">>>>) (T <CONSTANT
P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC "AREN'T">> <IFN-P-BE-VERB <VOC "CAN'T">
> <IFN-P-BE-VERB <VOC "COULDN'T">> <IFN-P-BE-VERB <VOC "DIDN'T">> <
IFN-P-BE-VERB <VOC "DOESN'T">> <IFN-P-BE-VERB <VOC "DON'T">> <VOC "HASN'T"> <
VOC "HAVEN'T"> <IFN-P-BE-VERB <VOC "HE'S">> <VOC "I'D"> <VOC "I'LL"> <
IFN-P-BE-VERB <VOC "I'M">> <VOC "I'VE"> <IFN-P-BE-VERB <VOC "ISN'T">> <
IFN-P-BE-VERB <VOC "IT'S">> <VOC "LET'S"> <IFN-P-BE-VERB <VOC "SHE'S">> <
IFN-P-BE-VERB <VOC "SHOULDN'T">> <IFN-P-BE-VERB <VOC "THAT'S">> <IFN-P-BE-VERB
<VOC "THEY'RE">> <IFN-P-BE-VERB <VOC "WASN'T">> <IFN-P-BE-VERB <VOC "WE'RE">> <
VOC "WE'LL"> <IFN-P-BE-VERB <VOC "WEREN'T">> <IFN-P-BE-VERB <VOC "WON'T">> <
IFN-P-BE-VERB <VOC "WOULDN'T">> <IFN-P-BE-VERB <VOC "YOU'RE">>>>)> <CONSTANT
P-Q-WORDS <PLTABLE <IFN-P-BE-VERB <VOC "AM">> <IFN-P-BE-VERB <VOC "ARE">> <
IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULD">> <IFN-P-BE-VERB <VOC
"DID">> <IFN-P-BE-VERB <VOC "DO">> <VOC "HAS"> <VOC "HAVE"> <IFN-P-BE-VERB <VOC
"IS">> <VOC "LIKE"> <IFN-P-BE-VERB <VOC "SHOULD">> <VOC "WANT"> <IFN-P-BE-VERB
<VOC "WAS">> <IFN-P-BE-VERB <VOC "WERE">> <IFN-P-BE-VERB <VOC "WILL">> <
IFN-P-BE-VERB <VOC "WOULD">>>>> <CONSTANT P-N-WORDS <PLTABLE <VOC "ZERO"> <VOC
"TEN"> <VOC "ELEVEN"> <VOC "TWELVE"> <VOC "THIRTEEN"> <VOC "FOURTEEN"> <VOC
"FIFTEEN"> <VOC "SIXTEEN"> <VOC "SEVENTEEN"> <VOC "EIGHTEEN"> <VOC "NINETEEN">
<VOC "TWENTY"> <VOC "THIRTY"> <VOC "FORTY"> <VOC "FIFTY"> <VOC "SIXTY"> <VOC
"SEVENTY"> <VOC "EIGHTY"> <VOC "NINETY"> <VOC "HUNDRED"> <VOC "THOUSAND"> <VOC
"MILLION"> <VOC "BILLION">>> <CONSTANT P-C-WORDS <PLTABLE <VOC "ASS"> <VOC
"ASSHOLE"> <VOC "BASTARD"> <VOC "BITCH"> <VOC "COCK"> <VOC "COCKSUCKER"> <VOC
"CRAP"> <VOC "CUNT"> <VOC "CUSS"> <VOC "DAMN"> <VOC "DAMNED"> <VOC "FUCK"> <VOC
"FUCKED"> <VOC "FUCKER"> <VOC "FUCKING"> <VOC "GODDAMN"> <VOC "GODDAMNED"> <VOC
"HELL"> <VOC "PISS"> <VOC "SCREW"> <VOC "SHIT"> <VOC "SHITHEAD"> <VOC "SUCKS">>
> <ROUTINE BUZZER-WORD?> <CONSTANT OFFENDED <LTABLE 0 "What charming language!"
"Computers aren't impressed by naughty words!"
"You ought to be ashamed of yourself!"
"Hey, save that talk for the locker room!" "Step outside and say that!"
"And so's your old man!">> <IFN-P-BE-VERB <DEFINE W-WORD-REPLY (WD) <COND (<OR
<NOT <EQUAL? .WD ,W?WHAT ,W?WHO>> <NOT <EQUAL? ,WINNER ,PLAYER>>> <COND (<
EQUAL? .WD ,W?WHERE> <TO-DO-X-USE-Y "locate" "FIND"> <RTRUE>) (T <TO-DO-X-USE-Y
"ask about" "TELL ME ABOUT"> <RTRUE>)>) (T <TELL "[Maybe you could "> <COND (<
FSET? ,LIBRARY ,TOUCHBIT> <TELL "look that up in the">) (T <TELL "find an">)> <
TELL " encyclopedia.]" CR>)>> <DEFINE TO-DO-X-USE-Y (STR1 STR2) <TELL "[To " .
STR1 " something, use the command: " .STR2 ,P-SOMETHING> <RTRUE>> <CONSTANT
P-SOMETHING " (something).]|"> <VOC "(SOMETHI"> <VOC "SOMETHING"> <DEFINE
TELL-PLEASE-USE-COMMANDS ("AUX" (THRESH <COND (<FSET? ,GREAT-HALL ,TOUCHBIT> 10
) (T 2)>)) <TELL "["> <COND (<L? ,P-ERRS .THRESH> <PRINT "Please use commands">
<TELL ", not statements or questions"> <PRINTR ".]">) (T <TELL-SAMPLE-COMMANDS>
)>>>>
<DEFAULT-DEFINITION NUMBER? <ADD-WORD "INT.NUM" ADJ> <ADD-WORD "INT.NUM" NOUN>
<ADD-WORD "INT.TIM" ADJ> <ADD-WORD "INT.TIM" NOUN> <ROUTINE NUMBER?>>
<DEFINE-ROUTINE CHANGE-LEXV>
<CONSTANT GWIM-MSG <TABLE 0 0 0 0>>
<DEFAULT-DEFINITION TELL-GWIM-MSG <DEFINE TELL-GWIM-MSG ("AUX" WD VB) <TELL !\[
> <COND (<T? <SET WD <ZGET ,GWIM-MSG 0>>> <PRINT-VOCAB-WORD .WD> <TELL !\ > <
SET VB <PARSE-VERB ,PARSER-RESULT>> <COND (<EQUAL? .VB ,W?SIT ,W?LIE> <COND (<
EQUAL? .WD ,W?DOWN> <TELL "on ">)>) (<EQUAL? .VB ,W?GET> <COND (<EQUAL? .WD ,
W?OUT> <TELL "of ">)>)>)> <TELL-THE <ZGET ,GWIM-MSG 1>> <TELL "]" CR>>>
<DEFINE-ROUTINE DO-IT-AGAIN>
<END-SEGMENT>
<ENDPACKAGE>

2335
parser.zap Normal file

File diff suppressed because it is too large Load Diff

92
pmem.zabstr Normal file
View File

@ -0,0 +1,92 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)("P-DEBUGGING-PARSER" T)) ()>
<ZZPACKAGE "PMEM">
<ENTRY PMEM PMEM-ALLOC PMEM-TYPE? PMEM-RESET PM-TYPE MAKE-PM-TYPE
PMEM-WORDS-USED PDEFS-INTERNAL-OBLIST PMEM-STORE-WARN PMEM-STORE-LENGTH>
<INCLUDE "BASEDEFS" "PBITDEFS">
<USE "NEWSTRUC">
<SET-DEFSTRUCT-FILE-DEFAULTS>
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFSTRUCT PMEM (TABLE 'CONSTRUCTOR ('PRINTTYPE PRINT-PMEM) 'NODECL ('NTH ZGET)
('PUT ZPUT) ('START-OFFSET 0)) (PM-HEADER <OR FIX FALSE>) (PM-LENGTH <OR FIX
FALSE> 'OFFSET 0 'NTH GETB 'PUT PUTB) (PM-TYPE-CODE <OR FIX FALSE> 'OFFSET 1 '
NTH GETB 'PUT PUTB)>
<CONSTANT PM-HEADER-LEN 1>
<DEFSTRUCT PM-TYPE VECTOR (PMT-NAME ATOM) (PMT-CODE FIX) (PMT-LENGTH <OR FIX
FALSE>) (PMT-ARGS <VECTOR [REST PM-ARG]> [])>
<DEFSTRUCT PM-ARG VECTOR (PMA-NAME ATOM) (PMA-OFFS FIX) (PMA-TYPE ANY) (
PMA-DEFAULT ANY)>
<GDECL (PM-TYPE-COUNT) FIX (PM-LIST) LIST>
<CONSTANT PMEM-STORE-LENGTH:FIX 180>
<CONSTANT PMEM-STORE:TABLE <ITABLE ,PMEM-STORE-LENGTH>>
<GLOBAL PMEM-STORE-POINTER PMEM-STORE>
<GLOBAL PMEM-STORE-WORDS:NUMBER PMEM-STORE-LENGTH>
<GLOBAL PMEM-STORE-WARN:NUMBER 50>
<DEFINE-ROUTINE PMEM?>
<DEFINE20 PM-TYPE (NAME:ATOM LENGTH:<OR FIX FALSE> "ARGS" STUFF "AUX" ATM CODE
TYPE-OBJ (OCT ,PM-HEADER-LEN) ARGS) <SET ATM <PARSE <STRING "PM-TYPE-" <SPNAME
.NAME>> 10 ,PDEFS-INTERNAL-OBLIST>> <COND (<NOT <GASSIGNED? PM-TYPE-COUNT>> <
SETG PM-TYPE-COUNT 0> <SETG PM-LIST (T)>)> <SET CODE <SETG PM-TYPE-COUNT <+ ,
PM-TYPE-COUNT 1>>> <SET TYPE-OBJ <MAKE-PM-TYPE 'PMT-NAME .ATM 'PMT-CODE .CODE '
PMT-LENGTH .LENGTH>> <EVAL <FORM CONSTANT <PARSE <STRING "PMEM-TYPE-" <SPNAME .
NAME>> 10 ,PDEFS-INTERNAL-OBLIST> .CODE>> <PUTREST <REST ,PM-LIST <- <LENGTH ,
PM-LIST> 1>> (.TYPE-OBJ)> <SETG .ATM .TYPE-OBJ> <SET ARGS <MAPF ,VECTOR <
FUNCTION (ARG:<OR LIST ATOM> "AUX" NATM OFFS (TYPE ANY) (DEFAULT <>) NNATM) <
COND (<TYPE? .ARG LIST> <SET NATM <1 .ARG>> <SET ARG <REST .ARG>>) (T <SET NATM
.ARG> <SET ARG ()>)> <SET NATM <PARSE <STRING <SPNAME .NAME> "-" <SPNAME .NATM>
> 10 ,PDEFS-INTERNAL-OBLIST>> <SET NNATM <PARSE <STRING <SPNAME .NAME> "-" <
SPNAME .NATM> "-OFFSET"> 10 ,PDEFS-INTERNAL-OBLIST>> <EVAL <FORM DEFMAC .NATM (
''OBJ "OPT" ''NEW) <FORM COND (<FORM ASSIGNED? NEW> <FORM FORM ZPUT '.OBJ .OCT
'.NEW>) (T <FORM FORM ZGET '.OBJ .OCT>)>>> <SETG .NNATM <SET OFFS .OCT>> <SET
OCT <+ .OCT 1>> <COND (<EMPTY? .ARG>) (T <SET TYPE <1 .ARG>> <COND (<NOT <
LENGTH? .ARG 1>> <COND (<AND <TYPE? <SET DEFAULT <2 .ARG>> FORM> <EMPTY? .
DEFAULT>> <SET DEFAULT <>>)>)> <COND (<AND <NOT <MATCH-KEY .DEFAULT NONE>> <NOT
<TYPE? .DEFAULT FORM>>> <COND (<NOT <DECL? .DEFAULT .TYPE>> <COND (<DECL? .
DEFAULT <FORM OR FALSE .TYPE>> <SET TYPE <FORM OR FALSE .TYPE>>) (T <ERROR
DEFAULT-DOESNT-MATCH-DECL .TYPE .DEFAULT PM-TYPE>)>)>)>)> <MAKE-PM-ARG '
PMA-NAME .NATM 'PMA-OFFS .OFFS 'PMA-TYPE .TYPE 'PMA-DEFAULT .DEFAULT>> .STUFF>>
<PMT-ARGS .TYPE-OBJ .ARGS>>
<DEFINE20 GET-PM-TYPE (TYPE:ATOM "AUX" TEMP) <COND (<AND <GASSIGNED? .TYPE> <
TYPE? ,.TYPE PM-TYPE>> ,.TYPE) (T <SET TEMP <PARSE <STRING "PM-TYPE-" <SPNAME .
TYPE>> 10 ,PDEFS-INTERNAL-OBLIST>> <COND (<AND <GASSIGNED? .TEMP> <TYPE? ,.TEMP
PM-TYPE>> ,.TEMP) (T <ERROR NOT-A-PMEM-TYPE!-ERRORS .TYPE>)>)>>
<DEFMAC PMEM-TYPE? ('PMEM 'TYPE "OPT" 'TYPE2 "AUX" (ATM <>) (ATM2 <>)) <SET
TYPE <GET-PM-TYPE .TYPE>> <COND (<ASSIGNED? TYPE2> <SET TYPE2 <GET-PM-TYPE .
TYPE2>>) (T <SET TYPE2 <>>)> <COND (<NOT .TYPE2> <FORM ==? <FORM PM-TYPE-CODE .
PMEM> <PMT-CODE .TYPE>>) (T <FORM OR <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .
TYPE>> <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .TYPE2>>>)>>
<DEFINE20 PRINT-PMEM (PMEM:PMEM "OPT" (OUTCHAN:CHANNEL .OUTCHAN) "AUX" (CODE <
PM-TYPE-CODE .PMEM>) (OBJ:PM-TYPE <NTH ,PM-LIST <+ .CODE 1>>)) <PRINT-MANY .
OUTCHAN PRINC "#" <PMT-NAME .OBJ> " ["> <REPEAT ((CT <PM-LENGTH .PMEM>) (N 1))
<COND (<L? <SET CT <- .CT 1>> 0> <RETURN>)> <PRIN1 <ZGET .PMEM .N>> <PRINC !\ >
<SET N <+ .N 1>>> <PRINC !\]> .PMEM>
<GLOBAL PMEM-WORDS-USED 0>
<GDECL (PMEM-WORDS-USED) FIX>
<DEFINE-ROUTINE PMEM-RESET>
<DEFINE20 MATCH-KEY (FOO BAR) <AND <TYPE? .FOO ATOM> <TYPE? .BAR ATOM> <=? <
SPNAME .FOO> <SPNAME .BAR>>>>
<DEFMAC PMEM-ALLOC PA (TYPNAM:ATOM "ARGS" STUFF "AUX" TEMP NT:PM-TYPE BASE
LENARG ATM BL) <SET NT <GET-PM-TYPE .TYPNAM>> <COND (<SET TEMP <MEMQ LENGTH .
STUFF>> <SET LENARG <2 .TEMP>>) (<NOT <SET LENARG <PMT-LENGTH .NT>>> <ERROR
BAD-PMEM-LENGTH-ARG!-ERRORS .TYPNAM PMEM-ALLOC>)> <SET BASE <FORM BIND ((
NEW-OBJECT <FORM DO-PMEM-ALLOC <PMT-CODE .NT> .LENARG>))>> <SET BL <REST .BASE>
> <REPEAT ((ARGS <PMT-ARGS .NT>) (INIT <CHTYPE <STACK <IVECTOR <* 2 <+ <LENGTH
.ARGS> ,PM-HEADER-LEN>> NONE>> TABLE>) THIS-ARG OFFS:FIX FRM) <COND (<EMPTY? .
STUFF> <MAPF <> <FUNCTION (ARG:PM-ARG "AUX" (IVAL <ZGET .INIT <PMA-OFFS .ARG>>)
) <COND (<AND <MATCH-KEY .IVAL NONE> <MATCH-KEY <PMA-DEFAULT .ARG> NONE>> <
ERROR NO-VALUE-FOR-MANDATORY-SLOT!-ERRORS .TYPNAM PMEM-ALLOC>) (<MATCH-KEY .
IVAL NONE> <COND (<AND <PMA-DEFAULT .ARG> <N==? <PMA-DEFAULT .ARG> '<>> <N==? <
PMA-DEFAULT .ARG> 0>> <SET BL <REST <PUTREST .BL (<FORM <PMA-NAME .ARG> '.
NEW-OBJECT <PMA-DEFAULT .ARG>>)>>>)>)>> .ARGS> <RETURN>)> <COND (<OR <NOT <
TYPE? <SET ATM <1 .STUFF>> ATOM>> <AND <OR <NOT <GASSIGNED? .ATM>> <NOT <TYPE?
,.ATM FIX MACRO>>> <SET ATM <PARSE <STRING <SPNAME .TYPNAM> "-" <SPNAME .ATM>>
10 ,PDEFS-INTERNAL-OBLIST>> <OR <NOT <GASSIGNED? .ATM>> <NOT <TYPE? ,.ATM FIX
MACRO>>>>> <COND (<N==? <1 .STUFF> LENGTH> <ERROR BAD-PMEM-ARG!-ERRORS .STUFF
PMEM-ALLOC>)>) (T <SET FRM <EXPAND <FORM .ATM .INIT T>>> <ZPUT .INIT <3 .FRM:
FORM> T> <COND (<AND <2 .STUFF> <N==? <2 .STUFF> '<>> <N==? <2 .STUFF> 0>> <SET
BL <REST <PUTREST .BL (<FORM .ATM '.NEW-OBJECT <2 .STUFF>>)>>>)>)> <SET STUFF <
REST .STUFF 2>>> <PUTREST .BL ('.NEW-OBJECT)> .BASE>
<DEFINE-ROUTINE DO-PMEM-ALLOC>
<END-SEGMENT>
<ENDPACKAGE>

45
pmem.zap Normal file
View File

@ -0,0 +1,45 @@
.SEGMENT "0"
.FUNCT PMEM?:ANY:1:1,PTR
LESS? PTR,PMEM-STORE /FALSE
LESS? PTR,PMEM-STORE+180 /TRUE
RFALSE
.FUNCT PMEM-RESET:ANY:0:0
GRTR? PMEM-WORDS-USED,0 \?CND1
SET 'PMEM-WORDS-USED,0
SUB PMEM-STORE-LENGTH,PMEM-STORE-WORDS
MUL 2,STACK
COPYT PMEM-STORE,0,STACK
?CND1: SET 'PMEM-STORE-WORDS,PMEM-STORE-LENGTH
SET 'PMEM-STORE-POINTER,PMEM-STORE
RTRUE
.FUNCT DO-PMEM-ALLOC:ANY:2:2,TYPE,LENGTH,STOR,LEFT,NEW
SET 'STOR,PMEM-STORE-POINTER
SET 'LEFT,PMEM-STORE-WORDS
IGRTR? 'LENGTH,LEFT \?CND1
ICALL2 P-NO-MEM-ROUTINE,TYPE
?CND1: ADD PMEM-WORDS-USED,LENGTH >PMEM-WORDS-USED
SUB LEFT,LENGTH >PMEM-STORE-WORDS
GRTR? PMEM-STORE-WARN,PMEM-STORE-WORDS \?CND3
SET 'PMEM-STORE-WARN,PMEM-STORE-WORDS
PRINTI "[Debugging info: "
PRINTI "PMEM: "
PRINTN PMEM-STORE-WARN
PRINTI " left!]
"
?CND3: MUL LENGTH,2
ADD STOR,STACK >PMEM-STORE-POINTER
DEC 'LENGTH
PUTB STOR,0,LENGTH
PUTB STOR,1,TYPE
RETURN STOR
.ENDSEG
.ENDI

BIN
power.lbm Normal file

Binary file not shown.

105
prare.zabstr Normal file
View File

@ -0,0 +1,105 @@
<FLAGS-AND-DEFAULTS (("P-ZORK0" %<>)("ONE-BYTE-PARTS-OF-SPEECH" %<>)(
"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-APOSTROPHE-BREAKS-WORDS" T)(
"P-BE-VERB" T)) (("YES?" "DEFS" #WORD *31055044554*) ("WHICH-PRINT" "DEFS2" #
WORD *07342702061*) ("CANT-FIND-OBJECT" "DEFS2" #WORD *34547172463*) ("REFRESH"
"DEFS" #WORD *22741033411*))>
<ZZPACKAGE "PARSER">
<RENTRY PRINT-LEXV TELL-CTHE TELL-THE>
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
<USE "PMEM" "PSTACK" "REDS">
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED CANT-FIND-OBJECT CANT-USE-MULTIPLE DONT-UNDERSTAND
PRINT-INTQUOTE PRINT-LEXV REFRESH SETUP-ORPHAN SETUP-ORPHAN-NP TOO-MANY-NOUNS
WHICH-LIST? WHICH-PRINT WINNER-SAYS-WHICH? YES?>
<DEFINE-ROUTINE TOO-MANY-NEW>
<DEFINE-ROUTINE NAKED-OOPS>
<DEFINE-ROUTINE CANT-OOPS>
<DEFINE-ROUTINE CANT-AGAIN>
<DEFAULT-DEFINITION CANT-USE-MULTIPLE <ROUTINE CANT-USE-MULTIPLE>>
<DEFINE-ROUTINE MAKE-ROOM-FOR-TOKENS>
<DEFINE-ROUTINE REPLACE-ONE-TOKEN>
<DEFAULT-DEFINITION REFRESH <DEFINE V-$REFRESH () <LOWCORE FLAGS <BAND <LOWCORE
FLAGS> <BCOM ,F-REFRESH>>> <CLEAR -1> <INIT-STATUS-LINE> <RTRUE>>>
<DEFAULT-DEFINITION PRINT-INTQUOTE <ROUTINE PRINT-INTQUOTE>>
<DEFAULT-DEFINITION PRINT-LEXV <ROUTINE PRINT-LEXV>>
<DEFINE-ROUTINE COPY-INPUT>
<COND (<NOT <OR <CHECK-VERSION? XZIP> <CHECK-VERSION? YZIP>>> <DEFINE
COPY-INBUF (SRC DEST "AUX" CNT:FIX) <SET CNT <- <GETB .SRC 0> 1>> <REPEAT () <
PUTB .DEST .CNT <GETB .SRC .CNT>> <COND (<L? <SET CNT <- .CNT 1>> 0> <RETURN>)>
>> <DEFINE COPY-LEXV (SRC DEST "OPT" (MAX:FIX ,LEXV-LENGTH) "AUX" (CTR:FIX 1))
<PUTB .DEST 0 <GETB .SRC 0>> <PUTB .DEST 1 <GETB .SRC 1>> <SET DEST <ZREST .
DEST <* ,P-LEXSTART:FIX 2>>> <SET SRC <ZREST .SRC <* ,P-LEXSTART:FIX 2>>> <
REPEAT () <ZPUT .DEST 0 <ZGET .SRC 0>> <PUTB .DEST 2 <GETB .SRC 2>> <PUTB .DEST
3 <GETB .SRC 3>> <COND (<G? <SET CTR <+ .CTR 1>> .MAX> <RETURN>)> <SET DEST <
ZREST .DEST <* 2 ,P-LEXELEN:FIX>>> <SET SRC <ZREST .SRC <* 2 ,P-LEXELEN:FIX>>>>
>)>
<END-SEGMENT>
<BEGIN-SEGMENT 0>
<ADD-WORD NO.WORD ADJ>
<DEFINE-ROUTINE BUFFER-PRINT>
<DEFINE-ROUTINE CAPITALIZE>
<DEFINE-ROUTINE PRINT-PARSER-FAILURE>
<DEFINE-ROUTINE NAKED-ADJECTIVE?>
<DEFINE-ROUTINE CHANGE-AND-TO-THEN?>
<DEFAULT-DEFINITION DONT-UNDERSTAND <ROUTINE DONT-UNDERSTAND>>
<DEFINE-ROUTINE MISSING>
<DEFAULT-DEFINITION CANT-FIND-OBJECT <DEFINE CANT-FIND-OBJECT (NP PART "AUX"
TMP) <COND (<ZERO? <NP-QUANT .NP>> <NP-CANT-SEE .NP .PART>) (T <TELL
"[There isn't anything to "> <COND (<SET TMP <PARSE-VERB ,PARSE-RESULT>> <
PRINT-VOCAB-WORD .TMP> <COND (<NOT <EQUAL? .PART 0 1>> <TELL !\ > <
PRINT-VOCAB-WORD .PART>)>) (T <TELL "do that to">)> <TELL "!]" CR>)>> <DEFINE
NP-CANT-SEE ("OPT" (NP <GET-NP>) (SYN 0) "AUX" TMP) <COND (<SET TMP <NP-NAME .
NP>> <TELL "["> <TELL-CTHE ,WINNER> <TELL " "> <COND (<AND <BTST .SYN ,
SEARCH-MUST-HAVE> <NOT <BTST .SYN ,SEARCH-MOBY>>> <COND (<EQUAL? ,WINNER ,
PLAYER ,ME> <TELL "don't">) (ELSE <TELL "doesn't">)> <TELL " have">) (T <TELL
"can't see">)> <TELL " "> <COND (<OR <CAPITAL-NOUN? .TMP> <AND <SET TMP <
NP-ADJS .NP>> <ADJS-POSS .TMP>>> <NP-PRINT .NP T>) (T <TELL "any "> <NP-PRINT .
NP>)> <TELL !\ > <COND (<AND <SET TMP <NP-LOC .NP>> <OR <AND <PMEM-TYPE? .TMP
NOUN-PHRASE> <TELL "in">> <AND <PMEM-TYPE? .TMP LOCATION> <SET TMP <
LOCATION-OBJECT .TMP>> <PRINT-VOCAB-WORD <LOCATION-PREP .TMP>>>>> <TELL " "> <
TELL-THE <NOUN-PHRASE-OBJ1 .TMP>>) (T <COND (T <TELL "right ">)> <TELL "here">)
> <TELL ".]" CR>) (T <MORE-SPECIFIC>)>>>
<DEFAULT-DEFINITION WINNER-SAYS-WHICH? <ROUTINE WINNER-SAYS-WHICH?>>
<DEFAULT-DEFINITION WHICH-LIST? <ROUTINE WHICH-LIST?>>
<DEFAULT-DEFINITION WHICH-PRINT <DEFINE WHICH-PRINT ("OPT" (NP <GET-NP>)) <
REPEAT ((PTR <NP-LEXEND .NP>) (NOUN <NP-NAME .NP>)) <COND (<==? .NOUN <ZGET .
PTR 0>> <SETG P-OFLAG </ <- .PTR ,P-LEXV> 2>> <COPYT ,G-LEXV ,O-LEXV ,
LEXV-LENGTH-BYTES> <COPYT ,G-INBUF ,O-INBUF <+ 1 ,INBUF-LENGTH>> <ZPUT ,
OOPS-TABLE ,O-AGAIN <ZGET ,OOPS-TABLE ,O-START>> <RETURN>) (<G? ,P-LEXV <SET
PTR <- .PTR ,LEXV-ELEMENT-SIZE-BYTES>>> <RFALSE>)>> <PROG ((SR ,ORPHAN-SR) (TMP
<>) (LEN <FIND-RES-COUNT .SR>) (SZ <FIND-RES-SIZE .SR>)) <COND (<AND <NOT <==?
,WINNER ,PLAYER>> <NOT <SET TMP <WINNER-SAYS-WHICH? .NP>>>> <TELL
"\"I don't understand "> <COND (<WHICH-LIST? .NP .SR> <TELL "if">) (T <TELL
"which"> <COND (<T? .NP> <TELL !\ > <NP-PRINT .NP>)>)>) (<EQUAL? .TMP T> <RTRUE
>) (T <TELL "[Which"> <COND (<T? .NP> <TELL !\ > <NP-PRINT .NP>)> <TELL " do">)
> <TELL " you mean"> <COND (<WHICH-LIST? .NP .SR> <COND (<OR .TMP <==? ,WINNER
,PLAYER>> <TELL !\,>)> <REPEAT ((REM .LEN) (VEC <REST-TO-SLOT .SR FIND-RES-OBJ1
>)) <TELL !\ > <TELL-THE <ZGET .VEC 0>> <COND (<==? .REM 2> <COND (<NOT <==? .
LEN 2>> <TELL !\,>)> <TELL " or">) (<G? .REM 2> <TELL !\,>)> <COND (<L? <SET
REM <- .REM 1>> 1> <RETURN>) (<L? <SET SZ <- .SZ 1>> 1> <COND (T <RETURN>)>) (T
<SET VEC <ZREST .VEC 2>>)>>)> <COND (<AND <NOT <==? ,WINNER ,PLAYER>> <NOT .TMP
>> <TELL ".\"" CR>) (T <TELL "?]" CR>)>>>>
<DEFINE-ROUTINE NP-PRINT>
<DEFINE-ROUTINE ADJS-PRINT>
<DEFAULT-DEFINITION TOO-MANY-NOUNS <ROUTINE TOO-MANY-NOUNS>>
<DEFINE-ROUTINE INBUF-ADD>
<DEFINE-ROUTINE INBUF-PRINT>
<DEFAULT-DEFINITION YES? <CONSTANT YES-INBUF <ITABLE 19 (BYTE LENGTH) 0>> <
CONSTANT YES-LEXV <ITABLE 3 (LEXV) 0 0>> <DEFINE YES? ("OPT" (NO-Q <>) "AUX"
WORD VAL) <COND (<NOT .NO-Q> <TELL !\?>)> <REPEAT () <TELL "|>"> <COND (T <PUTB
,YES-INBUF 1 0>)> <ZREAD ,YES-INBUF ,YES-LEXV> <COND (<AND <NOT <0? <GETB ,
YES-LEXV ,P-LEXWORDS>>> <SET WORD <ZGET ,YES-LEXV ,P-LEXSTART>>> <COND (<
COMPARE-WORD-TYPES <WORD-CLASSIFICATION-NUMBER .WORD> <GET-CLASSIFICATION VERB>
> <SET VAL <WORD-VERB-STUFF .WORD>>) (T <SET VAL <>>)> <COND (<EQUAL? .VAL ,
ACT?YES> <SET VAL T> <RETURN>) (<OR <EQUAL? .VAL ,ACT?NO> <EQUAL? .WORD ,W?N>>
<SET VAL <>> <RETURN>) (<EQUAL? .VAL ,ACT?RESTART> <V-RESTART>) (<EQUAL? .VAL ,
ACT?RESTORE> <V-RESTORE>) (<EQUAL? .VAL ,ACT?QUIT> <V-QUIT>)>)> <TELL
"[Please type YES or NO.]">> .VAL>>
<DEFAULT-DEFINITION SETUP-ORPHAN <ROUTINE SETUP-ORPHAN>>
<DEFAULT-DEFINITION SETUP-ORPHAN-NP <ROUTINE SETUP-ORPHAN-NP>>
<DEFINE-ROUTINE INSERT-ADJS>
<DEFINE-ROUTINE INSERT-ADJS-WD>
<END-SEGMENT>
<ENDPACKAGE>

1042
prare.zap Normal file

File diff suppressed because it is too large Load Diff

45
pstack.zabstr Normal file
View File

@ -0,0 +1,45 @@
<ZZPACKAGE "PSTACK">
<ENTRY ALLOCATE-PSTACK MAX-PSTACK-SIZE PUSH-PSTACK POP-PSTACK PEEK-PSTACK
PSTACK FLUSH-PSTACK PSTACK-PTR CLEAR-PSTACK PSTACK-DATA PSTACK-EMPTY?>
<USE "NEWSTRUC">
<FILE-FLAGS>
<BEGIN-SEGMENT 0>
<MSETG MAX-PSTACK-SIZE 21>
<NEWTYPE PSTACK TABLE>
<DEFMAC ALLOCATE-PSTACK () <ITABLE ,MAX-PSTACK-SIZE 0>>
<DEFMAC PSTACK-PTR ('S "OPT" 'NEW) <COND (<ASSIGNED? NEW> <FORM ZPUT .S 0 .NEW>
) (T <CHTYPE [<FORM ZGET .S 0> FIX] ADECL>)>>
<DEFMAC PSTACK-EMPTY? ('PSTACK) <COND (<CHECK-VERSION? YZIP> <FORM EQUAL? <- ,
MAX-PSTACK-SIZE 1> <FORM PSTACK-PTR .PSTACK>>) (T <FORM 0? <FORM PSTACK-PTR .
PSTACK>>)>>
<DEFMAC CLEAR-PSTACK ('S) <COND (<CHECK-VERSION? YZIP> <FORM PSTACK-PTR <CHTYPE
[.S PSTACK] ADECL> <- ,MAX-PSTACK-SIZE 1>>) (T <FORM PSTACK-PTR <CHTYPE [.S
PSTACK] ADECL> 0>)>>
<DEFINE20 PRINT-PSTACK (S:PSTACK "OPT" (OUTCHAN:CHANNEL .OUTCHAN) "AUX" (P <
PSTACK-PTR .S>)) <PRINT-MANY .OUTCHAN PRINC "#PSTACK [" .P " ["> <REPEAT ((D <
ZREST .S 2>)) <COND (<L=? .P 0> <RETURN>)> <PRIN1 <ZGET .D 0>> <PRINC " "> <SET
D <ZREST .D 2>> <SET P <- .P 1>>> <PRINC "]]">>
<COND (<CHECK-VERSION? YZIP> <DEFMAC PUSH-PSTACK ('S 'OBJ) <FORM XPUSH .OBJ .S>
>) (T <IF-P-DEBUGGING-PARSER <GLOBAL PSTACK-WARN:NUMBER 20>> <ROUTINE
PUSH-PSTACK (S:PSTACK OBJ "AUX" TMP) <SET TMP <+ 1 <PSTACK-PTR .S>>> <COND (<
L=? ,MAX-PSTACK-SIZE .TMP> <P-NO-MEM-ROUTINE> <RFALSE>)> <IF-P-DEBUGGING-PARSER
<COND (<L? ,PSTACK-WARN .TMP> <SETG PSTACK-WARN .TMP> <PRINTI "[PSTACK: "> <
PRINTN <- ,MAX-PSTACK-SIZE .TMP>> <PRINTI " left!]|">)>> <PSTACK-PTR .S .TMP> <
ZPUT .S .TMP .OBJ> .S>)>
<COND (<CHECK-VERSION? YZIP> <DEFMAC FLUSH-PSTACK ('S "OPT" ('N 1)) <FORM
FSTACK .N .S>>) (T <ROUTINE FLUSH-PSTACK (S:PSTACK "OPT" (N:FIX 1)) <COND (<G?
0 <SET N <- <PSTACK-PTR .S> .N>>> <SET N 0>)> <PSTACK-PTR .S .N> .S>)>
<COND (<CHECK-VERSION? YZIP> <DEFMAC POP-PSTACK ('S "OPT" ('N 1)) <COND (<1? .N
> <FORM POP .S>) (T <FORM FSTACK .N .S>)>>) (T <ROUTINE POP-PSTACK (S:PSTACK
"OPT" (N:FIX 1) "AUX" (OBJ <PEEK-PSTACK .S>)) <COND (<NOT <0? .N>> <
FLUSH-PSTACK .S .N>)> .OBJ>)>
<COND (<CHECK-VERSION? YZIP> <ROUTINE PEEK-PSTACK (S "OPT" (OFFS 0) "AUX" (N 0)
VAL) <REPEAT () <SET VAL <POP .S>> <PUSH .VAL> <SET N <ADD N 1>> <COND (<LESS?
<SET OFFS <SUB OFFS 1>> 0> <RETURN>)>> <REPEAT () <COND (<LESS? <SET N <SUB N 1
>> 0> <RETURN>) (T <XPUSH #ZLOCAL!-IZILCH STACK .S>)>> .VAL>) (T <ROUTINE
PEEK-PSTACK (S:PSTACK "OPT" (OFFS:FIX 0)) <ZGET .S <- <PSTACK-PTR .S> .OFFS>>>)
>
<DEFINE-ROUTINE PEEK-PSTACK>
<END-SEGMENT>
<ENDPACKAGE>

18
pstack.zap Normal file
View File

@ -0,0 +1,18 @@
.SEGMENT "0"
.FUNCT PEEK-PSTACK:ANY:1:2,S,OFFS,N,VAL
?PRG1: POP S >VAL
PUSH VAL
INC 'N
DLESS? 'OFFS,0 \?PRG1
?PRG5: DLESS? 'N,0 /?REP6
POP
XPUSH STACK,S /?PRG5
JUMP ?PRG5
?REP6: RETURN VAL
.ENDSEG
.ENDI

BIN
pump.lbm Normal file

Binary file not shown.

91
reds.zabstr Normal file
View File

@ -0,0 +1,91 @@
<FLAGS-AND-DEFAULTS (("P-BE-VERB" T)("ONE-BYTE-PARTS-OF-SPEECH" %<>)(
"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-ZORK0" %<>)) (("NOT-HERE-VERB?"
"DEFS" #WORD *27521557224*) ("DIR-VERB-PRSI?" "DEFS" #WORD *07505151377*))>
<ZZPACKAGE "REDS">
<ENTRY RED-SP RED-ADV RED-PART RED-SV RED-SVN RED-SVNP RED-SVPNPN RED-SVPNN
RED-SVNPN RED-SVD RED-PERS RED-VP RED-NP RED-OF RED-QT RED-QN RED-NPP RED-PP
RED-POSS RED-ADJ RED-QUOTE>
<ENTRY RED-O-ADJ RED-O-PP RED-O-NP NUMERIC-ADJ? DIR-VERB-WORD?>
<INCLUDE "BASEDEFS" "FIND" "PBITDEFS" "PDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM" "PSTACK">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED DIR-VERB-PRSI? DIR-VERB-WORD? NOT-HERE-VERB?>
<DEFAULT-DEFINITION DIR-VERB-PRSI? <DEFINE DIR-VERB-PRSI? (NP) <AND <EQUAL? <
PARSE-ACTION ,PARSE-RESULT> ,V?MOVE-DIR ,V?RIDE-DIR ,V?ROLL-DIR ,V?SET-DIR> <
NOT <EQUAL? <NOUN-PHRASE-OBJ1 .NP> ,INTDIR ,LEFT-RIGHT>>>>>
<DEFAULT-DEFINITION DIR-VERB-WORD? <DEFMAC DIR-VERB-WORD? ('WD) <FORM EQUAL? .
WD ',W?WALK ',W?GO ',W?RUN>>>
<DEFAULT-DEFINITION NOT-HERE-VERB? <DEFMAC NOT-HERE-VERB? ('V) <FORM EQUAL? .V
',V?WALK-TO>>>
<DEFMAC ABS ('NUM) <FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>) (T .NUM)>>
<DEFINE-ROUTINE RED-FCN>
<DEFINE-ROUTINE RED-PART>
<DEFINE-ROUTINE GET-SYNTAX>
<DEFINE-ROUTINE RED-SV>
<DEFINE-ROUTINE ROOT-VERB>
<DEFINE-ROUTINE RED-SVN>
<DEFINE-ROUTINE RED-SVNP>
<DEFINE-ROUTINE RED-SVNPN>
<DEFINE-ROUTINE RED-SVPNN>
<DEFINE-ROUTINE RED-SVPNPN>
<DEFINE-ROUTINE RED-SVD>
<DEFINE-ROUTINE RED-SP>
<GLOBAL SEARCH-FLAGS:NUMBER 0>
<DEFINE-ROUTINE IREDUCE-EXCEPTION>
<DEFINE-ROUTINE REDUCE-EXCEPT-IT>
<DEFINE-ROUTINE REDUCE-EXCEPTION>
<CONSTANT P-NO-INSIDE "No inside">
<CONSTANT P-NO-SURFACE "No surface">
<CONSTANT P-NOTHING "Nothing">
<CONSTANT PREP-BIT <ITABLE 3 0>>
<DEFINE-ROUTINE REDUCE-LOCATION>
<COND (<GASSIGNED? DO-TEST-PREP> <SETG TEST-PREP <TABLE ,DO-TEST-PREP>>)>
<DEFINE-ROUTINE DETERMINE-OBJ>
<DEFINE-ROUTINE CHECK-DIR-ADJS>
<DEFINE-ROUTINE NUMERIC-ADJ?>
<COMPILATION-FLAG-DEFAULT P-GENDERS T>
<VOC "HIMSELF" NOUN>
<VOC "HERSELF" NOUN>
<DEFINE-ROUTINE DETERMINE-NP>
<DEFINE-ROUTINE DET-NP-NOT-HERE?>
<DEFINE-ROUTINE DET-NP-OWNEE?>
<DEFINE-ROUTINE FIND-OWNERS>
<DEFINE-ROUTINE READY-TO-DISAMBIGUATE?>
<DEFINE-ROUTINE DETERMINE-NP-XFER>
<DEFINE-ROUTINE DO-ORPHAN-TEST>
<DEFINE-ROUTINE RED-O-ADJ>
<DEFINE-ROUTINE RED-O-PP>
<DEFINE-ROUTINE INSERT-NP>
<DEFINE-ROUTINE TEST-SR>
<DEFINE-ROUTINE RED-O-NP>
<DEFINE-ROUTINE RED-PERS>
<DEFINE-ROUTINE HACK-TELL>
<DEFINE-ROUTINE HACK-TELL-1>
<DEFINE-ROUTINE RED-VP>
<DEFINE-ROUTINE RED-NP>
<DEFINE-ROUTINE RED-OF>
<DEFINE-ROUTINE RED-QT>
<DEFINE-ROUTINE GET-QUANTITY-WORD>
<DEFINE-ROUTINE GET-QUANTITY>
<DEFINE-ROUTINE RED-QN>
<DEFINE-ROUTINE RED-NPP>
<DEFINE-ROUTINE RED-PP>
<ADD-WORD MY ADJ>
<ADD-WORD ME NOUN>
<ADD-WORD YOUR ADJ>
<ADD-WORD YOU NOUN>
<ADD-WORD ITS ADJ>
<ADD-WORD IT NOUN>
<ADD-WORD HIS ADJ>
<ADD-WORD HIM NOUN>
<ADD-WORD THEIR ADJ>
<ADD-WORD THEM NOUN>
<DEFINE-ROUTINE RED-POSS>
<CONSTANT LAST-OBJECT 0>
<DEFINE-ROUTINE RED-ADJ>
<OBJECT INTQUOTE (LOC GLOBAL-OBJECTS) (DESC "quotation")>
<DEFINE-ROUTINE RED-QUOTE>
<END-SEGMENT>
<ENDPACKAGE>

1677
reds.zap Normal file

File diff suppressed because it is too large Load Diff

29
return1.zabstr Normal file
View File

@ -0,0 +1,29 @@
<GLOBAL GL-RETURN1-DONE? <> <> BYTE>
<OBJECT TH-CATFISH-LOCKER (LOC RM-PERSONAL-STORAGE-2) (DESC "locker") (FLAGS
FL-SEARCH FL-TAKEABLE FL-CONTAINER FL-OPENABLE) (SYNONYM LOCKER) (ADJECTIVE
CATFISH) (SIZE 5) (ACTION RT-TH-CATFISH-LOCKER)>
<DEFINE-ROUTINE RT-TH-CATFISH-LOCKER>
<OBJECT TH-STEEL-BOX (LOC TH-CATFISH-LOCKER) (DESC "box") (FLAGS FL-SEARCH
FL-TAKEABLE FL-CONTAINER FL-OPENABLE FL-LOCKED) (SYNONYM BOX) (ADJECTIVE STEEL
CATFISH) (SIZE 5) (ACTION RT-TH-STEEL-BOX)>
<DEFINE-ROUTINE RT-TH-STEEL-BOX>
<OBJECT TH-CLUE-PAPER (LOC TH-CATFISH-LOCKER) (DESC "paper") (FLAGS FL-TAKEABLE
FL-READABLE) (SYNONYM PAPER) (SIZE 5) (ACTION RT-TH-CLUE-PAPER)>
<DEFINE-ROUTINE RT-TH-CLUE-PAPER>
<OBJECT TH-STEEL-KEY (DESC "steel key") (FLAGS FL-KEY FL-SEARCH FL-TAKEABLE) (
SYNONYM KEY) (ADJECTIVE STEEL) (OWNER TH-DRYER) (SIZE 5) (ACTION
RT-TH-STEEL-KEY)>
<DEFINE-ROUTINE RT-TH-STEEL-KEY>
<OBJECT TH-DRYER (LOC RM-LAUNDRY) (DESC "dryer") (FLAGS FL-CONTAINER
FL-OPENABLE FL-SEARCH FL-TAKEABLE) (SYNONYM DRYER) (SIZE 5) (ACTION RT-TH-DRYER
)>
<DEFINE-ROUTINE RT-TH-DRYER>
<OBJECT TH-PASSPORT (LOC TH-STEEL-BOX) (DESC "passport") (FLAGS FL-SEARCH
FL-TAKEABLE) (SYNONYM PASSPORT) (ADJECTIVE CATFISH) (SIZE 5) (ACTION
RT-TH-PASSPORT)>
<DEFINE-ROUTINE RT-TH-PASSPORT>
<OBJECT TH-DISCHARGE (LOC TH-STEEL-BOX) (DESC "discharge") (FLAGS FL-SEARCH
FL-TAKEABLE) (SYNONYM DISCHARGE) (ADJECTIVE CATFISH MILITARY MARINE MARINES
HONORABLE PAPERS) (OWNER CH-CATFISH) (SIZE 5) (ACTION RT-TH-DISCHARGE)>
<DEFINE-ROUTINE RT-TH-DISCHARGE>

56
return1.zap Normal file
View File

@ -0,0 +1,56 @@
.FUNCT RT-TH-CATFISH-LOCKER:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-STEEL-BOX:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-CLUE-PAPER:ANY:0:1,CONTEXT
EQUAL? PRSA,V?READ \FALSE
PRINTR "On the paper are written the words, ""IN HER DRY BED."""
.FUNCT RT-TH-STEEL-KEY:ANY:0:1,CONTEXT,V
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?TAKE \FALSE
GETP TH-STEEL-KEY,P?OWNER
EQUAL? STACK,TH-DRYER \FALSE
CALL1 ITAKE >V
EQUAL? V,M-FATAL \?CCL11
RETURN 2
?CCL11: ZERO? V /FALSE
PUTP TH-STEEL-KEY,P?OWNER,FALSE-VALUE
PRINTR " You peel the key off the back of the dryer."
.FUNCT RT-TH-DRYER:ANY:0:1,CONTEXT
EQUAL? PRSA,V?REACH-BEHIND,V?LOOK-BEHIND \FALSE
GETP TH-STEEL-KEY,P?OWNER
EQUAL? STACK,TH-DRYER \FALSE
MOVE TH-STEEL-KEY,RM-LAUNDRY
ICALL2 THIS-IS-IT,TH-STEEL-KEY
PRINTR " Taped to the back of the dryer is a small steel key."
.FUNCT RT-TH-PASSPORT:ANY:0:1,CONTEXT
EQUAL? PRSA,V?SHOW \FALSE
EQUAL? PRSI,CH-COFFEY \FALSE
FSET? CH-CATFISH,FL-ASLEEP \FALSE
PRINTR " Coffey glances at the passport and shrugs with contempt. ""Big deal. These things are a dime a dozen. Any spy would have one."""
.FUNCT RT-TH-DISCHARGE:ANY:0:1,CONTEXT
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR " It's an honorable discharge from the United States Marine Corps."
?CCL3: EQUAL? PRSA,V?SHOW \FALSE
EQUAL? PRSI,CH-COFFEY \FALSE
FSET? CH-CATFISH,FL-ASLEEP \FALSE
FCLEAR CH-CATFISH,FL-ASLEEP
PRINTR " Coffey peers at the document carefully. ""This thing's an original, and I know the forms are kept locked up tighter than Fort Knox. It's even signed by Commander McMahon himself. I suppose it could have been forged, but I guess I was wrong all along.""
He turns Catfish over and slaps him on the face a couple of times to bring him around. When Catfish has regained a semblence of consciousness, Coffey says, ""I'm sorry, fella. I guess I got carried away.""
Catfish drags himself to his feet and says groggily, ""Don't mention it. Maybe I can do the same for you some day."""
.ENDI

183
return1.zil Normal file
View File

@ -0,0 +1,183 @@
;"***************************************************************************"
; "game : Abyss"
; "file : RETURN1.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:45:16 $"
; "rev : $Revision: 1.3 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "First return to Deepcore"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<GLOBAL GL-RETURN1-DONE? <> <> BYTE>
<OBJECT TH-CATFISH-LOCKER
(LOC RM-PERSONAL-STORAGE-2)
(DESC "locker")
(FLAGS FL-SEARCH FL-TAKEABLE FL-CONTAINER FL-OPENABLE)
(SYNONYM LOCKER)
(ADJECTIVE CATFISH)
(SIZE 5)
(ACTION RT-TH-CATFISH-LOCKER)
>
<ROUTINE RT-TH-CATFISH-LOCKER ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-STEEL-BOX
(LOC TH-CATFISH-LOCKER)
(DESC "box")
(FLAGS FL-SEARCH FL-TAKEABLE FL-CONTAINER FL-OPENABLE FL-LOCKED)
(SYNONYM BOX)
(ADJECTIVE STEEL CATFISH)
(SIZE 5)
(ACTION RT-TH-STEEL-BOX)
>
<ROUTINE RT-TH-STEEL-BOX ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-CLUE-PAPER
(LOC TH-CATFISH-LOCKER ;TH-STEEL-BOX)
(DESC "paper")
(FLAGS FL-TAKEABLE FL-READABLE)
(SYNONYM PAPER)
(SIZE 5)
(ACTION RT-TH-CLUE-PAPER)
>
<ROUTINE RT-TH-CLUE-PAPER ("OPT" (CONTEXT <>))
<COND
(<VERB? READ>
<TELL "On the paper are written the words, \"IN HER DRY BED.\"" CR>
)
>
>
<OBJECT TH-STEEL-KEY
(DESC "steel key")
(FLAGS FL-KEY FL-SEARCH FL-TAKEABLE)
(SYNONYM KEY)
(ADJECTIVE STEEL)
(OWNER TH-DRYER)
(SIZE 5)
(ACTION RT-TH-STEEL-KEY)
>
<ROUTINE RT-TH-STEEL-KEY ("OPT" (CONTEXT <>) "AUX" V)
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? TAKE>
<COND
(<EQUAL? <GETP ,TH-STEEL-KEY ,P?OWNER> ,TH-DRYER>
<SET V <ITAKE>>
<COND
(<EQUAL? .V ,M-FATAL>
<RFATAL>
)
(.V
<PUTP ,TH-STEEL-KEY ,P?OWNER <>>
<TELL " You peel the key off the back of the dryer." CR>
)
>
)
>
)
>
>
<OBJECT TH-DRYER
(LOC RM-LAUNDRY)
(DESC "dryer")
(FLAGS FL-CONTAINER FL-OPENABLE FL-SEARCH FL-TAKEABLE)
(SYNONYM DRYER)
(SIZE 5)
(ACTION RT-TH-DRYER)
>
<ROUTINE RT-TH-DRYER ("OPT" (CONTEXT <>))
<COND
(<VERB? LOOK-BEHIND REACH-BEHIND>
<COND
(<EQUAL? <GETP ,TH-STEEL-KEY ,P?OWNER> ,TH-DRYER>
; <FCLEAR ,TH-STEEL-KEY ,FL-INVISIBLE>
<MOVE ,TH-STEEL-KEY ,RM-LAUNDRY>
<THIS-IS-IT ,TH-STEEL-KEY>
<TELL " Taped to the back of the dryer is a small steel key." CR>
)
>
)
>
>
<OBJECT TH-PASSPORT
(LOC TH-STEEL-BOX)
(DESC "passport")
(FLAGS FL-SEARCH FL-TAKEABLE)
(SYNONYM PASSPORT)
(ADJECTIVE CATFISH)
(SIZE 5)
(ACTION RT-TH-PASSPORT)
>
<ROUTINE RT-TH-PASSPORT ("OPT" (CONTEXT <>))
<COND
(<AND <VERB? SHOW>
<MC-PRSI? ,CH-COFFEY>
<FSET? ,CH-CATFISH ,FL-ASLEEP>
>
<TELL
" Coffey glances at the passport and shrugs with contempt. \"Big deal.
These things are a dime a dozen. Any spy would have one.\"" CR
>
)
>
>
<OBJECT TH-DISCHARGE
(LOC TH-STEEL-BOX)
(DESC "discharge")
(FLAGS FL-SEARCH FL-TAKEABLE)
(SYNONYM DISCHARGE)
(ADJECTIVE CATFISH MILITARY MARINE MARINES HONORABLE PAPERS)
(OWNER CH-CATFISH)
(SIZE 5)
(ACTION RT-TH-DISCHARGE)
>
<ROUTINE RT-TH-DISCHARGE ("OPT" (CONTEXT <>))
<COND
(<VERB? EXAMINE>
<TELL
" It's an honorable discharge from the United States Marine Corps." CR
>
)
(<AND <VERB? SHOW>
<MC-PRSI? ,CH-COFFEY>
<FSET? ,CH-CATFISH ,FL-ASLEEP>
>
<FCLEAR ,CH-CATFISH ,FL-ASLEEP>
<TELL
" Coffey peers at the document carefully. \"This thing's an original, and
I know the forms are kept locked up tighter than Fort Knox. It's even
signed by Commander McMahon himself. I suppose it could have been
forged, but I guess I was wrong all along.\"|
He turns Catfish over and slaps him on the face a couple of times to
bring him around. When Catfish has regained a semblence of consciousness,
Coffey says, \"I'm sorry, fella. I guess I got carried away.\"|
Catfish drags himself to his feet and says groggily, \"Don't mention it.
Maybe I can do the same for you some day.\"" CR
>
)
>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

23
return2.zabstr Normal file
View File

@ -0,0 +1,23 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<GLOBAL GL-RETURN2-DONE? <> <> BYTE>
<GLOBAL GL-COFFEY-SHOOT 0 <> BYTE>
<OBJECT TH-GUN (LOC CH-COFFEY) (DESC "gun") (FLAGS FL-TAKEABLE) (SYNONYM GUN
PISTOL) (OWNER CH-COFFEY) (SIZE 5) (ACTION RT-TH-GUN)>
<DEFINE-ROUTINE RT-TH-GUN>
<OBJECT TH-FBS-SUIT (LOC TH-DIVE-LOCKER) (DESC "FBS suit") (FLAGS FL-CLOTHING
FL-TAKEABLE) (SYNONYM SUIT) (ADJECTIVE FBS FLUID BREATHING SYSTEM) (SIZE 5) (
ACTION RT-TH-FBS-SUIT)>
<DEFINE-ROUTINE RT-TH-FBS-SUIT>
<OBJECT TH-DIVE-LOCKER (LOC RM-SUB-BAY) (DESC "dive locker") (FLAGS
FL-CONTAINER FL-LOCKED FL-OPENABLE FL-SEARCH FL-TRY-TAKE) (SYNONYM LOCKER) (
ADJECTIVE DIVE) (SIZE 5) (ACTION RT-TH-DIVE-LOCKER)>
<DEFINE-ROUTINE RT-TH-DIVE-LOCKER>
<OBJECT TH-ELECTRONIC-LOCK (LOC TH-DIVE-LOCKER) (DESC "lock") (SYNONYM LOCK) (
ADJECTIVE ELECTRONIC) (SIZE 5) (ACTION RT-TH-ELECTRONIC-LOCK)>
<DEFINE-ROUTINE RT-TH-ELECTRONIC-LOCK>
<OBJECT TH-DEVICE (LOC CH-HIPPY) (DESC "device") (SYNONYM DEVICE) (ADJECTIVE
REMOTE ELECTRONIC) (OWNER CH-HIPPY) (SIZE 5) (ACTION RT-TH-DEVICE)>
<DEFINE-ROUTINE RT-TH-DEVICE>
<SYNTAX $NITROGEN = V-$NITROGEN>
<DEFINE-ROUTINE V-$NITROGEN>

47
return2.zap Normal file
View File

@ -0,0 +1,47 @@
.FUNCT RT-TH-GUN:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-FBS-SUIT:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-DIVE-LOCKER:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?LIFT,V?PULL /?CCL5
EQUAL? PRSA,V?PUSH,V?MOVE,V?TAKE \FALSE
?CCL5: PRINTR " The dive locker is securely anchored to the floor."
.FUNCT RT-TH-ELECTRONIC-LOCK:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-DEVICE:ANY:0:1,CONTEXT
RFALSE
.FUNCT V-$NITROGEN:ANY:0:0
EQUAL? HERE,RM-GAS-MIX-ROOM \?CCL3
FSET? LG-CHAMBER-DOOR,FL-OPEN \?CCL6
PRINTI "[The compression chamber door must be closed.]
"
RETURN 2
?CCL6: ZERO? GL-WIRE-SEQUENCE \?CND9
RANDOM 4 >GL-WIRE-SEQUENCE
?CND9: PRINTI " Coffey begins to babble incoherently. You can hear him say, """
EQUAL? GL-WIRE-SEQUENCE,1 \?CCL13
PRINTR "Oxford rows great big wide yachts."""
?CCL13: EQUAL? GL-WIRE-SEQUENCE,2 \?CCL15
PRINTR "Yankees rarely win over Green Bay."""
?CCL15: EQUAL? GL-WIRE-SEQUENCE,3 \?CCL17
PRINTR "Get rid of your wet bananas."""
?CCL17: EQUAL? GL-WIRE-SEQUENCE,4 \FALSE
PRINTR "Go west, young boy, or rot."""
?CCL3: PRINTI "[You must be in the gas mix room to use $NITROGEN.]
"
RETURN 2
.ENDI

138
return2.zil Normal file
View File

@ -0,0 +1,138 @@
;"***************************************************************************"
; "game : Abyss"
; "file : RETURN2.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:44:38 $"
; "rev : $Revision: 1.2 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Second return to Deepcore"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<GLOBAL GL-RETURN2-DONE? <> <> BYTE>
<GLOBAL GL-COFFEY-SHOOT 0 <> BYTE>
<OBJECT TH-GUN
(LOC CH-COFFEY)
(DESC "gun")
(FLAGS FL-TAKEABLE)
(SYNONYM GUN PISTOL)
(OWNER CH-COFFEY)
(SIZE 5)
(ACTION RT-TH-GUN)
>
<ROUTINE RT-TH-GUN ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-FBS-SUIT
(LOC TH-DIVE-LOCKER)
(DESC "FBS suit")
(FLAGS FL-CLOTHING FL-TAKEABLE)
(SYNONYM SUIT)
(ADJECTIVE FBS FLUID BREATHING SYSTEM)
(SIZE 5)
(ACTION RT-TH-FBS-SUIT)
>
<ROUTINE RT-TH-FBS-SUIT ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-DIVE-LOCKER
(LOC RM-SUB-BAY)
(DESC "dive locker")
(FLAGS FL-CONTAINER FL-LOCKED FL-OPENABLE FL-SEARCH FL-TRY-TAKE)
(SYNONYM LOCKER)
(ADJECTIVE DIVE)
(SIZE 5)
(ACTION RT-TH-DIVE-LOCKER)
>
<ROUTINE RT-TH-DIVE-LOCKER ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? TAKE MOVE PUSH PULL LIFT>
<TELL " The dive locker is securely anchored to the floor." CR>
)
>
>
<OBJECT TH-ELECTRONIC-LOCK
(LOC TH-DIVE-LOCKER)
(DESC "lock")
(SYNONYM LOCK)
(ADJECTIVE ELECTRONIC)
(SIZE 5)
(ACTION RT-TH-ELECTRONIC-LOCK)
>
<ROUTINE RT-TH-ELECTRONIC-LOCK ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-DEVICE
(LOC CH-HIPPY)
(DESC "device")
(SYNONYM DEVICE)
(ADJECTIVE REMOTE ELECTRONIC)
(OWNER CH-HIPPY)
(SIZE 5)
(ACTION RT-TH-DEVICE)
>
<ROUTINE RT-TH-DEVICE ("OPT" (CONTEXT <>))
<RFALSE>
>
; "Cheat verb for causing narcosis for Coffey."
<SYNTAX $NITROGEN = V-$NITROGEN>
<ROUTINE V-$NITROGEN ()
<COND
(<MC-HERE? ,RM-GAS-MIX-ROOM>
<COND
(<FSET? ,LG-CHAMBER-DOOR ,FL-OPEN>
<TELL "[The compression chamber door must be closed.]|">
<RFATAL>
)
(T
<COND
(<ZERO? ,GL-WIRE-SEQUENCE>
<SETG GL-WIRE-SEQUENCE <RANDOM 4>>
)
>
<TELL
" Coffey begins to babble incoherently. You can hear him say, \""
>
<COND
(<EQUAL? ,GL-WIRE-SEQUENCE 1>
<TELL "Oxford rows great big wide yachts.\"" CR>
)
(<EQUAL? ,GL-WIRE-SEQUENCE 2>
<TELL "Yankees rarely win over Green Bay.\"" CR>
)
(<EQUAL? ,GL-WIRE-SEQUENCE 3>
<TELL "Get rid of your wet bananas.\"" CR>
)
(<EQUAL? ,GL-WIRE-SEQUENCE 4>
<TELL "Go west, young boy, or rot.\"" CR>
)
>
)
>
)
(T
<TELL "[You must be in the gas mix room to use $NITROGEN.]|">
<RFATAL>
)
>
>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

BIN
rov.lbm Normal file

Binary file not shown.

BIN
start Normal file

Binary file not shown.

76
stopper.zabstr Normal file
View File

@ -0,0 +1,76 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)) ()>
<ROOM RM-TRI-MIX-STORAGE (LOC ROOMS) (DESC "tri-mix storage") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM STORAGE) (ADJECTIVE TRI MIX TRI-MIX) (FORE TO
RM-COMPRESSOR-ROOM) (AFT TO RM-LADDER-D1) (GLOBAL LG-WALL RM-COMPRESSOR-ROOM
RM-LADDER-D1) (ACTION RT-RM-TRI-MIX-STORAGE)>
<CONSTANT K-HISS-MSG
" You hear a loud hissing coming from somewhere in the room.|">
<DEFINE-ROUTINE RT-RM-TRI-MIX-STORAGE>
<NEW-ADD-WORD "TANKS" NOUN <VOC "TANK"> ,PLURAL-FLAG>
<GLOBAL GL-NITROGEN-LEAK? <> <> BYTE>
<CONSTANT K-GAS-TANK-MSG
" It is a huge cylinder that looks like a giant capsule. It is supported
by four legs that are welded to a steel base to provide stability. The base
is raised up off the floor by about an inch.|
On the front of the tank is a k-valve that looks a little like a beer
tap.">
<OBJECT TH-NITROGEN-TANK (LOC RM-TRI-MIX-STORAGE) (DESC "nitrogen tank") (FLAGS
FL-NO-DESC FL-SURFACE FL-SEARCH) (SYNONYM TANK BASE) (ADJECTIVE NITROGEN
STORAGE) (GENERIC RT-GN-TANK) (ACTION RT-TH-NITROGEN-TANK)>
<DEFINE-ROUTINE RT-TH-NITROGEN-TANK>
<OBJECT TH-NIT-VALVE (LOC TH-NITROGEN-TANK) (DESC "nitrogen valve") (FLAGS
FL-CONTAINER FL-NO-DESC FL-ON FL-OPEN FL-SEARCH) (SYNONYM VALVE K-VALVE) (
ADJECTIVE NITROGEN K) (GENERIC RT-GN-VALVE) (ACTION RT-TH-NIT-VALVE)>
<DEFINE-ROUTINE RT-TH-NIT-VALVE>
<OBJECT TH-NIT-STOPPER (LOC RM-TRI-MIX-STORAGE) (DESC "nitrogen stopper") (
FLAGS FL-INVISIBLE FL-NO-DESC FL-TAKEABLE) (SYNONYM STOPPER) (ADJECTIVE
NITROGEN) (OWNER TH-NITROGEN-TANK) (GENERIC RT-GN-STOPPER) (ACTION
RT-TH-NIT-STOPPER)>
<DEFINE-ROUTINE RT-TH-NIT-STOPPER>
<DEFINE-ROUTINE RT-GET-STOPPER>
<GLOBAL GL-N-LOOP 0 <> BYTE>
<DEFINE-ROUTINE RT-I-NITROGEN-LEAK>
<DEFINE-ROUTINE RT-TH-NIT-BASE>
<OBJECT TH-OXYGEN-TANK (LOC RM-TRI-MIX-STORAGE) (DESC "oxygen tank") (FLAGS
FL-NO-DESC FL-SURFACE FL-SEARCH) (SYNONYM TANK BASE) (ADJECTIVE OXYGEN STORAGE)
(GENERIC RT-GN-TANK) (ACTION RT-TH-OXYGEN-TANK)>
<DEFINE-ROUTINE RT-TH-OXYGEN-TANK>
<OBJECT TH-OXY-VALVE (LOC TH-OXYGEN-TANK) (DESC "oxygen valve") (FLAGS
FL-CONTAINER FL-NO-DESC FL-OPEN FL-SEARCH) (SYNONYM VALVE K-VALVE) (ADJECTIVE
OXYGEN K) (GENERIC RT-GN-VALVE) (ACTION RT-TH-OXY-VALVE)>
<DEFINE-ROUTINE RT-TH-OXY-VALVE>
<OBJECT TH-OXY-STOPPER (LOC TH-OXY-VALVE) (DESC "oxygen stopper") (FLAGS
FL-NO-DESC FL-TRY-TAKE) (SYNONYM STOPPER) (ADJECTIVE OXYGEN) (GENERIC
RT-GN-STOPPER) (ACTION RT-TH-OXY-STOPPER)>
<DEFINE-ROUTINE RT-TH-OXY-STOPPER>
<DEFINE-ROUTINE RT-TH-OXY-BASE>
<OBJECT TH-HELIUM-TANK (LOC RM-TRI-MIX-STORAGE) (DESC "helium tank") (FLAGS
FL-NO-DESC FL-SURFACE FL-SEARCH) (SYNONYM TANK BASE) (ADJECTIVE HELIUM STORAGE)
(GENERIC RT-GN-TANK) (ACTION RT-TH-HELIUM-TANK)>
<DEFINE-ROUTINE RT-TH-HELIUM-TANK>
<OBJECT TH-HEL-VALVE (LOC TH-HELIUM-TANK) (DESC "helium valve") (FLAGS
FL-CONTAINER FL-NO-DESC FL-OPEN FL-SEARCH) (SYNONYM VALVE K-VALVE) (ADJECTIVE
HELIUM K) (GENERIC RT-GN-VALVE) (ACTION RT-TH-HEL-VALVE)>
<DEFINE-ROUTINE RT-TH-HEL-VALVE>
<OBJECT TH-HEL-STOPPER (LOC TH-HEL-VALVE) (DESC "helium stopper") (FLAGS
FL-NO-DESC FL-TRY-TAKE) (SYNONYM STOPPER) (ADJECTIVE HELIUM) (GENERIC
RT-GN-STOPPER) (ACTION RT-TH-HEL-STOPPER)>
<DEFINE-ROUTINE RT-TH-HEL-STOPPER>
<DEFINE-ROUTINE RT-TH-HEL-BASE>
<DEFINE-ROUTINE RT-GN-TANK>
<DEFINE-ROUTINE RT-GN-VALVE>
<DEFINE-ROUTINE RT-GN-STOPPER>
<ROOM RM-TOOL-ROOM (LOC ROOMS) (DESC "tool room") (FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM ROOM) (ADJECTIVE TOOL) (STARBOARD TO RM-DRILL-ROOM) (PORT TO
RM-TOOL-PUSHER-OFFICE) (GLOBAL LG-WALL RM-DRILL-ROOM RM-TOOL-PUSHER-OFFICE) (
ACTION RT-RM-TOOL-ROOM)>
<DEFINE-ROUTINE RT-RM-TOOL-ROOM>
<OBJECT TH-BIN (LOC RM-TOOL-ROOM) (DESC "bin") (SYNONYM BIN BINS) (FLAGS
FL-CONTAINER FL-NO-DESC FL-OPENABLE FL-SEARCH) (SIZE 5 CAPACITY 5) (ACTION
RT-TH-BIN)>
<DEFINE-ROUTINE RT-TH-BIN>
<OBJECT TH-MAGNET (LOC TH-BIN) (DESC "probe") (FLAGS FL-SURFACE FL-SEARCH
FL-TAKEABLE) (SYNONYM MAGNET PROBE) (ADJECTIVE MAGNETIC) (ACTION RT-TH-MAGNET)>
<DEFINE-ROUTINE RT-TH-MAGNET>

221
stopper.zap Normal file
View File

@ -0,0 +1,221 @@
.FUNCT RT-RM-TRI-MIX-STORAGE:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the tri-mix storage room. There are three huge steel tanks here, each welded to a sturdy base that sits about an inch off the floor. The tanks look like giant beer kegs and this similarity is heightened by the k-valves on the front that look like beer taps. Exits here lead fore and aft.
"
RFALSE
?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL8
ZERO? GL-NITROGEN-LEAK? /FALSE
PRINT K-HISS-MSG
RTRUE
?CCL8: EQUAL? CONTEXT,M-BEG \?CCL13
EQUAL? PRSA,V?LISTEN \FALSE
EQUAL? PRSO,ROOMS \FALSE
ZERO? GL-NITROGEN-LEAK? /FALSE
PRINT K-HISS-MSG
RTRUE
?CCL13: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-NITROGEN-TANK:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?LISTEN \?CCL5
ZERO? GL-NITROGEN-LEAK? /?CCL8
PRINT K-HISS-MSG
RTRUE
?CCL8: PRINTR "You don't hear anything unusual."
?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL10
CALL NOUN-USED?,TH-NITROGEN-TANK,W?BASE
ZERO? STACK /?CCL13
PRINTR "The base is raised up off the floor by about an inch."
?CCL13: PRINT K-GAS-TANK-MSG
ZERO? GL-NITROGEN-LEAK? /?CND14
PRINTR " The hissing sound seems to be coming from here."
?CND14: CRLF
RTRUE
?CCL10: EQUAL? PRSA,V?LOOK-UNDER \?CCL17
GETP TH-NIT-STOPPER,P?OWNER
EQUAL? STACK,TH-NITROGEN-TANK \FALSE
FSET TH-NIT-STOPPER,FL-SEEN
FCLEAR TH-NIT-STOPPER,FL-INVISIBLE
PRINTR " You lie down on the floor and peer under the base of the tank. Back out of reach you see the steel gleam of the stopper. It must have rolled there after working itself loose from the k-valve."
?CCL17: EQUAL? PRSA,V?REACH-UNDER \FALSE
GETP TH-NIT-STOPPER,P?OWNER
EQUAL? STACK,TH-NITROGEN-TANK \FALSE
EQUAL? PRSI,TH-MAGNET \?CCL28
CALL1 RT-GET-STOPPER
RSTACK
?CCL28: EQUAL? PRSI,FALSE-VALUE,ROOMS,TH-HANDS \FALSE
PRINTR " You can't quite reach the stopper."
.FUNCT RT-TH-NIT-VALVE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL5
EQUAL? PRSA,V?ATTACH,V?PUT-IN \FALSE
EQUAL? PRSO,TH-NIT-STOPPER \FALSE
MOVE TH-NIT-STOPPER,TH-NIT-VALVE
PRINTR " You screw the stopper into the k-valve. The valve is still hissing."
?CCL5: EQUAL? PRSA,V?LISTEN \?CCL13
IN? TH-NIT-STOPPER,TH-NIT-VALVE /?CCL16
PRINT K-HISS-MSG
RTRUE
?CCL16: PRINTR " You don't hear anything unusual."
?CCL13: EQUAL? PRSA,V?EXAMINE \?CCL18
PRINTI " The k-valve is a small device that controls the flow of the nitrogen."
IN? TH-NIT-STOPPER,TH-NIT-VALVE /?CND19
PRINTI " The valve's stopper seems to be missing"
ZERO? GL-NITROGEN-LEAK? /?CND19
PRINTI ", and the hissing sound is definitely coming from here"
?CND19: PRINTR "."
?CCL18: EQUAL? PRSA,V?OPEN \?CCL24
FSET? TH-NIT-VALVE,FL-ON \?CCL27
CALL2 RT-ALREADY-MSG,STR?93
RSTACK
?CCL27: IN? TH-NIT-STOPPER,TH-NIT-VALVE \?CCL29
PRINTR " You decide not to open the valve, since that might cause problems."
?CCL29: PRINTR " The stopper is missing, so the valve can't be opened."
?CCL24: EQUAL? PRSA,V?CLOSE \FALSE
FSET? TH-NIT-VALVE,FL-ON /?CCL34
CALL2 RT-ALREADY-MSG,STR?79
RSTACK
?CCL34: IN? TH-NIT-STOPPER,TH-NIT-VALVE \?CCL36
FCLEAR TH-NIT-VALVE,FL-ON
SET 'GL-NITROGEN-LEAK?,FALSE-VALUE
ICALL2 RT-DEQUEUE,RT-I-NITROGEN-LEAK
PRINTR " You close the k-valve. The hissing stops."
?CCL36: PRINTR " The stopper is missing, so the valve can't be closed."
.FUNCT RT-TH-NIT-STOPPER:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?TAKE \?CCL5
GETP TH-NIT-STOPPER,P?OWNER
EQUAL? STACK,TH-NITROGEN-TANK \FALSE
PRINTR " You can't quite reach the stopper."
?CCL5: EQUAL? PRSA,V?TAKE-WITH \FALSE
GETP TH-NIT-STOPPER,P?OWNER
EQUAL? STACK,TH-NITROGEN-TANK \FALSE
EQUAL? PRSI,TH-MAGNET \FALSE
CALL1 RT-GET-STOPPER
RSTACK
.FUNCT RT-GET-STOPPER:ANY:0:0
MOVE TH-NIT-STOPPER,TH-MAGNET
PUTP TH-NIT-STOPPER,P?OWNER,FALSE-VALUE
PRINTR " You slide the magnet under the base and hear a satisfying 'click.' When you pull it out again, the stopper is stuck to the end."
.FUNCT RT-I-NITROGEN-LEAK:ANY:0:0
SET 'GL-NITROGEN-LEAK?,TRUE-VALUE
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-NITROGEN-LEAK,STACK
LESS? GL-NITROGEN-QTY,K-NIT-HIGH-1 \?CCL4
SET 'GL-NITROGEN-QTY,K-NIT-HIGH-1
JUMP ?CND2
?CCL4: ADD GL-NITROGEN-QTY,47 >GL-NITROGEN-QTY
?CND2: CALL1 RT-NITROGEN-MSG
RSTACK
.FUNCT RT-TH-NIT-BASE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-OXYGEN-TANK:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINT K-GAS-TANK-MSG
CRLF
RTRUE
.FUNCT RT-TH-OXY-VALVE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-OXY-STOPPER:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-OXY-BASE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-HELIUM-TANK:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINT K-GAS-TANK-MSG
CRLF
RTRUE
.FUNCT RT-TH-HEL-VALVE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-HEL-STOPPER:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-HEL-BASE:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-GN-TANK:ANY:2:2,TBL,FINDER,PTR,N
ADD TBL,8 >PTR
GET TBL,1 >N
INTBL? TH-NITROGEN-TANK,PTR,N \FALSE
PRINTI "[the nitrogen tank]
"
RETURN TH-NITROGEN-TANK
.FUNCT RT-GN-VALVE:ANY:2:2,TBL,FINDER,PTR,N
ADD TBL,8 >PTR
GET TBL,1 >N
INTBL? TH-NIT-VALVE,PTR,N \FALSE
PRINTI "[the nitrogen k-valve]
"
RETURN TH-NIT-VALVE
.FUNCT RT-GN-STOPPER:ANY:2:2,TBL,FINDER,PTR,N
ADD TBL,8 >PTR
GET TBL,1 >N
INTBL? TH-NIT-STOPPER,PTR,N \FALSE
PRINTI "[the nitrogen stopper]
"
RETURN TH-NIT-STOPPER
.FUNCT RT-RM-TOOL-ROOM:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTI " You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: PRINTI " the tool room, which lies between your office on the port side and the drill room to starboard. Bins here contain the various specialized tools of your trade.
"
RFALSE
?CCL3: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-BIN:ANY:0:1,CONTEXT
RFALSE
.FUNCT RT-TH-MAGNET:ANY:0:1,CONTEXT
RFALSE
.ENDI

662
stopper.zil Normal file
View File

@ -0,0 +1,662 @@
;"***************************************************************************"
; "game : Abyss"
; "file : STOPPER.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:45:06 $"
; "rev : $Revision: 1.7 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Sub bay"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
;"---------------------------------------------------------------------------"
; "RM-TRI-MIX-STORAGE"
;"---------------------------------------------------------------------------"
; "Duane - we need generic routines in this room to always pick the
nitrogen tank, nitrogen base, nitrogen k-valve, and nitrogen stopper
when the player makes an ambiguous reference."
<ROOM RM-TRI-MIX-STORAGE
(LOC ROOMS)
(DESC "tri-mix storage")
(FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM STORAGE)
(ADJECTIVE TRI MIX TRI-MIX)
(FORE TO RM-COMPRESSOR-ROOM)
(AFT TO RM-LADDER-D1)
(GLOBAL LG-WALL RM-COMPRESSOR-ROOM RM-LADDER-D1)
(ACTION RT-RM-TRI-MIX-STORAGE)
>
<CONSTANT K-HISS-MSG
" You hear a loud hissing coming from somewhere in the room.|">
<ROUTINE RT-RM-TRI-MIX-STORAGE ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL " You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are in">
)
(T
<TELL "enter">
)
>
<TELL
" the tri-mix storage room. There are three huge steel tanks here, each
welded to a sturdy base that sits about an inch off the floor. The tanks
look like giant beer kegs and this similarity is heightened by the k-valves
on the front that look like beer taps. Exits here lead fore and aft.|"
>
<RFALSE>
)
(<MC-CONTEXT? ,M-ENTERED>
<COND
(,GL-NITROGEN-LEAK?
<TELL ,K-HISS-MSG>
)
>
)
(<MC-CONTEXT? ,M-BEG>
<COND
(<AND <VERB? LISTEN>
<MC-PRSO? ,ROOMS>
,GL-NITROGEN-LEAK?
>
<TELL ,K-HISS-MSG>
)
>
)
(.CONTEXT
<RFALSE>
)
>
>
<NEW-ADD-WORD "TANKS" NOUN <VOC "TANK"> ,PLURAL-FLAG>
<GLOBAL GL-NITROGEN-LEAK? <> <> BYTE>
<CONSTANT K-GAS-TANK-MSG
" It is a huge cylinder that looks like a giant capsule. It is supported
by four legs that are welded to a steel base to provide stability. The base
is raised up off the floor by about an inch.|
On the front of the tank is a k-valve that looks a little like a beer
tap.">
;"---------------------------------------------------------------------------"
; "NITROGEN STUFF"
;"---------------------------------------------------------------------------"
<OBJECT TH-NITROGEN-TANK
(LOC RM-TRI-MIX-STORAGE)
(DESC "nitrogen tank")
(FLAGS FL-NO-DESC FL-SURFACE FL-SEARCH)
(SYNONYM TANK BASE)
(ADJECTIVE NITROGEN STORAGE)
(GENERIC RT-GN-TANK)
(ACTION RT-TH-NITROGEN-TANK)
>
<ROUTINE RT-TH-NITROGEN-TANK ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? LISTEN>
<COND
(,GL-NITROGEN-LEAK?
<TELL ,K-HISS-MSG>
)
(T
<TELL "You don't hear anything unusual." CR>
)
>
)
(<VERB? EXAMINE>
<COND
(<NOUN-USED? ,TH-NITROGEN-TANK ,W?BASE>
<TELL "The base is raised up off the floor by about an inch." CR>
)
(T
<TELL ,K-GAS-TANK-MSG>
<COND
(,GL-NITROGEN-LEAK?
<TELL " The hissing sound seems to be coming from here.">
)
>
<CRLF>
)
>
)
(<VERB? LOOK-UNDER>
<COND
(<EQUAL? <GETP ,TH-NIT-STOPPER ,P?OWNER> ,TH-NITROGEN-TANK>
<FSET ,TH-NIT-STOPPER ,FL-SEEN>
<FCLEAR ,TH-NIT-STOPPER ,FL-INVISIBLE>
<TELL
" You lie down on the floor and peer under the base of the tank. Back out of
reach you see the steel gleam of the stopper. It must have rolled there after
working itself loose from the k-valve." CR
>
)
>
)
(<VERB? REACH-UNDER>
<COND
(<EQUAL? <GETP ,TH-NIT-STOPPER ,P?OWNER> ,TH-NITROGEN-TANK>
<COND
(<MC-PRSI? ,TH-MAGNET>
<RT-GET-STOPPER>
)
(<MC-PRSI? <> ,ROOMS ,TH-HANDS>
<TELL " You can't quite reach the stopper." CR>
)
>
)
>
)
>
>
<OBJECT TH-NIT-VALVE
(LOC TH-NITROGEN-TANK)
(DESC "nitrogen valve")
(FLAGS FL-CONTAINER FL-NO-DESC FL-ON FL-OPEN FL-SEARCH)
(SYNONYM VALVE K-VALVE)
(ADJECTIVE NITROGEN K)
(GENERIC RT-GN-VALVE)
(ACTION RT-TH-NIT-VALVE)
>
; "TH-NIT-VALVE flags:"
; " FL-ON = Valve is open. (Can't use FL-OPEN because it's a container.)"
<ROUTINE RT-TH-NIT-VALVE ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(,NOW-PRSI
<COND
(<VERB? PUT-IN ATTACH>
<COND
(<MC-PRSO? ,TH-NIT-STOPPER>
<MOVE ,TH-NIT-STOPPER ,TH-NIT-VALVE>
<TELL
" You screw the stopper into the k-valve. The valve is still hissing." CR
>
)
>
)
>
)
(<VERB? LISTEN>
<COND
(<NOT <IN? ,TH-NIT-STOPPER ,TH-NIT-VALVE>>
<TELL ,K-HISS-MSG>
)
(T
<TELL " You don't hear anything unusual." CR>
)
>
)
(<VERB? EXAMINE>
<TELL
" The k-valve is a small device that controls the flow of the nitrogen."
>
<COND
(<NOT <IN? ,TH-NIT-STOPPER ,TH-NIT-VALVE>>
<TELL " The valve's stopper seems to be missing">
<COND
(,GL-NITROGEN-LEAK?
<TELL
", and the hissing sound is definitely coming from here"
>
)
>
)
>
<TELL "." CR>
)
(<VERB? OPEN>
<COND
(<FSET? ,TH-NIT-VALVE ,FL-ON>
<RT-ALREADY-MSG "open">
)
(<IN? ,TH-NIT-STOPPER ,TH-NIT-VALVE>
<TELL
" You decide not to open the valve, since that might cause problems." CR
>
)
(T
<TELL " The stopper is missing, so the valve can't be opened." CR>
)
>
)
(<VERB? CLOSE>
<COND
(<NOT <FSET? ,TH-NIT-VALVE ,FL-ON>>
<RT-ALREADY-MSG "closed">
)
(<IN? ,TH-NIT-STOPPER ,TH-NIT-VALVE>
<FCLEAR ,TH-NIT-VALVE ,FL-ON>
<SETG GL-NITROGEN-LEAK? <>>
<RT-DEQUEUE ,RT-I-NITROGEN-LEAK>
<TELL " You close the k-valve. The hissing stops." CR>
)
(T
<TELL " The stopper is missing, so the valve can't be closed." CR>
)
>
)
>
>
<OBJECT TH-NIT-STOPPER
(LOC RM-TRI-MIX-STORAGE)
(DESC "nitrogen stopper")
(FLAGS FL-INVISIBLE FL-NO-DESC FL-TAKEABLE)
(SYNONYM STOPPER)
(ADJECTIVE NITROGEN)
(OWNER TH-NITROGEN-TANK) ;"Under nitrogen tank"
(GENERIC RT-GN-STOPPER)
(ACTION RT-TH-NIT-STOPPER)
>
; "Duane: We need a place to put the stopper when it is under the base
of the Nitrogen Tank. I'll leave it to you to figure that out."
<ROUTINE RT-TH-NIT-STOPPER ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
; (<AND <NOT <FSET? ,TH-NIT-STOPPER ,FL-SEEN>>
<NOT <EVERYWHERE-VERB? <COND (,NOW-PRSI 2) (T 1)>>>
>
<NP-CANT-SEE>
)
(<VERB? TAKE>
<COND
(<EQUAL? <GETP ,TH-NIT-STOPPER ,P?OWNER> ,TH-NITROGEN-TANK>
<TELL " You can't quite reach the stopper." CR>
)
>
)
(<VERB? TAKE-WITH>
<COND
(<EQUAL? <GETP ,TH-NIT-STOPPER ,P?OWNER> ,TH-NITROGEN-TANK>
<COND
(<MC-PRSI? ,TH-MAGNET>
<RT-GET-STOPPER>
)
>
)
>
)
>
>
<ROUTINE RT-GET-STOPPER ()
<MOVE ,TH-NIT-STOPPER ,TH-MAGNET>
<PUTP ,TH-NIT-STOPPER ,P?OWNER <>>
<TELL
" You slide the magnet under the base and hear a satisfying 'click.' When
you pull it out again, the stopper is stuck to the end." CR
>
>
<GLOBAL GL-N-LOOP 0 <> BYTE>
<ROUTINE RT-I-NITROGEN-LEAK ()
<COND
(T ;<NOT <IGRTR? GL-N-LOOP 82>>
<SETG GL-NITROGEN-LEAK? T>
<RT-QUEUE ,RT-I-NITROGEN-LEAK <+ ,GL-MOVES 1>>
<COND
(<L? ,GL-NITROGEN-QTY ,K-NIT-HIGH-1>
<SETG GL-NITROGEN-QTY ,K-NIT-HIGH-1>
)
(T
<SETG GL-NITROGEN-QTY <+ ,GL-NITROGEN-QTY 47>>
)
>
<RT-NITROGEN-MSG>
)
; (T
<SETG GL-NITROGEN-QTY ,K-NIT-NOM>
<SETG GL-NITROGEN-LEAK? <>>
<RFALSE>
)
>
>
;<OBJECT TH-NIT-BASE
(LOC RM-TRI-MIX-STORAGE)
(DESC "nitrogen tank base")
(SYNONYM BASE)
(ADJECTIVE NITROGEN TANK)
(ACTION RT-TH-NIT-BASE)
>
<ROUTINE RT-TH-NIT-BASE ("OPT" (CONTEXT <>))
<RFALSE>
>
;"---------------------------------------------------------------------------"
; "TH-OXYGEN-TANK"
;"---------------------------------------------------------------------------"
<OBJECT TH-OXYGEN-TANK
(LOC RM-TRI-MIX-STORAGE)
(DESC "oxygen tank")
(FLAGS FL-NO-DESC FL-SURFACE FL-SEARCH)
(SYNONYM TANK BASE)
(ADJECTIVE OXYGEN STORAGE)
(GENERIC RT-GN-TANK)
(ACTION RT-TH-OXYGEN-TANK)
>
<ROUTINE RT-TH-OXYGEN-TANK ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL ,K-GAS-TANK-MSG CR>
)
>
>
<OBJECT TH-OXY-VALVE
(LOC TH-OXYGEN-TANK)
(DESC "oxygen valve")
(FLAGS FL-CONTAINER FL-NO-DESC FL-OPEN FL-SEARCH)
(SYNONYM VALVE K-VALVE)
(ADJECTIVE OXYGEN K)
(GENERIC RT-GN-VALVE)
(ACTION RT-TH-OXY-VALVE)
>
<ROUTINE RT-TH-OXY-VALVE ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-OXY-STOPPER
(LOC TH-OXY-VALVE)
(DESC "oxygen stopper")
(FLAGS FL-NO-DESC FL-TRY-TAKE)
(SYNONYM STOPPER)
(ADJECTIVE OXYGEN)
(GENERIC RT-GN-STOPPER)
(ACTION RT-TH-OXY-STOPPER)
>
<ROUTINE RT-TH-OXY-STOPPER ("OPT" (CONTEXT <>))
<RFALSE>
>
;<OBJECT TH-OXY-BASE
(LOC RM-TRI-MIX-STORAGE)
(DESC "oxygen tank base")
(SYNONYM BASE)
(ADJECTIVE OXYGEN TANK)
(ACTION RT-TH-OXY-BASE)
>
<ROUTINE RT-TH-OXY-BASE ("OPT" (CONTEXT <>))
<RFALSE>
>
;"---------------------------------------------------------------------------"
; "TH-HELIUM-TANK"
;"---------------------------------------------------------------------------"
<OBJECT TH-HELIUM-TANK
(LOC RM-TRI-MIX-STORAGE)
(DESC "helium tank")
(FLAGS FL-NO-DESC FL-SURFACE FL-SEARCH)
(SYNONYM TANK BASE)
(ADJECTIVE HELIUM STORAGE)
(GENERIC RT-GN-TANK)
(ACTION RT-TH-HELIUM-TANK)
>
<ROUTINE RT-TH-HELIUM-TANK ("OPT" (CONTEXT <>))
<COND
(.CONTEXT
<RFALSE>
)
(<VERB? EXAMINE>
<TELL ,K-GAS-TANK-MSG CR>
)
>
>
<OBJECT TH-HEL-VALVE
(LOC TH-HELIUM-TANK)
(DESC "helium valve")
(FLAGS FL-CONTAINER FL-NO-DESC FL-OPEN FL-SEARCH)
(SYNONYM VALVE K-VALVE)
(ADJECTIVE HELIUM K)
(GENERIC RT-GN-VALVE)
(ACTION RT-TH-HEL-VALVE)
>
<ROUTINE RT-TH-HEL-VALVE ("OPT" (CONTEXT <>))
<RFALSE>
>
<OBJECT TH-HEL-STOPPER
(LOC TH-HEL-VALVE)
(DESC "helium stopper")
(FLAGS FL-NO-DESC FL-TRY-TAKE)
(SYNONYM STOPPER)
(ADJECTIVE HELIUM)
(GENERIC RT-GN-STOPPER)
(ACTION RT-TH-HEL-STOPPER)
>
<ROUTINE RT-TH-HEL-STOPPER ("OPT" (CONTEXT <>))
<RFALSE>
>
;<OBJECT TH-HEL-BASE
(LOC RM-TRI-MIX-STORAGE)
(DESC "helium tank base")
(SYNONYM BASE)
(ADJECTIVE HELIUM TANK)
(ACTION RT-TH-HEL-BASE)
>
<ROUTINE RT-TH-HEL-BASE ("OPT" (CONTEXT <>))
<RFALSE>
>
<ROUTINE RT-GN-TANK (TBL FINDER "AUX" PTR N)
<SET PTR <REST-TO-SLOT .TBL FIND-RES-OBJ1>>
<SET N <FIND-RES-COUNT .TBL>>
<COND
(<INTBL? ,TH-NITROGEN-TANK .PTR .N>
<TELL "[the nitrogen tank]|">
<RETURN ,TH-NITROGEN-TANK>
)
>
>
<ROUTINE RT-GN-VALVE (TBL FINDER "AUX" PTR N)
<SET PTR <REST-TO-SLOT .TBL FIND-RES-OBJ1>>
<SET N <FIND-RES-COUNT .TBL>>
<COND
(<INTBL? ,TH-NIT-VALVE .PTR .N>
<TELL "[the nitrogen k-valve]|">
<RETURN ,TH-NIT-VALVE>
)
>
>
<ROUTINE RT-GN-STOPPER (TBL FINDER "AUX" PTR N)
<SET PTR <REST-TO-SLOT .TBL FIND-RES-OBJ1>>
<SET N <FIND-RES-COUNT .TBL>>
<COND
(<INTBL? ,TH-NIT-STOPPER .PTR .N>
<TELL "[the nitrogen stopper]|">
<RETURN ,TH-NIT-STOPPER>
)
>
>
;"---------------------------------------------------------------------------"
; "RM-TOOL-ROOM"
;"---------------------------------------------------------------------------"
<ROOM RM-TOOL-ROOM
(LOC ROOMS)
(DESC "tool room")
(FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM ROOM)
(ADJECTIVE TOOL)
(STARBOARD TO RM-DRILL-ROOM)
(PORT TO RM-TOOL-PUSHER-OFFICE)
(GLOBAL LG-WALL RM-DRILL-ROOM RM-TOOL-PUSHER-OFFICE)
(ACTION RT-RM-TOOL-ROOM)
>
<ROUTINE RT-RM-TOOL-ROOM ("OPTIONAL" (CONTEXT <>))
<COND
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
<TELL " You ">
<COND
(<MC-CONTEXT? ,M-LOOK>
<TELL "are in">
)
(T
<TELL "enter">
)
>
<TELL
" the tool room, which lies between your office on the port side and the
drill room to starboard. Bins here contain the various specialized tools
of your trade.|"
>
<RFALSE>
)
(.CONTEXT
<RFALSE>
)
>
>
;"---------------------------------------------------------------------------"
; "TH-BIN"
;"---------------------------------------------------------------------------"
<OBJECT TH-BIN
(LOC RM-TOOL-ROOM)
(DESC "bin")
(SYNONYM BIN BINS)
(FLAGS FL-CONTAINER FL-NO-DESC FL-OPENABLE FL-SEARCH)
(SIZE 5 CAPACITY 5)
(ACTION RT-TH-BIN)
>
<ROUTINE RT-TH-BIN ("OPT" (CONTEXT <>))
<RFALSE>
>
;"---------------------------------------------------------------------------"
; "TH-MAGNET"
;"---------------------------------------------------------------------------"
<OBJECT TH-MAGNET
(LOC TH-BIN)
(DESC "probe")
(FLAGS FL-SURFACE FL-SEARCH FL-TAKEABLE)
(SYNONYM MAGNET PROBE)
(ADJECTIVE MAGNETIC)
(ACTION RT-TH-MAGNET)
>
<ROUTINE RT-TH-MAGNET ("OPT" (CONTEXT <>))
<RFALSE>
>
;"---------------------------------------------------------------------------"
; "DELETED RUSSIAN STUFF"
;"---------------------------------------------------------------------------"
;<OBJECT CH-RUSSIAN
(LOC RM-TRI-MIX-STORAGE)
(DESC "Russian")
(FLAGS FL-ALIVE FL-OPEN FL-PERSON FL-SEARCH)
(SYNONYM RUSSIAN INTRUDER SABOTEUR DIVER BOY MAN PERSON)
(ADJECTIVE RUSSIAN NAVY)
>
;<GLOBAL GL-RUSSIAN-CNT 0 <> BYTE>
;<ROUTINE RT-I-RUSSIAN ("AUX" L (RM <>))
<SET L <LOC ,CH-RUSSIAN>>
<COND
(<EQUAL? .L ,RM-LADDER-A2>
<SET RM ,RM-CORRIDOR>
)
(<EQUAL? .L ,RM-CORRIDOR>
<SET RM ,RM-SUB-BAY>
<SETG GL-RUSSIAN-CNT 0>
)
(<EQUAL? .L ,RM-SUB-BAY>
<COND
(<IGRTR? GL-RUSSIAN-CNT 1>
<REMOVE ,CH-RUSSIAN>
<COND
(<MC-HERE? .L>
)
>
)
>
)
(<EQUAL? .L ,RM-LADDER-A1 ,RM-LADDER-A3>
<SET RM ,RM-LADDER-A2>
)
(<EQUAL? .L ,RM-LADDER-D1 ,RM-LADDER-D3>
<SET RM ,RM-LADDER-D2>
)
(T
<SET RM <RT-FIND-ROOM ,P?FORE .L>>
)
>
<COND
(.RM
<RT-QUEUE ,RT-I-RUSSIAN <+ ,GL-MOVES 1>>
<COND
(<SET P <FIND-FLAG .RM ,FL-PERSON>>
<COND
(<EQUAL? .P ,CH-PLAYER>
<TELL
"Suddenly, a stranger in a black dry-suit comes into the room. Before you can
react, he blurts out an exclamation in what sounds like Russian, and then he
whirls and runs back the way he came. As he turns, you notice the glint of a
shiny metal object in his hand." CR
>
)
(T
; <TELL
>
)
>
)
(T
<MOVE ,CH-RUSSIAN .RM>
<RFALSE>
)
>
)
>
>

327
sub-bay.zabstr Normal file
View File

@ -0,0 +1,327 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)) ()>
<ROOM RM-SUB-BAY (LOC ROOMS) (DESC "sub bay") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM BAY) (ADJECTIVE SUB) (DOWN TO RM-UNDER-MOONPOOL) (FORE TO RM-CORRIDOR)
(AFT TO RM-GAS-MIX-ROOM) (GLOBAL LG-WALL RM-UNDER-MOONPOOL RM-CORRIDOR
RM-GAS-MIX-ROOM) (ACTION RT-RM-SUB-BAY)>
<DEFINE-ROUTINE RT-RM-SUB-BAY>
<OBJECT TH-MOON-POOL (LOC RM-SUB-BAY) (DESC "moon pool") (FLAGS FL-CONTAINER
FL-OPEN FL-SEARCH FL-WATER) (SYNONYM POOL) (ADJECTIVE MOON) (ACTION
RT-TH-MOON-POOL)>
<DEFINE-ROUTINE RT-TH-MOON-POOL>
<OBJECT TH-FIRE (DESC "fire") (FLAGS FL-CONTAINER FL-OPEN FL-SEARCH) (SYNONYM
FIRE) (ACTION RT-TH-FIRE)>
<DEFINE-ROUTINE RT-TH-FIRE>
<DEFINE-ROUTINE RT-I-FIRE-1>
<DEFINE-ROUTINE RT-I-FIRE-2>
<OBJECT TH-WATER-HOSE (LOC RM-SUB-BAY) (DESC "hose") (FLAGS FL-CONTAINER
FL-OPEN FL-SEARCH FL-TAKEABLE) (SYNONYM HOSE) (ADJECTIVE FRESH WATER) (ACTION
RT-TH-WATER-HOSE)>
<DEFINE-ROUTINE RT-TH-WATER-HOSE>
<OBJECT TH-NOZZLE (LOC TH-WATER-HOSE) (DESC "nozzle") (SYNONYM NOZZLE) (
ADJECTIVE HOSE) (ACTION RT-TH-NOZZLE)>
<DEFINE-ROUTINE RT-TH-NOZZLE>
<OBJECT TH-OXYGEN-CYLINDER (LOC RM-SUB-BAY) (DESC "oxygen cylinder") (FLAGS
FL-NO-DESC) (SYNONYM CYLINDER) (ADJECTIVE OXYGEN) (ACTION RT-TH-OXYGEN-CYLINDER
)>
<DEFINE-ROUTINE RT-TH-OXYGEN-CYLINDER>
<OBJECT CH-LINDSEY (LOC RM-COMMAND-MODULE) (DESC "Lindsey") (FLAGS FL-ALIVE
FL-FEMALE FL-NO-ARTICLE FL-OPEN FL-PERSON FL-SEARCH) (SYNONYM LINDSEY WOMAN
PERSON)>
<OBJECT CH-COFFEY (LOC RM-CORRIDOR) (DESC "Coffey") (FLAGS FL-ALIVE
FL-NO-ARTICLE FL-NO-DESC FL-OPEN FL-PERSON FL-SEARCH) (SYNONYM COFFEY DIVER MAN
PERSON) (ADJECTIVE NAVY) (ACTION RT-CH-COFFEY)>
<DEFINE-ROUTINE RT-CH-COFFEY>
<OBJECT CH-ONE-NIGHT (LOC RM-CORRIDOR) (DESC "One-night") (FLAGS FL-ALIVE
FL-FEMALE FL-NO-ARTICLE FL-NO-DESC FL-OPEN FL-PERSON FL-SEARCH) (SYNONYM NIGHT
ONE-NIGHT WOMAN PERSON) (ADJECTIVE ONE) (ACTION RT-CH-ONE-NIGHT)>
<DEFINE-ROUTINE RT-CH-ONE-NIGHT>
<OBJECT CH-HIPPY (LOC RM-CORRIDOR) (DESC "Hippy") (FLAGS FL-ALIVE FL-NO-ARTICLE
FL-NO-DESC FL-OPEN FL-PERSON FL-SEARCH) (SYNONYM HIPPY MAN PERSON)>
<OBJECT CH-CATFISH (LOC RM-COMMAND-MODULE) (DESC "Catfish") (FLAGS FL-ALIVE
FL-NO-ARTICLE FL-OPEN FL-PERSON FL-SEARCH) (SYNONYM CATFISH DEVRIES FISH MAN
PERSON) (ADJECTIVE CAT)>
<OBJECT CH-SEALS (LOC GENERIC-OBJECTS) (DESC "SEALs") (SYNONYM WILLHITE
SCHOENICK MONK SEAL SEALS DIVER DIVERS MAN MEN PERSON PEOPLE) (ADJECTIVE NAVY)>
<NEW-ADD-WORD "PEOPLE" NOUN <VOC "PERSON"> ,PLURAL-FLAG>
<NEW-ADD-WORD "WOMEN" NOUN <VOC "WOMAN"> ,PLURAL-FLAG>
<NEW-ADD-WORD "MEN" NOUN <VOC "MAN"> ,PLURAL-FLAG>
<OBJECT TH-DRY-SUIT (LOC TH-BUD-GEAR-LOCKER) (DESC "dry suit") (FLAGS
FL-CLOTHING FL-CONTAINER FL-OPEN FL-SEARCH FL-TAKEABLE) (SYNONYM SUIT) (
ADJECTIVE DRY) (SIZE 5) (ACTION RT-TH-DRY-SUIT)>
<DEFINE-ROUTINE RT-TH-DRY-SUIT>
<OBJECT TH-FACEPLATE (LOC TH-DRY-SUIT) (DESC "faceplate") (FLAGS FL-NO-DESC
FL-OPEN FL-OPENABLE FL-TRANSPARENT) (SYNONYM FACEPLATE PLATE) (ADJECTIVE FACE)
(ACTION RT-TH-FACEPLATE)>
<DEFINE-ROUTINE RT-TH-FACEPLATE>
<OBJECT TH-HELMET (LOC TH-DRY-SUIT) (DESC "helmet") (FLAGS FL-CONTAINER
FL-NO-DESC FL-OPEN FL-SEARCH) (SYNONYM HELMET) (ADJECTIVE DRY SUIT) (ACTION
RT-TH-HELMET)>
<DEFINE-ROUTINE RT-TH-HELMET>
<OBJECT TH-HOOK-1 (LOC RM-SUB-BAY) (DESC "hook") (FLAGS FL-SURFACE) (SYNONYM
HOOK) (ACTION RT-TH-HOOK-1)>
<DEFINE-ROUTINE RT-TH-HOOK-1>
<OBJECT TH-LIFT-BAG (LOC TH-HOOK-1) (DESC "lift bag") (FLAGS FL-SURFACE
FL-SEARCH FL-TAKEABLE) (SYNONYM BAG) (ADJECTIVE LIFT) (SIZE 5) (ACTION
RT-TH-LIFT-BAG)>
<GLOBAL GL-LIFT-OBJ <>>
<DEFINE-ROUTINE RT-TH-LIFT-BAG>
<OBJECT TH-CO2-CANNISTER (LOC TH-LIFT-BAG) (DESC "CO2 cannister") (FLAGS
FL-NO-DESC FL-SURFACE FL-SEARCH) (SYNONYM CANNISTER) (ADJECTIVE CO2 CARBON
DIOXIDE) (SIZE 5) (ACTION RT-TH-CO2-CANNISTER)>
<DEFINE-ROUTINE RT-TH-CO2-CANNISTER>
<OBJECT TH-RED-BUTTON (LOC TH-CO2-CANNISTER) (DESC "red button") (FLAGS
FL-NO-DESC) (SYNONYM BUTTON) (ADJECTIVE RED) (ACTION RT-TH-RED-BUTTON)>
<DEFINE-ROUTINE RT-TH-RED-BUTTON>
<ROOM RM-COMPRESSION-CHAMBER (LOC ROOMS) (DESC "compression chamber") (MENU
"chamber") (FLAGS FL-INDOORS FL-LIGHTED) (SYNONYM CHAMBER) (ADJECTIVE
COMPRESSION) (FORE TO RM-GAS-MIX-ROOM IF LG-CHAMBER-DOOR IS OPEN) (UP TO
RM-CAB-THREE IF LG-CHAMBER-HATCH IS OPEN) (GLOBAL LG-WALL RM-GAS-MIX-ROOM
LG-CHAMBER-DOOR LG-CHAMBER-HATCH) (ADJACENT <TABLE (BYTE PURE) RM-GAS-MIX-ROOM
T>) (ACTION RT-RM-COMPRESSION-CHAMBER)>
<DEFINE-ROUTINE RT-RM-COMPRESSION-CHAMBER>
<OBJECT LG-CHAMBER-HATCH (LOC LOCAL-GLOBALS) (DESC "compression chamber hatch")
(MENU "hatch") (FLAGS FL-DOOR FL-OPENABLE) (SYNONYM HATCH) (ADJECTIVE
COMPRESSION CHAMBER) (ACTION RT-LG-CHAMBER-HATCH)>
<DEFINE-ROUTINE RT-LG-CHAMBER-HATCH>
<DEFINE-ROUTINE RT-I-LEAVE-1>
<DEFINE-ROUTINE RT-I-LEAVE-2>
<DEFINE-ROUTINE RT-I-LEAVE-3>
<DEFINE-ROUTINE RT-I-LEAVE-4>
<DEFINE-ROUTINE RT-I-RETURN-1>
<DEFINE-ROUTINE RT-I-RETURN-2>
<DEFINE-ROUTINE RT-I-RETURN-3>
<DEFINE-ROUTINE RT-I-RETURN-4>
<CONSTANT K-UFO-MSG
"\"I swear it's all true, Bud. I saw...something. It was right in front of us
and then it dived into the trench, pulling us along after it. Then we hit the
side of the trench and I blacked out for a second. When I came to, Flatbed was
spinning out of control into the trench. None of the controls worked. I did
the only thing I could do. I bailed out. But I didn't kill those men...\" her
voice trails off, \"...there was nothing I could do...\"|">
<DEFINE-ROUTINE RT-I-UFO-MESSAGE>
<ROOM RM-CAB-THREE (LOC ROOMS) (DESC "Cab three") (FLAGS FL-CONTAINER
FL-LIGHTED FL-NO-ARTICLE FL-OPEN FL-SEARCH FL-VEHICLE) (SYNONYM CAB THREE) (
ADJECTIVE CAB) (DOWN PER RT-OUT-CAB) (OUT PER RT-OUT-CAB) (ACTION
RT-RM-CAB-THREE)>
<GLOBAL GL-CAB-DOCKED? <> <> BYTE>
<DEFINE-ROUTINE RT-RM-CAB-THREE>
<DEFINE-ROUTINE RT-OUT-CAB>
<DEFINE-ROUTINE RT-I-CAB-FIXED>
<OBJECT TH-CAB-HOOKAH (LOC RM-CAB-THREE) (DESC "hookah") (SYNONYM HOOKAH) (
ACTION RT-TH-CAB-HOOKAH)>
<DEFINE-ROUTINE RT-TH-CAB-HOOKAH>
<ROOM RM-GAS-MIX-ROOM (LOC ROOMS) (DESC "gas mix room") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM ROOM) (ADJECTIVE GAS MIX) (FORE TO RM-SUB-BAY) (AFT TO
RM-COMPRESSION-CHAMBER IF LG-CHAMBER-DOOR IS OPEN) (GLOBAL LG-WALL RM-SUB-BAY
RM-COMPRESSION-CHAMBER LG-CHAMBER-DOOR) (ADJACENT <TABLE (BYTE PURE)
RM-COMPRESSION-CHAMBER T>) (ACTION RT-RM-GAS-MIX-ROOM)>
<DEFINE-ROUTINE RT-RM-GAS-MIX-ROOM>
<OBJECT LG-CHAMBER-DOOR (LOC LOCAL-GLOBALS) (DESC "compression chamber door") (
MENU "door") (FLAGS FL-DOOR FL-OPEN FL-OPENABLE) (SYNONYM DOOR) (ADJECTIVE
COMPRESSION CHAMBER)>
<ROOM RM-CORRIDOR (LOC ROOMS) (DESC "corridor") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM CORRIDOR) (FORE TO RM-COMMAND-MODULE) (AFT TO RM-SUB-BAY) (STARBOARD TO
RM-LADDER-B2 IF LG-FLOOD-DOOR IS OPEN) (PORT TO RM-LADDER-A2) (GLOBAL
LG-FLOOD-DOOR LG-WALL RM-COMMAND-MODULE RM-SUB-BAY RM-LADDER-A2 RM-LADDER-B2) (
ACTION RT-RM-CORRIDOR)>
<DEFINE-ROUTINE RT-RM-CORRIDOR>
<OBJECT TH-PANEL (LOC RM-CORRIDOR) (DESC "panel") (FLAGS FL-SURFACE FL-OPENABLE
) (SYNONYM PANEL) (ACTION RT-TH-PANEL)>
<DEFINE-ROUTINE RT-TH-PANEL>
<ROOM RM-LADDER-A2 (LOC ROOMS) (DESC "ladderwell A") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER PORT LADDERWELL) (FORE
TO RM-LOUNGE) (AFT TO RM-MESS-HALL) (STARBOARD TO RM-CORRIDOR) (PORT TO
RM-ELECTRONICS-SHOP) (UP TO RM-LADDER-A3) (DOWN TO RM-LADDER-A1) (GLOBAL
LG-WALL RM-LOUNGE RM-MESS-HALL RM-CORRIDOR RM-ELECTRONICS-SHOP RM-LADDER-A1
RM-LADDER-A3) (ACTION RT-RM-LADDER-A2)>
<DEFINE-ROUTINE RT-RM-LADDER-A2>
<ROOM RM-LOUNGE (LOC ROOMS) (DESC "lounge") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM LOUNGE) (AFT TO RM-LADDER-A2) (GLOBAL LG-WALL RM-LADDER-A2) (ACTION
RT-RM-LOUNGE)>
<DEFINE-ROUTINE RT-RM-LOUNGE>
<ROOM RM-INFIRMARY (LOC ROOMS) (DESC "infirmary") (FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM INFIRMARY) (PORT TO RM-LADDER-B3) (GLOBAL LG-WALL RM-LADDER-B3) (
ACTION RT-RM-INFIRMARY)>
<DEFINE-ROUTINE RT-RM-INFIRMARY>
<ROOM RM-MESS-HALL (LOC ROOMS) (DESC "mess hall") (FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM HALL) (ADJECTIVE MESS) (FORE TO RM-LADDER-A2) (AFT TO RM-GALLEY) (
GLOBAL LG-WALL RM-LADDER-A2 RM-GALLEY) (ACTION RT-RM-MESS-HALL)>
<GLOBAL GL-CATFISH-SPY-MSG? <> <> BYTE>
<DEFINE-ROUTINE RT-RM-MESS-HALL>
<ROOM RM-GALLEY (LOC ROOMS) (DESC "Stu's galley") (FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM GALLEY) (FORE TO RM-MESS-HALL) (AFT TO RM-PANTRY) (GLOBAL LG-WALL
RM-MESS-HALL RM-PANTRY) (ACTION RT-RM-GALLEY)>
<DEFINE-ROUTINE RT-RM-GALLEY>
<ROOM RM-PANTRY (LOC ROOMS) (DESC "pantry") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM PANTRY) (FORE TO RM-GALLEY) (AFT TO RM-LADDER-D2) (GLOBAL LG-WALL
RM-GALLEY RM-LADDER-D2) (ACTION RT-RM-PANTRY)>
<DEFINE-ROUTINE RT-RM-PANTRY>
<OBJECT TH-HOOK-2 (LOC RM-PANTRY) (DESC "hook") (FLAGS FL-SURFACE) (SYNONYM
HOOK) (ACTION RT-TH-HOOK-2)>
<DEFINE-ROUTINE RT-TH-HOOK-2>
<OBJECT TH-GAME-BAG (LOC TH-HOOK-2) (DESC "game bag") (FLAGS FL-SURFACE
FL-SEARCH FL-TAKEABLE FL-CONTAINER) (SYNONYM BAG) (ADJECTIVE GAME) (SIZE 5) (
ACTION RT-TH-GAME-BAG)>
<DEFINE-ROUTINE RT-TH-GAME-BAG>
<ROOM RM-WALDORF (LOC ROOMS) (DESC "The Waldorf") (FLAGS FL-INDOORS FL-LIGHTED
FL-NO-ARTICLE) (SYNONYM WALDORF) (FORE TO RM-LADDER-B2) (AFT TO
RM-PERSONAL-STORAGE-1) (GLOBAL LG-WALL RM-LADDER-B2 RM-PERSONAL-STORAGE-1) (
ACTION RT-RM-WALDORF)>
<DEFINE-ROUTINE RT-RM-WALDORF>
<ROOM RM-PERSONAL-STORAGE-1 (LOC ROOMS) (DESC "personal storage") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM STORAGE) (ADJECTIVE PERSONAL) (FORE TO
RM-WALDORF) (AFT TO RM-ZOOTOWN) (GLOBAL LG-WALL RM-WALDORF RM-ZOOTOWN) (ACTION
RT-RM-PERSONAL-STORAGE-1)>
<DEFINE-ROUTINE RT-RM-PERSONAL-STORAGE-1>
<ROOM RM-ZOOTOWN (LOC ROOMS) (DESC "Zootown") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM ZOOTOWN) (FORE TO RM-PERSONAL-STORAGE-1) (AFT TO RM-LADDER-C2) (GLOBAL
LG-WALL RM-PERSONAL-STORAGE-1 RM-LADDER-C2) (ACTION RT-RM-ZOOTOWN)>
<DEFINE-ROUTINE RT-RM-ZOOTOWN>
<ROOM RM-LADDER-C2 (LOC ROOMS) (DESC "ladderwell C") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-ZOOTOWN) (UP TO RM-LADDER-C3) (DOWN TO RM-LADDER-C1) (GLOBAL LG-WALL
RM-ZOOTOWN RM-LADDER-C3 RM-LADDER-C1) (ACTION RT-RM-LADDER-C2)>
<DEFINE-ROUTINE RT-RM-LADDER-C2>
<OBJECT TH-S-BILGE-BUTT (DESC "button") (SYNONYM BUTTON) (ADJECTIVE YELLOW) (
ACTION RT-TH-S-BILGE-BUTT)>
<DEFINE-ROUTINE RT-TH-S-BILGE-BUTT>
<ROOM RM-LADDER-A1 (LOC ROOMS) (DESC "ladder well A") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-PT-BATTERY-ROOM) (AFT TO RM-PT-LIFE-SUPPORT) (PORT TO RM-LAUNDRY) (UP TO
RM-LADDER-A2) (GLOBAL LG-WALL RM-PT-BATTERY-ROOM RM-PT-LIFE-SUPPORT RM-LAUNDRY
RM-LADDER-A2) (ACTION RT-RM-LADDER-A1)>
<DEFINE-ROUTINE RT-RM-LADDER-A1>
<ROOM RM-LAUNDRY (LOC ROOMS) (DESC "laundry") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM LAUNDRY) (STARBOARD TO RM-LADDER-A1) (GLOBAL LG-WALL RM-LADDER-A1) (
ACTION RT-RM-LAUNDRY)>
<DEFINE-ROUTINE RT-RM-LAUNDRY>
<ROOM RM-PT-LIFE-SUPPORT (LOC ROOMS) (DESC "port life support") (MENU
"life support") (FLAGS FL-INDOORS FL-LIGHTED) (SYNONYM SUPPORT) (ADJECTIVE PORT
LIFE) (FORE TO RM-LADDER-A1) (AFT TO RM-COMPRESSOR-ROOM) (GLOBAL LG-WALL
RM-LADDER-A1 RM-COMPRESSOR-ROOM) (ACTION RT-RM-PT-LIFE-SUPPORT)>
<DEFINE-ROUTINE RT-RM-PT-LIFE-SUPPORT>
<ROOM RM-COMPRESSOR-ROOM (LOC ROOMS) (DESC "compressor room") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM ROOM) (ADJECTIVE COMPRESSOR) (FORE TO RM-PT-LIFE-SUPPORT)
(AFT TO RM-TRI-MIX-STORAGE) (GLOBAL LG-WALL RM-PT-LIFE-SUPPORT
RM-TRI-MIX-STORAGE) (ACTION RT-RM-COMPRESSOR-ROOM)>
<DEFINE-ROUTINE RT-RM-COMPRESSOR-ROOM>
<OBJECT TH-COMPRESSOR (LOC RM-COMPRESSOR-ROOM) (DESC "compressor") (FLAGS FL-ON
) (SYNONYM COMPRESSOR) (ACTION RT-TH-COMPRESSOR)>
<DEFINE-ROUTINE RT-TH-COMPRESSOR>
<ROOM RM-LADDER-D1 (LOC ROOMS) (DESC "ladderwell D") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-TRI-MIX-STORAGE) (AFT TO RM-TOOL-PUSHER-OFFICE) (UP TO RM-LADDER-D2) (GLOBAL
LG-WALL RM-TRI-MIX-STORAGE RM-TOOL-PUSHER-OFFICE RM-LADDER-D2) (ACTION
RT-RM-LADDER-D1)>
<DEFINE-ROUTINE RT-RM-LADDER-D1>
<ROOM RM-TOOL-PUSHER-OFFICE (LOC ROOMS) (DESC "tool pusher's office") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM OFFICE) (ADJECTIVE TOOL PUSHER) (FORE TO
RM-LADDER-D1) (STARBOARD TO RM-TOOL-ROOM) (GLOBAL LG-WALL RM-LADDER-D1
RM-TOOL-ROOM) (ACTION RT-RM-TOOL-PUSHER-OFFICE)>
<DEFINE-ROUTINE RT-RM-TOOL-PUSHER-OFFICE>
<ROOM RM-DRILL-ROOM (LOC ROOMS) (DESC "drill room") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM ROOM) (ADJECTIVE DRILL) (PORT TO RM-TOOL-ROOM) (GLOBAL
LG-WALL RM-TOOL-ROOM) (ACTION RT-RM-DRILL-ROOM)>
<DEFINE-ROUTINE RT-RM-DRILL-ROOM>
<ROOM RM-LADDER-B1 (LOC ROOMS) (DESC "ladderwell B") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-SB-BATTERY-ROOM) (AFT TO RM-SB-LIFE-SUPPORT) (STARBOARD TO RM-SB-HEAD) (UP
TO RM-LADDER-B2) (GLOBAL LG-WALL RM-SB-BATTERY-ROOM RM-SB-LIFE-SUPPORT
RM-SB-HEAD RM-LADDER-B2) (ACTION RT-RM-LADDER-B1)>
<DEFINE-ROUTINE RT-RM-LADDER-B1>
<ROOM RM-SB-BATTERY-ROOM (LOC ROOMS) (DESC "starboard battery room") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM ROOM) (ADJECTIVE STARBOARD BATTERY) (AFT TO
RM-LADDER-B1) (GLOBAL LG-WALL RM-LADDER-B1) (ACTION RT-RM-SB-BATTERY-ROOM)>
<DEFINE-ROUTINE RT-RM-SB-BATTERY-ROOM>
<ROOM RM-SB-HEAD (LOC ROOMS) (DESC "starboard head") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM HEAD) (ADJECTIVE STARBOARD) (PORT TO RM-LADDER-B1) (GLOBAL
LG-WALL RM-LADDER-B1) (ACTION RT-RM-SB-HEAD)>
<DEFINE-ROUTINE RT-RM-SB-HEAD>
<ROOM RM-SB-LIFE-SUPPORT (LOC ROOMS) (DESC "starboard life support") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM SUPPORT) (ADJECTIVE STARBOARD LIFE) (FORE TO
RM-LADDER-B1) (AFT TO RM-PUMP-ROOM) (GLOBAL LG-WALL RM-LADDER-B1 RM-PUMP-ROOM)
(ACTION RT-RM-SB-LIFE-SUPPORT)>
<DEFINE-ROUTINE RT-RM-SB-LIFE-SUPPORT>
<ROOM RM-PUMP-ROOM (LOC ROOMS) (DESC "pump room") (FLAGS FL-INDOORS FL-LIGHTED)
(SYNONYM ROOM) (ADJECTIVE PUMP) (FORE TO RM-SB-LIFE-SUPPORT) (AFT TO
RM-FRESH-WATER-STORAGE) (GLOBAL LG-WALL RM-SB-LIFE-SUPPORT
RM-FRESH-WATER-STORAGE) (ACTION RT-RM-PUMP-ROOM)>
<DEFINE-ROUTINE RT-RM-PUMP-ROOM>
<ROOM RM-FRESH-WATER-STORAGE (LOC ROOMS) (DESC "fresh water storage") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM STORAGE) (ADJECTIVE FRESH WATER) (FORE TO
RM-PUMP-ROOM) (AFT TO RM-LADDER-C1) (GLOBAL LG-WALL RM-PUMP-ROOM RM-LADDER-C1)
(ACTION RT-RM-FRESH-WATER-STORAGE)>
<DEFINE-ROUTINE RT-RM-FRESH-WATER-STORAGE>
<ROOM RM-LADDER-C1 (LOC ROOMS) (DESC "ladderwell C") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-FRESH-WATER-STORAGE) (UP TO RM-LADDER-C2) (GLOBAL LG-WALL
RM-FRESH-WATER-STORAGE RM-LADDER-C2) (ACTION RT-RM-LADDER-C1)>
<DEFINE-ROUTINE RT-RM-LADDER-C1>
<ROOM RM-LADDER-A3 (LOC ROOMS) (DESC "ladderwell A") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-PT-OBS-DECK) (AFT TO RM-MOTEL-QUICK) (PORT TO RM-PT-HEAD) (DOWN TO
RM-LADDER-A2) (GLOBAL LG-WALL RM-PT-OBS-DECK RM-MOTEL-QUICK RM-PT-HEAD
RM-LADDER-A2) (ACTION RT-RM-LADDER-A3)>
<DEFINE-ROUTINE RT-RM-LADDER-A3>
<ROOM RM-PT-HEAD (LOC ROOMS) (DESC "port head") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM HEAD) (ADJECTIVE PORT) (STARBOARD TO RM-LADDER-A3) (GLOBAL LG-WALL
RM-LADDER-A3) (ACTION RT-RM-PT-HEAD)>
<DEFINE-ROUTINE RT-RM-PT-HEAD>
<ROOM RM-MOTEL-QUICK (LOC ROOMS) (DESC "motel Quick") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM QUICK) (ADJECTIVE MOTEL) (FORE TO RM-LADDER-A3) (AFT TO
RM-PERSONAL-STORAGE-2) (GLOBAL LG-WALL RM-LADDER-A3 RM-PERSONAL-STORAGE-2) (
ACTION RT-RM-MOTEL-QUICK)>
<DEFINE-ROUTINE RT-RM-MOTEL-QUICK>
<ROOM RM-PERSONAL-STORAGE-2 (LOC ROOMS) (DESC "personal storage") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM STORAGE) (ADJECTIVE PERSONAL) (FORE TO
RM-MOTEL-QUICK) (AFT TO RM-SWAMP) (GLOBAL LG-WALL RM-MOTEL-QUICK RM-SWAMP) (
ACTION RT-RM-PERSONAL-STORAGE-2)>
<DEFINE-ROUTINE RT-RM-PERSONAL-STORAGE-2>
<ROOM RM-SWAMP (LOC ROOMS) (DESC "the Swamp") (FLAGS FL-INDOORS FL-LIGHTED) (
SYNONYM SWAMP) (FORE TO RM-PERSONAL-STORAGE-2) (AFT TO RM-LADDER-D3) (GLOBAL
LG-WALL RM-PERSONAL-STORAGE-2 RM-LADDER-D3) (ACTION RT-RM-SWAMP)>
<DEFINE-ROUTINE RT-RM-SWAMP>
<ROOM RM-LADDER-D3 (LOC ROOMS) (DESC "ladderwell D") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDERWELL LADDER) (FORE TO
RM-SWAMP) (DOWN TO RM-LADDER-D2) (GLOBAL LG-WALL RM-SWAMP RM-LADDER-D2) (ACTION
RT-RM-LADDER-D3)>
<DEFINE-ROUTINE RT-RM-LADDER-D3>
<ROOM RM-LADDER-B3 (LOC ROOMS) (DESC "ladderwell B") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-SB-OBS-DECK) (AFT TO RM-COMPUTER-CENTER) (STARBOARD TO RM-INFIRMARY) (DOWN
TO RM-LADDER-B2) (GLOBAL LG-WALL RM-SB-OBS-DECK RM-COMPUTER-CENTER RM-INFIRMARY
RM-LADDER-B2) (ACTION RT-RM-LADDER-B3)>
<DEFINE-ROUTINE RT-RM-LADDER-B3>
<ROOM RM-SB-OBS-DECK (LOC ROOMS) (DESC "starboard observation deck") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM DECK) (ADJECTIVE STARBOARD OBSERVATION) (AFT TO
RM-LADDER-B3) (GLOBAL LG-WALL RM-LADDER-B3) (ACTION RT-RM-SB-OBS-DECK)>
<DEFINE-ROUTINE RT-RM-SB-OBS-DECK>
<ROOM RM-COMPUTER-CENTER (LOC ROOMS) (DESC "computer center") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM CENTER) (ADJECTIVE COMPUTER) (FORE TO RM-LADDER-B3) (AFT
TO RM-LAB) (GLOBAL LG-WALL RM-LADDER-B3 RM-LAB) (ACTION RT-RM-COMPUTER-CENTER)>
<DEFINE-ROUTINE RT-RM-COMPUTER-CENTER>
<ROOM RM-ELECTRONICS-SHOP (LOC ROOMS) (DESC "electronics shop") (FLAGS
FL-INDOORS FL-LIGHTED) (SYNONYM SHOP) (ADJECTIVE ELECTRONIC) (STARBOARD TO
RM-LADDER-A2) (GLOBAL LG-WALL RM-LADDER-A2) (ACTION RT-RM-ELECTRONICS-SHOP)>
<DEFINE-ROUTINE RT-RM-ELECTRONICS-SHOP>
<OBJECT TH-ELEC-SHOP-DRAWER (LOC RM-ELECTRONICS-SHOP) (DESC "center drawer") (
FLAGS FL-CONTAINER FL-OPENABLE FL-SEARCH) (SYNONYM DRAWER) (ADJECTIVE CENTER) (
ACTION RT-TH-ELEC-SHOP-DRAWER)>
<DEFINE-ROUTINE RT-TH-ELEC-SHOP-DRAWER>
<ROOM RM-LAB (LOC ROOMS) (DESC "lab") (FLAGS FL-INDOORS FL-LIGHTED) (SYNONYM
LAB LABORATORY) (FORE TO RM-COMPUTER-CENTER) (AFT TO RM-TAPE-LIBRARY) (GLOBAL
LG-WALL RM-COMPUTER-CENTER RM-TAPE-LIBRARY) (ACTION RT-RM-LAB)>
<DEFINE-ROUTINE RT-RM-LAB>
<ROOM RM-TAPE-LIBRARY (LOC ROOMS) (DESC "tape library") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM LIBRARY) (ADJECTIVE TAPE) (FORE TO RM-LAB) (AFT TO
RM-LADDER-C3) (GLOBAL LG-WALL RM-LAB RM-LADDER-C3) (ACTION RT-RM-TAPE-LIBRARY)>
<DEFINE-ROUTINE RT-RM-TAPE-LIBRARY>
<ROOM RM-LADDER-C3 (LOC ROOMS) (DESC "ladderwell C") (FLAGS FL-INDOORS
FL-LIGHTED) (SYNONYM WELL LADDERWELL) (ADJECTIVE LADDER LADDERWELL) (FORE TO
RM-TAPE-LIBRARY) (DOWN TO RM-LADDER-C2) (GLOBAL LG-WALL RM-TAPE-LIBRARY
RM-LADDER-C2) (ACTION RT-RM-LADDER-C3)>
<DEFINE-ROUTINE RT-RM-LADDER-C3>

1082
sub-bay.zap Normal file

File diff suppressed because it is too large Load Diff

3058
sub-bay.zil Normal file

File diff suppressed because it is too large Load Diff

443
syntax.zil Normal file
View File

@ -0,0 +1,443 @@
;"***************************************************************************"
; "game : Abyss"
; "file : SYNTAX.ZIL"
; "auth : $Author: DEB $"
; "date : $Date: 20 Mar 1989 8:44:54 $"
; "rev : $Revision: 1.17 $"
; "vers : 1.0"
;"---------------------------------------------------------------------------"
; "Syntax"
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
;"***************************************************************************"
<SYNONYM WITH USING>
<SYNONYM TO TOWARD TOWARDS>
<SYNONYM AROUND ALONG>
<SYNONYM ALL BOTH>
<SYNONYM THROUGH THRU>
;<SYNONYM UNDER UNDERNEATH BENEATH>
<SYNONYM IN INTO INSIDE>
;<SYNONYM OUT OUTSIDE>
<SYNONYM ON ONTO>
<DIR-SYNONYM FORE F>
<DIR-SYNONYM AFT A>
<DIR-SYNONYM PORT P>
<DIR-SYNONYM STARBOARD SB>
<DIR-SYNONYM NORTH N>
<DIR-SYNONYM SOUTH S>
<DIR-SYNONYM EAST E>
<DIR-SYNONYM WEST W>
<DIR-SYNONYM DOWN D>
<DIR-SYNONYM DOWN DOWNSTAIRS>
<DIR-SYNONYM UP U>
<DIR-SYNONYM UP UPSTAIRS>
<BUZZ NOW SOON THERE PLEASE BACK ANYWAY OH>
;"---------------------------------------------------------------------------"
; "Game verbs"
;"---------------------------------------------------------------------------"
<SYNTAX $REFRESH = V-$REFRESH>
<VERB-SYNONYM $REFRESH R>
<SYNTAX $VERIFY = V-VERIFY>
<SYNTAX $VERIFY OBJECT = V-VERIFY>
%<DEBUG-CODE <SYNTAX \#COMMAND = V-COMMAND>>
%<DEBUG-CODE <SYNTAX \#RECORD = V-RECORD>>
%<DEBUG-CODE <SYNTAX \#UNRECORD = V-UNRECORD>>
<VERB-SYNONYM BRIEF VERBOSE SUPER SUPERBRIEF>
<SYNTAX BRIEF = V-DESC-LEVEL>
<VERB-SYNONYM QUIT Q>
<SYNTAX QUIT = V-QUIT>
<SYNTAX RESTART = V-RESTART>
<SYNTAX RESTORE = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX START OVER OBJECT (FIND FL-ROOMS) = V-RESTART>
<VERB-SYNONYM SCRIPT UNSCRIPT>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNDO = V-UNDO>
<VERB-SYNONYM VERSION $VERSION>
<SYNTAX VERSION = V-VERSION>
<SYNTAX SCORE = V-SCORE>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
;"---------------------------------------------------------------------------"
; "A"
;"---------------------------------------------------------------------------"
<SYNTAX ASK OBJECT (ON-GROUND IN-ROOM) ABOUT OBJECT (EVERYWHERE) = V-ASK-ABOUT>
;<SYNTAX ASK OBJECT (ON-GROUND IN-ROOM) FOR OBJECT (EVERYWHERE) = V-ASK-FOR>
;<VERB-SYNONYM ATTACK KILL FIGHT HURT STAB SLAY STUN>
;<SYNTAX ATTACK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-WEAPON) (HELD CARRIED HAVE) = V-ATTACK>
<VERB-SYNONYM ATTACH CONNECT>
<SYNTAX ATTACH OBJECT TO OBJECT = V-ATTACH>
;"---------------------------------------------------------------------------"
; "B"
;"---------------------------------------------------------------------------"
<SYNTAX BLOW UP OBJECT = V-INFLATE> ; "DEB -- Do we need find tokens here?"
;<VERB-SYNONYM BREAK DESTROY DAMAGE SMASH WRECK>
;<SYNTAX BREAK OBJECT WITH OBJECT (FIND FL-BY-HAND) (HAVE HELD CARRIED) = V-BREAK>
;<SYNTAX BREAK OFF OBJECT WITH OBJECT (FIND FL-BY-HAND) (HAVE HELD CARRIED) = V-BREAK>
;<SYNTAX BREAK DOWN OBJECT WITH OBJECT (FIND FL-BY-HAND) (HAVE HELD CARRIED) = V-BREAK>
;<SYNTAX BREAK IN OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-BY-HAND) (HAVE HELD CARRIED) = V-BREAK>
;<SYNTAX BREAK THROUGH OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-BY-HAND) (HAVE HELD CARRIED) = V-BREAK>
;<SYNTAX BREAK OBJECT (ON-GROUND IN-ROOM) OFF OBJECT (ON-GROUND IN-ROOM) = V-BREAK>
;<VERB-SYNONYM BYE GOODBYE FAREWELL>
;<SYNTAX BYE OBJECT (FIND FL-ROOMS) = V-GOODBYE>
;"---------------------------------------------------------------------------"
; "C"
;"---------------------------------------------------------------------------"
<SYNTAX CLAMP OBJECT TO OBJECT = V-ATTACH>
<VERB-SYNONYM CLOSE SHUT>
<SYNTAX CLOSE OBJECT (FIND FL-OPENABLE) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
<SYNTAX CUT OBJECT WITH OBJECT (HELD HAVE TAKE) (FIND FL-KNIFE) = V-CUT>
;"---------------------------------------------------------------------------"
; "D"
;"---------------------------------------------------------------------------"
<SYNTAX DROP OBJECT (HELD CARRIED MANY HAVE TAKE) = V-DROP PRE-PUT>
<SYNTAX DROP OBJECT (HELD CARRIED MANY HAVE TAKE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD CARRIED MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX DROP OBJECT (HELD CARRIED MANY HAVE TAKE) ON OBJECT = V-PUT PRE-PUT>
;"---------------------------------------------------------------------------"
; "E"
;"---------------------------------------------------------------------------"
<VERB-SYNONYM EMPTY POUR>
<SYNTAX EMPTY OBJECT IN OBJECT (FIND FL-ROOMS) = V-EMPTY PRE-EMPTY>
<SYNTAX EMPTY OUT OBJECT IN OBJECT (FIND FL-ROOMS) = V-EMPTY PRE-EMPTY>
<SYNTAX EMPTY OBJECT ON OBJECT (FIND FL-ROOMS) = V-EMPTY PRE-EMPTY>
<SYNTAX EMPTY OUT OBJECT ON OBJECT (FIND FL-ROOMS) = V-EMPTY PRE-EMPTY>
<SYNTAX EMPTY OBJECT FROM OBJECT = V-EMPTY-FROM>
<SYNTAX EMPTY OUT OBJECT FROM OBJECT = V-EMPTY-FROM>
<SYNTAX EMPTY OBJECT OUT OBJECT = V-EMPTY-FROM>
<SYNTAX ENTER OBJECT (ON-GROUND IN-ROOM) = V-ENTER>
<VERB-SYNONYM EXAMINE X>
<SYNTAX EXAMINE OBJECT (HAVE EVERYWHERE) = V-EXAMINE ;PRE-EXAMINE>
<SYNTAX EXIT OBJECT (ON-GROUND IN-ROOM) = V-EXIT>
<SYNTAX EXTINGUISH OBJECT = V-EXTINGUISH>
;"---------------------------------------------------------------------------"
; "F"
;"---------------------------------------------------------------------------"
<VERB-SYNONYM FOLLOW CHASE TAIL>
<SYNTAX FOLLOW OBJECT (EVERYWHERE) = V-FOLLOW>
<SYNTAX FOLLOW AFTER OBJECT (EVERYWHERE) = V-FOLLOW>
;"---------------------------------------------------------------------------"
; "G"
;"---------------------------------------------------------------------------"
<SYNTAX GET OBJECT (FIND FL-TAKEABLE) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (IN-ROOM CARRIED MANY) FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (IN-ROOM CARRIED MANY) IN OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (CARRIED IN-ROOM MANY) OUT OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT WITH OBJECT (HELD) = V-TAKE-WITH PRE-TAKE>
<SYNTAX GET RID OBJECT = V-DROP PRE-PUT>
<SYNTAX GET IN OBJECT (ON-GROUND IN-ROOM) = V-ENTER>
<SYNTAX GET FROM OBJECT (FIND FL-ROOMS) = V-EXIT>
<SYNTAX GET OUT OBJECT (FIND FL-ROOMS) = V-EXIT>
<SYNTAX GET THROUGH OBJECT = V-ENTER>
<VERB-SYNONYM GIVE HAND GRANT DELIVER OFFER LOAN LEND>
<SYNTAX GIVE OBJECT (HELD CARRIED HAVE TAKE MANY) TO OBJECT (FIND FL-PERSON) (IN-ROOM ON-GROUND) = V-GIVE ;PRE-GIVE>
<SYNTAX GIVE OBJECT (ON-GROUND IN-ROOM) OBJECT (HELD CARRIED HAVE TAKE MANY) = V-GIVE-SWP>
;"---------------------------------------------------------------------------"
; "H"
;"---------------------------------------------------------------------------"
;<VERB-SYNONYM HELLO HI GREETINGS GREET SALUTE>
;<SYNTAX HELLO OBJECT (FIND FL-ROOMS) = V-HELLO>
<SYNTAX HOLD OBJECT (FIND FL-TAKEABLE) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<VERB-SYNONYM HIT SLAP WHACK SWAT STRIKE PUNCH>
<SYNTAX HIT OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-BY-HAND) (HELD CARRIED HAVE) = V-HIT>
<SYNTAX HIT AT OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-BY-HAND) (HELD CARRIED HAVE) = V-HIT>
;"---------------------------------------------------------------------------"
; "I"
;"---------------------------------------------------------------------------"
<SYNTAX INFLATE OBJECT = V-INFLATE>
<VERB-SYNONYM INVENTORY I INVENT>
<SYNTAX INVENTORY = V-INVENTORY>
;"---------------------------------------------------------------------------"
; "J"
;"---------------------------------------------------------------------------"
<SYNTAX JUMP FROM OBJECT = V-EXIT>
<SYNTAX JUMP IN OBJECT (FIND FL-ROOMS) = V-ENTER>
<SYNTAX JUMP OUT OBJECT (FIND FL-ROOMS) = V-EXIT>
<SYNTAX JUMP TO OBJECT = V-ENTER>
<SYNTAX JUMP THROUGH OBJECT = V-ENTER>
;"---------------------------------------------------------------------------"
; "K"
;"---------------------------------------------------------------------------"
;<SYNTAX KICK OBJECT (ON-GROUND IN-ROOM) = V-ATTACK>
;<SYNTAX KICK AT OBJECT (ON-GROUND IN-ROOM) = V-ATTACK>
;<SYNTAX KNOCK DOWN OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-WEAPON) (HELD CARRIED HAVE) = V-ATTACK>
;<SYNTAX KNOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-WEAPON) (HELD CARRIED HAVE) = V-ATTACK>
;<SYNTAX KNOCK OUT OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND FL-WEAPON) (HELD CARRIED HAVE) = V-ATTACK>
;"---------------------------------------------------------------------------"
; "L"
;"---------------------------------------------------------------------------"
<SYNTAX LET GO OBJECT (HELD) = V-DROP PRE-PUT>
<VOC "LIE">
;<SYNTAX LIE = V-FOO>
<VERB-SYNONYM LIFT RAISE>
<SYNTAX LIFT OBJECT WITH OBJECT (HELD HAVE) (FIND FL-BY-HAND) = V-LIFT>
<SYNTAX LISTEN OBJECT (FIND FL-ROOMS) = V-LISTEN>
<SYNTAX LISTEN AT OBJECT = V-LISTEN>
<SYNTAX LISTEN THROUGH OBJECT = V-LISTEN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LOCK OBJECT WITH OBJECT (HELD HAVE TAKE) (FIND FL-KEY) = V-LOCK>
<VERB-SYNONYM LOOK L>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK OBJECT (HAVE EVERYWHERE) = V-EXAMINE ;PRE-EXAMINE>
<SYNTAX LOOK AROUND OBJECT (FIND FL-ROOMS) = V-LOOK>
<SYNTAX LOOK AT OBJECT (HAVE EVERYWHERE) = V-EXAMINE ;PRE-EXAMINE>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) (FIND FL-ROOMS) = V-LOOK-IN ;PRE-LOOK-IN>
<SYNTAX LOOK ON OBJECT (ON-GROUND IN-ROOM) = V-LOOK-ON>
<SYNTAX LOOK OVER OBJECT = V-EXAMINE ;PRE-EXAMINE>
;<SYNTAX LOOK UP OBJECT (FIND FL-ROOMS) = V-LOOK-UP>
;<SYNTAX LOOK DOWN OBJECT (FIND FL-ROOMS) = V-LOOK-DOWN>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
;"---------------------------------------------------------------------------"
; "M"
;"---------------------------------------------------------------------------"
<SYNTAX MOVE OBJECT WITH OBJECT (HELD HAVE) (FIND FL-BY-HAND) = V-MOVE>
;"---------------------------------------------------------------------------"
; "N"
;"---------------------------------------------------------------------------"
;<VERB-SYNONYM NO N>
<SYNTAX NO = V-NO>
;"---------------------------------------------------------------------------"
; "O"
;"---------------------------------------------------------------------------"
<SYNTAX OPEN OBJECT (FIND FL-OPENABLE) = V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND FL-OPENABLE) = V-OPEN>
<SYNTAX OPEN OBJECT (FIND FL-OPENABLE) WITH OBJECT (FIND FL-KEY) (HAVE TAKE) = V-OPEN>
;"---------------------------------------------------------------------------"
; "P"
;"---------------------------------------------------------------------------"
<SYNTAX PICK OBJECT (FIND FL-TAKEABLE) (ON-GROUND MANY) = V-TAKE PRE-TAKE>
<SYNTAX PICK UP OBJECT (FIND FL-TAKEABLE) (ON-GROUND MANY) = V-TAKE PRE-TAKE>
<SYNTAX PLUG IN OBJECT = V-PLUG-IN>
;<SYNTAX POKE OBJECT WITH OBJECT (FIND FL-WEAPON) = V-ATTACK>
<SYNTAX PRESS OBJECT = V-PUSH>
<SYNTAX PULL OBJECT = V-PULL>
<SYNTAX PULL OBJECT (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX PULL OUT OBJECT (CARRIED IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX PULL OBJECT (CARRIED IN-ROOM MANY) FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX PULL OBJECT (CARRIED IN-ROOM MANY) OUT OBJECT = V-TAKE PRE-TAKE>
<SYNTAX PUSH OBJECT (HELD CARRIED MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX PUSH OBJECT = V-PUSH>
<VERB-SYNONYM PUT PLACE>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) ON OBJECT (FIND FL-SURFACE) = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) ACROSS OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) AROUND OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) OVER OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT AWAY OBJECT(HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX PUT DOWN OBJECT (HELD MANY HAVE) = V-DROP PRE-PUT>
<SYNTAX PUT ON OBJECT (HELD HAVE TAKE) = V-WEAR>
<SYNTAX PUT OUT OBJECT = V-EXTINGUISH>
;"---------------------------------------------------------------------------"
; "Q"
;"---------------------------------------------------------------------------"
;"---------------------------------------------------------------------------"
; "R"
;"---------------------------------------------------------------------------"
<SYNTAX REACH IN OBJECT = V-REACH-IN>
<SYNTAX REACH UNDER OBJECT WITH OBJECT (FIND FL-ROOMS) (HELD) = V-REACH-UNDER>
<SYNTAX REACH BEHIND OBJECT = V-REACH-BEHIND>
<VERB-SYNONYM READ SKIM BROWSE LEAF>
<SYNTAX READ OBJECT (TAKE) = V-READ>
<SYNTAX READ THROUGH OBJECT (TAKE) = V-READ>
<SYNTAX REMOVE OBJECT = V-UNWEAR>
<SYNTAX REMOVE OBJECT (IN-ROOM CARRIED MANY) FROM OBJECT = V-TAKE PRE-TAKE>
;"---------------------------------------------------------------------------"
; "S"
;"---------------------------------------------------------------------------"
<VOC "SAY">
<SYNTAX SET OBJECT TO OBJECT = V-TURN-TO>
<SYNTAX SET OBJECT (HELD MANY HAVE TAKE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX SET OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX SHOW OBJECT TO OBJECT = V-SHOW>
<SYNTAX SHOW OBJECT OBJECT = V-SHOW-SWP>
<SYNTAX SIT ON OBJECT (FIND FL-ROOMS) (ON-GROUND IN-ROOM) = V-SIT>
<SYNTAX SIT IN OBJECT (ON-GROUND IN-ROOM) = V-ENTER>
<SYNTAX SIT DOWN OBJECT (FIND FL-ROOMS) = V-SIT>
<SYNTAX SIT AT OBJECT (ON-GROUND IN-ROOM) = V-SIT>
<SYNTAX SLIDE OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
;<SYNTAX STICK OBJECT WITH OBJECT (FIND FL-WEAPON) (HELD CARRIED HAVE) = V-ATTACK>
<SYNTAX STICK OBJECT (HELD MANY HAVE TAKE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX STICK OBJECT (HELD MANY HAVE TAKE) IN OBJECT (FIND FL-ROOMS) = V-PUT-IN PRE-PUT-IN>
<SYNTAX SWITCH ON OBJECT = V-TURN-ON>
<SYNTAX SWITCH OBJECT ON OBJECT (FIND FL-ROOMS) = V-TURN-ON>
<SYNTAX SWITCH OFF OBJECT = V-TURN-OFF>
<SYNTAX SWITCH OBJECT OFF OBJECT (FIND FL-ROOMS) = V-TURN-OFF>
;"---------------------------------------------------------------------------"
; "T"
;"---------------------------------------------------------------------------"
<SYNTAX TELL OBJECT (FIND FL-PERSON) (ON-GROUND IN-ROOM MANY) = V-TELL>
<SYNTAX TELL OBJECT (FIND FL-PERSON) (ON-GROUND IN-ROOM) ABOUT OBJECT (EVERYWHERE) = V-TELL-ABOUT>
<SYNTAX TELL OBJECT (FIND FL-PERSON) (ON-GROUND IN-ROOM) OBJECT (EVERYWHERE) = V-TELL-ABOUT>
<VERB-SYNONYM TALK SPEAK CONVERSE>
<SYNTAX TALK TO OBJECT (FIND FL-PERSON) (ON-GROUND IN-ROOM) = V-TALK-TO>
<SYNTAX TALK WITH OBJECT (FIND FL-PERSON) (ON-GROUND IN-ROOM) = V-TALK-TO>
<VERB-SYNONYM TAKE CATCH GRAB PLUCK GRASP>
<SYNTAX TAKE OBJECT (FIND FL-TAKEABLE) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) IN OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) ON OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) OUT OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT WITH OBJECT (HELD) = V-TAKE-WITH PRE-TAKE>
<SYNTAX TAKE OUT OBJECT (CARRIED IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE UP OBJECT (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE OFF OBJECT (HELD HAVE) = V-UNWEAR>
<SYNTAX THANK OBJECT (FIND FL-PERSON) (ON-GROUND IN-ROOM) = V-THANK>
;<SYNTAX THANKS OBJECT (FIND FL-ROOMS) = V-THANK> ; "???"
<SYNTAX TIE OBJECT TO OBJECT = V-TIE-TO> ;"DEB -- Please check tokens"
<SYNTAX THROW AWAY OBJECT (HELD CARRIED HAVE) = V-DROP PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE) OVER OBJECT (ON-GROUND IN-ROOM) = V-PUT PRE-PUT>
;<SYNTAX THROW OBJECT (HELD CARRIED HAVE MANY) DOWN OBJECT (FIND FL-ROOMS) = V-DROP PRE-PUT>
<SYNTAX TURN OBJECT = V-TURN>
<SYNTAX TURN OBJECT TO OBJECT = V-TURN-TO>
<SYNTAX TURN OBJECT OBJECT = V-TURN-TO> ; ">turn object left"
<SYNTAX TURN ON OBJECT = V-TURN-ON>
<SYNTAX TURN OBJECT ON OBJECT (FIND FL-ROOMS) = V-TURN-ON>
<SYNTAX TURN OFF OBJECT = V-TURN-OFF>
<SYNTAX TURN OBJECT OFF OBJECT (FIND FL-ROOMS) = V-TURN-OFF>
;"---------------------------------------------------------------------------"
; "U"
;"---------------------------------------------------------------------------"
<SYNTAX UNLOCK OBJECT WITH OBJECT (HELD HAVE TAKE) (FIND FL-KEY) = V-UNLOCK>
;"---------------------------------------------------------------------------"
; "V"
;"---------------------------------------------------------------------------"
;"---------------------------------------------------------------------------"
; "W"
;"---------------------------------------------------------------------------"
<VERB-SYNONYM WAIT Z>
<SYNTAX WAIT = V-WAIT>
<SYNTAX WAIT OBJECT (EVERYWHERE) = V-WAIT>
<SYNTAX WAIT FOR OBJECT (EVERYWHERE) = V-WAIT>
<VERB-SYNONYM WALK HEAD GO RUN PROCEED SWIM>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-ENTER>
<SYNTAX WALK THROUGH OBJECT = V-ENTER>
<SYNTAX WALK TO OBJECT (EVERYWHERE) = V-WALK-TO ;PRE-WALK>
<SYNTAX WALK AFTER OBJECT (EVERYWHERE) = V-FOLLOW>
<VERB-SYNONYM WEAR DON>
<SYNTAX WEAR OBJECT (HELD ON-GROUND TAKE) = V-WEAR>
<SYNTAX WELD OBJECT = V-WELD>
;"---------------------------------------------------------------------------"
; "X"
;"---------------------------------------------------------------------------"
;"---------------------------------------------------------------------------"
; "Y"
;"---------------------------------------------------------------------------"
<VERB-SYNONYM YES Y>
<SYNTAX YES = V-YES>
;"---------------------------------------------------------------------------"
; "Z"
;"---------------------------------------------------------------------------"
;<VERB-SYNONYM ZORK XYZZY PLUGH YOHO OZMOO GNUSTO FROTZ QUENDOR FROBOZZ>
;<SYNTAX ZORK = V-ZORK>
;"***************************************************************************"
; "end of file"
;"***************************************************************************"

112
top.zabstr Normal file
View File

@ -0,0 +1,112 @@
<FLAGS-AND-DEFAULTS (("UNDO" T)("P-BE-VERB" T)("IN-ZILCH" T)(
"P-DEBUGGING-PARSER" T)) (("SPEAKING-VERB?" "DEFS" #WORD *13502340306*) (
"ASKING-VERB-WORD?" "DEFS" #WORD *22532376516*) ("NOT-HERE" "DEFS" #WORD
*15356621152*) ("CAPITAL-NOUN?" "DEFS" #WORD *23200723325*) ("ITAKE-CHECK"
"DEFS" #WORD *02210465225*) ("SEE-VERB?" "DEFS" #WORD *04241040772*) (
"TELL-SAID-TO" "DEFS" #WORD *30047521107*) ("FIND-A-WINNER" "DEFS" #WORD
*04477330146*) ("NO-M-WINNER-VERB?" "DEFS" #WORD *20532131111*) (
"VERB-ALL-TEST" "DEFS" #WORD *22564325057*) ("OWNERS" "DEFS" #WORD
*32225547276*))>
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED ADJ-USED? ASKING-VERB-WORD? CANT-UNDO CAPITAL-NOUN?
FIND-A-WINNER ITAKE-CHECK META-LOC MORE-SPECIFIC NO-M-WINNER-VERB? NOT-HERE
NOUN-USED? OWNERS P-PRONOUNS SEE-VERB? SIBREAKS SPEAKING-VERB? TELL-PRONOUN
TELL-SAID-TO TELL-TOO-DARK VERB-ALL-TEST>
<DEFAULT-DEFINITION SIBREAKS <SETG20 SIBREAKS ".,\"'!?">>
<DEFAULT-DEFINITION OWNERS <CONSTANT OWNERS <TABLE (PURE LENGTH) PLAYER>>>
<DEFAULT-DEFINITION MORE-SPECIFIC <ROUTINE MORE-SPECIFIC>>
<SYNTAX \#DBG = V-PDEBUG>
<GLOBAL P-DBUG:FLAG <>>
<GLOBAL IDEBUG:FLAG <>>
<CONSTANT G-DEBUG 69>
<DEFINE-ROUTINE V-PDEBUG>
<GLOBAL P-PRSI <>>
<GLOBAL P-PRSO <>>
<GLOBAL PRSA 0 <OR VERB FALSE>>
<GLOBAL PRSQ 0>
<GLOBAL PRSS:OBJECT 0>
<GLOBAL PRSI:OBJECT 0>
<GLOBAL PRSO:OBJECT 0>
<GLOBAL P-MULT <>>
<GLOBAL OPRSO <>>
<GLOBAL P-CONT:NUMBER 0>
<CONSTANT P-LEXWORDS 1>
<CONSTANT P-LEXSTART 1>
<CONSTANT P-LEXELEN 2>
<CONSTANT P-WORDLEN 4>
<GLOBAL P-WON <>>
<DEFMAC RFATAL () '<PROG () <PUSH 2> <RSTACK>>>
<GLOBAL P-PRSA-WORD <>>
<GLOBAL PRSO-NP <>>
<GLOBAL PRSI-NP <>>
<GLOBAL CLOCKER-RUNNING:NUMBER 2>
<GLOBAL P-CAN-UNDO:NUMBER 0>
<DEFAULT-DEFINITION VERB-ALL-TEST <DEFINE VERB-ALL-TEST (O I "AUX" L) <SET L <
LOC .O>> <COND (<VERB? DROP GIVE> <COND (<EQUAL? .L ,WINNER> <RTRUE>) (T <
RFALSE>)>) (<VERB? PUT> <COND (<EQUAL? .O .I> <RFALSE>) (<NOT <IN? .O .I>> <
RTRUE>) (T <RFALSE>)>) (<VERB? TAKE> <COND (<AND <NOT <FSET? .O ,TAKEBIT>> <NOT
<FSET? .O ,TRYTAKEBIT>>> <RFALSE>)> <COND (<NOT <ZERO? .I>> <COND (<NOT <EQUAL?
.L .I>> <RFALSE>)>) (<EQUAL? .L ,HERE> <RTRUE>)> <COND (<OR <FSET? .L ,
PERSONBIT> <FSET? .L ,SURFACEBIT>> <RTRUE>) (<AND <FSET? .L ,CONTBIT> <FSET? .L
,OPENBIT>> <RTRUE>) (T <RFALSE>)>) (<NOT <ZERO? .I>> <COND (<NOT <EQUAL? .O .I>
> <RTRUE>) (T <RFALSE>)>) (T <RTRUE>)>>>
<DEFINE-ROUTINE FIX-HIM-HER-IT>
<DEFAULT-DEFINITION TELL-PRONOUN <ROUTINE TELL-PRONOUN>>
<DEFAULT-DEFINITION NO-M-WINNER-VERB? <CONSTANT NO-M-WINNER-VERB-TABLE <PLTABLE
V?TELL-ABOUT V?SGIVE V?SSHOW V?SRUB V?SPUT-ON>> <DEFINE NO-M-WINNER-VERB? () <
COND (<INTBL? ,PRSA <ZREST ,NO-M-WINNER-VERB-TABLE 2> <ZGET ,
NO-M-WINNER-VERB-TABLE 0>> <RTRUE>)>>>
<DEFAULT-DEFINITION FIND-A-WINNER <DEFINE FIND-A-WINNER ACT ("OPT" (RM ,HERE))
<COND (<AND <T? ,QCONTEXT> <IN? ,QCONTEXT .RM>> ,QCONTEXT) (T <REPEAT ((OTHER <
FIRST? .RM>) (WHO <>) (N 0)) <COND (<ZERO? .OTHER> <RETURN .WHO .ACT>) (<AND <
FSET? .OTHER ,PERSONBIT> <NOT <FSET? .OTHER ,INVISIBLE>> <NOT <EQUAL? .OTHER ,
PLAYER>>> <COND (<G? <SET N <+ 1 .N>> 1> <RETURN <> .ACT>)> <SET WHO .OTHER>)>
<SET OTHER <NEXT? .OTHER>>>)>>>
<DEFAULT-DEFINITION TELL-SAID-TO <DEFINE TELL-SAID-TO (PER) <TELL "[said to " D
.PER "]" CR>>>
<GLOBAL QCONTEXT:OBJECT <>>
<DEFINE-ROUTINE QCONTEXT-GOOD?>
<DEFAULT-DEFINITION META-LOC <ROUTINE META-LOC>>
<DEFAULT-DEFINITION P-PRONOUNS <GLOBAL P-IT-OBJECT:OBJECT <>> <GLOBAL
P-THEM-OBJECT:OBJECT <>> <GLOBAL P-HER-OBJECT:OBJECT <>> <GLOBAL P-HIM-OBJECT:
OBJECT <>>>
<DEFAULT-DEFINITION CANT-UNDO <IF-UNDO <ROUTINE CANT-UNDO>>>
<DEFINE-ROUTINE CANT-UNDO>
<GLOBAL NOW-PRSI:FLAG <>>
<GLOBAL OBJ-SWAP:FLAG <>>
<OBJECT NOT-HERE-OBJECT (CONTFCN 0) (THINGS 0)>
<DEFAULT-DEFINITION SEE-VERB? <DEFINE SEE-VERB? () <VERB? CHASTISE EXAMINE FIND
LOOK LOOK-BEHIND LOOK-DOWN LOOK-INSIDE LOOK-UNDER LOOK-UP READ SEARCH>>>
<DEFINE-ROUTINE PERFORM>
<DEFAULT-DEFINITION TELL-TOO-DARK <ROUTINE TELL-TOO-DARK>>
<DEFAULT-DEFINITION ITAKE-CHECK <DEFINE ITAKE-CHECK (OBJ BITS "AUX" (TAKEN <>))
<COND (<==? .OBJ ,IT> <SET OBJ ,P-IT-OBJECT>) (<==? .OBJ ,THEM> <SET OBJ ,
P-THEM-OBJECT>)> <COND (<AND <NOT <HELD? .OBJ ,WINNER>> <NOT <EQUAL? .OBJ ,
HANDS ,ROOMS>>> <COND (<FSET? .OBJ ,TRYTAKEBIT> T) (<NOT <==? ,WINNER ,PLAYER>>
<SET TAKEN T>) (<AND <BTST .BITS ,SEARCH-DO-TAKE> <==? <ITAKE <> .OBJ> T>> <SET
TAKEN T>)> <COND (<AND <NOT .TAKEN> <BTST .BITS ,SEARCH-MUST-HAVE> <NOT <BTST .
BITS ,SEARCH-MOBY>>> <TELL !\[> <COND (<EQUAL? ,WINNER ,PLAYER> <TELL "You are"
>) (T <TELL-CTHE ,WINNER> <TELL " is">)> <TELL "n't holding "> <TELL-THE .OBJ>
<THIS-IS-IT .OBJ> <TELL "!]" CR> <RTRUE>)>)>>>
<DEFINE-ROUTINE TELL-D-LOC>
<DEFINE-ROUTINE D-APPLY>
<DEFAULT-DEFINITION CAPITAL-NOUN? <DEFINE CAPITAL-NOUN? (NAM) <>>>
<DEFAULT-DEFINITION NOT-HERE <DEFINE NOT-HERE (OBJ "OPT" (CLOCK <>)) <COND (<
ZERO? .CLOCK> <SETG CLOCK-WAIT T> <TELL "[But">)> <TELL !\ > <TELL-THE .OBJ> <
IFFLAG (P-BE-VERB <PRINT-IS/ARE .OBJ>) (T <TELL " is">)> <TELL "n't "> <COND (<
VISIBLE? .OBJ> <TELL "close enough"> <COND (<SPEAKING-VERB?> <TELL
" to hear you">)> <TELL !\.>) (T <TELL "here!">)> <THIS-IS-IT .OBJ> <COND (<
ZERO? .CLOCK> <TELL !\]>)> <CRLF>>>
<DEFAULT-DEFINITION ASKING-VERB-WORD? <ADD-WORD ASK ASKWORD> <ADD-WORD ORDER
ASKWORD> <ADD-WORD TELL ASKWORD>>
<DEFAULT-DEFINITION SPEAKING-VERB? <DEFINE SPEAKING-VERB? ("OPT" (A ,PRSA)) <
COND (<EQUAL? .A ,V?ANSWER ,V?ASK-ABOUT ,V?ASK-FOR ,V?HELLO ,V?NO ,V?REPLY ,
V?TELL ,V?TELL-ABOUT ,V?YES> <COND (T <RTRUE>)>)>>>
<DEFINE-ROUTINE GET-OWNER>
<DEFINE-ROUTINE GET-NP>
<DEFAULT-DEFINITION NOUN-USED? <ROUTINE NOUN-USED?>>
<DEFAULT-DEFINITION ADJ-USED? <ROUTINE ADJ-USED?>>
<END-SEGMENT>

487
top.zap Normal file
View File

@ -0,0 +1,487 @@
.SEGMENT "0"
.FUNCT MORE-SPECIFIC:ANY:0:0
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "[Please be more specific.]"
.FUNCT V-PDEBUG:ANY:0:0
ZERO? PRSO /?CCL3
ZERO? IDEBUG /?PRT4
SET 'IDEBUG,0
JUMP ?PRE6
?PRT4: SET 'IDEBUG,1
?PRE6: PRINTC 123
PRINTN IDEBUG
PRINTR "}"
?CCL3: ZERO? P-DBUG /?PRT9
SET 'P-DBUG,0
JUMP ?PRE11
?PRT9: SET 'P-DBUG,1
?PRE11: ZERO? P-DBUG /?CCL8
PRINTR "Find them bugs, boss!"
?CCL8: PRINTR "No bugs left, eh?"
.FUNCT VERB-ALL-TEST:ANY:2:2,O,I,L
LOC O >L
FSET? O,FL-NO-ALL /FALSE
EQUAL? PRSA,V?DROP \?CCL5
FSET? O,FL-WORN /FALSE
EQUAL? L,WINNER /TRUE
RFALSE
?CCL5: EQUAL? PRSA,V?PUT,V?PUT-IN \?CCL12
EQUAL? O,I /FALSE
FSET? O,FL-WORN /FALSE
IN? O,I /FALSE
RTRUE
?CCL12: EQUAL? PRSA,V?TAKE \?CCL21
CALL RT-META-IN?,WINNER,O
ZERO? STACK \FALSE
IN? O,WINNER /FALSE
ZERO? I \?CCL28
CALL RT-META-IN?,O,WINNER
ZERO? STACK \FALSE
?CCL28: FSET? O,FL-WORN /FALSE
FSET? O,FL-TAKEABLE \FALSE
ZERO? I /?CCL36
EQUAL? L,I \FALSE
?CCL36: EQUAL? L,HERE /TRUE
FSET? L,FL-PERSON /TRUE
FSET? L,FL-SURFACE /TRUE
FSET? L,FL-CONTAINER \FALSE
FSET? L,FL-OPEN /TRUE
RFALSE
?CCL21: ZERO? I /TRUE
EQUAL? O,I /FALSE
RTRUE
.FUNCT FIX-HIM-HER-IT:ANY:2:2,PRON,OBJ
ZERO? OBJ \?CCL3
ICALL1 MORE-SPECIFIC
RFALSE
?CCL3: CALL2 ACCESSIBLE?,OBJ
ZERO? STACK \?CCL5
EQUAL? PRON,PRSO \?PRD9
CALL2 EVERYWHERE-VERB?,1
ZERO? STACK /?CTR4
?PRD9: EQUAL? PRON,PRSI \?CCL5
CALL2 EVERYWHERE-VERB?,2
ZERO? STACK \?CCL5
?CTR4: ICALL2 NOT-HERE,OBJ
RFALSE
?CCL5: EQUAL? PRSO,PRON \?CND14
SET 'PRSO,OBJ
ICALL TELL-PRONOUN,OBJ,PRON
?CND14: EQUAL? PRSI,PRON \?CND16
SET 'PRSI,OBJ
ICALL TELL-PRONOUN,OBJ,PRON
?CND16: EQUAL? PRSS,PRON \TRUE
SET 'PRSS,OBJ
ICALL TELL-PRONOUN,OBJ,PRON
RTRUE
.FUNCT TELL-PRONOUN:ANY:2:2,OBJ,PRON
FSET? PRON,TOUCHBIT /FALSE
EQUAL? OPRSO,OBJ /FALSE
EQUAL? PRSA,V?DO? /FALSE
PRINTI "["""
ICALL2 RT-PRINT-DESC,PRON
PRINTI """ meaning "
ICALL2 TELL-THE,OBJ
PRINTR "]"
.FUNCT NO-M-WINNER-VERB?:ANY:0:0
GET NO-M-WINNER-VERB-TABLE,0
INTBL? PRSA,NO-M-WINNER-VERB-TABLE+2,STACK /TRUE
RFALSE
.FUNCT FIND-A-WINNER:ANY:0:1,RM,WHO
ASSIGNED? 'RM /?CND1
SET 'RM,HERE
?CND1: ZERO? QCONTEXT /?CCL5
IN? QCONTEXT,RM \?CCL5
RETURN QCONTEXT
?CCL5: CALL FIND-FLAG,HERE,FL-PERSON,CH-PLAYER >WHO
ZERO? WHO /?CCL9
RETURN WHO
?CCL9: CALL FIND-FLAG,HERE,FL-ALIVE,CH-PLAYER >WHO
ZERO? WHO /FALSE
RETURN WHO
.FUNCT TELL-SAID-TO:ANY:1:1,PER
PRINTI "[said to"
ICALL RT-PRINT-OBJ,PER,K-ART-THE
PRINTC 93
CRLF
RTRUE
.FUNCT QCONTEXT-GOOD?:ANY:0:0
ZERO? QCONTEXT /FALSE
FSET? QCONTEXT,PERSONBIT \FALSE
CALL2 META-LOC,QCONTEXT
EQUAL? HERE,STACK \FALSE
RETURN QCONTEXT
.FUNCT META-LOC:ANY:1:2,OBJ,INV,L
LOC OBJ >L
?PRG1: EQUAL? FALSE-VALUE,OBJ,L /FALSE
EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS,GENERIC-OBJECTS \?CCL7
RETURN L
?CCL7: IN? OBJ,ROOMS \?CCL9
RETURN OBJ
?CCL9: ZERO? INV /?CND10
FSET? OBJ,INVISIBLE /FALSE
?CND10: SET 'OBJ,L
LOC OBJ >L
JUMP ?PRG1
.FUNCT CANT-UNDO:ANY:0:0
PRINTR "[I can't undo that now.]"
.FUNCT SEE-VERB?:ANY:0:0
EQUAL? PRSA,V?EXAMINE,V?LOOK,V?LOOK-IN /TRUE
EQUAL? PRSA,V?LOOK-ON /TRUE
RFALSE
.FUNCT PERFORM:ANY:1:3,PA,PO,PI,V,OA,OO,OI,OQ,OS,X,?TMP1,?TMP2
SET 'OA,PRSA
SET 'OO,PRSO
SET 'OI,PRSI
ZERO? OO /?CCL3
EQUAL? OO,PI \?CCL3
SET 'OBJ-SWAP,TRUE-VALUE
JUMP ?CND1
?CCL3: ZERO? OI /?CCL7
EQUAL? OI,PO \?CCL7
SET 'OBJ-SWAP,TRUE-VALUE
JUMP ?CND1
?CCL7: SET 'OBJ-SWAP,FALSE-VALUE
?CND1: SET 'PRSA,PA
SET 'PRSI,PI
SET 'PRSO,PO
ZERO? P-DBUG /?CND10
PRINTI "{Perform: A="
PRINTN PA
ZERO? PO /?CND12
PRINTI "/O="
EQUAL? PRSA,V?WALK \?CCL16
PRINTN PO
JUMP ?CND12
?CCL16: ICALL2 TELL-D-LOC,PO
?CND12: ZERO? PI /?CND17
PRINTI "/I="
ICALL2 TELL-D-LOC,PI
?CND17: ZERO? PRSQ /?CND19
PRINTI "/Q="
PRINTN PRSQ
?CND19: ZERO? PRSS /?CND21
PRINTI "/S="
ICALL2 TELL-D-LOC,PRSS
?CND21: PRINTI "}
"
?CND10: SET 'V,FALSE-VALUE
ZERO? PRSS /?CND23
ICALL2 THIS-IS-IT,PRSS
?CND23: ZERO? PRSI /?CND25
ICALL2 THIS-IS-IT,PRSI
?CND25: ZERO? PRSO /?CND27
EQUAL? PRSA,V?TELL /?CND27
EQUAL? PRSA,V?WALK /?CND27
ICALL2 THIS-IS-IT,PRSO
?CND27: EQUAL? WINNER,PLAYER /?CND32
ICALL2 THIS-IS-IT,WINNER
?CND32: SET 'PO,PRSO
SET 'PI,PRSI
CALL1 NO-M-WINNER-VERB?
ZERO? STACK \?CND34
GETP WINNER,P?ACTION
CALL D-APPLY,STR?49,STACK,M-WINNER >V
?CND34: ZERO? PRSS /?CND37
ZERO? V \?CND39
GETP PRSS,P?ACTION
CALL D-APPLY,STR?50,STACK,M-SUBJ >V
?CND39: ZERO? V \?CND41
ZERO? PRSQ /?CND41
GET ACTIONS,PA >?TMP2
ADD QACTIONS,2 >?TMP1
GET QACTIONS,0
INTBL? ?TMP2,?TMP1,STACK >X \?CND41
GET X,2
CALL D-APPLY,STR?51,STACK >V
?CND41: ZERO? V \?CND47
ZERO? PRSQ /?CCL51
GET ACTIONS,PA >?TMP2
ADD QACTIONS,2 >?TMP1
GET QACTIONS,0
INTBL? ?TMP2,?TMP1,STACK >X \?CND52
GET X,1 >X
ZERO? X /?CND52
CALL D-APPLY,FALSE-VALUE,X >V
?CND52: ZERO? V \?CND47
GET ACTIONS,PRSQ
CALL D-APPLY,FALSE-VALUE,STACK >V
JUMP ?CND47
?CCL51: ICALL D-APPLY,FALSE-VALUE,V-STATEMENT
?CND47: EQUAL? M-FATAL,V \?CND58
SET 'P-CONT,-1
?CND58: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
?CND37: ZERO? V \?CND60
LOC WINNER
IN? STACK,ROOMS /?CND60
LOC WINNER
GETP STACK,P?ACTION
CALL D-APPLY,STR?52,STACK,M-BEG >V
?CND60: ZERO? V \?CND64
GETP HERE,P?ACTION
CALL D-APPLY,STR?52,STACK,M-BEG >V
?CND64: ZERO? V \?CND66
GET PREACTIONS,PA
CALL D-APPLY,STR?51,STACK >V
?CND66: SET 'NOW-PRSI,1
ZERO? V \?CND68
ZERO? PI /?CND68
EQUAL? PRSA,V?WALK /?CND68
LOC PI
ZERO? STACK /?CND68
LOC PI
GETP STACK,P?CONTFCN >V
ZERO? V /?CND68
CALL D-APPLY,STR?53,V,M-CONTAINER >V
?CND68: ZERO? V \?CND76
ZERO? PI /?CND76
EQUAL? PI,GLOBAL-HERE \?CND80
GETP HERE,P?ACTION
CALL D-APPLY,STR?54,STACK >V
?CND80: ZERO? V \?CND76
GETP PI,P?ACTION
CALL D-APPLY,STR?54,STACK >V
?CND76: SET 'NOW-PRSI,0
ZERO? V \?CND84
ZERO? PO /?CND84
EQUAL? PRSA,V?WALK /?CND84
LOC PO
ZERO? STACK /?CND84
LOC PO
GETP STACK,P?CONTFCN >V
ZERO? V /?CND84
CALL D-APPLY,STR?53,V,M-CONTAINER >V
?CND84: ZERO? V \?CND92
ZERO? PO /?CND92
EQUAL? PRSA,V?WALK /?CND92
EQUAL? PO,GLOBAL-HERE \?CND97
GETP HERE,P?ACTION
CALL D-APPLY,STR?55,STACK >V
?CND97: ZERO? V \?CND92
GETP PO,P?ACTION
CALL D-APPLY,STR?55,STACK >V
?CND92: ZERO? V \?CND101
GET ACTIONS,PA
CALL D-APPLY,FALSE-VALUE,STACK >V
?CND101: EQUAL? M-FATAL,V \?CND104
SET 'P-CONT,-1
?CND104: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT TELL-TOO-DARK:ANY:0:0
PRINT TOO-DARK
RETURN M-FATAL
.FUNCT ITAKE-CHECK:ANY:2:2,OBJ,BITS,TAKEN,V
CALL HELD?,OBJ,WINNER
ZERO? STACK \FALSE
EQUAL? OBJ,TH-HANDS,ROOMS /FALSE
FSET? OBJ,FL-TRY-TAKE /?CND6
CALL RT-META-IN?,OBJ,WINNER
ZERO? STACK /?CND6
CALL RT-META-IN?,WINNER,OBJ
ZERO? STACK \?CND6
BTST BITS,32 \?CND6
CALL ITAKE,OBJ,FALSE-VALUE >V
ZERO? V /?CND6
EQUAL? V,M-FATAL /?CND6
SET 'TAKEN,TRUE-VALUE
?CND6: ZERO? TAKEN \FALSE
BTST BITS,64 \FALSE
ICALL2 THIS-IS-IT,OBJ
PRINTC 91
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't holding"
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
PRINTR ".]"
.FUNCT TELL-D-LOC:ANY:1:1,OBJ
PRINTD OBJ
IN? OBJ,GLOBAL-OBJECTS \?CCL3
PRINTI "(gl)"
JUMP ?CND1
?CCL3: IN? OBJ,LOCAL-GLOBALS \?CCL5
PRINTI "(lg)"
JUMP ?CND1
?CCL5: IN? OBJ,ROOMS \?CND1
PRINTI "(rm)"
?CND1: EQUAL? OBJ,INTNUM \FALSE
PRINTC 40
PRINTN P-NUMBER
PRINTC 41
RTRUE
.FUNCT D-APPLY:ANY:2:3,STR,FCN,FOO,RES
ZERO? FCN /FALSE
ZERO? P-DBUG /?CND4
ZERO? STR \?CCL8
PRINTI "{Action:}
"
JUMP ?CND4
?CCL8: PRINTC 123
PRINT STR
EQUAL? STR,STR?49 \?CND9
PRINTC 61
ICALL2 RT-PRINT-DESC,WINNER
?CND9: PRINTI ": "
?CND4: ZERO? FOO /?CCL13
CALL FCN,FOO >RES
JUMP ?CND11
?CCL13: CALL FCN >RES
?CND11: ZERO? P-DBUG /?CND14
ZERO? STR /?CND14
EQUAL? M-FATAL,RES /?CTR19
EQUAL? P-CONT,-1 \?CCL20
?CTR19: PRINTI "Fatal}
"
RETURN RES
?CCL20: ZERO? RES \?CCL24
PRINTI "Not handled}
"
RETURN RES
?CCL24: PRINTI "Handled}
"
?CND14: RETURN RES
.FUNCT CAPITAL-NOUN?:ANY:1:1,NAM
EQUAL? NAM,W?COFFEY,W?LINDSEY /TRUE
RFALSE
.FUNCT NOT-HERE:ANY:1:2,OBJ,CLOCK
ZERO? CLOCK \?CND1
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTC 91
?CND1: ICALL RT-PRINT-OBJ,OBJ,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't "
CALL2 VISIBLE?,OBJ
ZERO? STACK /?CCL5
PRINTI "close enough"
CALL1 SPEAKING-VERB?
ZERO? STACK /?CND3
PRINTI " to hear you"
JUMP ?CND3
?CCL5: PRINTI "here"
?CND3: PRINTC 46
ICALL2 THIS-IS-IT,OBJ
ZERO? CLOCK \?CND8
PRINTC 93
?CND8: CRLF
RTRUE
.FUNCT SPEAKING-VERB?:ANY:0:0
EQUAL? PRSA,V?ASK-ABOUT,V?TALK-TO,V?TELL /TRUE
EQUAL? PRSA,V?TELL-ABOUT /TRUE
RFALSE
.FUNCT GET-OWNER:ANY:1:1,OBJ,TMP,NP
CALL2 GET-NP,OBJ >NP
ZERO? NP /FALSE
GET NP,4 >TMP
ZERO? TMP \?CTR5
GET NP,1 >TMP
ZERO? TMP /?CCL6
GET TMP,2 >TMP
ZERO? TMP /?CCL6
?CTR5: LESS? 0,TMP \FALSE
GRTR? TMP,LAST-OBJECT /FALSE
RETURN TMP
?CCL6: GETP OBJ,P?OWNER >TMP
ZERO? TMP /FALSE
LESS? 0,TMP \?CCL17
GRTR? TMP,LAST-OBJECT \FALSE
?CCL17: RETURN PLAYER
.FUNCT GET-NP:ANY:0:1,OBJ,PRSI?
SET 'PRSI?,NOW-PRSI
EQUAL? OBJ,FALSE-VALUE,PRSO,PRSI \FALSE
ZERO? OBJ /?CND1
EQUAL? OBJ,PRSO \?CCL7
SET 'PRSI?,FALSE-VALUE
JUMP ?CND1
?CCL7: SET 'PRSI?,TRUE-VALUE
?CND1: ZERO? OBJ-SWAP /?CCL10
ZERO? PRSI? /?CCL13
RETURN PRSO-NP
?CCL13: RETURN PRSI-NP
?CCL10: ZERO? PRSI? /?CCL15
RETURN PRSI-NP
?CCL15: RETURN PRSO-NP
.FUNCT NOUN-USED?:ANY:2:4,OBJ,WD1,WD2,WD3,X
CALL2 GET-NP,OBJ >X
ZERO? X /FALSE
GET X,2 >X
ZERO? X /FALSE
EQUAL? X,WD1,WD2,WD3 /TRUE
RFALSE
.FUNCT ADJ-USED?:ANY:2:4,OBJ,WD1,WD2,WD3,NP,CT
CALL2 GET-NP,OBJ >NP
GET NP,1 >NP
ZERO? NP /?CCL3
GET NP,2
EQUAL? PLAYER,STACK \?CCL6
EQUAL? W?MY,WD1,WD2,WD3 \?CCL6
RETURN W?MY
?CCL6: GET NP,4 >CT
GRTR? CT,0 \?CCL10
ADD NP,10 >NP
INTBL? WD1,NP,CT \?CCL13
RETURN WD1
?CCL13: ZERO? WD2 /FALSE
INTBL? WD2,NP,CT \?CCL18
RETURN WD2
?CCL18: ZERO? WD3 /FALSE
INTBL? WD3,NP,CT \FALSE
RETURN WD3
?CCL10: EQUAL? WD1,FALSE-VALUE /TRUE
RFALSE
?CCL3: EQUAL? WD1,FALSE-VALUE /TRUE
RFALSE
.ENDSEG
.ENDI

78
util.zabstr Normal file
View File

@ -0,0 +1,78 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<SYNTAX $STEAL OBJECT (EVERYWHERE) = V-$STEAL>
<DEFINE-ROUTINE V-$STEAL>
<SYNTAX $GOTO OBJECT (EVERYWHERE) = V-$GOTO>
<DEFINE-ROUTINE V-$GOTO>
<DEFINE-ROUTINE V-VERSION>
<CONSTANT K-MACHINE-NAME-TBL <TABLE (PURE LENGTH) "Debugging" "Apple IIe"
"Macintosh" "Amiga" "Atari ST" "IBM" "Commodore 128" "Commodore 64" "Apple IIc"
"Apple IIgs">>
<VERB-SYNONYM COLOR COLOUR>
<SYNTAX COLOR = V-COLOR>
<GLOBAL GL-COLOR-NOTE <> <> BYTE>
<GLOBAL GL-F-COLOR 1 <> BYTE>
<GLOBAL GL-B-COLOR 1 <> BYTE>
<DEFINE-ROUTINE V-COLOR>
<DEFINE-ROUTINE RT-DO-COLOR>
<DEFINE-ROUTINE RT-PICK-COLOR>
<CONSTANT K-TYPE-NUMBER-MSG "Please press a number from 1 to ">
<CONSTANT K-COLOR-TABLE <TABLE (PURE) "no change" "the standard color" "black"
"red" "green" "yellow" "blue" "magenta" "cyan" "white">>
<DEFINE-ROUTINE MAC-II?>
<DEFINE-ROUTINE Y?>
<DEFINE-ROUTINE RT-CHECK-ADJ>
<DEFINE-ROUTINE RT-UPDATE-ADJ>
<DEFINE-ROUTINE RT-SCORE-MSG>
<DEFINE-ROUTINE RT-SCORE-OBJ>
<GLOBAL GL-SCORE 0 <> BYTE>
<DEFINE-ROUTINE V-SCORE>
<DEFINE-ROUTINE V-DIAGNOSE>
<DEFINE-ROUTINE RT-WORD-NUMBERS>
<DEFINE-ROUTINE RT-END-OF-GAME>
<DEFINE-ROUTINE RT-COMMA-MSG>
<DEFINE-ROUTINE FIND-FLAG-LG>
<DEFINE-ROUTINE FIND-FLAG>
<DEFINE-ROUTINE RT-ALREADY-MSG>
<DEFINE-ROUTINE RT-META-IN?>
<DEFINE-ROUTINE NO-NEED>
<DEFINE-ROUTINE RT-YOU-CANT-MSG>
<DEFINE-ROUTINE HAR-HAR>
<DEFINE-ROUTINE RT-IMPOSSIBLE-MSG>
<DEFINE-ROUTINE WONT-HELP>
<DEFINE-ROUTINE PICK-ONE>
<DEFINE-ROUTINE GLOBAL-IN?>
<DEFINE-ROUTINE RT-FIRST-YOU-MSG>
<DEFINE-ROUTINE RT-SEE-INSIDE?>
<DEFINE-ROUTINE RT-SEE-ANYTHING-IN?>
<DEFINE-ROUTINE RT-MOVE-ALL>
<DEFINE-ROUTINE RT-MOVE-ALL-BUT-WORN>
<DEFINE-ROUTINE RT-MOVE-ALL-WORN>
<CONSTANT K-NOT-LIKELY-TBL <TABLE (PATTERN (BYTE WORD)) <BYTE 1> <TABLE (PURE
LENGTH) "isn't likely" "seems doubtful" "seems unlikely" "doesn't seem likely">
>>
<DEFINE-ROUTINE RT-NOT-LIKELY-MSG>
<CONSTANT K-NO-POINT-TBL <TABLE (PATTERN (BYTE WORD)) <BYTE 1> <TABLE (PURE
LENGTH) "not do anything useful" "accomplish nothing"
"have no desirable effect" "not be very productive" "serve no purpose"
"be pointless">>>
<DEFINE-ROUTINE RT-NO-POINT-MSG>
<CONSTANT K-UNUSUAL-TBL <TABLE (PATTERN (BYTE WORD)) <BYTE 1> <TABLE (PURE
LENGTH) "unusual" "special" "interesting" "important" "of interest"
"out of the ordinary">>>
<DEFINE-ROUTINE RT-PICK-NEXT>
<CONSTANT K-TOO-DARK-MSG "It's too dark to see.">
<CONSTANT K-TALK-TO-SELF-MSG "[Talking to yourself is a bad sign.]">
<DEFINE-ROUTINE RT-NO-RESPONSE-MSG>
<DEFINE-ROUTINE RT-FOOLISH-TO-TALK?>
<DEFINE-ROUTINE RT-WASTE-OF-TIME-MSG>
<CONSTANT K-HOW-INTEND-MSG "[How do you intend to do that?]">
<SYNTAX $P OBJECT = V-$P>
<DEFINE-ROUTINE V-$P>
<DEFINE-ROUTINE RT-CENTER-PIC>
<SYNTAX $D OBJECT = V-$D>
<DEFINE-ROUTINE V-$D>
<SYNTAX $SHOW = V-$SHOW>
<DEFINE-ROUTINE V-$SHOW>
<SYNTAX $W OBJECT = V-$W>
<DEFINE-ROUTINE V-$W>

1036
util.zap Normal file

File diff suppressed because it is too large Load Diff

1569
util.zil Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More