Modifying Beyond The Titanic to compile with the Free Pascal compiler and run on...
authorJason Self <j@jxself.org>
Sat, 10 May 2014 21:01:58 +0000 (14:01 -0700)
committerJason Self <j@jxself.org>
Sat, 10 May 2014 21:01:58 +0000 (14:01 -0700)
BUILD [new file with mode: 0644]
agpl-3.0.txt [new file with mode: 0644]
src/ADPARSER.PAS
src/BEYOND.PAS
src/COMMANDS.PAS
src/OBJECTS.PAS
src/WORDLIST.PAS

diff --git a/BUILD b/BUILD
new file mode 100644 (file)
index 0000000..0f6fd95
--- /dev/null
+++ b/BUILD
@@ -0,0 +1,30 @@
+In order to compile this game you need a Pascal compiler. The Free Pascal 
+Compiler works: http://freepascal.org/ 
+
+Your GNU/Linux distro may already have it packaged. In the Trisquel GNU/Linux 
+distro for example: sudo apt-get install fpc
+
+To compile it then run:
+fpc src/BEYOND.PAS
+
+The binary will be named BEYOND and stored in the src directory.
+
+--
+Copyright (C) 2014 Jason Self <j@jxself.org>
+
+This file is free software: you may copy, redistribute and/or modify it  
+under the terms of the GNU Affero General Public License as published by the  
+Free Software Foundation, either version 3 of the License, or (at your 
+option) any later version.  
+
+This file is distributed in the hope that it will be useful, but WITHOUT ANY 
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
+A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 
+details.  
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, see https://gnu.org/licenses or write to:
+  Free Software Foundation, Inc.
+  51 Franklin Street, Fifth Floor
+  Boston, MA 02110-1301
+  USA
diff --git a/agpl-3.0.txt b/agpl-3.0.txt
new file mode 100644 (file)
index 0000000..dba13ed
--- /dev/null
@@ -0,0 +1,661 @@
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
index e3162d4ecf5f56645eae973b539fa703704198d7..863dca1cdfcf1d4d1c9788dc13856ce86b663d5b 100644 (file)
@@ -1,21 +1,46 @@
 {//-------------------------------------------------------------------------}\r
 {/*                                                                         }\r
 {//-------------------------------------------------------------------------}\r
 {/*                                                                         }\r
+{Copyright (C) 2014 Jason Self <j@jxself.org>                               }\r
+{                                                                           }\r
+{This file is free software: you may copy, redistribute and/or modify it    }\r
+{under the terms of the GNU Affero General Public License as published by   }\r
+{the Free Software Foundation, either version 3 of the License, or (at your }\r
+{option) any later version.                                                 }\r
+{                                                                           }\r
+{This file is distributed in the hope that it will be useful, but WITHOUT   }\r
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }\r
+{FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License}\r
+{for more details.                                                          }\r
+{                                                                           }\r
+{You should have received a copy of the GNU Affero General Public License   }\r
+{along with this program; if not, see https://gnu.org/licenses or write to: }\r
+{  Free Software Foundation, Inc.                                           }\r
+{  51 Franklin Street, Fifth Floor                                          }\r
+{  Boston, MA 02110-1301                                                    }\r
+{  USA                                                                      }\r
+{                                                                           }\r
+{This file incorporates work covered by the following copyright and         }\r
+{permission notice:                                                         }\r
+{                                                                           }\r
 {Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
 {                                                                           }\r
 {Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
 {                                                                           }\r
-{This file is part of Supernova.  Supernova is free software; you can       }\r
-{redistribute it and/or modify it under the terms of the GNU General Public }\r
-{License as published by the Free Software Foundation; either version 3     }\r
-{of the License, or (at your option) any later version.                     }\r
+{This file is part of Beyond The Titanic. Beyond The Titanic is free        }\r
+{software; you can redistribute it and/or modify it under the terms of the  }\r
+{GNU General Public License as published by the Free Software Foundation;   }\r
+{either version 3 of the License, or (at your option) any later version.    }\r
 {                                                                           }\r
 {                                                                           }\r
-{This program is distributed in the hope that it will be useful,            }\r
-{but WITHOUT ANY WARRANTY; without even the implied warranty of             }\r
-{MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }\r
+{This program is distributed in the hope that it will be useful, but WITHOUT}\r
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }\r
+{FITNESS FOR A PARTICULAR PURPOSE.                                          }\r
 {                                                                           }\r
 {See the GNU General Public License for more details.                       }\r
 {                                                                           }\r
 {You should have received a copy of the GNU General Public License          }\r
 {                                                                           }\r
 {See the GNU General Public License for more details.                       }\r
 {                                                                           }\r
 {You should have received a copy of the GNU General Public License          }\r
-{along with this program; if not, write to the Free Software                }\r
-{Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.}\r
+{along with this program; if not, write to:                                 }\r
+{  Free Software Foundation, Inc.                                           }\r
+{  51 Franklin Street, Fifth Floor                                          }\r
+{  Boston, MA 02110-1301                                                    }\r
+{  USA                                                                      }\r
 {                                                                           }\r
 {Original Source: 1990 Scott Miller                                         }\r
 {Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
 {                                                                           }\r
 {Original Source: 1990 Scott Miller                                         }\r
 {Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
 \r
 procedure  RR(RoomNum : integer);\r
     begin FlagSA:='s';\r
 \r
 procedure  RR(RoomNum : integer);\r
     begin FlagSA:='s';\r
-      seek(rooms1,RoomNum);seek(rooms2,RoomNum);\r
-      READ(rooms1,text1);READ(rooms2,text2);\r
-      writeln(text1,text2);\r
+    reset(rooms1);\r
+    seek(rooms1,RoomNum);\r
+    reset(rooms2);\r
+    seek(rooms2,RoomNum);\r
+    READ(rooms1,text1);\r
+    READ(rooms2,text2);\r
+    {window(1,1,25,80);}\r
+    writeln(text1,text2);\r
     end; {of RoomRead}\r
 \r
 \r
 procedure  RS(RoomNum : integer);\r
    begin\r
     end; {of RoomRead}\r
 \r
 \r
 procedure  RS(RoomNum : integer);\r
    begin\r
+{   writeln('RS');   }\r
      FlagSA:='s';\r
      FlagSA:='s';\r
-     seek(Special1,RoomNum);seek(Special2,RoomNum);\r
-     READ(Special1,text1);READ(Special2,text2);\r
+     seek(Special1,RoomNum);\r
+     seek(Special2,RoomNum);\r
+     READ(Special1,text1);\r
+     READ(Special2,text2);\r
      writeln(text1,text2);\r
    end;  {of SpecialRead}\r
 \r
      writeln(text1,text2);\r
    end;  {of SpecialRead}\r
 \r
@@ -356,4 +389,3 @@ procedure Check(var SepWord : Str14);
   end;  {of Check}\r
 \r
 {***************************** END OF ADPARSER ******************************}\r
   end;  {of Check}\r
 \r
 {***************************** END OF ADPARSER ******************************}\r
-\1a\r
index bd2b4f79aa69c70963325a06fd45f9a5f1dbbda6..6908e195f4d9ccb0d878e49e7815419537c30751 100644 (file)
-{//-------------------------------------------------------------------------}\r
-{/*                                                                         }\r
-{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
-{                                                                           }\r
-{This file is part of Supernova.  Supernova is free software; you can       }\r
-{redistribute it and/or modify it under the terms of the GNU General Public }\r
-{License as published by the Free Software Foundation; either version 3     }\r
-{of the License, or (at your option) any later version.                     }\r
-{                                                                           }\r
-{This program is distributed in the hope that it will be useful,            }\r
-{but WITHOUT ANY WARRANTY; without even the implied warranty of             }\r
-{MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }\r
-{                                                                           }\r
-{See the GNU General Public License for more details.                       }\r
-{                                                                           }\r
-{You should have received a copy of the GNU General Public License          }\r
-{along with this program; if not, write to the Free Software                }\r
-{Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.}\r
-{                                                                           }\r
-{Original Source: 1990 Scott Miller                                         }\r
-{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
-{*/                                                                         }\r
-{//-------------------------------------------------------------------------}\r
-{****************************************************************************}\r
-{*                          BEYOND THE TITANIC                              *}\r
-{*    Written by Scott Miller with Turbo Pascal V.2.  Began May 12, '84.    *}\r
-{*                           Shareware Version                              *}\r
-{*                             Copyright 1987                               *}\r
-{$C-,K-,V-,R-****************************************************************}\r
-\r
-{ Last modified: July 23, 1987 }\r
-\r
-const\r
-     Q        = '#';\r
-     VMax     = 65;\r
-     NMax     = 89;\r
-     RMax     = 76;\r
-     Null     = -1;\r
-\r
-type\r
-     ComSet         = set of 0..VMax;\r
-     CharSet        = set of Char;\r
-     PlayersObjects = set of 0..NMax;\r
-     Str14          = string[14];\r
-     Str80          = string[80];\r
-     Str240         = string[240];\r
-     SaveGame       = record\r
-       aInven,\r
-       aKitSet,\r
-       aCabiSet  :PlayersObjects;\r
-       aPanelCon,\r
-       aSlotCon,\r
-       aCompCon,\r
-       aRopeCon,\r
-       aTic,\r
-       aYearDial,\r
-       aPrm,\r
-       aMnRm,\r
-       aSc,\r
-       aShots,\r
-       aShRm,\r
-       aRx       :integer;\r
-       aEv       :CharSet;\r
-       aCode,\r
-       aLoc      :Str14;\r
-       aKeyHole  :boolean;\r
-      end;\r
-\r
-var\r
-     WordList       : file of Str14;\r
-     Things         : file of integer;\r
-     Objects        : file of PlayersObjects;\r
-     GameSave       : file of SaveGame;\r
-     DiskSave       : SaveGame;\r
-     Input,\r
-     Again,\r
-     Line           : Str80;\r
-     V{erb}         : array [0..VMax,1..5] of Str14;\r
-     N{oun}         : array [0..NMax,1..5] of Str14;\r
-     R{oom}         : array [0..NMax] of integer;\r
-     P{lace}        : array [0..RMax] of PlayersObjects;\r
-     RmSh           : set of 0..14;\r
-     OneWordCommands: Comset;\r
-     Mov{able},\r
-     Inven{tory},\r
-     KitSet,\r
-     CabiSet        : PlayersObjects;\r
-     Word,\r
-     LastNoun,\r
-     Drive,\r
-     Code,\r
-     Loc{ation},\r
-     SepWord        : Str14;\r
-     Rooms1, Rooms2,\r
-     Special1, Special2 : file of Str240;\r
-     Text1, Text2   : Str240;\r
-     Line1          : file of Str80;\r
-     Verb,\r
-     Noun, Noun2,\r
-     PanelCon,\r
-     RopeCon,\r
-     CompCon,\r
-     SlotCon,\r
-     RopeOld,\r
-     Tic,\r
-     YearDial,\r
-     DayDial,\r
-     Prm,  {Player Room}\r
-     MnRm, {Monster Room}\r
-     Sc{ore},\r
-     Shots,\r
-     DialNum,\r
-     Stuff,\r
-     ShRm, {Shuttle Room}\r
-     m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,\r
-     Rx, {deserted road}\r
-     Ox, {ocean bottom}\r
-     x, y, o        : integer;\r
-     Flag,\r
-     FlagSA         : char;\r
-     Ev{ent}        : CharSet;\r
-     Attack,\r
-     Skip,\r
-     Back,\r
-     KeyHole,\r
-     Verbose        : boolean;\r
-\r
-\r
-\r
-{$Ia:AdParser.PAS}{  <--- Loads in sentence logic.    <*********************}\r
-\r
-\r
-{$Ia:Commands.PAS}{  <--- Loads in misc. procedures.  <*********************}\r
-\r
-\r
-{$Ia:WordList.PAS }{  <----- CALLS UP THE VERBS & NOUNS <*******************}\r
-\r
-\r
-{$Ia:Objects.PAS }{   <----- CALLS UP THE VERBS & NOUNS <*******************}\r
-\r
-\r
-{===================}\r
-overlay procedure DefaultAnswers1;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-22        :begin if(Prm in[59..68])then\r
-                  begin RmSh:=RmSh-[ShRm];RS(84)end;\r
-            if flasoff and (Prm in [6..24])then RL(54) else\r
-             if Verbose then DescribeRm\r
-              else begin Verbose:=true;DescribeRm;Verbose:=false;end;\r
-            if(23 in p[Prm])and(MnRm=Prm)then RL(357);\r
-            if Back then begin Attack:=False; Back:=False;end\r
-           end;\r
-\r
-18        :if inven=[] then RL(116)\r
-             else\r
-               begin\r
-                 writeln('You have in your possession...');\r
-                   for o:= 0 to NMax do\r
-                    begin\r
-                     if(o in inven)then\r
-                      if(o=74)then\r
-                       writeln('an ',n[o,1])else writeln('a ',n[o,1]);\r
-                     if(ropecon in inven)and(o=ropecon)then\r
-                      writeln('  The rope is tied to the ',n[o,1],'.');\r
-                     if(o=74)and(en('p'))then RL(174);\r
-                     if(o=89)and(en('i'))then RL(321);\r
-                    end;\r
-               end;\r
-\r
-11     :case noun of\r
-       60:Diagnose;\r
-       2:if(en('b'))then RL(198) else RL(199);\r
-       29:begin RL(89);if(en('a'))then RL(200) else RL(201);end;\r
-       57:if(ropecon<>Null)then\r
-            writeln('The rope is tied to the ',n[ropecon,1],'.')\r
-          else RL(133);\r
-       65:if(Prm in[59..68])then RS(84)else Line:='l';\r
-       8:RL(202);\r
-       7:RL(163);\r
-       70:RL(164);\r
-       52:RL(165);\r
-       74:RL(166);\r
-       23:RS(70);\r
-       32:RL(253);\r
-       13:RL(167);\r
-       22:RL(226);\r
-       1:if(Prm=42)and(13 in p[42])then RL(167);\r
-       21:RL(227);\r
-       9:if(Prm=49)then RL(228)else if(Prm>62)then RS(68)else RL(229);\r
-       69:RL(355);\r
-       77:RL(403);\r
-       37:RL(295);\r
-       27:RL(394);\r
-       89:RL(338);\r
-       18:if(Prm in[63..70])then RS(68)else RL(348);\r
-       46,66:If(Prm in[58,59,63,69])then begin\r
-       TextColor(12);RS(83);TextColor(m2)end;\r
-       87:RL(230);\r
-       84:RL(231);\r
-       34:begin RL(189);\r
-           if(Shots>0)then writeln('is about ',Shots*10,' percent full.')\r
-           else Writeln('is empty.')end;\r
-       15:if(84 in p[Prm])then RL(180)else If(71 in p[Prm])then RL(182)\r
-          else RL(181);\r
-    56,44:if(en('r'))then RL(51) else RL(52)\r
-       else if not(noun in[1,12,14,15,17,18,19,22,31,36,50,\r
-             54,67,69,73,79,80,84,87,88])and(random(3)=1)then\r
-            case random(3) of\r
-             0  :RL(407);\r
-             1  :writeln('Yea, it''s definitely a ',n[noun,1],'!');\r
-             2  :writeln('It looks like any other ',n[noun,1],'.');\r
-            end\r
-            else writeln('You see nothing special about the ',n[noun,1],'.')\r
-       end;\r
-\r
-41         :begin writeln('Time passes');y:=wherey;for o:=1 to 6 do\r
-              begin gotoxy(11+o,y-1);writeln('.');sound(o*99);delay(30)end;\r
-              if(Prm in[59..68])then sound(20)else nosound end;\r
-\r
-43..52     :if(Prm in[6..24])and(FlasOff)then RL(14)else\r
-             if(Prm=69)then RL(358)else RL(144);\r
-\r
-57,58      :begin Attack:=False;\r
-             if(Prm in[6..24])and(FlasOff)then RL(14)else RL(190);end;\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers1}\r
-{-------------------}\r
-overlay procedure DefaultAnswers2;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-29    :if(noun in Mov)then\r
-        if(noun in inven)then\r
-         begin FlagSA:='r';\r
-          case Noun2 of\r
-        39:if(en('o'))then begin RL(186);Vanish(noun);\r
-            kitset:=kitset+[noun];r[noun]:=Prm;end\r
-           else RL(185);\r
-        68:if(Prm=34)then\r
-            if(SlotCon=Null)then begin RL(186);Vanish(noun);\r
-             SlotCon:=Noun;r[noun]:=Prm;end\r
-            else Say(68,'being used')\r
-           else\r
-            if(noun=63)and(Prm=58)then\r
-             begin RL(337);KeyHole:=True;r[63]:=Prm;inven:=inven-[63];end\r
-            else RL(327);\r
-        88:begin RL(293);vanish(noun);r[noun]:=random(4)+51;end;\r
-        47,53,73:if(Prm in[0..6,9,10,13,41..43])then\r
-           begin RL(307);vanish(noun);end;\r
-        11:if(en('k'))then begin RL(186);Vanish(noun);\r
-            CabiSet:=CabiSet+[noun];r[noun]:=Prm;end\r
-           else RL(187);\r
-        26:if(Prm=76)and(noun=57)then begin RL(409);Vanish(57)end;\r
-        49:if(PanelCon=Null)and(noun in[2,7,8,13,27,32,51,52,63,77])then\r
-            begin RL(186);Vanish(noun);PanelCon:=Noun;r[noun]:=Prm;end\r
-           else RL(188);\r
-        30:if(noun=70)then\r
-            if not(en('d'))then\r
-             begin Ev:=Ev+['d'];RL(69);Vanish(70);r[70]:=Prm;end\r
-            else Say(70,'in the dirt')\r
-           else Crazy\r
-          end;{of case}\r
-\r
-          if(FlagSA<>'s')then\r
-           begin\r
-            if(SepWord='to')then\r
-             if(noun2 in[4,6,9,11,14,16,22,30,50,59,61,64,65,69,75])then\r
-              begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
-             else RL(197);\r
-            if(SepWord='at')or(SepWord='near')or(SepWord='behind')then\r
-             if(noun2 in[0,4,6,9,11,12,14,16,17,20..23,26,28,30,35,39,43,\r
-                         50,53,54,59,61,62,64..69,72,73,75,78..80])then\r
-              begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
-             else RL(197);\r
-            if(SepWord='under')then\r
-             if(noun2 in[4,15,16,20,23,59,60,61,75])then\r
-              begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
-             else RL(197);\r
-            if(SepWord='in')then\r
-             if(noun2 in[6,16,43,47,30,50,59,64,65,72,78,80,84])then\r
-              begin RL(186);Vanish(noun);r[noun]:=Prm;end\r
-             else RL(197);\r
-            if(FlagSA<>'s')then Crazy;\r
-           end\r
-          end\r
-         else writeln('First you must have the ',n[noun,1],'.')\r
-        else Crazy;\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers2}\r
-{-------------------}\r
-overlay procedure DefaultAnswers3;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-31,63      :if(Verb=63)and(Prm<>MnRm)then RL(395)\r
-            else\r
-             if(Prm=MnRm)then\r
-              begin Attack:=False;\r
-               if(input='hi')or(input='hello')or(input='bye')then RL(396)else\r
-               if(copy(input,1,6)='follow')then RL(397)else\r
-                case random(5) of\r
-                 0:RL(365);1:RL(398);2:RL(399);3:RL(400);4:RL(401)\r
-                end\r
-              end\r
-             else RL(123);\r
-\r
-33         :RL(124);\r
-\r
-38         :case noun of\r
-             83:RL(262);\r
-             23:begin RL(366);DropAll;Ev:=Ev+['r'];Attack:=False end\r
-             else RL(125);\r
-            end;\r
-\r
-16         :if(MnRm=Prm)then begin Attack:=False;RL(372)end else\r
-            if(en('r'))then RL(373)else\r
-            if(Prm<15)and(70 in p[12])then RL(374)else  RL(371);\r
-\r
-19         :if(noun=Null)then RL(136)else Crazy;\r
-24         :if(noun=7)then RL(422)else\r
-            if(noun in[26,6,7,22,36,17,50,65,73,74,80,79,30,84])then RL(126)\r
-            else Crazy;\r
-21         :RL(127);\r
-40         :Crazy;\r
-\r
-8          :if(noun in[73,80])or(noun=Null)then\r
-             if(noun<>Null)then RL(36)\r
-             else if(here(73))or(here(80))then RL(36)else RL(37)\r
-            else RL(53);\r
-\r
-12         :RL(38);\r
-2          :if(noun in[4,35,39,8,11,12,14,20,21,30,57,43,59,67,70,75])then\r
-              RL(43)else RL(44);\r
-\r
-15         :if(noun in mov)then\r
-             if(sepword='to')then\r
-              if(noun2=23)then\r
-               begin RL(62);Vanish(noun);Attack:=False end\r
-              else Crazy\r
-             else RL(60)\r
-            else RL(61);\r
-\r
-1          :if(verbose)then\r
-              begin verbose:=false;RL(134);end\r
-             else begin verbose:=true;RL(135);end;\r
-\r
-13         :RL(77);\r
-23         :RL(78);\r
-\r
-60         :case noun of\r
-            43,12:RL(252);\r
-            35:RL(288)\r
-            else RL(78);\r
-            end;\r
-\r
-25         :if(Prm>62)and(Noun in[9,18,19,41])then RL(350)else RL(78);\r
-34         :RL(79);\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers3}\r
-{-------------------}\r
-overlay procedure DefaultAnswers4;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-20         :RL(81);\r
-35         :RL(82);\r
-\r
-6          :if(noun=23)and(here(40))then begin vanish(40);RL(84);end\r
-             else\r
-              if here(40)then\r
-               if(noun2=Null)or(noun2=40)then\r
-                case noun of\r
-                 57:RL(259);\r
-                 60:RL(260)\r
-                 else writeln('At the last moment you decide to spare',\r
-                       ' the ',n[noun,1],'''s life!')\r
-                end\r
-               else Crazy\r
-              else RL(83);\r
-\r
-30         :if(noun in [39,43,12,26,6,22,47,49,68,78,17,11,\r
-               50,65,73,74,80,79,30])then RL(93) else RL(94);\r
-\r
-54         :begin write('Would you like to SAVE your game first (Y or N)?  ');\r
-             read(kbd,flag);if(upcase(flag)<>'N')then SAVE else writeln('No.');\r
-             write('Are you still sure you want to quit? ');\r
-             read(kbd,flag);if(upcase(flag)='Y')then\r
-              begin RL(367);delay(999);window(1,1,80,25);clrscr;close(rooms1);\r
-               close(rooms2);close(special1);close(special2);close(line1);\r
-              HALT end else RL(264)end;\r
-53         :if(Prm in[27,30])then RL(123) else RL(145);\r
-59         :If(noun=23)then RL(368)else Diagnose;\r
-\r
-55         :if(noun=74)then\r
-              if(en('p'))then\r
-                begin Ev:=Ev-['p'];RL(169);end\r
-              else RL(168)\r
-            else\r
-            if(noun=89)then\r
-              if(en('i'))then\r
-                begin\r
-                 Ev:=Ev-['i'];RL(322);\r
-                 if(Prm in[59,63..68])then begin RS(66);DEAD;end;\r
-                end\r
-              else RL(323)\r
-            else Crazy;\r
-\r
-56     :if(noun=Null)or(noun in[60,23])or(noun in Mov)then\r
-         case noun of\r
-          23:RL(369);\r
-          60,Null:RL(193);\r
-          7:RL(194)\r
-          else RL(195);\r
-         end\r
-        else RL(196);\r
-\r
-3       :case noun of\r
-         7:RL(235);\r
-         2:if(en('b'))then RL(236)else RL(237);\r
-         62:RL(238);\r
-         65:RL(239);\r
-         74:RL(240);\r
-         78:RL(241);\r
-         84,40,50,68,85:RL(242)\r
-         else Crazy;\r
-        end;\r
-\r
-7      :begin if(noun=Null)then noun:=30;\r
-         if(noun in[30,36,47,50,71,72,79])then\r
-          case noun of\r
-           30,47,50,71:if(Prm in[5..22,44..49])then RL(247) else RL(248);\r
-           36:RL(249);\r
-           72:RL(250);\r
-           79:RL(251);\r
-          end\r
-         else Crazy;\r
-        end;\r
-\r
-\r
-  end   {of CASE.}\r
-end;    {of DefaultAnswers4}\r
-{-------------------}\r
-overlay procedure DefaultAnswers5;\r
-var o: integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-9         :if noun<>1 then\r
-             if(noun in Inven)then\r
-               if(noun=74)and(en('p'))then RL(170)\r
-          else if(noun=89)and(en('i'))then RL(335)\r
-          else begin\r
-                 inven:=inven-[noun];writeln(n[noun,1],': Dropped.');\r
-                 R[noun]:=Prm;\r
-               end\r
-             else\r
-               writeln('You don''t have the ',n[noun,1],'.')\r
-           else\r
-             begin\r
-              if(74 in inven)and(en('p'))then RL(170)else\r
-              if(89 in inven)and(en('i'))then RL(335)else\r
-              DropAll;\r
-            end;\r
-\r
-26        :case noun of\r
-         2:if not(en('b'))then\r
-              begin\r
-                Ev:=Ev+['b'];\r
-                RL(3);end\r
-            else Say(noun,'peeled');\r
-         7:RL(162);\r
-        57:if(ropecon<>Null)then\r
-              begin\r
-                ropecon:=Null;\r
-                RL(117);end\r
-            else Say(noun,'untied');\r
-        62:RL(238)\r
-         else Crazy;\r
-         end; {end of OPEN }\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers5}\r
-{-------------------}\r
-overlay procedure DefaultAnswers6;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-28,27     :case noun of\r
-           23:RL(369);\r
-           29:if not(en('a'))then\r
-                begin Ev:=Ev+['a'];\r
-                RL(120);end\r
-              else begin Ev:=Ev-['a'];\r
-                RL(121);end;\r
-           57:if(ropecon<>Null)and not(ropecon in inven)\r
-                    and(r[ropecon]<>Prm)then\r
-                  if(ropecon in mov)then begin\r
-                    RL(57);writeln('...it''s a ',n[ropecon,1],'!');\r
-                    r[ropecon]:=Prm;Ev:=Ev-['u'];\r
-                    if(ropecon=29)and not(flasoff)then DescribeRm;end\r
-                  else RL(56)\r
-               else RL(122);\r
-           8:begin RL(243);RL(244);play(9999,3500,0);play(3499,2000,1);\r
-              play(1999,1000,2);play(999,200,5);play(199,8,16);Ev:=Ev+['e'];\r
-              n[36,5]:=Q;n[78,5]:='glass';n[68,1]:='slot';n[66,4]:=Q;\r
-              Ev:=Ev-['j'];\r
-              moveto(30);\r
-              if(MnRm=Prm)then RS(73);\r
-             end;\r
-           81:if not(en('j'))then\r
-               if KeyHole then\r
-                begin Ev:=Ev+['j'];RL(326);play(2000,2001,200);end\r
-               else RL(123)\r
-              else\r
-               begin Ev:=Ev-['j'];\r
-                if Keyhole then begin RL(326);play(2001,2000,200)end\r
-                else RL(123);\r
-                if(Prm in[59..68])then begin nosound;RS(62);DEAD;end;\r
-               end;\r
-           36:begin\r
-               if(Prm > 57)then if(Prm = 58)then RL(123)else\r
-                begin RS(63);DEAD;end;\r
-              end\r
-             else RL(122);\r
-           end; {of case}\r
-\r
-62         :begin write('You have ',Sc,' of 1000 points',\r
-                        ', giving you the rank of ');Tic:=Tic-1;\r
-              case Sc of\r
-              0..99:writeln('beginner.');\r
-              100..249:writeln('novice adventurer.');\r
-              250..399:writeln('adventurer third class.');\r
-              400..549:writeln('adventurer second class.');\r
-              550..699:writeln('adventurer first class.');\r
-              700..849:writeln('expert adventurer.');\r
-              850..999:writeln('master adventurer.')\r
-              else writeln('dead adventurer!')\r
-              end;\r
-            Attack:=False;\r
-            if(MnRm=Prm)then RL(370)\r
-            end;\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers6}\r
-{-------------------}\r
-overlay procedure DefaultAnswers7;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-14      :if(noun<>1)then\r
-          if(noun in Mov)then\r
-           if not(noun in inven)then\r
-            begin\r
-            Stuff:=0;\r
-            for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;\r
-            if(Stuff < 6)then\r
-             if(en('r'))and(inven<>[])then RL(87)\r
-             else begin\r
-                   Vanish(Noun);inven:=inven+[noun];\r
-                   writeln(n[noun,1],': Taken.');\r
-                   if(noun=70)then Ev:=Ev-['d'];\r
-                  end\r
-            else RL(234)\r
-            end\r
-           else writeln('You already have the ',n[noun,1],'.')\r
-          else Crazy\r
-         else if(en('r'))then RL(88) else\r
-            begin flag:='0';Stuff:=0;\r
-             for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;\r
-             if(Stuff < 7)then\r
-              for o:=0 to NMax do\r
-               begin\r
-                if r[o]=Prm then\r
-                 if(Stuff+1 < 7)then\r
-                  begin\r
-                   vanish(o);inven:=inven+[o];Stuff:=Stuff+1;\r
-                   writeln(n[o,1],':  Taken.');flag:='1';\r
-                   if(o=70)then Ev:=Ev-['d'];\r
-                  end\r
-                 else\r
-                  begin flag:='1';\r
-                  writeln(n[o,1],': You have too many objects already!');end\r
-               end\r
-             else RL(234);\r
-             if(flag='0')then RL(49)\r
-            end; {of 14}\r
-\r
-4,5       :RL(420);\r
-\r
-64        :SAVE;\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers7}\r
-{-------------------}\r
-overlay procedure DefaultAnswers8;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-10         :if(noun in [2,52])then\r
-              if(noun=2)then\r
-                if(en('b'))then begin\r
-                  RL(45); Ev:=Ev+['c'];inven:=inven+[51];\r
-                  Vanish(2);Sc:=Sc+10;end\r
-                else RL(46)\r
-              else begin RL(47);Ev:=Ev+['n'];Sc:=Sc+15;Vanish(52);end\r
-            else writeln('I don''t think the ',n[noun,1],\r
-                         ' would do much for your digestive system!');\r
-\r
-42         :case noun of\r
-            74:if not(en('p'))then\r
-                if not(en('i'))then\r
-                 begin RL(20);inven:=inven+[74];r[74]:=Null;Ev:=Ev+['p'];end\r
-                else RL(320)\r
-               else Say(74,'on');\r
-            89:if not(en('i'))then\r
-                if not(en('p'))then\r
-                 begin RL(319);vanish(89);inven:=inven+[89];Ev:=Ev+['i'];end\r
-                else RL(318)\r
-               else Say(89,'on your head')\r
-            else RL(128);\r
-            end;\r
-\r
-17,0       :if(noun2=Noun)then Crazy else\r
-            if(noun2 in Mov)or(Noun2=Null)then\r
-            case Noun of\r
-             2:begin RL(21);Vanish(2);Sc:=Sc+25;r[51]:=Prm;end;\r
-             60:begin RL(22);DEAD;end;\r
-             52:begin RL(34);Vanish(52);end;\r
-             23:if(noun2=null)then RL(369)\r
-                else begin Vanish(noun2);Attack:=False;\r
-                 writeln('The monster grabs the ',n[noun2,1],' and eats it!');\r
-                     end;\r
-             7:begin RL(35);Vanish(7);r[52]:=Prm;Ev:=Ev+['I'];end\r
-             else if(verb=0)then writeln('At the last moment you decide to',\r
-                 ' spare the ',n[noun,1],'''s life!')\r
-                  else RL(216);\r
-             end{of case}\r
-             else Crazy;\r
-\r
-39         :if((SepWord='to')or(SepWord='off'))and(Noun2=Null)then\r
-             case Noun of\r
-              29:if(SepWord='to')then begin Ev:=Ev+['a'];RL(120);end\r
-                 else begin Ev:=Ev-['a'];RL(121);end;\r
-              13:RL(148);\r
-              20:RL(149);\r
-              65:RL(150)\r
-             else Crazy end\r
-            else RL(80);\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers8}\r
-{-------------------}\r
-overlay procedure DefaultAnswers9;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-32    :if(34 in inven)then\r
-        if(shots>0)then\r
-         begin\r
-         Shots:=Shots-1;\r
-         for x:=1 to (26-(4*(6-Shots))) do\r
-            begin play(300,350,11-Shots*2);play(320,370,11-Shots*2);end;\r
-          if(noun=34)and(noun2<>34)and(noun2<>Null)and(SepWord='at')then\r
-             begin noun:=noun2; noun2:=34; SepWord:='with';end;\r
-          if((noun2=34)and(noun<>34)and(SepWord='with'))or\r
-            ((noun<>34)and(SepWord='s'))then\r
-      case noun of\r
-       1:begin;Crazy;Shots:=Shots+1;end;\r
-       2,7,8,13,27,29,32,40,51,52,63,74,77,89:begin vanish(noun);\r
-          writeln('The ',n[noun,1],' vanishes in an explosion of light!');\r
-            if(noun=74)and(en('p'))then begin RL(232);DEAD;end;\r
-         end;\r
-       48:begin RL(222);RL(223);Ev:=Ev+['g'];p[40]:=p[40]-[48];\r
-           if not(en('P'))then begin Ev:=Ev+['P'];Sc:=Sc+25;end;end;\r
-       12,26:RL(224);\r
-       23:begin case random(4)of 0:RL(375);1:RL(376);2:RL(377);3:RL(378)end;\r
-           Attack:=False;\r
-          end;\r
-       45:RL(315);\r
-       60,56,44:begin RL(233);DEAD;end\r
-       else writeln('A blinding ray strikes the ',n[noun,1],', but it is',\r
-                      ' only slightly blackened.');\r
-      end {of shoot case}\r
-          else if(noun=34)and(noun2=Null)then RL(213)\r
-          else begin;Crazy;Shots:=Shots+1;end;\r
-         end\r
-        else begin writeln('...click!');play(25,32,9);end\r
-       else RL(208);\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers9}\r
-{-------------------}\r
-overlay procedure DefaultAnswers10;\r
-var o : integer;\r
-begin\r
-\r
-CASE VERB OF\r
-\r
-36         :if(noun in mov)then\r
-             if(noun in inven)then\r
-              if((noun in[2,7,52,29])or\r
-                 (noun2 in[2,7,23,29,47,52,53,73,88]))and(noun<>noun2)then\r
-               begin\r
-                if(noun=2)or(noun2=2)then begin RL(95);vanish(2);\r
-                  r[51]:=Prm;end;\r
-                if(noun=7)or(noun2=7)then begin RL(35);vanish(7);\r
-                  Ev:=Ev+['I'];r[52]:=Prm;end;\r
-                if(noun=29)or(noun2=29)then begin RL(96);vanish(29);end;\r
-                if(noun=52)or(noun2=52)then begin RL(34);vanish(52);end;\r
-                if(noun2=88)then begin RL(293);vanish(noun);\r
-                  if(noun=2)then noun:=51;if(noun=7)then noun:=52;\r
-                  r[noun]:=random(4)+51;end;\r
-                if(Prm in[0..6,9,10,13,41..43])and(noun2 in[73,53,47])then\r
-                  begin RL(306);vanish(noun);end;\r
-                if(noun2=23)then begin Attack:=False;Vanish(noun);RL(379);\r
-                  writeln(n[noun,1],' out of mid-flight and eats it',\r
-                        ' in one giant gulp!')end;\r
-               end\r
-              else begin writeln('The ',n[noun,1],' collides with the ',\r
-                n[noun2,1],' but nothing interesting happens.');\r
-                Vanish(noun);r[noun]:=Prm;end\r
-             else writeln('First you must have the ',n[noun,1],'.')\r
-            else Crazy;\r
-\r
-37         :if(noun=57)then\r
-             if(sepword='to')then\r
-              if not(noun2 in[1,15,17,22,30,46,47,50,52,72,73,79,80,83])then\r
-               if(ropecon=Null)then begin\r
-                ropecon:=noun2;\r
-                writeln('The rope is firmly tied to the ',n[noun2,1],'.');\r
-                if(noun2=57)then RL(48);end\r
-               else writeln('It is already tied to the ',n[ropecon,1],'.')\r
-              else RL(50)\r
-             else Crazy\r
-            else Crazy;\r
-\r
-61         :begin RL(245);read(kbd,flag);\r
-             if(upcase(flag)<>'N')then\r
-              begin RL(380);delay(999);window(1,1,80,25);clrscr;close(rooms1);\r
-               close(rooms2);close(special1);close(special2);close(line1);\r
-               assign(rooms1,'BEYOND.com');execute(rooms1)end\r
-             else RL(264)\r
-            end;\r
-\r
-65        :RESTORE;\r
-\r
-  end {of case}\r
-end;  {of DefaultAnswers10}\r
-{===================}\r
-overlay procedure SpecialAnswers1;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-CASE Prm OF\r
-\r
-3       :case verb of\r
-  44,58 :moveto(1);\r
-  20,52 :if(noun=6)then RL(40);\r
-    14  :if(noun=57)and not(en('o'))then RL(419);\r
-   6    :if(noun=57)and(here(40))and((noun2=Null)or(noun2=40))then\r
-             begin\r
-               RS(4); tic:=15; moveto(4); Ev:=Ev+['A']; Sc:=Sc+25;\r
-               if(en('o'))then\r
-                 for o:= 0 to 57 do begin\r
-                   if(o in kitset)then r[o]:=Prm;\r
-                   if(r[o]=3)then r[o]:=Prm;end\r
-             end;\r
-   26   :if(noun=39)then\r
-             if not(en('o'))then\r
-               begin Ev:=Ev+['o'];RL(328); for o:=2 to 57 do\r
-                 if(o in kitset)then r[o]:=Prm;end\r
-             else Say(noun,'opened');\r
-   3  :if(noun=39)then\r
-             if(en('o'))then\r
-               begin Ev:=Ev-['o'];RL(186); for o:=2 to 57 do\r
-                 if(o in kitset)then r[o]:=Null;end\r
-             else Say(noun,'shut');\r
-  17,28,27 :if(noun in [6,57,39,59])then RL(29);\r
-  24,11   :case noun of\r
-       39  :if(en('o'))then\r
-               if kitset=[] then begin RL(329);end\r
-               else begin RL(330);for o:= 0 to 57 do\r
-                   if(o in kitset)then writeln(' a ',n[o,1]);end\r
-             else RL(331);\r
-       57 :RL(10);\r
-       73 :RL(19);\r
-       6 :DescribeRm;\r
-           end;\r
-         end; {of 3}\r
-\r
-4      :case verb of\r
-   43..52,20:RL(7);\r
-    55  :if(noun=35)then begin RL(332);Ev:=Ev-['B'];end;\r
-  42,3:if noun=35 then begin RL(8); Ev:=Ev+['B'];end\r
-           else if(noun=39)then\r
-             if(en('o'))then\r
-               begin Ev:=Ev-['o'];RL(186); for o:=0 to 57 do\r
-                 if(o in kitset)then r[o]:=Null;end\r
-             else Say(noun,'shut');\r
-  29,37 :if(noun=35)and(noun2=60)then begin\r
-             RL(8);Ev:=Ev+['B'];end;\r
-   26   :if(noun=35)and(en('B'))then begin RL(332);Ev:=Ev-['B'];end\r
-           else if(noun=39)then\r
-             if not(en('o'))then\r
-               begin Ev:=Ev+['o'];RL(328); for o:=0 to 57 do\r
-                 if(o in kitset)then r[o]:=Prm;end\r
-             else Say(noun,'opened');\r
-   19,2:if(noun in[6,64])or(noun=Null)then\r
-             if(en('B'))then RL(9)\r
-             else begin RL(0);DEAD;end;\r
-    24,11:case noun of\r
-       39  :if(en('o'))then\r
-               if kitset=[] then begin RL(329);end\r
-               else begin RL(330);for o:= 0 to 57 do\r
-                   if(o in kitset)then writeln(' a ',n[o,1]);end\r
-             else RL(331);\r
-       35 :RL(12);\r
-       73 :RL(19);\r
-       6 :DescribeRm;\r
-           end;  {of case}\r
-         end; {of 4}\r
-\r
-end {of case}\r
-else SA\r
-end; {of SP1}\r
-{-------------------}\r
-overlay procedure SpecialAnswers2;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-5       :case verb of\r
-   45   :moveto(6);\r
-   2    :if(noun=79)then RL(263);\r
-           end;\r
-\r
-6       :case verb of\r
-   46   :moveto(5);\r
-  43..52:if FlasOff then RL(14)\r
-         else case verb of\r
-           43:begin Ox:=0;RL(286);moveto(7);end;\r
-           45:moveto(9); 49:moveto(8);\r
-              end;\r
-             end; {of 6}\r
-\r
-7       :case verb of\r
-  23..25,11:if(noun in[6,36,73,0,15,64,67])then RS(9);\r
-  43..50 :if FlasOff then RL(14)\r
-          else\r
-           begin\r
-            If(Verb in[43,47,48])then Ox:=Ox+1;\r
-            If(Verb in[44,49,50])then Ox:=Ox-1;\r
-            if(Ox<1)then begin RL(286);moveto(6)end\r
-            else\r
-             begin\r
-              RL(333);\r
-              if(random(20)=2)then begin writeln;RS(9);\r
-               if not(en('K'))then begin Ev:=Ev+['K'];Sc:=Sc+15;end;end;\r
-             end;\r
-           end;\r
-  28,17,6:if(noun=36)or(noun=15)then begin RS(10);DEAD;end;\r
-  31   :if(input='help')then begin RL(334);moveto(6)end;\r
-         end;  {of 7}\r
-\r
-8       :case verb of\r
-   48,58:if FlasOff then RL(14) else moveto(6);\r
-  43..52:if FlasOff then RL(14);\r
-  11:if(noun in [46,79])then RS(12)\r
-         else if(noun in [15,30])then RL(28);\r
-   38 :if(noun=46)then begin SA;writeln('It feels jagged.');end;\r
-         end; {of 8}\r
-\r
-9         :case verb of\r
-   43..52 :if FlasOff then RL(14)\r
-         else case verb of\r
-           46:moveto(6);47:moveto(10);49:moveto(11);\r
-              end;\r
-           end; {of 9}\r
-\r
-10        :case verb of\r
-   50,58 :if FlasOff then RL(14)\r
-         else moveto(9);\r
-   43..52:if FlasOff then RL(14);\r
-  19,2:if(noun in[17,80])then begin RL(0);DEAD;end;\r
-           end; {of 10}\r
-\r
-end {of case}\r
-else SA\r
-end; {of SP2}\r
-{-------------------}\r
-overlay procedure SpecialAnswers3;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-14       :case verb of\r
-   46,48 :if FlasOff then RL(14)\r
-          else if(verb=46)then moveto(11) else moveto(15);\r
-  43..52 :if FlasOff then RL(14);\r
-          end; {of 14}\r
-\r
-15     :case Verb of\r
-   52,2 :if(en('d'))and(en('t'))then\r
-           begin RL(63);moveto(16);end else RL(64);\r
-  19   :RL(64);\r
-  7    :RL(65);\r
-  14    :if(noun in[57,70])then begin inven:=inven+[noun];r[noun]:=Null;\r
-           if(noun=70)then Ev:=Ev-['d']\r
-           else Ev:=Ev-['t'];SA;writeln(n[noun,1],':  Taken.');end;\r
-  45,49  :if(flasoff)then RL(14) else moveto(14);\r
-   44    :RL(73);\r
-  24,11:if(noun=17)and not(en('u'))then RL(74)\r
-           else if(noun=17)and(en('a'))then RL(75);\r
-  17,36,29,9:case noun of\r
-   70:if((noun2 in[30,42])or(noun2=Null))and(verb<>9)then\r
-         if not(en('d'))then\r
-          begin RL(69);Ev:=Ev+['d'];r[70]:=Prm;inven:=inven-[70];end\r
-         else RL(67)\r
-        else if(verb=9)then begin end else RL(66);\r
-   57:if(noun2=17)and(verb<>17)then begin\r
-          if(here(ropecon))and(ropecon<>57)then begin\r
-            RL(71);inven:=inven-[57];r[57]:=Prm;\r
-            if(ropecon=70)then Ev:=Ev+['t'];end\r
-          else begin RL(70);vanish(57); end;\r
-         end else begin end\r
-   else if(verb in[9,29,36])and(noun2=17)and(noun in mov)then\r
-         if(here(ropecon))and(noun=ropecon)then begin RL(76);\r
-          inven:=inven-[noun];r[noun]:=Null;\r
-          if(ropecon=29)then Ev:=Ev+['u'];end\r
-         else begin RL(72);inven:=inven-[noun];r[noun]:=17;end\r
-      end;{of noun case}\r
-         end;{of 15}\r
-\r
-16       :case verb of\r
-   51,2   :moveto(15);\r
-   52    :RL(85);\r
-  0,3..18,20..21,26..40,42,53,55,56,60:RL(86);\r
-   19,61:begin RS(18);Ev:=Ev-['a'];Ev:=Ev+['r'];Sc:=Sc+60;\r
-          moveto(17);dropall;if(here(2))then begin r[2]:=Null;\r
-          r[51]:=Prm;end;r[57]:=Null;end;\r
-         end;{of 57}\r
-\r
-end  {of Case}\r
-else SA\r
-end; {of SP3}\r
-{-------------------}\r
-overlay procedure SpecialAnswers4;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-19      :case verb of\r
-   48,51,58:if(flasoff)then RL(14)else begin RL(311);moveto(18);end;\r
-   47,52,57:if(flasoff)then RL(14)else begin RL(309);moveto(20);end;\r
-         end;{of stairs}\r
-\r
-20      :case verb of\r
-   50,51,58:if(flasoff)then RL(14)else begin RL(310);moveto(19);end;\r
-   11,24,25,23:if(noun=67)then RL(90)\r
-     else if(noun in[12,43])and not(en('E'))then begin RL(92);\r
-            r[32]:=20;Sc:=Sc+15;Ev:=Ev+['E'];end;\r
-  14,38:if(noun in[67,12])then RL(91);\r
-  43..49,57:if(noun=Null)or(noun in[12,43])then RL(215);\r
-        end;{of 20}\r
-\r
-21       :case verb of\r
-    50   :if(flasoff)then RL(14)else moveto(18);\r
-    47   :if(flasoff)then RL(14)else moveto(22);\r
-   2,51:if(flasoff)then RL(14)else\r
-            if(noun=64)or(noun=Null)then moveto(23);\r
-    45   :RL(97);\r
-    49,44,43:RL(258);\r
-  11     :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;\r
-        end;\r
-\r
-22       :case verb of\r
-    50   :if(flasoff)then RL(14)else moveto(21);\r
-    2,51 :if(flasoff)then RL(14)else\r
-            if(noun=64)or(noun=Null)then moveto(23);\r
-    44   :RL(97);\r
-    47,45,49:RL(258);\r
-    11     :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;\r
-        end; {of 22}\r
-\r
-23      :case verb of\r
-   46,50 :if(flasoff)then RL(14)else moveto(21);\r
-   43,48 :if(flasoff)then RL(14)else moveto(22);\r
-   44..49:RL(258);\r
-   26,27 :if(noun=26)then\r
-           if(en('l'))then Say(26,'open')\r
-           else begin RL(98);Ev:=Ev+['l'];p[23]:=p[23]+[69];end;\r
-    3    :if(noun=26)then\r
-           if(en('l'))then begin RL(171);Ev:=Ev-['l'];p[23]:=p[23]-[69];end\r
-           else Say(26,'closed');\r
-  2,52,57:if(en('l'))and((noun=69)or(noun=Null))then moveto(24)else RL(99);\r
-  24,25  :if(noun=26)then RL(151);\r
-   11    :if(noun=26)then if(en('l'))then RL(217)else RL(218)\r
-          else if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;\r
-        end; {of 23}\r
-\r
-24      :case verb of\r
-   51,58:if(en('l'))then moveto(23) else RL(99);\r
-   52,57:moveto(25);\r
-  24,25 :if(noun=26)then RL(151);\r
-   3    :if(noun=26)then begin RL(171);Ev:=Ev-['l'];end else\r
-         if(noun=55)then RL(411);\r
-   2    :if(noun=69)then Moveto(25);\r
-   26   :if(noun=26)then begin RL(98);Ev:=Ev+['l'];end else\r
-         if(noun=55)then RL(412);\r
-   11   :if(noun=26)then if(en('l'))then RL(217)else RL(218)else\r
-         if(noun=55)then RL(410);\r
-   27,28:If(noun=55)then RL(411);\r
-       end;\r
-\r
-end   {of case}\r
-else SA\r
-end;  {of SP4}\r
-{-------------------}\r
-overlay procedure SpecialAnswers5;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-25     :case verb of\r
-     43:begin writeln('The door slides open...');play(55,70,40);moveto(27);\r
-         writeln('The door slides shut behind you.');play(70,55,40);\r
-         if not(en('Y'))then begin Ev:=Ev+['Y'];Sc:=Sc+30 end end;\r
-     44:moveto(32); 45:moveto(30);\r
-     46:moveto(34); 47:moveto(28); 49:moveto(31);\r
-     48:if(en('v')and not(en('p')))then begin Verbose:=False;moveto(35);\r
-          RS(25);DEAD; end else moveto(35);\r
-     50:moveto(33); 51,58:moveto(24);\r
-     52,2:if(noun=69)or(noun=Null)then moveto(26);\r
-     17,27,28,38:if(noun=26)then\r
-          begin RL(413);play(55,70,45);play(69,54,45)end;\r
-   26,40:if(noun=26)then RL(414);\r
-        end;\r
-\r
-27      :case verb of\r
-   44,58:begin writeln('The door slides open...');play(55,70,40);moveto(25);\r
-          writeln('The door slides shut behind you.');delay(999);play(70,55,40)\r
-         end;\r
-     17,27,28,38:if(noun=26)then\r
-          begin RL(413);play(30,40,25);play(40,30,25)end;\r
-   26,40:if(noun=26)then RL(414);\r
-   11  :if(noun in[20,21])then RL(103)\r
-      else if(noun=58)then case compcon of\r
-        Null:RL(155); 1:RS(21); 2:RS(22); 3:RS(23);\r
-        4:begin RS(24);compcon:=Null;gotoxy(1,wherey-1);\r
-           writeln('. tim. chamb.r c.de: ',Code,'.. ..tel.port...  .  .',\r
-                   '... . .. ime .  p.n.l ....... ...');\r
-           RL(105);play(29,29,40);end;end;{of case}\r
-   53  :begin\r
-         if(input='1')or(input='one')then begin RL(104);compcon:=1;end;\r
-         if(input='2')or(input='two')then begin RL(104);compcon:=2;end;\r
-         if(input='3')or(input='three')then begin RL(104);compcon:=3;end;\r
-         if(input='4')or(input='four')then begin RL(104);compcon:=4;end;\r
-         for y:=1 to random(40)+9 do\r
-          begin x:=random(6000)+99;play(x,x,50);delay(9)end\r
-       end;\r
-   31   :if(compcon=null)then begin\r
-          play(9,999,0);sound(999);RS(20);play(999,9,0);if not(en('J'))then\r
-          begin Ev:=Ev+['J'];Sc:=Sc+40;end;end;\r
-       end;\r
-\r
-28     :case verb of\r
-   50,58:moveto(25);\r
-   45,57:moveto(29);\r
-   28   :if(noun in[33,10])then begin RL(137);play(31,31,450);end;\r
-       end;\r
-\r
-29    :case verb of\r
-   46,58:moveto(28);\r
-   36   :if(noun2 in[33,10])and(noun in Mov)then\r
-           if(en('M'))then\r
-             begin RS(27);Ev:=Ev-['M','r'];Vanish(noun);r[noun]:=28;\r
-               if not(en('N'))then begin Ev:=Ev+['N'];Sc:=Sc+55;end;\r
-             play(28,34,600)end\r
-           else begin Vanish(noun);r[noun]:=28;RL(179);\r
-             if(noun in[7,8,29,34,40,51])then Ev:=Ev+['M'];end;\r
-       end;\r
-\r
-33     :case verb of\r
-   47,58:moveto(25);\r
-    34  :RL(272);\r
-   28,38:if(noun=10)then begin RL(421);x:=random(9999);case random(3) of\r
-          0:play(x,random(9999),random(3));\r
-          1:for y:=1 to random(300)+60 do\r
-             begin x:=random(9999);play(x,x,2);delay(7)end;\r
-          2:begin y:=9999;o:=0;\r
-             repeat x:=random(9999);play(x,y,0);\r
-                    y:=random(9999);play(y,x,0);o:=o+1;\r
-             until o>7 end end end\r
-       end;\r
-\r
-end {of case}\r
-else SA\r
-end; {of SP5}\r
-{-------------------}\r
-overlay procedure SpecialAnswers6;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-30   :case verb of\r
-   46,58:if(en('e'))then RL(212) else moveto(25);\r
-   26,27,28,40:if(noun=49)then if(en('h'))then Say(49,'open') else RL(159)\r
-               else\r
-                if(noun in[10,76])and(verb=28)then\r
-                 begin\r
-                 if(MnRm=30)then begin RS(76);DEAD;end;\r
-                  if(en('e'))then\r
-                   begin RS(29);writeln;\r
-                    play(1,700,7);play(701,8000,1);Ev:=Ev-['e'];\r
-       case YearDial of\r
-              1933:begin Loc:='Civilization!';Sc:=Sc+80;RS(78);HOME;END;\r
-        2111..2679:begin\r
-                     Verbose:=False;moveto(41);RS(30);Verbose:=True;\r
-                     if not(en('O'))then begin Sc:=Sc+55;Ev:=Ev+['O'];end;\r
-               n[78,5]:=Q;n[37,5]:='glass';n[72,1]:='fence';\r
-               n[70,1]:='hooded figure';n[70,2]:='hooded';n[70,3]:='figure';\r
-               n[70,4]:='mutant';n[70,5]:=Q;n[3,1]:='footprints';\r
-               n[3,2]:='footpri';n[57,1]:='parachute';n[57,2]:='parachu';\r
-               n[35,1]:='boulder';n[35,2]:='rock';n[35,3]:='rocks';\r
-               n[66,4]:='red';\r
-                   end;\r
-        0..1111   :begin writeln;RS(31);DEAD;end;\r
-        1112..2110:begin writeln;RS(32);DEAD;end;\r
-        2680..3789:begin writeln;RS(33);DEAD;end\r
-             else  begin writeln;RS(34);DEAD;end;\r
-       end; {of YearDial case}\r
-                   end\r
-                  else begin RL(209);play(1,9999,0)end;\r
-                 end;\r
-   33   :if(noun in[16,59])or(noun=Null)then begin Ev:=Ev+['e'];RL(210);end;\r
-   35   :if(en('e'))then begin Ev:=Ev-['e'];RL(211);Attack:=False end;\r
-   17,0,6:if(noun=49)then RL(160);\r
-   53  :if(input=Code)then\r
-         If(en('h'))then Say(49,'open')\r
-         else\r
-          begin Ev:=Ev+['h'];RL(173);play(23,24,250);Sc:=Sc+30;\r
-            if(PanelCon<>Null)then begin r[PanelCon]:=30;Code:='R';\r
-             writeln('Sitting inside the panel compartment is a ',\r
-                      n[PanelCon,1],'.');end\r
-            else RL(183);\r
-          end\r
-        else RL(172);\r
-   3   :If(noun=49)then RL(159);\r
-   39  :if(noun=25)then RL(115) else\r
-        case noun of\r
-        24:if(DialNum>0)and(DialNum<377)then begin RL(176);DayDial:=DialNum;end\r
-           else RL(178);\r
-        82:if(DialNum>-1)and(DialNum<5000)then begin RL(177);\r
-             YearDial:=DialNum;end else RL(178);\r
-        end;\r
- 11,24:case noun of\r
-   49:begin SA;if(en('h'))then if(PanelCon=Null)then RL(183)\r
-                 else writeln('Inside the compartment is a ',n[PanelCon,1],'.')\r
-               else RL(184);end;\r
-   82:begin SA;writeln('The year dial is set to ',YearDial,'.');end;\r
-   24:begin SA;writeln('The day dial is set to ',DayDial,'.');end;\r
-   16:begin RL(203);RL(204)end;\r
-   25:RL(115);\r
-   38:RL(161);\r
-      end;\r
-       end; {of 30}\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP6}\r
-{-------------------}\r
-overlay procedure SpecialAnswers7;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-26     :case verb of\r
-  51,58,2:if(noun=69)or(noun=Null)then moveto(25);\r
-  43,48 :moveto(36); 44,49 :moveto(38); 45,47 :moveto(39); 46,50 :moveto(37);\r
-        end;\r
-\r
-35      :case verb of\r
-   49,58:moveto(25);\r
-  11:case noun of\r
-    54:RL(100);\r
-    62:if(en('v'))then RL(205)else RL(206);\r
-    end;\r
-  28  :if(noun in[55,10])then\r
-        if(en('v'))then begin RL(101);Ev:=Ev-['v'];play(40,65,80)end\r
-        else\r
-         begin RL(102); Ev:=Ev+['v'];play(65,40,80);\r
-          if not(en('p'))then begin RS(28);DEAD;end\r
-          else if(MnRm=35)then\r
-           begin n[23,1]:='melted monster';n[23,4]:='melted';MnRm:=Null;\r
-            RS(74);p[35]:=p[35]+[77];\r
-            if not(en('W'))then begin Sc:=Sc+65;Ev:=Ev+['W'] end\r
-           end\r
-         end;\r
-  14  :if(noun in[1,77])and(77 in p[35])then begin Sc:=Sc+10;noun:=77;end;\r
-  55  :if(noun=74)then\r
-        if(en('v'))then begin RS(26);DEAD end;\r
-  38 :RL(30);\r
-       end;\r
-\r
-36     :case verb of\r
-  44,49,58:moveto(26);\r
-    45  :moveto(39);\r
-    46  :moveto(37);\r
-    57  :if(noun=12)then RL(215);\r
-        end;\r
-\r
-37     :case verb of\r
-  45,47,58:moveto(26);\r
-    43  :moveto(36);\r
-    44  :moveto(38);\r
-    57  :if(noun=12)then RL(215);\r
-        end;\r
-\r
-38     :case verb of\r
-  43,48,58:moveto(26);\r
-    45  :moveto(39);\r
-    46  :moveto(37);\r
-    57  :if(noun=12)then RL(215);\r
-   0..99:if(noun=28)or(noun2=28)then\r
-          begin RS(35);RL(220);p[40]:=p[40]+[48];moveto(40);Ev:=Ev-['g'];\r
-           if(MnRm=Prm)then begin RS(79);DEAD end\r
-          end;\r
-        end;{of 38}\r
-\r
-39     :case verb of\r
-  46,50,58:moveto(26);\r
-    45  :if(en('g'))then moveto(40);\r
-    3   :if(noun=26)then if(en('g'))then RL(225) else Say(26,'shut');\r
-    43  :moveto(36);\r
-    44  :moveto(38);\r
-    57  :if(noun=12)then RL(215);\r
-        end;\r
-\r
-40     :case verb of\r
-  46,58 :if(en('g'))then moveto(39) else RL(221);\r
-   26   :if(noun=26)then if(en('g'))then Say(26,'open') else RL(221);\r
-   3    :if(noun=26)then if(en('g'))then RL(225) else Say(26,'shut');\r
-  11,14 :if(noun in[12,43,83])then RL(261);\r
-       end;\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP7}\r
-{-------------------}\r
-overlay procedure SpecialAnswers8;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-41     :case verb of\r
-    43  :moveto(42);\r
-    44  :moveto(43);\r
-  2,19  :if(noun in[53,73,87])then\r
-           begin RS(39);RL(287);moveto(46);Rx:=4;end;\r
-       end;\r
-\r
-42     :case verb of\r
-    44  :moveto(41);\r
-    43  :RL(296);\r
-    14  :if(noun in[13,1])and(13 in p[42])then\r
-          begin Sc:=Sc+10;noun:=13;end;\r
-  2,19  :if(noun in[53,73,87])then\r
-           begin RS(39);RL(287);moveto(46);Rx:=4;end;\r
-       end;\r
-\r
-43     :case verb of\r
-    43  :moveto(41);\r
-    44  :moveto(44);\r
-  2,19  :if(noun in[53,73,87])then\r
-           begin RS(39);RL(287);moveto(46);Rx:=4;end;\r
-        end;\r
-\r
-44     :case verb of\r
-    43  :moveto(43);\r
-    46  :moveto(47);\r
-    45  :begin RL(274);Rx:=0;moveto(46);end;\r
-  43..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);\r
-       end;\r
-\r
-45     :case verb of\r
-    44  :moveto(49);\r
-    46  :begin RL(274);Rx:=8;moveto(46);end;\r
-    45  :begin Rx:=9;RL(274);moveto(46);end;\r
-  43..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);\r
-        end;\r
-\r
-46     :case verb of\r
-    45  :begin Rx:=Rx+1;RL(274);\r
-          if(Rx=9)then begin\r
-          if not(en('T'))then begin Ev:=Ev+['T'];Sc:=Sc+30;end;\r
-          moveto(45)end;\r
-          if(Rx>86)then begin RL(340);moveto(47)end\r
-         end;\r
-    46  :begin Rx:=Rx-1;RL(274);\r
-          if(Rx=8)then moveto(45);\r
-          if(Rx<1)then moveto(44);\r
-         end;\r
-  43..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);\r
-        end;\r
-\r
-47     :case verb of\r
-  46,52,2,19:begin if(random(2)=1)then begin RS(37);DropAll;moveto(48)end\r
-                   else begin RL(277);moveto(48)end;end;\r
-    45  :moveto(44);\r
-  43..50:RL(278);\r
-        end;\r
-\r
-48     :case verb of\r
-  45,51,2:if(random(3)=2)and(noun<>35)then begin RS(38);moveto(47)end\r
-          else if(noun<>35)then RL(279);\r
-   43..50:RL(279);\r
-     14  :if(noun in[27,1])and(27 in p[48])then\r
-           begin Sc:=Sc+20;noun:=27;end;\r
-     11 :if(noun=35)then RL(289)\r
-        end;\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP8}\r
-{-------------------}\r
-overlay procedure SpecialAnswers9;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-50     :case verb of\r
-  43,58 :begin RL(290);moveto(49);end;\r
-  44,57 :if(noun=Null)or(noun in[88,26,50])then\r
-          begin RS(41);if not(en('L'))then\r
-           begin Ev:=Ev+['L'];Sc:=Sc+25;end;moveto(51);end;\r
-    11  :case noun of\r
-          35,50:RL(292);\r
-          88,68:RS(42);\r
-          46,66:RS(43);\r
-         end;\r
-  30,28,38,17,14:if(noun=88)then RL(294);\r
-        end;\r
-\r
-51     :case verb of\r
-    44  :moveto(52);\r
-    46  :moveto(52);\r
-    48  :moveto(53);\r
-        end;\r
-\r
-52     :case verb of\r
-    43  :moveto(51);\r
-    47  :moveto(53);\r
-    46  :moveto(51);\r
-        end;\r
-\r
-53     :case verb of\r
-   52,2,57:if(noun=Null)or(noun=69)then begin if not(en('Q'))then\r
-            begin Ev:=Ev+['Q'];Sc:=Sc+30;end;moveto(55);end;\r
-    47  :moveto(52);\r
-    45  :moveto(53);\r
-    49  :moveto(54);\r
-        end;\r
-\r
-54     :case verb of\r
-    43  :moveto(52);\r
-    49  :moveto(53);\r
-    44  :moveto(51);\r
-    50  :begin if not(en('R'))then\r
-          begin Ev:=Ev+['R'];Sc:=Sc+20;end;moveto(56);end;\r
-        end; {verb case}\r
-\r
-55     :case verb of\r
-  51,2,58,44:if(noun=Null)or(noun=69)then moveto(53);\r
-   11   :if(noun in[11,45])then\r
-          begin RL(297);if(en('k'))then RL(298) else RL(299)end;\r
-   26,40:if(noun in[45,26,11,68])and(noun2=27)and(SepWord='with')then\r
-           if not(en('k'))then\r
-            begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do\r
-             if(o in cabiset)then r[o]:=55;\r
-             if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;\r
-            end\r
-           else Say(11,'open')\r
-          else if(SepWord='s')then RL(317);\r
-   29   :if(noun=27)and(noun2 in[45,26,11,68])and(SepWord='in')then\r
-          if not(en('k'))then\r
-           begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do\r
-            if(o in cabiset)then r[o]:=55;\r
-            if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;\r
-           end\r
-          else RL(216);\r
-   3    :if(noun in[45,26,11])then\r
-          if(en('k'))then\r
-           begin RL(314);play(30,32,30);Ev:=Ev-['k'];\r
-            for o:= 2 to NMax do if(o in cabiset)then r[o]:=Null;\r
-           end\r
-          else Say(11,'shut & locked');\r
-  24,30 :if(noun in[26,11])then\r
-          if(en('k'))then\r
-           begin RL(324);\r
-            if(cabiset=[])then RL(339)else\r
-             for o:=0 to NMax do if(o in Cabiset)then writeln('a ',n[o,1])\r
-           end\r
-          else RL(299);\r
-       end; {of 55}\r
-\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP9}\r
-{-------------------}\r
-overlay procedure SpecialAnswers10;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-56     :case verb of\r
-    47  :moveto(54);\r
-  2,51,58:if(noun=Null)or(noun=69)then moveto(57);\r
-        end;\r
-\r
-57     :case verb of\r
-   46,57,2,33:if(noun=Null)or(noun=65)then\r
-          begin n[68,1]:='keyhole';n[68,4]:='slot';moveto(58)end;\r
-   52   :moveto(56);\r
-        end;\r
-\r
-58     :case verb of\r
-   45,58:moveto(57);\r
-   43..51,20:if(en('i'))and(en('j'))and KeyHole then\r
-         begin sound(38);RS(61);ShRm:=2;moveto(59);sound(20);\r
-         for o:=0 to NMax do if(r[o]=58)then r[o]:=59;\r
-         if not(en('S'))then begin Ev:=Ev+['S'];Sc:=Sc+60 end end else RL(325);\r
-   28   :if(noun=10)then noun:=81;\r
-   11   :if(noun=68)then if KeyHole then RL(336)else RL(404);\r
-        end;\r
-\r
-65     :case verb of\r
-   43,47:moveto(66);\r
-   44,49:moveto(68);\r
-   45,57:begin if not(en('w'))then begin Ev:=Ev+['w'];RL(346);end\r
-               else begin RL(347);DEAD end end;\r
-   46..50:moveto(63);\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
-    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end;\r
-\r
-66     :case verb of\r
-    43  :RL(343);\r
-  46,50 :moveto(65);\r
-  45,49 :moveto(67);\r
-    47  :moveto(64);\r
-    48  :moveto(63);\r
-  57,44 :begin sound(25);if not(en('V'))then begin Ev:=Ev+['V'];Sc:=Sc+30;end;\r
-          RS(67);writeln;moveto(69);nosound;\r
-         end;\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
-    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end; {of 66}\r
-\r
-67     :case verb of\r
-    46  :begin RL(347);DEAD;end;\r
-  43,48 :moveto(66);\r
-  44,50 :moveto(68);\r
-  45..49:moveto(64);\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
-    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end; {of 67}\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP10}\r
-{-------------------}\r
-overlay procedure SpecialAnswers11;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-63     :case verb of\r
-   45   :moveto(65);\r
-   47   :moveto(66);\r
-   49   :moveto(68);\r
-  43..50:RL(343);\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
-    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end;\r
-\r
-64     :case verb of\r
-   46   :moveto(67);\r
-   48   :moveto(66);\r
-   50   :moveto(68);\r
-  43..50:RL(343);\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
-    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end;\r
-\r
-68     :case verb of\r
-    43  :begin RL(347);DEAD;end;\r
-    44  :RL(343);\r
-    50  :moveto(63);\r
-    49  :moveto(64);\r
-  46,48 :moveto(65);\r
-  45,47 :moveto(67);\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(38);RL(344);delay(999);sound(20)end;\r
-    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end;\r
-\r
-69     :case verb of\r
-  28,27 :if(noun in[10,21,81,36])then RL(351);\r
-   11   :if(noun in[10,21,81,36,20,25])then RL(352)else\r
-         if(noun=65)then RL(353);\r
-  43,58 :moveto(70);\r
-        end;\r
-\r
-70     :case verb of\r
-  44,57,2,33:if(noun=Null)or(noun=65)then moveto(69)else\r
-         if(noun in[69,50])then moveto(71);\r
-  43,47,48:RL(354);\r
-  49,52 :moveto(71);\r
-    11  :if(noun=65)then RL(353)\r
-         else if(noun=68)then if KeyHole then RL(336)else RL(404);\r
-       end;\r
-\r
-71     :case verb of\r
-  48,51,58:moveto(70);\r
-    45  :moveto(72);\r
-    11  :if(noun=58)then RL(386)else\r
-         if(noun=25)then RL(418);\r
-   28,27:if(noun in[10,36])then begin RL(387);\r
-          for o:=1 to random(12)+4 do play(random(250),random(250),random(30))\r
-         end;\r
-    39  :if(noun=25)then begin RL(387);\r
-          for o:=1 to random(99)+75 do\r
-           begin x:=random(9999);play(x,x,random(19)+10);delay(5)end\r
-         end\r
-        end;{ of 71}\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP11}\r
-{-------------------}\r
-overlay procedure SpecialAnswers12;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-11      :case verb of\r
-   5,45,47,48,50:if FlasOff then RL(14)\r
-          else case verb of\r
-          48:moveto(9);47:moveto(13);\r
-          5:if(29 in inven)or(40 in inven)or(2 in inven)then\r
-                    RL(58)\r
-                  else begin RL(18); moveto(12);end;\r
-          50:RL(17);\r
-          45:if(en('C'))then moveto(14) else RL(144);\r
-            end;\r
-   31   :if(input='nepo egassap')and not(en('C'))then\r
-             begin Ev:=Ev+['C']; RS(11);Sc:=Sc+35;end;\r
-  11 :if(noun in [79,72])then if(en('C'))then RL(270)else RS(13);\r
-  27,28:if(noun in [79,72])then RL(26);\r
-  17,0,6:if(noun in [79,72])then RL(27);\r
-  38  :if(noun in [79,72])then RL(30);\r
-          end; {of 11}\r
-\r
-12     :case verb of\r
-  4,47 :if FlasOff then RL(14)\r
-           else case verb of\r
-             4:begin RL(18); moveto(11);end;\r
-               47   :RL(17);\r
-                end;\r
-  43..52  :if FlasOff then RL(14);\r
-   14  :if(noun in[70,1])and not(en('G'))then\r
-         begin noun:=70;Ev:=Ev+['G'];Sc:=Sc+40;end;\r
-   7   :if not(en('G'))then begin Ev:=Ev+['G'];RL(157);\r
-          FlagSA:='r';verb:=14;noun:=70;Sc:=Sc+40;end;\r
-          end; {of 12}\r
-\r
-13      :case verb of\r
-   50    :if flasoff then RL(14)\r
-            else begin moveto(11); Ev:=Ev-['q'];end;\r
-   43    :if(en('q'))then begin RL(24); DEAD;end\r
-            else begin RL(23); Ev:=Ev+['q'];end;\r
-   52,19,33:RL(42);\r
-  14    :if(noun=47)then RL(25);\r
-  9   :begin RL(68);vanish(noun);end;\r
-          end;{of 13}\r
-\r
-17       :case verb of\r
-   51,19,2:RL(15);\r
-   45    :if(flasoff)then RL(14)else moveto(18);\r
-          end;\r
-\r
-18      :case verb of\r
-   46    :if(flasoff)then RL(14)else moveto(17);\r
-  49,52  :if(flasoff)then RL(14)else begin RL(308);moveto(19);end;\r
-   47    :if(flasoff)then RL(14)else\r
-           if not(en('F'))then begin RS(19);writeln;moveto(21);\r
-            Ev:=Ev+['F'];Sc:=Sc+10;end\r
-           else moveto(21);\r
-  11     :if(noun in[79,50])then RL(254);\r
-         end;{of 18}\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP12}\r
-{-------------------}\r
-overlay procedure SpecialAnswers13;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-2         :case verb of\r
-   46     :moveto(1);\r
-   45, 44 :RL(1);\r
-   19,2   :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;\r
-  14,27 :if noun=14 then RL(2)else\r
-         if(noun in[1,40])and(40 in p[2])then\r
-            begin noun:=40;Sc:=Sc+10;Verb:=14;RL(417);FlagSA:='r' end;\r
-   11   :if(noun in[66,46])then RL(11);\r
-   26   :if noun=14then RL(13);\r
-         end;\r
-\r
-31     :case verb of\r
-   48,58:moveto(25);\r
-   14   :if not(en('I'))and(noun in[7,1])then\r
-           begin Ev:=Ev+['I'];noun:=7;Sc:=Sc+5 end;\r
- 23,24,11:if(noun=84)then RL(152)else\r
-          if(noun=22)then RL(415);\r
-       end;\r
-\r
-32     :case verb of\r
-   43,58:moveto(25);\r
- 11,23  :case Noun of\r
-          61:if(en('H'))then RL(153) else begin Ev:=Ev+['H'];r[34]:=32;\r
-               RL(154);Sc:=Sc+15;end;\r
-         end;{of Noun case}\r
-       end;\r
-\r
-34    :case verb of\r
-   45,58:moveto(25);\r
-   14   :if(noun=74)and(74 in P[34])then begin P[34]:=P[34]-[74];\r
-           inven:=inven+[74];RL(138);Sc:=Sc+25;end;\r
-   42   :if(noun=74)and(74 in P[34])then RL(175);\r
-   28,27:if(noun in[10,36])then begin RL(387);\r
-          for o:=1 to random(12)+4 do play(random(250),random(250),random(30))\r
-         end;\r
-   39   :if(noun=25)then begin RL(387);\r
-          for o:=1 to random(99)+75 do\r
-           begin x:=random(9999);play(x,x,random(19)+10);delay(5)end\r
-         end;\r
-   11   :case noun of\r
-          0:RL(139);\r
-          25:RL(418);\r
-          21:begin;RL(140);RL(141);end;\r
-          68:if(SlotCon=Null)then RL(143) else\r
-              begin SA;writeln('The slot contains a ',n[SlotCon,1],'.')end;\r
-          58:if(SlotCon=77)and not(en('x'))then\r
-              begin Ev:=Ev+['x'];Sc:=Sc+5;RS(75)end\r
-             else if(SlotCon=77)then RS(77)else RL(385)\r
-         end\r
-       end;\r
-\r
-0         :case verb of\r
-   45     :MoveTo(1);\r
-   44     :begin TextColor(m8);writeln('Casino Hall');TextColor(m2);RS(0)end;\r
-  19,2    :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;\r
-  11    :if(noun=73)then RL(19);\r
-         end;\r
-\r
-1        :case verb of\r
-   46     :moveto(0);\r
-   45     :moveto(2);\r
-   43,57  :moveto(3);\r
-   6,17   :if(noun=57)and(here(40))and((noun2=40)or(noun2=Null))then\r
-           begin RS(16);Sc:=-500;\r
-            Loc:='Locked Cabin';Verbose:=True;inven:=[];KitSet:=KitSet-[57];\r
-            n[57,1]:='plastic card';n[57,2]:='card';n[57,3]:='plastic';\r
-            n[57,4]:='elevato card';n[57,5]:='elevato';r[57]:=76;moveto(76)\r
-           end;\r
- 33,19,2  :if(noun in[6,53,64])then moveto(3)\r
-          end;\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP13}\r
-{-------------------}\r
-overlay procedure SpecialAnswers14;\r
-\r
-begin\r
-FlagSA:='r';\r
-if Present then\r
-Case Prm of\r
-\r
-49     :case verb of\r
-    43  :moveto(45);\r
-  44,57 :begin RL(290);moveto(50);n[36,1]:='lever';n[36,2]:='handle';end;\r
-  45..50:RL(291);\r
-    11  :if(noun in[26,50])then RL(292);\r
-    2   :if(noun=72)then RL(312);\r
-    11  :if(noun=72)then RL(313);\r
-        end;\r
-\r
-59     :case verb of\r
-   43..50:begin o:=random(8)+3;writeln('You travel about ',o,' miles...');\r
-           if(random(4)=2)then ShRm:=13 else ShRm:=Random(15);moveto(59)end;\r
-   52,57:RL(341);\r
-    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;\r
-    51  :begin sound(30);\r
-          if not(en('U'))then begin RS(64);writeln;Ev:=Ev+['U'];Sc:=Sc+45;end\r
-          else RL(349);moveto(63);sound(20)end;\r
-    14  :if(noun=63)then begin RS(65);DEAD;end;\r
-    28  :if(noun=10)then noun:=81;\r
-        end; {of case 59}\r
-\r
-72     :case verb of\r
-    46  :moveto(71);\r
-  43,44,58:moveto(73);\r
-    45  :moveto(74);\r
-        end;\r
-\r
-73     :case verb of\r
-  43,45,58:moveto(72);\r
-    46  :moveto(73);\r
-    44  :begin moveto(74);if(MnRm=Null)then RL(356);end;\r
-        end;\r
-\r
-74     :case verb of\r
-  43,45 :moveto(73);\r
-  46,58 :moveto(74);\r
-    44  :if(MnRm=Null)then begin Verbose:=False;Moveto(75);Verbose:=True;\r
-          RS(69);MnRm:=75;Attack:=False end else moveto(75);\r
-        end;\r
-\r
-75     :case verb of\r
-  43,58 :moveto(74);\r
-   11   :if(noun in[14,61])then RL(364);\r
-        end;\r
-\r
-76     :case verb of\r
-   43   :RL(114);\r
-   11   :if(noun=26)then RL(271)else\r
-         if(noun=57)then RL(408);\r
-        end;\r
-\r
-end  {of case}\r
-else SA\r
-end; {of SP14}\r
-{===================}\r
-procedure ScreenDraw_PlayerInput;\r
-  begin\r
-   gotoxy(1,23);writeln;TextColor(m5);write(chr(175),' ');\r
-   Window(1,1,80,25);\r
-   gotoxy(1,1);textcolor(m4);TextBackGround(m6);\r
-   gotoxy(10,1); writeln(Tic,'  '); gotoxy(75,1); writeln(Sc,' ');\r
-   gotoxy(35-(length(Loc)div 2),1);writeln('     ',Loc,'     ');\r
-   gotoxy(3,25);TextBackGround(0);Window(1,2,80,25);\r
-   textcolor(m1);BufLen:=77;\r
-   if(Loc<>'Civilization!')then READLN(LINE)else repeat;until false;\r
-   if(Line='r')or(Line='repeat')then Line:=Again\r
-   else Again:=Line;\r
-   gotoxy(1,23);TextColor(m3);writeln(chr(175));TextColor(m2);\r
-  end;\r
-{-------------------}\r
-\r
-\r
-BEGIN\r
-clrscr;\r
-assign0;\r
-assign1;assign2;assign3;assign4;assign5;assign6;assign7;assign8;\r
-Initialize;\r
-\r
-                            {*****} repeat {*****}\r
-\r
-if Skip then Time; writeln;\r
-\r
-if(length(Line)=0)then begin\r
- ScreenDraw_PlayerInput;\r
- while pos(' then ',Line)>0 do\r
-  begin x:=pos('then ',Line);delete(Line,x,4);insert('.',Line,x)end;\r
- LowerCase(Line);\r
- Format(Line);\r
- Chop(Line);\r
-end;\r
-if(pos('.',Line)>0)then begin\r
-  Input:=copy(Line,1,pos('.',Line));\r
-  delete(Line,1,pos('.',Line));\r
-  delete(Input,pos('.',Input),1);\r
-end else\r
- begin\r
-  Input:=Line;\r
-  Line:=''\r
- end;\r
-Input:=Input+' ';\r
-while pos(' it ',Input)>0 do\r
- begin x:=pos(' it ',Input)+1;delete(Input,x,2);insert(LastNoun,Input,x);\r
- Format(Input);Chop(Input)end;\r
-if(Input[length(Input)]=' ')then delete(Input,length(Input),1);\r
-\r
-\r
-\r
-Check(SepWord);\r
-\r
-if Flag = 'g' then\r
-  begin\r
-    case Prm of\r
-      3..4                :SpecialAnswers1;\r
-      5..10               :SpecialAnswers2;\r
-      14..16              :SpecialAnswers3;\r
-      19..24              :SpecialAnswers4;\r
-      25,27..29,33        :SpecialAnswers5;\r
-      30                  :SpecialAnswers6;\r
-      26,35..40           :SpecialAnswers7;\r
-      41..48              :SpecialAnswers8;\r
-      50..55              :SpecialAnswers9;\r
-      56..58,60..62,65..67:SpecialAnswers10;\r
-      63,64,68..71        :SpecialAnswers11;\r
-      11..13,17,18        :SpecialAnswers12;\r
-      0..2,31,32,34       :SpecialAnswers13;\r
-      49,59,72..76        :SpecialAnswers14\r
-    end;\r
-\r
-    if FlagSA <> 's' then\r
-      case Verb of\r
-       11,18,22,41,43..52,57,58    :DefaultAnswers1;\r
-       29                          :DefaultAnswers2;\r
-       1,2,8,12,13,15,16,19,21,\r
-        23..25,31,33,34,38,40,60,63:DefaultAnswers3;\r
-       3,6,7,20,30,35,53..56,59    :DefaultAnswers4;\r
-       9,26                        :DefaultAnswers5;\r
-       27,28,62                    :DefaultAnswers6;\r
-       14,64,4,5                   :DefaultAnswers7;\r
-       0,10,17,42,39               :DefaultAnswers8;\r
-       32                          :DefaultAnswers9;\r
-       36,37,61,65                 :DefaultAnswers10;\r
-      end;\r
-  end;\r
-\r
-                         {*****} until False {*****}\r
-\r
-END. {of program}\r
-\1a\r
+{$mode objfpc}
+
+{//-------------------------------------------------------------------------}
+{/*                                                                         }
+{Copyright (C) 2014 Jason Self <j@jxself.org>                               }
+{                                                                           }
+{This file is free software: you may copy, redistribute and/or modify it    }
+{under the terms of the GNU Affero General Public License as published by   }
+{the Free Software Foundation, either version 3 of the License, or (at your }
+{option) any later version.                                                 }
+{                                                                           }
+{This file is distributed in the hope that it will be useful, but WITHOUT   }
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License}
+{for more details.                                                          }
+{                                                                           }
+{You should have received a copy of the GNU Affero General Public License   }
+{along with this program; if not, see https://gnu.org/licenses or write to: }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{This file incorporates work covered by the following copyright and         }
+{permission notice:                                                         }
+{                                                                           }
+{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }
+{                                                                           }
+{This file is part of Beyond The Titanic. Beyond The Titanic is free        }
+{software; you can redistribute it and/or modify it under the terms of the  }
+{GNU General Public License as published by the Free Software Foundation;   }
+{either version 3 of the License, or (at your option) any later version.    }
+{                                                                           }
+{This program is distributed in the hope that it will be useful, but WITHOUT}
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE.                                          }
+{                                                                           }
+{See the GNU General Public License for more details.                       }
+{                                                                           }
+{You should have received a copy of the GNU General Public License          }
+{along with this program; if not, write to:                                 }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{Original Source: 1990 Scott Miller                                         }
+{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }
+{*/                                                                         }
+{//-------------------------------------------------------------------------}
+{****************************************************************************}
+{*                          BEYOND THE TITANIC                              *}
+{*    Written by Scott Miller with Turbo Pascal V.2.  Began May 12, '84.    *}
+{*                           Shareware Version                              *}
+{*                             Copyright 1987                               *}
+{$C-,K-,V-,R-****************************************************************}
+
+{ Last modified: July 23, 1987 }
+
+uses crt,sysutils;
+const
+     Q        = '#';
+     VMax     = 65;
+     NMax     = 89;
+     RMax     = 76;
+     Null     = -1;
+
+type
+     ComSet         = set of 0..VMax;
+     CharSet        = set of Char;
+     PlayersObjects = set of 0..NMax;
+     Str14          = string[14];
+     Str80          = string[80];
+     Str240         = string[240];
+     SaveGame       = record
+       aInven,
+       aKitSet,
+       aCabiSet  :PlayersObjects;
+       aPanelCon,
+       aSlotCon,
+       aCompCon,
+       aRopeCon,
+       aTic,
+       aYearDial,
+       aPrm,
+       aMnRm,
+       aSc,
+       aShots,
+       aShRm,
+       aRx       :integer;
+       aEv       :CharSet;
+       aCode,
+       aLoc      :Str14;
+       aKeyHole  :boolean;
+      end;
+
+var
+     WordList       : file of Str14;
+     Things         : file of integer;
+     Objects        : file of PlayersObjects;
+     GameSave       : file of SaveGame;
+     DiskSave       : SaveGame;
+     Input,
+     Again,
+     Line           : Str80;
+     V{erb}         : array [0..VMax,1..5] of Str14;
+     N{oun}         : array [0..NMax,1..5] of Str14;
+     R{oom}         : array [0..NMax] of integer;
+     P{lace}        : array [0..RMax] of PlayersObjects;
+     RmSh           : set of 0..14;
+     OneWordCommands: Comset;
+     Mov{able},
+     Inven{tory},
+     KitSet,
+     CabiSet        : PlayersObjects;
+     Word,
+     LastNoun,
+     Drive,
+     Code,
+     Loc{ation},
+     SepWord        : Str14;
+     Rooms1, Rooms2,
+     Special1, Special2 : file of Str240;
+     Text1, Text2   : Str240;
+     Line1          : file of Str80;
+     Verb,
+     Noun, Noun2,
+     PanelCon,
+     RopeCon,
+     CompCon,
+     SlotCon,
+     RopeOld,
+     Tic,
+     YearDial,
+     DayDial,
+     Prm,  {Player Room}
+     MnRm, {Monster Room}
+     Sc{ore},
+     Shots,
+     DialNum,
+     Stuff,
+     ShRm, {Shuttle Room}
+     m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,
+     Rx, {deserted road}
+     Ox, {ocean bottom}
+     x, y, o        : integer;
+     Flag,
+     FlagSA         : char;
+     Ev{ent}        : CharSet;
+     Attack,
+     Skip,
+     Back,
+     KeyHole,
+     Verbose        : boolean;
+
+
+
+{$I AdParser.PAS}{  <--- Loads in sentence logic.    <*********************}
+
+
+{$I Commands.PAS}{  <--- Loads in misc. procedures.  <*********************}
+
+
+{$I WordList.PAS }{  <----- CALLS UP THE VERBS & NOUNS <*******************}
+
+
+{$I Objects.PAS }{   <----- CALLS UP THE VERBS & NOUNS <*******************}
+
+
+{===================}
+procedure DefaultAnswers1;
+var o : integer;
+begin
+
+CASE VERB OF
+
+22        :begin if(Prm in[59..68])then
+                  begin RmSh:=RmSh-[ShRm];RS(84)end;
+            if flasoff and (Prm in [6..24])then RL(54) else
+             if Verbose then DescribeRm
+              else begin Verbose:=true;DescribeRm;Verbose:=false;end;
+            if(23 in p[Prm])and(MnRm=Prm)then RL(357);
+            if Back then begin Attack:=False; Back:=False;end
+           end;
+
+18        :if inven=[] then RL(116)
+             else
+               begin
+                 writeln('You have in your possession...');
+                   for o:= 0 to NMax do
+                    begin
+                     if(o in inven)then
+                      if(o=74)then
+                       writeln('an ',n[o,1])else writeln('a ',n[o,1]);
+                     if(ropecon in inven)and(o=ropecon)then
+                      writeln('  The rope is tied to the ',n[o,1],'.');
+                     if(o=74)and(en('p'))then RL(174);
+                     if(o=89)and(en('i'))then RL(321);
+                    end;
+               end;
+
+11     :case noun of
+       60:Diagnose;
+       2:if(en('b'))then RL(198) else RL(199);
+       29:begin RL(89);if(en('a'))then RL(200) else RL(201);end;
+       57:if(ropecon<>Null)then
+            writeln('The rope is tied to the ',n[ropecon,1],'.')
+          else RL(133);
+       65:if(Prm in[59..68])then RS(84)else Line:='l';
+       8:RL(202);
+       7:RL(163);
+       70:RL(164);
+       52:RL(165);
+       74:RL(166);
+       23:RS(70);
+       32:RL(253);
+       13:RL(167);
+       22:RL(226);
+       1:if(Prm=42)and(13 in p[42])then RL(167);
+       21:RL(227);
+       9:if(Prm=49)then RL(228)else if(Prm>62)then RS(68)else RL(229);
+       69:RL(355);
+       77:RL(403);
+       37:RL(295);
+       27:RL(394);
+       89:RL(338);
+       18:if(Prm in[63..70])then RS(68)else RL(348);
+       46,66:If(Prm in[58,59,63,69])then begin
+       TextColor(12);RS(83);TextColor(m2)end;
+       87:RL(230);
+       84:RL(231);
+       34:begin RL(189);
+           if(Shots>0)then writeln('is about ',Shots*10,' percent full.')
+           else Writeln('is empty.')end;
+       15:if(84 in p[Prm])then RL(180)else If(71 in p[Prm])then RL(182)
+          else RL(181);
+    56,44:if(en('r'))then RL(51) else RL(52)
+       else if not(noun in[1,12,14,15,17,18,19,22,31,36,50,
+             54,67,69,73,79,80,84,87,88])and(random(3)=1)then
+            case random(3) of
+             0  :RL(407);
+             1  :writeln('Yea, it''s definitely a ',n[noun,1],'!');
+             2  :writeln('It looks like any other ',n[noun,1],'.');
+            end
+            else writeln('You see nothing special about the ',n[noun,1],'.')
+       end;
+
+41         :begin writeln('Time passes');y:=wherey;for o:=1 to 6 do
+              begin gotoxy(11+o,y-1);writeln('.');sound(o*99);delay(30)end;
+              if(Prm in[59..68])then sound(20)else nosound end;
+
+43..52     :if(Prm in[6..24])and(FlasOff)then RL(14)else
+             if(Prm=69)then RL(358)else RL(144);
+
+57,58      :begin Attack:=False;
+             if(Prm in[6..24])and(FlasOff)then RL(14)else RL(190);end;
+
+  end {of case}
+end;  {of DefaultAnswers1}
+{-------------------}
+procedure DefaultAnswers2;
+var o : integer;
+begin
+
+CASE VERB OF
+
+29    :if(noun in Mov)then
+        if(noun in inven)then
+         begin FlagSA:='r';
+          case Noun2 of
+        39:if(en('o'))then begin RL(186);Vanish(noun);
+            kitset:=kitset+[noun];r[noun]:=Prm;end
+           else RL(185);
+        68:if(Prm=34)then
+            if(SlotCon=Null)then begin RL(186);Vanish(noun);
+             SlotCon:=Noun;r[noun]:=Prm;end
+            else Say(68,'being used')
+           else
+            if(noun=63)and(Prm=58)then
+             begin RL(337);KeyHole:=True;r[63]:=Prm;inven:=inven-[63];end
+            else RL(327);
+        88:begin RL(293);vanish(noun);r[noun]:=random(4)+51;end;
+        47,53,73:if(Prm in[0..6,9,10,13,41..43])then
+           begin RL(307);vanish(noun);end;
+        11:if(en('k'))then begin RL(186);Vanish(noun);
+            CabiSet:=CabiSet+[noun];r[noun]:=Prm;end
+           else RL(187);
+        26:if(Prm=76)and(noun=57)then begin RL(409);Vanish(57)end;
+        49:if(PanelCon=Null)and(noun in[2,7,8,13,27,32,51,52,63,77])then
+            begin RL(186);Vanish(noun);PanelCon:=Noun;r[noun]:=Prm;end
+           else RL(188);
+        30:if(noun=70)then
+            if not(en('d'))then
+             begin Ev:=Ev+['d'];RL(69);Vanish(70);r[70]:=Prm;end
+            else Say(70,'in the dirt')
+           else Crazy
+          end;{of case}
+
+          if(FlagSA<>'s')then
+           begin
+            if(SepWord='to')then
+             if(noun2 in[4,6,9,11,14,16,22,30,50,59,61,64,65,69,75])then
+              begin RL(186);Vanish(noun);r[noun]:=Prm;end
+             else RL(197);
+            if(SepWord='at')or(SepWord='near')or(SepWord='behind')then
+             if(noun2 in[0,4,6,9,11,12,14,16,17,20..23,26,28,30,35,39,43,
+                         50,53,54,59,61,62,64..69,72,73,75,78..80])then
+              begin RL(186);Vanish(noun);r[noun]:=Prm;end
+             else RL(197);
+            if(SepWord='under')then
+             if(noun2 in[4,15,16,20,23,59,60,61,75])then
+              begin RL(186);Vanish(noun);r[noun]:=Prm;end
+             else RL(197);
+            if(SepWord='in')then
+             if(noun2 in[6,16,43,47,30,50,59,64,65,72,78,80,84])then
+              begin RL(186);Vanish(noun);r[noun]:=Prm;end
+             else RL(197);
+            if(FlagSA<>'s')then Crazy;
+           end
+          end
+         else writeln('First you must have the ',n[noun,1],'.')
+        else Crazy;
+
+  end {of case}
+end;  {of DefaultAnswers2}
+{-------------------}
+  procedure DefaultAnswers3;
+var o : integer;
+begin
+
+CASE VERB OF
+
+31,63      :if(Verb=63)and(Prm<>MnRm)then RL(395)
+            else
+             if(Prm=MnRm)then
+              begin Attack:=False;
+               if(input='hi')or(input='hello')or(input='bye')then RL(396)else
+               if(copy(input,1,6)='follow')then RL(397)else
+                case random(5) of
+                 0:RL(365);1:RL(398);2:RL(399);3:RL(400);4:RL(401)
+                end
+              end
+             else RL(123);
+
+33         :RL(124);
+
+38         :case noun of
+             83:RL(262);
+             23:begin RL(366);DropAll;Ev:=Ev+['r'];Attack:=False end
+             else RL(125);
+            end;
+
+16         :if(MnRm=Prm)then begin Attack:=False;RL(372)end else
+            if(en('r'))then RL(373)else
+            if(Prm<15)and(70 in p[12])then RL(374)else  RL(371);
+
+19         :if(noun=Null)then RL(136)else Crazy;
+24         :if(noun=7)then RL(422)else
+            if(noun in[26,6,7,22,36,17,50,65,73,74,80,79,30,84])then RL(126)
+            else Crazy;
+21         :RL(127);
+40         :Crazy;
+
+8          :if(noun in[73,80])or(noun=Null)then
+             if(noun<>Null)then RL(36)
+             else if(here(73))or(here(80))then RL(36)else RL(37)
+            else RL(53);
+
+12         :RL(38);
+2          :if(noun in[4,35,39,8,11,12,14,20,21,30,57,43,59,67,70,75])then
+              RL(43)else RL(44);
+
+15         :if(noun in mov)then
+             if(sepword='to')then
+              if(noun2=23)then
+               begin RL(62);Vanish(noun);Attack:=False end
+              else Crazy
+             else RL(60)
+            else RL(61);
+
+1          :if(verbose)then
+              begin verbose:=false;RL(134);end
+             else begin verbose:=true;RL(135);end;
+
+13         :RL(77);
+23         :RL(78);
+
+60         :case noun of
+            43,12:RL(252);
+            35:RL(288)
+            else RL(78);
+            end;
+
+25         :if(Prm>62)and(Noun in[9,18,19,41])then RL(350)else RL(78);
+34         :RL(79);
+
+  end {of case}
+end;  {of DefaultAnswers3}
+{-------------------}
+  procedure DefaultAnswers4;
+var o : integer;
+begin
+
+CASE VERB OF
+
+20         :RL(81);
+35         :RL(82);
+
+6          :if(noun=23)and(here(40))then begin vanish(40);RL(84);end
+             else
+              if here(40)then
+               if(noun2=Null)or(noun2=40)then
+                case noun of
+                 57:RL(259);
+                 60:RL(260)
+                 else writeln('At the last moment you decide to spare',
+                       ' the ',n[noun,1],'''s life!')
+                end
+               else Crazy
+              else RL(83);
+
+30         :if(noun in [39,43,12,26,6,22,47,49,68,78,17,11,
+               50,65,73,74,80,79,30])then RL(93) else RL(94);
+
+54         :begin write('Would you like to SAVE your game first (Y or N)?  ');
+             flag:=ReadKey;if(upcase(flag)<>'N')then SAVE else writeln('No.');
+             write('Are you still sure you want to quit? ');
+             flag:=ReadKey;if(upcase(flag)='Y')then
+              begin RL(367);delay(999);window(1,1,80,25);clrscr;close(rooms1);
+               close(rooms2);close(special1);close(special2);close(line1);
+              HALT end else RL(264)end;
+53         :if(Prm in[27,30])then RL(123) else RL(145);
+59         :If(noun=23)then RL(368)else Diagnose;
+
+55         :if(noun=74)then
+              if(en('p'))then
+                begin Ev:=Ev-['p'];RL(169);end
+              else RL(168)
+            else
+            if(noun=89)then
+              if(en('i'))then
+                begin
+                 Ev:=Ev-['i'];RL(322);
+                 if(Prm in[59,63..68])then begin RS(66);DEAD;end;
+                end
+              else RL(323)
+            else Crazy;
+
+56     :if(noun=Null)or(noun in[60,23])or(noun in Mov)then
+         case noun of
+          23:RL(369);
+          60,Null:RL(193);
+          7:RL(194)
+          else RL(195);
+         end
+        else RL(196);
+
+3       :case noun of
+         7:RL(235);
+         2:if(en('b'))then RL(236)else RL(237);
+         62:RL(238);
+         65:RL(239);
+         74:RL(240);
+         78:RL(241);
+         84,40,50,68,85:RL(242)
+         else Crazy;
+        end;
+
+7      :begin if(noun=Null)then noun:=30;
+         if(noun in[30,36,47,50,71,72,79])then
+          case noun of
+           30,47,50,71:if(Prm in[5..22,44..49])then RL(247) else RL(248);
+           36:RL(249);
+           72:RL(250);
+           79:RL(251);
+          end
+         else Crazy;
+        end;
+
+
+  end   {of CASE.}
+end;    {of DefaultAnswers4}
+{-------------------}
+  procedure DefaultAnswers5;
+var o: integer;
+begin
+
+CASE VERB OF
+
+9         :if noun<>1 then
+             if(noun in Inven)then
+               if(noun=74)and(en('p'))then RL(170)
+          else if(noun=89)and(en('i'))then RL(335)
+          else begin
+                 inven:=inven-[noun];writeln(n[noun,1],': Dropped.');
+                 R[noun]:=Prm;
+               end
+             else
+               writeln('You don''t have the ',n[noun,1],'.')
+           else
+             begin
+              if(74 in inven)and(en('p'))then RL(170)else
+              if(89 in inven)and(en('i'))then RL(335)else
+              DropAll;
+            end;
+
+26        :case noun of
+         2:if not(en('b'))then
+              begin
+                Ev:=Ev+['b'];
+                RL(3);end
+            else Say(noun,'peeled');
+         7:RL(162);
+        57:if(ropecon<>Null)then
+              begin
+                ropecon:=Null;
+                RL(117);end
+            else Say(noun,'untied');
+        62:RL(238)
+         else Crazy;
+         end; {end of OPEN }
+
+  end {of case}
+end;  {of DefaultAnswers5}
+{-------------------}
+  procedure DefaultAnswers6;
+var o : integer;
+begin
+
+CASE VERB OF
+
+28,27     :case noun of
+           23:RL(369);
+           29:if not(en('a'))then
+                begin Ev:=Ev+['a'];
+                RL(120);end
+              else begin Ev:=Ev-['a'];
+                RL(121);end;
+           57:if(ropecon<>Null)and not(ropecon in inven)
+                    and(r[ropecon]<>Prm)then
+                  if(ropecon in mov)then begin
+                    RL(57);writeln('...it''s a ',n[ropecon,1],'!');
+                    r[ropecon]:=Prm;Ev:=Ev-['u'];
+                    if(ropecon=29)and not(flasoff)then DescribeRm;end
+                  else RL(56)
+               else RL(122);
+           8:begin RL(243);RL(244);play(9999,3500,0);play(3499,2000,1);
+              play(1999,1000,2);play(999,200,5);play(199,8,16);Ev:=Ev+['e'];
+              n[36,5]:=Q;n[78,5]:='glass';n[68,1]:='slot';n[66,4]:=Q;
+              Ev:=Ev-['j'];
+              moveto(30);
+              if(MnRm=Prm)then RS(73);
+             end;
+           81:if not(en('j'))then
+               if KeyHole then
+                begin Ev:=Ev+['j'];RL(326);play(2000,2001,200);end
+               else RL(123)
+              else
+               begin Ev:=Ev-['j'];
+                if Keyhole then begin RL(326);play(2001,2000,200)end
+                else RL(123);
+                if(Prm in[59..68])then begin nosound;RS(62);DEAD;end;
+               end;
+           36:begin
+               if(Prm > 57)then if(Prm = 58)then RL(123)else
+                begin RS(63);DEAD;end;
+              end
+             else RL(122);
+           end; {of case}
+
+62         :begin write('You have ',Sc,' of 1000 points',
+                        ', giving you the rank of ');Tic:=Tic-1;
+              case Sc of
+              0..99:writeln('beginner.');
+              100..249:writeln('novice adventurer.');
+              250..399:writeln('adventurer third class.');
+              400..549:writeln('adventurer second class.');
+              550..699:writeln('adventurer first class.');
+              700..849:writeln('expert adventurer.');
+              850..999:writeln('master adventurer.')
+              else writeln('dead adventurer!')
+              end;
+            Attack:=False;
+            if(MnRm=Prm)then RL(370)
+            end;
+
+  end {of case}
+end;  {of DefaultAnswers6}
+{-------------------}
+  procedure DefaultAnswers7;
+var o : integer;
+begin
+
+CASE VERB OF
+
+14      :if(noun<>1)then
+          if(noun in Mov)then
+           if not(noun in inven)then
+            begin
+            Stuff:=0;
+            for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;
+            if(Stuff < 6)then
+             if(en('r'))and(inven<>[])then RL(87)
+             else begin
+                   Vanish(Noun);inven:=inven+[noun];
+                   writeln(n[noun,1],': Taken.');
+                   if(noun=70)then Ev:=Ev-['d'];
+                  end
+            else RL(234)
+            end
+           else writeln('You already have the ',n[noun,1],'.')
+          else Crazy
+         else if(en('r'))then RL(88) else
+            begin flag:='0';Stuff:=0;
+             for o:=0 to NMax do if(o in inven)then Stuff:=Stuff+1;
+             if(Stuff < 7)then
+              for o:=0 to NMax do
+               begin
+                if r[o]=Prm then
+                 if(Stuff+1 < 7)then
+                  begin
+                   vanish(o);inven:=inven+[o];Stuff:=Stuff+1;
+                   writeln(n[o,1],':  Taken.');flag:='1';
+                   if(o=70)then Ev:=Ev-['d'];
+                  end
+                 else
+                  begin flag:='1';
+                  writeln(n[o,1],': You have too many objects already!');end
+               end
+             else RL(234);
+             if(flag='0')then RL(49)
+            end; {of 14}
+
+4,5       :RL(420);
+
+64        :SAVE;
+
+  end {of case}
+end;  {of DefaultAnswers7}
+{-------------------}
+  procedure DefaultAnswers8;
+var o : integer;
+begin
+
+CASE VERB OF
+
+10         :if(noun in [2,52])then
+              if(noun=2)then
+                if(en('b'))then begin
+                  RL(45); Ev:=Ev+['c'];inven:=inven+[51];
+                  Vanish(2);Sc:=Sc+10;end
+                else RL(46)
+              else begin RL(47);Ev:=Ev+['n'];Sc:=Sc+15;Vanish(52);end
+            else writeln('I don''t think the ',n[noun,1],
+                         ' would do much for your digestive system!');
+
+42         :case noun of
+            74:if not(en('p'))then
+                if not(en('i'))then
+                 begin RL(20);inven:=inven+[74];r[74]:=Null;Ev:=Ev+['p'];end
+                else RL(320)
+               else Say(74,'on');
+            89:if not(en('i'))then
+                if not(en('p'))then
+                 begin RL(319);vanish(89);inven:=inven+[89];Ev:=Ev+['i'];end
+                else RL(318)
+               else Say(89,'on your head')
+            else RL(128);
+            end;
+
+17,0       :if(noun2=Noun)then Crazy else
+            if(noun2 in Mov)or(Noun2=Null)then
+            case Noun of
+             2:begin RL(21);Vanish(2);Sc:=Sc+25;r[51]:=Prm;end;
+             60:begin RL(22);DEAD;end;
+             52:begin RL(34);Vanish(52);end;
+             23:if(noun2=null)then RL(369)
+                else begin Vanish(noun2);Attack:=False;
+                 writeln('The monster grabs the ',n[noun2,1],' and eats it!');
+                     end;
+             7:begin RL(35);Vanish(7);r[52]:=Prm;Ev:=Ev+['I'];end
+             else if(verb=0)then writeln('At the last moment you decide to',
+                 ' spare the ',n[noun,1],'''s life!')
+                  else RL(216);
+             end{of case}
+             else Crazy;
+
+39         :if((SepWord='to')or(SepWord='off'))and(Noun2=Null)then
+             case Noun of
+              29:if(SepWord='to')then begin Ev:=Ev+['a'];RL(120);end
+                 else begin Ev:=Ev-['a'];RL(121);end;
+              13:RL(148);
+              20:RL(149);
+              65:RL(150)
+             else Crazy end
+            else RL(80);
+
+  end {of case}
+end;  {of DefaultAnswers8}
+{-------------------}
+  procedure DefaultAnswers9;
+var o : integer;
+begin
+
+CASE VERB OF
+
+32    :if(34 in inven)then
+        if(shots>0)then
+         begin
+         Shots:=Shots-1;
+         for x:=1 to (26-(4*(6-Shots))) do
+            begin play(300,350,11-Shots*2);play(320,370,11-Shots*2);end;
+          if(noun=34)and(noun2<>34)and(noun2<>Null)and(SepWord='at')then
+             begin noun:=noun2; noun2:=34; SepWord:='with';end;
+          if((noun2=34)and(noun<>34)and(SepWord='with'))or
+            ((noun<>34)and(SepWord='s'))then
+      case noun of
+       1:begin;Crazy;Shots:=Shots+1;end;
+       2,7,8,13,27,29,32,40,51,52,63,74,77,89:begin vanish(noun);
+          writeln('The ',n[noun,1],' vanishes in an explosion of light!');
+            if(noun=74)and(en('p'))then begin RL(232);DEAD;end;
+         end;
+       48:begin RL(222);RL(223);Ev:=Ev+['g'];p[40]:=p[40]-[48];
+           if not(en('P'))then begin Ev:=Ev+['P'];Sc:=Sc+25;end;end;
+       12,26:RL(224);
+       23:begin case random(4)of 0:RL(375);1:RL(376);2:RL(377);3:RL(378)end;
+           Attack:=False;
+          end;
+       45:RL(315);
+       60,56,44:begin RL(233);DEAD;end
+       else writeln('A blinding ray strikes the ',n[noun,1],', but it is',
+                      ' only slightly blackened.');
+      end {of shoot case}
+          else if(noun=34)and(noun2=Null)then RL(213)
+          else begin;Crazy;Shots:=Shots+1;end;
+         end
+        else begin writeln('...click!');play(25,32,9);end
+       else RL(208);
+
+  end {of case}
+end;  {of DefaultAnswers9}
+{-------------------}
+  procedure DefaultAnswers10;
+var o : integer;
+begin
+
+CASE VERB OF
+
+36         :if(noun in mov)then
+             if(noun in inven)then
+              if((noun in[2,7,52,29])or
+                 (noun2 in[2,7,23,29,47,52,53,73,88]))and(noun<>noun2)then
+               begin
+                if(noun=2)or(noun2=2)then begin RL(95);vanish(2);
+                  r[51]:=Prm;end;
+                if(noun=7)or(noun2=7)then begin RL(35);vanish(7);
+                  Ev:=Ev+['I'];r[52]:=Prm;end;
+                if(noun=29)or(noun2=29)then begin RL(96);vanish(29);end;
+                if(noun=52)or(noun2=52)then begin RL(34);vanish(52);end;
+                if(noun2=88)then begin RL(293);vanish(noun);
+                  if(noun=2)then noun:=51;if(noun=7)then noun:=52;
+                  r[noun]:=random(4)+51;end;
+                if(Prm in[0..6,9,10,13,41..43])and(noun2 in[73,53,47])then
+                  begin RL(306);vanish(noun);end;
+                if(noun2=23)then begin Attack:=False;Vanish(noun);RL(379);
+                  writeln(n[noun,1],' out of mid-flight and eats it',
+                        ' in one giant gulp!')end;
+               end
+              else begin writeln('The ',n[noun,1],' collides with the ',
+                n[noun2,1],' but nothing interesting happens.');
+                Vanish(noun);r[noun]:=Prm;end
+             else writeln('First you must have the ',n[noun,1],'.')
+            else Crazy;
+
+37         :if(noun=57)then
+             if(sepword='to')then
+              if not(noun2 in[1,15,17,22,30,46,47,50,52,72,73,79,80,83])then
+               if(ropecon=Null)then begin
+                ropecon:=noun2;
+                writeln('The rope is firmly tied to the ',n[noun2,1],'.');
+                if(noun2=57)then RL(48);end
+               else writeln('It is already tied to the ',n[ropecon,1],'.')
+              else RL(50)
+             else Crazy
+            else Crazy;
+
+61         :begin RL(245);flag:=ReadKey;
+             if(upcase(flag)<>'N')then
+              begin RL(380);delay(999);window(1,1,80,25);clrscr;close(rooms1);
+               close(rooms2);close(special1);close(special2);close(line1);
+               assign(rooms1,'BEYOND.com');
+               {execute(rooms1)}
+               end
+             else RL(264)
+            end;
+
+65        :RESTORE;
+
+  end {of case}
+end;  {of DefaultAnswers10}
+{===================}
+  procedure SpecialAnswers1;
+
+begin
+FlagSA:='r';
+if Present then
+CASE Prm OF
+
+3       :case verb of
+  44,58 :moveto(1);
+  20,52 :if(noun=6)then RL(40);
+    14  :if(noun=57)and not(en('o'))then RL(419);
+   6    :if(noun=57)and(here(40))and((noun2=Null)or(noun2=40))then
+             begin
+               RS(4); tic:=15; moveto(4); Ev:=Ev+['A']; Sc:=Sc+25;
+               if(en('o'))then
+                 for o:= 0 to 57 do begin
+                   if(o in kitset)then r[o]:=Prm;
+                   if(r[o]=3)then r[o]:=Prm;end
+             end;
+   26   :if(noun=39)then
+             if not(en('o'))then
+               begin Ev:=Ev+['o'];RL(328); for o:=2 to 57 do
+                 if(o in kitset)then r[o]:=Prm;end
+             else Say(noun,'opened');
+   3  :if(noun=39)then
+             if(en('o'))then
+               begin Ev:=Ev-['o'];RL(186); for o:=2 to 57 do
+                 if(o in kitset)then r[o]:=Null;end
+             else Say(noun,'shut');
+  17,28,27 :if(noun in [6,57,39,59])then RL(29);
+  24,11   :case noun of
+       39  :if(en('o'))then
+               if kitset=[] then begin RL(329);end
+               else begin RL(330);for o:= 0 to 57 do
+                   if(o in kitset)then writeln(' a ',n[o,1]);end
+             else RL(331);
+       57 :RL(10);
+       73 :RL(19);
+       6 :DescribeRm;
+           end;
+         end; {of 3}
+
+4      :case verb of
+   43..52,20:RL(7);
+    55  :if(noun=35)then begin RL(332);Ev:=Ev-['B'];end;
+  42,3:if noun=35 then begin RL(8); Ev:=Ev+['B'];end
+           else if(noun=39)then
+             if(en('o'))then
+               begin Ev:=Ev-['o'];RL(186); for o:=0 to 57 do
+                 if(o in kitset)then r[o]:=Null;end
+             else Say(noun,'shut');
+  29,37 :if(noun=35)and(noun2=60)then begin
+             RL(8);Ev:=Ev+['B'];end;
+   26   :if(noun=35)and(en('B'))then begin RL(332);Ev:=Ev-['B'];end
+           else if(noun=39)then
+             if not(en('o'))then
+               begin Ev:=Ev+['o'];RL(328); for o:=0 to 57 do
+                 if(o in kitset)then r[o]:=Prm;end
+             else Say(noun,'opened');
+   19,2:if(noun in[6,64])or(noun=Null)then
+             if(en('B'))then RL(9)
+             else begin RL(0);DEAD;end;
+    24,11:case noun of
+       39  :if(en('o'))then
+               if kitset=[] then begin RL(329);end
+               else begin RL(330);for o:= 0 to 57 do
+                   if(o in kitset)then writeln(' a ',n[o,1]);end
+             else RL(331);
+       35 :RL(12);
+       73 :RL(19);
+       6 :DescribeRm;
+           end;  {of case}
+         end; {of 4}
+
+end {of case}
+else SA
+end; {of SP1}
+{-------------------}
+  procedure SpecialAnswers2;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+5       :case verb of
+   45   :moveto(6);
+   2    :if(noun=79)then RL(263);
+           end;
+
+6       :case verb of
+   46   :moveto(5);
+  43,44,45,47..52:if FlasOff then RL(14)
+         else case verb of
+           43:begin Ox:=0;RL(286);moveto(7);end;
+           45:moveto(9); 49:moveto(8);
+              end;
+             end; {of 6}
+
+7       :case verb of
+  23..25,11:if(noun in[6,36,73,0,15,64,67])then RS(9);
+  43..50 :if FlasOff then RL(14)
+          else
+           begin
+            If(Verb in[43,47,48])then Ox:=Ox+1;
+            If(Verb in[44,49,50])then Ox:=Ox-1;
+            if(Ox<1)then begin RL(286);moveto(6)end
+            else
+             begin
+              RL(333);
+              if(random(20)=2)then begin writeln;RS(9);
+               if not(en('K'))then begin Ev:=Ev+['K'];Sc:=Sc+15;end;end;
+             end;
+           end;
+  28,17,6:if(noun=36)or(noun=15)then begin RS(10);DEAD;end;
+  31   :if(input='help')then begin RL(334);moveto(6)end;
+         end;  {of 7}
+
+8       :case verb of
+   48,58:if FlasOff then RL(14) else moveto(6);
+  43..47,49..52:if FlasOff then RL(14);
+  11:if(noun in [46,79])then RS(12)
+         else if(noun in [15,30])then RL(28);
+   38 :if(noun=46)then begin SA;writeln('It feels jagged.');end;
+         end; {of 8}
+
+9         :case verb of
+   43..52 :if FlasOff then RL(14)
+         else case verb of
+           46:moveto(6);47:moveto(10);49:moveto(11);
+              end;
+           end; {of 9}
+
+10        :case verb of
+   50,58 :if FlasOff then RL(14)
+         else moveto(9);
+   43..49,51..52:if FlasOff then RL(14);
+  19,2:if(noun in[17,80])then begin RL(0);DEAD;end;
+           end; {of 10}
+
+end {of case}
+else SA
+end; {of SP2}
+{-------------------}
+  procedure SpecialAnswers3;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+14       :case verb of
+   46,48 :if FlasOff then RL(14)
+          else if(verb=46)then moveto(11) else moveto(15);
+  43..45,47,49..52 :if FlasOff then RL(14);
+          end; {of 14}
+
+15     :case Verb of
+   52,2 :if(en('d'))and(en('t'))then
+           begin RL(63);moveto(16);end else RL(64);
+  19   :RL(64);
+  7    :RL(65);
+  14    :if(noun in[57,70])then begin inven:=inven+[noun];r[noun]:=Null;
+           if(noun=70)then Ev:=Ev-['d']
+           else Ev:=Ev-['t'];SA;writeln(n[noun,1],':  Taken.');end;
+  45,49  :if(flasoff)then RL(14) else moveto(14);
+   44    :RL(73);
+  24,11:if(noun=17)and not(en('u'))then RL(74)
+           else if(noun=17)and(en('a'))then RL(75);
+  17,36,29,9:case noun of
+   70:if((noun2 in[30,42])or(noun2=Null))and(verb<>9)then
+         if not(en('d'))then
+          begin RL(69);Ev:=Ev+['d'];r[70]:=Prm;inven:=inven-[70];end
+         else RL(67)
+        else if(verb=9)then begin end else RL(66);
+   57:if(noun2=17)and(verb<>17)then begin
+          if(here(ropecon))and(ropecon<>57)then begin
+            RL(71);inven:=inven-[57];r[57]:=Prm;
+            if(ropecon=70)then Ev:=Ev+['t'];end
+          else begin RL(70);vanish(57); end;
+         end else begin end
+   else if(verb in[9,29,36])and(noun2=17)and(noun in mov)then
+         if(here(ropecon))and(noun=ropecon)then begin RL(76);
+          inven:=inven-[noun];r[noun]:=Null;
+          if(ropecon=29)then Ev:=Ev+['u'];end
+         else begin RL(72);inven:=inven-[noun];r[noun]:=17;end
+      end;{of noun case}
+         end;{of 15}
+
+16       :case verb of
+   51,2   :moveto(15);
+   52    :RL(85);
+  0,3..18,20..21,26..40,42,53,55,56,60:RL(86);
+   19,61:begin RS(18);Ev:=Ev-['a'];Ev:=Ev+['r'];Sc:=Sc+60;
+          moveto(17);dropall;if(here(2))then begin r[2]:=Null;
+          r[51]:=Prm;end;r[57]:=Null;end;
+         end;{of 57}
+
+end  {of Case}
+else SA
+end; {of SP3}
+{-------------------}
+  procedure SpecialAnswers4;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+19      :case verb of
+   48,51,58:if(flasoff)then RL(14)else begin RL(311);moveto(18);end;
+   47,52,57:if(flasoff)then RL(14)else begin RL(309);moveto(20);end;
+         end;{of stairs}
+
+20      :case verb of
+   50,51,58:if(flasoff)then RL(14)else begin RL(310);moveto(19);end;
+   11,24,25,23:if(noun=67)then RL(90)
+     else if(noun in[12,43])and not(en('E'))then begin RL(92);
+            r[32]:=20;Sc:=Sc+15;Ev:=Ev+['E'];end;
+  14,38:if(noun in[67,12])then RL(91);
+  43..49,57:if(noun=Null)or(noun in[12,43])then RL(215);
+        end;{of 20}
+
+21       :case verb of
+    50   :if(flasoff)then RL(14)else moveto(18);
+    47   :if(flasoff)then RL(14)else moveto(22);
+   2,51:if(flasoff)then RL(14)else
+            if(noun=64)or(noun=Null)then moveto(23);
+    45   :RL(97);
+    49,44,43:RL(258);
+  11     :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;
+        end;
+
+22       :case verb of
+    50   :if(flasoff)then RL(14)else moveto(21);
+    2,51 :if(flasoff)then RL(14)else
+            if(noun=64)or(noun=Null)then moveto(23);
+    44   :RL(97);
+    47,45,49:RL(258);
+    11     :if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;
+        end; {of 22}
+
+23      :case verb of
+   46,50 :if(flasoff)then RL(14)else moveto(21);
+   43,48 :if(flasoff)then RL(14)else moveto(22);
+   44,45,47,49:RL(258);
+   26,27 :if(noun=26)then
+           if(en('l'))then Say(26,'open')
+           else begin RL(98);Ev:=Ev+['l'];p[23]:=p[23]+[69];end;
+    3    :if(noun=26)then
+           if(en('l'))then begin RL(171);Ev:=Ev-['l'];p[23]:=p[23]-[69];end
+           else Say(26,'closed');
+  2,52,57:if(en('l'))and((noun=69)or(noun=Null))then moveto(24)else RL(99);
+  24,25  :if(noun=26)then RL(151);
+   11    :if(noun=26)then if(en('l'))then RL(217)else RL(218)
+          else if(noun in[30,64])then begin RL(255);RL(256);RL(257)end;
+        end; {of 23}
+
+24      :case verb of
+   51,58:if(en('l'))then moveto(23) else RL(99);
+   52,57:moveto(25);
+  24,25 :if(noun=26)then RL(151);
+   3    :if(noun=26)then begin RL(171);Ev:=Ev-['l'];end else
+         if(noun=55)then RL(411);
+   2    :if(noun=69)then Moveto(25);
+   26   :if(noun=26)then begin RL(98);Ev:=Ev+['l'];end else
+         if(noun=55)then RL(412);
+   11   :if(noun=26)then if(en('l'))then RL(217)else RL(218)else
+         if(noun=55)then RL(410);
+   27,28:If(noun=55)then RL(411);
+       end;
+
+end   {of case}
+else SA
+end;  {of SP4}
+{-------------------}
+  procedure SpecialAnswers5;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+25     :case verb of
+     43:begin writeln('The door slides open...');play(55,70,40);moveto(27);
+         writeln('The door slides shut behind you.');play(70,55,40);
+         if not(en('Y'))then begin Ev:=Ev+['Y'];Sc:=Sc+30 end end;
+     44:moveto(32); 45:moveto(30);
+     46:moveto(34); 47:moveto(28); 49:moveto(31);
+     48:if(en('v')and not(en('p')))then begin Verbose:=False;moveto(35);
+          RS(25);DEAD; end else moveto(35);
+     50:moveto(33); 51,58:moveto(24);
+     52,2:if(noun=69)or(noun=Null)then moveto(26);
+     17,27,28,38:if(noun=26)then
+          begin RL(413);play(55,70,45);play(69,54,45)end;
+   26,40:if(noun=26)then RL(414);
+        end;
+
+27      :case verb of
+   44,58:begin writeln('The door slides open...');play(55,70,40);moveto(25);
+          writeln('The door slides shut behind you.');delay(999);play(70,55,40)
+         end;
+     17,27,28,38:if(noun=26)then
+          begin RL(413);play(30,40,25);play(40,30,25)end;
+   26,40:if(noun=26)then RL(414);
+   11  :if(noun in[20,21])then RL(103)
+      else if(noun=58)then case compcon of
+        Null:RL(155); 1:RS(21); 2:RS(22); 3:RS(23);
+        4:begin RS(24);compcon:=Null;gotoxy(1,wherey-1);
+           writeln('. tim. chamb.r c.de: ',Code,'.. ..tel.port...  .  .',
+                   '... . .. ime .  p.n.l ....... ...');
+           RL(105);play(29,29,40);end;end;{of case}
+   53  :begin
+         if(input='1')or(input='one')then begin RL(104);compcon:=1;end;
+         if(input='2')or(input='two')then begin RL(104);compcon:=2;end;
+         if(input='3')or(input='three')then begin RL(104);compcon:=3;end;
+         if(input='4')or(input='four')then begin RL(104);compcon:=4;end;
+         for y:=1 to random(40)+9 do
+          begin x:=random(6000)+99;play(x,x,50);delay(9)end
+       end;
+   31   :if(compcon=null)then begin
+          play(9,999,0);sound(999);RS(20);play(999,9,0);if not(en('J'))then
+          begin Ev:=Ev+['J'];Sc:=Sc+40;end;end;
+       end;
+
+28     :case verb of
+   50,58:moveto(25);
+   45,57:moveto(29);
+   28   :if(noun in[33,10])then begin RL(137);play(31,31,450);end;
+       end;
+
+29    :case verb of
+   46,58:moveto(28);
+   36   :if(noun2 in[33,10])and(noun in Mov)then
+           if(en('M'))then
+             begin RS(27);Ev:=Ev-['M','r'];Vanish(noun);r[noun]:=28;
+               if not(en('N'))then begin Ev:=Ev+['N'];Sc:=Sc+55;end;
+             play(28,34,600)end
+           else begin Vanish(noun);r[noun]:=28;RL(179);
+             if(noun in[7,8,29,34,40,51])then Ev:=Ev+['M'];end;
+       end;
+
+33     :case verb of
+   47,58:moveto(25);
+    34  :RL(272);
+   28,38:if(noun=10)then begin RL(421);x:=random(9999);case random(3) of
+          0:play(x,random(9999),random(3));
+          1:for y:=1 to random(300)+60 do
+             begin x:=random(9999);play(x,x,2);delay(7)end;
+          2:begin y:=9999;o:=0;
+             repeat x:=random(9999);play(x,y,0);
+                    y:=random(9999);play(y,x,0);o:=o+1;
+             until o>7 end end end
+       end;
+
+end {of case}
+else SA
+end; {of SP5}
+{-------------------}
+  procedure SpecialAnswers6;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+30   :case verb of
+   46,58:if(en('e'))then RL(212) else moveto(25);
+   26,27,28,40:if(noun=49)then if(en('h'))then Say(49,'open') else RL(159)
+               else
+                if(noun in[10,76])and(verb=28)then
+                 begin
+                 if(MnRm=30)then begin RS(76);DEAD;end;
+                  if(en('e'))then
+                   begin RS(29);writeln;
+                    play(1,700,7);play(701,8000,1);Ev:=Ev-['e'];
+       case YearDial of
+              1933:begin Loc:='Civilization!';Sc:=Sc+80;RS(78);HOME;END;
+        2111..2679:begin
+                     Verbose:=False;moveto(41);RS(30);Verbose:=True;
+                     if not(en('O'))then begin Sc:=Sc+55;Ev:=Ev+['O'];end;
+               n[78,5]:=Q;n[37,5]:='glass';n[72,1]:='fence';
+               n[70,1]:='hooded figure';n[70,2]:='hooded';n[70,3]:='figure';
+               n[70,4]:='mutant';n[70,5]:=Q;n[3,1]:='footprints';
+               n[3,2]:='footpri';n[57,1]:='parachute';n[57,2]:='parachu';
+               n[35,1]:='boulder';n[35,2]:='rock';n[35,3]:='rocks';
+               n[66,4]:='red';
+                   end;
+        0..1111   :begin writeln;RS(31);DEAD;end;
+        1112..1932,1934..2110:begin writeln;RS(32);DEAD;end;
+        2680..3789:begin writeln;RS(33);DEAD;end
+             else  begin writeln;RS(34);DEAD;end;
+       end; {of YearDial case}
+                   end
+                  else begin RL(209);play(1,9999,0)end;
+                 end;
+   33   :if(noun in[16,59])or(noun=Null)then begin Ev:=Ev+['e'];RL(210);end;
+   35   :if(en('e'))then begin Ev:=Ev-['e'];RL(211);Attack:=False end;
+   17,0,6:if(noun=49)then RL(160);
+   53  :if(input=Code)then
+         If(en('h'))then Say(49,'open')
+         else
+          begin Ev:=Ev+['h'];RL(173);play(23,24,250);Sc:=Sc+30;
+            if(PanelCon<>Null)then begin r[PanelCon]:=30;Code:='R';
+             writeln('Sitting inside the panel compartment is a ',
+                      n[PanelCon,1],'.');end
+            else RL(183);
+          end
+        else RL(172);
+   3   :If(noun=49)then RL(159);
+   39  :if(noun=25)then RL(115) else
+        case noun of
+        24:if(DialNum>0)and(DialNum<377)then begin RL(176);DayDial:=DialNum;end
+           else RL(178);
+        82:if(DialNum>-1)and(DialNum<5000)then begin RL(177);
+             YearDial:=DialNum;end else RL(178);
+        end;
+ 11,24:case noun of
+   49:begin SA;if(en('h'))then if(PanelCon=Null)then RL(183)
+                 else writeln('Inside the compartment is a ',n[PanelCon,1],'.')
+               else RL(184);end;
+   82:begin SA;writeln('The year dial is set to ',YearDial,'.');end;
+   24:begin SA;writeln('The day dial is set to ',DayDial,'.');end;
+   16:begin RL(203);RL(204)end;
+   25:RL(115);
+   38:RL(161);
+      end;
+       end; {of 30}
+
+end  {of case}
+else SA
+end; {of SP6}
+{-------------------}
+  procedure SpecialAnswers7;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+26     :case verb of
+  51,58,2:if(noun=69)or(noun=Null)then moveto(25);
+  43,48 :moveto(36); 44,49 :moveto(38); 45,47 :moveto(39); 46,50 :moveto(37);
+        end;
+
+35      :case verb of
+   49,58:moveto(25);
+  11:case noun of
+    54:RL(100);
+    62:if(en('v'))then RL(205)else RL(206);
+    end;
+  28  :if(noun in[55,10])then
+        if(en('v'))then begin RL(101);Ev:=Ev-['v'];play(40,65,80)end
+        else
+         begin RL(102); Ev:=Ev+['v'];play(65,40,80);
+          if not(en('p'))then begin RS(28);DEAD;end
+          else if(MnRm=35)then
+           begin n[23,1]:='melted monster';n[23,4]:='melted';MnRm:=Null;
+            RS(74);p[35]:=p[35]+[77];
+            if not(en('W'))then begin Sc:=Sc+65;Ev:=Ev+['W'] end
+           end
+         end;
+  14  :if(noun in[1,77])and(77 in p[35])then begin Sc:=Sc+10;noun:=77;end;
+  55  :if(noun=74)then
+        if(en('v'))then begin RS(26);DEAD end;
+  38 :RL(30);
+       end;
+
+36     :case verb of
+  44,49,58:moveto(26);
+    45  :moveto(39);
+    46  :moveto(37);
+    57  :if(noun=12)then RL(215);
+        end;
+
+37     :case verb of
+  45,47,58:moveto(26);
+    43  :moveto(36);
+    44  :moveto(38);
+    57  :if(noun=12)then RL(215);
+        end;
+
+38     :case verb of
+  43,48,58:moveto(26);
+    45  :moveto(39);
+    46  :moveto(37);
+    57  :if(noun=12)then RL(215);
+   0..42,44,47,49,50-56,59..99:if(noun=28)or(noun2=28)then
+          begin RS(35);RL(220);p[40]:=p[40]+[48];moveto(40);Ev:=Ev-['g'];
+           if(MnRm=Prm)then begin RS(79);DEAD end
+          end;
+        end;{of 38}
+
+39     :case verb of
+  46,50,58:moveto(26);
+    45  :if(en('g'))then moveto(40);
+    3   :if(noun=26)then if(en('g'))then RL(225) else Say(26,'shut');
+    43  :moveto(36);
+    44  :moveto(38);
+    57  :if(noun=12)then RL(215);
+        end;
+
+40     :case verb of
+  46,58 :if(en('g'))then moveto(39) else RL(221);
+   26   :if(noun=26)then if(en('g'))then Say(26,'open') else RL(221);
+   3    :if(noun=26)then if(en('g'))then RL(225) else Say(26,'shut');
+  11,14 :if(noun in[12,43,83])then RL(261);
+       end;
+
+end  {of case}
+else SA
+end; {of SP7}
+{-------------------}
+  procedure SpecialAnswers8;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+41     :case verb of
+    43  :moveto(42);
+    44  :moveto(43);
+  2,19  :if(noun in[53,73,87])then
+           begin RS(39);RL(287);moveto(46);Rx:=4;end;
+       end;
+
+42     :case verb of
+    44  :moveto(41);
+    43  :RL(296);
+    14  :if(noun in[13,1])and(13 in p[42])then
+          begin Sc:=Sc+10;noun:=13;end;
+  2,19  :if(noun in[53,73,87])then
+           begin RS(39);RL(287);moveto(46);Rx:=4;end;
+       end;
+
+43     :case verb of
+    43  :moveto(41);
+    44  :moveto(44);
+  2,19  :if(noun in[53,73,87])then
+           begin RS(39);RL(287);moveto(46);Rx:=4;end;
+        end;
+
+44     :case verb of
+    43  :moveto(43);
+    46  :moveto(47);
+    45  :begin RL(274);Rx:=0;moveto(46);end;
+  44,47..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);
+       end;
+
+45     :case verb of
+    44  :moveto(49);
+    46  :begin RL(274);Rx:=8;moveto(46);end;
+    45  :begin Rx:=9;RL(274);moveto(46);end;
+  43,47..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);
+        end;
+
+46     :case verb of
+    45  :begin Rx:=Rx+1;RL(274);
+          if(Rx=9)then begin
+          if not(en('T'))then begin Ev:=Ev+['T'];Sc:=Sc+30;end;
+          moveto(45)end;
+          if(Rx>86)then begin RL(340);moveto(47)end
+         end;
+    46  :begin Rx:=Rx-1;RL(274);
+          if(Rx=8)then moveto(45);
+          if(Rx<1)then moveto(44);
+         end;
+  43,44,47..51,2,19:if(noun=Null)or(noun in[41,79])then RL(275);
+        end;
+
+47     :case verb of
+  46,52,2,19:begin if(random(2)=1)then begin RS(37);DropAll;moveto(48)end
+                   else begin RL(277);moveto(48)end;end;
+    45  :moveto(44);
+  43,44,47..50:RL(278);
+        end;
+
+48     :case verb of
+  45,51,2:if(random(3)=2)and(noun<>35)then begin RS(38);moveto(47)end
+          else if(noun<>35)then RL(279);
+   43,44,46..50:RL(279);
+     14  :if(noun in[27,1])and(27 in p[48])then
+           begin Sc:=Sc+20;noun:=27;end;
+     11 :if(noun=35)then RL(289)
+        end;
+
+end  {of case}
+else SA
+end; {of SP8}
+{-------------------}
+  procedure SpecialAnswers9;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+50     :case verb of
+  43,58 :begin RL(290);moveto(49);end;
+  44,57 :if(noun=Null)or(noun in[88,26,50])then
+          begin RS(41);if not(en('L'))then
+           begin Ev:=Ev+['L'];Sc:=Sc+25;end;moveto(51);end;
+    11  :case noun of
+          35,50:RL(292);
+          88,68:RS(42);
+          46,66:RS(43);
+         end;
+  30,28,38,17,14:if(noun=88)then RL(294);
+        end;
+
+51     :case verb of
+    44  :moveto(52);
+    46  :moveto(52);
+    48  :moveto(53);
+        end;
+
+52     :case verb of
+    43  :moveto(51);
+    47  :moveto(53);
+    46  :moveto(51);
+        end;
+
+53     :case verb of
+   52,2,57:if(noun=Null)or(noun=69)then begin if not(en('Q'))then
+            begin Ev:=Ev+['Q'];Sc:=Sc+30;end;moveto(55);end;
+    47  :moveto(52);
+    45  :moveto(53);
+    49  :moveto(54);
+        end;
+
+54     :case verb of
+    43  :moveto(52);
+    49  :moveto(53);
+    44  :moveto(51);
+    50  :begin if not(en('R'))then
+          begin Ev:=Ev+['R'];Sc:=Sc+20;end;moveto(56);end;
+        end; {verb case}
+
+55     :case verb of
+  51,2,58,44:if(noun=Null)or(noun=69)then moveto(53);
+   11   :if(noun in[11,45])then
+          begin RL(297);if(en('k'))then RL(298) else RL(299)end;
+   26,40:if(noun in[45,26,11,68])and(noun2=27)and(SepWord='with')then
+           if not(en('k'))then
+            begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do
+             if(o in cabiset)then r[o]:=55;
+             if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;
+            end
+           else Say(11,'open')
+          else if(SepWord='s')then RL(317);
+   29   :if(noun=27)and(noun2 in[45,26,11,68])and(SepWord='in')then
+          if not(en('k'))then
+           begin Ev:=Ev+['k'];RS(45);for o:=2 to NMax do
+            if(o in cabiset)then r[o]:=55;
+            if not(en('R'))then begin Ev:=Ev+['R'];Sc:=Sc+55;end;
+           end
+          else RL(216);
+   3    :if(noun in[45,26,11])then
+          if(en('k'))then
+           begin RL(314);play(30,32,30);Ev:=Ev-['k'];
+            for o:= 2 to NMax do if(o in cabiset)then r[o]:=Null;
+           end
+          else Say(11,'shut & locked');
+  24,30 :if(noun in[26,11])then
+          if(en('k'))then
+           begin RL(324);
+            if(cabiset=[])then RL(339)else
+             for o:=0 to NMax do if(o in Cabiset)then writeln('a ',n[o,1])
+           end
+          else RL(299);
+       end; {of 55}
+
+
+end  {of case}
+else SA
+end; {of SP9}
+{-------------------}
+  procedure SpecialAnswers10;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+56     :case verb of
+    47  :moveto(54);
+  2,51,58:if(noun=Null)or(noun=69)then moveto(57);
+        end;
+
+57     :case verb of
+   46,57,2,33:if(noun=Null)or(noun=65)then
+          begin n[68,1]:='keyhole';n[68,4]:='slot';moveto(58)end;
+   52   :moveto(56);
+        end;
+
+58     :case verb of
+   45,58:moveto(57);
+   43,44,46..51,20:if(en('i'))and(en('j'))and KeyHole then
+         begin sound(38);RS(61);ShRm:=2;moveto(59);sound(20);
+         for o:=0 to NMax do if(r[o]=58)then r[o]:=59;
+         if not(en('S'))then begin Ev:=Ev+['S'];Sc:=Sc+60 end end else RL(325);
+   28   :if(noun=10)then noun:=81;
+   11   :if(noun=68)then if KeyHole then RL(336)else RL(404);
+        end;
+
+65     :case verb of
+   43,47:moveto(66);
+   44,49:moveto(68);
+   45,57:begin if not(en('w'))then begin Ev:=Ev+['w'];RL(346);end
+               else begin RL(347);DEAD end end;
+   46,48,50:moveto(63);
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(38);RL(344);delay(999);sound(20)end;
+    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end;
+
+66     :case verb of
+    43  :RL(343);
+  46,50 :moveto(65);
+  45,49 :moveto(67);
+    47  :moveto(64);
+    48  :moveto(63);
+  57,44 :begin sound(25);if not(en('V'))then begin Ev:=Ev+['V'];Sc:=Sc+30;end;
+          RS(67);writeln;moveto(69);nosound;
+         end;
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(38);RL(344);delay(999);sound(20)end;
+    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end; {of 66}
+
+67     :case verb of
+    46  :begin RL(347);DEAD;end;
+  43,48 :moveto(66);
+  44,50 :moveto(68);
+  47,49:moveto(64);
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(38);RL(344);delay(999);sound(20)end;
+    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end; {of 67}
+
+end  {of case}
+else SA
+end; {of SP10}
+{-------------------}
+  procedure SpecialAnswers11;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+63     :case verb of
+   45   :moveto(65);
+   47   :moveto(66);
+   49   :moveto(68);
+  43,44,46,48,50:RL(343);
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(38);RL(344);delay(999);sound(20)end;
+    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end;
+
+64     :case verb of
+   46   :moveto(67);
+   48   :moveto(66);
+   50   :moveto(68);
+  43,44,45,47,49:RL(343);
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(38);RL(344);delay(999);sound(20)end;
+    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end;
+
+68     :case verb of
+    43  :begin RL(347);DEAD;end;
+    44  :RL(343);
+    50  :moveto(63);
+    49  :moveto(64);
+  46,48 :moveto(65);
+  45,47 :moveto(67);
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(38);RL(344);delay(999);sound(20)end;
+    52  :begin sound(30);RL(345);ShRm:=13;moveto(59);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end;
+
+69     :case verb of
+  28,27 :if(noun in[10,21,81,36])then RL(351);
+   11   :if(noun in[10,21,81,36,20,25])then RL(352)else
+         if(noun=65)then RL(353);
+  43,58 :moveto(70);
+        end;
+
+70     :case verb of
+  44,57,2,33:if(noun=Null)or(noun=65)then moveto(69)else
+         if(noun in[69,50])then moveto(71);
+  43,47,48:RL(354);
+  49,52 :moveto(71);
+    11  :if(noun=65)then RL(353)
+         else if(noun=68)then if KeyHole then RL(336)else RL(404);
+       end;
+
+71     :case verb of
+  48,51,58:moveto(70);
+    45  :moveto(72);
+    11  :if(noun=58)then RL(386)else
+         if(noun=25)then RL(418);
+   28,27:if(noun in[10,36])then begin RL(387);
+          for o:=1 to random(12)+4 do play(random(250),random(250),random(30))
+         end;
+    39  :if(noun=25)then begin RL(387);
+          for o:=1 to random(99)+75 do
+           begin x:=random(9999);play(x,x,random(19)+10);delay(5)end
+         end
+        end;{ of 71}
+
+end  {of case}
+else SA
+end; {of SP11}
+{-------------------}
+  procedure SpecialAnswers12;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+11      :case verb of
+   5,45,47,48,50:if FlasOff then RL(14)
+          else case verb of
+          48:moveto(9);47:moveto(13);
+          5:if(29 in inven)or(40 in inven)or(2 in inven)then
+                    RL(58)
+                  else begin RL(18); moveto(12);end;
+          50:RL(17);
+          45:if(en('C'))then moveto(14) else RL(144);
+            end;
+   31   :if(input='nepo egassap')and not(en('C'))then
+             begin Ev:=Ev+['C']; RS(11);Sc:=Sc+35;end;
+  11 :if(noun in [79,72])then if(en('C'))then RL(270)else RS(13);
+  27,28:if(noun in [79,72])then RL(26);
+  17,0,6:if(noun in [79,72])then RL(27);
+  38  :if(noun in [79,72])then RL(30);
+          end; {of 11}
+
+12     :case verb of
+  4,47 :if FlasOff then RL(14)
+           else case verb of
+             4:begin RL(18); moveto(11);end;
+               47   :RL(17);
+                end;
+  43..46,48..52  :if FlasOff then RL(14);
+   14  :if(noun in[70,1])and not(en('G'))then
+         begin noun:=70;Ev:=Ev+['G'];Sc:=Sc+40;end;
+   7   :if not(en('G'))then begin Ev:=Ev+['G'];RL(157);
+          FlagSA:='r';verb:=14;noun:=70;Sc:=Sc+40;end;
+          end; {of 12}
+
+13      :case verb of
+   50    :if flasoff then RL(14)
+            else begin moveto(11); Ev:=Ev-['q'];end;
+   43    :if(en('q'))then begin RL(24); DEAD;end
+            else begin RL(23); Ev:=Ev+['q'];end;
+   52,19,33:RL(42);
+  14    :if(noun=47)then RL(25);
+  9   :begin RL(68);vanish(noun);end;
+          end;{of 13}
+
+17       :case verb of
+   51,19,2:RL(15);
+   45    :if(flasoff)then RL(14)else moveto(18);
+          end;
+
+18      :case verb of
+   46    :if(flasoff)then RL(14)else moveto(17);
+  49,52  :if(flasoff)then RL(14)else begin RL(308);moveto(19);end;
+   47    :if(flasoff)then RL(14)else
+           if not(en('F'))then begin RS(19);writeln;moveto(21);
+            Ev:=Ev+['F'];Sc:=Sc+10;end
+           else moveto(21);
+  11     :if(noun in[79,50])then RL(254);
+         end;{of 18}
+
+end  {of case}
+else SA
+end; {of SP12}
+{-------------------}
+  procedure SpecialAnswers13;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+2         :case verb of
+   46     :moveto(1);
+   45, 44 :RL(1);
+   19,2   :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;
+  14,27 :if noun=14 then RL(2)else
+         if(noun in[1,40])and(40 in p[2])then
+            begin noun:=40;Sc:=Sc+10;Verb:=14;RL(417);FlagSA:='r' end;
+   11   :if(noun in[66,46])then RL(11);
+   26   :if noun=14then RL(13);
+         end;
+
+31     :case verb of
+   48,58:moveto(25);
+   14   :if not(en('I'))and(noun in[7,1])then
+           begin Ev:=Ev+['I'];noun:=7;Sc:=Sc+5 end;
+ 23,24,11:if(noun=84)then RL(152)else
+          if(noun=22)then RL(415);
+       end;
+
+32     :case verb of
+   43,58:moveto(25);
+ 11,23  :case Noun of
+          61:if(en('H'))then RL(153) else begin Ev:=Ev+['H'];r[34]:=32;
+               RL(154);Sc:=Sc+15;end;
+         end;{of Noun case}
+       end;
+
+34    :case verb of
+   45,58:moveto(25);
+   14   :if(noun=74)and(74 in P[34])then begin P[34]:=P[34]-[74];
+           inven:=inven+[74];RL(138);Sc:=Sc+25;end;
+   42   :if(noun=74)and(74 in P[34])then RL(175);
+   28,27:if(noun in[10,36])then begin RL(387);
+          for o:=1 to random(12)+4 do play(random(250),random(250),random(30))
+         end;
+   39   :if(noun=25)then begin RL(387);
+          for o:=1 to random(99)+75 do
+           begin x:=random(9999);play(x,x,random(19)+10);delay(5)end
+         end;
+   11   :case noun of
+          0:RL(139);
+          25:RL(418);
+          21:begin;RL(140);RL(141);end;
+          68:if(SlotCon=Null)then RL(143) else
+              begin SA;writeln('The slot contains a ',n[SlotCon,1],'.')end;
+          58:if(SlotCon=77)and not(en('x'))then
+              begin Ev:=Ev+['x'];Sc:=Sc+5;RS(75)end
+             else if(SlotCon=77)then RS(77)else RL(385)
+         end
+       end;
+
+0         :case verb of
+   45     :MoveTo(1);
+   44     :begin TextColor(m8);writeln('Casino Hall');TextColor(m2);RS(0)end;
+  19,2    :if(noun in[53,6,64,73])then begin RL(0);DEAD;end;
+  11    :if(noun=73)then RL(19);
+         end;
+
+1        :case verb of
+   46     :moveto(0);
+   45     :moveto(2);
+   43,57  :moveto(3);
+   6,17   :if(noun=57)and(here(40))and((noun2=40)or(noun2=Null))then
+           begin RS(16);Sc:=-500;
+            Loc:='Locked Cabin';Verbose:=True;inven:=[];KitSet:=KitSet-[57];
+            n[57,1]:='plastic card';n[57,2]:='card';n[57,3]:='plastic';
+            n[57,4]:='elevato card';n[57,5]:='elevato';r[57]:=76;moveto(76)
+           end;
+ 33,19,2  :if(noun in[6,53,64])then moveto(3)
+          end;
+
+end  {of case}
+else SA
+end; {of SP13}
+{-------------------}
+  procedure SpecialAnswers14;
+
+begin
+FlagSA:='r';
+if Present then
+Case Prm of
+
+49     :case verb of
+    43  :moveto(45);
+  44,57 :begin RL(290);moveto(50);n[36,1]:='lever';n[36,2]:='handle';end;
+  45..50:RL(291);
+    11  :if(noun in[26,50])then RL(292);
+    2   :if(noun=72)then RL(312);
+    12  :if(noun=72)then RL(313);
+        end;
+
+59     :case verb of
+   43..50:begin o:=random(8)+3;writeln('You travel about ',o,' miles...');
+           if(random(4)=2)then ShRm:=13 else ShRm:=Random(15);moveto(59)end;
+   52,57:RL(341);
+    58  :if(noun=Null)or(noun=65)then begin RL(342);DEAD;end;
+    51  :begin sound(30);
+          if not(en('U'))then begin RS(64);writeln;Ev:=Ev+['U'];Sc:=Sc+45;end
+          else RL(349);moveto(63);sound(20)end;
+    14  :if(noun=63)then begin RS(65);DEAD;end;
+    28  :if(noun=10)then noun:=81;
+        end; {of case 59}
+
+72     :case verb of
+    46  :moveto(71);
+  43,44,58:moveto(73);
+    45  :moveto(74);
+        end;
+
+73     :case verb of
+  43,45,58:moveto(72);
+    46  :moveto(73);
+    44  :begin moveto(74);if(MnRm=Null)then RL(356);end;
+        end;
+
+74     :case verb of
+  43,45 :moveto(73);
+  46,58 :moveto(74);
+    44  :if(MnRm=Null)then begin Verbose:=False;Moveto(75);Verbose:=True;
+          RS(69);MnRm:=75;Attack:=False end else moveto(75);
+        end;
+
+75     :case verb of
+  43,58 :moveto(74);
+   11   :if(noun in[14,61])then RL(364);
+        end;
+
+76     :case verb of
+   43   :RL(114);
+   11   :if(noun=26)then RL(271)else
+         if(noun=57)then RL(408);
+        end;
+
+end  {of case}
+else SA
+end; {of SP14}
+{===================}
+procedure ScreenDraw_PlayerInput;
+  begin
+   gotoxy(1,23);
+   writeln;
+   TextColor(m5);
+   write(chr(175),' ');
+
+   {Window(1,1,80,25);}
+
+   gotoxy(1,1);
+   textcolor(m4);
+   TextBackGround(m6);
+
+   gotoxy(10,1);
+   writeln(Tic,'  ');
+
+   gotoxy(20,1);
+   writeln(Sc,' ');
+
+   gotoxy(35-(length(Loc)div 2),1);
+   writeln('     ',Loc,'     ');
+
+
+   gotoxy(2,24);
+   TextBackGround(0);
+   Window(1,2,80,25);
+   textcolor(m1);
+
+   {BufLen:=77;}
+   if(Loc<>'Civilization!')then
+        READLN(LINE)
+        else repeat;
+        until false;
+   if(Line='r') or (Line='repeat') then Line:=Again
+   else Again:=Line;
+
+
+
+   TextColor(m3);
+   writeln(chr(175));
+   TextColor(m2);
+
+
+  end;
+{-------------------}
+
+
+BEGIN
+clrscr;
+assign0;
+assign1;
+assign2;
+assign3;
+assign4;
+assign5;
+assign6;
+assign7;
+assign8;
+Initialize;
+
+                            {*****} repeat {*****}
+
+if Skip then Time;
+{writeln;}
+
+if(length(Line)=0)then begin
+ ScreenDraw_PlayerInput;
+ while pos(' then ',Line)>0 do
+  begin
+   x:=pos('then ',Line);
+   delete(Line,x,4);
+   insert('.',Line,x)
+  end;
+ LowerCase(Line);
+ Format(Line);
+ Chop(Line);
+end;
+if(pos('.',Line)>0)then begin
+  Input:=copy(Line,1,pos('.',Line));
+  delete(Line,1,pos('.',Line));
+  delete(Input,pos('.',Input),1);
+end else
+ begin
+  Input:=Line;
+  Line:=''
+ end;
+Input:=Input+' ';
+while pos(' it ',Input)>0 do
+ begin
+ x:=pos(' it ',Input)+1;
+ delete(Input,x,2);
+ insert(LastNoun,Input,x);
+ Format(Input);Chop(Input);
+ end;
+if(Input[length(Input)]=' ')then delete(Input,length(Input),1);
+
+
+
+Check(SepWord);
+
+if Flag = 'g' then
+  begin
+    case Prm of
+      3..4                :SpecialAnswers1;
+      5..10               :SpecialAnswers2;
+      14..16              :SpecialAnswers3;
+      19..24              :SpecialAnswers4;
+      25,27..29,33        :SpecialAnswers5;
+      30                  :SpecialAnswers6;
+      26,35..40           :SpecialAnswers7;
+      41..48              :SpecialAnswers8;
+      50..55              :SpecialAnswers9;
+      56..58,60..62,65..67:SpecialAnswers10;
+      63,64,68..71        :SpecialAnswers11;
+      11..13,17,18        :SpecialAnswers12;
+      0..2,31,32,34       :SpecialAnswers13;
+      49,59,72..76        :SpecialAnswers14
+    end;
+
+    if FlagSA <> 's' then
+      case Verb of
+       11,18,22,41,43..52,57,58    :DefaultAnswers1;
+       29                          :DefaultAnswers2;
+       1,2,8,12,13,15,16,19,21,
+        23..25,31,33,34,38,40,60,63:DefaultAnswers3;
+       3,6,7,20,30,35,53..56,59    :DefaultAnswers4;
+       9,26                        :DefaultAnswers5;
+       27,28,62                    :DefaultAnswers6;
+       14,64,4,5                   :DefaultAnswers7;
+       0,10,17,42,39               :DefaultAnswers8;
+       32                          :DefaultAnswers9;
+       36,37,61,65                 :DefaultAnswers10;
+      end;
+  end;
+
+                         {*****} until False {*****}
+
+END. {of program}
index 42e4e88e03db1321b8dcbcc2e21fea1012e668c6..c201684c898f8ed5857a19e396d4c24751ff8d9d 100644 (file)
-{//-------------------------------------------------------------------------}\r
-{/*                                                                         }\r
-{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
-{                                                                           }\r
-{This file is part of Supernova.  Supernova is free software; you can       }\r
-{redistribute it and/or modify it under the terms of the GNU General Public }\r
-{License as published by the Free Software Foundation; either version 2     }\r
-{of the License, or (at your option) any later version.                     }\r
-{                                                                           }\r
-{This program is distributed in the hope that it will be useful,            }\r
-{but WITHOUT ANY WARRANTY; without even the implied warranty of             }\r
-{MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }\r
-{                                                                           }\r
-{See the GNU General Public License for more details.                       }\r
-{                                                                           }\r
-{You should have received a copy of the GNU General Public License          }\r
-{along with this program; if not, write to the Free Software                }\r
-{Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.}\r
-{                                                                           }\r
-{Original Source: 1990 Scott Miller                                         }\r
-{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
-{*/                                                                         }\r
-{//-------------------------------------------------------------------------}\r
-{****************************************************************************}\r
-{*                                COMMANDS                                  *}\r
-{*                            by Scott Miller                               *}\r
-{*  These are misc procedures and functions used with the main file: AdGame *}\r
-{*                        Copyright 1984 Pending                            *}\r
-{****************************************************************************}\r
-\r
-procedure SA;\r
-   begin FlagSA:='s' end;\r
-\r
-function En(c : char) : boolean;\r
-   begin\r
-     if(c in Ev)then En:=True else En:=False\r
-   end;\r
-\r
-function Here(noun : integer): Boolean;\r
-   begin\r
-     if(noun in Inven)or(r[noun]=Prm)or(noun in p[Prm])then Here:=True\r
-     else Here:=False\r
-   end;\r
-\r
-overlay procedure Crazy;\r
-   begin SA;\r
-    if(random(2)=1)then RL(107+random(7))else RL(300+random(6));\r
-   end;\r
-\r
-overlay procedure DEAD;\r
-    var b,c:byte;\r
-    FileName : file;\r
-   begin SA; NoSound;\r
-     gotoxy(1,25);for x:=1 to 7 do writeln;\r
-     Textcolor(1);Textbackground(m9);\r
-     gotoxy(1,18);\r
-     write('*********************************************************',\r
-           '***********************');writeln;\r
-     gotoxy(1,19); for x:=1 to 3 do\r
-     write('*                                                        ',\r
-             '                      *');writeln;\r
-     gotoxy(1,22);\r
-     write('*********************************************************',\r
-           '***********************');writeln;\r
-     TextColor(m0);gotoxy(32,20);writeln('YOU HAVE DIED!!!');\r
-     Textcolor(m2);Textbackground(0);\r
-     for c:=700 downto 20 do for b:=70 downto 1 do sound(b*c);nosound;\r
-     close(Rooms1);close(rooms2);close(special1);close(special2);close(line1);\r
-     gotoxy(1,23);DelLine;DelLine;writeln;write('Do you wish to play again? ');\r
-     read(kbd,flag);\r
-     if(upcase(flag)<>'N')then\r
-      begin\r
-       writeln('Restarting...');window(1,1,80,25);\r
-       assign(rooms1,'BEYOND.com');execute(rooms1)end\r
-     else\r
-      begin\r
-       textcolor(7);\r
-       textbackground(0);\r
-       window(1,1,80,25);\r
-       clrscr;\r
-       writeln('    Beyond the Titanic');\r
-       writeln('A Scott Miller Production');\r
-       writeln('    Have a nice day...');\r
-       delay(2000);\r
-       assign(FileName,'MENU.COM');\r
-       {$I-}\r
-       execute(FileName);\r
-       {$I+}\r
-       if IOResult <> 0 then HALT;\r
-      end\r
-   end;\r
-\r
-overlay procedure Home;\r
-  var b,c:byte;\r
-   begin SA;\r
-     gotoxy(1,25);for x:=1 to 7 do writeln;\r
-     Textcolor(25);Textbackground(m7);\r
-     gotoxy(1,18);\r
-     write('#########################################################',\r
-           '#######################');writeln;\r
-     gotoxy(1,19); for x:=1 to 3 do\r
-     write('#                                                        ',\r
-             '                      #');writeln;\r
-     gotoxy(1,22);\r
-     write('#########################################################',\r
-           '#######################');writeln;\r
-     TextColor(31);gotoxy(25,20);writeln('Y O U   H A V E   W O N ! ! !');\r
-     Textcolor(m2);Textbackground(0);\r
-     gotoxy(1,23);DelLine;DelLine;writeln;\r
-     for x:=150 downto 1 do begin sound(x*55);delay(8);nosound;delay(20)end;\r
-     if(Sc>1000)then Sc:=1000;\r
-     write('You finished with a score of ',Sc,', which makes you a ');\r
-     if(Sc=1000)then\r
-      begin writeln('Perfect Adventurer!!!');\r
-        for y:=1 to 7 do\r
-         for o:=0 to 20 do\r
-           for x:= 99+(o*430)to 998+(o*430)do begin sound(25);sound(x)end\r
-      end\r
-     else writeln('Master Adventurer!');\r
-     for c:=1 to 999 do for b:=1 to 61 do sound(b*c);nosound;\r
-     writeln;nosound;\r
-     writeln('Reboot your computer to regain control...')\r
-  end;\r
-\r
-overlay procedure Say(o : integer; p : str14);\r
-   begin\r
-     writeln('The ',n[o,1],' is already ',p,'.'); SA\r
-   end;\r
-\r
-overlay procedure Diagnose;\r
-   begin\r
-     RL(191);\r
-     if((tic>42)and not(en('c')))or((tic>146)and not(en('n')))or(en('r'))then\r
-      begin\r
-       if(tic>42)and (not(en('c')))then RL(192)\r
-        else if(tic>146)and not(en('n'))then RL(192);\r
-       if(en('r'))then RL(51)\r
-      end\r
-     else RL(207)\r
-   end;\r
-\r
-overlay procedure Monster(var NewRm : integer);\r
-   begin\r
-    if(NewRm=MnRm)and(MnRm=25)then begin Attack:=False;RL(384)end else\r
-    if(NewRm<>35)or not(en('v'))then\r
-     begin\r
-      p[Prm]:=p[Prm]-[23];p[NewRm]:=p[NewRm]+[23];MnRm:=NewRm;Attack:=False;\r
-       if not((NewRm=30)and(Verb in[27,28]))then\r
-        case random(7) of\r
-         0:RS(71);1:RS(72);2:RL(359);3:RL(360);4:RL(361);5:RL(362);6:RL(363)\r
-        end\r
-     end\r
-    else begin RL(383);Attack:=False end\r
-   end;\r
-\r
-overlay procedure DescribeRm;\r
-   var o : integer;\r
-  procedure s(r : str14);\r
-     begin TextColor(m8);writeln(r);TextColor(m2);loc:=r;end;\r
-   begin SA;\r
-if((en('a'))and(here(29)))or not(Prm in [6..24])then begin\r
-     case Prm of\r
-0:s('Ship''s Fore');1:s('Ship Mid-Deck');2:s('Rear of Ship');\r
-3:s('Life Boat');4:s('Ocean Surface');5:s('Huge Cavern');\r
-6:s('Cave of Pins');7:s('Ocean Bottom');8:s('Squeaky Cave');\r
-9:s('Stream Bend');10:s('Waterfall');13:s('Sloppy Cave');\r
-11:s('Hex Cave');12:s('Shallow Cleft');20:s('Zoo');\r
-14:s('Winding Tunnel');15:s('Chasm');17:s('Chasm Bottom');\r
-18:s('Tiny Opening');19:s('Etched Stairs');\r
-21:s('Edge of Saucer');22:s('Side of Saucer');\r
-23:s('Top of Saucer');24:s('Airlock');16:s('End of Rope');\r
-76:s('Locked Cabin');25:s('Central Entry');\r
-26:s('Lower Entry');27:s('Ship''s Systems');\r
-30:s('Time Chamber');28:s('Ship''s Lab');34:s('Bridge');\r
-29:s('Inside Tube');31:s('Life Support');58,69:s('Inside Shuttle');\r
-32:s('Supply Chamber');33:s('Sleep Chamber');\r
-35:s('Engine Room');36:s('Cargo Deck #1');37:s('Cargo Deck #2');\r
-38:s('Cargo Deck #3');39:s('Cargo Deck #4');40:s('Large Cage');\r
-41:s('Wooden Bridge');42:s('Broken End');43:s('South End');\r
-44..46:s('Deserted Road');47:s('Crater Edge');48:s('Crater Floor');\r
-49:s('Building Front');50:s('Lobby');51..54:s('Office Room');\r
-55:s('Basement');56:s('Ladder Room');57:s('Building Roof');\r
-59:case ShRm of 0:s('Above Mud Lake');\r
-1:s('Above Rubble');2:s('Above Desert');3:s('Above Pits');\r
-4:s('Above River');5:s('Above Stream');6:s('Above Town');\r
-7:s('Above Mountain');8:s('Above Crator');9:s('Above Hills');\r
-10:s('Above Canyon');11:s('Above Flatland');12:s('Above Dry Lake');\r
-13:s('Above Desert');14:s('Above Bridge')end;{of Above Rooms}\r
-63,64:s('Above Clouds');65..68:s('Outside City');70:s('Landing Bay');\r
-71:s('Power Plant');72..74:s('Dark Corridor');75:s('Food Supply')\r
-     end; {of case}\r
-\r
-    if Verbose then begin FlagSA:='r';\r
-      case Prm of\r
-       2 :if(40 in p[2])then begin RR(2);RL(416)end;\r
-       4 :if(en('B'))then RR(4)else begin RR(4);\r
-           writeln('There is a safety harness here.')end;\r
-       11:if(en('C'))then RS(15);\r
-       40:if(en('g'))then RS(17);\r
-       12:if not(en('G'))then begin RR(12);RL(146)end;\r
-       31:if not(en('I'))then begin RR(31);RL(156)end;\r
-       34:if(74 in p[34])then begin RR(34);RL(273)end;\r
-       35:if(77 in p[35])then begin RR(35);RL(381);RL(382)end else\r
-           if(en('W'))then begin RR(35);RL(381)end;\r
-       42:if(13 in p[42])then begin RR(42);RL(214)end;\r
-       48:if(27 in p[48])then begin RR(48);RL(276)end;\r
-       59..69:begin SA;\r
-               if(Prm=59)and not(ShRm in RmSh)then\r
-                begin RmSh:=RmSh+[ShRm];RS(ShRm+46)end\r
-               else if(Prm<>59)then RR(Prm);\r
-               if KeyHole and here(63)then\r
-                writeln('The shiny key is in the keyhole.')\r
-              end\r
-       else RR(Prm)\r
-      end; {of case}\r
-      if(FlagSA='r')and(Prm<>59)then RR(Prm)end;\r
-\r
-     for o:= 0 to NMax do begin\r
-       if(o in Mov)then\r
-         if(r[o]=Prm)then\r
-          if not((Prm in[59..69])and(KeyHole)and(o=63))then\r
-           begin writeln('There is a ',n[o,1],' here.');\r
-            if(here(ropecon))and(o=ropecon)and not(ropecon in inven)then\r
-             writeln('  The rope is attatched to the ',n[o,1],'.');\r
-            if(en('d'))and(o=70)and(here(70))then RL(147);\r
-            if(o=SlotCon)and(here(o))then RL(388);\r
-            if(o in CabiSet)and(here(o))then RL(389);\r
-            if(o=PanelCon)and(here(o))then RL(390);\r
-            if(o in KitSet)and(here(o))then RL(391);\r
-           end\r
-     end end\r
-    else RL(54)\r
-   end;  {of DescribeRm}\r
-\r
-overlay procedure SAVE;\r
-   begin SA; for x:=1 to 24 do writeln; nosound;\r
-   window(1,3,80,25);\r
-   gotoxy(1,4);\r
-   if(Drive='A:')then\r
-    writeln('Remove the GAME disk and insert your SAVE/RESTORE disk ',\r
-            'in drive A:')else\r
-    writeln('Make sure your SAVE/RESTORE disk is in drive B:');\r
-   writeln('  (Press any key to continue...)');read(kbd,flag);\r
-   writeln;writeln;\r
-   write('Save under what name? ');BufLen:=8;readln(input);\r
-   while pos(' ',input)>0 do delete(input,pos(' ',input),1);\r
-   while pos('.',input)>0 do delete(input,pos('.',input),1);\r
-   if(input='')then input:='LastRoom';\r
-   writeln;writeln;input:=Drive+input;\r
-   writeln('If your SAVE/RESTORE disk is in drive ',Drive,\r
-            ' then press any key to start.');\r
-   read(kbd,flag);\r
-   with DiskSave do\r
-    begin\r
-     aInven:=Inven;aKitSet:=KitSet;aCabiSet:=CabiSet;aPanelCon:=PanelCon;\r
-     aSlotCon:=SlotCon;aCompCon:=CompCon;aRopeCon:=RopeCon;aTic:=Tic;\r
-     aYearDial:=YearDial;aPrm:=Prm;aMnRm:=MnRm;aSc:=Sc;aShots:=Shots;\r
-     aShRm:=ShRm;aRx:=Rx;aEv:=Ev;aCode:=Code;aLoc:=Loc;aKeyHole:=KeyHole;\r
-    end;\r
-   assign(GameSave,input+'.a');\r
-   rewrite(GameSave);\r
-   write(GameSave,DiskSave);\r
-   close(GameSave);\r
-   assign(Objects,input+'.b');\r
-   rewrite(Objects);\r
-   for x:=0 to RMax do write(Objects,p[x]);\r
-   close(Objects);\r
-   assign(WordList,input+'.c');\r
-   rewrite(Wordlist);\r
-   for x:= 0 to NMax do\r
-    for y:= 1 to 5 do\r
-     write(WordList,n[x,y]);\r
-   for x:= 0 to VMax do\r
-    for y:= 1 to 5 do\r
-     write(WordList,v[x,y]);\r
-   close(WordList);\r
-   assign(Things,input+'.d');\r
-   rewrite(Things);\r
-   for x:= 0 to NMax do write(Things,r[x]);\r
-   close(Things);\r
-   writeln; delete(input,1,2);\r
-   writeln('Your present game location is now',\r
-           ' SAVED to disk under the name ''',input,'.''');\r
-   if(Drive='A:')then begin writeln;\r
-    writeln('Remove the SAVE/RESTORE disk and insert your GAME disk.')end;\r
-   writeln('  (Press any key to continue...)');read(kbd,flag);\r
-   writeln;writeln;\r
-   if(Verb<>54)then writeln('You may now resume your game...');\r
-   if(Line='')then Line:='look';Tic:=Tic-2;Back:=True;\r
-   if(Prm in[59..68])then sound(20);\r
-   window(1,2,80,25)\r
-   end; {of Save}\r
-\r
-overlay procedure RESTORE;\r
- function Exist:Boolean;\r
- begin\r
- assign(GameSave,input+'.a');\r
- {$I-}\r
- Reset(GameSave);\r
- {$I+}\r
- Exist:=(IOresult=0)\r
- end;\r
-   begin SA; for x:=1 to 24 do writeln; nosound;\r
-   window(1,3,80,25);gotoxy(1,4);\r
-   if(Drive='A:')then\r
-    writeln('Remove the GAME disk and insert your SAVE/RESTORE disk ',\r
-            'in drive ',Drive)else\r
-    writeln('Make sure your SAVE/RESTORE disk is in drive B:');\r
-   writeln('  (Press any key to continue...)');read(kbd,flag);\r
-   writeln;writeln;\r
-   write('Which file name do you want to RESTORE? ');BufLen:=8;readln(input);\r
-   while pos(' ',input)>0 do delete(input,pos(' ',input),1);\r
-   while pos('.',input)>0 do delete(input,pos('.',input),1);\r
-   if(input='')then input:='LastRoom';\r
-   writeln;writeln;input:=Drive+input;\r
-   writeln('If your SAVE/RESTORE disk is now in drive ',Drive,\r
-           ' then press any key to start.');\r
-   read(kbd,flag);\r
-   if Exist then\r
-    begin\r
-     close(GameSave);\r
-     assign(GameSave,input+'.a');\r
-     reset(GameSave);\r
-     read(GameSave,DiskSave);\r
-     close(GameSave);\r
-     with DiskSave do\r
-      begin\r
-       Inven:=aInven;KitSet:=aKitSet;CabiSet:=aCabiSet;PanelCon:=aPanelCon;\r
-       SlotCon:=aSlotCon;CompCon:=aCompCon;RopeCon:=aRopeCon;Tic:=aTic;\r
-       YearDial:=aYearDial;Prm:=aPrm;MnRm:=aMnRm;Sc:=aSc;Shots:=aShots;\r
-       ShRm:=aShRm;Rx:=aRx;Ev:=aEv;Code:=aCode;Loc:=aLoc;KeyHole:=aKeyHole;\r
-      end;\r
-     assign(Objects,input+'.b');\r
-     reset(Objects);\r
-     for x:=0 to RMax do read(Objects,p[x]);\r
-     close(Objects);\r
-     assign(WordList,input+'.c');\r
-     reset(Wordlist);\r
-     for x:= 0 to NMax do\r
-      for y:= 1 to 5 do\r
-       read(WordList,n[x,y]);\r
-     for x:= 0 to VMax do\r
-      for y:= 1 to 5 do\r
-       read(WordList,v[x,y]);\r
-     close(WordList);\r
-     assign(Things,input+'.d');\r
-     reset(Things);\r
-     for x:= 0 to NMax do read(Things,r[x]);\r
-     close(Things);\r
-     writeln; delete(input,1,2);\r
-     writeln('Your previously SAVED game location is now',\r
-             ' RESTORED from the file ''',input,'.''');\r
-     if(Drive='A:')then begin writeln;\r
-      writeln('Remove the SAVE/RESTORE disk and insert your GAME disk.')end;\r
-     writeln('  (Press any key to continue...)');read(kbd,flag);\r
-    end\r
-   else\r
-    begin writeln;TextColor(28);\r
-     writeln('             That name does not exist on this',\r
-             ' SAVE/RESTORE disk.',^g);\r
-     TextColor(m2);writeln;\r
-     if(Drive='A:')then\r
-      writeln('Put your GAME disk back in the disk drive and press any key.')\r
-     else writeln('  (Press any key to continue...)');\r
-     read(kbd,flag);\r
-    end;\r
-   writeln;writeln;writeln('You may now resume you game...');\r
-   if(Line='')then Line:='look';Tic:=Tic-2;Back:=True;\r
-   if(Prm in[59..68])then sound(20);\r
-   window(1,2,80,25)\r
-   end; {of Restore}\r
-\r
-overlay procedure Vanish(o : integer);\r
-   begin SA;\r
-     inven:=inven-[o];\r
-     r[o]:=Null;\r
-     p[Prm]:=p[Prm]-[o];\r
-     if(o=7)and not(en('I'))then Ev:=Ev+['I'];\r
-     if(o=13)and(13 in p[42])then p[42]:=p[42]-[13];\r
-     if(o=PanelCon)then PanelCon:=Null;\r
-     if(o=SlotCon)then SlotCon:=Null;\r
-     if(o in CabiSet)then CabiSet:=CabiSet-[o];\r
-     if(o in kitset)then kitset:=kitset-[o];\r
-     if(o=63)and KeyHole then KeyHole:=False;\r
-     if(o=74)then Ev:=Ev-['p'];\r
-     if(o=89)then Ev:=Ev-['i'];\r
-     if(o=RopeCon)and(verb=36)then begin RopeCon:=Null;RL(402)end;\r
-     if(o=RopeCon)and not(Verb in[9,14])then RopeCon:=Null\r
-   end;\r
-\r
-overlay procedure Play( Start, Stop, Wait: integer);\r
-   var x : integer;\r
-   begin\r
-    if(Start<=Stop)then\r
-     for x:= Start to Stop do\r
-      begin sound(x); delay(Wait); end\r
-    else\r
-     for x:= Start downto Stop do\r
-      begin sound(x); delay(Wait); end;\r
-    if(Prm in[59..68])then sound(20)else nosound\r
-   end; {of Play}\r
-\r
-overlay procedure DropAll;\r
-   var o : integer;\r
-   begin\r
-     for o:= 0 to NMax do\r
-       if(o in inven)then\r
-         begin\r
-           r[o]:=Prm;\r
-           inven:=inven-[o];writeln(n[o,1],': Dropped.');\r
-         end;\r
-     RL(106);\r
-   end;  {of DropAll}\r
-\r
-function FlasOff : Boolean;\r
-   begin\r
-     if not(En('a'))then FlasOff:=True\r
-     else\r
-       if(r[29]=Prm)or(29 in inven)then FlasOff:=False\r
-       else FlasOff:=True;\r
-   end;\r
-\r
-procedure MoveTo(NewRm : integer);\r
- var o : integer;\r
- begin\r
-   if(57 in inven)and(ropecon<>Null)and not(ropecon in inven)\r
-     and(ropecon in mov)and not(ropecon=70)then\r
-      begin r[ropecon]:=Prm;RL(158);end\r
-   else if(57 in inven)and(ropecon<>Null)and(not(ropecon in mov)or\r
-        ((ropecon=70)and(en('d'))))then\r
-          begin RL(55);inven:=inven-[57];r[57]:=Prm;end\r
-   else if not(57 in inven)and((ropecon in inven)or\r
-          (ropecon in[60,56,44]))then r[57]:=NewRm\r
-   else if not(57 in inven)and(r[57]=Prm)and(r[ropecon]=NewRm)then\r
-          begin r[57]:=NewRm;RopeOld:=Prm;end\r
-   else if not(57 in inven)and(r[57]=Prm)and(NewRm=RopeOld)and\r
-              (r[ropecon]=Prm)then\r
-          begin r[57]:=RopeOld;RopeOld:=Null;end;\r
-   if(ropecon=Null)or((NewRm<>RopeOld)and(Prm<>RopeOld))then RopeOld:=Null;\r
-   if(MnRm<>Null)then Monster(NewRm);\r
-   if(Prm in[63..68])and not(NewRm in[59,69])then RL(343);\r
-   if(Prm in[59,63..68])then for o:=0 to NMax do if(r[o]=Prm)then r[o]:=NewRm;\r
-   Prm:=NewRm;\r
-   DescribeRm\r
- end;  {of MoveTo}\r
-\r
-procedure Time;\r
-   begin\r
-     Tic:=Tic+1;\r
-  case Tic of\r
-    3:RL(280);\r
-    4:RS(1);\r
-    17:if not(en('A'))then begin RS(3);DEAD end else RS(5);\r
-    19:RL(4);\r
-    20:RL(5);\r
-    21:RL(6);\r
-    23:RS(6);\r
-    24:if(en('B'))then begin RS(8);writeln;RL(16);moveto(5);Sc:=Sc+25;\r
-         n[64,5]:='ship';v[26,2]:='pick' end\r
-       else begin RS(7);DEAD;end;\r
-    43:if(not(en('c'))and not(en('n')))then RL(31);\r
-    73:if(not(en('c'))and not(en('n')))then RL(32);\r
-    93:if(not(en('c'))and not(en('n')))then begin RL(33); DEAD end;\r
-    99:if(Prm in[6..24])and(here(29))and not(flasoff)and(not(en('s')))then\r
-         begin RL(41);Ev:=Ev+['s'] end;\r
-    147:if not(en('n'))then RL(31);\r
-    149:if(here(29))and not(flasoff)then RL(59);\r
-    153:if(Prm in[6..23])and(here(29))and not(flasoff)then\r
-          begin RS(14);vanish(29) end;\r
-    170:if not(en('n'))then RL(32);\r
-    181:if not(en('n'))then begin RL(33); DEAD end;\r
-    549:RL(281);\r
-    586:RL(282);\r
-    598:RL(283);\r
-    607:begin RL(284);DEAD;end;\r
-  end; {of case}\r
-\r
-case Prm of\r
-    1..3:if(tic>4)and(random(4)=1)then RL(405);\r
-  36..39:if(random(5)=2)then RL(219);\r
-     7  :if(random(8)=2)then RL(266);\r
-     8  :if(random(3)=2)then begin RL(265);play(6666,7000,0);end;\r
-  13..24:if(random(16)=2)then RL(246);\r
-  25..35:if(random(30)=2)then RL(267);\r
-   47,48:if(random(5)=2)and(inven <>[])then\r
-           begin\r
-            if(Prm=48)then begin writeln;RS(40)end\r
-            else begin writeln;RS(44);moveto(48)end;\r
-            o:=1;flag:='?';\r
-            repeat o:=o+1;\r
-             if(o in inven)then\r
-             begin vanish(o);r[o]:=random(9)+41;flag:='g';end;\r
-            until Flag = 'g';\r
-           end;\r
-end;\r
-case Prm of\r
-  5,6,9,10:if(random(9)=2)then RL(268);\r
-  7..40:if(here(84))and(random(20)=2)then RL(269)\r
-        else if(random(75)=2)then RS(36)\r
-        else if(Prm in[5..22])and(random(33)=2)then\r
-         begin RL(265);play(6500,6950,0)end;\r
-  41..49:if(random(27)=2)then RL(285);\r
-    59  :if(random(15)=1)then RL(406);\r
-end;\r
-if Attack and(MnRm=Prm)and(not Back)then\r
- begin case random(3) of 0:RS(80); 1:RS(81); 2:RS(82)end;DEAD end\r
-else if(MnRm=Prm)then Attack:=True\r
-   end;  {of Time}\r
-\r
-function Present : Boolean;\r
-   begin\r
-    if(noun<>Null)and(noun<>1)then\r
-     if(here(noun))then\r
-      if(noun2<>Null)then\r
-       if(here(noun2))then Present:=true\r
-       else begin\r
-         writeln('You can''t see any ',n[noun2,1],' here.');Present:=false end\r
-      else Present:=true\r
-     else begin\r
-       writeln('You can''t see any ',n[noun,1],' here.');Present:=false end\r
-    else Present:=true\r
-   end;\r
-\r
-overlay procedure Initialize;\r
- procedure Cn(S : Str80);\r
- begin\r
-  gotoxy(40-(length(S)div 2),wherey);writeln(S);\r
- end;\r
-  begin\r
-   textcolor(15);\r
-   writeln('Prepare to engage yourself in a most exciting adventure.');\r
-   writeln('But first, two simple questions:');\r
-   gotoxy(1,4);write('Are you using a COLOR screen (Y/N)? ');\r
-   nosound; play(72,80,45);\r
-   read(kbd,flag); play(2500,2490,6);\r
-   m0:=20;m1:=14;m2:=11;m3:=4;m4:=15;m5:=28;m6:=1;m7:=4;m8:=10;m9:=10;\r
-   if upcase(flag)='N' then\r
-    begin\r
-     writeln('No, I don''t have a color screen.');\r
-     m0:=31;m1:=15;m2:=15;m3:=7;m4:=0;m5:=31;m6:=7;m7:=8;m8:=7;m9:=0;\r
-    end else writeln('Yes, I do have a color screen.');writeln;\r
-   write('How many disk drives do you have (1/2)? ');\r
-   play(80,88,30);\r
-   read(kbd,flag);play(2500,2490,6);\r
-   Drive:='B:';\r
-   if(upcase(flag)='O')or(flag='1')then\r
-    begin Drive:='A:';writeln('I have ONE disk drive.')end else\r
-    writeln('I have TWO disk drives.');\r
-   delay(999);clrscr;textcolor(15);gotoxy(1,5);writeln;textcolor(7);\r
-   cn('Beyond the Titanic');textcolor(6);cn('------------------');writeln;\r
-   textcolor(7);\r
-   cn('A Text & Sound Adventure Fantasy');writeln;writeln;\r
-   cn('An Apogee Software Production');writeln;writeln;writeln;\r
-   cn('Written and Programmed by Scott Miller');\r
-   textcolor(11);\r
-   gotoxy(32,24);textcolor(7);\r
-   write('Press any key...');read(kbd,flag);clrscr;\r
-\r
-   {                      *** SHAREWARE SCREEN ***                            }\r
-\r
-   textcolor(15);\r
-   writeln('Please note that Beyond the Titanic is a SHAREWARE game.');\r
-   writeln;\r
-   textcolor(7);\r
-   writeln('This game has been placed in the public domain for your enjoyment.');\r
-   writeln;\r
-   writeln('If you like the game the author (Scott Miller) asks that you please');\r
-   writeln('contribute $5 or $10 (your discretion) to him.  This minimal payment');\r
-   writeln('will help compensent the author for the year of work that went into');\r
-   writeln('Beyond the Titanic.  It will also encourage the author to make new and');\r
-   writeln('better games, like Supernova and Kingdom of Kroz, both of which are');\r
-   writeln('also shareware games recently released.');\r
-   writeln;\r
-   writeln('This fee also registers the payer for telephone support and clues.');\r
-   writeln;writeln;\r
-   writeln('Please make checks payable to Scott Miller.');\r
-   writeln;\r
-   textcolor(15);\r
-   writeln('        Scott Miller           (214) 240-0614');\r
-   writeln('        4206 Mayflower Dr.');\r
-   writeln('        Garland, TX  75043');\r
-   writeln;\r
-   textcolor(7);\r
-   writeln('Thanks, enjoy the game...');\r
-   gotoxy(23,25);\r
-   delay(12000);\r
-   while keypressed do read(kbd,flag);\r
-   write('Press any key to start the game...');\r
-   read(kbd,flag);\r
-   while keypressed do read(kbd,flag);\r
-   clrscr;\r
-   {                      ************************                            }\r
-\r
-   gotoxy(1,25);\r
-   TextColor(m1);\r
-cn('APRIL 14, 1912    11:43 PM');\r
-cn('You never knew the black canvas of the night was so full'+\r
-   ' of twinkling detail.');\r
-cn('Standing on deck of the White Star''s new super luxury liner, deep at sea,');\r
-cn('where the bright lights of San Francisco don''t fade the night, you');\r
-cn('can view thousands of stars you never realized existed.');\r
-cn('Looking out over the icy sea you can barely see small pieces of'+\r
-   ' broken ice');\r
-cn('bobbing in the water.  Rumor has it that icebergs the size of small');\r
-cn('mountains can be found in this region.  You don''t feel');\r
-cn('too worried, though, the Titanic has been touted as');\r
-cn('"unsinkable," and every single passenger knows');\r
-cn('that White Star, the premier ship builder,');\r
-cn('knows their stuff...');\r
-for x:= 1 to 3 do writeln;\r
-Line        :='';\r
-LastNoun    :='';\r
-KitSet      :=[2,29,57];\r
-CabiSet     :=[89,63];\r
-CompCon     :=Null;\r
-PanelCon    :=8;\r
-RopeCon     :=Null;\r
-SlotCon     :=Null;\r
-RopeOld     :=Null;\r
-RmSh        :=[];\r
-Mov         :=[2,7,8,13,27,29,32,34,40,52,51,57,63,70,74,77,89];\r
-OneWordCommands:=[1,4,5,7,8,16,18,19,22,31,33..35,41,43..54,56..59,61..65];\r
-Ev          :=[];\r
-Inven       :=[];\r
-Prm         :=0;\r
-MnRm        :=Null;\r
-Tic         :=Prm;\r
-Sc          :=0;\r
-Shots       :=6;\r
-KeyHole     :=false;\r
-Verbose     :=true;\r
-Attack      :=False;\r
-YearDial    :=135;\r
-DayDial     :=60;\r
-assign(rooms1,'rooms1');assign(rooms2,'rooms2');\r
-assign(special1,'special1');assign(special2,'special2');assign(line1,'line');\r
-reset(rooms1);reset(rooms2);reset(special1);reset(special2);reset(line1);\r
-Str(Random(9998)+1,Code);\r
-   DescribeRm; writeln; randomize;\r
-   gotoxy(1,1);TextBackGround(m6);\r
-   for x:=1 to 80 do write(' ');writeln;TextColor(m4);\r
-   gotoxy(4,1);writeln('Move');gotoxy(68,1);writeln('Score');TextColor(m2);\r
-   TextBackGround(0); Window(1,2,80,25);\r
-  end; {of Initialize}\r
-{***************************** END OF COMMANDS *****************************}\r
-\1a
\ No newline at end of file
+{//-------------------------------------------------------------------------}
+{/*                                                                         }
+{Copyright (C) 2014 Jason Self <j@jxself.org>                               }
+{                                                                           }
+{This file is free software: you may copy, redistribute and/or modify it    }
+{under the terms of the GNU Affero General Public License as published by   }
+{the Free Software Foundation, either version 3 of the License, or (at your }
+{option) any later version.                                                 }
+{                                                                           }
+{This file is distributed in the hope that it will be useful, but WITHOUT   }
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License}
+{for more details.                                                          }
+{                                                                           }
+{You should have received a copy of the GNU Affero General Public License   }
+{along with this program; if not, see https://gnu.org/licenses or write to: }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{This file incorporates work covered by the following copyright and         }
+{permission notice:                                                         }
+{                                                                           }
+{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }
+{                                                                           }
+{This file is part of Beyond The Titanic. Beyond The Titanic is free        }
+{software; you can redistribute it and/or modify it under the terms of the  }
+{GNU General Public License as published by the Free Software Foundation;   }
+{either version 3 of the License, or (at your option) any later version.    }
+{                                                                           }
+{This program is distributed in the hope that it will be useful, but WITHOUT}
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE.                                          }
+{                                                                           }
+{See the GNU General Public License for more details.                       }
+{                                                                           }
+{You should have received a copy of the GNU General Public License          }
+{along with this program; if not, write to:                                 }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{Original Source: 1990 Scott Miller                                         }
+{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }
+{*/                                                                         }
+{//-------------------------------------------------------------------------}
+{****************************************************************************}
+{*                                COMMANDS                                  *}
+{*                            by Scott Miller                               *}
+{*  These are misc procedures and functions used with the main file: AdGame *}
+{*                        Copyright 1984 Pending                            *}
+{****************************************************************************}
+
+
+
+procedure SA;
+   begin FlagSA:='s' end;
+
+function En(c : char) : boolean;
+   begin
+     if(c in Ev)then En:=True else En:=False
+   end;
+
+function Here(noun : integer): Boolean;
+   begin
+     if(noun in Inven)or(r[noun]=Prm)or(noun in p[Prm])then Here:=True
+     else Here:=False
+   end;
+
+procedure Crazy;
+   begin SA;
+    if(random(2)=1)then RL(107+random(7))else RL(300+random(6));
+   end;
+
+procedure DEAD;
+    var FileName : file;
+    var x,b,c:Integer;
+   begin SA; NoSound;
+     gotoxy(1,25);for x:=1 to 7 do writeln;
+     Textcolor(1);TextBackground(m9);
+     gotoxy(1,18);
+     write('*********************************************************',
+           '***********************');writeln;
+     gotoxy(1,19); for x:=1 to 3 do
+     write('*                                                        ',
+             '                      *');writeln;
+     gotoxy(1,22);
+     write('*********************************************************',
+           '***********************');writeln;
+     TextColor(m0);gotoxy(32,20);writeln('YOU HAVE DIED!!!');
+     Textcolor(m2);Textbackground(0);
+     for c:=700 downto 20 do
+        for b:=70 downto 1 do sound(b*c);nosound;
+     close(Rooms1);close(rooms2);close(special1);close(special2);close(line1);
+     gotoxy(1,23);DelLine;DelLine;writeln;write('Do you wish to play again? ');
+     flag:=ReadKey;
+     if(upcase(flag)<>'N')then
+      begin
+       writeln('Restarting...');window(1,1,80,25);
+       assign(rooms1,'BEYOND.com');
+       { execute(rooms1); }
+       end
+     else
+      begin
+       textcolor(7);
+       textbackground(0);
+       window(1,1,80,25);
+       clrscr;
+       writeln('    Beyond the Titanic');
+       writeln('A Scott Miller Production');
+       writeln('    Have a nice day...');
+       delay(2000);
+       assign(FileName,'MENU.COM');
+       {$I-}
+       {execute(FileName);}
+       {$I+}
+       if IOResult <> 0 then HALT;
+      end
+   end;
+
+procedure Home;
+  var b,c,x,y,o:Integer;
+   begin SA;
+     gotoxy(1,25);for x:=1 to 7 do writeln;
+     Textcolor(25);Textbackground(m7);
+     gotoxy(1,18);
+     write('#########################################################',
+           '#######################');writeln;
+     gotoxy(1,19); for x:=1 to 3 do
+     write('#                                                        ',
+             '                      #');writeln;
+     gotoxy(1,22);
+     write('#########################################################',
+           '#######################');writeln;
+     TextColor(31);gotoxy(25,20);writeln('Y O U   H A V E   W O N ! ! !');
+     Textcolor(m2);Textbackground(0);
+     gotoxy(1,23);DelLine;DelLine;writeln;
+     for x:=150 downto 1 do begin sound(x*55);delay(8);nosound;delay(20)end;
+     if(Sc>1000)then Sc:=1000;
+     write('You finished with a score of ',Sc,', which makes you a ');
+     if(Sc=1000)then
+      begin writeln('Perfect Adventurer!!!');
+        for y:=1 to 7 do
+         for o:=0 to 20 do
+           for x:= 99+(o*430)to 998+(o*430)do begin sound(25);sound(x)end
+      end
+     else writeln('Master Adventurer!');
+     for c:=1 to 999 do for b:=1 to 61 do sound(b*c);nosound;
+     writeln;nosound;
+     writeln('Reboot your computer to regain control...')
+  end;
+
+procedure Say(o : integer; p : str14);
+   begin
+     writeln('The ',n[o,1],' is already ',p,'.'); SA
+   end;
+
+procedure Diagnose;
+   begin
+     RL(191);
+     if((tic>42)and not(en('c')))or((tic>146)and not(en('n')))or(en('r'))then
+      begin
+       if(tic>42)and (not(en('c')))then RL(192)
+        else if(tic>146)and not(en('n'))then RL(192);
+       if(en('r'))then RL(51)
+      end
+     else RL(207)
+   end;
+
+procedure Monster(var NewRm : integer);
+   begin
+    if(NewRm=MnRm)and(MnRm=25)then begin Attack:=False;RL(384)end else
+    if(NewRm<>35)or not(en('v'))then
+     begin
+      p[Prm]:=p[Prm]-[23];p[NewRm]:=p[NewRm]+[23];MnRm:=NewRm;Attack:=False;
+       if not((NewRm=30)and(Verb in[27,28]))then
+        case random(7) of
+         0:RS(71);1:RS(72);2:RL(359);3:RL(360);4:RL(361);5:RL(362);6:RL(363)
+        end
+     end
+    else begin RL(383);Attack:=False end
+   end;
+
+procedure DescribeRm;
+   var o : integer;
+  procedure s(r : str14);
+     begin TextColor(m8);writeln(r);TextColor(m2);loc:=r;end;
+   begin SA;
+if((en('a'))and(here(29)))or not(Prm in [6..24])then begin
+     case Prm of
+0:s('Ship''s Fore');1:s('Ship Mid-Deck');2:s('Rear of Ship');
+3:s('Life Boat');4:s('Ocean Surface');5:s('Huge Cavern');
+6:s('Cave of Pins');7:s('Ocean Bottom');8:s('Squeaky Cave');
+9:s('Stream Bend');10:s('Waterfall');13:s('Sloppy Cave');
+11:s('Hex Cave');12:s('Shallow Cleft');20:s('Zoo');
+14:s('Winding Tunnel');15:s('Chasm');17:s('Chasm Bottom');
+18:s('Tiny Opening');19:s('Etched Stairs');
+21:s('Edge of Saucer');22:s('Side of Saucer');
+23:s('Top of Saucer');24:s('Airlock');16:s('End of Rope');
+76:s('Locked Cabin');25:s('Central Entry');
+26:s('Lower Entry');27:s('Ship''s Systems');
+30:s('Time Chamber');28:s('Ship''s Lab');34:s('Bridge');
+29:s('Inside Tube');31:s('Life Support');58,69:s('Inside Shuttle');
+32:s('Supply Chamber');33:s('Sleep Chamber');
+35:s('Engine Room');36:s('Cargo Deck #1');37:s('Cargo Deck #2');
+38:s('Cargo Deck #3');39:s('Cargo Deck #4');40:s('Large Cage');
+41:s('Wooden Bridge');42:s('Broken End');43:s('South End');
+44..46:s('Deserted Road');47:s('Crater Edge');48:s('Crater Floor');
+49:s('Building Front');50:s('Lobby');51..54:s('Office Room');
+55:s('Basement');56:s('Ladder Room');57:s('Building Roof');
+59:case ShRm of 0:s('Above Mud Lake');
+1:s('Above Rubble');2:s('Above Desert');3:s('Above Pits');
+4:s('Above River');5:s('Above Stream');6:s('Above Town');
+7:s('Above Mountain');8:s('Above Crator');9:s('Above Hills');
+10:s('Above Canyon');11:s('Above Flatland');12:s('Above Dry Lake');
+13:s('Above Desert');14:s('Above Bridge')end;{of Above Rooms}
+63,64:s('Above Clouds');65..68:s('Outside City');70:s('Landing Bay');
+71:s('Power Plant');72..74:s('Dark Corridor');75:s('Food Supply')
+     end; {of case}
+
+    if Verbose then begin FlagSA:='r';
+      case Prm of
+       2 :if(40 in p[2])then begin RR(2);RL(416)end;
+       4 :if(en('B'))then RR(4)else begin RR(4);
+           writeln('There is a safety harness here.')end;
+       11:if(en('C'))then RS(15);
+       40:if(en('g'))then RS(17);
+       12:if not(en('G'))then begin RR(12);RL(146)end;
+       31:if not(en('I'))then begin RR(31);RL(156)end;
+       34:if(74 in p[34])then begin RR(34);RL(273)end;
+       35:if(77 in p[35])then begin RR(35);RL(381);RL(382)end else
+           if(en('W'))then begin RR(35);RL(381)end;
+       42:if(13 in p[42])then begin RR(42);RL(214)end;
+       48:if(27 in p[48])then begin RR(48);RL(276)end;
+       59..69:begin SA;
+               if(Prm=59)and not(ShRm in RmSh)then
+                begin RmSh:=RmSh+[ShRm];RS(ShRm+46)end
+               else if(Prm<>59)then RR(Prm);
+               if KeyHole and here(63)then
+                writeln('The shiny key is in the keyhole.')
+              end
+       else RR(Prm)
+      end; {of case}
+      if(FlagSA='r')and(Prm<>59)then RR(Prm)end;
+
+     for o:= 0 to NMax do begin
+       if(o in Mov)then
+         if(r[o]=Prm)then
+          if not((Prm in[59..69])and(KeyHole)and(o=63))then
+           begin writeln('There is a ',n[o,1],' here.');
+            if(here(ropecon))and(o=ropecon)and not(ropecon in inven)then
+             writeln('  The rope is attatched to the ',n[o,1],'.');
+            if(en('d'))and(o=70)and(here(70))then RL(147);
+            if(o=SlotCon)and(here(o))then RL(388);
+            if(o in CabiSet)and(here(o))then RL(389);
+            if(o=PanelCon)and(here(o))then RL(390);
+            if(o in KitSet)and(here(o))then RL(391);
+           end
+     end end
+    else RL(54)
+   end;  {of DescribeRm}
+
+procedure SAVE;
+   begin SA; for x:=1 to 24 do writeln; nosound;
+   window(1,3,80,25);
+   gotoxy(1,4);
+   if(Drive='A:')then
+    writeln('Remove the GAME disk and insert your SAVE/RESTORE disk ',
+            'in drive A:')else
+    writeln('Make sure your SAVE/RESTORE disk is in drive B:');
+   writeln('  (Press any key to continue...)');flag:=ReadKey;
+   writeln;writeln;
+   write('Save under what name? ');
+   {BufLen:=8;}
+   readln(input);
+   while pos(' ',input)>0 do delete(input,pos(' ',input),1);
+   while pos('.',input)>0 do delete(input,pos('.',input),1);
+   if(input='')then input:='LastRoom';
+   writeln;writeln;input:=Drive+input;
+   writeln('If your SAVE/RESTORE disk is in drive ',Drive,
+            ' then press any key to start.');
+   flag:=ReadKey;
+   with DiskSave do
+    begin
+     aInven:=Inven;aKitSet:=KitSet;aCabiSet:=CabiSet;aPanelCon:=PanelCon;
+     aSlotCon:=SlotCon;aCompCon:=CompCon;aRopeCon:=RopeCon;aTic:=Tic;
+     aYearDial:=YearDial;aPrm:=Prm;aMnRm:=MnRm;aSc:=Sc;aShots:=Shots;
+     aShRm:=ShRm;aRx:=Rx;aEv:=Ev;aCode:=Code;aLoc:=Loc;aKeyHole:=KeyHole;
+    end;
+   assign(GameSave,input+'.a');
+   rewrite(GameSave);
+   write(GameSave,DiskSave);
+   close(GameSave);
+   assign(Objects,input+'.b');
+   rewrite(Objects);
+   for x:=0 to RMax do write(Objects,p[x]);
+   close(Objects);
+   assign(WordList,input+'.c');
+   rewrite(Wordlist);
+   for x:= 0 to NMax do
+    for y:= 1 to 5 do
+     write(WordList,n[x,y]);
+   for x:= 0 to VMax do
+    for y:= 1 to 5 do
+     write(WordList,v[x,y]);
+   close(WordList);
+   assign(Things,input+'.d');
+   rewrite(Things);
+   for x:= 0 to NMax do write(Things,r[x]);
+   close(Things);
+   writeln; delete(input,1,2);
+   writeln('Your present game location is now',
+           ' SAVED to disk under the name ''',input,'.''');
+   if(Drive='A:')then begin writeln;
+    writeln('Remove the SAVE/RESTORE disk and insert your GAME disk.')end;
+   writeln('  (Press any key to continue...)');flag:=ReadKey;
+   writeln;writeln;
+   if(Verb<>54)then writeln('You may now resume your game...');
+   if(Line='')then Line:='look';Tic:=Tic-2;Back:=True;
+   if(Prm in[59..68])then sound(20);
+   window(1,2,80,25)
+   end; {of Save}
+
+procedure RESTORE;
+ function Exist:Boolean;
+ begin
+ assign(GameSave,input+'.a');
+ {$I-}
+ Reset(GameSave);
+ {$I+}
+ Exist:=(IOresult=0)
+ end;
+   begin SA; for x:=1 to 24 do writeln; nosound;
+   window(1,3,80,25);gotoxy(1,4);
+   if(Drive='A:')then
+    writeln('Remove the GAME disk and insert your SAVE/RESTORE disk ',
+            'in drive ',Drive)else
+    writeln('Make sure your SAVE/RESTORE disk is in drive B:');
+   writeln('  (Press any key to continue...)');flag:=ReadKey;
+   writeln;writeln;
+   write('Which file name do you want to RESTORE? ');
+   {BufLen:=8;}
+   readln(input);
+   while pos(' ',input)>0 do delete(input,pos(' ',input),1);
+   while pos('.',input)>0 do delete(input,pos('.',input),1);
+   if(input='')then input:='LastRoom';
+   writeln;writeln;input:=Drive+input;
+   writeln('If your SAVE/RESTORE disk is now in drive ',Drive,
+           ' then press any key to start.');
+   flag:=ReadKey;
+   if Exist then
+    begin
+     close(GameSave);
+     assign(GameSave,input+'.a');
+     reset(GameSave);
+     read(GameSave,DiskSave);
+     close(GameSave);
+     with DiskSave do
+      begin
+       Inven:=aInven;KitSet:=aKitSet;CabiSet:=aCabiSet;PanelCon:=aPanelCon;
+       SlotCon:=aSlotCon;CompCon:=aCompCon;RopeCon:=aRopeCon;Tic:=aTic;
+       YearDial:=aYearDial;Prm:=aPrm;MnRm:=aMnRm;Sc:=aSc;Shots:=aShots;
+       ShRm:=aShRm;Rx:=aRx;Ev:=aEv;Code:=aCode;Loc:=aLoc;KeyHole:=aKeyHole;
+      end;
+     assign(Objects,input+'.b');
+     reset(Objects);
+     for x:=0 to RMax do read(Objects,p[x]);
+     close(Objects);
+     assign(WordList,input+'.c');
+     reset(Wordlist);
+     for x:= 0 to NMax do
+      for y:= 1 to 5 do
+       read(WordList,n[x,y]);
+     for x:= 0 to VMax do
+      for y:= 1 to 5 do
+       read(WordList,v[x,y]);
+     close(WordList);
+     assign(Things,input+'.d');
+     reset(Things);
+     for x:= 0 to NMax do read(Things,r[x]);
+     close(Things);
+     writeln; delete(input,1,2);
+     writeln('Your previously SAVED game location is now',
+             ' RESTORED from the file ''',input,'.''');
+     if(Drive='A:')then begin writeln;
+      writeln('Remove the SAVE/RESTORE disk and insert your GAME disk.')end;
+     writeln('  (Press any key to continue...)');flag:=ReadKey;
+    end
+   else
+    begin writeln;TextColor(28);
+     writeln('             That name does not exist on this',
+             ' SAVE/RESTORE disk.',^g);
+     TextColor(m2);writeln;
+     if(Drive='A:')then
+      writeln('Put your GAME disk back in the disk drive and press any key.')
+     else writeln('  (Press any key to continue...)');
+     flag:=ReadKey;
+    end;
+   writeln;writeln;writeln('You may now resume you game...');
+   if(Line='')then Line:='look';Tic:=Tic-2;Back:=True;
+   if(Prm in[59..68])then sound(20);
+   window(1,2,80,25)
+   end; {of Restore}
+
+procedure Vanish(o : integer);
+   begin SA;
+     inven:=inven-[o];
+     r[o]:=Null;
+     p[Prm]:=p[Prm]-[o];
+     if(o=7)and not(en('I'))then Ev:=Ev+['I'];
+     if(o=13)and(13 in p[42])then p[42]:=p[42]-[13];
+     if(o=PanelCon)then PanelCon:=Null;
+     if(o=SlotCon)then SlotCon:=Null;
+     if(o in CabiSet)then CabiSet:=CabiSet-[o];
+     if(o in kitset)then kitset:=kitset-[o];
+     if(o=63)and KeyHole then KeyHole:=False;
+     if(o=74)then Ev:=Ev-['p'];
+     if(o=89)then Ev:=Ev-['i'];
+     if(o=RopeCon)and(verb=36)then begin RopeCon:=Null;RL(402)end;
+     if(o=RopeCon)and not(Verb in[9,14])then RopeCon:=Null
+   end;
+
+procedure Play( Start, Stop, Wait: integer);
+   var x : integer;
+   begin
+    if(Start<=Stop)then
+     for x:= Start to Stop do
+      begin sound(x); delay(Wait); end
+    else
+     for x:= Start downto Stop do
+      begin sound(x); delay(Wait); end;
+    if(Prm in[59..68])then sound(20)else nosound
+   end; {of Play}
+
+procedure DropAll;
+   var o : integer;
+   begin
+     for o:= 0 to NMax do
+       if(o in inven)then
+         begin
+           r[o]:=Prm;
+           inven:=inven-[o];writeln(n[o,1],': Dropped.');
+         end;
+     RL(106);
+   end;  {of DropAll}
+
+function FlasOff : Boolean;
+   begin
+     if not(En('a'))then FlasOff:=True
+     else
+       if(r[29]=Prm)or(29 in inven)then FlasOff:=False
+       else FlasOff:=True;
+   end;
+
+procedure  MoveTo(NewRm : integer);
+ var o : integer;
+ begin
+   if(57 in inven)and(ropecon<>Null)and not(ropecon in inven)
+     and(ropecon in mov)and not(ropecon=70)then
+      begin r[ropecon]:=Prm;RL(158);end
+   else if(57 in inven)and(ropecon<>Null)and(not(ropecon in mov)or
+        ((ropecon=70)and(en('d'))))then
+          begin RL(55);inven:=inven-[57];r[57]:=Prm;end
+   else if not(57 in inven)and((ropecon in inven)or
+          (ropecon in[60,56,44]))then r[57]:=NewRm
+   else if not(57 in inven)and(r[57]=Prm)and(r[ropecon]=NewRm)then
+          begin r[57]:=NewRm;RopeOld:=Prm;end
+   else if not(57 in inven)and(r[57]=Prm)and(NewRm=RopeOld)and
+              (r[ropecon]=Prm)then
+          begin r[57]:=RopeOld;RopeOld:=Null;end;
+   if(ropecon=Null)or((NewRm<>RopeOld)and(Prm<>RopeOld))then RopeOld:=Null;
+   if(MnRm<>Null)then Monster(NewRm);
+   if(Prm in[63..68])and not(NewRm in[59,69])then RL(343);
+   if(Prm in[59,63..68])then for o:=0 to NMax do if(r[o]=Prm)then r[o]:=NewRm;
+   Prm:=NewRm;
+   DescribeRm
+ end;  {of MoveTo}
+
+procedure Time;
+   begin
+     Tic:=Tic+1;
+  case Tic of
+    3:RL(280);
+    4:RS(1);
+    17:if not(en('A'))then begin RS(3);DEAD end else RS(5);
+    19:RL(4);
+    20:RL(5);
+    21:RL(6);
+    23:RS(6);
+    24:if(en('B'))then begin RS(8);writeln;RL(16);moveto(5);Sc:=Sc+25;
+         n[64,5]:='ship';v[26,2]:='pick' end
+       else begin RS(7);DEAD;end;
+    43:if(not(en('c'))and not(en('n')))then RL(31);
+    73:if(not(en('c'))and not(en('n')))then RL(32);
+    93:if(not(en('c'))and not(en('n')))then begin RL(33); DEAD end;
+    99:if(Prm in[6..24])and(here(29))and not(flasoff)and(not(en('s')))then
+         begin RL(41);Ev:=Ev+['s'] end;
+    147:if not(en('n'))then RL(31);
+    149:if(here(29))and not(flasoff)then RL(59);
+    153:if(Prm in[6..23])and(here(29))and not(flasoff)then
+          begin RS(14);vanish(29) end;
+    170:if not(en('n'))then RL(32);
+    181:if not(en('n'))then begin RL(33); DEAD end;
+    549:RL(281);
+    586:RL(282);
+    598:RL(283);
+    607:begin RL(284);DEAD;end;
+  end; {of case}
+
+case Prm of
+    1..3:if(tic>4)and(random(4)=1)then RL(405);
+  36..39:if(random(5)=2)then RL(219);
+     7  :if(random(8)=2)then RL(266);
+     8  :if(random(3)=2)then begin RL(265);play(6666,7000,0);end;
+  13..24:if(random(16)=2)then RL(246);
+  25..35:if(random(30)=2)then RL(267);
+   47,48:if(random(5)=2)and(inven <>[])then
+           begin
+            if(Prm=48)then begin writeln;RS(40)end
+            else begin writeln;RS(44);moveto(48)end;
+            o:=1;flag:='?';
+            repeat o:=o+1;
+             if(o in inven)then
+             begin vanish(o);r[o]:=random(9)+41;flag:='g';end;
+            until Flag = 'g';
+           end;
+end;
+case Prm of
+  5,6,9,10:if(random(9)=2)then RL(268);
+  7,8,11..40:if(here(84))and(random(20)=2)then RL(269)
+        else if(random(75)=2)then RS(36)
+        else if(Prm in[5..22])and(random(33)=2)then
+         begin RL(265);play(6500,6950,0)end;
+  41..49:if(random(27)=2)then RL(285);
+    59  :if(random(15)=1)then RL(406);
+end;
+if Attack and(MnRm=Prm)and(not Back)then
+ begin case random(3) of 0:RS(80); 1:RS(81); 2:RS(82)end;DEAD end
+else if(MnRm=Prm)then Attack:=True
+   end;  {of Time}
+
+function Present : Boolean;
+   begin
+    if(noun<>Null)and(noun<>1)then
+     if(here(noun))then
+      if(noun2<>Null)then
+       if(here(noun2))then Present:=true
+       else begin
+         writeln('You can''t see any ',n[noun2,1],' here.');Present:=false end
+      else Present:=true
+     else begin
+       writeln('You can''t see any ',n[noun,1],' here.');Present:=false end
+    else Present:=true
+   end;
+
+procedure Initialize;
+ var S: string;
+
+ procedure Cn(S : Str80);
+ begin
+  gotoxy(40-(length(S)div 2),wherey);
+  writeln(S);
+ end;
+  begin
+   textcolor(15);
+   writeln('Prepare to engage yourself in a most exciting adventure.');
+   writeln('But first, two simple questions:');
+   gotoxy(1,4);write('Are you using a COLOR screen (Y/N)? ');
+   nosound; play(72,80,45);
+   flag:='Y'; play(2500,2490,6);
+   m0:=20;m1:=14;m2:=11;m3:=4;m4:=15;m5:=28;m6:=1;m7:=4;m8:=10;m9:=10;
+   if upcase(flag)='N' then
+    begin
+     writeln('No, I don''t have a color screen.');
+     m0:=31;m1:=15;m2:=15;m3:=7;m4:=0;m5:=31;m6:=7;m7:=8;m8:=7;m9:=0;
+    end else writeln('Yes, I do have a color screen.');writeln;
+   write('How many disk drives do you have (1/2)? ');
+   play(80,88,30);
+   flag:='2';play(2500,2490,6);
+   Drive:='B:';
+   if(upcase(flag)='O')or(flag='1')then
+    begin Drive:='A:';writeln('I have ONE disk drive.')end else
+    writeln('I have TWO disk drives.');
+   delay(999);clrscr;textcolor(15);gotoxy(1,5);writeln;textcolor(7);
+   cn('Beyond the Titanic');textcolor(6);cn('------------------');writeln;
+   textcolor(7);
+   cn('A Text & Sound Adventure Fantasy');writeln;writeln;
+   cn('An Apogee Software Production');writeln;writeln;writeln;
+   cn('Written and Programmed by Scott Miller');
+   textcolor(11);
+   gotoxy(32,24);textcolor(7);
+   write('Press any key...');{flag:=ReadKey;}clrscr;
+
+   {                      *** SHAREWARE SCREEN ***                            }
+
+   textcolor(15);
+   writeln('Please note that Beyond the Titanic is a SHAREWARE game.');
+   writeln;
+   textcolor(7);
+   writeln('This game has been placed in the public domain for your enjoyment.');
+   writeln;
+   writeln('If you like the game the author (Scott Miller) asks that you please');
+   writeln('contribute $5 or $10 (your discretion) to him.  This minimal payment');
+   writeln('will help compensent the author for the year of work that went into');
+   writeln('Beyond the Titanic.  It will also encourage the author to make new and');
+   writeln('better games, like Supernova and Kingdom of Kroz, both of which are');
+   writeln('also shareware games recently released.');
+   writeln;
+   writeln('This fee also registers the payer for telephone support and clues.');
+   writeln;writeln;
+   writeln('Please make checks payable to Scott Miller.');
+   writeln;
+   textcolor(15);
+   writeln('        Scott Miller           (214) 240-0614');
+   writeln('        4206 Mayflower Dr.');
+   writeln('        Garland, TX  75043');
+   writeln;
+   textcolor(7);
+   writeln('Thanks, enjoy the game...');
+   gotoxy(23,25);
+   {delay(12000);}
+   while keypressed do flag:=ReadKey;
+   write('Press any key to start the game...');
+   {flag:=ReadKey;}
+   while keypressed do flag:=ReadKey;
+   clrscr;
+   {                      ************************                            }
+   window(1,2,80,25);
+   gotoxy(1,1);
+   TextColor(m1);
+cn('APRIL 14, 1912    11:43 PM');
+cn('You never knew the black canvas of the night was so full'+
+   ' of twinkling detail.');
+cn('Standing on deck of the White Star''s new super luxury liner, deep at sea,');
+cn('where the bright lights of San Francisco don''t fade the night, you');
+cn('can view thousands of stars you never realized existed.');
+cn('Looking out over the icy sea you can barely see small pieces of'+
+   ' broken ice');
+cn('bobbing in the water.  Rumor has it that icebergs the size of small');
+cn('mountains can be found in this region.  You don''t feel');
+cn('too worried, though, the Titanic has been touted as');
+cn('"unsinkable," and every single passenger knows');
+cn('that White Star, the premier ship builder,');
+cn('knows their stuff...');
+for x:= 1 to 3 do writeln;
+Line        :='';
+LastNoun    :='';
+KitSet      :=[2,29,57];
+CabiSet     :=[89,63];
+CompCon     :=Null;
+PanelCon    :=8;
+RopeCon     :=Null;
+SlotCon     :=Null;
+RopeOld     :=Null;
+RmSh        :=[];
+Mov         :=[2,7,8,13,27,29,32,34,40,52,51,57,63,70,74,77,89];
+OneWordCommands:=[1,4,5,7,8,16,18,19,22,31,33..35,41,43..54,56..59,61..65];
+Ev          :=[];
+Inven       :=[];
+Prm         :=0;
+MnRm        :=Null;
+Tic         :=Prm;
+Sc          :=0;
+Shots       :=6;
+KeyHole     :=false;
+Verbose     :=true;
+Attack      :=False;
+YearDial    :=135;
+DayDial     :=60;
+assignfile(rooms1,'ROOMS1');
+assignfile(rooms2,'ROOMS2');
+assignfile(special1,'SPECIAL1');
+assignfile(special2,'SPECIAL2');
+assignfile(line1,'LINE');
+
+getdir(0,S);
+chdir(S);
+{Writeln ('Current directory is : ',S);}
+
+
+{$I+}
+
+{filemode:=1;}
+reset(rooms1);
+
+reset(rooms2);
+reset(special1);
+reset(special2);
+reset(line1);
+
+
+Str(Random(9998)+1,Code);
+
+   DescribeRm;
+   writeln;
+   randomize;
+   gotoxy(1,1);
+   TextBackGround(m6);
+   for x:=1 to 80 do write(' ');
+   writeln;
+   TextColor(m4);
+
+   gotoxy(4,1);
+   writeln('Move');
+
+   gotoxy(68,1);
+   writeln('Score');
+   TextColor(m2);
+   TextBackGround(0);
+   Window(1,2,80,25);
+
+  end; {of Initialize}
+{***************************** END OF COMMANDS *****************************}
index 9606508afe317700d7013d385ebb716e11f06fd2..b5bb4da9bd30ae2cf7a1408ca92b4ebbb820d2eb 100644 (file)
-{//-------------------------------------------------------------------------}\r
-{/*                                                                         }\r
-{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
-{                                                                           }\r
-{This file is part of Supernova.  Supernova is free software; you can       }\r
-{redistribute it and/or modify it under the terms of the GNU General Public }\r
-{License as published by the Free Software Foundation; either version 3     }\r
-{of the License, or (at your option) any later version.                     }\r
-{                                                                           }\r
-{This program is distributed in the hope that it will be useful,            }\r
-{but WITHOUT ANY WARRANTY; without even the implied warranty of             }\r
-{MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }\r
-{                                                                           }\r
-{See the GNU General Public License for more details.                       }\r
-{                                                                           }\r
-{You should have received a copy of the GNU General Public License          }\r
-{along with this program; if not, write to the Free Software                }\r
-{Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.}\r
-{                                                                           }\r
-{Original Source: 1990 Scott Miller                                         }\r
-{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
-{*/                                                                         }\r
-{//-------------------------------------------------------------------------}\r
-{*****************************************************************************}\r
-{*                                 OBJECTS                                   *}\r
-{*                             by Scott Miller                               *}\r
-{*  This include file to AdGame initializes all of the immoveable objects.   *}\r
-{*                         Copyright 1984 Pending                            *}\r
-{*****************************************************************************}\r
-overlay procedure Assign0;\r
-begin\r
-                      {INITIALIZE OBJECT'S ROOMS}\r
-for o:=0 to NMax do r[o]:=Null;\r
-p[0]:=[53,73,80,6,26,64,36];\r
-p[1]:=[53,6,57,73,80,64,36];\r
-p[2]:=[40,53,14,6,66,46,73,80,57,64,36];\r
-p[3]:=[6,73,80,39,59,57,64,36];\r
-p[4]:=[6,73,80,39,35,59,64,36];\r
-p[5]:=[73,80,71];\r
-p[6]:=[73,80,71];\r
-p[7]:=[36,73,80,6];\r
-p[8]:=[47,46];\r
-p[9]:=[73,80];\r
-p[10]:=[80,73,17];\r
-p[11]:=[72];\r
-p[12]:=[70];\r
-p[13]:=[17,47,73,80];\r
-p[14]:=[];\r
-p[15]:=[17,73,80];\r
-p[16]:=[17,57];\r
-p[17]:=[17];\r
-p[18]:=[];\r
-p[19]:=[69];\r
-p[20]:=[12,69,67,43];\r
-p[21]:=[64,71,37];\r
-p[22]:=[64,71,37];\r
-p[23]:=[64,26,71,37];\r
-p[24]:=[64,69,41,26,55];\r
-p[25]:=[64,69,41,26,84];\r
-p[26]:=[41,12,69,84];\r
-p[27]:=[20,21,26,10,58,38,86];\r
-p[28]:=[21,10,78,33,49,85];\r
-p[29]:=[78,10,21,33,49,85];\r
-p[30]:=[21,10,24,25,82,16,59,49,76,38,86];\r
-p[31]:=[75,21,10,84,7,22];\r
-p[32]:=[61,75,21,14];\r
-p[33]:=[61,75,4,21,10,59,84];\r
-p[34]:=[16,5,21,68,58,10,0,20,74,25,86];\r
-p[35]:=[62,21,10,54,55];\r
-p[36]:=[85,83,21,14,12,64,43];\r
-p[37]:=p[36];\r
-p[38]:=p[36]+[28];\r
-p[39]:=p[36];\r
-p[40]:=p[36]+[26,67];\r
-p[41]:=[87,73,19,47,53,37];\r
-p[42]:=p[41]+[13];\r
-p[43]:=p[41];\r
-p[44]:=[41,19,87];\r
-p[45]:=[41,19];\r
-p[46]:=[41,19];\r
-p[47]:=[3,41,19,17,22];\r
-p[48]:=[3,19,17,22,27,35];\r
-p[49]:=[9,26,37,72];\r
-p[50]:=[9,26,88,46,66,37,88,68];\r
-p[51]:=[9,37];\r
-p[52]:=[9,37];\r
-p[53]:=[9,69,37];\r
-p[54]:=[9,37];\r
-p[55]:=[9,69,11,45,26,61,37,68];\r
-p[56]:=[9,69,37];\r
-p[57]:=[9,19,37,41,65,22,31,73,87];\r
-p[58]:=[9,10,16,19,20,21,25,36,41,46,58,59,65,66,68,81,86];\r
-p[59]:=p[58]+[17,18,22,31,71,73,87];\r
-p[63]:=[9,10,16,18,19,20,21,25,36,41,46,58,59,65,66,68,81,86,88];\r
-p[64]:=p[63];\r
-p[65]:=p[63];\r
-p[66]:=p[63];\r
-p[67]:=p[63];\r
-p[68]:=p[63];\r
-p[69]:=p[63]+[9,14,37,53];\r
-p[70]:=p[69]+[69]-[10,16,20,36,46,58,59,66,68,81,86];\r
-p[71]:=[10,20,21,25,36,38,41,54,58,69];\r
-p[72]:=[85];\r
-p[73]:=p[72];\r
-p[74]:=p[72];\r
-p[75]:=[23,14,61];\r
-p[76]:=[26,45];\r
-for x:=0 to 76 do p[x]:=p[x]+[15,30,42,44,50,56,60,79]\r
-end;\r
-{****************************** END OF OBJECTS *******************************}\r
-\1a\r
+{//-------------------------------------------------------------------------}
+{/*                                                                         }
+{Copyright (C) 2014 Jason Self <j@jxself.org>                               }
+{                                                                           }
+{This file is free software: you may copy, redistribute and/or modify it    }
+{under the terms of the GNU Affero General Public License as published by   }
+{the Free Software Foundation, either version 3 of the License, or (at your }
+{option) any later version.                                                 }
+{                                                                           }
+{This file is distributed in the hope that it will be useful, but WITHOUT   }
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License}
+{for more details.                                                          }
+{                                                                           }
+{You should have received a copy of the GNU Affero General Public License   }
+{along with this program; if not, see https://gnu.org/licenses or write to: }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{This file incorporates work covered by the following copyright and         }
+{permission notice:                                                         }
+{                                                                           }
+{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }
+{                                                                           }
+{This file is part of Beyond The Titanic. Beyond The Titanic is free        }
+{software; you can redistribute it and/or modify it under the terms of the  }
+{GNU General Public License as published by the Free Software Foundation;   }
+{either version 3 of the License, or (at your option) any later version.    }
+{                                                                           }
+{This program is distributed in the hope that it will be useful, but WITHOUT}
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE.                                          }
+{                                                                           }
+{See the GNU General Public License for more details.                       }
+{                                                                           }
+{You should have received a copy of the GNU General Public License          }
+{along with this program; if not, write to:                                 }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{Original Source: 1990 Scott Miller                                         }
+{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }
+{*/                                                                         }
+{//-------------------------------------------------------------------------}
+{*****************************************************************************}
+{*                                 OBJECTS                                   *}
+{*                             by Scott Miller                               *}
+{*  This include file to AdGame initializes all of the immoveable objects.   *}
+{*                         Copyright 1984 Pending                            *}
+{*****************************************************************************}
+procedure Assign0;
+begin
+                      {INITIALIZE OBJECT'S ROOMS}
+for o:=0 to NMax do r[o]:=Null;
+p[0]:=[53,73,80,6,26,64,36];
+p[1]:=[53,6,57,73,80,64,36];
+p[2]:=[40,53,14,6,66,46,73,80,57,64,36];
+p[3]:=[6,73,80,39,59,57,64,36];
+p[4]:=[6,73,80,39,35,59,64,36];
+p[5]:=[73,80,71];
+p[6]:=[73,80,71];
+p[7]:=[36,73,80,6];
+p[8]:=[47,46];
+p[9]:=[73,80];
+p[10]:=[80,73,17];
+p[11]:=[72];
+p[12]:=[70];
+p[13]:=[17,47,73,80];
+p[14]:=[];
+p[15]:=[17,73,80];
+p[16]:=[17,57];
+p[17]:=[17];
+p[18]:=[];
+p[19]:=[69];
+p[20]:=[12,69,67,43];
+p[21]:=[64,71,37];
+p[22]:=[64,71,37];
+p[23]:=[64,26,71,37];
+p[24]:=[64,69,41,26,55];
+p[25]:=[64,69,41,26,84];
+p[26]:=[41,12,69,84];
+p[27]:=[20,21,26,10,58,38,86];
+p[28]:=[21,10,78,33,49,85];
+p[29]:=[78,10,21,33,49,85];
+p[30]:=[21,10,24,25,82,16,59,49,76,38,86];
+p[31]:=[75,21,10,84,7,22];
+p[32]:=[61,75,21,14];
+p[33]:=[61,75,4,21,10,59,84];
+p[34]:=[16,5,21,68,58,10,0,20,74,25,86];
+p[35]:=[62,21,10,54,55];
+p[36]:=[85,83,21,14,12,64,43];
+p[37]:=p[36];
+p[38]:=p[36]+[28];
+p[39]:=p[36];
+p[40]:=p[36]+[26,67];
+p[41]:=[87,73,19,47,53,37];
+p[42]:=p[41]+[13];
+p[43]:=p[41];
+p[44]:=[41,19,87];
+p[45]:=[41,19];
+p[46]:=[41,19];
+p[47]:=[3,41,19,17,22];
+p[48]:=[3,19,17,22,27,35];
+p[49]:=[9,26,37,72];
+p[50]:=[9,26,88,46,66,37,68];
+p[51]:=[9,37];
+p[52]:=[9,37];
+p[53]:=[9,69,37];
+p[54]:=[9,37];
+p[55]:=[9,69,11,45,26,61,37,68];
+p[56]:=[9,69,37];
+p[57]:=[9,19,37,41,65,22,31,73,87];
+p[58]:=[9,10,16,19,20,21,25,36,41,46,58,59,65,66,68,81,86];
+p[59]:=p[58]+[17,18,22,31,71,73,87];
+p[63]:=[9,10,16,18,19,20,21,25,36,41,46,58,59,65,66,68,81,86,88];
+p[64]:=p[63];
+p[65]:=p[63];
+p[66]:=p[63];
+p[67]:=p[63];
+p[68]:=p[63];
+p[69]:=p[63]+[9,14,37,53];
+p[70]:=p[69]+[69]-[10,16,20,36,46,58,59,66,68,81,86];
+p[71]:=[10,20,21,25,36,38,41,54,58,69];
+p[72]:=[85];
+p[73]:=p[72];
+p[74]:=p[72];
+p[75]:=[23,14,61];
+p[76]:=[26,45];
+for x:=0 to 76 do p[x]:=p[x]+[15,30,42,44,50,56,60,79]
+end;
+{****************************** END OF OBJECTS *******************************}
index 5beddce30f8705555f4c65c4eab679f1afd900be..6b547147d6f20e2411d749311c778f998c24dd1a 100644 (file)
-{//-------------------------------------------------------------------------}\r
-{/*                                                                         }\r
-{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }\r
-{                                                                           }\r
-{This file is part of Supernova.  Supernova is free software; you can       }\r
-{redistribute it and/or modify it under the terms of the GNU General Public }\r
-{License as published by the Free Software Foundation; either version 3     }\r
-{of the License, or (at your option) any later version.                     }\r
-{                                                                           }\r
-{This program is distributed in the hope that it will be useful,            }\r
-{but WITHOUT ANY WARRANTY; without even the implied warranty of             }\r
-{MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }\r
-{                                                                           }\r
-{See the GNU General Public License for more details.                       }\r
-{                                                                           }\r
-{You should have received a copy of the GNU General Public License          }\r
-{along with this program; if not, write to the Free Software                }\r
-{Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.}\r
-{                                                                           }\r
-{Original Source: 1990 Scott Miller                                         }\r
-{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }\r
-{*/                                                                         }\r
-{//-------------------------------------------------------------------------}\r
-{*****************************************************************************}\r
-{*                                 WORDLIST                                  *}\r
-{*                             by Scott Miller                               *}\r
-{* These are all of the verbs and nouns (grouped in synonyms) used by AdGame.*}\r
-{*                          Copyright 1984 Pending                           *}\r
-{*****************************************************************************}\r
-\r
-{====================================START====================================}\r
-\r
-                       {VERB LIST:  GROUPS ALL SYNONYMS}\r
-overlay procedure Assign1;\r
-begin\r
-for x:= 0 to VMax do for y:= 1 to 5 do v[x,y]:=Q;\r
-v[0,1]:='attack'; v[0,2]:='kill';v[0,3]:='beat up';\r
-v[1,1]:='descrip';v[1,2]:='rd';v[1,3]:='r d';\r
-v[2,1]:='climb';v[2,2]:='climb on';v[2,3]:='climb onto';v[2,4]:='climb in';\r
-   v[2,5]:='climb over';\r
-v[3,1]:='close';v[3,2]:='shut';v[3,3]:='fasten';v[3,4]:='connect';\r
-   v[3,5]:='hook';\r
-v[4,1]:='crawl ne';v[4,2]:='duck ne';v[4,3]:='crawl northea';\r
-   v[4,4]:='climb ne';\r
-v[5,1]:='crawl sw';v[5,2]:='duck sw';v[5,3]:='crawl southwe';\r
-   v[5,4]:='climb sw';\r
-v[6,1]:='cut';v[6,2]:='slice';v[6,3]:='cut out';v[6,4]:='saw';\r
-   v[6,5]:='chop';\r
-v[7,1]:='dig';v[7,2]:='dig in';v[7,3]:='shovel';\r
-v[8,1]:='drink';v[8,2]:='drink from';v[8,3]:='drink some';\r
-   v[8,4]:='drink lot';\r
-v[9,1]:='drop';v[9,2]:='get rid';v[9,3]:='put down';\r
-v[10,1]:='eat';v[10,2]:='swallow';\r
-v[11,1]:='examine';v[11,2]:='ex';v[11,3]:='search';\r
-   v[11,4]:='read';v[11,5]:='look at';\r
-v[12,1]:='find';v[12,2]:='look for';v[12,3]:='where is';v[12,4]:='check';\r
-   v[12,5]:='chech for';\r
-v[13,1]:='repair';v[13,2]:='fix';\r
-v[14,1]:='get';v[14,2]:='take';v[14,3]:='grab';v[14,4]:='steal';\r
-   v[14,5]:='pick up';\r
-v[15,1]:='give';v[15,2]:='offer';v[15,3]:='show';v[15,4]:='pay';\r
-   v[15,5]:='give away';\r
-end;\r
-overlay procedure Assign2;\r
-begin\r
-v[16,1]:='help';v[16,2]:='pray';\r
-v[17,1]:='hit';v[17,2]:='punch';v[17,3]:='knock';v[17,4]:='break';\r
-   v[17,5]:='destroy';\r
-v[18,1]:='invento';v[18,2]:='i';\r
-v[19,1]:='jump';v[19,2]:='jump onto';v[19,3]:='jump on';v[19,4]:='jump off';\r
-   v[19,5]:='jump in';\r
-v[20,1]:='launch';v[20,2]:='sail';v[20,3]:='row';\r
-v[22,1]:='look';v[22,2]:='l';v[22,3]:='look around';v[22,4]:='ex area';\r
-v[23,1]:='look above';v[23,2]:='ex on';v[23,3]:='look on';\r
-   v[23,4]:='ex top';v[23,5]:='ex above';\r
-v[24,1]:='look in';v[24,2]:='ex in';v[24,3]:='look down';v[24,4]:='look up';\r
-   v[24,5]:='search in ';\r
-v[25,1]:='look under';v[25,2]:='ex underne';v[25,3]:='ex under';\r
-   v[25,4]:='look underne';v[25,5]:='ex below';\r
-v[21,1]:='burn';v[21,2]:='ignite';v[21,3]:='light';\r
-v[26,1]:='open';v[26,2]:='unfaste';v[26,3]:='peel';v[26,4]:='hatch';\r
-   v[26,5]:='untie';\r
-v[27,1]:='pull';v[27,2]:='flick';v[27,3]:='pull on';v[27,4]:='flip';\r
-   v[27,5]:='flip on';\r
-v[28,1]:='push';v[28,2]:='move';v[28,3]:='press';v[28,4]:='turn on';\r
-   v[28,5]:='turn off';\r
-v[29,1]:='put';v[29,2]:='pour';v[29,3]:='lay';v[29,4]:='fill';\r
-   v[29,5]:='insert';\r
-v[30,1]:='reach';v[30,2]:='reach in';v[30,3]:='feel in';\r
-v[31,1]:='say';v[31,2]:='yell';v[31,3]:='shout';v[31,4]:='compute';\r
-   v[31,5]:='think';\r
-end;\r
-overlay procedure Assign3;\r
-begin\r
-v[32,1]:='shoot';v[32,2]:='blast';v[32,3]:='fire at';v[32,4]:='fire';\r
-   v[32,5]:='shoot at';\r
-v[33,1]:='sit';v[33,2]:='sit in';v[33,3]:='get in';v[33,4]:='sit down';\r
-   v[33,5]:='sit on';\r
-v[34,1]:='sleep';v[34,2]:='lie down';v[34,3]:='sleep on';v[34,4]:='sleep in';\r
-v[35,1]:='stand';v[35,2]:='stand up';v[35,3]:='get up';v[35,4]:='stand in';\r
-v[36,1]:='throw';v[36,2]:='toss';\r
-v[37,1]:='tie';v[37,2]:='hook';v[37,3]:='wrap';\r
-v[38,1]:='touch';v[38,2]:='feel';v[38,3]:='touch in';v[38,4]:='rub';\r
-v[39,1]:='turn';v[39,2]:='rotate';v[39,3]:='set';\r
-v[40,1]:='unlock';\r
-v[41,1]:='wait';v[41,2]:='z';v[41,3]:='rest';\r
-v[42,1]:='wear';v[42,2]:='put on';\r
-v[43,1]:='north';v[43,2]:='n';v[43,3]:='fore';v[43,4]:='f';v[43,5]:='across';\r
-v[44,1]:='south';v[44,2]:='s';v[44,3]:='aft';v[44,4]:='a';\r
-v[45,1]:='east';v[45,2]:='e';v[45,3]:='starboa';v[45,4]:='st';\r
-v[46,1]:='west';v[46,2]:='w';v[46,3]:='port';v[46,4]:='p';\r
-v[47,1]:='north east';v[47,2]:='ne';v[47,3]:='northea';\r
-v[48,1]:='north west';v[48,2]:='nw';v[48,3]:='northwe';\r
-v[49,1]:='south east';v[49,2]:='se';v[49,3]:='southea';\r
-v[50,1]:='south west';v[50,2]:='sw';v[50,3]:='southwe';\r
-v[51,1]:='up';v[51,2]:='u';v[51,3]:='climb up';v[51,4]:='climb u';\r
-v[52,1]:='down';v[52,2]:='d';v[52,3]:='climb down';v[52,4]:='climb d';\r
-   v[52,5]:='lower';\r
-v[53,1]:='type';v[53,2]:='type in';\r
-v[54,1]:='quit';v[54,2]:='stop';v[54,3]:='give up';v[54,4]:='i quit';\r
-v[55,1]:='take off';v[55,2]:='remove';\r
-v[56,1]:='shake';v[56,2]:='bogie';v[56,3]:='dance';\r
-end;\r
-overlay procedure Assign4;\r
-begin\r
-v[57,1]:='enter';v[57,2]:='in';v[57,3]:='land in';v[57,4]:='land on';\r
-   v[57,5]:='land';\r
-v[58,1]:='exit';v[58,2]:='out';v[58,3]:='leave';v[58,4]:='retreat';\r
-   v[58,5]:='escape';\r
-v[59,1]:='diagnos';\r
-v[60,1]:='look behind';v[60,2]:='ex behind';v[60,3]:='examine behind';\r
-   v[60,4]:='ex beside';v[60,5]:='look beside';\r
-v[61,1]:='restart';v[61,2]:='let';v[61,3]:='fall from';v[61,4]:='drop from';\r
-   v[61,5]:='fall';\r
-v[62,1]:='score';v[62,2]:='rank';\r
-v[63,1]:='creatur';v[63,2]:='alien monster';v[63,3]:='monster';\r
-   v[63,4]:='alien creatur';\r
-v[64,1]:='save';\r
-v[65,1]:='restore';v[65,2]:='resume';\r
-\r
-                     {NOUN LIST:  GROUPS ALL OBJECTS}\r
-\r
-for x:= 0 to NMax do for y:= 1 to 5 do n[x,y]:=Q;\r
-n[0,1]:='alien';n[0,2]:='dead alien';n[0,3]:='body';n[0,4]:='alien body';\r
-n[1,1]:='all';n[1,2]:='everyth';n[1,3]:='object';n[1,4]:='objects';\r
-n[2,1]:='banana';n[2,2]:='food';\r
-n[3,1]:='bat';n[3,2]:='bats';\r
-n[4,1]:='bed';n[4,2]:='bunk';n[4,3]:='beds';n[4,4]:='bunks';\r
-n[5,1]:='blue button';n[5,2]:='blue';\r
-n[6,1]:='boat';n[6,2]:='life boat';n[6,3]:='titanic';n[6,4]:='lifeboa';\r
-   n[6,5]:='ship';\r
-end;\r
-overlay procedure Assign5;\r
-begin\r
-n[7,1]:='bottle';n[7,2]:='brown bottle';n[7,3]:='brown';\r
-n[8,1]:='black box';n[8,2]:='box';n[8,3]:='black';n[8,4]:='switch';\r
-   n[8,5]:='box switch';\r
-n[9,1]:='building';n[9,2]:='buildin';n[9,3]:='tower';n[9,4]:='towers';\r
-n[10,1]:='button';n[10,2]:='buttons';\r
-n[11,1]:='cabinet';n[11,2]:='file';n[11,3]:='blue cabinet';\r
-n[12,1]:='cages';n[12,2]:='bars';\r
-n[13,1]:='coin';n[13,2]:='quarter';n[13,3]:='25';n[13,4]:='money';\r
-n[14,1]:='containers';n[14,2]:='crate';n[14,3]:='crates';n[14,4]:='cargo';\r
-   n[14,5]:='contain';\r
-n[15,1]:='ceiling';n[15,2]:='roof';\r
-n[16,1]:='chair';n[16,2]:='time chair';n[16,3]:='time';n[16,4]:='seat';\r
-   n[16,5]:='metal chair';\r
-n[17,1]:='chasm';n[17,2]:='canyon';\r
-n[18,1]:='city';n[18,2]:='floatin city';n[18,3]:='floatin';n[18,4]:='town';\r
-n[19,1]:='clouds';n[19,2]:='cloud';\r
-n[20,1]:='computer';n[20,2]:='termina';n[20,3]:='compute';n[20,4]:='typewri';\r
-n[21,1]:='controls';n[21,2]:='machine';n[21,3]:='equipme';n[21,4]:='devices';\r
-   n[21,5]:='control';\r
-n[22,1]:='crater';n[22,2]:='pit';n[22,3]:='stove';\r
-n[23,1]:='creature';n[23,2]:='creatur';n[23,3]:='monster';\r
-   n[23,4]:='alien creatur';n[23,5]:='it';\r
-n[24,1]:='silver dial';n[24,2]:='day dial';n[24,3]:='day';n[24,4]:='silver';\r
-n[25,1]:='dial';n[25,2]:='knob';n[25,3]:='dials';n[25,4]:='knobs';\r
-n[26,1]:='door';n[26,2]:='hatch';n[26,3]:='saucer hatch';n[26,4]:='ship door';\r
-   n[26,5]:='sliding';\r
-n[27,1]:='piece of wire';n[27,2]:='wire';n[27,3]:='mangled wire';\r
-   n[27,4]:='mangled';n[27,5]:='piece wire';\r
-n[28,1]:='egg';n[28,2]:='eggs';\r
-n[29,1]:='flashlight';n[29,2]:='light';n[29,3]:='flashli';n[29,4]:='hook';\r
-   n[29,5]:='ring';\r
-end;\r
-overlay procedure Assign6;\r
-begin\r
-n[30,1]:='ground';n[30,2]:='floor';n[30,3]:='earth';n[30,4]:='deck';\r
-   n[30,5]:='bay';\r
-n[31,1]:='trees';n[31,2]:='tree';n[31,3]:='forest';\r
-n[32,1]:='piece of fur';n[32,2]:='fur';n[32,3]:='piece fur';n[32,4]:='piece';\r
-   n[32,5]:='blue fur';\r
-n[33,1]:='green button';n[33,2]:='green';\r
-n[34,1]:='gun';n[34,2]:='ray gun';n[34,3]:='gauge';n[34,4]:='orange';\r
-   n[34,5]:='laser gun';\r
-n[35,1]:='safety harness';n[35,2]:='safety';n[35,3]:='belt';\r
-   n[35,4]:='harness';n[35,5]:='strap';\r
-n[36,1]:='ice';n[36,2]:='ocean bottom';n[36,3]:='bottom';n[36,4]:='ocean';\r
-n[37,1]:='debris';n[37,2]:='trash';n[37,3]:='rubble';n[37,4]:='wood';\r
-n[38,1]:='numeric keypad';n[38,2]:='keypad';n[38,3]:='numeric';\r
-   n[38,4]:='numbers';\r
-n[39,1]:='survival kit';n[39,2]:='kit';n[39,3]:='surviva';n[39,4]:='red kit';\r
-   n[39,5]:='surviva kit';\r
-n[40,1]:='knife';n[40,2]:='blade';\r
-n[41,1]:='concrete';n[41,2]:='concrete wall';n[43,3]:='cement';n[41,4]:='pad';\r
-   n[41,5]:='landing pad';\r
-n[42,1]:='dirt';n[42,2]:='dust';n[42,3]:='desert';n[42,4]:='sand';\r
-   n[42,5]:='landing bay';\r
-n[43,1]:='cage';n[43,2]:='large';n[43,3]:='large cage';\r
-n[44,1]:='left hand';n[44,2]:='left';n[44,3]:='hand';\r
-n[45,1]:='rusty lock';n[45,2]:='lock';n[45,3]:='rusty';\r
-n[46,1]:='message';n[46,2]:='chisele';n[46,3]:='writing';n[46,4]:='marking';\r
-   n[46,5]:='chisele marking';\r
-n[47,1]:='mud';n[47,2]:='sloppy';n[47,3]:='slop';\r
-n[48,1]:='chain';n[48,2]:='thick chain';n[48,3]:='metal chain';\r
-n[49,1]:='panel';n[49,2]:='compart';\r
-n[50,1]:='path';n[50,2]:='passage';n[50,3]:='tunnel';n[50,4]:='road';\r
-   n[50,5]:='tubes';\r
-n[51,1]:='banana peel';n[51,2]:='peel';n[51,3]:='skin';\r
-n[52,1]:='glowing pill';n[52,2]:='pill';n[52,3]:='glowing';\r
-n[53,1]:='rail';n[53,2]:='railing';n[53,3]:='wooden';n[53,4]:='wooden rail';\r
-n[54,1]:='reactor';n[54,2]:='core';\r
-n[55,1]:='red button';n[55,2]:='red';n[55,3]:='lower door';n[55,4]:='mangled';\r
-   n[55,5]:='mangled door';\r
-n[56,1]:='right arm';n[56,2]:='right';n[56,3]:='arm';n[56,4]:='arms';\r
-end;\r
-overlay procedure Assign7;\r
-begin\r
-n[57,1]:='rope';n[57,2]:='thick';n[57,3]:='thick rope';\r
-n[58,1]:='screen';n[58,2]:='monitor';n[58,3]:='tv';n[58,4]:='screens';\r
-n[59,1]:='bench';n[59,2]:='chairs';n[59,3]:='seats';n[59,4]:='benches';\r
-   n[59,5]:='metalli';\r
-n[60,1]:='player';n[60,2]:='self';n[60,3]:='waist';n[60,4]:='me';\r
-   n[60,5]:='myself';\r
-n[61,1]:='shelf';n[61,2]:='shelves';\r
-n[62,1]:='reactor shield';n[62,2]:='barrier';n[62,3]:='shield';\r
-   n[62,4]:='plate';n[62,5]:='radiati shield';\r
-n[63,1]:='shiny key';n[63,2]:='shiny';n[63,3]:='key';\r
-n[64,1]:='alien saucer';n[64,2]:='alien ship';n[64,3]:='hull';\r
-   n[64,4]:='saucer';\r
-n[65,1]:='shuttle';n[65,2]:='car';n[65,3]:='vehicle';n[65,4]:='engine';\r
-n[66,1]:='sign';n[66,2]:='note';n[66,3]:='red sign';\r
-n[67,1]:='bones';n[67,2]:='bone';n[67,3]:='skeleto';n[67,4]:='animals';\r
-   n[67,5]:='remains';\r
-n[68,1]:='slot';n[68,2]:='opening';n[68,3]:='hole';n[68,4]:='key hole';\r
-   n[68,5]:='keyhole';\r
-n[69,1]:='steps';n[69,2]:='stair';n[69,3]:='stairs';n[69,4]:='ladder';\r
-   n[69,5]:='step';\r
-n[70,1]:='metal stake';n[70,2]:='stake';n[70,3]:='metal';n[70,4]:='pole';\r
-   n[70,5]:='rod';\r
-n[71,1]:='rock feature';n[71,2]:='stalagt';\r
-n[72,1]:='strange wall';n[72,2]:='strange';n[72,3]:='hexagon';\r
-   n[72,4]:='shapes';\r
-end;\r
-overlay procedure Assign8;\r
-begin\r
-n[73,1]:='water';n[73,2]:='river';n[73,3]:='stream';n[73,4]:='gusher';\r
-   n[73,5]:='lake';\r
-n[74,1]:='alien suit';n[74,2]:='suit';n[74,3]:='space suit';\r
-   n[74,4]:='uniform';\r
-n[75,1]:='table';n[75,2]:='tables';\r
-n[76,1]:='tan button';n[76,2]:='tan';\r
-n[77,1]:='tape';n[77,2]:='future';n[77,3]:='future tape';\r
-n[78,1]:='healing tube';n[78,2]:='tube';n[78,3]:='healing';\r
-   n[78,4]:='glass tube';n[78,5]:='glass';\r
-n[79,1]:='walls';n[79,2]:='wall';n[79,3]:='north wall';\r
-   n[79,4]:='east wall';n[79,5]:='west wall';\r
-n[80,1]:='waterfall';n[80,2]:='waterfa';\r
-n[81,1]:='white button';n[81,2]:='white';\r
-n[82,1]:='gold dial';n[82,2]:='year';n[82,3]:='gold';n[82,4]:='year dial';\r
-n[83,1]:='slime';n[83,2]:='jelly';\r
-n[84,1]:='vent';n[84,2]:='vents';\r
-n[85,1]:='lamp';\r
-n[86,1]:='microphone';n[86,2]:='mic';n[86,3]:='speaker';n[86,4]:='microph';\r
-n[87,1]:='bridge';n[87,2]:='wooden bridge';n[87,3]:='wooden';\r
-n[88,1]:='beams';n[88,2]:='orange beams';n[88,3]:='beam';\r
-   n[88,4]:='electri';n[88,5]:='orange';\r
-n[89,1]:='helmet';n[89,2]:='control helmet';n[89,3]:='hat';\r
-end;\r
-{====================================END======================================}\r
-\1a\r
+{//-------------------------------------------------------------------------}
+{/*                                                                         }
+{Copyright (C) 2014 Jason Self <j@jxself.org>                               }
+{                                                                           }
+{This file is free software: you may copy, redistribute and/or modify it    }
+{under the terms of the GNU Affero General Public License as published by   }
+{the Free Software Foundation, either version 3 of the License, or (at your }
+{option) any later version.                                                 }
+{                                                                           }
+{This file is distributed in the hope that it will be useful, but WITHOUT   }
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License}
+{for more details.                                                          }
+{                                                                           }
+{You should have received a copy of the GNU Affero General Public License   }
+{along with this program; if not, see https://gnu.org/licenses or write to: }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{This file incorporates work covered by the following copyright and         }
+{permission notice:                                                         }
+{                                                                           }
+{Copyright (C) 1990, 2009 - Apogee Software, Ltd.                           }
+{                                                                           }
+{This file is part of Beyond The Titanic. Beyond The Titanic is free        }
+{software; you can redistribute it and/or modify it under the terms of the  }
+{GNU General Public License as published by the Free Software Foundation;   }
+{either version 3 of the License, or (at your option) any later version.    }
+{                                                                           }
+{This program is distributed in the hope that it will be useful, but WITHOUT}
+{ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      }
+{FITNESS FOR A PARTICULAR PURPOSE.                                          }
+{                                                                           }
+{See the GNU General Public License for more details.                       }
+{                                                                           }
+{You should have received a copy of the GNU General Public License          }
+{along with this program; if not, write to:                                 }
+{  Free Software Foundation, Inc.                                           }
+{  51 Franklin Street, Fifth Floor                                          }
+{  Boston, MA 02110-1301                                                    }
+{  USA                                                                      }
+{                                                                           }
+{Original Source: 1990 Scott Miller                                         }
+{Prepared for public release: 03/19/09 - Joe Siegler, Apogee Software, Ltd. }
+{*/                                                                         }
+{//-------------------------------------------------------------------------}
+{*****************************************************************************}
+{*                                 WORDLIST                                  *}
+{*                             by Scott Miller                               *}
+{* These are all of the verbs and nouns (grouped in synonyms) used by AdGame.*}
+{*                          Copyright 1984 Pending                           *}
+{*****************************************************************************}
+
+{====================================START====================================}
+
+                       {VERB LIST:  GROUPS ALL SYNONYMS}
+procedure Assign1;
+begin
+for x:= 0 to VMax do for y:= 1 to 5 do v[x,y]:=Q;
+v[0,1]:='attack'; v[0,2]:='kill';v[0,3]:='beat up';
+v[1,1]:='descrip';v[1,2]:='rd';v[1,3]:='r d';
+v[2,1]:='climb';v[2,2]:='climb on';v[2,3]:='climb onto';v[2,4]:='climb in';
+   v[2,5]:='climb over';
+v[3,1]:='close';v[3,2]:='shut';v[3,3]:='fasten';v[3,4]:='connect';
+   v[3,5]:='hook';
+v[4,1]:='crawl ne';v[4,2]:='duck ne';v[4,3]:='crawl northea';
+   v[4,4]:='climb ne';
+v[5,1]:='crawl sw';v[5,2]:='duck sw';v[5,3]:='crawl southwe';
+   v[5,4]:='climb sw';
+v[6,1]:='cut';v[6,2]:='slice';v[6,3]:='cut out';v[6,4]:='saw';
+   v[6,5]:='chop';
+v[7,1]:='dig';v[7,2]:='dig in';v[7,3]:='shovel';
+v[8,1]:='drink';v[8,2]:='drink from';v[8,3]:='drink some';
+   v[8,4]:='drink lot';
+v[9,1]:='drop';v[9,2]:='get rid';v[9,3]:='put down';
+v[10,1]:='eat';v[10,2]:='swallow';
+v[11,1]:='examine';v[11,2]:='ex';v[11,3]:='search';
+   v[11,4]:='read';v[11,5]:='look at';
+v[12,1]:='find';v[12,2]:='look for';v[12,3]:='where is';v[12,4]:='check';
+   v[12,5]:='chech for';
+v[13,1]:='repair';v[13,2]:='fix';
+v[14,1]:='get';v[14,2]:='take';v[14,3]:='grab';v[14,4]:='steal';
+   v[14,5]:='pick up';
+v[15,1]:='give';v[15,2]:='offer';v[15,3]:='show';v[15,4]:='pay';
+   v[15,5]:='give away';
+end;
+procedure Assign2;
+begin
+v[16,1]:='help';v[16,2]:='pray';
+v[17,1]:='hit';v[17,2]:='punch';v[17,3]:='knock';v[17,4]:='break';
+   v[17,5]:='destroy';
+v[18,1]:='invento';v[18,2]:='i';
+v[19,1]:='jump';v[19,2]:='jump onto';v[19,3]:='jump on';v[19,4]:='jump off';
+   v[19,5]:='jump in';
+v[20,1]:='launch';v[20,2]:='sail';v[20,3]:='row';
+v[22,1]:='look';v[22,2]:='l';v[22,3]:='look around';v[22,4]:='ex area';
+v[23,1]:='look above';v[23,2]:='ex on';v[23,3]:='look on';
+   v[23,4]:='ex top';v[23,5]:='ex above';
+v[24,1]:='look in';v[24,2]:='ex in';v[24,3]:='look down';v[24,4]:='look up';
+   v[24,5]:='search in ';
+v[25,1]:='look under';v[25,2]:='ex underne';v[25,3]:='ex under';
+   v[25,4]:='look underne';v[25,5]:='ex below';
+v[21,1]:='burn';v[21,2]:='ignite';v[21,3]:='light';
+v[26,1]:='open';v[26,2]:='unfaste';v[26,3]:='peel';v[26,4]:='hatch';
+   v[26,5]:='untie';
+v[27,1]:='pull';v[27,2]:='flick';v[27,3]:='pull on';v[27,4]:='flip';
+   v[27,5]:='flip on';
+v[28,1]:='push';v[28,2]:='move';v[28,3]:='press';v[28,4]:='turn on';
+   v[28,5]:='turn off';
+v[29,1]:='put';v[29,2]:='pour';v[29,3]:='lay';v[29,4]:='fill';
+   v[29,5]:='insert';
+v[30,1]:='reach';v[30,2]:='reach in';v[30,3]:='feel in';
+v[31,1]:='say';v[31,2]:='yell';v[31,3]:='shout';v[31,4]:='compute';
+   v[31,5]:='think';
+end;
+  procedure Assign3;
+begin
+v[32,1]:='shoot';v[32,2]:='blast';v[32,3]:='fire at';v[32,4]:='fire';
+   v[32,5]:='shoot at';
+v[33,1]:='sit';v[33,2]:='sit in';v[33,3]:='get in';v[33,4]:='sit down';
+   v[33,5]:='sit on';
+v[34,1]:='sleep';v[34,2]:='lie down';v[34,3]:='sleep on';v[34,4]:='sleep in';
+v[35,1]:='stand';v[35,2]:='stand up';v[35,3]:='get up';v[35,4]:='stand in';
+v[36,1]:='throw';v[36,2]:='toss';
+v[37,1]:='tie';v[37,2]:='hook';v[37,3]:='wrap';
+v[38,1]:='touch';v[38,2]:='feel';v[38,3]:='touch in';v[38,4]:='rub';
+v[39,1]:='turn';v[39,2]:='rotate';v[39,3]:='set';
+v[40,1]:='unlock';
+v[41,1]:='wait';v[41,2]:='z';v[41,3]:='rest';
+v[42,1]:='wear';v[42,2]:='put on';
+v[43,1]:='north';v[43,2]:='n';v[43,3]:='fore';v[43,4]:='f';v[43,5]:='across';
+v[44,1]:='south';v[44,2]:='s';v[44,3]:='aft';v[44,4]:='a';
+v[45,1]:='east';v[45,2]:='e';v[45,3]:='starboa';v[45,4]:='st';
+v[46,1]:='west';v[46,2]:='w';v[46,3]:='port';v[46,4]:='p';
+v[47,1]:='north east';v[47,2]:='ne';v[47,3]:='northea';
+v[48,1]:='north west';v[48,2]:='nw';v[48,3]:='northwe';
+v[49,1]:='south east';v[49,2]:='se';v[49,3]:='southea';
+v[50,1]:='south west';v[50,2]:='sw';v[50,3]:='southwe';
+v[51,1]:='up';v[51,2]:='u';v[51,3]:='climb up';v[51,4]:='climb u';
+v[52,1]:='down';v[52,2]:='d';v[52,3]:='climb down';v[52,4]:='climb d';
+   v[52,5]:='lower';
+v[53,1]:='type';v[53,2]:='type in';
+v[54,1]:='quit';v[54,2]:='stop';v[54,3]:='give up';v[54,4]:='i quit';
+v[55,1]:='take off';v[55,2]:='remove';
+v[56,1]:='shake';v[56,2]:='bogie';v[56,3]:='dance';
+end;
+  procedure Assign4;
+begin
+v[57,1]:='enter';v[57,2]:='in';v[57,3]:='land in';v[57,4]:='land on';
+   v[57,5]:='land';
+v[58,1]:='exit';v[58,2]:='out';v[58,3]:='leave';v[58,4]:='retreat';
+   v[58,5]:='escape';
+v[59,1]:='diagnos';
+v[60,1]:='look behind';v[60,2]:='ex behind';v[60,3]:='examine behind';
+   v[60,4]:='ex beside';v[60,5]:='look beside';
+v[61,1]:='restart';v[61,2]:='let';v[61,3]:='fall from';v[61,4]:='drop from';
+   v[61,5]:='fall';
+v[62,1]:='score';v[62,2]:='rank';
+v[63,1]:='creatur';v[63,2]:='alien monster';v[63,3]:='monster';
+   v[63,4]:='alien creatur';
+v[64,1]:='save';
+v[65,1]:='restore';v[65,2]:='resume';
+
+                     {NOUN LIST:  GROUPS ALL OBJECTS}
+
+for x:= 0 to NMax do for y:= 1 to 5 do n[x,y]:=Q;
+n[0,1]:='alien';n[0,2]:='dead alien';n[0,3]:='body';n[0,4]:='alien body';
+n[1,1]:='all';n[1,2]:='everyth';n[1,3]:='object';n[1,4]:='objects';
+n[2,1]:='banana';n[2,2]:='food';
+n[3,1]:='bat';n[3,2]:='bats';
+n[4,1]:='bed';n[4,2]:='bunk';n[4,3]:='beds';n[4,4]:='bunks';
+n[5,1]:='blue button';n[5,2]:='blue';
+n[6,1]:='boat';n[6,2]:='life boat';n[6,3]:='titanic';n[6,4]:='lifeboa';
+   n[6,5]:='ship';
+end;
+  procedure Assign5;
+begin
+n[7,1]:='bottle';n[7,2]:='brown bottle';n[7,3]:='brown';
+n[8,1]:='black box';n[8,2]:='box';n[8,3]:='black';n[8,4]:='switch';
+   n[8,5]:='box switch';
+n[9,1]:='building';n[9,2]:='buildin';n[9,3]:='tower';n[9,4]:='towers';
+n[10,1]:='button';n[10,2]:='buttons';
+n[11,1]:='cabinet';n[11,2]:='file';n[11,3]:='blue cabinet';
+n[12,1]:='cages';n[12,2]:='bars';
+n[13,1]:='coin';n[13,2]:='quarter';n[13,3]:='25';n[13,4]:='money';
+n[14,1]:='containers';n[14,2]:='crate';n[14,3]:='crates';n[14,4]:='cargo';
+   n[14,5]:='contain';
+n[15,1]:='ceiling';n[15,2]:='roof';
+n[16,1]:='chair';n[16,2]:='time chair';n[16,3]:='time';n[16,4]:='seat';
+   n[16,5]:='metal chair';
+n[17,1]:='chasm';n[17,2]:='canyon';
+n[18,1]:='city';n[18,2]:='floatin city';n[18,3]:='floatin';n[18,4]:='town';
+n[19,1]:='clouds';n[19,2]:='cloud';
+n[20,1]:='computer';n[20,2]:='termina';n[20,3]:='compute';n[20,4]:='typewri';
+n[21,1]:='controls';n[21,2]:='machine';n[21,3]:='equipme';n[21,4]:='devices';
+   n[21,5]:='control';
+n[22,1]:='crater';n[22,2]:='pit';n[22,3]:='stove';
+n[23,1]:='creature';n[23,2]:='creatur';n[23,3]:='monster';
+   n[23,4]:='alien creatur';n[23,5]:='it';
+n[24,1]:='silver dial';n[24,2]:='day dial';n[24,3]:='day';n[24,4]:='silver';
+n[25,1]:='dial';n[25,2]:='knob';n[25,3]:='dials';n[25,4]:='knobs';
+n[26,1]:='door';n[26,2]:='hatch';n[26,3]:='saucer hatch';n[26,4]:='ship door';
+   n[26,5]:='sliding';
+n[27,1]:='piece of wire';n[27,2]:='wire';n[27,3]:='mangled wire';
+   n[27,4]:='mangled';n[27,5]:='piece wire';
+n[28,1]:='egg';n[28,2]:='eggs';
+n[29,1]:='flashlight';n[29,2]:='light';n[29,3]:='flashli';n[29,4]:='hook';
+   n[29,5]:='ring';
+end;
+  procedure Assign6;
+begin
+n[30,1]:='ground';n[30,2]:='floor';n[30,3]:='earth';n[30,4]:='deck';
+   n[30,5]:='bay';
+n[31,1]:='trees';n[31,2]:='tree';n[31,3]:='forest';
+n[32,1]:='piece of fur';n[32,2]:='fur';n[32,3]:='piece fur';n[32,4]:='piece';
+   n[32,5]:='blue fur';
+n[33,1]:='green button';n[33,2]:='green';
+n[34,1]:='gun';n[34,2]:='ray gun';n[34,3]:='gauge';n[34,4]:='orange';
+   n[34,5]:='laser gun';
+n[35,1]:='safety harness';n[35,2]:='safety';n[35,3]:='belt';
+   n[35,4]:='harness';n[35,5]:='strap';
+n[36,1]:='ice';n[36,2]:='ocean bottom';n[36,3]:='bottom';n[36,4]:='ocean';
+n[37,1]:='debris';n[37,2]:='trash';n[37,3]:='rubble';n[37,4]:='wood';
+n[38,1]:='numeric keypad';n[38,2]:='keypad';n[38,3]:='numeric';
+   n[38,4]:='numbers';
+n[39,1]:='survival kit';n[39,2]:='kit';n[39,3]:='surviva';n[39,4]:='red kit';
+   n[39,5]:='surviva kit';
+n[40,1]:='knife';n[40,2]:='blade';
+n[41,1]:='concrete';n[41,2]:='concrete wall';n[43,3]:='cement';n[41,4]:='pad';
+   n[41,5]:='landing pad';
+n[42,1]:='dirt';n[42,2]:='dust';n[42,3]:='desert';n[42,4]:='sand';
+   n[42,5]:='landing bay';
+n[43,1]:='cage';n[43,2]:='large';n[43,3]:='large cage';
+n[44,1]:='left hand';n[44,2]:='left';n[44,3]:='hand';
+n[45,1]:='rusty lock';n[45,2]:='lock';n[45,3]:='rusty';
+n[46,1]:='message';n[46,2]:='chisele';n[46,3]:='writing';n[46,4]:='marking';
+   n[46,5]:='chisele marking';
+n[47,1]:='mud';n[47,2]:='sloppy';n[47,3]:='slop';
+n[48,1]:='chain';n[48,2]:='thick chain';n[48,3]:='metal chain';
+n[49,1]:='panel';n[49,2]:='compart';
+n[50,1]:='path';n[50,2]:='passage';n[50,3]:='tunnel';n[50,4]:='road';
+   n[50,5]:='tubes';
+n[51,1]:='banana peel';n[51,2]:='peel';n[51,3]:='skin';
+n[52,1]:='glowing pill';n[52,2]:='pill';n[52,3]:='glowing';
+n[53,1]:='rail';n[53,2]:='railing';n[53,3]:='wooden';n[53,4]:='wooden rail';
+n[54,1]:='reactor';n[54,2]:='core';
+n[55,1]:='red button';n[55,2]:='red';n[55,3]:='lower door';n[55,4]:='mangled';
+   n[55,5]:='mangled door';
+n[56,1]:='right arm';n[56,2]:='right';n[56,3]:='arm';n[56,4]:='arms';
+end;
+  procedure Assign7;
+begin
+n[57,1]:='rope';n[57,2]:='thick';n[57,3]:='thick rope';
+n[58,1]:='screen';n[58,2]:='monitor';n[58,3]:='tv';n[58,4]:='screens';
+n[59,1]:='bench';n[59,2]:='chairs';n[59,3]:='seats';n[59,4]:='benches';
+   n[59,5]:='metalli';
+n[60,1]:='player';n[60,2]:='self';n[60,3]:='waist';n[60,4]:='me';
+   n[60,5]:='myself';
+n[61,1]:='shelf';n[61,2]:='shelves';
+n[62,1]:='reactor shield';n[62,2]:='barrier';n[62,3]:='shield';
+   n[62,4]:='plate';n[62,5]:='radiati shield';
+n[63,1]:='shiny key';n[63,2]:='shiny';n[63,3]:='key';
+n[64,1]:='alien saucer';n[64,2]:='alien ship';n[64,3]:='hull';
+   n[64,4]:='saucer';
+n[65,1]:='shuttle';n[65,2]:='car';n[65,3]:='vehicle';n[65,4]:='engine';
+n[66,1]:='sign';n[66,2]:='note';n[66,3]:='red sign';
+n[67,1]:='bones';n[67,2]:='bone';n[67,3]:='skeleto';n[67,4]:='animals';
+   n[67,5]:='remains';
+n[68,1]:='slot';n[68,2]:='opening';n[68,3]:='hole';n[68,4]:='key hole';
+   n[68,5]:='keyhole';
+n[69,1]:='steps';n[69,2]:='stair';n[69,3]:='stairs';n[69,4]:='ladder';
+   n[69,5]:='step';
+n[70,1]:='metal stake';n[70,2]:='stake';n[70,3]:='metal';n[70,4]:='pole';
+   n[70,5]:='rod';
+n[71,1]:='rock feature';n[71,2]:='stalagt';
+n[72,1]:='strange wall';n[72,2]:='strange';n[72,3]:='hexagon';
+   n[72,4]:='shapes';
+end;
+  procedure Assign8;
+begin
+n[73,1]:='water';n[73,2]:='river';n[73,3]:='stream';n[73,4]:='gusher';
+   n[73,5]:='lake';
+n[74,1]:='alien suit';n[74,2]:='suit';n[74,3]:='space suit';
+   n[74,4]:='uniform';
+n[75,1]:='table';n[75,2]:='tables';
+n[76,1]:='tan button';n[76,2]:='tan';
+n[77,1]:='tape';n[77,2]:='future';n[77,3]:='future tape';
+n[78,1]:='healing tube';n[78,2]:='tube';n[78,3]:='healing';
+   n[78,4]:='glass tube';n[78,5]:='glass';
+n[79,1]:='walls';n[79,2]:='wall';n[79,3]:='north wall';
+   n[79,4]:='east wall';n[79,5]:='west wall';
+n[80,1]:='waterfall';n[80,2]:='waterfa';
+n[81,1]:='white button';n[81,2]:='white';
+n[82,1]:='gold dial';n[82,2]:='year';n[82,3]:='gold';n[82,4]:='year dial';
+n[83,1]:='slime';n[83,2]:='jelly';
+n[84,1]:='vent';n[84,2]:='vents';
+n[85,1]:='lamp';
+n[86,1]:='microphone';n[86,2]:='mic';n[86,3]:='speaker';n[86,4]:='microph';
+n[87,1]:='bridge';n[87,2]:='wooden bridge';n[87,3]:='wooden';
+n[88,1]:='beams';n[88,2]:='orange beams';n[88,3]:='beam';
+   n[88,4]:='electri';n[88,5]:='orange';
+n[89,1]:='helmet';n[89,2]:='control helmet';n[89,3]:='hat';
+end;
+{====================================END======================================}