diff --git a/LICENSE b/LICENSE
index e4eebd3..f288702 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,674 @@
-MIT License
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
-Copyright (c) 2024 Jason Bou-Samra
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+ Preamble
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-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,
+the GNU General Public License is 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. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ 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.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ 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 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. Use with the GNU Affero General Public License.
+
+ 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 Affero 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 special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 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 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 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.
+
+
+ Copyright (C)
+
+ This program 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, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ 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 GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1006ce2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,29 @@
+# Fun Columns SDL
+
+## Description:
+The aim of this project is to implement the original Free Tools Association (FTA) version of their Fun Columns game in SDL
+
+Please Note: This game is not in a playable state yet, you can compile and run though.
+
+## Change-log:
+
+* 04/05/2024 - Foundation code
+
+## Compilation
+type the following commands:
+
+`make`
+
+## Screenshot
+
+
+## Misc.
+* Run from command line or GUI
+* To move game window using GNOME (Press Super [win] key) and right click/hold mouse) anywhere in game window.
+
+## Todo
+* Still a Work In Progress
+
+## Author(s)
+* IIGS Version: FTA (1990/91)
+* SDL Version: Jason Bou-Samra (2024)
diff --git a/doc/HPUX/Untitled 1.odt b/doc/HPUX/Untitled 1.odt
new file mode 100644
index 0000000..9906b48
Binary files /dev/null and b/doc/HPUX/Untitled 1.odt differ
diff --git a/doc/HPUX/columns pg 1.png b/doc/HPUX/columns pg 1.png
new file mode 100644
index 0000000..5c9c205
Binary files /dev/null and b/doc/HPUX/columns pg 1.png differ
diff --git a/doc/HPUX/columns pg 2.png b/doc/HPUX/columns pg 2.png
new file mode 100644
index 0000000..5f03203
Binary files /dev/null and b/doc/HPUX/columns pg 2.png differ
diff --git a/doc/HPUX/columns.man b/doc/HPUX/columns.man
new file mode 100644
index 0000000..f831c31
--- /dev/null
+++ b/doc/HPUX/columns.man
@@ -0,0 +1,87 @@
+.TH COLUMNS 6 "HP-UX 9.0 August 1992" "Hewlett-Packard Company" "X Version (Release 5 UNSUPPORTED)"
+
+.SH NAME
+columns – X11 strategy game
+
+.SH SYNOPSIS
+columns
+
+.SH DESCRIPTION
+\fBNOTE:\fP This client is not supported by HP in HP-UX Release 9.0. It is included in the release, but it is now installed in the directory /usr/contrib/bin/X11. Your $PATH environment variable should contain this directory path in order to run this client. See the release notes for more information.
+
+columns is a single-player-game in which one attempts to manipulate multi-colored tiles in order to form sequences of three boxes of the same color--aranged horizontally, vertically, or diagonally.
+
+The \fIcolumns\fP game window is a 6 x 18 array of squares. The playing tiles drop from the top of the screen, and a comprised of 3 colored boxes arranged in a column. The color of each box in a tile is assigned at random from a pool of--at most--six possible colors: red, green, blue, yellow, magenta, and cyan.
+
+Tiles drop one at a time, and may be manipulated in one of four different ways by 1) moving the tile to the left one position (the \fIleft\fP command), 2) moving the tile to the right one position (\fIright\fP), 3) cycling the colors of the boxes in the tile such that each color moves down one box, with the top box in the tile assuming the color of the bottom box (\fIcycle\fP), and 4) dropping the tile straight down into place (\fIdrop\fP).
+
+The game ends when a tile is placed and--after counting all sequences and removing the boxes involved--a box remains touching the ceiling line near the top of the game window.
+
+.SH "LEVELS OF DIFFICULTY"
+As mentioned above, the pool of colors from which the boxes in a given tile are assigned is--at most--six. In practise, however, there are twelve different difficulty levels for which the actual number of colors in the pool and the constraints upon them are unique.
+
+At the lowest level, only the first three colors from the pool are used and there are no constraints on how the boxes in a tile are assigned.
+
+At the highest level, the pool includes all six possible colors, and the boxes in the tile are constrained such that none of them may be of the same color.
+
+The complete table depicting the size of the pool and the constraints on the boxes in a tile at each level is as follows:
+\fC
+.vs -3
+
+ # OF COLORS MAX # OF BOXES
+ LEVEL IN THE POOL OF ANY ONE COLOR
+ ----- ----------- ----------------
+ 1 3 3
+ 2 " 2
+ 3 " 1
+ 4 4 3
+ 5 " 2
+ 6 " 1
+ 7 5 3
+ 8 " 2
+ 9 " 1
+ 10 6 3
+ 11 " 2
+ 12 " 1
+.vs
+\fP
+
+The difficulty level begins at on and increases by one every tenth tile.
+
+.SH SCORING
+The primary object of the game is to arrange the tiles on the game window such that boxes of the same color tile line up in three-box sequences. A sequence may be formed horizontally, vertically, or diagonally.
+
+Any time a three-box sequence is produced, the three boxes forming the sequence are removed from the game window, and all boxes located above those removed drop to occupy the vacated squares of the game window. This adds an interesting twist to the game in that new three-box sequences may be produced in a “chain-reaction” fashion as a result off boxes dropping to fill in squares vacated by other boxes. For the purpose of explanation, each phase of sequence-forming is referred to as a “chain”.
+
+Each sequence formed scores 10 points if formed during the first chain, 20 points if formed during the second “chain”, and so on, with the points-per-sequence increasing by 10 points with each new chain.
+
+Points are also awarded based on the current difficulty level, and on how quickly a tile is dropped down into place by the player.
+
+The points awarded for placing a tile are equivalent to the level number. Thus, six points are awarded for each tile successfully placed when at level six.
+
+The points awarded for placing a tile quickly are equivalent to the number of rows that the tile drops when the DROP keyboard command is issued. Thus, 18 points are awarded if the tile is dropped to the bottom of the game window at the moment it first appears at the top of the game window.
+
+.SH COMMANDS
+.TP
+\fB4\fP, \fB5\fP, \fB6\fP, \fB2\fP
+These are the \fIleft\fP, \fIcycle\fP, \fIright\fP, and \fIdrop\fP commands as mapped onto the numeric keypad.
+.TP
+\fBJ\fP, \fBK\fP, \fBL\fP, \fB\fP
+These are the \fIleft\fP, \fIcycle\fP, \fIright\fP, and \fIdrop\fP keyboard commands for a right-handed player.
+.TP
+\fBS\fP, \fBD\fP, \fBF\fP, \fB\fP
+These are the \fIleft\fP, \fIcycle\fP, \fIright\fP, and \fIdrop\fP keyboard commands for a left-handed player.
+.TP
+\fBI\fP
+Iconify the game window. ("Yipes! The boss!")
+.TP
+\fBQ\fP
+Quit the current game and exit.
+.TP
+\fBR\fP
+Quit the current and start over.
+.PP
+All other keys cause the game to pause. Play is resumed by pressing any key besides Q or R.
+
+.SH AUTHOR
+Jay Geertsen, Hewlett-Packard Company
diff --git a/doc/HPUX/columns.pdf b/doc/HPUX/columns.pdf
new file mode 100644
index 0000000..5e6ab87
Binary files /dev/null and b/doc/HPUX/columns.pdf differ
diff --git a/doc/ascii-table-1.1.png b/doc/ascii-table-1.1.png
new file mode 100644
index 0000000..c627101
Binary files /dev/null and b/doc/ascii-table-1.1.png differ
diff --git a/fta/BEYOND.S b/fta/BEYOND.S
new file mode 100644
index 0000000..8aa9541
--- /dev/null
+++ b/fta/BEYOND.S
@@ -0,0 +1,4516 @@
+REL
+* Fun Columns
+* par O.Goguel et FTA
+
+* ToolBox Mag No 4
+* Copyright 1990/1991 FTA
+* Copyright 1990/1991 Toolbox
+* 6 Rue H. Barbusse - 95100 Argenteuil - France
+
+* Création : 22 Décembre 1990
+* Dernière MAJ : 03 Février 1991
+
+* Assemblage sous Merlin 16+ uniquement
+
+* !vP8 !vP16!
+* ! 1 ! x ! ...... Version SYS Prodos8 (OA-A)
+* ! 0 ! 1 ! ...... Version S16 Gs/Os (OA-6)
+* ! 0 ! 0 ! ...... Version CDA Gs/Os (OA-6)
+
+* Language : 0=Francais, 1=English
+
+vP8 = 0
+vP16 = 1
+Language = 0
+
+ LST OFF
+
+* Le source est peu commenté car la gestion d'un jeu de
+* ce genre est relativement simple et ne pose aucun probleme
+* de programmation...
+
+* Seul quelques _bidouilles_ en GS/OS et PRODOS sont expliqués...
+* sinon, juste les noms des grandes parties sont données...
+
+
+*------------------------------------------------- Macros
+
+TXT MAC
+ DO Language
+ ASC ]1
+ ELSE
+ ASC ]2
+ FIN
+ EOM
+
+INK MAC
+ INC ]1
+ BNE Here
+ INC ]1+1
+Here EOM
+
+
+_Err MAC
+ BCC NoErr
+ BRL PgmDeath
+NoErr EOM
+
+STL MAC
+ DO vP8
+ STA ]1
+ ELSE
+ STAL ]1
+ FIN
+ EOM
+
+LDL MAC
+ DO vP8
+ LDA ]1
+ ELSE
+ LDAL ]1
+ FIN
+ EOM
+
+BEQL MAC
+ BNE Here
+ BRL ]1
+Here EOM
+
+BNEL MAC
+ BEQ Here
+ BRL ]1
+Here EOM
+
+*------------------------------------------------- Constantes & Adresses
+
+Screen = $E12000
+ZPage = $1F00
+
+NbLgn = 18 ; Nb de block par Ligne
+NbCol = 8 ; Nb de Block par Colonne
+HautCase = 11 ; Taille Blocks
+LargCase = 12 ; " "
+Center = $38+$A0
+
+
+
+*------------------------------------------------- Entetes
+
+
+* Entete Prodos8
+*----------------
+ DO vP8
+ ORG $2000
+BeginningOfFile = *
+ TYP $FF ; Fichier SYS
+ XC
+ XC
+ ELSE
+BeginningOfFile = *
+
+* Entete P16
+*-----------
+* REL
+ DO vP16
+ DSK Beyond.SYS16.L
+ ELSE
+
+* Entete CDA
+*-----------
+ TYP CDA
+ DSK Beyond.CDA.L
+ DO Language
+ STR 'Fun Columns by FTA'
+ ELSE
+ STR 'Fun Columns par FTA'
+ FIN
+ ADRL START
+ ADRL ENDCDA
+ FIN
+ FIN
+
+*------------------------------------------------- Page Zero
+
+ DUM $00
+CaseList DS NbCol*2
+Table DS NbLgn*NbCol
+Pnt DS 4
+Lgn DS 2
+Col DS 2
+ZNbLgn DS 2
+ZNbCol DS 2
+Barre DS 3
+BarreCol DS 2
+BarreLgn DS 2
+BarrePos DS 2
+AleaGen DS 2
+LevelSpeed DS 2
+Compteur DS 2
+Col0 DS 2
+Lgn0 DS 2
+Flag DS 2
+CaseTest DS 2
+Buf DS 2
+Msk DS 2
+Msk0 DS 2
+Score DS 4
+Total DS 2
+Level DS 2
+Level0 DS 2
+Inv DS 2
+CycleCount DS 2
+SaveScreen DS 4
+FlagHi DS 2
+Counter DS 2
+PntPath DS 4
+PtrMsk DS 2
+Step DS 2
+PtrPattern DS 2
+PtrPatPos DS 2
+PtrPtrMsk DS 2
+BarreCol0 DS 2
+PtrShp DS 2
+BarreNext DS 3
+BlackMode DS 2
+AlreadyNext DS 2
+ColorDeg DS 2
+XColor DS 2
+PatchActif DS 2
+NextMode DS 2
+ DEND
+
+*------------------------------------------------- Debut
+
+START DO vP8
+ ELSE
+ DO vP16
+ ELSE
+ PHP ; Initialisation
+ PHD ; version CDA uniquement
+ PHB
+ SEI
+ FIN
+ FIN
+
+ PHK
+ PLB
+
+* Effacement écran text
+
+ SEP $30
+]lp LDL $E1C02E
+ CMP #$F0
+ BNE ]lp
+
+ LDX #0
+ LDA #" "
+]lp STL $000400,X
+ STL $000480,X
+ STL $000500,X
+ STL $000580,X
+ STL $000600,X
+ STL $000680,X
+ STL $000700,X
+ STL $000780,X
+ STAL $010400,X
+ STAL $010480,X
+ STAL $010500,X
+ STAL $010580,X
+ STAL $010600,X
+ STAL $010680,X
+ STAL $010700,X
+ STAL $010780,X
+
+ INX
+ CPX #$78
+ BNE ]lp
+
+* Sauvegarde et mise @ jour du contexte video
+
+ LDL $E1C036
+ ORA #$80
+ STL $E1C036
+ LDL $E1C029
+ STA Save29+1
+ ORA #$40
+ STL $E1C029
+ LDL $E1C035
+ STA Save35+1
+ LDL $E1C034
+ STA Save34+1
+ LDA #$1E
+ STL $E1C035
+
+ DO vP8
+
+*------------------------------------------------- Initialisation P8
+
+* Recherche du pathname complet sous lequel
+* a été lancé BEYOND depuis P8...
+
+* Il n'existe en théorie aucun moyen de savoir le nom de
+* l'application en cours sous P8 (contrairement a GS/OS)
+* mais on peut facilement _en bidouillant un peu_ le
+* recuperer...
+
+* Cette routine utilise des points d'entrées Prodos non
+* garanti par Apple, mais marche avec toutes les versions
+* de P8 existantes...
+
+
+* Tout d'abord on prend le prefix courant...
+
+ JSR $BF00
+ DFB $C7 ; GetPrefix
+ DA PrefixParm
+
+* Puis, on va trouver en $D700 banc 0 de la carte langage
+* une suite de nom de fichiers au format Prodos qui constitue le pathname
+* que l'on cherche... Il suffit donc de les ajouter les uns a la suite des
+* autres au prefix initial (s'il existe)
+
+ LDA $C068
+ PHA
+ LDA $C08B
+ LDA $C08B
+
+ LDA PathName
+ BNE AlreadyPath
+
+ LDA #'/'
+ STA PathName+1
+ LDA #1
+AlreadyPath INC
+ STA $02
+ TAX
+ STZ $00
+ LDA #$D7
+ STA $01
+]lp2 LDA ($00)
+ BEQ EndPath
+ TAY
+]lp INK $00
+ LDA ($00)
+ STA PathName,X
+ INX
+ DEY
+ BNE ]lp
+ INK $00
+ LDA ($00)
+ BEQ EndPath
+ LDA #'/'
+ STA PathName,X
+ INX
+ BRA ]lp2
+
+EndPath DEX
+ STX PathName
+
+* Seule petite difficulté : les noms que l'on vient de trouver contenaient
+* peut-etre une partie du prefix courant... Si c'est le cas, il faut
+* épurer le pathname que l'on vient de creer...
+
+ LDX $02
+ CPX #2
+ BEQ NoDoublePath
+
+ LDY #2
+]lp LDA PathName,Y
+ CMP PathName,X
+ BNE NoDoublePath
+ INX
+ INY
+ CPY $02
+ BNE ]lp
+
+ LDY #2
+ LDX $02
+]lp LDA PathName,X
+ STA PathName,Y
+ CPX PathName
+ BEQ NewLgth
+ INX
+ INY
+ BRA ]lp
+NewLgth LDA PathName
+ SEC
+ SBC $02
+ INC
+ INC
+ STA PathName
+
+NoDoublePath PLA ; On deconnecte
+ STA $C068
+; la carte langage
+
+* On a donc finalement @ l'adresse Pathname le nom complet de l'application
+* P8 en cours...
+
+ CLC
+ XCE
+ REP $30
+ LDA #ZPage ; Page zero fixe
+ TCD ; pour P8
+ LDX #$100-2
+]lp STZ $00,X
+ DEX
+ DEX
+ BPL ]lp
+
+ ELSE
+
+*------------------------------------------------- Initialisation GS/OS et CDA
+
+ CLC
+ XCE
+ REP $30
+ PEA $0000
+ LDX #$0202 ; MMStartup
+ JSL $E10000
+ _Err
+ PLA
+ STA MasterId
+ ORA #$0100
+ STA UserId ; Recuperation de l'Id
+; de l'application
+
+ PEA $0000
+ PEA $0000
+ PEA $0000
+ PEA $0100
+ LDA UserId
+ PHA
+ PEA $C001
+ PEA $0000
+ PEA $0000
+ LDX #$0902 ; New Handle
+ JSL $E10000
+ _Err
+ PLA
+ PLA
+ TSC
+ SEC
+ SBC #4
+ TCS
+ INC
+ TCD
+ LDA [$00]
+ TAX
+ TSC
+ CLC
+ ADC #4
+ TCS
+ TXA
+ TCD ; Recuperation d'une
+; page zero grace a NewHandle
+
+ LDX #$100-2
+]lp STZ $00,X
+ DEX
+ DEX
+ BPL ]lp
+
+
+* Attention !!!
+* -------------
+
+* Dans toute la suite du programme, on va _comme d'habitude_ tout
+* gérer par nous meme...(affichage, erreurs fichiers...)
+
+* Malheureusement, on va etre légerement géné par GS/OS qui a la
+* possibilité d'afficher des fenetres de dialogues (textes ou graphiques)
+* pour nous avertir l'apparition d'erreurs eventuelles...
+
+* Theoriquement, l'appel SetSysPref permet de dire a GS/OS de ne pas
+* s'occuper de la gestion des erreurs...
+
+ JSL $E100A8
+ DA $200F ; GetSysPref
+ ADRL SysDefaultParms
+
+ JSL $E100A8
+ DA $200C ; SetSysPref
+ ADRL SysParms
+
+* Malheureusement, dans certains cas, GS/OS va -malgré les préférences
+* demandées- afficher certaines fenetres d'erreurs ce qui va etre fatal
+* @ notre application et au systeme qui ne sont pas prévus pour cohabiter
+* hors des limites qui ont été définies par votre serviteur...
+
+* On va donc patcher GS/OS, puisque l'on ne recule devant rien, et
+* qu'aucun appel homologué ne permet de le faire...
+* On ne va tout de meme pas se laisser dominer par un systeme d'exploitation
+* quelconque...
+
+* Pour cela, j'ai "examiné" une partie de GS/OS pour remonter jusqu'@
+* la routine qui m'interesse et qui se trouve point{ par un vecteur _dont
+* son adresse, bien que non déclarée me parait inamovible..._ en $01FC98
+
+* Si on suit ce qui est pointé par ce vecteur, on trouve un bout de routine
+* qui commence par :
+*
+* LSR
+* BCS AfficherFenetre
+* LDAL $00B9F6 ; Test des préférences
+* BMI AfficherFenetre ; (Bit15=Affichage)
+* ...
+* RTL
+* Aff_Fenetre ...
+
+* Et on voit donc bien le BCS qui peut forcer l'affichage d'une fenetre
+* malgré l'état du flag Préference...
+
+* On va donc détourner le vecteur en $01FC98 vers une routine qui remet
+* l'accumulateur @ 00 pour que le BCS ne soit jamais pris, et ainsi
+* on n'aura jamais de fenetres indésirable @ l'écran...
+
+* A noter que l'on envelera notre patch au moment de quitter, bien entendu...
+* et que notre application gere quand meme les erreurs meme si GS/OS n'affiche
+* pas de message... (en particulier, le message Inserez le disk XXX)
+
+
+ SEP $20
+ LDAL $E1C068
+ PHA
+ LDAL $E1C08B
+ LDAL $E1C08B
+
+ REP $30
+
+ LDAL $01FC98 ; On verifie que c'est
+ AND #$00FF ; bien un vecteur...
+ CMP #$5C
+ BNE NoPatch
+
+ LDAL $01FC99 ; Sauvegarde de
+ STA SaveVect+1 ; la valeur du vecteur
+ LDAL $01FC9A
+ STA SaveVect+2
+
+ LDA NewVect+1 ; et detournement
+ STAL $01FC99 ; vers notre routine
+ LDA NewVect+2
+ STAL $01FC9A
+
+NoPatch SEP $20
+ PLA
+ STAL $E1C068
+ REP $30
+
+ BRA Continue_Init
+
+*-------------------------------------------------
+
+SysDefaultParms DA 1 ; Sauvegardes des
+ DA 0 ; preferences
+
+SysParms DA 1
+ DA 0 ; don't draw dialog box
+
+
+NewVect JML NewFC98 ; nouvelle valeur FC98
+
+NewFC98 LDA #0
+SaveVect JML $000000 ; Ancienne valeur FC98
+
+
+*------------------------------------------------- Initialisation CDA
+
+Continue_Init DO vP16
+ ELSE
+
+* Demande de 32ko pour sauvegarder la page graphique en cours...
+
+ PHA
+ PHA
+ PEA $0
+ PEA $8000 ; 32Ko
+ LDA UserId
+ PHA
+ PEA $C000
+ PEA $0
+ PEA $0
+ LDX #$0902 ; NewHandle
+ JSL $E10000
+ _Err
+ PLA
+ STA SaveScreen
+ PLA
+ STA SaveScreen+2
+
+ LDY #2
+ LDA [SaveScreen],Y
+ TAX
+ LDA [SaveScreen]
+ STA SaveScreen
+ STX SaveScreen+2
+
+* Copie de la page graphique actuelle dans le buffer récupéré...
+
+ LDX #0
+]lp TXY
+ LDAL $E12000,X
+ STA [SaveScreen],Y
+ INX
+ INX
+ BPL ]lp
+
+ FIN
+ FIN
+
+*------------------------------------------------- Creation de l'image de jeu
+
+ LDX #0
+ TXA
+]lp STAL Screen,X
+ INX
+ INX
+ BPL ]lp
+
+ LDX #$20-2
+]lp LDA Palette,X
+]A = 0
+ LUP 16
+ STAL ]A+Screen+$7E00,X
+]A = ]A+$20
+ --^
+ DEX
+ DEX
+ BPL ]lp
+
+ JSR Degrade
+ BRA ContDeg
+
+ListDegrade DA $00C,0-$001
+ DA $0C0,0-$010
+ DA $C00,0-$100
+ DA $CC0,0-$110
+ DA $C0C,0-$101
+ DA $0CC,0-$011
+ DA $CCC,0-$111
+ DA $001,$001
+ DA $010,$010
+ DA $100,$100
+ DA $110,$110
+ DA $101,$101
+ DA $011,$011
+ DA $111,$111
+
+Degrade LDA ColorDeg ; Dégradé pour le décor
+ CLC
+ ADC XColor
+ ASL
+ ASL
+ TAX
+ LDA ListDegrade+2,X
+ STA Step
+ LDA ListDegrade,X
+ LDX #0
+]lp STAL Screen+$7E02,X
+ PHA
+ TXA
+ CLC
+ ADC #$20
+ TAX
+ PLA
+ CLC
+ ADC Step
+ CPX #$20*10
+ BNE ]lp
+ RTS
+
+ContDeg SEP $30
+
+ LDX #0
+ LDA #0
+]lp2 LDY #20
+]lp STAL Screen+$7D00,X
+ INX
+ DEY
+ BNE ]lp
+ INC
+ CMP #10
+ BNE ]lp2
+
+ REP $30
+
+* Decor
+ LDA #$00A0
+ STA Buf
+
+ LDX #0
+]mainloop PHX
+ LDY #0
+]lp LDA ZTop,Y
+ STAL Screen,X
+ LDA ZTop0,Y
+ STAL Screen+$A0,X
+ LDA ZBottom0,Y
+ STAL $A0*18+Screen,X
+ LDA ZBottom,Y
+ STAL $A0*19+Screen,X
+ INX
+ INX
+ INY
+ INY
+ CPY #$0A
+ BNE ]lp
+
+ LDY #0
+]lp2 PHY
+ TXA
+ CLC
+ ADC #$A0-$0A
+ TAX
+ LDY #0
+]lp LDA ZMiddle,Y
+ STAL Screen+$A0,X
+ INX
+ INX
+ INY
+ INY
+ CPY #$0A
+ BNE ]lp
+ PLY
+ INY
+ CPY #16
+ BNE ]lp2
+ PLA
+ CLC
+ ADC #$0A
+ TAX
+ CMP Buf
+ BNE ]mainloop
+ LDA Buf
+ CLC
+ ADC #20*$A0
+ STA Buf
+ CMP #$7D00
+ BCS Endraw
+ TXA
+ CLC
+ ADC #20*$A0-$A0
+ TAX
+ BRA ]mainloop
+
+Endraw SEP $20
+
+ LDX #1
+ LDA #$FF
+]lp STAL Screen+Center-1-$A0,X
+ STAL NbLgn*$A0*HautCase+Center-1+Screen,X
+ INX
+ CPX #NbCol*LargCase/2+1
+ BNE ]lp
+
+ LDX #0
+]lp LDA #$0F
+ STAL Screen+Center-1-$A0,X
+ LDA #$F0
+ STAL NbCol*LargCase/2+Screen+Center-$A0,X
+ REP $20
+ TXA
+ CLC
+ ADC #$A0
+ TAX
+ SEP $20
+ CPX #NbLgn*HautCase+2*$A0
+ BNE ]lp
+
+ REP $30
+
+ LDA #BeyondLogo+4
+ STA Pnt
+
+ LDX #$88*$A0+$73
+
+]lp2 PHX
+
+ LDY #$28/2
+]lp LDA (Pnt)
+ INC Pnt
+ INC Pnt
+ STAL $E12000,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ CPX #$88+$38*$A0+$73
+ BNE ]lp2
+
+ STZ BlackMode
+ STA Inv
+
+ LDA #6
+ STA Lgn
+ LDA #115
+ STA Col
+ LDA #67
+ STA ZNbLgn
+ LDA #38
+ STA ZNbCol
+ JSR Window
+
+ LDX #11*$A0+120
+ JSR Print
+ HEX 0CFF ; Couleur noir
+ ASC "SCORE:",00
+ LDX #11+20*$A0+120
+ JSR Print
+ TXT "LEVEL:",00;"TABLEAU:",00
+ LDX #11+40*$A0+120
+ JSR Print
+ ASC "TOTAL:",00
+
+ LDA #6
+ STA Lgn
+ LDA #6
+ STA Col
+ LDA #187
+ STA ZNbLgn
+ LDA #38
+ STA ZNbCol
+ JSR Window
+
+ LDX #11*$A0+11
+ JSR Print
+ TXT "HIGH";"LES"
+ HEX 8D
+ TXT "SCORES:";"BALAISES"
+ HEX 00
+
+ STZ Score
+ STZ Score+2
+ LDA #$0001
+ STA Level
+ STZ Total
+
+ LDA PatternList
+ STA PtrPattern
+ LDA MskList
+ STA PtrPtrMsk
+
+ LDA #2
+ STA PtrPatPos
+
+ JSR PrintHiScore
+ JSR PrintScore
+ JSR PrintTotal
+ JSR PrintLevel
+
+*------------------------------------------------- Fin de l'initialisation
+
+]RestartGame JSR ClearAera
+
+ SEP $30
+ LDL $E1C02F
+ STA AleaGen
+
+]lp LDL $E1C02E
+ CMP #$F0
+ BNE ]lp
+
+ LDA #0
+ STL $E1C034
+ LDA #$C1
+ STL $E1C029
+
+ REP $30
+
+* Affichage du menu...
+
+ STZ Inv
+ LDX #52*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT "CHOOSE :";"CHOISIR:"
+ HEX 8D8D
+ ASC "1",0CFF,"-"
+ TXT "VERY EASY";"ENFANTIN"
+ HEX 8D0C99
+ ASC "2",0CFF,"-"
+ TXT "EASY";"FACILE"
+ HEX 8D0C99
+ ASC "3",0CFF,"-"
+ TXT "MEDIUM";"MOYEN"
+ HEX 8D0C99
+ ASC "4",0CFF,"-"
+ TXT "HARD";"DIFFICILE"
+ HEX 8D0C99
+ ASC "5",0CFF,"-"
+ TXT "VERY HARD";"AIE !"
+ HEX 8D0C99
+ ASC "6",0CFF,"-"
+ TXT "JEDI";"MODE JYB"
+ HEX 8D8D0C99
+ ASC "A",0CFF,"-"
+ TXT "ABOUT";"A PROPOS"
+ HEX 8D0C99
+ ASC "I",0CFF,"-INFO",8D0C99
+ ASC "Q",0CFF,"-"
+ TXT "QUIT";"QUITTER"
+ HEX 0CFF00
+
+ LDA #$FFFF
+ STA Inv
+
+* Saisie du choix au clavier...
+
+WaitKeyPress SEP $30
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $30
+ AND #$00FF
+ CMP #"Z"+1
+ BCC NoMin
+ SEC
+ SBC #$20
+NoMin CMP #"Q"
+ BNEL NoQuit
+
+* Si on appuie sur Q, on va sauver les high-scores s'ils ont étés
+* améliorés (FlagHi)
+
+ LDA FlagHi
+ BEQ NoSaveHi
+
+ JSR PrintSaving
+
+* Les meilleurs scores sont sauvés directement dans le programme !
+
+*------------------------------------------------- Routine sauvegarde P8
+
+NoSaveHi DO vP8 ; *D0
+
+ PEA $0
+ PLD
+ SEC
+ XCE
+ SEP $30
+
+ LDA FlagHi+ZPage
+ BEQ NoSaveHiP8
+
+ STZ FlagClean
+
+]lp JSR $BF00
+ DFB $C8 ; Open
+ DA OpenParm
+ BCC NoErrOpening
+ CMP #$45 ; Volume Not Found
+ BNE ErrFatal
+ JSR InsertDisk
+ BCC ]lp
+ BRA NoSaveHiP8
+
+NoErrOpening LDA FlagClean
+ BEQ NoRedraw0
+
+ JSR PrintSaving
+
+NoRedraw0 LDA Ref
+ STA RefRead
+ STA RefWrite
+ STA RefMark
+ JSR $BF00
+ DFB $CE ; SetMark
+ DA MarkParm
+ BCC NoErrMark
+ BRA ErrFatal
+ErrFatal0 LDA #$FF ; Bad Signature
+ErrFatal JSR FatalError
+ BRA NoSaveHiP8
+NoErrMark JSR $BF00
+ DFB $CA ; Read
+ DA ReadParm
+ BCS ErrFatal
+ LDX #7
+]lp LDA Signature,X
+ CMP SignatureTest,X
+ BNE ErrFatal0
+ DEX
+ BPL ]lp
+GoodTest JSR $BF00
+ DFB $CB
+ DA WriteParm
+ BCC NoSaveHiP8
+ CMP #$2F
+ BEQ DiskSwap
+ CMP #$2B
+ BNE ErrFatal
+ JSR WriteProtect
+ BCC GoodTest
+ BRA NoSaveHiP8
+DiskSwap JSR InsertDisk
+ BCC GoodTest
+NoSaveHiP8 JSR $BF00
+ DFB $CC
+ DA CloseParm
+
+Save35 LDA #0
+ STL $E1C035
+Save29 LDA #$41
+ STL $E1C029
+Save34 LDA #0
+ STL $E1C034
+
+ JSR $BF00
+ DFB $65
+ DA QuitParm
+
+PrintSaving CLC
+ XCE
+ PHP
+ PHD
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ STZ Inv
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT " SAVING";"SAUVEGARDE"
+ HEX 8D
+ TXT "HIGH SCORES";"DES SCORES."
+ HEX 00
+ PLD
+ PLP
+ XCE
+ RTS
+
+ MX %11
+WriteProtect CLC
+ XCE
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ LDX #67*$A0+$36+4
+ JSR Print
+ HEX 0CFF
+ TXT "DISK WRITE";"DISQUETTE"
+ HEX 8D
+ TXT "PROTECTED.";"PROTEGEE."
+ HEX 0CAA00
+
+ BRA ContErr
+
+ MX %11
+InsertDisk LDX #0
+]lp LDA PathName+2,X
+ ORA #$80
+ CMP #"/"
+ BEQ EndPath0
+ STA Name+1,X
+ INX
+ CPX #11
+ BNE ]lp
+EndPath0 CPX #11
+ BEQ NoBlank
+ LDA #" "
+ STA Name+1,X
+ INX
+ BRA EndPath0
+
+NoBlank CLC
+ XCE
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ LDX #67*$A0+$36+2
+ JSR Print
+ HEX 0CFF
+ TXT "INSERT DISK:";"INSEREZ:"
+ HEX 8D
+Name ASC "/ ",0CAA00
+
+ContErr DO Language
+ LDX #8*3+67*$A0+$36+2
+ JSR Print
+ ASC "PRESS RETURN",8D
+ ASC " TO RETRY ",8E
+ ASC " OR",8E
+ ASC "PRESS ESC",8D
+ ASC " TO ABORT",00
+ ELSE
+ LDX #8*3+67*$A0+$36+5
+ JSR Print
+ ASC "TAPEZ ENVOI",8D
+ ASC " POUR ",8D
+ ASC "RE-ESSAYER.",8E
+ ASC " OU",8E
+ ASC " TAPEZ ESC",8D
+ ASC " POUR",8D
+ ASC "ABANDONNER."
+ HEX 00
+ FIN
+
+ SEP $30
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+]lp2 STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ CMP #"M"&$9F
+ BEQ GoRetry
+ CMP #$9B
+ BNE ]lp2
+ SEC
+ XCE
+ PEA $0
+ PLD
+ SEC
+ RTS
+GoRetry INC FlagClean
+ SEC
+ XCE
+ PEA $0
+ PLD
+ CLC
+ RTS
+
+FlagClean DS 2
+
+FatalError PHA
+ AND #$F0
+ LSR
+ LSR
+ LSR
+ LSR
+ JSR Translate
+ STA ErrCode
+ PLA
+ AND #$0F
+ JSR Translate
+ STA ErrCode+1
+ CLC
+ XCE
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT "CAN'T SAVE";"SAUVEGARDE"
+ HEX 8D
+ TXT "HI-SCORES :";"IMPOSSIBLE"
+ HEX 8D8D
+ TXT " ERROR $";"ERREUR $"
+ErrCode ASC "??",00
+
+ SEC
+ XCE
+ SEP $30
+ PEA $0
+ PLD
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ CLC
+ RTS
+
+
+QuitParm HEX 04
+ HEX 00
+ HEX 0000
+ HEX 00
+ HEX 0000
+
+CloseParm HEX 01
+ HEX 00
+
+WriteParm HEX 04
+RefWrite HEX 00
+ DA HiScoreList
+ DA 12*8
+ DA 0
+
+ReadParm HEX 04
+RefRead HEX 00
+ DA SignatureTest
+ DA 8
+ DA 0
+
+MarkParm HEX 02
+RefMark HEX 00
+ ADRL Signature-BeginningOfFile
+
+PrefixParm HEX 01
+ DA PathName
+
+OpenParm HEX 03
+ DA PathName
+ DA BufIO
+Ref HEX 00
+
+ MX %00
+
+
+*------------------------------------------------- Routine sauvegarde GS/OS et CDA
+
+ ELSE ;*E0
+
+ LDA FlagHi
+ BEQL NoSaveHiSYS16
+
+ PEA $0
+ PEA $0
+ LDA MasterId
+ PHA
+ PEA $0000
+ LDX #$1111 ; LGetPathName
+ JSL $E10000
+ _Err
+ PLA
+ PLX
+ DEC
+ STA PntPath
+ STX PntPath+2
+
+ LDA PntPath
+ LDX PntPath+2
+
+ STA PathNameAdr
+ STX PathNameAdr+2
+
+ STZ FlagClean
+
+]lp LDA [PntPath] ; Conversion chaine
+ PHA ; de type pascal en
+ XBA ; GS/OS...
+ AND #$00FF
+ STA [PntPath]
+ JSL $E100A8
+ DA $2010
+ ADRL Open_Parms
+ TAX ; et vice-versa...
+ PLA ; (Il faut un outil
+ STA [PntPath] ; pour faire ca???)
+ TXA
+ CMP #1
+ BCC NoErrOp
+
+ CMP #$45
+ BNE ErrFatalBis
+ JSR InsertDisk
+ BCC ]lp
+ BRA There0
+ErrFatalBis JSR FatalError
+There0 BRL NoSaveHiSYS16
+
+ErrFatal0 LDA #$FF
+ErrFatal JSR FatalError
+ BRL EndSave
+
+NoErrOp LDA Ref
+ STA MarkRef
+ STA ReadRef
+ STA WriteRef
+ STA CloseRef
+ STA FlushRef
+
+ LDA FlagClean
+ BEQ NoR2
+
+ JSR PrintSaving
+
+NoR2 = *
+
+ JSL $E100A8
+ DA $2016 ; SetMark
+ ADRL Ref_Parms
+ BCS ErrFatal
+
+ JSL $E100A8
+ DA $2012 ; Read
+ ADRL Read_Parms
+ BCS ErrFatal
+
+ LDX #8-2
+]lp LDA Signature,X
+ CMP SignatureTest,X
+ BNE ErrFatal0
+ DEX
+ DEX
+ BPL ]lp
+
+]lp JSL $E100A8
+ DA $2013
+ ADRL Write_Parms
+ BCC EndSave0
+
+ CMP #$45
+ BNE NoBadVolume0
+ JSR InsertDisk0
+ BRA ]lp
+NoBadVolume0 CMP #$2B
+ BNE ErrFatal1
+ JSR WriteProtect
+ BRA ]lp
+
+ErrFatal1 BRL ErrFatal
+
+EndSave0 JSL $E100A8
+ DA $2015
+ ADRL Flush_Parms
+ BCC EndSave
+
+ CMP #$45
+ BNE NoBadVolume
+ JSR InsertDisk0
+ BRA EndSave0
+NoBadVolume CMP #$2B
+ BNE ErrFatal1
+ JSR WriteProtect
+ BRA EndSave0
+
+EndSave JSL $E100A8
+ DA $2014 ; Close
+ ADRL Close_Parms
+
+NoSaveHiSYS16 SEP $20
+ LDAL $E1C068
+ PHA
+ LDAL $E1C08B
+ LDAL $E1C08B
+
+ REP $30
+
+ LDAL $01FC98
+ AND #$00FF
+ CMP #$5C
+ BNE NoPatch0
+
+ LDA SaveVect+1 ; avant de quitter, on
+ STAL $01FC99 ; enleve notre patch
+ LDA SaveVect+2
+ STAL $01FC9A
+
+NoPatch0 SEP $20
+ PLA
+ STAL $E1C068
+ REP $20
+
+ JSL $E100A8
+ DA $200C ; SetSysPref
+ ADRL SysDefaultParms
+
+ BRL NormalQuit
+
+Open_Parms DA 15
+Ref DA 0
+PathNameAdr ADRL 0
+ DA %0000_0000_0000_0011 ; R/W
+ DS 50
+
+Ref_Parms DA 3
+MarkRef DA 0
+ DA 0
+ ADRL Signature-BeginningOfFile+$45
+
+Read_Parms DA 5
+ReadRef DA 0
+ ADRL SignatureTest
+ ADRL 8
+ ADRL 0
+ DA 0 ; NoCache
+
+Write_Parms DA 4
+WriteRef DA 0
+ ADRL HiScoreList
+ ADRL 12*8
+ ADRL 0
+ DA 0
+
+Close_Parms DA 1
+CloseRef DA 0
+
+Flush_Parms DA 1
+FlushRef DA 0
+
+PrintSaving = *
+ JSR ClearAera
+ STZ Inv
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT " SAVING";"SAUVEGARDE"
+ HEX 8D
+ TXT "HIGH SCORES";"DES SCORES."
+ HEX 00
+ RTS
+
+FlagClean DS 2
+
+WriteProtect JSR ClearAera
+ LDX #67*$A0+$36+4
+ JSR Print
+ HEX 0CFF
+ TXT "DISK WRITE";"DISQUETTE"
+ HEX 8D
+ TXT "PROTECTED.";"PROTEGEE."
+ HEX 0CAA00
+
+WriteReturn0 DO Language
+ LDX #8*3+67*$A0+$36+2
+ JSR Print
+ ASC "PRESS RETURN",8D
+ ASC " TO RETRY ",00
+ ELSE
+ LDX #8*3+67*$A0+$36+5
+ JSR Print
+ ASC "TAPEZ ENVOI",8D
+ ASC " POUR ",8D
+ ASC "RE-ESSAYER.",00
+ FIN
+
+ BRL ContErr0
+
+FlagCont DS 2
+
+InsertDisk0 LDA #$FFFF
+ BRA C0
+InsertDisk LDA #0
+C0 STA FlagCont
+ SEP $30
+ LDX #0
+ LDY #2+1
+]lp LDA [PntPath],Y
+ ORA #$80
+ CMP #"/"
+ BEQ EndPath0
+ STA Name+1,X
+ INY
+ INX
+ CPX #11
+ BNE ]lp
+
+EndPath0 CPX #11
+ BEQ NoBlank
+ LDA #" "
+ STA Name+1,X
+ INX
+ BRA EndPath0
+
+NoBlank REP $30
+ LDX #67*$A0+$36+2
+ JSR Print
+ HEX 0CFF
+ TXT "INSERT DISK:";"INSEREZ:"
+ HEX 8D
+Name ASC "/ ",0CAA00
+
+ LDA FlagCont
+ BEQ NormalCont
+ BRL WriteReturn0
+
+NormalCont DO Language
+ LDX #8*3+67*$A0+$36+2
+ JSR Print
+ ASC "PRESS RETURN",8D
+ ASC " TO RETRY ",8E
+ ASC " OR",8E
+ ASC "PRESS ESC",8D
+ ASC " TO ABORT",00
+ ELSE
+ LDX #8*3+67*$A0+$36+5
+ JSR Print
+ ASC "TAPEZ ENVOI",8D
+ ASC " POUR ",8D
+ ASC "RE-ESSAYER.",8E
+ ASC " OU",8E
+ ASC " TAPEZ ESC",8D
+ ASC " POUR",8D
+ ASC "ABANDONNER."
+ HEX 00
+ FIN
+
+ContErr0 SEP $30
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+]lp2 STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ CMP #"M"&$9F
+ BEQ GoRetry
+ CMP #$9B
+ BNE ]lp2
+ REP $30
+ SEC
+ RTS
+GoRetry INC FlagClean
+ REP $30
+ CLC
+ RTS
+
+FatalError SEP $30
+ PHA
+ AND #$F0
+ LSR
+ LSR
+ LSR
+ LSR
+ JSR Translate
+ STA ErrCode
+ PLA
+ AND #$0F
+ JSR Translate
+ STA ErrCode+1
+ REP $30
+ JSR ClearAera
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT "CAN'T SAVE";"SAUVEGARDE"
+ HEX 8D
+ TXT "HI-SCORES :";"IMPOSSIBLE"
+ HEX 8D8D
+ TXT " ERROR $";"ERREUR $"
+ErrCode ASC "??",00
+ SEP $30
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $30
+ RTS
+
+NormalQuit DO vP16 ; Routine pour quitter
+ ELSE ;
+ SEP $20
+Save35 LDA #0
+ STL $E1C035
+Save29 LDA #$41
+ STL $E1C029
+Save34 LDA #0
+ STL $E1C034
+ REP $20
+
+ LDX #0 ; Remets l'écran tel
+]lp TXY ; qu'il etait pour
+ LDA [SaveScreen],Y ; la version CDA
+ STAL $E12000,X
+ INX
+ INX
+ BPL ]lp
+ FIN ;*F
+
+ LDA UserId
+ PHA
+ LDX #$1102 ; Dispose All
+ JSL $E10000
+ _Err
+
+ LDA MasterId
+ PHA
+ LDX #$0302
+ JSL $E10000
+ _Err
+
+ DO vP16 ;*D
+
+ SEP $20
+Save35 LDA #0
+ STL $E1C035
+Save29 LDA #$41
+ STL $E1C029
+Save34 LDA #0
+ STL $E1C034
+ REP $20
+
+ JSL $E100A8
+ DA $29
+ ADRL QuitRecGS
+QuitRecGS DA 0
+ ADRL 0
+ DA 0
+ ELSE ;*E
+ PLB
+ PLD
+ PLP
+ENDCDA RTL
+ FIN ;*F
+
+ FIN ;*F0
+
+
+ MX %11
+Translate CLC
+ ADC #"0"
+ CMP #"9"+1
+ BCC Chiffre0
+ ADC #"A"-"9"-2
+Chiffre0 RTS
+
+LevelList DA 01,30 ; Numero du level / Vitesse
+ DA 05,25
+ DA 10,20
+ DA 15,15
+ DA 20,10
+ DA 25,05
+
+Progression LUP 5
+ DA 50 ; Nombre de piece pour passer au level
+ --^
+ LUP 5
+ DA 60
+ --^
+ LUP 5
+ DA 70
+ --^
+ LUP 5
+ DA 80
+ --^
+ DA 080
+ DA 090
+ DA 100
+ DA 110
+ DA 120
+
+ MX %00
+
+*-------------------------------------------------
+
+* Apres avoir test{ la touche Q, on va tester les autres options
+* qui s'offrent @ nous...
+
+NoQuit = *
+
+* Touche I = Info
+
+ CMP #"I"
+ BNEL NoInfo
+
+ JSR ClearAera
+ STZ Inv
+ LDX #50*$A0+$37-1+2+2
+ JSR Print
+ HEX 0C99
+ TXT "COLUMNS",8D;"REGLES",8D
+ TXT "RULES.",8D8D0CFF;"DU JEU.",8D8D8D0CFF
+ TXT " <:LEFT",8D;" <:GAUCHE",8D
+ TXT " >:RIGHT",8D;" >:DROITE",8D
+ TXT " R:ROTATE",8D;" R:PERMUTE",8D
+ TXT "SPC:FALL",8D;"ESP:DEPOSE",8D
+ TXT " ^R:RESTART",8D;" ^R:REJOUER",8D
+ TXT " ^S:NEW PAT",8D;" ^S:FORMES",8D
+ TXT " N:NEXT",8D;" N:SUIVANT",8D
+ ASC " P:PAUSE",8D8D
+ DO Language
+ ASC " HAVE FUN !",00
+ ELSE
+ HEX 8D
+ ASC "JOIE",8D
+ ASC "DANS LES",8D
+ ASC "CHAUMIERES!",00
+ FIN
+
+EndAbout SEP $20
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ REP $20
+ BRL ]RestartGame
+
+* Touche A = About
+
+NoInfo CMP #"A"
+ BNEL NoAbout
+
+ JSR ClearAera
+ STZ Inv
+ LDX #35*$A0+$37+4
+ JSR Print
+ DFB $0C,$EE,"F"
+ DFB $0C,$CC,"U"
+ DFB $0C,$AA,"N"
+ DFB $0C,$22
+ ASC " COLUMNS",8D8D
+ DFB $0C,$FF
+ TXT " BY ";"PAR "
+ DFB $0C,$DD
+ ASC "FTA",8D8D
+ DFB $0C,$FF
+ ASC "CODING:",8E
+ ASC "O. GOGUEL",8D8E
+ ASC "DESIGN:",8E
+ ASC "O. BAILLY",8D
+ ASC " MAITRE",8D8D8D8D
+ ASC "VERSION 1.1",8E
+ ASC "TOOLBOX-MAG",8E
+ TXT " ISSUE: 04";" NUMERO 04"
+ DFB $8E
+ TXT " 03-FEB-91";" 03-FEV-91"
+ DFB $8E,$8D
+ ASC " COPYRIGHT",8E
+ ASC "FTA/TOOLBOX"
+ HEX 0CFF00
+ BRL EndAbout
+
+* Sinon, il reste les levels...
+
+NoAbout CMP #"1"
+ BCC NoLevel
+ CMP #"6"+1
+ BCS NoLevel
+ SEC
+ SBC #"1"
+ ASL
+ ASL
+ TAX
+ LDA LevelList,X
+ STA Level0
+ TAY
+ SED
+ LDA #0
+ CLC
+]lp ADC #1
+ DEY
+ BNE ]lp
+ CLD
+ STA Level
+ LDA LevelList+2,X
+ STA LevelSpeed
+
+ BRL StartGame
+
+NoLevel BRL WaitKeyPress
+
+
+*------------------------------------------------- Debut d'une nouvelle partie
+
+StartGame STZ Score
+ STZ Score+2
+ STZ Total
+
+ STZ ColorDeg
+ JSR Degrade
+
+ JSR GetBarre ; initialise GetBarre
+; pour pouvoir afficher
+; eventuellement le
+; suivant...
+
+ LDA Level0
+ DEC
+ ASL
+ TAX
+ LDA Progression,X
+ STA Counter
+
+ LDX #0
+]lp STZ Table,X
+ INX
+ INX
+ CPX #NbLgn*NbCol
+ BCC ]lp
+
+ REP $30
+
+ JSR WaitSync
+ JSR DrawScreen
+ JSR PrintScore
+ JSR PrintLevel
+ JSR PrintTotal
+ JSR WaitSync
+ JSR WaitSync
+ JSR WaitSync
+
+]newbar = *
+
+ JSR GetBarre
+ JSR PrintNext
+ BRL ContGame
+
+GetBarre = *
+ SEP $30
+ LDX #0
+]loop LDA BarreNext,X
+ STA Barre,X
+ JSR GetAlea
+]lp AND #$7F
+ CMP #6
+ BCC OkCouleur
+ SEC
+ SBC #6
+ BRA ]lp
+OkCouleur INC
+ STA BarreNext,X
+ INX
+ CPX #3
+ BNE ]loop
+ REP $30
+ RTS
+*
+
+NoNext LDX #0
+]lp2 PHX
+ LDY #6
+]lp LDAL 85*$A0+Screen-20+128,X
+ STAL 85*$A0+Screen+128,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ CPX #41*$A0
+ BNE ]lp2
+ STZ AlreadyNext
+ RTS
+
+* Affichage de l'element suivant ou non selon le flag NextMode
+
+
+PrintNext BIT NextMode
+ BPL NoNext
+ BIT AlreadyNext
+ BMI Already_La
+ LDA #$FFFF
+ STA BlackMode
+ LDA #85
+ STA Lgn
+ LDA #128
+ STA Col
+ LDA #38
+ STA ZNbLgn
+ LDA #9
+ STA ZNbCol
+ JSR Window
+
+Already_La STZ BlackMode
+ LDA #$FFFF
+ STA AlreadyNext
+
+ LDA #88*$A0+130-Center
+ STA Buf
+
+ LDX #0
+]lp PHX
+ LDA BarreNext,X
+ AND #$00FF
+ ASL
+ TAY
+ STZ Msk0
+ LDX Buf
+ JSR PrintOnePat
+ LDA Buf
+ CLC
+ ADC #HautCase*$A0
+ STA Buf
+ PLX
+ INX
+ CPX #3
+ BNE ]lp
+
+ RTS
+
+* C'est dur de suivre quand il y a des sous-routines au milieu de la
+* boucle principale, n'est-il pas ?
+
+
+ContGame JSR GetAlea
+
+* On choisit aleatoirement une colonne de départ pour le nouvel élément...
+
+ AND #$1F
+]lp CMP #NbCol
+ BCC OkCol
+ SEC
+ SBC #NbCol
+ BRA ]lp
+OkCol STA BarreCol
+ STA BarreCol0
+
+ STZ BarreLgn
+
+* On vérifie que l'on peut l'afficher entierement, cad qu'il n'y ait rien
+* juste en dessous...
+
+]loop JSR GetBarreAdr
+ TAX
+ STX BarrePos
+ SEP $20
+ LDA Table,X
+ AND #$0F
+ BNE Over0
+ LDA Table+NbCol,X
+ AND #$0F
+ BNE Over0
+ LDA Table+NbCol+NbCol,X
+ AND #$0F
+ BEQ GoodCol
+
+* Si on ne peut l'afficher, on va essayer avec la colonne voisine...
+
+Over0 INC BarreCol
+ LDA BarreCol
+ CMP #NbCol
+ BNE NoFin
+ STZ BarreCol
+ LDA #0
+NoFin CMP BarreCol0
+ BNE ]loop
+
+
+* Si on n'a trouvé aucune colonne de libre, alors ...
+
+ BRL GameOver
+
+GoodCol = *
+
+*------------------------------------------------- Boucle principale
+
+]mainloop REP $30
+ STZ Msk
+ JSR StoreBarre
+ JSR DrawScreen
+ LDA LevelSpeed
+ STA CycleCount
+]lp JSR TestKey
+ BCC Nothing
+ JSR ClearBarre
+ JSR StoreBarre
+ JSR DrawScreen
+Nothing JSR WaitSync
+ DEC CycleCount
+ BNE ]lp
+ JSR TestDown
+ BNEL Down
+ JSR ClearBarre
+ INC BarreLgn
+ JSR StoreBarre
+ BRL ]mainloop
+
+*------------------------------------------------- Fin du jeu...
+
+GameOver REP $30
+
+ LDA #$FFFF
+ STA Inv
+
+ LDA #92
+ STA Lgn
+ LDA #$3B
+ STA Col
+ LDA #14
+ STA ZNbLgn
+ LDA #$29
+ STA ZNbCol
+ JSR Window
+
+ LDX #96+1*$A0+$3E
+ JSR Print
+ HEX 0C11
+ ASC "GAME OVER",00
+
+ JSR CheckHighScore
+ BCS NoHigh
+
+ BRL ]RestartGame
+
+NoHigh SEP $20
+ STL $E1C010
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $20
+
+ BRL ]RestartGame
+
+*-------------------------------------------------
+
+NextPos INC Col0
+ LDA Col0
+ CMP #NbCol
+ BNE MoreTest
+ STZ Col0
+ INC Lgn0
+ LDA Lgn0
+ CMP #NbLgn
+ BNE MoreTest
+
+ LDA Flag
+ BEQ PoorPlayer
+
+ JSR SecondAction
+
+ BRA Down
+
+PoorPlayer BRL ]newbar
+
+*------------------------------------------------- Routine de recherche
+* pour l'elimination des
+* briques...
+
+Down STZ Lgn0
+ STZ Col0
+ STZ Flag
+
+ SED
+ LDA Score
+ CLC
+ ADC #5
+ STA Score
+ LDA Score+2
+ ADC #0
+ STA Score+2
+ CLD
+
+ JSR PrintScore
+
+MoreTest LDA Lgn0
+ ASL
+ TAX
+ LDA MulLgn,X
+ CLC
+ ADC Col0
+ TAX
+ LDA Table,X
+ AND #$1F
+ BEQ NextPos
+ BIT #$10
+ BNE NextPos
+ STA CaseTest
+
+ STZ Buf ; 4 grandes direction
+
+]looping STZ Compteur
+
+]loop LDA Lgn0
+ STA Lgn
+ LDA Col0
+ STA Col
+
+]lp LDX Buf
+ JSR (GetList,X)
+ CMP #$FFFF
+ BEQ NextDirection
+ LDA Lgn
+ ASL
+ TAX
+ LDA MulLgn,X
+ CLC
+ ADC Col
+ TAX
+ LDA Table,X
+ AND #$0F
+ CMP CaseTest
+ BNE NextDirection
+
+ TXA
+ LDX Compteur
+ STA CaseList,X
+ INX
+ INX
+ STX Compteur
+ BRA ]lp
+
+NextDirection LDA Buf
+ INC
+ INC
+ STA Buf
+ AND #%0000_0010
+ BNE ]loop
+
+ LDA Compteur
+ CMP #2*2
+ BCC No3Barre
+
+ LDX Compteur
+]lp DEX
+ DEX
+ BMI EndKill
+ PHX
+ LDA CaseList,X
+ TAX
+ LDA Table,X
+ ORA #$0010
+ AND #$FF7F
+ STA Table,X
+ INC Flag
+ PLX
+ BRA ]lp
+
+EndKill LDA Lgn0
+ ASL
+ TAX
+ LDA MulLgn,X
+ CLC
+ ADC Col0
+ TAX
+ LDA Table,X
+ ORA #$0010
+ AND #$FF7F
+ STA Table,X
+
+No3Barre LDA Buf
+ CMP #16
+ BNE ]looping
+
+ BRL NextPos
+
+SecondAction = *
+ STZ Msk
+]lp JSR DrawScreen
+ JSR WaitSync
+ JSR WaitSync
+ LDA Msk
+ INC
+ INC
+ STA Msk
+ CMP #7*2
+ BNE ]lp
+
+ REP $30
+
+ LDA PtrPatPos
+ CMP #4*2
+ BEQ NoBlanc0
+
+ JSR StoreBlanc
+
+NoBlanc0 LDA #2
+ STA Msk
+
+ LDA #6*2
+ STA Msk
+
+]lp LDA Msk
+ DEC
+ DEC
+ STA Msk
+ BMI Out
+
+ JSR DrawScreen
+ JSR WaitSync
+ JSR WaitSync
+ BRA ]lp
+
+StoreBlanc SEP $30
+ LDX #0
+]lp LDA Table,X
+ BIT #%0001_0000
+ BEQ NoOff0
+ ORA #%0001_0111
+NoOff0 STA Table,X
+ INX
+ CPX #NbLgn*NbCol
+ BNE ]lp
+ REP $30
+ RTS
+
+Out = *
+
+ LDA PtrPatPos
+ CMP #4*2
+ BNE NoBlanc
+
+ JSR StoreBlanc
+
+NoBlanc LDA #2
+ STA Msk
+
+]lp JSR DrawScreen
+ JSR WaitSync
+ JSR WaitSync
+ LDA Msk
+ INC
+ INC
+ STA Msk
+ CMP #7*2
+ BNE ]lp
+
+ STZ Buf
+
+ SEP $30
+
+ LDX #0
+]lp LDA Table,X
+ BIT #%0001_0000
+ BEQ NoCl
+ STZ Table,X
+ INC Buf
+ LDA Buf
+ PHA
+ PHX
+ REP $30
+ DEC Counter
+ BNE NoNewLevel
+ INC ColorDeg
+ LDA ColorDeg
+ CMP #7
+ BNE NoNewColor
+ STZ ColorDeg
+NoNewColor JSR Degrade
+ INC Level0
+ LDA Level0
+ DEC
+ ASL
+ TAX
+ LDA Progression,X
+ STA Counter
+ LDA LevelSpeed
+ CMP #1
+ BEQ NoNewLevel
+ DEC LevelSpeed
+ SED
+ LDA Level
+ CLC
+ ADC #1
+ STA Level
+ CLD
+ JSR PrintLevel
+NoNewLevel = *
+ SED
+ LDA Total
+ CLC
+ ADC #1
+ STA Total
+ SEP $30
+ CLD
+ PLX
+ PLA
+ STA Buf
+NoCl INX
+ CPX #NbCol*NbLgn
+ BNE ]lp
+ REP $30
+
+ LDA Buf
+ CMP #3
+ BCC NoBonus
+ CMP #12
+ BCC NoMaxBonus
+ LDA #11
+NoMaxBonus SEC
+ SBC #3
+ ASL
+ TAX
+ SED
+ LDA Score
+ CLC
+ ADC ScorePerBrick,X
+ STA Score
+ LDA Score+2
+ ADC #0
+ STA Score+2
+ CLD
+
+NoBonus JSR DrawScreen
+ JSR PrintTotal
+ JSR PrintScore
+ JSR WaitSync
+
+ SEP $30
+
+ STZ Pnt
+
+]newcol LDX Pnt
+]lp LDA Table,X
+ AND #$0F
+ BNE FoundTop
+ TXA
+ CLC
+ ADC #NbCol
+ TAX
+ CMP #NbLgn-1*NbCol
+ BCC ]lp
+
+ BRA NextCol
+
+FoundTop STX Buf
+
+ LDA #NbLgn-1*NbCol
+ CLC
+ ADC Pnt
+ TAX
+
+]lp CPX Buf
+ BEQ NextCol
+
+ LDA Table,X
+ AND #$0F
+ BNE SomethingUnder
+
+ PHX
+]notop LDA Table-NbCol,X
+ AND #%0000_1111
+ STA Table,X
+ TXA
+ SEC
+ SBC #NbCol
+ TAX
+ CPX Buf
+ BNE ]notop
+
+ STZ Table,X
+
+ LDA Buf ; Descend le plafond de 1 ligne
+ CLC
+ ADC #NbCol
+ STA Buf
+ PLX
+ BRA ]lp
+
+SomethingUnder TXA
+ SEC
+ SBC #NbCol
+ TAX
+ BRA ]lp
+
+NextCol INC Pnt
+ LDA Pnt
+ CMP #NbCol
+ BNE ]newcol
+
+EndDisap REP $30
+
+ JSR DrawScreen
+
+ JSR WaitSync
+ JSR WaitSync
+ RTS
+
+
+* Test dans chacune des directions...
+
+GetList DA Get1
+ DA Get9
+ DA Get2
+ DA Get8
+ DA Get3
+ DA Get7
+ DA Get4
+ DA Get6
+
+Get1 LDA Lgn
+ BEQ OutCadre
+ LDA Col
+ BEQ OutCadre
+ DEC Lgn
+ DEC Col
+ RTS
+Get2 LDA Lgn
+ BEQ OutCadre
+ DEC Lgn
+ RTS
+Get3 LDA Lgn
+ BEQ OutCadre
+ LDA Col
+ CMP #NbCol-1
+ BEQ OutCadre
+ DEC Lgn
+ INC Col
+ RTS
+Get4 LDA Col
+ BEQ OutCadre
+ DEC Col
+ RTS
+OutCadre LDA #$FFFF
+ RTS
+Get6 LDA Col
+ CMP #NbCol-1
+ BEQ OutCadre
+ INC Col
+ RTS
+Get7 LDA Col
+ BEQ OutCadre
+ LDA Lgn
+ CMP #NbLgn-1
+ BEQ OutCadre
+ INC Lgn
+ DEC Col
+ RTS
+Get8 LDA Lgn
+ CMP #NbLgn-1
+ BEQ OutCadre
+ INC Lgn
+ RTS
+Get9 LDA Lgn
+ CMP #NbLgn-1
+ BEQ OutCadre
+ LDA Col
+ CMP #NbCol-1
+ BEQ OutCadre
+ INC Lgn
+ INC Col
+ RTS
+
+
+TestKey SEP $20
+ LDL $E1C000
+ STL $E1C010
+ REP $20
+ AND #$00FF
+ CMP #$0080
+ BCS SomeKey0
+ BRL NoKey
+
+SomeKey0 CMP #"R"&$9F
+ BNE NoAbandon
+ PLA
+ STZ Score
+ STZ Score+2
+ BRL GameOver
+
+NoAbandon = *
+ CMP #"S"&$9F
+ BNE NoSwitchPat
+
+]lp LDX PtrPatPos
+ LDA PatternList,X
+ BNE SameList
+ STZ PtrPatPos
+ BRA ]lp
+SameList STA PtrPattern
+ LDA MskList,X
+ STA PtrPtrMsk
+ INC PtrPatPos
+ INC PtrPatPos
+
+DrawGame SEP $30
+ LDX #0
+]lp LDA Table,X
+ AND #%0111_1111
+ STA Table,X
+ INX
+ CPX #NbCol*NbLgn
+ BNE ]lp
+ REP $30
+
+ JSR PrintNext
+
+ SEC
+ RTS
+
+NoSwitchPat CMP #"4"
+ BEQ GLeft
+ CMP #"J"
+ BEQ GLeft
+ CMP #"H"&$9F
+ BNE NoLeft
+
+GLeft LDA BarreCol
+ BEQ NoKey0
+
+ JSR GetBarreAdr
+ DEC
+ JSR TestLR
+ BNE NoKey0
+
+ DEC BarreCol
+ SEC
+ RTS
+
+NoKey0 CLC
+ RTS
+
+NoLeft CMP #"L"
+ BEQ GRight
+ CMP #"6"
+ BEQ GRight
+ CMP #"U"&$9F
+ BNE NoRight
+
+GRight LDA BarreCol
+ CMP #NbCol-1
+ BEQ NoKey0
+
+ JSR GetBarreAdr
+ INC
+ JSR TestLR
+ BNE NoKey0
+
+ INC BarreCol
+ SEC
+ RTS
+
+NoRight CMP #"R"
+ BNE NoRotate
+GRotate SEP $20
+ LDA Barre
+ PHA
+ LDA Barre+1
+ STA Barre
+ LDA Barre+2
+ STA Barre+1
+ PLA
+ STA Barre+2
+ REP $20
+ SEC
+ RTS
+
+NoRotate CMP #"K"
+ BEQ GFall
+ CMP #"5"
+ BEQ GFall
+ CMP #" "
+ BNE NoSpace
+
+GFall = *
+]lp JSR TestDown
+ BNE FoundDown
+ INC BarreLgn
+ BRA ]lp
+FoundDown LDA #1
+ STA CycleCount
+ SEC
+ RTS
+
+NoSpace = *
+ CMP #"N"
+ BNE NoN
+ LDA NextMode
+ EOR #$FFFF
+ STA NextMode
+ JSR PrintNext
+ CLC
+ RTS
+
+NoN CMP #"P"
+ BNE NoPause
+
+ LDX #0
+]lp2 PHX
+ LDY #NbCol*LargCase/4
+ LDA #0
+]lp STAL Screen+Center,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ CPX #NbLgn*HautCase*$A0
+ BNE ]lp2
+
+ LDA #$FFFF
+ STA Inv
+
+ LDA #92
+ STA Lgn
+ LDA #$3B
+ STA Col
+ LDA #14
+ STA ZNbLgn
+ LDA #$29
+ STA ZNbCol
+ JSR Window
+
+ LDX #96+1*$A0+$3E
+ JSR Print
+ HEX 0C11
+ ASC "> PAUSE <",0CFF00
+
+ SEP $20
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+]lp2 STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $20
+
+ BRL DrawGame
+
+NoPause CMP #"X"&$9F
+ BNE No_XCol
+ LDA XColor
+ EOR #7
+ STA XColor
+ JSR Degrade
+ CLC
+ RTS
+
+No_XCol CMP #"C"&$9F
+ BNE NoDegCol
+ INC ColorDeg
+ LDA ColorDeg
+ CMP #7
+ BNE NoNewDeg0
+ STZ ColorDeg
+NoNewDeg0 JSR Degrade
+ CLC
+ RTS
+NoDegCol
+NoKey = *
+ CLC
+ RTS
+
+TestDown LDA BarreLgn
+ CMP #NbLgn-3
+ BEQ Down0
+ JSR GetBarreAdr
+ TAX
+ LDA Table+NbCol+NbCol+NbCol,X
+ AND #$000F
+ RTS
+Down0 LDA #$FFFF
+ RTS
+
+WaitSync PHP
+ SEP $20
+]lp LDL $E1C02E
+ CMP #$F0
+ BCC ]lp
+]lp LDL $E1C02E
+ CMP #$F0
+ BCS ]lp
+ PLP
+ RTS
+
+TestLR TAX
+ SEP $20
+ LDA Table,X
+ ORA NbCol+Table,X
+ ORA NbCol+NbCol+Table,X
+ REP $20
+ AND #$000F
+ RTS
+
+GetAlea PHP
+ SEP $20
+ LDL $E1C02E
+ EOR AleaGen
+ ADC AleaGen
+ INC AleaGen
+ DO vP8
+ SBC $C02F
+ ELSE
+ SBCL $E1C02F
+ FIN
+ ROR
+ ROR
+ ROR AleaGen
+ ROR
+ DO vP8
+ EOR $C02E
+ ADC $C02F
+ ELSE
+ EORL $E1C02E
+ ADCL $E1C02F
+ FIN
+ PLP
+ RTS
+
+ MX %00
+
+GetBarreAdr LDA BarreLgn
+ ASL
+ TAX
+ LDA MulLgn,X
+ CLC
+ ADC BarreCol
+ RTS
+
+StoreBarre JSR GetBarreAdr
+ TAX
+ STX BarrePos
+ SEP $20
+ LDA Table,X
+ AND #$0F
+ BNE Over
+ LDA Barre
+ STA Table,X
+ LDA Table+NbCol,X
+ AND #$0F
+ BNE Over
+ LDA Barre+1
+ STA Table+NbCol,X
+ LDA Table+NbCol+NbCol,X
+ AND #$0F
+ BNE Over
+ LDA Barre+2
+ STA Table+NbCol+NbCol,X
+ REP $20
+ CLC
+ RTS
+Over REP $20
+ SEC
+ RTS
+
+ClearBarre LDX BarrePos
+ SEP $20
+ STZ Table,X
+ STZ Table+NbCol,X
+ STZ Table+NbCol+NbCol,X
+ REP $20
+ RTS
+
+
+CaseAdr = *
+]A = 0
+ LUP NbLgn
+ DA 0*LargCase/2+]A
+ DA 1*LargCase/2+]A
+ DA 2*LargCase/2+]A
+ DA 3*LargCase/2+]A
+ DA 4*LargCase/2+]A
+ DA 5*LargCase/2+]A
+ DA 6*LargCase/2+]A
+ DA 7*LargCase/2+]A
+]A = HautCase*$A0+]A
+ --^
+
+MulLgn = *
+]A = 0
+ LUP NbLgn
+ DA ]A
+]A = ]A+NbCol
+ --^
+
+
+ClearAera LDX #0
+]lp STZ Table,X
+ INX
+ INX
+ CPX #NbLgn*NbCol
+ BCC ]lp
+ JSR DrawScreen
+ RTS
+
+
+*------------------------------------------------- Routine d'affichage
+* "intelligente"
+
+DrawScreen STZ Pnt
+ BRA ContDraw
+
+PlotNothing INC Pnt
+ LDA Pnt
+ CMP #NbLgn*NbCol
+ BNE ContDraw
+ RTS
+
+ContDraw LDX Pnt
+ LDA Table,X
+ BIT #%0000_0000_0001_0000
+ BNE SpecialPlot
+ BIT #%0000_0000_1000_0000
+ BNE PlotNothing
+ ORA #%0000_0000_1000_0000
+ STA Table,X
+ LDX #0
+ AND #%0000_0000_0001_1111
+ BRA NoSpecial
+SpecialPlot LDX Msk
+ AND #%0000_0000_0000_1111
+NoSpecial STX Msk0
+ ASL
+ TAY
+ LDA Pnt
+ ASL
+ TAX
+ LDA CaseAdr,X
+ TAX
+ JSR PrintOnePat
+ BRA PlotNothing
+
+PrintOnePat LDA (PtrPattern),Y
+ STA PtrShp
+ LDY Msk0
+ LDA (PtrPtrMsk),Y
+ STA PtrMsk
+ LDA #0
+ TAY
+]lp PHA
+ LDA (PtrShp),Y
+ AND (PtrMsk),Y
+ STAL Screen+Center,X
+ INY
+ INY
+ LDA (PtrShp),Y
+ AND (PtrMsk),Y
+ STAL Screen+Center+2,X
+ INY
+ INY
+ LDA (PtrShp),Y
+ AND (PtrMsk),Y
+ STAL Screen+Center+4,X
+ INY
+ INY
+ TXA
+ CLC
+ ADC #$A0
+ TAX
+ PLA
+ INC
+ CMP #HautCase
+ BNE ]lp
+ RTS
+
+*------------------------------------------------- Routine de window...
+
+ColorIn = $FF
+ColorOut = $00
+
+Window PHP
+ LDA Lgn
+ ASL
+ ASL
+ ASL
+ ASL
+ ASL
+ PHA
+ ASL
+ ASL
+ CLC
+ ADC $01,S
+ PLY
+ CLC
+ ADC #$2000
+ STA Pnt
+ LDA #$E1
+ STA Pnt+2
+
+ SEP $30
+
+ LDX ZNbCol
+ LDY Col
+ LDA #ColorOut
+ EOR BlackMode
+]lp STA [Pnt],Y
+ INY
+ DEX
+ BPL ]lp
+
+ JSR AUG_LGN
+
+ DEC ZNbLgn
+
+ STZ Buf
+
+]loop LDX ZNbCol
+ LDY Col
+ LDA #ColorOut&$F0+ColorIn&$0F
+ EOR BlackMode
+ STA [Pnt],Y
+]lp INY
+ DEX
+ BEQ END_W2
+ LDA #ColorIn
+ EOR BlackMode
+ STA [Pnt],Y
+ BRA ]lp
+
+END_W2 LDA #ColorOut&$0F+ColorIn&$F0
+ EOR BlackMode
+ STA [Pnt],Y
+
+ LDA Buf
+ CMP #$03
+ BCC NADA2
+
+ INY
+ LDA #ColorOut
+ STA [Pnt],Y
+
+NADA2 JSR AUG_LGN
+
+ INC Buf
+ DEC ZNbLgn
+ BNE ]loop
+
+ LDY Col
+ LDX ZNbCol
+ LDA #ColorOut
+ EOR BlackMode
+]loop STA [Pnt],Y
+ INY
+ DEX
+ BPL ]loop
+ LDA #ColorOut
+ STA [Pnt],Y
+
+ LDX #$02
+]loop2 PHX
+
+ JSR AUG_LGN
+
+ LDX ZNbCol
+ LDY Col
+ INY
+ INY
+ DEX
+ LDA #ColorOut
+]loop STA [Pnt],Y
+ INY
+ DEX
+ CPX #$FF
+ BNE ]loop
+
+ PLX
+ DEX
+ BNE ]loop2
+ PLP
+ RTS
+
+AUG_LGN REP $30
+ LDA Pnt
+ CLC
+ ADC #$00A0
+ STA Pnt
+ SEP $30
+ RTS
+
+ MX %00
+
+*------------------------------------------------- Routine d'affichage texte
+
+Print PLA
+ STA Msg
+ JSR Print0
+ LDA Msg
+ PHA
+ RTS
+
+Print_Rout = *
+ DEC
+ STA Msg
+Print0 = *
+]lp2 STX XValue
+]lp INC Msg
+ LDA !$0000
+Msg = *-2
+ TAY
+ AND #$00FF
+ BEQ EndPrint
+ CMP #$0C
+ BEQ Change_Color
+ CMP #$8D
+ BEQ NewLine
+ CMP #$8E
+ BEQ HalfLine
+ JSR Print_Char
+ BRA ]lp
+Change_Color TYA
+ XBA
+ SEP $20
+ STA ColorF+1
+ REP $20
+ INC Msg
+ BRA ]lp
+HalfLine LDA XValue
+ CLC
+ ADC #9*$A0
+ TAX
+ BRA ]lp2
+NewLine LDA #0
+XValue = *-2
+ CLC
+ ADC #7*$A0
+ TAX
+ BRA ]lp2
+EndPrint LDA XValue
+ CLC
+ ADC #8*$A0
+ TAX
+ RTS
+
+Special DFB " ",".",":","-","$","#","<",">","!","^","/","'"
+
+Print_Char SEP $20
+ LDY #11
+]lp CMP Special,Y
+ BEQ GoSpecial
+ DEY
+ BPL ]lp
+ BRA GoNormal
+GoSpecial TYA
+ PHA
+ PHA
+ ASL
+ ASL
+ CLC
+ ADC $01,S
+ PLY
+ TAY
+ REP $20
+ AND #$00FF
+ CLC
+ ADC #Font
+ BRA EndGetC
+
+GoNormal REP $20
+ CMP #"A"
+ BCC GetChiffre
+ SEC
+ SBC #"A"
+ LDY #Lettre
+ BRA ContGetC
+GetChiffre SEC
+ SBC #"0"
+ LDY #Chiffre
+ContGetC STY PatchDeb+1
+ PHA
+ ASL
+ ASL
+ CLC
+ ADC $01,S
+PatchDeb ADC #0
+ PLY
+
+EndGetC STA Font_Adr
+ LDA #5
+]lp2 PHA
+ PHX
+ LDA !$0000
+Font_Adr = *-2
+ INC Font_Adr
+ LDY #4
+]lp PHY
+ PHA
+ LDY #0
+ BIT #%0100_0000
+ BEQ No_Left
+ LDY #$0F
+No_Left BIT #%1000_0000
+ BEQ No_Right
+ TYA
+ ORA #$F0
+ TAY
+No_Right TYA
+ SEP $20
+ColorF AND #$FF
+NoI0 LDY Inv
+ BEQ noinv
+ LDY ColorF
+ CPY #$FF29
+ BNE noinv0
+ EOR #$FF
+ BRA noinv
+noinv0 TAY
+ AND #$0F
+ BNE ok0
+ TYA
+ ORA #$0F
+ TAY
+ok0 TYA
+ AND #$F0
+ BNE ok1
+ TYA
+ ORA #$F0
+ TAY
+ok1 TYA
+noinv STAL $E12000,x
+ REP $20
+ INX
+ PLA
+ ASL
+ ASL
+ PLY
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ PLA
+ DEC
+ BNE ]lp2
+ TXA
+ SEC
+ SBC #5*$A0-4
+ TAX
+ RTS
+
+*------------------------------------------------- Police
+
+Font DFB %00000000
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000
+
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000
+ DFB %00011000
+ DFB %00011000
+
+ DFB %00000000
+ DFB %00011000
+ DFB %00000000
+ DFB %00011000
+ DFB %00000000
+
+ DFB %00000000
+ DFB %00000000
+ DFB %01111100
+ DFB %00000000
+ DFB %00000000
+
+ DFB %01111110
+ DFB %11010000
+ DFB %01111100
+ DFB %00010110
+ DFB %11111100
+
+ DFB %11111110
+ DFB %11111110
+ DFB %11111110
+ DFB %11111110
+ DFB %11111110
+
+ DFB %00011000
+ DFB %00110000
+ DFB %01111110
+ DFB %00110000
+ DFB %00011000
+
+ DFB %00011000
+ DFB %00001100
+ DFB %01111110
+ DFB %00001100
+ DFB %00011000
+
+ DFB %00011000
+ DFB %00011000
+ DFB %00011000
+ DFB %00000000
+ DFB %00011000
+
+ DFB %00011000
+ DFB %00111100
+ DFB %01100110
+ DFB %00000000
+ DFB %00000000
+
+ DFB %00000110
+ DFB %00001100
+ DFB %00011000
+ DFB %00110000
+ DFB %01100000
+
+ DFB %00011000
+ DFB %00011000
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000
+
+
+Chiffre DFB %01111110
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11111100
+
+ DFB %01111000
+ DFB %00011000
+ DFB %00011000
+ DFB %00011000
+ DFB %01111100
+
+ DFB %11111100
+ DFB %00000110
+ DFB %01111100
+ DFB %11000000
+ DFB %01111110
+
+ DFB %11111100
+ DFB %00000110
+ DFB %00011100
+ DFB %00000110
+ DFB %11111100
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11111110
+ DFB %00000110
+ DFB %00000110
+
+ DFB %11111110
+ DFB %11000000
+ DFB %11111100
+ DFB %00000110
+ DFB %11111100
+
+ DFB %01111110
+ DFB %11000000
+ DFB %11111100
+ DFB %11000110
+ DFB %01111100
+
+ DFB %11111110
+ DFB %00001100
+ DFB %00011000
+ DFB %00011000
+ DFB %00011000
+
+ DFB %01111100
+ DFB %11000110
+ DFB %01111100
+ DFB %11000110
+ DFB %01111100
+
+ DFB %01111100
+ DFB %11000110
+ DFB %01111110
+ DFB %00000110
+ DFB %00000110
+
+Lettre DFB %01111100
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+ DFB %11000110
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+
+ DFB %01111110
+ DFB %11000000
+ DFB %11000000
+ DFB %11000000
+ DFB %01111110
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11111100
+
+ DFB %11111110
+ DFB %11000000
+ DFB %11110000
+ DFB %11000000
+ DFB %11111110
+
+ DFB %11111110
+ DFB %11000000
+ DFB %11110000
+ DFB %11000000
+ DFB %11000000
+
+ DFB %01111110
+ DFB %11000000
+ DFB %11001110
+ DFB %11000110
+ DFB %01111110
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+ DFB %11000110
+
+ DFB %11111100
+ DFB %00110000
+ DFB %00110000
+ DFB %00110000
+ DFB %11111100
+
+ DFB %00000110
+ DFB %00000110
+ DFB %00000110
+ DFB %11000110
+ DFB %01111100
+
+ DFB %11000110
+ DFB %11001100
+ DFB %11111000
+ DFB %11001100
+ DFB %11000110
+
+ DFB %11000000
+ DFB %11000000
+ DFB %11000000
+ DFB %11000000
+ DFB %11111110
+
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+
+ DFB %11000110
+ DFB %11110110
+ DFB %11011110
+ DFB %11000110
+ DFB %11000110
+
+ DFB %01111100
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %01111100
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+ DFB %11000000
+ DFB %11000000
+
+ DFB %01111100
+ DFB %11000110
+ DFB %11000110
+ DFB %11011110
+ DFB %01111110
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+ DFB %11000110
+ DFB %11000110
+
+ DFB %01111110
+ DFB %11000000
+ DFB %01111100
+ DFB %00000110
+ DFB %11111100
+
+ DFB %11111110
+ DFB %00110000
+ DFB %00110000
+ DFB %00110000
+ DFB %00110000
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %01111100
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %01111100
+ DFB %00111000
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+
+ DFB %11000110
+ DFB %01101100
+ DFB %00111000
+ DFB %01101100
+ DFB %11000110
+
+ DFB %11000110
+ DFB %01101100
+ DFB %00111000
+ DFB %00110000
+ DFB %01100000
+
+ DFB %11111110
+ DFB %00001100
+ DFB %00011000
+ DFB %01100000
+ DFB %11111110
+
+*------------------------------------------------- Affichage divers...
+
+PrintScore STZ Buf
+ LDY #11+9*$A0+124
+ LDX #2
+]lp PHX
+ LDA Score,X
+ AND #$00FF
+ TYX
+ JSR Print_2Digits
+ TXY
+ PLX
+ DEX
+ BNE NoF
+ INC Buf
+NoF BPL ]lp
+ RTS
+
+PrintTotal STZ Buf
+ LDY #11+49*$A0+132
+ LDX #1
+]lp PHX
+ LDA Total,X
+ AND #$00FF
+ TYX
+ JSR Print_2Digits
+ TXY
+ PLX
+ DEX
+ BNE NoF0
+ INC Buf
+NoF0 BPL ]lp
+ RTS
+
+PrintLevel LDA #1
+ STA Buf
+ LDX #11+29*$A0+140
+ LDA Level
+ JSR Print_2Digits
+ SEP $30
+ LDA LevelSpeed
+ PHA
+ AND #$F0
+ LSR
+ LSR
+ LSR
+ LSR
+ JSR Translate
+ STA SP
+ PLA
+ AND #$0F
+ JSR Translate
+ STA SP+1
+ REP $30
+ LDX #11+29*$A0+120
+ JSR Print
+SP ASC "??",00
+ RTS
+
+Print_2Digits PHA
+ AND #$F0
+ BEQ MaybeZero
+ INC Buf
+ INC Buf
+ LSR
+ LSR
+ LSR
+ LSR
+ CLC
+ ADC #"0"
+ BRA DrawR
+MaybeZero LDA #"0"
+ LDY Buf
+ CPY #2
+ BCS DrawR
+PatchS0 LDA #" "
+DrawR JSR Print_Char
+ PLA
+ AND #$0F
+ BEQ MaybeZero0
+ INC Buf
+ INC Buf
+ CLC
+ ADC #"0"
+ BRA DrawL
+MaybeZero0 LDA #"0"
+ LDY Buf
+ CPY #1
+ BCS DrawL
+PatchS1 LDA #" "
+DrawL JMP Print_Char
+
+ScorePerBrick DA $50 ; Bonus
+ DA $100
+ DA $150
+ DA $200
+ DA $250
+ DA $300
+ DA $350
+ DA $500
+ DA $500
+
+Palette HEX 0000F00099099900DD00630C960FA10B
+ HEX E50F5E088F0BA401F9062A0D7C0FFF0F
+
+ZTop HEX F2222222222222222220
+ZTop0
+ZMiddle
+ZBottom0 HEX 21111111111111111110
+ZBottom HEX 00000000000000000000
+
+PrintHiScore LDX #11+23*$A0+11
+ STZ Pnt
+]loop PHX
+ LDA Pnt
+ CLC
+ ADC #HiScoreList
+ JSR Print_Rout
+ LDA #"."
+ STA PatchS0+1
+ STA PatchS1+1
+ JSR Print_Char
+ STZ Buf
+ LDA Pnt
+ CLC
+ ADC #HiScoreList+8
+ STA Pnt+2
+ LDY #2
+]lp PHY
+ LDA (Pnt+2),Y
+ AND #$00FF
+ JSR Print_2Digits
+ PLY
+ DEY
+ BNE NoF2
+ INC Buf
+NoF2 BPL ]lp
+
+ PLA
+ CLC
+ ADC #20*$A0
+ TAX
+ LDA Pnt
+ CLC
+ ADC #12
+ STA Pnt
+ CMP #8*12
+ BCC ]loop
+ LDA #" "
+ STA PatchS0+1
+ STA PatchS1+1
+ RTS
+
+*------------------------------------------------- Routine de gestion
+* des high-scores...
+
+CheckHighScore LDX #12*7
+]lp LDA Score+2
+ CMP HiScoreList+10,X
+ BEQ MoreCompare
+ BCS FindNext
+ BRA FoundLow
+MoreCompare LDA Score
+ CMP HiScoreList+8,X
+ BEQ FoundLow
+ BCS FindNext
+FoundLow CPX #12*7
+ BNE SomeHigh
+ SEC
+ RTS ; NoHigh
+FindNext TXA
+ SEC
+ SBC #12
+ TAX
+ BCS ]lp
+SomeHigh TXA
+ CLC
+ ADC #12
+ STA Buf
+
+ LDX #12*7
+]lp2 CPX Buf
+ BEQ EndMove
+ PHX
+ LDY #6
+]lp LDA HiScoreList-12,X
+ STA HiScoreList,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ SEC
+ SBC #12
+ TAX
+ BCS ]lp2
+
+EndMove LDX Buf
+ LDA Score
+ STA HiScoreList+8,X
+ LDA Score+2
+ STA HiScoreList+10,X
+
+ LDA Buf
+ PHA
+
+ LDA #130
+ STA Lgn
+ LDA #$36+3
+ STA Col
+ LDA #30
+ STA ZNbLgn
+ LDA #$2B+2
+ STA ZNbCol
+ JSR Window
+
+ LDX #138*$A0+$38+4
+ JSR Print
+ HEX 0CFF
+ TXT "ENTER NAME",00;"VOTRE NOM:",00
+
+ SEP $30
+ STL $E1C010
+
+ LDX #0
+ LDA #" "
+]lp STA NameAdr,X
+ INX
+ CPX #7
+ BNE ]lp
+ JSR PrintName
+
+ STZ Pnt
+
+]reloop STL $E1C010
+
+]loop LDX Pnt
+ LDA #"#"
+ STA NameAdr,X
+ JSR PrintName
+
+ LDX #12
+]lp LDL $E1C000
+ BMI KeyPress
+ JSR WaitSync
+ DEX
+ BNE ]lp
+
+ LDX Pnt
+ LDA #" "
+ STA NameAdr,X
+ JSR PrintName
+
+ LDX #12
+]lp LDL $E1C000
+ BMI KeyPress
+ JSR WaitSync
+ DEX
+ BNE ]lp
+
+ BRA ]loop
+
+KeyPress LDY Pnt
+ CMP #"M"&$9F
+ BEQ NoName
+ CMP #$9B
+ BEQ NoName
+ CMP #$FF
+ BEQ Delete
+ CMP #"H"&$9F
+ BEQ Delete
+NoDel CPY #7
+ BEQ ]reloop
+ CMP #" "
+ BCC ]reloop
+ CMP #"Z"+1
+ BCC OkCar
+ SEC
+ SBC #$20
+OkCar STA NameAdr,Y
+ INC Pnt
+ BRA ]reloop
+
+Delete CPY #0
+ BEQ ]reloop
+ LDA #" "
+ STA NameAdr,Y
+ DEC Pnt
+ BRA ]reloop
+
+NoName LDY Pnt
+ LDA #" "
+ STA NameAdr,Y
+
+ PLX
+ PLA ; Empile sur 16bits
+
+ LDY #0
+]lp LDA NameAdr,Y
+ STA HiScoreList,X
+ INY
+ INX
+ CPY #7
+ BNE ]lp
+
+ REP $30
+ LDA #$FFFF
+ STA FlagHi
+ JSR PrintHiScore
+ CLC
+ RTS
+
+PrintName PHP
+ REP $30
+ LDX #138+8*$A0+$38+4
+ JSR Print
+ ASC "<"
+NameAdr ASC "# "
+ ASC ">",00
+ PLP
+ RTS
+
+ DO vP8
+ ELSE
+UserId DS 2
+MasterId DS 2
+ FIN
+
+*------------------------------------------------- Patterns et masques...
+
+PatternList DA PatternList1
+ DA PatternList2
+ DA PatternList3
+ DA PatternList4
+ DA PatternList5
+ DA 0
+
+MskList DA MskCarre
+ DA MskRond
+ DA MskCarre
+ DA MskRondB
+ DA MskCarre
+
+MskCarre DA MskList0
+ DA MskList1
+ DA MskList2
+ DA MskList3
+ DA MskList4
+ DA MskList5
+ DA PatBlank
+
+MskRond DA MskList0
+ DA MskRond1
+ DA MskRond2
+ DA MskRond3
+ DA MskRond4
+ DA MskRond5
+ DA PatBlank
+
+MskRondB DA MskList0
+ DA MskRondB1
+ DA MskRondB2
+ DA MskRondB3
+ DA MskRondB4
+ DA MskRondB5
+ DA PatBlank
+
+
+PatternList1 DA PatBlank
+ DA Pat0
+ DA Pat1
+ DA Pat2
+ DA Pat3
+ DA Pat4
+ DA Pat5
+ DA Blanc0
+
+PatternList2 DA PatBlank
+ DA Ball0
+ DA Ball1
+ DA Ball2
+ DA Ball3
+ DA Ball4
+ DA Ball5
+ DA Blanc1
+
+PatternList3 DA PatBlank
+ DA En0
+ DA En1
+ DA En2
+ DA En3
+ DA En4
+ DA En5
+ DA Blanc0
+
+PatternList4 DA PatBlank
+ DA Tr0
+ DA Tr1
+ DA Tr2
+ DA Tr3
+ DA Tr4
+ DA Tr5
+ DA Blanc1
+
+
+PatternList5 DA PatBlank
+ DA Le0
+ DA Le1
+ DA Le2
+ DA Le3
+ DA Le4
+ DA Le5
+ DA Blanc0
+
+En0 HEX DEEEEEEEEEED
+ HEX 0DDEEEEEEDD0
+ HEX E0DDEEEEDD0E
+ HEX EE0DDEEDD0ED
+ HEX EEE0DDDD0EDD
+ HEX EEDD0ED0DEDD
+ HEX EDD0EEEE0DDD
+ HEX ED0EEEEEE0DD
+ HEX D0EEEEEEEE0D
+ HEX 0EEDDDDDDDE0
+ HEX EDDDDDDDDDDD
+
+En1 HEX BCCCCCCCCCCB
+ HEX 0BBCCCCCCBB0
+ HEX C0BBCCCCBB0C
+ HEX CC0BBCCBB0CB
+ HEX CCC0BBBB0CBB
+ HEX CCBB0CB0BCBB
+ HEX CBB0CCCC0BBB
+ HEX CB0CCCCCC0BB
+ HEX B0CCCCCCCC0B
+ HEX 0CCBBBBBBBC0
+ HEX CBBBBBBBBBBB
+
+En2 HEX 9AAAAAAAAAA9
+ HEX 099AAAAAA990
+ HEX A099AAAA990A
+ HEX AA099AA990A9
+ HEX AAA099990A99
+ HEX AA990A909A99
+ HEX A990AAAA0999
+ HEX A90AAAAAA099
+ HEX 90AAAAAAAA09
+ HEX 0AA9999999A0
+ HEX A99999999999
+
+En3 HEX 788888888887
+ HEX 077888888770
+ HEX 807788887708
+ HEX 880778877087
+ HEX 888077770877
+ HEX 887708707877
+ HEX 877088880777
+ HEX 870888888077
+ HEX 708888888807
+ HEX 088777777780
+ HEX 877777777777
+
+En4 HEX 566666666665
+ HEX 055666666550
+ HEX 605566665506
+ HEX 660556655065
+ HEX 666055550655
+ HEX 665506505655
+ HEX 655066660555
+ HEX 650666666055
+ HEX 506666666605
+ HEX 066555555560
+ HEX 655555555555
+
+En5 HEX 344444444443
+ HEX 033444444330
+ HEX 403344443304
+ HEX 440334433043
+ HEX 444033330433
+ HEX 443304303433
+ HEX 433044440333
+ HEX 430444444033
+ HEX 304444444403
+ HEX 044333333340
+ HEX 433333333333
+
+Ball0 HEX 000DEEEED000
+ HEX 00EEFEEEEE00
+ HEX 0EEFFFEEDEE0
+ HEX DEEEFEEEEDED
+ HEX EEEEEEEEEDDE
+ HEX EEEEEEEEEDDE
+ HEX EDEEEEEEDDDE
+ HEX DEDEEEEDDDED
+ HEX 0EDDDDDDDDE0
+ HEX 00EEDDDDEE00
+ HEX 000DEEEED000
+
+Ball1 HEX 000BCCCCB000
+ HEX 00CCFCCCCC00
+ HEX 0CCFFFCCBCC0
+ HEX BCCCFCCCCBCB
+ HEX CCCCCCCCCBBC
+ HEX CCCCCCCCCBBC
+ HEX CBCCCCCCBBBC
+ HEX BCBCCCCBBBCB
+ HEX 0CBBBBBBBBC0
+ HEX 00CCBBBBCC00
+ HEX 000BCCCCB000
+
+Ball2 HEX 0009AAAA9000
+ HEX 00AAFAAAAA00
+ HEX 0AAFFFAA9AA0
+ HEX 9AAAFAAAA9A9
+ HEX AAAAAAAAA99A
+ HEX AAAAAAAAA99A
+ HEX A9AAAAAA999A
+ HEX 9A9AAAA999A9
+ HEX 0A99999999A0
+ HEX 00AA9999AA00
+ HEX 0009AAAA9000
+
+Ball3 HEX 000788887000
+ HEX 0088F8888800
+ HEX 088FFF887880
+ HEX 7888F8888787
+ HEX 888888888778
+ HEX 888888888778
+ HEX 878888887778
+ HEX 787888877787
+ HEX 087777777780
+ HEX 008877778800
+ HEX 000788887000
+
+Blanc1 HEX 000FFFFFF000
+ HEX 00FFFFFFFF00
+ HEX 0FFFFFFFFFF0
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX 0FFFFFFFFFF0
+ HEX 00FFFFFFFF00
+ HEX 000FFFFFF000
+
+Ball4 HEX 000566665000
+ HEX 0066F6666600
+ HEX 066FFF665660
+ HEX 5666F6666565
+ HEX 666666666556
+ HEX 666666666556
+ HEX 656666665556
+ HEX 565666655565
+ HEX 065555555560
+ HEX 006655556600
+ HEX 000566665000
+
+Ball5 HEX 000344443000
+ HEX 0044F4444400
+ HEX 044FFF443440
+ HEX 3444F4444343
+ HEX 444444444334
+ HEX 444444444334
+ HEX 434444443334
+ HEX 343444433343
+ HEX 043333333340
+ HEX 004433334400
+ HEX 000344443000
+
+PatBlank HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+Pat0 HEX EEEEEEEEEEEE
+ HEX EEEEEEEEEEED
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEDDDDDDDDED
+ HEX EDDDDDDDDDDD
+
+Pat1 HEX CCCCCCCCCCCC
+ HEX CCCCCCCCCCCB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCBBBBBBBBCB
+ HEX CBBBBBBBBBBB
+
+Pat2 HEX AAAAAAAAAAAA
+ HEX AAAAAAAAAAA9
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AA99999999A9
+ HEX A99999999999
+
+Pat3 HEX 888888888888
+ HEX 888888888887
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 887777777787
+ HEX 877777777777
+
+Pat4 HEX 666666666666
+ HEX 666666666665
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 665555555565
+ HEX 655555555555
+
+Pat5 HEX 444444444444
+ HEX 444444444443
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 443333333343
+ HEX 433333333333
+
+Blanc0
+MskList0 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskList1 HEX 000000000000
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 000000000000
+
+MskList2 HEX 000000000000
+ HEX 000000000000
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 000000000000
+ HEX 000000000000
+
+MskList3 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskList4 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 0000FFFF0000
+ HEX 0000FFFF0000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskList5 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 00000FF00000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond1 HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 0000FFFF0000
+ HEX 000000000000
+
+MskRond2 HEX 000000000000
+ HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 000FFFFFF000
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 000FFFFFF000
+ HEX 0000FFFF0000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond3 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 0000FFFF0000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond4 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 00000FF00000
+ HEX 0000FFFF0000
+ HEX 00000FF00000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond5 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 00000FF00000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+
+MskRondB1 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFFF0000FFFF
+ HEX FFFFF00FFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB2 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFF000000FFF
+ HEX FFF000000FFF
+ HEX FFF000000FFF
+ HEX FFFFF00FFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB3 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFF000000FFF
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX FFF000000FFF
+ HEX FFFF0000FFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB4 HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFF000000FFF
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX F0000000000F
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX FFF000000FFF
+ HEX FFFFF00FFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB5 HEX FFFF0000FFFF
+ HEX FF00000000FF
+ HEX F0000000000F
+ HEX F0000000000F
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX F0000000000F
+ HEX F0000000000F
+ HEX FF00000000FF
+ HEX FFFF0000FFFF
+
+Tr0 HEX 000DEEEED000
+ HEX 00EEEDDDEE00
+ HEX 0EFFEDDDDEE0
+ HEX DEFEDDDDDEED
+ HEX EEEDDDDDDEFE
+ HEX EDDDDDDDDEFE
+ HEX EDDDDDDDEFFE
+ HEX DEDDDDDEFFED
+ HEX 0EDDEEFFFFE0
+ HEX 00EEFFFFEE00
+ HEX 000DEEEED000
+
+Tr1 HEX 000BCCCCB000
+ HEX 00CCCBBBCC00
+ HEX 0CFFCBBBBCC0
+ HEX BCFCBBBBBCCB
+ HEX CCCBBBBBBCFC
+ HEX CBBBBBBBBCFC
+ HEX CBBBBBBBCFFC
+ HEX BCBBBBBCFFCB
+ HEX 0CBBCCFFFFC0
+ HEX 00CCFFFFCC00
+ HEX 000BCCCCB000
+
+Tr2 HEX 0009AAAA9000
+ HEX 00AAA999AA00
+ HEX 0AFFA9999AA0
+ HEX 9AFA99999AA9
+ HEX AAA999999AFA
+ HEX A99999999AFA
+ HEX A9999999AFFA
+ HEX 9A99999AFFA9
+ HEX 0A99AAFFFFA0
+ HEX 00AAFFFFAA00
+ HEX 0009AAAA9000
+
+Tr3 HEX 000788887000
+ HEX 008887778800
+ HEX 08FF87777880
+ HEX 78F877777887
+ HEX 8887777778F8
+ HEX 8777777778F8
+ HEX 877777778FF8
+ HEX 78777778FF87
+ HEX 087788FFFF80
+ HEX 0088FFFF8800
+ HEX 000788887000
+
+Tr4 HEX 000566665000
+ HEX 006665556600
+ HEX 06FF65555660
+ HEX 56F655555665
+ HEX 6665555556F6
+ HEX 6555555556F6
+ HEX 655555556FF6
+ HEX 56555556FF65
+ HEX 065566FFFF60
+ HEX 0066FFFF6600
+ HEX 000566665000
+
+Tr5 HEX 000344443000
+ HEX 004443334400
+ HEX 04FF43333440
+ HEX 34F433333443
+ HEX 4443333334F4
+ HEX 4333333334F4
+ HEX 433333334FF4
+ HEX 34333334FF43
+ HEX 043344FFFF40
+ HEX 0044FFFF4400
+ HEX 000344443000
+
+Le0 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFFF2002FF22
+ HEX FFF200002F22
+ HEX FFF00FF00F22
+ HEX FFF000000F22
+ HEX FFF00FF00F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le1 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF00000FF22
+ HEX FFF002F20F22
+ HEX FFF000002F22
+ HEX FFF002F20F22
+ HEX FFF00000FF22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le2 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF200002F22
+ HEX FFF002FF0F22
+ HEX FFF002FFFF22
+ HEX FFF002FF0F22
+ HEX FFF200002F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le3 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF000002F22
+ HEX FFF002F20F22
+ HEX FFF002FF0F22
+ HEX FFF002F20F22
+ HEX FFF000002F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le4 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF000000F22
+ HEX FFF002FFFF22
+ HEX FFF0000FFF22
+ HEX FFF002FFFF22
+ HEX FFF000000F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le5 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF000000F22
+ HEX FFF002FFFF22
+ HEX FFF0000FFF22
+ HEX FFF002FFFF22
+ HEX FFF002FFFF22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+
+*------------------------------------------------- Logo Beyond
+
+BeyondLogo HEX 87733828000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000000000000000000000110FFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFF0110F0000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000F0110F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000F0110F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCCCC0E00C00EEEEEEEEEEEE
+ HEX EEEEEEEE00A00EEEE000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCCCCCCC000
+ HEX CCC00EEEEEEEEEEEEEEEEEE00AAA00EE
+ HEX E000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCCCC00CCCCC00EEEEEEEEEE
+ HEX EEEEEE00AAAAA00EE000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCCCCCC00CC
+ HEX CCCCC00EEEEEEEEEEEEEE00AAAAAAA00
+ HEX E000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCC00CCCCCCCCC00EEEEEEEE
+ HEX EEEE00AAAAAAAAA00000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCCCC00CCCC
+ HEX CCCCCCC00EEEEEEEEEE00AAAAAAAAAAA
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCC00CCCCCCCCCCCCC00EEEEEE
+ HEX EE00AAAAAAAAAAAAA000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCC000000CC
+ HEX CCCCC000000EEEEEE000000AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCCCC0CCCCCCC0EEEE00EEEE
+ HEX EEEEEE0AAAAAAA0EE000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
+ HEX CCCCC000000000000000000AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCC0CCCCCCC0AAAA0E00AA
+ HEX AAAAAA0AAAAAAA000000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000EE00AAAAAAA0AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00
+ HEX AAAAAA0AAAAAAA000000F0000F000EEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEE00AAAAA0AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX 00AAAA0AAAAAAA000000F0000F000EEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEE00AAA0AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX 0000AA0AAAAAAA000000F0000F000EEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEE000000A0AAAAAAA0A
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00
+ HEX 0000000AAAAAAA0AA000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000EE0000000000AAAAAAA0A
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCC0CCCCCCC0AAAA0E00A0
+ HEX 0000000AAAAAAA0AA000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
+ HEX CCCCC0AAAA000AA00000000AAAAAAA0A
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCC0CCCCCCC0AAAA00AAA0
+ HEX 0000000AAAAAAA0AA000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
+ HEX CCCCC0AAAA0AAAA00000000AAAAAAAAA
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCC000CCCCCC0AAAAAAAAA0
+ HEX 0000000AAAAAAAAAA000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCCCCC
+ HEX CCCCC0AAAAAAAAA00000000AAAAAAAAA
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCCCCCCCCCC0AAAAAAAAA0
+ HEX 0000000AAAAAAAAAA000F0000F000EEE
+ HEX EEEEEEE000000000BCCCCCCCCCCCCCCC
+ HEX CCCCB0AAAAAAAAA00000000AAAAAAAAA
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX 0CCCCCCCCCCCCCCCCCCC09AAAAAAAAA0
+ HEX 0000000AAAAAAAAA9000F0000F000EEE
+ HEX EEEEEEE00000000000CCCCCCCCCCCCCC
+ HEX CCC09AAAAAAAAAA00000000AAAAAAAAA
+ HEX 0000F0000F000EEEEEEEEEE000000000
+ HEX 000BCCCCCCCCCCCCCB09AAAAAAAAAAA0
+ HEX 0000000AAAAAAAA00000F0000F000EEE
+ HEX EEEEEEE00000000000000BCCCCCCCCCB
+ HEX 09AAAAAAAAAAAAA00000000AAAAAA900
+ HEX 0000F0000F0000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000F0000F000F2222222220F2222222
+ HEX 0F22200000F2220F220F222000F220F2
+ HEX 220F220F222222222000F0000F000200
+ HEX 00000020200000020200200000200202
+ HEX 02020002020020200022020200000000
+ HEX 2000F0000F0002222222222022222202
+ HEX 02002000002222020202222020202022
+ HEX 22020202222222222000F0000F000000
+ HEX 00000000000002020200200000000002
+ HEX 02000002022020000020020000000000
+ HEX 0000F0000F000F2222200000F2220202
+ HEX 0200200000F22202020F2220202020F2
+ HEX 2202020F222222222000F0000F000200
+ HEX 00200000200202020200200000200202
+ HEX 02020020002020200202020200000000
+ HEX 2000F0000F0002000020000020020202
+ HEX 02002000002002020202002000202020
+ HEX 02020202222220002000F0000F000200
+ HEX 00200000200202020200200000200202
+ HEX 02020020002020200202020000002000
+ HEX 2000F0000F0002000022222020022F02
+ HEX 020022222020022F0202002000202020
+ HEX 0202020F2222F0002000F0000F000200
+ HEX 00000020200000020200000020200000
+ HEX 02020020002020200202020200000000
+ HEX 2000F0000F0002000000002020000002
+ HEX 02000000202000000202002000202020
+ HEX 02020202000000002000F0000F000222
+ HEX 22222220222222220222222220222222
+ HEX 22022220002220222202220222222222
+ HEX 2000F0000F0000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000F0000FFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFF00000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000111100000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000011110000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000
+
+*------------------------------------------------- Scores...
+
+SignatureTest DS 8
+Signature ASC "BeyondGS"
+
+HiScoreList TXT "HULK ",00;"OLIVIER",00
+ ADRL $00010000
+ TXT "EARTH ",00;"J-YVES ",00
+ ADRL $00009000
+ TXT "BUSH ",00;"BERNARD",00
+ ADRL $00008000
+ TXT "AXE ",00;"ERIC ",00
+ ADRL $00007000
+ TXT "PERFECT",00;"HUBERT ",00
+ ADRL $00006000
+ TXT "POWERS ",00;"J-LUC ",00
+ ADRL $00005000
+ TXT "TUGBOAT",00;"YVAN ",00
+ ADRL $00004000
+ TXT "DINO ",00;"EMILE ",00
+ ADRL $00000001
+
+
+ DO vP8
+ ELSE
+ MX %00
+PgmDeath PHA
+ PEA ^DeathMsg
+ PEA DeathMsg
+ LDX #$1503
+ JSL $E10000
+
+DeathMsg STR 'Beyond Colums Fatal Error :$'
+ FIN
+
+ DS \
+
+ DO vP8
+BufIO = *
+PathName = *+$400
+ FIN
+
diff --git a/fta/Beyond.SYS16 b/fta/Beyond.SYS16
new file mode 100644
index 0000000..404fe11
Binary files /dev/null and b/fta/Beyond.SYS16 differ
diff --git a/fta/Fun Columns by O Goguel_EN.S b/fta/Fun Columns by O Goguel_EN.S
new file mode 100644
index 0000000..4ae96b7
--- /dev/null
+++ b/fta/Fun Columns by O Goguel_EN.S
@@ -0,0 +1,4517 @@
+REL
+* Fun Columns
+* by O. Goguel and FTA
+
+* ToolBox Mag No 4
+* Copyright 1990/1991 FTA
+* Copyright 1990/1991 Toolbox
+* 6 Rue H. Barbusse - 95100 Argenteuil - France
+
+* Creation: 22 December 1990
+* Last MAY : 03 February 1991
+
+* Assembly under Merlin 16+ only
+
+* !vP8 !vP16!
+* ! 1 ! x ! ...... Version SYS Prodos8 (OA-A)
+* ! 0 ! 1 ! ...... Version S16 Gs/Os (OA-6)
+* ! 0 ! 0 ! ...... Version CDA Gs/Os (OA-6)
+
+* Language : 0=French, 1=English
+
+vP8 = 0
+vP16 = 1
+Language = 0
+
+ LST OFF
+
+* The source is rarely commented on because managing a game of this type
+* is relatively simple and poses no programming
+* problems...
+
+* Only a few _tinkerings_ in GS/OS and PRODOS are explained...
+* otherwise, just the names of the major parts are given...
+
+
+*------------------------------------------------- Macros
+
+TXT MAC
+ DO Language
+ ASC ]1
+ ELSE
+ ASC ]2
+ FIN
+ EOM ; english / french
+
+INK MAC
+ INC ]1
+ BNE Here
+ INC ]1+1
+Here EOM ; increment
+
+
+_Err MAC
+ BCC NoErr
+ BRL PgmDeath
+NoErr EOM ; error
+
+STL MAC
+ DO vP8
+ STA ]1
+ ELSE
+ STAL ]1
+ FIN
+ EOM ; store accumulator - long
+
+LDL MAC
+ DO vP8
+ LDA ]1
+ ELSE
+ LDAL ]1
+ FIN
+ EOM ; load accumulator - long
+
+BEQL MAC
+ BNE Here
+ BRL ]1
+Here EOM ; branch if equal - long
+
+BNEL MAC
+ BEQ Here
+ BRL ]1
+Here EOM ; brance if not equal - long
+
+*------------------------------------------------- Constants & Addresses
+
+Screen = $E12000 ; start of screen area
+ZPage = $1F00 ; zero page
+
+NbLgn = 18 ; Number of blocks per Line
+NbCol = 8 ; Number of Blocks per Column
+HautCase = 11 ; Size Blocks (box height)
+LargCase = 12 ; " " (box width)
+Center = $38+$A0
+
+
+
+*------------------------------------------------- Headers
+
+
+* Header Prodos8
+*----------------
+ DO vP8
+ ORG $2000
+BeginningOfFile = *
+ TYP $FF ; SYS file
+ XC
+ XC
+ ELSE
+BeginningOfFile = *
+
+* P16 Header
+*-----------
+* REL
+ DO vP16
+ DSK Beyond.SYS16.L
+ ELSE
+
+* CDA Header
+*-----------
+ TYP CDA
+ DSK Beyond.CDA.L
+ DO Language
+ STR 'Fun Columns by FTA'
+ ELSE
+ STR 'Fun Columns par FTA'
+ FIN
+ ADRL START
+ ADRL ENDCDA
+ FIN
+ FIN
+
+*------------------------------------------------- Page Zero
+
+ DUM $00
+CaseList DS NbCol*2 ; box list
+Table DS NbLgn*NbCol ; board
+Pnt DS 4 ; points?
+Lgn DS 2 ; line
+Col DS 2 ; column
+ZNbLgn DS 2 ; Z Nb line
+ZNbCol DS 2 ; Z Nb column
+Barre DS 3 ; bar/rod
+BarreCol DS 2 ; bar column
+BarreLgn DS 2 ; bar line
+BarrePos DS 2 ; bar position
+AleaGen DS 2 ; hazard/random gen
+LevelSpeed DS 2
+Compteur DS 2 ; counter
+Col0 DS 2 ; column 0?
+Lgn0 DS 2 ; line 0?
+Flag DS 2
+CaseTest DS 2 ; box test
+Buf DS 2
+Msk DS 2
+Msk0 DS 2
+Score DS 4
+Total DS 2
+Level DS 2
+Level0 DS 2
+Inv DS 2
+CycleCount DS 2
+SaveScreen DS 4
+FlagHi DS 2
+Counter DS 2
+PntPath DS 4
+PtrMsk DS 2
+Step DS 2
+PtrPattern DS 2 ; pointer to pattern?
+PtrPatPos DS 2 ; pointer to pattern position
+PtrPtrMsk DS 2 ; pointer to pattern mask
+BarreCol0 DS 2 ; bar colour 0
+PtrShp DS 2 ; pointer to shape
+BarreNext DS 3 ; next bar
+BlackMode DS 2
+AlreadyNext DS 2
+ColorDeg DS 2 ; color gradient?
+XColor DS 2
+PatchActif DS 2 ; active patch
+NextMode DS 2
+ DEND
+
+*------------------------------------------------- Beginning
+
+START DO vP8
+ ELSE
+ DO vP16
+ ELSE
+ PHP ; Initialization
+ PHD ; CDA version only
+ PHB ; save processor status, direct page and data bank registers onto stack
+ SEI ; disable interrupts
+ FIN
+ FIN
+
+ PHK ; push program bank
+ PLB ; pull data bank
+
+* Clear screen text
+
+ SEP $30 ; 8 bit accum and index registers
+]lp LDL $E1C02E
+ CMP #$F0
+ BNE ]lp
+
+ LDX #0
+ LDA #" "
+]lp STL $000400,X
+ STL $000480,X
+ STL $000500,X
+ STL $000580,X
+ STL $000600,X
+ STL $000680,X
+ STL $000700,X
+ STL $000780,X
+ STAL $010400,X
+ STAL $010480,X
+ STAL $010500,X
+ STAL $010580,X
+ STAL $010600,X
+ STAL $010680,X
+ STAL $010700,X
+ STAL $010780,X
+
+ INX
+ CPX #$78
+ BNE ]lp
+
+* Saving and updating the video context
+
+ LDL $E1C036
+ ORA #$80
+ STL $E1C036
+ LDL $E1C029
+ STA Save29+1
+ ORA #$40
+ STL $E1C029
+ LDL $E1C035
+ STA Save35+1
+ LDL $E1C034
+ STA Save34+1
+ LDA #$1E
+ STL $E1C035
+
+ DO vP8
+
+*------------------------------------------------- P8 initialization
+
+* Search for the full pathname under which
+* BEYOND was launched since P8...
+
+* There is in theory no way to know the name of
+* the current application under P8 (unlike GS/OS)
+* but you can easily _with a little fiddling_
+* get it back...
+
+* This routine uses Prodos entry points not
+* guaranteed by Apple, but works with all
+* existing versions of P8...
+
+
+* First of all we take the current prefix...
+
+ JSR $BF00
+ DFB $C7 ; GetPrefix
+ DA PrefixParm
+
+* Then, we will find in $D700 bank 0 of the language card
+* a series of file names in Prodos format which constitutes the pathname
+* that we are looking for... It is therefore enough to add them one after the other
+* others at the initial prefix (if it exists)
+
+ LDA $C068
+ PHA
+ LDA $C08B
+ LDA $C08B
+
+ LDA PathName
+ BNE AlreadyPath
+
+ LDA #'/'
+ STA PathName+1
+ LDA #1
+AlreadyPath INC
+ STA $02
+ TAX
+ STZ $00
+ LDA #$D7
+ STA $01
+]lp2 LDA ($00)
+ BEQ EndPath
+ TAY
+]lp INK $00
+ LDA ($00)
+ STA PathName,X
+ INX
+ DEY
+ BNE ]lp
+ INK $00
+ LDA ($00)
+ BEQ EndPath
+ LDA #'/'
+ STA PathName,X
+ INX
+ BRA ]lp2
+
+EndPath DEX
+ STX PathName
+
+* Only small difficulty: the names that we have just found contained
+* perhaps part of the current prefix... If this is the case, you must
+* purify the pathname that we have just created...
+
+ LDX $02
+ CPX #2
+ BEQ NoDoublePath
+
+ LDY #2
+]lp LDA PathName,Y
+ CMP PathName,X
+ BNE NoDoublePath
+ INX
+ INY
+ CPY $02
+ BNE ]lp
+
+ LDY #2
+ LDX $02
+]lp LDA PathName,X
+ STA PathName,Y
+ CPX PathName
+ BEQ NewLgth
+ INX
+ INY
+ BRA ]lp
+NewLgth LDA PathName
+ SEC
+ SBC $02
+ INC
+ INC
+ STA PathName
+
+NoDoublePath PLA ; We disconnect
+ STA $C068
+; the language card
+
+* So we finally have @ the Pathname address the full name of the application
+* P8 in progress...
+
+ CLC
+ XCE
+ REP $30
+ LDA #ZPage ; Fixed page zero
+ TCD ; for P8
+ LDX #$100-2
+]lp STZ $00,X
+ DEX
+ DEX
+ BPL ]lp
+
+ ELSE
+
+*------------------------------------------------- GS/OS and CDA initialization
+
+ CLC
+ XCE
+ REP $30
+ PEA $0000
+ LDX #$0202 ; MMStartup
+ JSL $E10000
+ _Err
+ PLA
+ STA MasterId
+ ORA #$0100
+ STA UserId ; ID recovery
+; of the application
+
+ PEA $0000
+ PEA $0000
+ PEA $0000
+ PEA $0100
+ LDA UserId
+ PHA
+ PEA $C001
+ PEA $0000
+ PEA $0000
+ LDX #$0902 ; New Handle
+ JSL $E10000
+ _Err
+ PLA
+ PLA
+ TSC
+ SEC
+ SBC #4
+ TCS
+ INC
+ TCD
+ LDA [$00]
+ TAX
+ TSC
+ CLC
+ ADC #4
+ TCS
+ TXA
+ TCD ; Recovery of a
+; page zero thanks to NewHandle
+
+ LDX #$100-2
+]lp STZ $00,X
+ DEX
+ DEX
+ BPL ]lp
+
+
+* Attention !!!
+* -------------
+
+* Throughout the rest of the program, we will _as usual_ everything
+* manage by ourselves...(display, file errors...)
+
+* Unfortunately, we will be slightly hampered by GS/OS which has the
+* possibility of displaying dialog windows (text or graphics)
+* to alert us to possible errors...
+
+* Theoretically, the SetSysPref call allows you to tell GS/OS not to
+* take care of error handling...
+
+ JSL $E100A8
+ DA $200F ; GetSysPref
+ ADRL SysDefaultParms
+
+ JSL $E100A8
+ DA $200C ; SetSysPref
+ ADRL SysParms
+
+* Unfortunately, in some cases GS/OS will -despite preferences
+* requested - display certain error windows which will be fatal
+* @ our application and the system which are not intended to coexist
+* outside the limits that have been defined by your servant...
+
+* We are therefore going to patch GS/OS, since we will stop at nothing, and
+* that no approved appeal allows this to be done...
+* We are not going to let ourselves be dominated by an operating system.
+* any...
+
+* For this, I "examined" a part of GS/OS to go back to @
+* the routine that interests me and which is point{ by a vector _of which
+* his address, although not declared, seems immovable to me..._ in $01FC98
+
+* If we follow what is pointed by this vector, we find a piece of routine
+* which begins with:
+*
+* LSR
+* BCS AfficherFenetre
+* LDAL $00B9F6 ; Preference test
+* BMI AfficherFenetre ; (Bit15=Affichage)
+* ...
+* RTL
+* Aff_Fenetre ... (Show_Window)
+
+* And we can therefore clearly see the BCS which can force the display of a window
+* despite the state of the Preference flag...
+
+* We will therefore divert the vector at $01FC98 towards a routine which returns
+* the accumulator @ 00 so that the BCS is never taken, and so
+* we will never have unwanted windows on the screen...
+
+* Please note that we will remove our patch when leaving, of course...
+* and that our application still manages errors even if GS/OS does not display
+* no message... (in particular, the message Insert disk XXX)
+
+
+ SEP $20
+ LDAL $E1C068
+ PHA
+ LDAL $E1C08B
+ LDAL $E1C08B
+
+ REP $30
+
+ LDAL $01FC98 ; We verify that it is
+ AND #$00FF ; indeed a vector
+ CMP #$5C
+ BNE NoPatch
+
+ LDAL $01FC99 ; Backup of
+ STA SaveVect+1 ; the value of the vector
+ LDAL $01FC9A
+ STA SaveVect+2
+
+ LDA NewVect+1 ; and diversion
+ STAL $01FC99 ; towards our routine
+ LDA NewVect+2
+ STAL $01FC9A
+
+NoPatch SEP $20
+ PLA
+ STAL $E1C068
+ REP $30
+
+ BRA Continue_Init
+
+*-------------------------------------------------
+
+SysDefaultParms DA 1 ; Backups of
+ DA 0 ; preferences
+
+SysParms DA 1
+ DA 0 ; don't draw dialog box
+
+
+NewVect JML NewFC98 ; new value FC 98
+
+NewFC98 LDA #0
+SaveVect JML $000000 ; Old value FC 98
+
+
+*------------------------------------------------- CDA initialization
+
+Continue_Init DO vP16
+ ELSE
+
+* Request for 32 KB to save the current graphics page...
+
+ PHA
+ PHA
+ PEA $0
+ PEA $8000 ; 32Ko
+ LDA UserId
+ PHA
+ PEA $C000
+ PEA $0
+ PEA $0
+ LDX #$0902 ; NewHandle
+ JSL $E10000
+ _Err
+ PLA
+ STA SaveScreen
+ PLA
+ STA SaveScreen+2
+
+ LDY #2
+ LDA [SaveScreen],Y
+ TAX
+ LDA [SaveScreen]
+ STA SaveScreen
+ STX SaveScreen+2
+
+* Copying the current graphics page into the recovered buffer...
+
+ LDX #0
+]lp TXY
+ LDAL $E12000,X
+ STA [SaveScreen],Y
+ INX
+ INX
+ BPL ]lp
+
+ FIN
+ FIN
+
+*------------------------------------------------- Creating the game image
+
+ LDX #0
+ TXA
+]lp STAL Screen,X
+ INX
+ INX
+ BPL ]lp
+
+ LDX #$20-2
+]lp LDA Palette,X
+]A = 0
+ LUP 16
+ STAL ]A+Screen+$7E00,X
+]A = ]A+$20
+ --^
+ DEX
+ DEX
+ BPL ]lp
+
+ JSR Degrade
+ BRA ContDeg
+ ; gradient list
+ListDegrade DA $00C,0-$001 ; blue
+ DA $0C0,0-$010 ; green
+ DA $C00,0-$100 ; red
+ DA $CC0,0-$110 ; yellow
+ DA $C0C,0-$101 ; magenta
+ DA $0CC,0-$011 ; cyan
+ DA $CCC,0-$111 ; grey
+ DA $001,$001 ; blue
+ DA $010,$010 ; green
+ DA $100,$100 ; red
+ DA $110,$110 ; yellow
+ DA $101,$101 ; magenta
+ DA $011,$011 ; cyan
+ DA $111,$111 ; grey
+
+Degrade LDA ColorDeg ; Gradient for decor
+ CLC
+ ADC XColor
+ ASL
+ ASL
+ TAX
+ LDA ListDegrade+2,X
+ STA Step
+ LDA ListDegrade,X
+ LDX #0
+]lp STAL Screen+$7E02,X
+ PHA
+ TXA
+ CLC
+ ADC #$20
+ TAX
+ PLA
+ CLC
+ ADC Step
+ CPX #$20*10
+ BNE ]lp
+ RTS
+
+ContDeg SEP $30
+
+ LDX #0
+ LDA #0
+]lp2 LDY #20
+]lp STAL Screen+$7D00,X
+ INX
+ DEY
+ BNE ]lp
+ INC
+ CMP #10
+ BNE ]lp2
+
+ REP $30
+
+* Decor
+ LDA #$00A0
+ STA Buf
+
+ LDX #0
+]mainloop PHX
+ LDY #0
+]lp LDA ZTop,Y
+ STAL Screen,X
+ LDA ZTop0,Y
+ STAL Screen+$A0,X
+ LDA ZBottom0,Y
+ STAL $A0*18+Screen,X
+ LDA ZBottom,Y
+ STAL $A0*19+Screen,X
+ INX
+ INX
+ INY
+ INY
+ CPY #$0A
+ BNE ]lp
+
+ LDY #0
+]lp2 PHY
+ TXA
+ CLC
+ ADC #$A0-$0A
+ TAX
+ LDY #0
+]lp LDA ZMiddle,Y
+ STAL Screen+$A0,X
+ INX
+ INX
+ INY
+ INY
+ CPY #$0A
+ BNE ]lp
+ PLY
+ INY
+ CPY #16
+ BNE ]lp2
+ PLA
+ CLC
+ ADC #$0A
+ TAX
+ CMP Buf
+ BNE ]mainloop
+ LDA Buf
+ CLC
+ ADC #20*$A0
+ STA Buf
+ CMP #$7D00
+ BCS Endraw
+ TXA
+ CLC
+ ADC #20*$A0-$A0
+ TAX
+ BRA ]mainloop
+
+Endraw SEP $20
+
+ LDX #1
+ LDA #$FF
+]lp STAL Screen+Center-1-$A0,X
+ STAL NbLgn*$A0*HautCase+Center-1+Screen,X
+ INX
+ CPX #NbCol*LargCase/2+1
+ BNE ]lp
+
+ LDX #0
+]lp LDA #$0F
+ STAL Screen+Center-1-$A0,X
+ LDA #$F0
+ STAL NbCol*LargCase/2+Screen+Center-$A0,X
+ REP $20
+ TXA
+ CLC
+ ADC #$A0
+ TAX
+ SEP $20
+ CPX #NbLgn*HautCase+2*$A0
+ BNE ]lp
+
+ REP $30
+
+ LDA #BeyondLogo+4
+ STA Pnt
+
+ LDX #$88*$A0+$73
+
+]lp2 PHX
+
+ LDY #$28/2
+]lp LDA (Pnt)
+ INC Pnt
+ INC Pnt
+ STAL $E12000,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ CPX #$88+$38*$A0+$73
+ BNE ]lp2
+
+ STZ BlackMode
+ STA Inv
+
+ LDA #6
+ STA Lgn
+ LDA #115
+ STA Col
+ LDA #67
+ STA ZNbLgn
+ LDA #38
+ STA ZNbCol
+ JSR Window
+
+ LDX #11*$A0+120
+ JSR Print
+ HEX 0CFF ; Black color
+ ASC "SCORE:",00
+ LDX #11+20*$A0+120
+ JSR Print
+ TXT "LEVEL:",00;"TABLEAU:",00
+ LDX #11+40*$A0+120
+ JSR Print
+ ASC "TOTAL:",00
+
+ LDA #6
+ STA Lgn
+ LDA #6
+ STA Col
+ LDA #187
+ STA ZNbLgn
+ LDA #38
+ STA ZNbCol
+ JSR Window
+
+ LDX #11*$A0+11
+ JSR Print
+ TXT "HIGH";"LES"
+ HEX 8D
+ TXT "SCORES:";"BALAISES"
+ HEX 00
+
+ STZ Score
+ STZ Score+2
+ LDA #$0001
+ STA Level
+ STZ Total
+
+ LDA PatternList
+ STA PtrPattern
+ LDA MskList
+ STA PtrPtrMsk
+
+ LDA #2
+ STA PtrPatPos
+
+ JSR PrintHiScore
+ JSR PrintScore
+ JSR PrintTotal
+ JSR PrintLevel
+
+*------------------------------------------------- End of initialization
+
+]RestartGame JSR ClearAera
+
+ SEP $30
+ LDL $E1C02F
+ STA AleaGen ; random/hazard
+
+]lp LDL $E1C02E
+ CMP #$F0
+ BNE ]lp
+
+ LDA #0
+ STL $E1C034
+ LDA #$C1
+ STL $E1C029
+
+ REP $30
+
+* Displaying the menu...
+
+ STZ Inv
+ LDX #52*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT "CHOOSE :";"CHOISIR:"
+ HEX 8D8D
+ ASC "1",0CFF,"-"
+ TXT "VERY EASY";"ENFANTIN"
+ HEX 8D0C99
+ ASC "2",0CFF,"-"
+ TXT "EASY";"FACILE"
+ HEX 8D0C99
+ ASC "3",0CFF,"-"
+ TXT "MEDIUM";"MOYEN"
+ HEX 8D0C99
+ ASC "4",0CFF,"-"
+ TXT "HARD";"DIFFICILE"
+ HEX 8D0C99
+ ASC "5",0CFF,"-"
+ TXT "VERY HARD";"AIE !"
+ HEX 8D0C99
+ ASC "6",0CFF,"-"
+ TXT "JEDI";"MODE JYB"
+ HEX 8D8D0C99
+ ASC "A",0CFF,"-"
+ TXT "ABOUT";"A PROPOS"
+ HEX 8D0C99
+ ASC "I",0CFF,"-INFO",8D0C99
+ ASC "Q",0CFF,"-"
+ TXT "QUIT";"QUITTER"
+ HEX 0CFF00
+
+ LDA #$FFFF
+ STA Inv
+
+* Entering the choice using the keyboard...
+
+WaitKeyPress SEP $30
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $30
+ AND #$00FF
+ CMP #"Z"+1
+ BCC NoMin
+ SEC
+ SBC #$20
+NoMin CMP #"Q"
+ BNEL NoQuit
+
+* If we press Q, we will save the high-scores if they have been
+* improved (FlagHi)
+
+ LDA FlagHi
+ BEQ NoSaveHi
+
+ JSR PrintSaving
+
+* The best scores are saved directly in the program!
+
+*------------------------------------------------- Backup routine P8
+
+NoSaveHi DO vP8 ; *D0
+
+ PEA $0
+ PLD
+ SEC
+ XCE
+ SEP $30
+
+ LDA FlagHi+ZPage
+ BEQ NoSaveHiP8
+
+ STZ FlagClean
+
+]lp JSR $BF00
+ DFB $C8 ; Open
+ DA OpenParm
+ BCC NoErrOpening
+ CMP #$45 ; Volume Not Found
+ BNE ErrFatal
+ JSR InsertDisk
+ BCC ]lp
+ BRA NoSaveHiP8
+
+NoErrOpening LDA FlagClean
+ BEQ NoRedraw0
+
+ JSR PrintSaving
+
+NoRedraw0 LDA Ref
+ STA RefRead
+ STA RefWrite
+ STA RefMark
+ JSR $BF00
+ DFB $CE ; SetMark
+ DA MarkParm
+ BCC NoErrMark
+ BRA ErrFatal
+ErrFatal0 LDA #$FF ; Bad Signature
+ErrFatal JSR FatalError
+ BRA NoSaveHiP8
+NoErrMark JSR $BF00
+ DFB $CA ; Read
+ DA ReadParm
+ BCS ErrFatal
+ LDX #7
+]lp LDA Signature,X
+ CMP SignatureTest,X
+ BNE ErrFatal0
+ DEX
+ BPL ]lp
+GoodTest JSR $BF00
+ DFB $CB
+ DA WriteParm
+ BCC NoSaveHiP8
+ CMP #$2F
+ BEQ DiskSwap
+ CMP #$2B
+ BNE ErrFatal
+ JSR WriteProtect
+ BCC GoodTest
+ BRA NoSaveHiP8
+DiskSwap JSR InsertDisk
+ BCC GoodTest
+NoSaveHiP8 JSR $BF00
+ DFB $CC
+ DA CloseParm
+
+Save35 LDA #0
+ STL $E1C035
+Save29 LDA #$41
+ STL $E1C029
+Save34 LDA #0
+ STL $E1C034
+
+ JSR $BF00
+ DFB $65
+ DA QuitParm
+
+PrintSaving CLC
+ XCE
+ PHP
+ PHD
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ STZ Inv
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT " SAVING";"SAUVEGARDE"
+ HEX 8D
+ TXT "HIGH SCORES";"DES SCORES."
+ HEX 00
+ PLD
+ PLP
+ XCE
+ RTS
+
+ MX %11
+WriteProtect CLC
+ XCE
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ LDX #67*$A0+$36+4
+ JSR Print
+ HEX 0CFF
+ TXT "DISK WRITE";"DISQUETTE"
+ HEX 8D
+ TXT "PROTECTED.";"PROTEGEE."
+ HEX 0CAA00
+
+ BRA ContErr
+
+ MX %11
+InsertDisk LDX #0
+]lp LDA PathName+2,X
+ ORA #$80
+ CMP #"/"
+ BEQ EndPath0
+ STA Name+1,X
+ INX
+ CPX #11
+ BNE ]lp
+EndPath0 CPX #11
+ BEQ NoBlank
+ LDA #" "
+ STA Name+1,X
+ INX
+ BRA EndPath0
+
+NoBlank CLC
+ XCE
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ LDX #67*$A0+$36+2
+ JSR Print
+ HEX 0CFF
+ TXT "INSERT DISK:";"INSEREZ:"
+ HEX 8D
+Name ASC "/ ",0CAA00
+
+ContErr DO Language
+ LDX #8*3+67*$A0+$36+2
+ JSR Print
+ ASC "PRESS RETURN",8D
+ ASC " TO RETRY ",8E
+ ASC " OR",8E
+ ASC "PRESS ESC",8D
+ ASC " TO ABORT",00
+ ELSE
+ LDX #8*3+67*$A0+$36+5
+ JSR Print
+ ASC "TAPEZ ENVOI",8D
+ ASC " POUR ",8D
+ ASC "RE-ESSAYER.",8E
+ ASC " OU",8E
+ ASC " TAPEZ ESC",8D
+ ASC " POUR",8D
+ ASC "ABANDONNER."
+ HEX 00
+ FIN
+
+ SEP $30
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+]lp2 STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ CMP #"M"&$9F
+ BEQ GoRetry
+ CMP #$9B
+ BNE ]lp2
+ SEC
+ XCE
+ PEA $0
+ PLD
+ SEC
+ RTS
+GoRetry INC FlagClean
+ SEC
+ XCE
+ PEA $0
+ PLD
+ CLC
+ RTS
+
+FlagClean DS 2
+
+FatalError PHA
+ AND #$F0
+ LSR
+ LSR
+ LSR
+ LSR
+ JSR Translate
+ STA ErrCode
+ PLA
+ AND #$0F
+ JSR Translate
+ STA ErrCode+1
+ CLC
+ XCE
+ REP $30
+ LDA #ZPage
+ TCD
+ JSR ClearAera
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT "CAN'T SAVE";"SAUVEGARDE"
+ HEX 8D
+ TXT "HI-SCORES :";"IMPOSSIBLE"
+ HEX 8D8D
+ TXT " ERROR $";"ERREUR $"
+ErrCode ASC "??",00
+
+ SEC
+ XCE
+ SEP $30
+ PEA $0
+ PLD
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ CLC
+ RTS
+
+
+QuitParm HEX 04
+ HEX 00
+ HEX 0000
+ HEX 00
+ HEX 0000
+
+CloseParm HEX 01
+ HEX 00
+
+WriteParm HEX 04
+RefWrite HEX 00
+ DA HiScoreList
+ DA 12*8
+ DA 0
+
+ReadParm HEX 04
+RefRead HEX 00
+ DA SignatureTest
+ DA 8
+ DA 0
+
+MarkParm HEX 02
+RefMark HEX 00
+ ADRL Signature-BeginningOfFile
+
+PrefixParm HEX 01
+ DA PathName
+
+OpenParm HEX 03
+ DA PathName
+ DA BufIO
+Ref HEX 00
+
+ MX %00
+
+
+*------------------------------------------------- GS/OS and CDA backup routine
+
+ ELSE ;*E0
+
+ LDA FlagHi
+ BEQL NoSaveHiSYS16
+
+ PEA $0
+ PEA $0
+ LDA MasterId
+ PHA
+ PEA $0000
+ LDX #$1111 ; LGetPathName
+ JSL $E10000
+ _Err
+ PLA
+ PLX
+ DEC
+ STA PntPath
+ STX PntPath+2
+
+ LDA PntPath
+ LDX PntPath+2
+
+ STA PathNameAdr
+ STX PathNameAdr+2
+
+ STZ FlagClean
+
+]lp LDA [PntPath] ; Channel conversion
+ PHA ; of pascal type in
+ XBA ; GS/OS...
+ AND #$00FF
+ STA [PntPath]
+ JSL $E100A8
+ DA $2010
+ ADRL Open_Parms
+ TAX ; and vice-versa...
+ PLA ; (You need a tool
+ STA [PntPath] ; to do this???)
+ TXA
+ CMP #1
+ BCC NoErrOp
+
+ CMP #$45
+ BNE ErrFatalBis
+ JSR InsertDisk
+ BCC ]lp
+ BRA There0
+ErrFatalBis JSR FatalError
+There0 BRL NoSaveHiSYS16
+
+ErrFatal0 LDA #$FF
+ErrFatal JSR FatalError
+ BRL EndSave
+
+NoErrOp LDA Ref
+ STA MarkRef
+ STA ReadRef
+ STA WriteRef
+ STA CloseRef
+ STA FlushRef
+
+ LDA FlagClean
+ BEQ NoR2
+
+ JSR PrintSaving
+
+NoR2 = *
+
+ JSL $E100A8
+ DA $2016 ; SetMark
+ ADRL Ref_Parms
+ BCS ErrFatal
+
+ JSL $E100A8
+ DA $2012 ; Read
+ ADRL Read_Parms
+ BCS ErrFatal
+
+ LDX #8-2
+]lp LDA Signature,X
+ CMP SignatureTest,X
+ BNE ErrFatal0
+ DEX
+ DEX
+ BPL ]lp
+
+]lp JSL $E100A8
+ DA $2013
+ ADRL Write_Parms
+ BCC EndSave0
+
+ CMP #$45
+ BNE NoBadVolume0
+ JSR InsertDisk0
+ BRA ]lp
+NoBadVolume0 CMP #$2B
+ BNE ErrFatal1
+ JSR WriteProtect
+ BRA ]lp
+
+ErrFatal1 BRL ErrFatal
+
+EndSave0 JSL $E100A8
+ DA $2015
+ ADRL Flush_Parms
+ BCC EndSave
+
+ CMP #$45
+ BNE NoBadVolume
+ JSR InsertDisk0
+ BRA EndSave0
+NoBadVolume CMP #$2B
+ BNE ErrFatal1
+ JSR WriteProtect
+ BRA EndSave0
+
+EndSave JSL $E100A8
+ DA $2014 ; Close
+ ADRL Close_Parms
+
+NoSaveHiSYS16 SEP $20
+ LDAL $E1C068
+ PHA
+ LDAL $E1C08B
+ LDAL $E1C08B
+
+ REP $30
+
+ LDAL $01FC98
+ AND #$00FF
+ CMP #$5C
+ BNE NoPatch0
+
+ LDA SaveVect+1 ; before leaving, we
+ STAL $01FC99 ; remove our patch
+ LDA SaveVect+2
+ STAL $01FC9A
+
+NoPatch0 SEP $20
+ PLA
+ STAL $E1C068
+ REP $20
+
+ JSL $E100A8
+ DA $200C ; SetSysPref
+ ADRL SysDefaultParms
+
+ BRL NormalQuit
+
+Open_Parms DA 15
+Ref DA 0
+PathNameAdr ADRL 0
+ DA %0000_0000_0000_0011 ; R/W
+ DS 50
+
+Ref_Parms DA 3
+MarkRef DA 0
+ DA 0
+ ADRL Signature-BeginningOfFile+$45
+
+Read_Parms DA 5
+ReadRef DA 0
+ ADRL SignatureTest
+ ADRL 8
+ ADRL 0
+ DA 0 ; NoCache
+
+Write_Parms DA 4
+WriteRef DA 0
+ ADRL HiScoreList
+ ADRL 12*8
+ ADRL 0
+ DA 0
+
+Close_Parms DA 1
+CloseRef DA 0
+
+Flush_Parms DA 1
+FlushRef DA 0
+
+PrintSaving = *
+ JSR ClearAera
+ STZ Inv
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT " SAVING";"SAUVEGARDE"
+ HEX 8D
+ TXT "HIGH SCORES";"DES SCORES."
+ HEX 00
+ RTS
+
+FlagClean DS 2
+
+WriteProtect JSR ClearAera
+ LDX #67*$A0+$36+4
+ JSR Print
+ HEX 0CFF
+ TXT "DISK WRITE";"DISQUETTE"
+ HEX 8D
+ TXT "PROTECTED.";"PROTEGEE."
+ HEX 0CAA00
+
+WriteReturn0 DO Language
+ LDX #8*3+67*$A0+$36+2
+ JSR Print
+ ASC "PRESS RETURN",8D
+ ASC " TO RETRY ",00
+ ELSE
+ LDX #8*3+67*$A0+$36+5
+ JSR Print
+ ASC "TAPEZ ENVOI",8D
+ ASC " POUR ",8D
+ ASC "RE-ESSAYER.",00
+ FIN
+
+ BRL ContErr0
+
+FlagCont DS 2
+
+InsertDisk0 LDA #$FFFF
+ BRA C0
+InsertDisk LDA #0
+C0 STA FlagCont
+ SEP $30
+ LDX #0
+ LDY #2+1
+]lp LDA [PntPath],Y
+ ORA #$80
+ CMP #"/"
+ BEQ EndPath0
+ STA Name+1,X
+ INY
+ INX
+ CPX #11
+ BNE ]lp
+
+EndPath0 CPX #11
+ BEQ NoBlank
+ LDA #" "
+ STA Name+1,X
+ INX
+ BRA EndPath0
+
+NoBlank REP $30
+ LDX #67*$A0+$36+2
+ JSR Print
+ HEX 0CFF
+ TXT "INSERT DISK:";"INSEREZ:"
+ HEX 8D
+Name ASC "/ ",0CAA00
+
+ LDA FlagCont
+ BEQ NormalCont
+ BRL WriteReturn0
+
+NormalCont DO Language
+ LDX #8*3+67*$A0+$36+2
+ JSR Print
+ ASC "PRESS RETURN",8D
+ ASC " TO RETRY ",8E
+ ASC " OR",8E
+ ASC "PRESS ESC",8D
+ ASC " TO ABORT",00
+ ELSE
+ LDX #8*3+67*$A0+$36+5
+ JSR Print
+ ASC "TAPEZ ENVOI",8D
+ ASC " POUR ",8D
+ ASC "RE-ESSAYER.",8E
+ ASC " OU",8E
+ ASC " TAPEZ ESC",8D
+ ASC " POUR",8D
+ ASC "ABANDONNER."
+ HEX 00
+ FIN
+
+ContErr0 SEP $30
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+]lp2 STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ CMP #"M"&$9F
+ BEQ GoRetry
+ CMP #$9B
+ BNE ]lp2
+ REP $30
+ SEC
+ RTS
+GoRetry INC FlagClean
+ REP $30
+ CLC
+ RTS
+
+FatalError SEP $30
+ PHA
+ AND #$F0
+ LSR
+ LSR
+ LSR
+ LSR
+ JSR Translate
+ STA ErrCode
+ PLA
+ AND #$0F
+ JSR Translate
+ STA ErrCode+1
+ REP $30
+ JSR ClearAera
+ LDX #91*$A0+$37+4
+ JSR Print
+ HEX 0C99
+ TXT "CAN'T SAVE";"SAUVEGARDE"
+ HEX 8D
+ TXT "HI-SCORES :";"IMPOSSIBLE"
+ HEX 8D8D
+ TXT " ERROR $";"ERREUR $"
+ErrCode ASC "??",00
+ SEP $30
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $30
+ RTS
+
+NormalQuit DO vP16 ; Routine for leaving
+ ELSE ;
+ SEP $20
+Save35 LDA #0
+ STL $E1C035
+Save29 LDA #$41
+ STL $E1C029
+Save34 LDA #0
+ STL $E1C034
+ REP $20
+
+ LDX #0 ; Return the screen to
+]lp TXY ; the way it was for
+ LDA [SaveScreen],Y ; the CDA version
+ STAL $E12000,X
+ INX
+ INX
+ BPL ]lp
+ FIN ;*F
+
+ LDA UserId
+ PHA
+ LDX #$1102 ; Dispose All
+ JSL $E10000
+ _Err
+
+ LDA MasterId
+ PHA
+ LDX #$0302
+ JSL $E10000
+ _Err
+
+ DO vP16 ;*D
+
+ SEP $20
+Save35 LDA #0
+ STL $E1C035
+Save29 LDA #$41
+ STL $E1C029
+Save34 LDA #0
+ STL $E1C034
+ REP $20
+
+ JSL $E100A8
+ DA $29
+ ADRL QuitRecGS
+QuitRecGS DA 0
+ ADRL 0
+ DA 0
+ ELSE ;*E
+ PLB
+ PLD
+ PLP
+ENDCDA RTL
+ FIN ;*F
+
+ FIN ;*F0
+
+
+ MX %11
+Translate CLC
+ ADC #"0"
+ CMP #"9"+1
+ BCC Chiffre0
+ ADC #"A"-"9"-2
+Chiffre0 RTS ; Digit0
+
+LevelList DA 01,30 ; Level number / Speed
+ DA 05,25
+ DA 10,20
+ DA 15,15
+ DA 20,10
+ DA 25,05
+
+Progression LUP 5
+ DA 50 ; Number of pieces to level up
+ --^
+ LUP 5
+ DA 60
+ --^
+ LUP 5
+ DA 70
+ --^
+ LUP 5
+ DA 80
+ --^
+ DA 080
+ DA 090
+ DA 100
+ DA 110
+ DA 120
+
+ MX %00
+
+*-------------------------------------------------
+
+* After testing the Q key, we will test the other
+* options available to us...
+
+NoQuit = *
+
+* I key = Info
+
+ CMP #"I"
+ BNEL NoInfo
+
+ JSR ClearAera
+ STZ Inv
+ LDX #50*$A0+$37-1+2+2
+ JSR Print
+ HEX 0C99
+ TXT "COLUMNS",8D;"REGLES",8D
+ TXT "RULES.",8D8D0CFF;"DU JEU.",8D8D8D0CFF
+ TXT " <:LEFT",8D;" <:GAUCHE",8D
+ TXT " >:RIGHT",8D;" >:DROITE",8D
+ TXT " R:ROTATE",8D;" R:PERMUTE",8D
+ TXT "SPC:FALL",8D;"ESP:DEPOSE",8D
+ TXT " ^R:RESTART",8D;" ^R:REJOUER",8D
+ TXT " ^S:NEW PAT",8D;" ^S:FORMES",8D
+ TXT " N:NEXT",8D;" N:SUIVANT",8D
+ ASC " P:PAUSE",8D8D
+ DO Language
+ ASC " HAVE FUN !",00
+ ELSE
+ HEX 8D
+ ASC "JOIE",8D ; joy
+ ASC "DANS LES",8D ; in the
+ ASC "CHAUMIERES!",00 ; thatched cottages!
+ FIN
+
+EndAbout SEP $20
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ REP $20
+ BRL ]RestartGame
+
+* A key = About
+
+NoInfo CMP #"A"
+ BNEL NoAbout
+
+ JSR ClearAera
+ STZ Inv
+ LDX #35*$A0+$37+4
+ JSR Print
+ DFB $0C,$EE,"F"
+ DFB $0C,$CC,"U"
+ DFB $0C,$AA,"N"
+ DFB $0C,$22
+ ASC " COLUMNS",8D8D
+ DFB $0C,$FF
+ TXT " BY ";"PAR "
+ DFB $0C,$DD
+ ASC "FTA",8D8D
+ DFB $0C,$FF
+ ASC "CODING:",8E
+ ASC "O. GOGUEL",8D8E
+ ASC "DESIGN:",8E
+ ASC "O. BAILLY",8D
+ ASC " MAITRE",8D8D8D8D
+ ASC "VERSION 1.1",8E
+ ASC "TOOLBOX-MAG",8E
+ TXT " ISSUE: 04";" NUMERO 04"
+ DFB $8E
+ TXT " 03-FEB-91";" 03-FEV-91"
+ DFB $8E,$8D
+ ASC " COPYRIGHT",8E
+ ASC "FTA/TOOLBOX"
+ HEX 0CFF00
+ BRL EndAbout
+
+* Otherwise, there are still the levels...
+
+NoAbout CMP #"1"
+ BCC NoLevel
+ CMP #"6"+1
+ BCS NoLevel
+ SEC
+ SBC #"1"
+ ASL
+ ASL
+ TAX
+ LDA LevelList,X
+ STA Level0
+ TAY
+ SED
+ LDA #0
+ CLC
+]lp ADC #1
+ DEY
+ BNE ]lp
+ CLD
+ STA Level
+ LDA LevelList+2,X
+ STA LevelSpeed
+
+ BRL StartGame
+
+NoLevel BRL WaitKeyPress
+
+
+*------------------------------------------------- Start of a new game
+
+StartGame STZ Score
+ STZ Score+2 ; set score to zero
+ STZ Total ; set total to zero
+
+ STZ ColorDeg
+ JSR Degrade ; color gradient to zero
+
+ JSR GetBarre ; initialise Get Bar
+; to be able to possibly
+; display the next
+; one...
+
+ LDA Level0
+ DEC
+ ASL
+ TAX
+ LDA Progression,X
+ STA Counter
+
+ LDX #0
+]lp STZ Table,X
+ INX
+ INX
+ CPX #NbLgn*NbCol
+ BCC ]lp
+
+ REP $30
+
+ JSR WaitSync
+ JSR DrawScreen
+ JSR PrintScore
+ JSR PrintLevel
+ JSR PrintTotal
+ JSR WaitSync
+ JSR WaitSync
+ JSR WaitSync
+
+]newbar = *
+
+ JSR GetBarre
+ JSR PrintNext
+ BRL ContGame
+
+GetBarre = *
+ SEP $30
+ LDX #0
+]loop LDA BarreNext,X
+ STA Barre,X
+ JSR GetAlea ; random/hazard
+]lp AND #$7F
+ CMP #6
+ BCC OkCouleur
+ SEC
+ SBC #6
+ BRA ]lp
+OkCouleur INC
+ STA BarreNext,X
+ INX
+ CPX #3
+ BNE ]loop
+ REP $30
+ RTS
+*
+
+NoNext LDX #0
+]lp2 PHX
+ LDY #6
+]lp LDAL 85*$A0+Screen-20+128,X
+ STAL 85*$A0+Screen+128,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ CPX #41*$A0
+ BNE ]lp2
+ STZ AlreadyNext
+ RTS
+
+* Display of the next element or not depending on the NextMode flag
+
+
+PrintNext BIT NextMode
+ BPL NoNext
+ BIT AlreadyNext
+ BMI Already_La
+ LDA #$FFFF
+ STA BlackMode
+ LDA #85
+ STA Lgn
+ LDA #128
+ STA Col
+ LDA #38
+ STA ZNbLgn
+ LDA #9
+ STA ZNbCol
+ JSR Window
+
+Already_La STZ BlackMode
+ LDA #$FFFF
+ STA AlreadyNext
+
+ LDA #88*$A0+130-Center
+ STA Buf
+
+ LDX #0
+]lp PHX
+ LDA BarreNext,X
+ AND #$00FF
+ ASL
+ TAY
+ STZ Msk0
+ LDX Buf
+ JSR PrintOnePat
+ LDA Buf
+ CLC
+ ADC #HautCase*$A0
+ STA Buf
+ PLX
+ INX
+ CPX #3
+ BNE ]lp
+
+ RTS
+
+* It's hard to follow when there are subroutines in the middle of the
+* main loop, right?
+
+
+ContGame JSR GetAlea ; random/hazard
+
+* We randomly choose a starting column for the new element
+
+ AND #$1F
+]lp CMP #NbCol
+ BCC OkCol
+ SEC
+ SBC #NbCol
+ BRA ]lp
+OkCol STA BarreCol
+ STA BarreCol0
+
+ STZ BarreLgn ; bar line
+
+* We check that we can display it entirely, meaning that there is
+* nothing just below...
+
+]loop JSR GetBarreAdr
+ TAX
+ STX BarrePos ; bar position
+ SEP $20
+ LDA Table,X
+ AND #$0F
+ BNE Over0
+ LDA Table+NbCol,X
+ AND #$0F
+ BNE Over0
+ LDA Table+NbCol+NbCol,X
+ AND #$0F
+ BEQ GoodCol
+
+* If we cannot display it, we will try with the neighboring column...
+
+Over0 INC BarreCol
+ LDA BarreCol
+ CMP #NbCol
+ BNE NoFin
+ STZ BarreCol
+ LDA #0
+NoFin CMP BarreCol0
+ BNE ]loop
+
+
+* If no free columns were found, then...
+
+ BRL GameOver
+
+GoodCol = *
+
+*------------------------------------------------- Main loop
+
+]mainloop REP $30
+ STZ Msk
+ JSR StoreBarre ; store bar
+ JSR DrawScreen
+ LDA LevelSpeed ; level speed
+ STA CycleCount ; cycle count
+]lp JSR TestKey
+ BCC Nothing
+ JSR ClearBarre ; clear bar
+ JSR StoreBarre
+ JSR DrawScreen
+Nothing JSR WaitSync
+ DEC CycleCount
+ BNE ]lp
+ JSR TestDown
+ BNEL Down
+ JSR ClearBarre ; clear bar
+ INC BarreLgn ; bar line
+ JSR StoreBarre
+ BRL ]mainloop
+
+*------------------------------------------------- End of Game...
+
+GameOver REP $30
+
+ LDA #$FFFF
+ STA Inv
+
+ LDA #92
+ STA Lgn ; line
+ LDA #$3B
+ STA Col
+ LDA #14
+ STA ZNbLgn
+ LDA #$29
+ STA ZNbCol
+ JSR Window
+
+ LDX #96+1*$A0+$3E
+ JSR Print
+ HEX 0C11
+ ASC "GAME OVER",00
+
+ JSR CheckHighScore
+ BCS NoHigh
+
+ BRL ]RestartGame
+
+NoHigh SEP $20
+ STL $E1C010
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+ STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $20
+
+ BRL ]RestartGame
+
+*-------------------------------------------------
+
+NextPos INC Col0
+ LDA Col0
+ CMP #NbCol
+ BNE MoreTest
+ STZ Col0
+ INC Lgn0
+ LDA Lgn0
+ CMP #NbLgn
+ BNE MoreTest
+
+ LDA Flag
+ BEQ PoorPlayer
+
+ JSR SecondAction
+
+ BRA Down
+
+PoorPlayer BRL ]newbar
+
+*------------------------------------------------- Search routine
+* for elimination of
+* bricks...
+
+Down STZ Lgn0 ; line 0
+ STZ Col0 ; column 0
+ STZ Flag
+
+ SED
+ LDA Score
+ CLC
+ ADC #5
+ STA Score
+ LDA Score+2
+ ADC #0
+ STA Score+2
+ CLD ; add 5 to decimal score varible
+
+ JSR PrintScore ; print the score
+
+MoreTest LDA Lgn0 ; line 0
+ ASL
+ TAX
+ LDA MulLgn,X ; multiple line
+ CLC
+ ADC Col0 ;
+ TAX
+ LDA Table,X
+ AND #$1F
+ BEQ NextPos
+ BIT #$10
+ BNE NextPos
+ STA CaseTest
+
+ STZ Buf ; 4 main directions
+
+]looping STZ Compteur
+
+]loop LDA Lgn0 ; line 0
+ STA Lgn ; line
+ LDA Col0 ; column 0
+ STA Col ; column
+
+]lp LDX Buf
+ JSR (GetList,X)
+ CMP #$FFFF
+ BEQ NextDirection
+ LDA Lgn
+ ASL
+ TAX
+ LDA MulLgn,X
+ CLC
+ ADC Col
+ TAX
+ LDA Table,X
+ AND #$0F
+ CMP CaseTest ; box test
+ BNE NextDirection
+
+ TXA
+ LDX Compteur ; counter
+ STA CaseList,X ; box list
+ INX
+ INX
+ STX Compteur ; counter
+ BRA ]lp
+
+NextDirection LDA Buf
+ INC
+ INC
+ STA Buf
+ AND #%0000_0010
+ BNE ]loop
+
+ LDA Compteur ; counter
+ CMP #2*2
+ BCC No3Barre ; no match 3
+
+ LDX Compteur ; counter
+]lp DEX
+ DEX
+ BMI EndKill
+ PHX
+ LDA CaseList,X ; box list
+ TAX
+ LDA Table,X
+ ORA #$0010
+ AND #$FF7F
+ STA Table,X
+ INC Flag
+ PLX
+ BRA ]lp
+
+EndKill LDA Lgn0 ; line 0
+ ASL
+ TAX
+ LDA MulLgn,X ; miltiple line
+ CLC
+ ADC Col0
+ TAX
+ LDA Table,X
+ ORA #$0010
+ AND #$FF7F
+ STA Table,X
+
+No3Barre LDA Buf
+ CMP #16
+ BNE ]looping ; no match 3
+
+ BRL NextPos
+
+SecondAction = *
+ STZ Msk
+]lp JSR DrawScreen
+ JSR WaitSync
+ JSR WaitSync
+ LDA Msk
+ INC
+ INC
+ STA Msk
+ CMP #7*2
+ BNE ]lp
+
+ REP $30
+
+ LDA PtrPatPos
+ CMP #4*2
+ BEQ NoBlanc0
+
+ JSR StoreBlanc ; store white
+
+NoBlanc0 LDA #2
+ STA Msk
+
+ LDA #6*2
+ STA Msk
+
+]lp LDA Msk
+ DEC
+ DEC
+ STA Msk
+ BMI Out
+
+ JSR DrawScreen
+ JSR WaitSync
+ JSR WaitSync
+ BRA ]lp
+
+StoreBlanc SEP $30 ; store white
+ LDX #0
+]lp LDA Table,X
+ BIT #%0001_0000
+ BEQ NoOff0
+ ORA #%0001_0111
+NoOff0 STA Table,X
+ INX
+ CPX #NbLgn*NbCol ; nb line * nb col
+ BNE ]lp
+ REP $30
+ RTS
+
+Out = *
+
+ LDA PtrPatPos
+ CMP #4*2
+ BNE NoBlanc ; no white
+
+ JSR StoreBlanc
+
+NoBlanc LDA #2 ; no white
+ STA Msk
+
+]lp JSR DrawScreen
+ JSR WaitSync
+ JSR WaitSync
+ LDA Msk
+ INC
+ INC
+ STA Msk
+ CMP #7*2
+ BNE ]lp
+
+ STZ Buf
+
+ SEP $30
+
+ LDX #0
+]lp LDA Table,X
+ BIT #%0001_0000
+ BEQ NoCl
+ STZ Table,X
+ INC Buf
+ LDA Buf
+ PHA
+ PHX
+ REP $30
+ DEC Counter
+ BNE NoNewLevel
+ INC ColorDeg ; increment colour gradient
+ LDA ColorDeg
+ CMP #7
+ BNE NoNewColor
+ STZ ColorDeg ; cycle color gradient
+NoNewColor JSR Degrade ; new gradient
+ INC Level0
+ LDA Level0 ; new level
+ DEC
+ ASL
+ TAX
+ LDA Progression,X
+ STA Counter
+ LDA LevelSpeed
+ CMP #1
+ BEQ NoNewLevel
+ DEC LevelSpeed
+ SED
+ LDA Level
+ CLC
+ ADC #1
+ STA Level
+ CLD
+ JSR PrintLevel
+NoNewLevel = *
+ SED
+ LDA Total
+ CLC
+ ADC #1
+ STA Total
+ SEP $30
+ CLD
+ PLX
+ PLA
+ STA Buf
+NoCl INX
+ CPX #NbCol*NbLgn
+ BNE ]lp
+ REP $30
+
+ LDA Buf
+ CMP #3
+ BCC NoBonus
+ CMP #12
+ BCC NoMaxBonus
+ LDA #11
+NoMaxBonus SEC
+ SBC #3
+ ASL
+ TAX
+ SED
+ LDA Score
+ CLC
+ ADC ScorePerBrick,X
+ STA Score
+ LDA Score+2
+ ADC #0
+ STA Score+2
+ CLD
+
+NoBonus JSR DrawScreen
+ JSR PrintTotal
+ JSR PrintScore
+ JSR WaitSync
+
+ SEP $30
+
+ STZ Pnt
+
+]newcol LDX Pnt
+]lp LDA Table,X
+ AND #$0F
+ BNE FoundTop
+ TXA
+ CLC
+ ADC #NbCol
+ TAX
+ CMP #NbLgn-1*NbCol
+ BCC ]lp
+
+ BRA NextCol
+
+FoundTop STX Buf
+
+ LDA #NbLgn-1*NbCol
+ CLC
+ ADC Pnt
+ TAX
+
+]lp CPX Buf
+ BEQ NextCol
+
+ LDA Table,X
+ AND #$0F
+ BNE SomethingUnder
+
+ PHX
+]notop LDA Table-NbCol,X
+ AND #%0000_1111
+ STA Table,X
+ TXA
+ SEC
+ SBC #NbCol
+ TAX
+ CPX Buf
+ BNE ]notop
+
+ STZ Table,X
+
+ LDA Buf ; Lower the ceiling by 1 line
+ CLC
+ ADC #NbCol
+ STA Buf
+ PLX
+ BRA ]lp
+
+SomethingUnder TXA
+ SEC
+ SBC #NbCol
+ TAX
+ BRA ]lp
+
+NextCol INC Pnt
+ LDA Pnt
+ CMP #NbCol
+ BNE ]newcol
+
+EndDisap REP $30
+
+ JSR DrawScreen
+
+ JSR WaitSync
+ JSR WaitSync
+ RTS
+
+
+* Test in each direction...
+
+GetList DA Get1
+ DA Get9
+ DA Get2
+ DA Get8
+ DA Get3
+ DA Get7
+ DA Get4
+ DA Get6
+
+Get1 LDA Lgn
+ BEQ OutCadre ; out frame
+ LDA Col
+ BEQ OutCadre
+ DEC Lgn
+ DEC Col
+ RTS
+Get2 LDA Lgn
+ BEQ OutCadre
+ DEC Lgn
+ RTS
+Get3 LDA Lgn
+ BEQ OutCadre
+ LDA Col
+ CMP #NbCol-1
+ BEQ OutCadre
+ DEC Lgn
+ INC Col
+ RTS
+Get4 LDA Col
+ BEQ OutCadre
+ DEC Col
+ RTS
+OutCadre LDA #$FFFF ; our frame
+ RTS
+Get6 LDA Col
+ CMP #NbCol-1
+ BEQ OutCadre
+ INC Col
+ RTS
+Get7 LDA Col
+ BEQ OutCadre
+ LDA Lgn
+ CMP #NbLgn-1
+ BEQ OutCadre
+ INC Lgn
+ DEC Col
+ RTS
+Get8 LDA Lgn
+ CMP #NbLgn-1
+ BEQ OutCadre
+ INC Lgn
+ RTS
+Get9 LDA Lgn
+ CMP #NbLgn-1
+ BEQ OutCadre
+ LDA Col
+ CMP #NbCol-1
+ BEQ OutCadre
+ INC Lgn
+ INC Col
+ RTS
+
+
+TestKey SEP $20
+ LDL $E1C000
+ STL $E1C010
+ REP $20
+ AND #$00FF
+ CMP #$0080
+ BCS SomeKey0
+ BRL NoKey
+
+SomeKey0 CMP #"R"&$9F
+ BNE NoAbandon
+ PLA
+ STZ Score
+ STZ Score+2
+ BRL GameOver
+
+NoAbandon = *
+ CMP #"S"&$9F
+ BNE NoSwitchPat
+
+]lp LDX PtrPatPos
+ LDA PatternList,X
+ BNE SameList
+ STZ PtrPatPos
+ BRA ]lp
+SameList STA PtrPattern
+ LDA MskList,X
+ STA PtrPtrMsk
+ INC PtrPatPos
+ INC PtrPatPos
+
+DrawGame SEP $30
+ LDX #0
+]lp LDA Table,X
+ AND #%0111_1111
+ STA Table,X
+ INX
+ CPX #NbCol*NbLgn
+ BNE ]lp
+ REP $30
+
+ JSR PrintNext
+
+ SEC
+ RTS
+
+NoSwitchPat CMP #"4"
+ BEQ GLeft
+ CMP #"J"
+ BEQ GLeft
+ CMP #"H"&$9F
+ BNE NoLeft
+
+GLeft LDA BarreCol
+ BEQ NoKey0
+
+ JSR GetBarreAdr
+ DEC
+ JSR TestLR
+ BNE NoKey0
+
+ DEC BarreCol
+ SEC
+ RTS
+
+NoKey0 CLC
+ RTS
+
+NoLeft CMP #"L"
+ BEQ GRight
+ CMP #"6"
+ BEQ GRight
+ CMP #"U"&$9F
+ BNE NoRight
+
+GRight LDA BarreCol
+ CMP #NbCol-1
+ BEQ NoKey0
+
+ JSR GetBarreAdr
+ INC
+ JSR TestLR
+ BNE NoKey0
+
+ INC BarreCol
+ SEC
+ RTS
+
+NoRight CMP #"R"
+ BNE NoRotate
+GRotate SEP $20
+ LDA Barre
+ PHA
+ LDA Barre+1
+ STA Barre
+ LDA Barre+2
+ STA Barre+1
+ PLA
+ STA Barre+2
+ REP $20
+ SEC
+ RTS
+
+NoRotate CMP #"K"
+ BEQ GFall
+ CMP #"5"
+ BEQ GFall
+ CMP #" "
+ BNE NoSpace
+
+GFall = *
+]lp JSR TestDown
+ BNE FoundDown
+ INC BarreLgn
+ BRA ]lp
+FoundDown LDA #1
+ STA CycleCount
+ SEC
+ RTS
+
+NoSpace = *
+ CMP #"N"
+ BNE NoN
+ LDA NextMode
+ EOR #$FFFF
+ STA NextMode
+ JSR PrintNext
+ CLC
+ RTS
+
+NoN CMP #"P"
+ BNE NoPause
+
+ LDX #0
+]lp2 PHX
+ LDY #NbCol*LargCase/4
+ LDA #0
+]lp STAL Screen+Center,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ CPX #NbLgn*HautCase*$A0
+ BNE ]lp2
+
+ LDA #$FFFF
+ STA Inv
+
+ LDA #92
+ STA Lgn
+ LDA #$3B
+ STA Col
+ LDA #14
+ STA ZNbLgn
+ LDA #$29
+ STA ZNbCol
+ JSR Window
+
+ LDX #96+1*$A0+$3E
+ JSR Print
+ HEX 0C11
+ ASC "> PAUSE <",0CFF00
+
+ SEP $20
+]lp LDL $E1C025
+ BIT #%0000_1000
+ BNE ]lp
+]lp2 STL $E1C010
+]lp LDL $E1C000
+ BPL ]lp
+ STL $E1C010
+ REP $20
+
+ BRL DrawGame
+
+NoPause CMP #"X"&$9F
+ BNE No_XCol
+ LDA XColor
+ EOR #7
+ STA XColor
+ JSR Degrade
+ CLC
+ RTS
+
+No_XCol CMP #"C"&$9F
+ BNE NoDegCol
+ INC ColorDeg
+ LDA ColorDeg
+ CMP #7
+ BNE NoNewDeg0
+ STZ ColorDeg
+NoNewDeg0 JSR Degrade
+ CLC
+ RTS
+NoDegCol
+NoKey = *
+ CLC
+ RTS
+
+TestDown LDA BarreLgn
+ CMP #NbLgn-3
+ BEQ Down0
+ JSR GetBarreAdr
+ TAX
+ LDA Table+NbCol+NbCol+NbCol,X
+ AND #$000F
+ RTS
+Down0 LDA #$FFFF
+ RTS
+
+WaitSync PHP
+ SEP $20
+]lp LDL $E1C02E
+ CMP #$F0
+ BCC ]lp
+]lp LDL $E1C02E
+ CMP #$F0
+ BCS ]lp
+ PLP
+ RTS
+
+TestLR TAX
+ SEP $20
+ LDA Table,X
+ ORA NbCol+Table,X
+ ORA NbCol+NbCol+Table,X
+ REP $20
+ AND #$000F
+ RTS
+
+GetAlea PHP ; Get random/hazard
+ SEP $20
+ LDL $E1C02E
+ EOR AleaGen
+ ADC AleaGen
+ INC AleaGen
+ DO vP8
+ SBC $C02F
+ ELSE
+ SBCL $E1C02F
+ FIN
+ ROR
+ ROR
+ ROR AleaGen
+ ROR
+ DO vP8
+ EOR $C02E
+ ADC $C02F
+ ELSE
+ EORL $E1C02E
+ ADCL $E1C02F
+ FIN
+ PLP
+ RTS
+
+ MX %00
+
+GetBarreAdr LDA BarreLgn
+ ASL
+ TAX
+ LDA MulLgn,X
+ CLC
+ ADC BarreCol
+ RTS
+
+StoreBarre JSR GetBarreAdr ; Store Bar
+ TAX
+ STX BarrePos ; bar position
+ SEP $20
+ LDA Table,X
+ AND #$0F
+ BNE Over
+ LDA Barre
+ STA Table,X
+ LDA Table+NbCol,X
+ AND #$0F
+ BNE Over
+ LDA Barre+1
+ STA Table+NbCol,X
+ LDA Table+NbCol+NbCol,X
+ AND #$0F
+ BNE Over
+ LDA Barre+2
+ STA Table+NbCol+NbCol,X
+ REP $20
+ CLC
+ RTS
+Over REP $20
+ SEC
+ RTS
+
+ClearBarre LDX BarrePos ; Clear Bar
+ SEP $20
+ STZ Table,X
+ STZ Table+NbCol,X
+ STZ Table+NbCol+NbCol,X
+ REP $20
+ RTS
+
+
+CaseAdr = *
+]A = 0
+ LUP NbLgn
+ DA 0*LargCase/2+]A
+ DA 1*LargCase/2+]A
+ DA 2*LargCase/2+]A
+ DA 3*LargCase/2+]A
+ DA 4*LargCase/2+]A
+ DA 5*LargCase/2+]A
+ DA 6*LargCase/2+]A
+ DA 7*LargCase/2+]A
+]A = HautCase*$A0+]A
+ --^
+
+MulLgn = *
+]A = 0
+ LUP NbLgn
+ DA ]A
+]A = ]A+NbCol
+ --^
+
+
+ClearAera LDX #0
+]lp STZ Table,X
+ INX
+ INX
+ CPX #NbLgn*NbCol
+ BCC ]lp
+ JSR DrawScreen
+ RTS
+
+
+*------------------------------------------------- “Smart” display
+* routine
+
+DrawScreen STZ Pnt
+ BRA ContDraw
+
+PlotNothing INC Pnt
+ LDA Pnt
+ CMP #NbLgn*NbCol
+ BNE ContDraw
+ RTS
+
+ContDraw LDX Pnt
+ LDA Table,X
+ BIT #%0000_0000_0001_0000
+ BNE SpecialPlot ; plot special characters
+ BIT #%0000_0000_1000_0000
+ BNE PlotNothing ; plot nothing
+ ORA #%0000_0000_1000_0000
+ STA Table,X
+ LDX #0
+ AND #%0000_0000_0001_1111
+ BRA NoSpecial
+SpecialPlot LDX Msk
+ AND #%0000_0000_0000_1111
+NoSpecial STX Msk0
+ ASL
+ TAY
+ LDA Pnt
+ ASL
+ TAX
+ LDA CaseAdr,X
+ TAX
+ JSR PrintOnePat
+ BRA PlotNothing
+
+PrintOnePat LDA (PtrPattern),Y
+ STA PtrShp
+ LDY Msk0
+ LDA (PtrPtrMsk),Y
+ STA PtrMsk
+ LDA #0
+ TAY
+]lp PHA
+ LDA (PtrShp),Y
+ AND (PtrMsk),Y
+ STAL Screen+Center,X
+ INY
+ INY
+ LDA (PtrShp),Y
+ AND (PtrMsk),Y
+ STAL Screen+Center+2,X
+ INY
+ INY
+ LDA (PtrShp),Y
+ AND (PtrMsk),Y
+ STAL Screen+Center+4,X
+ INY
+ INY
+ TXA
+ CLC
+ ADC #$A0
+ TAX
+ PLA
+ INC
+ CMP #HautCase ; high case, top box
+ BNE ]lp
+ RTS
+
+*------------------------------------------------- Window routine...
+
+ColorIn = $FF
+ColorOut = $00
+
+Window PHP
+ LDA Lgn ; line
+ ASL
+ ASL
+ ASL
+ ASL
+ ASL
+ PHA
+ ASL
+ ASL
+ CLC
+ ADC $01,S
+ PLY
+ CLC
+ ADC #$2000
+ STA Pnt
+ LDA #$E1
+ STA Pnt+2
+
+ SEP $30
+
+ LDX ZNbCol
+ LDY Col
+ LDA #ColorOut
+ EOR BlackMode
+]lp STA [Pnt],Y
+ INY
+ DEX
+ BPL ]lp
+
+ JSR AUG_LGN
+
+ DEC ZNbLgn
+
+ STZ Buf
+
+]loop LDX ZNbCol
+ LDY Col
+ LDA #ColorOut&$F0+ColorIn&$0F
+ EOR BlackMode
+ STA [Pnt],Y
+]lp INY
+ DEX
+ BEQ END_W2
+ LDA #ColorIn
+ EOR BlackMode
+ STA [Pnt],Y
+ BRA ]lp
+
+END_W2 LDA #ColorOut&$0F+ColorIn&$F0
+ EOR BlackMode
+ STA [Pnt],Y
+
+ LDA Buf
+ CMP #$03
+ BCC NADA2
+
+ INY
+ LDA #ColorOut
+ STA [Pnt],Y
+
+NADA2 JSR AUG_LGN
+
+ INC Buf
+ DEC ZNbLgn
+ BNE ]loop
+
+ LDY Col
+ LDX ZNbCol
+ LDA #ColorOut
+ EOR BlackMode
+]loop STA [Pnt],Y
+ INY
+ DEX
+ BPL ]loop
+ LDA #ColorOut
+ STA [Pnt],Y
+
+ LDX #$02
+]loop2 PHX
+
+ JSR AUG_LGN
+
+ LDX ZNbCol
+ LDY Col
+ INY
+ INY
+ DEX
+ LDA #ColorOut
+]loop STA [Pnt],Y
+ INY
+ DEX
+ CPX #$FF
+ BNE ]loop
+
+ PLX
+ DEX
+ BNE ]loop2
+ PLP
+ RTS
+
+AUG_LGN REP $30 ; increase length?
+ LDA Pnt
+ CLC
+ ADC #$00A0
+ STA Pnt
+ SEP $30
+ RTS
+
+ MX %00
+
+*------------------------------------------------- Text display routine
+
+Print PLA
+ STA Msg
+ JSR Print0
+ LDA Msg
+ PHA
+ RTS
+
+Print_Rout = *
+ DEC
+ STA Msg
+Print0 = *
+]lp2 STX XValue
+]lp INC Msg
+ LDA !$0000
+Msg = *-2
+ TAY
+ AND #$00FF
+ BEQ EndPrint
+ CMP #$0C
+ BEQ Change_Color
+ CMP #$8D
+ BEQ NewLine
+ CMP #$8E
+ BEQ HalfLine
+ JSR Print_Char
+ BRA ]lp
+Change_Color TYA
+ XBA
+ SEP $20
+ STA ColorF+1
+ REP $20
+ INC Msg
+ BRA ]lp
+HalfLine LDA XValue
+ CLC
+ ADC #9*$A0
+ TAX
+ BRA ]lp2
+NewLine LDA #0
+XValue = *-2
+ CLC
+ ADC #7*$A0
+ TAX
+ BRA ]lp2
+EndPrint LDA XValue
+ CLC
+ ADC #8*$A0
+ TAX
+ RTS
+
+Special DFB " ",".",":","-","$","#","<",">","!","^","/","'"
+
+Print_Char SEP $20
+ LDY #11
+]lp CMP Special,Y
+ BEQ GoSpecial
+ DEY
+ BPL ]lp
+ BRA GoNormal
+GoSpecial TYA
+ PHA
+ PHA
+ ASL
+ ASL
+ CLC
+ ADC $01,S
+ PLY
+ TAY
+ REP $20
+ AND #$00FF
+ CLC
+ ADC #Font
+ BRA EndGetC
+
+GoNormal REP $20
+ CMP #"A"
+ BCC GetChiffre
+ SEC
+ SBC #"A"
+ LDY #Lettre
+ BRA ContGetC
+GetChiffre SEC ; Get Figure
+ SBC #"0"
+ LDY #Chiffre
+ContGetC STY PatchDeb+1
+ PHA
+ ASL
+ ASL
+ CLC
+ ADC $01,S
+PatchDeb ADC #0
+ PLY
+
+EndGetC STA Font_Adr
+ LDA #5
+]lp2 PHA
+ PHX
+ LDA !$0000
+Font_Adr = *-2
+ INC Font_Adr
+ LDY #4
+]lp PHY
+ PHA
+ LDY #0
+ BIT #%0100_0000
+ BEQ No_Left
+ LDY #$0F
+No_Left BIT #%1000_0000
+ BEQ No_Right
+ TYA
+ ORA #$F0
+ TAY
+No_Right TYA
+ SEP $20
+ColorF AND #$FF
+NoI0 LDY Inv
+ BEQ noinv
+ LDY ColorF
+ CPY #$FF29
+ BNE noinv0
+ EOR #$FF
+ BRA noinv
+noinv0 TAY
+ AND #$0F
+ BNE ok0
+ TYA
+ ORA #$0F
+ TAY
+ok0 TYA
+ AND #$F0
+ BNE ok1
+ TYA
+ ORA #$F0
+ TAY
+ok1 TYA
+noinv STAL $E12000,x
+ REP $20
+ INX
+ PLA
+ ASL
+ ASL
+ PLY
+ DEY
+ BNE ]lp
+ PLA
+ CLC
+ ADC #$A0
+ TAX
+ PLA
+ DEC
+ BNE ]lp2
+ TXA
+ SEC
+ SBC #5*$A0-4
+ TAX
+ RTS
+
+*------------------------------------------------- Font
+
+Font DFB %00000000
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000 ; space
+
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000
+ DFB %00011000
+ DFB %00011000 ; dot
+
+ DFB %00000000
+ DFB %00011000
+ DFB %00000000
+ DFB %00011000
+ DFB %00000000 ; colon
+
+ DFB %00000000
+ DFB %00000000
+ DFB %01111100
+ DFB %00000000
+ DFB %00000000 ; hyphen
+
+ DFB %01111110
+ DFB %11010000
+ DFB %01111100
+ DFB %00010110
+ DFB %11111100 ; $
+
+ DFB %11111110
+ DFB %11111110
+ DFB %11111110
+ DFB %11111110
+ DFB %11111110 ; cursor (#)
+
+ DFB %00011000
+ DFB %00110000
+ DFB %01111110
+ DFB %00110000
+ DFB %00011000 ; <-
+
+ DFB %00011000
+ DFB %00001100
+ DFB %01111110
+ DFB %00001100
+ DFB %00011000 ; ->
+
+ DFB %00011000
+ DFB %00011000
+ DFB %00011000
+ DFB %00000000
+ DFB %00011000 ; !
+
+ DFB %00011000
+ DFB %00111100
+ DFB %01100110
+ DFB %00000000
+ DFB %00000000 ; ^
+
+ DFB %00000110
+ DFB %00001100
+ DFB %00011000
+ DFB %00110000
+ DFB %01100000 ; /
+
+ DFB %00011000
+ DFB %00011000
+ DFB %00000000
+ DFB %00000000
+ DFB %00000000 ; '
+
+
+Chiffre DFB %01111110 ; Figures (numbers)
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11111100 ; 0
+
+ DFB %01111000
+ DFB %00011000
+ DFB %00011000
+ DFB %00011000
+ DFB %01111100 ; 1
+
+ DFB %11111100
+ DFB %00000110
+ DFB %01111100
+ DFB %11000000
+ DFB %01111110 ; 2
+
+ DFB %11111100
+ DFB %00000110
+ DFB %00011100
+ DFB %00000110
+ DFB %11111100 ; 3
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11111110
+ DFB %00000110
+ DFB %00000110 ; 4
+
+ DFB %11111110
+ DFB %11000000
+ DFB %11111100
+ DFB %00000110
+ DFB %11111100 ; 5
+
+ DFB %01111110
+ DFB %11000000
+ DFB %11111100
+ DFB %11000110
+ DFB %01111100 ; 6
+
+ DFB %11111110
+ DFB %00001100
+ DFB %00011000
+ DFB %00011000
+ DFB %00011000 ; 7
+
+ DFB %01111100
+ DFB %11000110
+ DFB %01111100
+ DFB %11000110
+ DFB %01111100 ; 8
+
+ DFB %01111100
+ DFB %11000110
+ DFB %01111110
+ DFB %00000110
+ DFB %00000110 ; 9
+
+Lettre DFB %01111100 ; letter
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+ DFB %11000110 ; A
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100 ; B
+
+ DFB %01111110
+ DFB %11000000
+ DFB %11000000
+ DFB %11000000
+ DFB %01111110 ; C
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11111100 ; D
+
+ DFB %11111110
+ DFB %11000000
+ DFB %11110000
+ DFB %11000000
+ DFB %11111110 ; E
+
+ DFB %11111110
+ DFB %11000000
+ DFB %11110000
+ DFB %11000000
+ DFB %11000000 ; F
+
+ DFB %01111110
+ DFB %11000000
+ DFB %11001110
+ DFB %11000110
+ DFB %01111110 ; G
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+ DFB %11000110 ; H
+
+ DFB %11111100
+ DFB %00110000
+ DFB %00110000
+ DFB %00110000
+ DFB %11111100 ; I
+
+ DFB %00000110
+ DFB %00000110
+ DFB %00000110
+ DFB %11000110
+ DFB %01111100 ; J
+
+ DFB %11000110
+ DFB %11001100
+ DFB %11111000
+ DFB %11001100
+ DFB %11000110 ; K
+
+ DFB %11000000
+ DFB %11000000
+ DFB %11000000
+ DFB %11000000
+ DFB %11111110 ; L
+
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110 ; M
+
+ DFB %11000110
+ DFB %11110110
+ DFB %11011110
+ DFB %11000110
+ DFB %11000110 ; N
+
+ DFB %01111100
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %01111100 ; O
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+ DFB %11000000
+ DFB %11000000 ; P
+
+ DFB %01111100
+ DFB %11000110
+ DFB %11000110
+ DFB %11011110
+ DFB %01111110 ; Q
+
+ DFB %11111100
+ DFB %11000110
+ DFB %11111100
+ DFB %11000110
+ DFB %11000110 ; R
+
+ DFB %01111110
+ DFB %11000000
+ DFB %01111100
+ DFB %00000110
+ DFB %11111100 ; S
+
+ DFB %11111110
+ DFB %00110000
+ DFB %00110000
+ DFB %00110000
+ DFB %00110000 ; T
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %01111100 ; U
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %01111100
+ DFB %00111000 ; V
+
+ DFB %11000110
+ DFB %11000110
+ DFB %11000110
+ DFB %11111110
+ DFB %11000110 ; W
+
+ DFB %11000110
+ DFB %01101100
+ DFB %00111000
+ DFB %01101100
+ DFB %11000110 ; X
+
+ DFB %11000110
+ DFB %01101100
+ DFB %00111000
+ DFB %00110000
+ DFB %01100000 ; Y
+
+ DFB %11111110
+ DFB %00001100
+ DFB %00011000
+ DFB %01100000
+ DFB %11111110 ; Z
+
+*------------------------------------------------- Miscellaneous display...
+
+PrintScore STZ Buf ; Print Score
+ LDY #11+9*$A0+124
+ LDX #2
+]lp PHX
+ LDA Score,X
+ AND #$00FF
+ TYX
+ JSR Print_2Digits
+ TXY
+ PLX
+ DEX
+ BNE NoF
+ INC Buf
+NoF BPL ]lp
+ RTS
+
+PrintTotal STZ Buf ; Print Total
+ LDY #11+49*$A0+132
+ LDX #1
+]lp PHX
+ LDA Total,X
+ AND #$00FF
+ TYX
+ JSR Print_2Digits
+ TXY
+ PLX
+ DEX
+ BNE NoF0
+ INC Buf
+NoF0 BPL ]lp
+ RTS
+
+PrintLevel LDA #1 ; Print Level
+ STA Buf
+ LDX #11+29*$A0+140
+ LDA Level
+ JSR Print_2Digits
+ SEP $30
+ LDA LevelSpeed
+ PHA
+ AND #$F0
+ LSR
+ LSR
+ LSR
+ LSR
+ JSR Translate
+ STA SP
+ PLA
+ AND #$0F
+ JSR Translate
+ STA SP+1
+ REP $30
+ LDX #11+29*$A0+120
+ JSR Print
+SP ASC "??",00
+ RTS
+
+Print_2Digits PHA ; Print 2 Digits
+ AND #$F0
+ BEQ MaybeZero
+ INC Buf
+ INC Buf
+ LSR
+ LSR
+ LSR
+ LSR
+ CLC
+ ADC #"0"
+ BRA DrawR
+MaybeZero LDA #"0"
+ LDY Buf
+ CPY #2
+ BCS DrawR
+PatchS0 LDA #" "
+DrawR JSR Print_Char
+ PLA
+ AND #$0F
+ BEQ MaybeZero0
+ INC Buf
+ INC Buf
+ CLC
+ ADC #"0"
+ BRA DrawL
+MaybeZero0 LDA #"0"
+ LDY Buf
+ CPY #1
+ BCS DrawL
+PatchS1 LDA #" "
+DrawL JMP Print_Char
+
+ScorePerBrick DA $50 ; Bonus
+ DA $100
+ DA $150
+ DA $200
+ DA $250
+ DA $300
+ DA $350
+ DA $500
+ DA $500
+ ; RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB tile colours loaded into colour palette
+Palette HEX 0000F00099099900DD00630C960FA10B ; 000, 0F0, 999, 099, 0DD, C63, F96, BA1
+ HEX E50F5E088F0BA401F9062A0D7C0FFF0F ; FE5, 85E, B8F, 1A4, 6F9, D2A, F7C, FFF
+
+ZTop HEX F2222222222222222220
+ZTop0
+ZMiddle
+ZBottom0 HEX 21111111111111111110
+ZBottom HEX 00000000000000000000
+
+PrintHiScore LDX #11+23*$A0+11
+ STZ Pnt
+]loop PHX
+ LDA Pnt
+ CLC
+ ADC #HiScoreList
+ JSR Print_Rout
+ LDA #"."
+ STA PatchS0+1
+ STA PatchS1+1
+ JSR Print_Char
+ STZ Buf
+ LDA Pnt
+ CLC
+ ADC #HiScoreList+8
+ STA Pnt+2
+ LDY #2
+]lp PHY
+ LDA (Pnt+2),Y
+ AND #$00FF
+ JSR Print_2Digits
+ PLY
+ DEY
+ BNE NoF2
+ INC Buf
+NoF2 BPL ]lp
+
+ PLA
+ CLC
+ ADC #20*$A0
+ TAX
+ LDA Pnt
+ CLC
+ ADC #12
+ STA Pnt
+ CMP #8*12
+ BCC ]loop
+ LDA #" "
+ STA PatchS0+1
+ STA PatchS1+1
+ RTS
+
+*------------------------------------------------- High-score management
+* routine...
+
+CheckHighScore LDX #12*7
+]lp LDA Score+2
+ CMP HiScoreList+10,X
+ BEQ MoreCompare
+ BCS FindNext
+ BRA FoundLow
+MoreCompare LDA Score
+ CMP HiScoreList+8,X
+ BEQ FoundLow
+ BCS FindNext
+FoundLow CPX #12*7
+ BNE SomeHigh
+ SEC
+ RTS ; NoHigh
+FindNext TXA
+ SEC
+ SBC #12
+ TAX
+ BCS ]lp
+SomeHigh TXA
+ CLC
+ ADC #12
+ STA Buf
+
+ LDX #12*7
+]lp2 CPX Buf
+ BEQ EndMove
+ PHX
+ LDY #6
+]lp LDA HiScoreList-12,X
+ STA HiScoreList,X
+ INX
+ INX
+ DEY
+ BNE ]lp
+ PLA
+ SEC
+ SBC #12
+ TAX
+ BCS ]lp2
+
+EndMove LDX Buf
+ LDA Score
+ STA HiScoreList+8,X
+ LDA Score+2
+ STA HiScoreList+10,X
+
+ LDA Buf
+ PHA
+
+ LDA #130
+ STA Lgn
+ LDA #$36+3
+ STA Col
+ LDA #30
+ STA ZNbLgn
+ LDA #$2B+2
+ STA ZNbCol
+ JSR Window
+
+ LDX #138*$A0+$38+4
+ JSR Print
+ HEX 0CFF
+ TXT "ENTER NAME",00;"VOTRE NOM:",00
+
+ SEP $30
+ STL $E1C010
+
+ LDX #0
+ LDA #" "
+]lp STA NameAdr,X
+ INX
+ CPX #7
+ BNE ]lp
+ JSR PrintName
+
+ STZ Pnt
+
+]reloop STL $E1C010
+
+]loop LDX Pnt
+ LDA #"#"
+ STA NameAdr,X
+ JSR PrintName
+
+ LDX #12
+]lp LDL $E1C000
+ BMI KeyPress
+ JSR WaitSync
+ DEX
+ BNE ]lp
+
+ LDX Pnt
+ LDA #" "
+ STA NameAdr,X
+ JSR PrintName
+
+ LDX #12
+]lp LDL $E1C000
+ BMI KeyPress
+ JSR WaitSync
+ DEX
+ BNE ]lp
+
+ BRA ]loop
+
+KeyPress LDY Pnt
+ CMP #"M"&$9F
+ BEQ NoName
+ CMP #$9B
+ BEQ NoName
+ CMP #$FF
+ BEQ Delete
+ CMP #"H"&$9F
+ BEQ Delete
+NoDel CPY #7
+ BEQ ]reloop
+ CMP #" "
+ BCC ]reloop
+ CMP #"Z"+1
+ BCC OkCar
+ SEC
+ SBC #$20
+OkCar STA NameAdr,Y
+ INC Pnt
+ BRA ]reloop
+
+Delete CPY #0
+ BEQ ]reloop
+ LDA #" "
+ STA NameAdr,Y
+ DEC Pnt
+ BRA ]reloop
+
+NoName LDY Pnt
+ LDA #" "
+ STA NameAdr,Y
+
+ PLX
+ PLA ; Stacks on 16bits
+
+ LDY #0
+]lp LDA NameAdr,Y
+ STA HiScoreList,X
+ INY
+ INX
+ CPY #7
+ BNE ]lp
+
+ REP $30
+ LDA #$FFFF
+ STA FlagHi
+ JSR PrintHiScore
+ CLC
+ RTS
+
+PrintName PHP
+ REP $30
+ LDX #138+8*$A0+$38+4
+ JSR Print
+ ASC "<"
+NameAdr ASC "# "
+ ASC ">",00
+ PLP
+ RTS
+
+ DO vP8
+ ELSE
+UserId DS 2
+MasterId DS 2
+ FIN
+
+*------------------------------------------------- Patterns and masks...
+
+PatternList DA PatternList1
+ DA PatternList2
+ DA PatternList3
+ DA PatternList4
+ DA PatternList5
+ DA 0
+
+MskList DA MskCarre ; square
+ DA MskRond ; round
+ DA MskCarre
+ DA MskRondB
+ DA MskCarre
+
+MskCarre DA MskList0
+ DA MskList1
+ DA MskList2
+ DA MskList3
+ DA MskList4
+ DA MskList5
+ DA PatBlank
+
+MskRond DA MskList0
+ DA MskRond1
+ DA MskRond2
+ DA MskRond3
+ DA MskRond4
+ DA MskRond5
+ DA PatBlank
+
+MskRondB DA MskList0
+ DA MskRondB1
+ DA MskRondB2
+ DA MskRondB3
+ DA MskRondB4
+ DA MskRondB5
+ DA PatBlank
+
+
+PatternList1 DA PatBlank
+ DA Pat0
+ DA Pat1
+ DA Pat2
+ DA Pat3
+ DA Pat4
+ DA Pat5
+ DA Blanc0
+
+PatternList2 DA PatBlank
+ DA Ball0
+ DA Ball1
+ DA Ball2
+ DA Ball3
+ DA Ball4
+ DA Ball5
+ DA Blanc1
+
+PatternList3 DA PatBlank
+ DA En0
+ DA En1
+ DA En2
+ DA En3
+ DA En4
+ DA En5
+ DA Blanc0
+
+PatternList4 DA PatBlank
+ DA Tr0
+ DA Tr1
+ DA Tr2
+ DA Tr3
+ DA Tr4
+ DA Tr5
+ DA Blanc1
+
+
+PatternList5 DA PatBlank
+ DA Le0
+ DA Le1
+ DA Le2
+ DA Le3
+ DA Le4
+ DA Le5
+ DA Blanc0
+
+En0 HEX DEEEEEEEEEED
+ HEX 0DDEEEEEEDD0
+ HEX E0DDEEEEDD0E
+ HEX EE0DDEEDD0ED
+ HEX EEE0DDDD0EDD
+ HEX EEDD0ED0DEDD
+ HEX EDD0EEEE0DDD
+ HEX ED0EEEEEE0DD
+ HEX D0EEEEEEEE0D
+ HEX 0EEDDDDDDDE0
+ HEX EDDDDDDDDDDD ; Colour
+
+En1 HEX BCCCCCCCCCCB
+ HEX 0BBCCCCCCBB0
+ HEX C0BBCCCCBB0C
+ HEX CC0BBCCBB0CB
+ HEX CCC0BBBB0CBB
+ HEX CCBB0CB0BCBB
+ HEX CBB0CCCC0BBB
+ HEX CB0CCCCCC0BB
+ HEX B0CCCCCCCC0B
+ HEX 0CCBBBBBBBC0
+ HEX CBBBBBBBBBBB ; Colour
+
+En2 HEX 9AAAAAAAAAA9
+ HEX 099AAAAAA990
+ HEX A099AAAA990A
+ HEX AA099AA990A9
+ HEX AAA099990A99
+ HEX AA990A909A99
+ HEX A990AAAA0999
+ HEX A90AAAAAA099
+ HEX 90AAAAAAAA09
+ HEX 0AA9999999A0
+ HEX A99999999999 ; Colour
+
+En3 HEX 788888888887
+ HEX 077888888770
+ HEX 807788887708
+ HEX 880778877087
+ HEX 888077770877
+ HEX 887708707877
+ HEX 877088880777
+ HEX 870888888077
+ HEX 708888888807
+ HEX 088777777780
+ HEX 877777777777 ; Colour
+
+En4 HEX 566666666665
+ HEX 055666666550
+ HEX 605566665506
+ HEX 660556655065
+ HEX 666055550655
+ HEX 665506505655
+ HEX 655066660555
+ HEX 650666666055
+ HEX 506666666605
+ HEX 066555555560
+ HEX 655555555555 ; Colour
+
+En5 HEX 344444444443
+ HEX 033444444330
+ HEX 403344443304
+ HEX 440334433043
+ HEX 444033330433
+ HEX 443304303433
+ HEX 433044440333
+ HEX 430444444033
+ HEX 304444444403
+ HEX 044333333340
+ HEX 433333333333 ; Colour
+
+Ball0 HEX 000DEEEED000
+ HEX 00EEFEEEEE00
+ HEX 0EEFFFEEDEE0
+ HEX DEEEFEEEEDED
+ HEX EEEEEEEEEDDE
+ HEX EEEEEEEEEDDE
+ HEX EDEEEEEEDDDE
+ HEX DEDEEEEDDDED
+ HEX 0EDDDDDDDDE0
+ HEX 00EEDDDDEE00
+ HEX 000DEEEED000 ; Colour
+
+Ball1 HEX 000BCCCCB000
+ HEX 00CCFCCCCC00
+ HEX 0CCFFFCCBCC0
+ HEX BCCCFCCCCBCB
+ HEX CCCCCCCCCBBC
+ HEX CCCCCCCCCBBC
+ HEX CBCCCCCCBBBC
+ HEX BCBCCCCBBBCB
+ HEX 0CBBBBBBBBC0
+ HEX 00CCBBBBCC00
+ HEX 000BCCCCB000 ; Colour
+
+Ball2 HEX 0009AAAA9000
+ HEX 00AAFAAAAA00
+ HEX 0AAFFFAA9AA0
+ HEX 9AAAFAAAA9A9
+ HEX AAAAAAAAA99A
+ HEX AAAAAAAAA99A
+ HEX A9AAAAAA999A
+ HEX 9A9AAAA999A9
+ HEX 0A99999999A0
+ HEX 00AA9999AA00
+ HEX 0009AAAA9000 ; Colour
+
+Ball3 HEX 000788887000
+ HEX 0088F8888800
+ HEX 088FFF887880
+ HEX 7888F8888787
+ HEX 888888888778
+ HEX 888888888778
+ HEX 878888887778
+ HEX 787888877787
+ HEX 087777777780
+ HEX 008877778800
+ HEX 000788887000 ; Colour
+
+Blanc1 HEX 000FFFFFF000
+ HEX 00FFFFFFFF00
+ HEX 0FFFFFFFFFF0
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX 0FFFFFFFFFF0
+ HEX 00FFFFFFFF00
+ HEX 000FFFFFF000 ; Colour
+
+Ball4 HEX 000566665000
+ HEX 0066F6666600
+ HEX 066FFF665660
+ HEX 5666F6666565
+ HEX 666666666556
+ HEX 666666666556
+ HEX 656666665556
+ HEX 565666655565
+ HEX 065555555560
+ HEX 006655556600
+ HEX 000566665000 ; Colour
+
+Ball5 HEX 000344443000
+ HEX 0044F4444400
+ HEX 044FFF443440
+ HEX 3444F4444343
+ HEX 444444444334
+ HEX 444444444334
+ HEX 434444443334
+ HEX 343444433343
+ HEX 043333333340
+ HEX 004433334400
+ HEX 000344443000 ; Colour
+
+PatBlank HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000 ; Colour
+
+Pat0 HEX EEEEEEEEEEEE
+ HEX EEEEEEEEEEED
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEEEEEEEEEDD
+ HEX EEDDDDDDDDED
+ HEX EDDDDDDDDDDD ; Colour
+
+Pat1 HEX CCCCCCCCCCCC
+ HEX CCCCCCCCCCCB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCCCCCCCCCBB
+ HEX CCBBBBBBBBCB
+ HEX CBBBBBBBBBBB ; Colour
+
+Pat2 HEX AAAAAAAAAAAA
+ HEX AAAAAAAAAAA9
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AAAAAAAAAA99
+ HEX AA99999999A9
+ HEX A99999999999 ; Colour
+
+Pat3 HEX 888888888888
+ HEX 888888888887
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 888888888877
+ HEX 887777777787
+ HEX 877777777777 ; Colour
+
+Pat4 HEX 666666666666
+ HEX 666666666665
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 666666666655
+ HEX 665555555565
+ HEX 655555555555 ; Colour
+
+Pat5 HEX 444444444444
+ HEX 444444444443
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 444444444433
+ HEX 443333333343
+ HEX 433333333333 ; Colour
+
+Blanc0
+MskList0 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskList1 HEX 000000000000
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 000000000000
+
+MskList2 HEX 000000000000
+ HEX 000000000000
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 000000000000
+ HEX 000000000000
+
+MskList3 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskList4 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 0000FFFF0000
+ HEX 0000FFFF0000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskList5 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 00000FF00000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond1 HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 0FFFFFFFFFF0
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 0000FFFF0000
+ HEX 000000000000
+
+MskRond2 HEX 000000000000
+ HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 000FFFFFF000
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 00FFFFFFFF00
+ HEX 000FFFFFF000
+ HEX 0000FFFF0000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond3 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 0000FFFF0000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 000FFFFFF000
+ HEX 0000FFFF0000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond4 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 00000FF00000
+ HEX 0000FFFF0000
+ HEX 00000FF00000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+MskRond5 HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 00000FF00000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+
+
+MskRondB1 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFFF0000FFFF
+ HEX FFFFF00FFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB2 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFF000000FFF
+ HEX FFF000000FFF
+ HEX FFF000000FFF
+ HEX FFFFF00FFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB3 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFF000000FFF
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX FFF000000FFF
+ HEX FFFF0000FFFF
+ HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB4 HEX FFFFFFFFFFFF
+ HEX FFFFF00FFFFF
+ HEX FFF000000FFF
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX F0000000000F
+ HEX FF00000000FF
+ HEX FF00000000FF
+ HEX FFF000000FFF
+ HEX FFFFF00FFFFF
+ HEX FFFFFFFFFFFF
+
+MskRondB5 HEX FFFF0000FFFF
+ HEX FF00000000FF
+ HEX F0000000000F
+ HEX F0000000000F
+ HEX 000000000000
+ HEX 000000000000
+ HEX 000000000000
+ HEX F0000000000F
+ HEX F0000000000F
+ HEX FF00000000FF
+ HEX FFFF0000FFFF
+
+Tr0 HEX 000DEEEED000
+ HEX 00EEEDDDEE00
+ HEX 0EFFEDDDDEE0
+ HEX DEFEDDDDDEED
+ HEX EEEDDDDDDEFE
+ HEX EDDDDDDDDEFE
+ HEX EDDDDDDDEFFE
+ HEX DEDDDDDEFFED
+ HEX 0EDDEEFFFFE0
+ HEX 00EEFFFFEE00
+ HEX 000DEEEED000
+
+Tr1 HEX 000BCCCCB000
+ HEX 00CCCBBBCC00
+ HEX 0CFFCBBBBCC0
+ HEX BCFCBBBBBCCB
+ HEX CCCBBBBBBCFC
+ HEX CBBBBBBBBCFC
+ HEX CBBBBBBBCFFC
+ HEX BCBBBBBCFFCB
+ HEX 0CBBCCFFFFC0
+ HEX 00CCFFFFCC00
+ HEX 000BCCCCB000
+
+Tr2 HEX 0009AAAA9000
+ HEX 00AAA999AA00
+ HEX 0AFFA9999AA0
+ HEX 9AFA99999AA9
+ HEX AAA999999AFA
+ HEX A99999999AFA
+ HEX A9999999AFFA
+ HEX 9A99999AFFA9
+ HEX 0A99AAFFFFA0
+ HEX 00AAFFFFAA00
+ HEX 0009AAAA9000
+
+Tr3 HEX 000788887000
+ HEX 008887778800
+ HEX 08FF87777880
+ HEX 78F877777887
+ HEX 8887777778F8
+ HEX 8777777778F8
+ HEX 877777778FF8
+ HEX 78777778FF87
+ HEX 087788FFFF80
+ HEX 0088FFFF8800
+ HEX 000788887000
+
+Tr4 HEX 000566665000
+ HEX 006665556600
+ HEX 06FF65555660
+ HEX 56F655555665
+ HEX 6665555556F6
+ HEX 6555555556F6
+ HEX 655555556FF6
+ HEX 56555556FF65
+ HEX 065566FFFF60
+ HEX 0066FFFF6600
+ HEX 000566665000
+
+Tr5 HEX 000344443000
+ HEX 004443334400
+ HEX 04FF43333440
+ HEX 34F433333443
+ HEX 4443333334F4
+ HEX 4333333334F4
+ HEX 433333334FF4
+ HEX 34333334FF43
+ HEX 043344FFFF40
+ HEX 0044FFFF4400
+ HEX 000344443000
+
+Le0 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFFF2002FF22
+ HEX FFF200002F22
+ HEX FFF00FF00F22
+ HEX FFF000000F22
+ HEX FFF00FF00F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le1 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF00000FF22
+ HEX FFF002F20F22
+ HEX FFF000002F22
+ HEX FFF002F20F22
+ HEX FFF00000FF22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le2 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF200002F22
+ HEX FFF002FF0F22
+ HEX FFF002FFFF22
+ HEX FFF002FF0F22
+ HEX FFF200002F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le3 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF000002F22
+ HEX FFF002F20F22
+ HEX FFF002FF0F22
+ HEX FFF002F20F22
+ HEX FFF000002F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le4 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF000000F22
+ HEX FFF002FFFF22
+ HEX FFF0000FFF22
+ HEX FFF002FFFF22
+ HEX FFF000000F22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+Le5 HEX FFFFFFFFFFFF
+ HEX FFFFFFFFFFF2
+ HEX FFFFFFFFFF22
+ HEX FFF000000F22
+ HEX FFF002FFFF22
+ HEX FFF0000FFF22
+ HEX FFF002FFFF22
+ HEX FFF002FFFF22
+ HEX FFFFFFFFFF22
+ HEX FF22222222F2
+ HEX F22222222222
+
+
+*------------------------------------------------- Logo Beyond
+
+BeyondLogo HEX 87733828000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000000000000000000000110FFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFF0110F0000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000F0110F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000F0110F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCCCC0E00C00EEEEEEEEEEEE
+ HEX EEEEEEEE00A00EEEE000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCCCCCCC000
+ HEX CCC00EEEEEEEEEEEEEEEEEE00AAA00EE
+ HEX E000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCCCC00CCCCC00EEEEEEEEEE
+ HEX EEEEEE00AAAAA00EE000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCCCCCC00CC
+ HEX CCCCC00EEEEEEEEEEEEEE00AAAAAAA00
+ HEX E000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCC00CCCCCCCCC00EEEEEEEE
+ HEX EEEE00AAAAAAAAA00000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCCCC00CCCC
+ HEX CCCCCCC00EEEEEEEEEE00AAAAAAAAAAA
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCC00CCCCCCCCCCCCC00EEEEEE
+ HEX EE00AAAAAAAAAAAAA000F0000F000EEE
+ HEX EEEEEEEEEEEEEEE0CCCCCCCC000000CC
+ HEX CCCCC000000EEEEEE000000AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEE0
+ HEX CCCCCCCCCCCCC0CCCCCCC0EEEE00EEEE
+ HEX EEEEEE0AAAAAAA0EE000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
+ HEX CCCCC000000000000000000AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCC0CCCCCCC0AAAA0E00AA
+ HEX AAAAAA0AAAAAAA000000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000EE00AAAAAAA0AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00
+ HEX AAAAAA0AAAAAAA000000F0000F000EEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEE00AAAAA0AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX 00AAAA0AAAAAAA000000F0000F000EEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEE00AAA0AAAAAAA00
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX 0000AA0AAAAAAA000000F0000F000EEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEE000000A0AAAAAAA0A
+ HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
+ HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00
+ HEX 0000000AAAAAAA0AA000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000EE0000000000AAAAAAA0A
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCC0CCCCCCC0AAAA0E00A0
+ HEX 0000000AAAAAAA0AA000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
+ HEX CCCCC0AAAA000AA00000000AAAAAAA0A
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCC0CCCCCCC0AAAA00AAA0
+ HEX 0000000AAAAAAA0AA000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
+ HEX CCCCC0AAAA0AAAA00000000AAAAAAAAA
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCC000CCCCCC0AAAAAAAAA0
+ HEX 0000000AAAAAAAAAA000F0000F000EEE
+ HEX EEEEEEE000000000CCCCCCCCCCCCCCCC
+ HEX CCCCC0AAAAAAAAA00000000AAAAAAAAA
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX CCCCCCCCCCCCCCCCCCCCC0AAAAAAAAA0
+ HEX 0000000AAAAAAAAAA000F0000F000EEE
+ HEX EEEEEEE000000000BCCCCCCCCCCCCCCC
+ HEX CCCCB0AAAAAAAAA00000000AAAAAAAAA
+ HEX A000F0000F000EEEEEEEEEE000000000
+ HEX 0CCCCCCCCCCCCCCCCCCC09AAAAAAAAA0
+ HEX 0000000AAAAAAAAA9000F0000F000EEE
+ HEX EEEEEEE00000000000CCCCCCCCCCCCCC
+ HEX CCC09AAAAAAAAAA00000000AAAAAAAAA
+ HEX 0000F0000F000EEEEEEEEEE000000000
+ HEX 000BCCCCCCCCCCCCCB09AAAAAAAAAAA0
+ HEX 0000000AAAAAAAA00000F0000F000EEE
+ HEX EEEEEEE00000000000000BCCCCCCCCCB
+ HEX 09AAAAAAAAAAAAA00000000AAAAAA900
+ HEX 0000F0000F0000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000F0000F000F2222222220F2222222
+ HEX 0F22200000F2220F220F222000F220F2
+ HEX 220F220F222222222000F0000F000200
+ HEX 00000020200000020200200000200202
+ HEX 02020002020020200022020200000000
+ HEX 2000F0000F0002222222222022222202
+ HEX 02002000002222020202222020202022
+ HEX 22020202222222222000F0000F000000
+ HEX 00000000000002020200200000000002
+ HEX 02000002022020000020020000000000
+ HEX 0000F0000F000F2222200000F2220202
+ HEX 0200200000F22202020F2220202020F2
+ HEX 2202020F222222222000F0000F000200
+ HEX 00200000200202020200200000200202
+ HEX 02020020002020200202020200000000
+ HEX 2000F0000F0002000020000020020202
+ HEX 02002000002002020202002000202020
+ HEX 02020202222220002000F0000F000200
+ HEX 00200000200202020200200000200202
+ HEX 02020020002020200202020000002000
+ HEX 2000F0000F0002000022222020022F02
+ HEX 020022222020022F0202002000202020
+ HEX 0202020F2222F0002000F0000F000200
+ HEX 00000020200000020200000020200000
+ HEX 02020020002020200202020200000000
+ HEX 2000F0000F0002000000002020000002
+ HEX 02000000202000000202002000202020
+ HEX 02020202000000002000F0000F000222
+ HEX 22222220222222220222222220222222
+ HEX 22022220002220222202220222222222
+ HEX 2000F0000F0000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000F0000F000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 0000F0000FFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ HEX FFFFFFFFFFFFFFFFFFFFF00000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000111100000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000011110000
+ HEX 00000000000000000000000000000000
+ HEX 00000000000000000000000000000000
+ HEX 00000000
+
+*------------------------------------------------- Scores...
+
+SignatureTest DS 8
+Signature ASC "BeyondGS"
+
+HiScoreList TXT "HULK ",00;"OLIVIER",00 ; High Score List
+ ADRL $00010000
+ TXT "EARTH ",00;"J-YVES ",00
+ ADRL $00009000
+ TXT "BUSH ",00;"BERNARD",00
+ ADRL $00008000
+ TXT "AXE ",00;"ERIC ",00
+ ADRL $00007000
+ TXT "PERFECT",00;"HUBERT ",00
+ ADRL $00006000
+ TXT "POWERS ",00;"J-LUC ",00
+ ADRL $00005000
+ TXT "TUGBOAT",00;"YVAN ",00
+ ADRL $00004000
+ TXT "DINO ",00;"EMILE ",00
+ ADRL $00000001
+
+
+ DO vP8
+ ELSE
+ MX %00
+PgmDeath PHA
+ PEA ^DeathMsg
+ PEA DeathMsg
+ LDX #$1503
+ JSL $E10000
+
+DeathMsg STR 'Beyond Colums Fatal Error :$'
+ FIN
+
+ DS \
+
+ DO vP8
+BufIO = *
+PathName = *+$400
+ FIN
+
+
diff --git a/fta/Library/Ace.Macs.s b/fta/Library/Ace.Macs.s
new file mode 100644
index 0000000..ab50ebc
--- /dev/null
+++ b/fta/Library/Ace.Macs.s
@@ -0,0 +1,62 @@
+* ACE tool macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+
+_ACEBootInit MAC
+ Tool $11D
+ <<<
+~ACEStartUp MAC
+ PHW ]1
+_ACEStartUp MAC
+ Tool $21D
+ <<<
+_ACEShutDown MAC
+ Tool $31D
+ <<<
+~ACEVersion MAC
+ PHA
+_ACEVersion MAC
+ Tool $41D
+ <<<
+_ACEReset MAC
+ Tool $51D
+ <<<
+~ACEStatus MAC
+ PHA
+_ACEStatus MAC
+ Tool $61D
+ <<<
+~ACEInfo MAC
+ P2SW ]1
+_ACEInfo MAC
+ Tool $71D
+ <<<
+~ACECompress MAC
+ PxL ]1;]2;]3;]4
+ PxW ]5;]6
+_ACECompress MAC
+ Tool $91D
+ <<<
+~ACEExpand MAC
+ PxL ]1;]2;]3;]4
+ PxW ]5;]6
+_ACEExpand MAC
+ Tool $A1D
+ <<<
+_ACECompBegin MAC
+ Tool $B1D
+ <<<
+_ACEExpBegin MAC
+ Tool $C1D
+ <<<
+_GetACEExpState MAC
+ Tool $D1D
+ <<<
+_SetACEExpState MAC
+ Tool $E1D
+ <<<
+
diff --git a/fta/Library/Adb.Macs.s b/fta/Library/Adb.Macs.s
new file mode 100644
index 0000000..5879799
--- /dev/null
+++ b/fta/Library/Adb.Macs.s
@@ -0,0 +1,91 @@
+* Desktop Bus tool macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_ADBBootInit MAC
+ Tool $109
+ <<<
+_ADBStartUp MAC
+ Tool $209
+ <<<
+_ADBShutDown MAC
+ Tool $309
+ <<<
+_ADBVersion MAC
+ Tool $409
+ <<<
+_ADBReset MAC
+ Tool $509
+ <<<
+~ADBStatus MAC
+ PHA
+_ADBStatus MAC
+ Tool $609
+ <<<
+~SendInfo MAC
+ PHW ]1
+ PHLW ]2;]3
+_SendInfo MAC
+ Tool $909
+ <<<
+~ReadKeyMicroData MAC
+ PHW ]1
+ PHLW ]2;]3
+_ReadKeyMicroData MAC
+ Tool $A09
+ <<<
+~ReadKeyMicroMem MAC
+ PxL ]1;]2
+ PHW ]3
+_ReadKeyMicroMem MAC
+ Tool $B09
+ <<<
+~AsyncADBReceive MAC
+ PHLW ]1;]2
+_AsyncADBReceive MAC
+ Tool $D09
+ <<<
+~SyncADBReceive MAC
+ PHW ]1
+ PHLW ]2;]3
+_SyncADBReceive MAC
+ Tool $E09
+ <<<
+_AbsOn MAC
+ Tool $F09
+ <<<
+_AbsOff MAC
+ Tool $1009
+ <<<
+~ReadAbs MAC
+ PHA
+_ReadAbs MAC
+ Tool $1109
+ <<<
+~GetAbsScale MAC
+ PHL ]1
+_GetAbsScale MAC
+ Tool $1209
+ <<<
+~SetAbsScale MAC
+ PHL ]1
+_SetAbsScale MAC
+ Tool $1309
+ <<<
+~SRQPoll MAC
+ PHLW ]1;]2
+_SRQPoll MAC
+ Tool $1409
+ <<<
+~SRQRemove MAC
+ PHW ]1
+_SRQRemove MAC
+ Tool $1509
+ <<<
+_ClearSRQTable MAC
+ Tool $1609
+ <<<
+
diff --git a/fta/Library/Anim.s b/fta/Library/Anim.s
new file mode 100644
index 0000000..30de65a
--- /dev/null
+++ b/fta/Library/Anim.s
@@ -0,0 +1,83 @@
+*
+* Anim Tool Set
+*
+
+_AnimBootInit MAC
+ Tool $0125
+ <<<
+_AnimStartUp MAC
+ Tool $0225
+ <<<
+_AnimShutDown MAC
+ Tool $0325
+ <<<
+_AnimVersion MAC
+ Tool $0425
+ <<<
+_AnimReset MAC
+ Tool $0525
+ <<<
+_AnimStatus MAC
+ Tool $0623
+ <<<
+_AnimIdleDebug MAC
+ Tool $0825
+ <<<
+_StartScene MAC
+ Tool $0925
+ <<<
+_StopScene MAC
+ Tool $0A25
+ <<<
+_StartFrameTimer MAC
+ Tool $0B25
+ <<<
+_StopFrameTimer MAC
+ Tool $0C25
+ <<<
+_SetBackGndPort MAC
+ Tool $0D25
+ <<<
+_RefreshBack MAC
+ Tool $0E25
+ <<<
+_StartChar MAC
+ Tool $0F25
+ <<<
+_MoveChar MAC
+ Tool $1025
+ <<<
+_GetCharRecPtr MAC
+ Tool $1125
+ <<<
+_KillChar MAC
+ Tool $1225
+ <<<
+_LoadActor MAC
+ Tool $1325
+ <<<
+_SetCharScript MAC
+ Tool $1425
+ <<<
+_RunAnimScripts MAC
+ Tool $1525
+ <<<
+_FillAddrTable MAC
+ Tool $1625
+ <<<
+_CompileRect MAC
+ Tool $1725
+ <<<
+_StartTockTask MAC
+ Tool $1825
+ <<<
+_FireTockTask MAC
+ Tool $1925
+ <<<
+_SetForeGndPort MAC
+ Tool $1A25
+ <<<
+_SetAnimWindow MAC
+ Tool $1B25
+ <<<
+
diff --git a/fta/Library/Ctl.Macs.s b/fta/Library/Ctl.Macs.s
new file mode 100644
index 0000000..40e45ea
--- /dev/null
+++ b/fta/Library/Ctl.Macs.s
@@ -0,0 +1,305 @@
+* Control Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_CtlBootInit MAC
+ Tool $110
+ <<<
+~CtlStartUp MAC
+ PxW ]1;]2
+_CtlStartUp MAC
+_InitCtrlMgr MAC
+ Tool $210
+ <<<
+_CtlShutDown MAC
+_CtrlShutDown MAC
+ Tool $310
+ <<<
+~CtlVersion MAC
+ PHA
+_CtlVersion MAC
+ Tool $410
+ <<<
+_CtlReset MAC
+ Tool $510
+ <<<
+~CtlStatus MAC
+ PHA
+_CtlStatus MAC
+ Tool $610
+ <<<
+_NewControl MAC
+ Tool $910
+ <<<
+~DisposeControl MAC
+ PHL ]1
+_DisposeControl MAC
+ Tool $A10
+ <<<
+~KillControls MAC
+ PHL ]1
+_KillControls MAC
+ Tool $B10
+ <<<
+~SetCtlTitle MAC
+ PxL ]1;]2
+_SetCtlTitle MAC
+ Tool $C10
+ <<<
+~GetCtlTitle MAC
+ P2SL ]1
+_GetCtlTitle MAC
+ Tool $D10
+ <<<
+~HideControl MAC
+ PHL ]1
+_HideControl MAC
+ Tool $E10
+ <<<
+~ShowControl MAC
+ PHL ]1
+_ShowControl MAC
+ Tool $F10
+ <<<
+~DrawControls MAC
+ PHL ]1
+_DrawControls MAC
+ Tool $1010
+ <<<
+~HiliteControl MAC
+ PHWL ]1;]2
+_HiliteControl MAC
+ Tool $1110
+ <<<
+_CtlNewRes MAC
+ Tool $1210
+ <<<
+~FindControl MAC
+ PHA
+ PHLW ]1;]2
+ PHWL ]3;]4
+_FindControl MAC
+ Tool $1310
+ <<<
+~TestControl MAC
+ P1SW ]1
+ PHWL ]2;]3
+_TestControl MAC
+ Tool $1410
+ <<<
+~TrackControl MAC
+ PHA
+ PxW ]1;]2
+ PxL ]3;]4
+_TrackControl MAC
+ Tool $1510
+ <<<
+~MoveControl MAC
+ PxW ]1;]2
+ PHL ]3
+_MoveControl MAC
+ Tool $1610
+ <<<
+~DragControl MAC
+ PxW ]1;]2
+ PxL ]3;]4
+ PHWL ]5;]6
+_DragControl MAC
+ Tool $1710
+ <<<
+~SetCtlIcons MAC
+ P2SL ]1
+_SetCtlIcons MAC
+ Tool $1810
+ <<<
+~SetCtlValue MAC
+ PHWL ]1;]2
+_SetCtlValue MAC
+ Tool $1910
+ <<<
+~GetCtlValue MAC
+ P1SL ]1
+_GetCtlValue MAC
+ Tool $1A10
+ <<<
+~SetCtlParams MAC
+ PxW ]1;]2
+ PHL ]3
+_SetCtlParams MAC
+ Tool $1B10
+ <<<
+~GetCtlParams MAC
+ P2SL ]1
+_GetCtlParams MAC
+ Tool $1C10
+ <<<
+~DragRect MAC
+ P2SL ]1
+ PHLW ]2;]3
+ PHWL ]4;]5
+ PxL ]6;]7
+ PHW ]8
+_DragRect MAC
+ Tool $1D10
+ <<<
+~GrowSize MAC
+ PHS 2
+_GrowSize MAC
+ Tool $1E10
+ <<<
+~GetCtlDpage MAC
+ PHA
+_GetCtlDpage MAC
+ Tool $1F10
+ <<<
+~SetCtlAction MAC
+ PxL ]1;]2
+_SetCtlAction MAC
+ Tool $2010
+ <<<
+~GetCtlAction MAC
+ P2SL ]1
+_GetCtlAction MAC
+ Tool $2110
+ <<<
+~SetCtlRefCon MAC
+ PxL ]1;]2
+_SetCtlRefCon MAC
+ Tool $2210
+ <<<
+~GetCtlRefCon MAC
+ P2SL ]1
+_GetCtlRefCon MAC
+ Tool $2310
+ <<<
+~EraseControl MAC
+ PHL ]1
+_EraseControl MAC
+ Tool $2410
+ <<<
+~DrawOneCtl MAC
+ PHL ]1
+_DrawOneCtl MAC
+ Tool $2510
+ <<<
+~FindTargetCtl MAC
+ PHS 2
+_FindTargetCtl MAC
+ Tool $2610
+ <<<
+~MakeNextCtlTarget MAC
+ PHS 2
+_MakeNextCtlTarget MAC
+ Tool $2710
+ <<<
+~MakeThisCtlTarget MAC
+ PHL ]1
+_MakeThisCtlTarget MAC
+ Tool $2810
+ <<<
+~SendEventToCtl MAC
+ P1SW ]1
+ PxL ]2;]3
+_SendEventToCtl MAC
+ Tool $2910
+ <<<
+~GetCtlID MAC
+ P2SL ]1
+_GetCtlID MAC
+ Tool $2A10
+ <<<
+~SetCtlID MAC
+ PxL ]1;]2
+_SetCtlID MAC
+ Tool $2B10
+ <<<
+~CallCtlDefProc MAC
+ PHLW ]1;]2
+ PHL ]3
+_CallCtlDefProc MAC
+ Tool $2C10
+ <<<
+~NotifyCtls MAC
+ PxW ]1;]2
+ PxL ]3;]4
+_NotifyCtls MAC
+ Tool $2D10
+ <<<
+~GetCtlMoreFlags MAC
+ P1SL ]1
+_GetCtlMoreFlags MAC
+ Tool $2E10
+ <<<
+~SetCtlMoreFlags MAC
+ PHWL ]1;]2
+_SetCtlMoreFlags MAC
+ Tool $2F10
+ <<<
+~GetCtlHandleFromID MAC
+ PHS 2
+ PxL ]1;]2
+_GetCtlHandleFromID MAC
+ Tool $3010
+ <<<
+~NewControl2 MAC
+ P2SL ]1
+ PHWL ]2;]3
+_NewControl2 MAC
+ Tool $3110
+ <<<
+~CMLoadResource MAC
+ P2SW ]1
+ PHL ]2
+_CMLoadResource MAC
+ Tool $3210
+ <<<
+~CMReleaseResource MAC
+ PHWL ]1;]2
+_CMReleaseResource MAC
+ Tool $3310
+ <<<
+~SetCtlParamPtr MAC
+ PHL ]1
+_SetCtlParamPtr MAC
+ Tool $3410
+ <<<
+~GetCtlParamPtr MAC
+ PHS 2
+_GetCtlParamPtr MAC
+ Tool $3510
+ <<<
+~InvalCtls MAC
+ PHL ]1
+_InvalCtls MAC
+ Tool $3710
+ <<<
+~qCtlStartUp MAC
+ PHW ]1
+ NextDP ]2;$100
+ Tool $210
+ <<<
+_FindRadioButton MAC
+ Tool $3910
+ <<<
+_SetLETextByID MAC
+ Tool $3A10
+ <<<
+_GetLETextByID MAC
+ Tool $3B10
+ <<<
+_SetCtlValueByID MAC
+ Tool $3C10
+ <<<
+_GetCtlValueByID MAC
+ Tool $3D10
+ <<<
+_InvalOneCtlByID MAC
+ Tool $3E10
+ <<<
+_HiliteCtlByID MAC
+ Tool $3F10
+ <<<
+
diff --git a/fta/Library/Desk.Macs.s b/fta/Library/Desk.Macs.s
new file mode 100644
index 0000000..c5442ed
--- /dev/null
+++ b/fta/Library/Desk.Macs.s
@@ -0,0 +1,143 @@
+* Desk Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_DeskBootInit MAC
+ Tool $105
+ <<<
+_DeskStartUp MAC
+ Tool $205
+ <<<
+_DeskShutDown MAC
+ Tool $305
+ <<<
+~DeskVersion MAC
+ PHA
+_DeskVersion MAC
+ Tool $405
+ <<<
+_DeskReset MAC
+ Tool $505
+ <<<
+~DeskStatus MAC
+ PHA
+_DeskStatus MAC
+ Tool $605
+ <<<
+_SaveScrn MAC
+ Tool $905
+ <<<
+_RestScrn MAC
+ Tool $A05
+ <<<
+_SaveAll MAC
+ Tool $B05
+ <<<
+_RestAll MAC
+ Tool $C05
+ <<<
+~InstallNDA MAC
+ PHL ]1
+_InstallNDA MAC
+ Tool $E05
+ <<<
+~InstallCDA MAC
+ PHL ]1
+_InstallCDA MAC
+ Tool $F05
+ <<<
+_ChooseCDA MAC
+ Tool $1105
+ <<<
+~SetDAStrPtr MAC
+ PxL ]1;]2
+_SetDAStrPtr MAC
+ Tool $1305
+ <<<
+~GetDAStrPtr MAC
+ PHS 2
+_GetDAStrPtr MAC
+ Tool $1405
+ <<<
+~OpenNDA MAC
+ P1SW ]1
+_OpenNDA MAC
+ Tool $1505
+ <<<
+~CloseNDA MAC
+ PHW ]1
+_CloseNDA MAC
+ Tool $1605
+ <<<
+~SystemClick MAC
+ PxL ]1;]2
+ PHW ]3
+_SystemClick MAC
+ Tool $1705
+ <<<
+~SystemEdit MAC
+ P1SW ]1
+_SystemEdit MAC
+ Tool $1805
+ <<<
+_SystemTask MAC
+ Tool $1905
+ <<<
+~SystemEvent MAC
+ P1SW ]1
+ PxL ]2;]3;]4
+ PHW ]5
+_SystemEvent MAC
+ Tool $1A05
+ <<<
+~GetNumNDAs MAC
+ PHA
+_GetNumNDAs MAC
+ Tool $1B05
+ <<<
+~CloseNDAbyWinPtr MAC
+ PHL ]1
+_CloseNDAbyWinPtr MAC
+ Tool $1C05
+ <<<
+_CloseAllNDAs MAC
+ Tool $1D05
+ <<<
+~FixAppleMenu MAC
+ PHW ]1
+_FixAppleMenu MAC
+ Tool $1E05
+ <<<
+~AddToRunQ MAC
+ PHL ]1
+_AddToRunQ MAC
+ Tool $1F05
+ <<<
+~RemoveFromRunQ MAC
+ PHL ]1
+_RemoveFromRunQ MAC
+ Tool $2005
+ <<<
+~RemoveCDA MAC
+ PHL ]1
+_RemoveCDA MAC
+ Tool $2105
+ <<<
+~RemoveNDA MAC
+ PHL ]1
+_RemoveNDA MAC
+ Tool $2205
+ <<<
+_GetDeskAccInfo MAC
+ Tool $2305
+ <<<
+_CallDeskAcc MAC
+ Tool $2405
+ <<<
+_GetDeskGlobal MAC
+ Tool $2505
+ <<<
+
diff --git a/fta/Library/Dialog.Macs.s b/fta/Library/Dialog.Macs.s
new file mode 100644
index 0000000..fccdd06
--- /dev/null
+++ b/fta/Library/Dialog.Macs.s
@@ -0,0 +1,285 @@
+* Dialog Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_DialogBootInit MAC
+ Tool $115
+ <<<
+~DialogStartUp MAC
+ PHW ]1
+_DialogStartUp MAC
+ Tool $215
+ <<<
+_DialogShutDown MAC
+ Tool $315
+ <<<
+~DialogVersion MAC
+ PHA
+_DialogVersion MAC
+ Tool $415
+ <<<
+_DialogReset MAC
+ Tool $515
+ <<<
+~DialogStatus MAC
+ PHA
+_DialogStatus MAC
+ Tool $615
+ <<<
+~ErrorSound MAC
+ PHL ]1
+_ErrorSound MAC
+ Tool $915
+ <<<
+~NewModalDialog MAC
+ P2SL ]1
+ PHWL ]2;]3
+_NewModalDialog MAC
+ Tool $A15
+ <<<
+~NewModelessDialog MAC
+ P2SL ]1
+ PxL ]2;]3
+ PHWL ]4;]5
+ PHL ]6
+_NewModelessDialog MAC
+ Tool $B15
+ <<<
+~CloseDialog MAC
+ PHL ]1
+_CloseDialog MAC
+ Tool $C15
+ <<<
+~NewDItem MAC
+ PHLW ]1;]2
+ PHLW ]3;]4
+ PHLW ]5;]6
+ PHWL ]7;]8
+_NewDItem MAC
+ Tool $D15
+ <<<
+~RemoveDItem MAC
+ PHLW ]1;]2
+_RemoveDItem MAC
+ Tool $E15
+ <<<
+~ModalDialog MAC
+ P1SL ]1
+_ModalDialog MAC
+ Tool $F15
+ <<<
+~IsDialogEvent MAC
+ P1SL ]1
+_IsDialogEvent MAC
+ Tool $1015
+ <<<
+~DialogSelect MAC
+ P1SL ]1
+ PxL ]2;]3
+_DialogSelect MAC
+ Tool $1115
+ <<<
+~DlgCut MAC
+ PHL ]1
+_DlgCut MAC
+ Tool $1215
+ <<<
+~DlgCopy MAC
+ PHL ]1
+_DlgCopy MAC
+ Tool $1315
+ <<<
+~DlgPaste MAC
+ PHL ]1
+_DlgPaste MAC
+ Tool $1415
+ <<<
+~DlgDelete MAC
+ PHL ]1
+_DlgDelete MAC
+ Tool $1515
+ <<<
+~DrawDialog MAC
+ PHL ]1
+_DrawDialog MAC
+ Tool $1615
+ <<<
+~Alert MAC
+ PHA
+ PxL ]1;]2
+_Alert MAC
+ Tool $1715
+ <<<
+~StopAlert MAC
+ PHA
+ PxL ]1;]2
+_StopAlert MAC
+ Tool $1815
+ <<<
+~NoteAlert MAC
+ PHA
+ PxL ]1;]2
+_NoteAlert MAC
+ Tool $1915
+ <<<
+~CautionAlert MAC
+ PHA
+ PxL ]1;]2
+_CautionAlert MAC
+ Tool $1A15
+ <<<
+~ParamText MAC
+ PxL ]1;]2;]3;]4
+_ParamText MAC
+ Tool $1B15
+ <<<
+~SetDAFont MAC
+ PHL ]1
+_SetDAFont MAC
+ Tool $1C15
+ <<<
+~GetControlDItem MAC
+ PHS 2
+ PHLW ]1;]2
+_GetControlDItem MAC
+ Tool $1E15
+ <<<
+~GetIText MAC
+ PHL ]1
+ PHWL ]2;]3
+_GetIText MAC
+ Tool $1F15
+ <<<
+~SetIText MAC
+ PHL ]1
+ PHWL ]2;]3
+_SetIText MAC
+ Tool $2015
+ <<<
+~SelectIText MAC
+ PHL ]1
+ PxW ]2;]3;]4
+_SelectIText MAC
+ Tool $2115
+ <<<
+~HideDItem MAC
+ PHLW ]1;]2
+_HideDItem MAC
+ Tool $2215
+ <<<
+~ShowDItem MAC
+ PHLW ]1;]2
+_ShowDItem MAC
+ Tool $2315
+ <<<
+~FindDItem MAC
+ PHA
+ PxL ]1;]2
+_FindDItem MAC
+ Tool $2415
+ <<<
+~UpdateDialog MAC
+ PxL ]1;]2
+_UpdateDialog MAC
+ Tool $2515
+ <<<
+~GetDItemType MAC
+ PHA
+ PHLW ]1;]2
+_GetDItemType MAC
+ Tool $2615
+ <<<
+~SetDItemType MAC
+ PHW ]1
+ PHLW ]2;]3
+_SetDItemType MAC
+ Tool $2715
+ <<<
+~GetDItemBox MAC
+ PHL ]1
+ PHWL ]2;]3
+_GetDItemBox MAC
+ Tool $2815
+ <<<
+~SetDItemBox MAC
+ PHL ]1
+ PHWL ]2;]3
+_SetDItemBox MAC
+ Tool $2915
+ <<<
+~GetFirstDItem MAC
+ P1SL ]1
+_GetFirstDItem MAC
+ Tool $2A15
+ <<<
+~GetNextDItem MAC
+ PHA
+ PHLW ]1;]2
+_GetNextDItem MAC
+ Tool $2B15
+ <<<
+~ModalDialog2 MAC
+ P2SL ]1
+_ModalDialog2 MAC
+ Tool $2C15
+ <<<
+~GetDItemValue MAC
+ PHA
+ PHLW ]1;]2
+_GetDItemValue MAC
+ Tool $2E15
+ <<<
+~SetDItemValue MAC
+ PHW ]1
+ PHLW ]2;]3
+_SetDItemValue MAC
+ Tool $2F15
+ <<<
+~GetNewModalDialog MAC
+ P2SL ]1
+_GetNewModalDialog MAC
+ Tool $3215
+ <<<
+~GetNewDItem MAC
+ PxL ]1;]2
+_GetNewDItem MAC
+ Tool $3315
+ <<<
+~GetAlertStage MAC
+ PHA
+_GetAlertStage MAC
+ Tool $3415
+ <<<
+_ResetAlertStage MAC
+ Tool $3515
+ <<<
+~DefaultFilter MAC
+ PHA
+ PxL ]1;]2;]3
+_DefaultFilter MAC
+ Tool $3615
+ <<<
+~GetDefButton MAC
+ P1SL ]1
+_GetDefButton MAC
+ Tool $3715
+ <<<
+~SetDefButton MAC
+ PHWL ]1;]2
+_SetDefButton MAC
+ Tool $3815
+ <<<
+~DisableDItem MAC
+ PHLW ]1;]2
+_DisableDItem MAC
+ Tool $3915
+ <<<
+~EnableDItem MAC
+ PHLW ]1;]2
+_EnableDItem MAC
+ Tool $3A15
+ <<<
+
diff --git a/fta/Library/Dos.16.Macs.s b/fta/Library/Dos.16.Macs.s
new file mode 100644
index 0000000..d97f965
--- /dev/null
+++ b/fta/Library/Dos.16.Macs.s
@@ -0,0 +1,177 @@
+*===============================
+* ProDOS-16 macro and equates
+*
+* Use with syntax:
+*
+* _CMDNAME PARMADR
+*
+* where "CMDNAME" is one of the
+* following labels and "PARMADR"
+* is the label of the parameters
+* table to use.
+*
+*-------------------------------
+
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; All Rights Reserved
+;
+open = $10
+read = $12
+write = $13
+close = $14
+
+_CREATE MAC
+ DOS16 $01;]1
+ <<<
+
+_DESTROY MAC
+ DOS16 $02;]1
+ <<<
+
+_CHANGE_PATH MAC
+ DOS16 $04;]1
+ <<<
+
+_SET_FILE_INFO MAC
+ DOS16 $05;]1
+ <<<
+
+_GET_FILE_INFO MAC
+ DOS16 $06;]1
+ <<<
+
+_VOLUME MAC
+ DOS16 $08;]1
+ <<<
+
+_SET_PREFIX MAC
+ DOS16 $09;]1
+ <<<
+
+_SETPREFIX MAC ; alternate name
+ DOS16 $09;]1
+ <<<
+
+_GET_PREFIX MAC
+ DOS16 $0A;]1
+ <<<
+
+_GETPREFIX MAC ; alternate name
+ DOS16 $0A;]1
+ <<<
+
+_CLEAR_BACKUP_BIT MAC
+ DOS16 $0B;]1
+ <<<
+
+_OPEN MAC
+ DOS16 $10;]1
+ <<<
+
+_NEWLINE MAC
+ DOS16 $11;]1
+ <<<
+
+_READ MAC
+ DOS16 $12;]1
+ <<<
+
+_WRITE MAC
+ DOS16 $13;]1
+ <<<
+
+_CLOSE MAC
+ DOS16 $14;]1
+ <<<
+
+_FLUSH MAC
+ DOS16 $15;]1
+ <<<
+
+_SET_MARK MAC
+ DOS16 $16;]1
+ <<<
+
+_GET_MARK MAC
+ DOS16 $17;]1
+ <<<
+
+_SET_EOF MAC
+ DOS16 $18;]1
+ <<<
+
+_GET_EOF MAC
+ DOS16 $19;]1
+ <<<
+
+_SET_LEVEL MAC
+ DOS16 $1A;]1
+ <<<
+
+_GET_LEVEL MAC
+ DOS16 $1B;]1
+ <<<
+
+_GET_DIR_ENTRY MAC
+ DOS16 $1C;]1
+ <<<
+
+_GET_DEV_NUM MAC
+ DOS16 $20;]1
+ <<<
+
+_GET_LAST_DEV MAC
+ DOS16 $21;]1
+ <<<
+
+_READ_BLOCK MAC
+ DOS16 $22;]1
+ <<<
+
+_WRITE_BLOCK MAC
+ DOS16 $23;]1
+ <<<
+
+_FORMAT MAC
+ DOS16 $24;]1
+ <<<
+
+_ERASE_DISK MAC
+ DOS16 $25;]1
+ <<<
+
+_GET_NAME MAC
+ DOS16 $27;]1
+ <<<
+
+_GET_BOOT_VOL MAC
+ DOS16 $28;]1
+ <<<
+
+_QUIT MAC
+ DOS16 $29;]1
+ <<<
+
+_GET_VERSION MAC
+ DOS16 $2A;]1
+ <<<
+
+_D_INFO MAC
+ DOS16 $2C;]1
+ <<<
+
+_ALLOC_INTERRUPT MAC
+ DOS16 $31;]1
+ <<<
+
+_DEALLOC_INTERRUPT MAC
+ DOS16 $32;]1
+ <<<
+
+DOS16 MAC
+ JSL $E100A8
+ DA ]1 ; Change to ]1.$2000 for Class 1 P16 calls.
+ ADRL ]2
+ <<<
+
diff --git a/fta/Library/Dos.8.Macs.s b/fta/Library/Dos.8.Macs.s
new file mode 100644
index 0000000..06f72f9
--- /dev/null
+++ b/fta/Library/Dos.8.Macs.s
@@ -0,0 +1,142 @@
+*===============================
+* ProDOS-8 macro and equates
+*
+* Use with syntax:
+*
+* command PARMADR
+*
+* where "command" is one of the
+* following labels and "PARMADR"
+* is the label of the parameters
+* table to use.
+*
+*-------------------------------
+
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; All Rights Reserved
+;
+* MLI call codes:
+
+ALLOC_INTERRUPT MAC
+ DOS8 $40;]1
+ <<<
+
+DEALLOC_INTERRUPT MAC
+ DOS8 $41;]1
+ <<<
+
+APPLE_TALK MAC
+ DOS8 $42;]1
+ <<<
+
+SPECIAL_OPEN_FORK MAC
+ DOS8 $43;]1
+ <<<
+
+BYTE_RANGE_LOCK MAC
+ DOS8 $44;]1
+ <<<
+
+QUIT MAC
+ DOS8 $65;]1
+ <<<
+
+READ_BLOCK MAC
+ DOS8 $80;]1
+ <<<
+
+WRITE_BLOCK MAC
+ DOS8 $81;]1
+ <<<
+
+GET_TIME MAC
+ DOS8 $82;]1
+ <<<
+
+CREATE MAC
+ DOS8 $C0;]1
+ <<<
+
+DESTROY MAC
+ DOS8 $C1;]1
+ <<<
+
+RENAME MAC
+ DOS8 $C2;]1
+ <<<
+
+SET_FILE_INFO MAC
+ DOS8 $C3;]1
+ <<<
+
+GET_FILE_INFO MAC
+ DOS8 $C4;]1
+ <<<
+
+ON_LINE MAC
+ DOS8 $C5;]1
+ <<<
+
+SET_PREFIX MAC
+ DOS8 $C6;]1
+ <<<
+
+GET_PREFIX MAC
+ DOS8 $C7;]1
+ <<<
+
+OPEN MAC
+ DOS8 $C8;]1
+ <<<
+
+NEWLINE MAC
+ DOS8 $C9;]1
+ <<<
+
+READ MAC
+ DOS8 $CA;]1
+ <<<
+
+WRITE MAC
+ DOS8 $CB;]1
+ <<<
+
+CLOSE MAC
+ DOS8 $CC;]1
+ <<<
+
+FLUSH MAC
+ DOS8 $CD;]1
+ <<<
+
+SET_MARK MAC
+ DOS8 $CE;]1
+ <<<
+
+GET_MARK MAC
+ DOS8 $CF;]1
+ <<<
+
+SET_EOF MAC
+ DOS8 $D0;]1
+ <<<
+
+GET_EOF MAC
+ DOS8 $D1;]1
+ <<<
+
+SET_BUF MAC
+ DOS8 $D2;]1
+ <<<
+
+GET_BUF MAC
+ DOS8 $D3;]1
+ <<<
+
+DOS8 MAC
+ JSR $BF00
+ DFB ]1
+ DA ]2
+ <<<
+
diff --git a/fta/Library/Event.Macs.s b/fta/Library/Event.Macs.s
new file mode 100644
index 0000000..9ca846b
--- /dev/null
+++ b/fta/Library/Event.Macs.s
@@ -0,0 +1,144 @@
+* Event Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_EMBootInit MAC
+ Tool $106
+ <<<
+~EMStartUp MAC
+ PxW ]1;]2;]3;]4
+ PxW ]5;]6;]7
+_EMStartUp MAC
+ Tool $206
+ <<<
+_EMShutDown MAC
+ Tool $306
+ <<<
+~EMVersion MAC
+ PHA
+_EMVersion MAC
+ Tool $406
+ <<<
+_EMReset MAC
+ Tool $506
+ <<<
+~EMStatus MAC
+ PHA
+_EMStatus MAC
+ Tool $606
+ <<<
+~DoWindows MAC
+ PHA
+_DoWindows MAC
+ Tool $906
+ <<<
+~GetNextEvent MAC
+ PHA
+ PHWL ]1;]2
+_GetNextEvent MAC
+ Tool $A06
+ <<<
+~EventAvail MAC
+ PHA
+ PHWL ]1;]2
+_EventAvail MAC
+ Tool $B06
+ <<<
+~GetMouse MAC
+ PHL ]1
+_GetMouse MAC
+ Tool $C06
+ <<<
+~Button MAC
+ P1SW ]1
+_Button MAC
+ Tool $D06
+ <<<
+~StillDown MAC
+ P1SW ]1
+_StillDown MAC
+ Tool $E06
+ <<<
+~WaitMouseUp MAC
+ P1SW ]1
+_WaitMouseUp MAC
+ Tool $F06
+ <<<
+~TickCount MAC
+ PHS 2
+_TickCount MAC
+ Tool $1006
+ <<<
+~GetDblTime MAC
+ PHS 2
+_GetDblTime MAC
+ Tool $1106
+ <<<
+~GetCaretTime MAC
+ PHS 2
+_GetCaretTime MAC
+ Tool $1206
+ <<<
+_SetSwitch MAC
+ Tool $1306
+ <<<
+~PostEvent MAC
+ PHA
+ PHWL ]1;]2
+_PostEvent MAC
+ Tool $1406
+ <<<
+~FlushEvents MAC
+ PHA
+ PxW ]1;]2
+_FlushEvents MAC
+ Tool $1506
+ <<<
+~GetOSEvent MAC
+ PHA
+ PHWL ]1;]2
+_GetOSEvent MAC
+ Tool $1606
+ <<<
+~OSEventAvail MAC
+ PHA
+ PHWL ]1;]2
+_OSEventAvail MAC
+ Tool $1706
+ <<<
+~SetEventMask MAC
+ PHW ]1
+_SetEventMask MAC
+ Tool $1806
+ <<<
+~FakeMouse MAC
+ PxW ]1;]2;]3;]4
+ PHW ]5
+_FakeMouse MAC
+ Tool $1906
+ <<<
+~SetAutoKeyLimit MAC
+ PHW ]1
+_SetAutoKeyLimit MAC
+ Tool $1A06
+ <<<
+~GetKeyTranslation MAC
+ P1SW ]1
+_GetKeyTranslation MAC
+ Tool $1B06
+ <<<
+~SetKeyTranslation MAC
+ PHW ]1
+_SetKeyTranslation MAC
+ Tool $1C06
+ <<<
+~qEMStartUp MAC
+ NextDP ]1;$100
+ PxW ]2;]3;]4;]5
+ PxW ]6;]7
+ Tool $206
+ <<<
+
diff --git a/fta/Library/Female.Macs.s b/fta/Library/Female.Macs.s
new file mode 100644
index 0000000..368057c
--- /dev/null
+++ b/fta/Library/Female.Macs.s
@@ -0,0 +1,26 @@
+*
+* Female Voice tool calls
+*
+
+_FemaleBootInit mac
+ Tool $0133
+ <<<
+_FemaleStartUp mac
+ Tool $0233
+ <<<
+_FemaleShutDown mac
+ Tool $0333
+ <<<
+_FemaleVersion mac
+ Tool $0433
+ <<<
+_FemaleReset mac
+ Tool $0533
+ <<<
+_FemaleStatus mac
+ Tool $0633
+ <<<
+_FemaleSpeak mac
+ Tool $0933
+ <<<
+
diff --git a/fta/Library/Font.Macs.s b/fta/Library/Font.Macs.s
new file mode 100644
index 0000000..1b5313c
--- /dev/null
+++ b/fta/Library/Font.Macs.s
@@ -0,0 +1,142 @@
+* Font Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_FMBootInit MAC
+ Tool $11B
+ <<<
+~FMStartUp MAC
+ PxW ]1;]2
+_FMStartUp MAC
+ Tool $21B
+ <<<
+_FMShutDown MAC
+ Tool $31B
+ <<<
+~FMVersion MAC
+ PHA
+_FMVersion MAC
+ Tool $41B
+ <<<
+_FMReset MAC
+ Tool $51B
+ <<<
+~FMStatus MAC
+ PHA
+_FMStatus MAC
+ Tool $61B
+ <<<
+~CountFamilies MAC
+ P1SW ]1
+_CountFamilies MAC
+ Tool $91B
+ <<<
+~FindFamily MAC
+ P1SW ]1
+ PHWL ]2;]3
+_FindFamily MAC
+ Tool $A1B
+ <<<
+~GetFamInfo MAC
+ PHA
+ PHWL ]1;]2
+_GetFamInfo MAC
+ Tool $B1B
+ <<<
+~GetFamNum MAC
+ P1SL ]1
+_GetFamNum MAC
+ Tool $C1B
+ <<<
+~AddFamily MAC
+ PHWL ]1;]2
+_AddFamily MAC
+ Tool $D1B
+ <<<
+~InstallFont MAC
+ PHLW ]1;]2
+_InstallFont MAC
+ Tool $E1B
+ <<<
+~SetPurgeStat MAC
+ PHLW ]1;]2
+_SetPurgeStat MAC
+ Tool $F1B
+ <<<
+~CountFonts MAC
+ P1SL ]1
+ PHW ]2
+_CountFonts MAC
+ Tool $101B
+ <<<
+~FindFontStats MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_FindFontStats MAC
+ Tool $111B
+ <<<
+~LoadFont MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_LoadFont MAC
+ Tool $121B
+ <<<
+_LoadSysFont MAC
+ Tool $131B
+ <<<
+~AddFontVar MAC
+ PHLW ]1;]2
+_AddFontVar MAC
+ Tool $141B
+ <<<
+~FixFontMenu MAC
+ PxW ]1;]2;]3
+_FixFontMenu MAC
+ Tool $151B
+ <<<
+~ChooseFont MAC
+ P2SL ]1
+ PHW ]2
+_ChooseFont MAC
+ Tool $161B
+ <<<
+~ItemID2FamNum MAC
+ P1SW ]1
+_ItemID2FamNum MAC
+ Tool $171B
+ <<<
+~FMSetSysFont MAC
+ PHL ]1
+_FMSetSysFont MAC
+ Tool $181B
+ <<<
+~FMGetSysFID MAC
+ PHS 2
+_FMGetSysFID MAC
+ Tool $191B
+ <<<
+~FMGetCurFID MAC
+ PHS 2
+_FMGetCurFID MAC
+ Tool $1A1B
+ <<<
+~FamNum2ItemID MAC
+ P1SW ]1
+_FamNum2ItemID MAC
+ Tool $1B1B
+ <<<
+~InstallWithStats MAC
+ PHLW ]1;]2
+ PHL ]3
+_InstallWithStats MAC
+ Tool $1C1B
+ <<<
+~qFMStartUp MAC
+ PHW ]1
+ NextDP ]2;$100
+ Tool $21B
+ <<<
+
diff --git a/fta/Library/GsOs.Macs.s b/fta/Library/GsOs.Macs.s
new file mode 100644
index 0000000..8d1c974
--- /dev/null
+++ b/fta/Library/GsOs.Macs.s
@@ -0,0 +1,39 @@
+* File: MGSOS
+*
+* Copyright 1989 by Dave Klimas
+*
+* IMPORTANT! To use these macros, you must also include the
+* label equates as defined in the file E16.GSOS from the TOOL.EQUATES
+* directory.
+*-----------------------------------------------
+*
+* xGSOS ;;class 0/1 flag
+*
+* iGSOS _Create;addr;0 ;this is a class 0 Create call
+*
+*-----------------------------------------------
+* Inline GS/OS call macro
+
+iGSOS MAC
+ JSL $E100A8
+ DO ]3
+ DA ]1.$2000
+ ELSE
+ DA ]1
+ FIN
+ ADRL ]2
+ <<<
+
+*-----------------------------------------------
+* Stack GS/OS call macro
+
+sGSOS MAC
+ PHL ]2
+ DO ]3
+ PEA ]1.$2000
+ ELSE
+ PEA ]1
+ FIN
+ JSL $E100B0
+ <<<
+
diff --git a/fta/Library/Int.Macs.s b/fta/Library/Int.Macs.s
new file mode 100644
index 0000000..13a5e88
--- /dev/null
+++ b/fta/Library/Int.Macs.s
@@ -0,0 +1,221 @@
+* Integer Math macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_IMBootInit MAC
+ Tool $10B
+ <<<
+_IMStartUp MAC
+_IntStartUp MAC
+ Tool $20B
+ <<<
+_IMShutDown MAC
+_IntShutDown MAC
+ Tool $30B
+ <<<
+~IMVersion MAC
+ PHA
+_IMVersion MAC
+ Tool $40B
+ <<<
+_IMReset MAC
+ Tool $50B
+ <<<
+~IMStatus MAC
+ PHA
+_IMStatus MAC
+ Tool $60B
+ <<<
+~Multiply MAC
+ PHS 2
+ PxW ]1;]2
+_Multiply MAC
+ Tool $90B
+ <<<
+~SDivide MAC
+ PHS 2
+ PxW ]1;]2
+_SDivide MAC
+ Tool $A0B
+ <<<
+~UDivide MAC
+ PHS 2
+ PxW ]1;]2
+_UDivide MAC
+ Tool $B0B
+ <<<
+~LongMul MAC
+ PHS 4
+ PxL ]1;]2
+_LongMul MAC
+ Tool $C0B
+ <<<
+~LongDivide MAC
+ PHS 4
+ PxL ]1;]2
+_LongDivide MAC
+ Tool $D0B
+ <<<
+~FixRatio MAC
+ PHS 2
+ PxW ]1;]2
+_FixRatio MAC
+ Tool $E0B
+ <<<
+~FixMul MAC
+ PHS 2
+ PxL ]1;]2
+_FixMul MAC
+ Tool $F0B
+ <<<
+~FracMul MAC
+ PHS 2
+ PxL ]1;]2
+_FracMul MAC
+ Tool $100B
+ <<<
+~FixDiv MAC
+ PHS 2
+ PxL ]1;]2
+_FixDiv MAC
+ Tool $110B
+ <<<
+~FracDiv MAC
+ PHS 2
+ PxL ]1;]2
+_FracDiv MAC
+ Tool $120B
+ <<<
+~FixRound MAC
+ P1SL ]1
+_FixRound MAC
+ Tool $130B
+ <<<
+~FracSqrt MAC
+ P2SL ]1
+_FracSqrt MAC
+ Tool $140B
+ <<<
+~FracCos MAC
+ P2SL ]1
+_FracCos MAC
+ Tool $150B
+ <<<
+~FracSin MAC
+ P2SL ]1
+_FracSin MAC
+ Tool $160B
+ <<<
+~FixATan2 MAC
+ PHS 2
+ PxL ]1;]2
+_FixATan2 MAC
+ Tool $170B
+ <<<
+~HiWord MAC
+ P1SL ]1
+_HiWord MAC
+ Tool $180B
+ <<<
+~LoWord MAC
+ P1SL ]1
+_LoWord MAC
+ Tool $190B
+ <<<
+~Long2Fix MAC
+ P2SL ]1
+_Long2Fix MAC
+ Tool $1A0B
+ <<<
+~Fix2Long MAC
+ P2SL ]1
+_Fix2Long MAC
+ Tool $1B0B
+ <<<
+~Fix2Frac MAC
+ P2SL ]1
+_Fix2Frac MAC
+ Tool $1C0B
+ <<<
+~Frac2Fix MAC
+ P2SL ]1
+_Frac2Fix MAC
+ Tool $1D0B
+ <<<
+~Fix2X MAC
+ PxL ]1;]2
+_Fix2X MAC
+ Tool $1E0B
+ <<<
+~Frac2X MAC
+ PxL ]1;]2
+_Frac2X MAC
+ Tool $1F0B
+ <<<
+~X2Fix MAC
+ P2SL ]1
+_X2Fix MAC
+ Tool $200B
+ <<<
+~X2Frac MAC
+ P2SL ]1
+_X2Frac MAC
+ Tool $210B
+ <<<
+~Int2Hex MAC
+ PHW ]1
+ PHLW ]2;]3
+_Int2Hex MAC
+ Tool $220B
+ <<<
+~Long2Hex MAC
+ PxL ]1;]2
+ PHW ]3
+_Long2Hex MAC
+ Tool $230B
+ <<<
+~Hex2Int MAC
+ PHA
+ PHLW ]1;]2
+_Hex2Int MAC
+ Tool $240B
+ <<<
+~Hex2Long MAC
+ PHS 2
+ PHLW ]1;]2
+_Hex2Long MAC
+ Tool $250B
+ <<<
+~Int2Dec MAC
+ PHWL ]1;]2
+ PxW ]3;]4
+_Int2Dec MAC
+ Tool $260B
+ <<<
+~Long2Dec MAC
+ PxL ]1;]2
+ PxW ]3;]4
+_Long2Dec MAC
+ Tool $270B
+ <<<
+~Dec2Int MAC
+ P1SL ]1
+ PxW ]2;]3
+_Dec2Int MAC
+ Tool $280B
+ <<<
+~Dec2Long MAC
+ P2SL ]1
+ PxW ]2;]3
+_Dec2Long MAC
+ Tool $290B
+ <<<
+~HexIt MAC
+ P2SW ]1
+_HexIt MAC
+ Tool $2A0B
+ <<<
+
diff --git a/fta/Library/Line.Macs.s b/fta/Library/Line.Macs.s
new file mode 100644
index 0000000..075a940
--- /dev/null
+++ b/fta/Library/Line.Macs.s
@@ -0,0 +1,183 @@
+* LineEdit macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_LEBootInit MAC
+ Tool $114
+ <<<
+~LEStartUp MAC
+ PxW ]1;]2
+_LEStartUp MAC
+ Tool $214
+ <<<
+_LEShutDown MAC
+ Tool $314
+ <<<
+~LEVersion MAC
+ PHA
+_LEVersion MAC
+ Tool $414
+ <<<
+_LEReset MAC
+ Tool $514
+ <<<
+~LEStatus MAC
+ PHA
+_LEStatus MAC
+ Tool $614
+ <<<
+~LENew MAC
+ P2SL ]1
+ PHLW ]2;]3
+_LENew MAC
+ Tool $914
+ <<<
+~LEDispose MAC
+ PHL ]1
+_LEDispose MAC
+ Tool $A14
+ <<<
+~LESetText MAC
+ PHL ]1
+ PHWL ]2;]3
+_LESetText MAC
+ Tool $B14
+ <<<
+~LEIdle MAC
+ PHL ]1
+_LEIdle MAC
+ Tool $C14
+ <<<
+~LEClick MAC
+ PxL ]1;]2
+_LEClick MAC
+ Tool $D14
+ <<<
+~LESetSelect MAC
+ PxW ]1;]2
+ PHL ]3
+_LESetSelect MAC
+ Tool $E14
+ <<<
+~LEActivate MAC
+ PHL ]1
+_LEActivate MAC
+ Tool $F14
+ <<<
+~LEDeactivate MAC
+ PHL ]1
+_LEDeactivate MAC
+ Tool $1014
+ <<<
+~LEKey MAC
+ PxW ]1;]2
+ PHL ]3
+_LEKey MAC
+ Tool $1114
+ <<<
+~LECut MAC
+ PHL ]1
+_LECut MAC
+ Tool $1214
+ <<<
+~LECopy MAC
+ PHL ]1
+_LECopy MAC
+ Tool $1314
+ <<<
+~LEPaste MAC
+ PHL ]1
+_LEPaste MAC
+ Tool $1414
+ <<<
+~LEDelete MAC
+ PHL ]1
+_LEDelete MAC
+ Tool $1514
+ <<<
+~LEInsert MAC
+ PHL ]1
+ PHWL ]2;]3
+_LEInsert MAC
+ Tool $1614
+ <<<
+~LEUpdate MAC
+ PHL ]1
+_LEUpdate MAC
+ Tool $1714
+ <<<
+~LETextBox MAC
+ PHLW ]1;]2
+ PHLW ]3;]4
+_LETextBox MAC
+ Tool $1814
+ <<<
+_LEFromScrap MAC
+ Tool $1914
+ <<<
+_LEToScrap MAC
+ Tool $1A14
+ <<<
+~LEScrapHandle MAC
+ PHS 2
+_LEScrapHandle MAC
+ Tool $1B14
+ <<<
+~LEGetScrapLen MAC
+ PHA
+_LEGetScrapLen MAC
+ Tool $1C14
+ <<<
+~LESetScrapLen MAC
+ PHW ]1
+_LESetScrapLen MAC
+ Tool $1D14
+ <<<
+~LESetHilite MAC
+ PxL ]1;]2
+_LESetHilite MAC
+ Tool $1E14
+ <<<
+~LESetCaret MAC
+ PxL ]1;]2
+_LESetCaret MAC
+ Tool $1F14
+ <<<
+~LETextBox2 MAC
+ PHLW ]1;]2
+ PHLW ]3;]4
+_LETextBox2 MAC
+ Tool $2014
+ <<<
+~LESetJust MAC
+ PHWL ]1;]2
+_LESetJust MAC
+ Tool $2114
+ <<<
+~LEGetTextHand MAC
+ P2SL ]1
+_LEGetTextHand MAC
+ Tool $2214
+ <<<
+~LEGetTextLen MAC
+ P1SL ]1
+_LEGetTextLen MAC
+ Tool $2314
+ <<<
+~GetLEDefProc MAC
+ PHS 2
+_GetLEDefProc MAC
+ Tool $2414
+ <<<
+~qLEStartUp MAC
+ PHW ]1
+ NextDP ]2;$100
+ Tool $214
+ <<<
+_LEClassifyKey MAC
+ Tool $2514
+ <<<
+
diff --git a/fta/Library/List.Macs.s b/fta/Library/List.Macs.s
new file mode 100644
index 0000000..552e105
--- /dev/null
+++ b/fta/Library/List.Macs.s
@@ -0,0 +1,111 @@
+* List Mgr. macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_ListBootInit MAC
+ Tool $011C
+ <<<
+_ListStartup MAC
+ Tool $021C
+ <<<
+_ListShutDown MAC
+ Tool $031C
+ <<<
+~ListVersion MAC
+ PHA
+_ListVersion MAC
+ Tool $041C
+ <<<
+_ListReset MAC
+ Tool $051C
+ <<<
+~ListStatus MAC
+ PHA
+_ListStatus MAC
+ Tool $061C
+ <<<
+~CreateList MAC
+ PHS 2
+ PxL ]1;]2
+_CreateList MAC
+ Tool $091C
+ <<<
+~SortList MAC
+ PxL ]1;]2
+_SortList MAC
+ Tool $0A1C
+ <<<
+~NextMember MAC
+ PHS 2
+ PxL ]1;]2
+_NextMember MAC
+ Tool $0B1C
+ <<<
+~DrawMember MAC
+ PxL ]1;]2
+_DrawMember MAC
+ Tool $0C1C
+ <<<
+~SelectMember MAC
+ PxL ]1;]2
+_SelectMember MAC
+ Tool $0D1C
+ <<<
+~GetListDefProc MAC
+ PHS 2
+_GetListDefProc MAC
+ Tool $0E1C
+ <<<
+~ResetMember MAC
+ P2SL ]1
+_ResetMember MAC
+ Tool $0F1C
+ <<<
+~NewList MAC
+ PxL ]1;]2
+_NewList MAC
+ Tool $101C
+ <<<
+~DrawMember2 MAC
+ PHWL ]1;]2
+_DrawMember2 MAC
+ Tool $111C
+ <<<
+~NextMember2 MAC
+ PHA
+ PHWL ]1;]2
+_NextMember2 MAC
+ Tool $121C
+ <<<
+~ResetMember2 MAC
+ P1SL ]1
+_ResetMember2 MAC
+ Tool $131C
+ <<<
+~SelectMember2 MAC
+ PHWL ]1;]2
+_SelectMember2 MAC
+ Tool $141C
+ <<<
+~SortList2 MAC
+ PxL ]1;]2
+_SortList2 MAC
+ Tool $151C
+ <<<
+~NewList2 MAC
+ PHL ]1
+ PxW ]2;]3;]4;]5
+ PHL ]6
+_NewList2 MAC
+ Tool $161C
+ <<<
+_ListKey MAC
+ Tool $171C
+ <<<
+_CompareStrings MAC
+ Tool $181C
+ <<<
+
diff --git a/fta/Library/Load.Macs.s b/fta/Library/Load.Macs.s
new file mode 100644
index 0000000..925855a
--- /dev/null
+++ b/fta/Library/Load.Macs.s
@@ -0,0 +1,113 @@
+* Load Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_LoaderInitialization MAC
+ Tool $111
+ <<<
+_LoaderStartUp MAC
+ Tool $211
+ <<<
+_LoaderShutDown MAC
+ Tool $311
+ <<<
+~LoaderVersion MAC
+ PHA
+_LoaderVersion MAC
+ Tool $411
+ <<<
+_LoaderReset MAC
+ Tool $511
+ <<<
+~LoaderStatus MAC
+ PHA
+_LoaderStatus MAC
+ Tool $611
+ <<<
+~InitialLoad MAC
+ PHS 5
+ PHWL ]1;]2
+ PHW ]3
+_InitialLoad MAC
+ Tool $911
+ <<<
+~InitialLoad2 MAC
+ PHS 5
+ PHWL ]1;]2
+ PxW ]3;]4
+_InitialLoad2 MAC
+ Tool $2011
+ <<<
+~Restart MAC
+ PHS 5
+ PHW ]1
+_Restart MAC
+ Tool $A11
+ <<<
+~LoadSegNum MAC
+ PHS 2
+ PxW ]1;]2;]3
+_LoadSegNum MAC
+ Tool $B11
+ <<<
+~UnloadSegNum MAC
+ PxW ]1;]2;]3
+_UnloadSegNum MAC
+ Tool $C11
+ <<<
+~LoadSegName MAC
+ PHS 4
+ PHW ]1
+ PxL ]2;]3
+_LoadSegName MAC
+ Tool $D11
+ <<<
+~UnloadSeg MAC
+ PHS 3
+ PHL ]1
+_UnloadSeg MAC
+ Tool $E11
+ <<<
+~GetLoadSegInfo MAC
+ PxW ]1;]2;]3
+ PHL ]4
+_GetLoadSegInfo MAC
+ Tool $F11
+ <<<
+~GetUserID MAC
+ P1SL ]1
+_GetUserID MAC
+ Tool $1011
+ <<<
+~GetUserID2 MAC
+ P1SL ]1
+_GetUserID2 MAC
+ Tool $2111
+ <<<
+~LGetPathname MAC
+ PHS 2
+ PxW ]1;]2
+_LGetPathname MAC
+ Tool $1111
+ <<<
+~LGetPathname2 MAC
+ PHS 2
+ PxW ]1;]2
+_LGetPathname2 MAC
+ Tool $2211
+ <<<
+~UserShutDown MAC
+ PHA
+ PxW ]1;]2
+_UserShutDown MAC
+ Tool $1211
+ <<<
+~RenamePathname MAC
+ PxL ]1;]2
+_RenamePathname MAC
+ Tool $1311
+ <<<
+
diff --git a/fta/Library/Locator.Macs.s b/fta/Library/Locator.Macs.s
new file mode 100644
index 0000000..3878722
--- /dev/null
+++ b/fta/Library/Locator.Macs.s
@@ -0,0 +1,135 @@
+* Tool Locator macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_TLBootInit MAC
+ Tool $101
+ <<<
+_TLStartUp MAC
+ Tool $201
+ <<<
+_TLShutDown MAC
+ Tool $301
+ <<<
+~TLVersion MAC
+ PHA
+_TLVersion MAC
+ Tool $401
+ <<<
+_TLReset MAC
+ Tool $501
+ <<<
+~TLStatus MAC
+ PHA
+_TLStatus MAC
+ Tool $601
+ <<<
+~GetTSPtr MAC
+ PHS 2
+ PxW ]1;]2
+_GetTSPtr MAC
+ Tool $901
+ <<<
+~SetTSPtr MAC
+ PxW ]1;]2
+ PHL ]3
+_SetTSPtr MAC
+ Tool $A01
+ <<<
+~GetFuncPtr MAC
+ PHS 2
+ PxW ]1;]2
+_GetFuncPtr MAC
+ Tool $B01
+ <<<
+~GetWAP MAC
+ PHS 2
+ PxW ]1;]2
+_GetWAP MAC
+ Tool $C01
+ <<<
+~SetWAP MAC
+ PxW ]1;]2
+ PHL ]3
+_SetWAP MAC
+ Tool $D01
+ <<<
+~LoadTools MAC
+ PHL ]1
+_LoadTools MAC
+ Tool $E01
+ <<<
+~LoadOneTool MAC
+ PxW ]1;]2
+_LoadOneTool MAC
+ Tool $F01
+ <<<
+~UnloadOneTool MAC
+ PHW ]1
+_UnloadOneTool MAC
+ Tool $1001
+ <<<
+~TLMountVolume MAC
+ PHA
+ PxW ]1;]2
+ PxL ]3;]4;]5;]6
+_TLMountVolume MAC
+ Tool $1101
+ <<<
+~TLTextMountVolume MAC
+ PHA
+ PxL ]1;]2;]3;]4
+_TLTextMountVolume MAC
+ Tool $1201
+ <<<
+~SaveTextState MAC
+ PHS 2
+_SaveTextState MAC
+ Tool $1301
+ <<<
+~RestoreTextState MAC
+ PHL ]1
+_RestoreTextState MAC
+ Tool $1401
+ <<<
+~MessageCenter MAC
+ PxW ]1;]2
+ PHL ]3
+_MessageCenter MAC
+ Tool $1501
+ <<<
+_SetDefaultTPT MAC
+ Tool $1601
+ <<<
+~MessageByName MAC
+ PHS 2
+ PHWL ]1;]2
+ PxW ]3;]4
+_MessageByName MAC
+ Tool $1701
+ <<<
+~StartUpTools MAC
+ PHA
+ PxW ]1;]2
+ PxL ]3;]4
+_StartUpTools MAC
+ Tool $1801
+ <<<
+~ShutDownTools MAC
+ PHWL ]1;]2
+_ShutDownTools MAC
+ Tool $1901
+ <<<
+_GetMsgHandle MAC
+ Tool $1A01
+ <<<
+_AcceptRequests MAC
+ Tool $1B01
+ <<<
+_SendRequest MAC
+ Tool $1C01
+ <<<
+
diff --git a/fta/Library/Logo.Macs.s b/fta/Library/Logo.Macs.s
new file mode 100644
index 0000000..83155c3
--- /dev/null
+++ b/fta/Library/Logo.Macs.s
@@ -0,0 +1,87 @@
+*-----------------------------
+* LoGo's useful tools...
+*-----------------------------
+
+_En8 mac
+ sec
+ xce
+ sep #$30
+ <<<
+
+_En16 mac
+ clc
+ xce
+ rep #$30
+ <<<
+
+_ClrScr mac
+ ldx #$7ffe
+ lda #$0000
+]lp stal $e12000,x
+ stal $012000,x
+ dex
+ dex
+ bpl ]lp
+ <<<
+
+_fadeIN mac ; Fait un fondu de l'image
+ lda ]1 ; A= banc/adrh de l'image
+ ldy ]2 ; Y= $0000, fondu sur l'image
+ jsr fadeIN ; $ffff, que sur les palettes
+ <<<
+
+_fadeOUT mac ; Efface l'ecran doucement
+ jsr fadeOUT
+ <<<
+
+_File mac ; Charge un fichier
+ lda ]1
+ ldx ]2
+ jsr loadFILE
+ <<<
+
+_Key mac ; Attend une touche au clavier
+]lp ldal $e0bfff
+ bpl ]lp
+ stal $e0c010
+ <<<
+
+_Unpack mac ; Decompacte un fichier
+ lda ]1 ; A= banc/adrh du fichier source
+ jsr unPACK
+ <<<
+
+_wait mac ; Routine d'attente
+ lda ]1 ; A= duree d'attente (env. 1 seconde)
+ jsr nowWAIT
+ eom
+
+_Write8 mac ; Affiche un message
+ lda ]1 ; A= adresse de la chaine
+ ldx ]2 ; X= coordonnee sur l'ecran
+ ldy ]3 ; Y= banc/adrh ou afficher
+ jsr Print8
+ <<<
+
+_Write16 mac ; Affiche un message
+ lda ]1 ; A= adresse de la chaine
+ ldx ]2 ; X= coordonnee sur l'ecran
+ ldy ]3 ; Y= banc/adrh ou afficher
+ jsr Print16
+ <<<
+
+_Reset mac
+ lda #$51
+ sta $0
+ PushWord #2
+ PushWord #0
+ PushWord #0
+ PushWord #8
+ Tool $0909
+ sec
+ xce
+ lda #0
+ stal $0003f4
+ jmp ($fffc)
+ <<<
+
diff --git a/fta/Library/Macros.s b/fta/Library/Macros.s
new file mode 100644
index 0000000..dd612e0
--- /dev/null
+++ b/fta/Library/Macros.s
@@ -0,0 +1,571 @@
+*-------------------------
+* Macro library
+*-------------------------
+
+INCD MAC ;Two byte INC
+ INC ]1
+ IF MX>1
+ BNE NC
+ INC ]1+1
+NC FIN
+ <<<
+
+DECD MAC ;Two byte DEC
+ IF MX>1
+ LDA ]1
+ BNE NC
+ DEC ]1+1
+NC FIN
+ DEC ]1
+ <<<
+
+MOV MAC
+ LDA ]1
+ STA ]2
+ <<<
+
+MOVD MAC
+ MOV ]1;]2
+ IF MX>1 ;If A is short
+ IF (=]1 ;Syntax MOVD (ADR1),Y;????
+ INY
+ IF (=]2 ; MOVD (ADR1),Y;(ADR2),Y
+ MOV ]1;]2
+ ELSE ; MOVD (ADR1),Y;ADR2
+ MOV ]1;]2+1
+ FIN
+ ELSE
+ IF (=]2 ;Syntax MOVD ????;(ADR2),Y
+ INY
+ IF #=]1 ; MOVD #ADR1;(ADR2),Y
+ MOV ]1/$100;]2
+ ELSE ; MOVD ADR1;(ADR2),Y
+ MOV ]1+1;]2
+ FIN
+ ELSE ;Syntax MOVD ????;ADR2
+ IF #=]1 ; MOVD #ADR1;ADR2
+ MOV ]1/$100;]2+1
+ ELSE ; MOVD ADR1;ADR2
+ MOV ]1+1;]2+1
+ FIN
+ FIN
+ FIN
+ FIN
+ <<<
+
+LDHI MAC ;For calls from other macs
+ IF #=]1
+ LDA ]1/$100
+ ELSE
+ LDA ]1+1
+ FIN
+ <<<
+
+ADD MAC
+ IF #=]2
+ IF #=]1
+ ERR 1 ;Error if ADD #lab1;#lab2..
+ FIN
+ FIN
+ CLC
+ LDA ]1 ;Syntax ADD lab1;lab2;lab3
+ ADC ]2 ; or ADD #lab1;lab2;lab3 etc
+ DO ]0/3
+ STA ]3 ;If 3 parms
+ ELSE ;2 parm cases:
+ IF #=]2
+ STA ]1 ;Syntax ADD lab1;#lab2
+ ELSE ;Syntax ADD lab1;lab2
+ STA ]2 ; or ADD #lab1;lab2 -> lab2
+ FIN
+ FIN
+ IF MX>1 ;Following ignored if M long
+ LDA ]1+1
+ IF #=]2
+ ADC ]2/$100
+ ELSE
+ ADC ]2+1
+ FIN
+ DO ]0/3
+ STA ]3+1 ;If 3 parms
+ ELSE ;Two parm cases:
+ IF #=]2
+ STA ]1+1 ;Syntax ADD lab1;#lab2
+ ELSE ; -> lab1
+ STA ]2+1 ;Syntax ADD lab1;lab2 -> lab2
+ FIN ; or ADD #lab1;lab2 -> lab2
+ FIN
+ FIN
+ <<<
+
+SUB MAC
+ IF #=]2
+ IF #=]1
+ ERR 1 ;Error if SUB #lab1;#lab2..
+ FIN
+ FIN
+ SEC
+ LDA ]1 ;Syntax SUB lab1;lab2;lab3
+ SBC ]2 ; or SUB #lab1;lab2;lab3 etc
+ DO ]0/3
+ STA ]3 ;If 3 parms
+ ELSE ;Two parm cases:
+ IF #=]2
+ STA ]1 ;Syntax SUB lab1;#lab2
+ ELSE ;Syntax SUB lab1;lab2
+ STA ]2 ; or SUB #lab1;lab2 -> lab2
+ FIN
+ FIN ;Of 2 parm cases
+ IF MX>1 ;Rest ignored if M long
+ LDHI ]1
+ IF #=]2
+ SBC ]2/$100 ;Case #lab2
+ ELSE
+ SBC ]2+1 ;Case lab2
+ FIN
+ DO ]0/3
+ STA ]3+1 ;If 3 parms
+ ELSE ;Two parm cases:
+ IF #=]2
+ STA ]1+1 ;Syntax SUB lab1;#lab2
+ ELSE ; -> lab1
+ STA ]2+1 ;Syntax SUB lab1;lab2 -> lab2
+ FIN ; or SUB #lab1;lab2 -> lab2
+ FIN ;Of 2 parm cases
+ FIN ;Of M short
+ <<<
+
+ADDX MAC
+ TXA
+ADDA MAC
+ CLC
+ ADC ]1
+ STA ]2
+ IF MX>1
+ LDHI ]1
+ ADC #0
+ STA ]2+1
+ FIN
+ <<<
+
+ADDY MAC
+ TYA
+ ADDA ]1;]2
+ <<<
+
+ADDNUM MAC
+ LDA #]1
+ CLC
+ ADC ]2
+ STA ]2
+ IF MX>1
+ BCC NC
+ INC ]2+1
+NC FIN
+ <<<
+
+SWAP MAC
+ LDA ]1
+ PHA
+ LDA ]2
+ STA ]1
+ PLA
+ STA ]2
+ <<<
+
+COMPARE MAC
+ LDA ]1
+ CMP ]2
+ IF MX>1
+ LDHI ]1 ;Syntax COMPARE lab1;lab2
+ IF #=]2 ; or COMPARE lab1;#lab2
+ SBC ]2/$100
+ ELSE
+ SBC ]2+1
+ FIN
+ FIN
+ <<<
+
+POKE MAC
+ MOV #]2;]1
+ <<<
+
+STADR MAC
+ POKE ]2;]1
+ IF MX>1 ;If M is short, do high byte
+ POKE ]2+1;]1/$100
+ FIN
+ <<<
+
+*=================================================
+* Save and restore registers macros. Recommended
+* for use at the start and end of subroutines
+* which might be called from unknown status and
+* which must set up register lengths.
+*-------------------------------------------------
+
+SAVSTAT MAC ;Save registers & status
+ PHA
+ PHY
+ PHX
+ PHP
+ <<<
+
+RESTORE MAC ;Restore regs & status
+ PLP ;This must come first
+ PLX ; so register restores
+ PLY ; have correct length.
+ PLA
+ <<<
+
+*=================================================
+* Conditional branches not available on the 65816:
+*-------------------------------------------------
+
+BLE MAC ;Branch if less than or =
+ BEQ ]1
+ BLT ]1
+ <<<
+
+BGT MAC ;Branch if greater than
+ BEQ OV
+ BGE ]1
+OV <<<
+
+*=================================================
+* Conditional long branches. For use when out of
+* range of a short branch and branching mechanism
+* is wanted to be hidden on the listing.
+*-------------------------------------------------
+
+BRTL MAC ;BRL if less than (long)
+BCCL MAC ;BRL if carry clear (long)
+ BCS OV
+ BRL ]1
+OV <<<
+
+BGEL MAC ;BRL if greater or equal (long)
+BCSL MAC ;BRL if carry set (long)
+ BCC OV
+ BRL ]1
+OV <<<
+
+BPLL MAC ;BRL if plus (long)
+ BMI OV
+ BRL ]1
+OV <<<
+
+BMIL MAC ;BRL if minus (long)
+ BPL OV
+ BRL ]1
+OV <<<
+
+BEQL MAC ;BRL if equal (long)
+ BNE OV
+ BRL ]1
+OV <<<
+
+BNEL MAC ;BRL if not equal (long)
+ BEQ OV
+ BRL ]1
+OV <<<
+
+BVCL MAC ;BRL if V clear (long)
+ BVS OV
+ BRL ]1
+OV <<<
+
+BVSL MAC ;BRL if V set (long)
+ BVC OV
+ BRL ]1
+OV <<<
+
+BLEL MAC ;BRL if less or equal (long)
+ BEQ BR
+ BGE OV
+BR BRL ]1
+OV <<<
+
+BLTL MAC ;BRL if less than (long)
+ BGE OV
+ BRL ]1
+OV <<<
+
+BGTL MAC ;BRL if greater than (long)
+ BEQ OV
+ BLT OV
+BR BRL ]1
+OV <<<
+
+*=================================================
+* The I/O macros below expect the COUT routine
+* to be included or linked in as an external.
+* PRINT expects the same of the SENDMSG routine.
+*
+* (Just declare COUT and SENDMSG as externals
+* and include the linker command LIB 5 in the
+* linker command file. SENDMSG also requires an
+* OUTPUT routine in your source declared as an
+* entry. It can be as simple as:
+*
+* OUTPUT JMP COUT
+*
+* SENDMSG and COUT are in the LIB directory and
+* their source files are in the SOURCE directory.
+*-------------------------------------------------
+
+PRINT MAC ;Syntax PRINT "message"
+ JSR SENDMSG ; or PRINT 8D8D or
+ ASC ]1 ; PRINT 8D8D"text"8D"more"
+ BRK ; etc.
+ <<<
+
+OUT MAC
+ LDA ]1 ;Syntax OUT #"A"
+ JSR COUT ; or OUT ADDRESS
+ <<< ; or OUT (PNT),Y etc.
+
+HOME MAC ;Clear 80 col screen
+ OUT #"L"&$9F
+ <<<
+
+NORMAL MAC ;Set normal text
+ OUT #"N"&$9F
+ <<<
+
+INVERSE MAC ;Set inverse text
+ OUT #"O"&$9F
+ <<<
+
+MOUSEON MAC ;Turn mousetext on
+ OUT #"["&$9F
+ INVERSE
+ <<<
+
+MOUSEOFF MAC ;Turn mousetext off
+ OUT #"X"&$9F
+ NORMAL
+ <<<
+
+BELL MAC ;Ring bell
+ OUT #"G"&$9F
+ <<<
+
+CLEOL MAC ;Clear to end of line
+ OUT #$9D
+ <<<
+
+CLEOP MAC ;Clear to end of screen
+ OUT #$8B
+ <<<
+
+OUTCR MAC ;Do carriage return
+ OUT #$8D
+ <<<
+
+GOTOXY MAC ;Pascal output only!
+ OUT #$1E
+ LDA ]1 ;X coor (imm or location)
+ CLC
+ ADC #' '
+ JSR COUT
+ LDA ]2 ;Y coor (")
+ CLC
+ ADC #' '
+ JSR COUT
+ <<<
+
+CURSXY MAC ;GOTOXY for BASIC output
+ OUT #"Y"&$9F ;Home cursor
+ LDX ]2 ;Syntax (both versions):
+ BEQ H ; CURSXY #55;#10 or
+CR OUTCR ; CURSXY XLOC,YLOC etc.
+ DEX
+ BNE CR
+H IF MX<2 ;If M is long then
+ SEP %00100000 ; must shorten it
+ LDA ]1
+ STAL $24
+ REP %00100000 ; and lengthen on exit.
+ ELSE ;If M is short then
+ LDA ]1 ; leave as is
+ STAL $24
+ FIN
+ <<<
+
+**************************************************
+* APW-Equivalent Macros 1/20/89 *
+* For use with APW or ORCA/M source listings. *
+* *
+**************************************************
+
+*================================================
+
+DP MAC
+ ADRL ]1
+ <<<
+
+ASL4 MAC
+ LDA ]1+2
+ DO ]0/2 ;If 2 parms then set
+ LDX ]2 ; X to 2nd parm.
+ FIN
+]A ASL ;Otherwise use X to
+ ASL ]1 ; decide how many
+ ADC #0 ; ASL's to do.
+ DEX
+ BNE ]A
+ STA ]1+2
+ <<<
+
+LSR4 MAC
+ DO ]0/2 ;If 2 parms, then COMPLEMENT
+ LDA ]2 ; of X must be 2nd parm.
+ EOR $FFFF
+ CLC
+ ADC #1
+ TAX
+ FIN
+ LDA ]1
+]A LSR
+ LSR ]1+2
+ BCC ]B
+ ORA #$8000
+]B INX
+ BNE ]A
+ STA ]1
+ <<<
+
+DEC4 MAC
+ IF MX/2-1 ; IF M IS SHORT
+ ERR 1 ; ERR IF NOT 16-BIT MODE
+ ELSE
+ DEC ]1
+ BPL ]A
+ DEC ]1+2
+]A FIN
+ <<<
+
+INC4 MAC
+ IF MX/2-1 ; IF M IS SHORT
+ ERR 1 ; ERR IF NOT 16-BIT MODE
+ ELSE
+ INC ]1
+ BNE ]A
+ INC ]1+2
+]A FIN
+ <<<
+
+ADD4 MAC
+ CLC ;If 3 parms then use
+ DO ]0/3 ; raw 4 byte addresses.
+
+ IF #=]1
+ LDA #<]1
+ ELSE ;Make sure we use the
+ LDA ]1 ; right LDA for data
+ FIN ; or addresses.
+
+ IF #=]2
+ ADC #<]2
+ ELSE ;Make sure we use the
+ ADC ]2 ; right ADC for data
+ FIN ; or addresses.
+
+ STA ]3
+
+ IF #=]1
+ LDA #^]1
+ ELSE ;Make sure we use the
+ LDA ]1+2 ; right LDA for data
+ FIN ; or addresses.
+
+ IF #=]2
+ ADC #^]2
+ ELSE ;Make sure we use the
+ ADC ]2+2 ; right ADC for data
+ FIN ; or addresses.
+
+ STA ]3+2
+
+ ELSE ;If 2 parms then use
+; 2 byte Accumulator.
+
+
+ IF #=]1
+ ADC #<]1
+ ELSE ;Make sure we use the
+ ADC ]1 ; right ADC for data
+ FIN ; or addresses.
+
+ STA ]2
+
+
+ IF #=]1
+ LDA #^]1
+ ELSE ;Make sure we use the
+ LDA ]1+2 ; right LDA for data
+ FIN ; or addresses.
+
+ ADC #0
+ STA ]2+2
+
+ FIN
+ <<<
+
+SUB4 MAC
+ SEC ;If 3 parms then use
+ DO ]0/3 ; raw 4 byte addresses.
+
+
+ IF #=]1
+ LDA #<]1
+ ELSE ;Make sure we use the
+ LDA ]1 ; right LDA for data
+ FIN ; or addresses.
+
+ IF #=]2
+ SBC #<]2
+ ELSE ;Make sure we use the
+ SBC ]2 ; right SBC for data
+ FIN ; or addresses.
+
+ STA ]3
+
+
+ IF #=]1
+ LDA #^]1
+ ELSE ;Make sure we use the
+ LDA ]1+2 ; right LDA for data
+ FIN ; or addresses.
+
+ IF #=]2
+ SBC #^]2
+ ELSE ;Make sure we use the
+ SBC ]2+2 ; right SBC for data
+ FIN ; or addresses.
+
+ STA ]3+2
+
+ ELSE
+
+ IF #=]1
+ SBC #<]1
+ ELSE ;Make sure we use the
+ SBC ]1 ; right SBC for data
+ FIN ; or addresses.
+
+ STA ]2
+
+ IF #=]1
+ LDA #^]1
+ ELSE ;Make sure we use the
+ LDA ]1+2 ; right LDA for data
+ FIN ; or addresses.
+
+ SBC #0
+ STA ]2+2
+
+ FIN
+ <<<
+
diff --git a/fta/Library/Male.Macs.s b/fta/Library/Male.Macs.s
new file mode 100644
index 0000000..9b2056e
--- /dev/null
+++ b/fta/Library/Male.Macs.s
@@ -0,0 +1,26 @@
+*
+* Male Voice tool calls
+*
+
+_MaleBootInit mac
+ Tool $0132
+ <<<
+_MaleStartUp mac
+ Tool $0232
+ <<<
+_MaleShutDown mac
+ Tool $0332
+ <<<
+_MaleVersion mac
+ Tool $0432
+ <<<
+_MaleReset mac
+ Tool $0532
+ <<<
+_MaleStatus mac
+ Tool $0632
+ <<<
+_MaleSpeak mac
+ Tool $0932
+ <<<
+
diff --git a/fta/Library/Media.Macs.s b/fta/Library/Media.Macs.s
new file mode 100644
index 0000000..bcb057c
--- /dev/null
+++ b/fta/Library/Media.Macs.s
@@ -0,0 +1,137 @@
+*
+* Media Controller tool calls
+*
+
+_MCBootInit mac
+ Tool $0126
+ <<<
+_MCStartUp mac
+ Tool $0226
+ <<<
+_MCShutDown mac
+ Tool $0326
+ <<<
+_MCVersion mac
+ Tool $0426
+ <<<
+_MCReset mac
+ Tool $0526
+ <<<
+_MCStatus mac
+ Tool $0626
+ <<<
+_MCGetErrorMsg mac
+ Tool $0926
+ <<<
+_MCLoadDriver mac
+ Tool $0a26
+ <<<
+_MCUnLoadDriver mac
+ Tool $0b26
+ <<<
+_MCTime2Bin mac
+ Tool $0c26
+ <<<
+_MCBin2Time mac
+ Tool $0d26
+ <<<
+_MCGetTrackTitle mac
+ Tool $0e26
+ <<<
+_MCSetTrackTitle mac
+ Tool $0f26
+ <<<
+_MCGetProgram mac
+ Tool $1026
+ <<<
+_MCSetProgram mac
+ Tool $1126
+ <<<
+_MCGetDiscTitle mac
+ Tool $1226
+ <<<
+_MCSetDiscTitle mac
+ Tool $1326
+ <<<
+_MCDStartUp mac
+ Tool $1426
+ <<<
+_MCDShutDown mac
+ Tool $1526
+ <<<
+_MCGetFeatures mac
+ Tool $1626
+ <<<
+_MCPlay mac
+ Tool $1726
+ <<<
+_MCPause mac
+ Tool $1826
+ <<<
+_MCSendRawData mac
+ Tool $1926
+ <<<
+_MCGetStatus mac
+ Tool $1a26
+ <<<
+_MCControl mac
+ Tool $1b26
+ <<<
+_MCScan mac
+ Tool $1c26
+ <<<
+_MCGetSpeeds mac
+ Tool $1d26
+ <<<
+_MCSpeed mac
+ Tool $1e26
+ <<<
+_MCStopAt mac
+ Tool $1f26
+ <<<
+_MCJog mac
+ Tool $2026
+ <<<
+_MCSearchTo mac
+ Tool $2126
+ <<<
+_MCSearchDone mac
+ Tool $2226
+ <<<
+_MCSearchWait mac
+ Tool $2326
+ <<<
+_MCGetPosition mac
+ Tool $2426
+ <<<
+_MCSetAudio mac
+ Tool $2526
+ <<<
+_MCGetTimes mac
+ Tool $2626
+ <<<
+_MCGetDiscTOC mac
+ Tool $2726
+ <<<
+_MCGetDiscID mac
+ Tool $2826
+ <<<
+_MCGetNoTracks mac
+ Tool $2926
+ <<<
+_MCRecord mac
+ Tool $2a26
+ <<<
+_MCStop mac
+ Tool $2b26
+ <<<
+_MCWaitRawData mac
+ Tool $2c26
+ <<<
+_MCGetName mac
+ Tool $2d26
+ <<<
+_MCSetVolume mac
+ Tool $2e26
+ <<<
+
diff --git a/fta/Library/Mem.Macs.s b/fta/Library/Mem.Macs.s
new file mode 100644
index 0000000..be9ddb2
--- /dev/null
+++ b/fta/Library/Mem.Macs.s
@@ -0,0 +1,179 @@
+* Memory Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_MMBootInit MAC
+ Tool $102
+ <<<
+~MMStartUp MAC
+ PHA
+_MMStartUp MAC
+ Tool $202
+ <<<
+~MMShutDown MAC
+ PHW ]1
+_MMShutDown MAC
+ Tool $302
+ <<<
+~MMVersion MAC
+ PHA
+_MMVersion MAC
+ Tool $402
+ <<<
+_MMReset MAC
+ Tool $502
+ <<<
+~MMStatus MAC
+ PHA
+_MMStatus MAC
+ Tool $602
+ <<<
+~NewHandle MAC
+ P2SL ]1
+ PxW ]2;]3
+ PHL ]4
+_NewHandle MAC
+ Tool $902
+ <<<
+~ReallocHandle MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+ PHL ]5
+_ReallocHandle MAC
+ Tool $A02
+ <<<
+~RestoreHandle MAC
+ PHL ]1
+_RestoreHandle MAC
+ Tool $B02
+ <<<
+~AddToOOMQueue MAC
+ PHL ]1
+_AddToOOMQueue MAC
+ Tool $C02
+ <<<
+~DeleteFromOOMQueue MAC
+ PHL ]1
+_DeleteFromOOMQueue MAC
+ Tool $D02
+ <<<
+~DisposeHandle MAC
+ PHL ]1
+_DisposeHandle MAC
+ Tool $1002
+ <<<
+~DisposeAll MAC
+ PHW ]1
+_DisposeAll MAC
+ Tool $1102
+ <<<
+~PurgeHandle MAC
+ PHL ]1
+_PurgeHandle MAC
+ Tool $1202
+ <<<
+~PurgeAll MAC
+ PHW ]1
+_PurgeAll MAC
+ Tool $1302
+ <<<
+~GetHandleSize MAC
+ P2SL ]1
+_GetHandleSize MAC
+ Tool $1802
+ <<<
+~SetHandleSize MAC
+ PxL ]1;]2
+_SetHandleSize MAC
+ Tool $1902
+ <<<
+~FindHandle MAC
+ P2SL ]1
+_FindHandle MAC
+ Tool $1A02
+ <<<
+~FreeMem MAC
+ PHS 2
+_FreeMem MAC
+ Tool $1B02
+ <<<
+~MaxBlock MAC
+ PHS 2
+_MaxBlock MAC
+ Tool $1C02
+ <<<
+~TotalMem MAC
+ PHS 2
+_TotalMem MAC
+ Tool $1D02
+ <<<
+~CheckHandle MAC
+ PHL ]1
+_CheckHandle MAC
+ Tool $1E02
+ <<<
+_CompactMem MAC
+ Tool $1F02
+ <<<
+~HLock MAC
+ PHL ]1
+_HLock MAC
+ Tool $2002
+ <<<
+~HLockAll MAC
+ PHW ]1
+_HLockAll MAC
+ Tool $2102
+ <<<
+~HUnlock MAC
+ PHL ]1
+_HUnlock MAC
+ Tool $2202
+ <<<
+~HUnlockAll MAC
+ PHW ]1
+_HUnlockAll MAC
+ Tool $2302
+ <<<
+~SetPurge MAC
+ PHWL ]1;]2
+_SetPurge MAC
+ Tool $2402
+ <<<
+~SetPurgeAll MAC
+ PxW ]1;]2
+_SetPurgeAll MAC
+ Tool $2502
+ <<<
+~PtrToHand MAC
+ PxL ]1;]2;]3
+_PtrToHand MAC
+ Tool $2802
+ <<<
+~HandToPtr MAC
+ PxL ]1;]2;]3
+_HandToPtr MAC
+ Tool $2902
+ <<<
+~HandToHand MAC
+ PxL ]1;]2;3
+_HandToHand MAC
+ Tool $2A02
+ <<<
+~BlockMove MAC
+ PxL ]1;]2;]3
+_BlockMove MAC
+ Tool $2B02
+ <<<
+~RealFreeMem MAC
+ PHS 2
+_RealFreeMem MAC
+ Tool $2F02
+ <<<
+_SetHandleID MAC
+ Tool $3002
+ <<<
+
diff --git a/fta/Library/Menu.Macs.s b/fta/Library/Menu.Macs.s
new file mode 100644
index 0000000..f8942ab
--- /dev/null
+++ b/fta/Library/Menu.Macs.s
@@ -0,0 +1,372 @@
+* Menu Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_MenuBootInit MAC
+ Tool $10F
+ <<<
+~MenuStartUp MAC
+ PxW ]1;]2
+_MenuStartUp MAC
+ Tool $20F
+ <<<
+_MenuShutDown MAC
+ Tool $30F
+ <<<
+~MenuVersion MAC
+ PHA
+_MenuVersion MAC
+ Tool $40F
+ <<<
+_MenuReset MAC
+ Tool $50F
+ <<<
+~MenuStatus MAC
+ PHA
+_MenuStatus MAC
+ Tool $60F
+ <<<
+~MenuKey MAC
+ PxL ]1;]2
+_MenuKey MAC
+ Tool $90F
+ <<<
+~GetMenuBar MAC
+ PHS 2
+_GetMenuBar MAC
+ Tool $A0F
+ <<<
+~MenuRefresh MAC
+ PHL ]1
+_MenuRefresh MAC
+ Tool $B0F
+ <<<
+_FlashMenuBar MAC
+ Tool $C0F
+ <<<
+~InsertMenu MAC
+ PHLW ]1;]2
+_InsertMenu MAC
+ Tool $D0F
+ <<<
+~DeleteMenu MAC
+ PHW ]1
+_DeleteMenu MAC
+ Tool $E0F
+ <<<
+~InsertMItem MAC
+ PHL ]1
+ PxW ]2;]3
+_InsertMItem MAC
+ Tool $F0F
+ <<<
+~DeleteMItem MAC
+ PHW ]1
+_DeleteMItem MAC
+ Tool $100F
+ <<<
+~GetSysBar MAC
+ PHS 2
+_GetSysBar MAC
+ Tool $110F
+ <<<
+~SetSysBar MAC
+ PHL ]1
+_SetSysBar MAC
+ Tool $120F
+ <<<
+~FixMenuBar MAC
+ PHA
+_FixMenuBar MAC
+ Tool $130F
+ <<<
+~CountMItems MAC
+ P1SW ]1
+_CountMItems MAC
+ Tool $140F
+ <<<
+~NewMenuBar MAC
+ P2SL ]1
+_NewMenuBar MAC
+ Tool $150F
+ <<<
+~GetMHandle MAC
+ P2SW ]1
+_GetMHandle MAC
+ Tool $160F
+ <<<
+~SetBarColors MAC
+ PxW ]1;]2;]3
+_SetBarColors MAC
+ Tool $170F
+ <<<
+~GetBarColors MAC
+ PHS 2
+_GetBarColors MAC
+ Tool $180F
+ <<<
+~SetMTitleStart MAC
+ PHW ]1
+_SetMTitleStart MAC
+ Tool $190F
+ <<<
+~GetMTitleStart MAC
+ PHA
+_GetMTitleStart MAC
+ Tool $1A0F
+ <<<
+~GetMenuMgrPort MAC
+ PHS 2
+_GetMenuMgrPort MAC
+ Tool $1B0F
+ <<<
+~CalcMenuSize MAC
+ PxW ]1;]2;]3
+_CalcMenuSize MAC
+ Tool $1C0F
+ <<<
+~SetMTitleWidth MAC
+ PxW ]1;]2
+_SetMTitleWidth MAC
+ Tool $1D0F
+ <<<
+~GetMTitleWidth MAC
+ P1SW ]1
+_GetMTitleWidth MAC
+ Tool $1E0F
+ <<<
+~SetMenuFlag MAC
+ PxW ]1;]2
+_SetMenuFlag MAC
+ Tool $1F0F
+ <<<
+~GetMenuFlag MAC
+ P1SW ]1
+_GetMenuFlag MAC
+ Tool $200F
+ <<<
+~SetMenuTitle MAC
+ PHLW ]1;]2
+_SetMenuTitle MAC
+ Tool $210F
+ <<<
+~GetMenuTitle MAC
+ P2SW ]1
+_GetMenuTitle MAC
+ Tool $220F
+ <<<
+~MenuGlobal MAC
+ P1SW ]1
+_MenuGlobal MAC
+ Tool $230F
+ <<<
+~SetMItem MAC
+ PHLW ]1;]2
+_SetMItem MAC
+ Tool $240F
+ <<<
+~GetMItem MAC
+ PHLW ]1;]2
+_GetMItem MAC
+ Tool $250F
+ <<<
+~SetMItemFlag MAC
+ PxW ]1;]2
+_SetMItemFlag MAC
+ Tool $260F
+ <<<
+~GetMItemFlag MAC
+ P1SW ]1
+_GetMItemFlag MAC
+ Tool $270F
+ <<<
+~SetMItemBlink MAC
+ PHW ]1
+_SetMItemBlink MAC
+ Tool $280F
+ <<<
+_MenuNewRes MAC
+ Tool $290F
+ <<<
+_DrawMenuBar MAC
+ Tool $2A0F
+ <<<
+~MenuSelect MAC
+ PxL ]1;]2
+_MenuSelect MAC
+ Tool $2B0F
+ <<<
+~HiliteMenu MAC
+ PxW ]1;]2
+_HiliteMenu MAC
+ Tool $2C0F
+ <<<
+~NewMenu MAC
+ P2SL ]1
+_NewMenu MAC
+ Tool $2D0F
+ <<<
+~DisposeMenu MAC
+ PHL ]1
+_DisposeMenu MAC
+ Tool $2E0F
+ <<<
+_InitPalette MAC
+ Tool $2F0F
+ <<<
+~EnableMItem MAC
+ PHW ]1
+_EnableMItem MAC
+ Tool $300F
+ <<<
+~DisableMItem MAC
+ PHW ]1
+_DisableMItem MAC
+ Tool $310F
+ <<<
+~CheckMItem MAC
+ PxW ]1;]2
+_CheckMItem MAC
+ Tool $320F
+ <<<
+~SetMItemMark MAC
+ PxW ]1;]2
+_SetMItemMark MAC
+ Tool $330F
+ <<<
+~GetMItemMark MAC
+ P1SW ]1
+_GetMItemMark MAC
+ Tool $340F
+ <<<
+~SetMItemStyle MAC
+ PxW ]1;]2
+_SetMItemStyle MAC
+ Tool $350F
+ <<<
+~GetMItemStyle MAC
+ P1SW ]1
+_GetMItemStyle MAC
+ Tool $360F
+ <<<
+~SetMenuID MAC
+ PxW ]1;]2
+_SetMenuID MAC
+ Tool $370F
+ <<<
+~SetMItemID MAC
+ PxW ]1;]2
+_SetMItemID MAC
+ Tool $380F
+ <<<
+~SetMenuBar MAC
+ PHL ]1
+_SetMenuBar MAC
+ Tool $390F
+ <<<
+~SetMItemName MAC
+ PHLW ]1;]2
+_SetMItemName MAC
+ Tool $3A0F
+ <<<
+~GetPopUpDefProc MAC
+ PHS 2
+_GetPopUpDefProc MAC
+ Tool $3B0F
+ <<<
+~PopUpMenuSelect MAC
+ PHA
+ PxW ]1;]2;]3;]4
+ PHL ]5
+_PopUpMenuSelect MAC
+ Tool $3C0F
+ <<<
+~DrawPopUp MAC
+ PxW ]1;]2;]3;]4
+ PxW ]5;]6;]7
+_DrawPopUp MAC
+ Tool $3D0F
+ <<<
+~NewMenu2 MAC
+ P2SW ]1
+ PHL ]2
+_NewMenu2 MAC
+ Tool $3E0F
+ <<<
+~InsertMItem2 MAC
+ PHWL ]1;]2
+ PxW ]3;]4
+_InsertMItem2 MAC
+ Tool $3F0F
+ <<<
+~SetMenuTitle2 MAC
+ PHWL ]1;]2
+ PHW ]3
+_SetMenuTitle2 MAC
+ Tool $400F
+ <<<
+~SetMItem2 MAC
+ PHWL ]1;]2
+ PHW ]3
+_SetMItem2 MAC
+ Tool $410F
+ <<<
+~SetMItemName2 MAC
+ PHWL ]1;]2
+ PHW ]3
+_SetMItemName2 MAC
+ Tool $420F
+ <<<
+~NewMenuBar2 MAC
+ P2SW ]1
+ PxL ]2;]3
+_NewMenuBar2 MAC
+ Tool $430F
+ <<<
+_HideMenuBar MAC
+ Tool $450F
+ <<<
+_ShowMenuBar MAC
+ Tool $460F
+ <<<
+_SetMItemIcon MAC
+ Tool $470F
+ <<<
+_GetMItemIcon MAC
+ Tool $480F
+ <<<
+_SetMItemStruct MAC
+ Tool $490F
+ <<<
+_GetMItemStruct MAC
+ Tool $4A0F
+ <<<
+_RemoveMItemStruct MAC
+ Tool $4B0F
+ <<<
+_GetMItemFlag2 MAC
+ Tool $4C0F
+ <<<
+_SetMItemFlag2 MAC
+ Tool $4D0F
+ <<<
+_GetMItemBlink MAC
+ Tool $4F0F
+ <<<
+_InsertPathMItems MAC
+ Tool $500F
+ <<<
+~qMenuStartUp MAC
+ PHW ]1
+ NextDP ]2;$100
+ Tool $20F
+ <<<
+~qNewMenu MAC
+ ~NewMenu ]1
+ PHW #0
+ _InsertMenu
+ <<<
+
diff --git a/fta/Library/Midi.Macs.s b/fta/Library/Midi.Macs.s
new file mode 100644
index 0000000..15d0bb8
--- /dev/null
+++ b/fta/Library/Midi.Macs.s
@@ -0,0 +1,79 @@
+* MIDI tool macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+
+_MidiBootInit MAC
+ Tool $120
+ <<<
+~MidiStartUp MAC
+ PxW ]1;]2
+_MidiStartUp MAC
+ Tool $220
+ <<<
+_MidiShutDown MAC
+ Tool $320
+ <<<
+~MidiVersion MAC
+ PHA
+_MidiVersion MAC
+ Tool $420
+ <<<
+_MidiReset MAC
+ Tool $520
+ <<<
+~MidiStatus MAC
+ PHA
+_MidiStatus MAC
+ Tool $620
+ <<<
+~MidiControl MAC
+ PHWL ]1;]2
+_MidiControl MAC
+ Tool $920
+ <<<
+~MidiDevice MAC
+ PHWL ]1;]2
+_MidiDevice MAC
+ Tool $A20
+ <<<
+~MidiClock MAC
+ PHWL ]1;]2
+_MidiClock MAC
+ Tool $B20
+ <<<
+~MidiInfo MAC
+ P2SW ]1
+_MidiInfo MAC
+ Tool $C20
+ <<<
+~MidiReadPacket MAC
+ P1SL ]1
+ PHW ]2
+_MidiReadPacket MAC
+ Tool $D20
+ <<<
+~MidiWritePacket MAC
+ P1SL ]1
+_MidiWritePacket MAC
+ Tool $E20
+ <<<
+_MidiRecordSeq MAC
+ Tool $F20
+ <<<
+_MidiStopRecord MAC
+ Tool $1020
+ <<<
+_MidiPlaySeq MAC
+ Tool $1120
+ <<<
+_MidiStopPlay MAC
+ Tool $1220
+ <<<
+_MidiConvert MAC
+ Tool $1320
+ <<<
+
diff --git a/fta/Library/MidiSyn.Macs.s b/fta/Library/MidiSyn.Macs.s
new file mode 100644
index 0000000..4f862ac
--- /dev/null
+++ b/fta/Library/MidiSyn.Macs.s
@@ -0,0 +1,119 @@
+*
+* Midi Synth tool calls
+*
+
+_MSBootInit mac
+ Tool $0123
+ <<<
+_MSStartUp mac
+ Tool $0223
+ <<<
+_MSShutDown mac
+ Tool $0323
+ <<<
+_MSVersion mac
+ Tool $0423
+ <<<
+_MSReset mac
+ Tool $0523
+ <<<
+_MSStatus mac
+ Tool $0623
+ <<<
+_SetBasicChannel mac
+ Tool $0923
+ <<<
+_SetMIDIMode mac
+ Tool $0a23
+ <<<
+_PlayNote mac
+ Tool $0b23
+ <<<
+_StopNote mac
+ Tool $0c23
+ <<<
+_KillAllNotes mac
+ Tool $0d23
+ <<<
+_SetRecTrack mac
+ Tool $0e23
+ <<<
+_SetPlayTrack mac
+ Tool $0f23
+ <<<
+_TrackToChannel mac
+ Tool $1023
+ <<<
+_Locate mac
+ Tool $1123
+ <<<
+_SetVelComp mac
+ Tool $1223
+ <<<
+_SetMIDIPort mac
+ Tool $1323
+ <<<
+_SetInstrument mac
+ Tool $1423
+ <<<
+_SeqPlayer mac
+ Tool $1523
+ <<<
+_SetTempo mac
+ Tool $1623
+ <<<
+_SetCallBack mac
+ Tool $1723
+ <<<
+_SysExOut mac
+ Tool $1823
+ <<<
+_SetBeat mac
+ Tool $1923
+ <<<
+_MIDIMessage mac
+ Tool $1a23
+ <<<
+_LocateEnd mac
+ Tool $1b23
+ <<<
+_Merge mac
+ Tool $1c23
+ <<<
+_DeleteTrack mac
+ Tool $1d23
+ <<<
+_SetMetro mac
+ Tool $1e23
+ <<<
+_GetMSData mac
+ Tool $1f23
+ <<<
+_ConvertToTime mac
+ Tool $2023
+ <<<
+_ConvertToMeasure mac
+ Tool $2123
+ <<<
+_MSSuspend mac
+ Tool $2223
+ <<<
+_MSResume mac
+ Tool $2323
+ <<<
+_SetTuningTable mac
+ Tool $2423
+ <<<
+_GetTuningTable mac
+ Tool $2523
+ <<<
+_SetTrackOut mac
+ Tool $2623
+ <<<
+_InitMIDIDriver mac
+ Tool $2723
+ <<<
+_RemoveMIDIDriver mac
+ Tool $2823
+ <<<
+
diff --git a/fta/Library/Misc.Macs.s b/fta/Library/Misc.Macs.s
new file mode 100644
index 0000000..d562d8b
--- /dev/null
+++ b/fta/Library/Misc.Macs.s
@@ -0,0 +1,278 @@
+* Misc Tool macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_MTBootInit MAC
+ Tool $103
+ <<<
+_MTStartUp MAC
+ Tool $203
+ <<<
+_MTShutDown MAC
+ Tool $303
+ <<<
+~MTVersion MAC
+ PHA
+_MTVersion MAC
+ Tool $403
+ <<<
+_MTReset MAC
+ Tool $503
+ <<<
+~MTStatus MAC
+ PHA
+_MTStatus MAC
+ Tool $603
+ <<<
+~WriteBRam MAC
+ PHL ]1
+_WriteBRam MAC
+ Tool $903
+ <<<
+~ReadBRam MAC
+ PHL ]1
+_ReadBRam MAC
+ Tool $A03
+ <<<
+~WriteBParam MAC
+ PxW ]1;]2
+_WriteBParam MAC
+ Tool $B03
+ <<<
+~ReadBParam MAC
+ P1SW ]1
+_ReadBParam MAC
+ Tool $C03
+ <<<
+~ReadTimeHex MAC
+ PHS 4
+_ReadTimeHex MAC
+ Tool $D03
+ <<<
+~WriteTimeHex MAC
+ PxW ]1;]2;]3
+_WriteTimeHex MAC
+ Tool $E03
+ <<<
+~ReadAsciiTime MAC
+ PHL ]1
+_ReadAsciiTime MAC
+ Tool $F03
+ <<<
+~SetVector MAC
+ PHWL ]1;]2
+_SetVector MAC
+ Tool $1003
+ <<<
+~GetVector MAC
+ P2SW ]1
+_GetVector MAC
+ Tool $1103
+ <<<
+~SetHeartBeat MAC
+ PHL ]1
+_SetHeartBeat MAC
+ Tool $1203
+ <<<
+~DelHeartBeat MAC
+ PHL ]1
+_DelHeartBeat MAC
+ Tool $1303
+ <<<
+_ClrHeartBeat MAC
+ Tool $1403
+ <<<
+~SysFailMgr MAC
+ PHWL ]1;]2
+_SysFailMgr MAC
+ Tool $1503
+ <<<
+~GetAddr MAC
+ P2SW ]1
+_GetAddr MAC
+ Tool $1603
+ <<<
+~ReadMouse MAC
+ PHS 3
+_ReadMouse MAC
+ Tool $1703
+ <<<
+~InitMouse MAC
+ PHW ]1
+_InitMouse MAC
+ Tool $1803
+ <<<
+~SetMouse MAC
+ PHW ]1
+_SetMouse MAC
+ Tool $1903
+ <<<
+_HomeMouse MAC
+ Tool $1A03
+ <<<
+_ClearMouse MAC
+ Tool $1B03
+ <<<
+~ClampMouse MAC
+ PxW ]1;]2;]3;]4
+_ClampMouse MAC
+ Tool $1C03
+ <<<
+~GetMouseClamp MAC
+ PHS 4
+_GetMouseClamp MAC
+ Tool $1D03
+ <<<
+~PosMouse MAC
+ PxW ]1;]2
+_PosMouse MAC
+ Tool $1E03
+ <<<
+~ServeMouse MAC
+ PHA
+_ServeMouse MAC
+ Tool $1F03
+ <<<
+~GetNewID MAC
+ P1SW ]1
+_GetNewID MAC
+ Tool $2003
+ <<<
+~DeleteID MAC
+ PHW ]1
+_DeleteID MAC
+ Tool $2103
+ <<<
+~StatusID MAC
+ PHW ]1
+_StatusID MAC
+ Tool $2203
+ <<<
+~IntSource MAC
+ PHW ]1
+_IntSource MAC
+ Tool $2303
+ <<<
+~FWEntry MAC
+ PHS 4
+ PxW ]1;]2;]3;]4
+_FWEntry MAC
+ Tool $2403
+ <<<
+~GetTick MAC
+ PHS 2
+_GetTick MAC
+ Tool $2503
+ <<<
+~PackBytes MAC
+ P1SL ]1
+ PxL ]2;]3
+ PHW ]4
+_PackBytes MAC
+ Tool $2603
+ <<<
+~UnPackBytes MAC
+ P1SL ]1
+ PHW ]2
+ PxL ]3;]4
+_UnPackBytes MAC
+ Tool $2703
+ <<<
+~Munger MAC
+ P1SL ]1
+ PxL ]2;]3
+ PHWL ]4;]5
+ PHWL ]6;]7
+_Munger MAC
+ Tool $2803
+ <<<
+~GetIRQEnable MAC
+ PHA
+_GetIRQEnable MAC
+ Tool $2903
+ <<<
+~SetAbsClamp MAC
+ PxW ]1;]2;]3;]4
+_SetAbsClamp MAC
+ Tool $2A03
+ <<<
+~GetAbsClamp MAC
+ PHS 4
+_GetAbsClamp MAC
+ Tool $2B03
+ <<<
+_SysBeep MAC
+ Tool $2C03
+ <<<
+~AddToQueue MAC
+ PxL ]1;]2
+_AddToQueue MAC
+ Tool $2E03
+ <<<
+~DeleteFromQueue MAC
+ PxL ]1;]2
+_DeleteFromQueue MAC
+ Tool $2F03
+ <<<
+~SetInterruptState MAC
+ PHLW ]1;]2
+_SetInterruptState MAC
+ Tool $3003
+ <<<
+~GetInterruptState MAC
+ PHLW ]1;]2
+_GetInterruptState MAC
+ Tool $3103
+ <<<
+~GetIntStateRecSize MAC
+ PHA
+_GetIntStateRecSize MAC
+ Tool $3203
+ <<<
+~ReadMouse2 MAC
+ PHS 3
+_ReadMouse2 MAC
+ Tool $3303
+ <<<
+~GetCodeResConverter MAC
+ PHS 2
+_GetCodeResConverter MAC
+ Tool $3403
+ <<<
+_GetROMResource MAC ;private
+ Tool $3503
+ <<<
+_ReleaseROMResource MAC ;private
+ Tool $3603
+ <<<
+_ConvSeconds MAC
+ Tool $3703
+ <<<
+_SysBeep2 MAC
+ Tool $3803
+ <<<
+_VersionString MAC
+ Tool $3903
+ <<<
+_WaitUntil MAC
+ Tool $3A03
+ <<<
+_StringToText MAC
+ Tool $3B03
+ <<<
+_ShowBootInfo MAC
+ Tool $3C03
+ <<<
+_ScanDevices MAC
+ Tool $3D03
+ <<<
+_AlertMessage MAC
+ Tool $3E03
+ <<<
+_DoSysPrefs MAC
+ Tool $3F03
+ <<<
+
diff --git a/fta/Library/NoteSeq.Macs.s b/fta/Library/NoteSeq.Macs.s
new file mode 100644
index 0000000..e08e44e
--- /dev/null
+++ b/fta/Library/NoteSeq.Macs.s
@@ -0,0 +1,89 @@
+* Note sequencer macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_SeqBootInit MAC
+ Tool $011A
+ <<<
+~SeqStartUp MAC
+ PxW ]1;]2;]3;]4
+_SeqStartUp MAC
+ Tool $021A
+ <<<
+_SeqShutDown MAC
+ Tool $031A
+ <<<
+~SeqVersion MAC
+ PHA
+_SeqVersion MAC
+ Tool $041A
+ <<<
+_SeqReset MAC
+ Tool $051A
+ <<<
+~SeqStatus MAC
+ PHA
+_SeqStatus MAC
+ Tool $061A
+ <<<
+~SetIncr MAC
+ PHW ]1
+_SetIncr MAC
+ Tool $091A
+ <<<
+~ClearIncr MAC
+ PHA
+_ClearIncr MAC
+ Tool $0A1A
+ <<<
+~GetTimer MAC
+ PHA
+_GetTimer MAC
+ Tool $0B1A
+ <<<
+~GetLoc MAC
+ PHS 3
+_GetLoc MAC
+ Tool $0C1A
+ <<<
+_SeqAllNotesOff MAC
+ Tool $0D1A
+ <<<
+~SetTrkInfo MAC
+ PxW ]1;]2;]3
+_SetTrkInfo MAC
+ Tool $0E1A
+ <<<
+~StartSeq MAC
+ PxL ]1;]2;]3
+_StartSeq MAC
+ Tool $0F1A
+ <<<
+_StepSeq MAC
+ Tool $101A
+ <<<
+~StopSeq MAC
+ PHW ]1
+_StopSeq MAC
+ Tool $111A
+ <<<
+~SetInstTable MAC
+ PHL ]1
+_SetInstTable MAC
+ Tool $121A
+ <<<
+_StartInts MAC
+ Tool $131A
+ <<<
+_StopInts MAC
+ Tool $141A
+ <<<
+~StartSeqRel MAC
+ PxL ]1;]2;]3
+_StartSeqRel MAC
+ Tool $151A
+ <<<
+
diff --git a/fta/Library/NoteSyn.Macs.s b/fta/Library/NoteSyn.Macs.s
new file mode 100644
index 0000000..a74a0d9
--- /dev/null
+++ b/fta/Library/NoteSyn.Macs.s
@@ -0,0 +1,66 @@
+* Note synthesizer macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_NSBootInit MAC
+ Tool $119
+ <<<
+~NSStartUp MAC
+ PHWL ]1;]2
+_NSStartUp MAC
+ Tool $219
+ <<<
+_NSShutDown MAC
+ Tool $319
+ <<<
+~NSVersion MAC
+ PHA
+_NSVersion MAC
+ Tool $419
+ <<<
+_NSReset MAC
+ Tool $519
+ <<<
+~NSStatus MAC
+ PHA
+_NSStatus MAC
+ Tool $619
+ <<<
+~AllocGen MAC
+ P1SW ]1
+_AllocGen MAC
+ Tool $919
+ <<<
+~DeallocGen MAC
+ PHW ]1
+_DeallocGen MAC
+ Tool $A19
+ <<<
+~NoteOn MAC
+ PxW ]1;]2;]3
+ PHL ]4
+_NoteOn MAC
+ Tool $B19
+ <<<
+~NoteOff MAC
+ PxW ]1;]2
+_NoteOff MAC
+ Tool $C19
+ <<<
+_AllNotesOff MAC
+ Tool $D19
+ <<<
+~NSSetUpdateRate MAC
+ P1SW ]1
+_NSSetUpdateRate MAC
+ Tool $E19
+ <<<
+~NSSetUserUpdateRtn MAC
+ P2SL ]1
+_NSSetUserUpdateRtn MAC
+ Tool $F19
+ <<<
+
diff --git a/fta/Library/Print.Macs.s b/fta/Library/Print.Macs.s
new file mode 100644
index 0000000..a310375
--- /dev/null
+++ b/fta/Library/Print.Macs.s
@@ -0,0 +1,220 @@
+* Print Mgr. macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_PMBootInit MAC
+ Tool $0113
+ <<<
+~PMStartUp MAC
+ PxW ]1;]2
+_PMStartUp MAC
+ Tool $0213
+ <<<
+_PMShutDown MAC
+ Tool $0313
+ <<<
+~PMVersion MAC
+ PHA
+_PMVersion MAC
+ Tool $0413
+ <<<
+_PMReset MAC
+ Tool $0513
+ <<<
+~PMStatus MAC
+ PHA
+_PMStatus MAC
+ Tool $0613
+ <<<
+~PrDefault MAC
+ PHL ]1
+_PrDefault MAC
+ Tool $0913
+ <<<
+~PrValidate MAC
+ P1SL ]1
+_PrValidate MAC
+ Tool $0A13
+ <<<
+~PrStlDialog MAC
+ P1SL ]1
+_PrStlDialog MAC
+ Tool $0B13
+ <<<
+~PrJobDialog MAC
+ P1SL ]1
+_PrJobDialog MAC
+ Tool $0C13
+ <<<
+~PrPixelMap MAC
+ PxL ]1;]2
+ PHW ]3
+_PrPixelMap MAC
+ Tool $0D13
+ <<<
+~PrOpenDoc MAC
+ P2SL ]1
+ PHL ]2
+_PrOpenDoc MAC
+ Tool $0E13
+ <<<
+~PrCloseDoc MAC
+ PHL ]1
+_PrCloseDoc MAC
+ Tool $0F13
+ <<<
+~PrOpenPage MAC
+ PxL ]1;]2
+_PrOpenPage MAC
+ Tool $1013
+ <<<
+~PrClosePage MAC
+ PHL ]1
+_PrClosePage MAC
+ Tool $1113
+ <<<
+~PrPicFile MAC
+ PxL ]1;]2;]3
+_PrPicFile MAC
+ Tool $1213
+ <<<
+_PrControl MAC
+ Tool $1313
+ <<<
+~PrError MAC
+ PHA
+_PrError MAC
+ Tool $1413
+ <<<
+~PrSetError MAC
+ PHW ]1
+_PrSetError MAC
+ Tool $1513
+ <<<
+~PrChoosePrinter MAC
+ PHA
+_PrChoosePrinter MAC
+ Tool $1613
+ <<<
+_GetDeviceName MAC
+ Tool $1703
+ <<<
+~PrGetPrinterSpecs MAC
+ PHS 2
+_PrGetPrinterSpecs MAC
+ Tool $1813
+ <<<
+_PrDevPrChanged MAC
+ Tool $1913
+ <<<
+_PrDevStartup MAC
+ Tool $1A13
+ <<<
+_PrDevShutDown MAC
+ Tool $1B13
+ <<<
+_PrDevOpen MAC
+ Tool $1C13
+ <<<
+_PrDevRead MAC
+ Tool $1D13
+ <<<
+_PrDevWrite MAC
+ Tool $1E13
+ <<<
+_PrDevClose MAC
+ Tool $1F13
+ <<<
+_PrDevStatus MAC
+ Tool $2013
+ <<<
+_PrDevAsyncRead MAC
+ Tool $2113
+ <<<
+_PrDevWriteBackground MAC
+ Tool $2213
+ <<<
+~PrDriverVer MAC
+ PHA
+_PrDriverVer MAC
+ Tool $2313
+ <<<
+~PrPortVer MAC
+ PHA
+_PrPortVer MAC
+ Tool $2413
+ <<<
+~PrGetZoneName MAC
+ PHS 2
+_PrGetZoneName MAC
+ Tool $2513
+ <<<
+~PrGetPrinterDvrName MAC
+ PHS 2
+_PrGetPrinterDvrName MAC
+ Tool $2813
+ <<<
+~PrGetPortDvrName MAC
+ PHS 2
+_PrGetPortDvrName MAC
+ Tool $2913
+ <<<
+~PrGetUserName MAC
+ PHS 2
+_PrGetUserName MAC
+ Tool $2A13
+ <<<
+~PrGetNetworkName MAC
+ PHS 2
+_PrGetNetworkName MAC
+ Tool $2B13
+ <<<
+_PrDevIsItSafe MAC
+ Tool $3013
+ <<<
+_GetZoneList MAC
+ Tool $3113
+ <<<
+_GetMyZone MAC
+ Tool $3213
+ <<<
+_GetPrinterList MAC
+ Tool $3313
+ <<<
+~PMUnloadDriver MAC
+ PHW ]1
+_PMUnloadDriver MAC
+ Tool $3413
+ <<<
+~PMLoadDriver MAC
+ PHW ]1
+_PMLoadDriver MAC
+ Tool $3513
+ <<<
+~PrGetDocName MAC
+ PHS 2
+_PrGetDocName MAC
+ Tool $3613
+ <<<
+~PrSetDocName MAC
+ PHL ]1
+_PrSetDocName MAC
+ Tool $3713
+ <<<
+~PrGetPgOrientation MAC
+ P1SL ]1
+_PrGetPgOrientation MAC
+ Tool $3813
+ <<<
+~qPMStartUp MAC
+ PHW ]1
+ CLC
+ LDA ]2
+ ADC ]NextDP
+ PHA
+ Tool $0213
+ <<<
+
diff --git a/fta/Library/Qd.Macs.s b/fta/Library/Qd.Macs.s
new file mode 100644
index 0000000..d311e76
--- /dev/null
+++ b/fta/Library/Qd.Macs.s
@@ -0,0 +1,1102 @@
+* QuickDraw II macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_QDBootInit MAC
+ Tool $104
+ <<<
+~QDStartUp MAC
+ PxW ]1;]2;]3;]4
+_QDStartUp MAC
+ Tool $204
+ <<<
+_QDShutDown MAC
+ Tool $304
+ <<<
+~QDVersion MAC
+ PHA
+_QDVersion MAC
+ Tool $404
+ <<<
+_QDReset MAC
+ Tool $504
+ <<<
+~QDStatus MAC
+ PHA
+_QDStatus MAC
+ Tool $604
+ <<<
+~GetAddress MAC
+ P2SW ]1
+_GetAddress MAC
+ Tool $904
+ <<<
+_GrafOn MAC
+ Tool $A04
+ <<<
+_GrafOff MAC
+ Tool $B04
+ <<<
+~GetStandardSCB MAC
+ PHA
+_GetStandardSCB MAC
+ Tool $C04
+ <<<
+~InitColorTable MAC
+ PHL ]1
+_InitColorTable MAC
+ Tool $D04
+ <<<
+~SetColorTable MAC
+ PHWL ]1;]2
+_SetColorTable MAC
+ Tool $E04
+ <<<
+~GetColorTable MAC
+ PHWL ]1;]2
+_GetColorTable MAC
+ Tool $F04
+ <<<
+~SetColorEntry MAC
+ PxW ]1;]2;]3
+_SetColorEntry MAC
+ Tool $1004
+ <<<
+~GetColorEntry MAC
+ PHA
+ PxW ]1;]2
+_GetColorEntry MAC
+ Tool $1104
+ <<<
+~SetSCB MAC
+ PxW ]1;]2
+_SetSCB MAC
+ Tool $1204
+ <<<
+~GetSCB MAC
+ P1SW ]1
+_GetSCB MAC
+ Tool $1304
+ <<<
+~SetAllSCBs MAC
+ PHW ]1
+_SetAllSCBs MAC
+ Tool $1404
+ <<<
+~ClearScreen MAC
+ PHW ]1
+_ClearScreen MAC
+ Tool $1504
+ <<<
+~SetMasterSCB MAC
+ PHW ]1
+_SetMasterSCB MAC
+ Tool $1604
+ <<<
+~GetMasterSCB MAC
+ PHA
+_GetMasterSCB MAC
+ Tool $1704
+ <<<
+~OpenPort MAC
+ PHL ]1
+_OpenPort MAC
+ Tool $1804
+ <<<
+~InitPort MAC
+ PHL ]1
+_InitPort MAC
+ Tool $1904
+ <<<
+~ClosePort MAC
+ PHL ]1
+_ClosePort MAC
+ Tool $1A04
+ <<<
+~SetPort MAC
+ PHL ]1
+_SetPort MAC
+ Tool $1B04
+ <<<
+~GetPort MAC
+ PHS 2
+_GetPort MAC
+ Tool $1C04
+ <<<
+~SetPortLoc MAC
+ PHL ]1
+_SetPortLoc MAC
+ Tool $1D04
+ <<<
+~GetPortLoc MAC
+ PHL ]1
+_GetPortLoc MAC
+ Tool $1E04
+ <<<
+~SetPortRect MAC
+ PHL ]1
+_SetPortRect MAC
+ Tool $1F04
+ <<<
+~GetPortRect MAC
+ PHL ]1
+_GetPortRect MAC
+ Tool $2004
+ <<<
+~SetPortSize MAC
+ PxW ]1;]2
+_SetPortSize MAC
+ Tool $2104
+ <<<
+~MovePortTo MAC
+ PxW ]1;]2
+_MovePortTo MAC
+ Tool $2204
+ <<<
+~SetOrigin MAC
+ PxW ]1;]2
+_SetOrigin MAC
+ Tool $2304
+ <<<
+~SetClip MAC
+ PHL ]1
+_SetClip MAC
+ Tool $2404
+ <<<
+~GetClip MAC
+ PHL ]1
+_GetClip MAC
+ Tool $2504
+ <<<
+~ClipRect MAC
+ PHL ]1
+_ClipRect MAC
+ Tool $2604
+ <<<
+_HidePen MAC
+ Tool $2704
+ <<<
+_ShowPen MAC
+ Tool $2804
+ <<<
+~GetPen MAC
+ PHL ]1
+_GetPen MAC
+ Tool $2904
+ <<<
+~SetPenState MAC
+ PHL ]1
+_SetPenState MAC
+ Tool $2A04
+ <<<
+~GetPenState MAC
+ PHL ]1
+_GetPenState MAC
+ Tool $2B04
+ <<<
+~SetPenSize MAC
+ PxW ]1;]2
+_SetPenSize MAC
+ Tool $2C04
+ <<<
+~GetPenSize MAC
+ PHL ]1
+_GetPenSize MAC
+ Tool $2D04
+ <<<
+~SetPenMode MAC
+ PHW ]1
+_SetPenMode MAC
+ Tool $2E04
+ <<<
+~GetPenMode MAC
+ PHA
+_GetPenMode MAC
+ Tool $2F04
+ <<<
+~SetPenPat MAC
+ PHL ]1
+_SetPenPat MAC
+ Tool $3004
+ <<<
+~GetPenPat MAC
+ PHL ]1
+_GetPenPat MAC
+ Tool $3104
+ <<<
+~SetPenMask MAC
+ PHL ]1
+_SetPenMask MAC
+ Tool $3204
+ <<<
+~GetPenMask MAC
+ PHL ]1
+_GetPenMask MAC
+ Tool $3304
+ <<<
+~SetBackPat MAC
+ PHL ]1
+_SetBackPat MAC
+ Tool $3404
+ <<<
+~GetBackPat MAC
+ PHL ]1
+_GetBackPat MAC
+ Tool $3504
+ <<<
+_PenNormal MAC
+ Tool $3604
+ <<<
+~SetSolidPenPat MAC
+ PHW ]1
+_SetSolidPenPat MAC
+ Tool $3704
+ <<<
+~SetSolidBackPat MAC
+ PHW ]1
+_SetSolidBackPat MAC
+ Tool $3804
+ <<<
+~SolidPattern MAC
+ PHWL ]1;]2
+_SolidPattern MAC
+ Tool $3904
+ <<<
+~MoveTo MAC
+GotoXY MAC
+QDGotoXY MAC
+ PxW ]1;]2
+_MoveTo MAC
+ Tool $3A04
+ <<<
+~Move MAC
+ PxW ]1;]2
+_Move MAC
+ Tool $3B04
+ <<<
+~LineTo MAC
+ PxW ]1;]2
+_LineTo MAC
+ Tool $3C04
+ <<<
+~Line MAC
+ PxW ]1;]2
+_Line MAC
+ Tool $3D04
+ <<<
+~SetPicSave MAC
+ PHL ]1
+_SetPicSave MAC
+ Tool $3E04
+ <<<
+~GetPicSave MAC
+ PHS 2
+_GetPicSave MAC
+ Tool $3F04
+ <<<
+~SetRgnSave MAC
+ PHL ]1
+_SetRgnSave MAC
+ Tool $4004
+ <<<
+~GetRgnSave MAC
+ PHS 2
+_GetRgnSave MAC
+ Tool $4104
+ <<<
+~SetPolySave MAC
+ PHL ]1
+_SetPolySave MAC
+ Tool $4204
+ <<<
+~GetPolySave MAC
+ PHS 2
+_GetPolySave MAC
+ Tool $4304
+ <<<
+~SetGrafProcs MAC
+ PHL ]1
+_SetGrafProcs MAC
+ Tool $4404
+ <<<
+~GetGrafProcs MAC
+ PHS 2
+_GetGrafProcs MAC
+ Tool $4504
+ <<<
+~SetUserField MAC
+ PHL ]1
+_SetUserField MAC
+ Tool $4604
+ <<<
+~GetUserField MAC
+ PHS 2
+_GetUserField MAC
+ Tool $4704
+ <<<
+~SetSysField MAC
+ PHL ]1
+_SetSysField MAC
+ Tool $4804
+ <<<
+~GetSysField MAC
+ PHS 2
+_GetSysField MAC
+ Tool $4904
+ <<<
+~SetRect MAC
+ PHL ]1
+ PxW ]2;]3;]4;]5
+_SetRect MAC
+ Tool $4A04
+ <<<
+~OffsetRect MAC
+ PHL ]1
+ PxW ]2;]3
+_OffsetRect MAC
+ Tool $4B04
+ <<<
+~InsetRect MAC
+ PHL ]1
+ PxW ]2;]3
+_InsetRect MAC
+ Tool $4C04
+ <<<
+~SectRect MAC
+ PHA
+ PxL ]1;]2;]3
+_SectRect MAC
+ Tool $4D04
+ <<<
+~UnionRect MAC
+ PxL ]1;]2;]3
+_UnionRect MAC
+ Tool $4E04
+ <<<
+~PtInRect MAC
+ PHA
+ PxL ]1;]2
+_PtInRect MAC
+ Tool $4F04
+ <<<
+~Pt2Rect MAC
+ PxL ]1;]2;]3
+_Pt2Rect MAC
+ Tool $5004
+ <<<
+~EqualRect MAC
+ PHA
+ PxL ]1;]2
+_EqualRect MAC
+ Tool $5104
+ <<<
+~NotEmptyRect MAC
+ P1SL ]1
+_NotEmptyRect MAC
+ Tool $5204
+ <<<
+~EmptyRect MAC
+ P1SL ]1
+_EmptyRect MAC
+ Tool $5204
+ <<<
+~FrameRect MAC
+ PHL ]1
+_FrameRect MAC
+ Tool $5304
+ <<<
+~PaintRect MAC
+ PHL ]1
+_PaintRect MAC
+ Tool $5404
+ <<<
+~EraseRect MAC
+ PHL ]1
+_EraseRect MAC
+ Tool $5504
+ <<<
+~InvertRect MAC
+ PHL ]1
+_InvertRect MAC
+ Tool $5604
+ <<<
+~FillRect MAC
+ PxL ]1;]2
+_FillRect MAC
+ Tool $5704
+ <<<
+~FrameOval MAC
+ PHL ]1
+_FrameOval MAC
+ Tool $5804
+ <<<
+~PaintOval MAC
+ PHL ]1
+_PaintOval MAC
+ Tool $5904
+ <<<
+~EraseOval MAC
+ PHL ]1
+_EraseOval MAC
+ Tool $5A04
+ <<<
+~InvertOval MAC
+ PHL ]1
+_InvertOval MAC
+ Tool $5B04
+ <<<
+~FillOval MAC
+ PxL ]1;]2
+_FillOval MAC
+ Tool $5C04
+ <<<
+~FrameRRect MAC
+ PHL ]1
+ PxW ]2;]3
+_FrameRRect MAC
+ Tool $5D04
+ <<<
+~PaintRRect MAC
+ PHL ]1
+ PxW ]2;]3
+_PaintRRect MAC
+ Tool $5E04
+ <<<
+~EraseRRect MAC
+ PHL ]1
+ PxW ]2;]3
+_EraseRRect MAC
+ Tool $5F04
+ <<<
+~InvertRRect MAC
+ PHL ]1
+ PxW ]2;]3
+_InvertRRect MAC
+ Tool $6004
+ <<<
+~FillRRect MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_FillRRect MAC
+ Tool $6104
+ <<<
+~FrameArc MAC
+ PHL ]1
+ PxW ]2;]3
+_FrameArc MAC
+ Tool $6204
+ <<<
+~PaintArc MAC
+ PHL ]1
+ PxW ]2;]3
+_PaintArc MAC
+ Tool $6304
+ <<<
+~EraseArc MAC
+ PHL ]1
+ PxW ]2;]3
+_EraseArc MAC
+ Tool $6404
+ <<<
+~InvertArc MAC
+ PHL ]1
+ PxW ]2;]3
+_InvertArc MAC
+ Tool $6504
+ <<<
+~FillArc MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_FillArc MAC
+ Tool $6604
+ <<<
+~NewRgn MAC
+ PHS 2
+_NewRgn MAC
+ Tool $6704
+ <<<
+~DisposeRgn MAC
+ PHL ]1
+_DisposeRgn MAC
+ Tool $6804
+ <<<
+~CopyRgn MAC
+ PxL ]1;]2
+_CopyRgn MAC
+ Tool $6904
+ <<<
+~SetEmptyRgn MAC
+ PHL ]1
+_SetEmptyRgn MAC
+ Tool $6A04
+ <<<
+~SetRectRgn MAC
+ PHL ]1
+ PxW ]2;]3;]4;]5
+_SetRectRgn MAC
+ Tool $6B04
+ <<<
+~RectRgn MAC
+ PxL ]1;]2
+_RectRgn MAC
+ Tool $6C04
+ <<<
+_OpenRgn MAC
+ Tool $6D04
+ <<<
+~CloseRgn MAC
+ PHL ]1
+_CloseRgn MAC
+ Tool $6E04
+ <<<
+~OffsetRgn MAC
+ PHL ]1
+ PxW ]2;]3
+_OffsetRgn MAC
+ Tool $6F04
+ <<<
+~InsetRgn MAC
+ PHL ]1
+ PxW ]2;]3
+_InsetRgn MAC
+ Tool $7004
+ <<<
+~SectRgn MAC
+ PxL ]1;]2;]3
+_SectRgn MAC
+ Tool $7104
+ <<<
+~UnionRgn MAC
+ PxL ]1;]2;]3
+_UnionRgn MAC
+ Tool $7204
+ <<<
+~DiffRgn MAC
+ PxL ]1;]2;]3
+_DiffRgn MAC
+ Tool $7304
+ <<<
+~XorRgn MAC
+ PxL ]1;]2;]3
+_XorRgn MAC
+ Tool $7404
+ <<<
+~PtInRgn MAC
+ PHA
+ PxL ]1;]2
+_PtInRgn MAC
+ Tool $7504
+ <<<
+~RectInRgn MAC
+ PHA
+ PxL ]1;]2
+_RectInRgn MAC
+ Tool $7604
+ <<<
+~EqualRgn MAC
+ PHA
+ PxL ]1;]2
+_EqualRgn MAC
+ Tool $7704
+ <<<
+~EmptyRgn MAC
+ P1SL ]1
+_EmptyRgn MAC
+ Tool $7804
+ <<<
+~FrameRgn MAC
+ PHL ]1
+_FrameRgn MAC
+ Tool $7904
+ <<<
+~PaintRgn MAC
+ PHL ]1
+_PaintRgn MAC
+ Tool $7A04
+ <<<
+~EraseRgn MAC
+ PHL ]1
+_EraseRgn MAC
+ Tool $7B04
+ <<<
+~InvertRgn MAC
+ PHL ]1
+_InvertRgn MAC
+ Tool $7C04
+ <<<
+~FillRgn MAC
+ PxL ]1;]2
+_FillRgn MAC
+ Tool $7D04
+ <<<
+~ScrollRect MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_ScrollRect MAC
+ Tool $7E04
+ <<<
+~PaintPixels MAC
+ PHL ]1
+_PaintPixels MAC
+ Tool $7F04
+ <<<
+~AddPt MAC
+ PxL ]1;]2
+_AddPt MAC
+ Tool $8004
+ <<<
+~SubPt MAC
+ PxL ]1;]2
+_SubPt MAC
+ Tool $8104
+ <<<
+~SetPt MAC
+ PHL ]1
+ PxW ]2;]3
+_SetPt MAC
+ Tool $8204
+ <<<
+~EqualPt MAC
+ PHA
+ PxL ]1;]2
+_EqualPt MAC
+ Tool $8304
+ <<<
+~LocalToGlobal MAC
+ PHL ]1
+_LocalToGlobal MAC
+ Tool $8404
+ <<<
+~GlobalToLocal MAC
+ PHL ]1
+_GlobalToLocal MAC
+ Tool $8504
+ <<<
+~Random MAC
+ PHA
+_Random MAC
+ Tool $8604
+ <<<
+~SetRandSeed MAC
+ PHL ]1
+_SetRandSeed MAC
+ Tool $8704
+ <<<
+~GetPixel MAC
+ PHA
+ PxW ]1;]2
+_GetPixel MAC
+ Tool $8804
+ <<<
+~ScalePt MAC
+ PxL ]1;]2;]3
+_ScalePt MAC
+ Tool $8904
+ <<<
+~MapPt MAC
+ PxL ]1;]2;]3
+_MapPt MAC
+ Tool $8A04
+ <<<
+~MapRect MAC
+ PxL ]1;]2;]3
+_MapRect MAC
+ Tool $8B04
+ <<<
+~MapRgn MAC
+ PxL ]1;]2;]3
+_MapRgn MAC
+ Tool $8C04
+ <<<
+~SetStdProcs MAC
+ PHL ]1
+_SetStdProcs MAC
+ Tool $8D04
+ <<<
+~SetCursor MAC
+ PHL ]1
+_SetCursor MAC
+ Tool $8E04
+ <<<
+~GetCursorAdr MAC
+ PHS 2
+_GetCursorAdr MAC
+ Tool $8F04
+ <<<
+_HideCursor MAC
+ Tool $9004
+ <<<
+_ShowCursor MAC
+ Tool $9104
+ <<<
+_ObscureCursor MAC
+ Tool $9204
+ <<<
+_SetMouseLoc MAC
+ Tool $9304
+ <<<
+~SetFont MAC
+ PHL ]1
+_SetFont MAC
+ Tool $9404
+ <<<
+~GetFont MAC
+ PHS 2
+_GetFont MAC
+ Tool $9504
+ <<<
+~GetFontInfo MAC
+ PHL ]1
+_GetFontInfo MAC
+ Tool $9604
+ <<<
+~GetFontGlobals MAC
+ PHL ]1
+_GetFontGlobals MAC
+ Tool $9704
+ <<<
+~SetFontFlags MAC
+ PHW ]1
+_SetFontFlags MAC
+ Tool $9804
+ <<<
+~GetFontFlags MAC
+ PHA
+_GetFontFlags MAC
+ Tool $9904
+ <<<
+~SetTextFace MAC
+ PHW ]1
+_SetTextFace MAC
+ Tool $9A04
+ <<<
+~GetTextFace MAC
+ PHA
+_GetTextFace MAC
+ Tool $9B04
+ <<<
+~SetTextMode MAC
+ PHW ]1
+_SetTextMode MAC
+ Tool $9C04
+ <<<
+~GetTextMode MAC
+ PHA
+_GetTextMode MAC
+ Tool $9D04
+ <<<
+~SetSpaceExtra MAC
+ PHL ]1
+_SetSpaceExtra MAC
+ Tool $9E04
+ <<<
+~GetSpaceExtra MAC
+ PHS 2
+_GetSpaceExtra MAC
+ Tool $9F04
+ <<<
+~SetForeColor MAC
+ PHW ]1
+_SetForeColor MAC
+ Tool $A004
+ <<<
+~GetForeColor MAC
+ PHA
+_GetForeColor MAC
+ Tool $A104
+ <<<
+~SetBackColor MAC
+ PHW ]1
+_SetBackColor MAC
+ Tool $A204
+ <<<
+~GetBackColor MAC
+ PHA
+_GetBackColor MAC
+ Tool $A304
+ <<<
+~DrawChar MAC
+ PHW ]1
+_DrawChar MAC
+ Tool $A404
+ <<<
+~DrawString MAC
+ PHL ]1
+_DrawString MAC
+ Tool $A504
+ <<<
+~DrawCString MAC
+ PHL ]1
+_DrawCString MAC
+ Tool $A604
+ <<<
+~DrawText MAC
+ PHLW ]1;]2
+_DrawText MAC
+ Tool $A704
+ <<<
+~CharWidth MAC
+ P1SW ]1
+_CharWidth MAC
+ Tool $A804
+ <<<
+~StringWidth MAC
+ P1SL ]1
+_StringWidth MAC
+ Tool $A904
+ <<<
+~CStringWidth MAC
+ P1SL ]1
+_CStringWidth MAC
+ Tool $AA04
+ <<<
+~TextWidth MAC
+ P1SL ]1
+ PHW ]2
+_TextWidth MAC
+ Tool $AB04
+ <<<
+~CharBounds MAC
+ PHWL ]1;]2
+_CharBounds MAC
+ Tool $AC04
+ <<<
+~StringBounds MAC
+ PxL ]1;]2
+_StringBounds MAC
+ Tool $AD04
+ <<<
+~CStringBounds MAC
+ PxL ]1;]2
+_CStringBounds MAC
+ Tool $AE04
+ <<<
+~TextBounds MAC
+ PHLW ]1;]2
+ PHL ]3
+_TextBounds MAC
+ Tool $AF04
+ <<<
+~SetArcRot MAC
+ PHW ]1
+_SetArcRot MAC
+ Tool $B004
+ <<<
+~GetArcRot MAC
+ PHA
+_GetArcRot MAC
+ Tool $B104
+ <<<
+~SetSysFont MAC
+ PHL ]1
+_SetSysFont MAC
+ Tool $B204
+ <<<
+~GetSysFont MAC
+ PHS 2
+_GetSysFont MAC
+ Tool $B304
+ <<<
+~SetVisRgn MAC
+ PHL ]1
+_SetVisRgn MAC
+ Tool $B404
+ <<<
+~GetVisRgn MAC
+ PHL ]1
+_GetVisRgn MAC
+ Tool $B504
+ <<<
+~SetIntUse MAC
+ PHW ]1
+_SetIntUse MAC
+ Tool $B604
+ <<<
+~OpenPicture MAC
+ P2SL ]1
+_OpenPicture MAC
+ Tool $B704
+ <<<
+~PicComment MAC
+ PHW ]1
+ PHWL ]2;]3
+_PicComment MAC
+ Tool $B804
+ <<<
+_ClosePicture MAC
+ Tool $B904
+ <<<
+~DrawPicture MAC
+ PxL ]1;]2
+_DrawPicture MAC
+ Tool $BA04
+ <<<
+~KillPicture MAC
+ PHL ]1
+_KillPicture MAC
+ Tool $BB04
+ <<<
+~FramePoly MAC
+ PHL ]1
+_FramePoly MAC
+ Tool $BC04
+ <<<
+~PaintPoly MAC
+ PHL ]1
+_PaintPoly MAC
+ Tool $BD04
+ <<<
+~ErasePoly MAC
+ PHL ]1
+_ErasePoly MAC
+ Tool $BE04
+ <<<
+~InvertPoly MAC
+ PHL ]1
+_InvertPoly MAC
+ Tool $BF04
+ <<<
+~FillPoly MAC
+ PxL ]1;]2
+_FillPoly MAC
+ Tool $C004
+ <<<
+~OpenPoly MAC
+ PHS 2
+_OpenPoly MAC
+ Tool $C104
+ <<<
+_ClosePoly MAC
+ Tool $C204
+ <<<
+~KillPoly MAC
+ PHL ]1
+_KillPoly MAC
+ Tool $C304
+ <<<
+~OffsetPoly MAC
+ PHL ]1
+ PxW ]2;]3
+_OffsetPoly MAC
+ Tool $C404
+ <<<
+~MapPoly MAC
+ PxL ]1;]2;]3
+_MapPoly MAC
+ Tool $C504
+ <<<
+~SetClipHandle MAC
+ PHL ]1
+_SetClipHandle MAC
+ Tool $C604
+ <<<
+~GetClipHandle MAC
+ PHS 2
+_GetClipHandle MAC
+ Tool $C704
+ <<<
+~SetVisHandle MAC
+ PHL ]1
+_SetVisHandle MAC
+ Tool $C804
+ <<<
+~GetVisHandle MAC
+ PHS 2
+_GetVisHandle MAC
+ Tool $C904
+ <<<
+_InitCursor MAC
+ Tool $CA04
+ <<<
+~SetBufDims MAC
+ PxW ]1;]2;]3
+_SetBufDims MAC
+ Tool $CB04
+ <<<
+~ForceBufDims MAC
+ PxW ]1;]2;]3
+_ForceBufDims MAC
+ Tool $CC04
+ <<<
+~SaveBufDims MAC
+ PHL ]1
+_SaveBufDims MAC
+ Tool $CD04
+ <<<
+~RestoreBufDims MAC
+ PHL ]1
+_RestoreBufDims MAC
+ Tool $CE04
+ <<<
+~GetFGSize MAC
+ PHA
+_GetFGSize MAC
+ Tool $CF04
+ <<<
+~SetFontID MAC
+ PHL ]1
+_SetFontID MAC
+ Tool $D004
+ <<<
+~GetFontID MAC
+ PHS 2
+_GetFontID MAC
+ Tool $D104
+ <<<
+~SetTextSize MAC
+ PHW ]1
+_SetTextSize MAC
+ Tool $D204
+ <<<
+~GetTextSize MAC
+ PHA
+_GetTextSize MAC
+ Tool $D304
+ <<<
+~SetCharExtra MAC
+ PHL ]1
+_SetCharExtra MAC
+ Tool $D404
+ <<<
+~GetCharExtra MAC
+ PHS 2
+_GetCharExtra MAC
+ Tool $D504
+ <<<
+~PPToPort MAC
+ PxL ]1;]2
+ PxW ]3;]4;]5
+_PPToPort MAC
+ Tool $D604
+ <<<
+~InflateTextBuffer MAC
+ PxW ]1;]2
+_InflateTextBuffer MAC
+ Tool $D704
+ <<<
+~GetRomFont MAC
+ PHL ]1
+_GetRomFont MAC
+ Tool $D804
+ <<<
+~GetFontLore MAC
+ PHA
+ PHLW ]1;]2
+_GetFontLore MAC
+ Tool $D904
+ <<<
+_Get640Colors MAC
+ Tool $DA04
+ <<<
+_Set640Color MAC
+ Tool $DB04
+ <<<
+~qQDStartUp MAC
+ NextDP ]1;$300
+ PxW ]2;]3;]4
+ Tool $204
+ <<<
+
diff --git a/fta/Library/QdAux.Macs.s b/fta/Library/QdAux.Macs.s
new file mode 100644
index 0000000..1f3cf6a
--- /dev/null
+++ b/fta/Library/QdAux.Macs.s
@@ -0,0 +1,86 @@
+* QuickDraw Aux macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_QDAuxBootInit MAC
+ Tool $112
+ <<<
+_QDAuxStartUp MAC
+ Tool $212
+ <<<
+_QDAuxShutDown MAC
+ Tool $312
+ <<<
+~QDAuxVersion MAC
+ PHA
+_QDAuxVersion MAC
+ Tool $412
+ <<<
+_QDAuxReset MAC
+ Tool $512
+ <<<
+~QDAuxStatus MAC
+ PHA
+_QDAuxStatus MAC
+ Tool $612
+ <<<
+~CopyPixels MAC
+ PxL ]1;]2;]3;]4
+ PHWL ]5;]6
+_CopyPixels MAC
+ Tool $912
+ <<<
+_WaitCursor MAC
+ Tool $A12
+ <<<
+~DrawIcon MAC
+ PHLW ]1;]2
+ PxW ]3;]4
+_DrawIcon MAC
+ Tool $B12
+ <<<
+~SpecialRect MAC
+ PHL ]1
+ PxW ]2;]3
+_SpecialRect MAC
+ Tool $C12
+ <<<
+~SeedFill MAC
+ PxL ]1;]2;]3;]4
+ PxW ]5;]6;]7
+ PxL ]8;]9
+_SeedFill MAC
+ Tool $D12
+ <<<
+~CalcMask MAC
+ PxL ]1;]2;]3;]4
+ PHW ]5
+ PxL ]6;]7
+_CalcMask MAC
+ Tool $E12
+ <<<
+_GetSysIcon MAC
+ Tool $F12
+ <<<
+_PixelMap2Rgn MAC
+ Tool $1012
+ <<<
+_IBeamCursor MAC
+ Tool $1312
+ <<<
+_WhooshRect MAC
+ Tool $1412
+ <<<
+_DrawStringWidth MAC
+ Tool $1512
+ <<<
+_UseColorTable MAC
+ Tool $1612
+ <<<
+_RestoreColorTable MAC
+ Tool $1712
+ <<<
+
diff --git a/fta/Library/Resource.Macs.s b/fta/Library/Resource.Macs.s
new file mode 100644
index 0000000..50b8cc2
--- /dev/null
+++ b/fta/Library/Resource.Macs.s
@@ -0,0 +1,229 @@
+* Resource macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_ResourceBootInit MAC
+ Tool $11E
+ <<<
+~ResourceStartUp MAC
+ PHW ]1
+_ResourceStartUp MAC
+ Tool $21E
+ <<<
+_ResourceShutDown MAC
+ Tool $31E
+ <<<
+~ResourceVersion MAC
+ PHA
+_ResourceVersion MAC
+ Tool $41E
+ <<<
+_ResourceReset MAC
+ Tool $51E
+ <<<
+~ResourceStatus MAC
+ PHA
+_ResourceStatus MAC
+ Tool $61E
+ <<<
+~CreateResourceFile MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_CreateResourceFile MAC
+ Tool $91E
+ <<<
+~OpenResourceFile MAC
+ P1SW ]1
+ PxL ]2;]3
+_OpenResourceFile MAC
+ Tool $A1E
+ <<<
+~CloseResourceFile MAC
+ PHW ]1
+_CloseResourceFile MAC
+ Tool $B1E
+ <<<
+~AddResource MAC
+ PHLW ]1;]2
+ PHWL ]3;]4
+_AddResource MAC
+ Tool $C1E
+ <<<
+~UpdateResourceFile MAC
+ PHW ]1
+_UpdateResourceFile MAC
+ Tool $D1E
+ <<<
+~LoadResource MAC
+ P2SW ]1
+ PHL ]2
+_LoadResource MAC
+ Tool $E1E
+ <<<
+~RemoveResource MAC
+ PHWL ]1;]2
+_RemoveResource MAC
+ Tool $F1E
+ <<<
+~MarkResourceChange MAC
+ PxW ]1;]2
+ PHL ]3
+_MarkResourceChange MAC
+ Tool $101E
+ <<<
+~SetCurResourceFile MAC
+ PHW ]1
+_SetCurResourceFile MAC
+ Tool $111E
+ <<<
+~GetCurResourceFile MAC
+ PHA
+_GetCurResourceFile MAC
+ Tool $121E
+ <<<
+~SetCurResourceApp MAC
+ PHW ]1
+_SetCurResourceApp MAC
+ Tool $131E
+ <<<
+~GetCurResourceApp MAC
+ PHA
+_GetCurResourceApp MAC
+ Tool $141E
+ <<<
+~HomeResourceFile MAC
+ P1SW ]1
+ PHL ]2
+_HomeResourceFile MAC
+ Tool $151E
+ <<<
+~WriteResource MAC
+ PHWL ]1;]2
+_WriteResource MAC
+ Tool $161E
+ <<<
+~ReleaseResource MAC
+ PxW ]1;]2
+ PHL ]3
+_ReleaseResource MAC
+ Tool $171E
+ <<<
+~DetachResource MAC
+ PHWL ]1;]2
+_DetachResource MAC
+ Tool $181E
+ <<<
+~UniqueResourceID MAC
+ P2SW ]1
+ PHW ]2
+_UniqueResourceID MAC
+ Tool $191E
+ <<<
+~SetResourceID MAC
+ PHLW ]1;]2
+ PHL ]3
+_SetResourceID MAC
+ Tool $1A1E
+ <<<
+~GetResourceAttr MAC
+ P1SW ]1
+ PHL ]2
+_GetResourceAttr MAC
+ Tool $1B1E
+ <<<
+~SetResourceAttr MAC
+ PxW ]1;]2
+ PHL ]3
+_SetResourceAttr MAC
+ Tool $1C1E
+ <<<
+~GetResourceSize MAC
+ P2SW ]1
+ PHL ]2
+_GetResourceSize MAC
+ Tool $1D1E
+ <<<
+~MatchResourceHandle MAC
+ PxL ]1;]2
+_MatchResourceHandle MAC
+ Tool $1E1E
+ <<<
+~GetOpenFileRefNum MAC
+ P1SW ]1
+_GetOpenFileRefNum MAC
+ Tool $1F1E
+ <<<
+~CountTypes MAC
+ PHA
+_CountTypes MAC
+ Tool $201E
+ <<<
+~GetIndType MAC
+ P1SW ]1
+_GetIndType MAC
+ Tool $211E
+ <<<
+~CountResources MAC
+ P2SW ]1
+_CountResources MAC
+ Tool $221E
+ <<<
+~GetIndResource MAC
+ P2SW ]1
+ PHL ]2
+_GetIndResource MAC
+ Tool $231E
+ <<<
+~SetResourceLoad MAC
+ P1SW ]1
+_SetResourceLoad MAC
+ Tool $241E
+ <<<
+~SetResourceFileDepth MAC
+ P1SW ]1
+_SetResourceFileDepth MAC
+ Tool $251E
+ <<<
+~GetMapHandle MAC
+ P2SW ]1
+_GetMapHandle MAC
+ Tool $261E
+ <<<
+~LoadAbsResource MAC
+ P2SL ]1
+ PHL ]2
+ PHWL ]3;]4
+_LoadAbsResource MAC
+ Tool $271E
+ <<<
+~ResourceConverter MAC
+ PHL ]1
+ PxW ]2;]3
+_ResourceConverter MAC
+ Tool $281E
+ <<<
+_LoadResource2 MAC
+ Tool $291E
+ <<<
+_RMFindeNamedResource MAC
+ Tool $2A1E
+ <<<
+_RMGetResourceName MAC
+ Tool $2B1E
+ <<<
+_RMLoadNamedResource MAC
+ Tool $2C1E
+ <<<
+_RMSetResourceName MAC
+ Tool $2D1E
+ <<<
+_OpenResourceFileByID MAC
+ Tool $2E1E
+ <<<
+_CompactResourceFile MAC
+ Tool $2F1E
+ <<<
+
diff --git a/fta/Library/Sane.Macs.s b/fta/Library/Sane.Macs.s
new file mode 100644
index 0000000..75a807e
--- /dev/null
+++ b/fta/Library/Sane.Macs.s
@@ -0,0 +1,604 @@
+* Sane Toolset macros.
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_SANEBootInit MAC
+ Tool $10A
+ <<<
+~SANEStartUp MAC
+ PHW ]1
+_SANEStartUp MAC
+ Tool $20A
+ <<<
+_SANEShutDown MAC
+ Tool $30A
+ <<<
+~SANEVersion MAC
+ PHA
+_SANEVersion MAC
+ Tool $40A
+ <<<
+_SANEReset MAC
+ Tool $50A
+ <<<
+~SANEStatus MAC
+ PHA
+_SANEStatus MAC
+ Tool $60A
+ <<<
+_SANEFP816 MAC
+ Tool $90A
+ <<<
+_SANEDecStr816 MAC
+ Tool $A0A
+ <<<
+_SANEElems816 MAC
+ Tool $B0A
+ <<<
+~qSANEStartUp MAC
+ NextDP ]1;$100
+ Tool $20A
+ <<<
+* Auxiliary macros
+
+FOPRF MAC ;call FP
+ PEA ]1
+ _SANEFP816
+ <<<
+FOPRD MAC ;call DecStr
+ PEA ]1
+ _SANEDecStr816
+ <<<
+FOPRE MAC ;call Elems
+ PEA ]1
+ _SANEElems816
+ <<<
+* Addition
+
+FADDX MAC
+ FOPRF 0
+ <<<
+FADDD MAC
+ FOPRF $100
+ <<<
+FADDS MAC
+ FOPRF $200
+ <<<
+FADDC MAC
+ FOPRF $500
+ <<<
+FADDI MAC
+ FOPRF $400
+ <<<
+FADDL MAC
+ FOPRF $300
+ <<<
+* Subtraction
+
+FSUBX MAC
+ FOPRF $002
+ <<<
+FSUBD MAC
+ FOPRF $102
+ <<<
+FSUBS MAC
+ FOPRF $202
+ <<<
+FSUBC MAC
+ FOPRF $502
+ <<<
+FSUBI MAC
+ FOPRF $402
+ <<<
+FSUBL MAC
+ FOPRF $302
+ <<<
+* Multiplication
+
+FMULX MAC
+ FOPRF $004
+ <<<
+FMULD MAC
+ FOPRF $104
+ <<<
+FMULS MAC
+ FOPRF $204
+ <<<
+FMULC MAC
+ FOPRF $504
+ <<<
+FMULI MAC
+ FOPRF $404
+ <<<
+FMULL MAC
+ FOPRF $304
+ <<<
+* Division
+
+FDIVX MAC
+ FOPRF $006
+ <<<
+FDIVD MAC
+ FOPRF $106
+ <<<
+FDIVS MAC
+ FOPRF $206
+ <<<
+FDIVC MAC
+ FOPRF $506
+ <<<
+FDIVI MAC
+ FOPRF $406
+ <<<
+FDIVL MAC
+ FOPRF $306
+ <<<
+* Square root
+
+FSQRTX MAC
+ FOPRF $12
+ <<<
+
+* Round to integer, according to the current rounding mode
+
+FRINTX MAC
+ FOPRF $14
+ <<<
+
+* Truncate to integer, using round toward zero.
+
+FTINTX MAC
+ FOPRF $16
+ <<<
+* Remainder
+
+FREMX MAC
+ FOPRF $00C
+ <<<
+FREMD MAC
+ FOPRF $10C
+ <<<
+FREMS MAC
+ FOPRF $20C
+ <<<
+FREMC MAC
+ FOPRF $50C
+ <<<
+FREMI MAC
+ FOPRF $40C
+ <<<
+FREML MAC
+ FOPRF $30C
+ <<<
+* Logb
+
+FLOGBX MAC
+ FOPRF $1A
+ <<<
+* Scalb
+
+FSCALBX MAC
+ FOPRF $18
+ <<<
+* Copy-sign
+
+FCPYSGNX MAC
+ FOPRF $011
+ <<<
+FCPYSGND MAC
+ FOPRF $111
+ <<<
+FCPYSGNS MAC
+ FOPRF $211
+ <<<
+FCPYSGNC MAC
+ FOPRF $511
+ <<<
+FCPYSGNI MAC
+ FOPRF $411
+ <<<
+FCPYSGNL MAC
+ FOPRF $311
+ <<<
+* Negate
+
+FNEGX MAC
+ FOPRF $0D
+ <<<
+
+* Absolute value
+
+FABSX MAC
+ FOPRF $0F
+ <<<
+
+* Next-after. NOTE: both operands are of the
+* the same format, as specified by the usual suffix.
+
+FNEXTS MAC
+ FOPRF $21E
+ <<<
+FNEXTD MAC
+ FOPRF $11E
+ <<<
+FNEXTX MAC
+ FOPRF $01E
+ <<<
+
+* Conversion to extended
+
+FX2X MAC
+ FOPRF $00E
+ <<<
+FD2X MAC
+ FOPRF $10E
+ <<<
+FS2X MAC
+ FOPRF $20E
+ <<<
+
+* 16-bit integer, by address
+
+FI2X MAC
+ FOPRF $40E
+ <<<
+
+* 32-bit integer, by address
+
+FL2X MAC
+ FOPRF $30E
+ <<<
+FC2X MAC
+ FOPRF $50E
+ <<<
+
+* Conversion from extended
+
+FX2D MAC
+ FOPRF $110
+ <<<
+FX2S MAC
+ FOPRF $210
+ <<<
+FX2I MAC
+ FOPRF $410
+ <<<
+FX2L MAC
+ FOPRF $310
+ <<<
+FX2C MAC
+ FOPRF $510
+ <<<
+
+* Binary to decimal conversion
+
+FX2DEC MAC
+ FOPRF $00B
+ <<<
+FD2DEC MAC
+ FOPRF $10B
+ <<<
+FS2DEC MAC
+ FOPRF $20B
+ <<<
+FC2DEC MAC
+ FOPRF $50B
+ <<<
+FI2DEC MAC
+ FOPRF $40B
+ <<<
+FL2DEC MAC
+ FOPRF $30B
+ <<<
+
+* Decimal to binary conversion
+
+FDEC2X MAC
+ FOPRF $009
+ <<<
+FDEC2D MAC
+ FOPRF $109
+ <<<
+FDEC2S MAC
+ FOPRF $209
+ <<<
+FDEC2C MAC
+ FOPRF $509
+ <<<
+FDEC2I MAC
+ FOPRF $409
+ <<<
+FDEC2L MAC
+ FOPRF $309
+ <<<
+
+* Compare, not signaling invalid on unordered
+
+FCMPX MAC
+ FOPRF $008
+ <<<
+FCMPD MAC
+ FOPRF $108
+ <<<
+FCMPS MAC
+ FOPRF $208
+ <<<
+FCMPC MAC
+ FOPRF $508
+ <<<
+FCMPI MAC
+ FOPRF $408
+ <<<
+FCMPL MAC
+ FOPRF $308
+ <<<
+
+* Compare, signaling invalid on unordered
+
+FCPXX MAC
+ FOPRF $00A
+ <<<
+FCPXD MAC
+ FOPRF $10A
+ <<<
+FCPXS MAC
+ FOPRF $20A
+ <<<
+FCPXC MAC
+ FOPRF $50A
+ <<<
+FCPXI MAC
+ FOPRF $40A
+ <<<
+FCPXL MAC
+ FOPRF $30A
+ <<<
+
+* The following macros define a set of so-called floating
+* branches. They presume that the appropriate compare
+* operation, macro FCMPz or FCPXz, precedes.
+
+FBEQ MAC
+ BEQ ]1
+ <<<
+FBLT MAC ;less
+ BMI ]1
+ <<<
+FBLE MAC ;less or equal
+ BMI ]1
+ BEQ ]1
+ <<<
+FBGT MAC ;greater
+ BVS ]1
+ <<<
+FBGE MAC ;greater or equal
+ BVS ]1
+ BEQ ]1
+ <<<
+FBULT MAC ;less or unordered
+ BMI ]1
+ BVS *+4
+ BNE ]1
+ <<<
+FBULE MAC ;unordered, less, or equal
+ BMI ]1
+ BEQ ]1
+ BVC ]1
+ <<<
+FBUGT MAC ;unordered or greater
+ BVS ]1
+ BMI *+4
+ BNE ]1
+ <<<
+FBUGE MAC ;unordered, greater, or equal
+ BVS ]1
+ BEQ ]1
+ BPL ]1
+ <<<
+FBU MAC ;unordered
+ BVS *+6
+ BMI *+4
+ BNE ]1
+ <<<
+FBO MAC ;ordered
+ BMI ]1
+ BVS ]1
+ BEQ ]1
+ <<<
+FBNE MAC ;not equal
+ BMI ]1
+ BVS ]1
+ BNE ]1
+ <<<
+FBUE MAC ;unordered, equal
+ BEQ ]1
+ BMI *+4
+ BVC ]1
+ <<<
+FBLG MAC ;less or greater
+ BMI ]1
+ BVS ]1
+ <<<
+
+FCLASSS MAC
+ FOPRF $21C
+ <<<
+FCLASSD MAC
+ FOPRF $11C
+ <<<
+FCLASSX MAC
+ FOPRF $01C
+ <<<
+FCLASSC MAC
+ FOPRF $51C
+ <<<
+FCLASSI MAC
+ FOPRF $41C
+ <<<
+FCLASSL MAC
+ FOPRF $31C
+ <<<
+
+* The following macros provide branches based on the
+* the result of a FCLASSz macro.
+
+FBSNAN MAC ;signaling NaN
+ TXA
+ ASL
+ CMP #2*$FC
+ BEQ ]1
+ <<<
+FBQNAN MAC ;quiet NaN
+ TXA
+ ASL
+ CMP #2*$FD
+ BEQ ]1
+ <<<
+FBINF MAC ;infinite
+ TXA
+ ASL
+ CMP #2*$FE
+ BEQ ]1
+ <<<
+FBZERO MAC ;zero
+ TXA
+ ASL
+ CMP #2*$FF
+ BEQ ]1
+ <<<
+FBNORM MAC ;normal
+ TXA
+ ASL
+ BEQ ]1
+ <<<
+FBDENORM MAC ;denormal
+ TXA
+ ASL
+ CMP #2*1
+ BEQ ]1
+ <<<
+FBNZENUM MAC ;non-zero num (norm or denorm)
+ TXA
+ XBA
+ ASL
+ BCC ]1
+ <<<
+FBNUM MAC ;number (zero, norm or denorm)
+ TXA
+ INC A
+ XBA
+ ASL
+ BCC ]1
+ <<<
+FBMINUS MAC ;minus sign
+ BMI ]1
+ <<<
+FBPLUS MAC ;plus sign
+ BPL ]1
+ <<<
+
+* Get and set environment
+
+FGETENV MAC
+ FOPRF $03
+ <<<
+FSETENV MAC
+ FOPRF $01
+ <<<
+
+* Test and set exception
+
+FTESTXCP MAC
+ FOPRF $1B
+ <<<
+FSETXCP MAC
+ FOPRF $15
+ <<<
+
+* Procedure entry and exit
+
+FPROCENTRY MAC
+ FOPRF $17
+ <<<
+FPROCEXIT MAC
+ FOPRF $19
+ <<<
+
+* Get and set halt vector
+
+FGETHV MAC
+ FOPRF $07
+ <<<
+FSETHV MAC
+ FOPRF $05
+ <<<
+
+* Elementary function macros
+
+FLNX MAC ;natural (base-e) log
+ FOPRE $00
+ <<<
+FLOG2X MAC ;base-2 log
+ FOPRE $02
+ <<<
+FLN1X MAC ;ln (1 + x)
+ FOPRE $04
+ <<<
+FLOG21X MAC ;log2 (1 +x)
+ FOPRE $06
+ <<<
+FEXPX MAC ;base-e exponential
+ FOPRE $08
+ <<<
+FEXP2X MAC ;base-2 exponential
+ FOPRE $0A
+ <<<
+FEXP1X MAC ;exp (x) - 1
+ FOPRE $0C
+ <<<
+FEXP21X MAC ;exp2 (x) - 1
+ FOPRE $0E
+ <<<
+FXPWRI MAC ;integer exponential
+ FOPRE $10
+ <<<
+FXPWRY MAC ;general exponential
+ FOPRE $12
+ <<<
+FCOMPOUND MAC ;compound
+ FOPRE $14
+ <<<
+FANNUITY MAC ;annuity
+ FOPRE $16
+ <<<
+FATANX MAC ;arctangent
+ FOPRE $18
+ <<<
+FSINX MAC ;sine
+ FOPRE $1A
+ <<<
+FCOSX MAC ;cosine
+ FOPRE $1C
+ <<<
+FTANX MAC ;tangent
+ FOPRE $1E
+ <<<
+FRANDX MAC ;random number generator
+ FOPRE $20
+ <<<
+
+* Scanner and formatter function macros
+
+FPSTR2DEC MAC ;pascal string to decimal record
+ FOPRD 0
+ <<<
+FDEC2STR MAC ;decimal record to pascal string
+ FOPRD 1
+ <<<
+FCSTR2DEC MAC ;C string to decimal record
+ FOPRD 2
+ <<<
+
diff --git a/fta/Library/Sch.Macs.s b/fta/Library/Sch.Macs.s
new file mode 100644
index 0000000..c0cbbd7
--- /dev/null
+++ b/fta/Library/Sch.Macs.s
@@ -0,0 +1,38 @@
+* Scheduler macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_SchBootInit MAC
+ Tool $107
+ <<<
+_SchStartUp MAC
+ Tool $207
+ <<<
+_SchShutDown MAC
+ Tool $307
+ <<<
+~SchVersion MAC
+ PHA
+_SchVersion MAC
+ Tool $407
+ <<<
+_SchReset MAC
+ Tool $507
+ <<<
+~SchStatus MAC
+ PHA
+_SchStatus MAC
+ Tool $607
+ <<<
+~SchAddTask MAC
+ P1SL ]1
+_SchAddTask MAC
+ Tool $907
+ <<<
+_SchFlush MAC
+ Tool $A07
+ <<<
+
diff --git a/fta/Library/Scrap.Macs.s b/fta/Library/Scrap.Macs.s
new file mode 100644
index 0000000..180166a
--- /dev/null
+++ b/fta/Library/Scrap.Macs.s
@@ -0,0 +1,86 @@
+* Scrap manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_ScrapBootInit MAC
+ Tool $116
+ <<<
+_ScrapStartUp MAC
+ Tool $216
+ <<<
+_ScrapShutDown MAC
+ Tool $316
+ <<<
+~ScrapVersion MAC
+ PHA
+_ScrapVersion MAC
+ Tool $416
+ <<<
+_ScrapReset MAC
+ Tool $516
+ <<<
+~ScrapStatus MAC
+ PHA
+_ScrapStatus MAC
+ Tool $616
+ <<<
+_UnloadScrap MAC
+ Tool $916
+ <<<
+_LoadScrap MAC
+ Tool $A16
+ <<<
+_ZeroScrap MAC
+ Tool $B16
+ <<<
+~PutScrap MAC
+ PHL ]1
+ PHWL ]2;]3
+_PutScrap MAC
+ Tool $C16
+ <<<
+~GetScrap MAC
+ PHLW ]1;]2
+_GetScrap MAC
+ Tool $D16
+ <<<
+~GetScrapHandle MAC
+ P2SW ]1
+_GetScrapHandle MAC
+ Tool $E16
+ <<<
+~GetScrapSize MAC
+ P2SW ]1
+_GetScrapSize MAC
+ Tool $F16
+ <<<
+~GetScrapPath MAC
+ PHS 2
+_GetScrapPath MAC
+ Tool $1016
+ <<<
+~SetScrapPath MAC
+ PHL ]1
+_SetScrapPath MAC
+ Tool $1116
+ <<<
+~GetScrapCount MAC
+ PHA
+_GetScrapCount MAC
+ Tool $1216
+ <<<
+~GetScrapState MAC
+ PHA
+_GetScrapState MAC
+ Tool $1316
+ <<<
+_GetIndScrap MAC
+ Tool $1416
+ <<<
+_ShowClipboard MAC
+ Tool $1516
+ <<<
+
diff --git a/fta/Library/Sound.Macs.s b/fta/Library/Sound.Macs.s
new file mode 100644
index 0000000..13f1323
--- /dev/null
+++ b/fta/Library/Sound.Macs.s
@@ -0,0 +1,111 @@
+* Sound manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_SoundBootInit MAC
+ Tool $108
+ <<<
+~SoundStartUp MAC
+ PHW ]1
+_SoundStartUp MAC
+ Tool $208
+ <<<
+_SoundShutDown MAC
+ Tool $308
+ <<<
+~SoundVersion MAC
+ PHA
+_SoundVersion MAC
+ Tool $408
+ <<<
+_SoundReset MAC
+ Tool $508
+ <<<
+~SoundToolStatus MAC
+ PHA
+_SoundToolStatus MAC
+ Tool $608
+ <<<
+~WriteRamBlock MAC
+ PHL ]1
+ PxW ]2;]3
+_WriteRamBlock MAC
+ Tool $908
+ <<<
+~ReadRamBlock MAC
+ PHL ]1
+ PxW ]2;]3
+_ReadRamBlock MAC
+ Tool $A08
+ <<<
+~GetTableAddress MAC
+ PHS 2
+_GetTableAddress MAC
+ Tool $B08
+ <<<
+~GetSoundVolume MAC
+ P1SW ]1
+_GetSoundVolume MAC
+ Tool $C08
+ <<<
+~SetSoundVolume MAC
+ PxW ]1;]2
+_SetSoundVolume MAC
+ Tool $D08
+ <<<
+~FFStartSound MAC
+ PHWL ]1;]2
+_FFStartSound MAC
+ Tool $E08
+ <<<
+~FFStopSound MAC
+ PHW ]1
+_FFStopSound MAC
+ Tool $F08
+ <<<
+~FFSoundStatus MAC
+ PHA
+_FFSoundStatus MAC
+ Tool $1008
+ <<<
+~FFGeneratorStatus MAC
+ P1SW ]1
+_FFGeneratorStatus MAC
+ Tool $1108
+ <<<
+~SetSoundMIRQV MAC
+ PHL ]1
+_SetSoundMIRQV MAC
+ Tool $1208
+ <<<
+~SetUserSoundIRQV MAC
+ P2SL ]1
+_SetUserSoundIRQV MAC
+ Tool $1308
+ <<<
+~FFSoundDoneStatus MAC
+ P1SW ]1
+_FFSoundDoneStatus MAC
+ Tool $1408
+ <<<
+_FFSetUpSound MAC
+ Tool $1508
+ <<<
+_FFStartPlaying MAC
+ Tool $1608
+ <<<
+_SetDocReg MAC
+ Tool $1708
+ <<<
+_ReadDocReg MAC
+ Tool $1808
+ <<<
+
+~qSoundStartUp MAC
+ NextDP ]1;$100
+ Tool $208
+ <<<
+
diff --git a/fta/Library/Speech.Macs.s b/fta/Library/Speech.Macs.s
new file mode 100644
index 0000000..8ac5741
--- /dev/null
+++ b/fta/Library/Speech.Macs.s
@@ -0,0 +1,47 @@
+*
+* Speech Toolkit tool calls
+*
+
+_SpeechBootInit mac
+ Tool $0134
+ <<<
+_SpeechStartUp mac
+ Tool $0234
+ <<<
+_SpeechShutDown mac
+ Tool $0334
+ <<<
+_SpeechVersion mac
+ Tool $0434
+ <<<
+_SpeechReset mac
+ Tool $0534
+ <<<
+_SpeechStatus mac
+ Tool $0634
+ <<<
+_Parse mac
+ Tool $0934
+ <<<
+_DictInsert mac
+ Tool $0a34
+ <<<
+_DictDelete mac
+ Tool $0b34
+ <<<
+_DictDump mac
+ Tool $0c34
+ <<<
+_SetSayGlobals mac
+ Tool $0d34
+ <<<
+_DictInit mac
+ Tool $0e34
+ <<<
+_Say mac
+ Tool $0f34
+ <<<
+_Activate mac
+ Tool $1034
+ <<<
+
diff --git a/fta/Library/Std.Macs.s b/fta/Library/Std.Macs.s
new file mode 100644
index 0000000..f5f22fd
--- /dev/null
+++ b/fta/Library/Std.Macs.s
@@ -0,0 +1,108 @@
+* Standard File Operations macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_SFBootInit MAC
+ Tool $117
+ <<<
+~SFStartUp MAC
+ PxW ]1;]2
+_SFStartUp MAC
+ Tool $217
+ <<<
+_SFShutDown MAC
+ Tool $317
+ <<<
+~SFVersion MAC
+ PHA
+_SFVersion MAC
+ Tool $417
+ <<<
+_SFReset MAC
+ Tool $517
+ <<<
+~SFStatus MAC
+ PHA
+_SFStatus MAC
+ Tool $617
+ <<<
+~SFGetFile MAC
+ PxW ]1;]2
+ PxL ]3;]4;]5;]6
+_SFGetFile MAC
+ Tool $917
+ <<<
+~SFPutFile MAC
+ PxW ]1;]2
+ PxL ]3;]4
+ PHWL ]5;]6
+_SFPutFile MAC
+ Tool $A17
+ <<<
+~SFPGetFile MAC
+ PxW ]1;]2
+ PxL ]3;]4;]5;]6
+ PxL ]7;]8
+_SFPGetFile MAC
+ Tool $B17
+ <<<
+~SFPPutFile MAC
+ PxW ]1;]2
+ PxL ]3;]4
+ PHWL ]5;]6
+ PxL ]7;]8
+_SFPPutFile MAC
+ Tool $C17
+ <<<
+~SFAllCaps MAC
+ PHW ]1
+_SFAllCaps MAC
+ Tool $D17
+ <<<
+~SFGetFile2 MAC
+ PxW ]1;]2;]3
+ PxL ]4;]5;]6;]7
+_SFGetFile2 MAC
+ Tool $E17
+ <<<
+~SFPutFile2 MAC
+ PxW ]1;]2;]3
+ PHLW ]4;]5
+ PxL ]6;]7
+_SFPutFile2 MAC
+ Tool $F17
+ <<<
+_SFPGetFile2 MAC
+ Tool $1017
+ <<<
+_SFPPutFile2 MAC
+ Tool $1117
+ <<<
+~SFShowInvisible MAC
+ P1SW ]1
+_SFShowInvisible MAC
+ Tool $1217
+ <<<
+~SFReScan MAC
+ PxL ]1;]2
+_SFReScan MAC
+ Tool $1317
+ <<<
+~SFMultiGet2 MAC
+ PxW ]1;]2;]3
+ PxL ]4;]5;]6;]7
+_SFMultiGet2 MAC
+ Tool $1417
+ <<<
+_SFPMultiGet2 MAC
+ Tool $1517
+ <<<
+~qSFStartUp MAC
+ PHW ]1
+ NextDP ]2;$100
+ Tool $217
+ <<<
+
diff --git a/fta/Library/Text.Macs.s b/fta/Library/Text.Macs.s
new file mode 100644
index 0000000..29e2f00
--- /dev/null
+++ b/fta/Library/Text.Macs.s
@@ -0,0 +1,184 @@
+* Text tool macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_TextBootInit MAC
+ Tool $10C
+ <<<
+_TextStartUp MAC
+ Tool $20C
+ <<<
+_TextShutDown MAC
+ Tool $30C
+ <<<
+~TextVersion MAC
+ PHA
+_TextVersion MAC
+ Tool $40C
+ <<<
+_TextReset MAC
+ Tool $50C
+ <<<
+~TextStatus MAC
+ PHA
+_TextStatus MAC
+ Tool $60C
+ <<<
+~SetInGlobals MAC
+ PxW ]1;]2
+_SetInGlobals MAC
+ Tool $90C
+ <<<
+~SetOutGlobals MAC
+ PxW ]1;]2
+_SetOutGlobals MAC
+ Tool $A0C
+ <<<
+~SetErrGlobals MAC
+ PxW ]1;]2
+_SetErrGlobals MAC
+ Tool $B0C
+ <<<
+~GetInGlobals MAC
+ PHS 2
+_GetInGlobals MAC
+ Tool $C0C
+ <<<
+~GetOutGlobals MAC
+ PHS 2
+_GetOutGlobals MAC
+ Tool $D0C
+ <<<
+~GetErrGlobals MAC
+ PHS 2
+_GetErrGlobals MAC
+ Tool $E0C
+ <<<
+~SetInputDevice MAC
+ PHWL ]1;]2
+_SetInputDevice MAC
+ Tool $F0C
+ <<<
+~SetOutputDevice MAC
+ PHWL ]1;]2
+_SetOutputDevice MAC
+ Tool $100C
+ <<<
+~SetErrorDevice MAC
+ PHWL ]1;]2
+_SetErrorDevice MAC
+ Tool $110C
+ <<<
+~GetInputDevice MAC
+ PHS 3
+_GetInputDevice MAC
+ Tool $120C
+ <<<
+~GetOutputDevice MAC
+ PHS 3
+_GetOutputDevice MAC
+ Tool $130C
+ <<<
+~GetErrorDevice MAC
+ PHS 3
+_GetErrorDevice MAC
+ Tool $140C
+ <<<
+~InitTextDev MAC
+ PHW ]1
+_InitTextDev MAC
+ Tool $150C
+ <<<
+~CtlTextDev MAC
+ PxW ]1;]2
+_CtlTextDev MAC
+ Tool $160C
+ <<<
+~StatusTextDev MAC
+ PxW ]1;]2
+_StatusTextDev MAC
+ Tool $170C
+ <<<
+~WriteChar MAC
+ PHW ]1
+_WriteChar MAC
+ Tool $180C
+ <<<
+~ErrWriteChar MAC
+ PHW ]1
+_ErrWriteChar MAC
+ Tool $190C
+ <<<
+~WriteLine MAC
+ PHL ]1
+_WriteLine MAC
+ Tool $1A0C
+ <<<
+~ErrWriteLine MAC
+ PHL ]1
+_ErrWriteLine MAC
+ Tool $1B0C
+ <<<
+~WriteString MAC
+ PHL ]1
+_WriteString MAC
+ Tool $1C0C
+ <<<
+~ErrWriteString MAC
+ PHL ]1
+_ErrWriteString MAC
+ Tool $1D0C
+ <<<
+~TextWriteBlock MAC
+ PHL ]1
+ PxW ]2;]3
+_TextWriteBlock MAC
+ Tool $1E0C
+ <<<
+~ErrWriteBlock MAC
+ PHL ]1
+ PxW ]2;]3
+_ErrWriteBlock MAC
+ Tool $1F0C
+ <<<
+~WriteCString MAC
+ PHL ]1
+_WriteCString MAC
+ Tool $200C
+ <<<
+~ErrWriteCString MAC
+ PHL ]1
+_ErrWriteCString MAC
+ Tool $210C
+ <<<
+~ReadChar MAC
+ P1SW ]1
+_ReadChar MAC
+ Tool $220C
+ <<<
+~TextReadBlock MAC
+ PHL ]1
+ PxW ]2;]3;]4
+_TextReadBlock MAC
+ Tool $230C
+ <<<
+~ReadLine MAC
+ P1SL ]1
+ PxW ]2;]3;]4
+_ReadLine MAC
+ Tool $240C
+ <<<
+
+PrintLn MAC ; print a line of text
+ pea ^text
+ pea text
+ ldx #$1A0C
+ jsl $E10000
+ bra cont
+text str ]1
+cont
+ <<<
+
diff --git a/fta/Library/TextEdit.Macs.s b/fta/Library/TextEdit.Macs.s
new file mode 100644
index 0000000..f5d369b
--- /dev/null
+++ b/fta/Library/TextEdit.Macs.s
@@ -0,0 +1,199 @@
+* TextEdit macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_TEBootInit MAC
+ Tool $122
+ <<<
+~TEStartUp MAC
+ PxW ]1;]2
+_TEStartUp MAC
+ Tool $222
+ <<<
+_TEShutDown MAC
+ Tool $322
+ <<<
+~TEVersion MAC
+ PHA
+_TEVersion MAC
+ Tool $422
+ <<<
+_TEReset MAC
+ Tool $522
+ <<<
+~TEStatus MAC
+ PHA
+_TEStatus MAC
+ Tool $622
+ <<<
+~TENew MAC
+ P2SL ]1
+_TENew MAC
+ Tool $922
+ <<<
+~TEKill MAC
+ PHL ]1
+_TEKill MAC
+ Tool $A22
+ <<<
+~TESetText MAC
+ PHWL ]1;]2
+ PHLW ]3;]4
+ PxL ]5;]6
+_TESetText MAC
+ Tool $B22
+ <<<
+~TEGetText MAC
+ PHS 2
+ PHWL ]1;]2
+ PHLW ]3;]4
+ PxL ]5;]6
+_TEGetText MAC
+ Tool $C22
+ <<<
+~TEGetTextInfo MAC
+ PHLW ]1;]2
+ PHL ]3
+_TEGetTextInfo MAC
+ Tool $D22
+ <<<
+~TEIdle MAC
+ PHL ]1
+_TEIdle MAC
+ Tool $E22
+ <<<
+~TEActivate MAC
+ PHL ]1
+_TEActivate MAC
+ Tool $F22
+ <<<
+~TEDeactivate MAC
+ PHL ]1
+_TEDeactivate MAC
+ Tool $1022
+ <<<
+~TEClick MAC
+ PxL ]1;]2
+_TEClick MAC
+ Tool $1122
+ <<<
+~TEUpdate MAC
+ PHL ]1
+_TEUpdate MAC
+ Tool $1222
+ <<<
+~TEPaintText MAC
+ P2SL ]1
+ PxL ]2;]3
+ PHWL ]4;]5
+_TEPaintText MAC
+ Tool $1322
+ <<<
+~TEKey MAC
+ PxL ]1;]2
+_TEKey MAC
+ Tool $1422
+ <<<
+~TECut MAC
+ PHL ]1
+_TECut MAC
+ Tool $1622
+ <<<
+~TECopy MAC
+ PHL ]1
+_TECopy MAC
+ Tool $1722
+ <<<
+~TEPaste MAC
+ PHL ]1
+_TEPaste MAC
+ Tool $1822
+ <<<
+~TEClear MAC
+ PHL ]1
+_TEClear MAC
+ Tool $1922
+ <<<
+~TEInsert MAC
+ PHWL ]1;]2
+ PHLW ]3;]4
+ PxL ]5;]6
+_TEInsert MAC
+ Tool $1A22
+ <<<
+~TEReplace MAC
+ PHWL ]1;]2
+ PHLW ]3;]4
+ PxL ]5;]6
+_TEReplace MAC
+ Tool $1B22
+ <<<
+~TEGetSelection MAC
+ PxL ]1;]2;]3
+_TEGetSelection MAC
+ Tool $1C22
+ <<<
+~TESetSelection MAC
+ PxL ]1;]2;]3
+_TESetSelection MAC
+ Tool $1D22
+ <<<
+~TEGetSelectionStyle MAC
+ PHA
+ PxL ]1;]2;]3
+_TEGetSelectionStyle MAC
+ Tool $1E22
+ <<<
+~TEStyleChange MAC
+ PHW ]1
+ PxL ]2;]3
+_TEStyleChange MAC
+ Tool $1F22
+ <<<
+~TEOffsetToPoint MAC
+ PxL ]1;]2;]3;]4
+_TEOffsetToPoint MAC
+ Tool $2022
+ <<<
+~TEPointToOffset MAC
+ PHS 2
+ PxL ]1;]2;]3
+_TEPointToOffset MAC
+ Tool $2122
+ <<<
+~TEGetDefProc MAC
+ PHS 2
+_TEGetDefProc MAC
+ Tool $2222
+ <<<
+~TEGetRuler MAC
+ PHWL ]1;]2
+ PHL ]3
+_TEGetRuler MAC
+ Tool $2322
+ <<<
+~TESetRuler MAC
+ PHW ]1
+ PxL ]2;]3
+_TESetRuler MAC
+ Tool $2422
+ <<<
+~TEScroll MAC
+ PHW ]1
+ PxL ]2;]3;]4
+_TEScroll MAC
+ Tool $2522
+ <<<
+_TEGetInternalProc MAC
+ Tool $2622
+ <<<
+_TEGetLastError MAC
+ Tool $2722
+ <<<
+_TECompactRecord MAC
+ Tool $2822
+ <<<
+
diff --git a/fta/Library/Tool219.Macs.s b/fta/Library/Tool219.Macs.s
new file mode 100644
index 0000000..ceb4af4
--- /dev/null
+++ b/fta/Library/Tool219.Macs.s
@@ -0,0 +1,86 @@
+* SoundSmith Tool
+* FTA, 1991
+
+~STStartUp mac
+ PHW ]1
+_STStartUp mac
+ Tool $02DB
+ <<<
+_STShutDown mac
+ Tool $03DB
+ <<<
+~STVersion mac
+ phd ; WordResult
+_STVersion mac
+ Tool $04DB
+ <<<
+_STReset mac
+ Tool $05DB
+ <<<
+~STStatus mac
+ phd ; WordResult
+STStatus mac
+ Tool $06DB
+ <<<
+~STLoadOneMusic mac
+ PHL ]1
+_STLoadOneMusic mac
+ Tool $09DB
+ <<<
+~STPlayMusic mac
+ PHW ]1
+_STPlayMusic mac
+ Tool $0ADB
+ <<<
+_STStopMusic mac
+ Tool $0BDB
+ <<<
+~STGetEOfMusic mac
+ phd ; WordResult
+_STGetEOfMusic mac
+ Tool $0CDB
+ <<<
+~STAddToBatch mac
+ PHLW ]1;]2
+_STAddToBatch mac
+ Toll $0DDB
+ <<<
+~STSelectBatch mac
+ PHW ]1
+_STSelectBatch mac
+ Tool $0EDB
+ <<<
+~STKillBatch mac
+ PHW ]1
+_STKillBatch mac
+ Tool $0FDB
+ <<<
+~STGetPlayingMusic mac
+ phd ; WordResult
+_STGetPlayingMusic mac
+ Tool $10DB
+ <<<
+~STPlayBatch mac
+ PHL ]1
+_STPlayBatch mac
+ Tool $11DB
+ <<<
+~STGetTrackVu mac
+ phd ;Long
+ phd ; Result
+_STGetTrackVu mac
+ Tool $12DB
+ <<<
+_STPauseMusic mac
+ Tool $13DB
+ <<<
+_STContinueMusic mac
+ Tool $14DB
+ <<<
+_STinternal15 mac
+ Tool $15DB
+ <<<
+_STinternal16 mac
+ Tool $16DB
+ <<<
+
diff --git a/fta/Library/Tool220.Macs.s b/fta/Library/Tool220.Macs.s
new file mode 100644
index 0000000..b1b59dd
--- /dev/null
+++ b/fta/Library/Tool220.Macs.s
@@ -0,0 +1,34 @@
+* NoiseTracker Tool
+* FTA, 1992
+
+_NTBootInit mac
+ Tool $01dc
+ <<<
+_NTStartUp mac
+ Tool $02dc
+ <<<
+_NTShutDown mac
+ Tool $03dc
+ <<<
+_NTVersion mac
+ Tool $04dc
+ <<<
+_NTReset mac
+ Tool $05dc
+ <<<
+_NTStatus mac
+ Tool $06dc
+ <<<
+_NTInitMusic mac
+ Tool $09dc
+ <<<
+_NTLaunchMusic mac
+ Tool $0adc
+ <<<
+_NTUpdateSound mac
+ Tool $0bdc
+ <<<
+_NTStopMusic mac
+ Tool $0cdc
+ <<<
+
diff --git a/fta/Library/Tool221.Macs..s b/fta/Library/Tool221.Macs..s
new file mode 100644
index 0000000..2ee6764
--- /dev/null
+++ b/fta/Library/Tool221.Macs..s
@@ -0,0 +1,109 @@
+* NinjaTracker Tool
+* FTA, 1991
+* Ninjaforce, 1995
+* Brutal Deluxe, 2015
+
+_NTBootInit mac
+ Tool $01DD
+ <<<
+
+~NTStartUp mac
+ PHW ]1
+_NTStartUp mac
+ Tool $02DD
+ <<<
+
+_NTShutDown mac
+ Tool $03DD
+ <<<
+
+~NTVersion mac
+ phd ; WordResult
+_NTVersion mac
+ Tool $04DD
+ <<<
+
+_NTReset mac
+ Tool $05DD
+ <<<
+
+~NTStatus mac
+ phd ; WordResult
+_NTStatus mac
+ Tool $06DD
+ <<<
+
+~NTLoadOneMusic mac
+ PHL ]1
+_NTLoadOneMusic mac
+ Tool $09DD
+ <<<
+
+~NTPlayMusic mac
+ PHW ]1
+_NTPlayMusic mac
+ Tool $0ADD
+ <<<
+
+_NTStopMusic mac
+ Tool $0BDD
+ <<<
+
+~NTGetEOfMusic mac
+ phd ; WordResult
+_NTGetEOfMusic mac
+ Tool $0CDD
+ <<<
+
+~NTAddToBatch mac
+ PHLW ]1;]2
+_NTAddToBatch mac
+ Tool $0DDD
+ <<<
+
+~NTSelectBatch mac
+ PHW ]1
+_NTSelectBatch mac
+ Tool $0EDD
+ <<<
+
+~NTKillBatch mac
+ PHW ]1
+_NTKillBatch mac
+ Tool $0FDD
+ <<<
+
+~NTGetPlayingMusic mac
+ phd ; WordResult
+_NTGetPlayingMusic mac
+ Tool $10DD
+ <<<
+
+~NTPlayBatch mac
+ PHL ]1
+_NTPlayBatch mac
+ Tool $11DD
+ <<<
+
+~NTGetTrackVu mac
+ phd ;Long
+ phd ; Result
+_NTGetTrackVu mac
+ Tool $12DD
+ <<<
+
+_NTPauseMusic mac
+ Tool $13DD
+ <<<
+
+_NTContinueMusic mac
+ Tool $14DD
+ <<<
+
+_NTinternal15 mac
+ Tool $15DD
+ <<<
+
+_NTinternal16 mac
+ Tool $16DD
+ <<<
diff --git a/fta/Library/Tool222.Macs.s b/fta/Library/Tool222.Macs.s
new file mode 100644
index 0000000..13c652b
--- /dev/null
+++ b/fta/Library/Tool222.Macs.s
@@ -0,0 +1,109 @@
+* NinjaTrackerPlus Tool
+* by Ninjaforce, 2018
+* based on FTA, 1991
+* toolified by Brutal Deluxe, 2018
+
+_NTPBootInit mac
+ Tool $01DE
+ <<<
+
+~NTPStartUp mac
+ PHW ]1
+_NTPStartUp mac
+ Tool $02DE
+ <<<
+
+_NTPShutDown mac
+ Tool $03DE
+ <<<
+
+~NTPVersion mac
+ phd ; WordResult
+_NTPVersion mac
+ Tool $04DE
+ <<<
+
+_NTPReset mac
+ Tool $05DE
+ <<<
+
+~NTPStatus mac
+ phd ; WordResult
+NTPStatus mac
+ Tool $06DE
+ <<<
+
+~NTPLoadOneMusic mac
+ PHL ]1
+_NTPLoadOneMusic mac
+ Tool $09DE
+ <<<
+
+~NTPPlayMusic mac
+ PHW ]1
+_NTPPlayMusic mac
+ Tool $0ADE
+ <<<
+
+_NTPStopMusic mac
+ Tool $0BDE
+ <<<
+
+~NTPGetEOfMusic mac
+ phd ; WordResult
+_NTPGetEOfMusic mac
+ Tool $0CDE
+ <<<
+
+~NTPAddToBatch mac
+ PHLW ]1;]2
+_NTPAddToBatch mac
+ Toll $0DDE
+ <<<
+
+~NTPSelectBatch mac
+ PHW ]1
+_NTPSelectBatch mac
+ Tool $0EDE
+ <<<
+
+~NTPKillBatch mac
+ PHW ]1
+_NTPKillBatch mac
+ Tool $0FDE
+ <<<
+
+~NTPGetPlayingMusic mac
+ phd ; WordResult
+_NTPGetPlayingMusic mac
+ Tool $10DE
+ <<<
+
+~NTPPlayBatch mac
+ PHL ]1
+_NTPPlayBatch mac
+ Tool $11DE
+ <<<
+
+~NTPGetTrackVu mac
+ phd ;Long
+ phd ; Result
+_NTPGetTrackVu mac
+ Tool $12DE
+ <<<
+
+_NTPPauseMusic mac
+ Tool $13DE
+ <<<
+
+_NTPContinueMusic mac
+ Tool $14DE
+ <<<
+
+_NTPinternal15 mac
+ Tool $15DE
+ <<<
+
+_NTPinternal16 mac
+ Tool $16DE
+ <<<
diff --git a/fta/Library/Tool226.Macs.s b/fta/Library/Tool226.Macs.s
new file mode 100644
index 0000000..5e2d9ba
--- /dev/null
+++ b/fta/Library/Tool226.Macs.s
@@ -0,0 +1,109 @@
+* ALFTracker Tool
+* FTA, 1991
+* Willy Huey, 1989
+* Brutal Deluxe, 2015
+
+_ALFBootInit mac
+ Tool $01E2
+ <<<
+
+~ALFStartUp mac
+ PHW ]1
+_ALFStartUp mac
+ Tool $02E2
+ <<<
+
+_ALFShutDown mac
+ Tool $03E2
+ <<<
+
+~ALFVersion mac
+ phd ; WordResult
+_ALFVersion mac
+ Tool $04E2
+ <<<
+
+_ALFReset mac
+ Tool $05E2
+ <<<
+
+~ALFStatus mac
+ phd ; WordResult
+_ALFStatus mac
+ Tool $06E2
+ <<<
+
+~ALFLoadOneMusic mac
+ PHL ]1
+_ALFLoadOneMusic mac
+ Tool $09E2
+ <<<
+
+~ALFPlayMusic mac
+ PHW ]1
+_ALFPlayMusic mac
+ Tool $0AE2
+ <<<
+
+_ALFStopMusic mac
+ Tool $0BE2
+ <<<
+
+~ALFGetEOfMusic mac
+ phd ; WordResult
+_ALFGetEOfMusic mac
+ Tool $0CE2
+ <<<
+
+~ALFAddToBatch mac
+ PHLW ]1;]2
+_ALFAddToBatch mac
+ Tool $0DE2
+ <<<
+
+~ALFSelectBatch mac
+ PHW ]1
+_ALFSelectBatch mac
+ Tool $0EE2
+ <<<
+
+~ALFKillBatch mac
+ PHW ]1
+_ALFKillBatch mac
+ Tool $0FE2
+ <<<
+
+~ALFGetPlayingMusic mac
+ phd ; WordResult
+_ALFGetPlayingMusic mac
+ Tool $10E2
+ <<<
+
+~ALFPlayBatch mac
+ PHL ]1
+_ALFPlayBatch mac
+ Tool $11E2
+ <<<
+
+~ALFGetTrackVu mac
+ phd ;Long
+ phd ; Result
+_ALFGetTrackVu mac
+ Tool $12E2
+ <<<
+
+_ALFPauseMusic mac
+ Tool $13E2
+ <<<
+
+_ALFContinueMusic mac
+ Tool $14E2
+ <<<
+
+_ALFinternal15 mac
+ Tool $15E2
+ <<<
+
+_ALFinternal16 mac
+ Tool $16E2
+ <<<
diff --git a/fta/Library/Util.Macs.s b/fta/Library/Util.Macs.s
new file mode 100644
index 0000000..8512647
--- /dev/null
+++ b/fta/Library/Util.Macs.s
@@ -0,0 +1,796 @@
+*=================================================
+* Utility Macros - from Merlin disk
+* by Dave Klimas, et al
+*
+* Copyright Apple Computer, Inc. 1986, 1987
+* and Roger Wagner Publishing, Inc. 1988
+* All Rights Reserved
+*-------------------------------------------------
+
+PHWL MAC
+ PHW ]1
+ PHL ]2
+ <<<
+PHLW MAC
+ PHL ]1
+ PHW ]2
+ <<<
+PxW MAC
+ DO ]0/1
+ PHW ]1
+ DO ]0/2
+ PHW ]2
+ DO ]0/3
+ PHW ]3
+ DO ]0/4
+ PHW ]4
+ FIN
+ FIN
+ FIN
+ FIN
+ <<<
+PxL MAC
+ DO ]0/1
+ PHL ]1
+ DO ]0/2
+ PHL ]2
+ DO ]0/3
+ PHL ]3
+ DO ]0/4
+ PHL ]4
+ FIN
+ FIN
+ FIN
+ FIN
+ <<<
+P2SL MAC
+ PHA
+P1SL MAC
+ PHA
+PHL MAC
+ IF #=]1
+ PEA ^]1
+ ELSE
+ PHW ]1+2
+ FIN
+ PHW ]1
+ <<<
+P2SW MAC
+ PHA
+P1SW MAC
+ PHA
+PHW MAC
+ IF #=]1
+ PEA ]1
+ ELSE
+ IF MX/2
+ LDA ]1+1
+ PHA
+ FIN
+ LDA ]1
+ PHA
+ FIN
+ <<<
+PushSpace MAC
+PHS MAC
+ DO ]0
+ LUP ]1
+ PHA
+ --^
+ ELSE
+ PHA
+ FIN
+ <<<
+
+********************************
+
+Push4 MAC
+ PushLong #0
+ PushLong #0
+ <<<
+
+PushPtr MAC
+ PEA ^]1
+ PEA ]1
+ EOM
+
+PushLong MAC
+ IF #=]1
+ PushWord #^]1
+ ELSE
+ PushWord ]1+2
+ FIN
+ PushWord ]1
+ <<<
+
+PushWord MAC
+ IF #=]1
+ PEA ]1
+ ELSE
+ IF MX/2
+ LDA ]1+1
+ PHA
+ FIN
+ LDA ]1
+ PHA
+ FIN
+ <<<
+
+PullLong MAC
+ DO ]0
+ PullWord ]1
+ PullWord ]1+2
+ ELSE
+ PullWord
+ PullWord
+ FIN
+ <<<
+
+PullWord MAC
+ PLA
+ DO ]0
+ STA ]1
+ FIN
+ IF MX/2
+ PLA
+ DO ]0
+ STA ]1+1
+ FIN
+ FIN
+ <<<
+
+MoveLong MAC
+ MoveWord ]1;]2
+ MoveWord ]1+2;]2+2
+ <<<
+
+MoveWord MAC
+ LDA ]1
+ STA ]2
+ IF MX/2
+ LDA ]1+1
+ STA ]2+1
+ FIN
+ <<<
+
+MoveBlock MAC ;1st_byte;last_byte;dest
+ DO ]2/]1
+ DO ]3/]1
+ LDX #]2
+ LDY #]3+]2-]1
+ LDA #]2-]1
+ MVP ]1,]3
+ ELSE
+ LDX #]1
+ LDY #]3
+ LDA #]2-]1
+ MVN ]1,]3
+ FIN
+ ELSE
+ ERR 1 ;Last adrs < first adrs
+ FIN
+ <<<
+
+CmpLong MAC
+ LDA ]1
+ CMP ]2
+ IF #=]1
+ LDA ^]1
+ ELSE
+ LDA ]1+2
+ FIN
+ IF #=]2
+ SBC ^]2
+ ELSE
+ SBC ]2+2
+ FIN
+ <<<
+
+LONGM MAC
+LONGACC MAC ;Assumes native mode
+ IF MX&2 ;If A is now short
+ REP %00100000
+ FIN
+ <<<
+
+LONGX MAC
+LONGXY MAC ;Assumes native mode
+ IF MX&1 ;If X is now short
+ REP %00010000
+ FIN
+ <<<
+
+LONG MAC
+LONGAX MAC ;Assumes native mode
+ IF MX ;If not now in full 16
+ REP %00110000
+ FIN
+ <<<
+
+SHORTM MAC
+SHORTACC MAC ;Assumes native mode
+ IF MX&2 ;If A is now short,
+ ELSE ; ignore
+ SEP %00100000
+ FIN
+ <<<
+
+SHORTX MAC
+SHORTXY MAC ;Assumes native mode
+ IF MX&1 ;If X is now short,
+ ELSE ; ignore
+ SEP %00010000
+ FIN
+ <<<
+
+SHORT MAC
+SHORTAX MAC ;Assumes native mode
+ IF MX!%11 ;If not now in full 8
+ SEP %00110000
+ FIN
+ <<<
+
+LONGI MAC ; Duplicates APW function
+ LST OFF
+ DO ]1 ; If arg = 1 = "on" = make long
+
+ IF MX-3/-1 ; If M is short and X is long
+; Leave alone
+ FIN ; End of this test
+
+ IF MX/3 ; If M is short and X is short
+ MX %10 ; Make X long, leave M short
+ FIN ; End of this test
+
+ IF MX!3/3 ; If M is long and X is long
+ FIN ; Leave alone
+
+ IF MX-2/-1 ; If M is long and X is short
+ MX %00 ; Make X long, leave M long
+ FIN ; End of this test
+
+ ELSE ; If arg = 0 = "off" = make short
+
+ IF MX/3 ; If M is short and X is short
+ ; Leave alone
+ FIN ; End of this test
+
+ IF MX-3/-1 ; If M is short and X is long
+ MX %11 ; Make X short, leave M short
+ FIN ; End of this test
+
+ IF MX-2/-1 ; If M is long and X is short
+ ; Leave alone
+ FIN ; End of this test
+
+
+ IF MX!3/3 ; If M is long and X is long
+ MX %01 ; Make X short, leave M long
+ FIN ; Leave alone
+
+ FIN ; End of macro tests
+
+ LST RTN
+ <<<
+
+LONGA MAC ; Duplicates APW function
+ LST OFF
+ DO ]1 ; If arg = 1 = "on" = make long
+
+ IF MX-3/-1 ; If M is short and X is long
+ MX %00 ; Make M long, leave X long
+ FIN ; End of this test
+
+ IF MX/3 ; If M is short and X is short
+ MX %01 ; Make M long, leave X short
+ FIN ; End of this test
+
+ IF MX!3/3 ; If M is long and X is long
+ FIN ; Leave alone
+
+ IF MX-2/-1 ; If M is long and X is short
+ ; Leave alone
+ FIN ; End of this test
+
+ ELSE ; If arg = 0 = "off" = make short
+
+ IF MX/3 ; If M is short and X is short
+ ; Leave alone
+ FIN ; End of this test
+
+ IF MX-3/-1 ; If M is short and X is long
+ ; Leave alone
+ FIN ; End of this test
+
+ IF MX-2/-1 ; If M is long and X is short
+ MX %11 ; Make M short, leave X short
+ FIN ; End of this test
+
+
+ IF MX!3/3 ; If M is long and X is long
+ MX %10 ; Make M short, leave X long
+ FIN ; Leave alone
+
+ FIN ; End of macro tests
+
+ LST RTN
+ <<<
+
+M65816 MAC
+ DO ]1
+ XC
+ XC ; Full 65816 mode for assembler
+ MX %00
+ ELSE
+ MX %11 ; 8 bit mode for assembler
+ FIN
+ <<<
+
+Expmac MAC ; Replace APW GEN function
+ DO ]1
+ EXP ONLY ; Expand macros
+ ELSE
+ EXP OFF
+ FIN
+ <<<
+
+Tool MAC
+ LDX #]1 ; load tool call #
+ JSL $E10000 ; go to dispatcher
+ <<<
+
+**************************************************
+* Auto-menu item macros *
+* This is one alternative for defining a menu *
+* item. It has the advantage of letting you *
+* include specifiers for Bold, Italic, etc. *
+**************************************************
+
+*-------------------------------------------------
+* Syntax:
+* ]mnum = 0 ; initialize menu # at startvalue-1
+* Menu ' Menu 1 '
+*
+* (See Menu macro, defined later....)
+*
+* ]inum = 255 ; Menu item starts with #256
+* Item ' Choice 1 ';Kybd;'Bb';Check
+* Ch1 = ]inum ; Set label Ch1 if somewhere else
+* needs to use this item #.
+* Item ' Choice 2 ';Disable;'';Kybd;'Cc'
+* Item ' Choice 3 ';Divide;''
+*
+* Menu ' Menu 2 '
+*
+* Item ' Choice 4 ';Bold;'';Check
+* Item ' Choice 5 ';Italic;'';Blank
+* Item ' Choice 6 ';Underline';Kybd;'Dd'
+*
+* IMPORTANT: ALL items, except for Check and Blank, are followed by a second
+* value. For the Kybd item, the ASCII characters follow in single quotes, Ex:
+* Kybd;'Cc' (specifies Apple-C as an equivalent).
+* All other items use a null 2nd value, as in:
+* Italic;'' or Divide;'' etc.
+*
+* The variable ]inum MUST be initialized for the value of your first
+* menu item MINUS 1 before using the first Item macro.
+*
+* Check or Blank, if used, MUST be the last item in the macro line.
+*
+* There can be up to three parameter pairs after the item name.
+*-------------------------------------------------
+* The point of all this is that rather than hard-
+* code menu items values and subsequent references
+* to that number when disabling menus, etc., this
+* lets you add and delete menu items at will,
+* and have labels like Ch1, etc. above, auto-
+* matically set for the correct value during the
+* assembly.
+*-------------------------------------------------
+
+* Equates for Item macro:
+
+Bold = 'B' ; bold menu item
+Disable = 'D' ; disabled menu item
+Italic = 'I' ; italic menu item
+Underline = 'U' ; underlined menu item
+Divide = 'V' ; menu dividing line
+ColorHi = 'X' ; color hilite menu item
+Kybd = '*' ; keyboard menu equivalent
+Check = $1243 ; menu item with checkmark
+Blank = $2043 ; menu item with blank
+
+*-------------------------------------------------
+
+Item MAC ; Macro for creating a menu item
+
+ ASC '--'
+ ASC ]1 ; Text of menu item
+ ASC '\H'
+ DA ]inum ; Menu item #
+
+ DO ]0/2 ; Only if more items to do... (>2)
+
+ DO ]2-Check-1/-1 ; Only if Check item
+ DA ]2 ; ]2 = Check
+ ELSE ; otherwise kybd char or null
+ DO ]2-Blank-1/-1 ; Only if Blank check item
+ DA ]2 ; ]2 = Blank
+ ELSE
+ DB ]2 ; Function char value
+ ASC ]3 ; ASCII argument, if any for Kybd
+ FIN
+ FIN
+
+ FIN
+
+ DO ]0/4 ; Only if more items to do... (>3)
+
+ DO ]4-Check-1/-1 ; Only if Check item
+ DA ]4 ; ]4 = Check
+ ELSE ; otherwise kybd char or null
+ DO ]4-Blank-1/-1 ; Only if Blank check item
+ DA ]4 ; ]4 = Blank
+ ELSE
+ DB ]4 ; Function char value
+ ASC ]5 ; ASCII argument, if any for Kybd
+ FIN
+ FIN
+
+ FIN
+
+ DO ]0/6 ; Only if more items to do... (>5)
+
+ DO ]6-Check-1/-1 ; Only if Check item
+ DA ]6 ; ]6 = Check
+ ELSE ; otherwise kybd char or null
+ DO ]6-Blank-1/-1 ; Only if Blank check item
+ DA ]6 ; ]6 = Blank
+ ELSE
+ DB ]6 ; Function char value
+ ASC ]7 ; ASCII argument, if any for Kybd
+ FIN
+ FIN
+
+ FIN
+
+ DB $00 ; End of menu item
+
+]inum = ]inum+1
+ <<<
+
+**************************************************
+* This is another alternative macro for both *
+* menus and menu items. It is simpler, and *
+* more compact, but not as versatile. *
+**************************************************
+
+*===============================================
+* Variables ]mnum,]inum should be defined
+* prior to using these MenuMaker macros.
+*
+* They both should be starting value-1
+*
+* Syntax:
+*
+* ]mnum = 0 ; 1st menu number will be 1
+* ]inum = 255 ; 1st menu item number will be 256
+*
+* Menu ' @';X ; Apple menu, color highlighting.
+*
+* MItem ' About... ' ; "About" menu item
+*
+* Menu ' Menu Title 1' ; (this will be menu number 2)
+*
+* MItem ' Choice 1 '
+* MItem ' Choice 2 ';'D*Cc' ; Disabled, kybd char: Cc
+* ; Above will be menu item #'s 2&3
+*
+*
+
+
+Menu MAC
+ ASC '>>'
+ ASC ]1
+ ASC '\H'
+ DA ]mnum
+ DO ]0>1
+ ASC ]2
+ FIN
+ DB 0
+]mnum = ]mnum+1
+ <<<
+
+MItem MAC
+ ASC '--'
+ ASC ]1
+ ASC '\H'
+ DA ]inum
+ DO ]0>1
+ ASC ]2
+ FIN
+ DB 0
+]inum = ]inum+1
+ <<<
+
+*-----------------------------------------------------
+*
+* Native -- Processor is in LONG "native" mode.
+* Native Long -- Processor is in LONG "native" mode.
+* Native Short -- Processor is in SHORT "native" mode.
+*
+
+Native MAC
+ CLC
+ XCE
+ IF 0=]0 ;If Native (Long)
+ LONGAX
+ FIN
+
+ DO ]0
+ IF L=]1 ;If Native Long
+ LONGAX
+
+ FIN ;If Native Short only
+ FIN ; do CLC, XCE.
+ EOM
+
+*--------------------------------------------------------
+*
+* Emulation -- Set Processor into "emulation" mode.
+*
+
+Emulation MAC
+ SEC
+ XCE
+ EOM
+
+*-----------------------------------------------------
+*
+* WriteCh -- Print Character From Accumulator
+* WriteCh ADDR -- Print Character At Label
+* WriteCh ADDR,X -- Print Character At Label,X
+*
+
+WriteCh MAC
+ DO ]0
+ LDA ]1
+ FIN
+ PHA
+ LDX #$180C
+ JSL $E10000
+ EOM
+
+*-----------------------------------------------------
+*
+* ReadCh -- Get Keypress in Accumulator
+* ReadCh ADDR -- Get Keypress in Label
+*
+
+ReadCh MAC
+ PEA 0
+ PEA 1
+ LDX #$220C
+ JSL $E10000
+ PLA
+ DO ]0
+ STA ]1
+ FIN
+ EOM
+
+*-----------------------------------------------------
+*
+* WriteLn "STRING" -- Print Literal String with CR.
+* WriteLn ADDR -- Print String At Address with CR.
+* WriteLn -- Print CR.
+*
+
+WriteLn MAC
+ DO ]0
+ WriteStr ]1
+ FIN
+ WriteCh #$8D
+ EOM
+
+*-----------------------------------------------------
+*
+* WriteStr "STRING" -- Print Literal String.
+* WriteStr ADDR -- Print String At Address.
+* WriteStr -- Print String At A (Lo),Y (Hi).
+*
+
+WriteStr MAC
+ IF 0=]0 ;If No Label
+ PHY
+ PHA
+
+ ELSE
+
+ IF "=]1
+ PEA ^]String
+ PEA ]String
+ BRL ]Skip
+]String STR ]1
+]Skip
+ ELSE
+
+ IF '=]1
+ PEA ^]String
+ PEA ]String
+ BRL ]Skip
+]String STR ]1
+]Skip
+ ELSE
+
+ PEA ^]1
+ PEA ]1
+
+ FIN
+ FIN
+ FIN
+ LDX #$1C0C
+ JSL $E10000
+ EOM
+
+*-----------------------------------------------------
+*
+* DrawStrHV 8;12;"STRING" Print Literal String on
+* DrawStr 8;12;ADDR Super Hi-Res Screen.
+*
+
+DrawStrHV MAC
+ HtabVtab ]1;]2
+ DrawStr ]3
+ <<<
+
+*-----------------------------------------------------
+*
+* DrawStr "STRING" -- Print Literal String.
+* DrawStr ADDR -- Print String At Address.
+*
+
+DrawStr MAC
+ IF "=]1
+ PEA ^]String
+ PEA ]String
+ BRL ]Skip
+]String STR ]1
+]Skip
+ ELSE
+ IF '=]1
+ PEA ^]String
+ PEA ]String
+ BRL ]Skip
+]String STR ]1
+]Skip
+ ELSE
+ PEA ^]1
+ PEA ]1
+ FIN
+ FIN
+ LDX #$A504 ;DrawString
+ JSL $E10000
+ <<<
+
+*-----------------------------------------------------
+*
+* HtabVtab #8;#12 -- Position at Htab 8, Vtab 12.
+* HtabVtab H;V on super hires screens.
+*
+
+HtabVtab MAC
+ IF #=]1
+ LDA ]1*8
+ ELSE
+ LDA ]1
+ ASL
+ ASL
+ ASL
+ FIN
+ PHA
+ IF #=]1
+ LDA ]2*8
+ ELSE
+ LDA ]2
+ ASL
+ ASL
+ ASL
+ FIN
+ PHA
+ LDX #$3A04 ;MoveTo
+ JSL $E10000
+ <<<
+
+*-----------------------------------------------------
+*
+* Deref MyHandle;MyPtr -- Uses zero page 0-3 to
+* de-reference a handle.
+*
+
+Deref MAC
+ LDA ]1
+ LDX ]1+2
+ STA 0
+ STX 2
+ LDA [0]
+ STA ]2
+ LDY #2
+ LDA [0],Y
+ STA ]2+2
+ <<<
+
+*==================================================
+* The MLI16 macro assumes the CALLDOS file from the
+* SUBROUT.LIB is linked in. It provides an easy
+* way to make MLI calls. Example syntax:
+*
+* MLI16 close;CLSPARMS
+*--------------------------------------------------
+
+MLI16 MAC ;Uses CALLDOS file in the
+ IF MX ; subroutine library
+ REP %00110000 ;Force full 16-bit mode, if
+ FIN ; not already there.
+ LDX #]1 ;Call code (use MLI.CODES)
+ LDA #]2 ;Low word of PARMS tbl adr
+ JSR CALLDOS ;Returns CS if an error
+ <<<
+
+*=================================================
+* The following macros are APW-equivalents for
+* compatibility with APW style listings.
+*
+* One difference between Merlin and APW here: Instead of
+* using the syntax PULL1 ADDRESS;X, Merlin can take
+* the raw statement PULL1 ADDRESS,X.
+*
+
+PULL1 MAC
+ SEP #%00100000
+ PLA
+ REP #%00100000
+ DO ]0/1 ;If 1 parm
+ IF MX>0
+ STA ]1
+ FIN
+ IF MX=0
+ STAL ]1
+ FIN
+ FIN
+ <<<
+
+PULL3 MAC
+ SEP #%00100000
+ PLA
+ STA ]1
+ REP #%00100000
+ PLA
+ STA ]1+1
+ FIN
+ <<<
+
+PUSH1 MAC
+ SEP #%00100000
+ IF ]0/1 ;if one parm
+ LDA ]1
+ FIN
+ PHA
+ REP #%00100000
+ <<<
+
+PUSH3 MAC
+ IF #=]1
+ LDA #^]1 ;get two hi order bytes
+ PHA
+ PHB
+ LDA #<]1
+ STA 1,S
+ ELSE
+ LDA ]1+1
+ PHA
+ PHB
+ LDA ]1
+ STA 1,S
+ FIN
+ <<<
+
diff --git a/fta/Library/VGA.Macs.s b/fta/Library/VGA.Macs.s
new file mode 100644
index 0000000..2b2350f
--- /dev/null
+++ b/fta/Library/VGA.Macs.s
@@ -0,0 +1,66 @@
+*
+* Macros SecondSight
+*
+* (c) 1995, Brutal Deluxe
+*
+
+_SSGetStatus MAC
+ jsl _xGetStatus
+ <<<
+
+_SSSetMode MAC
+ jsl _xSetMode
+ <<<
+
+_SSUploadData MAC
+ jsl _xUploadData
+ <<<
+
+_SSScrollScreen MAC
+ jsl _xScrollScreen
+ <<<
+
+_SSScreenOff MAC
+ jsl _xScreenOff
+ <<<
+
+_SSScreenOn MAC
+ jsl _xScreenOn
+ <<<
+
+_SSSetPalette MAC
+ jsl _xSetPalette
+ <<<
+
+_SSSetPaletteEntry MAC
+ jsl _xSetPaletteEntry
+ <<<
+
+_SSSetBorder MAC
+ jsl _xSetBorder
+ <<<
+
+_SSRunCode MAC
+ jsl _xRunCode
+ <<<
+
+_SSClearScreen MAC
+ jsl _xClearScreen
+ <<<
+
+_SSSetShadow MAC
+ jsl _xSetShadow
+ <<<
+
+_SSSetVGAReg MAC
+ jsl _xSetVGAReg
+ <<<
+
+_SSGetVGAReg MAC
+ jsl _xGetVGAReg
+ <<<
+
+_SSSetUserMode MAC
+ jsl _xSetUserMode
+ <<<
+
diff --git a/fta/Library/Video.Macs.s b/fta/Library/Video.Macs.s
new file mode 100644
index 0000000..58abb5e
--- /dev/null
+++ b/fta/Library/Video.Macs.s
@@ -0,0 +1,89 @@
+*
+* Video Overlay tool calls
+*
+
+_VDBootInit mac
+ Tool $0121
+ <<<
+_VDStartUp mac
+ Tool $0221
+ <<<
+_VDShutDown mac
+ Tool $0321
+ <<<
+_VDVersion mac
+ Tool $0421
+ <<<
+_VDReset mac
+ Tool $0521
+ <<<
+_VDStatus mac
+ Tool $0621
+ <<<
+_VDInStatus mac
+ Tool $0921
+ <<<
+_VDInSetStd mac
+ Tool $0a21
+ <<<
+_VDInGetStd mac
+ Tool $0b21
+ <<<
+_VDInConvAdj mac
+ Tool $0c21
+ <<<
+_VDKeyControl mac
+ Tool $0d21
+ <<<
+_VDKeyStatus mac
+ Tool $0e21
+ <<<
+_VDKeySetKCol mac
+ Tool $0f21
+ <<<
+_VDKeyGetKRCol mac
+ Tool $1021
+ <<<
+_VDKeyGetKGCol mac
+ Tool $1121
+ <<<
+_VDKeyGetKBCol mac
+ Tool $1221
+ <<<
+_VDKeySetKDiss mac
+ Tool $1321
+ <<<
+_VDKeyGetKDiss mac
+ Tool $1421
+ <<<
+_VDKeySetNKDiss mac
+ Tool $1521
+ <<<
+_VDKeyGetNKDiss mac
+ Tool $1621
+ <<<
+_VDOutSetStd mac
+ Tool $1721
+ <<<
+_VDOutGetStd mac
+ Tool $1821
+ <<<
+_VDOutControl mac
+ Tool $1921
+ <<<
+_VDOutStatus mac
+ Tool $1a21
+ <<<
+_VDGetFeatures mac
+ Tool $1b21
+ <<<
+_VDInControl mac
+ Tool $1c21
+ <<<
+_VDGGControl mac
+ Tool $1d21
+ <<<
+_VDGGStatus mac
+ Tool $1e21
+ <<<
+
diff --git a/fta/Library/Window.Macs.s b/fta/Library/Window.Macs.s
new file mode 100644
index 0000000..1c8b346
--- /dev/null
+++ b/fta/Library/Window.Macs.s
@@ -0,0 +1,537 @@
+* Window Manager macros
+* by Dave Klimas
+;
+; Copyright Apple Computer, Inc. 1986, 1987
+; and Roger Wagner Publishing, Inc. 1988
+; All Rights Reserved
+;
+_WindBootInit MAC
+ Tool $10E
+ <<<
+~WindStartUp MAC
+ PHW ]1
+_WindStartUp MAC
+ Tool $20E
+ <<<
+_WindShutDown MAC
+ Tool $30E
+ <<<
+~WindVersion MAC
+ PHA
+_WindVersion MAC
+ Tool $40E
+ <<<
+_WindReset MAC
+ Tool $50E
+ <<<
+~WindStatus MAC
+ PHA
+_WindStatus MAC
+ Tool $60E
+ <<<
+~NewWindow MAC
+ P2SL ]1
+_NewWindow MAC
+ Tool $90E
+ <<<
+~CheckUpdate MAC
+ P1SL ]1
+_CheckUpdate MAC
+ Tool $A0E
+ <<<
+~CloseWindow MAC
+ PHL ]1
+_CloseWindow MAC
+ Tool $B0E
+ <<<
+~Desktop MAC
+ IF 2=]1
+ IF 3=]1
+ IF 4=]1
+ PHS 2
+ FIN
+ FIN
+ FIN
+ PHWL ]1;]2
+_Desktop MAC
+ Tool $C0E
+ <<<
+~SetWTitle MAC
+ PxL ]1;]2
+_SetWTitle MAC
+ Tool $D0E
+ <<<
+~GetWTitle MAC
+ P2SL ]1
+_GetWTitle MAC
+ Tool $E0E
+ <<<
+~SetFrameColor MAC
+ PxL ]1;]2
+_SetFrameColor MAC
+ Tool $F0E
+ <<<
+~GetFrameColor MAC
+ PxL ]1;]2
+_GetFrameColor MAC
+ Tool $100E
+ <<<
+~SelectWindow MAC
+ PHL ]1
+_SelectWindow MAC
+ Tool $110E
+ <<<
+~HideWindow MAC
+ PHL ]1
+_HideWindow MAC
+ Tool $120E
+ <<<
+~ShowWindow MAC
+ PHL ]1
+_ShowWindow MAC
+ Tool $130E
+ <<<
+~SendBehind MAC
+ PxL ]1;]2
+_SendBehind MAC
+ Tool $140E
+ <<<
+~FrontWindow MAC
+ PHS 2
+_FrontWindow MAC
+ Tool $150E
+ <<<
+~SetInfoDraw MAC
+ PxL ]1;]2
+_SetInfoDraw MAC
+ Tool $160E
+ <<<
+~FindWindow MAC
+ P1SL ]1
+ PxW ]2;]3
+_FindWindow MAC
+ Tool $170E
+ <<<
+~TrackGoAway MAC
+ P1SW ]1
+ PHWL ]2;]3
+_TrackGoAway MAC
+ Tool $180E
+ <<<
+~MoveWindow MAC
+ PxW ]1;]2
+ PHL ]3
+_MoveWindow MAC
+ Tool $190E
+ <<<
+~DragWindow MAC
+ PxW ]1;]2;]3;]4
+ PxL ]5;]6
+_DragWindow MAC
+ Tool $1A0E
+ <<<
+~GrowWindow MAC
+ PHS 2
+ PxW ]1;]2;]3;]4
+ PHL ]5
+_GrowWindow MAC
+ Tool $1B0E
+ <<<
+~SizeWindow MAC
+ PxW ]1;]2
+ PHL ]3
+_SizeWindow MAC
+ Tool $1C0E
+ <<<
+~TaskMaster MAC
+ PHA
+ PHWL ]1;]2
+_TaskMaster MAC
+ Tool $1D0E
+ <<<
+~BeginUpdate MAC
+ PHL ]1
+_BeginUpdate MAC
+ Tool $1E0E
+ <<<
+~EndUpdate MAC
+ PHL ]1
+_EndUpdate MAC
+ Tool $1F0E
+ <<<
+~GetWMgrPort MAC
+ PHS 2
+_GetWMgrPort MAC
+ Tool $200E
+ <<<
+~PinRect MAC
+ PHS 2
+ PxW ]1;]2
+ PHL ]3
+_PinRect MAC
+ Tool $210E
+ <<<
+~HiliteWindow MAC
+ PHWL ]1;]2
+_HiliteWindow MAC
+ Tool $220E
+ <<<
+~ShowHide MAC
+ PHWL ]1;]2
+_ShowHide MAC
+ Tool $230E
+ <<<
+~BringToFront MAC
+ PHL ]1
+_BringToFront MAC
+ Tool $240E
+ <<<
+_WindNewRes MAC
+ Tool $250E
+ <<<
+~TrackZoom MAC
+ P1SW ]1
+ PHWL ]2;]3
+_TrackZoom MAC
+ Tool $260E
+ <<<
+~ZoomWindow MAC
+ PHL ]1
+_ZoomWindow MAC
+ Tool $270E
+ <<<
+~SetWRefCon MAC
+ PxL ]1;]2
+_SetWRefCon MAC
+ Tool $280E
+ <<<
+~GetWRefCon MAC
+ P2SL ]1
+_GetWRefCon MAC
+ Tool $290E
+ <<<
+~GetNextWindow MAC
+ P2SL ]1
+_GetNextWindow MAC
+ Tool $2A0E
+ <<<
+~GetWKind MAC
+ P1SL ]1
+_GetWKind MAC
+ Tool $2B0E
+ <<<
+~SetWFrame MAC
+ PHWL ]1;]2
+_SetWFrame MAC
+ Tool $2D0E
+ <<<
+~GetWFrame MAC
+ P1SL ]1
+_GetWFrame MAC
+ Tool $2C0E
+ <<<
+~GetStructRgn MAC
+ P2SL ]1
+_GetStructRgn MAC
+ Tool $2E0E
+ <<<
+~GetContentRgn MAC
+ P2SL ]1
+_GetContentRgn MAC
+ Tool $2F0E
+ <<<
+~GetUpdateRgn MAC
+ P2SL ]1
+_GetUpdateRgn MAC
+ Tool $300E
+ <<<
+~GetDefProc MAC
+ P2SL ]1
+_GetDefProc MAC
+ Tool $310E
+ <<<
+~SetDefProc MAC
+ PxL ]1;]2
+_SetDefProc MAC
+ Tool $320E
+ <<<
+~GetWControls MAC
+ P2SL ]1
+_GetWControls MAC
+ Tool $330E
+ <<<
+~SetOriginMask MAC
+ PHWL ]1;]2
+_SetOriginMask MAC
+ Tool $340E
+ <<<
+~GetInfoRefCon MAC
+ P2SL ]1
+_GetInfoRefCon MAC
+ Tool $350E
+ <<<
+~SetInfoRefCon MAC
+ PxL ]1;]2
+_SetInfoRefCon MAC
+ Tool $360E
+ <<<
+~GetZoomRect MAC
+ P2SL ]1
+_GetZoomRect MAC
+ Tool $370E
+ <<<
+~SetZoomRect MAC
+ PxL ]1;]2
+_SetZoomRect MAC
+ Tool $380E
+ <<<
+~RefreshDesktop MAC
+ PHL ]1
+_RefreshDesktop MAC
+ Tool $390E
+ <<<
+~InvalRect MAC
+ PHL ]1
+_InvalRect MAC
+ Tool $3A0E
+ <<<
+~InvalRgn MAC
+ PHL ]1
+_InvalRgn MAC
+ Tool $3B0E
+ <<<
+~ValidRect MAC
+ PHL ]1
+_ValidRect MAC
+ Tool $3C0E
+ <<<
+~ValidRgn MAC
+ PHL ]1
+_ValidRgn MAC
+ Tool $3D0E
+ <<<
+~GetContentOrigin MAC
+ P2SL ]1
+_GetContentOrigin MAC
+ Tool $3E0E
+ <<<
+~SetContentOrigin MAC
+ PxW ]1;]2
+ PHL ]3
+_SetContentOrigin MAC
+ Tool $3F0E
+ <<<
+~GetDataSize MAC
+ P2SL ]1
+_GetDataSize MAC
+ Tool $400E
+ <<<
+~SetDataSize MAC
+ PxW ]1;]2
+ PHL ]3
+_SetDataSize MAC
+ Tool $410E
+ <<<
+~GetMaxGrow MAC
+ P2SL ]1
+_GetMaxGrow MAC
+ Tool $420E
+ <<<
+~SetMaxGrow MAC
+ PxW ]1;]2
+ PHL ]3
+_SetMaxGrow MAC
+ Tool $430E
+ <<<
+~GetScroll MAC
+ P2SL ]1
+_GetScroll MAC
+ Tool $440E
+ <<<
+~SetScroll MAC
+ PxW ]1;]2
+ PHL ]3
+_SetScroll MAC
+ Tool $450E
+ <<<
+~GetPage MAC
+ P2SL ]1
+_GetPage MAC
+ Tool $460E
+ <<<
+~SetPage MAC
+ PxW ]1;]2
+ PHL ]3
+_SetPage MAC
+ Tool $470E
+ <<<
+~GetContentDraw MAC
+ P2SL ]1
+_GetContentDraw MAC
+ Tool $480E
+ <<<
+~SetContentDraw MAC
+ PxL ]1;]2
+_SetContentDraw MAC
+ Tool $490E
+ <<<
+~GetInfoDraw MAC
+ P2SL ]1
+_GetInfoDraw MAC
+ Tool $4A0E
+ <<<
+~SetSysWindow MAC
+ PHL ]1
+_SetSysWindow MAC
+ Tool $4B0E
+ <<<
+~GetSysWFlag MAC
+ P1SL ]1
+_GetSysWFlag MAC
+ Tool $4C0E
+ <<<
+~StartDrawing MAC
+ PHL ]1
+_StartDrawing MAC
+ Tool $4D0E
+ <<<
+~SetWindowIcons MAC
+ P2SL ]1
+_SetWindowIcons MAC
+ Tool $4E0E
+ <<<
+~GetRectInfo MAC
+ PxL ]1;]2
+_GetRectInfo MAC
+ Tool $4F0E
+ <<<
+~StartInfoDrawing MAC
+ PxL ]1;]2
+_StartInfoDrawing MAC
+ Tool $500E
+ <<<
+_EndInfoDrawing MAC
+ Tool $510E
+ <<<
+~GetFirstWindow MAC
+ PHS 2
+_GetFirstWindow MAC
+ Tool $520E
+ <<<
+~WindDragRect MAC
+ P2SL ]1
+ PHLW ]2;]3
+ PHWL ]4;]5
+ PxL ]6;]7
+ PHW ]8
+_WindDragRect MAC
+ Tool $530E
+ <<<
+_Private01 MAC
+ Tool $540E
+ <<<
+~DrawInfoBar MAC
+ PHL ]1
+_DrawInfoBar MAC
+ Tool $550E
+ <<<
+~WindowGlobal MAC
+ P1SW ]1
+_WindowGlobal MAC
+ Tool $560E
+ <<<
+~SetContentOrigin2 MAC
+ PxW ]1;]2;]3
+ PHL ]4
+_SetContentOrigin2 MAC
+ Tool $570E
+ <<<
+~GetWindowMgrGlobals MAC
+ PHS 2
+_GetWindowMgrGlobals MAC
+ Tool $580E
+ <<<
+~AlertWindow MAC
+ P1SW ]1
+ PxL ]2;]3
+_AlertWindow MAC
+ Tool $590E
+ <<<
+~StartFrameDrawing MAC
+ PHL ]1
+_StartFrameDrawing MAC
+ Tool $5A0E
+ <<<
+_EndFrameDrawing MAC
+ Tool $5B0E
+ <<<
+~ResizeWindow MAC
+ PHWL ]1;]2
+ PHL ]3
+_ResizeWindow MAC
+ Tool $5C0E
+ <<<
+_TaskMasterContent MAC ;private
+ Tool $5D0E
+ <<<
+_TaskMasterKey MAC ;private
+ Tool $5E0E
+ <<<
+~TaskMasterDA MAC
+ P1SW ]1
+ PHL ]2
+_TaskMasterDA MAC
+ Tool $5F0E
+ <<<
+~CompileText MAC
+ P2SW ]1
+ PxL ]2;]3
+ PHW ]4
+_CompileText MAC
+ Tool $600E
+ <<<
+~NewWindow2 MAC
+ PHS 2
+ PxL ]1;]2;]3;]4
+ PHWL ]5;]6
+ PHW ]7
+_NewWindow2 MAC
+ Tool $610E
+ <<<
+~ErrorWindow MAC
+ P1SW ]1
+ PHLW ]2;]3
+_ErrorWindow MAC
+ Tool $620E
+ <<<
+_GetAuxWindInfo MAC
+ Tool $630E
+ <<<
+_DoModalWindow MAC
+ Tool $640E
+ <<<
+_MWGetCtlPart MAC
+ Tool $650E
+ <<<
+_MWSetMenuProc MAC
+ Tool $660E
+ <<<
+_MWStdDrawProc MAC
+ Tool $670E
+ <<<
+_MWSetUpEditMenu MAC
+ Tool $680E
+ <<<
+_FindCursorCtl MAC
+ Tool $690E
+ <<<
+_ResizeInfoBar MAC
+ Tool $6A0E
+ <<<
+_HandleDiskInsert MAC
+ Tool $6B0E
+ <<<
+_UpdateWindow MAC
+ Tool $6C0E
+ <<<
+
diff --git a/fta/Toolbox No 4/Fun Beyond GS.odt b/fta/Toolbox No 4/Fun Beyond GS.odt
new file mode 100644
index 0000000..cb663f8
Binary files /dev/null and b/fta/Toolbox No 4/Fun Beyond GS.odt differ
diff --git a/fta/Toolbox No 4/Fun Beyond GS.pdf b/fta/Toolbox No 4/Fun Beyond GS.pdf
new file mode 100644
index 0000000..e87f77b
Binary files /dev/null and b/fta/Toolbox No 4/Fun Beyond GS.pdf differ
diff --git a/fta/Toolbox No 4/Tbm04.zip b/fta/Toolbox No 4/Tbm04.zip
new file mode 100644
index 0000000..ae408c0
Binary files /dev/null and b/fta/Toolbox No 4/Tbm04.zip differ
diff --git a/fta/Toolbox No 4/Toolbox Mag 4_text.pdf b/fta/Toolbox No 4/Toolbox Mag 4_text.pdf
new file mode 100644
index 0000000..569761e
Binary files /dev/null and b/fta/Toolbox No 4/Toolbox Mag 4_text.pdf differ
diff --git a/fta/_FileInformation.txt b/fta/_FileInformation.txt
new file mode 100644
index 0000000..2ac7d02
--- /dev/null
+++ b/fta/_FileInformation.txt
@@ -0,0 +1 @@
+Beyond.SYS16=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
diff --git a/fta/compile.txt b/fta/compile.txt
new file mode 100644
index 0000000..4d7a0f7
--- /dev/null
+++ b/fta/compile.txt
@@ -0,0 +1 @@
+./merlin32 "./Library" "Fun Columns by O Goguel_EN.S"
diff --git a/fta/merlin32 b/fta/merlin32
new file mode 100644
index 0000000..dd22ba0
Binary files /dev/null and b/fta/merlin32 differ
diff --git a/img/apple-iigs-front.jpg b/img/apple-iigs-front.jpg
new file mode 100644
index 0000000..721142c
Binary files /dev/null and b/img/apple-iigs-front.jpg differ
diff --git a/img/bin2src b/img/bin2src
new file mode 100644
index 0000000..ca0bfd6
Binary files /dev/null and b/img/bin2src differ
diff --git a/img/columns.ico b/img/columns.ico
new file mode 100644
index 0000000..ef04872
Binary files /dev/null and b/img/columns.ico differ
diff --git a/img/fun-columns.png b/img/fun-columns.png
new file mode 100644
index 0000000..27ff98a
Binary files /dev/null and b/img/fun-columns.png differ
diff --git a/img/icon.xcf b/img/icon.xcf
new file mode 100644
index 0000000..0c6caba
Binary files /dev/null and b/img/icon.xcf differ
diff --git a/img/sprite_sheet_final.bmp b/img/sprite_sheet_final.bmp
new file mode 100644
index 0000000..360e3d2
Binary files /dev/null and b/img/sprite_sheet_final.bmp differ
diff --git a/img/sprite_sheet_final.png b/img/sprite_sheet_final.png
new file mode 100644
index 0000000..981ecd9
Binary files /dev/null and b/img/sprite_sheet_final.png differ
diff --git a/img/sprite_sheet_final.xcf b/img/sprite_sheet_final.xcf
new file mode 100644
index 0000000..13769c7
Binary files /dev/null and b/img/sprite_sheet_final.xcf differ
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..3079078
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,10 @@
+#! /bin/make
+# :vim: set noexpandtab:
+
+CFLAGS = -lm -lSDL2_image `sdl2-config --cflags --libs`
+
+columns: columns.c
+ $(CC) -o columns columns.c $(CFLAGS)
+
+clean:
+ rm columns
diff --git a/src/ascii.h b/src/ascii.h
new file mode 100644
index 0000000..3e0232a
--- /dev/null
+++ b/src/ascii.h
@@ -0,0 +1,130 @@
+int ascii [128][4] = { // BLK (X/Y, WHT (X/Y))
+{518, 49, 582, 49}, // NUL Null
+{518, 49, 582, 49}, // SOH Start Of Heading
+{518, 49, 582, 49}, // STX Start of TeXt
+{518, 49, 582, 49}, // ETX End of TeXt
+{518, 49, 582, 49}, // EOT End Of Transm,
+{518, 49, 582, 49}, // ENQ ENQuiry
+{518, 49, 582, 49}, // ACK ACKnowledge
+{518, 49, 582, 49}, // BEL BELl
+{518, 49, 582, 49}, // BS Back Space
+{518, 49, 582, 49}, // HT Horizontal Tabulation (Character Tabulation)
+{518, 49, 582, 49}, // LF Line Feed
+{518, 49, 582, 49}, // VT Vertical Tabulation (Line Tabulation)
+{518, 49, 582, 49}, // FF Form Feed
+{518, 49, 582, 49}, // CR Carriage Return
+{518, 49, 582, 49}, // SO Shift Out
+{518, 49, 582, 49}, // SI Shift In
+{518, 49, 582, 49}, // DLE Data Link Escape
+{518, 49, 582, 49}, // DC1 Device Control 1
+{518, 49, 582, 49}, // DC2 Device Control 2
+{518, 49, 582, 49}, // DC3 Device Control 3
+{518, 49, 582, 49}, // DC4 Device Control 4
+{518, 49, 582, 49}, // NAK Negative AKnowledgement
+{518, 49, 582, 49}, // SYN SYNchronous idle
+{518, 49, 582, 49}, // ETB End of Transmission Block
+{518, 49, 582, 49}, // CAN CANcel
+{518, 49, 582, 49}, // EM End of Medium
+{518, 49, 582, 49}, // SUB SUBstitute
+{518, 49, 582, 49}, // ESC ESCape
+{518, 49, 582, 49}, // FS File Separator
+{518, 49, 582, 49}, // GS Group Separator
+{518, 49, 582, 49}, // RS Record Separator
+{518, 49, 582, 49}, // US Unit Separator
+{518, 49, 582, 49}, // SPC Space 510, 574
+{494, 25, 558, 25}, // ! Exclamation mark (point)
+{486, 37, 550, 37}, // " Quotation mark, quotes
+{510, 43, 574, 43}, // # Number sign, hash
+{502, 25, 566, 25}, // $ Dollar Sign
+{510, 25, 574, 25}, // % Percent sign
+{486, 49, 550, 49}, // & Ampersand
+{494, 37, 558, 37}, // ' Apostrophe
+{470, 31, 534, 31}, // ( Left parenthesis
+{478, 31, 542, 31}, // ) Right parenthesis
+{462, 31, 526, 31}, // * Asterisk
+{502, 31, 566, 31}, // + Plus sign
+{486, 43, 550, 43}, // , Comma
+{486, 31, 550, 31}, // - Hyphen, dash, minus
+{478, 43, 542, 43}, // . Full stop, dot, point
+{518, 37, 582, 37}, // / Forward slash
+{478, 19, 542, 19}, // 0 zero
+{486, 19, 550, 19}, // 1 one
+{494, 19, 558, 19}, // 2 two
+{502, 19, 566, 19}, // 3 three
+{510, 19, 574, 19}, // 4 four
+{518, 19, 582, 19}, // 5 five
+{462, 25, 526, 25}, // 6 six
+{470, 25, 534, 25}, // 7 seven
+{478, 25, 542, 25}, // 8 eight
+{486, 25, 550, 25}, // 9 nine
+{470, 37, 534, 37}, // : Colon
+{478, 37, 542, 37}, // ; Semicolon
+{462, 43, 526, 43}, // < Less than, Left angled bracket
+{510, 31, 574, 31}, // = Equal
+{470, 43, 534, 43}, // > Greater than, Right angled bracket
+{478, 49, 542, 49}, // ? Question mark
+{518, 43, 582, 43}, // @ At sign, commercial at
+{462, 1, 526, 1}, // A Alpha
+{470, 1, 534, 1}, // B Bravo
+{478, 1, 542, 1}, // C Charlie
+{486, 1, 550, 1}, // D Delta
+{494, 1, 558, 1}, // E Echo
+{502, 1, 566, 1}, // F Foxtrot
+{510, 1, 574, 1}, // G Golf
+{518, 1, 582, 1}, // H Hotel
+{462, 7, 526, 7}, // I India
+{470, 7, 534, 7}, // J Juliett
+{478, 7, 542, 7}, // K Kilo
+{486, 7, 550, 7}, // L Lima
+{494, 7, 558, 7}, // M Mike
+{502, 7, 566, 7}, // N November
+{510, 7, 574, 7}, // O Oscar
+{518, 7, 582, 7}, // P Papa
+{462, 13, 526, 13}, // Q Quebec
+{470, 13, 534, 13}, // R Romeo
+{478, 13, 542, 13}, // S Sierra
+{486, 13, 550, 13}, // T Tango
+{494, 13, 558, 13}, // U Uniform
+{502, 13, 566, 13}, // V Victor
+{510, 13, 574, 13}, // W Whiskey
+{518, 13, 582, 13}, // X X-ray
+{462, 19, 526, 19}, // Y Yankee
+{470, 19, 534, 19}, // Z Zulu
+{518, 31, 582, 31}, // [ Left square bracket
+{510, 37, 574, 37}, // \ Backslash
+{462, 37, 526, 37}, // ] Right square bracket
+{518, 25, 582, 25}, // ^ Circumflex accent, Caret
+{494, 31, 558, 31}, // _ Underscore
+{502, 43, 566, 43}, // ` Grave accent
+{462, 1, 526, 1}, // a alpha
+{470, 1, 534, 1}, // b bravo
+{478, 1, 542, 1}, // c charlie
+{486, 1, 550, 1}, // d delta
+{494, 1, 558, 1}, // e echo
+{502, 1, 566, 1}, // f foxtrot
+{510, 1, 574, 1}, // g golf
+{518, 1, 582, 1}, // h hotel
+{462, 7, 526, 7}, // i india
+{470, 7, 534, 7}, // j juliett
+{478, 7, 542, 7}, // k kilo
+{486, 7, 550, 7}, // l lima
+{494, 7, 558, 7}, // m mike
+{502, 7, 566, 7}, // n november
+{510, 7, 574, 7}, // o oscar
+{518, 7, 582, 7}, // p papa
+{462, 13, 526, 13}, // q quebec
+{470, 13, 534, 13}, // r romeo
+{478, 13, 542, 13}, // s seirra
+{486, 13, 550, 13}, // t tango
+{494, 13, 558, 13}, // u uniform
+{502, 13, 566, 13}, // v victor
+{510, 13, 574, 13}, // w whiskey
+{518, 13, 582, 13}, // x x-ray
+{462, 19, 526, 19}, // y yankee
+{470, 19, 534, 19}, // z zulu
+{462, 49, 526, 49}, // { Left curly bracket
+{502, 37, 566, 37}, // | Vertical bar
+{470, 49, 534, 49}, // } Right curly bracket
+{494, 43, 558, 43}, // ~ Tilde
+{518, 49, 582, 49}, // DEL DELete
+};
\ No newline at end of file
diff --git a/src/columns b/src/columns
new file mode 100644
index 0000000..ea4f4fe
Binary files /dev/null and b/src/columns differ
diff --git a/src/columns.c b/src/columns.c
new file mode 100644
index 0000000..171aaf7
--- /dev/null
+++ b/src/columns.c
@@ -0,0 +1,519 @@
+/*************************************
+ ** FUN COLUMNS - SDL **
+ ** clone of FTA version from 1991 **
+ ** JC 'Al-Khwarizmi' Bou-Samra **
+ ** Paragon Software 04/05/2024 - **
+ *************************************/
+
+#include
+#include
+#include
+#include
+#include
+#include "sprite_sheet.h"
+#include "text.h"
+#include "ascii.h"
+#include "game.h"
+
+enum gradient {Blue = 0, Green = 10, Red = 20, Yellow = 30, Magenta = 40, Cyan = 50, Grey = 60} colour = 0;
+
+int backdrop (enum gradient colour);
+int check_key(void);
+int Ren_restart(void); // game over/restart
+int Ren_pause(void); // pause
+int Ren_game(void); // render game
+int Ren_logo (void); // display logo
+int Ren_about (void); // display about
+int Ren_info (void); // info screen
+int Ren_menu (void); // main menu
+int Ren_level (void); // display level / current score
+int Ren_next (void); // display next block/brick/piece
+int Ren_high (void); // display high scores
+int Ren_line (char line[], int char_x, int char_y, int ln, int ll, bool col ); // parameter names in function prototypes not necessary
+int initSDL (void); // initialise SDL
+int shutdownSDL (void); // shutdown SDL
+int render (void); // render output
+int init_gfx (void); // create texture
+int i, j, k, x, y, z, l; // index variables
+int gamep = 0;
+int tile_c;
+int tile_pos = 112;
+
+bool next_p = false; // next piece flag
+bool quit = false; // quit flag
+bool main_m = false;
+bool pause_f = 0;
+
+SDL_Window *window = NULL;
+SDL_Renderer *sr;
+SDL_Event event;
+SDL_RWops* rwops_new;
+SDL_Surface* image;
+SDL_Texture * texture;
+SDL_Rect logo_src = { 384, 0, 78, 54 };
+SDL_Rect logo_dst = { 230, 136, 78, 54 };
+//SDL_Rect char_src = {463, 0 , 7 , 5};
+//SDL_Rect char_dst = {22, 11 , 7 , 5};
+SDL_Rect main_back = {110, 0, 100, 200};
+SDL_Rect main_trim = {111, 0, 98, 200};
+SDL_Rect level_back = {231, 7, 76, 66};
+SDL_Rect level_trim = {230, 6, 78, 68};
+SDL_Rect next_back = {257, 86, 18, 37};
+SDL_Rect next_trim = {256, 85, 20, 39};
+SDL_Rect high_back = {13, 7, 76, 186};
+SDL_Rect high_trim = {12, 6, 78, 188};
+SDL_Rect tile_src = {132, 0, 12, 11};
+SDL_Rect tile_dst = {112, 1, 12, 11};
+SDL_Rect gameo_back = {119, 93, 82, 13};
+
+/* window paramaters */
+#define WIDTH 1280 // pixels
+#define HEIGHT 800 // pixels
+#define TITLE "FUN COLUMNS" // window title
+
+/** board background colours **/
+int grad_tab[] = {
+
+ 0x0000cc, 0x0000bb, 0x0000aa, 0x000099, 0x000088, 0x000077, 0x000066, 0x000055, 0x000044, 0x000033, // blue
+ 0x00cc00, 0x00bb00, 0x00aa00, 0x009900, 0x008800, 0x007700, 0x006600, 0x005500, 0x004400, 0x003300, // green
+ 0xcc0000, 0xbb0000, 0xaa0000, 0x990000, 0x880000, 0x770000, 0x660000, 0x550000, 0x440000, 0x330000, // red
+ 0xcccc00, 0xbbbb00, 0xaaaa00, 0x999900, 0x888800, 0x777700, 0x666600, 0x555500, 0x444400, 0x333300, // yellow
+ 0xcc00cc, 0xbb00bb, 0xaa00aa, 0x990099, 0x880088, 0x770077, 0x660066, 0x550055, 0x440044, 0x330033, // magenta
+ 0x00cccc, 0x00bbbb, 0x00aaaa, 0x009999, 0x008888, 0x007777, 0x006666, 0x005555, 0x004444, 0x003333, // cyan
+ 0xcccccc, 0xbbbbbb, 0xaaaaaa, 0x999999, 0x888888, 0x777777, 0x666666, 0x555555, 0x444444, 0x333333 // grey
+};
+
+// ============= Main =============
+
+int main (void) {
+
+ initSDL ();
+ init_gfx();
+
+ while (quit == false) {
+ SDL_Delay(50);
+ while (SDL_PollEvent (&event)) {
+ if (event.type == SDL_QUIT || event.type == SDL_WINDOWEVENT_CLOSE) {
+ quit = true;
+ }
+
+ switch (event.type) {
+ case SDL_KEYDOWN:
+ gamep = 0;
+ if (event.key.keysym.sym == SDLK_q) {
+ quit = true;
+ } // quit
+ if (event.key.keysym.sym == SDLK_a) {
+ printf("about\n");
+ gamep = 1;
+ } // about
+ if (event.key.keysym.sym == SDLK_i) {
+ printf("info\n");
+ gamep = 2;
+ } // info
+ else if (event.key.keysym.sym > SDLK_0 && event.key.keysym.sym < SDLK_7) { // level
+ main_m = false;
+ gamep = 3;
+ while (main_m == false) {
+ // SDL_Delay(150);
+ render ();
+ SDL_PollEvent (&event);
+
+ switch (event.type) {
+ case SDL_KEYDOWN:
+ gamep = 3;
+ if(event.key.keysym.sym == SDLK_c
+ && (event.key.keysym.mod & KMOD_CTRL) != 0 ) {
+ colour = colour + 10;
+ if (colour >= 69) {colour = 0;}
+ backdrop(colour);
+ pause_f = 0;
+ break;
+ } // gradient colour cycle
+
+ else if (event.key.keysym.sym == SDLK_LEFT) {
+
+ pause_f = 0;
+ if (tile_pos == 112) {break;}
+ tile_pos = tile_pos - 12;
+ break;
+ } // left arrow
+
+ else if (event.key.keysym.sym == SDLK_RIGHT) {
+ pause_f = 0;
+ if (tile_pos == 196) {break;}
+ tile_pos = tile_pos + 12;
+ break;
+ } // right arrow
+
+ else if (event.key.keysym.sym == SDLK_n) {
+ printf("next brick preview\n");
+ next_p = !next_p;
+ pause_f = 0;
+ break;
+ } // next piece (brick/block) preview
+
+ else if( event.key.keysym.sym == SDLK_r
+ && (event.key.keysym.mod & KMOD_CTRL) != 0 ) {
+ printf("restart\n");
+ main_m = true;
+ gamep = 4;
+ pause_f = 0;
+ //check_key();
+ break;
+ } // restart
+
+ else if (event.key.keysym.sym == SDLK_r) {
+ printf("rotate\n");
+ pause_f = 0;
+ break;
+ } // rotate tiles
+
+ else if (event.key.keysym.sym == SDLK_SPACE) {
+ printf("drop/fall\n");
+ pause_f = 0;
+ break;
+ } // drop/fall block/piece/brick
+
+ else if( event.key.keysym.sym == SDLK_s
+ && (event.key.keysym.mod & KMOD_CTRL) != 0 ) {
+ printf("change tile pattern\n");
+ pause_f = 0;
+ break;
+ } // change tile design/pattern
+
+ else if (event.key.keysym.sym == SDLK_p) {
+ if (!pause_f){
+ printf("pause\n");
+ gamep = 5;
+ pause_f = 1;}
+ else {
+ pause_f = 0;
+ gamep = 3;}
+ // check_key();
+ break;
+ } // pause
+ }
+ }
+ }
+ }
+ }
+
+ if (quit) {
+ break;
+ }
+
+ render ();
+ }
+
+ shutdownSDL ();
+return 0;
+}
+
+// ============= Initialize SDL =============
+int initSDL () {
+ SDL_Init (SDL_INIT_EVERYTHING);
+
+/* new window */
+ window = SDL_CreateWindow ( TITLE, /* title */
+ SDL_WINDOWPOS_CENTERED,/* x pos */
+ SDL_WINDOWPOS_CENTERED,/* w pos */
+ WIDTH, /* width */
+ HEIGHT, /* height */
+ SDL_WINDOW_BORDERLESS); /* Additional flag(s) */
+
+ /* deal with error */
+if (window == NULL) {
+ fprintf (stderr, "SDL window failed to initialise: %s\n",
+ SDL_GetError ());
+ return 1;
+ }
+
+/* create renderer */
+ sr = SDL_CreateRenderer (window, 0, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
+ SDL_RenderSetScale (sr, 4.0, 4.0); // scale x2 x4 options on cli
+}
+
+// ============= Shutdown =============
+int shutdownSDL () {
+ SDL_DestroyWindow (window); // free memory
+ SDL_Quit (); // shutdown entire sdl sub-systems
+ return 0;
+}
+
+// ============= Render =============
+int render () {
+ backdrop(colour); // backdrop
+ //Ren_menu();
+ switch (gamep) {
+
+ case 0:
+ Ren_menu();
+ break;
+
+ case 1:
+ Ren_about();
+ break;
+
+ case 2:
+ Ren_info();
+ break;
+
+ case 3:
+ Ren_game();
+ break;
+
+ case 4:
+ Ren_game();
+ Ren_restart();
+ break;
+
+ case 5:
+ Ren_game();
+ Ren_pause();
+ break;
+ }
+
+ Ren_logo(); // logo
+ Ren_level(); // render current level/score
+ Ren_next(); // render next brick/block/piece
+ Ren_high(); // render high scores
+ SDL_RenderPresent (sr);
+}
+
+// ============= Backdrop =============
+int backdrop (enum gradient colour) {
+
+ k = 0; // gradient fill
+ for (j = 0; j < 10; j++) {
+ SDL_SetRenderDrawColor (sr, (grad_tab[j + colour] & 0x00ff0000) >> 16, (grad_tab[j + colour] & 0x0000ff00) >> 8, grad_tab[j + colour] & 0x000000ff, 255);
+ for (i = 0; i < 20; i++) {
+ SDL_RenderDrawLine (sr, 0, k, 319, k);
+ k = k + 1;
+ }
+ }
+
+ k = 0; // horizontal edge light
+ SDL_SetRenderDrawColor (sr, 0x99, 0x99, 0x99, 255);
+ for (i = 0; i < 16; i++) {
+ SDL_RenderDrawLine (sr, k, 0, k, 199);
+ k = k + 20;
+ }
+
+ k = 0; // vertical edge light
+// SDL_SetRenderDrawColor (sr, 0x99, 0x99, 0x99, 255);
+ for (i = 0; i < 10; i++) {
+ SDL_RenderDrawLine (sr, 0, k, 319, k);
+ k = k + 20;
+ }
+
+ k = 19; // horizontal edge dark
+ SDL_SetRenderDrawColor (sr, 0x0, 0x0, 0x0, 255);
+ for (i = 0; i < 16; i++) {
+ SDL_RenderDrawLine (sr, k, 0, k, 199);
+ k = k + 20;
+ }
+
+ k = 19; // vertical edge dark
+// SDL_SetRenderDrawColor (sr, 0x0, 0x0, 0x0, 255);
+ for (i = 0; i < 10; i++) {
+ SDL_RenderDrawLine (sr, 0, k, 319, k);
+ k = k + 20;
+ }
+
+ l = 0; // corner highlight
+ SDL_SetRenderDrawColor (sr, 0xff, 0xff, 0xff, 255);
+ for (j = 0; j < 10; j++) {
+ k = 0;
+ for (i = 0; i < 16; i++) {
+ SDL_RenderDrawPoint(sr, k, l);
+ k = k + 20;
+ }
+ l = l + 20;
+ }
+
+return 0;
+}
+
+// ============= init_gfx =============
+int init_gfx(void) {
+ rwops_new = SDL_RWFromMem(byn, sizeof(byn));
+ image = IMG_LoadPNG_RW(rwops_new);
+ texture = SDL_CreateTextureFromSurface(sr, image);
+ SDL_FreeSurface( image );
+ image = NULL;
+ return 0;
+}
+// ============= Logo =============
+int Ren_logo(void) {
+ SDL_RenderCopy(sr, texture, &logo_src, &logo_dst);
+ SDL_SetRenderDrawColor (sr, 0x0, 0x0, 0x0, 255); // shadow
+ SDL_RenderDrawLine (sr, 234, 190, 308, 190);
+ SDL_RenderDrawLine (sr, 234, 191, 309, 191);
+ SDL_RenderDrawLine (sr, 308, 190, 308, 140);
+ SDL_RenderDrawLine (sr, 309, 191, 309, 140);
+ return 0;
+}
+
+// ============= Game =============
+int Ren_game(void) {
+ SDL_SetRenderDrawColor(sr, 0x0 , 0x0 , 0x0, 0xff);
+ SDL_RenderFillRect(sr, &main_back); // background
+ SDL_SetRenderDrawColor (sr, 0xff, 0xff, 0xff, 255);
+ SDL_RenderDrawRect(sr, &main_trim); // trim
+ if(tile_c > 17) {
+ tile_c = 0;
+ }
+
+ for (i = 0; i < 1; i++) {
+ tile_dst.x = tile_pos;
+ tile_dst.y = 11 * tile_c + 1;
+ SDL_RenderCopy(sr, texture, &tile_src, &tile_dst);
+ tile_c++;
+ }
+ return 0;
+}
+
+// ============= About =============
+int Ren_about(void) {
+ SDL_SetRenderDrawColor(sr, 0x0 , 0x0 , 0x0, 0xff);
+ SDL_RenderFillRect(sr, &main_back); // background
+ SDL_SetRenderDrawColor (sr, 0xff, 0xff, 0xff, 255);
+ SDL_RenderDrawRect(sr, &main_trim); // trim
+ for (z = 0; z < 13; z++) { // 13 lines of text
+ Ren_line(about, aboutl[z][0], aboutl[z][1], z * 11, 11, 0);
+ }
+ return 0;
+}
+
+// ============= Info =============
+int Ren_info(void) {
+ SDL_SetRenderDrawColor(sr, 0x0 , 0x0 , 0x0, 0xff);
+ SDL_RenderFillRect(sr, &main_back); // background
+ SDL_SetRenderDrawColor (sr, 0xff, 0xff, 0xff, 255);
+ SDL_RenderDrawRect(sr, &main_trim); // trim
+ for (z = 0; z < 11; z++) { // 11 lines of text
+ Ren_line(info, infol[z][0], infol[z][1], z * 11, 11, 0);
+ }
+
+ return 0;
+}
+
+// ============= Game Over =============
+int Ren_restart(void) {
+ SDL_SetRenderDrawColor(sr, 0xff , 0xff , 0xff, 0xff);
+ SDL_RenderFillRect(sr, &gameo_back); // background
+ for (z = 0; z < 1; z++) { // 1 line of text
+ Ren_line(gameo, gameol[z][0], gameol[z][1], z * 9, 9, 1);
+ }
+
+ return 0;
+}
+
+// ============= Pause =============
+int Ren_pause(void) {
+ SDL_SetRenderDrawColor(sr, 0xff , 0xff , 0xff, 0xff);
+ SDL_RenderFillRect(sr, &gameo_back); // background
+ for (z = 0; z < 1; z++) { // 1 line of text
+ Ren_line(pause, pausel[z][0], pausel[z][1], z * 9, 9, 1);
+ }
+
+ return 0;
+}
+
+// ============= Main Menu =============
+int Ren_menu(void) {
+ SDL_SetRenderDrawColor(sr, 0x0 , 0x0 , 0x0, 0xff);
+ SDL_RenderFillRect(sr, &main_back); // background
+ SDL_SetRenderDrawColor (sr, 0xff, 0xff, 0xff, 255);
+ SDL_RenderDrawRect(sr, &main_trim); // trim
+ for (z = 0; z < 10; z++) { // 10 lines of text
+ Ren_line(m_menu, m_menul[z][0], m_menul[z][1], z * 11, 11, 0);
+ }
+
+ return 0;
+}
+
+// ============= Status =============
+int Ren_level(void) {
+ SDL_SetRenderDrawColor(sr, 0xff , 0xff , 0xff, 0xff);
+ SDL_RenderFillRect(sr, &level_back); // background
+ SDL_SetRenderDrawColor (sr, 0x00, 0x00, 0x00, 255);
+ SDL_RenderDrawRect(sr, &level_trim); // trim
+ SDL_RenderDrawLine (sr, 234, 74, 308, 74); // level shadow
+ SDL_RenderDrawLine (sr, 234, 75, 309, 75);
+ SDL_RenderDrawLine (sr, 308, 75, 308, 10);
+ SDL_RenderDrawLine (sr, 309, 74, 309, 10);
+ for (z = 0; z < 6; z++) { // 6 lines of text
+ Ren_line(status, statusl[z][0], statusl[z][1], z * 7, 7, 1);
+ }
+
+return 0;
+}
+
+// ============= Next Piece =============
+int Ren_next(void) {
+ if (next_p == 0) {
+ } else {
+ SDL_SetRenderDrawColor(sr, 0xff , 0xff , 0xff, 0xff);
+ SDL_RenderFillRect(sr, &next_back); // background
+ SDL_SetRenderDrawColor (sr, 0x00, 0x00, 0x00, 255);
+ SDL_RenderDrawRect(sr, &next_trim); // trim
+ SDL_RenderDrawLine (sr, 259, 124, 276, 124); // next shadow
+ SDL_RenderDrawLine (sr, 259, 125, 277, 125);
+ SDL_RenderDrawLine (sr, 276, 124, 276, 89);
+ SDL_RenderDrawLine (sr, 277, 125, 277, 89);
+ }
+ return 0;
+}
+
+// ============= High Scores =============
+int Ren_high(void) {
+ SDL_SetRenderDrawColor(sr, 0xff , 0xff , 0xff, 0xff);
+ SDL_RenderFillRect(sr, &high_back); // background
+ SDL_SetRenderDrawColor (sr, 0x00, 0x00, 0x00, 255);
+ SDL_RenderDrawRect(sr, &high_trim); // trim
+ SDL_RenderDrawLine (sr, 17, 194, 90, 194); // next shadow
+ SDL_RenderDrawLine (sr, 17, 195, 91, 195);
+ SDL_RenderDrawLine (sr, 90, 194, 90, 10);
+ SDL_RenderDrawLine (sr, 91, 195, 91, 10);
+ for (z = 0; z < 18; z++) { // 18 lines of text
+ Ren_line(high, highl[z][0], highl[z][1], z * 7, 7, 1);
+ }
+ return 0;
+}
+
+// ============= ASCII Line Render =============
+// api: text, x, y, line num, line len, col
+int Ren_line(char line[], int char_x, int char_y, int ln, int ll, bool col ) {
+
+ int cc; // char col
+ j = 0;
+
+ if (col) {
+ cc = 2; // white char
+ } else {
+ cc = 0; // black char
+ }
+ for (i = 0; i < ll; i++) {
+ SDL_Rect char_dst = {char_x + j, char_y, 8, 5};
+ SDL_Rect char_src = {ascii[line[i + ln]][cc], ascii[line[i + ln]][cc + 1], 8, 5};
+ SDL_RenderCopy(sr, texture, &char_src, &char_dst); // render char
+ j = j + 8; // character height
+ }
+ return 0;
+}
+
+// ============= wait for key =============
+int check_key(void) {
+while (SDL_PollEvent(&event)) {
+ if (event.type == SDL_KEYDOWN) {
+ return 0;
+ }
+}
+}
+
+// ============= Hidden message =============
+char author[] = { "copyright (c)1991 FTA, (c)2024 Jason Bou-Samra" };
+const char* title = "FUN COLUMNS - SDL";
+const char* descr = "clone of FTA 1991 version";
diff --git a/src/columns.hex b/src/columns.hex
new file mode 100644
index 0000000..37eb69d
--- /dev/null
+++ b/src/columns.hex
@@ -0,0 +1,1782 @@
+00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
+00000010 02 00 3e 00 01 00 00 00 90 11 40 00 00 00 00 00 |..>.......@.....|
+00000020 40 00 00 00 00 00 00 00 c0 82 00 00 00 00 00 00 |@...............|
+00000030 00 00 00 00 40 00 38 00 0d 00 40 00 20 00 1f 00 |....@.8...@. ...|
+00000040 06 00 00 00 04 00 00 00 40 00 00 00 00 00 00 00 |........@.......|
+00000050 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00 |@.@.....@.@.....|
+00000060 d8 02 00 00 00 00 00 00 d8 02 00 00 00 00 00 00 |................|
+00000070 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 |................|
+00000080 18 03 00 00 00 00 00 00 18 03 40 00 00 00 00 00 |..........@.....|
+00000090 18 03 40 00 00 00 00 00 1c 00 00 00 00 00 00 00 |..@.............|
+000000a0 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
+000000b0 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 |................|
+000000c0 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00 |..@.......@.....|
+000000d0 f0 0a 00 00 00 00 00 00 f0 0a 00 00 00 00 00 00 |................|
+000000e0 00 10 00 00 00 00 00 00 01 00 00 00 05 00 00 00 |................|
+000000f0 00 10 00 00 00 00 00 00 00 10 40 00 00 00 00 00 |..........@.....|
+00000100 00 10 40 00 00 00 00 00 d1 16 00 00 00 00 00 00 |..@.............|
+00000110 d1 16 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
+00000120 01 00 00 00 04 00 00 00 00 30 00 00 00 00 00 00 |.........0......|
+00000130 00 30 40 00 00 00 00 00 00 30 40 00 00 00 00 00 |.0@......0@.....|
+00000140 5c 04 00 00 00 00 00 00 5c 04 00 00 00 00 00 00 |\.......\.......|
+00000150 00 10 00 00 00 00 00 00 01 00 00 00 06 00 00 00 |................|
+00000160 c8 3d 00 00 00 00 00 00 c8 4d 40 00 00 00 00 00 |.=.......M@.....|
+00000170 c8 4d 40 00 00 00 00 00 78 2f 00 00 00 00 00 00 |.M@.....x/......|
+00000180 68 32 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |h2..............|
+00000190 02 00 00 00 06 00 00 00 d8 3d 00 00 00 00 00 00 |.........=......|
+000001a0 d8 4d 40 00 00 00 00 00 d8 4d 40 00 00 00 00 00 |.M@......M@.....|
+000001b0 00 02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 |................|
+000001c0 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00 |................|
+000001d0 38 03 00 00 00 00 00 00 38 03 40 00 00 00 00 00 |8.......8.@.....|
+000001e0 38 03 40 00 00 00 00 00 40 00 00 00 00 00 00 00 |8.@.....@.......|
+000001f0 40 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |@...............|
+00000200 04 00 00 00 04 00 00 00 78 03 00 00 00 00 00 00 |........x.......|
+00000210 78 03 40 00 00 00 00 00 78 03 40 00 00 00 00 00 |x.@.....x.@.....|
+00000220 44 00 00 00 00 00 00 00 44 00 00 00 00 00 00 00 |D.......D.......|
+00000230 04 00 00 00 00 00 00 00 53 e5 74 64 04 00 00 00 |........S.td....|
+00000240 38 03 00 00 00 00 00 00 38 03 40 00 00 00 00 00 |8.......8.@.....|
+00000250 38 03 40 00 00 00 00 00 40 00 00 00 00 00 00 00 |8.@.....@.......|
+00000260 40 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |@...............|
+00000270 50 e5 74 64 04 00 00 00 f8 30 00 00 00 00 00 00 |P.td.....0......|
+00000280 f8 30 40 00 00 00 00 00 f8 30 40 00 00 00 00 00 |.0@......0@.....|
+00000290 b4 00 00 00 00 00 00 00 b4 00 00 00 00 00 00 00 |................|
+000002a0 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00 |........Q.td....|
+000002b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+000002d0 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................|
+000002e0 52 e5 74 64 04 00 00 00 c8 3d 00 00 00 00 00 00 |R.td.....=......|
+000002f0 c8 4d 40 00 00 00 00 00 c8 4d 40 00 00 00 00 00 |.M@......M@.....|
+00000300 38 02 00 00 00 00 00 00 38 02 00 00 00 00 00 00 |8.......8.......|
+00000310 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c |......../lib64/l|
+00000320 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73 |d-linux-x86-64.s|
+00000330 6f 2e 32 00 00 00 00 00 04 00 00 00 30 00 00 00 |o.2.........0...|
+00000340 05 00 00 00 47 4e 55 00 02 80 00 c0 04 00 00 00 |....GNU.........|
+00000350 01 00 00 00 00 00 00 00 01 00 01 c0 04 00 00 00 |................|
+00000360 09 00 00 00 00 00 00 00 02 00 01 c0 04 00 00 00 |................|
+00000370 01 00 00 00 00 00 00 00 04 00 00 00 14 00 00 00 |................|
+00000380 03 00 00 00 47 4e 55 00 0e 76 db 64 2d 53 25 ce |....GNU..v.d-S%.|
+00000390 92 44 02 9e ce 00 86 7e 23 94 33 2e 04 00 00 00 |.D.....~#.3.....|
+000003a0 10 00 00 00 01 00 00 00 47 4e 55 00 00 00 00 00 |........GNU.....|
+000003b0 03 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
+000003c0 02 00 00 00 19 00 00 00 01 00 00 00 06 00 00 00 |................|
+000003d0 00 01 00 00 00 00 00 02 00 00 00 00 19 00 00 00 |................|
+000003e0 39 f2 8b 1c 00 00 00 00 00 00 00 00 00 00 00 00 |9...............|
+000003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000400 03 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000410 00 00 00 00 00 00 00 00 70 00 00 00 12 00 00 00 |........p.......|
+00000420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000430 3b 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |;...............|
+00000440 00 00 00 00 00 00 00 00 fa 00 00 00 12 00 00 00 |................|
+00000450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000460 e8 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000470 00 00 00 00 00 00 00 00 62 00 00 00 12 00 00 00 |........b.......|
+00000480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000490 15 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+000004a0 00 00 00 00 00 00 00 00 4a 00 00 00 12 00 00 00 |........J.......|
+000004b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000004c0 4c 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |L...............|
+000004d0 00 00 00 00 00 00 00 00 da 00 00 00 12 00 00 00 |................|
+000004e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000004f0 9a 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000500 00 00 00 00 00 00 00 00 64 01 00 00 12 00 00 00 |........d.......|
+00000510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000520 3d 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |=...............|
+00000530 00 00 00 00 00 00 00 00 c7 00 00 00 12 00 00 00 |................|
+00000540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000550 59 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |Y...............|
+00000560 00 00 00 00 00 00 00 00 a4 00 00 00 12 00 00 00 |................|
+00000570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000580 10 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000590 00 00 00 00 00 00 00 00 b8 00 00 00 12 00 00 00 |................|
+000005a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000005b0 20 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 | ...............|
+000005c0 00 00 00 00 00 00 00 00 83 00 00 00 12 00 00 00 |................|
+000005d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000005e0 7d 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |}...............|
+000005f0 00 00 00 00 00 00 00 00 5f 01 00 00 12 00 00 00 |........_.......|
+00000600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000610 01 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 |.... ...........|
+00000620 00 00 00 00 00 00 00 00 28 01 00 00 12 00 00 00 |........(.......|
+00000630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000640 76 01 00 00 11 00 19 00 40 7d 40 00 00 00 00 00 |v.......@}@.....|
+00000650 08 00 00 00 00 00 00 00 00 5f 5f 67 6d 6f 6e 5f |.........__gmon_|
+00000660 73 74 61 72 74 5f 5f 00 53 44 4c 5f 46 72 65 65 |start__.SDL_Free|
+00000670 53 75 72 66 61 63 65 00 53 44 4c 5f 43 72 65 61 |Surface.SDL_Crea|
+00000680 74 65 54 65 78 74 75 72 65 46 72 6f 6d 53 75 72 |teTextureFromSur|
+00000690 66 61 63 65 00 53 44 4c 5f 47 65 74 45 72 72 6f |face.SDL_GetErro|
+000006a0 72 00 49 4d 47 5f 4c 6f 61 64 50 4e 47 5f 52 57 |r.IMG_LoadPNG_RW|
+000006b0 00 53 44 4c 5f 49 6e 69 74 00 53 44 4c 5f 52 57 |.SDL_Init.SDL_RW|
+000006c0 46 72 6f 6d 4d 65 6d 00 53 44 4c 5f 43 72 65 61 |FromMem.SDL_Crea|
+000006d0 74 65 52 65 6e 64 65 72 65 72 00 53 44 4c 5f 53 |teRenderer.SDL_S|
+000006e0 65 74 52 65 6e 64 65 72 44 72 61 77 43 6f 6c 6f |etRenderDrawColo|
+000006f0 72 00 53 44 4c 5f 44 65 6c 61 79 00 53 44 4c 5f |r.SDL_Delay.SDL_|
+00000700 52 65 6e 64 65 72 44 72 61 77 50 6f 69 6e 74 00 |RenderDrawPoint.|
+00000710 53 44 4c 5f 52 65 6e 64 65 72 43 6f 70 79 00 53 |SDL_RenderCopy.S|
+00000720 44 4c 5f 52 65 6e 64 65 72 44 72 61 77 52 65 63 |DL_RenderDrawRec|
+00000730 74 00 53 44 4c 5f 50 6f 6c 6c 45 76 65 6e 74 00 |t.SDL_PollEvent.|
+00000740 53 44 4c 5f 52 65 6e 64 65 72 50 72 65 73 65 6e |SDL_RenderPresen|
+00000750 74 00 53 44 4c 5f 51 75 69 74 00 53 44 4c 5f 44 |t.SDL_Quit.SDL_D|
+00000760 65 73 74 72 6f 79 57 69 6e 64 6f 77 00 53 44 4c |estroyWindow.SDL|
+00000770 5f 52 65 6e 64 65 72 44 72 61 77 4c 69 6e 65 00 |_RenderDrawLine.|
+00000780 53 44 4c 5f 52 65 6e 64 65 72 53 65 74 53 63 61 |SDL_RenderSetSca|
+00000790 6c 65 00 53 44 4c 5f 43 72 65 61 74 65 57 69 6e |le.SDL_CreateWin|
+000007a0 64 6f 77 00 53 44 4c 5f 52 65 6e 64 65 72 46 69 |dow.SDL_RenderFi|
+000007b0 6c 6c 52 65 63 74 00 70 75 74 73 00 5f 5f 6c 69 |llRect.puts.__li|
+000007c0 62 63 5f 73 74 61 72 74 5f 6d 61 69 6e 00 73 74 |bc_start_main.st|
+000007d0 64 65 72 72 00 66 70 72 69 6e 74 66 00 6c 69 62 |derr.fprintf.lib|
+000007e0 6d 2e 73 6f 2e 36 00 6c 69 62 53 44 4c 32 5f 69 |m.so.6.libSDL2_i|
+000007f0 6d 61 67 65 2d 32 2e 30 2e 73 6f 2e 30 00 6c 69 |mage-2.0.so.0.li|
+00000800 62 53 44 4c 32 2d 32 2e 30 2e 73 6f 2e 30 00 6c |bSDL2-2.0.so.0.l|
+00000810 69 62 63 2e 73 6f 2e 36 00 47 4c 49 42 43 5f 32 |ibc.so.6.GLIBC_2|
+00000820 2e 32 2e 35 00 47 4c 49 42 43 5f 32 2e 33 34 00 |.2.5.GLIBC_2.34.|
+00000830 00 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 |................|
+00000840 01 00 01 00 01 00 01 00 02 00 01 00 01 00 01 00 |................|
+00000850 01 00 01 00 01 00 01 00 01 00 03 00 03 00 01 00 |................|
+00000860 01 00 03 00 00 00 00 00 01 00 02 00 b7 01 00 00 |................|
+00000870 10 00 00 00 00 00 00 00 75 1a 69 09 00 00 03 00 |........u.i.....|
+00000880 c1 01 00 00 10 00 00 00 b4 91 96 06 00 00 02 00 |................|
+00000890 cd 01 00 00 00 00 00 00 d8 4f 40 00 00 00 00 00 |.........O@.....|
+000008a0 06 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 |................|
+000008b0 e0 4f 40 00 00 00 00 00 06 00 00 00 17 00 00 00 |.O@.............|
+000008c0 00 00 00 00 00 00 00 00 40 7d 40 00 00 00 00 00 |........@}@.....|
+000008d0 05 00 00 00 19 00 00 00 00 00 00 00 00 00 00 00 |................|
+000008e0 00 50 40 00 00 00 00 00 07 00 00 00 01 00 00 00 |.P@.............|
+000008f0 00 00 00 00 00 00 00 00 08 50 40 00 00 00 00 00 |.........P@.....|
+00000900 07 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000910 10 50 40 00 00 00 00 00 07 00 00 00 03 00 00 00 |.P@.............|
+00000920 00 00 00 00 00 00 00 00 18 50 40 00 00 00 00 00 |.........P@.....|
+00000930 07 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000940 20 50 40 00 00 00 00 00 07 00 00 00 05 00 00 00 | P@.............|
+00000950 00 00 00 00 00 00 00 00 28 50 40 00 00 00 00 00 |........(P@.....|
+00000960 07 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000970 30 50 40 00 00 00 00 00 07 00 00 00 07 00 00 00 |0P@.............|
+00000980 00 00 00 00 00 00 00 00 38 50 40 00 00 00 00 00 |........8P@.....|
+00000990 07 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 |................|
+000009a0 40 50 40 00 00 00 00 00 07 00 00 00 09 00 00 00 |@P@.............|
+000009b0 00 00 00 00 00 00 00 00 48 50 40 00 00 00 00 00 |........HP@.....|
+000009c0 07 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 |................|
+000009d0 50 50 40 00 00 00 00 00 07 00 00 00 0b 00 00 00 |PP@.............|
+000009e0 00 00 00 00 00 00 00 00 58 50 40 00 00 00 00 00 |........XP@.....|
+000009f0 07 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000a00 60 50 40 00 00 00 00 00 07 00 00 00 0e 00 00 00 |`P@.............|
+00000a10 00 00 00 00 00 00 00 00 68 50 40 00 00 00 00 00 |........hP@.....|
+00000a20 07 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000a30 70 50 40 00 00 00 00 00 07 00 00 00 10 00 00 00 |pP@.............|
+00000a40 00 00 00 00 00 00 00 00 78 50 40 00 00 00 00 00 |........xP@.....|
+00000a50 07 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000a60 80 50 40 00 00 00 00 00 07 00 00 00 12 00 00 00 |.P@.............|
+00000a70 00 00 00 00 00 00 00 00 88 50 40 00 00 00 00 00 |.........P@.....|
+00000a80 07 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000a90 90 50 40 00 00 00 00 00 07 00 00 00 14 00 00 00 |.P@.............|
+00000aa0 00 00 00 00 00 00 00 00 98 50 40 00 00 00 00 00 |.........P@.....|
+00000ab0 07 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000ac0 a0 50 40 00 00 00 00 00 07 00 00 00 16 00 00 00 |.P@.............|
+00000ad0 00 00 00 00 00 00 00 00 a8 50 40 00 00 00 00 00 |.........P@.....|
+00000ae0 07 00 00 00 18 00 00 00 00 00 00 00 00 00 00 00 |................|
+00000af0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00001000 f3 0f 1e fa 48 83 ec 08 48 8b 05 d1 3f 00 00 48 |....H...H...?..H|
+00001010 85 c0 74 02 ff d0 48 83 c4 08 c3 00 00 00 00 00 |..t...H.........|
+00001020 ff 35 ca 3f 00 00 ff 25 cc 3f 00 00 0f 1f 40 00 |.5.?...%.?....@.|
+00001030 ff 25 ca 3f 00 00 68 00 00 00 00 e9 e0 ff ff ff |.%.?..h.........|
+00001040 ff 25 c2 3f 00 00 68 01 00 00 00 e9 d0 ff ff ff |.%.?..h.........|
+00001050 ff 25 ba 3f 00 00 68 02 00 00 00 e9 c0 ff ff ff |.%.?..h.........|
+00001060 ff 25 b2 3f 00 00 68 03 00 00 00 e9 b0 ff ff ff |.%.?..h.........|
+00001070 ff 25 aa 3f 00 00 68 04 00 00 00 e9 a0 ff ff ff |.%.?..h.........|
+00001080 ff 25 a2 3f 00 00 68 05 00 00 00 e9 90 ff ff ff |.%.?..h.........|
+00001090 ff 25 9a 3f 00 00 68 06 00 00 00 e9 80 ff ff ff |.%.?..h.........|
+000010a0 ff 25 92 3f 00 00 68 07 00 00 00 e9 70 ff ff ff |.%.?..h.....p...|
+000010b0 ff 25 8a 3f 00 00 68 08 00 00 00 e9 60 ff ff ff |.%.?..h.....`...|
+000010c0 ff 25 82 3f 00 00 68 09 00 00 00 e9 50 ff ff ff |.%.?..h.....P...|
+000010d0 ff 25 7a 3f 00 00 68 0a 00 00 00 e9 40 ff ff ff |.%z?..h.....@...|
+000010e0 ff 25 72 3f 00 00 68 0b 00 00 00 e9 30 ff ff ff |.%r?..h.....0...|
+000010f0 ff 25 6a 3f 00 00 68 0c 00 00 00 e9 20 ff ff ff |.%j?..h..... ...|
+00001100 ff 25 62 3f 00 00 68 0d 00 00 00 e9 10 ff ff ff |.%b?..h.........|
+00001110 ff 25 5a 3f 00 00 68 0e 00 00 00 e9 00 ff ff ff |.%Z?..h.........|
+00001120 ff 25 52 3f 00 00 68 0f 00 00 00 e9 f0 fe ff ff |.%R?..h.........|
+00001130 ff 25 4a 3f 00 00 68 10 00 00 00 e9 e0 fe ff ff |.%J?..h.........|
+00001140 ff 25 42 3f 00 00 68 11 00 00 00 e9 d0 fe ff ff |.%B?..h.........|
+00001150 ff 25 3a 3f 00 00 68 12 00 00 00 e9 c0 fe ff ff |.%:?..h.........|
+00001160 ff 25 32 3f 00 00 68 13 00 00 00 e9 b0 fe ff ff |.%2?..h.........|
+00001170 ff 25 2a 3f 00 00 68 14 00 00 00 e9 a0 fe ff ff |.%*?..h.........|
+00001180 ff 25 22 3f 00 00 68 15 00 00 00 e9 90 fe ff ff |.%"?..h.........|
+00001190 f3 0f 1e fa 31 ed 49 89 d1 5e 48 89 e2 48 83 e4 |....1.I..^H..H..|
+000011a0 f0 50 54 45 31 c0 31 c9 48 c7 c7 76 12 40 00 ff |.PTE1.1.H..v.@..|
+000011b0 15 23 3e 00 00 f4 66 2e 0f 1f 84 00 00 00 00 00 |.#>...f.........|
+000011c0 f3 0f 1e fa c3 66 2e 0f 1f 84 00 00 00 00 00 90 |.....f..........|
+000011d0 b8 40 7d 40 00 48 3d 40 7d 40 00 74 13 b8 00 00 |.@}@.H=@}@.t....|
+000011e0 00 00 48 85 c0 74 09 bf 40 7d 40 00 ff e0 66 90 |..H..t..@}@...f.|
+000011f0 c3 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 |.ff...........@.|
+00001200 be 40 7d 40 00 48 81 ee 40 7d 40 00 48 89 f0 48 |.@}@.H..@}@.H..H|
+00001210 c1 ee 3f 48 c1 f8 03 48 01 c6 48 d1 fe 74 11 b8 |..?H...H..H..t..|
+00001220 00 00 00 00 48 85 c0 74 07 bf 40 7d 40 00 ff e0 |....H..t..@}@...|
+00001230 c3 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 |.ff...........@.|
+00001240 f3 0f 1e fa 80 3d fd 6a 00 00 00 75 13 55 48 89 |.....=.j...u.UH.|
+00001250 e5 e8 7a ff ff ff c6 05 eb 6a 00 00 01 5d c3 90 |..z......j...]..|
+00001260 c3 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 |.ff...........@.|
+00001270 f3 0f 1e fa eb 8a 55 48 89 e5 e8 64 03 00 00 e8 |......UH...d....|
+00001280 63 08 00 00 e9 39 03 00 00 bf 32 00 00 00 e8 3d |c....9....2....=|
+00001290 fe ff ff e9 08 03 00 00 8b 05 42 6d 00 00 3d 00 |..........Bm..=.|
+000012a0 01 00 00 74 0b 8b 05 35 6d 00 00 83 f8 0e 75 07 |...t...5m.....u.|
+000012b0 c6 05 12 6d 00 00 01 8b 05 23 6d 00 00 3d 00 03 |...m.....#m..=..|
+000012c0 00 00 0f 85 d8 02 00 00 c7 05 ee 6c 00 00 00 00 |...........l....|
+000012d0 00 00 8b 05 1c 6d 00 00 83 f8 71 75 07 c6 05 e5 |.....m....qu....|
+000012e0 6c 00 00 01 8b 05 0a 6d 00 00 83 f8 61 75 14 bf |l......m....au..|
+000012f0 10 30 40 00 e8 77 fe ff ff c7 05 bd 6c 00 00 01 |.0@..w......l...|
+00001300 00 00 00 8b 05 eb 6c 00 00 83 f8 69 75 19 bf 16 |......l....iu...|
+00001310 30 40 00 e8 58 fe ff ff c7 05 9e 6c 00 00 02 00 |0@..X......l....|
+00001320 00 00 e9 79 02 00 00 8b 05 c7 6c 00 00 83 f8 30 |...y......l....0|
+00001330 0f 8e 6a 02 00 00 8b 05 b8 6c 00 00 83 f8 36 0f |..j......l....6.|
+00001340 8f 5b 02 00 00 c6 05 7e 6c 00 00 00 c7 05 6a 6c |.[.....~l.....jl|
+00001350 00 00 03 00 00 00 e9 33 02 00 00 e8 53 03 00 00 |.......3....S...|
+00001360 bf e0 7f 40 00 e8 56 fd ff ff 8b 05 70 6c 00 00 |...@..V.....pl..|
+00001370 3d 00 03 00 00 0f 85 13 02 00 00 c7 05 3b 6c 00 |=............;l.|
+00001380 00 03 00 00 00 8b 05 69 6c 00 00 83 f8 63 75 50 |.......il....cuP|
+00001390 0f b7 05 61 6c 00 00 0f b7 c0 25 c0 00 00 00 85 |...al.....%.....|
+000013a0 c0 74 3d 8b 05 f7 6b 00 00 83 c0 0a 89 05 ee 6b |.t=...k........k|
+000013b0 00 00 8b 05 e8 6b 00 00 83 f8 44 76 0a c7 05 d9 |.....k....Dv....|
+000013c0 6b 00 00 00 00 00 00 8b 05 d3 6b 00 00 89 c7 e8 |k.........k.....|
+000013d0 60 03 00 00 c6 05 f0 6b 00 00 00 e9 ae 01 00 00 |`......k........|
+000013e0 8b 05 0e 6c 00 00 3d 50 00 00 40 75 2b c6 05 d7 |...l..=P..@u+...|
+000013f0 6b 00 00 00 8b 05 06 67 00 00 83 f8 70 75 05 e9 |k......g....pu..|
+00001400 8a 01 00 00 8b 05 f6 66 00 00 83 e8 0c 89 05 ed |.......f........|
+00001410 66 00 00 e9 76 01 00 00 8b 05 d6 6b 00 00 3d 4f |f...v......k..=O|
+00001420 00 00 40 75 2d c6 05 9f 6b 00 00 00 8b 05 ce 66 |..@u-...k......f|
+00001430 00 00 3d c4 00 00 00 75 05 e9 50 01 00 00 8b 05 |..=....u..P.....|
+00001440 bc 66 00 00 83 c0 0c 89 05 b3 66 00 00 e9 3c 01 |.f........f...<.|
+00001450 00 00 8b 05 9c 6b 00 00 83 f8 6e 75 34 bf 1b 30 |.....k....nu4..0|
+00001460 40 00 e8 09 fd ff ff 0f b6 05 5a 6b 00 00 0f b6 |@.........Zk....|
+00001470 c0 85 c0 0f 95 c0 83 f0 01 0f b6 c0 83 e0 01 88 |................|
+00001480 05 43 6b 00 00 c6 05 3f 6b 00 00 00 e9 fd 00 00 |.Ck....?k.......|
+00001490 00 8b 05 5d 6b 00 00 83 f8 72 75 3a 0f b7 05 55 |...]k....ru:...U|
+000014a0 6b 00 00 0f b7 c0 25 c0 00 00 00 85 c0 74 27 bf |k.....%......t'.|
+000014b0 2e 30 40 00 e8 b7 fc ff ff c6 05 0a 6b 00 00 01 |.0@.........k...|
+000014c0 c7 05 f6 6a 00 00 04 00 00 00 c6 05 fa 6a 00 00 |...j.........j..|
+000014d0 00 e9 b8 00 00 00 8b 05 18 6b 00 00 83 f8 72 75 |.........k....ru|
+000014e0 16 bf 36 30 40 00 e8 85 fc ff ff c6 05 d9 6a 00 |..60@.........j.|
+000014f0 00 00 e9 97 00 00 00 8b 05 f7 6a 00 00 83 f8 20 |..........j.... |
+00001500 75 13 bf 3d 30 40 00 e8 64 fc ff ff c6 05 b8 6a |u..=0@..d......j|
+00001510 00 00 00 eb 79 8b 05 d9 6a 00 00 83 f8 73 75 26 |....y...j....su&|
+00001520 0f b7 05 d1 6a 00 00 0f b7 c0 25 c0 00 00 00 85 |....j.....%.....|
+00001530 c0 74 13 bf 47 30 40 00 e8 33 fc ff ff c6 05 87 |.t..G0@..3......|
+00001540 6a 00 00 00 eb 48 8b 05 a8 6a 00 00 83 f8 70 75 |j....H...j....pu|
+00001550 3d 0f b6 05 73 6a 00 00 83 f0 01 84 c0 74 1d bf |=...sj.......t..|
+00001560 5b 30 40 00 e8 07 fc ff ff c7 05 4d 6a 00 00 05 |[0@........Mj...|
+00001570 00 00 00 c6 05 51 6a 00 00 01 eb 11 c6 05 48 6a |.....Qj.......Hj|
+00001580 00 00 00 c7 05 33 6a 00 00 03 00 00 00 90 0f b6 |.....3j.........|
+00001590 05 35 6a 00 00 83 f0 01 84 c0 0f 85 bb fd ff ff |.5j.............|
+000015a0 bf e0 7f 40 00 e8 16 fb ff ff 85 c0 0f 85 e6 fc |...@............|
+000015b0 ff ff 0f b6 05 10 6a 00 00 84 c0 75 19 e8 f1 00 |......j....u....|
+000015c0 00 00 0f b6 05 00 6a 00 00 83 f0 01 84 c0 0f 85 |......j.........|
+000015d0 b5 fc ff ff eb 01 90 e8 b8 00 00 00 b8 00 00 00 |................|
+000015e0 00 5d c3 55 48 89 e5 bf 31 f2 00 00 e8 0f fb ff |.].UH...1.......|
+000015f0 ff 41 b9 10 00 00 00 41 b8 20 03 00 00 b9 00 05 |.A.....A. ......|
+00001600 00 00 ba 00 00 ff 2f be 00 00 ff 2f bf 61 30 40 |....../..../.a0@|
+00001610 00 e8 3a fa ff ff 48 89 05 b3 69 00 00 48 8b 05 |..:...H...i..H..|
+00001620 ac 69 00 00 48 85 c0 75 28 e8 b2 fa ff ff 48 89 |.i..H..u(.....H.|
+00001630 c2 48 8b 05 08 67 00 00 be 70 30 40 00 48 89 c7 |.H...g...p0@.H..|
+00001640 b8 00 00 00 00 e8 16 fb ff ff b8 01 00 00 00 eb |................|
+00001650 41 48 8b 05 78 69 00 00 ba 06 00 00 00 be 00 00 |AH..xi..........|
+00001660 00 00 48 89 c7 e8 d6 f9 ff ff 48 89 05 67 69 00 |..H.......H..gi.|
+00001670 00 48 8b 05 60 69 00 00 f3 0f 10 0d 74 1a 00 00 |.H..`i......t...|
+00001680 8b 15 6e 1a 00 00 66 0f 6e c2 48 89 c7 e8 ee fa |..n...f.n.H.....|
+00001690 ff ff 5d c3 55 48 89 e5 48 8b 05 31 69 00 00 48 |..].UH..H..1i..H|
+000016a0 89 c7 e8 89 f9 ff ff e8 b4 f9 ff ff b8 00 00 00 |................|
+000016b0 00 5d c3 55 48 89 e5 8b 05 e3 68 00 00 89 c7 e8 |.].UH.....h.....|
+000016c0 70 00 00 00 8b 05 f6 68 00 00 83 f8 05 77 3f 89 |p......h.....w?.|
+000016d0 c0 48 8b 04 c5 98 30 40 00 ff e0 e8 8b 09 00 00 |.H....0@........|
+000016e0 eb 2c e8 5a 06 00 00 eb 25 e8 3c 07 00 00 eb 1e |.,.Z....%.<.....|
+000016f0 e8 42 05 00 00 eb 17 e8 3b 05 00 00 e8 12 08 00 |.B......;.......|
+00001700 00 eb 0b e8 2f 05 00 00 e8 b2 08 00 00 90 e8 45 |..../..........E|
+00001710 04 00 00 e8 3c 0a 00 00 e8 ad 0b 00 00 e8 c5 0c |....<...........|
+00001720 00 00 48 8b 05 af 68 00 00 48 89 c7 e8 3f f9 ff |..H...h..H...?..|
+00001730 ff 90 5d c3 55 48 89 e5 48 83 ec 10 89 7d fc c7 |..].UH..H....}..|
+00001740 05 63 68 00 00 00 00 00 00 c7 05 55 68 00 00 00 |.ch........Uh...|
+00001750 00 00 00 e9 d2 00 00 00 8b 05 4a 68 00 00 89 c2 |..........Jh....|
+00001760 8b 45 fc 01 d0 89 c0 8b 04 85 e0 7b 40 00 0f b6 |.E.........{@...|
+00001770 c8 8b 05 31 68 00 00 89 c2 8b 45 fc 01 d0 89 c0 |...1h.....E.....|
+00001780 8b 04 85 e0 7b 40 00 c1 f8 08 0f b6 d0 8b 05 15 |....{@..........|
+00001790 68 00 00 89 c6 8b 45 fc 01 f0 89 c0 8b 04 85 e0 |h.....E.........|
+000017a0 7b 40 00 c1 f8 10 0f b6 f0 48 8b 05 28 68 00 00 |{@.......H..(h..|
+000017b0 41 b8 ff 00 00 00 48 89 c7 e8 92 f9 ff ff c7 05 |A.....H.........|
+000017c0 dc 67 00 00 00 00 00 00 eb 46 8b 0d dc 67 00 00 |.g.......F...g..|
+000017d0 8b 15 d6 67 00 00 48 8b 05 fb 67 00 00 41 89 c8 |...g..H...g..A..|
+000017e0 b9 3f 01 00 00 be 00 00 00 00 48 89 c7 e8 9e f8 |.?........H.....|
+000017f0 ff ff 8b 05 b4 67 00 00 83 c0 01 89 05 ab 67 00 |.....g........g.|
+00001800 00 8b 05 9d 67 00 00 83 c0 01 89 05 94 67 00 00 |....g........g..|
+00001810 8b 05 8e 67 00 00 83 f8 13 7e af 8b 05 87 67 00 |...g.....~....g.|
+00001820 00 83 c0 01 89 05 7e 67 00 00 8b 05 78 67 00 00 |......~g....xg..|
+00001830 83 f8 09 0f 8e 1f ff ff ff c7 05 69 67 00 00 00 |...........ig...|
+00001840 00 00 00 48 8b 05 8e 67 00 00 41 b8 ff 00 00 00 |...H...g..A.....|
+00001850 b9 99 00 00 00 ba 99 00 00 00 be 99 00 00 00 48 |...............H|
+00001860 89 c7 e8 e9 f8 ff ff c7 05 33 67 00 00 00 00 00 |.........3g.....|
+00001870 00 eb 46 8b 15 33 67 00 00 8b 35 2d 67 00 00 48 |..F..3g...5-g..H|
+00001880 8b 05 52 67 00 00 41 b8 c7 00 00 00 89 d1 ba 00 |..Rg..A.........|
+00001890 00 00 00 48 89 c7 e8 f5 f7 ff ff 8b 05 0b 67 00 |...H..........g.|
+000018a0 00 83 c0 14 89 05 02 67 00 00 8b 05 f4 66 00 00 |.......g.....f..|
+000018b0 83 c0 01 89 05 eb 66 00 00 8b 05 e5 66 00 00 83 |......f.....f...|
+000018c0 f8 0f 7e af c7 05 de 66 00 00 00 00 00 00 c7 05 |..~....f........|
+000018d0 cc 66 00 00 00 00 00 00 eb 46 8b 0d cc 66 00 00 |.f.......F...f..|
+000018e0 8b 15 c6 66 00 00 48 8b 05 eb 66 00 00 41 89 c8 |...f..H...f..A..|
+000018f0 b9 3f 01 00 00 be 00 00 00 00 48 89 c7 e8 8e f7 |.?........H.....|
+00001900 ff ff 8b 05 a4 66 00 00 83 c0 14 89 05 9b 66 00 |.....f........f.|
+00001910 00 8b 05 8d 66 00 00 83 c0 01 89 05 84 66 00 00 |....f........f..|
+00001920 8b 05 7e 66 00 00 83 f8 09 7e af c7 05 77 66 00 |..~f.....~...wf.|
+00001930 00 13 00 00 00 48 8b 05 9c 66 00 00 41 b8 ff 00 |.....H...f..A...|
+00001940 00 00 b9 00 00 00 00 ba 00 00 00 00 be 00 00 00 |................|
+00001950 00 48 89 c7 e8 f7 f7 ff ff c7 05 41 66 00 00 00 |.H.........Af...|
+00001960 00 00 00 eb 46 8b 15 41 66 00 00 8b 35 3b 66 00 |....F..Af...5;f.|
+00001970 00 48 8b 05 60 66 00 00 41 b8 c7 00 00 00 89 d1 |.H..`f..A.......|
+00001980 ba 00 00 00 00 48 89 c7 e8 03 f7 ff ff 8b 05 19 |.....H..........|
+00001990 66 00 00 83 c0 14 89 05 10 66 00 00 8b 05 02 66 |f........f.....f|
+000019a0 00 00 83 c0 01 89 05 f9 65 00 00 8b 05 f3 65 00 |........e.....e.|
+000019b0 00 83 f8 0f 7e af c7 05 ec 65 00 00 13 00 00 00 |....~....e......|
+000019c0 c7 05 da 65 00 00 00 00 00 00 eb 46 8b 0d da 65 |...e.......F...e|
+000019d0 00 00 8b 15 d4 65 00 00 48 8b 05 f9 65 00 00 41 |.....e..H...e..A|
+000019e0 89 c8 b9 3f 01 00 00 be 00 00 00 00 48 89 c7 e8 |...?........H...|
+000019f0 9c f6 ff ff 8b 05 b2 65 00 00 83 c0 14 89 05 a9 |.......e........|
+00001a00 65 00 00 8b 05 9b 65 00 00 83 c0 01 89 05 92 65 |e.....e........e|
+00001a10 00 00 8b 05 8c 65 00 00 83 f8 09 7e af c7 05 95 |.....e.....~....|
+00001a20 65 00 00 00 00 00 00 48 8b 05 aa 65 00 00 41 b8 |e......H...e..A.|
+00001a30 ff 00 00 00 b9 ff 00 00 00 ba ff 00 00 00 be ff |................|
+00001a40 00 00 00 48 89 c7 e8 05 f7 ff ff c7 05 53 65 00 |...H.........Se.|
+00001a50 00 00 00 00 00 eb 7a c7 05 4b 65 00 00 00 00 00 |......z..Ke.....|
+00001a60 00 c7 05 39 65 00 00 00 00 00 00 eb 3b 8b 15 49 |...9e.......;..I|
+00001a70 65 00 00 8b 0d 33 65 00 00 48 8b 05 58 65 00 00 |e....3e..H..Xe..|
+00001a80 89 ce 48 89 c7 e8 86 f6 ff ff 8b 05 1c 65 00 00 |..H..........e..|
+00001a90 83 c0 14 89 05 13 65 00 00 8b 05 05 65 00 00 83 |......e.....e...|
+00001aa0 c0 01 89 05 fc 64 00 00 8b 05 f6 64 00 00 83 f8 |.....d.....d....|
+00001ab0 0f 7e ba 8b 05 03 65 00 00 83 c0 14 89 05 fa 64 |.~....e........d|
+00001ac0 00 00 8b 05 e0 64 00 00 83 c0 01 89 05 d7 64 00 |.....d........d.|
+00001ad0 00 8b 05 d1 64 00 00 83 f8 09 0f 8e 77 ff ff ff |....d.......w...|
+00001ae0 b8 00 00 00 00 c9 c3 55 48 89 e5 be e4 10 00 00 |.......UH.......|
+00001af0 bf e0 50 40 00 e8 86 f5 ff ff 48 89 05 17 65 00 |..P@......H...e.|
+00001b00 00 48 8b 05 10 65 00 00 48 89 c7 e8 90 f5 ff ff |.H...e..H.......|
+00001b10 48 89 05 09 65 00 00 48 8b 15 02 65 00 00 48 8b |H...e..H...e..H.|
+00001b20 05 b3 64 00 00 48 89 d6 48 89 c7 e8 10 f6 ff ff |..d..H..H.......|
+00001b30 48 89 05 f1 64 00 00 48 8b 05 e2 64 00 00 48 89 |H...d..H...d..H.|
+00001b40 c7 e8 da f5 ff ff 48 c7 05 cf 64 00 00 00 00 00 |......H...d.....|
+00001b50 00 b8 00 00 00 00 5d c3 55 48 89 e5 48 8b 35 c5 |......].UH..H.5.|
+00001b60 64 00 00 48 8b 05 6e 64 00 00 b9 20 7b 40 00 ba |d..H..nd... {@..|
+00001b70 10 7b 40 00 48 89 c7 e8 b4 f5 ff ff 48 8b 05 55 |.{@.H.......H..U|
+00001b80 64 00 00 41 b8 ff 00 00 00 b9 00 00 00 00 ba 00 |d..A............|
+00001b90 00 00 00 be 00 00 00 00 48 89 c7 e8 b0 f5 ff ff |........H.......|
+00001ba0 48 8b 05 31 64 00 00 41 b8 be 00 00 00 b9 34 01 |H..1d..A......4.|
+00001bb0 00 00 ba be 00 00 00 be ea 00 00 00 48 89 c7 e8 |............H...|
+00001bc0 cc f4 ff ff 48 8b 05 0d 64 00 00 41 b8 bf 00 00 |....H...d..A....|
+00001bd0 00 b9 35 01 00 00 ba bf 00 00 00 be ea 00 00 00 |..5.............|
+00001be0 48 89 c7 e8 a8 f4 ff ff 48 8b 05 e9 63 00 00 41 |H.......H...c..A|
+00001bf0 b8 8c 00 00 00 b9 34 01 00 00 ba be 00 00 00 be |......4.........|
+00001c00 34 01 00 00 48 89 c7 e8 84 f4 ff ff 48 8b 05 c5 |4...H.......H...|
+00001c10 63 00 00 41 b8 8c 00 00 00 b9 35 01 00 00 ba bf |c..A......5.....|
+00001c20 00 00 00 be 35 01 00 00 48 89 c7 e8 60 f4 ff ff |....5...H...`...|
+00001c30 b8 00 00 00 00 5d c3 55 48 89 e5 48 8b 05 96 63 |.....].UH..H...c|
+00001c40 00 00 41 b8 ff 00 00 00 b9 00 00 00 00 ba 00 00 |..A.............|
+00001c50 00 00 be 00 00 00 00 48 89 c7 e8 f1 f4 ff ff 48 |.......H.......H|
+00001c60 8b 05 72 63 00 00 be 30 7b 40 00 48 89 c7 e8 3d |..rc...0{@.H...=|
+00001c70 f4 ff ff 48 8b 05 5e 63 00 00 41 b8 ff 00 00 00 |...H..^c..A.....|
+00001c80 b9 ff 00 00 00 ba ff 00 00 00 be ff 00 00 00 48 |...............H|
+00001c90 89 c7 e8 b9 f4 ff ff 48 8b 05 3a 63 00 00 be 40 |.......H..:c...@|
+00001ca0 7b 40 00 48 89 c7 e8 45 f4 ff ff 8b 05 13 63 00 |{@.H...E......c.|
+00001cb0 00 83 f8 11 7e 0a c7 05 04 63 00 00 00 00 00 00 |....~....c......|
+00001cc0 c7 05 da 62 00 00 00 00 00 00 eb 64 8b 05 2e 5e |...b.......d...^|
+00001cd0 00 00 89 05 e8 5e 00 00 8b 15 e6 62 00 00 89 d0 |.....^.....b....|
+00001ce0 c1 e0 02 01 d0 01 c0 01 d0 83 c0 01 89 05 d2 5e |...............^|
+00001cf0 00 00 48 8b 35 2f 63 00 00 48 8b 05 d8 62 00 00 |..H.5/c..H...b..|
+00001d00 b9 c0 7b 40 00 ba b0 7b 40 00 48 89 c7 e8 1e f4 |..{@...{@.H.....|
+00001d10 ff ff 8b 05 ac 62 00 00 83 c0 01 89 05 a3 62 00 |.....b........b.|
+00001d20 00 8b 05 7d 62 00 00 83 c0 01 89 05 74 62 00 00 |...}b.......tb..|
+00001d30 8b 05 6e 62 00 00 85 c0 7e 92 b8 00 00 00 00 5d |..nb....~......]|
+00001d40 c3 55 48 89 e5 48 8b 05 8c 62 00 00 41 b8 ff 00 |.UH..H...b..A...|
+00001d50 00 00 b9 00 00 00 00 ba 00 00 00 00 be 00 00 00 |................|
+00001d60 00 48 89 c7 e8 e7 f3 ff ff 48 8b 05 68 62 00 00 |.H.......H..hb..|
+00001d70 be 30 7b 40 00 48 89 c7 e8 33 f3 ff ff 48 8b 05 |.0{@.H...3...H..|
+00001d80 54 62 00 00 41 b8 ff 00 00 00 b9 ff 00 00 00 ba |Tb..A...........|
+00001d90 ff 00 00 00 be ff 00 00 00 48 89 c7 e8 af f3 ff |.........H......|
+00001da0 ff 48 8b 05 30 62 00 00 be 40 7b 40 00 48 89 c7 |.H..0b...@{@.H..|
+00001db0 e8 3b f3 ff ff c7 05 f9 61 00 00 00 00 00 00 eb |.;......a.......|
+00001dc0 57 8b 15 f1 61 00 00 89 d0 c1 e0 02 01 d0 01 c0 |W...a...........|
+00001dd0 8d 0c 10 8b 05 df 61 00 00 48 98 8b 14 c5 24 65 |......a..H....$e|
+00001de0 40 00 8b 05 d0 61 00 00 48 98 8b 04 c5 20 65 40 |@....a..H.... e@|
+00001df0 00 41 b9 00 00 00 00 41 b8 0b 00 00 00 89 c6 bf |.A.....A........|
+00001e00 e0 61 40 00 e8 54 07 00 00 8b 05 a9 61 00 00 83 |.a@..T......a...|
+00001e10 c0 01 89 05 a0 61 00 00 8b 05 9a 61 00 00 83 f8 |.....a.....a....|
+00001e20 0c 7e 9e b8 00 00 00 00 5d c3 55 48 89 e5 48 8b |.~......].UH..H.|
+00001e30 05 a3 61 00 00 41 b8 ff 00 00 00 b9 00 00 00 00 |..a..A..........|
+00001e40 ba 00 00 00 00 be 00 00 00 00 48 89 c7 e8 fe f2 |..........H.....|
+00001e50 ff ff 48 8b 05 7f 61 00 00 be 30 7b 40 00 48 89 |..H...a...0{@.H.|
+00001e60 c7 e8 4a f2 ff ff 48 8b 05 6b 61 00 00 41 b8 ff |..J...H..ka..A..|
+00001e70 00 00 00 b9 ff 00 00 00 ba ff 00 00 00 be ff 00 |................|
+00001e80 00 00 48 89 c7 e8 c6 f2 ff ff 48 8b 05 47 61 00 |..H.......H..Ga.|
+00001e90 00 be 40 7b 40 00 48 89 c7 e8 52 f2 ff ff c7 05 |..@{@.H...R.....|
+00001ea0 10 61 00 00 00 00 00 00 eb 57 8b 15 08 61 00 00 |.a.......W...a..|
+00001eb0 89 d0 c1 e0 02 01 d0 01 c0 8d 0c 10 8b 05 f6 60 |...............`|
+00001ec0 00 00 48 98 8b 14 c5 e4 65 40 00 8b 05 e7 60 00 |..H.....e@....`.|
+00001ed0 00 48 98 8b 04 c5 e0 65 40 00 41 b9 00 00 00 00 |.H.....e@.A.....|
+00001ee0 41 b8 0b 00 00 00 89 c6 bf c0 63 40 00 e8 6b 06 |A.........c@..k.|
+00001ef0 00 00 8b 05 c0 60 00 00 83 c0 01 89 05 b7 60 00 |.....`........`.|
+00001f00 00 8b 05 b1 60 00 00 83 f8 0a 7e 9e b8 00 00 00 |....`.....~.....|
+00001f10 00 5d c3 55 48 89 e5 48 8b 05 ba 60 00 00 41 b8 |.].UH..H...`..A.|
+00001f20 ff 00 00 00 b9 ff 00 00 00 ba ff 00 00 00 be ff |................|
+00001f30 00 00 00 48 89 c7 e8 15 f2 ff ff 48 8b 05 96 60 |...H.......H...`|
+00001f40 00 00 be d0 7b 40 00 48 89 c7 e8 61 f1 ff ff c7 |....{@.H...a....|
+00001f50 05 5f 60 00 00 00 00 00 00 eb 53 8b 15 57 60 00 |._`.......S..W`.|
+00001f60 00 89 d0 c1 e0 03 8d 0c 10 8b 05 49 60 00 00 48 |...........I`..H|
+00001f70 98 8b 14 c5 64 64 40 00 8b 05 3a 60 00 00 48 98 |....dd@...:`..H.|
+00001f80 8b 04 c5 60 64 40 00 41 b9 01 00 00 00 41 b8 09 |...`d@.A.....A..|
+00001f90 00 00 00 89 c6 bf 40 64 40 00 e8 be 05 00 00 8b |......@d@.......|
+00001fa0 05 13 60 00 00 83 c0 01 89 05 0a 60 00 00 8b 05 |..`........`....|
+00001fb0 04 60 00 00 85 c0 7e a3 b8 00 00 00 00 5d c3 55 |.`....~......].U|
+00001fc0 48 89 e5 48 8b 05 0e 60 00 00 41 b8 ff 00 00 00 |H..H...`..A.....|
+00001fd0 b9 ff 00 00 00 ba ff 00 00 00 be ff 00 00 00 48 |...............H|
+00001fe0 89 c7 e8 69 f1 ff ff 48 8b 05 ea 5f 00 00 be d0 |...i...H..._....|
+00001ff0 7b 40 00 48 89 c7 e8 b5 f0 ff ff c7 05 b3 5f 00 |{@.H.........._.|
+00002000 00 00 00 00 00 eb 53 8b 15 ab 5f 00 00 89 d0 c1 |......S..._.....|
+00002010 e0 03 8d 0c 10 8b 05 9d 5f 00 00 48 98 8b 14 c5 |........_..H....|
+00002020 6c 64 40 00 8b 05 8e 5f 00 00 48 98 8b 04 c5 68 |ld@...._..H....h|
+00002030 64 40 00 41 b9 01 00 00 00 41 b8 09 00 00 00 89 |d@.A.....A......|
+00002040 c6 bf 50 64 40 00 e8 12 05 00 00 8b 05 67 5f 00 |..Pd@........g_.|
+00002050 00 83 c0 01 89 05 5e 5f 00 00 8b 05 58 5f 00 00 |......^_....X_..|
+00002060 85 c0 7e a3 b8 00 00 00 00 5d c3 55 48 89 e5 48 |..~......].UH..H|
+00002070 8b 05 62 5f 00 00 41 b8 ff 00 00 00 b9 00 00 00 |..b_..A.........|
+00002080 00 ba 00 00 00 00 be 00 00 00 00 48 89 c7 e8 bd |...........H....|
+00002090 f0 ff ff 48 8b 05 3e 5f 00 00 be 30 7b 40 00 48 |...H..>_...0{@.H|
+000020a0 89 c7 e8 09 f0 ff ff 48 8b 05 2a 5f 00 00 41 b8 |.......H..*_..A.|
+000020b0 ff 00 00 00 b9 ff 00 00 00 ba ff 00 00 00 be ff |................|
+000020c0 00 00 00 48 89 c7 e8 85 f0 ff ff 48 8b 05 06 5f |...H.......H..._|
+000020d0 00 00 be 40 7b 40 00 48 89 c7 e8 11 f0 ff ff c7 |...@{@.H........|
+000020e0 05 cf 5e 00 00 00 00 00 00 eb 57 8b 15 c7 5e 00 |..^.......W...^.|
+000020f0 00 89 d0 c1 e0 02 01 d0 01 c0 8d 0c 10 8b 05 b5 |................|
+00002100 5e 00 00 48 98 8b 14 c5 44 66 40 00 8b 05 a6 5e |^..H....Df@....^|
+00002110 00 00 48 98 8b 04 c5 40 66 40 00 41 b9 00 00 00 |..H....@f@.A....|
+00002120 00 41 b8 0b 00 00 00 89 c6 bf 40 63 40 00 e8 2a |.A........@c@..*|
+00002130 04 00 00 8b 05 7f 5e 00 00 83 c0 01 89 05 76 5e |......^.......v^|
+00002140 00 00 8b 05 70 5e 00 00 83 f8 09 7e 9e b8 00 00 |....p^.....~....|
+00002150 00 00 5d c3 55 48 89 e5 48 8b 05 79 5e 00 00 41 |..].UH..H..y^..A|
+00002160 b8 ff 00 00 00 b9 ff 00 00 00 ba ff 00 00 00 be |................|
+00002170 ff 00 00 00 48 89 c7 e8 d4 ef ff ff 48 8b 05 55 |....H.......H..U|
+00002180 5e 00 00 be 50 7b 40 00 48 89 c7 e8 20 ef ff ff |^...P{@.H... ...|
+00002190 48 8b 05 41 5e 00 00 41 b8 ff 00 00 00 b9 00 00 |H..A^..A........|
+000021a0 00 00 ba 00 00 00 00 be 00 00 00 00 48 89 c7 e8 |............H...|
+000021b0 9c ef ff ff 48 8b 05 1d 5e 00 00 be 60 7b 40 00 |....H...^...`{@.|
+000021c0 48 89 c7 e8 28 ef ff ff 48 8b 05 09 5e 00 00 41 |H...(...H...^..A|
+000021d0 b8 4a 00 00 00 b9 34 01 00 00 ba 4a 00 00 00 be |.J....4....J....|
+000021e0 ea 00 00 00 48 89 c7 e8 a4 ee ff ff 48 8b 05 e5 |....H.......H...|
+000021f0 5d 00 00 41 b8 4b 00 00 00 b9 35 01 00 00 ba 4b |]..A.K....5....K|
+00002200 00 00 00 be ea 00 00 00 48 89 c7 e8 80 ee ff ff |........H.......|
+00002210 48 8b 05 c1 5d 00 00 41 b8 0a 00 00 00 b9 34 01 |H...]..A......4.|
+00002220 00 00 ba 4b 00 00 00 be 34 01 00 00 48 89 c7 e8 |...K....4...H...|
+00002230 5c ee ff ff 48 8b 05 9d 5d 00 00 41 b8 0a 00 00 |\...H...]..A....|
+00002240 00 b9 35 01 00 00 ba 4a 00 00 00 be 35 01 00 00 |..5....J....5...|
+00002250 48 89 c7 e8 38 ee ff ff c7 05 56 5d 00 00 00 00 |H...8.....V]....|
+00002260 00 00 eb 54 8b 15 4e 5d 00 00 89 d0 c1 e0 03 29 |...T..N].......)|
+00002270 d0 89 c1 8b 05 3f 5d 00 00 48 98 8b 14 c5 a4 65 |.....?]..H.....e|
+00002280 40 00 8b 05 30 5d 00 00 48 98 8b 04 c5 a0 65 40 |@...0]..H.....e@|
+00002290 00 41 b9 01 00 00 00 41 b8 07 00 00 00 89 c6 bf |.A.....A........|
+000022a0 00 63 40 00 e8 b4 02 00 00 8b 05 09 5d 00 00 83 |.c@.........]...|
+000022b0 c0 01 89 05 00 5d 00 00 8b 05 fa 5c 00 00 83 f8 |.....].....\....|
+000022c0 05 7e a1 b8 00 00 00 00 5d c3 55 48 89 e5 0f b6 |.~......].UH....|
+000022d0 05 f3 5c 00 00 83 f0 01 84 c0 0f 85 00 01 00 00 |..\.............|
+000022e0 48 8b 05 f1 5c 00 00 41 b8 ff 00 00 00 b9 ff 00 |H...\..A........|
+000022f0 00 00 ba ff 00 00 00 be ff 00 00 00 48 89 c7 e8 |............H...|
+00002300 4c ee ff ff 48 8b 05 cd 5c 00 00 be 70 7b 40 00 |L...H...\...p{@.|
+00002310 48 89 c7 e8 98 ed ff ff 48 8b 05 b9 5c 00 00 41 |H.......H...\..A|
+00002320 b8 ff 00 00 00 b9 00 00 00 00 ba 00 00 00 00 be |................|
+00002330 00 00 00 00 48 89 c7 e8 14 ee ff ff 48 8b 05 95 |....H.......H...|
+00002340 5c 00 00 be 80 7b 40 00 48 89 c7 e8 a0 ed ff ff |\....{@.H.......|
+00002350 48 8b 05 81 5c 00 00 41 b8 7c 00 00 00 b9 14 01 |H...\..A.|......|
+00002360 00 00 ba 7c 00 00 00 be 03 01 00 00 48 89 c7 e8 |...|........H...|
+00002370 1c ed ff ff 48 8b 05 5d 5c 00 00 41 b8 7d 00 00 |....H..]\..A.}..|
+00002380 00 b9 15 01 00 00 ba 7d 00 00 00 be 03 01 00 00 |.......}........|
+00002390 48 89 c7 e8 f8 ec ff ff 48 8b 05 39 5c 00 00 41 |H.......H..9\..A|
+000023a0 b8 59 00 00 00 b9 14 01 00 00 ba 7c 00 00 00 be |.Y.........|....|
+000023b0 14 01 00 00 48 89 c7 e8 d4 ec ff ff 48 8b 05 15 |....H.......H...|
+000023c0 5c 00 00 41 b8 59 00 00 00 b9 15 01 00 00 ba 7d |\..A.Y.........}|
+000023d0 00 00 00 be 15 01 00 00 48 89 c7 e8 b0 ec ff ff |........H.......|
+000023e0 b8 00 00 00 00 5d c3 55 48 89 e5 48 8b 05 e6 5b |.....].UH..H...[|
+000023f0 00 00 41 b8 ff 00 00 00 b9 ff 00 00 00 ba ff 00 |..A.............|
+00002400 00 00 be ff 00 00 00 48 89 c7 e8 41 ed ff ff 48 |.......H...A...H|
+00002410 8b 05 c2 5b 00 00 be 90 7b 40 00 48 89 c7 e8 8d |...[....{@.H....|
+00002420 ec ff ff 48 8b 05 ae 5b 00 00 41 b8 ff 00 00 00 |...H...[..A.....|
+00002430 b9 00 00 00 00 ba 00 00 00 00 be 00 00 00 00 48 |...............H|
+00002440 89 c7 e8 09 ed ff ff 48 8b 05 8a 5b 00 00 be a0 |.......H...[....|
+00002450 7b 40 00 48 89 c7 e8 95 ec ff ff 48 8b 05 76 5b |{@.H.......H..v[|
+00002460 00 00 41 b8 c2 00 00 00 b9 5a 00 00 00 ba c2 00 |..A......Z......|
+00002470 00 00 be 11 00 00 00 48 89 c7 e8 11 ec ff ff 48 |.......H.......H|
+00002480 8b 05 52 5b 00 00 41 b8 c3 00 00 00 b9 5b 00 00 |..R[..A......[..|
+00002490 00 ba c3 00 00 00 be 11 00 00 00 48 89 c7 e8 ed |...........H....|
+000024a0 eb ff ff 48 8b 05 2e 5b 00 00 41 b8 0a 00 00 00 |...H...[..A.....|
+000024b0 b9 5a 00 00 00 ba c2 00 00 00 be 5a 00 00 00 48 |.Z.........Z...H|
+000024c0 89 c7 e8 c9 eb ff ff 48 8b 05 0a 5b 00 00 41 b8 |.......H...[..A.|
+000024d0 0a 00 00 00 b9 5b 00 00 00 ba c3 00 00 00 be 5b |.....[.........[|
+000024e0 00 00 00 48 89 c7 e8 a5 eb ff ff c7 05 c3 5a 00 |...H..........Z.|
+000024f0 00 00 00 00 00 eb 54 8b 15 bb 5a 00 00 89 d0 c1 |......T...Z.....|
+00002500 e0 03 29 d0 89 c1 8b 05 ac 5a 00 00 48 98 8b 14 |..)......Z..H...|
+00002510 c5 84 64 40 00 8b 05 9d 5a 00 00 48 98 8b 04 c5 |..d@....Z..H....|
+00002520 80 64 40 00 41 b9 01 00 00 00 41 b8 07 00 00 00 |.d@.A.....A.....|
+00002530 89 c6 bf 80 62 40 00 e8 21 00 00 00 8b 05 76 5a |....b@..!.....vZ|
+00002540 00 00 83 c0 01 89 05 6d 5a 00 00 8b 05 67 5a 00 |.......mZ....gZ.|
+00002550 00 83 f8 11 7e a1 b8 00 00 00 00 5d c3 55 48 89 |....~......].UH.|
+00002560 e5 48 83 ec 50 48 89 7d c8 89 75 c4 89 55 c0 89 |.H..PH.}..u..U..|
+00002570 4d bc 44 89 45 b8 44 89 c8 88 45 b4 c7 05 22 5a |M.D.E.D...E..."Z|
+00002580 00 00 00 00 00 00 80 7d b4 00 74 09 c7 45 fc 02 |.......}..t..E..|
+00002590 00 00 00 eb 07 c7 45 fc 00 00 00 00 c7 05 fe 59 |......E........Y|
+000025a0 00 00 00 00 00 00 e9 d7 00 00 00 8b 15 f7 59 00 |..............Y.|
+000025b0 00 8b 45 c4 01 d0 89 45 e0 8b 45 c0 89 45 e4 c7 |..E....E..E..E..|
+000025c0 45 e8 08 00 00 00 c7 45 ec 05 00 00 00 8b 15 d1 |E......E........|
+000025d0 59 00 00 8b 45 bc 01 d0 48 63 d0 48 8b 45 c8 48 |Y...E...Hc.H.E.H|
+000025e0 01 d0 0f b6 00 0f be d0 8b 45 fc 48 98 48 63 d2 |.........E.H.Hc.|
+000025f0 48 c1 e2 02 48 01 d0 8b 04 85 a0 66 40 00 89 45 |H...H......f@..E|
+00002600 d0 8b 15 9d 59 00 00 8b 45 bc 01 d0 48 63 d0 48 |....Y...E...Hc.H|
+00002610 8b 45 c8 48 01 d0 0f b6 00 0f be d0 8b 45 fc 83 |.E.H.........E..|
+00002620 c0 01 48 98 48 63 d2 48 c1 e2 02 48 01 d0 8b 04 |..H.Hc.H...H....|
+00002630 85 a0 66 40 00 89 45 d4 c7 45 d8 08 00 00 00 c7 |..f@..E..E......|
+00002640 45 dc 05 00 00 00 48 8b 35 db 59 00 00 48 8b 05 |E.....H.5.Y..H..|
+00002650 84 59 00 00 48 8d 4d e0 48 8d 55 d0 48 89 c7 e8 |.Y..H.M.H.U.H...|
+00002660 cc ea ff ff 8b 05 3e 59 00 00 83 c0 08 89 05 35 |......>Y.......5|
+00002670 59 00 00 8b 05 2b 59 00 00 83 c0 01 89 05 22 59 |Y....+Y......."Y|
+00002680 00 00 8b 05 1c 59 00 00 39 45 b8 0f 8f 1a ff ff |.....Y..9E......|
+00002690 ff b8 00 00 00 00 c9 c3 55 48 89 e5 eb 14 8b 05 |........UH......|
+000026a0 3c 59 00 00 3d 00 03 00 00 75 07 b8 00 00 00 00 |'|
+000043b0 9a 3e 4d a7 86 53 47 30 2d 04 53 5f 30 ad 04 d3 |.>M..SG0-.S_0...|
+000043c0 4c 30 4d e4 6e f7 87 fb 13 06 d5 c9 9c 33 a8 45 |L0M.n........3.E|
+000043d0 3d c2 a0 fa f9 0b 06 b5 1a 9e 31 a8 59 e5 94 41 |=.........1.Y..A|
+000043e0 4d 78 52 3a 59 8c 67 d1 c0 78 fa 05 8c 67 35 c2 |MxR:Y.g..x...g5.|
+000043f0 78 66 55 8c 67 52 9a 3a 4e 0e 56 88 e6 29 f3 fb |xfU.gR.:N.V..)..|
+00004400 c2 d6 fe 5b cf be ef f1 bb 1e 03 d7 c0 c5 3f 15 |...[..........?.|
+00004410 99 6b fc 54 f2 df fc 6b 14 fb 53 77 73 ed d4 bf |.k.T...k..Sws...|
+00004420 7a d9 bc 8d ff a5 07 c5 5e fa 3f bd 1e df 25 ff |z.......^.?...%.|
+00004430 d1 f3 da 4d e2 6f 3d 2d 5f 0b a7 ac 70 6a 08 a7 |...M.o=-_...pj..|
+00004440 82 70 1a 09 a7 aa 70 2a c9 70 ae 0e f7 ed 2c df |.p....p*.p....,.|
+00004450 26 76 db e0 db a4 7a 05 be 4d fc 6e c4 b7 49 df |&v....z..M.n..I.|
+00004460 54 f9 36 c9 eb 12 df 26 11 d3 9d 2c 8f 47 2f 1a |T.6....&...,.G/.|
+00004470 3c 1e dd 2f f0 78 f4 6a c4 e3 d1 b3 2a 8f 47 4f |<../.x.j....*.GO|
+00004480 4a e5 6b f3 dd 95 01 10 2a 5c 84 85 79 01 82 fb |J.k.....*\..y...|
+00004490 e9 5e 8c 03 77 92 17 20 ba 9f ee c5 ff 9d e3 78 |.^..w.. .......x|
+000044a0 ea 70 2e bc 2c 17 9c 0b 8f 83 3e e7 c2 eb 7a c5 |.p..,.....>...z.|
+000044b0 b9 f0 3c 9f 71 2e 3c 4d 27 93 70 9c 5a 51 e6 81 |..<.q..D...{...|
+000045e0 9c 76 eb 13 02 c5 d6 27 13 43 3b f5 c9 04 9a e1 |.v.....'.C;.....|
+000045f0 d4 01 82 dc 02 08 9a 7d 20 28 ae 80 60 3c 03 82 |.......} (..`<..|
+00004600 da 04 08 42 72 32 f9 75 28 9e 3a 99 6e f7 24 bb |...Br2.u(.:.n.$.|
+00004610 a8 2f 97 e7 8d 7e 7e 30 88 14 56 c3 f5 fa 62 34 |./...~~0..V...b4|
+00004620 ab cc e7 67 d5 c9 e5 74 7a 2a 9c fe 14 4e ff 0a |...g...tz*...N..|
+00004630 a7 bf 84 d3 7f c2 e9 1f e1 f4 f7 47 9c 52 bc 24 |...........G.R.$|
+00004640 f9 e1 34 18 f4 62 cc e9 97 d7 bb 5c 8e 23 bd d3 |..4..b.....\.#..|
+00004650 6c 72 a4 2f 8a 45 8e f4 fe 78 cc 91 be aa d5 38 |lr./.E...x.....8|
+00004660 d2 67 e5 32 47 fa e4 73 f1 b4 bf 3e 09 27 fe 4a |.g.2G..s...>.'.J|
+00004670 ed ec 82 bf c7 6d a3 1f e7 6f 50 58 a5 d7 9c 7a |.....m...oPX...z|
+00004680 b3 e4 9c 53 6f 92 98 72 ea e5 38 9c 74 a7 c9 e1 |...So..r..8.t...|
+00004690 a4 17 45 0e 27 dd 1f 73 38 e9 55 8d c3 49 cf ca |..E.'..s8.U..I..|
+000046a0 1c 4e 7a 72 98 13 81 55 cc 0f 27 5e c1 db 52 9f |.Nzr...U..'^..R.|
+000046b0 64 f9 da ce 3d e5 af 83 06 d5 6e ee 79 ca ad 83 |d...=.....n.y...|
+000046c0 14 e3 f9 cb b6 53 3c 7f 8d db 38 cf 5f a1 97 e6 |.....S<...8._...|
+000046d0 f9 1b dd 25 79 fe aa 37 09 9e bf d2 d1 d6 bb 0c |...%y..7........|
+000046e0 ee 73 52 c7 7d ce f3 b8 4f 64 88 fb 5c 54 70 9f |.sR.}...Od..\Tp.|
+000046f0 b3 4b dc e7 34 96 ed 6a cd e3 59 6a cd e3 19 68 |.K..4..j..Yj...h|
+00004700 cd e3 59 6b cd e3 99 6b cd e3 61 a1 b6 b3 de ed |..Yk...k..a.....|
+00004710 70 42 38 f9 01 45 f8 94 1e d7 71 f9 b6 c2 c6 d6 |pB8..E....q.....|
+00004720 72 c9 3f 15 a8 5b f6 6e 9a 1c 38 ce 3f c7 0d 39 |r.?..[.n..8.?..9|
+00004730 d9 cd 8a 5e 69 88 5e 29 88 5e 19 89 5e a9 8a 5e |...^i.^).^..^..^|
+00004740 29 b1 5e e9 82 65 67 09 96 8b 01 58 f6 d7 60 b9 |).^..eg....X..`.|
+00004750 9a 83 e5 6c 0a 96 13 7d c5 ed fe 70 1f eb c8 9c |...l...}...p....|
+00004760 2c 64 4e fa 32 27 2b 99 93 99 cc 09 92 ea 9a 18 |,dN.2'+.........|
+00004770 13 c6 a3 35 c6 a3 35 c6 a3 35 c6 a3 35 c6 a3 f5 |...5..5..5..5...|
+00004780 8e 7e da e5 44 86 56 cc 0f 27 48 c2 0d 27 ed 6d |.~..D.V..'H..'.m|
+00004790 ea b7 d2 7e dd f2 39 71 c5 f2 e3 c9 b3 b5 49 62 |...~..9q......Ib|
+000047a0 2a 84 fe c5 d7 cb 66 f1 f5 1a 0d 7c bd 42 01 5f |*.....f....|.B._|
+000047b0 6f 34 c2 d7 ab 56 f1 f5 4a a5 fb 2b 41 71 b0 0f |o4...V..J..+Aq..|
+000047c0 73 9f cf ea f1 5d 4e 26 9c 6c 40 91 71 0f 3d c3 |s....]N&.l@.q.=.|
+000047d0 49 07 e3 89 d4 ce 1a e8 72 8d b6 d7 39 97 87 5f |I.......r...9.._|
+000047e0 ae 85 e0 14 6c bb 9c f8 2d 59 f3 f0 76 9b 48 ea |....l...-Y..v.H.|
+000047f0 93 d1 4f a4 8c 1c 32 5a 2a 58 9f 6c 29 f7 8c 9c |..O...2Z*X.l)...|
+00004800 32 7a 29 58 9f 0c a7 87 2e 7e eb 05 9f 40 8f b8 |2z)X.....~...@..|
+00004810 29 bd ae d1 3f cf d1 3f 4d c9 8c a4 2d 13 75 2b |)...?..?M...-.u+|
+00004820 91 dc 4b a3 ae dc 25 51 57 6e 12 a8 2b d7 ca d9 |..K...%QWn..+...|
+00004830 83 03 fd b1 7c 8b b9 9b 91 82 7b d6 3b bc 38 96 |....|.....{.;.8.|
+00004840 e4 3d 0c f7 28 eb 1d c1 b7 10 c1 b7 10 c1 b7 10 |.=..(...........|
+00004850 c1 b7 10 c1 b7 10 c1 b7 98 91 64 84 53 5d 38 e5 |..........d.S]8.|
+00004860 85 d3 50 38 55 84 d3 a5 8c bd 75 b8 27 f8 16 22 |..P8U.....u.'.."|
+00004870 f8 16 22 f8 16 22 f8 16 22 f8 16 22 f8 16 0a e3 |..".."..".."....|
+00004880 5b 2c a7 60 7d 6a 93 09 24 c7 c9 7d 7f 17 4f 41 |[,.`}j..$..}..OA|
+00004890 7f a7 02 f1 e4 5e 41 7f e7 05 e2 29 50 c7 d9 b7 |.....^A....)P...|
+000048a0 88 0f 5e 88 0f ee 8b 0f 5e 89 0f 9e 89 0f 9e 84 |..^.....^.......|
+000048b0 e4 c4 be a5 25 71 da 52 d0 05 72 6d 7a 65 fb 18 |....%q.R..rmze..|
+000048c0 7c 4b 3b 05 df 72 1b 87 6f e9 a5 e1 5b ee 92 f0 ||K;..r..o...[...|
+000048d0 2d 37 09 f8 96 eb 30 be 25 04 27 8e 22 29 4e 7e |-7....0.%.'.")N~|
+000048e0 de 05 6a 91 c8 ca 00 23 79 37 50 8b 40 32 c8 48 |..j....#y7P.@2.H|
+000048f0 aa 16 3e a5 23 0c 16 c2 a0 2f 0c 56 c2 60 26 0c |..>.#..../.V.`&.|
+00004900 26 97 a1 38 59 36 ac 2d d1 6b 15 b8 d6 b6 8f c1 |&..8Y6.-.k......|
+00004910 b7 64 52 f0 2d f5 38 7c 4b 3e 0d df 32 4c c2 b7 |.dR.-.8|K>..2L..|
+00004920 54 12 f0 2d 97 3c 98 13 f8 96 fa 39 7c 4b 3e 02 |T..-.<.....9|K>.|
+00004930 df 32 bc 80 6f a9 9c c1 b7 5c 9e 96 9f b6 32 fa |.2..o....\....2.|
+00004940 bd 4c 8a c9 62 b7 c5 c9 d6 a8 5d 4e a6 32 f9 7a |.L..b.....]N.2.z|
+00004950 fc 0d 27 fc ab e3 71 02 77 3f 86 1c 1b 79 47 69 |..'...q.w?...yGi|
+00004960 db c7 e0 5b 32 29 f8 96 7a 1c be 25 9f 86 6f 19 |...[2)..z..%..o.|
+00004970 26 e1 5b 2a 09 f8 96 cb 0e 27 26 7c 0b 11 7c 0b |&.[*.....'&|..|.|
+00004980 11 7c 0b 11 7c 0b 11 7c 0b d1 2e a7 58 f7 9d 46 |.|..|..|....X..F|
+00004990 41 4e 56 03 08 24 cb c9 e6 a2 89 27 ab 01 e4 be |ANV..$.....'....|
+000049a0 96 93 cd 45 13 4f 27 90 90 99 73 48 c8 7a 04 12 |...E.O'...sH.z..|
+000049b0 32 7f 01 09 39 3c 83 84 ac 9c 42 42 86 e4 64 f2 |2...9<....BB..d.|
+000049c0 eb 50 3c 9d c0 b7 64 ce e1 5b ea 11 f8 96 fc 05 |.P<...d..[......|
+000049d0 7c cb f0 0c be a5 72 0a df c2 9c 32 27 f0 2d f5 ||.....r....2'.-.|
+000049e0 73 f8 96 7c 04 be 65 78 01 df 52 39 83 6f b9 3c |s..|..ex..R9.o.<|
+000049f0 fd 3b 2c 27 04 54 a0 3e f9 31 25 a8 64 3b 60 13 |.;,'.T.>.1%.d;`.|
+00004a00 57 7e 4d b2 f1 64 56 89 40 5c 11 7c 0b 4f de 12 |W~M..dV.@\.|.O..|
+00004a10 53 08 df c2 93 b7 c6 14 c2 b7 f0 e4 f1 02 43 9f |S.............C.|
+00004a20 8b a7 fd f5 49 38 61 ad ce 9c c3 b7 d4 23 f0 2d |....I8a......#.-|
+00004a30 f9 0b f8 96 e1 19 7c 4b e5 14 be e5 32 8c 6f d9 |......|K....2.o.|
+00004a40 53 9f de 0b 28 c7 e9 d7 d7 3b 48 3f 5e 83 b8 f1 |S...(....;H?^...|
+00004a50 1a c4 8d d7 20 6e bc 06 71 e3 35 08 d2 ef 68 eb |.... n..q.5...h.|
+00004a60 9d 0c 9e 8c cc 31 42 19 f7 e1 35 63 2e 7b a7 dc |.....1B...5c.{..|
+00004a70 28 8c 6f 09 cb 89 03 6a a7 3e b9 c4 da 6c 9b d8 |(.o....j.>...l..|
+00004a80 f7 9d 6e b2 89 b9 d9 76 71 7a 0a a0 00 14 98 00 |..n....vqz......|
+00004a90 0a 3d 30 01 14 7a c6 14 ca 03 2a 08 6e ef 70 7f |.=0..z....*.n.p.|
+00004aa0 2c df f2 8e 7e 7a 1b 4f b4 c9 3b a7 ba 6d 7d 72 |,...~z.O..;..m}r|
+00004ab0 48 dc 1a e8 dc 2f d9 fa e4 90 7e 47 3d fe 26 9c |H..../....~G=.&.|
+00004ac0 58 3e c9 9a 27 fe ce f3 d7 39 bf 3e 29 7f 9f 9c |X>..'....9.>)...|
+00004ad0 9c b2 72 9c cc ba e7 ef 93 7f 6b 4e 4e 67 c6 ad |..r.......kNNg..|
+00004ae0 bf 33 0b 98 5b ef 68 93 66 76 bf c0 2c 80 6e bd |.3..[.h.fv..,.n.|
+00004af0 d3 9b 34 0d bb 0b ff 5b 5b 08 df b2 cd e9 5d fd |..4....[[.....].|
+00004b00 14 e4 24 8c 6c ec a8 c0 be 26 d9 35 50 18 d9 d8 |..$.l....&.5P...|
+00004b10 f1 02 fb 9a da df 2f 20 2d e0 b5 f8 3b 2d fe 4e |....../ -...;-.N|
+00004b20 8b bf d3 e2 ef 34 86 15 a2 fe 9a aa fa 41 7f 24 |.....4.......A.$|
+00004b30 df 62 ef 16 ac 4f fb f4 78 2f 18 4f bf bc de c5 |.b...O..x/.O....|
+00004b40 1e f0 21 a9 17 78 a2 f8 23 36 b5 d2 af eb 3b a2 |..!..x..#6....;.|
+00004b50 e4 f3 fc 86 28 f1 34 bd 0e c9 89 7d 8b 2c c0 dc |....(.4....}.,..|
+00004b60 43 17 c8 b5 e9 95 eb e1 5b 38 a7 d8 b7 70 4e b1 |C.......[8...pN.|
+00004b70 6f e1 9c 62 df c2 39 c5 be 85 73 8a 7d 0b 6b 4c |o..b..9...s.}.kL|
+00004b80 d6 e3 ec 5b 58 8f b3 6f 61 3d ce be 85 f5 38 fb |...[X..oa=....8.|
+00004b90 16 d6 e3 ec 5b 58 8f 4f 2c a7 e0 be ca 5b 4e 14 |....[X.O,....[N.|
+00004ba0 0f 72 52 9b f3 3a 5f 93 4b 42 79 46 8f 7b 9b f3 |.rR..:_.KByF.{..|
+00004bb0 3a 5f 93 4b 42 2a ab c7 c1 a0 23 1f b1 10 06 7d |:_.KB*....#....}|
+00004bc0 61 b0 12 06 33 61 30 09 c7 c9 b2 61 6d 89 5e ab |a...3a0....am.^.|
+00004bd0 c0 b5 76 3d 7c 0b 11 7c 0b 11 7c 0b 11 7c 0b 11 |..v=|..|..|..|..|
+00004be0 7c 0b 11 7c 0b 36 fd 79 ea 30 69 a9 17 4c 5a fc ||..|.6.y.0i..LZ.|
+00004bf0 11 93 96 7e c5 a4 25 9f 31 69 89 a7 60 8c be cf |...~..%.1i..`...|
+00004c00 69 10 e4 64 ea 91 de 9c af 00 8f 0a ac 78 76 eb |i..d.........xv.|
+00004c10 cf f7 2a c0 e3 6d 56 bc e3 71 12 bf e8 62 c8 b1 |..*..mV..q...b..|
+00004c20 91 77 94 76 3d 7c 0b e7 1d fb 16 ce 3b f6 2d 9c |.w.v=|......;.-.|
+00004c30 77 ec 5b 38 ef d8 b7 70 de b1 6f 21 04 5c ec 01 |w.[8...p..o!.\..|
+00004c40 01 97 7a 41 c0 c5 1f 11 70 e9 57 04 5c f2 99 03 |..zA....p.W.\...|
+00004c50 2e 2c a7 b8 cf 09 fb 74 41 1d 6e e2 d0 f3 e3 ca |.,.....tA.n.....|
+00004c60 4f 3d bb ce 21 8e 36 6b 9e 72 e7 e6 52 33 96 52 |O=..!.6k.r..R3.R|
+00004c70 33 06 52 33 d6 52 33 e6 52 33 e0 5b 42 72 32 f9 |3.R3.R3.R3.[Br2.|
+00004c80 75 30 9e e0 5b 88 e0 5b 88 e0 5b 88 e0 5b 88 e0 |u0..[..[..[..[..|
+00004c90 5b 88 e0 5b 84 93 12 4e 4a 38 29 e1 a4 84 93 12 |[..[...NJ8).....|
+00004ca0 4e ea 03 4e 94 12 4e 83 6d 4e 01 5f e7 c3 51 12 |N..N..N.mN._..Q.|
+00004cb0 54 9e dd a5 f3 7d 9d 0f c7 93 a0 52 b6 3e 75 31 |T....}.....R.>u1|
+00004cc0 b4 d4 12 43 8b 0f 30 b4 f4 1a 43 4b ce 31 b4 04 |...C..0...CK.1..|
+00004cd0 b6 ce 3e 17 4f fb eb 53 d4 7c 96 d4 42 d9 1f 8a |..>.O..S.|..B...|
+00004ce0 cb 17 81 6f c1 67 49 2d 64 df 42 b9 6c 26 06 df |...o.gI-d.B.l&..|
+00004cf0 52 4f c1 b7 e4 e3 f0 2d c3 34 7c 4b 25 09 df 72 |RO.....-.4|K%..r|
+00004d00 c9 a5 fc 70 7d 5a 2e f7 70 52 41 5f e7 98 69 b3 |...p}Z..pRA_..i.|
+00004d10 ab 42 c6 d8 6c 7c 9d 63 46 66 57 c5 ae 1a 1f eb |.B..l|.cFfW.....|
+00004d20 f1 a3 ad 77 47 f2 2d 87 d7 bb bd 9c 7e 7d bd fb |...wG.-.....~}..|
+00004d30 72 fa e9 63 df b2 47 67 0a a7 a6 cf a9 be cb c9 |r..c..Gg........|
+00004d40 9c 9e 78 db ca da d5 26 29 57 5a f9 4f b5 04 9f |..x....&)WZ.O...|
+00004d50 72 b1 27 16 df 45 8f 0b a7 94 cf 29 b2 c5 29 6f |r.'..E.....)..)o|
+00004d60 f3 4e 53 b0 6e fb da 80 ac 9e b1 bb 51 5b 9c 3c |.NS.n.......Q[.<|
+00004d70 eb 6e be 15 27 3f f1 6e 8b 5b 9c 9c bf b3 95 c8 |.n..'?.n.[......|
+00004d80 3d 5f e6 3f 67 66 ce ac ec c9 a9 65 63 9f 2d 70 |=_.?gf.....ec.-p|
+00004d90 27 85 df c0 b7 04 38 9d 1b 4c 8b c8 20 c8 a9 47 |'.....8..L.. ..G|
+00004da0 df 30 9e 62 ba 7d 02 df 72 7b 0e df d2 8b c0 b7 |.0.b.}..r{......|
+00004db0 dc 5d c0 b7 dc 9c c1 b7 5c 9f b2 6f 79 8f 93 01 |.]......\..oy...|
+00004dc0 65 31 39 4e 7d 04 d1 6e 7d 72 1a ea bd fa e4 34 |e19N}..n}r.....4|
+00004dd0 54 a0 3e 7d 7c 7e 17 66 3d e7 4d cb a8 f9 58 ee |T.>}|~.f=.M...X.|
+00004de0 a3 44 2d b9 6e ed e4 54 08 df c2 ff 3c d6 69 72 |.D-.n..T....<.ir|
+00004df0 9f 5a 14 b9 8f f7 c7 dc a7 57 35 ee 93 b3 32 f7 |.Z.......W5...2.|
+00004e00 89 89 cb 18 b3 de 85 7a 4e ec 08 fe 2e 04 83 30 |.......zN......0|
+00004e10 bf 63 d9 44 ef f1 b1 51 99 36 77 ed f9 fd c7 1a |.c.D...Q.6w.....|
+00004e20 44 26 ed 41 26 ed 45 26 ed 51 26 ed 55 26 ed 59 |D&.A&.E&.Q&.U&.Y|
+00004e30 72 ee c9 72 b2 fa 29 1c 27 ff 64 ce 33 3e 65 73 |r..r..).'.d.3>es|
+00004e40 a4 e0 9e 63 d9 ec 76 2a 0a 5c bb 53 9d 63 71 f2 |...c..v*.\.S.cq.|
+00004e50 a3 b8 15 60 13 58 7e d1 9f c4 32 88 a7 54 1d f1 |...`.X~...2..T..|
+00004e60 14 cf 23 9e d2 43 c4 53 b2 82 78 4a 5c f2 b3 0c |..#..C.S..xJ\...|
+00004e70 c2 69 21 9c fa c2 69 25 9c 66 c2 69 b2 87 93 ec |.i!...i%.f.i....|
+00004e80 95 b6 f0 04 83 ba e2 cf be e7 1f b8 b8 6f 99 2b |.............o.+|
+00004e90 fc 4f 9b 73 7b 38 99 3c 0c c8 f0 1d 4e f6 69 0f |.O.s{8.<....N.i.|
+00004ea0 13 4f a2 c7 97 a2 c7 07 a2 c7 d7 a2 c7 e7 a2 c7 |.O..............|
+00004eb0 b1 be 84 e2 64 da e1 78 32 9b 67 f2 14 00 c9 86 |....d..x2.g.....|
+00004ec0 2c ad 25 5c e6 12 2e 90 ab 9f e7 14 95 c9 61 42 |,.%\..........aB|
+00004ed0 d1 28 e6 a8 15 e5 26 d7 2d ba 8a 9a ff 49 5e b0 |.(....&.-....I^.|
+00004ee0 7e 6f 71 b2 af 60 fd de e2 64 5f b2 c0 c8 d8 65 |~oq..`...d_....e|
+00004ef0 68 52 f4 68 2d 43 9b cb d0 60 83 3f 17 4f fb eb |hR.h-C...`.?.O..|
+00004f00 93 70 0a e3 5b e0 ef 3a 4d f8 bb 45 11 fe ae 3f |.p..[..:M..E...?|
+00004f10 86 bf 5b d5 e0 ef 66 65 f8 bb 9d fa 14 95 90 e1 |..[...fe........|
+00004f20 97 e1 84 9f d1 ab 16 37 73 f5 36 9e b6 75 a6 59 |.......7s.6..u.Y|
+00004f30 07 b7 b8 6c e9 4c fa 9a ba 20 c6 15 0c be 85 7b |...l.L... .....{|
+00004f40 f6 2d dc b3 6f e1 9e 7d 0b f7 ec 5b b8 bf de bf |.-..o..}...[....|
+00004f50 9f 19 35 9c 24 ae f8 d5 92 d8 7a 53 9f de e8 71 |..5.$.....zS...q|
+00004f60 65 0f 34 83 79 16 e4 64 1c de 37 f0 2d ea ca 94 |e.4.y..d..7.-...|
+00004f70 25 cb 09 17 4a e2 c9 5c d9 78 fa 76 fe ee d3 7a |%...J..\.x.v...z|
+00004f80 dc 24 b9 29 4b 81 0b 06 25 57 9b fa 14 4c 39 d9 |.$.)K...%W...L9.|
+00004f90 a4 d3 fe 4a b7 39 8e f2 c1 78 da 9c 2d d8 e7 a2 |...J.9...x..-...|
+00004fa0 be 3b 27 44 53 8b 3c ff 8f 0f dc 3f 73 f5 db 7f |.;'DS.<....?s...|
+00004fb0 c6 47 6f e5 9c b7 a9 df ee 3c fd ab e5 5d fb 04 |.Go......<...]..|
+00004fc0 79 77 7b 8e bc eb 45 90 77 77 17 c8 bb 9b 33 e4 |yw{...E.ww....3.|
+00004fd0 dd f5 e9 f4 33 9c 24 9a 5a e6 bc 65 3b a0 36 6b |....3.$.Z..e;.6k|
+00004fe0 1f 94 b8 7f b4 f9 e6 0f 63 98 6e 58 95 f6 5b eb |........c.nX..[.|
+00004ff0 38 96 c5 76 0a 7a fc 36 0e 3d de 4b 43 8f df 25 |8..v.z.6.=.KC..%|
+00005000 a1 c7 6f 12 d0 e3 d7 6f 38 71 d0 b4 a2 7f 30 15 |..o....o8q....0.|
+00005010 ff c2 71 e2 fa e4 6d c5 d3 8e c7 73 cf db eb e0 |..q...m....s....|
+00005020 1f b4 04 78 b9 e7 ed bf 1c a7 1c ba 4e 13 fd a2 |...x........N...|
+00005030 88 be 3f 46 bf aa a1 9f 95 d1 4f de 70 f2 f5 53 |..?F......O.p..S|
+00005040 40 48 bd 53 9f 76 f3 6f b7 3e ed e6 df a6 3e 99 |@H.S.v.o.>....>.|
+00005050 03 c1 94 3c aa 27 67 39 3c 7b e8 93 37 e8 cd ec |...<.'g9<{..7...|
+00005060 7d ac 0f 0f e9 cc 4d 7f 24 df 62 05 8d 79 42 30 |}.....M.$.b..yB0|
+00005070 1c a7 5f 5f ef c2 30 08 f3 3b c1 ec 0f b2 b1 c9 |..__..0..;......|
+00005080 2d 7d 2c 23 73 52 97 39 c9 cb 9c 0c 65 4e 2a 32 |-},#sR.9....eN*2|
+00005090 27 5c a2 65 d2 62 32 69 29 99 b4 b8 4c 5a 5a 26 |'\.e.b2i)...LZZ&|
+000050a0 2d 29 93 96 70 9c 76 74 e6 55 74 73 c1 5a 1c 3a |-)..p.vt.Uts.Z.:|
+000050b0 f3 6a 4b 67 9a 3d f5 4d ee 29 cf ed 20 93 d3 4e |.jKg.=.M.).. ..N|
+000050c0 5b fb 2b a6 8e bb df f9 9d f1 74 24 df b2 15 4f |[.+.......t$...O|
+000050d0 e1 7c b0 7d 3a c7 9c 1c 04 74 b8 cf c9 9c aa 9b |.|.}:....t......|
+000050e0 93 83 6d 1d ae bf 47 7d 0a b9 5f e0 b8 6a 17 57 |..m...G}.._..j.W|
+000050f0 ee 8c d8 39 61 fb 0e b9 b8 f2 67 e1 4b 72 42 66 |...9a.....g.KrBf|
+00005100 aa 36 32 53 dd 22 33 55 0f 99 a9 ee 90 99 ea 06 |.62S."3U........|
+00005110 99 a9 b6 d7 bb 70 7f f7 ea e2 c9 d7 4e ef c4 93 |.....p......N...|
+00005120 af 9d be 7a 3c 51 d7 53 d0 4f 9e 82 7e f2 14 f4 |...z^gN|.|
+00005160 ce 9c f8 78 9d 39 f1 f1 3a 73 e2 e3 75 fa 69 3f |...x.9..:s..u.i?|
+00005170 ed a7 1d b7 89 10 3d 11 21 7a 2e 42 34 22 42 f4 |......=.!z.B4"B.|
+00005180 42 84 e8 99 e4 dc e9 0f a5 af dc c2 e8 f1 30 bf |B.............0.|
+00005190 b3 e5 5b bc 4d bf ab 8e 0e fb 96 f0 ab fc de 7d |..[.M..........}|
+000051a0 92 9f f6 d3 7e ea d3 4f fb 69 3f 7a 7c 5f fb 1f |....~..O.i?z|_..|
+000051b0 eb b4 9c 3b 01 f6 48 6b 00 00 00 00 49 45 4e 44 |...;..Hk....IEND|
+000051c0 ae 42 60 82 00 00 00 00 00 00 00 00 00 00 00 00 |.B`.............|
+000051d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000051e0 46 55 4e 20 43 4f 4c 55 4d 4e 53 20 42 59 20 46 |FUN COLUMNS BY F|
+000051f0 54 41 20 20 20 20 43 4f 44 49 4e 47 3a 20 20 20 |TA CODING: |
+00005200 20 4f 2e 20 47 4f 47 55 45 4c 20 20 44 45 53 49 | O. GOGUEL DESI|
+00005210 47 4e 3a 20 20 20 20 4f 2e 20 42 41 49 4c 4c 59 |GN: O. BAILLY|
+00005220 20 20 20 20 20 4d 41 49 54 52 45 20 20 56 45 52 | MAITRE VER|
+00005230 53 49 4f 4e 20 31 2e 31 54 4f 4f 4c 42 4f 58 2d |SION 1.1TOOLBOX-|
+00005240 4d 41 47 20 49 53 53 55 45 3a 20 30 34 20 20 30 |MAG ISSUE: 04 0|
+00005250 33 2d 46 45 42 2d 39 31 20 20 43 4f 50 59 52 49 |3-FEB-91 COPYRI|
+00005260 47 48 54 20 46 54 41 2f 54 4f 4f 4c 42 4f 58 00 |GHT FTA/TOOLBOX.|
+00005270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005280 48 49 47 48 20 20 20 53 43 4f 52 45 53 3a 48 55 |HIGH SCORES:HU|
+00005290 4c 4b 20 20 20 2e 2e 31 30 30 30 30 45 41 52 54 |LK ..10000EART|
+000052a0 48 20 20 2e 2e 2e 39 30 30 30 42 55 53 48 20 20 |H ...9000BUSH |
+000052b0 20 2e 2e 2e 38 30 30 30 41 58 45 20 20 20 20 2e | ...8000AXE .|
+000052c0 2e 2e 37 30 30 30 50 45 52 46 45 43 54 2e 2e 2e |..7000PERFECT...|
+000052d0 36 30 30 30 50 4f 57 45 52 53 20 2e 2e 2e 35 30 |6000POWERS ...50|
+000052e0 30 30 54 55 47 42 4f 41 54 2e 2e 2e 34 30 30 30 |00TUGBOAT...4000|
+000052f0 44 49 4e 4f 20 20 20 2e 2e 2e 2e 2e 2e 31 00 00 |DINO ......1..|
+00005300 53 43 4f 52 45 3a 20 20 20 20 20 20 20 30 4c 45 |SCORE: 0LE|
+00005310 56 45 4c 3a 20 31 45 20 20 20 20 31 54 4f 54 41 |VEL: 1E 1TOTA|
+00005320 4c 3a 20 20 20 20 20 20 20 30 00 00 00 00 00 00 |L: 0......|
+00005330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005340 43 48 4f 4f 53 45 20 3a 20 20 20 31 2d 56 45 52 |CHOOSE : 1-VER|
+00005350 59 20 45 41 53 59 32 2d 45 41 53 59 20 20 20 20 |Y EASY2-EASY |
+00005360 20 33 2d 4d 45 44 49 55 4d 20 20 20 34 2d 48 41 | 3-MEDIUM 4-HA|
+00005370 52 44 20 20 20 20 20 35 2d 56 45 52 59 20 48 41 |RD 5-VERY HA|
+00005380 52 44 36 2d 4a 45 44 49 20 20 20 20 20 41 2d 41 |RD6-JEDI A-A|
+00005390 42 4f 55 54 20 20 20 20 49 2d 49 4e 46 4f 20 20 |BOUT I-INFO |
+000053a0 20 20 20 51 2d 51 55 49 54 20 20 20 20 20 00 00 | Q-QUIT ..|
+000053b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000053c0 43 4f 4c 55 4d 4e 53 20 20 20 20 52 55 4c 45 53 |COLUMNS RULES|
+000053d0 2e 20 20 20 20 20 20 3c 2d 3a 4c 45 46 54 20 20 |. <-:LEFT |
+000053e0 20 20 2d 3e 3a 52 49 47 48 54 20 20 20 20 52 3a | ->:RIGHT R:|
+000053f0 52 4f 54 41 54 45 20 53 50 43 3a 46 41 4c 4c 20 |ROTATE SPC:FALL |
+00005400 20 20 20 5e 52 3a 52 45 53 54 41 52 54 20 5e 53 | ^R:RESTART ^S|
+00005410 3a 4e 45 57 20 50 41 54 20 20 4e 3a 4e 45 58 54 |:NEW PAT N:NEXT|
+00005420 20 20 20 20 20 50 3a 50 41 55 53 45 20 20 20 48 | P:PAUSE H|
+00005430 41 56 45 20 46 55 4e 20 21 00 00 00 00 00 00 00 |AVE FUN !.......|
+00005440 47 41 4d 45 20 4f 56 45 52 00 00 00 00 00 00 00 |GAME OVER.......|
+00005450 3e 20 50 41 55 53 45 20 3c 00 00 00 00 00 00 00 |> PAUSE <.......|
+00005460 7c 00 00 00 61 00 00 00 7c 00 00 00 61 00 00 00 ||...a...|...a...|
+00005470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005480 16 00 00 00 0b 00 00 00 16 00 00 00 12 00 00 00 |................|
+00005490 16 00 00 00 22 00 00 00 16 00 00 00 2a 00 00 00 |....".......*...|
+000054a0 16 00 00 00 36 00 00 00 16 00 00 00 3e 00 00 00 |....6.......>...|
+000054b0 16 00 00 00 4a 00 00 00 16 00 00 00 52 00 00 00 |....J.......R...|
+000054c0 16 00 00 00 5e 00 00 00 16 00 00 00 66 00 00 00 |....^.......f...|
+000054d0 16 00 00 00 72 00 00 00 16 00 00 00 7a 00 00 00 |....r.......z...|
+000054e0 16 00 00 00 86 00 00 00 16 00 00 00 8e 00 00 00 |................|
+000054f0 16 00 00 00 9a 00 00 00 16 00 00 00 a2 00 00 00 |................|
+00005500 16 00 00 00 ae 00 00 00 16 00 00 00 b6 00 00 00 |................|
+00005510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005520 76 00 00 00 23 00 00 00 76 00 00 00 31 00 00 00 |v...#...v...1...|
+00005530 76 00 00 00 3f 00 00 00 76 00 00 00 48 00 00 00 |v...?...v...H...|
+00005540 76 00 00 00 58 00 00 00 76 00 00 00 61 00 00 00 |v...X...v...a...|
+00005550 76 00 00 00 68 00 00 00 76 00 00 00 84 00 00 00 |v...h...v.......|
+00005560 76 00 00 00 8d 00 00 00 76 00 00 00 96 00 00 00 |v.......v.......|
+00005570 76 00 00 00 9f 00 00 00 76 00 00 00 af 00 00 00 |v.......v.......|
+00005580 76 00 00 00 b8 00 00 00 00 00 00 00 00 00 00 00 |v...............|
+00005590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000055a0 f0 00 00 00 0b 00 00 00 f0 00 00 00 14 00 00 00 |................|
+000055b0 f0 00 00 00 1f 00 00 00 f0 00 00 00 28 00 00 00 |............(...|
+000055c0 f0 00 00 00 33 00 00 00 f0 00 00 00 3c 00 00 00 |....3.......<...|
+000055d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000055e0 74 00 00 00 32 00 00 00 74 00 00 00 39 00 00 00 |t...2...t...9...|
+000055f0 74 00 00 00 47 00 00 00 74 00 00 00 4e 00 00 00 |t...G...t...N...|
+00005600 74 00 00 00 55 00 00 00 74 00 00 00 5c 00 00 00 |t...U...t...\...|
+00005610 74 00 00 00 63 00 00 00 74 00 00 00 6a 00 00 00 |t...c...t...j...|
+00005620 74 00 00 00 71 00 00 00 74 00 00 00 78 00 00 00 |t...q...t...x...|
+00005630 74 00 00 00 86 00 00 00 00 00 00 00 00 00 00 00 |t...............|
+00005640 76 00 00 00 34 00 00 00 76 00 00 00 42 00 00 00 |v...4...v...B...|
+00005650 76 00 00 00 49 00 00 00 76 00 00 00 50 00 00 00 |v...I...v...P...|
+00005660 76 00 00 00 57 00 00 00 76 00 00 00 5e 00 00 00 |v...W...v...^...|
+00005670 76 00 00 00 65 00 00 00 76 00 00 00 73 00 00 00 |v...e...v...s...|
+00005680 76 00 00 00 7a 00 00 00 76 00 00 00 81 00 00 00 |v...z...v.......|
+00005690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000056a0 06 02 00 00 31 00 00 00 46 02 00 00 31 00 00 00 |....1...F...1...|
+*
+000058b0 ee 01 00 00 19 00 00 00 2e 02 00 00 19 00 00 00 |................|
+000058c0 e6 01 00 00 25 00 00 00 26 02 00 00 25 00 00 00 |....%...&...%...|
+000058d0 fe 01 00 00 2b 00 00 00 3e 02 00 00 2b 00 00 00 |....+...>...+...|
+000058e0 f6 01 00 00 19 00 00 00 36 02 00 00 19 00 00 00 |........6.......|
+000058f0 fe 01 00 00 19 00 00 00 3e 02 00 00 19 00 00 00 |........>.......|
+00005900 e6 01 00 00 31 00 00 00 26 02 00 00 31 00 00 00 |....1...&...1...|
+00005910 ee 01 00 00 25 00 00 00 2e 02 00 00 25 00 00 00 |....%.......%...|
+00005920 d6 01 00 00 1f 00 00 00 16 02 00 00 1f 00 00 00 |................|
+00005930 de 01 00 00 1f 00 00 00 1e 02 00 00 1f 00 00 00 |................|
+00005940 ce 01 00 00 1f 00 00 00 0e 02 00 00 1f 00 00 00 |................|
+00005950 f6 01 00 00 1f 00 00 00 36 02 00 00 1f 00 00 00 |........6.......|
+00005960 e6 01 00 00 2b 00 00 00 26 02 00 00 2b 00 00 00 |....+...&...+...|
+00005970 e6 01 00 00 1f 00 00 00 26 02 00 00 1f 00 00 00 |........&.......|
+00005980 de 01 00 00 2b 00 00 00 1e 02 00 00 2b 00 00 00 |....+.......+...|
+00005990 06 02 00 00 25 00 00 00 46 02 00 00 25 00 00 00 |....%...F...%...|
+000059a0 de 01 00 00 13 00 00 00 1e 02 00 00 13 00 00 00 |................|
+000059b0 e6 01 00 00 13 00 00 00 26 02 00 00 13 00 00 00 |........&.......|
+000059c0 ee 01 00 00 13 00 00 00 2e 02 00 00 13 00 00 00 |................|
+000059d0 f6 01 00 00 13 00 00 00 36 02 00 00 13 00 00 00 |........6.......|
+000059e0 fe 01 00 00 13 00 00 00 3e 02 00 00 13 00 00 00 |........>.......|
+000059f0 06 02 00 00 13 00 00 00 46 02 00 00 13 00 00 00 |........F.......|
+00005a00 ce 01 00 00 19 00 00 00 0e 02 00 00 19 00 00 00 |................|
+00005a10 d6 01 00 00 19 00 00 00 16 02 00 00 19 00 00 00 |................|
+00005a20 de 01 00 00 19 00 00 00 1e 02 00 00 19 00 00 00 |................|
+00005a30 e6 01 00 00 19 00 00 00 26 02 00 00 19 00 00 00 |........&.......|
+00005a40 d6 01 00 00 25 00 00 00 16 02 00 00 25 00 00 00 |....%.......%...|
+00005a50 de 01 00 00 25 00 00 00 1e 02 00 00 25 00 00 00 |....%.......%...|
+00005a60 ce 01 00 00 2b 00 00 00 0e 02 00 00 2b 00 00 00 |....+.......+...|
+00005a70 fe 01 00 00 1f 00 00 00 3e 02 00 00 1f 00 00 00 |........>.......|
+00005a80 d6 01 00 00 2b 00 00 00 16 02 00 00 2b 00 00 00 |....+.......+...|
+00005a90 de 01 00 00 31 00 00 00 1e 02 00 00 31 00 00 00 |....1.......1...|
+00005aa0 06 02 00 00 2b 00 00 00 46 02 00 00 2b 00 00 00 |....+...F...+...|
+00005ab0 ce 01 00 00 01 00 00 00 0e 02 00 00 01 00 00 00 |................|
+00005ac0 d6 01 00 00 01 00 00 00 16 02 00 00 01 00 00 00 |................|
+00005ad0 de 01 00 00 01 00 00 00 1e 02 00 00 01 00 00 00 |................|
+00005ae0 e6 01 00 00 01 00 00 00 26 02 00 00 01 00 00 00 |........&.......|
+00005af0 ee 01 00 00 01 00 00 00 2e 02 00 00 01 00 00 00 |................|
+00005b00 f6 01 00 00 01 00 00 00 36 02 00 00 01 00 00 00 |........6.......|
+00005b10 fe 01 00 00 01 00 00 00 3e 02 00 00 01 00 00 00 |........>.......|
+00005b20 06 02 00 00 01 00 00 00 46 02 00 00 01 00 00 00 |........F.......|
+00005b30 ce 01 00 00 07 00 00 00 0e 02 00 00 07 00 00 00 |................|
+00005b40 d6 01 00 00 07 00 00 00 16 02 00 00 07 00 00 00 |................|
+00005b50 de 01 00 00 07 00 00 00 1e 02 00 00 07 00 00 00 |................|
+00005b60 e6 01 00 00 07 00 00 00 26 02 00 00 07 00 00 00 |........&.......|
+00005b70 ee 01 00 00 07 00 00 00 2e 02 00 00 07 00 00 00 |................|
+00005b80 f6 01 00 00 07 00 00 00 36 02 00 00 07 00 00 00 |........6.......|
+00005b90 fe 01 00 00 07 00 00 00 3e 02 00 00 07 00 00 00 |........>.......|
+00005ba0 06 02 00 00 07 00 00 00 46 02 00 00 07 00 00 00 |........F.......|
+00005bb0 ce 01 00 00 0d 00 00 00 0e 02 00 00 0d 00 00 00 |................|
+00005bc0 d6 01 00 00 0d 00 00 00 16 02 00 00 0d 00 00 00 |................|
+00005bd0 de 01 00 00 0d 00 00 00 1e 02 00 00 0d 00 00 00 |................|
+00005be0 e6 01 00 00 0d 00 00 00 26 02 00 00 0d 00 00 00 |........&.......|
+00005bf0 ee 01 00 00 0d 00 00 00 2e 02 00 00 0d 00 00 00 |................|
+00005c00 f6 01 00 00 0d 00 00 00 36 02 00 00 0d 00 00 00 |........6.......|
+00005c10 fe 01 00 00 0d 00 00 00 3e 02 00 00 0d 00 00 00 |........>.......|
+00005c20 06 02 00 00 0d 00 00 00 46 02 00 00 0d 00 00 00 |........F.......|
+00005c30 ce 01 00 00 13 00 00 00 0e 02 00 00 13 00 00 00 |................|
+00005c40 d6 01 00 00 13 00 00 00 16 02 00 00 13 00 00 00 |................|
+00005c50 06 02 00 00 1f 00 00 00 46 02 00 00 1f 00 00 00 |........F.......|
+00005c60 fe 01 00 00 25 00 00 00 3e 02 00 00 25 00 00 00 |....%...>...%...|
+00005c70 ce 01 00 00 25 00 00 00 0e 02 00 00 25 00 00 00 |....%.......%...|
+00005c80 06 02 00 00 19 00 00 00 46 02 00 00 19 00 00 00 |........F.......|
+00005c90 ee 01 00 00 1f 00 00 00 2e 02 00 00 1f 00 00 00 |................|
+00005ca0 f6 01 00 00 2b 00 00 00 36 02 00 00 2b 00 00 00 |....+...6...+...|
+00005cb0 ce 01 00 00 01 00 00 00 0e 02 00 00 01 00 00 00 |................|
+00005cc0 d6 01 00 00 01 00 00 00 16 02 00 00 01 00 00 00 |................|
+00005cd0 de 01 00 00 01 00 00 00 1e 02 00 00 01 00 00 00 |................|
+00005ce0 e6 01 00 00 01 00 00 00 26 02 00 00 01 00 00 00 |........&.......|
+00005cf0 ee 01 00 00 01 00 00 00 2e 02 00 00 01 00 00 00 |................|
+00005d00 f6 01 00 00 01 00 00 00 36 02 00 00 01 00 00 00 |........6.......|
+00005d10 fe 01 00 00 01 00 00 00 3e 02 00 00 01 00 00 00 |........>.......|
+00005d20 06 02 00 00 01 00 00 00 46 02 00 00 01 00 00 00 |........F.......|
+00005d30 ce 01 00 00 07 00 00 00 0e 02 00 00 07 00 00 00 |................|
+00005d40 d6 01 00 00 07 00 00 00 16 02 00 00 07 00 00 00 |................|
+00005d50 de 01 00 00 07 00 00 00 1e 02 00 00 07 00 00 00 |................|
+00005d60 e6 01 00 00 07 00 00 00 26 02 00 00 07 00 00 00 |........&.......|
+00005d70 ee 01 00 00 07 00 00 00 2e 02 00 00 07 00 00 00 |................|
+00005d80 f6 01 00 00 07 00 00 00 36 02 00 00 07 00 00 00 |........6.......|
+00005d90 fe 01 00 00 07 00 00 00 3e 02 00 00 07 00 00 00 |........>.......|
+00005da0 06 02 00 00 07 00 00 00 46 02 00 00 07 00 00 00 |........F.......|
+00005db0 ce 01 00 00 0d 00 00 00 0e 02 00 00 0d 00 00 00 |................|
+00005dc0 d6 01 00 00 0d 00 00 00 16 02 00 00 0d 00 00 00 |................|
+00005dd0 de 01 00 00 0d 00 00 00 1e 02 00 00 0d 00 00 00 |................|
+00005de0 e6 01 00 00 0d 00 00 00 26 02 00 00 0d 00 00 00 |........&.......|
+00005df0 ee 01 00 00 0d 00 00 00 2e 02 00 00 0d 00 00 00 |................|
+00005e00 f6 01 00 00 0d 00 00 00 36 02 00 00 0d 00 00 00 |........6.......|
+00005e10 fe 01 00 00 0d 00 00 00 3e 02 00 00 0d 00 00 00 |........>.......|
+00005e20 06 02 00 00 0d 00 00 00 46 02 00 00 0d 00 00 00 |........F.......|
+00005e30 ce 01 00 00 13 00 00 00 0e 02 00 00 13 00 00 00 |................|
+00005e40 d6 01 00 00 13 00 00 00 16 02 00 00 13 00 00 00 |................|
+00005e50 ce 01 00 00 31 00 00 00 0e 02 00 00 31 00 00 00 |....1.......1...|
+00005e60 f6 01 00 00 25 00 00 00 36 02 00 00 25 00 00 00 |....%...6...%...|
+00005e70 d6 01 00 00 31 00 00 00 16 02 00 00 31 00 00 00 |....1.......1...|
+00005e80 ee 01 00 00 2b 00 00 00 2e 02 00 00 2b 00 00 00 |....+.......+...|
+00005e90 06 02 00 00 31 00 00 00 46 02 00 00 31 00 00 00 |....1...F...1...|
+00005ea0 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005eb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005ec0 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005ed0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005ee0 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00005ef0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+000060f0 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
+00006100 02 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 |................|
+00006110 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 |................|
+00006120 00 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 |................|
+00006130 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 |................|
+00006140 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 |................|
+00006150 01 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 |................|
+00006160 05 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 |................|
+00006170 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
+00006180 02 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 |................|
+00006190 02 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 |................|
+000061a0 00 00 00 00 02 00 00 00 05 00 00 00 00 00 00 00 |................|
+000061b0 02 00 00 00 03 00 00 00 00 00 00 00 04 00 00 00 |................|
+000061c0 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 |................|
+000061d0 00 00 00 00 04 00 00 00 02 00 00 00 00 00 00 00 |................|
+000061e0 04 00 00 00 04 00 00 00 00 00 00 00 04 00 00 00 |................|
+000061f0 05 00 00 00 00 00 00 00 04 00 00 00 03 00 00 00 |................|
+00006200 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 |................|
+00006210 05 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 |................|
+00006220 02 00 00 00 00 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006230 00 00 00 00 05 00 00 00 05 00 00 00 00 00 00 00 |................|
+00006240 05 00 00 00 03 00 00 00 00 00 00 00 03 00 00 00 |................|
+00006250 00 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006260 00 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 |................|
+00006270 03 00 00 00 04 00 00 00 00 00 00 00 03 00 00 00 |................|
+00006280 05 00 00 00 00 00 00 00 03 00 00 00 03 00 00 00 |................|
+00006290 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
+000062a0 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 |................|
+000062b0 02 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 |................|
+000062c0 01 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 |................|
+000062d0 00 00 00 00 03 00 00 00 01 00 00 00 01 00 00 00 |................|
+000062e0 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 |................|
+000062f0 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00 00 |................|
+00006300 01 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 |................|
+00006310 05 00 00 00 01 00 00 00 01 00 00 00 03 00 00 00 |................|
+00006320 01 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 |................|
+00006330 02 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 |................|
+00006340 02 00 00 00 01 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006350 01 00 00 00 02 00 00 00 05 00 00 00 01 00 00 00 |................|
+00006360 02 00 00 00 03 00 00 00 01 00 00 00 04 00 00 00 |................|
+00006370 00 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 |................|
+00006380 01 00 00 00 04 00 00 00 02 00 00 00 01 00 00 00 |................|
+00006390 04 00 00 00 04 00 00 00 01 00 00 00 04 00 00 00 |................|
+000063a0 05 00 00 00 01 00 00 00 04 00 00 00 03 00 00 00 |................|
+000063b0 01 00 00 00 05 00 00 00 00 00 00 00 01 00 00 00 |................|
+000063c0 05 00 00 00 01 00 00 00 01 00 00 00 05 00 00 00 |................|
+000063d0 02 00 00 00 01 00 00 00 05 00 00 00 04 00 00 00 |................|
+000063e0 01 00 00 00 05 00 00 00 05 00 00 00 01 00 00 00 |................|
+000063f0 05 00 00 00 03 00 00 00 01 00 00 00 03 00 00 00 |................|
+00006400 00 00 00 00 01 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006410 01 00 00 00 03 00 00 00 02 00 00 00 01 00 00 00 |................|
+00006420 03 00 00 00 04 00 00 00 01 00 00 00 03 00 00 00 |................|
+00006430 05 00 00 00 01 00 00 00 03 00 00 00 03 00 00 00 |................|
+00006440 02 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 |................|
+00006450 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 |................|
+00006460 02 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 |................|
+00006470 02 00 00 00 00 00 00 00 05 00 00 00 02 00 00 00 |................|
+00006480 00 00 00 00 03 00 00 00 02 00 00 00 01 00 00 00 |................|
+00006490 00 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 |................|
+000064a0 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 |................|
+000064b0 01 00 00 00 04 00 00 00 02 00 00 00 01 00 00 00 |................|
+000064c0 05 00 00 00 02 00 00 00 01 00 00 00 03 00 00 00 |................|
+000064d0 02 00 00 00 02 00 00 00 00 00 00 00 02 00 00 00 |................|
+000064e0 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 |................|
+000064f0 02 00 00 00 02 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006500 02 00 00 00 02 00 00 00 05 00 00 00 02 00 00 00 |................|
+00006510 02 00 00 00 03 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006520 00 00 00 00 02 00 00 00 04 00 00 00 01 00 00 00 |................|
+00006530 02 00 00 00 04 00 00 00 02 00 00 00 02 00 00 00 |................|
+00006540 04 00 00 00 04 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006550 05 00 00 00 02 00 00 00 04 00 00 00 03 00 00 00 |................|
+00006560 02 00 00 00 05 00 00 00 00 00 00 00 02 00 00 00 |................|
+00006570 05 00 00 00 01 00 00 00 02 00 00 00 05 00 00 00 |................|
+00006580 02 00 00 00 02 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006590 02 00 00 00 05 00 00 00 05 00 00 00 02 00 00 00 |................|
+000065a0 05 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 |................|
+000065b0 00 00 00 00 02 00 00 00 03 00 00 00 01 00 00 00 |................|
+000065c0 02 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 |................|
+000065d0 03 00 00 00 04 00 00 00 02 00 00 00 03 00 00 00 |................|
+000065e0 05 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 |................|
+000065f0 03 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 |................|
+00006600 00 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 |................|
+00006610 02 00 00 00 03 00 00 00 00 00 00 00 04 00 00 00 |................|
+00006620 03 00 00 00 00 00 00 00 05 00 00 00 03 00 00 00 |................|
+00006630 00 00 00 00 03 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006640 00 00 00 00 03 00 00 00 01 00 00 00 01 00 00 00 |................|
+00006650 03 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 |................|
+00006660 01 00 00 00 04 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006670 05 00 00 00 03 00 00 00 01 00 00 00 03 00 00 00 |................|
+00006680 03 00 00 00 02 00 00 00 00 00 00 00 03 00 00 00 |................|
+00006690 02 00 00 00 01 00 00 00 03 00 00 00 02 00 00 00 |................|
+000066a0 02 00 00 00 03 00 00 00 02 00 00 00 04 00 00 00 |................|
+000066b0 03 00 00 00 02 00 00 00 05 00 00 00 03 00 00 00 |................|
+000066c0 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 |................|
+000066d0 00 00 00 00 03 00 00 00 04 00 00 00 01 00 00 00 |................|
+000066e0 03 00 00 00 04 00 00 00 02 00 00 00 03 00 00 00 |................|
+000066f0 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 |................|
+00006700 05 00 00 00 03 00 00 00 04 00 00 00 03 00 00 00 |................|
+00006710 03 00 00 00 05 00 00 00 00 00 00 00 03 00 00 00 |................|
+00006720 05 00 00 00 01 00 00 00 03 00 00 00 05 00 00 00 |................|
+00006730 02 00 00 00 03 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006740 03 00 00 00 05 00 00 00 05 00 00 00 03 00 00 00 |................|
+00006750 05 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 |................|
+00006760 00 00 00 00 03 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006770 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 |................|
+00006780 03 00 00 00 04 00 00 00 03 00 00 00 03 00 00 00 |................|
+00006790 05 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 |................|
+000067a0 04 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 |................|
+000067b0 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 |................|
+000067c0 02 00 00 00 04 00 00 00 00 00 00 00 04 00 00 00 |................|
+000067d0 04 00 00 00 00 00 00 00 05 00 00 00 04 00 00 00 |................|
+000067e0 00 00 00 00 03 00 00 00 04 00 00 00 01 00 00 00 |................|
+000067f0 00 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 |................|
+00006800 04 00 00 00 01 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006810 01 00 00 00 04 00 00 00 04 00 00 00 01 00 00 00 |................|
+00006820 05 00 00 00 04 00 00 00 01 00 00 00 03 00 00 00 |................|
+00006830 04 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 |................|
+00006840 02 00 00 00 01 00 00 00 04 00 00 00 02 00 00 00 |................|
+00006850 02 00 00 00 04 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006860 04 00 00 00 02 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006870 02 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 |................|
+00006880 00 00 00 00 04 00 00 00 04 00 00 00 01 00 00 00 |................|
+00006890 04 00 00 00 04 00 00 00 02 00 00 00 04 00 00 00 |................|
+000068a0 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 |................|
+000068b0 05 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 |................|
+000068c0 04 00 00 00 05 00 00 00 00 00 00 00 04 00 00 00 |................|
+000068d0 05 00 00 00 01 00 00 00 04 00 00 00 05 00 00 00 |................|
+000068e0 02 00 00 00 04 00 00 00 05 00 00 00 04 00 00 00 |................|
+000068f0 04 00 00 00 05 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006900 05 00 00 00 03 00 00 00 04 00 00 00 03 00 00 00 |................|
+00006910 00 00 00 00 04 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006920 04 00 00 00 03 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006930 03 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 |................|
+00006940 05 00 00 00 04 00 00 00 03 00 00 00 03 00 00 00 |................|
+00006950 05 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 |................|
+00006960 00 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 |................|
+00006970 02 00 00 00 05 00 00 00 00 00 00 00 04 00 00 00 |................|
+00006980 05 00 00 00 00 00 00 00 05 00 00 00 05 00 00 00 |................|
+00006990 00 00 00 00 03 00 00 00 05 00 00 00 01 00 00 00 |................|
+000069a0 00 00 00 00 05 00 00 00 01 00 00 00 01 00 00 00 |................|
+000069b0 05 00 00 00 01 00 00 00 02 00 00 00 05 00 00 00 |................|
+000069c0 01 00 00 00 04 00 00 00 05 00 00 00 01 00 00 00 |................|
+000069d0 05 00 00 00 05 00 00 00 01 00 00 00 03 00 00 00 |................|
+000069e0 05 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 |................|
+000069f0 02 00 00 00 01 00 00 00 05 00 00 00 02 00 00 00 |................|
+00006a00 02 00 00 00 05 00 00 00 02 00 00 00 04 00 00 00 |................|
+00006a10 05 00 00 00 02 00 00 00 05 00 00 00 05 00 00 00 |................|
+00006a20 02 00 00 00 03 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006a30 00 00 00 00 05 00 00 00 04 00 00 00 01 00 00 00 |................|
+00006a40 05 00 00 00 04 00 00 00 02 00 00 00 05 00 00 00 |................|
+00006a50 04 00 00 00 04 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006a60 05 00 00 00 05 00 00 00 04 00 00 00 03 00 00 00 |................|
+00006a70 05 00 00 00 05 00 00 00 00 00 00 00 05 00 00 00 |................|
+00006a80 05 00 00 00 01 00 00 00 05 00 00 00 05 00 00 00 |................|
+00006a90 02 00 00 00 05 00 00 00 05 00 00 00 04 00 00 00 |................|
+00006aa0 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 |................|
+00006ab0 05 00 00 00 03 00 00 00 05 00 00 00 03 00 00 00 |................|
+00006ac0 00 00 00 00 05 00 00 00 03 00 00 00 01 00 00 00 |................|
+00006ad0 05 00 00 00 03 00 00 00 02 00 00 00 05 00 00 00 |................|
+00006ae0 03 00 00 00 04 00 00 00 05 00 00 00 03 00 00 00 |................|
+00006af0 05 00 00 00 05 00 00 00 03 00 00 00 03 00 00 00 |................|
+00006b00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |p...............|
+00006b10 80 01 00 00 00 00 00 00 4e 00 00 00 36 00 00 00 |........N...6...|
+00006b20 e6 00 00 00 88 00 00 00 4e 00 00 00 36 00 00 00 |........N...6...|
+00006b30 6e 00 00 00 00 00 00 00 64 00 00 00 c8 00 00 00 |n.......d.......|
+00006b40 6f 00 00 00 00 00 00 00 62 00 00 00 c8 00 00 00 |o.......b.......|
+00006b50 e7 00 00 00 07 00 00 00 4c 00 00 00 42 00 00 00 |........L...B...|
+00006b60 e6 00 00 00 06 00 00 00 4e 00 00 00 44 00 00 00 |........N...D...|
+00006b70 01 01 00 00 56 00 00 00 12 00 00 00 25 00 00 00 |....V.......%...|
+00006b80 00 01 00 00 55 00 00 00 14 00 00 00 27 00 00 00 |....U.......'...|
+00006b90 0d 00 00 00 07 00 00 00 4c 00 00 00 ba 00 00 00 |........L.......|
+00006ba0 0c 00 00 00 06 00 00 00 4e 00 00 00 bc 00 00 00 |........N.......|
+00006bb0 84 00 00 00 00 00 00 00 0c 00 00 00 0b 00 00 00 |................|
+00006bc0 70 00 00 00 01 00 00 00 0c 00 00 00 0b 00 00 00 |p...............|
+00006bd0 77 00 00 00 5d 00 00 00 52 00 00 00 0d 00 00 00 |w...]...R.......|
+00006be0 cc 00 00 00 bb 00 00 00 aa 00 00 00 99 00 00 00 |................|
+00006bf0 88 00 00 00 77 00 00 00 66 00 00 00 55 00 00 00 |....w...f...U...|
+00006c00 44 00 00 00 33 00 00 00 00 cc 00 00 00 bb 00 00 |D...3...........|
+00006c10 00 aa 00 00 00 99 00 00 00 88 00 00 00 77 00 00 |.............w..|
+00006c20 00 66 00 00 00 55 00 00 00 44 00 00 00 33 00 00 |.f...U...D...3..|
+00006c30 00 00 cc 00 00 00 bb 00 00 00 aa 00 00 00 99 00 |................|
+00006c40 00 00 88 00 00 00 77 00 00 00 66 00 00 00 55 00 |......w...f...U.|
+00006c50 00 00 44 00 00 00 33 00 00 cc cc 00 00 bb bb 00 |..D...3.........|
+00006c60 00 aa aa 00 00 99 99 00 00 88 88 00 00 77 77 00 |.............ww.|
+00006c70 00 66 66 00 00 55 55 00 00 44 44 00 00 33 33 00 |.ff..UU..DD..33.|
+00006c80 cc 00 cc 00 bb 00 bb 00 aa 00 aa 00 99 00 99 00 |................|
+00006c90 88 00 88 00 77 00 77 00 66 00 66 00 55 00 55 00 |....w.w.f.f.U.U.|
+00006ca0 44 00 44 00 33 00 33 00 cc cc 00 00 bb bb 00 00 |D.D.3.3.........|
+00006cb0 aa aa 00 00 99 99 00 00 88 88 00 00 77 77 00 00 |............ww..|
+00006cc0 66 66 00 00 55 55 00 00 44 44 00 00 33 33 00 00 |ff..UU..DD..33..|
+00006cd0 cc cc cc 00 bb bb bb 00 aa aa aa 00 99 99 99 00 |................|
+00006ce0 88 88 88 00 77 77 77 00 66 66 66 00 55 55 55 00 |....www.fff.UUU.|
+00006cf0 44 44 44 00 33 33 33 00 00 00 00 00 00 00 00 00 |DDD.333.........|
+00006d00 63 6f 70 79 72 69 67 68 74 20 28 63 29 31 39 39 |copyright (c)199|
+00006d10 31 20 46 54 41 2c 20 28 63 29 32 30 32 34 20 4a |1 FTA, (c)2024 J|
+00006d20 61 73 6f 6e 20 42 6f 75 2d 53 61 6d 72 61 00 00 |ason Bou-Samra..|
+00006d30 c8 30 40 00 00 00 00 00 da 30 40 00 00 00 00 00 |.0@......0@.....|
+00006d40 47 43 43 3a 20 28 47 4e 55 29 20 31 34 2e 31 2e |GCC: (GNU) 14.1.|
+00006d50 31 20 32 30 32 34 30 35 30 37 20 28 52 65 64 20 |1 20240507 (Red |
+00006d60 48 61 74 20 31 34 2e 31 2e 31 2d 31 29 00 47 43 |Hat 14.1.1-1).GC|
+00006d70 43 3a 20 28 47 4e 55 29 20 31 34 2e 31 2e 31 20 |C: (GNU) 14.1.1 |
+00006d80 32 30 32 34 30 35 32 32 20 28 52 65 64 20 48 61 |20240522 (Red Ha|
+00006d90 74 20 31 34 2e 31 2e 31 2d 34 29 00 41 56 3a 34 |t 14.1.1-4).AV:4|
+00006da0 70 31 32 35 31 00 52 56 3a 72 75 6e 6e 69 6e 67 |p1251.RV:running|
+00006db0 20 67 63 63 20 31 34 2e 31 2e 31 20 32 30 32 34 | gcc 14.1.1 2024|
+00006dc0 30 35 30 37 00 42 56 3a 61 6e 6e 6f 62 69 6e 20 |0507.BV:annobin |
+00006dd0 67 63 63 20 31 34 2e 31 2e 31 20 32 30 32 34 30 |gcc 14.1.1 20240|
+00006de0 35 30 37 00 47 57 3a 30 78 37 64 36 30 35 36 32 |507.GW:0x7d60562|
+00006df0 20 2e 2e 2f 73 79 73 64 65 70 73 2f 78 38 36 2f | ../sysdeps/x86/|
+00006e00 61 62 69 2d 6e 6f 74 65 2e 63 00 53 50 3a 33 00 |abi-note.c.SP:3.|
+00006e10 53 43 3a 31 00 43 46 3a 38 20 2e 2e 2f 73 79 73 |SC:1.CF:8 ../sys|
+00006e20 64 65 70 73 2f 78 38 36 2f 61 62 69 2d 6e 6f 74 |deps/x86/abi-not|
+00006e30 65 2e 63 00 46 4c 3a 30 20 2e 2e 2f 73 79 73 64 |e.c.FL:0 ../sysd|
+00006e40 65 70 73 2f 78 38 36 2f 61 62 69 2d 6e 6f 74 65 |eps/x86/abi-note|
+00006e50 2e 63 00 47 41 3a 31 00 50 49 3a 34 00 53 45 3a |.c.GA:1.PI:4.SE:|
+00006e60 30 00 69 53 3a 30 00 47 57 3a 30 78 37 64 36 30 |0.iS:0.GW:0x7d60|
+00006e70 35 36 32 20 69 6e 69 74 2e 63 00 43 46 3a 38 20 |562 init.c.CF:8 |
+00006e80 69 6e 69 74 2e 63 00 46 4c 3a 30 20 69 6e 69 74 |init.c.FL:0 init|
+00006e90 2e 63 00 47 57 3a 30 78 37 64 36 30 35 36 32 20 |.c.GW:0x7d60562 |
+00006ea0 73 74 61 74 69 63 2d 72 65 6c 6f 63 2e 63 00 53 |static-reloc.c.S|
+00006eb0 50 3a 30 20 73 74 61 74 69 63 2d 72 65 6c 6f 63 |P:0 static-reloc|
+00006ec0 2e 63 00 43 46 3a 38 20 73 74 61 74 69 63 2d 72 |.c.CF:8 static-r|
+00006ed0 65 6c 6f 63 2e 63 00 46 4c 3a 30 20 73 74 61 74 |eloc.c.FL:0 stat|
+00006ee0 69 63 2d 72 65 6c 6f 63 2e 63 00 00 08 00 00 00 |ic-reloc.c......|
+00006ef0 10 00 00 00 00 01 00 00 47 41 24 01 33 61 31 00 |........GA$.3a1.|
+00006f00 90 11 40 00 00 00 00 00 b6 11 40 00 00 00 00 00 |..@.......@.....|
+00006f10 08 00 00 00 10 00 00 00 00 01 00 00 47 41 24 01 |............GA$.|
+00006f20 33 61 31 00 c5 11 40 00 00 00 00 00 c5 11 40 00 |3a1...@.......@.|
+00006f30 00 00 00 00 08 00 00 00 10 00 00 00 00 01 00 00 |................|
+00006f40 47 41 24 01 33 61 31 00 00 10 40 00 00 00 00 00 |GA$.3a1...@.....|
+00006f50 16 10 40 00 00 00 00 00 08 00 00 00 10 00 00 00 |..@.............|
+00006f60 00 01 00 00 47 41 24 01 33 61 31 00 c4 26 40 00 |....GA$.3a1..&@.|
+00006f70 00 00 00 00 cc 26 40 00 00 00 00 00 08 00 00 00 |.....&@.........|
+00006f80 10 00 00 00 00 01 00 00 47 41 24 01 33 61 31 00 |........GA$.3a1.|
+00006f90 d0 11 40 00 00 00 00 00 76 12 40 00 00 00 00 00 |..@.....v.@.....|
+00006fa0 08 00 00 00 10 00 00 00 00 01 00 00 47 41 24 01 |............GA$.|
+00006fb0 33 61 31 00 c2 26 40 00 00 00 00 00 c2 26 40 00 |3a1..&@......&@.|
+00006fc0 00 00 00 00 08 00 00 00 10 00 00 00 00 01 00 00 |................|
+00006fd0 47 41 24 01 33 61 31 00 c2 26 40 00 00 00 00 00 |GA$.3a1..&@.....|
+00006fe0 c2 26 40 00 00 00 00 00 08 00 00 00 10 00 00 00 |.&@.............|
+00006ff0 00 01 00 00 47 41 24 01 33 61 31 00 16 10 40 00 |....GA$.3a1...@.|
+00007000 00 00 00 00 1b 10 40 00 00 00 00 00 08 00 00 00 |......@.........|
+00007010 10 00 00 00 00 01 00 00 47 41 24 01 33 61 31 00 |........GA$.3a1.|
+00007020 cc 26 40 00 00 00 00 00 d1 26 40 00 00 00 00 00 |.&@......&@.....|
+00007030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007040 00 00 00 00 00 00 00 00 01 00 00 00 04 00 f1 ff |................|
+00007050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007060 08 00 00 00 01 00 04 00 9c 03 40 00 00 00 00 00 |..........@.....|
+00007070 20 00 00 00 00 00 00 00 12 00 00 00 04 00 f1 ff | ...............|
+00007080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007090 1d 00 00 00 02 00 0e 00 d0 11 40 00 00 00 00 00 |..........@.....|
+000070a0 00 00 00 00 00 00 00 00 1f 00 00 00 02 00 0e 00 |................|
+000070b0 00 12 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............|
+000070c0 32 00 00 00 02 00 0e 00 40 12 40 00 00 00 00 00 |2.......@.@.....|
+000070d0 00 00 00 00 00 00 00 00 48 00 00 00 01 00 19 00 |........H.......|
+000070e0 48 7d 40 00 00 00 00 00 01 00 00 00 00 00 00 00 |H}@.............|
+000070f0 54 00 00 00 01 00 14 00 d0 4d 40 00 00 00 00 00 |T........M@.....|
+00007100 00 00 00 00 00 00 00 00 7b 00 00 00 02 00 0e 00 |........{.......|
+00007110 70 12 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |p.@.............|
+00007120 87 00 00 00 01 00 13 00 c8 4d 40 00 00 00 00 00 |.........M@.....|
+00007130 00 00 00 00 00 00 00 00 a6 00 00 00 04 00 f1 ff |................|
+00007140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007150 b0 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 |................|
+00007160 00 00 00 00 00 00 00 00 b9 00 00 00 01 00 12 00 |................|
+00007170 58 34 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |X4@.............|
+00007180 00 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 |................|
+00007190 00 00 00 00 00 00 00 00 c7 00 00 00 00 00 11 00 |................|
+000071a0 f8 30 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |.0@.............|
+000071b0 da 00 00 00 01 00 15 00 d8 4d 40 00 00 00 00 00 |.........M@.....|
+000071c0 00 00 00 00 00 00 00 00 e3 00 00 00 01 00 17 00 |................|
+000071d0 e8 4f 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |.O@.............|
+000071e0 f9 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+000071f0 00 00 00 00 00 00 00 00 0b 01 00 00 12 00 00 00 |................|
+00007200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007210 1e 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007220 00 00 00 00 00 00 00 00 2f 01 00 00 12 00 00 00 |......../.......|
+00007230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007240 38 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |8...............|
+00007250 00 00 00 00 00 00 00 00 15 05 00 00 11 00 18 00 |................|
+00007260 80 62 40 00 00 00 00 00 7f 00 00 00 00 00 00 00 |.b@.............|
+00007270 45 02 00 00 11 00 19 00 bc 7f 40 00 00 00 00 00 |E.........@.....|
+00007280 04 00 00 00 00 00 00 00 4a 01 00 00 11 00 18 00 |........J.......|
+00007290 38 7d 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |8}@.............|
+000072a0 50 01 00 00 11 00 18 00 e0 50 40 00 00 00 00 00 |P........P@.....|
+000072b0 e4 10 00 00 00 00 00 00 54 01 00 00 12 00 0e 00 |........T.......|
+000072c0 94 16 40 00 00 00 00 00 1f 00 00 00 00 00 00 00 |..@.............|
+000072d0 60 01 00 00 10 00 18 00 40 7d 40 00 00 00 00 00 |`.......@}@.....|
+000072e0 00 00 00 00 00 00 00 00 67 01 00 00 11 00 18 00 |........g.......|
+000072f0 c0 7b 40 00 00 00 00 00 10 00 00 00 00 00 00 00 |.{@.............|
+00007300 70 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |p...............|
+00007310 00 00 00 00 00 00 00 00 7e 01 00 00 11 00 18 00 |........~.......|
+00007320 30 7b 40 00 00 00 00 00 10 00 00 00 00 00 00 00 |0{@.............|
+00007330 88 01 00 00 12 00 0e 00 b3 16 40 00 00 00 00 00 |..........@.....|
+00007340 81 00 00 00 00 00 00 00 8f 01 00 00 12 00 00 00 |................|
+00007350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007360 a2 01 00 00 11 00 19 00 ca 7f 40 00 00 00 00 00 |..........@.....|
+00007370 01 00 00 00 00 00 00 00 a9 01 00 00 11 00 19 00 |................|
+00007380 a0 7f 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |..@.............|
+00007390 ea 03 00 00 20 00 18 00 c0 50 40 00 00 00 00 00 |.... ....P@.....|
+000073a0 00 00 00 00 00 00 00 00 b0 01 00 00 11 00 10 00 |................|
+000073b0 00 30 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |.0@.............|
+000073c0 bf 01 00 00 11 00 18 00 b0 7b 40 00 00 00 00 00 |.........{@.....|
+000073d0 10 00 00 00 00 00 00 00 c8 01 00 00 11 00 18 00 |................|
+000073e0 50 7b 40 00 00 00 00 00 10 00 00 00 00 00 00 00 |P{@.............|
+000073f0 d3 01 00 00 11 00 18 00 20 65 40 00 00 00 00 00 |........ e@.....|
+00007400 68 00 00 00 00 00 00 00 da 01 00 00 11 00 18 00 |h...............|
+00007410 80 7b 40 00 00 00 00 00 10 00 00 00 00 00 00 00 |.{@.............|
+00007420 e4 01 00 00 11 00 19 00 cb 7f 40 00 00 00 00 00 |..........@.....|
+00007430 01 00 00 00 00 00 00 00 ec 01 00 00 12 00 0e 00 |................|
+00007440 76 12 40 00 00 00 00 00 6d 03 00 00 00 00 00 00 |v.@.....m.......|
+00007450 f1 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007460 00 00 00 00 00 00 00 00 00 02 00 00 12 00 00 00 |................|
+00007470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007480 13 02 00 00 11 02 10 00 08 30 40 00 00 00 00 00 |.........0@.....|
+00007490 00 00 00 00 00 00 00 00 20 02 00 00 12 00 0e 00 |........ .......|
+000074a0 e3 15 40 00 00 00 00 00 b1 00 00 00 00 00 00 00 |..@.............|
+000074b0 1e 05 00 00 11 00 18 00 50 64 40 00 00 00 00 00 |........Pd@.....|
+000074c0 0a 00 00 00 00 00 00 00 28 02 00 00 12 00 00 00 |........(.......|
+000074d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000074e0 36 02 00 00 12 00 0e 00 41 1d 40 00 00 00 00 00 |6.......A.@.....|
+000074f0 e9 00 00 00 00 00 00 00 40 02 00 00 11 00 18 00 |........@.......|
+00007500 68 64 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |hd@.............|
+00007510 47 02 00 00 11 00 19 00 e0 7f 40 00 00 00 00 00 |G.........@.....|
+00007520 38 00 00 00 00 00 00 00 4d 02 00 00 11 00 19 00 |8.......M.......|
+00007530 28 80 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |(.@.............|
+00007540 55 02 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |U...............|
+00007550 00 00 00 00 00 00 00 00 5f 02 00 00 12 02 0f 00 |........_.......|
+00007560 c4 26 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |.&@.............|
+00007570 65 02 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |e...............|
+00007580 00 00 00 00 00 00 00 00 82 02 00 00 12 00 00 00 |................|
+00007590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000075a0 8f 02 00 00 12 02 0e 00 c0 11 40 00 00 00 00 00 |..........@.....|
+000075b0 05 00 00 00 00 00 00 00 a7 02 00 00 12 00 0e 00 |................|
+000075c0 54 21 40 00 00 00 00 00 76 01 00 00 00 00 00 00 |T!@.....v.......|
+000075d0 b1 02 00 00 12 00 0e 00 5d 25 40 00 00 00 00 00 |........]%@.....|
+000075e0 3b 01 00 00 00 00 00 00 ba 02 00 00 11 00 19 00 |;...............|
+000075f0 18 80 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |..@.............|
+00007600 c4 02 00 00 11 00 18 00 60 7b 40 00 00 00 00 00 |........`{@.....|
+00007610 10 00 00 00 00 00 00 00 cf 02 00 00 11 00 18 00 |................|
+00007620 90 7b 40 00 00 00 00 00 10 00 00 00 00 00 00 00 |.{@.............|
+00007630 d9 02 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007640 00 00 00 00 00 00 00 00 ec 02 00 00 12 00 00 00 |................|
+00007650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007660 3a 02 00 00 11 00 18 00 e0 61 40 00 00 00 00 00 |:........a@.....|
+00007670 90 00 00 00 00 00 00 00 f5 02 00 00 12 00 00 00 |................|
+00007680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007690 09 03 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+000076a0 00 00 00 00 00 00 00 00 19 03 00 00 11 00 19 00 |................|
+000076b0 c0 7f 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |..@.............|
+000076c0 1f 03 00 00 11 00 19 00 d0 7f 40 00 00 00 00 00 |..........@.....|
+000076d0 08 00 00 00 00 00 00 00 ee 03 00 00 12 00 0e 00 |................|
+000076e0 90 11 40 00 00 00 00 00 26 00 00 00 00 00 00 00 |..@.....&.......|
+000076f0 26 03 00 00 12 00 0e 00 13 1f 40 00 00 00 00 00 |&.........@.....|
+00007700 ac 00 00 00 00 00 00 00 32 03 00 00 12 00 0e 00 |........2.......|
+00007710 58 1b 40 00 00 00 00 00 df 00 00 00 00 00 00 00 |X.@.............|
+00007720 3b 03 00 00 11 00 18 00 a0 65 40 00 00 00 00 00 |;........e@.....|
+00007730 30 00 00 00 00 00 00 00 43 03 00 00 11 00 18 00 |0.......C.......|
+00007740 00 7b 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |.{@.............|
+00007750 4c 03 00 00 11 00 18 00 e0 65 40 00 00 00 00 00 |L........e@.....|
+00007760 58 00 00 00 00 00 00 00 90 03 00 00 11 00 18 00 |X...............|
+00007770 c0 63 40 00 00 00 00 00 7a 00 00 00 00 00 00 00 |.c@.....z.......|
+00007780 52 03 00 00 12 02 0c 00 00 10 40 00 00 00 00 00 |R.........@.....|
+00007790 00 00 00 00 00 00 00 00 58 03 00 00 12 00 00 00 |........X.......|
+000077a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000077b0 67 03 00 00 11 00 18 00 40 7b 40 00 00 00 00 00 |g.......@{@.....|
+000077c0 10 00 00 00 00 00 00 00 71 03 00 00 12 00 0e 00 |........q.......|
+000077d0 6b 20 40 00 00 00 00 00 e9 00 00 00 00 00 00 00 |k @.............|
+000077e0 7a 03 00 00 11 02 18 00 40 7d 40 00 00 00 00 00 |z.......@}@.....|
+000077f0 00 00 00 00 00 00 00 00 c2 03 00 00 11 00 19 00 |................|
+00007800 b0 7f 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |..@.............|
+00007810 86 03 00 00 11 00 18 00 80 64 40 00 00 00 00 00 |.........d@.....|
+00007820 90 00 00 00 00 00 00 00 8c 03 00 00 12 00 0e 00 |................|
+00007830 2a 1e 40 00 00 00 00 00 e9 00 00 00 00 00 00 00 |*.@.............|
+00007840 95 03 00 00 12 00 0e 00 34 17 40 00 00 00 00 00 |........4.@.....|
+00007850 b3 03 00 00 00 00 00 00 9e 03 00 00 11 00 18 00 |................|
+00007860 a0 6e 40 00 00 00 00 00 40 02 00 00 00 00 00 00 |.n@.....@.......|
+00007870 a4 03 00 00 12 00 0e 00 98 26 40 00 00 00 00 00 |.........&@.....|
+00007880 2a 00 00 00 00 00 00 00 ae 03 00 00 11 00 19 00 |*...............|
+00007890 20 80 40 00 00 00 00 00 08 00 00 00 00 00 00 00 | .@.............|
+000078a0 b4 03 00 00 11 00 19 00 c4 7f 40 00 00 00 00 00 |..........@.....|
+000078b0 04 00 00 00 00 00 00 00 bb 03 00 00 12 00 0e 00 |................|
+000078c0 e7 1a 40 00 00 00 00 00 71 00 00 00 00 00 00 00 |..@.....q.......|
+000078d0 c4 03 00 00 11 00 18 00 60 64 40 00 00 00 00 00 |........`d@.....|
+000078e0 08 00 00 00 00 00 00 00 cb 03 00 00 11 00 19 00 |................|
+000078f0 40 7d 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |@}@.............|
+00007900 de 03 00 00 11 00 18 00 70 7b 40 00 00 00 00 00 |........p{@.....|
+00007910 10 00 00 00 00 00 00 00 e8 03 00 00 10 00 18 00 |................|
+00007920 c0 50 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |.P@.............|
+00007930 b9 04 00 00 11 00 19 00 a4 7f 40 00 00 00 00 00 |..........@.....|
+00007940 04 00 00 00 00 00 00 00 5d 02 00 00 11 00 19 00 |........].......|
+00007950 b4 7f 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |..@.............|
+00007960 f5 03 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007970 00 00 00 00 00 00 00 00 12 04 00 00 10 00 19 00 |................|
+00007980 30 80 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |0.@.............|
+00007990 17 04 00 00 11 00 18 00 00 63 40 00 00 00 00 00 |.........c@.....|
+000079a0 2b 00 00 00 00 00 00 00 1e 04 00 00 12 00 00 00 |+...............|
+000079b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000079c0 35 04 00 00 11 00 18 00 a0 7b 40 00 00 00 00 00 |5........{@.....|
+000079d0 10 00 00 00 00 00 00 00 3f 04 00 00 12 00 00 00 |........?.......|
+000079e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000079f0 53 04 00 00 11 00 18 00 40 66 40 00 00 00 00 00 |S.......@f@.....|
+00007a00 50 00 00 00 00 00 00 00 5b 04 00 00 12 00 0e 00 |P.......[.......|
+00007a10 37 1c 40 00 00 00 00 00 0a 01 00 00 00 00 00 00 |7.@.............|
+00007a20 64 04 00 00 11 00 19 00 60 7d 40 00 00 00 00 00 |d.......`}@.....|
+00007a30 40 02 00 00 00 00 00 00 69 04 00 00 10 00 19 00 |@.......i.......|
+00007a40 40 7d 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |@}@.............|
+00007a50 75 04 00 00 11 00 18 00 10 7b 40 00 00 00 00 00 |u........{@.....|
+00007a60 10 00 00 00 00 00 00 00 7e 04 00 00 12 00 00 00 |........~.......|
+00007a70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007a80 8f 04 00 00 11 00 19 00 a8 7f 40 00 00 00 00 00 |..........@.....|
+00007a90 04 00 00 00 00 00 00 00 91 04 00 00 11 00 19 00 |................|
+00007aa0 b8 7f 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |..@.............|
+00007ab0 93 04 00 00 11 00 18 00 d0 7b 40 00 00 00 00 00 |.........{@.....|
+00007ac0 10 00 00 00 00 00 00 00 9e 04 00 00 11 00 19 00 |................|
+00007ad0 d8 7f 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |..@.............|
+00007ae0 a1 04 00 00 11 00 18 00 40 64 40 00 00 00 00 00 |........@d@.....|
+00007af0 0a 00 00 00 00 00 00 00 a7 04 00 00 11 00 19 00 |................|
+00007b00 c9 7f 40 00 00 00 00 00 01 00 00 00 00 00 00 00 |..@.............|
+00007b10 ac 04 00 00 11 00 18 00 e0 7b 40 00 00 00 00 00 |.........{@.....|
+00007b20 18 01 00 00 00 00 00 00 b5 04 00 00 11 00 18 00 |................|
+00007b30 a0 66 40 00 00 00 00 00 00 08 00 00 00 00 00 00 |.f@.............|
+00007b40 bb 04 00 00 11 00 18 00 e0 70 40 00 00 00 00 00 |.........p@.....|
+00007b50 20 0a 00 00 00 00 00 00 c2 04 00 00 11 00 18 00 | ...............|
+00007b60 20 7b 40 00 00 00 00 00 10 00 00 00 00 00 00 00 | {@.............|
+00007b70 cb 04 00 00 11 00 18 00 30 7d 40 00 00 00 00 00 |........0}@.....|
+00007b80 08 00 00 00 00 00 00 00 d1 04 00 00 12 00 0e 00 |................|
+00007b90 ca 22 40 00 00 00 00 00 1d 01 00 00 00 00 00 00 |."@.............|
+00007ba0 d7 02 00 00 11 00 19 00 ac 7f 40 00 00 00 00 00 |..........@.....|
+00007bb0 04 00 00 00 00 00 00 00 da 04 00 00 20 00 00 00 |............ ...|
+00007bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007bd0 e9 04 00 00 11 00 19 00 c8 7f 40 00 00 00 00 00 |..........@.....|
+00007be0 01 00 00 00 00 00 00 00 f0 04 00 00 11 00 18 00 |................|
+00007bf0 40 63 40 00 00 00 00 00 6f 00 00 00 00 00 00 00 |@c@.....o.......|
+00007c00 f7 04 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................|
+00007c10 00 00 00 00 00 00 00 00 0a 05 00 00 11 00 18 00 |................|
+00007c20 00 7d 40 00 00 00 00 00 2f 00 00 00 00 00 00 00 |.}@...../.......|
+00007c30 11 05 00 00 12 00 0e 00 e7 23 40 00 00 00 00 00 |.........#@.....|
+00007c40 76 01 00 00 00 00 00 00 1a 05 00 00 12 00 0e 00 |v...............|
+00007c50 bf 1f 40 00 00 00 00 00 ac 00 00 00 00 00 00 00 |..@.............|
+00007c60 00 63 72 74 31 2e 6f 00 5f 5f 61 62 69 5f 74 61 |.crt1.o.__abi_ta|
+00007c70 67 00 63 72 74 62 65 67 69 6e 2e 6f 00 64 65 72 |g.crtbegin.o.der|
+00007c80 65 67 69 73 74 65 72 5f 74 6d 5f 63 6c 6f 6e 65 |egister_tm_clone|
+00007c90 73 00 5f 5f 64 6f 5f 67 6c 6f 62 61 6c 5f 64 74 |s.__do_global_dt|
+00007ca0 6f 72 73 5f 61 75 78 00 63 6f 6d 70 6c 65 74 65 |ors_aux.complete|
+00007cb0 64 2e 30 00 5f 5f 64 6f 5f 67 6c 6f 62 61 6c 5f |d.0.__do_global_|
+00007cc0 64 74 6f 72 73 5f 61 75 78 5f 66 69 6e 69 5f 61 |dtors_aux_fini_a|
+00007cd0 72 72 61 79 5f 65 6e 74 72 79 00 66 72 61 6d 65 |rray_entry.frame|
+00007ce0 5f 64 75 6d 6d 79 00 5f 5f 66 72 61 6d 65 5f 64 |_dummy.__frame_d|
+00007cf0 75 6d 6d 79 5f 69 6e 69 74 5f 61 72 72 61 79 5f |ummy_init_array_|
+00007d00 65 6e 74 72 79 00 63 6f 6c 75 6d 6e 73 2e 63 00 |entry.columns.c.|
+00007d10 63 72 74 65 6e 64 2e 6f 00 5f 5f 46 52 41 4d 45 |crtend.o.__FRAME|
+00007d20 5f 45 4e 44 5f 5f 00 5f 5f 47 4e 55 5f 45 48 5f |_END__.__GNU_EH_|
+00007d30 46 52 41 4d 45 5f 48 44 52 00 5f 44 59 4e 41 4d |FRAME_HDR._DYNAM|
+00007d40 49 43 00 5f 47 4c 4f 42 41 4c 5f 4f 46 46 53 45 |IC._GLOBAL_OFFSE|
+00007d50 54 5f 54 41 42 4c 45 5f 00 53 44 4c 5f 44 65 73 |T_TABLE_.SDL_Des|
+00007d60 74 72 6f 79 57 69 6e 64 6f 77 00 53 44 4c 5f 43 |troyWindow.SDL_C|
+00007d70 72 65 61 74 65 52 65 6e 64 65 72 65 72 00 53 44 |reateRenderer.SD|
+00007d80 4c 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 00 53 |L_CreateWindow.S|
+00007d90 44 4c 5f 51 75 69 74 00 53 44 4c 5f 52 65 6e 64 |DL_Quit.SDL_Rend|
+00007da0 65 72 50 72 65 73 65 6e 74 00 64 65 73 63 72 00 |erPresent.descr.|
+00007db0 62 79 6e 00 73 68 75 74 64 6f 77 6e 53 44 4c 00 |byn.shutdownSDL.|
+00007dc0 5f 65 64 61 74 61 00 74 69 6c 65 5f 64 73 74 00 |_edata.tile_dst.|
+00007dd0 53 44 4c 5f 52 57 46 72 6f 6d 4d 65 6d 00 6d 61 |SDL_RWFromMem.ma|
+00007de0 69 6e 5f 62 61 63 6b 00 72 65 6e 64 65 72 00 53 |in_back.render.S|
+00007df0 44 4c 5f 52 65 6e 64 65 72 44 72 61 77 4c 69 6e |DL_RenderDrawLin|
+00007e00 65 00 6d 61 69 6e 5f 6d 00 63 6f 6c 6f 75 72 00 |e.main_m.colour.|
+00007e10 5f 49 4f 5f 73 74 64 69 6e 5f 75 73 65 64 00 74 |_IO_stdin_used.t|
+00007e20 69 6c 65 5f 73 72 63 00 6c 65 76 65 6c 5f 62 61 |ile_src.level_ba|
+00007e30 63 6b 00 61 62 6f 75 74 6c 00 6e 65 78 74 5f 74 |ck.aboutl.next_t|
+00007e40 72 69 6d 00 70 61 75 73 65 5f 66 00 6d 61 69 6e |rim.pause_f.main|
+00007e50 00 49 4d 47 5f 4c 6f 61 64 50 4e 47 5f 52 57 00 |.IMG_LoadPNG_RW.|
+00007e60 53 44 4c 5f 52 65 6e 64 65 72 46 69 6c 6c 52 65 |SDL_RenderFillRe|
+00007e70 63 74 00 5f 5f 64 73 6f 5f 68 61 6e 64 6c 65 00 |ct.__dso_handle.|
+00007e80 69 6e 69 74 53 44 4c 00 53 44 4c 5f 50 6f 6c 6c |initSDL.SDL_Poll|
+00007e90 45 76 65 6e 74 00 52 65 6e 5f 61 62 6f 75 74 00 |Event.Ren_about.|
+00007ea0 70 61 75 73 65 6c 00 65 76 65 6e 74 00 74 65 78 |pausel.event.tex|
+00007eb0 74 75 72 65 00 53 44 4c 5f 44 65 6c 61 79 00 5f |ture.SDL_Delay._|
+00007ec0 66 69 6e 69 00 5f 5f 6c 69 62 63 5f 73 74 61 72 |fini.__libc_star|
+00007ed0 74 5f 6d 61 69 6e 40 47 4c 49 42 43 5f 32 2e 33 |t_main@GLIBC_2.3|
+00007ee0 34 00 53 44 4c 5f 47 65 74 45 72 72 6f 72 00 5f |4.SDL_GetError._|
+00007ef0 64 6c 5f 72 65 6c 6f 63 61 74 65 5f 73 74 61 74 |dl_relocate_stat|
+00007f00 69 63 5f 70 69 65 00 52 65 6e 5f 6c 65 76 65 6c |ic_pie.Ren_level|
+00007f10 00 52 65 6e 5f 6c 69 6e 65 00 72 77 6f 70 73 5f |.Ren_line.rwops_|
+00007f20 6e 65 77 00 6c 65 76 65 6c 5f 74 72 69 6d 00 68 |new.level_trim.h|
+00007f30 69 67 68 5f 62 61 63 6b 00 53 44 4c 5f 52 65 6e |igh_back.SDL_Ren|
+00007f40 64 65 72 44 72 61 77 52 65 63 74 00 53 44 4c 5f |derDrawRect.SDL_|
+00007f50 49 6e 69 74 00 53 44 4c 5f 52 65 6e 64 65 72 44 |Init.SDL_RenderD|
+00007f60 72 61 77 50 6f 69 6e 74 00 53 44 4c 5f 46 72 65 |rawPoint.SDL_Fre|
+00007f70 65 53 75 72 66 61 63 65 00 67 61 6d 65 70 00 77 |eSurface.gamep.w|
+00007f80 69 6e 64 6f 77 00 52 65 6e 5f 72 65 73 74 61 72 |indow.Ren_restar|
+00007f90 74 00 52 65 6e 5f 6c 6f 67 6f 00 73 74 61 74 75 |t.Ren_logo.statu|
+00007fa0 73 6c 00 74 69 6c 65 5f 70 6f 73 00 69 6e 66 6f |sl.tile_pos.info|
+00007fb0 6c 00 5f 69 6e 69 74 00 53 44 4c 5f 52 65 6e 64 |l._init.SDL_Rend|
+00007fc0 65 72 43 6f 70 79 00 6d 61 69 6e 5f 74 72 69 6d |erCopy.main_trim|
+00007fd0 00 52 65 6e 5f 6d 65 6e 75 00 5f 5f 54 4d 43 5f |.Ren_menu.__TMC_|
+00007fe0 45 4e 44 5f 5f 00 68 69 67 68 6c 00 52 65 6e 5f |END__.highl.Ren_|
+00007ff0 69 6e 66 6f 00 62 61 63 6b 64 72 6f 70 00 67 72 |info.backdrop.gr|
+00008000 69 64 32 00 63 68 65 63 6b 5f 6b 65 79 00 69 6d |id2.check_key.im|
+00008010 61 67 65 00 74 69 6c 65 5f 63 00 69 6e 69 74 5f |age.tile_c.init_|
+00008020 67 66 78 00 67 61 6d 65 6f 6c 00 73 74 64 65 72 |gfx.gameol.stder|
+00008030 72 40 47 4c 49 42 43 5f 32 2e 32 2e 35 00 6e 65 |r@GLIBC_2.2.5.ne|
+00008040 78 74 5f 62 61 63 6b 00 5f 5f 64 61 74 61 5f 73 |xt_back.__data_s|
+00008050 74 61 72 74 00 53 44 4c 5f 43 72 65 61 74 65 54 |tart.SDL_CreateT|
+00008060 65 78 74 75 72 65 46 72 6f 6d 53 75 72 66 61 63 |extureFromSurfac|
+00008070 65 00 5f 65 6e 64 00 73 74 61 74 75 73 00 53 44 |e._end.status.SD|
+00008080 4c 5f 53 65 74 52 65 6e 64 65 72 44 72 61 77 43 |L_SetRenderDrawC|
+00008090 6f 6c 6f 72 00 68 69 67 68 5f 74 72 69 6d 00 66 |olor.high_trim.f|
+000080a0 70 72 69 6e 74 66 40 47 4c 49 42 43 5f 32 2e 32 |printf@GLIBC_2.2|
+000080b0 2e 35 00 6d 5f 6d 65 6e 75 6c 00 52 65 6e 5f 67 |.5.m_menul.Ren_g|
+000080c0 61 6d 65 00 67 72 69 64 00 5f 5f 62 73 73 5f 73 |ame.grid.__bss_s|
+000080d0 74 61 72 74 00 6c 6f 67 6f 5f 73 72 63 00 70 75 |tart.logo_src.pu|
+000080e0 74 73 40 47 4c 49 42 43 5f 32 2e 32 2e 35 00 6a |ts@GLIBC_2.2.5.j|
+000080f0 00 7a 00 67 61 6d 65 6f 5f 62 61 63 6b 00 73 72 |.z.gameo_back.sr|
+00008100 00 67 61 6d 65 6f 00 71 75 69 74 00 67 72 61 64 |.gameo.quit.grad|
+00008110 5f 74 61 62 00 61 73 63 69 69 00 42 72 69 63 6b |_tab.ascii.Brick|
+00008120 73 00 6c 6f 67 6f 5f 64 73 74 00 74 69 74 6c 65 |s.logo_dst.title|
+00008130 00 52 65 6e 5f 6e 65 78 74 00 5f 5f 67 6d 6f 6e |.Ren_next.__gmon|
+00008140 5f 73 74 61 72 74 5f 5f 00 6e 65 78 74 5f 70 00 |_start__.next_p.|
+00008150 6d 5f 6d 65 6e 75 00 53 44 4c 5f 52 65 6e 64 65 |m_menu.SDL_Rende|
+00008160 72 53 65 74 53 63 61 6c 65 00 61 75 74 68 6f 72 |rSetScale.author|
+00008170 00 52 65 6e 5f 68 69 67 68 00 52 65 6e 5f 70 61 |.Ren_high.Ren_pa|
+00008180 75 73 65 00 00 2e 73 79 6d 74 61 62 00 2e 73 74 |use...symtab..st|
+00008190 72 74 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e |rtab..shstrtab..|
+000081a0 69 6e 74 65 72 70 00 2e 6e 6f 74 65 2e 67 6e 75 |interp..note.gnu|
+000081b0 2e 70 72 6f 70 65 72 74 79 00 2e 6e 6f 74 65 2e |.property..note.|
+000081c0 67 6e 75 2e 62 75 69 6c 64 2d 69 64 00 2e 6e 6f |gnu.build-id..no|
+000081d0 74 65 2e 41 42 49 2d 74 61 67 00 2e 67 6e 75 2e |te.ABI-tag..gnu.|
+000081e0 68 61 73 68 00 2e 64 79 6e 73 79 6d 00 2e 64 79 |hash..dynsym..dy|
+000081f0 6e 73 74 72 00 2e 67 6e 75 2e 76 65 72 73 69 6f |nstr..gnu.versio|
+00008200 6e 00 2e 67 6e 75 2e 76 65 72 73 69 6f 6e 5f 72 |n..gnu.version_r|
+00008210 00 2e 72 65 6c 61 2e 64 79 6e 00 2e 72 65 6c 61 |..rela.dyn..rela|
+00008220 2e 70 6c 74 00 2e 69 6e 69 74 00 2e 74 65 78 74 |.plt..init..text|
+00008230 00 2e 66 69 6e 69 00 2e 72 6f 64 61 74 61 00 2e |..fini..rodata..|
+00008240 65 68 5f 66 72 61 6d 65 5f 68 64 72 00 2e 65 68 |eh_frame_hdr..eh|
+00008250 5f 66 72 61 6d 65 00 2e 69 6e 69 74 5f 61 72 72 |_frame..init_arr|
+00008260 61 79 00 2e 66 69 6e 69 5f 61 72 72 61 79 00 2e |ay..fini_array..|
+00008270 64 79 6e 61 6d 69 63 00 2e 67 6f 74 00 2e 67 6f |dynamic..got..go|
+00008280 74 2e 70 6c 74 00 2e 64 61 74 61 00 2e 62 73 73 |t.plt..data..bss|
+00008290 00 2e 63 6f 6d 6d 65 6e 74 00 2e 61 6e 6e 6f 62 |..comment..annob|
+000082a0 69 6e 2e 6e 6f 74 65 73 00 2e 67 6e 75 2e 62 75 |in.notes..gnu.bu|
+000082b0 69 6c 64 2e 61 74 74 72 69 62 75 74 65 73 00 00 |ild.attributes..|
+000082c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00008300 1b 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 |................|
+00008310 18 03 40 00 00 00 00 00 18 03 00 00 00 00 00 00 |..@.............|
+00008320 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008330 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008340 23 00 00 00 07 00 00 00 02 00 00 00 00 00 00 00 |#...............|
+00008350 38 03 40 00 00 00 00 00 38 03 00 00 00 00 00 00 |8.@.....8.......|
+00008360 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |@...............|
+00008370 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008380 36 00 00 00 07 00 00 00 02 00 00 00 00 00 00 00 |6...............|
+00008390 78 03 40 00 00 00 00 00 78 03 00 00 00 00 00 00 |x.@.....x.......|
+000083a0 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |$...............|
+000083b0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000083c0 49 00 00 00 07 00 00 00 02 00 00 00 00 00 00 00 |I...............|
+000083d0 9c 03 40 00 00 00 00 00 9c 03 00 00 00 00 00 00 |..@.............|
+000083e0 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...............|
+000083f0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008400 57 00 00 00 f6 ff ff 6f 02 00 00 00 00 00 00 00 |W......o........|
+00008410 c0 03 40 00 00 00 00 00 c0 03 00 00 00 00 00 00 |..@.............|
+00008420 24 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 |$...............|
+00008430 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008440 61 00 00 00 0b 00 00 00 02 00 00 00 00 00 00 00 |a...............|
+00008450 e8 03 40 00 00 00 00 00 e8 03 00 00 00 00 00 00 |..@.............|
+00008460 70 02 00 00 00 00 00 00 07 00 00 00 01 00 00 00 |p...............|
+00008470 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 |................|
+00008480 69 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 |i...............|
+00008490 58 06 40 00 00 00 00 00 58 06 00 00 00 00 00 00 |X.@.....X.......|
+000084a0 d8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000084b0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000084c0 71 00 00 00 ff ff ff 6f 02 00 00 00 00 00 00 00 |q......o........|
+000084d0 30 08 40 00 00 00 00 00 30 08 00 00 00 00 00 00 |0.@.....0.......|
+000084e0 34 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 |4...............|
+000084f0 02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |................|
+00008500 7e 00 00 00 fe ff ff 6f 02 00 00 00 00 00 00 00 |~......o........|
+00008510 68 08 40 00 00 00 00 00 68 08 00 00 00 00 00 00 |h.@.....h.......|
+00008520 30 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00 |0...............|
+00008530 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008540 8d 00 00 00 04 00 00 00 02 00 00 00 00 00 00 00 |................|
+00008550 98 08 40 00 00 00 00 00 98 08 00 00 00 00 00 00 |..@.............|
+00008560 48 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 |H...............|
+00008570 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 |................|
+00008580 97 00 00 00 04 00 00 00 42 00 00 00 00 00 00 00 |........B.......|
+00008590 e0 08 40 00 00 00 00 00 e0 08 00 00 00 00 00 00 |..@.............|
+000085a0 10 02 00 00 00 00 00 00 06 00 00 00 17 00 00 00 |................|
+000085b0 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 |................|
+000085c0 a1 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 |................|
+000085d0 00 10 40 00 00 00 00 00 00 10 00 00 00 00 00 00 |..@.............|
+000085e0 1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000085f0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008600 9c 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 |................|
+00008610 20 10 40 00 00 00 00 00 20 10 00 00 00 00 00 00 | .@..... .......|
+00008620 70 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |p...............|
+00008630 10 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................|
+00008640 a7 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 |................|
+00008650 90 11 40 00 00 00 00 00 90 11 00 00 00 00 00 00 |..@.............|
+00008660 32 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |2...............|
+00008670 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008680 ad 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 |................|
+00008690 c4 26 40 00 00 00 00 00 c4 26 00 00 00 00 00 00 |.&@......&......|
+000086a0 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000086b0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000086c0 b3 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 |................|
+000086d0 00 30 40 00 00 00 00 00 00 30 00 00 00 00 00 00 |.0@......0......|
+000086e0 f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000086f0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008700 bb 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 |................|
+00008710 f8 30 40 00 00 00 00 00 f8 30 00 00 00 00 00 00 |.0@......0......|
+00008720 b4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008730 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008740 c9 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 |................|
+00008750 b0 31 40 00 00 00 00 00 b0 31 00 00 00 00 00 00 |.1@......1......|
+00008760 ac 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008770 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008780 d3 00 00 00 0e 00 00 00 03 00 00 00 00 00 00 00 |................|
+00008790 c8 4d 40 00 00 00 00 00 c8 3d 00 00 00 00 00 00 |.M@......=......|
+000087a0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000087b0 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................|
+000087c0 df 00 00 00 0f 00 00 00 03 00 00 00 00 00 00 00 |................|
+000087d0 d0 4d 40 00 00 00 00 00 d0 3d 00 00 00 00 00 00 |.M@......=......|
+000087e0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000087f0 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................|
+00008800 eb 00 00 00 06 00 00 00 03 00 00 00 00 00 00 00 |................|
+00008810 d8 4d 40 00 00 00 00 00 d8 3d 00 00 00 00 00 00 |.M@......=......|
+00008820 00 02 00 00 00 00 00 00 07 00 00 00 00 00 00 00 |................|
+00008830 08 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................|
+00008840 f4 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 |................|
+00008850 d8 4f 40 00 00 00 00 00 d8 3f 00 00 00 00 00 00 |.O@......?......|
+00008860 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008870 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................|
+00008880 f9 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 |................|
+00008890 e8 4f 40 00 00 00 00 00 e8 3f 00 00 00 00 00 00 |.O@......?......|
+000088a0 c8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+000088b0 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................|
+000088c0 02 01 00 00 01 00 00 00 03 00 00 00 00 00 00 00 |................|
+000088d0 c0 50 40 00 00 00 00 00 c0 40 00 00 00 00 00 00 |.P@......@......|
+000088e0 80 2c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.,..............|
+000088f0 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...............|
+00008900 08 01 00 00 08 00 00 00 03 00 00 00 00 00 00 00 |................|
+00008910 40 7d 40 00 00 00 00 00 40 6d 00 00 00 00 00 00 |@}@.....@m......|
+00008920 f0 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008930 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...............|
+00008940 0d 01 00 00 01 00 00 00 30 00 00 00 00 00 00 00 |........0.......|
+00008950 00 00 00 00 00 00 00 00 40 6d 00 00 00 00 00 00 |........@m......|
+00008960 5c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |\...............|
+00008970 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
+00008980 16 01 00 00 03 00 00 00 30 00 00 00 00 00 00 00 |........0.......|
+00008990 00 00 00 00 00 00 00 00 9c 6d 00 00 00 00 00 00 |.........m......|
+000089a0 4f 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |O...............|
+000089b0 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
+000089c0 25 01 00 00 07 00 00 00 00 00 00 00 00 00 00 00 |%...............|
+000089d0 30 a0 40 00 00 00 00 00 ec 6e 00 00 00 00 00 00 |0.@......n......|
+000089e0 44 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |D...............|
+000089f0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008a00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008a10 00 00 00 00 00 00 00 00 30 70 00 00 00 00 00 00 |........0p......|
+00008a20 30 0c 00 00 00 00 00 00 1e 00 00 00 12 00 00 00 |0...............|
+00008a30 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 |................|
+00008a40 09 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008a50 00 00 00 00 00 00 00 00 60 7c 00 00 00 00 00 00 |........`|......|
+00008a60 24 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |$...............|
+00008a70 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008a80 11 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008a90 00 00 00 00 00 00 00 00 84 81 00 00 00 00 00 00 |................|
+00008aa0 3b 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |;...............|
+00008ab0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+00008ac0
diff --git a/src/game.h b/src/game.h
new file mode 100644
index 0000000..c6130bb
--- /dev/null
+++ b/src/game.h
@@ -0,0 +1,269 @@
+int grid [] = {
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0
+};
+
+int grid2 [18][8] = {
+{5, 0, 0, 0, 0, 0, 0, 0},
+{5, 0, 0, 0, 0, 0, 0, 0},
+{5, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0, 0, 0, 0}
+};
+
+/********************
+ * tile combos *
+ * pink = 0 *
+ * green = 1 *
+ * purple = 2 *
+ * yellow = 3 *
+ * orange = 4 *
+ * cyan = 5 *
+ * ******************/
+int Bricks [216][3] = {
+{0,0,0},
+{0,0,1},
+{0,0,2},
+{0,0,4},
+{0,0,5},
+{0,0,3},
+{0,1,0},
+{0,1,1},
+{0,1,2},
+{0,1,4},
+{0,1,5},
+{0,1,3},
+{0,2,0},
+{0,2,1},
+{0,2,2},
+{0,2,4},
+{0,2,5},
+{0,2,3},
+{0,4,0},
+{0,4,1},
+{0,4,2},
+{0,4,4},
+{0,4,5},
+{0,4,3},
+{0,5,0},
+{0,5,1},
+{0,5,2},
+{0,5,4},
+{0,5,5},
+{0,5,3},
+{0,3,0},
+{0,3,1},
+{0,3,2},
+{0,3,4},
+{0,3,5},
+{0,3,3},
+{1,0,0},
+{1,0,1},
+{1,0,2},
+{1,0,4},
+{1,0,5},
+{1,0,3},
+{1,1,0},
+{1,1,1},
+{1,1,2},
+{1,1,4},
+{1,1,5},
+{1,1,3},
+{1,2,0},
+{1,2,1},
+{1,2,2},
+{1,2,4},
+{1,2,5},
+{1,2,3},
+{1,4,0},
+{1,4,1},
+{1,4,2},
+{1,4,4},
+{1,4,5},
+{1,4,3},
+{1,5,0},
+{1,5,1},
+{1,5,2},
+{1,5,4},
+{1,5,5},
+{1,5,3},
+{1,3,0},
+{1,3,1},
+{1,3,2},
+{1,3,4},
+{1,3,5},
+{1,3,3},
+{2,0,0},
+{2,0,1},
+{2,0,2},
+{2,0,4},
+{2,0,5},
+{2,0,3},
+{2,1,0},
+{2,1,1},
+{2,1,2},
+{2,1,4},
+{2,1,5},
+{2,1,3},
+{2,2,0},
+{2,2,1},
+{2,2,2},
+{2,2,4},
+{2,2,5},
+{2,2,3},
+{2,4,0},
+{2,4,1},
+{2,4,2},
+{2,4,4},
+{2,4,5},
+{2,4,3},
+{2,5,0},
+{2,5,1},
+{2,5,2},
+{2,5,4},
+{2,5,5},
+{2,5,3},
+{2,3,0},
+{2,3,1},
+{2,3,2},
+{2,3,4},
+{2,3,5},
+{2,3,3},
+{3,0,0},
+{3,0,1},
+{3,0,2},
+{3,0,4},
+{3,0,5},
+{3,0,3},
+{3,1,0},
+{3,1,1},
+{3,1,2},
+{3,1,4},
+{3,1,5},
+{3,1,3},
+{3,2,0},
+{3,2,1},
+{3,2,2},
+{3,2,4},
+{3,2,5},
+{3,2,3},
+{3,4,0},
+{3,4,1},
+{3,4,2},
+{3,4,4},
+{3,4,5},
+{3,4,3},
+{3,5,0},
+{3,5,1},
+{3,5,2},
+{3,5,4},
+{3,5,5},
+{3,5,3},
+{3,3,0},
+{3,3,1},
+{3,3,2},
+{3,3,4},
+{3,3,5},
+{3,3,3},
+{4,0,0},
+{4,0,1},
+{4,0,2},
+{4,0,4},
+{4,0,5},
+{4,0,3},
+{4,1,0},
+{4,1,1},
+{4,1,2},
+{4,1,4},
+{4,1,5},
+{4,1,3},
+{4,2,0},
+{4,2,1},
+{4,2,2},
+{4,2,4},
+{4,2,5},
+{4,2,3},
+{4,4,0},
+{4,4,1},
+{4,4,2},
+{4,4,4},
+{4,4,5},
+{4,4,3},
+{4,5,0},
+{4,5,1},
+{4,5,2},
+{4,5,4},
+{4,5,5},
+{4,5,3},
+{4,3,0},
+{4,3,1},
+{4,3,2},
+{4,3,4},
+{4,3,5},
+{4,3,3},
+{5,0,0},
+{5,0,1},
+{5,0,2},
+{5,0,4},
+{5,0,5},
+{5,0,3},
+{5,1,0},
+{5,1,1},
+{5,1,2},
+{5,1,4},
+{5,1,5},
+{5,1,3},
+{5,2,0},
+{5,2,1},
+{5,2,2},
+{5,2,4},
+{5,2,5},
+{5,2,3},
+{5,4,0},
+{5,4,1},
+{5,4,2},
+{5,4,4},
+{5,4,5},
+{5,4,3},
+{5,5,0},
+{5,5,1},
+{5,5,2},
+{5,5,4},
+{5,5,5},
+{5,5,3},
+{5,3,0},
+{5,3,1},
+{5,3,2},
+{5,3,4},
+{5,3,5},
+{5,3,3}
+};
diff --git a/src/sprite_sheet.h b/src/sprite_sheet.h
new file mode 100644
index 0000000..a85a5d5
--- /dev/null
+++ b/src/sprite_sheet.h
@@ -0,0 +1,435 @@
+char byn[] = {
+0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A,0x00,0x00,
+0x00,0x0D,0x49,0x48,0x44,0x52,0x00,0x00,0x02,0x4E,
+0x00,0x00,0x00,0x42,0x04,0x03,0x00,0x00,0x00,0x53,
+0x2A,0x44,0x94,0x00,0x00,0x01,0x7D,0x69,0x43,0x43,
+0x50,0x49,0x43,0x43,0x20,0x70,0x72,0x6F,0x66,0x69,
+0x6C,0x65,0x00,0x00,0x28,0x91,0x7D,0x91,0x3D,0x48,
+0x42,0x51,0x18,0x86,0x9F,0x7B,0xED,0x8F,0x50,0x1A,
+0x72,0x88,0x70,0xB8,0x83,0x35,0xE5,0x52,0x11,0x8D,
+0x66,0x81,0x04,0x06,0x62,0x06,0x6A,0x0D,0xDD,0x9F,
+0x34,0xC1,0x7B,0x95,0x7B,0x95,0x96,0xC6,0xA0,0x55,
+0x68,0xE8,0x67,0xC9,0x6A,0x68,0x69,0xAE,0xB5,0xA1,
+0x35,0x08,0x82,0x7E,0x20,0x9A,0x1B,0x9A,0x8A,0x5A,
+0x22,0x6E,0x1C,0x15,0x94,0xC8,0xBE,0xE5,0x3C,0xBC,
+0xE7,0x7B,0x3F,0xCE,0xF7,0x1E,0x90,0x6B,0x05,0xDD,
+0x74,0xBA,0xC2,0x60,0x5A,0x65,0x3B,0x11,0x8D,0x28,
+0xA9,0x74,0x46,0xE9,0x7D,0xA1,0x07,0x89,0x1E,0x64,
+0x02,0xAA,0xEE,0x94,0x66,0xE2,0xF1,0x18,0x1D,0xEB,
+0xF3,0x0E,0x49,0x9C,0xB7,0x21,0x31,0xAB,0x73,0xDF,
+0x9F,0xE5,0x33,0xD6,0x1C,0x1D,0x24,0x05,0x08,0xEB,
+0x25,0xBB,0x0C,0xD2,0x2A,0x30,0xB5,0x51,0x2E,0x09,
+0xDE,0x03,0xFC,0xFA,0xBA,0x6A,0x80,0x74,0x06,0x8C,
+0xD9,0xA9,0x74,0x06,0xA4,0x07,0xA1,0x6B,0x0D,0x7E,
+0x15,0x9C,0xAB,0xB3,0x2C,0x66,0xFA,0xED,0x64,0x62,
+0x16,0x64,0x3F,0xA0,0xE4,0xDA,0x58,0x6B,0x63,0x7D,
+0xDD,0x36,0x41,0x9E,0x04,0x82,0x86,0x69,0x19,0x20,
+0xA7,0x1A,0x6C,0x08,0xDE,0x14,0x6C,0x16,0x2A,0x7A,
+0xF3,0x9D,0x62,0x43,0xEF,0x9A,0xB5,0xB4,0x28,0x74,
+0x20,0x40,0x94,0x79,0x16,0x88,0xA3,0xA0,0x51,0x21,
+0x4F,0x81,0x32,0x21,0xF2,0x58,0x28,0x38,0x24,0x88,
+0x12,0xE9,0xE0,0x1F,0xAE,0xFB,0xE3,0x54,0xD0,0x28,
+0x90,0x47,0x47,0x61,0x8E,0x22,0x26,0x6A,0xDD,0x8F,
+0xF8,0x83,0xDF,0xD9,0x3A,0xD9,0x89,0xF1,0xC6,0x24,
+0x6F,0x04,0xBA,0x9F,0x5D,0xF7,0x7D,0x04,0x7A,0x77,
+0xE0,0xBB,0xEA,0xBA,0x5F,0x47,0xAE,0xFB,0x7D,0x0C,
+0x9E,0x27,0xB8,0xB4,0x5A,0xFE,0x62,0x0D,0xA6,0x3F,
+0xC0,0x53,0x6D,0x69,0xC1,0x43,0x18,0xD8,0x82,0xF3,
+0xAB,0x96,0xA6,0xED,0xC2,0xC5,0x36,0x0C,0x3D,0x96,
+0x54,0x5B,0xAD,0x4B,0x1E,0x40,0xCE,0x66,0xE1,0xED,
+0x14,0x7C,0x69,0x18,0xBC,0x81,0xFE,0xE5,0x46,0x6E,
+0xCD,0x7B,0x4E,0xEE,0x21,0xB9,0x09,0xB1,0x6B,0xD8,
+0x3F,0x80,0xD1,0x1C,0x0C,0xAC,0x74,0xD8,0xBB,0xAF,
+0x3D,0xB7,0x7F,0x7B,0x9A,0xF9,0xFD,0x00,0x08,0xFC,
+0x72,0x7C,0x23,0x75,0x72,0xC6,0x00,0x00,0x00,0x2D,
+0x50,0x4C,0x54,0x45,0x00,0x00,0x00,0xDD,0x22,0xAA,
+0x88,0x55,0xEE,0x00,0x99,0x99,0xCC,0x66,0x33,0x11,
+0xAA,0x44,0x99,0x99,0x99,0xFF,0x77,0xCC,0xBB,0x88,
+0xFF,0xBB,0xAA,0x11,0x00,0xDD,0xDD,0xFF,0x99,0x66,
+0x66,0xFF,0x99,0xFF,0xEE,0x99,0xFF,0xFF,0xFF,0xF9,
+0xB5,0x11,0x45,0x00,0x00,0x00,0x09,0x70,0x48,0x59,
+0x73,0x00,0x00,0x0B,0x13,0x00,0x00,0x0B,0x13,0x01,
+0x00,0x9A,0x9C,0x18,0x00,0x00,0x00,0x07,0x74,0x49,
+0x4D,0x45,0x07,0xE8,0x06,0x01,0x06,0x03,0x1A,0xD3,
+0xFD,0x77,0x81,0x00,0x00,0x0E,0xC1,0x49,0x44,0x41,
+0x54,0x78,0xDA,0xED,0x9B,0xAF,0x6F,0x72,0xC9,0x17,
+0xC6,0x4F,0x69,0x0B,0x94,0x1F,0x13,0x50,0x58,0x82,
+0x42,0x36,0xC1,0xA1,0x10,0x38,0x0C,0x06,0x87,0x40,
+0x55,0x6E,0x40,0xE1,0x36,0x04,0x85,0xDA,0x60,0x11,
+0x24,0x4D,0x70,0x88,0x4D,0x05,0x8E,0x64,0x53,0x83,
+0x23,0x9B,0x5A,0x04,0x9B,0xAB,0xDA,0xA6,0x3F,0xE6,
+0x6F,0xF8,0x9E,0xE7,0xCC,0xCC,0xE5,0x42,0x29,0xBD,
+0xFD,0xBE,0xE4,0x4D,0xD3,0x74,0x12,0xA6,0x77,0xD9,
+0xBE,0x97,0xE1,0x33,0xE7,0x9C,0x79,0x9E,0x99,0x5B,
+0xA2,0x93,0x6E,0x37,0x43,0x74,0xBE,0x5C,0xD6,0x89,
+0x22,0x83,0x41,0x9E,0xE8,0x62,0xBD,0x1E,0x12,0x9D,
+0xCD,0xE7,0x15,0xA2,0xD3,0xE9,0xF4,0x92,0xBA,0xD2,
+0x96,0xD2,0x06,0xD2,0xD6,0xD2,0xE6,0xD2,0xA6,0xD2,
+0x74,0x88,0x96,0xC3,0x6D,0x3A,0x4D,0xDC,0x66,0x51,
+0xC4,0x6D,0xFA,0x63,0xDC,0x66,0x55,0xC3,0x6D,0x66,
+0x65,0xDC,0x66,0x12,0x66,0x3C,0xE6,0x6E,0xA4,0xB4,
+0xF6,0xE8,0x48,0xED,0xA3,0xA1,0x13,0x75,0x1F,0xBA,
+0x5D,0xA2,0xE5,0xCB,0x72,0x49,0x34,0x78,0x1C,0x0C,
+0x88,0xD6,0xAF,0xEB,0x35,0xD1,0xFC,0x79,0x3E,0x27,
+0x9A,0x3E,0x4D,0xA7,0x86,0x53,0x47,0x30,0x2D,0x04,
+0x53,0x5F,0x30,0xAD,0x04,0xD3,0x4C,0x30,0x4D,0xE4,
+0x6E,0xF7,0x87,0xFB,0x13,0x06,0xD5,0xC9,0x9C,0x33,
+0xA8,0x45,0x3D,0xC2,0xA0,0xFA,0xF9,0x0B,0x06,0xB5,
+0x1A,0x9E,0x31,0xA8,0x59,0xE5,0x94,0x41,0x4D,0x78,
+0x52,0x3A,0x59,0x8C,0x67,0xD1,0xC0,0x78,0xFA,0x05,
+0x8C,0x67,0x35,0xC2,0x78,0x66,0x55,0x8C,0x67,0x52,
+0x9A,0x3A,0x4E,0x0E,0x56,0x88,0xE6,0x29,0xF3,0xFB,
+0xC2,0xD6,0xFE,0x5B,0xCF,0xBE,0xEF,0xF1,0xBB,0x1E,
+0x03,0xD7,0xC0,0xC5,0x3F,0x15,0x99,0x6B,0xFC,0x54,
+0xF2,0xDF,0xFC,0x6B,0x14,0xFB,0x53,0x77,0x73,0xED,
+0xD4,0xBF,0x7A,0xD9,0xBC,0x8D,0xFF,0xA5,0x07,0xC5,
+0x5E,0xFA,0x3F,0xBD,0x1E,0xDF,0x25,0xFF,0xD1,0xF3,
+0xDA,0x4D,0xE2,0x6F,0x3D,0x2D,0x5F,0x0B,0xA7,0xAC,
+0x70,0x6A,0x08,0xA7,0x82,0x70,0x1A,0x09,0xA7,0xAA,
+0x70,0x2A,0xC9,0x70,0xAE,0x0E,0xF7,0xED,0x2C,0xDF,
+0x26,0x76,0xDB,0xE0,0xDB,0xA4,0x7A,0x05,0xBE,0x4D,
+0xFC,0x6E,0xC4,0xB7,0x49,0xDF,0x54,0xF9,0x36,0xC9,
+0xEB,0x12,0xDF,0x26,0x11,0xD3,0x9D,0x2C,0x8F,0x47,
+0x2F,0x1A,0x3C,0x1E,0xDD,0x2F,0xF0,0x78,0xF4,0x6A,
+0xC4,0xE3,0xD1,0xB3,0x2A,0x8F,0x47,0x4F,0x4A,0xE5,
+0x6B,0xF3,0xDD,0x95,0x01,0x10,0x2A,0x5C,0x84,0x85,
+0x79,0x01,0x82,0xFB,0xE9,0x5E,0x8C,0x03,0x77,0x92,
+0x17,0x20,0xBA,0x9F,0xEE,0xC5,0xFF,0x9D,0xE3,0x78,
+0xEA,0x70,0x2E,0xBC,0x2C,0x17,0x9C,0x0B,0x8F,0x83,
+0x3E,0xE7,0xC2,0xEB,0x7A,0xC5,0xB9,0xF0,0x3C,0x9F,
+0x71,0x2E,0x3C,0x4D,0x27,0x93,0x70,0x9C,0x5A,0x51,
+0xE6,0x81,0x79,0xB9,0xD2,0xF7,0x44,0x7F,0xC8,0xB5,
+0xE9,0x95,0xED,0xBB,0x27,0xB9,0x4E,0xA6,0xB3,0x3C,
+0x6F,0x2E,0xEA,0x8B,0x41,0xA4,0xD8,0xCF,0xF7,0xD7,
+0x17,0xE3,0xD5,0x70,0x35,0x3F,0xAB,0xCD,0x2A,0xB3,
+0xE9,0x69,0x79,0x72,0x39,0xC9,0x3D,0x64,0xB3,0xB9,
+0x4E,0xF3,0xA5,0xD1,0x68,0x2E,0x8A,0x8F,0x85,0x42,
+0xB1,0x3F,0x7E,0x1D,0x8D,0xC6,0xAB,0xDA,0x73,0xB5,
+0x5A,0x9B,0x95,0x9F,0x4A,0xA5,0xF2,0x24,0x18,0x29,
+0x61,0x39,0xB9,0x38,0x72,0x9C,0x34,0x72,0x0D,0xD7,
+0x26,0xAE,0xC8,0xC5,0x91,0xE3,0x42,0xF6,0x37,0xB4,
+0x89,0x2B,0xC9,0xA9,0x4E,0x4E,0x52,0xAA,0x29,0x29,
+0x55,0x94,0x94,0x1A,0x4B,0x4A,0xD5,0x24,0xA5,0xCA,
+0xA1,0x38,0x59,0x36,0xD1,0x7B,0x50,0x89,0x6A,0x15,
+0xB8,0xD6,0xB6,0xEF,0xB6,0xB3,0xD9,0x58,0x76,0x79,
+0xDB,0x68,0xA4,0x1A,0x83,0x5E,0xA1,0x10,0x2F,0xAC,
+0xEF,0x46,0xA3,0xF4,0x68,0x7E,0x53,0xAD,0x26,0xAB,
+0xD3,0xEB,0x52,0x29,0x51,0xE2,0xB4,0xCB,0xE6,0x1E,
+0x38,0xED,0x1A,0xCD,0x17,0x4E,0xBB,0x42,0xF1,0x91,
+0xD3,0x6E,0x34,0x7E,0xE5,0xB4,0xAB,0xD6,0x9E,0x39,
+0xED,0x4A,0xE5,0xA7,0x6D,0x4E,0xB1,0xAE,0x6D,0x6D,
+0x53,0x41,0x6F,0xDB,0x29,0xEA,0xFA,0x8D,0x7A,0xB1,
+0x6E,0xFB,0x50,0x3C,0x99,0xF7,0xDF,0x8F,0x27,0xFB,
+0xFE,0xD1,0x38,0x79,0xCA,0x53,0x7E,0x0C,0x39,0x36,
+0xF2,0x8E,0xD2,0xB6,0xE7,0xA4,0xCB,0xE4,0xB2,0x9C,
+0x74,0xF5,0x66,0x83,0x93,0x2E,0x5F,0x2C,0x70,0xD2,
+0x0D,0xC7,0x23,0x4E,0xBA,0x4A,0xAD,0xCA,0x49,0x77,
+0x59,0x2E,0x31,0x26,0xE6,0xC4,0x98,0x98,0x13,0x63,
+0x62,0x4E,0x8C,0x89,0x39,0x31,0x26,0xE6,0xC4,0x98,
+0x3E,0xE6,0x44,0xCB,0xDB,0xCD,0x7B,0xF1,0x01,0xF9,
+0x9C,0x76,0xEB,0x13,0x02,0xC5,0xD6,0x27,0x13,0x43,
+0x3B,0xF5,0xC9,0x04,0x9A,0xE1,0xD4,0x01,0x82,0xDC,
+0x02,0x08,0x9A,0x7D,0x20,0x28,0xAE,0x80,0x60,0x3C,
+0x03,0x82,0xDA,0x04,0x08,0x42,0x72,0x32,0xF9,0x75,
+0x28,0x9E,0x3A,0x99,0x6E,0xF7,0x24,0xBB,0xA8,0x2F,
+0x97,0xE7,0x8D,0x7E,0x7E,0x30,0x88,0x14,0x56,0xC3,
+0xF5,0xFA,0x62,0x34,0xAB,0xCC,0xE7,0x67,0xD5,0xC9,
+0xE5,0x74,0x7A,0x2A,0x9C,0xFE,0x14,0x4E,0xFF,0x0A,
+0xA7,0xBF,0x84,0xD3,0x7F,0xC2,0xE9,0x1F,0xE1,0xF4,
+0xF7,0x47,0x9C,0x52,0xBC,0x24,0xF9,0xE1,0x34,0x18,
+0xF4,0x62,0xCC,0xE9,0x97,0xD7,0xBB,0x5C,0x8E,0x23,
+0xBD,0xD3,0x6C,0x72,0xA4,0x2F,0x8A,0x45,0x8E,0xF4,
+0xFE,0x78,0xCC,0x91,0xBE,0xAA,0xD5,0x38,0xD2,0x67,
+0xE5,0x32,0x47,0xFA,0xE4,0x73,0xF1,0xB4,0xBF,0x3E,
+0x09,0x27,0xFE,0x4A,0xED,0xEC,0x82,0xBF,0xC7,0x6D,
+0xA3,0x1F,0xE7,0x6F,0x50,0x58,0xA5,0xD7,0x9C,0x7A,
+0xB3,0xE4,0x9C,0x53,0x6F,0x92,0x98,0x72,0xEA,0xE5,
+0x38,0x9C,0x74,0xA7,0xC9,0xE1,0xA4,0x17,0x45,0x0E,
+0x27,0xDD,0x1F,0x73,0x38,0xE9,0x55,0x8D,0xC3,0x49,
+0xCF,0xCA,0x1C,0x4E,0x7A,0x72,0x98,0x13,0x81,0x55,
+0xCC,0x0F,0x27,0x5E,0xC1,0xDB,0x52,0x9F,0x64,0xF9,
+0xDA,0xCE,0x3D,0xE5,0xAF,0x83,0x06,0xD5,0x6E,0xEE,
+0x79,0xCA,0xAD,0x83,0x14,0xE3,0xF9,0xCB,0xB6,0x53,
+0x3C,0x7F,0x8D,0xDB,0x38,0xCF,0x5F,0xA1,0x97,0xE6,
+0xF9,0x1B,0xDD,0x25,0x79,0xFE,0xAA,0x37,0x09,0x9E,
+0xBF,0xD2,0xD1,0xD6,0xBB,0x0C,0xEE,0x73,0x52,0xC7,
+0x7D,0xCE,0xF3,0xB8,0x4F,0x64,0x88,0xFB,0x5C,0x54,
+0x70,0x9F,0xB3,0x4B,0xDC,0xE7,0x34,0x96,0xED,0x6A,
+0xCD,0xE3,0x59,0x6A,0xCD,0xE3,0x19,0x68,0xCD,0xE3,
+0x59,0x6B,0xCD,0xE3,0x99,0x6B,0xCD,0xE3,0x61,0xA1,
+0xB6,0xB3,0xDE,0xED,0x70,0x42,0x38,0xF9,0x01,0x45,
+0xF8,0x94,0x1E,0xD7,0x71,0xF9,0xB6,0xC2,0xC6,0xD6,
+0x72,0xC9,0x3F,0x15,0xA8,0x5B,0xF6,0x6E,0x9A,0x1C,
+0x38,0xCE,0x3F,0xC7,0x0D,0x39,0xD9,0xCD,0x8A,0x5E,
+0x69,0x88,0x5E,0x29,0x88,0x5E,0x19,0x89,0x5E,0xA9,
+0x8A,0x5E,0x29,0xB1,0x5E,0xE9,0x82,0x65,0x67,0x09,
+0x96,0x8B,0x01,0x58,0xF6,0xD7,0x60,0xB9,0x9A,0x83,
+0xE5,0x6C,0x0A,0x96,0x13,0x7D,0xC5,0xED,0xFE,0x70,
+0x1F,0xEB,0xC8,0x9C,0x2C,0x64,0x4E,0xFA,0x32,0x27,
+0x2B,0x99,0x93,0x99,0xCC,0x09,0x92,0xEA,0x9A,0x18,
+0x13,0xC6,0xA3,0x35,0xC6,0xA3,0x35,0xC6,0xA3,0x35,
+0xC6,0xA3,0x35,0xC6,0xA3,0xF5,0x8E,0x7E,0xDA,0xE5,
+0x44,0x86,0x56,0xCC,0x0F,0x27,0x48,0xC2,0x0D,0x27,
+0xED,0x6D,0xEA,0xB7,0xD2,0x7E,0xDD,0xF2,0x39,0x71,
+0xC5,0xF2,0xE3,0xC9,0xB3,0xB5,0x49,0x62,0x2A,0x84,
+0xFE,0xC5,0xD7,0xCB,0x66,0xF1,0xF5,0x1A,0x0D,0x7C,
+0xBD,0x42,0x01,0x5F,0x6F,0x34,0xC2,0xD7,0xAB,0x56,
+0xF1,0xF5,0x4A,0xA5,0xFB,0x2B,0x41,0x71,0xB0,0x0F,
+0x73,0x9F,0xCF,0xEA,0xF1,0x5D,0x4E,0x26,0x9C,0x6C,
+0x40,0x91,0x71,0x0F,0x3D,0xC3,0x49,0x07,0xE3,0x89,
+0xD4,0xCE,0x1A,0xE8,0x72,0x8D,0xB6,0xD7,0x39,0x97,
+0x87,0x5F,0xAE,0x85,0xE0,0x14,0x6C,0xBB,0x9C,0xF8,
+0x2D,0x59,0xF3,0xF0,0x76,0x9B,0x48,0xEA,0x93,0xD1,
+0x4F,0xA4,0x8C,0x1C,0x32,0x5A,0x2A,0x58,0x9F,0x6C,
+0x29,0xF7,0x8C,0x9C,0x32,0x7A,0x29,0x58,0x9F,0x0C,
+0xA7,0x87,0x2E,0x7E,0xEB,0x05,0x9F,0x40,0x8F,0xB8,
+0x29,0xBD,0xAE,0xD1,0x3F,0xCF,0xD1,0x3F,0x4D,0xC9,
+0x8C,0xA4,0x2D,0x13,0x75,0x2B,0x91,0xDC,0x4B,0xA3,
+0xAE,0xDC,0x25,0x51,0x57,0x6E,0x12,0xA8,0x2B,0xD7,
+0xCA,0xD9,0x83,0x03,0xFD,0xB1,0x7C,0x8B,0xB9,0x9B,
+0x91,0x82,0x7B,0xD6,0x3B,0xBC,0x38,0x96,0xE4,0x3D,
+0x0C,0xF7,0x28,0xEB,0x1D,0xC1,0xB7,0x10,0xC1,0xB7,
+0x10,0xC1,0xB7,0x10,0xC1,0xB7,0x10,0xC1,0xB7,0x10,
+0xC1,0xB7,0x98,0x91,0x64,0x84,0x53,0x5D,0x38,0xE5,
+0x85,0xD3,0x50,0x38,0x55,0x84,0xD3,0xA5,0x8C,0xBD,
+0x75,0xB8,0x27,0xF8,0x16,0x22,0xF8,0x16,0x22,0xF8,
+0x16,0x22,0xF8,0x16,0x22,0xF8,0x16,0x22,0xF8,0x16,
+0x0A,0xE3,0x5B,0x2C,0xA7,0x60,0x7D,0x6A,0x93,0x09,
+0x24,0xC7,0xC9,0x7D,0x7F,0x17,0x4F,0x41,0x7F,0xA7,
+0x02,0xF1,0xE4,0x5E,0x41,0x7F,0xE7,0x05,0xE2,0x29,
+0x50,0xC7,0xD9,0xB7,0x88,0x0F,0x5E,0x88,0x0F,0xEE,
+0x8B,0x0F,0x5E,0x89,0x0F,0x9E,0x89,0x0F,0x9E,0x84,
+0xE4,0xC4,0xBE,0xA5,0x25,0x71,0xDA,0x52,0xD0,0x05,
+0x72,0x6D,0x7A,0x65,0xFB,0x18,0x7C,0x4B,0x3B,0x05,
+0xDF,0x72,0x1B,0x87,0x6F,0xE9,0xA5,0xE1,0x5B,0xEE,
+0x92,0xF0,0x2D,0x37,0x09,0xF8,0x96,0xEB,0x30,0xBE,
+0x25,0x04,0x27,0x8E,0x22,0x29,0x4E,0x7E,0xDE,0x05,
+0x6A,0x91,0xC8,0xCA,0x00,0x23,0x79,0x37,0x50,0x8B,
+0x40,0x32,0xC8,0x48,0xAA,0x16,0x3E,0xA5,0x23,0x0C,
+0x16,0xC2,0xA0,0x2F,0x0C,0x56,0xC2,0x60,0x26,0x0C,
+0x26,0x97,0xA1,0x38,0x59,0x36,0xAC,0x2D,0xD1,0x6B,
+0x15,0xB8,0xD6,0xB6,0x8F,0xC1,0xB7,0x64,0x52,0xF0,
+0x2D,0xF5,0x38,0x7C,0x4B,0x3E,0x0D,0xDF,0x32,0x4C,
+0xC2,0xB7,0x54,0x12,0xF0,0x2D,0x97,0x3C,0x98,0x13,
+0xF8,0x96,0xFA,0x39,0x7C,0x4B,0x3E,0x02,0xDF,0x32,
+0xBC,0x80,0x6F,0xA9,0x9C,0xC1,0xB7,0x5C,0x9E,0x96,
+0x9F,0xB6,0x32,0xFA,0xBD,0x4C,0x8A,0xC9,0x62,0xB7,
+0xC5,0xC9,0xD6,0xA8,0x5D,0x4E,0xA6,0x32,0xF9,0x7A,
+0xFC,0x0D,0x27,0xFC,0xAB,0xE3,0x71,0x02,0x77,0x3F,
+0x86,0x1C,0x1B,0x79,0x47,0x69,0xDB,0xC7,0xE0,0x5B,
+0x32,0x29,0xF8,0x96,0x7A,0x1C,0xBE,0x25,0x9F,0x86,
+0x6F,0x19,0x26,0xE1,0x5B,0x2A,0x09,0xF8,0x96,0xCB,
+0x0E,0x27,0x26,0x7C,0x0B,0x11,0x7C,0x0B,0x11,0x7C,
+0x0B,0x11,0x7C,0x0B,0x11,0x7C,0x0B,0xD1,0x2E,0xA7,
+0x58,0xF7,0x9D,0x46,0x41,0x4E,0x56,0x03,0x08,0x24,
+0xCB,0xC9,0xE6,0xA2,0x89,0x27,0xAB,0x01,0xE4,0xBE,
+0x96,0x93,0xCD,0x45,0x13,0x4F,0x27,0x90,0x90,0x99,
+0x73,0x48,0xC8,0x7A,0x04,0x12,0x32,0x7F,0x01,0x09,
+0x39,0x3C,0x83,0x84,0xAC,0x9C,0x42,0x42,0x86,0xE4,
+0x64,0xF2,0xEB,0x50,0x3C,0x9D,0xC0,0xB7,0x64,0xCE,
+0xE1,0x5B,0xEA,0x11,0xF8,0x96,0xFC,0x05,0x7C,0xCB,
+0xF0,0x0C,0xBE,0xA5,0x72,0x0A,0xDF,0xC2,0x9C,0x32,
+0x27,0xF0,0x2D,0xF5,0x73,0xF8,0x96,0x7C,0x04,0xBE,
+0x65,0x78,0x01,0xDF,0x52,0x39,0x83,0x6F,0xB9,0x3C,
+0xFD,0x3B,0x2C,0x27,0x04,0x54,0xA0,0x3E,0xF9,0x31,
+0x25,0xA8,0x64,0x3B,0x60,0x13,0x57,0x7E,0x4D,0xB2,
+0xF1,0x64,0x56,0x89,0x40,0x5C,0x11,0x7C,0x0B,0x4F,
+0xDE,0x12,0x53,0x08,0xDF,0xC2,0x93,0xB7,0xC6,0x14,
+0xC2,0xB7,0xF0,0xE4,0xF1,0x02,0x43,0x9F,0x8B,0xA7,
+0xFD,0xF5,0x49,0x38,0x61,0xAD,0xCE,0x9C,0xC3,0xB7,
+0xD4,0x23,0xF0,0x2D,0xF9,0x0B,0xF8,0x96,0xE1,0x19,
+0x7C,0x4B,0xE5,0x14,0xBE,0xE5,0x32,0x8C,0x6F,0xD9,
+0x53,0x9F,0xDE,0x0B,0x28,0xC7,0xE9,0xD7,0xD7,0x3B,
+0x48,0x3F,0x5E,0x83,0xB8,0xF1,0x1A,0xC4,0x8D,0xD7,
+0x20,0x6E,0xBC,0x06,0x71,0xE3,0x35,0x08,0xD2,0xEF,
+0x68,0xEB,0x9D,0x0C,0x9E,0x8C,0xCC,0x31,0x42,0x19,
+0xF7,0xE1,0x35,0x63,0x2E,0x7B,0xA7,0xDC,0x28,0x8C,
+0x6F,0x09,0xCB,0x89,0x03,0x6A,0xA7,0x3E,0xB9,0xC4,
+0xDA,0x6C,0x9B,0xD8,0xF7,0x9D,0x6E,0xB2,0x89,0xB9,
+0xD9,0x76,0x71,0x7A,0x0A,0xA0,0x00,0x14,0x98,0x00,
+0x0A,0x3D,0x30,0x01,0x14,0x7A,0xC6,0x14,0xCA,0x03,
+0x2A,0x08,0x6E,0xEF,0x70,0x7F,0x2C,0xDF,0xF2,0x8E,
+0x7E,0x7A,0x1B,0x4F,0xB4,0xC9,0x3B,0xA7,0xBA,0x6D,
+0x7D,0x72,0x48,0xDC,0x1A,0xE8,0xDC,0x2F,0xD9,0xFA,
+0xE4,0x90,0x7E,0x47,0x3D,0xFE,0x26,0x9C,0x58,0x3E,
+0xC9,0x9A,0x27,0xFE,0xCE,0xF3,0xD7,0x39,0xBF,0x3E,
+0x29,0x7F,0x9F,0x9C,0x9C,0xB2,0x72,0x9C,0xCC,0xBA,
+0xE7,0xEF,0x93,0x7F,0x6B,0x4E,0x4E,0x67,0xC6,0xAD,
+0xBF,0x33,0x0B,0x98,0x5B,0xEF,0x68,0x93,0x66,0x76,
+0xBF,0xC0,0x2C,0x80,0x6E,0xBD,0xD3,0x9B,0x34,0x0D,
+0xBB,0x0B,0xFF,0x5B,0x5B,0x08,0xDF,0xB2,0xCD,0xE9,
+0x5D,0xFD,0x14,0xE4,0x24,0x8C,0x6C,0xEC,0xA8,0xC0,
+0xBE,0x26,0xD9,0x35,0x50,0x18,0xD9,0xD8,0xF1,0x02,
+0xFB,0x9A,0xDA,0xDF,0x2F,0x20,0x2D,0xE0,0xB5,0xF8,
+0x3B,0x2D,0xFE,0x4E,0x8B,0xBF,0xD3,0xE2,0xEF,0x34,
+0x86,0x15,0xA2,0xFE,0x9A,0xAA,0xFA,0x41,0x7F,0x24,
+0xDF,0x62,0xEF,0x16,0xAC,0x4F,0xFB,0xF4,0x78,0x2F,
+0x18,0x4F,0xBF,0xBC,0xDE,0xC5,0x1E,0xF0,0x21,0xA9,
+0x17,0x78,0xA2,0xF8,0x23,0x36,0xB5,0xD2,0xAF,0xEB,
+0x3B,0xA2,0xE4,0xF3,0xFC,0x86,0x28,0xF1,0x34,0xBD,
+0x0E,0xC9,0x89,0x7D,0x8B,0x2C,0xC0,0xDC,0x43,0x17,
+0xC8,0xB5,0xE9,0x95,0xEB,0xE1,0x5B,0x38,0xA7,0xD8,
+0xB7,0x70,0x4E,0xB1,0x6F,0xE1,0x9C,0x62,0xDF,0xC2,
+0x39,0xC5,0xBE,0x85,0x73,0x8A,0x7D,0x0B,0x6B,0x4C,
+0xD6,0xE3,0xEC,0x5B,0x58,0x8F,0xB3,0x6F,0x61,0x3D,
+0xCE,0xBE,0x85,0xF5,0x38,0xFB,0x16,0xD6,0xE3,0xEC,
+0x5B,0x58,0x8F,0x4F,0x2C,0xA7,0xE0,0xBE,0xCA,0x5B,
+0x4E,0x14,0x0F,0x72,0x52,0x9B,0xF3,0x3A,0x5F,0x93,
+0x4B,0x42,0x79,0x46,0x8F,0x7B,0x9B,0xF3,0x3A,0x5F,
+0x93,0x4B,0x42,0x2A,0xAB,0xC7,0xC1,0xA0,0x23,0x1F,
+0xB1,0x10,0x06,0x7D,0x61,0xB0,0x12,0x06,0x33,0x61,
+0x30,0x09,0xC7,0xC9,0xB2,0x61,0x6D,0x89,0x5E,0xAB,
+0xC0,0xB5,0x76,0x3D,0x7C,0x0B,0x11,0x7C,0x0B,0x11,
+0x7C,0x0B,0x11,0x7C,0x0B,0x11,0x7C,0x0B,0x11,0x7C,
+0x0B,0x36,0xFD,0x79,0xEA,0x30,0x69,0xA9,0x17,0x4C,
+0x5A,0xFC,0x11,0x93,0x96,0x7E,0xC5,0xA4,0x25,0x9F,
+0x31,0x69,0x89,0xA7,0x60,0x8C,0xBE,0xCF,0x69,0x10,
+0xE4,0x64,0xEA,0x91,0xDE,0x9C,0xAF,0x00,0x8F,0x0A,
+0xAC,0x78,0x76,0xEB,0xCF,0xF7,0x2A,0xC0,0xE3,0x6D,
+0x56,0xBC,0xE3,0x71,0x12,0xBF,0xE8,0x62,0xC8,0xB1,
+0x91,0x77,0x94,0x76,0x3D,0x7C,0x0B,0xE7,0x1D,0xFB,
+0x16,0xCE,0x3B,0xF6,0x2D,0x9C,0x77,0xEC,0x5B,0x38,
+0xEF,0xD8,0xB7,0x70,0xDE,0xB1,0x6F,0x21,0x04,0x5C,
+0xEC,0x01,0x01,0x97,0x7A,0x41,0xC0,0xC5,0x1F,0x11,
+0x70,0xE9,0x57,0x04,0x5C,0xF2,0x99,0x03,0x2E,0x2C,
+0xA7,0xB8,0xCF,0x09,0xFB,0x74,0x41,0x1D,0x6E,0xE2,
+0xD0,0xF3,0xE3,0xCA,0x4F,0x3D,0xBB,0xCE,0x21,0x8E,
+0x36,0x6B,0x9E,0x72,0xE7,0xE6,0x52,0x33,0x96,0x52,
+0x33,0x06,0x52,0x33,0xD6,0x52,0x33,0xE6,0x52,0x33,
+0xE0,0x5B,0x42,0x72,0x32,0xF9,0x75,0x30,0x9E,0xE0,
+0x5B,0x88,0xE0,0x5B,0x88,0xE0,0x5B,0x88,0xE0,0x5B,
+0x88,0xE0,0x5B,0x88,0xE0,0x5B,0x84,0x93,0x12,0x4E,
+0x4A,0x38,0x29,0xE1,0xA4,0x84,0x93,0x12,0x4E,0xEA,
+0x03,0x4E,0x94,0x12,0x4E,0x83,0x6D,0x4E,0x01,0x5F,
+0xE7,0xC3,0x51,0x12,0x54,0x9E,0xDD,0xA5,0xF3,0x7D,
+0x9D,0x0F,0xC7,0x93,0xA0,0x52,0xB6,0x3E,0x75,0x31,
+0xB4,0xD4,0x12,0x43,0x8B,0x0F,0x30,0xB4,0xF4,0x1A,
+0x43,0x4B,0xCE,0x31,0xB4,0x04,0xB6,0xCE,0x3E,0x17,
+0x4F,0xFB,0xEB,0x53,0xD4,0x7C,0x96,0xD4,0x42,0xD9,
+0x1F,0x8A,0xCB,0x17,0x81,0x6F,0xC1,0x67,0x49,0x2D,
+0x64,0xDF,0x42,0xB9,0x6C,0x26,0x06,0xDF,0x52,0x4F,
+0xC1,0xB7,0xE4,0xE3,0xF0,0x2D,0xC3,0x34,0x7C,0x4B,
+0x25,0x09,0xDF,0x72,0xC9,0xA5,0xFC,0x70,0x7D,0x5A,
+0x2E,0xF7,0x70,0x52,0x41,0x5F,0xE7,0x98,0x69,0xB3,
+0xAB,0x42,0xC6,0xD8,0x6C,0x7C,0x9D,0x63,0x46,0x66,
+0x57,0xC5,0xAE,0x1A,0x1F,0xEB,0xF1,0xA3,0xAD,0x77,
+0x47,0xF2,0x2D,0x87,0xD7,0xBB,0xBD,0x9C,0x7E,0x7D,
+0xBD,0xFB,0x72,0xFA,0xE9,0x63,0xDF,0xB2,0x47,0x67,
+0x0A,0xA7,0xA6,0xCF,0xA9,0xBE,0xCB,0xC9,0x9C,0x9E,
+0x78,0xDB,0xCA,0xDA,0xD5,0x26,0x29,0x57,0x5A,0xF9,
+0x4F,0xB5,0x04,0x9F,0x72,0xB1,0x27,0x16,0xDF,0x45,
+0x8F,0x0B,0xA7,0x94,0xCF,0x29,0xB2,0xC5,0x29,0x6F,
+0xF3,0x4E,0x53,0xB0,0x6E,0xFB,0xDA,0x80,0xAC,0x9E,
+0xB1,0xBB,0x51,0x5B,0x9C,0x3C,0xEB,0x6E,0xBE,0x15,
+0x27,0x3F,0xF1,0x6E,0x8B,0x5B,0x9C,0x9C,0xBF,0xB3,
+0x95,0xC8,0x3D,0x5F,0xE6,0x3F,0x67,0x66,0xCE,0xAC,
+0xEC,0xC9,0xA9,0x65,0x63,0x9F,0x2D,0x70,0x27,0x85,
+0xDF,0xC0,0xB7,0x04,0x38,0x9D,0x1B,0x4C,0x8B,0xC8,
+0x20,0xC8,0xA9,0x47,0xDF,0x30,0x9E,0x62,0xBA,0x7D,
+0x02,0xDF,0x72,0x7B,0x0E,0xDF,0xD2,0x8B,0xC0,0xB7,
+0xDC,0x5D,0xC0,0xB7,0xDC,0x9C,0xC1,0xB7,0x5C,0x9F,
+0xB2,0x6F,0x79,0x8F,0x93,0x01,0x65,0x31,0x39,0x4E,
+0x7D,0x04,0xD1,0x6E,0x7D,0x72,0x1A,0xEA,0xBD,0xFA,
+0xE4,0x34,0x54,0xA0,0x3E,0x7D,0x7C,0x7E,0x17,0x66,
+0x3D,0xE7,0x4D,0xCB,0xA8,0xF9,0x58,0xEE,0xA3,0x44,
+0x2D,0xB9,0x6E,0xED,0xE4,0x54,0x08,0xDF,0xC2,0xFF,
+0x3C,0xD6,0x69,0x72,0x9F,0x5A,0x14,0xB9,0x8F,0xF7,
+0xC7,0xDC,0xA7,0x57,0x35,0xEE,0x93,0xB3,0x32,0xF7,
+0x89,0x89,0xCB,0x18,0xB3,0xDE,0x85,0x7A,0x4E,0xEC,
+0x08,0xFE,0x2E,0x04,0x83,0x30,0xBF,0x63,0xD9,0x44,
+0xEF,0xF1,0xB1,0x51,0x99,0x36,0x77,0xED,0xF9,0xFD,
+0xC7,0x1A,0x44,0x26,0xED,0x41,0x26,0xED,0x45,0x26,
+0xED,0x51,0x26,0xED,0x55,0x26,0xED,0x59,0x72,0xEE,
+0xC9,0x72,0xB2,0xFA,0x29,0x1C,0x27,0xFF,0x64,0xCE,
+0x33,0x3E,0x65,0x73,0xA4,0xE0,0x9E,0x63,0xD9,0xEC,
+0x76,0x2A,0x0A,0x5C,0xBB,0x53,0x9D,0x63,0x71,0xF2,
+0xA3,0xB8,0x15,0x60,0x13,0x58,0x7E,0xD1,0x9F,0xC4,
+0x32,0x88,0xA7,0x54,0x1D,0xF1,0x14,0xCF,0x23,0x9E,
+0xD2,0x43,0xC4,0x53,0xB2,0x82,0x78,0x4A,0x5C,0xF2,
+0xB3,0x0C,0xC2,0x69,0x21,0x9C,0xFA,0xC2,0x69,0x25,
+0x9C,0x66,0xC2,0x69,0xB2,0x87,0x93,0xEC,0x95,0xB6,
+0xF0,0x04,0x83,0xBA,0xE2,0xCF,0xBE,0xE7,0x1F,0xB8,
+0xB8,0x6F,0x99,0x2B,0xFC,0x4F,0x9B,0x73,0x7B,0x38,
+0x99,0x3C,0x0C,0xC8,0xF0,0x1D,0x4E,0xF6,0x69,0x0F,
+0x13,0x4F,0xA2,0xC7,0x97,0xA2,0xC7,0x07,0xA2,0xC7,
+0xD7,0xA2,0xC7,0xE7,0xA2,0xC7,0xB1,0xBE,0x84,0xE2,
+0x64,0xDA,0xE1,0x78,0x32,0x9B,0x67,0xF2,0x14,0x00,
+0xC9,0x86,0x2C,0xAD,0x25,0x5C,0xE6,0x12,0x2E,0x90,
+0xAB,0x9F,0xE7,0x14,0x95,0xC9,0x61,0x42,0xD1,0x28,
+0xE6,0xA8,0x15,0xE5,0x26,0xD7,0x2D,0xBA,0x8A,0x9A,
+0xFF,0x49,0x5E,0xB0,0x7E,0x6F,0x71,0xB2,0xAF,0x60,
+0xFD,0xDE,0xE2,0x64,0x5F,0xB2,0xC0,0xC8,0xD8,0x65,
+0x68,0x52,0xF4,0x68,0x2D,0x43,0x9B,0xCB,0xD0,0x60,
+0x83,0x3F,0x17,0x4F,0xFB,0xEB,0x93,0x70,0x0A,0xE3,
+0x5B,0xE0,0xEF,0x3A,0x4D,0xF8,0xBB,0x45,0x11,0xFE,
+0xAE,0x3F,0x86,0xBF,0x5B,0xD5,0xE0,0xEF,0x66,0x65,
+0xF8,0xBB,0x9D,0xFA,0x14,0x95,0x90,0xE1,0x97,0xE1,
+0x84,0x9F,0xD1,0xAB,0x16,0x37,0x73,0xF5,0x36,0x9E,
+0xB6,0x75,0xA6,0x59,0x07,0xB7,0xB8,0x6C,0xE9,0x4C,
+0xFA,0x9A,0xBA,0x20,0xC6,0x15,0x0C,0xBE,0x85,0x7B,
+0xF6,0x2D,0xDC,0xB3,0x6F,0xE1,0x9E,0x7D,0x0B,0xF7,
+0xEC,0x5B,0xB8,0xBF,0xDE,0xBF,0x9F,0x19,0x35,0x9C,
+0x24,0xAE,0xF8,0xD5,0x92,0xD8,0x7A,0x53,0x9F,0xDE,
+0xE8,0x71,0x65,0x0F,0x34,0x83,0x79,0x16,0xE4,0x64,
+0x1C,0xDE,0x37,0xF0,0x2D,0xEA,0xCA,0x94,0x25,0xCB,
+0x09,0x17,0x4A,0xE2,0xC9,0x5C,0xD9,0x78,0xFA,0x76,
+0xFE,0xEE,0xD3,0x7A,0xDC,0x24,0xB9,0x29,0x4B,0x81,
+0x0B,0x06,0x25,0x57,0x9B,0xFA,0x14,0x4C,0x39,0xD9,
+0xA4,0xD3,0xFE,0x4A,0xB7,0x39,0x8E,0xF2,0xC1,0x78,
+0xDA,0x9C,0x2D,0xD8,0xE7,0xA2,0xBE,0x3B,0x27,0x44,
+0x53,0x8B,0x3C,0xFF,0x8F,0x0F,0xDC,0x3F,0x73,0xF5,
+0xDB,0x7F,0xC6,0x47,0x6F,0xE5,0x9C,0xB7,0xA9,0xDF,
+0xEE,0x3C,0xFD,0xAB,0xE5,0x5D,0xFB,0x04,0x79,0x77,
+0x7B,0x8E,0xBC,0xEB,0x45,0x90,0x77,0x77,0x17,0xC8,
+0xBB,0x9B,0x33,0xE4,0xDD,0xF5,0xE9,0xF4,0x33,0x9C,
+0x24,0x9A,0x5A,0xE6,0xBC,0x65,0x3B,0xA0,0x36,0x6B,
+0x1F,0x94,0xB8,0x7F,0xB4,0xF9,0xE6,0x0F,0x63,0x98,
+0x6E,0x58,0x95,0xF6,0x5B,0xEB,0x38,0x96,0xC5,0x76,
+0x0A,0x7A,0xFC,0x36,0x0E,0x3D,0xDE,0x4B,0x43,0x8F,
+0xDF,0x25,0xA1,0xC7,0x6F,0x12,0xD0,0xE3,0xD7,0x6F,
+0x38,0x71,0xD0,0xB4,0xA2,0x7F,0x30,0x15,0xFF,0xC2,
+0x71,0xE2,0xFA,0xE4,0x6D,0xC5,0xD3,0x8E,0xC7,0x73,
+0xCF,0xDB,0xEB,0xE0,0x1F,0xB4,0x04,0x78,0xB9,0xE7,
+0xED,0xBF,0x1C,0xA7,0x1C,0xBA,0x4E,0x13,0xFD,0xA2,
+0x88,0xBE,0x3F,0x46,0xBF,0xAA,0xA1,0x9F,0x95,0xD1,
+0x4F,0xDE,0x70,0xF2,0xF5,0x53,0x40,0x48,0xBD,0x53,
+0x9F,0x76,0xF3,0x6F,0xB7,0x3E,0xED,0xE6,0xDF,0xA6,
+0x3E,0x99,0x03,0xC1,0x94,0x3C,0xAA,0x27,0x67,0x39,
+0x3C,0x7B,0xE8,0x93,0x37,0xE8,0xCD,0xEC,0x7D,0xAC,
+0x0F,0x0F,0xE9,0xCC,0x4D,0x7F,0x24,0xDF,0x62,0x05,
+0x8D,0x79,0x42,0x30,0x1C,0xA7,0x5F,0x5F,0xEF,0xC2,
+0x30,0x08,0xF3,0x3B,0xC1,0xEC,0x0F,0xB2,0xB1,0xC9,
+0x2D,0x7D,0x2C,0x23,0x73,0x52,0x97,0x39,0xC9,0xCB,
+0x9C,0x0C,0x65,0x4E,0x2A,0x32,0x27,0x5C,0xA2,0x65,
+0xD2,0x62,0x32,0x69,0x29,0x99,0xB4,0xB8,0x4C,0x5A,
+0x5A,0x26,0x2D,0x29,0x93,0x96,0x70,0x9C,0x76,0x74,
+0xE6,0x55,0x74,0x73,0xC1,0x5A,0x1C,0x3A,0xF3,0x6A,
+0x4B,0x67,0x9A,0x3D,0xF5,0x4D,0xEE,0x29,0xCF,0xED,
+0x20,0x93,0xD3,0x4E,0x5B,0xFB,0x2B,0xA6,0x8E,0xBB,
+0xDF,0xF9,0x9D,0xF1,0x74,0x24,0xDF,0xB2,0x15,0x4F,
+0xE1,0x7C,0xB0,0x7D,0x3A,0xC7,0x9C,0x1C,0x04,0x74,
+0xB8,0xCF,0xC9,0x9C,0xAA,0x9B,0x93,0x83,0x6D,0x1D,
+0xAE,0xBF,0x47,0x7D,0x0A,0xB9,0x5F,0xE0,0xB8,0x6A,
+0x17,0x57,0xEE,0x8C,0xD8,0x39,0x61,0xFB,0x0E,0xB9,
+0xB8,0xF2,0x67,0xE1,0x4B,0x72,0x42,0x66,0xAA,0x36,
+0x32,0x53,0xDD,0x22,0x33,0x55,0x0F,0x99,0xA9,0xEE,
+0x90,0x99,0xEA,0x06,0x99,0xA9,0xB6,0xD7,0xBB,0x70,
+0x7F,0xF7,0xEA,0xE2,0xC9,0xD7,0x4E,0xEF,0xC4,0x93,
+0xAF,0x9D,0xBE,0x7A,0x3C,0x51,0xD7,0x53,0xD0,0x4F,
+0x9E,0x82,0x7E,0xF2,0x14,0xF4,0x93,0xA7,0xA0,0x9F,
+0x3C,0x05,0xFD,0xE4,0xA9,0xE9,0xFF,0x75,0xDB,0xCD,
+0x53,0xA9,0x5B,0xFB,0x05,0xBB,0xF5,0x69,0x77,0x5F,
+0xE5,0xEB,0x72,0xFA,0xA4,0x1E,0xA7,0xDF,0xF5,0xF7,
+0xE6,0x5F,0x8E,0x13,0x1F,0xAF,0x33,0x27,0x3E,0x5E,
+0x67,0x4E,0x7C,0xBC,0xCE,0x9C,0xF8,0x78,0x9D,0x39,
+0xF1,0xF1,0x3A,0x73,0xE2,0xE3,0x75,0xFA,0x69,0x3F,
+0xED,0xA7,0x1D,0xB7,0x89,0x10,0x3D,0x11,0x21,0x7A,
+0x2E,0x42,0x34,0x22,0x42,0xF4,0x42,0x84,0xE8,0x99,
+0xE4,0xDC,0xE9,0x0F,0xA5,0xAF,0xDC,0xC2,0xE8,0xF1,
+0x30,0xBF,0xB3,0xE5,0x5B,0xBC,0x4D,0xBF,0xAB,0x8E,
+0x0E,0xFB,0x96,0xF0,0xAB,0xFC,0xDE,0x7D,0x92,0x9F,
+0xF6,0xD3,0x7E,0xEA,0xD3,0x4F,0xFB,0x69,0x3F,0x7A,
+0x7C,0x5F,0xFB,0x1F,0xEB,0xB4,0x9C,0x3B,0x01,0xF6,
+0x48,0x6B,0x00,0x00,0x00,0x00,0x49,0x45,0x4E,0x44,
+0xAE,0x42,0x60,0x82,};
+
diff --git a/src/text.h b/src/text.h
new file mode 100644
index 0000000..23ab6fc
--- /dev/null
+++ b/src/text.h
@@ -0,0 +1,162 @@
+char about[] = { // about screen
+"FUN COLUMNS"
+" BY FTA "
+"CODING: "
+"O. GOGUEL "
+"DESIGN: "
+"O. BAILLY "
+" MAITRE "
+"VERSION 1.1"
+"TOOLBOX-MAG"
+" ISSUE: 04 "
+" 03-FEB-91 "
+" COPYRIGHT "
+"FTA/TOOLBOX"
+};
+
+char high[] = { // high scores
+"HIGH "
+"SCORES:"
+"HULK " // OLIVIER
+"..10000"
+"EARTH " // J-YVES
+"...9000"
+"BUSH " // BERNARD
+"...8000"
+"AXE " // ERIC
+"...7000"
+"PERFECT" // HUBERT
+"...6000"
+"POWERS " // J-LUC
+"...5000"
+"TUGBOAT" // YVAN
+"...4000"
+"DINO " // EMILE
+"......1"
+
+};
+
+char status[] = { // current status
+"SCORE: "
+" 0" // score
+"LEVEL: "
+"1E 1" // levels remaining / completed (31)
+"TOTAL: "
+" 0" // tiles smashed
+};
+
+char m_menu[] = { // main menu
+"CHOOSE : "
+"1-VERY EASY"
+"2-EASY "
+"3-MEDIUM "
+"4-HARD "
+"5-VERY HARD"
+"6-JEDI "
+"A-ABOUT "
+"I-INFO "
+"Q-QUIT "
+};
+
+char info[] = { // info/instruction screen
+"COLUMNS "
+"RULES. "
+" <-:LEFT "
+" ->:RIGHT "
+" R:ROTATE "
+"SPC:FALL "
+" ^R:RESTART"
+" ^S:NEW PAT"
+" N:NEXT "
+" P:PAUSE "
+" HAVE FUN !"
+};
+
+char gameo[] = {
+"GAME OVER"
+};
+
+char pause[] = {
+"> PAUSE <"
+};
+
+int gameol [1][2] = {
+{124, 97}
+};
+
+int pausel [1][2] = {
+{124, 97}
+};
+
+int highl [18][2] = {
+{22, 11}, // HIGH
+{22, 18}, // SCORES:
+{22, 34}, // HULK
+{22, 42}, // ......0
+{22, 54}, // EARTH
+{22, 62}, // ......0
+{22, 74}, // BUSH
+{22, 82}, // ......0
+{22, 94}, // AXE
+{22, 102}, // ......0
+{22, 114}, // PERFECT
+{22, 122}, // ......0
+{22, 134}, // POWERS
+{22, 142}, // ......0
+{22, 154}, // TUGBOAT
+{22, 162}, // ......0
+{22, 174}, // DINO
+{22, 182} // ......0
+};
+
+int aboutl [13][2] = {
+{118, 35}, // fun columns
+{118, 49}, // by fta
+{118, 63}, // coding:
+{118, 72}, // o. goguel
+{118, 88}, // design:
+{118, 97}, // o. bailly
+{118, 104}, // maitre
+{118, 132}, // version 1.1
+{118, 141}, // toolbox-mag
+{118, 150}, // issue: 04
+{118, 159}, // 03-deb-91
+{118, 175}, // copyright
+{118, 184} // fta/toolbox
+};
+
+int statusl [6][2] = {
+{240, 11}, // score:
+{240, 20}, // 0
+{240, 31}, // level:
+{240, 40}, // 00 1
+{240, 51}, // total:
+{240, 60} // 0
+};
+
+int infol [11][2] = {
+{116, 50}, // columns
+{116, 57}, // rules.
+{116, 71}, // <-:left
+{116, 78}, // ->:right
+{116, 85}, // r:rotate
+{116, 92}, // spc:fall
+{116, 99}, // ^r:restart
+{116, 106}, // ^s:new pat
+{116, 113}, // n:next
+{116, 120}, // p:pause
+{116, 134} // have fun !
+};
+
+int m_menul [10][2] = {
+{118, 52}, // choose
+{118, 66}, // 1 - very easy
+{118, 73}, // 2 - easy
+{118, 80}, // 3 - medium
+{118, 87}, // 4 - hard
+{118, 94}, // 5 - very hard
+{118, 101}, // 6 - jedi
+{118, 115}, // a - about
+{118, 122}, // i - info
+{118, 129} // q - quit
+};