home *** CD-ROM | disk | FTP | other *** search
-
- ΓòÉΓòÉΓòÉ 1. lxLite User's Guide ΓòÉΓòÉΓòÉ
-
- Dedicated to my little daughter Alice,
-
- born 12 Feb, 1996 at 03:45.
-
-
- Distribution
-
- Starting from version 1.1.9 I at last decided (really I at last realized what
- it really is :-) ) to distribute lxLite under GNU General Public License (GPL).
-
- The program is written exclusively using Virtual Pascal, with use of its
- built-in 32-bit assembler. This is an excellent language which takes full
- advantages of OS/2`s possibilities, is BorlandPascal compatible, and have a
- much more powerful than BP built-in optimizer.
-
- Contents
-
- Introduction
- Features
- Command-line switches
- Configuration file
- Error messages
- Known bugs and limitations
- Thanks...
- lxLite Utility Pack
- Author info
-
- You really should read the "what's new" section which contains many things I
- was too lazy to add to documentation.
-
- Also is available a German version of documentation (although in plain .TXT
- format, and a little out of date - for version 1.1.5).
-
- Also available a short overview in Russian (codepage 866).
-
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
-
- ΓòÉΓòÉΓòÉ 1.1. Author info ΓòÉΓòÉΓòÉ
-
- Andrew Pavel Zabolotny
-
- Born Jan, 25, 1973 in Kishinev, Moldova, I moved around `95 to St. Petersburg,
- Russia. I'm currently working as system programmer at the Information Security
- Center of I.M.I.C.S. (Institute of Modelling and Intellectualization of Complex
- Systems) at the St. Petersburg's State Electrotechnical University.
-
- All my spare time I`m dedicating to my family (esp. to my 1-year-old daughter
- Alice) and to system programming. Most (alas) of my programs I wrote for
- Mess-DOS, but last two years I`m trying to make familiar with the Architecture
- Of Real Operating Systems {tm} :-), particularily that of OS/2, and (sometimes
- :-) I`m writing Small But Very Useful Utilites :-) Perhaps, the most useful of
- them is lxLite - an OS/2 executables compressor, something like LZEXE, PKLITE
- etc in the world of DOS. You can find it (perhaps) on the hobbes.nmsu.edu
- archive in the /os2/archive subdirectory (although I do not agree with
- classifying lxLite as an archiver :-), it is rather a mixture of a system tool
- with a programming tool (since it allows to do a lot of with the structure of
- LX executable modules )
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- To contact me, please write to bit@freya.etu.ru
- or you can return to title page
-
-
- ΓòÉΓòÉΓòÉ 1.2. GNU General Public License ΓòÉΓòÉΓòÉ
-
-
-
- GNU GENERAL PUBLIC LICENSE
-
-
-
-
- Version 2, June 1991
-
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- Preamble
-
- The licenses for most software are designed to take away your freedom to share
- and change it. By contrast, the GNU General Public License is intended to
- guarantee your freedom to share and change free software--to make sure the
- software is free for all its users. This General Public License applies to most
- of the Free Software Foundation's software and to any other program whose
- authors commit to using it. (Some other Free Software Foundation software is
- covered by the GNU Library General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny
- you these rights or to ask you to surrender the rights. These restrictions
- translate to certain responsibilities for you if you distribute copies of the
- software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether gratis or for
- a fee, you must give the recipients all the rights that you have. 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.
-
- We protect your rights with two steps: (1) copyright the software, and (2)
- offer you this license which gives you legal permission to copy, distribute
- and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain that
- everyone understands that there is no warranty for this free software. If the
- software is modified by someone else and passed on, we want its recipients to
- know that what they have is not the original, so that any problems introduced
- by others will not reflect on the original authors' reputations.
-
- Finally, any free program is threatened constantly by software patents. We
- wish to avoid the danger that redistributors of a free program will
- individually obtain patent licenses, in effect making the program proprietary.
- To prevent this, we have made it clear that any patent must be licensed for
- everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and modification
- follow.
-
-
-
- GNU GENERAL PUBLIC LICENSE
-
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-
- 0. This License applies to any program or other work which contains a notice
- placed by the copyright holder saying it may be distributed under the terms of
- this General Public License. The "Program", below, refers to any such program
- or work, and a "work based on the Program" means either the Program or any
- derivative work under copyright law: that is to say, a work containing the
- Program or a portion of it, either verbatim or with modifications and/or
- translated into another language. (Hereinafter, translation is included
- without limitation in the term "modification".) Each licensee is addressed as
- "you".
-
- Activities other than copying, distribution and modification are not covered by
- this License; they are outside its scope. The act of running the Program is
- not restricted, and the output from the Program is covered only if its contents
- constitute a work based on the Program (independent of having been made by
- running the Program). Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute 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 and
- disclaimer of warranty; keep intact all the notices that refer to this License
- and to the absence of any warranty; and give any other recipients of the
- Program a copy of this License along with the Program.
-
- You may charge a fee for the physical act of transferring a copy, and you may
- at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion of it, thus
- forming a work based on the Program, and copy and distribute such modifications
- or work under the terms of Section 1 above, provided that you also meet all of
- these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
- These requirements apply to the modified work as a whole. If identifiable
- sections of that work are not derived from the Program, and can be reasonably
- considered independent and separate works in themselves, then this License, and
- its terms, do not apply to those sections when you distribute them as separate
- works. But when you distribute the same sections as part of a whole which is a
- work based on the Program, the distribution of the whole must be on the terms
- of this License, whose permissions for other licensees extend to the entire
- whole, and thus to each and every part regardless of who wrote it.
-
- Thus, it is not the intent of this section to claim rights or contest your
- rights to work written entirely by you; rather, the intent is to exercise the
- right to control the distribution of derivative or collective works based on
- the Program.
-
- In addition, mere aggregation of another work not based on the Program with the
- Program (or with a work based on the Program) on a volume of a storage or
- distribution medium does not bring the other work under the scope of this
- License.
-
- 3. You may copy and distribute the Program (or a work based on it, under
- Section 2) in object code or executable form under the terms of Sections 1 and
- 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
- The source code for a work means the preferred form of the work for making
- modifications to it. For an executable work, complete source code means all
- the source code for all modules it contains, plus any associated interface
- definition files, plus the scripts used to control compilation and installation
- of the executable. However, as a special exception, the source code
- distributed need not include anything that is normally distributed (in either
- source or binary form) with the major components (compiler, kernel, and so on)
- of the operating system on which the executable runs, unless that component
- itself accompanies the executable.
-
- If distribution of executable or object code is made by offering access to copy
- from a designated place, then offering equivalent access to copy the source
- code from the same place counts as distribution of the source code, even though
- third parties are not compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program except as
- expressly provided under this License. Any attempt otherwise to copy, modify,
- sublicense or distribute the Program is void, and will automatically terminate
- your rights under this License. However, parties who have received copies, or
- rights, from you under this License will not have their licenses terminated so
- long as such parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not signed it.
- However, nothing else grants you permission to modify or distribute the Program
- or its derivative works. These actions are prohibited by law if you do not
- accept this License. Therefore, by modifying or distributing the Program (or
- any work based on the Program), you indicate your acceptance of this License to
- do so, and all its terms and conditions for copying, distributing or modifying
- the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the Program),
- the recipient automatically receives a license from the original licensor to
- copy, distribute or modify the Program subject to these terms and conditions.
- You may not impose any further restrictions on the recipients' exercise of the
- rights granted herein. You are not responsible for enforcing compliance by
- third parties to this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy
- simultaneously your obligations under this License and any other pertinent
- obligations, then as a consequence you may not distribute the Program at all.
- For example, if a patent license would not permit royalty-free redistribution
- of the Program by all those who receive copies directly or indirectly through
- you, then the only way you could satisfy both it and this License would be to
- refrain entirely from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable under any
- particular circumstance, the balance of the section is intended to apply and
- the section as a whole is intended to apply in other circumstances.
-
- It is not the purpose of this section to induce you to infringe any patents or
- other property right claims or to contest validity of any such claims; this
- section has the sole purpose of protecting the integrity of the free software
- distribution system, which is implemented by public license practices. Many
- people have made generous contributions to the wide range of software
- distributed through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is willing to
- distribute software through any other system and a licensee cannot impose that
- choice.
-
- This section is intended to make thoroughly clear what is believed to be a
- consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in certain
- countries either by patents or by copyrighted interfaces, the original
- copyright holder who places the Program under this License may add an explicit
- geographical distribution limitation excluding those countries, so that
- distribution is permitted only in or among countries not thus excluded. In
- such case, this License incorporates the limitation as if written in the body
- of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions of the
- 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 a version number of this License which applies to it and "any later
- version", you have the option of following the terms and conditions either of
- that version or of any later version published by the Free Software Foundation.
- If the Program does not specify a version number of this License, you may
- choose any version ever published by the Free Software Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free programs
- whose distribution conditions are different, write to the author to ask for
- permission. For software which is copyrighted by the Free Software Foundation,
- write to the Free Software Foundation; we sometimes make exceptions for this.
- Our decision will be guided by the two goals of preserving the free status of
- all derivatives of our free software and of promoting the sharing and reuse of
- software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
- ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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.
-
- END OF TERMS AND CONDITIONS
-
-
- Appendix: 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 convey 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) 19yy
-
- 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 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Also add information on how to contact you by electronic and paper mail.
-
- If the program is interactive, make it output a short notice like this when it
- starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision 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, the commands you use may be
- called something other than `show w' and `show c'; they could even be
- mouse-clicks or menu items--whatever suits your program.
-
- You should also get your employer (if you work as a programmer) or your school,
- if any, to sign a "copyright disclaimer" for the program, if necessary. Here
- is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
- This 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 Library General Public
- License instead of this License.
-
-
- ΓòÉΓòÉΓòÉ 1.3. Known bugs and limitations ΓòÉΓòÉΓòÉ
-
-
-
- Known bugs and limitations
-
- Here are a list of executables which failed for some reasons to work packed;
- avoid packing them (lxLite will do it automatically, but if you renamed them
- lxLite will not recognize them).
-
- PMJPEG v1.5. However, even IBM`s REPACK cannot repack it, so I think this
- is because of either a bug in a linker used to generate it (and its
- executable has a strange structure) or a kind of debug protection
- (executable checksum checking?)
- VX-REXX executables. The main body of such executables (REXX ciphered
- code) is simply appended to a small LX stub. Such executables have an
- unknown structure and after lxLite packs its stub they become completely
- obsolete.
- Watcom C & C++ v>=10.0. Seems that Watcom likes to append garbage to LX
- files. These executables are meant for running in both OS/2 and DOS
- sessions and also have a strange structure. ;
- InterCom since it is protected from any kind of tampering.
- \OS2BOOT. OS2LDR expects OS2BOOT to be in NE format.
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Features | Command-line switches | Configuration
- file | Error messages | Thanks... | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.4. Configuration file ΓòÉΓòÉΓòÉ
-
-
-
- Configuration file
-
- The .CFG file format is as simple as possible: it is a plain ASCII text file
- which you can edit using any editor which supports them (almost any). Any
- characters after a semicolumn ';' are ignored, i.e. you can put comments in
- configuration file like this:
-
- ; This is an comment
-
- You can define sections using widely used unix-configuration-file style, i.e.
-
- [section 1]
- section 1 content
-
- [section 2]
- section 2 content
-
- ...
- The word in square brackets is used to identify the configuration. This is an
- example of a configuration entry:
-
- [newStub]
- /ANP:0 /F+ /YDL /YXL /MRN /MLN /U-
-
- As you can see, inside the section you should put any switches just like you do
- on the command line. Recursive /C options are NOT ignored, so you can link one
- configuration to another. Note, however, that lxLite will refuse to load same
- configuration twice to avoid infinite-loop recursion, i.e. "lxLite /c:One
- /c:Two /c:One" will load `One` configuration only ONCE.
-
- Every section can have multiple names, for example:
-
- [newStub ReplaceStub SetNewStub]
- /ANP:0 /F+ /YDL /YXL /MRN /MLN /U-
-
- This section is identified by three identifiers, i.e. /c:newstub,
- /c:replacestub and /c:setnewstub switches will have same effect. If section
- identifier begins with a / (slash) character, it is treated as a special case:
- the text following the slash is treated as a list of file masks on which this
- section will be applied automatically. For example, if we want to remove stubs
- automatically on all .DLL files, we have to write a configuration section like:
-
- [/*.dll]
- /t /zs
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Features | Command-line switches | Error messages |
- Bugs and limitations | Thanks... | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.5. lxLite_de.txt ΓòÉΓòÉΓòÉ
-
- ----------------------------------------------------
- lxLite - ein Packer fuer ausfuehrbare OS/2-Dateien
- ----------------------------------------------------
-
- Widmung: Meiner kleinen Tochter Alice,
- geboren am 12 Feb, 1996 um 03:45.
-
- 0. Version der deutschen Dokumentation
- --------------------------------------
-
- Die deutsche Uebersetzung basiert auf der englischen Dokumentation zu
- lxLite 1.1.5.
-
- 1. Distribution
- ---------------
-
- Dieses Programm ist Freeware. Das heisst, man kann es verbreiten, wie
- man will, ausser fuer den kommerziellen Gebrauch. Kommerzielle Verwendung
- ist nur mit meiner ausdruecklichen Zustimmung erlaubt. Wie man mich
- kontaktieren kann ist in der letzten Sektion dieser Datei zu sehen.
-
- Freeware heisst aber auch, dass es keinerlei Garantie fuer das gibt, was
- das Programm macht, ob es das macht was man erwartet, ob es ueberhaupt
- etwas macht. Ich uebernehme keinerlei Verantwortung fuer irgendeinen
- Schaden, entgangene Profite etc., die durch Fehler dieses Programms (oder
- der Uebersetzung der Dokumentation) verursacht werden.
-
- Wie auch immer, es ist erlaubt, das Programm dazu zu verwenden, um
- jedes, auch jedes kommerzielle Produkt zu verbessern. Und zwar nicht um den
- eigenen Vorteil, sondern um den Vorteil aller armen User, die sich mit
- riesigen Programmdateien herumaergern muessen.
-
- Das Programm ist ausschliesslich in Virtual Pascal 1.0 Beta #003,
- geschrieben, vor allem mit dem eingebauten 32-bit Assembler. Virtual Pascal
- ist eine excellente Sprache, die alle Vorteile und Moeglichkeiten von OS/2
- bedient und unterstuetzt, gleichzeitig Borland Pascal kompatibel ist, und
- einen maechtigen eingebauten Optimierer hat.
-
- Falls du den Source Code von lxLite willst, bitte wende Dich an mich,
- aber du musst mir ganz sagen WARUM du ihn brauchst; Leute, die fremde
- Programme unter eigenem Namen verkaufen wollen, bekommen ihn sicher nicht.
-
- 2. Einfuehrung
- -------------
-
- Ich denke, wir alle sind recht sauer ueber die gewaltige Groesse die
- fast alle modernen Programme haben, die unter OS/2 laufen (fuer WinDOS gilt
- allerdings das gleiche), ohne oft entscheidend mehr zu koennen als
- Programme frueherer Zeiten. Ich verstehe nicht, warum sie so gross sind,
- weil die meisten Compiler, sogar IBM CSet generieren Code in moderaten
- Groessen.
-
- Nehmen wir als Beispiel das allseits bekannte MultiMaint. Was um alles
- in der Welt macht das Ding in einer 700K grossen EXE-Datei? Ich verstehe es
- nicht. Dazu kommt noch, warum wird die beinahe gleiche EXE-Datei noch
- doppelt und dreifach dazugepackt (Ich meine MultiSafe und IniMaint, die mit
- MultiMaint daherkommen). Das Programm ist ja ganz nett und es macht seine
- Arbeit ganz gut, aber fuer diese Arbeit ist es einfach zu gross. OS/2
- Kernel haben etwa den gleichen Umfang. Wo ist da die Relation? Ich kann
- (und will) es mir einfach nicht leisten so einen grossen Haufen Mist auf
- meine Platte zu laden, also habe ich MultiMaint & Co. wieder gekuebelt. Zu
- Dumm fuer deren Autoren.
-
- lxLite ist ein Workaround fuer dieses Problem. Programmdateien kann man
- packen, sie nehmen dann nur noch den halben Platz ein, und machen noch
- immer den glichen Job. Dummerweise braucht es auch den gleichen Platz im
- Speicher - das ist die Schuld des Autors.
-
- Soviel ich weiss, gibt es fuer OS/2 nur ein Programm, das etwas
- Aehnliches macht REPACK von IBM (EWS?). Aber vergleichen mit lxLite erzeugt
- es groessere Dateien, obwohl es den gleichen Algorithmus verwendet. Zum
- Beispiel, COURIER.FON aus OS/2 Warp Build 8.192 wird von REPACK zu 44K, von
- lxLite aber in 34K gepackt. Spuer den Unterschied! BTW, LINK386+Ressource
- Compiler compilieren COURIER.FON auch in ein 44K-Datei. Daher denke ich,
- dass das sie eine gemeinsame Library verwenden.
-
- Ich komprimierte alle meine Programmdateien (inklusive aber nicht nur
- ?:\os2\*.exe, ?:\os2\dll\*.* und ?:\os2\dll\ibmnull;laserjet) und mein
- System ist nach wie vor stabil. Ein lxLite Benutzer (Pavel Roskin) hat
- festgestellt, dass lxLite sogar os2krnl komprimiert:-) Sehr angenehm vor
- allem fuer eine einzelne Bootdiskette [Anmerkung d. Uebersetzers: Es
- stimmt].
-
- 3. Features
- -----------
-
- lxLite komprimiert die Dateien auf die gleiche Art wie LINK386 es tut.
- Es gibt keine andere Moeglichkeit gepackte Programmdateien unter OS/2 zu
- implementieren, als die zwei, die OS/2 Warp (oder die eine die 2.x) kennt.
- So, hier ist eine kurze Beschreibung dieser beiden Algorithmen:
-
- 1. Run-length packing. Das ist im Prinzip die gleiche Methode, wie sie
- Microsoft C fuer DOS verwendet. Das Ergebnis ist sehr SCHLECHT, weils sich
- Programmdateien nicht fuer die Pack-Methode eignen. Zum Beispiel, PCX
- Dateien werden auf die gleiche Art gepackt.
-
- 2. Eine Art Lempel-Ziv Algorithmus. Lempel-Ziv ist die Methode, die
- beinahe alle DOS-EXE Packer verwenden - LZEXE, PKLITE, PGMPAK etc. Die
- Methode die fuer ausfuehrebare OS/2 Dateien standardisiert ist, ist IMHO
- nicht die effektivste. Dazu kommt noch, dass OS/2-Programmdateien einen
- anderen Ladealgorithmus haben als DOS-EXE-Dateien, Teile von
- OS/2-Programmdateien koennen auch nur geladen werden, wenn sie gebraucht
- werden. Deshalb kann ein Lempel-Ziv Woerterbuch nicht ueber eine einzelne
- Page (4096 Bytes) hinausgehen. Folglich sind die Resultate auch nicht so
- gut, wie sie theoretisch sein koennten.
-
- lxLite kann beide Methoden verwenden, sowohl zum Packen, als auch zum
- Entpacken. Im Allgemeinen ergibt die zweite Methode die besseren Resultate,
- aber moeglicherweise (?) gibt es Dateien fuer die die erste besser ist. Aus
- diesem Grund werden defaultmaessig beide Methoden angewendet, die mit dem
- kleineren Ergebnis gewaehlt. lxLite kann auch benutzt werden, um Dateien zu
- entpacken, die bereits komprimiert sind, sei es mit mit lxLite, LINK386
- oder REPACK von IBM.
-
- Was fuer Dateien koennen nun mit lxLite gepackt werden? Das LX Format
- wird unter OS/2 beinahe ueberall verwendet: Beinahe alles ist im LX format.
- Nicht nur EXE-Dateien, sondern auch .DLL, .PDR, .QPR, .DRV, .FON,
- .SYS-Dateien koennen mit lxLite gepackt werden. Sogar die VDDs (Virtual
- Device Drivers) in \OS2\MDOS koennen damit gepackt werden. Praktisch kann
- man lxLite auf jedes Datei loslassen: Wenn es kein LX ist, wird lxLite es
- nicht anruehren.
-
- Es ist also moeglich, den ganzen \OS2\*\ zu komprimieren, man bekommt
- jede Menge Extraplatz ohne irgendwelchen Overhead! Die Dekompressionszeit
- wird durch die verkuerzten Ladezeiten der verkleinerten Dateien von der
- Platte bei weitem aufgewogen. Also, Reboot von einer Diskette (eventuell
- von den beiden Installationsdisketten und dann F3 waehlen, dann das
- entsprechende Laufwerk waehlen, wo das installierte OS/2 liegt. Dann ist
- folgendes beim Command prompt einzugeben:
-
- \[path]\lxLite os2\*.exe os2\dll\*.* os2\dll\ibmnull\*.drv
-
- und so weiter. So koennen auch die Dateien, welche zur Laufzeit
- normalerweise gesperrt (EXE,DLL) sind, problemlos gepackt werden.
-
- lxLite Version 1.00 und hoeher ist sogar in der Lage Dateien, die gerade
- benutzt werden, zu packen. In diesem Fall kann warnt lxLite und fragt nach
- ob es das Modul auslassen oder durch seine gepackte Version ersetzen soll.
- Grundsaetzlich ist das ersetzen auch so kein Problem, nur muss man im
- Hinterkopf behalten, dass das Original bereits im Speicher sitzt, und so
- auch jede Menge Platz im SWAPPER.DAT auffressen. Ein Reboot sobald wie
- moeglich ist daher immer eine gute Idee.
-
- Versionen von lxLite ueber 1.00 gibt es in zwei verschiedenen
- EXE-Dateien: lxLite.exe ist die normale Version fuer OS/2 v2.99, Warp und
- hoeher. Die andere, namens lxLite2x.exe ist fuer die aelteren 32 bit
- Versionen von OS/2 (i.e. 2.x, NICHT 1.x weil unter 1.x gab es das LX Format
- noch nicht). Als OS/2 Warp User kann man es getrost loeschen.
-
- Version 1.1.0 und Hoeher erkennen Programme, die Daten nach der eigent-
- lichen LX-Struktur stehen (i.e. was auf DOS overlay data heisst).
- Watcom`s gebundene Programme (wie WCC.EXE Versionen >= 10.0) und Watcom
- Visual Rexx Programme haben so eine Struktur. In diesem Fall erzeugt
- lxLite eine Warnung und ersucht um Bestaetigung, ob ein solches Programm
- wirklich gepackt werden soll. Es ist SEHR empfehlenswert, dass zuerst eine
- Kopie von diesem Programm gemacht wird, bevor man es zu packen versucht,
- denn die Chance, dass es danach nicht mehr geht, ist sehr hoch. Das
- deshalb, weil lxLite (natuerlich) keine (prinzipiell moeglichen) Pointer
- innerhalb des Programms, die auf Daten, die an das Programm gebunden sind
- (wie zum Beispiel VX-REXX Programme), veraendert.
-
-
-
-
- 4. Optionen
- -----------
-
- Es gibt jede Menge Optionen in lxLite. Ich liebe Optionen einfach :-)
- Deshalb kann man bei lxLite beinahe alles und jedes konfigurieren. Um den
- User vor allzuviel Konfiguration zu schuetzen, unterstuetzt lxLite eine
- einzelne Konfigurationsdatei, in der gleich einige Konfigurationen
- mitgeliefert ('factory defaults') sind. Sie sind weiter unten aufgelistet:
- ---------------------------------------------------------------------------
-
- DEFAULT (wird standardmaessig geladen): DEFAULT ist eine `Arbeitskonfigura-
- tion'. Alle Parameter sind auf maximale Kompression gesetzt. Die Er-
- zeugung von .BAK Dateien ist abgeschaltet. Beachte, dass diese
- Konfiguration IMMER geladen wird, bevor irgendwelche andere Optionen
- wirksam werden, sogar die /C{#} Option wird ausgefuehrt NACHDEM die
- DEFAULT- Konfiguration geladen Worten ist.
-
- FAST: Niedrigste Kompressionsrate, kuerzeste Ladezeiten. Wenn man IBM
- glaubt, werden Programmdateien schneller geladen, wenn Datenobjekte
- innerhalb der Datei an Sektorgrenzen (512 Bytes) ausgerichtet werden.
- Ich kann eigentlich keinen Unterschied feststellen, daher: Selber
- ausprobieren! Vorkomprimierte Daten werden nicht de-komprimiert und
- wieder re-komprimiert.
-
- FAST2: Packt ein bisschen besser, aber langsamer. Ladezeiten sind so
- schnell wie bei CFG#1.
-
- VER2X: Optimal fuer pre-Warp Versionen von OS/2. Versionen vor Warp (3.0)
- wissen nichts von der Lempel-Ziv (/EXEPACK:2) Methode. Programme sollten
- nicht mit Lempel-Ziv gepackt werden, falls die Moeglichkeit besteht,
- dass sie unter OS/2 2.xx (ausser 2.99) laufen sollen.
-
- FAILSAFE: Lempel-Ziv packen ist eingeschaltet. Ein fehlersichere Konfigura-
- tion. Alle Daten werden genau wie von LINK386 geschrieben, deshalb sind
- die Dateien etwas groesser als bei der DEFAULT-Konfiguration. Nur fuer
- WARP (oder hoeher) und 2.99!
-
- MAX: Beste Kompressionsrate. SEHR LANGSAM! Wird wohl selten gebraucht wer-
- den.
-
- NEWSTUB: Das ist eine spezielle Konfiguration mit der man den DOS-Stub in
- LX Programmen durch einen anderen ersetzen kann, ohne irgendetwas
- anderen zu veraendern. Du musst einen Dateinamen fuer den neuen Stub
- angeben - diese Konfiguration teilt lxLite mit, dass es alte, gepackte
- Objekte nicht entpackt und unkomprimierte Objekte nicht packt.
-
- MINSTUB: Diese Konfiguration ist mit NEWSTUB verbunden und ersetzt durch
- den kleinstmoeglichen Stub vom Typ `say-error-and-exit`. Kleiner gehts
- nimmer (glaub ich zumindest), ausser du kuerzt die Fehlermeldung.
-
- VDMSTUB: Diese Konfiguration befiehlt lxLite, den vorgefundenen Stub durch
- einen`run-from-VDM`-Type zu ersetzen. Dieser ist auch so kurz, wie
- moeglich:-). Bitte die Beschreibung der /T{#} Option fuer weitere
- Details durchlesen.
-
- INFO: Diese Konfiguration verwenden, um an Informationen ueber die
- Programmdatei zu erhalten ohne es neu zu schreiben (siehe auch Option
- /V+)
-
- ---------------------------------------------------------------------------
-
- Um eine spezifische Konfiguration zu verwenden, ist lxLite mit /C# als
- Parameter aufzurufen, wobei # der Name der Konfiguration ist. Die Einstel-
- lungen sind in der Datei lxLite.CFG im gleichen Verzeichnis, in dem sich
- lxLite.EXE befindet. Kuemmere dich nicht um Pfade, lxLite wird sein .CFG
- schon finden. Beispiel: Um die Konfiguration `max` zu verwenden, starte
- lxLite /cMax.
-
- Fuer eine detailierte Beschreibung des .CFG-Dateiformats, lies die ueber-
- naechste Sektion.
-
- Nun kommt eine detaillierte Erklaerung darueber was jeder einzelne Switch
- tut. Jeder Switch, der das '+'- oder '-'-Zeichen akzeptiert (um Aktion ein-
- oder auszuschalten) kann auch ohne Zeichen benutzt werden, das heisst dann
- halt '+'. Das heisst z.B., /V+ ist gleich wie /V.
-
- /A{P|S|N{P|S}}
- setzt die Ausrichtungsmethode (Alignment) fuer das erste und die
- weiteren Objekte. Das erste Objekt kann man auf [P]age shift, [S]ector
- oder [N]o boundary ausrichten. Die letzte Option (No boundary) wird von
- LINK386 niemals benutzt, aber es funktioniert, und das LX Format erlaubt
- es. Alle Objekte ausser dem ersten MUeSSEN zumindest auf PageShift
- boundary ausgerichtet sein. PageShift ist ein Wert, der im LX Header
- spezifiziert ist. Um ihn neu zu definieren, verwende die /R# Option.
-
- /B{+|-}
- Das Umbenennen der Originaldatei in .BAK ein- (+) oder ausschalten (-).
- Beachte bitte, dass das eine BETA-Version ist - deshalb sind .BAK
- Dateien standardmaessig eingeschaltet.
-
- /C{#}
- Verwenden der Konfiguration mit ID = #. Die zwei vordefinierten
- Konfigurationsnamen sind "DEFAULT" und "UNPACK". Die Erste wird immer
- geladen, wenn lxLite startet und die Zweite wird benutzt wenn die /X+
- Option angegeben wird (NICHT gleichbedeutend mit /cUnpack).
-
- /D{#}
- Ausschliessen[D]e Dateimaske. Alle Dateien die zu einer der angegebenen
- Dateimasken passen, werden von lxLite uebergangen. Alle Dateimasken
- muessen durch Doppelpunkte (:) voneinander getrennt sein (weil ein :
- nicht Teil einer Maske sein kann). Zum Beispiel wird /D*.zip:*.arj:*.rar
- lxLite daran hindern .zip, .arj and .rar Dateien zu bearbeiten.
- Standardmaessig (/Cdefault) enthaelt eine Liste aller Progreammdateien,
- von denen bekannt ist, dass sie nicht richtig gepackt werden koennen.
- Mehrere /D-Switches hintereinander werden addiert, daher ist /D*.zip
- /D*.arj /D*.rar das gleiche wie das obige Beispiel. Um die Liste zu
- loeschen ist einfach /D zu verwenden.
-
- /F{+|-}
- Erzwungenes repacking. Ist zu verwenden um die Meldung `already
- processed` zu uebergehen, i.e. wenn lxLite denkt, dass die Datei schon
- bearbeitet wurde, das aber in Wirklichkeit nicht der Fall war. Das
- passiert normalerweise nicht, kann aber passieren, wenn man versucht
- einen Stub durch einen anderen Stub derselben Groesse zu ersetzen, und
- zwar bei einer bereits komprimierten Datei.
-
- /G[X|D|S]{#}
- e[X]tra / [D]ebug / [S]tub Daten werden in die spezifizierte Datei
- [G]eschrieben. Wenn lxLite eine LX Datei findet, die solche Daten
- enthaelt, und man diese Daten verwerfen (oder ersetzen bei einem
- Stub) will, wird lxLite sie in die spezifizierte Datei stellen, bevor
- sie verworfen werden. Die {#} Komponente kann auch eine Dateimaske sein,
- sodass man Daten in Dateien mit demseleben Namen, aber einem anderen
- Extender schreiben kann. Zum Beispiel /GD*.dbg teilt lxLite mit, dass es
- zu verwerfende Debug-Informationen in Dateien mit demselben Namen aber
- der Endung ".dbg" schreiben soll; der switch /GS*.stub.$s$ auf die Datei
- "myfile.exe" schreibt den Stub in die Datei "myfile.stub.$s$". Siehe
- auch die /O Option.
-
- /I{+|-}
- Zwingt (+) lxLite dazu, mit Idle Prioritaet zu laufen. Das heisst, es
- arbeitet nur, wenn keine andere Aktivitaet im System herrscht (d.h. es
- wartet auf Tasten und Mausbewegungen). Das ist meiner Meinung nach am
- besten, da lxLite so im Hintergrund laufen kann und die Performance
- beinahe ueberhaupt nicht beeinflusst. Nur wenn man eine ungezogene
- DOS-Box laufen hat, die sich alle CPU-Zeit schnappt, bleibt lxLite
- stehen. Wenn lxLite nun mit /I- gestartet wird aendert es seine
- Prioritaet nicht auf Idle, und daher mit einer bestimmten Prioritaet
- (z.B. via PRIORITY.EXE) gestartet werden.
-
- /L{#}
- Instruirt lxLite ein Logfile anzulegen. Es enthaelt nur die Dateien, die
- lxLite auch bearbeitet, uebergangene Dateien werden hier nicht aufgenom-
- men. wenn kein Name angegeben ist, wird lxLite.log im Verzeichnis in
- dem sich auch lxLite.exe befindet verwendet. Neben dem Dateinamen wird
- die Anfangs- und Endgroesse und die Probleme (falls welche auftraten).
-
- /M{R{N|1|2|3}|L{N|1}}
- Setzt die Kompressionsmethode und -parameter. Das zweite Zeichen
- definiert die Methode, die verwendet werden soll: `R` steht fuer
- Run-Length (/EXEPACK:1) und 'L' fuer Lempel-Ziv (/EXEPACK:2). Das dritte
- Zeichen ist der Kompressionslevel, der mit der Methode erreicht werden
- soll; Falls N spezifiziert wird, ist die Methode abgeschaltet. Drei
- Levels gibt es fuer die Run-Length-Kompression. Der Level 1 ist der
- schnellste. Er sucht nur nach 1-Zeichen Strings. Zum Beispiel, ein
- 'AAAAAAAA' String wird erkannt und zu 8, 1, 'A' gespeichert, waehrend
- ein 'ABABABAB' String unkomprimiert gespeichert wird. Level 2 erkennt
- Strings jeder Laenge bis 16 Zeichen. Das Beispiel von oben wird zu
- 4,2,'AB' kodiert. Das ist die Standardeinstellung fuer die meisten
- 'Factory`-Konfigurationen. Und als letztes, der dritte Level sucht nach
- allen Strings jeder Laenge bis zu einen halben Page-Laenge (= 2048).
- Diese Kompressionsmethode ist SEHR langsam und ergibt selten echte
- Ergebnisse, man sollte sie nur verwenden wenn man sie wirklich braucht.
- Der Lempel-Ziv Algorithmus kann nur entweder abgeschaltet (/MLN) oder
- eingeschaltet (/ML1) sein. Wenn er eingeschaltet ist, sucht er nach al-
- len Matches unter Verwendung einer ziemlich schnellen Hash-Tabelle, des-
- halb gibts keinen Grund die Kompression abzustufen.
-
- /O{X|D|S}{+|-}.
- [O]utput e[X]tra/[D]ebug/[S]tub Daten immer (+) oder nur wenn verworfen
- (-). Wenn es abgeschaltet ist (/O-, Standard) arbeitet der /G Switch
- wie vorher, i.e. Daten werden nur geschrieben, wenn sie in der Quellda-
- tei verworfen werden sollen. Wenn die /O+ Option benutzt wird, werden
- die Daten immer geschrieben (wenn die entsprechende Dateimaske in /G
- Option angegeben wurde). Falls {X|D|S} nicht angegeben wird, gilt die
- Option fuer allen Arten von Daten (Extra,Debug,Stub) (i.e. /O+ schaltet
- das Feature fuer alle X/D/S Daten ein, /O- schaltet es fuer alle ab).
-
- /P{+|-}
- Ein- (+) oder ausschalten (-) einer Pause vor jeder Datei. Das Programm
- zeigt den Namen der Datei, die als naechstes gepackt werden soll, und
- ermoeglich eine Auswahl, ob sie bearbeitet oder in Ruhe gelassen werden
- soll.
-
- /Q
- Alle Konfigrationsoptionen abfragen. Im Prinzip ist das ein buntes
- Listing der lxLite.cfg Datei :-) Andere Optionen falls vorhanden, werden
- ignoriert.
-
- /R{#}
- [R]e-align (ausrichten) der Pages auf eine spezielle Boundary. (#) muss
- eine Potenz von 2 sein. Diese Option ist analog zu LINK386`s /ALIGN:
- Switch. Viele Programmierer kuemmern sich nicht darum, dass das /A:
- standardmaessig auf eine Boundary von 512 (ein Sektor) gesetzt ist und
- richten jede Page der ausfuehrbaren Module auf 512 Byte aus. Das
- Ergebnis ist ein Haufen unbenutzter Platz innerhalb der Programmdatei.
- Man kann nun solche Dateien mit einer anderen /ALIGN: Option neu linken.
- Standardmaessig ist /R:4. Um lxLite zu zwingen sich wie LINK386, muss
- man /R:512 verwenden. Das ist equivalent zu /ASS :-) .
-
- /S{+|-}
- Zeigen (+) oder nicht zeigen (-) der aktuellen Konfiguration. Das ist
- ganz brauchbar, um mal zu schauen welche Einstellungen in der CFG-Datei
- gespeichert sind, besonders bei verketteten Konfigurationen (siehe
- weiter unten). Beispiel: lxLite /CDEFAULT /S zeigt die
- standardmaessigen Einstellungen.
-
- /T{#}
- Die mit # spezifizierte Datei als neuen DOS-Stub verwenden. Ein DOS-Stub
- ist eine kleine DOS-.EXE-Datei, die in eine OS/2`s LX-Datei gelinked
- wird, damit das Programm eine Fehlermeldung ausgibt, wenn es von DOS aus
- gestartet wird. Normalerweise sieht das etwa folgend aus:
-
- Dieses Programm laeuft nur unter OS/2
-
- Mit lxLite kommen 2 DOS-Stub-Programme mit: stub_min.bin und
- stub_vdm.bin. Der erste ist ein Standard-`Schreib geht nicht und Ende`
- Typ, aber er ist etwas kleiner als die ueblichen DOS-Stub-Programme die
- von den ueblichen Linkern erzeugt werden. Der zweite ist ein Stub, der
- eine neue OS/2-Session startet und das Programm daraus startet. Falls
- OS/2 nicht gefunden wird, die uebliche Fehlermeldung produziert.
- Standardmaessig laesst stub_vdm.bin OS/2 den Sitzungstyp bestimmen.
- Alternativ dazuy, kann man den Sitzungstyp auch in stub_vdm.bin
- festlegen. Dafuer braucht man einen Hexeditor - man muss nach dem String
- `SesType->' im Stub suchen und das Byte, das unmittelbar nach dem Pfeil
- kommt (->) durch den gewuenschten Sitzungstype ersetzen, wobei folgende
- Tabelle gilt:
-
- 00 - OS/2 session manager determines type (default)
- 01 - OS/2 full-screen session
- 02 - OS/2 windowed session
- 03 - PM application
- 04 - VDM full-screen session
- 07 - VDM windowed session
-
- /U{+|-}
- Ein- (+) oder ausschalten (-) des Entpackens einer Datei vor dem Packen.
- lxLite weiss wie man beide der beschriebenen Methoden zum Entpacken
- verwendet, deshalb ist die Option standardmaessig ist eingeschaltet.
- Ausschalten ist nur dann sinnvoll, wenn Zeit gespart werden soll.
-
- /V{+|-}
- Verbose (zeigt ein ganzen Haufen Dateiinformationen) Das ist der
- Schalter fuer Neugierige:-) Mit /V+ zeigt lxLite ein paar Informationen
- ueber die bearbeitete Datei an (um komplette Information ueber .LX
- Dateien zu bekommen, rate ich jedem exeHdr.EXE aus dem OS/2 Programmer`s
- Toolkit zu verwenden).
-
- /W{+|-}
- Ein- (+) oder ausschalten (-) ob das Ergebnis des Packens auf die Platte
- geschrieben werden soll. Standardmaessig ist es eingeschaltet (nona!),
- aber du kannst es ausschalten falls du die Informationen ueber /V+
- anschauen willst, ohne die Datei neu zu packen und frisch zu schreiben.
- Diese Option kann auch fuer debugging der Optionen nuetzlich sein.
-
- /X{+|-}
- e[X]pandieren (+) oder Packen (-) der uebergebenen Dateien. Diesen
- Switch verwendet man, um Dateien zu entpacken. lxLite kann sowohl
- Dateien, die es selbst komprimiert hat, als auch solche, die von anderen
- Programmen mit den Standardmethoden gepackt wurden. (i.e. Resource
- Compiler, LINK386, REPACK). /X- ist nicht identisch mit der /cUnpack
- Option.
-
- /Z{#}
- Diese Option setzt den `threshold` fuer lxLite und hilft so
- festzustellen, ob eine Stub ein `dummy` ist oder ob er eine spezielle
- Funktion hat. Es gibt einige Programme (zum Beispiel, \os2\xdfloppy.exe)
- die sowohl unter DOS als auch unter OS/2 laufen - in solchen Programmen
- ist die DOS Executable in der OS/2` LX als ein DOS stub implementiert.
- Standardmaessig (wenn man einfach /Z benutzt) lxLite haelt jeden Stubs
- der groesser als 1024 Bytes ist, fuer einen funktionellen, und daher hat
- die /T{#} Option auf diese keinen Effekt.
-
- /?,/H
- Zeigt eine kurze Hilfe an. Diese ist ganz brauchbar, wenn man einen
- Switch aus der ganzen Liste vergessen hat:-)
-
- ---------------------------------------------------------------------------
- Das .CFG Dateiformat ist so simpel wie moeglich: Es ist eine reine ASCII
- Textdatei, welche mit jedem beliebigen Texteditor bearbeitet werden kann.
- Jedes Zeichen nach einem Strichpunkt ';' wird ignoriert, i.e. damit koennen
- Kommentare in die Konfigurationsdatei eingesetzt werden:
-
- ; Diese Zeile ist ein Kommentar
-
- Jede Zeile, die mit einem Wort und einem Doppelpunkt beginnt (z.B.:
- "Wort:") wird als einzelne Konfiguration behandelt. Das Wort identifiziert
- die Konfiguration.
-
- Das ist ein Beispiel fuer einen Konfigurationseintrag:
-
- FAILSAFE: /APP /B- /G+ /R4 /MR2 /ML1 /P- /U+ /V-
-
- Wie man sieht stehen nach dem Doppelpunkt beliebige Switches, wie man sie
- auch in der Kommandozeile nach lxLite schreiben wuerde. Rekursive /C
- Optionen werden nicht ignoriert, so dass man mehrere Konfigurationen
- aneinander binden kann, aber die /C Option wird als letztes verarbeitet,
- das heisst von zwei ueberlappenden Optionen wird nur die letzte effektiv
- sein. Als Beispiel:
-
- here: /app /b- /g+
- da : /ass /b+ /p+ /chere
-
- "lxLite /cda " ist also gleichbedeutend mit "lxLite /app /b- /p+ /g+". Man
- beachte, dass lxLite auch weitere Aufrufe auf dieselbe Konfiguration
- ignoriert, um unendliche Schleifen zu vermeiden. Das bedeutet, "lxLite
- /cOne /" wird die `One` Konfiguration nur EINMAL laden.
-
- 5. Fehlermeldungen
- ------------------
-
- Wie die allermeisten normalen Programme erzeugt lxLite manchmal
- Fehlermeldungen :-) Manche von Ihnen erscheinen in aehnlichen Situationen
- haben aber unterschiedliche Ausloeser. Hier ist eine kurze Liste der
- haeufigsten Fehler:
-
- * Invalid Konfiguration Datei format:
- Ungueltiges Format der Konfigurationsdatei. Selbsterklaerend:-)
-
- * Error reading Konfiguration Datei:
- Diese Meldung wird nur generiert, wenn die Konfigurationsdatei phy-
- sisch nicht lesbar ist. Das Programm erzeugt keine Fehlermeldung falls
- die Konfigurationsdatei einfach fehlt.
-
- * Error writing Konfiguration Datei:
- Fehler beim Schreiben der Konfigurationsdatei. Selbsterklaerend:-)
-
- * Error reading executable
- Diese Meldung wird generiert, wenn die Programmdatei physisch nicht
- lesbar ist.
-
- * error writing executable
- Diese Meldung wird generiert, wenn die Programmdatei nicht mehr auf
- die Platte geschrieben werden kann. Das kann dann passieren, wenn auf
- der Platte zuwenig Platz ist, lxLite selbst ueberprueft das nicht.
-
- * invalid executable file format
- Die Datei ist nicht vom Format [L]inear E[x]ecutable. Bei EXE-Dateien
- kann diese Meldung auftreten, wenn sie im alten, '[N]ew [E]xe
- (bwhahaha)' Format sind oder eine DOS-EXE-Datei oder eine WinDOS- EXE-
- Datei.
-
- * unsupported executable format revision
- Diese Meldung wird generiert (vielleicht:-), wenn die Programmdatei
- eine andere Dateiformatrevision hat als 0. Da OS/2 Warp normalerweise
- nur mit Revision 0 arbeitet, duerfte dieser Fehler normalerweise nie
- auftreten.
-
- * invalid word/dword ordering in executable
- Die Datei verwendet die 'little-endian' Byte order. Wahrscheinlich ist
- sie nicht fuer eine Intel-Plattform-Maschine gedacht.
-
- * executable target ist an unsupported CPU type
- Das kann passieren, falls die Ziel CPU eine andere als 286, 386, 486
- oder P5 ist.
-
- * executable target ist an unsupported OS
- Das heisst, dass die Programmdatei nicht fuer OS/2 ist. WinDOS 95
- verwendet ein aehnliches Format, aber seine Kennung ist nicht LX
- sondern LE, daher sollte es normalerweise eine 'invalid format'
- Meldung geben.
-
- * unknown entry bundle type in executable
- * unknown page flags in executable
- * invalid object page detected in executable
- Diese alle bedeuten, dass lxLite etwas ueber die interne Struktur nicht
- versteht. Ich bitte um Benachrichtigung, falls jemand Dateien findet
- bei denen diese Fehlermeldungen auftreten.
-
- * nicht enough memory to load executable
- Ich glaube nicht, dass dieser Fehler unter OS/2 auftreten kann:-) Eher
- wird eine 'Kein Platz mehr im SWAPPER.DAT' Meldung auftauchen. Wie
- auch immer, ich finde, es war keine gute Idee der IBM-Programmierer
- einen Fehler zu erzeugen, statt auf die Speicheranfrage einfach einen
- NIL-Pointer zurueckzugeben:-(
-
- 6. To-do-Liste
- --------------
-
- Das ist eine Liste aller Features, die plane in zukuenftigen Versionen
- einzubauen. Jede Anregung ist willkommen, wie man mich erreicht, siehe
- letztes Kapitel.
-
- * Vielleicht eine Moeglichkeit, den LX Stub in VX-REXX Programmen zu
- packen; Ich weiss nur nicht obs wirklich gebraucht wird, der Unterschied
- in der Groesse macht gerade mal 18K aus - lxLite kann das echte Programm
- nicht packen, da es 1.) ausserhalb der LX-Struktur ist 2.) irgendwie
- verschluesselt ist und solche Daten ueberhaupt nicht gepackt werden
- koennen, PKZIP nicht einmal PKZIP kann das.
-
- * Vielleicht eine 'extra-pack'-Option, ich haette da eine Idee, wie man
- Programmedateien wirklich klein kriegt (kleiner als DOS-Packer jeden-
- falls:-); diese Programme wuerden dann aber nicht so wie ueblich
- arbeiten - sie waeren immer 'unlocked' (siehe auch das UNLOCK-Utility)
- i.e. sie werden im Swapfile landen, wenn nicht genaug Speicher da ist,
- sie werden nicht langsamer, aber das Swapfile wuerde dramtisch wachsen,
- wenn so ein Programm gestartet wuerde. Daher, sagt mir ob ihr sowas
- haben wollt, wenns genug Nachfrage gibt, mache ich es.
-
- 7. Bekannte Fehler und Einschraenkungen
- --------------------------------------
-
- Hier ist eine Liste von Programmen, die sich aus irgendeinem Grund nicht
- packen lassen, probieren sinnlos:
-
- * PMJPEG v1.5 bis 1.74. Wie auch immer, sogar IBM`s REPACK kann es nicht
- packen, ich denke, dass es sich entweder um einen Bug im Linker, der
- benutzt wurde, um es zu generieren (die ganze EXE hat eine seltsame
- Struktur) oder eine Art debug-Schutz (Pruefsummen?).
-
- * VX-REXX-Programme. Der Hauptteil des Programms (der verschluesslte
- REXX-Code) wird einfach an einen kleinen LX-Stub angehaengt. Diese
- Programme haben eine unbekannte Struktur und wenn lxLite den Stub
- komprimiert, funktionieren sie ueberhaupt nicht mehr.
-
- * Watcom C & C++ v>=10.0. Schaut so aus als wuerde Watcom gerne Muell an
- die Dateien anhaengen. Diese Dateien sind dafuer gedacht, sowohl unter DOS
- als auch unter OS/2 zu laufen und haben ebenfalls eine seltsame Struktur.
-
- * ZIPBRAND v1.11. Es ueberprueft, ob sein .EXE-File veraendert wurde,
- vermutet einen Virus und will dann nicht mehr laufen [Ergaenzung des Ueber-
- setzers].
-
- * InterCom.
-
-
- 8. Den Autor kontaktieren
- -------------------------
-
- Via Email bin unter folgenden Adressen erreichbar:
-
- FIDOnet: 2:5030/84.5 (ist mir am Liebsten)
- Internet: bit@freya.etu.ru
-
- Enjoy,
- _\ndy
-
- 9. Der Uebersetzer
- -----------------
-
- Ich war von Andys Programm so begeistert, dass ich ihm spontan angeboten
- habe, fuer ihn die Dokumentation der Version 1.01 ins Deutsche zu ueber-
- setzen. Manches klingt etwas holprig, aber erstens mache ich das nur
- hobbymaessig, zweitens bin ich kein professioneller Programmierer. Aber ich
- hoffe, es hilft trotzdem etwas. Die Uebersetzung zu 1.1.5 ist bereits ein
- kleines bisschen weniger holprig und enthaelt etwa 60 Tippfehler weniger
- als die zu 1.0.1.
-
- Via Email bin unter folgenden Adressen erreichbar (obwohl das ziemlich
- sinnlos ist, da ich ausser der Uebersetzung nichts beigesteuert habe):
-
- FIDOnet: Herwig Bauernfeind, 2:312/5.35 (ist auch mir am Liebsten)
- InterNet: H_BFD@fidonet.at (funktioniert zur Zeit aber nicht so gut)
-
-
- ΓòÉΓòÉΓòÉ 1.6. Error messages ΓòÉΓòÉΓòÉ
-
-
-
- Error messages
-
- Like most normal programs :-) lxLite can eventually generate error messages.
- Some of them can appear in similar conditions, but caused by different causes.
- Here is a short list of the most frequent errors:
-
- Invalid configuration file format
- Self-explaining, I think :-)
- Error reading configuration file
- Self explaining.
- error reading executable
- This is generated if executable is physically unreadable.
- error writing executable
- This is generated if executable cannot be written onto disk. The
- cause can be the insufficience of disk space - lxLite does not check
- for this particular error.
- invalid executable file format
- The file is not in [L]inear [E]xecutable. Note that you can get this
- message for files with .EXE extension in the cause they are in old,
- 'New Exe' (bwhahaha) format or DOS executable or winDOS executable.
- unsupported executable format revision
- This error can happen (may be :-) if you try to process an
- executable with other revision number than 0. OS/2 Warp works only
- with revision 0, so you will not normally encounter this problem.
- invalid word/dword ordering in executable
- The executable uses little-endian byte order. Seems that it is not
- for Intel platform machines.
- executable target is an unsupported CPU type
- This happen if the target CPU is other than 286, 386, 486 or P5.
- executable target is an unsupported OS
- This mean that the executable is not for OS/2. Windos and windos 95
- uses similar format, but its magic number is not `LX` but `LE`, so
- usualy program will abort with an `invalid format` error.
- unknown entry bundle type in executable
- unknown page flags in executable
- invalid object page detected in executable
- It`s something about internal structure that lxLite doesnt know
- about. Please mail me if you encounter such files.
- not enough memory to load executable
- I doubt this error can happen in OS/2 :-) Rather a swap-file full
- fault will occur. BTW, it`s a bad idea of IBM programmers to trap
- instead of returning NIL pointer on a memory request :-(
- invalid stub
- Stub size must be greater or equal to 64 bytes. This requirement is
- due to limitation that offset to LX header must reside on the offset
- 60 in the stub; however it is unlikely that you`ll got this message
- since lxLite will add trailing zeros to such stubs.
- error reading EAs
- Cannot explain :-)
- error writing EAs
- this one too :-)
- invalid fixup record
- lxLite above 1.1.8 will depack and try to re-pack fixup records.
- Previous versions just read/write fixup table as a bunch of bytes;
- new versions will try to see what they contain. This error can
- happen when converting NE files since some of them ( TFTP.EXE for
- example) contains so-called OSFIXUP records that is outdated and
- don`t have analogue in LX executable format. However, these
- executables are seldom encountered (I`ve seen only mentioned TFTP).
- I don`t know an workaround for this: you cannot convert such NE
- files.
- bound application
- Executable is an bound application. Bound application is an NE
- executable which runs both in DOS and OS/2 mode. These are NOT two
- different executables bundled together (as most dual-mode programs
- are done: you can do this with lxLite inserting an different DOS
- stub into LX executable) but rather an tiny 'OS/2 emulator for DOS
- mode' binded together with NE file. These are usually programs with
- the simplest possible user interface - such as most executables from
- MASM 6.0 package. These executables can still be converted by
- overriding this with the /NB+ option, but they won`t run in DOS mode
- anymore.
- doesn`t support long filenames
- Executable is not long file name - aware. NE files uses a bit in NE
- header which shows whenever executables handle long file names. If
- it isn`t, OS/2 doesn`t show him LFN (just as for DOS programs). In
- some (most that I seen) cases this is of no importance since such
- executables doesn`t work with files (for example ARP.EXE or
- INETD.EXE from TCP/IP). You can override this error message by using
- the /NL+ option.
- incompatible segment definition
- NE executable contains an segment which don`t have direct analogue
- in LX executable format. This is done mostly since I haven`t seen
- executables with such segments (namely GDT and HUGE). If you
- encounter any, let me know, please.
- bad executable segment
- Executables contain an bad segment definition (either it is bigger
- than its declared size, or it is partially (or fully) out of
- executable file). If it works, I will be surprised :-)
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Features | Command-line switches | Configuration
- file | Bugs and limitations | Thanks... | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.7. Features ΓòÉΓòÉΓòÉ
-
-
-
- Features
-
- lxLite compresses the files in the same way as LINK386 does. There is NO way of
- implementing an effective (by memory requirements) compression method other
- than those two which Warp kernel knows and will recognize (or the only for 2.x)
- since unlike DOS OS/2 does paging and pages are loaded by kernel paging
- mechanism which runs at ring 0. There is no documented way to intrude inside
- the OS/2 kernel even from device drivers (which also runs in ring 0).
-
- So, here is a brief description of these two algorithms:
-
- 1. Run-length packing. This is generally the same method that Microsoft C
- for DOS uses. It gives VERY bad results because the structure of
- executable files aren`t suited for that kind of packing. For example, PCX
- files uses approximatively the same packing method.
- 2. Kinda Lempel-Ziv algorithm. Lempel-Ziv is the same method which almost
- all DOS executables packers use - LZEXE, PKLITE, PGMPAK etc. The method
- standartized for OS/2 executable files is not the most effective (IMHO).
- Other thing is that OS/2 executable have a different loading algorithm in
- contrast to DOS executables - parts of OS/2 executables are loaded only
- when they are needed. So, Lempel-Ziv dictionary cannot cross the bound of
- a single page (4096 bytes). Because of this, it gives not such good
- results as it can.
-
- lxLite can use any of these two methods either for packing or unpacking.
- Generally the second gives best compression rates, but may be (?) there are
- some files on which first will work better. Because of this the default is to
- try to pack page using both methods and then choose the smaller result. lxLite
- can be used as well for unpacking the files that previously have been packed -
- either by lxLite, LINK386 or REPACK from IBM. In some (seldom) cases you
- should specify the /F (force) option to force repacking - otherwise lxLite can
- give the "module is already packed" message.
-
- What kind of files you can compress? The LX format is used almost everywhere
- in OS/2: almost everything is in LX format. So, you don`t have to limit only
- to .EXE files: you can pack .DLL, .PDR, .QPR, .DRV, .FON, .SYS (Virtual Device
- Drivers (VDDs) in \OS2\MDOS) as well. You can run lxLite on virtually any
- file: if it is not in Linear Executable (LX) format it will fail to process
- it.
-
- Versions above 1.1.7 of lxLite can also convert to LX and compress most NE
- executables: this is a tricky thing but seems that in most cases it works
- well. If it cannot be acomplished, lxLite will give you an error message. If
- you don`t like this, you can disable this by using the /N- option on the
- command line. By default lxLite will convert *only* .EXE and .DLL files, which
- doesn`t contain resources, are long-filenames aware (.EXEs) and are not 'bound
- executable's (.EXEs).
-
- Some conversion considerations: NE files have a bit in the header that shows
- if the module handles long file names (since OS/2 v1.0 didn`t have long file
- names: HPFS was introduced in version 1.2). Executables with this bit set will
- see files with LFNs, when this bit is not set whey will work just like DOS
- programs do, i.e. won`t see files with LFN. Many NE executables doesn`t have
- this bit set, although they don`t care at all about filenames (for example,
- ARP.EXE, IFCONFIG.EXE from TCP/IP). Moreover, many executables that even works
- with file names will work as well with the long file names (for example I
- tried some UUENCODE/UUDECODE clones). By default lxLite will fail to convert
- such files into LX since LX modules doesn`t have such a bit in header, but you
- can force conversion by using the /NL switch. Default configuration file
- instructs lxLite to ignore this bit for all known to me kinds of dynamic-link
- libraries: DLL, DRV, FON, PDR, QPR (although last four extensions, as far as I
- know, always are LX modules).
-
- Also there is a number of NE executables (for example most EXEs from SIO or
- MASM 6.0 package) which are so-called 'bounded' (also known as "Family API")
- executables. A bounded executable can run both under DOS and OS/2, but not the
- way as LX modules do (one file contains TWO different executables; DOS
- executable is binded as stub to OS/2 LX executable), but other way: DOS stub
- is a small program which loads and executes NE executable under plain DOS, and
- emulates a (very) limited set of OS/2 API calls via BIOS and DOS interrupts.
- By default lxLite will also fail to convert such executables into LX modules
- since resulting executables won`t run under DOS anymore: however, if you have
- PROTECTONLY=YES in CONFIG.SYS or simply don`t need the executable to run under
- DOS, you can change the behavior of lxLite using the /NB switch on the command
- line.
-
- Another incompatibility between LX and NE files are resources. If NE module
- contains resources and they`re loaded using the Dos16GetResource API function,
- API will return an error code when trying to load same resources from an LX
- file. So, by default, lxLite will fail to convert NE modules that contains
- resources (however, there are not too much such modules). However, you can
- override this by using the /NR switch. As a example of a DLL with resources
- you can look at \TCPIP\DLL\TCPMRI.DLL. Many NE utilites (such as ARP, PING
- etc) uses Dos16GetResource to load resources from TCPMRI.DLL, and will display
- an 'Failure in national language support' instead of almost all messages.
- There is an alternative API function for 16-bit modules: DosGetResource2,
- which will work well for an LX file. So if you`re sure that all resources in a
- file are loaded exclusively through DosLoadModule2, you can force lxLite to
- convert such NE files by using the /NR switch.
-
- lxLite version 1.00 and above can replace executable modules even if they are
- currently in use. In this case it will warn you that module is already in use
- by another process, and will propose you either to replace it by its packed
- version or either to skip this module. Choose at your wish, but keep in mind
- that the modules you have replaced are kept now (their old versions) in
- memory, so they eat up your swapfile space. Better reboot as soon as you have
- this opportunity.
-
- You can also consider compressing your entire \OS2\*\ directory structure, it
- will give you a lot of extra space and absolutely no overhead! The time spent
- for decompressing executables is recovered by the time which system does not
- spend for reading the executable from HD because it`s much smaller! You can
- even compress the DLLs which are currently locked (lxLite will unlock them,
- but swap file will increase, so you will need to reboot after this). For this,
- you have to type: lxLite #:\os2\* /r /yur
-
- where # is drive letter of your boot drive.
-
- Version 1.1.0 and above detects executables which contains some data after the
- LX structure itself (i.e. what`s called in DOS overlay data). For example
- Watcom`s binded executables (such as WCC.EXE versions >= 10.0) and Watcom
- Visual Rexx executables have such structure. In this case lxLite shows an
- warning message and asks for confirmation whenever you really want to pack
- such executable. It is STRONGLY recommended that you backup the executable in
- question before trying to do it because it is VERY possible that it will
- become non-functional if something gets changed in it (because lxLite does not
- change any of possible pointers in data binded to LX as in VREXX executables).
- Default configuration file instructs lxLite to back up automatically such
- executables (by using the /BX switch). All backed up filenames are stored by
- default into the \lxLite.bak directory.
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Command-line switches | Configuration file | Error
- messages | Bugs and limitations | Thanks... | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.8. Introduction ΓòÉΓòÉΓòÉ
-
-
-
- Introduction
-
- I think all of us end-users are really bored of the big size and reduced
- functionality of all those modern executables written to run under OS/2 (windos
- too). I don`t understand why they are so big, because most compilers, even IBM
- CSet/VACPP generate a modest size code. For a widely known example let`s take
- MultiMaint. What a complex task it performs that its executable occupies more
- that 700K? I don`t understand. Moreover, WHY duplicate (and triplicate) almost
- the same executable as it does (I mean MultiSafe and IniMaint which comes along
- with MultiMaint). It performs a nice work, but it is TOO big for the task it
- acomplishes. OS/2 kernel have the same size, and performs INCOMPARABLY much
- more things. I cannot afford such a large pile of shit on my HD, so I killed
- MultiMaint & C┬░. :`-(. Too bad for its author. ;
-
- Here is a workaround for this. You can just pack the executable so it will be
- twice smaller and still perform the same task. Alas, it will grab the same
- amount of memory as original executable does - this is the fault of the
- program`s author. But it will load (and swap) faster in most cases (unless you
- have a Fast UltraWide SCSI 2 HD :-)
-
- As far as I know there is only one program which does the same - REPACK from
- IBM (EWS?). But compared to lxLite it gives less compression using same
- algorithm. For example, COURIER.FON from OS/2 v8.192 it compresses into 44K and
- lxLite into 34K. Feel the difference. BTW, LINK386+Resource Compiler compiles
- COURIER.FON also into 44K-size file. This makes me think that they use the same
- common compression code.
-
- I`ve packed ALL my executables (incuding but not limiting to ?:\os2\*.exe,
- ?:\os2\dll\*.* and ?:\os2\dll\ibmnull;laserjet) and my system is stiil working
- fine :-) One of lxLite users (Pavel Roskin) observed that lxLite packs even
- os2krnl :-) This is a very nice feature to create a SINGLE OS/2 boot diskette,
- moreover, since version 1.1.8 lxLite has the ability to pack even device
- drivers, so you can even gain a little of free space on that diskette, enough
- to put there say FC/2 or other text-mode shell.
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Features | Command-line switches | Configuration file | Error
- messages | Bugs and limitations | Thanks... | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.9. lxLite_ru.txt ΓòÉΓòÉΓòÉ
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
- LX lite - паковщик для выполняемых файлов OS/2
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- * Этот текст - всего лишь сокращенная версия английской документации. Для
- получения полной информации по данной программе обращайтесь к ней. Здесь же
- приведены только основные моменты отраженные в английской версии. Надеюсь
- что мой убогий английский не помешает Вам понять что же там на самом деле
- написано.
-
- 1. Вступление
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
- Меня откровенно достали :-) огромные размеры современных программ, при их
- ограниченной функциональности. Поэтому я уже почти год мечтаю о программе
- для OS/2 которая бы делала для OS/2 то же что для DOS - lzexe, pklite, diet,
- compack, ainexe и много-много других. Однако она все задерживалась. Правда
- примерно в декабре по MFE.OS2 проходила программа REPACK которая вроде бы
- частично решала проблему, перепаковывая exe`шники примерно так же как это
- делает LINK386 с опцией /EXEPACK:2. Однако убогий интерфейс :-) и полное
- отсутствия опций в ней меня окончательно достало, и я решился взяться за
- дело собственоручно (вариант: собственноножно ;-). Попутно оказалось что
- REPACK выжимает далеко не все возможное из опции /EXEPACK:2. lxLite пакует
- в среднем процентов на 10 лучше чем REPACK, что в сумме дает весьма неплохой
- выигрыш. Например стандартный COURIER.FON у меня занимал 44K (пакованный
- REPACK`ом) - после lxLite он стал занимать 34K. Почувствуйте разницу :-) Ну
- и другие плюсы lxLite - повышенная конфигурабельность, наличие некоторой
- дополнительной информации во время операции паковки, возможность вывода
- некоторой информации о обрабатываемом exe`шнике (для любопытных :-) - я
- думаю вы оцените в процессе эксплуатации. Если кто-то считает что уменьшение
- EXE`шников в размере в среднем раза в два - это крохоборство, то эта
- программа явно не для Вас.
- lxLite проверен в работе на практически ВСЕХ моих выполняемых файлах для
- OS/2 (в том числе на c:\os2\*.exe; c:\os2\dll\*\*.*; забавнее всего что
- пакуется даже OS2KRNL /thx to Pavel Roskin/) и как ни странно все работает.
- Подробнее об опциях lxLite и выполняемых ими функциях можно прочесть в
- английской документации. Если же Вы не знаете английского, не огорчайтесь -
- скорее всего эти опции Вам не нужны. Для обычного запуска lxLite просто
- наберите lxLite *.exe *.dll в каталоге в котором у Вас находятся выполняемые
- файлы OS/2. Если же Вам хочется распаковать файл(ы) наберите то же самое но
- добавьте /x.
-
- Счастливого пользования.
- Андрей Заболотный,
- FIDOnet: 2:5030/84.5
- e-mail: bit@freya.etu.ru
-
-
- ΓòÉΓòÉΓòÉ 1.10. Command-line switches ΓòÉΓòÉΓòÉ
-
-
-
- Command-line switches
-
- There are a lot of options in lxLite. I simply like options :-) So, you can
- configure almost anything in lxLite. Moreover, to protect the user from need of
- writing the same options lxLite support multiple configurations which are kept
- in a single file. lxLite comes with some example configurations (`factory
- defaults`) which are listed below:
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- default (loaded by default)
- It is a `work` configuration. All parameters are set to optimal
- level of compression without too much effort applied. File backup is
- disabled except for files that have extra data after LX structure.
- Note that this configuration is ALWAYS loaded before any other
- options are in effect, so even /C{#} option is executed AFTER
- default configuration is loaded.
- unpack (loaded for /X option)
- This configuration is loaded when you request to unpack the file
- (/X). By default it is empty; you can add here everything you want
- to happen when files are unpacked.
- ver2x
- Optimal for pre-Warp versions of OS/2. Versions before Warp (3.0)
- does not know of the Lempel-Ziv (/EXEPACK:2) method. DON`T PACK
- EXECUTABLES WITH LEMPEL-ZIV`s ALGORITHM if there is a chance to run
- your program on OS/2 v2.xx (except 2.99).
- max
- Tightest compression level. VERY SLOW! It is rarely needed to use
- this configuration.
- newStub
- This is a particular configuration used to replace one DOS stub in
- LX executable by another without altering anything else. You have to
- specify a filename for new stub - this configuration only tells
- lxLite not to depack old objects and not to pack unpacked objects.
- minStub
- This is a configuration which is linked to newStub and replaces
- stubs in given files by minimal possible stub of
- `say-error-and-exit` type. You cannot make it smaller (at least I
- doubt it), only if you shorten the error message.
- vdmStub
- This configuration tells lxLite to replace in specified files stub
- by a `run-from-VDM`-style one. This is also as short as possible :-)
- Please read the /T{#} option description for further details.
- info
- Use this configuration to get the most important information about
- executables (see option /V) without altering them.
- exehdr
- Shows complete information about the executable header. Module file
- is not altered in any way.
- exemap
- Shows anything about the executable structure. This can generate
- sometimes very long data sheets, so use it only if really needed.
- map
- Shows the memory map of the executable: memory objects and pages
- which makes the object.
- exp
- Shows everything that is exported from the module (exported names
- and exported entriy points)
- imp
- Shows module import tables
- pdd
- This configuration can be used for physical device drivers
- (especially in NE format).
- dll
- This configuration is useful for dynamic-link libraries.
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- To use a specific configuration use the /C:# switch where # is configuration`s
- identifier. Settings are loaded from file lxLite.CFG in the same directory
- where lxLite.EXE resides. You shouldn`t care about paths - lxLite will always
- find it. For example, to use `max` configuration run lxLite /c:Max. For a
- detailed description of .CFG file format see section right below the
- following.
-
- Here is a detailed explanation of what each switch does. Note that any switch
- which accepts '+' or '-' sign after it (to enable/disable the action which
- switch symbolizes) can be used without anything after it - this is accepted as
- '+'. For example, /V+ is equivalent to /V.
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- /A[{P|S|N{P|S}}{:#}]
- Set alignment method for first and rest of objects. First object can
- be aligned on [P]age shift, [S]ector or [N]o boundary. Note that the
- last option (No boundary) cannot be achieved by using LINK386, but
- it works well, and the LX format allows it. All objects except first
- MUST be aligned on at least PageShift boundary. PageShift is a value
- that is specified in LX header. You can redefine it too by
- specifying a semicolon and a decimal value after it: for example the
- /APP:512 switch will place all pages in executable on 512 bytes
- boundary. Note that the # value must be a power of two (i.e.
- 1,2,4,8,16,32,...).
- /B(D|X|+|-){:%}
- Enable (+) or disable (-) copying original file into *.BAK;
- optionaly lxLite can do it only when [D]ebug and/or e[X]tra data are
- detected. Also you can specify an directory % for backed up files
- (relative to root). The entire directory tree will be re-created
- inside the backup directory. For example, the /BX:c:\lxlite.bak
- switch will instruct lxLite to back up files only when e[X]tra data
- is present in module and to place them into the directory structure
- under the c:\lxlite.bak directory.
- /C{S}{+|-}
- Enable (+) or disable (-) colored output. You can specify {S} to
- force lxLite to use StdOut instead of VioXXX functions.
- /C[:%]
- Use configuration with ID = %; The two predefined configuration
- names are "default" and "unpack". First is always loaded as lxLite
- starts and second is used when /X+ option is specified (this is NOT
- equivalent to /c:Unpack).
- / E{#}
- Set [E]xclude filemask. All files that fits given filemask(s) will
- be bypassed by lxLite. All filemasks must be separated by ':'
- (because it cannot be a part of filemask). For example
- /D*.zip:*.arj:*.rar switch will instruct lxLite to avoid all .zip,
- .arj and .rar files. Default lxlite configuration (/C:default)
- includes the /C:exclude configuration which instructs lxLite to
- avoid all executables which are known to have problems when packed.
- Note that the /D switches are additive, so /D*.zip /D*.arj /D*.rar
- is equivalent to the example above. To clear exclusion list use
- specify /D.
- /F{+|-}
- Force repacking. Use /F+ to bypass `already processed` message, i.e.
- when lxLite thinks that file was already processed and it really
- wasn`t. This usually doesn`t happen, but can happen when you try to
- replace a stub by another of the same size in a already packed file.
- /I{+|-}
- Force (+) lxLite to run at idle priority. This mean that lxLite will
- do its work only when no other activity in system occurs (waiting
- for an keyboard/mouse event etc). This is the best in my opinion
- choice because you can run lxLite in background and it will not
- degrade almost at all system performance. However if you`ll run an
- `badly-behaved` VDM session which grabs all CPU time lxLite will
- completely stop. When run with /I- option lxLite does not changes
- its priority (i.e. you can run lxLite /I- via priority.exe program
- which starts programs with given priority).
- /J[A|E|L|P|V](E|L|P|V|N|X|+|-)
- Change module type: Leave [A]s-is, [E]xecutable module, [L]ibrary
- module, [P]hysical or [V]irtual driver. Especially useful when
- converting NE drivers. Optionaly you can restrict this to work only
- on [E]xecutables, [L]ibraries, [P]hysical or [V]irtual drivers, [N]E
- or L[X] executables and any combination of them. [N]E and [L]X
- conditions are considered with an AND operator; all others with OR,
- i.e. /JPELN will mean: "Change module type into [P]hysical device
- driver for all [E]xecutables OR [L]ibraries which also are (AND)
- [N]E modules"
- /L(A|S|U|+|-){:%}
- Instructs lxLite to maintain an log file. If no file name is
- specified, lxLite.log is used in the home directory of lxLite.
- Beside the filename, the start and final file size is written into
- log along with the problems (if any) that were encountered when
- processing (for example: 'Executable has been used by another
- process and replaced'). You can also optionaly choose to log either
- [S]uccessful or [U]nsuccessful cases or [A]ll (which means more than
- just /SU+: lxLite will also log 'already processed' files).
- /M[R[N|1|2|3]|L[N|1]|F[N|1|2]]
- Set packing method & parameters. Second character (after M) defines
- the method to set-up: `R` stands for run-length (/EXEPACK:1), 'L'
- for Lempel-Ziv (/EXEPACK:2) and 'F' for Fixup packing method. The
- third character is the level of compression using that method; if N
- is specified the method is disabled. Three levels of packing are
- provided for run-length compression. The level 1 is the fastest. It
- searches only for 1-character strings. For example, the 'AAAAAAAA'
- string will be detected and packed as 8, 1, 'A' while 'ABABABAB'
- string will be stored as unpacked text. Level 2 detects repeated
- strings of up to 16 characters length, so the example above will be
- encoded as 4,2,'AB'. This is the default setting for most 'factory`
- configurations. And last, 3rd level searchs for ALL strings of any
- length (up to page size/2 = 2048). This compreses VERY slow and
- seldom gives real results, so use it only when you really need it.
- The Lempel-Ziv algorithm can be either disabled (/MLN) or enabled
- (/ML1). When enabled it searchs for all matches using a relatively
- fast hash-table, so there is no need in gradations by compression
- speed. The fixup packing method can be set to [N]one, level 1 end
- level 2; fixups packed using Level 1 are recognized by any OS/2
- version above 2.x; however level 2 compressed fixups will work only
- in OS/2 Warp 3.0 with (fixpack #17 (I believe)) and above (Warp 4.0
- too). Note that when /MF1 or /MF2 is in use, the /U{+|-} option is
- ignored - module is always unpacked first.
- /N(B|L|A|+|-)
- [N]E executables: convert into LX (+) or reject (-) modules that are
- [B]ound, not [L]FN-aware or [A]ll. For more information about [B]
- and [L] option see the 'Features' section above. For example, the
- /NA- option will instruct lxLite not to convert NE files into LX,
- the /NA+ will instruct to convert always; the /NA-LB+ will instruct
- lxLite to convert ONLY non-[L]FN-aware and [B]ound executables, the
- /NA+LB- will instruct lxLite to convert [A]ll except non-[L]FN-aware
- and [B]ound executables.
- /O(X|D|S|A|+|-){:%}
- [O]utput e[X]tra/[D]ebug/[S]tub data into an external file; filename
- is determined by applying mask % onto original filename. Data is
- written [A]lways in the A+ state and only when removed in the A-
- state. For example, the /OD:*.$d$ switch will have effect on the
- TEST.EXE executable which contains debug info only when you choose
- to discard it and will place it into the file TEST.$d$.
- /P{+|-}
- Enable (+) or disable (-) pause before each file. The program shows
- the name of file which will be processed and offers a choice to
- continue or to abort.
- /Q{+|-}
- Query all configuration options. Basically it simply types a colored
- version of lxLite.cfg file through a MORE-style filter :-) All other
- options on the command line (if any) are ignored.
- /R{+|-}
- Enable (+) or disable (-) [R]ecursive file search through
- subdirectories.
- /S{+|-}
- Show (+) or don`t show (-) configuration in effect. This is useful
- for examining which settings are stored into .CFG file, especially
- for linked configurations (see below). For example lxLite /Cdefault
- /S will show the default settings.
- /T{:%}
- Use specified file as new DOS stub. DOS stub is (usualy) a tiny DOS
- .EXE file linked to OS/2`s module which is typicaly used to type an
- error message in the case if the executable is not run from DOS
- command line. Usually this looks like:
-
- This is an OS/2 executable module
-
- Along with lxLite are enclosed two stubs: stub_min.bin and
- stub_vdm.bin. First is the standard `type-error-and-exit` type, but
- it is slightly smaller than usual stubs used by various linkers. The
- second is an stub which starts a new OS/2 session and runs program
- from it again. If OS/2 is not detected it types the same error
- message and exits. The default for stub_vdm.bin is to let OS/2
- decide the type of your executable itself. Alternatively, you can
- specify the type of session to be started by stub_vdm.bin. For this
- you need any hex editor - find the pattern `SesType->' in stub and
- replace the byte that comes after arrow (->) by needed session type.
- OS/2 recognizes next session types:
- 00 - OS/2 session manager determines type (default)
- 01 - OS/2 full-screen session
- 02 - OS/2 windowed session
- 03 - PM application
- 04 - VDM full-screen session
- 07 - VDM windowed session
-
- You can use stubs to do some neat tricks. Say you have two
- executables: ZIP for OS/2 and ZIP for DOS (I mean GNU ZIP, not
- PKZIP). They offer the same interface, does the same thing and share
- the same name. To avoid conflicts (and avoid placing them in
- different directories) you can link them both together into one EXE
- file which can be ran either from DOS or OS/2 mode. This can be
- achieved by following command line: lxLite /t:dos\zip.exe
- os2\zip.exe
-
- If stub size is bigger than certain threshold size (default - 1024
- bytes) it will not be replaced. This is done since stubs of bigger
- size usualy does something useful (for example, this can be already
- an 'dual-mode' executable). It is useful for batch conversions and
- not too useful when you do tricks like described above: so you can
- wish to change this threshold value to zero. This can be achieved
- using the /Z switch (see below for details).
- /U{+|-}
- Enable (+) or disable (-) unpacking file before packing. lxLite know
- how to unpack any of two packing methods described, so default
- option state is enabled. Disable it only when compression time
- savings are more important than disk space savings. This option is
- ignored (and file is anyway unpacked) when /MF2 packing is enabled.
- /V[{0123OCRNMPEF}{+|-}]
- [V]erbose (show a lot of file information).
- This is a switch for curious ones :-) It has different levels of
- verbosity, you can choose which kind of information to include in
- overall output. For example: /V0-12+3-O+. Here is an detailed
- description of what each key shows:
- 0
- Show basical information about executable:
- - module type
- - required CPU
- - module version
- - page size (on Intel platform always 4096 :-)
- - page shift
- - object count
- - resource count
- - imported entries count
- - debug info size
- - start object and EIP
- - stack object and ESP
- - module name
- - module description
- 1
- - OS required to run the executable (always OS/2 :-)
- - Number of pages present in file
- - Fixup table overall size
- - Fixup table overall CRC
- - Resident portion of header size
- - Resident portion of header CRC
- - Automatical data object (valid only for 16-bit
- executables)
- - Number of preloaded pages
- - Additional stack size (has no effect in LX files)
- - Heap size (extra auto-data-object size; has no effect in
- LX files)
- 2
- - Uncompressed Page data offset (relative to LX header)
- - Compressed data offset (relative to LX header)
- - Page fixup table offset (relative to LX header)
- - Fixup table offset (relative to LX header)
- - Imported modules table offset (relative to LX header)
- - Debug Info data offset (absolute)
- 3
- - Object Table offset (relative to LX header)
- - Resource Table offset (relative to LX header)
- - Object Page Map Table offset (relative to LX header)
- - Module Directives Table offset (relative to LX header)
- - Non-resident name table offset (relative to LX header)
- - Non-resident name table size
- - Imported procedures table offset (relative to LX header)
- - Entry points table offset (relative to LX header)
- O
- Show object info (i.e. information about objects contained in
- file). Output looks as follows:
-
- ## - Base --- Size --R-W-E-Res-Dis-Shr-Pre-Inv-Swp-Rsd-Loc-A16-32B-Cnf-IOP-
- 1 00010000 00001000 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-
- ##
- Object`s ordinal number
- Base
- Object`s base address, i.e. linear address at
- which it can be placed without applying
- self-addressing fixups
- Size
- Size of the object Further follows object`s
- flags which describe different attributes of object:
- - R - Object is readable
- - W - Object is writable
- - E - Object is executable
- - Res - Object is resource
- - Dis - Object is discardable
- - Shr - Object is shared among instances (DLLs only)
- - Pre - Object must be preloaded (this doesn`t work as far
- as I know)
- - Inv - Object is invalid
- - Swp - Object is swappable
- - Rsd - Object is resident (for ring 0 drivers only, AFAIK)
- - Loc - Object can be long-term locked (drivers only)
- - A16 - Alias16, object has an alias in 16:16 format
- - 32B - Object is 32-bit
- - Cnf - Object is code-conforming (16-bit drivers only,
- never seen it)
- - IOP - I/O priviledge. Object is authorised to access I/O
- ports.
- C
- Object [C]ontents: show pages which makes object. This key
- enforces /VO. Output looks something like:
-
- ++- Index --+ FileOffs + Size + Attribute +
- + 00000001 + 00012340 + 0123 + LZ-packed +
-
- Index
- Page number in executable (absolute, not
- relative)
- FileOffs
- Offset of page data in file (absolute)
- Size
- Size of page data in file
- Attribute
- Page attribute:
- Valid
- An valid unpacked page
- RL-packed
- Compressed using Run-Length encoding (EXEPACK)
- Invalid
- Page is invalid
- Zeroed
- Page must be zeroed
- Range
- ???, no info, never seen one
- LZ-packed
- Compressed using Lempel-Ziv encoding (EXEPACK2)
- R
- [R]esident Names Table: This is an table which usually contains
- all exported by name procedures. First entry always contains
- module name. Display format:
-
- + Indx + Name ----------------------------------------------
- | 0000 | TCPIPDLL
- | 0001 | _dn_skipname
- | 0002 | _res_query
- | 0003 | _writev
- [.....................]
- + 006F + _gethostent
-
- Indx
- This is the index into the Module Entry Table
- which describes the actual address of routine
- Name
- The name of routine as it is imported into other
- programs.
- N
- [N]on-Resident Name Table: This is an table which contains
- miscelaneous entry points which are not exported. First entry
- contains module description (if defined). Display format is the
- same as above.
- M
- Imported [M]odule Names Table: This table contains names of all
- external dynamic-link libraries which uses current module.
- Display format:
-
- + Indx + Offs + Name ---------------------------------------
- | 0001 | 0000 | SO32DLL
- | 0002 | 0008 | TCP32DLL
- | 0003 | 0011 | so32dll
- | 0004 | 0019 | tcp32dll
- | 0005 | 0022 | DOSCALLS
- | 0006 | 002B | NLS
- | 0007 | 002F | MSG
- + 0008 + 0033 + setloc1
-
- Indx
- Index into the module names table; This is often
- used in fixup records although lxLite resolve
- such references automatically and shows directly
- entry name.
- Offs
- Offset in the table = sum of lengths of all
- previous names. This is not used for Module
- Names Table but is used for Procedure Names
- Table which is displayed in similar format.
- Name
- The name of entry.
- P
- Imported [P]rocedure Names Table: This table contains names of
- all external procedures which are imported by name. Display
- format is similar to Module Names Table.
- E
- Module Entry Table: This is an table which defines some entry
- points into the current module; not neccessarily all entry
- points are defined here: only those which are exported MUST be
- defined here. Here is an sample display:
-
- + Indx + Entry Type + Entry Attributes ---------------------
- | 0005 | 0:32 | 1:00000000, Exported, Shared Data
- | 000B | 0:32 | 1:00008C90, Exported, Shared Data
- | 000C | 0:32 | 1:00008FB4, Exported, Shared Data
- | 002B | 16:16 | 4:02EC, Exported, Shared Data
- | 002E | 0:32 | 1:00009468, Exported, Shared Data
- + 0056 + 0:32 + 1:00001448, Exported, Shared Data
-
- Indx
- Index into the entry table. Entry table is
- always sequential, and all 'holes' between
- indices are filled with 'unused' entry points
- (for example, entry point index 10 cannot follow
- index 5: there must be entries 6,7,8,9 between
- them marked as 'unused'). lxLite doesn`t show
- 'unused' entries since this is unuseful; however
- they are there, just for your information.
- Entry Type
- Type of entry point. Entry points can be located
- in different segments (16-bit, 32-bit, it can be
- an Call Gate etc), so OS/2 needs a flag which
- will describe how to handle each entry point.
- There are also "forwarders" - fake entry points
- into the module which are in fact redirected
- into another module. For example, PMWIN.DLL,
- PMGPI.DLL and many other DLLs are simply a bunch
- of forwarders which all points to PMMERGE.DLL.
- Entry Attributes
- These depends of the entry type. For example,
- 0:32 entries has Object:Offset32 attribute,
- 16:16 entries have Object:Offset16 attribute,
- forwarders have attributes which describe to
- which module and which procedure to redirect
- this entry etc.
- F
- [F]ixup table. This is useful, I think, only for me and, may
- be, for those who write compilers :-) Display format:
-
- + Object index: 1 Page index: 1 Absolute page: 1
- | 32-bit relative offset of import SETLOC1.4
- | 045C 0494 04B8
- | 32-bit relative offset of import SETLOC1.5
- | 035F 0CBA
- [.....................]
- + Object index: 1 Page index: 2 Absolute page: 2
- | 32-bit relative offset of import SETLOC1.4
- | 02B6 0328 0354 090E
- [.....................]
- + Object index: 1 Page index: 42 Absolute page: 42
- | 32-bit relative offset of import DOSCALLS.256(DosSetFilePtr)
- | 066F 0C5D 0CD5
- | 32-bit relative offset of import DOSCALLS.272(DosSetFileSize)
- | 0CB2
- | 32-bit relative offset of import DOSCALLS.273(DosOpen)
- | 0B9D
- [.....................]
- Imports by ordinals are handled in a special way: lxLite has a
- resource table which contains information which allows lxLite
- to transform MODULE:ORDINAL form into an MODULE:NAME pair. By
- default lxLite contains a list of ordinals for all base OS/2
- DLL`s, but if you want to add your own or if you need something
- special, you can add your module entries to lxLite.rc file in
- the API subdirectory and then to re-attach resources to lxLite
- (using Resource Compiler).
- /W(W|S|+|-)
- [W]rite (+) or [S]imulate writing of resulting file. In the /WW-
- state lxLite will do nothing (useful for /V option); in the /WS+
- state lxLite will even display compression ratio, but won`t alter
- the module file on disk. Useful for /V{...} switch, but also can be
- useful for debugging your options.
- /X{+|-}
- e[X]pand (+) or pack (-) given files. Use this switch to decompress
- files. lxLite can decompress files which has been compressed by
- itself as well as by other programs which uses standard methods
- (i.e. Resource Compiler, LINK386, REPACK). It is NOT identical to
- /c:Unpack option.
- /Y[U|X|B|C|D]{?}
- auto-repl[Y] '?' on one of questions:
- file in [U]se /Answer: [R]eplace, [S]kip, [A]bort/
- [D]ebug info in file /Answer: [D]iscard, [L]eave, [S]kip,
- [A]bort/
- e[X]tra data in file /[D]iscard, [L]eave, [S]kip, [A]bort/
- [B]ackup file exists /[O]verwrite, [N]o backup, [S]kip,
- [A]bort/
- [C]onfirmation on /P+ /[P]rocess, [S]kip, [A]bort/ If reply
- (?) is missing, lxLite will ask you interactively each time. When
- lxLite asks you a question, you can press Alt+letter which will set
- the default answer for all following similar questions.
- /Z{:#}
- This option will set the `threshold` for lxLite to help him
- determine when stub is a `dummy` one and when it is a functional
- program. There are a number of programs (for example,
- \os2\xdfloppy.exe) which runs both under DOS and OS/2 - in such
- programs DOS executable is implemented into OS/2`s LX as a DOS stub.
- By default lxLite considers all stubs bigger than 1024 bytes as
- functional programs, and therefore for such executables the /T{:#}
- option has no effect. If you want stub to be always replaced, use
- the /Z option. If you want to disable the /T option, use /Z-1.
- /?,/H
- Show a brief help. This is useful when you forget a particular
- switch from all that list :-)
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Features | Configuration file | Error messages |
- Bugs and limitations | Thanks... | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.11. Thanks ΓòÉΓòÉΓòÉ
-
-
-
- Thanks to:
-
-
-
- Dmitry Goldobin
-
- who digged from OS2LDR information regarding /EXEPACK:2 packing method; the
- idea about lxLite was born when I was looking this;
-
- Rinat Sadretinow
-
- who gave me some ideas and informed me about some enhacements in OS/2 v4.0
- regarding LX modules;
-
- Ilfak Guilfanov
-
- who gave me the information about new type of chained fixups in LX modules
- which appeared in OS/2 v4.0.
-
- I also would thank
-
- Herwig Bauernfeind
-
- who contributed to German translation of the documentation; Alas the link
- between us is very slow, so German docs are almost always little out of date
- :-) Sorry, I cannot do nothing with it. Here is a paragraph written completely
- by Herwig:
-
- Translator
-
- As I really was very happy about Andys program, I asked whether he would like a
- German translation of the documentation of version 1.01. Well, some things
- sound a bit 'bumpy', but first of all, I am doing this as a hobby only,
- secondly I am not professional programmer. I hope, it will help anyway.
-
- You can reach me by email (although this is quite useless, as I contributed the
- translation only):
-
- FIDOnet: Herwig Bauernfeind, 2:312/5.35
- InterNet: H_BFD@fidonet.at (does not work reliably by now)
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Features | Command-line switches | Configuration
- file | Error messages | Bugs and limitations | Utility Pack | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.12. lxLite utility pack ΓòÉΓòÉΓòÉ
-
-
-
- Abstract
-
- Some time after releasing version 1.01 of lxLite (i.e. 1.0.1) (and some time
- before :-) I wrote some simple command-line utilites which greatly simplified
- my life. Because apart from lxLite they don`t present nothing interesting, I
- included them here for you to get them along with lxlite :-)
-
- unLock
-
- unLock is a simple utility which allows to `unlock` application executables
- which is currently in use. Normally when an executable is loaded by OS/2 its
- file is open with a deny-write sharing mode. This is done because LX format
- structure is designed not to swap out unused pages in executables each time
- when they aren`t needed anymore, but rather to discard them. When discarded
- page is needed OS/2 simply reads it again from executable.
-
- However, there is still a way to replace executables `on-the-fly` even if they
- are currently running. There is an so-called `well-known undocumented` function
- (which in fact means that it won`t be neccesarily supported in future versions
- of OS/2) which allow to disable sharing protection on such files. Before doing
- that OS/2 reads entire executable in swap file, then page swapping is done as
- with usual memory. If you`ll `unlock` many running executables at the same time
- you can notice an increase in swap file size. So, this is just an temporary
- work-around, you have better to reboot after doing all neccesary things on
- former locked files.
-
- The command-line format of unLock is much like lxLite`s, except that it have
- much less options :-)
-
- /R{+|-}
- [R]ecursive (+) file search through subdirectories. unLock will
- recursively search any directories which is located below the
- directory of given filemask. If multiple masks are given multiple
- recursive searchs will be performed.
- /P{+|-}
- Enable (+) or disable (-) pause before each file. Before each file
- unLock will ask you whenever you really want to unlock the file.
- /V{+|-}
- Verbose (show additional information). If verbose option is disabled
- (/V-) only those messages are left on screen which displays critical
- messages (i.e. errors), otherwise after each filename unLock shows
- the result of unlock operation - 'unlocked' or 'sharing violation'.
- Note that unLock CANNOT unlock files which are locked in some other
- way than executbles.
- /?,/H
- Show a short help screen
-
-
- noEA
-
- As you probably know :-) many (in fact a lot) of files have EAs (extended
- attributes), but does not need them. In fact the only thing which REALLY needs
- extended attributes is your Desktop\ directory. All other files can or can not
- have extended attributes - the only thing that you can lose by removing those
- attributes is how that file will appear in WPS folder (size and icon). Other
- type of extended attributes is those used by REXX - any REXX program that you
- run at least once and which does not have ReadOnly attribute set have some K
- of extended attributes attached to it. This is the 'pre-compiled' text of the
- REXX program, so it will run faster with that attributes. However, if you
- don`t use the REXX script too often, you can remove extended attributes from
- file then to set the Read-Only attribute.
-
- Note that if you have not too many EAs (say the .TYPE and the .APPTYPE EAs)
- they will NOT occupy any disk space because of the wise HPFS structure. So to
- use noEA you MUST know what you`re doing and whenever you needs it (anyway,
- this is true for any other program :-).
-
- noEA can show a list of extended attribute names for the processed files or
- remove all of them. The command-line switches are much like in all other
- utilites:
-
- /R{+|-}
- [R]ecursive (+) file search through subdirectories. noEA will
- recursively search any directories which is located below the
- directory of given filemask. If multiple masks are given multiple
- recursive searchs will be performed.
- /P{+|-}
- Enable (+) or disable (-) pause before each file. noEA will ask for
- confirmation before each processed file.
- /V{+|-}
- Verbose (show EAs instead of removing them). When this switch is
- used noEA will display the EAs attached to processed file and will
- NOT remove them.
- /Y{+|-}
- Assume (+) on all queries affirmative responce. When noEA encounters
- an write-locked file it warns you about this. However, this can be
- annoying when doing automatical processing (i.e. calling noEA from
- batch files). You can force noEA to process any files it can by
- specifying this switch.
- /?,/H
- Show a short help screen
-
-
- chCase
-
- Some time ago I was finally bored of the annoying habbit of some programs to
- write their files in upper case. And not only contents (almost any program
- which changes config.sys tends to convert it all to upper case when I like it
- to be in lower case) but filenames also. So i started this little project as a
- problem-dedicated-and-easy-to-use replacement for REN command.
-
- The main ideology of chCase is to divide filename in some `parts` then to
- perform some case-conversions on each part apart :-) You can define `part
- separator` characters using /S"" option. By default chCase uses "." as `part
- separator`. I.e. filename chcase.is.a.great.prog will be divided into parts
- 'chcase', 'is', 'a', 'great' and 'prog'. Further you can tell chCase to
- convert first part to upper-case, second - to lower-case, third - to mixed
- format (i.e. first letter in uppercase and rest in lowercase) and so on.
-
- The available options are:
-
- /C{F|D}(L|U|M|A)
- Convert to [L]ower/[U]pper/[M]ixed/[A]s-is case. You can define
- multiple `case conversion actions` - first one will be applied on
- the first `part`; second - on the second `part` and so on. Last
- `action` will be used for any extra encountered `parts`, so if
- you`ll define only one option it will be applyed on all filename
- parts. Some examples:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöéfilename Γöécommand line Γöéresulting filename Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöémY.Very.lOnG.fIlE.NamE Γöé/culam my* ΓöéMY.very.lOnG.File.Name Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöéjust.an.example Γöé/cml jus* ΓöéJust.an.example Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéleT.iT.bE Γöé/cmla let* ΓöéLet.it.bE Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- /R{+|-}
- [R]ecursive (+) file search through subdirectories. chCase will
- recursively search any directories which are located below the
- directory of given filemask. If multiple masks are given multiple
- recursive searchs will be performed.
- /P{+|-}
- Enable (+) or disable (-) pause before each file. Before each file
- chCase will ask you whenever you really want to rename this file.
- The initial and final filenames are displayed.
- /S{%}
- Define separator character(s). You can use this switch in the case
- when you have some files which uses some other separators, for
- example space or underscore. Note that the /S switch is NOT additive
- i.e. any /S switch disables the action of precedent. Even "." is
- cleared by /S switch, so if you for example want to use as
- separators both "." and space " " you have to define them both in a
- single /S switch as follows: /S" ."
-
- Just some examples:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöéfilename Γöécommand line Γöéresulting filename Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMary has a Little.Lamb Γöé/cm /s" ." mar* ΓöéMary Has A Little.Lamb Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöéjohn_wAs_a_lItTle_lame Γöé/cuml /s"_" ΓöéJOHN_Was_a_little_lame Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- /V{+|-}
- Verbose (show additional information). If you will specify /V-
- chcase will leave on screen only critical messages such as errors -
- all others will be cleared immediately after they succeeded.
- /?,/H
- Show a short help screen
-
-
- SysIcons
-
- This program can change system pointers. It is mainly an GUI interface to
- WinSetSystemPointer() function, so don`t expect too much :-) Anyway, it has
- some advanced features such as editing pointers (using OS/2 Icon Editor) and
- also allows you to choose the method for storing pointers - you can either
- store into INI file an reference to an external file (so you must not move or
- delete them) or to store the pointer image directly (so it will occupy space
- in INI file, but original files on disk can be deleted after this).
-
- The interface is quite simple; I`ll describe here only some features that you
- may not understand.
-
- The Icon Filename field displays the full name of pointer file which OS/2 uses
- at start-up to load currently selected system pointer. If pointer is stored
- directly into OS2.INI file it will say so.
-
- The "Store icon directly/Use file reference" field lets you choose the method
- which SysIcons will use to store icon reference into INI file. This will work
- only for those icons which you have changed AFTER setting this button. If
- "Store icon directly" button is active, you can load icons and then remove
- them - they will not be used by OS/2 at start-up.
-
- The "Change" button displays the standard file dialog and lets you choose
- another icon instead of highlighted.
-
- The "Load Set" button lets you load an entire pointer set instead of loading
- each file separately. Note that sysIcons use an different from "System
- Setup->Mouse->Pointers->Load set" method: it uses an plain text file with
- extension .SET which defines one or more pointer replacements; OS/2`s setup
- uses hard-coded filenames (i.e. ARROW.PTR will always be the default mouse
- pointer). The format of .SET file is as follows:
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- ; Everything after an semicolon is ignored
- ; Use semicolons to include comments into .SET file
- ARROW arrow.ptr ; This statement defines the file
- ; containing the default mouse pointer
- TEXT text.ptr ; -//- the text-editing pointer
- WAIT wait.ptr ; -//- the WAIT mouse pointer
- SIZE ; Empty lines resets pointer to default value
- ; The SIZE pointer is valid only in OS/2 v2.x
- MOVE move.ptr ; This is mouse pointer when moving a window
- SIZENESW sizenesw.ptr ; arrow from North-East to South-West
- SIZENWSE sizenwse.ptr ; North-West to South-East
- SIZEWE sizewe.ptr ; West to East
- SIZENS sizens.ptr ; North to South
- APPLICATION applicat.ptr ; Default icon representing an application
- INFORMATION info.ptr ; The icon displayed in Information messages
- QUESTION question.ptr ; The icon displayed in Question messages
- ERROR error.ptr ; The icon displayed in Error messages
- WARNING warning.ptr ; The icon displayed in Warning messages
- ILLEGAL illegal.ptr ; The Illegal Action mouse pointer
- DEFFILE file.ptr ; The default icon representing a file (?)
- DEFFOLDER folder.ptr ; The default icon representing a folder (?)
- MULTFILE multfile.ptr ; Multiple-file selection icon (?)
- DEFPROGRAM program.ptr ; The default icon representing a program
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Along with SysIcons I supplied three sets of system pointers: two of my own
- design (although some of them I collected from miscelaneous sources) and one
- of an unknown author (sorry) but that I like most. Hope you like them :-)
-
- The "Edit" button stores pointer into a temporary file (if it is not a file
- reference) and launches Icon Editor. After Icon Editor ends the file is loaded
- back into INI file.
-
- The "Undo" button does what you expect :-) But if you moved the highlight bar
- after change, you cannot undo the change anymore.
-
- The "Default" button does what you expect: it changes pointer to its default
- shape.
-
- The "Quit" button is the coolest feature of my program: hope you like it :-)
-
- ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Title page | Introduction | Features | Command-line switches | Configuration
- file | Error messages | Bugs and limitations | Thanks... | Author info
-
-
- ΓòÉΓòÉΓòÉ 1.13. whatsnew.txt ΓòÉΓòÉΓòÉ
-
- -------------------------
- lxLite revision history
- -------------------------
-
- [;] Comment
- [*] Modified
- [+] Added feature
- [-] Removed feature
- [!] Bug fix
-
- 1.2.1
- ----- 17-Aug-97 small bugfix
- [!] Improved handling of filenames with forward slashes instead of
- backslashes
- [!] (yet again :-() changed the 'already packed' detection algorithm.
- The problem with it is that lxLite does not put any kind of
- 'fingerprint' into processed files so I have to decide whenever
- it has been processed or not only by side effects.
- [*] Made noEA's output a bit quieter. Now without /V option noEA
- shows all file names in one line and with /V option noEA advances
- to next line only for those files that has EAs.
- [!] chCase is back now! I understood why chCase messed up filenames
- when codepage was 437 :-( Sorry to those who had to reformat
- their HD to get rid of messy filenames ;-( it is mostly IBM`s
- fault, not mine. This sometimes breaks HPFS's filename BSP tree
- and makes files totally unreachable, undeletable etc.
-
- 1.2.0
- ----- 10-Jul-97
- [!!!] Mega-bug fix :-) I caught a very serious error in lxLite. However,
- I`ve encountered it only on GNU C++ compiler executable when I
- tried to pack it using RLE (/c:ver2x) method, so it is not too
- probable that you seen it before :-) The problem was following:
- for some unknown reason the guys at IBM decided that whenever a
- packed page is bigger than 0xFFC bytes, it is an error. To understand
- this, I had to dig through the OS/2 kernel (whew!). So if the
- compression ratio for some page was really worse (this happens much
- seldom on EXEPACK2 (LZ) method since it packs better, and often on
- RLE method since it sucks), the page was simply missing at its
- memory location (!). In such cases a record is added to POPUPLOG.OS2,
- looking very unusual (no registers, no location etc).
- [!] noEA will not bomb out anymore when it tries to process a completely
- locked file (i.e. ea data. sf).
- [*] In some situations (very high ordinals in entry table) lxLite began
- to eat lots of memory, and this usually terminated with an
- out-of-swap-space trap :-( Fixed.
-
- 1.1.9
- ----- 10-May-97 Upgrade for version 1.1.8
- [*] lxLite is distributed now under GNU General Public License (GPL).
- [*] lxLite`s documentation is now in both .HTML and .INF format
- (the .INF book is converted for your convenience with HTML2IPF).
- [!] Oooooops! I`ve left a debug sequence in fixup packing section,
- so really fixups were packed ONLY at page N20! :-)
- [*] Added a little tolerance to minor (and even severe) bugs in fixip
- table which could lead lxLite to display an 'invalid fixup record'
- message.
- [*] More tolerance to incorrect debug information (exceeds executable,
- encountered on FASTECHO/2 1.46).
- [!] Yet again improved 'already-packed' modules detection :-)
- [+] Added the /C{+|-} option for those with a B/W monitors
- [+] Added the /CS{+|-} option for those who prefer writing to stdout.
- Actually lxLite isn`t entirely an stdOut program, it still uses VioXXX
- to do some things, notably get console width and height. You can put
- this option in the [default] section of config file to force lxLite
- always write to stdout.
- [+] Disabled the progress bar indicator when StdOut is redirected. Now
- you can use lxLite >alternateLogFile without getting much garbage.
- Try lxLite * | more :-)
- [!] Captain Nemo`s INI file (NEMO-OS2.INI) has a perfect NE executable
- structure :-))) so I added NEMO-OS2.INI to the list of excluded files.
- [+] Added ability to apply (/MFA{+|-}) fixups since some executables
- (observed on FASTECHO2.EXE - written using Borland C++ for OS/2)
- were linked without /BASE: linker flag which leads to slower loading
- times and bigger executables without need since executables are
- always loaded at 0x10000. This option work only for .EXEs.
- [*] Now the /V flag works *after* lxLite processes module, so you will see
- the *final* result of conversion, not the *original* module information.
- Of course, you can still see the original if you`ll disable all lxLite
- processing (the /C:info switch will do it for you).
-
- 1.1.8
- ----- 01-Mar-97; well, its THE time for a new release :-)
- [!] Fixed a serious bug in run-length packing method: the kernel
- decompressor expects two zeros at the end of packed data and lxLite
- didn`t put them there. The bug is since first lxlite release, so if
- you previously encountered problems (especially using /C:Ver2x switch)
- you should try to re-pack damaged modules (lxLite will correctly
- unpack even "incorrect" modules, then will correctly pack them).
- Big thanks to Vallat Christophe for pointing out this bug.
- [+] Now to reply to any question you can instead of pressing simply
- [L]etter press <Alt>+[L]etter which will set the default reply for
- all following similar questions.
- [+] Added the /MF3 fixup packing method which will find the best
- alternative for each page between /MF1 and /MF2. However this is
- a bit slow and does not give too much gain, so default is still /MF1.
- [!] Fixed a serious bug in /MF2 packing method. Lucky for you, previous
- version was not public.
- [*] Now you cannot proceed module along with displaying module structure
- (i.e. /V option has priority over any other).
-
- 1.1.8g
- ----- 15-Feb-97, a year from first public release :-)
- [+] Added some extra gain since now all fixed-up locations are filled
- with zeros before packing. For modules with pre-applied fixups this
- operation is not performed.
- [+] Added fixup packing method for Warp 4.0 (3.0 with fixpack #17) and
- above (/MF2). This option is still at beta-test stage, so use with
- care (by default it is disabled now). Anyway, this method has proven
- to be less effective sometimes than /MF1 with above correction.
- And note that on most executables this method will have absolutely
- no effect: it is primarily intended for DLLs. Also note that when
- fixup packing is enabled, the /U{+|-} option is ignored - module is
- always unpacked first. The /MF2 option is ignored for modules with
- pre-applied fixups (for example DOSCALL1.DLL).
-
- 1.1.8b
- ----- 25-Jan-97, my birthday :-)
- [;] WARNING: This is a PUBLIC BETA version; it still contains bugs,
- especially in NE->LX conversion routines. USE WITH CARE.
- I tested it for about a month, and found THREE executables on which
- lxLite fails to convert (i.e. didn`t convert right from NE format
- into LX): please avoid them:
-
- - OS2DASD.DMD with beta support for HPFS on removable drives
- (other versions converts OK): halt on reboot with a "Unable to
- operate your hard drive" message.
- - RESOURCE.SYS from Warp 4.0 GA: Trap 0D on first keypress after
- it is loaded.
- - ES1688.SYS driver for ESS-1688 soundcard; trap when loading.
-
- I do not understand why this is happening; everything seems ok,
- but something is wrong :-( That`s why I`m releasing this public
- beta version: PLEASE REPORT ME ANY CASES WHEN LXLITE FAILS.
- Contact information is available at the end of LXLITE.ENG file.
-
- [*] Changed configuration file format: now it is Unix-alike, i.e.
- configuration option is defined using square brakets, for
- example [default]; next lines are interpreted as command-line
- options that are loaded when loading specific section.
-
- [!] Fixed two bugs in NE fixups conversion routine: this possibly
- caused most of failures when converting NE modules before.
-
- [+] Added exclusions and additional-options-based-on-filemasks needed
- to entirely compress Watcom C subdirectory without losing
- functionality of any executable.
-
- [*] Added the /NR switch; now lxLite will fail to convert NE files that
- contains resources; use the /NR option with care, especially on DLLs
- since you must know what executables uses that DLL and which
- function (Dos16GetResource or Dos16GetResource2) they`re using
- to load resources.
-
- 1.1.7b
- ----- internal release
- [;] Now lxLite converts NE executables into LX. Uhhh! Lots`o`work done.
- Lots'o'things changed. Lots'o'options added. Some options has been
- renamed, some merged into one, so read at least following info before
- trying new version.
-
- [*] IMPORTANT: Now all options that can be followed by a string
- (i.e. file name, configuration ID) must have a semicolon before
- string, i.e. /C:default, /L:mylog etc.
-
- [*] IMPORTANT: I changed a lot of options to make them more mnemonic:
- The /D option now is called /E ([E]xclude); /E option has been
- renamed into /R ([R]ecursive); /R option has been added to /A
- option (which still works in old way (say /APS); you also can
- directly specify new page shift count i.e. /A:4; you can use
- them both ways i.e. /APS:4);
-
- [*] Changed a lot of internals so it it possible for some bugs to appear.
-
- [*] If you choose to load a specific configuration, and configuration
- file contains more than one line that matches that config ID,
- lxLite will load all such lines, not only the first as before, so
- you can split very long configurations into some number of lines.
-
- [*] Removed from configuration file options /C:failSafe, /C:fast,
- /C:fast2 because they`re useless: experience shows that executables
- packed with /C:default loads and works faster.
-
- [!] Increased stack space: small stack space is very like to cause all
- those strange crashes of lxLite on deep directory trees.
-
- [!] Some minor memory leaks has been fixed
-
- [+] Added functionality to VERBOSE mode: now you can specify what kind
- of information you want to see. lxLite can serve as an replacement
- for EXEMAP and EXEHDR programs :-) More detailed descrition you can
- find in documentaion (English only, the German docs refers to version
- 1.1.5). For displaying exported entry points, fixups and forwarders,
- lxLite now knows a lot of API functions by name. Today lxLite knows
- by name all documented API functions in all base OS/2 dynamic-link
- libraries. You can add your own - see the resources in API\
- subdirectory.
-
- [+] When displaying long texts (i.e. /V{...} option, help text) lxLite
- will use a kind of 'MORE' prompt.
-
- [+] Bundles of entry points now are re-packed although seems that in
- most cases they are packed well.
-
- [+] Fixup records now are also re-packed, although in most cases they
- are already compressed. If you run lxLite on a previously packed
- file (with earlier versions) and you get some gain, it means that
- fixup records (or entry points bundles) has not been packed at
- the maximum possible level. If you got BIGGER files, please
- let me know :-)
-
- [!] Corrected a bug which leaded to loss of non-resident name table
- (usually it contains executable description) with a message
- 'LX file contains extra bytes' when it isn`t.
-
- [+] Improved a bit 'already-compressed' executables detection.
-
- [+] Added the /J option to change executable type: use it for
- converted NE drivers since NE drivers are marked as DLLs; LX
- drivers always must be marked as Device Drivers, otherwise they
- will not load successfully.
-
- [+] Added the ability to use some specific configuration options
- for filenames that matches specific filemask. For example,
- if in configuration file you`ll specify the entry:
- @a*z.c?$: /B
- this will enable backups for files that matches the "a*z.c?$"
- filemask, i.e. aaaz.cc$, abcdefgz.ca$ but not for the bcde.cc$.
- A side effect of this is that you can encounter a option syntax
- error in the middle of the process, not only at the start.
-
- [+] Improved a bit the /L option: now you can choose which types
- of events you want to log; be careful: now the log filename
- MUST BE SEPARATED BY A COLON from /L{...}, i.e. /L:"log file"
-
- [+] Improved the /B option: now you can choose to backup only in
- the cases when module contains e[X]tra or [D]ebug data. Also you
- can choose to place backups in a certain directory; for example
- with the /B:bak option lxLite will place all backed up files
- into the \BAK\ directory on the current drive, recreating
- the same directory structure as the original file was placed in.
-
- [*] The /G option has been merged with the /O option; the /G option
- now is gone.
-
- [+] Modified the /W option: in the /WS+ state lxLite will perform
- just like always, except that it won`t write output file (and
- will display compression rate too unlike in the /W- state).
-
- [*] lxLite utlity pack: version of utilites now will be the same as
- for lxLite. So all enclosed utilites (chCase, noEA etc) now have
- version 1.1.7
-
- [*] Options in utilites changed according to changes in lxLite:
- recursive search changed from /E to /R etc.
-
- [+] ChCase: The option /C{...} has been extended: now you can define
- separate rules for [F]iles and for [D]irectories: The /CF{...}
- switch will define case conversion rules for [F]iles and /CD{...}
- switch will define them for [D]irectories. If used in old fashion
- (i.e. /C{...}) it will work both for files and directories.
-
- [!] Both chCase and lxLite when processing a file with no attributes
- (i.e. attrib -a-h-s-r) will set the Archive flag.
-
- [-] Removed ColMng from lxLite utility pack because of its usefulness
- and excessive complexity for most users :-)
-
- [+] Added/changed a whole lot of other things I don`t remember now.
-
- 1.1.6
- ----- internal release
- [-] Removed sources from base distribution. The sources are still
- available on request (see docs for "how to contact" information).
- This was done since they grow in size very fast (they use some of
- my external libraries - a function-two from each) and not too much
- people really needs them.
- [!] Fixed a bug - the /GX{#} option worked only in /OX+ state
- [*] Improved a bit help on /O{G|D|X} option
- [!] Fixed a number of minor bugs in error-correction logic
- [*] Changed default option in unLock from /V+ to /V-
- [*] Changed default option in chCase from /V+ to /V-
- [*] Before unlocking file all utilites saves now file date/time;
- after unlocking they`re restoring date & time, although this
- is an overkill (?).
-
- 1.1.5
- ----- 19-Jun-96 another bug fix :-)
- [!] AT LAST! The famous `cannot open configuration file` bug fixed :-)
- The problem was that CMD.EXE puts in environment the command line
- that you used to start lxLite AS-IS while 4OS2 replaced it by
- fully-qualified lxLite filename followed by its command-line
- parameters. I used it to compute lxLite`s source path; however
- program`s environment contains ANOTHER fully-qualified filename
- path which I use now :-) and which is ALWAYS fully-qualified.
- [+] Because nobody understands how the /G switch works (I got a lot of
- e-mail regarding this) I added a new switch: /O{X|D|S}{+|-}. If it
- is disabled (/O-, default state) the /G switch works as before, i.e.
- the data is written only if discarded from source file. If the /O+
- option is used, the data is written always (if filemask is specified
- by /G option).
- [!] Fixed an non-serious bug in CRT.PAS - now lxLite works as expected
- even if it is redirected into a device other than CON (i.e. /dev/nul),
- not only into files or pipes.
- [+] After a lot of thougts I added into lxLite utility pack my first PM
- program for OS/2 - SysIcons. It is an simple program which allow you
- to change system pointers (including but not limiting to mouse pointers,
- as System Setup->Mouse->Pointer does). Also I included three of my best
- sets of pointers - one which I partially designed myself, partialy
- aquired from different sources, second is the B&W version of first
- and third (white gloves) which I got from somewhere and converted to
- B&W (because on my Cirrus Logic B&W pointers are supported by hardware
- and does not flicker). Sorry to the author of White Gloves set, but I
- lost original archive and copyright notice; I hope you`ll excuse me.
- [!] Improved a bit error checking; previous versions sometimes (seldom)
- failed on almost-good-exe-files (specifically GVPM.EXE which had one
- of non-mandatory internal table beyond the limits of EXE files which
- caused lxLite to fail with an runtime error).
-
- 1.1.4
- ----- 14-Jun-96 minor fixes & additions
- [!] Fixed displaying the question about extra LX data - I forgot to add
- an carriage return after it. Also I removed the warning about the
- possibility that resulting file will become non-functional.
- [!] Fixed a stupid bug (sizeOf(F) instead of fileSize(F)) which sometimes
- forced lxLite to discard debug info even if you specify to leave
- it in resulting file. In such cases lxLite displayed that file
- has X bytes of extra data and the same amount of debug info.
- [+] Added an sub-option for /G[X|D|S]{#} - the /GX option now specifies
- the filemask for files where to store stubs (even if lxlite won`t
- remove them).
- [!] Fixed a minor bug in lxLite - when file was already processed but
- stored with debug info and you process it again and choose to discard
- debug info it refused to do it because `file was already processed`.
- [!] Fixed a serious bug - the /G option in version 1.1.3 DOES NOT DO WHAT
- YOU PRESUME :-) It stored garbage instead of debug/extra data.
- [*] The option /GX*.$x$ is used by default. This was done for those
- executables which failed to run after packing because the extra data
- has been stripped. Use COPY /B {file}.exe+{file}.x {newfile}.exe
- command to append extra LX data back - in most cases this will
- restore the functionality of LX files. Note that now lxLite leaves
- those *.$x$ files as garbage, so don`t forget to test the executable
- functionality and to delete them if executable still works.
- [*] Improved performance of ChCase - now when computed filename will
- be the same as initial file will be simply skipped.
-
- 1.1.3
- ----- 28-May-96 fixes & changes
- [*] Modified lxLite to redraw its progress bar only when it really changes.
- This may improve its execution speed when running it in windowed
- sessions (however I don`t use them :-)
- [+] Added option /G[X|D] which specifies an file mask for files where to
- store the e[X]tra LX data and [D]ebug info when encountered and if
- user chooses to discard it.
- [+] The /S switch now displays the status of the /I switch also.
- This is done for those who don`t believe that it always works
- (you know who you are :-)
- [-] Removed the /O{#} option which has proven to be useless.
- [-] Removed the old /D{+|-} switch (debug info remove on/off). Now lxLite
- prompts the user if the debug info is encountered; however the default
- behavior is to discard debug info (/YDD) as before. Now /D switch have
- other meaning (see below).
- [+] Added (other) /D switch to set exclusion filemasks. Filemasks uses the
- same rule as OS/2 does (in fact, lxLite uses OS/2 API to do that).
- For example, /Dex*re.??e:*.zip:*.pas:*.obj will exclude these files
- from lxLite`s field of view. The default configuration now includes
- the [exclude] configuration which excludes all known executables
- on which packing cannot be performed (such as PMJPEG, Watcom C etc).
- Masks should be separated by ':'; the ',' and ';' symbols can be
- present in HPFS long filenames, so they aren`t taken into account.
- [+] The /Y switch is modified (expanded). Now you can specify answers
- for each type of possible questions separately. The /Y switch must
- be followed by a letter - ID of answered question, then a letter -
- what do you want answer to be to that question. The possible IDs
- for now are:
- -----------------------------------------------------------------------
- Module is in [U]se (answers: [R]eplace, [S]kip or [A]bort);
- File contains [D]ebug info ([D]iscard, [L]eave, [S]kip or [A]bort);
- File contains e[X]tra data ([D]iscard, [L]eave, [S]kip or [A]bort);
- .[B]AK file already exists ([O]verwrite, [N]o backup, [S]kip or [A]bort);
- Confirmation (/P+) ([P]rocess, [S]kip or [A]bort);
- -----------------------------------------------------------------------
- For example, the /YUR switch will instruct lxLite always to replace
- modules which are in use. The defaults are: /YBN /YDD and /YXD.
- [+] Added /L{#} switch to specify an [L]og file name. If no filename is
- specified, the log file will be created as lxLite.log in the same
- directory as lxLite.exe. The log file contains a list of processed
- files, their initial and final sizes, and also all problems (if any)
- which have been encountered when processing the file.
-
- 1.1.2
- ----- 22-May-96 minor additions and changes
- [;] The BOXER for OS/2 APAR is closed now :-) At last I downloaded it
- from hobbes and it works packed absolutely without any problems.
- This is due to the effect of `overlayed data` for which support
- has been added in version 1.1.1.
- [+] Added an alternative [D]iscard choice when prompting for an action
- when data out of LX structure is detected. Some DLL`s (even from
- \OS2\DLL) seems to contain some garbage after end of LX file.
- [*] Changed memory allocation strategy - now memory manager allocate
- memory in 64K chunks which can fix the problem of slow performance
- on low-memory machines (8mb and less) when processing large files
- (i.e. TUTORMRI.DLL). I can`t check this - please mail me if it works.
- [*] Changed backup strategy - now lxLite always make .BAK file even if
- backups are disabled (/B-). If operation succeeds and backups are
- disabled it is then removed. No more `$lxlite$.tmp` file.
- [*] Now lxLite says '(very!)' in phrase
- 'It is (very!) possible that resulting file will be non-functional'
- only if the size of data out of LX structure is bigger than 256 bytes
- (this can be changed by /O{#} option /see below/). If overlay size is
- bigger and /Y+ switch is specified file is skipped otherwise overlayed
- data is [D]iscarded.
- [+] Added /O{#} option which allows to specify threshold size for overlay
- data. All overlays less than this value are discarded with /Y+ switch.
- For more information please refer to english documentation.
- [*] Modified defaults - now lxLite by default doesn`t pack using
- run-length method AT ALL (i.e. as if you specified /MRN switch).
- That is because I hadn`t found even a case when using this method
- lxLite produced packed files by at least A BYTE less in size.
- Instead it compresses now A LOT faster.
-
- 1.1.1
- ----- 07-May-96 bugfix
- [!] noEA and chCase v1.0.0 does not work on directories - they says that
- the module is in use. Version 1.0.1 is fixed.
- [!] lxLite, noEA, unLock and chCase leaves sometimes garbage on screen
- especially when processing long subdirectories. Fixed.
-
- 1.1.0
- ----- 06-May-96 some additions + minor bugfix
- [*] Change in version numeration: Now version numbers conforms to GNU
- standards. The first is major release number; second is minor release
- ordinal and third is incremented only on bug-fixes.
- [!] Now lxLite checks for a valid MZ header in DOS executable stub.
- [!] Fixed: lxLite stops sometimes after trying to `pack` locked files
- (i.e. swapper.dat) with a runtime error. The cause was a bug (sic!)
- in DosEnumAttribute - when you issue it on a locked file it trashes
- memory AFTER buffer passed to it (in my cause this trashed the stack).
- [+] Now lxLite understands quoted long complex filenames on the command
- line like most OS/2 commands do. I.e. you can write
- lxLite "my own subdirectory\my executable file.exe" /cmax
- [+] Added option /Q - query list of configurations.
- [+] Added option /I{+|-} - Run/don`t run at idle priority
- [+] Added detection of `overlayed` executables (usually from Watcom) -
- for more information see English documentation.
- [+] Added `lxLite utility pack` which now consists of:
- - unLock which allow to unlock `locked` executables
- - chCase which allow to automatically change case of individual
- filenames as well as of groups of filenames
- - colMng is a simple utility to manage your WPS color palettes
- - noEA which allow to remove extended attributes from files
- and directories
-
- 1.01
- ---- 23-Feb-96 minor bugfix
- [!] Bugfix :-) in v1.00 docs I erroneously stated that Alice was born
- at 13-Feb-96; however the real date is 12-Feb-1996 :-)
- [!] Now lxLite preserves not only timestamp but also file attributes.
- The version 1.00 erroneously stated that file is used by another
- process in the case lxLite failed to access it because of read-only
- or system attribute.
- [!] Fixed: lxLite preserves now extended attributes of the file. Sometimes
- EAs are useful, although mostly occupies disk space :-)
- [!] Fixed: lxLite now COPIES file into/from backup copies instead of
- renaming them: this caused the WorkPlace Shell to track such operations
- and to change the `program filename` field in program object.
- [*] Now /R{#} option can be used to re-align pages even on 1 (byte)
- boundary. This will get some extra bytes, however LINK386 does not
- allow this value to be less than 4 (but OS/2 eats it) - use at your
- own risk.
- [-] Removed `Switch-to-foreground-when-asking` feature. This was
- implemented rather as a lab work than a useful feature :-)
- On the other hand, the version with this feature must use
- PMSHAPI.DLL which is not always available (in particular when
- booting from OS/2 repair/installation diskettes).
-
- 1.00
- ---- 15-Feb-96 first release version
- [!] When an invalid page is encountered don`t exit with an error but
- check first if this page is used. (Encountered on npswpsri.dll 1.81).
- This is an invalid executable; however error is not fatal because
- page isn`t used and OS/2 loads that DLL without problems.
- [!] Now lxLite keeps and restores original executable timestamp.
- [!] Fixed an error when OS/2 locks up on some DOS executables because
- it contained a 0 at offset 3Ch in DOS EXE header.
- [*] Changed format of .CFG file. Now it is a plain ASCII text file. For
- details refer to documentation, section about options.
- [-] Removed /D# option - use a text editor to add new cfgs.
- [+] Added /D{+|-} option allowing to remove debug information.
- [+] Added ability to recognize files packed with ABSOLUTELY THE SAME
- options, so lxLite will not proceed the same file twice. "The same"
- means that files will be recognized as packed ONLY if it has been
- processed with the same switch(-es) which influence resulting file
- size. Use /F+ (see below) switch to bypass this detection if you
- want to process file anyway - for example if it has been already
- packed, but not so good as it can be, i.e. by LINK386 or REPACK.
- [+] Added /F{+|-} option allowing to force repacking even if lxLite
- thinks that it is not needed. Use to bypass autodetection (`already
- processed' message).
- [+] Added /T{#} option allowing to replace DOS stubs. Use /T alone to
- completely remove DOS stubs - useful for DLLs `cause they cannot
- be run from DOS session at all.
- [+] Added ability to replace even USED! i.e. `active` .DLL`s and
- executables. Now you can repack entire \os2\*\*.* subdirectory
- without having to do a clean boot. Note that you better reboot after
- such operations because OS/2 will throw away all its internal cache
- buffers for this module and it (i.e. its old copy) will be kept
- entirely in memory/swapfile.
- [+] Now lxLite runs at the idle:16 priority so it won`t overload your CPU.
- [+] Now when lxLite encounters a problem to which he needs your answer he
- brings itself to the foreground. The only thing to say about it is:
- because of that lxLite uses now PMSHAPI & PMWIN.DLL, so it most likely
- will not run under T-Shell. Because of that there are TWO supplied
- versions of lxLite: lxLite-T.exe and lxLite.exe. Delete first if you
- will not need lxLite with a clean boot.
- [+] Added /Z{#} option which defines the threshold for lxLite to separate
- programs with `functional` stubs such as dual-mode executables from
- 'dummy' stubs. Default size is 1024 bytes, i.e. on all executables with
- stub size bigger than 1024 bytes the /T{#} option will have no effect.
-
- 0.99b
- ----- 07-Feb-96 beta-test version
- [;] What`s new? Nice question :-)
-
-
- ΓòÉΓòÉΓòÉ 2. External links ΓòÉΓòÉΓòÉ
-
- This chapter contains all external links referenced in this book - either link
- is an Unified Resource Locator (URL) or simply to a local file which is not a
- part of this book.
-
-
- ΓòÉΓòÉΓòÉ 2.1. http://hobbes.nmsu.edu ΓòÉΓòÉΓòÉ
-
- The link you selected points to an external resource.
- Click the URL below to launch IBM Web Explorer
-
- http://hobbes.nmsu.edu
-
-
- ΓòÉΓòÉΓòÉ 2.2. http://www.anybrowser.org/campaign/ ΓòÉΓòÉΓòÉ
-
- The link you selected points to an external resource.
- Click the URL below to launch IBM Web Explorer
-
- http://www.anybrowser.org/campaign/
-
-
- ΓòÉΓòÉΓòÉ 2.3. mailto:bit@freya.etu.ru ΓòÉΓòÉΓòÉ
-
- The link you selected points to an external resource.
- Click the URL below to launch IBM Web Explorer
-
- mailto:bit@freya.etu.ru
-