From 14cb099799f9cf60b95ece6649d20a86958155f0 Mon Sep 17 00:00:00 2001 From: b Date: Sun, 14 Jul 2013 23:47:00 +0200 Subject: [PATCH] - Further optimization of graphic procedures - Fixed a bug that placed the cursor outside the edited character when switching between heights with the mouse. --- COPYING.TXT | 674 ++++++++++++ CPIED.CPP | 2948 ++++++++++++++++++++------------------------------ CPIED.PRJ | Bin 4608 -> 4606 bytes readthis.txt | 77 +- 4 files changed, 1888 insertions(+), 1811 deletions(-) create mode 100644 COPYING.TXT diff --git a/COPYING.TXT b/COPYING.TXT new file mode 100644 index 0000000..818433e --- /dev/null +++ b/COPYING.TXT @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + 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. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + 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/CPIED.CPP b/CPIED.CPP index b729702..94c5ca6 100644 --- a/CPIED.CPP +++ b/CPIED.CPP @@ -1,3 +1,23 @@ + //CPI EDITOR vresion 1.2b + // Balthasar Szczepaäski Copyright 2013 + // + // This file is part of CPIED also known as the CPI EDITOR or EDYTOR NAPISàW +// + //CPIED 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. +// + //CPIED 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 CPIED (copying.txt). If not, see . + // + // +// Compiled with Turbo C++ 3.0 #include #include #include @@ -82,7 +102,6 @@ struct ScreenFontBitmap8 char8 lit[256]; }; - int status; char nazwap[256]="Nie_wybrano_pliku"; char err[256]; @@ -129,21 +148,21 @@ struct ScreenFontBitmap8 //int premy; int klik; int prek; - void showMaus(); void hideMaus(); -int setMaus(); -void getMaus(int *x,int *y,int *k); +int setMaus (); +void getMaus (int *x,int *y,int *k); void nullpointers(); -void offset(); +void offset (); -void new8 (); -void menu8(); -void cpwys(); +void new8 (); +void menu8 (); +void cpwys (); +void redraw(); -void displayDialog(int color, char *text, int type=0); +void displayDialog(int color, char *text, int type=0); int message (char *text, char *value, int type=1); void question (char *text, char *result); unsigned question (char *text); @@ -168,34 +187,51 @@ void ent8 (); void ent14(); void ent16(); -int otw(); -int otw2(); +int otw (); +int otw2(); +void otw3(); -int zap(); -int zap2(); +int zap (); +int zap2(); +void zap3(); -int zmn(); +void use3(); -int newCPI (); -int newCPI2(short CP, short h); +int zmn (); +void zmn3(); + +int newCPI (); +int newCPI2(short CP, short h); +void newCPI3(); void deleteCPI(short st=6,short a=0,short b=0); -int newCP (); -int newCP2(short CP,short h); +int newCP (); +int newCP2(short CP,short h); +void newCP3(); + +void normCP(); +void nextCP(); +void prevCP(); -int delCP(); +int delCP (); +void delCP3(); -int newF (); -int newF2 (short h); -int newF8 (short CP); -int newF14(short CP); -int newF16(short CP); +int newF (); +int newF2 (short h); +void newF3(); +int newF8 (short CP); +int newF14(short CP); +int newF16(short CP); -int delF (); -int delF8 (short h); -int delF14(short h); -int delF16(short h); +void prevF(); +void nextF(); + +int delF (); +void delF3(); +int delF8 (short h); +int delF14(short h); +int delF16(short h); int main(int argc,char* argv[]); @@ -204,13 +240,11 @@ void showMaus() iR.x.ax=0x0001; int86(0x33,&iR,&oR); } - void hideMaus() { iR.x.ax=0x0002; int86(0x33,&iR,&oR); } - int setMaus() { iR.x.ax=0x0000; @@ -218,7 +252,6 @@ int setMaus() int86(0x33,&iR,&oR); return oR.x.ax; } - void getMaus(int *x,int *y,int *k) { iR.x.ax=0x0003; @@ -277,112 +310,6 @@ void offset() } } -void deleteCPI(short st,short a,short b) -{ - short i,j; - switch(st) - { - case 6: - if(FIH==NULL) - return; - a=FIH->num_codepages-1; - b=CPIH[a]->num_fonts-1; - case 5: - switch(SFH[a][b]->height) - { - case 8: - delete SFB8[a]; - SFB8[a] = NULL; - byo8[a] = 0; - break; - case 14: - delete SFB14[a]; - SFB14[a] = NULL; - byo14[a] = 0; - break; - case 16: - delete SFB16[a]; - SFB16[a] = NULL; - byo16[a] = 0; - break; - //default: - //totally unexpected; - } - case 4: - delete SFH[a][b]; - SFH[a][b] = NULL; - for(j=0;jheight) - { - case 8: - delete SFB8[a]; - SFB8[a] = NULL; - byo8[a] = 0; - break; - case 14: - delete SFB14[a]; - SFB14[a] = NULL; - byo14[a] = 0; - break; - case 16: - delete SFB16[a]; - SFB16[a] = NULL; - byo16[a] = 0; - break; - //default: - //totally unexpected; - } - delete SFH[a][j]; - SFH[a][j] = NULL; - } - case 3: - delete CPIH[a]; - CPIH[a] = NULL; - case 2: - delete CPEH[a]; - CPEH[a] = NULL; - for(i=0;inum_fonts;++j) - { - switch(SFH[i][j]->height) - { - case 8: - delete SFB8[i]; - SFB8[i] = NULL; - byo8[i] = 0; - break; - case 14: - delete SFB14[i]; - SFB14[i] = NULL; - byo14[i] = 0; - break; - case 16: - delete SFB16[i]; - SFB16[i] = NULL; - byo16[i] = 0; - break; - //default: - //totally unexpected; - } - delete SFH[i][j]; - SFH[i][j] = NULL; - } - delete CPIH[i]; - delete CPEH[i]; - CPIH[i] = NULL; - CPEH[i] = NULL; - } - case 1: - delete FIH; - FIH = NULL; - case 0: - delete FFH; - FFH = NULL; - } -} - void new8() { cleardevice(); @@ -390,7 +317,7 @@ void new8() outtextxy(0,0, "CPI editor 1.2±"); outtextxy(0,8, "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"); - //outtextxy(600,16,"v1.2a"); + //outtextxy(600,16,"v1.2b"); } void menu8() { @@ -406,8 +333,8 @@ void menu8() void cpwys() { char cpw[256]; - setcolor(BLACK); - outtextxy(0x78,0,"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"); + setfillstyle(EMPTY_FILL,BLACK); + bar(120,0,639,7); if(any) { if((unsigned)(CPEH[cp]->codepage)>=1000) @@ -439,7 +366,86 @@ void cpwys() strcpy(cpw, "°No CPI open°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); setcolor(GREEN); - outtextxy(0x78,0,cpw); + outtextxy(120,0,cpw); +} +void redraw()// +{ + cury&=7; + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + return; +} + +void displayDialog(int color,char *text,int type) +{ + gotoxy(21,13); + char t1[43]="±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; + strcpy(t1+1,text); + t1[strlen(t1)]='±'; + setfillstyle(EMPTY_FILL,BLACK); + bar(152,184,487,215); + setcolor(color); + outtextxy(152,184,t1); + outtextxy(152,192,"± ±"); + outtextxy(152,200,"± ±"); + switch(type) + { + case 2: + outtextxy(152,208,"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±again?(y/n)±"); + break; + case 1: + outtextxy(152,208,"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±anykey±"); + break; + case 0: + default: + outtextxy(152,208,"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"); + break; + } +} +int message(char *text, char *value, int type) +{ + if (type!=2) + { + displayDialog(BROWN,text,1); + printf("%s",value); + bioskey(_KEYBRD_READ); + return 0; + } + else + { + displayDialog(BROWN,text,2); + printf("%s",value); + int a; + for(;;) + { + a=bioskey(_KEYBRD_READ); + if((a&0xFF)==0x59||(a&0xFF)==0x79) + return 0; + if((a&0xFF)==0x4e||(a&0xff)==0x6e) + return 1; + } + } +} +inline void question(char *text, char *result) +{ + displayDialog(GREEN,text); + scanf("%s",result); +} +inline unsigned question(char *text) +{ + char temp[256]; + question(text,temp); + return atoi(temp); } void ramka8() @@ -465,12 +471,12 @@ void ramka14() setcolor(GREEN); else setcolor(RED); - rectangle(15,222,144,447); + rectangle(15,223,144,448); if(tab!=0&&wys==14) setcolor(GREEN); else setcolor(RED); - rectangle(175,222,304,447); + rectangle(175,223,304,448); } void ramka16() { @@ -480,34 +486,34 @@ void ramka16() setcolor(GREEN); else setcolor(RED); - rectangle(335,110,464,367); + rectangle(335,111,464,368); if(tab!=0&&wys==16) setcolor(GREEN); else setcolor(RED); - rectangle(495,110,624,367); + rectangle(495,111,624,368); } -void lin14(int mode) +void lin8(int mode) { if(!any) return; if(mode==3) { - if(SFB14[cp]->lit[lit].lin[cury]&(0x80>>curx)) - putpixel(176+curx+(lit%16)*8,223+cury+(lit/16)*14,GREEN); + if(SFB8[cp]->lit[lit].lin[cury]&(0x80>>curx)) + putpixel(176+curx+((lit&15)<<3),32+cury+((lit>>4)<<3),GREEN); else - putpixel(176+curx+(lit%16)*8,223+cury+(lit/16)*14,BLACK); + putpixel(176+curx+((lit&15)<<3),32+cury+((lit>>4)<<3),BLACK); return; } char ab[2]="X"; int color1,color2; - if(byo14[cp]==0) + if(byo8[cp]==0) { setfillstyle(WIDE_DOT_FILL,RED); - bar(176,223,303,446); + bar(176,32,303,159); return; } - if(wys==14) + if(wys==8) { color1=GREEN; color2=GREEN; @@ -517,112 +523,85 @@ void lin14(int mode) color1=BROWN; color2=RED; } - int a,b,l; + int l; switch(mode) { case 2: setcolor(RED); - if(pre%16!=lit%16) - { - ab[0]=abc[pre%16]; - outtextxy(176+8*(pre%16),215,ab); - } - if(pre/16!=lit/16) + if((pre&15)!=(lit&15)) { - ab[0]=abc[pre/16]; - outtextxy(168,226+14*(pre/16),ab); + ab[0]=abc[pre&15]; + outtextxy(176+((pre&15)<<3),24,ab); } - for(a=0;a<14;++a) + if(pre>>4!=lit>>4) { - for(b=0;b<8;++b) - { - if(SFB14[cp]->lit[pre].lin[a]&(0x80>>b)) - putpixel(176+b+(pre%16)*8,223+a+(pre/16)*14,BROWN); - else - putpixel(176+b+(pre%16)*8,223+a+(pre/16)*14,BLACK); - } + ab[0]=abc[pre>>4]; + outtextxy(168,32+((pre>>4)<<3),ab); } + setfillpattern(SFB8[cp]->lit[pre].lin,BROWN); + bar(176+((pre&15)<<3),32+((pre>>4)<<3),183+((pre&15)<<3),39+((pre>>4)<<3)); + + case 3: case 1: setcolor(color2); - ab[0]=abc[lit%16]; - outtextxy(176+8*(lit%16),215,ab); - ab[0]=abc[lit/16]; - outtextxy(168,226+14*(lit/16),ab); - for(a=0;a<14;++a) - { - for(b=0;b<8;++b) - { - if(SFB14[cp]->lit[lit].lin[a]&(0x80>>b)) - putpixel(176+b+(lit%16)*8,223+a+(lit/16)*14,color1); - else - putpixel(176+b+(lit%16)*8,223+a+(lit/16)*14,BLACK); - } - } + ab[0]=abc[lit&15]; + outtextxy(176+((lit&15)<<3),24,ab); + ab[0]=abc[lit>>4]; + outtextxy(168,32+((lit>>4)<<3),ab); + setfillpattern(SFB8[cp]->lit[lit].lin,color1); + bar(176+((lit&15)<<3),32+((lit>>4)<<3),183+((lit&15)<<3),39+((lit>>4)<<3)); + + break; case 0: default: for(l=0;l<16;++l) { ab[0]=abc[l]; - if(lit%16==l) + if((lit&15)==l) setcolor(color2); else setcolor(RED); - outtextxy(176+8*l,215,ab); - if(lit/16==l) + outtextxy(176+(l<<3),24,ab); + if(lit>>4==l) setcolor(color2); else setcolor(RED); - outtextxy(168,226+14*l,ab); + outtextxy(168,32+(l<<3),ab); } for(l=0;l<256;++l) { - for(a=0;a<14;++a) - { - for(b=0;b<8;++b) - { - if (l==lit) - { - if(SFB14[cp]->lit[l].lin[a]&(0x80>>b)) - putpixel(176+b+(l%16)*8,223+a+(l/16)*14,color1); - else - putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BLACK); - } - else - { - if(SFB14[cp]->lit[l].lin[a]&(0x80>>b)) - putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BROWN); - else - putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BLACK); - } - } - } + if(l==lit) + setfillpattern(SFB8[cp]->lit[l].lin,color1); + else + setfillpattern(SFB8[cp]->lit[l].lin,BROWN); + bar(176+((l&15)<<3),32+((l>>4)<<3),183+((l&15)<<3),39+((l>>4)<<3)); } break; } } -void lin8(int mode) +void lin14(int mode) { if(!any) return; if(mode==3) { - if(SFB8[cp]->lit[lit].lin[cury]&(0x80>>curx)) - putpixel(176+curx+(lit%16)*8,32+cury+(lit/16)*8,GREEN); + if(SFB14[cp]->lit[lit].lin[cury]&(0x80>>curx)) + putpixel(176+curx+((lit&15)<<3),224+cury+(lit>>4)*14,GREEN); else - putpixel(176+curx+(lit%16)*8,32+cury+(lit/16)*8,BLACK); + putpixel(176+curx+((lit&15)<<3),224+cury+(lit>>4)*14,BLACK); return; } char ab[2]="X"; int color1,color2; - if(byo8[cp]==0) + if(byo14[cp]==0) { setfillstyle(WIDE_DOT_FILL,RED); - bar(176,32,303,159); + bar(176,224,303,447); return; } - if(wys==8) + if(wys==14) { color1=GREEN; color2=GREEN; @@ -632,85 +611,102 @@ void lin8(int mode) color1=BROWN; color2=RED; } - int a,b,l; + int a,l; switch(mode) { case 2: setcolor(RED); - if(pre%16!=lit%16) + if((pre&15)!=(lit&15)) { - ab[0]=abc[pre%16]; - outtextxy(176+8*(pre%16),24,ab); + ab[0]=abc[pre&15]; + outtextxy(176+((pre&15)<<3),216,ab); } - if(pre/16!=lit/16) + if(pre>>4!=lit>>4) { - ab[0]=abc[pre/16]; - outtextxy(168,32+8*(pre/16),ab); + ab[0]=abc[pre>>4]; + outtextxy(168,227+(pre>>4)*14,ab); } - for(a=0;a<8;++a) + a=(pre>>4)&3; + if(a) { - for(b=0;b<8;++b) - { - if(SFB8[cp]->lit[pre].lin[a]&(0x80>>b)) - putpixel(176+b+(pre%16)*8,32+a+(pre/16)*8,BROWN); - else - putpixel(176+b+(pre%16)*8,32+a+(pre/16)*8,BLACK); - } + setfillpattern(SFB14[cp]->lit[pre].lin+(a<<1)-8,BROWN); + bar(176+((pre&15)<<3),224+(pre>>4)*14,183+((pre&15)<<3),223+(a<<1)+(pre>>4)*14); + } + setfillpattern(SFB14[cp]->lit[pre].lin+(a<<1),BROWN); + bar(176+((pre&15)<<3),224+(a<<1)+(pre>>4)*14,183+((pre&15)<<3),231+(a<<1)+(pre>>4)*14); + if(a!=3) + { + setfillpattern(SFB14[cp]->lit[pre].lin+(a<<1)+8,BROWN); + bar(176+((pre&15)<<3),232+(a<<1)+(pre>>4)*14,183+((pre&15)<<3),237+(pre>>4)*14); } case 3: case 1: setcolor(color2); - ab[0]=abc[lit%16]; - outtextxy(176+8*(lit%16),24,ab); - ab[0]=abc[lit/16]; - outtextxy(168,32+8*(lit/16),ab); - for(a=0;a<8;++a) - { - for(b=0;b<8;++b) - { - if(SFB8[cp]->lit[lit].lin[a]&(0x80>>b)) - putpixel(176+b+(lit%16)*8,32+a+(lit/16)*8,color1); - else - putpixel(176+b+(lit%16)*8,32+a+(lit/16)*8,BLACK); - } - } + ab[0]=abc[lit&15]; + outtextxy(176+((lit&15)<<3),216,ab); + ab[0]=abc[lit>>4]; + outtextxy(168,227+(lit>>4)*14,ab); + a=(lit>>4)&3; + if(a) + { + setfillpattern(SFB14[cp]->lit[lit].lin+(a<<1)-8,color1); + bar(176+((lit&15)<<3),224+(lit>>4)*14,183+((lit&15)<<3),223+(a<<1)+(lit>>4)*14); + } + setfillpattern(SFB14[cp]->lit[lit].lin+(a<<1),color1); + bar(176+((lit&15)<<3),224+(a<<1)+(lit>>4)*14,183+((lit&15)<<3),231+(a<<1)+(lit>>4)*14); + if(a!=3) + { + setfillpattern(SFB14[cp]->lit[lit].lin+(a<<1)+8,color1); + bar(176+((lit&15)<<3),232+(a<<1)+(lit>>4)*14,183+((lit&15)<<3),237+(lit>>4)*14); + } break; case 0: default: for(l=0;l<16;++l) { ab[0]=abc[l]; - if(lit%16==l) + if((lit&15)==l) setcolor(color2); else setcolor(RED); - outtextxy(176+8*l,24,ab); - if(lit/16==l) + outtextxy(176+(l<<3),216,ab); + if(lit>>4==l) setcolor(color2); else setcolor(RED); - outtextxy(168,32+8*l,ab); + outtextxy(168,227+l*14,ab); } for(l=0;l<256;++l) { - for(a=0;a<8;++a) + a=(l>>4)&3; + if(l==lit) { - for(b=0;b<8;++b) + if(a) { - if (l==lit) - { - if(SFB8[cp]->lit[l].lin[a]&(0x80>>b)) - putpixel(176+b+(l%16)*8,32+a+(l/16)*8,color1); - else - putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BLACK); - } - else - { - if(SFB8[cp]->lit[l].lin[a]&(0x80>>b)) - putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BROWN); - else - putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BLACK); - } + setfillpattern(SFB14[cp]->lit[l].lin+(a<<1)-8,color1); + bar(176+((l&15)<<3),224+(l>>4)*14,183+((l&15)<<3),223+(a<<1)+(l>>4)*14); + } + setfillpattern(SFB14[cp]->lit[l].lin+(a<<1),color1); + bar(176+((l&15)<<3),224+(a<<1)+(l>>4)*14,183+((l&15)<<3),231+(a<<1)+(l>>4)*14); + if(a!=3) + { + setfillpattern(SFB14[cp]->lit[l].lin+(a<<1)+8,color1); + bar(176+((l&15)<<3),232+(a<<1)+(l>>4)*14,183+((l&15)<<3),237+(l>>4)*14); + } + } + else + { + if(a) + { + setfillpattern(SFB14[cp]->lit[l].lin+(a<<1)-8,BROWN); + bar(176+((l&15)<<3),224+(l>>4)*14,183+((l&15)<<3),223+(a<<1)+(l>>4)*14); + } + setfillpattern(SFB14[cp]->lit[l].lin+(a<<1),BROWN); + bar(176+((l&15)<<3),224+(a<<1)+(l>>4)*14,183+((l&15)<<3),231+(a<<1)+(l>>4)*14); + if(a!=3) + { + setfillpattern(SFB14[cp]->lit[l].lin+(a<<1)+8,BROWN); + bar(176+((l&15)<<3),232+(a<<1)+(l>>4)*14,183+((l&15)<<3),237+(l>>4)*14); } } } @@ -724,9 +720,9 @@ void lin16(int mode) if(mode==3) { if(SFB16[cp]->lit[lit].lin[cury]&(0x80>>curx)) - putpixel(496+curx+(lit%16)*8,111+cury+(lit/16)*16,GREEN); + putpixel(496+curx+((lit&15)<<3),112+cury+((lit>>4)<<4),GREEN); else - putpixel(496+curx+(lit%16)*8,111+cury+(lit/16)*16,BLACK); + putpixel(496+curx+((lit&15)<<3),112+cury+((lit>>4)<<4),BLACK); return; } char ab[2]="X"; @@ -734,7 +730,7 @@ void lin16(int mode) if(byo16[cp]==0) { setfillstyle(WIDE_DOT_FILL,RED); - bar(496,111,623,366); + bar(496,112,623,367); return; } if(wys==16) @@ -747,86 +743,68 @@ void lin16(int mode) color1=BROWN; color2=RED; } - int a,b,l; + int l; switch(mode) { - case 3: case 2: setcolor(RED); - if(pre%16!=lit%16) - { - ab[0]=abc[pre%16]; - outtextxy(496+8*(pre%16),103,ab); - } - if(pre/16!=lit/16) + if((pre&15)!=(lit&15)) { - ab[0]=abc[pre/16]; - outtextxy(488,115+16*(pre/16),ab); + ab[0]=abc[pre&15]; + outtextxy(496+((pre&15)<<3),104,ab); } - for(a=0;a<16;++a) + if(pre>>4!=lit>>4) { - for(b=0;b<8;++b) - { - if(SFB16[cp]->lit[pre].lin[a]&(0x80>>b)) - putpixel(496+b+(pre%16)*8,111+a+(pre/16)*16,BROWN); - else - putpixel(496+b+(pre%16)*8,111+a+(pre/16)*16,BLACK); - } + ab[0]=abc[pre>>4]; + outtextxy(488,116+((pre>>4)<<4),ab); } + setfillpattern(SFB16[cp]->lit[pre].lin,BROWN); + bar(496+((pre&15)<<3),112+((pre>>4)<<4),503+((pre&15)<<3),119+((pre>>4)<<4)); + setfillpattern(SFB16[cp]->lit[pre].lin+8,BROWN); + bar(496+((pre&15)<<3),120+((pre>>4)<<4),503+((pre&15)<<3),127+((pre>>4)<<4)); + case 3: case 1: setcolor(color2); - ab[0]=abc[lit%16]; - outtextxy(496+8*(lit%16),103,ab); - ab[0]=abc[lit/16]; - outtextxy(488,115+16*(lit/16),ab); - for(a=0;a<16;++a) - { - for(b=0;b<8;++b) - { - if(SFB16[cp]->lit[lit].lin[a]&(0x80>>b)) - putpixel(496+b+(lit%16)*8,111+a+(lit/16)*16,color1); - else - putpixel(496+b+(lit%16)*8,111+a+(lit/16)*16,BLACK); - } - } - break; - case 0: - default: - for(l=0;l<16;++l) + ab[0]=abc[lit&15]; + outtextxy(496+((lit&15)<<3),104,ab); + ab[0]=abc[lit>>4]; + outtextxy(488,116+((lit>>4)<<4),ab); + setfillpattern(SFB16[cp]->lit[lit].lin,color1); + bar(496+((lit&15)<<3),112+((lit>>4)<<4),503+((lit&15)<<3),119+((lit>>4)<<4)); + setfillpattern(SFB16[cp]->lit[lit].lin+8,color1); + bar(496+((lit&15)<<3),120+((lit>>4)<<4),503+((lit&15)<<3),127+((lit>>4)<<4)); + break; + case 0: + default: + for(l=0;l<16;++l) { ab[0]=abc[l]; - if(lit%16==l) + if((lit&15)==l) setcolor(color2); else setcolor(RED); - outtextxy(496+8*l,103,ab); - if(lit/16==l) + outtextxy(496+(l<<3),104,ab); + if(lit>>4==l) setcolor(color2); else setcolor(RED); - outtextxy(488,115+16*l,ab); + outtextxy(488,116+(l<<4),ab); } for(l=0;l<256;++l) { - for(a=0;a<16;++a) + if(l==lit) { - for(b=0;b<8;++b) - { - if (l==lit) - { - if(SFB16[cp]->lit[l].lin[a]&(0x80>>b)) - putpixel(496+b+(l%16)*8,111+a+(l/16)*16,color1); - else - putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BLACK); - } - else - { - if(SFB16[cp]->lit[l].lin[a]&(0x80>>b)) - putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BROWN); - else - putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BLACK); - } - } + setfillpattern(SFB16[cp]->lit[l].lin,color1); + bar(496+((l&15)<<3),112+((l>>4)<<4),503+((l&15)<<3),119+((l>>4)<<4)); + setfillpattern(SFB16[cp]->lit[l].lin+8,color1); + bar(496+((l&15)<<3),120+((l>>4)<<4),503+((l&15)<<3),127+((l>>4)<<4)); + } + else + { + setfillpattern(SFB16[cp]->lit[l].lin,BROWN); + bar(496+((l&15)<<3),112+((l>>4)<<4),503+((l&15)<<3),119+((l>>4)<<4)); + setfillpattern(SFB16[cp]->lit[l].lin+8,BROWN); + bar(496+((l&15)<<3),120+((l>>4)<<4),503+((l&15)<<3),127+((l>>4)<<4)); } } break; @@ -856,14 +834,14 @@ void lit8(int mode) if(curx!=prex) { ab[0]=abc[prex]; - outtextxy(20+16*prex,24,ab); + outtextxy(20+(prex<<4),24,ab); } if(prey<8) { if(cury!=prey) { ab[0]=abc[prey]; - outtextxy(8,36+16*prey,ab); + outtextxy(8,36+(prey<<4),ab); } if(SFB8[cp]->lit[lit].lin[prey]&(0x80>>prex)) { @@ -875,16 +853,16 @@ void lit8(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(0x10+prex*0x10,0x20+prey*0x10,0x1f+prex*0x10,0x2f+prey*0x10); + bar(16+(prex<<4),32+(prey<<4),31+(prex<<4),47+(prey<<4)); } case 1: setcolor(color); ab[0]=abc[curx]; - outtextxy(20+16*curx,24,ab); + outtextxy(20+(curx<<4),24,ab); if(cury<8) { ab[0]=abc[cury]; - outtextxy(8,36+16*cury,ab); + outtextxy(8,36+(cury<<4),ab); if(SFB8[cp]->lit[lit].lin[cury]&(0x80>>curx)) { setcolor(BROWN); @@ -895,13 +873,13 @@ void lit8(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(0x10+curx*0x10,0x20+cury*0x10,0x1f+curx*0x10,0x2f+cury*0x10); + bar(16+(curx<<4),32+(cury<<4),31+(curx<<4),47+(cury<<4)); if(wys==8) { setcolor(GREEN); - rectangle(0x10 + curx*0x10, 0x20 + cury*0x10 ,0x1f + curx*0x10, 0x2f + cury*0x10); + rectangle(16+(curx<<4),32+(cury<<4),31+(curx<<4),47+(cury<<4)); setcolor(BLACK); - rectangle(0x11 + curx*0x10, 0x21 + cury*0x10, 0x1e + curx*0x10, 0x2e + cury*0x10); + rectangle(17+(curx<<4),33+(cury<<4),30+(curx<<4),46+(cury<<4)); } } break; @@ -915,13 +893,13 @@ void lit8(int mode) setcolor(RED); ab[0]=abc[l]; - outtextxy(20+16*l,24,ab); + outtextxy(20+(l<<4),24,ab); if(l==cury) setcolor(color); else setcolor(RED); ab[0]=abc[l]; - outtextxy(8,36+16*l,ab); + outtextxy(8,36+(l<<4),ab); } for(int a=0;a<8;++a) { @@ -937,15 +915,15 @@ void lit8(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(0x10+b*0x10,0x20+a*0x10,0x1f+b*0x10,0x2f+a*0x10); + bar(16+(b<<4),32+(a<<4),31+(b<<4),47+(a<<4)); } } if(wys==8) { setcolor(GREEN); - rectangle(0x10 + curx*0x10, 0x20 + cury*0x10 ,0x1f + curx*0x10, 0x2f + cury*0x10); + rectangle(16+(curx<<4),32+(cury<<4),31+(curx<<4),47+(cury<<4)); setcolor(BLACK); - rectangle(0x11 + curx*0x10, 0x21 + cury*0x10, 0x1e + curx*0x10, 0x2e + cury*0x10); + rectangle(17+(curx<<4),33+(cury<<4),30+(curx<<4),46+(cury<<4)); } break; } @@ -959,7 +937,7 @@ void lit14(int mode) if(byo14[cp]==0) { setfillstyle(WIDE_DOT_FILL,RED); - bar(16,223,143,446); + bar(16,224,143,447); return; } char ab[2]="q"; @@ -974,14 +952,14 @@ void lit14(int mode) if(curx!=prex) { ab[0]=abc[prex]; - outtextxy(20+16*prex,215,ab); + outtextxy(20+(prex<<4),216,ab); } if(prey<14) { if(cury!=prey) { ab[0]=abc[prey]; - outtextxy(8,227+16*prey,ab); + outtextxy(8,228+(prey<<4),ab); } if(SFB14[cp]->lit[lit].lin[prey]&(0x80>>prex)) { @@ -993,16 +971,16 @@ void lit14(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(16+prex*16,223+prey*16,31+prex*16,238+prey*16); + bar(16+(prex<<4),224+(prey<<4),31+(prex<<4),239+(prey<<4)); } case 1: setcolor(color); ab[0]=abc[curx]; - outtextxy(20+16*curx,215,ab); + outtextxy(20+(curx<<4),216,ab); if(cury<14) { ab[0]=abc[cury]; - outtextxy(8,227+16*cury,ab); + outtextxy(8,228+(cury<<4),ab); if(SFB14[cp]->lit[lit].lin[cury]&(0x80>>curx)) { setcolor(BROWN); @@ -1013,13 +991,13 @@ void lit14(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(16+curx*16,223+cury*16,31+curx*16,238+cury*16); + bar(16+(curx<<4),224+(cury<<4),31+(curx<<4),239+(cury<<4)); if(wys==14) { setcolor(GREEN); - rectangle(16+curx*16,223+cury*16,31+curx*16,238+cury*16); + rectangle(16+(curx<<4),224+(cury<<4),31+(curx<<4),239+(cury<<4)); setcolor(BLACK); - rectangle(17+curx*16,224+cury*16,30+curx*16,237+cury*16); + rectangle(17+(curx<<4),225+(cury<<4),30+(curx<<4),238+(cury<<4)); } } break; @@ -1033,13 +1011,13 @@ void lit14(int mode) setcolor(RED); ab[0]=abc[l]; if(l<8) - outtextxy(20+16*l,215,ab); + outtextxy(20+(l<<4),216,ab); if(l==cury) setcolor(color); else setcolor(RED); ab[0]=abc[l]; - outtextxy(8,227+16*l,ab); + outtextxy(8,228+(l<<4),ab); } for(int a=0;a<14;++a) { @@ -1055,15 +1033,15 @@ void lit14(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(16+b*16,223+a*16,31+b*16,238+a*16); + bar(16+(b<<4),224+(a<<4),31+(b<<4),239+(a<<4)); } } if(wys==14) { setcolor(GREEN); - rectangle(16+curx*16,223+cury*16,31+curx*16,238+cury*16); + rectangle(16+(curx<<4),224+(cury<<4),31+(curx<<4),239+(cury<<4)); setcolor(BLACK); - rectangle(17+curx*16,224+cury*16,30+curx*16,237+cury*16); + rectangle(17+(curx<<4),225+(cury<<4),30+(curx<<4),238+(cury<<4)); } break; } @@ -1077,7 +1055,7 @@ void lit16(int mode) if(byo16[cp]==0) { setfillstyle(WIDE_DOT_FILL,RED); - bar(336,111,463,366); + bar(336,112,463,367); return; } char ab[2]="q"; @@ -1092,12 +1070,12 @@ void lit16(int mode) if(curx!=prex) { ab[0]=abc[prex]; - outtextxy(340+16*prex,103,ab); + outtextxy(340+(prex<<4),104,ab); } if(cury!=prey) { ab[0]=abc[prey]; - outtextxy(328,115+16*prey,ab); + outtextxy(328,116+(prey<<4),ab); } if(SFB16[cp]->lit[lit].lin[prey]&(0x80>>prex)) { @@ -1109,13 +1087,13 @@ void lit16(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(336+prex*16,111+prey*16,351+prex*16,126+prey*16); + bar(336+(prex<<4),112+(prey<<4),351+(prex<<4),127+(prey<<4)); case 1: setcolor(color); ab[0]=abc[curx]; - outtextxy(340+16*curx,103,ab); + outtextxy(340+(curx<<4),104,ab); ab[0]=abc[cury]; - outtextxy(328,115+16*cury,ab); + outtextxy(328,116+(cury<<4),ab); if(SFB16[cp]->lit[lit].lin[cury]&(0x80>>curx)) { setcolor(BROWN); @@ -1126,13 +1104,13 @@ void lit16(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(336+curx*16,111+cury*16,351+curx*16,126+cury*16); + bar(336+(curx<<4),112+(cury<<4),351+(curx<<4),127+(cury<<4)); if(wys==16) { setcolor(GREEN); - rectangle(336+curx*16,111+cury*16,351+curx*16,126+cury*16); + rectangle(336+(curx<<4),112+(cury<<4),351+(curx<<4),127+(cury<<4)); setcolor(BLACK); - rectangle(337+curx*16,112+cury*16,350+curx*16,125+cury*16); + rectangle(337+(curx<<4),113+(cury<<4),350+(curx<<4),126+(cury<<4)); } break; case 0: @@ -1145,13 +1123,13 @@ void lit16(int mode) setcolor(RED); ab[0]=abc[l]; if(l<8) - outtextxy(340+16*l,103,ab); + outtextxy(340+(l<<4),104,ab); if(l==cury) setcolor(color); else setcolor(RED); ab[0]=abc[l]; - outtextxy(328,115+16*l,ab); + outtextxy(328,116+(l<<4),ab); } for(int a=0;a<16;++a) { @@ -1167,15 +1145,15 @@ void lit16(int mode) setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); } - bar(336+b*16,111+a*16,351+b*16,126+a*16); + bar(336+(b<<4),112+(a<<4),351+(b<<4),127+(a<<4)); } } if(wys==16) { setcolor(GREEN); - rectangle(336+curx*16,111+cury*16,351+curx*16,126+cury*16); + rectangle(336+(curx<<4),112+(cury<<4),351+(curx<<4),127+(cury<<4)); setcolor(BLACK); - rectangle(337+curx*16,112+cury*16,350+curx*16,125+cury*16); + rectangle(337+(curx<<4),113+(cury<<4),350+(curx<<4),126+(cury<<4)); } } } @@ -1184,40 +1162,44 @@ inline void spc8() { SFB8[cp]->lit[lit].lin[cury]^=0x80>>curx; } -inline void bsp8() +inline void spc14() { - SFB8[cp]->lit[lit].lin[cury]&=~(0x80>>curx); + SFB14[cp]->lit[lit].lin[cury]^=0x80>>curx; } -inline void ent8() +inline void spc16() { - SFB8[cp]->lit[lit].lin[cury]|=0x80>>curx; + SFB16[cp]->lit[lit].lin[cury]^=0x80>>curx; } -inline void spc14() +inline void bsp8() { - SFB14[cp]->lit[lit].lin[cury]^=0x80>>curx; + SFB8[cp]->lit[lit].lin[cury]&=~(0x80>>curx); } inline void bsp14() { SFB14[cp]->lit[lit].lin[cury]&=~(0x80>>curx); } -inline void ent14() +inline void bsp16() { - SFB14[cp]->lit[lit].lin[cury]|=0x80>>curx; + SFB16[cp]->lit[lit].lin[cury]&=~(0x80>>curx); } -inline void spc16() +inline void ent8() { - SFB16[cp]->lit[lit].lin[cury]^=0x80>>curx; + SFB8[cp]->lit[lit].lin[cury]|=0x80>>curx; } -inline void bsp16() +inline void ent14() { - SFB16[cp]->lit[lit].lin[cury]&=~(0x80>>curx); + SFB14[cp]->lit[lit].lin[cury]|=0x80>>curx; } inline void ent16() { SFB16[cp]->lit[lit].lin[cury]|=0x80>>curx; } - +int otw() +{ + question("Filename",nazwap); + return otw2(); +} int otw2() { int a; @@ -1225,10 +1207,8 @@ int otw2() int c; int d; int NT; - CPI=fopen(nazwap,"rb"); - if(CPI==NULL) { sprintf(err,"100:No valid file at this path"); @@ -1236,6 +1216,7 @@ int otw2() } else sprintf(err,"OK"); + FFH=new FontFileHeader; if(!FFH) { @@ -1281,6 +1262,7 @@ int otw2() deleteCPI(0); return 104; } + FIH=new FontInfoHeader; if(!FIH) { @@ -1298,7 +1280,6 @@ int otw2() deleteCPI(1); return 105; } - if(FIH->num_codepages==0) { sprintf(err,"117:No codepages"); @@ -1348,6 +1329,7 @@ int otw2() return 114; } } + fseek(CPI,CPEH[a]->cpih_offset,0); CPIH[a] = new CodePageInfoHeader; if(!CPIH[a]) @@ -1379,6 +1361,7 @@ int otw2() deleteCPI(3,a); return 115; } + for(b=0;bnum_fonts;++b) { SFH[a][b] = new ScreenFontHeader; @@ -1426,8 +1409,6 @@ int otw2() } byo16[a]=1; } - - if(SFH[a][b]->height!=8&&SFH[a][b]->height!=14&&SFH[a][b]->height!=16) { sprintf(err,"110:Wrong height (%u) in SFH[%u][%u]",(short)(SFH[a][b]->height&0xff),a,b); @@ -1449,7 +1430,6 @@ int otw2() deleteCPI(4,a,b); return 112; } - if(SFH[a][b]->height==16) { SFB16[a] = new ScreenFontBitmap16; @@ -1492,6 +1472,35 @@ int otw2() offset(); return 0; } +void otw3()// +{ + setcolor(RED); + outtextxy(136,472,"load"); + deleteCPI(); + status=otw(); + while(status!=0) + { + if (message("CPI file not loaded",err,2)==0) + status=otw(); + else + break; + } + any=!status; + cp=0; + if(byo8[0]) + wys=8; + else if(byo16[0]) + wys=16; + else if(byo14[0]) + wys=14; + redraw(); +} + +int zap() +{ + question("Filename",nazwap); + return zap2(); +} int zap2() { int a; @@ -1500,7 +1509,6 @@ int zap2() int d; CPI=fopen(nazwap,"wb"); - if(CPI==NULL) { sprintf(err,"200:Cannot create file at this path"); @@ -1508,9 +1516,12 @@ int zap2() } else sprintf(err,"OK"); + fwrite(FFH,0x19,1,CPI); + fseek(CPI,FFH->fih_offset,0); fwrite(FIH,0x2,1,CPI); + for(a=0; anum_codepages;++a) { if (a!=0) @@ -1519,6 +1530,7 @@ int zap2() fseek(CPI,CPEH[a]->cpih_offset,0); fwrite(CPIH[a],0x6,1,CPI); + for(b=0;bnum_fonts;++b) { fwrite(SFH[a][b],0x6,1,CPI); @@ -1535,255 +1547,278 @@ int zap2() } } - fprintf(CPI,"\r\nTen plik zostaˆ wygenerowany za pomoc¥ Edytora napis¢w, wersja 1.2a\r\n autor programu: Balthasar Szczepaäski%c",0x1a); - + fprintf(CPI,"\r\nThis file was created with the CPI editor version 1.2b",0x1a); fclose(CPI); return 0; } - -int newF8(short CP) +void zap3()// { - if(byo8[CP]) - { - sprintf(err,"313:Height 8 already in cp%03u",CPEH[CP]->codepage); - return 313; - } - if(!(SFH[CP][CPIH[CP]->num_fonts]=new ScreenFontHeader)) - { - sprintf(err,"316:Not enough memory for SFH[%d][%d]",CP,CPIH[CP]->num_fonts); - return 316; - } - if(!(SFB8[CP]=new ScreenFontBitmap8)) + setcolor(RED); + outtextxy(72,472,"save"); + status=zap(); + while(status!=0) { - sprintf(err,"316:Not enough memory for SFB8[%d]",CP); - delete SFH[CP][CPIH[CP]->num_fonts]; - SFH[CP][CPIH[CP]->num_fonts] = NULL; - return 316; + if (message("CPI file not saved",err,2)==0) + status=zap(); + else + break; } - memset(SFB8[CP],0,0x800); - byo8[CP]=1; - SFH[CP][CPIH[CP]->num_fonts]->height=8; - SFH[CP][CPIH[CP]->num_fonts]->width=8; - SFH[CP][CPIH[CP]->num_fonts]->yaspect=0; - SFH[CP][CPIH[CP]->num_fonts]->xaspect=0; - SFH[CP][CPIH[CP]->num_fonts]->num_chars=256; - ++(CPIH[CP]->num_fonts); - offset(); - sprintf(err,"0:OK"); - return 0; + redraw(); + return; } -int newF14(short CP) +void use3()/// { - if(byo14[CP]) - { - sprintf(err,"313:Height 14 already in cp%03u",CPEH[CP]->codepage); - return 313; - } - if(!(SFH[CP][CPIH[CP]->num_fonts]=new ScreenFontHeader)) + setcolor(RED); + outtextxy(72,472,"save use"); + status=zap(); + while(status!=0) { - sprintf(err,"316:Not enough memory for SFH[%d][%d]",CP,CPIH[CP]->num_fonts); - return 316; + if (message("CPI file not saved",err,2)==0) + status=zap(); + else + break; } - if(!(SFB14[CP]=new ScreenFontBitmap14)) + if(status==0) { - sprintf(err,"316:Not enough memory for SFB14[%d]",CP); - delete SFH[CP][CPIH[CP]->num_fonts]; - SFH[CP][CPIH[CP]->num_fonts] = NULL; - return 316; + sprintf(err,"mode con:cp prep=((%u) %s)",CPEH[cp]->codepage,nazwap); + puts(err); + system(err); + sprintf(err,"mode con:cp sel=%u",CPEH[cp]->codepage); + puts(err); + system(err); + delay(5000); + closegraph(); + initgraph(&kart16,&tryb16,""); + } - memset(SFB14[CP],0,0xe00); - byo14[CP]=1; - SFH[CP][CPIH[CP]->num_fonts]->height=14; - SFH[CP][CPIH[CP]->num_fonts]->width=8; - SFH[CP][CPIH[CP]->num_fonts]->yaspect=0; - SFH[CP][CPIH[CP]->num_fonts]->xaspect=0; - SFH[CP][CPIH[CP]->num_fonts]->num_chars=256; - ++(CPIH[CP]->num_fonts); - offset(); - sprintf(err,"0:OK"); - return 0; + redraw(); + return; } -int newF16(short CP) +int zmn() { - if(byo16[CP]) - { - sprintf(err,"313:Height 16 already in cp%03u",CPEH[CP]->codepage); - return 313; - } - if(!(SFH[CP][CPIH[CP]->num_fonts]=new ScreenFontHeader)) - { - sprintf(err,"316:Not enough memory for SFH[%d][%d]",CP,CPIH[CP]->num_fonts); - return 316; - } - if(!(SFB16[CP]=new ScreenFontBitmap16)) + short CP; + CP=question("Codepage number"); + for(short i=0;inum_codepages;++i) { - sprintf(err,"316:Not enough memory for SFB16[%d]",CP); - delete SFH[CP][CPIH[CP]->num_fonts]; - SFH[CP][CPIH[CP]->num_fonts] = NULL; - return 316; + if(CP==CPEH[i]->codepage&&i!=cp) + { + sprintf(err,"314:cp%03u already in CPEH[%u]",CP,i); + return 314; + } } - memset(SFB16[CP],0,0x1000); - byo16[CP]=1; - SFH[CP][CPIH[CP]->num_fonts]->height=16; - SFH[CP][CPIH[CP]->num_fonts]->width=8; - SFH[CP][CPIH[CP]->num_fonts]->yaspect=0; - SFH[CP][CPIH[CP]->num_fonts]->xaspect=0; - SFH[CP][CPIH[CP]->num_fonts]->num_chars=256; - ++(CPIH[CP]->num_fonts); - sprintf(err,"0:OK"); - return 0; + CPEH[cp]->codepage=CP; + return 0; +} +void zmn3()// +{ + setcolor(RED); + outtextxy(256,472,"number"); + status=zmn(); + if(status!=0) + message("Number not changed",err); + redraw(); } -int newF2(short h) +int newCPI() { - switch(h) + short CP,h; + char temp[51]; + CP=question("First codepage number:"); + h=question("Initial font height(8,14,16,all)"); + if(h!=0&&h!=8&&h!=14&&h!=16) { - case 8: - return newF8(cp); - case 14: - return newF14(cp); - case 16: - return newF16(cp); - default: sprintf(err,"310:Wrong height (%u)",h); return 310; } + return newCPI2(CP,h); } -int delF8(short h) +int newCPI2(short CP, short h) { - short i; - delete SFB8[cp]; - delete SFH[cp][h]; - byo8[cp]=0; - --(CPIH[cp]->num_fonts); - for(i=h;inum_fonts;++i) + int t; + FFH=new FontFileHeader; + if(!FFH) { - SFH[cp][i] = SFH[cp][i+1]; + sprintf(err,"316:Not enough memory for FFH"); + return 316; } - SFH[cp][CPIH[cp]->num_fonts] = NULL; - sprintf(err,"0:OK"); + FFH->id0=0xFF; + strcpy(FFH->id,"FONT "); + strcpy(FFH->reserved,"\0\0\0\0\0\0\0"); + FFH->pnum=1; + FFH->ptyp=1; + FIH=new FontInfoHeader; + if(!FIH) + { + sprintf(err,"316:Not enough memory for FIH"); + deleteCPI(0); + return 316; + } + FIH->num_codepages=0; + t = newCP2(CP,h); + if (t!=0) + { + deleteCPI(1); + return t; + } + sprintf(err,"0:Ok"); return 0; } -int delF14(short h) +void newCPI3()// { - short i; - delete SFB14[cp]; - delete SFH[cp][h]; - byo14[cp]=0; - --(CPIH[cp]->num_fonts); - for(i=h;inum_fonts;++i) + setcolor(RED); + outtextxy(16,472,"new"); + deleteCPI(); + status=newCPI(); + while(status!=0) { - SFH[cp][i] = SFH[cp][i+1]; + if (message("CPI not created",err,2)==0) + status=newCPI(); + else + break; } - SFH[cp][CPIH[cp]->num_fonts] = NULL; - sprintf(err,"0:OK"); - return 0; + any=!status; + if(any) + { + strcpy(nazwap,"new CPI"); + cp=0; + if(byo8[0]) + wys=8; + else if(byo16[0]) + wys=16; + else if(byo14[0]) + wys=14; + cury&=7; + } + redraw(); } -int delF16(short h) + +void deleteCPI(short st,short a,short b) { - short i; - delete SFB16[cp]; - delete SFH[cp][h]; - byo16[cp]=0; - --(CPIH[cp]->num_fonts); - for(i=h;inum_fonts;++i) - { - SFH[cp][i] = SFH[cp][i+1]; - } - SFH[cp][CPIH[cp]->num_fonts] = NULL; - sprintf(err,"0:OK"); - return 0; -} - -int delCP() -{ - short i; - if(FIH->num_codepages<=1) - { - sprintf(err,"317:Last codepage"); - return 317; - } - for(i=0;inum_fonts;++i) + short i,j; + switch(st) { - switch(SFH[cp][i]->height) + case 6: + if(FIH==NULL) + return; + a=FIH->num_codepages-1; + b=CPIH[a]->num_fonts-1; + case 5: + switch(SFH[a][b]->height) { - case 16: - delete SFB16[cp]; + case 8: + delete SFB8[a]; + SFB8[a] = NULL; + byo8[a] = 0; break; case 14: - delete SFB14[cp]; + delete SFB14[a]; + SFB14[a] = NULL; + byo14[a] = 0; break; - case 8: - delete SFB8[cp]; + case 16: + delete SFB16[a]; + SFB16[a] = NULL; + byo16[a] = 0; break; - //unxh! } - delete SFH[cp][i]; - } - delete CPIH[cp]; - delete CPEH[cp]; - - --(FIH->num_codepages); - for(i=cp;inum_codepages;++i) - { - CPEH[i] = CPEH[i+1]; - CPIH[i] = CPIH[i+1]; - SFH[i][0] = SFH[i+1][0]; - SFH[i][1] = SFH[i+1][1]; - SFH[i][2] = SFH[i+1][2]; - SFB16[i] = SFB16[i+1]; - SFB14[i] = SFB14[i+1]; - SFB8[i] = SFB8[i+1]; - byo16[i] = byo16[i+1]; - byo14[i] = byo14[i+1]; - byo8[i] = byo8[i+1]; + case 4: + delete SFH[a][b]; + SFH[a][b] = NULL; + for(j=0;jheight) + { + case 8: + delete SFB8[a]; + SFB8[a] = NULL; + byo8[a] = 0; + break; + case 14: + delete SFB14[a]; + SFB14[a] = NULL; + byo14[a] = 0; + break; + case 16: + delete SFB16[a]; + SFB16[a] = NULL; + byo16[a] = 0; + break; + } + delete SFH[a][j]; + SFH[a][j] = NULL; + } + case 3: + delete CPIH[a]; + CPIH[a] = NULL; + case 2: + delete CPEH[a]; + CPEH[a] = NULL; + for(i=0;inum_fonts;++j) + { + switch(SFH[i][j]->height) + { + case 8: + delete SFB8[i]; + SFB8[i] = NULL; + byo8[i] = 0; + break; + case 14: + delete SFB14[i]; + SFB14[i] = NULL; + byo14[i] = 0; + break; + case 16: + delete SFB16[i]; + SFB16[i] = NULL; + byo16[i] = 0; + break; + } + delete SFH[i][j]; + SFH[i][j] = NULL; + } + delete CPIH[i]; + delete CPEH[i]; + CPIH[i] = NULL; + CPEH[i] = NULL; + } + case 1: + delete FIH; + FIH = NULL; + case 0: + delete FFH; + FFH = NULL; } - CPEH[FIH->num_codepages] = NULL; - CPIH[FIH->num_codepages] = NULL; - SFH[FIH->num_codepages][0] = NULL; - SFH[FIH->num_codepages][1] = NULL; - SFH[FIH->num_codepages][2] = NULL; - SFB16[FIH->num_codepages] = NULL; - SFB14[FIH->num_codepages] = NULL; - SFB8[FIH->num_codepages] = NULL; - byo16[FIH->num_codepages] = 0; - byo14[FIH->num_codepages] = 0; - byo8[FIH->num_codepages] = 0; - - sprintf(err,"0:OK"); - return 0; } - -int delF() + +int newCP() { - short h; - if(CPIH[cp]->num_fonts<=1) + short CP,h; + char temp[51]; + if(FIH->num_codepages>=16) { - sprintf(err,"315:Last font in CPIH[%u]",cp); - return 315; + sprintf(err,"305:Already 16 codepages in CPI"); + return 305; } - for(short i=0;inum_fonts;++i) + CP=question("Codepage number:"); + for(short i=0;inum_codepages;++i) { - if(SFH[cp][i]->height==wys) + if(CP==CPEH[i]->codepage) { - h=i; - break; + sprintf(err,"314:cp%03u already in CPEH[%u]",CP,i); + return 314; } } - switch(wys) + h=question("Initial font height(8,14,16,all)"); + if(h!=0&&h!=8&&h!=14&&h!=16) { - case 8: - return delF8(h); - case 14: - return delF14(h); - case 16: - return delF16(h); - default: - sprintf(err,"510:%u WT*?",h); - return 510; + sprintf(err,"310:Wrong height (%u)",h); + return 310; } + return newCP2(CP,h); } int newCP2(short CP,short h) { @@ -1865,186 +1900,510 @@ int newCP2(short CP,short h) sprintf(err,"0:OK"); return 0; } +void newCP3()// +{ + setcolor(RED); + outtextxy(400,472,"newCP"); + status=newCP(); + if(status!=0) + message("Codepage not created",err); + else + cp=FIH->num_codepages-1; + offset(); + new8(); + menu8(); -int newCPI2(short CP, short h) + normCP(); + return; +} + +void normCP()// { - int t; - FFH=new FontFileHeader; - if(!FFH) + prex=curx; + prey=cury; + + if(wys==8&&byo8[cp]==0) { - sprintf(err,"316:Not enough memory for FFH"); - return 316; + if(byo14[cp]!=0) + wys=14; + else if(byo16[cp]!=0) + wys=16; } - FFH->id0=0xFF; - strcpy(FFH->id,"FONT "); - strcpy(FFH->reserved,"\0\0\0\0\0\0\0"); - FFH->pnum=1; - FFH->ptyp=1; - FIH=new FontInfoHeader; - if(!FIH) + else if(wys==14&&byo14[cp]==0) { - sprintf(err,"316:Not enough memory for FIH"); - deleteCPI(0); - return 316; + if(byo16[cp]!=0) + wys=16; + else if(byo8[cp]!=0) + wys=8; } - FIH->num_codepages=0; - t = newCP2(CP,h); - if (t!=0) + else if(wys==16&&byo16[cp]==0) { - deleteCPI(1); - return t; + if(byo8[cp]!=0) + wys=8; + else if(byo14[cp]!=0) + wys=14; } - sprintf(err,"0:Ok"); + cury&=0x7; + ramka8(); + ramka14(); + ramka16(); + cpwys(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + + return; +} +void nextCP()// +{ + ++cp; + cp%=FIH->num_codepages; + normCP(); + return; +} +void prevCP()// +{ + cp+=FIH->num_codepages-1; + cp%=FIH->num_codepages; + normCP(); + return; +} + +int delCP() +{ + short i; + if(FIH->num_codepages<=1) + { + sprintf(err,"317:Last codepage"); + return 317; + } + for(i=0;inum_fonts;++i) + { + switch(SFH[cp][i]->height) + { + case 16: + delete SFB16[cp]; + break; + case 14: + delete SFB14[cp]; + break; + case 8: + delete SFB8[cp]; + break; + } + delete SFH[cp][i]; + } + delete CPIH[cp]; + delete CPEH[cp]; + + --(FIH->num_codepages); + for(i=cp;inum_codepages;++i) + { + CPEH[i] = CPEH[i+1]; + CPIH[i] = CPIH[i+1]; + SFH[i][0] = SFH[i+1][0]; + SFH[i][1] = SFH[i+1][1]; + SFH[i][2] = SFH[i+1][2]; + SFB16[i] = SFB16[i+1]; + SFB14[i] = SFB14[i+1]; + SFB8[i] = SFB8[i+1]; + byo16[i] = byo16[i+1]; + byo14[i] = byo14[i+1]; + byo8[i] = byo8[i+1]; + } + CPEH[FIH->num_codepages] = NULL; + CPIH[FIH->num_codepages] = NULL; + SFH[FIH->num_codepages][0] = NULL; + SFH[FIH->num_codepages][1] = NULL; + SFH[FIH->num_codepages][2] = NULL; + SFB16[FIH->num_codepages] = NULL; + SFB14[FIH->num_codepages] = NULL; + SFB8[FIH->num_codepages] = NULL; + byo16[FIH->num_codepages] = 0; + byo14[FIH->num_codepages] = 0; + byo8[FIH->num_codepages] = 0; + + sprintf(err,"0:OK"); return 0; } +void delCP3()// +{ + setcolor(RED); + outtextxy(536,472,"delCP"); + status=delCP(); + if(status!=0) + message("Codepage not deleted",err); + offset(); + cp%=FIH->num_codepages; + new8(); + menu8(); + normCP(); + return; +} -void displayDialog(int color,char *text,int type) +int newF() { - gotoxy(21,13); - char t1[43]="±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; - strcpy(t1+1,text); - t1[strlen(t1)]='±'; - setcolor(BLACK); - outtextxy(152,184,"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"); - outtextxy(152,192,"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"); - outtextxy(152,200,"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"); - outtextxy(152,208,"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"); - setcolor(color); - outtextxy(152,184,t1); - outtextxy(152,192,"± ±"); - outtextxy(152,200,"± ±"); - switch(type) + short h; + if(CPIH[cp]->num_fonts>=3) { - case 2: - outtextxy(152,208,"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±again?(y/n)±"); - break; - case 1: - outtextxy(152,208,"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±anykey±"); - break; - case 0: + sprintf(err,"309:Already 3 fonts in CPIH[%u]",cp); + return 309; + } + h=question("Font height(8,14,16)"); + return newF2(h); +} +int newF2(short h) +{ + switch(h) + { + case 8: + return newF8(cp); + case 14: + return newF14(cp); + case 16: + return newF16(cp); default: - outtextxy(152,208,"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"); - break; + sprintf(err,"310:Wrong height (%u)",h); + return 310; } } - -int message(char *text, char *value, int type) +void newF3()// { - if (type!=2) + setcolor(RED); + outtextxy(336,472,"newF"); + status=newF(); + if(status!=0) + message("Font not created",err); + offset(); + redraw(); + return; +} +int newF8(short CP) +{ + if(byo8[CP]) { - displayDialog(BROWN,text,1); - printf("%s",value); - bioskey(_KEYBRD_READ); - return 0; + sprintf(err,"313:Height 8 already in cp%03u",CPEH[CP]->codepage); + return 313; } - else + if(!(SFH[CP][CPIH[CP]->num_fonts]=new ScreenFontHeader)) { - displayDialog(BROWN,text,2); - printf("%s",value); - int a; - for(;;) - { - a=bioskey(_KEYBRD_READ); - if((a&0xFF)==0x59||(a&0xFF)==0x79) - return 0; - if((a&0xFF)==0x4e||(a&0xff)==0x6e) - return 1; - } + sprintf(err,"316:Not enough memory for SFH[%d][%d]",CP,CPIH[CP]->num_fonts); + return 316; } + if(!(SFB8[CP]=new ScreenFontBitmap8)) + { + sprintf(err,"316:Not enough memory for SFB8[%d]",CP); + delete SFH[CP][CPIH[CP]->num_fonts]; + SFH[CP][CPIH[CP]->num_fonts] = NULL; + return 316; + } + memset(SFB8[CP],0,0x800); + byo8[CP]=1; + SFH[CP][CPIH[CP]->num_fonts]->height=8; + SFH[CP][CPIH[CP]->num_fonts]->width=8; + SFH[CP][CPIH[CP]->num_fonts]->yaspect=0; + SFH[CP][CPIH[CP]->num_fonts]->xaspect=0; + SFH[CP][CPIH[CP]->num_fonts]->num_chars=256; + ++(CPIH[CP]->num_fonts); + offset(); + sprintf(err,"0:OK"); + return 0; } - -inline void question(char *text, char *result) +int newF14(short CP) { - displayDialog(GREEN,text); - scanf("%s",result); + if(byo14[CP]) + { + sprintf(err,"313:Height 14 already in cp%03u",CPEH[CP]->codepage); + return 313; + } + if(!(SFH[CP][CPIH[CP]->num_fonts]=new ScreenFontHeader)) + { + sprintf(err,"316:Not enough memory for SFH[%d][%d]",CP,CPIH[CP]->num_fonts); + return 316; + } + if(!(SFB14[CP]=new ScreenFontBitmap14)) + { + sprintf(err,"316:Not enough memory for SFB14[%d]",CP); + delete SFH[CP][CPIH[CP]->num_fonts]; + SFH[CP][CPIH[CP]->num_fonts] = NULL; + return 316; + } + memset(SFB14[CP],0,0xe00); + byo14[CP]=1; + SFH[CP][CPIH[CP]->num_fonts]->height=14; + SFH[CP][CPIH[CP]->num_fonts]->width=8; + SFH[CP][CPIH[CP]->num_fonts]->yaspect=0; + SFH[CP][CPIH[CP]->num_fonts]->xaspect=0; + SFH[CP][CPIH[CP]->num_fonts]->num_chars=256; + ++(CPIH[CP]->num_fonts); + offset(); + sprintf(err,"0:OK"); + return 0; } - -inline unsigned question(char *text) +int newF16(short CP) { - char temp[256]; - question(text,temp); - return atoi(temp); + if(byo16[CP]) + { + sprintf(err,"313:Height 16 already in cp%03u",CPEH[CP]->codepage); + return 313; + } + if(!(SFH[CP][CPIH[CP]->num_fonts]=new ScreenFontHeader)) + { + sprintf(err,"316:Not enough memory for SFH[%d][%d]",CP,CPIH[CP]->num_fonts); + return 316; + } + if(!(SFB16[CP]=new ScreenFontBitmap16)) + { + sprintf(err,"316:Not enough memory for SFB16[%d]",CP); + delete SFH[CP][CPIH[CP]->num_fonts]; + SFH[CP][CPIH[CP]->num_fonts] = NULL; + return 316; + } + memset(SFB16[CP],0,0x1000); + byo16[CP]=1; + SFH[CP][CPIH[CP]->num_fonts]->height=16; + SFH[CP][CPIH[CP]->num_fonts]->width=8; + SFH[CP][CPIH[CP]->num_fonts]->yaspect=0; + SFH[CP][CPIH[CP]->num_fonts]->xaspect=0; + SFH[CP][CPIH[CP]->num_fonts]->num_chars=256; + ++(CPIH[CP]->num_fonts); + sprintf(err,"0:OK"); + return 0; } -int newCPI() +void prevF()// { - short CP,h; - char temp[51]; - CP=question("First codepage number:"); - h=question("Initial font height(8,14,16,all)"); - if(h!=0&&h!=8&&h!=14&&h!=16) + prex=curx; + prey=cury; + switch(wys) + { + case 8: + if (byo16[cp]!=0) + { + wys=16; + lin16(1); + lit16(1); + ramka16(); + } + else if(byo14[cp]!=0) + { + wys=14; + lin14(1); + lit14(1); + ramka14(); + } + lin8(1); + lit8(1); + ramka8(); + break; + case 14: + if (byo8[cp]!=0) + { + wys=8; + cury%=8; + lin8(1); + lit8(2); + ramka8(); + } + else if(byo16[cp]!=0) + { + wys=16; + lin16(1); + lit16(1); + ramka16(); + } + lin14(1); + lit14(2); + ramka14(); + break; + case 16: + if (byo14[cp]!=0) + { + wys=14; + cury%=14; + lin14(1); + lit14(2); + ramka14(); + } + else if(byo8[cp]!=0) + { + wys=8; + cury%=8; + lin8(1); + lit8(2); + ramka8(); + } + lin16(1); + lit16(2); + ramka16(); + break; + } + cpwys(); + return; +} +void nextF()// +{ + prex=curx; + prey=cury; + switch(wys) { - sprintf(err,"310:Wrong height (%u)",h); - return 310; + case 8: + if(byo14[cp]!=0) + { + wys=14; + lin14(1); + lit14(1); + ramka14(); + } + else if (byo16[cp]!=0) + { + wys=16; + lin16(1); + lit16(1); + ramka16(); + } + lin8(1); + lit8(1); + ramka8(); + break; + case 14: + if(byo16[cp]!=0) + { + wys=16; + lin16(1); + lit16(1); + ramka16(); + } + else if (byo8[cp]!=0) + { + wys=8; + cury%=8; + lin8(1); + lit8(2); + ramka8(); + } + lin14(1); + lit14(2); + ramka14(); + break; + case 16: + if(byo8[cp]!=0) + { + wys=8; + cury%=8; + lin8(1); + lit8(2); + ramka8(); + } + else if (byo14[cp]!=0) + { + wys=14; + cury%=14; + lin14(1); + lit14(2); + ramka14(); + } + lin16(1); + lit16(2); + ramka16(); + break; } - return newCPI2(CP,h); + cpwys(); + return; } - -int newCP() + +int delF() { - short CP,h; - char temp[51]; - if(FIH->num_codepages>=16) + short h; + if(CPIH[cp]->num_fonts<=1) { - sprintf(err,"305:Already 16 codepages in CPI"); - return 305; + sprintf(err,"315:Last font in CPIH[%u]",cp); + return 315; } - CP=question("Codepage number:"); - for(short i=0;inum_codepages;++i) + for(short i=0;inum_fonts;++i) { - if(CP==CPEH[i]->codepage) + if(SFH[cp][i]->height==wys) { - sprintf(err,"314:cp%03u already in CPEH[%u]",CP,i); - return 314; + h=i; + break; } } - h=question("Initial font height(8,14,16,all)"); - if(h!=0&&h!=8&&h!=14&&h!=16) + switch(wys) { - sprintf(err,"310:Wrong height (%u)",h); - return 310; + case 8: + return delF8(h); + case 14: + return delF14(h); + case 16: + return delF16(h); + default: + sprintf(err,"510:%u WT*?",h); + return 510; } - return newCP2(CP,h); } -int newF() +void delF3()// { - short h; - if(CPIH[cp]->num_fonts>=3) - { - sprintf(err,"309:Already 3 fonts in CPIH[%u]",cp); - return 309; - } - h=question("Font height(8,14,16)"); - return newF2(h); + setcolor(RED); + outtextxy(472,472,"delF"); + status=delF(); + if(status!=0) + message("Font not deleted",err); + offset(); + new8(); + menu8(); + normCP(); + return; } - -int otw() +int delF8(short h) { - question("Filename",nazwap); - return otw2(); + short i; + delete SFB8[cp]; + delete SFH[cp][h]; + byo8[cp]=0; + --(CPIH[cp]->num_fonts); + for(i=h;inum_fonts;++i) + { + SFH[cp][i] = SFH[cp][i+1]; + } + SFH[cp][CPIH[cp]->num_fonts] = NULL; + sprintf(err,"0:OK"); + return 0; } - -int zap() +int delF14(short h) { - question("Filename",nazwap); - return zap2(); + short i; + delete SFB14[cp]; + delete SFH[cp][h]; + byo14[cp]=0; + --(CPIH[cp]->num_fonts); + for(i=h;inum_fonts;++i) + { + SFH[cp][i] = SFH[cp][i+1]; + } + SFH[cp][CPIH[cp]->num_fonts] = NULL; + sprintf(err,"0:OK"); + return 0; } -int zmn() +int delF16(short h) { - short CP; - CP=question("Codepage number"); - for(short i=0;inum_codepages;++i) + short i; + delete SFB16[cp]; + delete SFH[cp][h]; + byo16[cp]=0; + --(CPIH[cp]->num_fonts); + for(i=h;inum_fonts;++i) { - if(CP==CPEH[i]->codepage&&i!=cp) - { - sprintf(err,"314:cp%03u already in CPEH[%u]",CP,i); - return 314; - } + SFH[cp][i] = SFH[cp][i+1]; } - CPEH[cp]->codepage=CP; - return 0; + SFH[cp][CPIH[cp]->num_fonts] = NULL; + sprintf(err,"0:OK"); + return 0; } + int main(int argc,char* argv[]) { nullpointers(); @@ -2083,28 +2442,8 @@ int main(int argc,char* argv[]) wys=16; else if(byo14[0]) wys=14; + redraw(); - - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lit8(); - lit14(); - lit16(); - lin8(); - lin14(); - lin16(); - - //iR.x.ax=0x1; - //int86(0x33,&iR,&oR); - //iR.x.cx=0x01; - //iR.x.ax=0x0c; - //iR.x.dx=FP_OFF(inth); - //sR.es=FP_SEG(inth); - //int86x(0x33,&iR,&oR,&sR); maus=setMaus(); if(maus) showMaus(); @@ -2333,621 +2672,99 @@ int main(int argc,char* argv[]) } } if((key&0xFF00)==0x4d00&&any) - { - //w prawo l - pre=lit; - ++lit; - lit&=0xFF; - lit8(); - lit14(); - lit16(); - switch(wys) - { - case 8: - lin8(2); - break; - case 14: - lin14(2); - break; - case 16: - lin16(2); - break; - } - } - } - if ((key&0xFF00)==0x0f00&&any) - { - //tab - if(!tab) - tab=1; - else - tab=0; - switch(wys) - { - case 8: - ramka8(); - break; - case 14: - ramka14(); - break; - case 16: - ramka16(); - break; - } - } - if ((key&0xFF00)==0x5100&&any) - { - //cp++ - ++cp; - cp%=FIH->num_codepages; - prex=curx; - prey=cury; - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - ramka8(); - ramka14(); - ramka16(); - cpwys(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - - } - if ((key&0xFF00)==0x4900&&any) - { - //cp-- - cp+=FIH->num_codepages-1; - cp%=FIH->num_codepages; - - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - ramka8(); - ramka14(); - ramka16(); - cpwys(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - - } - if ((key&0xFF00)==0x4700&&any) - { - //wys-- - prex=curx; - prey=cury; - switch(wys) - { - case 8: - if (byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - else if(byo14[cp]!=0) - { - wys=14; - lin14(1); - lit14(1); - ramka14(); - } - lin8(1); - lit8(1); - ramka8(); - break; - case 14: - if (byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - else if(byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - lin14(1); - lit14(2); - ramka14(); - break; - case 16: - if (byo14[cp]!=0) - { - wys=14; - cury%=14; - lin14(1); - lit14(2); - ramka14(); - } - else if(byo8[cp]!=0) + { + //w prawo l + pre=lit; + ++lit; + lit&=0xFF; + lit8(); + lit14(); + lit16(); + switch(wys) { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); + case 8: + lin8(2); + break; + case 14: + lin14(2); + break; + case 16: + lin16(2); + break; } - lin16(1); - lit16(2); - ramka16(); - break; } - cpwys(); } - if ((key&0xFF00)==0x4f00&&any) + if ((key&0xFF00)==0x0f00&&any) { - //wys++ - prex=curx; - prey=cury; + //tab + if(!tab) + tab=1; + else + tab=0; switch(wys) { case 8: - if(byo14[cp]!=0) - { - wys=14; - lin14(1); - lit14(1); - ramka14(); - } - else if (byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - lin8(1); - lit8(1); ramka8(); break; case 14: - if(byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - else if (byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - lin14(1); - lit14(2); ramka14(); break; case 16: - if(byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - else if (byo14[cp]!=0) - { - wys=14; - cury%=14; - lin14(1); - lit14(2); - ramka14(); - } - lin16(1); - lit16(2); ramka16(); break; } - cpwys(); } - + if ((key&0xFF00)==0x5100&&any) + { + nextCP(); + } + if ((key&0xFF00)==0x4900&&any) + { + prevCP(); + } + if ((key&0xFF00)==0x4700&&any) + { + prevF(); + } + if ((key&0xFF00)==0x4f00&&any) + { + nextF(); + } if ((key&0xFF00)==0x3b00) { - //new CPI - setcolor(RED); - outtextxy(16,472,"new"); - deleteCPI(); - status=newCPI(); - while(status!=0) - { - if (message("CPI not created",err,2)==0) - status=newCPI(); - else - { - break; - //closegraph(); - //deleteCPI(); - //return status; - } - } - any=!status; - if(any) - { - strcpy(nazwap,"new CPI"); - cp=0; - if(byo8[0]) - wys=8; - else if(byo16[0]) - wys=16; - else if(byo14[0]) - wys=14; - cury%=8; - } - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - + newCPI3(); } if ((key&0xFF00)==0x3c00&&any) { - //zapisz - setcolor(RED); - outtextxy(72,472,"save"); - status=zap(); - while(status!=0) - { - if (message("CPI file not saved",err,2)==0) - status=zap(); - else - break; - } - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - cury%=8; - - + zap3(); } - - if ((key&0xFF00)==0x3d00) { - //wczytaj - setcolor(RED); - outtextxy(136,472,"load"); - deleteCPI(); - status=otw(); - while(status!=0) - { - if (message("CPI file not loaded",err,2)==0) - status=otw(); - else - break; - } - any=!status; - cp=0; - if(byo8[0]) - wys=8; - else if(byo16[0]) - wys=16; - else if(byo14[0]) - wys=14; - cury%=8; - - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - + otw3(); } if((key&0xFF00)==0x3e00&&any) { - - //zapisz+system - setcolor(RED); - outtextxy(72,472,"save use"); - status=zap(); - while(status!=0) - { - if (message("CPI file not saved",err,2)==0) - status=zap(); - else - break; - } - if(status==0) - { - sprintf(err,"mode con:cp prep=((%u) %s)",CPEH[cp]->codepage,nazwap); - puts(err); - system(err); - sprintf(err,"mode con:cp sel=%u",CPEH[cp]->codepage); - puts(err); - system(err); - delay(5000); - closegraph(); - initgraph(&kart16,&tryb16,""); - - } - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - cury%=8; - + use3(); } if ((key&0xFF00)==0x3f00&&any) { - //zmiana numeru - setcolor(RED); - outtextxy(256,472,"number"); - status=zmn(); - if(status!=0) - message("Number not changed",err); - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + zmn3(); } if ((key&0xFF00)==0x4000&&any) { - //new font - setcolor(RED); - outtextxy(336,472,"newF"); - status=newF(); - if(status!=0) - message("Fonr not created",err); - offset(); - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - + newF3(); } if ((key&0xFF00)==0x4100&&any) { - //new CP - setcolor(RED); - outtextxy(400,472,"newCP"); - status=newCP(); - if(status!=0) - message("Codepage not created",err); - else - cp=FIH->num_codepages-1; - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - offset(); - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - + newCP3(); } if ((key&0xFF00)==0x4200&&any) { - //delete font - setcolor(RED); - outtextxy(472,472,"delF"); - status=delF(); - if(status!=0) - message("Font not deleted",err); - offset(); - - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - + delF3(); } if ((key&0xFF00)==0x4300&&any) { - //delete CP - setcolor(RED); - outtextxy(536,472,"delCP"); - status=delCP(); - if(status!=0) - message("Codepage not deleted",err); - offset(); - - cp%=FIH->num_codepages; - - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - + delCP3(); } if ((key&0xFF00)==0x4400) { @@ -3006,6 +2823,7 @@ int main(int argc,char* argv[]) lit8(1); lit16(1); lin8(1); + cpwys(); break; case 14: lin14(1); @@ -3013,6 +2831,7 @@ int main(int argc,char* argv[]) lit8(1); lit14(1); lin8(1); + cpwys(); break; } if(klik) @@ -3028,6 +2847,7 @@ int main(int argc,char* argv[]) lit8(1); lit16(2); lin8(1); + cpwys(); break; case 14: lin14(2); @@ -3035,6 +2855,7 @@ int main(int argc,char* argv[]) lit8(1); lit14(2); lin8(1); + cpwys(); break; case 8: lit8(2); @@ -3042,7 +2863,7 @@ int main(int argc,char* argv[]) } } - else if(any&&mausx>=16&&mausx<144&&mausy>=223&&mausy<447&&byo14[cp]) + else if(any&&mausx>=16&&mausx<144&&mausy>=224&&mausy<448&&byo14[cp]) { hideMaus(); mausv=0; @@ -3051,7 +2872,7 @@ int main(int argc,char* argv[]) prex=curx; prey=cury; curx=(mausx-16)/16; - cury=(mausy-223)/16; + cury=(mausy-224)/16; wys=14; tab=0; if(klik) @@ -3076,6 +2897,7 @@ int main(int argc,char* argv[]) lit14(1); lit16(1); lin14(1); + cpwys(); break; case 8: lin8(1); @@ -3083,6 +2905,7 @@ int main(int argc,char* argv[]) lit14(1); lit8(1); lin14(1); + cpwys(); break; } if(klik) @@ -3098,6 +2921,7 @@ int main(int argc,char* argv[]) lit14(1); lit16(2); lin14(1); + cpwys(); break; case 8: lin8(2); @@ -3105,6 +2929,7 @@ int main(int argc,char* argv[]) lit14(1); lit8(2); lin14(1); + cpwys(); break; case 14: lit14(2); @@ -3112,7 +2937,7 @@ int main(int argc,char* argv[]) } } - else if(any&&mausx>=336&&mausx<464&&mausy>=111&&mausy<367&&byo16[cp]) + else if(any&&mausx>=336&&mausx<464&&mausy>=112&&mausy<368&&byo16[cp]) { hideMaus(); mausv=0; @@ -3121,7 +2946,7 @@ int main(int argc,char* argv[]) prex=curx; prey=cury; curx=(mausx-336)/16; - cury=(mausy-111)/16; + cury=(mausy-112)/16; wys=16; tab=0; if(klik) @@ -3146,6 +2971,7 @@ int main(int argc,char* argv[]) lit16(1); lit8(1); lin16(1); + cpwys(); break; case 14: lin14(1); @@ -3153,6 +2979,7 @@ int main(int argc,char* argv[]) lit16(1); lit14(1); lin16(1); + cpwys(); break; } if(klik) @@ -3168,6 +2995,7 @@ int main(int argc,char* argv[]) lit16(1); lit8(2); lin16(1); + cpwys(); break; case 14: lin14(2); @@ -3175,6 +3003,7 @@ int main(int argc,char* argv[]) lit16(1); lit14(2); lin16(1); + cpwys(); break; case 16: lit16(2); @@ -3190,6 +3019,7 @@ int main(int argc,char* argv[]) pre=lit; pret=tab; wys=8; + cury&=0x7; tab=1; lit=((mausy-32)/8)*16+((mausx-176)/8); if (pre==lit) @@ -3203,6 +3033,7 @@ int main(int argc,char* argv[]) lit16(1); lin8(1); lit8(1); + cpwys(); break; case 14: ramka14(); @@ -3211,6 +3042,7 @@ int main(int argc,char* argv[]) lit14(1); lin8(1); lit8(1); + cpwys(); break; case 8: if(!pret) @@ -3230,12 +3062,14 @@ int main(int argc,char* argv[]) ramka16(); ramka8(); lin8(1); + cpwys(); break; case 14: lin14(2); ramka14(); ramka8(); lin8(1); + cpwys(); break; case 8: lin8(2); @@ -3245,7 +3079,7 @@ int main(int argc,char* argv[]) } } - else if(any&&klik&&mausx>=176&&mausx<304&&mausy>=223&&mausy<447&&byo14[cp]) + else if(any&&klik&&mausx>=176&&mausx<304&&mausy>=224&&mausy<448&&byo14[cp]) { hideMaus(); mausv=0; @@ -3253,8 +3087,9 @@ int main(int argc,char* argv[]) pre=lit; pret=tab; wys=14; + cury%=14; tab=1; - lit=((mausy-223)/14)*16+((mausx-176)/8); + lit=((mausy-224)/14)*16+((mausx-176)/8); if (pre==lit) { switch(prew) @@ -3266,6 +3101,7 @@ int main(int argc,char* argv[]) lit16(1); lin14(1); lit14(1); + cpwys(); break; case 8: ramka8(); @@ -3274,6 +3110,7 @@ int main(int argc,char* argv[]) lit8(1); lin14(1); lit14(1); + cpwys(); break; case 14: if(!pret) @@ -3293,12 +3130,14 @@ int main(int argc,char* argv[]) ramka16(); ramka14(); lin14(1); + cpwys(); break; case 8: lin8(2); ramka8(); ramka14(); lin14(1); + cpwys(); break; case 14: lin14(2); @@ -3308,7 +3147,7 @@ int main(int argc,char* argv[]) } } - else if(any&&klik&&mausx>=496&&mausx<624&&mausy>=111&&mausy<367&&byo16[cp]) + else if(any&&klik&&mausx>=496&&mausx<624&&mausy>=112&&mausy<368&&byo16[cp]) { hideMaus(); mausv=0; @@ -3316,6 +3155,7 @@ int main(int argc,char* argv[]) pre=lit; pret=tab; wys=16; + cury&=0xf; tab=1; lit=((mausy-111)/16)*16+((mausx-496)/8); if (pre==lit) @@ -3329,6 +3169,7 @@ int main(int argc,char* argv[]) lit8(1); lin16(1); lit16(1); + cpwys(); break; case 14: ramka14(); @@ -3337,6 +3178,7 @@ int main(int argc,char* argv[]) lit14(1); lin16(1); lit16(1); + cpwys(); break; case 16: if(!pret) @@ -3356,12 +3198,14 @@ int main(int argc,char* argv[]) ramka8(); ramka16(); lin16(1); + cpwys(); break; case 14: lin14(2); ramka14(); ramka16(); lin16(1); + cpwys(); break; case 16: lin16(2); @@ -3375,365 +3219,55 @@ int main(int argc,char* argv[]) { hideMaus(); mausv=0; - //cp+- if(klik&0x01) - ++cp; + nextCP(); else - cp+=FIH->num_codepages-1; - cp%=FIH->num_codepages; - prex=curx; - prey=cury; - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - ramka8(); - ramka14(); - ramka16(); - cpwys(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + prevCP(); } else if(any&&klik&&!prek&&mausx>=192&&mausx<224&&mausy<8) { hideMaus(); mausv=0; - //wys+- - prex=curx; - prey=cury; - switch(wys) - { - case 8: - if(klik&0x1) - { - if(byo14[cp]!=0) - { - wys=14; - lin14(1); - lit14(1); - ramka14(); - } - else if (byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - } - else - { - if (byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - else if(byo14[cp]!=0) - { - wys=14; - lin14(1); - lit14(1); - ramka14(); - } - } - lin8(1); - lit8(1); - ramka8(); - break; - case 14: - if(klik&0x1) - { - if(byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - else if (byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - } - else - { - if (byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - else if(byo16[cp]!=0) - { - wys=16; - lin16(1); - lit16(1); - ramka16(); - } - } - lin14(1); - lit14(2); - ramka14(); - break; - case 16: - if(klik&0x1) - { - if(byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - else if (byo14[cp]!=0) - { - wys=14; - cury%=14; - lin14(1); - lit14(2); - ramka14(); - } - } - else - { - if (byo14[cp]!=0) - { - wys=14; - cury%=14; - lin14(1); - lit14(2); - ramka14(); - } - else if(byo8[cp]!=0) - { - wys=8; - cury%=8; - lin8(1); - lit8(2); - ramka8(); - } - } - lin16(1); - lit16(2); - ramka16(); - break; - } - cpwys(); + if(klik&0x01) + nextF(); + else + prevF(); } else if(klik&&!prek&&mausx<40&&mausy>=472) { hideMaus(); mausv=0; - //new CPI - setcolor(RED); - outtextxy(16,472,"new"); - deleteCPI(); - status=newCPI(); - while(status!=0) - { - if (message("CPI not created",err,2)==0) - status=newCPI(); - else - break; - } - any=!status; - if(any) - { - strcpy(nazwap,"new CPI"); - cp=0; - if(byo8[0]) - wys=8; - else if(byo16[0]) - wys=16; - else if(byo14[0]) - wys=14; - cury%=8; - } - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + newCPI3(); } else if(any&&klik&&!prek&&mausx>=56&&mausx<104&&mausy>=472) { hideMaus(); mausv=0; - //save CPI - setcolor(RED); - outtextxy(72,472,"save"); - status=zap(); - while(status!=0) - { - if (message("CPI file not saved",err,2)==0) - status=zap(); - else - break; - } - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - cury%=8; + zap3(); } else if(klik&&!prek&&mausx>=120&&mausx<168&&mausy>=472) { hideMaus(); mausv=0; - //load CPI - setcolor(RED); - outtextxy(136,472,"load"); - deleteCPI(); - status=otw(); - while(status!=0) - { - if (message("CPI file not loaded",err,2)==0) - status=otw(); - else - break; - } - any=!status; - cp=0; - if(byo8[0]) - wys=8; - else if(byo16[0]) - wys=16; - else if(byo14[0]) - wys=14; - cury%=8; - - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + otw3(); } else if(any&&klik&&!prek&&mausx>=184&&mausx<224&&mausy>=472) { hideMaus(); mausv=0; - //save & use CPI - setcolor(RED); - outtextxy(72,472,"save use"); - status=zap(); - while(status!=0) - { - if (message("CPI file not saved",err,2)==0) - status=zap(); - else - break; - } - if(status==0) - { - sprintf(err,"mode con:cp prep=((%u) %s)",CPEH[cp]->codepage,nazwap); - puts(err); - system(err); - sprintf(err,"mode con:cp sel=%u",CPEH[cp]->codepage); - puts(err); - system(err); - delay(5000); - closegraph(); - initgraph(&kart16,&tryb16,""); - - } - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); - cury%=8; - + use3(); } else if(any&&klik&&!prek&&mausx>=240&&mausx<304&&mausy>=472) { hideMaus(); mausv=0; - //change CP # - setcolor(RED); - outtextxy(256,472,"number"); - status=zmn(); - if(status!=0) - message("Number not changed",err); - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + zmn3(); } @@ -3741,178 +3275,28 @@ int main(int argc,char* argv[]) { hideMaus(); mausv=0; - //new font - setcolor(RED); - outtextxy(336,472,"newF"); - status=newF(); - if(status!=0) - message("Fonr not created",err); - offset(); - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + newF3(); } else if(any&&klik&&!prek&&mausx>=384&&mausx<440&&mausy>=472) { hideMaus(); mausv=0; - //new CP - setcolor(RED); - outtextxy(400,472,"newCP"); - status=newCP(); - if(status!=0) - message("Codepage not created",err); - else - cp=FIH->num_codepages-1; - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - offset(); - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + newCP3(); } else if(any&&klik&&!prek&&mausx>=456&&mausx<504&&mausy>=472) { hideMaus(); mausv=0; - //delete font - setcolor(RED); - outtextxy(472,472,"delF"); - status=delF(); - if(status!=0) - message("Font not deleted",err); - offset(); - - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + delF3(); } else if(any&&klik&&!prek&&mausx>=520&&mausx<576&&mausy>=472) { hideMaus(); mausv=0; - //delete CP - setcolor(RED); - outtextxy(536,472,"delCP"); - status=delCP(); - if(status!=0) - message("Codepage not deleted",err); - offset(); - - cp%=FIH->num_codepages; - - if(wys==8&&byo8[cp]==0) - { - if(byo14[cp]!=0) - wys=14; - else if(byo16[cp]!=0) - wys=16; - } - - else if(wys==14&&byo14[cp]==0) - { - if(byo16[cp]!=0) - wys=16; - else if(byo8[cp]!=0) - wys=8; - } - - else if(wys==16&&byo16[cp]==0) - { - if(byo8[cp]!=0) - wys=8; - else if(byo14[cp]!=0) - wys=14; - } - cury&=0x7; - new8(); - menu8(); - cpwys(); - ramka8(); - ramka14(); - ramka16(); - lin8(); - lin14(); - lin16(); - lit8(); - lit14(); - lit16(); + delCP3(); } else if(klik&&!prek&&mausx>=592&&mausy>=472) diff --git a/CPIED.PRJ b/CPIED.PRJ index eb94ba376ee7c298b8f558d5bd431ca5135925bf..d32e2147e2f7452e374b973179f8f9142036912c 100644 GIT binary patch delta 125 zcmZor`KP?0fP*i6^;;({27fk&I`<&gfXR-`%9|H*=&%X!F@R)TiWnGtg%}tf^K8D$ zXTqp`l#!o-f#LuEZH$u`3mF3#^%?mX-!PnFSk2JGki(z=gbWNk49pByR=u5UC*ZPq ZqJSqO-+vHr4)An!(Q^(6n0!-E9RNgeCrJPR delta 130 zcmeyT+@P|dfP=5SIjWw_0-hhZ*5EkhoI5)d*l@G$T(XvM#rY$M>p d3#6T#13X<_^qd2L#tTYqo*`h!IQfR48UR1)Cb$3q diff --git a/readthis.txt b/readthis.txt index ab2d08c..aab821d 100644 --- a/readthis.txt +++ b/readthis.txt @@ -9,7 +9,7 @@ # ## #### ### # # # # # # # # # # # # # ### ## # # Balthasar Szczepaäski -Edytor napis¢w 1.2a - the cpi editor +Edytor napis¢w 1.2b - the cpi editor ============================================================ @@ -29,7 +29,8 @@ Edytor napis This program is a CPI file editor. It can edit CPI files which are used by DOS to store codepage information. -Compiled with Turbo C++ 3.0 +Compiled with Turbo C++ 3.0. Released under the terms of the +GPL 3 license (see ccopying.txt) ============================================================ @@ -40,23 +41,32 @@ computer* with an IBM-VGA compatible video card and DOS** or Windows*** operating system or a DOS emulator****. **The program should run on any DOS that is not older than - MS-DOS-3.3. It was tested on following systems: - MS-DOS 5.0 - no problems - MS-DOS 7.1 - no problems - FreeDOS 1.0 - no problems - PTS-DOS - a small display error in dialog boxes - -***The program should run without problems on any DOS-based +3.3. It was tested on following systems: + MS-DOS 3.3 - no problems + PC-DOS 3.3 - no problems + MS-DOS 4.0 - no problems + MS-DOS 4.01 - no problems + MS-DOS 5.0 - no problems + MS-DOS 6.0 - no problems + MS-DOS 6.2 - no problems + MS-DOS 6.21 - no problems + MS-DOS 6.22 - no problems + MS-DOS 7.1 - no problems + FreeDOS 1.0 - no problems + FreeDOS 1.1 - no problems + PTS-DOS 6.8 - a small display error in dialog boxes + +***The program should run without problems on any DOS-based version of Windows. It was tested on following systems: Windows 3.11 for workgroups - no problems - Windows 98 SE - no problems + Windows 98 SE - no problems There can be problems in NT-based versions of windows: On windows XP there can be display errors with some video - cards. It was tested on two computers with Windows XP SP3 - and on one there were display errors. Propably, the video - card drivers are responsible for this. + cards. It was tested on computers with Windows XP SP3 and + on some of them there were display errors. Propably, the + video card drivers are responsible for this. On Windows Vista and 7, the system may refuse to launch this program (or any other fullscreen DOS program) or not. @@ -64,9 +74,9 @@ There can be problems in NT-based versions of windows: On 64 bit systems the program will not run. -****The program was tested only on DOSBox 0.63 and there +****The program was tested on DOSBox 0.63 and 0.73 and there were no problems. The previous version of the program (1.0) -did not run on DOSBox 0.63. No other emulators were tested. +does not run on DOSBox 0.63. No other emulators were tested. ============================================================ @@ -110,12 +120,18 @@ The following actions can be performed: *4 a CPI file is saved and used as a parameter to the DOS "mode" command which loads a codepage into the video card - memory. This will not work if mode.com or display.sys are + memory: + + mode con:cp prep=((number) path) + mode con:cp sel=number + + This will not work if mode.com or display.sys are not installed on the system. It will also not work on - Windows XP or newer. DOS will not be able to load the - codepage if the CPI file is bigger than 64KB. Do not use - this option if the codepage is not finished because you - will not be able to read anything you type anymore. + Windows XP or newer or DOS 3.3. DOS will not be able to + load the codepage if the CPI file is bigger than 64KB. Do + not use this option if the codepage is not finished + because you will not be able to read anything you type + anymore. ============================================================ @@ -189,14 +205,18 @@ beta: without entering graphic mode - Fixed a bug that crashed the program when loading a file from a long path -1.2 +1.2a - Added mouse support - +1.2b + - Further optimization of graphic procedures + - Fixed a bug that placed the cursor outside the edited + character when switching between heights with the mouse. + ============================================================ 6. Planned features - - Full FONT.NT file format support + - Saving FONT.NT files - CPX file format support - Exporting codepages to CP files - Importing codepages from CP flies @@ -207,25 +227,24 @@ beta: ============================================================ 7. Known bugs - -none. ============================================================ 8. Files EGAVGA .OBJ 5658 BGI driver compiled to OBJ -CPIED .EXE 107685 The program -CPIED .CPP 70458 Source for the program +CPIED .EXE 101275 The program +CPIED .CPP 60912 Source for the program CPIED .PRJ 4608 Turbo C++ 3.0 project file -READTHIS.TXT 7794 This file +COPYING .TXT 35821 License information +READTHIS.TXT 8443 This file ============================================================ 9. Contact information e-mail: balthasar_s@interia.pl -telefon: +48502745442 + rowerynaksiezycu@gmail.com www: http://www.baltixy.w.interia.pl ============================================================ -- 2.30.2