RosAsm_Outputs ..
This is a bit ridiculous, but given the actual Anti-GPL Propaganda, it seems necessary to say this:
RosAsm License is GPL. This does not mean that the Applications that you develop with RosAsm are necessarily GPLed. All Templates, examples, Tutorials, Documentations and demos coming along with RosAsm, unless otherwise stated, are to be considered Public Domain.
You can release your own production, even if you used RosAsm Source as a wide Template Collection, under the License you want.
The only important things to me, with RosAsm being GPL, are that:
RosAsm cannot be distributed without its Source and License (this help File).
If you want to reuse or modify RosAsm for another GPL Distribution, you are allowed to.
If you want to reuse a complete Component of RosAsm (for example, the Disassembler Engine as a base for your own Tool(s) developments), you are allowed to, but only under the GPL.
~~~~~~~
RosAsm General Public License
Version 1.0, 31 January 2.004
This is the official license for the RosAsm Project.
Released versions: 1.12d; 1.12c ; 1.12b ; 1.12a ; 1.11b ; 1.11a ; 1.10e ; 1.10d ; 1.10c ; 1.10b ; 1.10a ; 1.9c ; 1.9b ; 1.9a ; 1.8d; 1.8c; 1.8b ; 1.8a ; 1.7c ; 1.7b ; 1.7a ; 1.6b ; 1.6a ; 1.5c ; 1.5b ; 1.5a ; 1.4a ; 1.3a ; 1.2a; 1.1a. Former project - Spasm: 4.15j ; 4.15i; 4.15h; 4.15g; 4.15f; 4.15e; 4.15d; 4.15c; 4.15a; 4.14b; 4.14a; 4.13e; 4.13d; 4.13c; 4.13b; 4.13a; 4.12g; 4.12f; 4.12e; 4.12d; 4.12c; 4.12b; 4.12a; 4.11e; 4.11d; 4.11c; 4.11b; 4.11a; 4.10e; 4.10d; 4.10c (V.E. Experimental Version); 4.10b; 4.10a; 4.09b; 4.09a; 4.08c; 4.08b; 4.08a; 4.07c; 4.07b; 4.07a; 4.06b; 4.06a; 4.05e; 4.05d; 4.05c; 4.05b; 4.05a; 4.04e; 4.04d; 4.04c; 4.04b; 4.04a; 4.03a; 4.02c; 4.02b; 4.02a (V.E. Experimental Version); 4.01c; 4.01b; 4.01a; 4.00c; 4.00b; 4.00a; 3.08c; 3.08b; 3.08a; 3.07e to 1.01; 1.00
a) History of the Software
SpAsm - The Specific Assembler - was created in the September 1998 by René Tournois (also known as Betov), which was maintained and supported by him until 24 July 2003. It was then continued with its successor, RosAsm. René is RosAsm's principal author, although it includes many contributions from others. The very first version of the former Spasm project was built in 16 bits using the free version of a shareware assembler called A86/A386, from Eric Isaacson. With the help of this remarkable program, René continued improving his programming skills until he faced the world of 32 bit programming. In less then Two years, he migrated from A86 to the ASM32 assembler - by Intelligent Firmware Ltd -, whose simplicity, flexibility and very reliable overall performance for system programming, helped him to develop his own, independent and free assembler made entirely in 32 bits. In July 2000, Spasm 1.00 was born.
Since then, René continued his work, for several years, almost alone, releasing several versions of the Software. All versions released were maintained and developed under the GPL rules, in order to give to the assembly community a new and powerful tool, and for mankind in general, a free gift that can be used to improve their lives wherever possible by the continuous development of high technologies making them available to the public. In time he gained contributors that helped to improve his assembler.
Spasm 4.15j ,was the last of the versions released and maintained by René. On 24 July 2003, he decided to take a higher step toward advancing the benefit of Assembly Language and the free programming community. Concerned about the ongoing of the Software and his constant efforts in keeping with his ethical and political views, he left the project. From that remarkable day, RosAsm was born!
RosAsm 1.1a was the first version from the renewed Software, released on 27 July 2003.
RosAsm 1.13 is basically the same as RosAsm 1.12, with a few minor bug fixes, and with a license that enables later versions to be GPL-compatible. All versions of RosAsm are a derivative work of all previous releases of SpAsm, except from it's version 4.15k (and newer) which are being developed and maintained by independent contributors.
Thanks to the all volunteers who have worked under René's direction to make these releases possible.
b) Preamble
RosAsm General Public License is intended to guarantee your freedom to share, change and redistribute free Software, making it free for all its users. This Public License applies to all of RosAsm's Software and to any other program whose author commits to using it, and it is also covered by the official GNU General Public License, whose copy is released with ours.
You are free to apply this License in your programs, although you may need to adapt it to your Software usage and development, or if you prefer you can use the official GNU Generic Public License or the Lesser General Public License, or others related to free licenses available on the Free Foundation website.
The term 'free Software' used on this license, refers to freedom, not price. This License was 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 give or receive source code or can get it if you want it, that you can use or change the Software or use pieces of it in new free programs; and that you know you are allowed to do these things.
To protect your rights, this license contains clauses that prevent you from anyone who eventually tries to deny you these rights or to ask you to surrender to their rights. These precautions translate to certain responsibilities for you if you distribute copies of the Software, or if you modify it.
If you distribute copies of this program (or parts of it), 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.
c) Reverse Engineering
One of the features of the software is a disassembler that is being developed to help the user to recover his/her source code, in cases of loss of data or document or damages on the original source he was working with, but also for helping him to translate his/her application from a computer to Asm, to be used in RosAsm.
A disassembler is a tool that is used as one of the techniques for reverse engineering a program, in order to analyze or study the application, finding how it works, either it is used only for educational purposes, either for building or improving his/her own application, either it was built in assembler or in other languages.
This feature inside RosAsm is intended to help the user have more control on the applications he is building, and even helping him to learn how to migrate to a language that he is using to build his/her programs in assembly.
Reverse engineering is the scientific method of taking something apart in order to figure out how it works. This method has been used by innovators to determine a product's structure in order to develop competing or interoperable products. It is also an invaluable teaching tool used by researchers, academics and students in many disciplines, who reverse engineer technology to discover, and learn from its structure and design.
RosAsm's disassembler or other features that eventually were being built are not to be used to break any patent or copyright rights, but only should be used in applications where the user owns, or are permitted to perform the disassembler methods, or to translate his/her own sources to assembly code.
Some reverse engineering techniques require making a copy of the software being investigated, an act that would otherwise be considered a copyright violation, but, in the United States, Europe and in several other countries, copyright law has allowed these reverse engineering copies as a form of 'fair use.' Increasingly, however, contract clauses forbidding reverse engineering are included in technology licenses. Sometimes sellers include these clauses in 'shrink-wrap,' 'click-wrap,' or 'browse-wrap' licenses without enabling the user to negotiate the terms of such a license. In many instances, users are not even aware of the terms to which they are binding themselves. In the United States, for example, the proposed amendment to contract law called the Uniform Computer Information Transactions Act (UCITA), already adopted by some State Legislatures, would make these kinds of contracts enforceable, and therefore more difficult to challenge their anti- reverse engineering provisions.
When creative expression is protected by a technological protection measure, the situation becomes even more complex. The Digital Millennium Copyright Act (DMCA) generally prohibits circumvention of technological protection measures. On its face, since circumvention is generally required for reverse engineering, this prohibition would prevent reverse engineering of those measures that control access to a copyrighted work. The DMCA contains a limited exception to the ban on circumvention, which permits reverse engineering of the technology by specific classes of people for limited purposes. The exception allows reverse engineering of computer programs if the reverse engineer lawfully obtains the program, seeks permission from the copyright owner, only uses the results of their efforts to create an interoperable computer program and does not publish the results. The resulting program must only interoperate with the reverse engineered software, however, and cannot interoperate with the technologically protected content (movie, book, video game, etc.) itself. Under the DMCA, engineers may also develop programs that facilitate reverse engineering for their own use or the use of others if they meet the above test. Reverse engineers must carefully consider their planned work and whether it fits into the exception, because the exception is far too narrow to be useful for many reverse engineering needs.
Reverse engineering as a method is not confined to any particular purpose, but is often an important part of the scientific method and technological development. The process of taking something apart and revealing the way in which it works is often an effective way to learn how to build a technology or make improvements to it.
Through reverse engineering, a researcher gathers the technical data necessary for the documentation of the operation of a technology or component of a system. In 'black box' reverse engineering, systems are observed without examining internal structure, while in 'white box' reverse engineering the inner workings of the system are inspected.
Through these methods, researchers are able to examine the strength of systems and identify their weaknesses in terms of performance, security, and interoperability. The reverse engineering process allows researchers to understand both how a program works and also what aspects of the program contribute to its not working. Independent manufacturers can participate in a competitive market that rewards the improvements made on dominant products. For example, security audits, which allow users of software to better protect their systems and networks by revealing security flaws, require reverse engineering. The creation of better designs and the interoperability of existing products often begin with reverse engineering.
A common misperception regarding reverse engineering is that it is used for the sake of stealing or copying someone else's work. Reverse engineering is not only used to figure out how something works, but also the ways in which it does not work.
Ø Some examples of the different uses of reverse engineering include:
Ø Understanding how a product works more comprehensively than by merely observing it
Ø Investigating and correcting errors and limitations in existing programs
Ø Studying the design principles of a product as part of an education in engineering
Ø Making products and systems compatible so they can work together or share data
Ø Evaluating one's own product to understand its limitations
Ø Determining whether someone else has literally copied elements of one's own technology
Ø Creating documentation for the operation of a product whose manufacturer is unresponsive to customer service requests
Ø Transforming obsolete products into useful ones by adapting them to new systems and platforms
So, in general terms, Copyright does not prohibit reverse-engineering, except in the United States, according to the DCMA, where the thing being reverse-engineered is a copy-prevention mechanism. This is because copyright law is all about the making and distributing of copies. Under regular property law, once you have bought something, you're perfectly within your rights to take it apart and see how it works.
Of course, most software doesn't subject itself to such things. Thanks to a massive land-grab early in our industry's existence, back before anyone really knew what 'software' was, nobody actually buys software. Instead, you license the use of it under ludicrously draconian terms. Anyone who reads a EULA closely (and nobody really does) and looks at the masses of restrictions and arbitrary termination clauses ends up wondering whether they've bought anything substantial at all.
Norman Richards, in his work 'The ethics of decompilation', released on 03 September 2.003, already stated that the primary use of a decompiler is understanding why the code that you are using is broken
However, the above remarks do not imply that you are able to use RosAsm to disassemble or decompile, or in general terms, reverse engineer copyrighted or commercial applications.
You should use RosAsm disassembler and reverse engineering techniques exclusively in your own applications or in those that you have full authorization to perfom such operations on, or the ones without restrictions like those under the rules of the Open Source movement or are granted by the Free Software Foundations or generally speaking, are in Public Domain.
Any bad usage of RosAsm to deliberately break any copyright or patent law in any country is totally prohibited, causing the termination of this License instantly.
d) Terms and Conditions of the Software usage
RosAsm License Agreement
1. This License Agreement is between René Tournois, and the Individual or Organization ('Licensee') accessing and otherwise using RosAsm Software in source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, René Tournois hereby grants Licensee a nonexclusive, royalty-free, world-wide license to any person obtaining a copy of this Software and associated documentation files, to deal in the Software without restriction, including without limitation the rights to use, reproduce, analyze, test, perform and/or display publicly, prepare derivative works, prepare based works, distribute and/or sell copies of the Software, merge, modify, translate into another language; copy, and otherwise use RosAsm alone or in any derivative version, and to permit persons to whom the Software is furnished to do so, provided, however, that RosAsm's License Agreement and RosAsm's notice of copyright, i.e., 'Copyright (c) 1998/2004 René Tournois; All Rights Reserved' are retained in RosAsm alone, in any of it's derivative versions, in all copies of the software prepared by Licensee, and this License and the above copyright notice(s) appears in supporting documentation.
3. In the event Licensee prepares a derivative work that is based on or incorporates RosAsm or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to RosAsm.
4 - The term 'derivative works' stands for any program created using RosAsm assembler, that not necessarily will be used as an integrated part of it, but incorporates or helps the development of the software, either the Licensee builds an standalone application, a Library, documents, tutorials, demos or translation to his/her own language. For example, if the Licensee develops a standalone application or documentation that will be used with RosAsm, he/she needs to keep the source code available (or inside his/her application, or as an outside document) and insert a brief summary of the changes.
If the Licensee built a document, tutorial or help files, that will be used as an derivative work of RosAsm, obtained by research of other people's work, he should provide the source of his/her research, taking care of inserting the bibliography used, and in case of a literal transcription, he/she should mark the text with a brief note referencing the author who wrote it. These brief notes and references also apply when the Licensee wrote or did the research based on his/her own work.
5 - The Licensee is free to use RosAsm to build his/her own and independent programs, which means building a 'work based on the Program', he agrees to create them respecting all terms of this License whether the program is focused to improve the Open Source and Free Software movement, whether it is focused to Commercial applications, inserting a small reference that his/her application was built using RosAsm followed by RosAsm's notice of copyright.
6 - The Licensee who prepares a work based on RosAsm, focused on the Open Source or Free Software movement, may choose the License that best fits with his/her software, available at the Free Software Foundation, or with the RosAsm package, or build one on his/her own that is coherent to the usage it is intended to be built for.
7 - This License only covers the activities focused on the building of 'derivative version', 'derivative works', translations, building documents and others related to the improvement of RosAsm, as specified above in Sections 2, 3 and 4. Activities described in Sections 5 and 6 are not covered by this License, because they are outside its scope and therefore, needs to have their own and independent License that best fits their usage.
8. The origin of this software must not be misrepresented; you must not claim that you wrote the original software nor it's documentation.
9 - Altered source versions or documentation that were not maintained by the original author, must be plainly marked as such, and must not be misrepresented as being the original software.
10 - 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, as stated in Section 2 of this License.
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.
11 - You may modify your copy or copies of the Program or any portion of it, thus forming a derivative work or derivative version of the Program, and copy and distribute such modifications or work under the terms of Sections 2, 3, 4 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 derived 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 or works based on the program, as stated in Sections 5,6,7. But when you distribute the same sections as part of a whole which is a work derived 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 a work written entirely by you; rather, the intent is to exercize 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.
12 - You may copy and distribute the Program (or a derivative work or version of it, under Sections 2,3,4) 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.
13 - You may not copy, analyze, use, 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.
14 - 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 derived 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.
15 - Each time you redistribute the Program (or any work derived 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.
16 - 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.
17 - 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.
18 - 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.
19 - Anyone is free to use, distribute and perform the acts of the Program according to the terms of this License, either if the Licensee is a single person, or civil organization or institute, like schools, universities, research centers, hospitals, health centers, engineering or computer companies, non-governmental organizations, and all others related to the civil and humanitarian purposes.
20 - The License does not apply and the Program and all it's 'derivative works', 'works based on the Program' and documents, tutorials, demos and all related material, are forbidden to be used, copied, distributed, translated, analyzed, modified, and perform any of the acts described on this License, by military, Para-military, political, or any Governmental Agencies, Organizations, Institutes and related personal/staff of any Country, especially when the purpose of the usage of the Program is related to them. The personal and organizations, institutes and anyone described on this section 20, should only use this License and the program, related materials and described works, upon request, and only after express authorization of the original author, which will analyze the purpose of the requested License in each specific situation, rebuilding or adapting this License when it's needed.
21 - This Software is available to Licensee on an 'AS IS' basis. THE ORIGINAL AUTHOR OF THIS SOFTWARE AND HIS CONTRIBUTORS MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF ROSASM WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS OR CONTRIBUTORS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE OF DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 - THE AUTHOR AND HIS CONTRIBUTORS SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF ROSASM FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING ROSASM, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
23 - The original author of this software may revise this license from time to time. Each revision is distinguished by a version number. You may use this Software under terms of this license revision or under the terms of any subsequent revision of the license.
24 - This License Agreement will automatically terminate upon a material breach of its terms and conditions.
25 - This License Agreement shall be governed by and interpreted in all respects by the Federal Intellectual Property Law of France and without limitation on the French Federal Copyright Law, excluding conflict of foreign law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between neither the Software author nor it's contributors and Licensee. This License Agreement does not grant permission to use RosAsm's trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party, which means that the name of the author and his contributors shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without specific prior written authorization.
25 - Everyone is permitted to copy and distribute verbatim copies of this license document, and translating it to your country language, but changing it contents is not allowed.
27 - By clicking on an 'Accept' button where indicated, or copying, installing or otherwise using RosAsm, Licensee agrees to be bound by the terms and conditions of this License Agreement.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 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
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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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.
History: .
I began working on the RosAsm project in September 1998. The very first version was written with Asm32. I begin this history in July 2000, at a development state that allowed me to set the version number to 1.00.
V1.00 - State:
Assembler/linker/IDE
Editors for Source, Icon, Menu, Dialog
Auto-compiles its source (640,000 octets) in 16.5 seconds on K6/200//Win95
Runs under ReactOs/Win95/95/NT/2000
[V1.01 to V3.07e snipped].
V3.08a
Several improvements in the Resources 'Choice-Bar' (what enables the choice for loading / deleting Resources). This Bar now shows the ID number of the chosen Resource. It also allows exiting any of the processes by a single [Esc] hit. Useful to recall the IDs numbers.
Improvements in the Resources storage. Inside each Resources type, the objects are now sorted in IDs order, when re-compiling. This is required under the NT Family. Also, there was a bug in an internal list management that produced a hang if a Resource was deleted between two Compilations. Fixed.
When stepping with the Debugger Dialog, closing this Dialog stops the Debug Process, (instead of going on running , like it still does when hitting the [OK] Button). This may help a little bit when testing infinite loops or hanging instructions with 'Int 3' inside.
The chosen solution for saving Undo Files is that a Folder is now created by RosAsm at launch time. This Folder, always located aside RosAsm itself, is then used, whatever current Directory further definition. Two alert Boxes are added to inform user of possible problems with Blocks-Undos when running RosAsm multi-instances. (Running RosAsm multi-instances remains allowed...).
Add a test for fixing the problems encountered with CR-ending Blocks. (This happened with [Arrow] Selections).
V3.08b
Implement the possibility of declaring text (including Multi-Lines) Equates. Example:
[SomeText 'Agaga
Agigi
Agogo']
[ViewThisOne: B§ SomeText, 0]
One more Font is added to solve a problem encountered with Users Definition of 'Big Fonts' in the Win Configuration Panel.
V3.08c
Fix two typos in FPATAN and SHRD reg reg CL encodages.
V4.00a/b/c
First release with integrated Disassembler
Implementation of the TITLE feature
Coding Dialog
A couple of minor bugs have been fixed along with these implementations.
Implementation of Body Equates under the form of [MyBodyEquate < 0111, 0222, 0333 >].
V4.01a
Most PE disassembled.
Revue the design of [Home] / [End] in Source Editor.
Move the Expression Parser from after the Equates and Macros Jobs to before the Equates and Macros Job. Win Equates still allowed, but no more User Equates. This is to allow Expressions usage inside Macros Instructions.
New Macros Unfolder that now computes all of Macros and Equates because users can not understand why the unfolding may be different from the real computation when nested Equates are involved Much slower, but yet fast enough, and much better to wait a couple of seconds than having an impossible to understand result, in such complicated cases.
V4.01b
Minor improvements in the Encode / Decode Box.
Extend the Selection of Source Text, on error, to hold the whole Instruction, even with Multi-Lines ones, or for entire Blocks of Data.
Move the Expression Parser job. It is now nested in between the Equates and the Macros jobs, in order to allow Equates inside Expression and Expressions inside Equates.
Auto-clear leading / trailing Spaces inside BodyEquates (turns < eax or 1 > into <eax or 1>)
Add a test: for orphan Colons (Previously, ':' alone was not detected).
V4.01c
Minor improvements in the Dialog Editor Up/Down Controls for moving-Sizing.
Bug fix in the Dialogs Class Record holding: Odd Names was turning the Controls Data unaligned.
The displacement Bytes of effective Addresses, in the Disassembler, were branched to an unsigned Routine. Fixed.
Minor adjustments in the Disassembler String outputting.
Preview implementation of OpHelp.exe as a replacement of the OpCode Table viewing (Mnemonic Right-Click).
Minor adjustments in the Disassembler for Api Functions Pointing and for Text output.
V.E.
First implementation of the Disassembler Code Mapping, Symbolic Analyse, and Export analyses (the Disassembler is now DLLs able).
When nesting the Expression Parser calls intos Equates and Macros jobs, I broke down the error search Function for this chunk of computations. Fixed.
I wrote a particular Routine for cleaning the Clipboard content. Required because, at RosAsm Board, Sources, when formatted as 'Sources' contain a lot of weird control characters , that the Source Editor is then unable to understand, and, of course, the Assembler unable to parse. The bad thing is that, now on, Copy/Paste of any characters up to 127 will be made impossible...
V4.02b
Minor bugs fixes release of previous .02a implementations.
V4.02c
Revue of the Basic Icon search Routines. They were very old and badly organized. The Routines concerned by these modifications are: 'PeekIcon' / 'PokeIcon' / 'OpenRosAsmPe' / 'DisMain'.
A minor bug in the String outputting of the Pe Editor (Strings not visible when written at the end of the Source, without any CR/LF) is fixed.
Third version of the Disassembler Code Mapping Strategy.
Major bug able to destroy Resources fixed.
V4.03a
First version providing an opened area for volunteers who want to write Text HLL interpretation of Disassembly Sources.
Disassembler Data Strings recognition implemented.
Finish the implementation of OpHelp Check Table.
Fix a detail in the [Ctrl][Y] Line Pos management.
V4.04a
First version with external Files for Equates / Structures / Api Functions.
Fix a detail in Auto-Indent (Off >>> IndentCount to zero).
Implementation of the Styles Help in the Dialog Editor.
V4.04b
Fix a minor bug in Disassembly of LEA (wrong 'Lea reg reg' test).
Revue the way it checks for Path\FileName.ext in [new] Option.
First version with a Data Memory View in the Debugger.
V4.04c
Improvements in the Debugger memory View. (+ add of a [View More] Dialog).
Replace the 'ControlX' call by a 'ControlD' call in the [Ctrl][Y] Line deletion feature.
Cut off the Code trailing zeros analyses in the Disassembly job.
Fix a sizing problem in the TITLE feature's Tab Control.
V4.04d
Temporarily reactivate the [Symbolic Analyses] in the Disassembler (they had been made un-available since the last reorganizations of the Api Functions as external File).
Under WINE, '§' Char Marker is not properly outputted. I replace it by '$'. This does not change anything at the user input point of vue. '§' remains available for 'French-like' KeyBoards and the substitution is silently done.
Add a WineReadMe.txt in RosAsm.zip.
Disassembler: On Text ended by a zero Char, the quotes were not closed. Fixed.
V4.04e
Turn the [Search Up] / [Search Down] Double Click Menu Option 'Jump on first shot'.
Enable Dialog Class without Menu (Dialog Editor).
Multi-Lines Comments implemented.
When having both BookMarks and TITLEs, the TITLEs Tab was wrong because of calls order. Fixed.
V4.05a
General revue of RosAsm Source: A bit more HLL (replacement of the old 'CallBack' Macro by 'Proc' one, in particular). Auto-Compilation is now a bit slower because of the new HLL set, which requires one more Macros Jobs pass (17 seconds now, for the whole beast -1.700 Mo- on K6/300).
Restore the Alternate Syntaxes parsings and re organize the Comments and MLC deletions in the Assembler.
Suppress the feature for re-ordering the Local Labels on Right-Click on Block. It was too dirty and of no use.
In the Dialog Editor, rewrite of the feature for retrieving a Template from ClipBoard.
Fix the Flags problem in the Menu Editor -none too late- (When inserting or deleting an Item, the downward Items' Flags were wrongly adjusted, since....).
V4.05b
Implement a TickCount for mouse Block Selection when moving up or down: Slow to fast effect.
Bug found inside the Encoder: When testing all the Instructions one by one, I have fixed a problem for one Instruction producing a wrong code in another one. This was in the 'gg3' encoding of the PSLL / PSRA / PSRL instructions with 'imm to reg' Parameters.
A typo during the V.4.05a clean-up work perverted one of the Sub-Routines of the Memory Manager. Fixed.
Since V.4.01a/b, when the Expression Parser has been moved from before Equates and Macros replacements to inside (nested inside replacements jobs for flexibility), the Real Expressions Parser was fooled by the 'DoneFlag' (High Byte Bit). Restored.
Add a security at the end of the Buffer for the Encode/Decode Box. It was previously able to increase and overflow after several runs.
V4.05c
Error case added for Double Declarations of '&0' meaningless Automatic Labels (in macro).
Hanging bug in [Delete Menu] fixed.
Compilation 2.73 times faster. AutoCompilation on K6/300/Win95 (Source = 1.7 Mo.):
V.4.05b = 16.92 Seconds.
V.5.05c = 6.18 Seconds. (3.6 s/Mo -276 Ko/s -)
Add an Item to the Double-Click Float Menu: On Number >>> [Bases Forms], for Hexa, Decimal, Binary.
V4.05d
Add of [x] Buttons in the User Menu Edition (Configuration], for deleting Items.
Yet a bit faster (yet AutoCompilation on K6/300/Win95 (Source = 1.7 Mo.)):
V.5.05c = 6.18 Seconds
V.5.05d = 5.37 Seconds.
Re-organization of the PEs Headers building, in order to allow DLLs without Data / Reloc / Import sections, plus set the DLL Flag for DLLs in the 'PeHeaderCharacteristics' Record of the PE-Header.
V4.05e
Bug fix in Data building: The usage of Win32 Equates inside '#n' Loops returned a wrong Value, but for the first one.
Add a test in TITLE Tab for preventing from empty TITLED Chunks.
The redefinition of the default [Top] TITLE was impossible because of a bad test in the first Assembler Parser. Fixed.
V4.06a
Right-Click upon text, but not achieving in any action, was fooling the Caret Position. Fixed.
Missing delete of Multi-Lines-Comments in the Macros-Unfolder feature added.
A stupid no use test (left-over of a Copy/Paste...), for Reals, in the Expressions parser, refused to eat some Numbers. Removed.
Implement Kenny's Key-On / Key-Off Table, in order to suppress all calls to the weird Win32 'GetKeyState' Function, and in order to solve some problems under WINE (should be much more portable across the various OSes versions, including ReactOS).
Complete re-write of the two Block-Selections (by KeyBoard and by Mouse) and implementation of a new Windows-like Caret.
Implement a 'Once-for-all' translation from Win32 Equates to Hexa, in the Assembler (before the Equates and Macros jobs), and suppress the multiple downward computations for this.
Re-write of the Win32 Equates File(s) Loader:
Extend the First Char Indices Table to 256 Bytes.
Save the internal use (by the Assembler) Names and Values Tables, under the names of 'Equates.nam' and 'Equates.num'. They are compiled when not found and then saved back to Disk aside 'Equates.equ', ready for reuse, without re-compilation at the next runs.
(The Equates Loader now is ready for working with the next (huge) Win32 Equates File(s) provided by Beyond2000).
Pre-implementation (actually commented out) of an HLL pre-Parser, translating the ' == ' occurrences into the various needed Asm forms ( ; call EqualParser, in 'AsmMain'). It will be un-commented with the implementation of the OOP pre-Parser, and works like a fast and easy internal Macros set. This is the first step of the 'Non-Asm' implementations in RosAsm. (Provided commented out for advanced users tests, opinions, wishes Lists, ...).
The DLL Relocation for Api calls was missing. Added (necessary for DLL Code Relocations, in case, for example, the user gives the same base for the DLL as for the calling PE).
V4.06b
Fix an encoding error for things like 'push D§FS:+0'. (The encoding was wrong, expecting a short form for the Dis, whereas there is none for this case). Also, 'push D§0' is now made possible (without the plus char previously required).
Invalidate the Block Selection for [Ctrl][V].
Disassembler: Implementation of the Routine for translating the old Win Menu Format into the new MenuEx one, used by RosAsm. The IDs problems remains to be solved.
The 'Jmp 'DLL.Function' Instruction is made possible (for Disassembly). 'Mov eax 'DLL.Function', not yet.
V4.07a
The Mod/Rm Byte for FBLD and FBSTP was forced to 035, producing a wrong Code for FBLD T§esp and DBSTP T§esp. Fixed.
Add a [Data is Shared] Flag in the [Output] Dialog.
ReWrite of the Debug Main Dialog. Implementation of the FPU Registers. Reorganization of the downward Dialogs for MemView implementations, and add of a [View from Pointer] in order to view the Memory eventually pointed by a Variable (this is to say, one logical Level deeper than the [More...] option View).
V4.07b
In the Structures Dialog, the Stack form computation of the Structures length was wrong for Structures ended by a Table. (the table length was computed twice). Fixed.
V4.07c
Bug Fix: Align stated on its own boundary (example, Align 32 stated at a 32 Bytes boundary >>> Nothing to be done), was wrong.
Bug Fix: If the last Instruction / Last element, in a Source, was a Win32 Equate, the Win32 Equate replacement was failing (Since the last WinEquates Parser modifications).
Improvement: With 'Int 3' Debugging, the buttons validations are now automatically restored when a Variable has been selected previously (this is to save user from clicking to select an Item, at each Memory Inspector vue, when ruining again and again an 'Int 3').
V4.08a
Implement Dialog Resources saving / loading, to / from Disk.
Add a [F9] On/Off Message in the Status Bar.
Minor bug fix, in the Debugger View of FPU Registers.
V4.08b
Bug fix: No use release of 'OtherFiles' Memory when leaving.
Bug fix: Lack of Registers preservation in the Dialog for 'Other Resources IDs'.
Re organize the Messages Holding in the [Struct] Dialog.
V4.08c
TITLEs:
Loading an asm File (Source Only) with only one TITLE did not work. Fixed.
Replacement of one TITLEd-part only was not implemented. Done.
Add an error case for unexpected Separators (For example [Data: F§ 50/4], with missing parenthesis).
Add an error case for forcing declarations of Size Markers, in case of Real Expressions, in a multiple Data Set, before and after the Expressions of the whole Set.
Debugger: Modify the action of the [Close] Button. When Stepping, after some Int 3, it does no more attempt to close the Debuggee App, because under 2000, this seems impossible. So, the [Go on Running] Button, of no more any use, is suppressed.
Implement import of Functions exported by an EXE (same syntax as with a DLL).
V4.09a
Rewrite of the Api calls concerned Routines, for holding all extensions cases (not only DLLs), and allowing the short forms of call 'Function' , as long as, at least one complete version (call 'MODULE.Function') is available somewhere in the Source.
Add a case in the Disassembler Decoder, for 'Push Word Immediate'. Should never have happened, but...
V4.09b
Restore the [Save to ClipBoard] Function in the Dialog Editor -killed by the V.4.08a implementation of [Save to Disk]-
V4.10a
The Dialog Editor Styles Help was not working as expected under 2000. Fixed, and Positions improved.
Disassembler:
Complete re-write of the targeted File mapping (now loaded the way the Windows Applications Loader does it -01000 aligned-).
The 'SectionsMap' Table and the 'RoutingMap' Table are now the same size as the targeted File mapping one (Flags and File are now 'parallelized' for ease of analizes).
New strategy for pointing out Api Functions calls and Exported Functions Locations and Names.
The Resources reading is now done first (before the re-mapping) in order to keep the same RosAsm internal Routines effective, as previously.
Debugger: I have pointed out why the Debugger misbehaved when the Debuggee App was runing a ShellExecute. When the Child Process is run from the Debuggee App, the Debugger receives an EXCEPTION_BREAKPOINT and an EXIT_PROCESS_DEBUG_EVENT at launch time and at close time, dispite the DEBUG_ONLY_THIS_PROCESS Flag in the 'CreateProcess' call. Fixed. I don't know if this is to be considered a Win bug, but, even if ROS would do it another way, it should work as well, in any cases.
Add two buttons in the 'Choice Bar Dialog' for selecting the first or the last object.
Implement a little Dialog (Tools Menu Option) for translating a Data Set into the Displacements Equates set, needed for pointing Structures Members, as users seem to have some pain at emulating the way STRUCT keyword does it in other Assemblers.
Suppress the Undo limitation -was limited to one single Part- when working with Sources divided by TITLEs, and set the Undo Directory to the Win TempPath.
Encoder modifications for ADD, AND, CMP, OR, SBB, SUB, XOR, with EAX as first Member, and imm8 as second member: For these Mnemonics, encodings may have a shorter alternate form than the one I first used, when the signed imm8 is Byte Size. I have modified my initial choice in order to enable recompilations without possible corrections of the jumps sizes, after Disassembly.
Suppress the error case for Nested-Loop in Data and VirtualData Storages, in order to allow 'len' to work upon Data Sets including multiple subsets with Multi-Data (#xxx) Declarations.
Implement a new reserved Word: PREPARSE. This keywords purpose is to open the door to any number of Pre-Parsers, at no cost for Sources not making use of them, and to allow the implementations of conflicting Pre-Parsers. This also opens the door to 'Non-Assembly' Pre-Parsers, like OOA and HLLs
Add an error case, I forgot, when implementing the new api calls methods, for wrong Modules Names coming in a Source after the good one had been provided for the same Function (was silently replaced by the good one, in the previous version).
V4.10b
Add an error Message, for the [Struct] Menu Option, in case of missing File.
Suppress the more more use [F5] for blocking the TITLEs Tab oncoming (was to save from Undo erasement).
Debugger Stepping was broken by the last 'ShellExecute' bug fix. Restored.
Implement 4 other Keys combinations for Blocks (Ctrl+Del, Ctrl+Insert, Shift+Insert, Ctrl+Back).
V.E.
five encoding was branched to 'D_ST reg' instead of 'D_R ST reg', causing five ST ST to be encoded as fir ST ST. Fixed.
First implementation of Am Fpu TILL.
In the Clip File, implementation of the '@' Char (second Line, first Row of a Template), to say to the Clip Dialog to ignore the Radio-Button selections and to load the Clip unmodified. Useful for ready to use Procedures (Proc). Revue of the Clip File, and add a couple of Clips.
Check the 'Readjourn' Flag in cases of some Key Messages modifying the Sources.
Enable Resources with Consoles Applications (To be verified and tested by Kenny).
Alternate forms, for Numbers, are now allowed: ...HO, ...x, ...B, ...D for the number of leading zeros, which can now be free (at zero compile time cost for clean written Sources. All the compile time penaltys are charged upon the undocumented forms).
Sources Editor: Implement Block Indents (back and forth -works with selected Blocks holding complete Lines, and respects Labels Positions, if any-): [Tab] > Indent++ // [Shilft][Tab] > Indent--
Disassembling of Data and VirtualData (cases of Multiple Data Setsd): If Set Sizes over limits (the arbitrary limits defined in RosAsm Source), split them into as many sub-Sets as needed.
Add a Flag in the Configuration Tab for having an auto-rebuild of the Tree-View after each Compilation.
V4.10d
Fix a bug introduced in 4.10c: The Assembler Body Equates parsing had been corrupted.
V4.10e
In the Dialog Editor, replace the MessageBox, for Menu inclusion, by a Dialog saying [Help][Create New] [Load Existing][Abort].
Fix an alignment problem (introduced with V4.05d reorganizations for DLLs without some Sections).
Add a 'SetCurrentDirectory' when loading from MRU list.
Implement a [F11] [F12] feature: Single shot BookMark with forth and back enable.
V4.11a
In the Dialog Editor, the Dialog Titles were limited to 30 Chars. Extended to 80.
Debugger Memory Inspector: Added, View from Registers, plus a Menu in the Data View, for Font, Form (Hexa, Words, dWords and ASCII with Hexa for low Bytes), Up and Down.
V4.11b
Error case added for '[', CR/LF.
Error case added for calls to a Local label.
Bug fix, in the Dialog Editor, bad Pointer, when re-loading a Dialog with Menu, from Resources.
Disassembler:
* First version of the Code intelligent recognition: When a Non-Accessed Chunk of Code is found after the Routing Analyses, it tries to say, if the Chunk is likely or unlikely Code. Seems effective.
* First attempt of writing the FPU Data Format.
Source Editor: For Sources with TITLEs, the Caret and the 'CurrentWriingPos' Position were not both at the end of the selected Block, when the [Run] errors manager was pointing out the faulty statement. Fixed.
V4.11c
Since V4.09a the Modules (DLLs, ..) loaded when compiling (for checking the Api calls validity), was no more released. Fixed.
Apply Kenny's Patch for main Window in Maximized state.
Restore [Shift][Arrows] Selections (commented out in the previous version for tests (Oooppps)).
Temporary comment out of Disassembly of Real10 (hangs in ST0ToAscii for mantissa 1 Exponent 07FFF).
V4.11d
Typo in the encodage for 'SAR Reg 1'. fixed.
I had messed it all when fixing the Cursor Pos after error pointing in V4.11b. Fixed
V4.11e
Re-read the SharedData Flag when reloading a DLL.
Enable DLLs without any Resources (a default .rsrc stub was left inside, with previous versions).
Enable DLLs with Virtual Data only ( ?Data without any Data).
Add an error Message (and an MRU List update) in case an MRU File would have been deleted or renamed while RosAsm was running.
Source Editor: Add a Flag on Key holding for preventing from rewriting for nop (blinkering effect suppressed).
V4.12a
[Ctrl][F] >>> Find Box.
[Ctrl][R] >>> Replace Box.
[F5] >>> Compile.
[F6] >>> Run.
[Shift][BackSpace] >>> Delete previous Chars up to Indentation alignment.
[Shift][Tab] >>> Caret goes to first valid Char and all the line is moved one Tab Back, if possible.
Dialog Editor: Direct Mouse Edition. Left Button >>> Pos // Right Button >>> Size.
Source Editor: Smart Home Key / Back Tab / [Shift] BackSpace // EnableMenuItem.
Debugger Memory Inspector: Was not showing the Mem from Run-Time pointers (only Compile-Time Pointers were assumed, because of a direct access instead of a ReadProcessMemory). Fixed.
Debugger: Limit the number of windows alternances when stepping (less blinkering).
Add a missing error case saying 'Orphan Bracket' for single Close-Square-Bracket.
Add an 'Include' Item in the File Menu.
Bug Fix: The Export Parser was confusing Text expressions having a Double Colon (' :: ') with declarations when counting how many Exports.
Disassembler: The Float Data restitution should now be good, and ''ST0ToAscii'' Proc should no more hang.
Restore the correct detection of the End of statement, in Error viewing (Error2 Type).
Allow a String under the Statement provided by the Error MessageBox. The 'Error' Macro has been modified in order to hold either one or two Parameters. The second one is for the cases of Pointer given for the internal 'cooked' version of the Statement Member.
V4.12b
With [Ctrl][F] // [R], the Key Up Message for Ctrl was eaten by the Search Dialog Box. Fixed.
V4.12c
Add a [Security] option in the [Configuration] Dialog for saying 'Sure? Quit without Compiling'...
The Mouse Hook for Dialogs Controls drawing was producing a strange mess making the Dialog saving fail. Fixed.
V4.12d
Resources were not saved for DLLs, in V.12. Fixed.
Add a ''SourceHasChanged'' Flag for upper [Security].
Add the WS_BORDER style to Mouse edited Controls, in the Dialog Editor (less durty lines while modifying).
Move the [Ctrl] Key state updating after [Ctrl][F] / [R] right after the concerned calls (GetKeyState, GetAsyncKeyState unusable).
Comment out the FPU Pre-Parser. Development delayed.
V4.12e
Stupid error in upper fix for DLLs with Resource. Fix fixed.
V4.12f
Solve a reg eax conflict between 'Security' and MRU.
Fix a wrong test order in the Structures Dialog Routine for computing the Equates form.
Improve the precision of Caret Pos on Mouse left-Click: In 'SetBlock', replace 'call SimpleMouseTextPos' by 'call MouseTextPos' and add a small delay after Left-Click to let 'SetBlock' a breath.
V4.12g
Finish the implementation for enabling/disabling the various Menus Items. (Resources ones mainly).
V4.13a
Keep Selected Blocks alive when moving the Mouse on Non-Client Area.
Add a 'SoundsWanted' On/Off Flag in [Configuration]/[Text Editor].
Save and restore the Structures Dialog Flags on a session base.
Clip Dialog: Implementations of the Clips File Manager features.
Fix a Typo in User Menu construction (that was limiting the Items number to 5).
Add a 'AppendToCurrentDirectory' Routine, for completing the 'Equates.equ' Path in case the user did not do it, and let this file aside RosAsm.
Tree View:
- With [Rebuild after each Compilation] Flag set on, keep the Tree window minimized, when back to Edition.
- Add a 'ClearTreeLevels' Routine (Tree View) for re-initializing between each Tree building.
- In 'BuildLabelTreeList', suppress a wrong length test for Exported Labels.
Modification of the TITLEs Tab behavior:
- Do no more close on user choice, but on mouse in Client Area.
- On actual Tab selection, the Edition jumps at Top of the Title part.
Implement a 'ReMapSourceMemoryIfNeeded' Routine, that is run for [Ctrl][V] and [Include], in order to allow insertions of Chunks bigger than expected.
Assembler:
- Bad Encoding of setnz fixed.
- Fix a Wrong Error Case Test in SourceClearner Job for '?' Data Declarations.
- Implement an error case for Text Delimiters with no separators before or after the Text.
- Add an error case, in Macros Parsing for '#x' with a number of Parameters bigger than 9, plus one more 'Infinite Loop' test, directly inside the Main Parser (that should be of no use...), plus two other 'Infinite Loop' tests in Equates Replacements and in MacrosAndEquates replacements.
Dialog Editor:
Move the 'Busy' Flag release at the end of MouseHookProc because I have seen an edited Dialog vanishing while Editing... May have been because of reentrant accesses, I suppose.
Disassembler: Implement the division of Sources into TITLEs.
V4.13b
Add several error cases after Short and Long symbols (<, >, <<, >>) for local jumps.
[Configuration]/[User Menu]: Fix a bug re initializing the User Menu Items with the Names from [Other Files] when Clicking [OK] with this Tab open.
Fix a Bad Pointer to the Disassembly End of Memory, that was producing hang when [Include]ing on fresh disassemblies.
Double the number of possible TITLEs Tabs (100 now) and the minimum size of a TITLE Part (1_000_000 Bytes now), in order to fit with the requirements of huge Files Disassemblies.
Add an error case for Equates names ended by a Colon.
Tree View: Save and restore the Pos and State of the Window when [Auto-Rebuild] is On, and preserve the state when [Auto-Hide] is Off.
V4.13c
Review of the Tree View Window Managements.
Clip Manager: Suppress disabling the [add Template] Button is case of no Source selected, and replace this by a MessageBox saying that no Selection was found.
TITLEs: I comment out the test for too big Sources Parts, because, when Disassembling, one single Data Chunk may be bigger than whatever expected size. (This test was more a pain in the ass than helpful anyway, and the users will just see if the part is too big, when having the Editor slow down).
Fixed a series of bugs in the Tables Managements when Disassembling with [Symbolic Analyse] On.
Conflict fixed, in the Source Editor, between the Floating Menu and the TrackBar.
Review the [Ctrl][Left]/[Right] feature in the Source Editor.
V4.13d
Assembler: Add missing Strings tests, in the Routine 'StoreToExportListA'.
Source Editor:
- Auto-Indent (on CRLF) now takes care of Local Labels
- Reverse Smart Home Key behavior (First shot >>> First Char / Second Shot >>> First Row).
- Add a test in 'ReMapSourceMemoryIfNeeded' for Source Length equal zero. This happens when pasting after a [File]/[New].
Disassembler:
- TITLEs: Re-adjust on actual Pos for output when the Data Chunks are bigger than the expected limit for a new TITLE output.
- Double the speed of HLL Analyses based on Api calls.
V4.13e
Output formatting details in the Disassembler.
First reorganization of the Assembler Source Parsers and creation of a new [Parsers] TITLE.
V4.14a
TreeView:
- Local Symbols pointed out in two passes (upper MainLabel plus downward Local Symbol).
- Test added for Disassemblies huge List of Orphan Labels, because building the Tree in this case may take a very long time.
Disassembler:
- Solve the problem we had with short jumps when replacing DLL indirect Call with Direct calls as this: Always do the replacements // when required, turn, for example, the 'jne G5>' into 'jne G5>>'.
- Recognition of MainWindowProc.
Assembler:
- Error case added for non GpReg usage in Effective Addressing (Example: pop F§MM1).
- Error case added for 'lea edi D$ebx+4*eax' (instead of 'lea edi D$ebx+eax*4').
- Error case added for 'movmskps bl xmm0' (32 bits reg only).
V4.14b
Assembler:
- Error case added for '-reg' in effective addressing second reg.
- When pointing an error at the Top of a TITLE or of the Source, the Block Selection was killed by the attempt for moving the Text a couple of Lines upWard. Fixed.
Dialog Editor MouseHook:
- Add a 'WindowFromPoint' to make sure the Edited Dialog is not hooking a Message while under the Editor Dialog, or under any other window.
- KickDims >>> Focus Back to the Edited Dialog.
Disassembler (Last modifications before the third re-shaping of the whole Disassembly analyses strategy):
- Run with the 'One Section trick' in cases when the Entry Point is not in the Code Section.
- Completion of .Import when the Header Look-Up Records are zeroed.
- Various 'tuning' in the Code Labels detections.
- Add a missing loop, in the Code Recognition of 'UnAccessed Code Chunks' (It was not analysing down to the End of Chunk when encountering a RET or JMP Instruction).
V4.15a.
Revue several problems when closing the Dialog Editor. Fix two problems under Win98, for MouseHook, and for the way of closing the Edited Dialog while editing (the 'ShowDialogResult' problems).
After Compilation, restore the Focus from the Tree, back to the Editor.
Mem Inspector Words and dWords to 2 and 4 Bytes was printing 3 and 5 Bytes. Fixed.
Restore the '#n' with '#-1' keys in the Macros Parser.
Encoder Bug fix: +080 // -080 was not on the proper Bytes size limit since a recent modification for solving a Disassembler Problem.
Complete re-organization and rewrite of the Assembler first Parsers by Rikkert Wiggerin.
Implement the Routine that should allow the PREPARSErs developers to declare 'NoMeanLable's in their outputs.
New Disassembly Sections Interpretations strategy aborted.
V4.15b.
Add an error case for CRLF after Bracket.
V4.15c.
Dialog Editor: Review of the direct Mouse Editing. Fix of several problems under 98. Added, securities for preventing from Auto-reverse of the Controls, when re-sizing, and from negative origins when moving. Several Simplifications of the 'MouseProc'.
V4.15d.
Dialog Editor: Fix a Bug, under 95/98 in the MouseHook procedure. Finalize the Minimal allowed re-sizing by Mouse direct actions, for preventing from losing too small Controls.
V4.15e.
Dialog Fix a conflict between '<<<<<' // '>>>>>' Menu Items and Slide Bar when having a Block Selection inside.
Restore the resize Style of the Tree Dialog.
Add two errors cases in the Macros Parser, for Unfolding of Parameters never used in the Macro Body and for overflow of the output in case of nested Macros multiplying the number of Statements at each Level.
Fix a conflicting reuse of the 'TextGoingOn' Flag by the Source Editor and the Assembler. The Compilation was hanging, since V.4.15b, when compiling with some text Data at the bottom of the screen and downward.
V4.15e.
Bug fix: When deleting a Block up, the Cursor Pos, when the selection had been down-up, was wrongly updated.
Fix a conflict between BlockAutoDeletion (when set on &TRUE) and Simulated Blocks for the [Shift][Arrow Keys] Blocks drawing.
V4.15f.
Bug fix in Cool Parsers, Alternates: mov D [eax], ebx replacement was wrong because 'ImplicitSize' was executed first. Now executed last.
Add an error case for two identical Functions Names called in two different DLLs.
Review of the previous Version modifications for the 'BlockAutoDeletion conflicts': They were also breaking the evoluated Tab Functions for Blocks Indentations.
Fix a conflict between the Search Box and the TITLEs tab, and two bugs in the TITLEs Tab 'SetPartialEditionFromPos' Routines, that was making it hang when deleting the very first TITLE part.
V4.15g.
Force the release the [Ctrl] Key after runing the Find and Search Boxes.
Add a [Shift][Del] Selection Deletion.
Fix a hanging conflict between Block Selection and the TITLE Tab feature (one more time... I had forgotten one case in the previous fix).
Add a [Bad Habits] Tab in [Configuration].
First implementation of a Path Browser for the 'Equates.equ' Path in [Configuration].
Implementation of a 'Load last used File on Start-Up' Flag in [Configuration] [Sources Edior].
Implement a NOPE dummy Intruction for writing macros doing nothing at all.
V4.15h.
Fix a bug in previous 'Load last used File on Start-Up' . Was not initializing the File Name for Compilation.
Add a test in the 'Equates.equ' Path Browser for not shutting down, when user aborts, with a valid target previously known.
V4.15i:
[F2] Key: User defined launcher
V4.15j:
When saving Source only, the TITLE Parts Names, were missing the Path. Fixed
_____________________________________________________________
Switch to RosAsm (July, 24 2003).
_____________________________________________________________
V1.1a
Review First release of RosAsm, with the B_U_Asm companion file.
V1.2a
Review of the Menu Optins.
Simplification of the way the TITLE Tab Control reacts to user choices.
V1.3a
Implementation in [Tools] of a Dialog showing the DLLs and Functions found in the actual Source.
Implement a 'forgotten' (..) BinInclude Pre-Parser.
V1.4a
Macros '#X' extension (to signed Byte).
V1.5a
First implementation of the ParaMacros Parser.
V1.5b
Bug fix in 'ReplaceParaMacrosBrackets'.
V1.5c
In 'UnfoldMacro' (Double-Left-Click Unfold Menu Option), add a security to force the pairing of ParaMacros Delimiters.
Improve the differenciation of Equates vs Data, when storing the Equates, in order to allow, for example:
> [< b]
V1.6a
Implementation of Scarmatil Equal Pre-Parser.
V1.6b
Extension of Scarmatil Equal Pre-Parser to FPU Expressions.
Modify a wBit Test, in order to enable formulatins like 'push Label+4'. (At the end of 'FirstParameterLabel').
V1.7a
Was hanging when loading some DOS EXEs Files. Fixed.
First implement of the IncIncluder.
Rewrite of the Disassembler Sections Recognitions.
The Macros Parser was hanging on the Base3 'Uses' Macro, evocated without any Parameter (hang in ResetForNewBracket). Fixed.
Complete rewrite the Api Calls encoding, in the Assembler, in order to assume all of the fancyfull stuff found in Disassemblies (like 'mov eax 'Kernel32.GetTickCount''), and re-implementation of the DLLs Functions called-by-Numbers encoding (this functionality was wrong, previoulsy).
Simplify the Disassembler functions for loading Resources. No more options for [Without Rsrc] or [Resources on requests]. The Resources registred by Names are now saved by the IDs' Numbers substitutions. The Strings Addresses Displacements are re-used to form the IDs.
Encoding: Limit pinsrw and pextrw third Parameter from 0 to 7. Pmullw was pmulw. Fixed. Set the pshufw immediate limit to 0FF, instead of 3.
Bug fix: With the Configuration Flag for saving the Pos on closure set on, closing the RosAsm Window from the Task Bar (with the Right Button menu), the next upload was hanging because of the Pos Values. Fixed by forcing the Window in the restored state, before closing.
V1.7b
Disassembler:
Several minor fixes in the Main Menu Items outputs.
Implement the output of Unicode strings and fix some minor problems with Strings restitutions.
Force Pointers restitutions (in Data), even if they are not properly aligned.
fstcw / fstenv decoding was wrong. Fixed.
Flow of identical Words and dWords were wrong. Fixed.
V1.7c
Disassembler: Simple update of several minor fixes.
V1.8a
Implement the [Ctrl][K] feature for BackUps.
Implement a 'ExportScanner' in [Tool] Menu.
Implement Auto-Initialization, for a first run, after having unziped the whole Package.
Disassembler:
Switch the bad Code Alignments Chunks ('BadDecode' Routine) to Data.
Add a String recognition call (15 Chars) before the call to 'MarkShortJumps'.
V1.8b
PUNPCKLDQ and PUNPCKLWD Disassembly was wrong. Fixed by Ludwig.
PSHUFD imm limit is not 3, but 0FF. Fixed by Ludwig.
Rewrite of the Source Instructions pointing in the Debugger ('SourceDebugPos' Routine).
Fix an awfull bug in the call to IsItProcessMemory, in case of Pointers to Pointers (with a value of the first Pointer pointing to RosAsm Memory itself while calling, and generating all of these strange and randomaly failing operations in the Inspector). Implement a new 'IsItProcessMemoryFromPointer' to cover such cases. This difficult bug was there since the begining of the Memory Inspector, which should, now, work much better.
Disassembler: Split the Strings Recogniton into Ascii Recognition and Unicode Recognition. Review the Unicode output in 'WriteData'.
V1.8c
Debugger: Reworked version of 'SourceDebugPos' Routine.
Assembler: Improve the 'ShortDis' Jumps error Message: I now says how many Bytes out of range.
Disassembler:
FNSTCW disassembly was wrong. fixed.
Solve a String Pointers problem in Data.
Split the multiple trailing zeros from end of Strings to Multiple Data Sets, with a forced Label.
V1.8d
Implement the Dialog for the Menu option [Tool]/[Source Informations]/[Exports].
V1.9a
Disassembler: Fix a Problem with the restitutions of Code and Data Pointers, in Data (they were sometimes proposed as commented out options -when a chunk was splitted by some Label-). Several adjustements in the various Recognitions. General re-organisation of the various Recognition order, and clean up.
Implement the Blinking Caret.
Implement the Code Completions for User defined Symbols and for Api calls.
Add the LBS_NOSEL Style for List Boxes, in the Dialog Editor.
V1.9b
Fix a TITLE Tab blinking problem with the Blincking Cursor.
Code Completion:
It was underlining when finding the same (length) Symbol. Fixed.
Speed up the Code Completion effective replacezment when applying on Source with TITLEs?
Some symbols were not replaced because of a bad parsing of Comments vs Multi-Lines-Comments, in the Replacement Routine.
V1.9c
Encoder: FISUBR: The 066 Word Prefix was arased on Dword sizes. Fixed.
V1.10a
New release of Scarmatil Equal Preparser:
- Added functions: cos(), sin(), abs(), tan() and sqrt().
- Sizes convertions.
- No more need of overall enclosing Parenthesis.
- More reliable.
- Less operands Types limitations.
Disassembler rewrite the Routine for pointing the PE Tag (to enable disassembling the GoAsm produced PEs, and to overwrite wrong MZ Header).
Disassembly: Fix a little bug that came out with the previous re-organisation of Routines calls order.
Switch the Source Editor Blank Line writing to 'FillRect', in order to assume wrong hight Fonts with the Code Completion Underlinement feature.
First complete release of Code Completion, with OS Equates, Pos of ListBox plus source input, and so on.
V1.10b
Simple improvements of the Code Completion feature. Mainly, closing the ListBox on user actions out of the Completion scope.
Review of the Source Editor Lines arasing (required for arasing CodeCompletion underlinements with Font not having really the required 16 pixels hight).
V1.10c
The Code Completion ListBox Dialog was not working under the 95 family. Fixed.
V1.10d
The Vertical Arrow Keys and the Return Key now directely select the items in the Code Completion ListBox, when open, while user is inputing the Prefix in the Source.
Bug fix: In the Source Editor, when having a huge Block Selection, the Caret Position computation could have hang, in some cases of Error pointing.
New release of Scarmatil Equal Pre-parser: Fixing of a detail problem for Symbolics with '.' inside. Implementation of the Equal Statement Unfolder, working the same way as the Macros Unfolder, from the Double-Left-Click Float Menu.
V1.10c
Update of Scarmatil Equal Pre-parser for minor Bug Fixes, and first Optization of the outputed Code.
V1.11a
First implementation of the last important Recognition: Code Interpretations breaking valid Codes Labels now switched to Data.
Implementation of a quick Find-Replace Box for replacements inside a Selected Block (By addition of an Item in the Float Menu of Right-Click on Block).
Fix a bug in the [Ctrl][V] Memory extender: It was not preserving the initial CurrentWritingPos for the Paste operation.
First implementation of the Tag feature.
V.1.11b
Implemented the flags for [Wole Word] / [Case sensitive] in the quick Find Replace on Block Dialog.
Review of the Right-Click feature, that was failing to point out some Declarations in case of Macros with Names not followed by a Pipe Separator.
V.1.12a
With upper Right-Click feature modification, i forgot the release of a Flag making the if fail randomaly. Fixed.
Disassembler improvements.
New version of Ludwig Debugger, with new interface and all.
V.1.12b
Implement the Int3 insertion by Double-Left-Click in the Editor left margin.
Restore the Disassembler in its working state, broken with a recent release.
V.1.12c/d
First effective release with static Mouse defined Break-Points ready for Ludwig Dynamic implementation.
Enable the Paramacros Declarations inside Macros Declarations.
Add a security test in the IncIncluder. It was hanging when not finding the required File.
V.1.13a
More improvements on the static versions of the Mouse defined Break-Points. Red Elipse instead of a red Char, in the margin. Assumes now the TITLEs Sources. Float Menu implemented.
New release of Ludwig Debugger.
New RosAsm GPL License.
V.1.13b/c
Simple bug fix in WriteImm32 Routine, when called from the Debugger for decoding the next Instruction.
Partial Download of RosAsm now with Licenses aside.
V.1.14a
Final version of the Disassembler Code vs Data Recognitions.
[New Dialog] Menu Item was disabled in the previous release. Fixed.
V.1.14b
Reduce a little bit the Dialog Editor Main List Box because of overlap problems underWin95-OSR2 (Much probably a Font problem, in fact...).
Bug fix: The selection of ListView Styles was wrong, in the Dialog Editor.
Add a Memory Extension for big IncInclude.
V.1.15a
Bug fix: some duplicated symbols were not pointed out.
Complete review of the Interface:
ToolBar inplemented.
Sizable text implemented in the Source Editor.
Titles Tab moved Down and StatusBar turn always on.
Review of the PrintColorText Routine, with new Mouse Pos Functions.
Each Interface Component is now a separated window (Edit, Status, ToolBar, ScrollBar).
V.1.15b
Code Completion was locked in the Configuration of V.1.15a. Fixed.
Bug Fix: BookMarking Local Symbols labels was missbehaving on Sources including TITLEs.
Plus several minor fixes.
V.1.15c
Close the TITLEs Tab, when the Mouse moves on the ScrollBar.
Re-initialize the DCBPs output between two Compilations.
Fix a bug in the Status Bar Name output.
V.1.16a
New version of the Debugger. Now completed, with Dynamic BreakPoints, and all.
Minor bug fix in the Disassembler.
V.1.16b
Minor bug fixes:
The ScrollBar was not made silent when no File.
The [F4] BreakPoints setting was not working on files having TITLEs.
BookMarks lenghts was wrong
V.1.16c
Add a WM_XBUTTONDOWN case in the MainWindowProc
Debugger minor bugs fixes, plus selection by Double-Clicks, in the Virtual Pages Table.
V.1.17a
Implement the AAM and AAD encodings with immediate specification
Fix a minor bug in the MRU.
Restore the NM_CLICK message, for having the TITLEs Tab producing an Edition jump to the Top of Title, in case of Click on the actual Tab (it had been wrongly modified with the previous general IDE review).
Suppress the limitation for Virtual Data Declarations (by Flag in the [Bad Habits] Configuration Tab).
Replace 'EditClassName' by 'ClassName', in the Edition Window creation, to make Donkey shut up. :))
Minor bug fix in the Debugger.
Rewrite the 'IsItanEqual' Routine.
The DLL Extension was not made upper case when creating a new DLL. Fixed.
Disassembler:
The Align Recognition had been unfortunately commented out. Restored.
Implement a Routine for not breaking Previously identified Data with the priority of Pointers Recognitions.
V.1.18a
Implement the Visual Tuts stuff.
Disassembler:
The negative recognition was not working. Fixed.
Implement the positive recognitions of Data.
The 'PE' Pointer was not saved in case of regular File, causing the resources loading to fail. Fixed.
V.1.18b
I killed a part of the Main Menu with the VisualTuts holding. Fixed.
V.1.18c
Some menu option for resources had been grayed. Restored.
V.1.19a
Disassembler String, uString and Pointers Interpretations improved.
Complete rewrite of the 'PrintColorText' Functionality in the Source Editor, and genreal reorganistion of the Source Editor.
Debugger update for minor bugs.
Implementation of the Binary form saving, loading, replacing, in the Dialog Editor.
V.1.19b
Sources Editor: Complete the Right-Scroll Functionalities, retore and modify the Caret in Overwrite Mode, and Restore the CR/LF and ESC messages holding for the Find DialogBox.
V.1.19c
Suppress the Border Style of the Source Editor surface.
The Main Menu was perverted by the Configuration Tab (adding again the VisualTuts Menu). Fixed.
Points drawing, in the Main Icon Editor, reviewed by Keldon.
V.1.20a
Fix a bug in the F11/F12 feature.
Dialog Editor: Implement the DialogList Sort, in order to view the Dialog in the proper order, before any Compilation. Implement a security, for refusing to store a New Dialog, with an already used ID.
Debugger: ReWrite of the address space handling, plus some Pointers View refreshing, and reducttion of the size of the Debugger Dialog. Minor bug fix in the DCBP deletions.
Assembler: Alien Numbers formats could have been wrongly interpretated, when used, for for Data Sets Aligments. Example: '[<0200h'. Fixed.
Disassembler: Fix a typo in Ascii Interpretations.
V.1.20b
The new security for saving the Dilaog ID, in Resources did not take care of re-editions. Fixed.
Disable the Source Editor Blinking Caret, while choosing and/or Editing a Dialog.
V.1.20c
Sources Editor: Fix a bad Font Heigh problem and restore the instant updates, when choosing Fonts and/or Colors, in the Configuration Tab (they had been killed since the last V.1.15a rewrite of the Editor).
V.1.20d
Insert the 'Show caller' Menu Item, in the Debugger.
Restore the Editor Focus after Dialog Choice.
Implement the Binary Files managements, for the menus (same as previously done for Dialogs in V.1.19a).
V.1.21a
Implement [F4] working On/Off for setting/Removing DCBPs.
Review the DCBP storage on the Editor side.
Implementation of the DCBP saving in the Undo Table.
Fix a bug in the Undo feature, when dealing with Sources having DCBP inside.
Fasten the Source Editor (the full remapping of colors was too slow on old Computers).
V.1.21b
Set the user's BackGround on StartUp (Read the Registry before window creation).
The V.1.20a implementation of a security in Dialog IDs numbering was not allowing to save back a Resources loaded Dialog. Fixed.
Remove the WS_VISIBLE style of the Tree Dialog, in Resources, to save from a flickering effect.
Fix a TreeView Dims problem.
V.1.22a
Assembler: Implement the wishable Routine for testing the accuracy of a LOCK Prefix (Checking for valid Instruction and for valid Destination Parameter).
TrewView positioned on the Edit Surface. User TreeView Width saved in the Registry.
Re-enable the 'Nested Data Loop' error case, for Declarations like [Data1: 0 #100 1, 2, 3 #10]
Re-organisation of the Main Menu.
New Dialog for Resources Menus choice.
First implementation of the Write-Time Syntax Checker.
Implement the [Save RC Data] Option.
Update of the Debugger and of the Debugger Main Dialog Menu.
Fix a Bug in the Registry Size-Marker Color saving.
V.1.22b
The DCBP Double-Click was leaving with the Caret at Row zero. Fixed.
Update of the Debugger and of the Debugger Dialogs.
The 'NotReady to Run' Flag was not set after usage of the new Resources Binary Saving implementations. Fixed.
The Selected Blocks, when showing faultive Instructions with Commas and Strings inside, were including the next downward Line. Fixed.
Minor Bug fix in the Equal Pre-Parser (odd Instruction delimiters).
TreeView: Isolate the Pos Definition from the building Routine and preserve the WindowPlacement Fags.
The User Menu Deletion had been left over at the Pos it was before the last Menu re-organisation. Fixed.
V.1.23a
Review the organisation of the [Ctrl] key Message Holding for enabling [Ctrl][C] while Debugging.
Emit the 'Close Debugger' Message for cases of [Del]
Disassembler: EVOCATED was killed inside interpertations of Flows of Pointers, so that the intermediate labels were not given. Fixed.
Some never accessed Data nested in between Code were never restituted because of the missing EVOCATED Flag. Fixed.
V.1.24a
Debugger:
* Show declaration option for data labels
* Goto user-defined address
* Fixed FPU tagword interpretation
Speed-up the Assembler. Now between 1 and 1.5 Megas Megas/Second at 1.3 Ghz
Lock the [Del] Key, in Debug Session, and enable [Ctrl][C].
Minor review of the Editor's Keys holding cases.
Disassembler: Some improvements on the Data Interpretations.
V.1.24b
Forgot to update the Unfolding Function accordingly to the new Assembler Speed-Up modifications. Fixed.
V.1.24c
The function for ReMaping the Source Memory in case of huge pasting was not considering Files with TITLEs inside. Fixed.
Implement two Routines for checking, at once, if the Control Key is up or down after all the [Ctrl][x] actions. Works as well under 95 and 2000.
New Dialog for Statistics after [Compile].
Merge a couple of the 'CoolParsers' and 'HotParsers' Routines. Now 1.6 Mega/Second at 1.3 Ghz for RosAsm Auto-Compilation.
After the V.1.24a review of the Editor's Keys holding, fast alternated inputs of some keys combinations, like [Key Down]/[Key Left] could have overlapped, forcing the user to clearly release one key before depressing the other one. Fixed by considering the real KEYDOWN Message, instead of the Key Table, for these 'mono-key' cases.
V.1.24d
Problem in the Sources Editor Keys Holding. Found nothing but a bad location for turning the KeyDown one to zero. Many doubts that could be the problem, but i can't make it missbehave again.
V.1.24e
Temporary disable the [Write time errors detection] because of unwished side effects, in the Sources Editor (conflicts with the 'Bad Habit' [Blocks AutoDeletions]).
Improve the CheckSum64 by adding the parsed word length to ebx.
Freeze all non-assumed [Ctrl][char] (was previoulsy taken as [char] and produced a problem for [Ctrl][Return].
V.1.25a
New Debugger Version.
Internal Searches, and Right-Click Symbols, Searches now consider the Dash Lines (find the Declaration with or without Dash Lines inside either the Source and/or the Destination). Mostly for the Debugger to find out the Declarations with Dash Lines, in the Sources.
Hook for the Double-Click Float Menu, to un-select the activated Block, in cases when the user hits [Escape].
Finalization of the Assembler CheckSums Table managements.
Restore the TITLE Name printing, in the Status Bar, and insert a security for TITLE detection.
Preserve the Focus on the Find-Replace Dialog when needed.
Set a [Ctrl][A] Option in the Configuration [Bad Habits] Tab.
Implement a Flag, in eax for 'SourceHasChanged', depending on [Ctrl][Char] cases.
Restore some of the KEYUP forcings, to see if this solve some reported problems, that i do not understand, about the Caret Position.
V.1.25b
New Debugger / Common / FPU TITLEs Versions.
V.1.25c
Restore and review the Multiple Structures Files holding in the new Main Menu.
Bad Flag in V.1.25a [Ctrl][Char] cases thingie (MOV instead of OR...).
Suppress a blinking effect, on some screens, when having the Blinking Caret et On.
V.1.25d
Sources Editor:
Review of the [Ctrl][PgDn]/[PgUp] managements.
Implement a Flag for making the difference between a [Shift] Selected Block and the other forms of selected Blocks.
Add a test for cases of redraw with a '@' as first Char on Screen (when having the colored Sizes Markers enable).
Implement the [Ctrl][Shift][Left-Right-PgDn-PgUp-Up-Down] extended Block-Selections.
Implement a Routine in charge of outputing the char under the Cursor. Usefull when having partial redraw called by the Blinking Cursor (when set On), particulary, in overwrite mode.
V.1.25e/f
Problems in Block Selection introduced by the split between Shift-Blocks and normal-Blocks. Fixed.
Insert the desirable call to 'ClearQwordCheckSum' in the Encode/Decode Box.
Encode Box, ErorLevel 7 was not appropriated to hold the 'Too many Parameters' error case. Fixed.
V.1.25g
Set the verbose closure of the Debugger in all wished cases.
The title of RosAsm Main Window now keeps the Version number visible after have loaded a File.
Fix a Bug in the last CoolParsers Modifications coming with V.1.24c.
V.1.26a
Two Flags were missing for the ComboBoxes Styles Management. Fixed.
Debugger:
Dump 'OutputDebugString' values to file (debug.log)
Extended CPU Information (works now for P4)
Show EIP on the debug register tab
Tab navigation in debug dialog
Minor bug-fixes
V.1.26b
When marking a DCBP close to the TITLE Tab area, by [F4], the Tab was rising up because of a bad forced pos of the Mouse. Fixed.
Implement a Sort for the Menu Items of the Visual Tutorials.
Sources Editor: The last Line Selections and Coloured Size Markers were not viewed. Fixed.
Implement an error case for LEA, Byte form.
Fix the TITLE-Tab Ctrl-Z Bug.
V.1.27a
Split between the Official and the Developements Releases Versions.
Extend the capacity of the Visual Tutorials Buffer, to hold the new Beginners ones.
Reverse the order of the MRU Menu Files. (Most recent now at Top).
V.1.27b
Error in the previous MRU modification. Fixed.
Remove the WS_THICKFRAME style of the Statistics Box.
V.1.27bc
The last Menu Items, for the Visual Tutorials, could not have been accessed. Fixed.
V.1.28a
Review of the Help Menu, Help Files Items. Added SDL, DevIL and Sqlite. Plus Help Button for where to get them.
Add the DevIL Equates into the Equates.equ File.
Disassembler improvements: Now takes care of 'No-Return-Calls'.
Implement a functionality for saving all TITLEs into as many asm Files in the [Ctrl][S] feature.
ParaMacrosParser: The CoolParser checking ParaMacros was only testing Pipe and not CRLF, and was breaking the compatibility with some older Macros (Half Documentation.exe 'EndP' Macro). Fixed.
Change the 'ReuseSourceAForCodeList' alignement from 010000 to 01000 (Problem suspected, under ReactOS, with this).
V.2.001a
Encoder: Re-organisation of the SIB with two Regs only and implement an error Message for esp+esp.
Extend the Code DB encodage to hold Ascii Strings.
Add an error Message for compilation of Sources without any Statement (in 'CountStatement' Routine).
The StatusBar routine, for extracting the File Name was hanging on Files.ext including multiple Points. Fixed.
Implement an error message for FADDP not having ST0 as second Reg.
Implement the SALC Opcode.
The order of XCHG and of TEST reg reg Parameters was reversed. Fixed (No effect on anything, but matching accuracy with the Disassembler(s) output(s)).
Various improvements on the Disassembler.
First implementation of the junction mecanisms between RosAsm and the first Wizard. Done by Scarmatil.
First implementation of the Wizard Menu Item, with Automatic detection.
V.2.002a
Some Multi-Lines Text inside single quotes were not properly detected. Fixed.
The Redraw, in 'StringSearch' had been commented out. Restored.
Switch RosAsm Dialogs Styles from DS_SYSMODAL to DS_SETFOREGROUND.
Implement the [File] / [New] Dialog, with filling Resources and Routines for various Files Types and Macros Styles.
V.2.003a
The previous Dialogs Sytles modifications did not work. Removed.
Separated Dialogs for [Control] / [S] and for [Replace Source Only].
New release of the Form Wizard.
V.2.003b
The Len KeyWord, for Leading Sizes of the OS Structures can now be computed as dWord and as Word. The normal Len remains, of course, dWord only.
The ClipBoard length included 4 trailing zeros, instead of one. Fixed.
The ParaMacros parser, for on line Macros, was broken since V.1.24a. Restored.
V.2.003c
Fix two minor bugs in the Sources Editor.
The previous review of the Len Keyword, for Word Size was not effective. Fixed.
New release of the Tag TITLE, for the Form Wizard.
V.2.004a
Fix a Source Lenght problem when starting a [New] Standard exe with no startup with only Standard macros.
Implement a complete computation to fully detect the pairing of Equates, for the Right-Click feature.
Bug fixed in the Menus Editor (was loosing track of the Flags, in some cases).
Extend the Macros &Variables to 100 Records of 128 Bytes each, and review of the concerned Routines
Modify the Local Symbols completion so that it does not touch the Macros Declarations, and call for it a second time, after the Macros Job, to fullfill the Local Symbols unfolded by the Macros job
Disassembler: Modifiy the 'WriteExportedFunctionLabel' Function to hold some disorganized Export Sections.
V.2.004b
Forgot an INT3, in the Right-Click Equates Search pairing control.
Toolbar hanging on [Structures] Item without MenuID. Forced to simulate the default 'Structure.str'
V.2.004c
Rewrite of the 'CoolParsers' Routine in charge of upairing error detections of '()(, '[]', and '{}', with direct pointing into the user Source. Mixed cases assumed.
Preverse a copy of the default Icon, for retoring it, in the case of [New] File.
Remove the Resources size limitation. and fix a bug in reading the Resources number (by IDs + by Names).
V.2.004d
Forgot to the call to 'ReplaceWin32Equates', in the Double-Left-Click [Unfold] (Macro), menu Option functionality. Fixed.
[New] File Dialog:
* The Do_Loop Macro was wrongly used in the Hexprint Default. Fixed.
* The DLL choice was not reflected in the File Name. Fixed.
V.2.005a
Make a copy of the default Main Icon, so that it could be recovered when doing a [New] File after the edition of another File, with another Icon.
The Routine checking the presence of 'Main:', in the Source, was not updated (using obsolete Routines), and was not detecting a modification of 'Main' in between to Compilation. Updated and fixed.
Fix a bug in the recent &Variables extensions to 100*128 Bytes (was no more compiling a Macro with trailing Evocation).
Debugger: Release of Version 1.4, with:
* Show module name for outside-stepping/exception
* Continueable exceptions
* Some bug fixes
V.2.006a
Implement an error Message to forbid the usage of Number as Symbolic Names.
First test-implementation of the Internationlization of The Errors Messages.
New Dialog for the Error Messages, with review of the Error Routines, to match with the National Languages
Fix a conflict between the [Bad Habits] / Auto-Deletion and the Code Completion.
Remove the 'Auto-Writing' effect in the Code Completion.
The Macros unfolder was hanging, when parsing a Statement terminated by a bad comma. Fixed.
Change the Automatic labels Names from 'AAAAAAAA', increasing, to 'ZZZZZZZZ', decreasing, in order to have them at the bottom of the Debugger Data View.
Debugger [Version 1.5b]
* Bypass the PSAPI and the toolhelp functions
* Experimental implementation of the call-stack
* Many bug-fixes
V.2.007a
The V.2.004a Routine, for the Equates pairing, was not assuming the Declaration of Macros, without any Space, between [MacroName|Bla...]. Restored.
Disassembler: Found a way to support the Api Table wild Jumps, in Code: If not MOV, CALL, the Jumps Table is now targeted under the form of its direct Code label. At this Location (the Jumps Table), there is no more the interpretated Label (Api Name form), as it is already shown by the JMP: Instead, at the caller position, the 'call CodeXXXXX is now followed by a comment saying what api name it is, in the Jumps Table.
Example:
> jne Code0404528 ; 'USER32.DefWindowProcA'
> ...
> Code0404528: A8:
> jmp 'USER32.DefWindowProcA'
The Instructions Prefixes were not shown, in the Disassemblies 'Commented Hexa Code'. Done.
Encoder: The errors in the form of 'mov D$edi+ax 1' were coming with an inappropriated error Message. Fixed.
Review of the Dialog Editor Function for Loading a Dialog Template from ClipBoard.
First release of Diego Fraga review of the Resources Manager, with Named IDs assumed, for the Disassembler.
V.2.007b
Bug fix, in the management of Missing Symbols error (modsifed in previous version).
V.2.007c/d
Bug fix: The Dialog Editor was leaving an empty Record, before the last one, in case of mixed deletions / creations.
V.2.007e
Bug fix: In the HotParsers, 'StripUneededEOI' was not assuming the case of EOI followed by a CloseBraket, producing a hang, in case of CRLF between a trailing '#1', for example and the ']'.
V.2.007f
Generalise the 'SourceHasChanged' Flag for all cases of Exit after Resources Editions.
Bug Fix: Error case 3 was using a obsolete ecx for scan.
V.2.007g
Source Editor: Add a Flag, in the [Configuration] for a screen (screen only) substitution of red '$' by '§'.
Direct branching of the Number-Bases Dialog from Right-Click on Numbers (same as with Double-Click / Float Menu / [Number Bases]).
The Macros Parameters bigger than 9 were not assumed in cases of Nested Data Macro Declarations. Implemented.
Bug fix: The Error Manager, for error Case 3, entered in a infinite loop when searching for a non-existing String, in the user Source (String created by Macro unfolding).
V.2.007h
The Macro Unfolder was not properly parsing the Win32 Equates. Fixed.
The bottom limit, for the label symbols List was set at the Source physical limit, instead of the available Memory Limit, causing a failure of the search of the last Symbols, in cases of too long names expanded by Macros, bigger than the original Source. Fixed.
V.2.007i
The error case 3 Dialog, in the Assembler, was not showing the proper searched Name, in case of search failure. Fixed.
The GetCLOFilename was enclosing the File Name in double quotes (>>> failure of the creation of the Command Line File). Fixed.
New proposition for the Small Chunks Memory Manager.
New version of the LibScanner.
V.2.007j
Restore the bad GetCLOFilename Routine, because, when it work, it produces downward errors.
V.2.007k
It was not possible to have, both at a time, Parenthesis Expressions and ParaMacros. Fixed.
V.2.008a
Implementations of the SSE3 Instructions in the Assembler and in the Disassembler.
Major release version of the Debugger, with reorganisation, bug fixes, and implementation of the Functionalities for debugging the DLLs.
Implementation of the 'Un-used Symbols' Dialog, from the Statistics given after a Compilation.
V.2.008b
Implement the 'SkipDashLines' Flag, in the Search Functionality, so that the 'Unused Symbols Box could point to the proper Declaration in all cases, plus, add an 'InternalRightClick' Search after the Text Search to make sure we are pointing to the Declaration, and not, for example, to a Comment.
V.2.008c
Fix of a Typo killing the encodage of LEAVE (done when imlplementing the SSE3 Extension).
V.2.008d
Disassembler: Values of 'LastCodeRef' not matching with anything were omitted. Fixed.
Assembler: The Unused Symbols List was not assuming Labels evocations in Data: Fixed.
Source Editor: Minor modification of the colored Size Markers output.
Debugger: Full Command Line assumed.
V.2.009a
Assembler: Implement a rescue attempt of loading a Module, for the OS versions, that would not assume the Current Directory, in the expected way: TryModuleFromAppDirectory.
Debugger New feature:
When debugging, if you move the mouse over a data label, a hint with the content is shown. The current implementation takes care of the size markers (R$Label) but ignores offsets (e.g. D$Label+4).
Segment registers are shown with corresponding base & limit values.
Memory inspector address edit is now autoscroll-able and supports selector overrides e.g. 'FS:010' jumps to the TEB with offset 010.
Better string recognition in data viewer
Dataviewer shows address aside label names (address removed in value list)
V.2.009b
Sources Editor:
* Preserve the '§' Chars in the ClipBord Copy.
* Add a Checking for bad pairing of CR/LFs corrections.
V.2.009c
The Relocation of Api calls was wrong, in DLLs .reloc, since the modifications assuming things like MOV EDI 'Module.Function', as found in some HLL PEs Disassemblies. Fixed.
V.2.009d
Skip-over mechanism for TITLEs smaller than the screen height.
Bug fix in the Right-Click fix on Dash-Lines.
Horizontal Scroll Style added, in the Output Dialog Edit Control for long Command Lines.
Extend the Buffer, for the Structures Dialog ClipBoard from 2000 to 4000 Bytes.
V.2.010a
Implement a Flag, to prevent from rebuilding the full Source, for redrawing the DCBPs, in the Editor, in case a WM-REDRAW Message would be sent by a Dialog, under some OSes, while the full Source, is already rebuilt.
Add an error Message for cases of Macro removing a Text Delimiter, with the ''#X!'' keyword.
V.2.011a
New release of Scarmatil Equal Pre-Parser.
Sources Editor: Add a CRLF to TITLEs terminating without any, and so forth, having the last Char right before the 'T' of the next 'TITLE'. (It was possible to do this, previously, because, if a real Source says
''Blabla, CRLF, TITLE Blabla''
... setting the Edition Cursor at the very last Pos, is equvalent to set the Cursor at Pos 1/1, of the next TITLE, for inserting a Char, before the ''T'' of ''TITLE''.
The [Replace] Functionality was broken since some Block Pos modification. Restored.
V.2.011b
Modified Style for the Menu Dialog's Edit Control.
V.2.011c
Having a ''@Label:'' viewed at Pos 1/1, in the Editor, was producing a Blink effect. Fixed.
The Resources ID Choice-Bar was hanging for some Resources Types when Clicking upon [First]. Fixed by sending the Table origin as a Dialog 'Initialization Value'.
V.2.012a
Add a security, that shuts down the Unused Symbols List, before re-Compiling.
Exit case implemented, for Right-Click on Dash-Line lines.
Re-Enable the Unfold functionality for the Equal Pre-Parser Statements.
First release of the Conditional Macros parser.
V.2.012b/c
Add the Conditional Macros case of '#N<>' (forgotten previoulsy).
Insert the Case of '#N=' (above the '#=' one) in the normal Macros System, to unifie the writing convention with the Conditional Macros ones.
V.2.012d
Developements of the Conditional Macros Errors Messages.
Bug fix: The last speed-up of the [Replace All] Functionality was conflicting with the Undo Feature. Reversed.
V.2.013a
First release with the completed Conditional macros.
Implementation of the &&1,... &&99 Internal Counters, in the normal Macros System, with the Error 'Pos', for the Conditional macros.
New release of the IncInc PreParser.
.
V.2.013b
The Import List Dialog ([Lists] Menu) did not assume the various Cases, for 'call'. Fixed.
In cases of DLLs making use of Statements like MOV EAX 'abcd', without any .Import, the Encoder was hanging when scaning the empty .Import Table. Fixed.
The extension of the ''Trash'' Table Size was making the [Wizard] Menu also showing the VisualTuts Items (Second Table no more zeored. Fixed).
V.2.013c
Review the Source Colouring pattern.
Implement a mechanism for re-launching the [Unsused Symbols] Box, in cases of re-compliation.
Fix a bug in the Data Relocations, for big DLLs.
Extend the macros Internal Counters Attributions to hexa, Decimal, Binary and Text.
V.2.013d
Minor bug fix for the Internal Counter writing, plus added error cases, to limit the outputs to '1' to '9' and 'A' to 'Z'.
V.2.014a
Preview of the new Debugger, with Right-Click Menu on Data Names.
V.2.015a
Merge of the previous two versions, with minor bug fix in the 'EnumComboChilds' CallBack, for the 95 regs.
V.2.015b
Minor Bug fixes in the Debugger and in the Source Editor (Bad braching in 'DebugDialog_GetCPUInfo' and Bad Mouse Pos at the end of Files smaller than a Screen, in 'LeftButton').
V.2.015c
The 'MouseOverDataHint' Routine of the Debugger was corrupting the Caret Pos. Fixed.
Implementation of a PREPARSE EntryPoint Statement, for 'Main' substitution.
V.2.016a
Re-Implementation of the Win32 Equates Management, based on the new CheckSum64 Engine. Suppression of the 'Equates.nam' and 'Equates.num' Files. Assembler Speed-Up between 1.5 and 5%, depending on the Processor.
Implementation of a couple of no use Mnemonics: PUSHFD, PUSHFW, POPFD, POPFW, PUSHAW, POPAW, for matching with Disassembly Sources.
Implement a ''On D§LineNumber <s 1, ret'', in 'TryToMove''.
Re-initialize the Undo Table in cases of creation / deletion of TITLEs.
V.2.017a
New version of the Equal Pre-Parser.
Review the Equal [Unfold] Selection.
Fix a minor bug in the Editor (badly commented out redraw, in the &WM_KEY holding).
V.2.018a
Finalize the Internationalization of the Error Messages. Choose Font implemented in the Configuration, for these Messages.
General re-organisation of the AsmMain with review of the very old 'A to B' rule, that was not fully respected.
Older Routines had been left in, for resolving the Win32Equates by the Structures Dialog, so that this Dialog was hanging when translating into the Equates Form. Fixed.
The new Right-Click Functionality for &EQUATE was keeping silent in cases of &EQUATE] . Fixed.
Add a [Zero or Question Mark] Radio Button, in the Structures Dialog.
Insert a temporary fix in 'IsReturnAddressInSource', for cases of conflicting exceptionhandlers, in the debugged Application.
V.2.018b
Structures Dialog: Remove the Square Brackets from the Structures under Data Form. (No more any use).
Internationalized Strings were not shown for the error Messages with ErrorLevel 9. Fixed.
Forgot to load the international Strings Font, after reading the Registry. Done.
V.2.018c
The cases of bad Win32 Equates Error Searches like, for example, '&TRU' where pointing to the first encounted '&TRUE'. Fixed.
Add an Horizontal ScrollBar, in the Api Function Dialog (Right-Click Feature).
Structures Dialog in Equates Form: The Win32 Equates and the Multiple Names for one record, were not considered. Done.
While storing the User Defined Equates, the cases of '[<Data:...]', where sometimes perverting the StatementsTable Records (used for Error Pointing). Fixed.
V.2.018d
Same as V.2.018c, but removed a wrong modification i did whil tracking down the '[<Data:...]' Bug.
V.2.019a
New release of the Debugger:
* [Feature] Event log (thread creation/destruction, module load/unload, debug strings)
Call 'Kernel32.OutputDebugString' to log messages
* [Feature] Debugger configuration is saved now (show advanced regs, stepping mode, font)
* [Feature] Change notification for register values
* [Feature] Support for 80 bit (T$) floating point values (data view/mouse hints)
* [Feature] Double click in Data view takes to memory inspector
* [Bugfix] CPU feature recognition in CPU info was not working correctly
* [Bugfix] Variable column width for data viewer & memory inspector
V.2.019b
The T§ Data were not assumed by the Structures Dialog. Added.
The previous Debugger Update had been made with old Files. It Should have been:
Changes since previous release:
* [Change] Virtual Page table replaced by Address Space tree
* [Feature] Event log (thread creation/destruction, module load/unload, debug strings)
Call 'Kernel32.OutputDebugString' to log messages
* [Feature] Debugger configuration is saved now (show advanced regs, stepping mode, font)
* [Feature] Change notification for register values
* [Feature] Support for 80 bit (T$) floating point values (data view/mouse hints)
* [Feature] Double click in Data view takes to memory inspector
* [Bugfix] CPU feature recognition in CPU info was not working correctly
* [Bugfix] Variable column width for data viewer & memory inspector
* [Bugfix] Pause sometimes crashed when using external threads
V.2.019c
The [German] Button was missing. Added.
The ending zero was set after the CRLF, for the National Strings, showing two small squares at the end. Fixed.
V.2.020a
The encoding of SIB with esp inside had been corrupted by a Typo. Fixed.
Debugger:
* [Feature] Mouse hints now support address arithmetic (e.g. D$Data+ecx*2+EQUATE)
* [Bugfix] Crash fixed when clicking the value list while no label is selected
* [Bugfix] Infrequent callstack crash fixed
* [Change] Exception auto-forward to external handler reenabled
General review of the Undo Feature, and implementation of the Redo Feature.
Speed-up of the DCBP Drawing.
V.2.020b
The cases of Block-Indent was arasing the Block, when having the Block Auto-Deletion set on, in the Bad Habits Tab of the Configuration. Fixed.
The re-alignment of the Block-Start was bad, if the initial position was not aligned on the Tab Size. Fixed.
The DCBP were not shown with the full Source restored. Fixed.
V.2.020c
Review of the Names in the Edit Menu.
Minor improvements in the Block Indentations Selections.
First implementation of the 'Tag Unicode Label' Dialog.
V.2.021a
Assembler: The Data Alignment default to 4 Bytes is now only in cases when no Size Specifier is given after the first label. If a Size Specifier is found there, the default Alignement depends on this leading definition (1 Byte for B$, 2 Bytes, for W$,... 8 Bytes for R$,...).
'Tag Unicode Label' Dialog: Font choice saved, and NumberOfChars computed.
V.2.021b
ParaMacros Parser: Insert an infinite loop test.
Unicode Tag Editor: The Font Handle was not zeroed after the Font release. Fixed.
V.2.021c
Review of the user's Source state (Partial vs Full-Source) in Debug sessions.
V.2.021d
Debugger:
* [Change] Debug dialog position & size is saved now
* [Bugfix] Mouse Hints did not work correctly when toolbar was activated
* [Bugfix] Title management reviewed
* [Bugfix] Async Terminate now sends WM_CLOSE to debuggees main windows
V.2.022a
I forgot to set the 'FileReadyToRun' Flag to FALSE after the Main Icon Edition and after all of the Tag Functionalities (causing [F6] to not re-compile before Runing). Fixed.
The [Lang] Tab of the [Configuration] Dialog was not made Child. Fixed.
When [With Security] was set [On] in the Configuration, it was hanging, when opening a File after having run the Encode-Decode Box. Fixed.
New release of the Equal Pre-Parser, with, mainly, implementations of exp(), log2(), log10(), ln(), atan(), and table as Destinations, plus a 'String maker' Functionality.
Restore the [Unfold] Functionality, for the Equal Pre-Paser, that was pointing to the wrong Buffer, since a recent re-organization of the Assembler Buffers.
New release of the Disassembler. First implementation of the Map File, with User switch of Data and Code Labels. Implementation of the Short Jumps Analyses.
In 'NewBrackets', there were cases when some macros Declarations of multiple nested {Data:...} that could pervert by one Record scaling, the error Pointing for the upward Statements. Fixed.
New release of the Debugger:
* [Bugfix] Reactivation of 'Hold On Breakpoints' crash fixed (Win98 mainly)
* [Bugfix] Select address space tab before module init (firewall block) crash fixed
* [Bugfix] Watchpoints feature reviewed (was crashing the debuggee when used in synchronous mode)
Asynchronous mode (set watchpoints while running) deactivated for the time being
* [Bugfix] Buffer overrun protection in call stack reconstruction
* [Bugfix] Better handling of failed call stack reconstruction
* [Bugfix] Fixed possible infinite loop case when stepping module code
V.2.022b
Update of the Api Functions, for 'sqlite3', by Marcello.
Disable the previous implementation for Disassembly Map File (does not work).
V.2.023a
Second implementation of the Disassembly Map Files.
New release of the Equal Pre-Parser, with review of the Parenthesis management.
V.2.023b/c
The Relocations of DLLs with Resources inside was failing. Fixed.
V.2.023d
Bugs fixed in the Conditional Macros Parser:
- The 'Imm' Condition was failing on Parameters, in case the 'High Bit' was set on, by the Equates Parser.
- The Conditions depending on the Internal Counters where inversed for '<' and '>'.
- For some combinations of #If and Statements an additional Separator was left over at the end, by 'ExpandMacroOnParametersLoop'
Assembler:
- the 'No Api calls' Cases of EXEs are now allowed (Error case replaced by a 'Yes/No' Box)
Disassembler:
- Same as for the Assembler: Now accepting PEs without .Import Section.
- Add a security, in 'FixMzParagraphsNumber' Method one, for case of wrong Displacements, bigger than the Disassembled File.
V.2.023e
Add a security test, in the Disassembler Routine scanning the .Import.
The Error Manager was hanging, in cases of missing Entry-Point on empty Sources. Fixed.
Re-organization of the Macros Parser, and review of the '#N' Key: It now assumes the Number of Parameters, in all cases (remove the very old, and never used, '#n' for backward parsings).
V.2.023f
Add the ''!!'' Marker, in the Macros Engine vocabulary, for removing the 2 first Chars of a Parameter.
Add the Conditional Comparison cases of '<=' and '>=', for the '#N' and '&&Counters' conditional Macros.
For some Macros created by Macros, additional Spaces in the '{..}' nested Declaration could have foolished the Macros Parser. Missing case implemented in 'StripUnneededSpaces'.
V.2.023g
Add a missing security (possible hang) in the 'KillTrailingSpaces' Routine.
V.2.024a
Implement the Jumps Size Optimizations.
V.2.024b
Bug Fix in the Macros Engine: The new 'MultiParametersUnfolding' Routine was not taking care of Text forms when scanning '}'.
V.2.025a
The above bug fix was incomplete. Reviewed.
The Unfold Box was not closing automatically after an Unfold Error, showing first, the error Box, then the empty Unfold Box. Done.
Implement the possibility of having several Clip Files.
Bugs Fixes release of the Equal Pre-Parser.
Macros Parser: When expanding some {... #2>L} nested Macro Declaration, for Macros/Equates creation by Macro, the trailing '}' was emitted as part of the Parameter. Fixed.
Restart the LibScanner from scratch, first working on a complete Asm listing Interpretation of all of the Lib contents.
Implement the Tag Menu ID, with automatic replacement of the Source Menu IDs Tables.
Implement another RosAsm Developements Test, for Serial Compilations.
Turn the Ascii Chart AutoScroll, to assume case when the Font would not be available on the user's configuration (Could mess-up the view, in case when the replacement Font would be a little bigger than expected).
New version of the Debugger:
* [Feature] Local symbol support for mouse hints and call stack
* [Feature] New filter capabilities in call stack (context menu)
* [Feature] Sort data labels by Address or Name (select in context menu)
* [Feature] Toolbar
* [Change] Flags moved into toolbar (can be hidden)
* [Change] General code cleanup
* [Bugfix] Rare 'Invalid path' problem fixed
New version of the Form Wizard:
* Made compatible with the new management of the Win32 Equates File.
* Treeview display for styles
* New management for styles (sorted which can be easily added and raw styles which are fix)
* Form position window
* Grid
V.2.025b
Form Wizard:
* listview and form position window display problems fixed
* fonts (accidentally removed in the previous release)
V.2.025c
Add an error Case, when storing Equates Names including Special Chars.
Forgot a developement test in the Jumps Size Optimizations. Fixed.
Start of the Obj(s) Parsing, in the LibScanner.
Sources Editor Bug Fix: The Redo feature was miss-behaving in case of CRLFs and/or Tabs.
V.2.025d
Right-Click was keeping silent on cases of ''&EQUATE)''. Fixed.
In 'HotParsers', invert the order of of the 'TranslateAsciiToMyAscii' and 'StripUnderscore'.
LibScanner: First version with parsing of the Object Sections.
V.2.025e
In store 'StoreMacroVariable' (Macros Engine), removing the no-use '|', for the output, was deleting the ':', in case of Evocations directly following a Label Declaration, when the Macro-Variable Statement was the first one, in the Macro Declaration. Fixed.
Minor Update of the Debugger, with new Documentation for B_U_Asm.
Disassembler: Some Strings Interpretations were missing the leading Char. Fixed.
V.2.025f
Implement the PUSHW imm Encodage.
Apply the V.2.025e Disassembly Strings Interpretation modification, to the cases of Unicode Strings.
Dialog Editor: Implement the WS_GROUP Flag for the CroupBoxes Controls.
Update of the Win32 Equates Right-Click Dialog.
New version of the IncIncluder.
LibScanner: Implementations of the COFF Sections with Reloc records, and first implementation of the Auxiliary Formats, for the COFF Reloc Records.
Disassembler: Remove the execution of the 'IsItNoReturnCall' Routine, in cases of Api CALLs.
V.2.025g/h
Add two errors Messages, in the Assembler: Security for '{}' abuses, and Source usage of Symbols in form of Automatic Labels.
V.2.025e introduced a bug in the Macros Parser. Fixed.
V.2.026a
New release of the Disassembler.
V.2.027a
Remove the errors Messages, in 'ComputeExpression', to enable the computation of Expressions including Equates declared by macros, in a second general Pass. Errors cases assumed by the downward Computations.
Debugger:
* [Bugfix] Menu did not work on Win95
* [Bugfix] MMX register contents did not show properly on Win9x
* [Bugfix] Occasional crash when mouse hints showed up behind other windows on Win98
New DisAssembler Version.
* Recognition of alternated Pointers.
* Review of the Data Pointer, with matching Code
* First direct implementation of the Api Parameters Recognitions (Code vs Data).
* Reorganization of the Ascii and Unicode Strings Recognitions.
* Recognition of repetitive Data Bytes.
* Better Code Recognition
V.2.028a
Disassembler:
* Rewrite of all the Data output stuff, in the Disassembler.
* Implement the Recognition of isolated Pointers, in Data.
* Implement the missing cases of PUSHW imm, in the Disassembler Engine.
* Fix a typo in MOVDQA (op7F form).
* Review of the Interactive Functionalities.
* The analyses of RosAsm produced PEs without Sources were failing. Fixed.
Review of the 'KillDebugger' cases, in the MainWindowProc.
Modify the ergonomy of the Dynamic Break-Points. (Two char margin // One Click and one [F4] for BPs On/Off // [Ctrl] for Floating Menu // [Shift] for all BPs Off).
Editor: Default Font set to Courier New 10.
Fix of several minor bugs.
V.2.028b
Disassembler:
- Fix a Typo in the 'MOVQ' Interpretation of Effective Address.
- Fix a minor bug in 'FlagsCoherency' for the FP10 Cases.
- Switch the Strings Recognition to Strings Identifications (Positive Recognitions to Try&See recognitions).
- Degressive tuning of the Strings Recognitions, in between the Negative Recognitions.
- Extend the Api Names Buffer to 128 Chars by Function.
PMOVMSKB: The Intel Doc i used in 2001 was wrong (reversed order of Parameters in the Reg/rm Byte). Fixed in the Assembler and in the Disassembler.
V.2.028c
Aborted
V.2.029a
Disassembler:
- Implement the 'Minus Indice' in Effective Addresses. Example: jmp D$eax*4+Data0438E28-4
- Negative Recognitions: Implement all LOCK cases (matching Instructions and E.A.)
- Fix a Typo in CVTPD2PS.
Assembler:
- Error Pointing, in Source, now located before the ErrorBox Messages.
- The Size of the two main 'Switch Buffers' (CodeSourceA / CodeSourceB) were not identical. Fixed.
Debugger:
- Restore the normal state of the 'WeAreInTheCodeBox' Flag, in 'InstructionDecode'. (Was causing occasional hangs of the Assembler).
IDE:
- Titles Tab made independant.
- 'call LoadBookMarks' added in cases of MRU. (Had been forgotten).
- DCBPs: Specific window for the Margin, with different Mouse Shapes for Edit and DCBPs.
- General review of this Functionality, with minor bug fix.
Completions:
- Review of the Completion Buffer sizes. Computation of the real size instead of estimation.
- Win32 Equates Completion: Fix a minor Bug causing the failure of the detection of Names with Numerics inside.
V.2.029b
Consider the ToolBar Height, when ToolBar is [On], for the 'dead-point' computation of the TITLEs' Tab Control.
V.2.029c
Implement the cases of D$FPU_8_Data+4, in the Disassembler outputs. (Used for pushing FPU_8 on the Stack. Second Label not outputed by the Disassembler, in Data, to keep with the FPU Data rendering).
V.2.029d
Bug Fix: Could have hang, because of a Pointer not yet zeroed, while loading a File needing a MessageBox, and therefore sending a WM_PAINT. Typically loading twice a Disassembly with no Icon found.
Disassembler: In the previous '+4', in E.A. adjustment, i forgot taking care of ajusting the Tables Limits, for the tests. Fixed.
V.2.030a
Extend the security limit for Api Functions Names to 200 Bytes.
In [Lists] Export and Import, the Source states (Full vs Partial - TITLEs inside -) had not been updated to the actual management (Always Partial in between two Edit Actions), causing the search Functionalities to fail, when raising the TITLEs Bar, in between two Searches. Fixed.
List Export Box: Uses the LBS_SORT Flag
List Import Box: Assumes the Api calls by Jumps Table (for the Disassembled Sources).
Disassembler:
* First Implementation of the Symbolics' Strings Table (Applied to 'Main', MainWindowProc', 'DialogProcs', 'ThreadProcs', 'EnumChildWindowProcs', HookProcs).
* Simplification of the Disassembler Options: Remove the [Group Data at Top] and [With HLL Ananlyses] Flags.
V.2.030b
Disassembler: Multiple WindowClasses: Select only the one closest to 'Main:' as 'MainWindowProc', in the Strings Table, and the others as 'WindowProc'.
V.2.031a
New version of the Debugger, with the Debugger's Strings internationalisation.
V.2.031b
Inclusion of the Norvegian Language.
I forgot to update the [Lists]//[Imports]/[Exports] to conform with the new convention of the TITLEs Managements. Fixed.
V.2.032a
Preview of the GUIDs Dialog.
V.2.033a
Disassembler: Extend the Recognitions of repetitive Data to 9 occurencies, for cases of Dummy multiple 'push/pop eax', in 'MarkRepetitiveDataBytes'.
Debugger: The FPU FLags, in the ToolBar, were inactivated. Fixed.
Form Wizard: Fix of a minor IDE bug.
V.2.033b
Move the release of the 'EquateSubstitutes' Table into the 'InitIndex1' stuff.
V.2.033c
Minor Bug fix release for the Debugger
V.2.033d
Clip File Templates coming with '@' Flag: The Length was wrong. Fixed
Sources Editor: The CRLFs Applied at the beginning of a Line begining with a Local Label were wrongly applied the Local Labels Indentation. Fixed.
Menu Item [Output] Grayed when required.
Dynamic Break-Points: Floating Menu fired either by Double-Left-Click or by Right-Click. Option in the Configuration Tab.
Disassembler: Restore, at least, one Strings Recognition, before the negative Recognitions.
V.2.033e
Bug Fix, in the Disassembler in the Recognition of Api Calls Parameters locations.
V.2.034a
Editor: The Char storage was missing in the Undo Feature, for the Lines drawing. Fixed.
The Help branching, from the Clip Dialog was obsolete. Updated.
Fix a minor bug in the Clip Viewer (searching for ':', even when none inside).
When locating at the very first Line of a Source, in the Source Editor, the Ctrl-X / D Functions were not assuming the missing CRLF, locating the Caret 2 Chars further. Fixed.
New version of the LibScanner.
New version of the Unused Symbols Dialog
Review of the [Run], [Compile] and [Optimize] commands logic.
V.2.034b
Review of the [Local] TITLE by Scarmatil.
Add of a couple of securities in the UnfoldMacros Routines.
The new 'Compile' Routine of V.2.023a was buggy. Fixed.
V.2.035a
Review the branching to the 'CreateFile' Routine. Remove the Return to caller of caller Tip, for maintainance ease.
Add some missing error cases for LOOPxx with plain labels.
New version of the IncIncluder (Half).
Add a case for assuming the strings in 'UnfoldOneOfMultiPara'.
Enable the GUIDs Menu Item. Fix a minor bug in the vTables Text.
Disassembler: In 'WriteDisAscii', isolated cases of 13, or 10, could have been confused with CRLF. Fixed.
Review some details in the TITLE Tab Window Positioning, colour on Mouse over, and fix a minor bug in case of MRU load, which was not setting the TITLE Tab on the actual TITLE.
New version of the [RosAsm Mems] tool ([RosAsm Devs Tests]), by Guga.
V.2.035b
Bug fix: The Help did not work since the unification of its calls.
V.2.035c
Bug fix: EBX was not preserved in the Disassembler Engine 'Dis_rm16_Sreg' and 'Dis_rm32_Sreg' Routines, causing some MM, XMM and Seg Regs, to not be outputed the correct way.
History: .
I began working on the RosAsm project in September 1998. The very first version was written with Asm32. I begin this history in July 2000, at a development state that allowed me to set the version number to 1.00.
V1.00 - State:
Assembler/linker/IDE
Editors for Source, Icon, Menu, Dialog
Auto-compiles its source (640,000 octets) in 16.5 seconds on K6/200//Win95
Runs under ReactOs/Win95/95/NT/2000
[V1.01 to V3.07e snipped].
V3.08a
Several improvements in the Resources 'Choice-Bar' (what enables the choice for loading / deleting Resources). This Bar now shows the ID number of the chosen Resource. It also allows exiting any of the processes by a single [Esc] hit. Useful to recall the IDs numbers.
Improvements in the Resources storage. Inside each Resources type, the objects are now sorted in IDs order, when re-compiling. This is required under the NT Family. Also, there was a bug in an internal list management that produced a hang if a Resource was deleted between two Compilations. Fixed.
When stepping with the Debugger Dialog, closing this Dialog stops the Debug Process, (instead of going on running , like it still does when hitting the [OK] Button). This may help a little bit when testing infinite loops or hanging instructions with 'Int 3' inside.
The chosen solution for saving Undo Files is that a Folder is now created by RosAsm at launch time. This Folder, always located aside RosAsm itself, is then used, whatever current Directory further definition. Two alert Boxes are added to inform user of possible problems with Blocks-Undos when running RosAsm multi-instances. (Running RosAsm multi-instances remains allowed...).
Add a test for fixing the problems encountered with CR-ending Blocks. (This happened with [Arrow] Selections).
V3.08b
Implement the possibility of declaring text (including Multi-Lines) Equates. Example:
[SomeText 'Agaga
Agigi
Agogo']
[ViewThisOne: B§ SomeText, 0]
One more Font is added to solve a problem encountered with Users Definition of 'Big Fonts' in the Win Configuration Panel.
V3.08c
Fix two typos in FPATAN and SHRD reg reg CL encodages.
V4.00a/b/c
First release with integrated Disassembler
Implementation of the TITLE feature
Coding Dialog
A couple of minor bugs have been fixed along with these implementations.
Implementation of Body Equates under the form of [MyBodyEquate < 0111, 0222, 0333 >].
V4.01a
Most PE disassembled.
Revue the design of [Home] / [End] in Source Editor.
Move the Expression Parser from after the Equates and Macros Jobs to before the Equates and Macros Job. Win Equates still allowed, but no more User Equates. This is to allow Expressions usage inside Macros Instructions.
New Macros Unfolder that now computes all of Macros and Equates because users can not understand why the unfolding may be different from the real computation when nested Equates are involved Much slower, but yet fast enough, and much better to wait a couple of seconds than having an impossible to understand result, in such complicated cases.
V4.01b
Minor improvements in the Encode / Decode Box.
Extend the Selection of Source Text, on error, to hold the whole Instruction, even with Multi-Lines ones, or for entire Blocks of Data.
Move the Expression Parser job. It is now nested in between the Equates and the Macros jobs, in order to allow Equates inside Expression and Expressions inside Equates.
Auto-clear leading / trailing Spaces inside BodyEquates (turns < eax or 1 > into <eax or 1>)
Add a test: for orphan Colons (Previously, ':' alone was not detected).
V4.01c
Minor improvements in the Dialog Editor Up/Down Controls for moving-Sizing.
Bug fix in the Dialogs Class Record holding: Odd Names was turning the Controls Data unaligned.
The displacement Bytes of effective Addresses, in the Disassembler, were branched to an unsigned Routine. Fixed.
Minor adjustments in the Disassembler String outputting.
Preview implementation of OpHelp.exe as a replacement of the OpCode Table viewing (Mnemonic Right-Click).
Minor adjustments in the Disassembler for Api Functions Pointing and for Text output.
V.E.
First implementation of the Disassembler Code Mapping, Symbolic Analyse, and Export analyses (the Disassembler is now DLLs able).
When nesting the Expression Parser calls intos Equates and Macros jobs, I broke down the error search Function for this chunk of computations. Fixed.
I wrote a particular Routine for cleaning the Clipboard content. Required because, at RosAsm Board, Sources, when formatted as 'Sources' contain a lot of weird control characters , that the Source Editor is then unable to understand, and, of course, the Assembler unable to parse. The bad thing is that, now on, Copy/Paste of any characters up to 127 will be made impossible...
V4.02b
Minor bugs fixes release of previous .02a implementations.
V4.02c
Revue of the Basic Icon search Routines. They were very old and badly organized. The Routines concerned by these modifications are: 'PeekIcon' / 'PokeIcon' / 'OpenRosAsmPe' / 'DisMain'.
A minor bug in the String outputting of the Pe Editor (Strings not visible when written at the end of the Source, without any CR/LF) is fixed.
Third version of the Disassembler Code Mapping Strategy.
Major bug able to destroy Resources fixed.
V4.03a
First version providing an opened area for volunteers who want to write Text HLL interpretation of Disassembly Sources.
Disassembler Data Strings recognition implemented.
Finish the implementation of OpHelp Check Table.
Fix a detail in the [Ctrl][Y] Line Pos management.
V4.04a
First version with external Files for Equates / Structures / Api Functions.
Fix a detail in Auto-Indent (Off >>> IndentCount to zero).
Implementation of the Styles Help in the Dialog Editor.
V4.04b
Fix a minor bug in Disassembly of LEA (wrong 'Lea reg reg' test).
Revue the way it checks for Path\FileName.ext in [new] Option.
First version with a Data Memory View in the Debugger.
V4.04c
Improvements in the Debugger memory View. (+ add of a [View More] Dialog).
Replace the 'ControlX' call by a 'ControlD' call in the [Ctrl][Y] Line deletion feature.
Cut off the Code trailing zeros analyses in the Disassembly job.
Fix a sizing problem in the TITLE feature's Tab Control.
V4.04d
Temporarily reactivate the [Symbolic Analyses] in the Disassembler (they had been made un-available since the last reorganizations of the Api Functions as external File).
Under WINE, '§' Char Marker is not properly outputted. I replace it by '$'. This does not change anything at the user input point of vue. '§' remains available for 'French-like' KeyBoards and the substitution is silently done.
Add a WineReadMe.txt in RosAsm.zip.
Disassembler: On Text ended by a zero Char, the quotes were not closed. Fixed.
V4.04e
Turn the [Search Up] / [Search Down] Double Click Menu Option 'Jump on first shot'.
Enable Dialog Class without Menu (Dialog Editor).
Multi-Lines Comments implemented.
When having both BookMarks and TITLEs, the TITLEs Tab was wrong because of calls order. Fixed.
V4.05a
General revue of RosAsm Source: A bit more HLL (replacement of the old 'CallBack' Macro by 'Proc' one, in particular). Auto-Compilation is now a bit slower because of the new HLL set, which requires one more Macros Jobs pass (17 seconds now, for the whole beast -1.700 Mo- on K6/300).
Restore the Alternate Syntaxes parsings and re organize the Comments and MLC deletions in the Assembler.
Suppress the feature for re-ordering the Local Labels on Right-Click on Block. It was too dirty and of no use.
In the Dialog Editor, rewrite of the feature for retrieving a Template from ClipBoard.
Fix the Flags problem in the Menu Editor -none too late- (When inserting or deleting an Item, the downward Items' Flags were wrongly adjusted, since....).
V4.05b
Implement a TickCount for mouse Block Selection when moving up or down: Slow to fast effect.
Bug found inside the Encoder: When testing all the Instructions one by one, I have fixed a problem for one Instruction producing a wrong code in another one. This was in the 'gg3' encoding of the PSLL / PSRA / PSRL instructions with 'imm to reg' Parameters.
A typo during the V.4.05a clean-up work perverted one of the Sub-Routines of the Memory Manager. Fixed.
Since V.4.01a/b, when the Expression Parser has been moved from before Equates and Macros replacements to inside (nested inside replacements jobs for flexibility), the Real Expressions Parser was fooled by the 'DoneFlag' (High Byte Bit). Restored.
Add a security at the end of the Buffer for the Encode/Decode Box. It was previously able to increase and overflow after several runs.
V4.05c
Error case added for Double Declarations of '&0' meaningless Automatic Labels (in macro).
Hanging bug in [Delete Menu] fixed.
Compilation 2.73 times faster. AutoCompilation on K6/300/Win95 (Source = 1.7 Mo.):
V.4.05b = 16.92 Seconds.
V.5.05c = 6.18 Seconds. (3.6 s/Mo -276 Ko/s -)
Add an Item to the Double-Click Float Menu: On Number >>> [Bases Forms], for Hexa, Decimal, Binary.
V4.05d
Add of [x] Buttons in the User Menu Edition (Configuration], for deleting Items.
Yet a bit faster (yet AutoCompilation on K6/300/Win95 (Source = 1.7 Mo.)):
V.5.05c = 6.18 Seconds
V.5.05d = 5.37 Seconds.
Re-organization of the PEs Headers building, in order to allow DLLs without Data / Reloc / Import sections, plus set the DLL Flag for DLLs in the 'PeHeaderCharacteristics' Record of the PE-Header.
V4.05e
Bug fix in Data building: The usage of Win32 Equates inside '#n' Loops returned a wrong Value, but for the first one.
Add a test in TITLE Tab for preventing from empty TITLED Chunks.
The redefinition of the default [Top] TITLE was impossible because of a bad test in the first Assembler Parser. Fixed.
V4.06a
Right-Click upon text, but not achieving in any action, was fooling the Caret Position. Fixed.
Missing delete of Multi-Lines-Comments in the Macros-Unfolder feature added.
A stupid no use test (left-over of a Copy/Paste...), for Reals, in the Expressions parser, refused to eat some Numbers. Removed.
Implement Kenny's Key-On / Key-Off Table, in order to suppress all calls to the weird Win32 'GetKeyState' Function, and in order to solve some problems under WINE (should be much more portable across the various OSes versions, including ReactOS).
Complete re-write of the two Block-Selections (by KeyBoard and by Mouse) and implementation of a new Windows-like Caret.
Implement a 'Once-for-all' translation from Win32 Equates to Hexa, in the Assembler (before the Equates and Macros jobs), and suppress the multiple downward computations for this.
Re-write of the Win32 Equates File(s) Loader:
Extend the First Char Indices Table to 256 Bytes.
Save the internal use (by the Assembler) Names and Values Tables, under the names of 'Equates.nam' and 'Equates.num'. They are compiled when not found and then saved back to Disk aside 'Equates.equ', ready for reuse, without re-compilation at the next runs.
(The Equates Loader now is ready for working with the next (huge) Win32 Equates File(s) provided by Beyond2000).
Pre-implementation (actually commented out) of an HLL pre-Parser, translating the ' == ' occurrences into the various needed Asm forms ( ; call EqualParser, in 'AsmMain'). It will be un-commented with the implementation of the OOP pre-Parser, and works like a fast and easy internal Macros set. This is the first step of the 'Non-Asm' implementations in RosAsm. (Provided commented out for advanced users tests, opinions, wishes Lists, ...).
The DLL Relocation for Api calls was missing. Added (necessary for DLL Code Relocations, in case, for example, the user gives the same base for the DLL as for the calling PE).
V4.06b
Fix an encoding error for things like 'push D§FS:+0'. (The encoding was wrong, expecting a short form for the Dis, whereas there is none for this case). Also, 'push D§0' is now made possible (without the plus char previously required).
Invalidate the Block Selection for [Ctrl][V].
Disassembler: Implementation of the Routine for translating the old Win Menu Format into the new MenuEx one, used by RosAsm. The IDs problems remains to be solved.
The 'Jmp 'DLL.Function' Instruction is made possible (for Disassembly). 'Mov eax 'DLL.Function', not yet.
V4.07a
The Mod/Rm Byte for FBLD and FBSTP was forced to 035, producing a wrong Code for FBLD T§esp and DBSTP T§esp. Fixed.
Add a [Data is Shared] Flag in the [Output] Dialog.
ReWrite of the Debug Main Dialog. Implementation of the FPU Registers. Reorganization of the downward Dialogs for MemView implementations, and add of a [View from Pointer] in order to view the Memory eventually pointed by a Variable (this is to say, one logical Level deeper than the [More...] option View).
V4.07b
In the Structures Dialog, the Stack form computation of the Structures length was wrong for Structures ended by a Table. (the table length was computed twice). Fixed.
V4.07c
Bug Fix: Align stated on its own boundary (example, Align 32 stated at a 32 Bytes boundary >>> Nothing to be done), was wrong.
Bug Fix: If the last Instruction / Last element, in a Source, was a Win32 Equate, the Win32 Equate replacement was failing (Since the last WinEquates Parser modifications).
Improvement: With 'Int 3' Debugging, the buttons validations are now automatically restored when a Variable has been selected previously (this is to save user from clicking to select an Item, at each Memory Inspector vue, when ruining again and again an 'Int 3').
V4.08a
Implement Dialog Resources saving / loading, to / from Disk.
Add a [F9] On/Off Message in the Status Bar.
Minor bug fix, in the Debugger View of FPU Registers.
V4.08b
Bug fix: No use release of 'OtherFiles' Memory when leaving.
Bug fix: Lack of Registers preservation in the Dialog for 'Other Resources IDs'.
Re organize the Messages Holding in the [Struct] Dialog.
V4.08c
TITLEs:
Loading an asm File (Source Only) with only one TITLE did not work. Fixed.
Replacement of one TITLEd-part only was not implemented. Done.
Add an error case for unexpected Separators (For example [Data: F§ 50/4], with missing parenthesis).
Add an error case for forcing declarations of Size Markers, in case of Real Expressions, in a multiple Data Set, before and after the Expressions of the whole Set.
Debugger: Modify the action of the [Close] Button. When Stepping, after some Int 3, it does no more attempt to close the Debuggee App, because under 2000, this seems impossible. So, the [Go on Running] Button, of no more any use, is suppressed.
Implement import of Functions exported by an EXE (same syntax as with a DLL).
V4.09a
Rewrite of the Api calls concerned Routines, for holding all extensions cases (not only DLLs), and allowing the short forms of call 'Function' , as long as, at least one complete version (call 'MODULE.Function') is available somewhere in the Source.
Add a case in the Disassembler Decoder, for 'Push Word Immediate'. Should never have happened, but...
V4.09b
Restore the [Save to ClipBoard] Function in the Dialog Editor -killed by the V.4.08a implementation of [Save to Disk]-
V4.10a
The Dialog Editor Styles Help was not working as expected under 2000. Fixed, and Positions improved.
Disassembler:
Complete re-write of the targeted File mapping (now loaded the way the Windows Applications Loader does it -01000 aligned-).
The 'SectionsMap' Table and the 'RoutingMap' Table are now the same size as the targeted File mapping one (Flags and File are now 'parallelized' for ease of analizes).
New strategy for pointing out Api Functions calls and Exported Functions Locations and Names.
The Resources reading is now done first (before the re-mapping) in order to keep the same RosAsm internal Routines effective, as previously.
Debugger: I have pointed out why the Debugger misbehaved when the Debuggee App was runing a ShellExecute. When the Child Process is run from the Debuggee App, the Debugger receives an EXCEPTION_BREAKPOINT and an EXIT_PROCESS_DEBUG_EVENT at launch time and at close time, dispite the DEBUG_ONLY_THIS_PROCESS Flag in the 'CreateProcess' call. Fixed. I don't know if this is to be considered a Win bug, but, even if ROS would do it another way, it should work as well, in any cases.
Add two buttons in the 'Choice Bar Dialog' for selecting the first or the last object.
Implement a little Dialog (Tools Menu Option) for translating a Data Set into the Displacements Equates set, needed for pointing Structures Members, as users seem to have some pain at emulating the way STRUCT keyword does it in other Assemblers.
Suppress the Undo limitation -was limited to one single Part- when working with Sources divided by TITLEs, and set the Undo Directory to the Win TempPath.
Encoder modifications for ADD, AND, CMP, OR, SBB, SUB, XOR, with EAX as first Member, and imm8 as second member: For these Mnemonics, encodings may have a shorter alternate form than the one I first used, when the signed imm8 is Byte Size. I have modified my initial choice in order to enable recompilations without possible corrections of the jumps sizes, after Disassembly.
Suppress the error case for Nested-Loop in Data and VirtualData Storages, in order to allow 'len' to work upon Data Sets including multiple subsets with Multi-Data (#xxx) Declarations.
Implement a new reserved Word: PREPARSE. This keywords purpose is to open the door to any number of Pre-Parsers, at no cost for Sources not making use of them, and to allow the implementations of conflicting Pre-Parsers. This also opens the door to 'Non-Assembly' Pre-Parsers, like OOA and HLLs
Add an error case, I forgot, when implementing the new api calls methods, for wrong Modules Names coming in a Source after the good one had been provided for the same Function (was silently replaced by the good one, in the previous version).
V4.10b
Add an error Message, for the [Struct] Menu Option, in case of missing File.
Suppress the more more use [F5] for blocking the TITLEs Tab oncoming (was to save from Undo erasement).
Debugger Stepping was broken by the last 'ShellExecute' bug fix. Restored.
Implement 4 other Keys combinations for Blocks (Ctrl+Del, Ctrl+Insert, Shift+Insert, Ctrl+Back).
V.E.
five encoding was branched to 'D_ST reg' instead of 'D_R ST reg', causing five ST ST to be encoded as fir ST ST. Fixed.
First implementation of Am Fpu TILL.
In the Clip File, implementation of the '@' Char (second Line, first Row of a Template), to say to the Clip Dialog to ignore the Radio-Button selections and to load the Clip unmodified. Useful for ready to use Procedures (Proc). Revue of the Clip File, and add a couple of Clips.
Check the 'Readjourn' Flag in cases of some Key Messages modifying the Sources.
Enable Resources with Consoles Applications (To be verified and tested by Kenny).
Alternate forms, for Numbers, are now allowed: ...HO, ...x, ...B, ...D for the number of leading zeros, which can now be free (at zero compile time cost for clean written Sources. All the compile time penaltys are charged upon the undocumented forms).
Sources Editor: Implement Block Indents (back and forth -works with selected Blocks holding complete Lines, and respects Labels Positions, if any-): [Tab] > Indent++ // [Shilft][Tab] > Indent--
Disassembling of Data and VirtualData (cases of Multiple Data Setsd): If Set Sizes over limits (the arbitrary limits defined in RosAsm Source), split them into as many sub-Sets as needed.
Add a Flag in the Configuration Tab for having an auto-rebuild of the Tree-View after each Compilation.
V4.10d
Fix a bug introduced in 4.10c: The Assembler Body Equates parsing had been corrupted.
V4.10e
In the Dialog Editor, replace the MessageBox, for Menu inclusion, by a Dialog saying [Help][Create New] [Load Existing][Abort].
Fix an alignment problem (introduced with V4.05d reorganizations for DLLs without some Sections).
Add a 'SetCurrentDirectory' when loading from MRU list.
Implement a [F11] [F12] feature: Single shot BookMark with forth and back enable.
V4.11a
In the Dialog Editor, the Dialog Titles were limited to 30 Chars. Extended to 80.
Debugger Memory Inspector: Added, View from Registers, plus a Menu in the Data View, for Font, Form (Hexa, Words, dWords and ASCII with Hexa for low Bytes), Up and Down.
V4.11b
Error case added for '[', CR/LF.
Error case added for calls to a Local label.
Bug fix, in the Dialog Editor, bad Pointer, when re-loading a Dialog with Menu, from Resources.
Disassembler:
* First version of the Code intelligent recognition: When a Non-Accessed Chunk of Code is found after the Routing Analyses, it tries to say, if the Chunk is likely or unlikely Code. Seems effective.
* First attempt of writing the FPU Data Format.
Source Editor: For Sources with TITLEs, the Caret and the 'CurrentWriingPos' Position were not both at the end of the selected Block, when the [Run] errors manager was pointing out the faulty statement. Fixed.
V4.11c
Since V4.09a the Modules (DLLs, ..) loaded when compiling (for checking the Api calls validity), was no more released. Fixed.
Apply Kenny's Patch for main Window in Maximized state.
Restore [Shift][Arrows] Selections (commented out in the previous version for tests (Oooppps)).
Temporary comment out of Disassembly of Real10 (hangs in ST0ToAscii for mantissa 1 Exponent 07FFF).
V4.11d
Typo in the encodage for 'SAR Reg 1'. fixed.
I had messed it all when fixing the Cursor Pos after error pointing in V4.11b. Fixed
V4.11e
Re-read the SharedData Flag when reloading a DLL.
Enable DLLs without any Resources (a default .rsrc stub was left inside, with previous versions).
Enable DLLs with Virtual Data only ( ?Data without any Data).
Add an error Message (and an MRU List update) in case an MRU File would have been deleted or renamed while RosAsm was running.
Source Editor: Add a Flag on Key holding for preventing from rewriting for nop (blinkering effect suppressed).
V4.12a
[Ctrl][F] >>> Find Box.
[Ctrl][R] >>> Replace Box.
[F5] >>> Compile.
[F6] >>> Run.
[Shift][BackSpace] >>> Delete previous Chars up to Indentation alignment.
[Shift][Tab] >>> Caret goes to first valid Char and all the line is moved one Tab Back, if possible.
Dialog Editor: Direct Mouse Edition. Left Button >>> Pos // Right Button >>> Size.
Source Editor: Smart Home Key / Back Tab / [Shift] BackSpace // EnableMenuItem.
Debugger Memory Inspector: Was not showing the Mem from Run-Time pointers (only Compile-Time Pointers were assumed, because of a direct access instead of a ReadProcessMemory). Fixed.
Debugger: Limit the number of windows alternances when stepping (less blinkering).
Add a missing error case saying 'Orphan Bracket' for single Close-Square-Bracket.
Add an 'Include' Item in the File Menu.
Bug Fix: The Export Parser was confusing Text expressions having a Double Colon (' :: ') with declarations when counting how many Exports.
Disassembler: The Float Data restitution should now be good, and ''ST0ToAscii'' Proc should no more hang.
Restore the correct detection of the End of statement, in Error viewing (Error2 Type).
Allow a String under the Statement provided by the Error MessageBox. The 'Error' Macro has been modified in order to hold either one or two Parameters. The second one is for the cases of Pointer given for the internal 'cooked' version of the Statement Member.
V4.12b
With [Ctrl][F] // [R], the Key Up Message for Ctrl was eaten by the Search Dialog Box. Fixed.
V4.12c
Add a [Security] option in the [Configuration] Dialog for saying 'Sure? Quit without Compiling'...
The Mouse Hook for Dialogs Controls drawing was producing a strange mess making the Dialog saving fail. Fixed.
V4.12d
Resources were not saved for DLLs, in V.12. Fixed.
Add a ''SourceHasChanged'' Flag for upper [Security].
Add the WS_BORDER style to Mouse edited Controls, in the Dialog Editor (less durty lines while modifying).
Move the [Ctrl] Key state updating after [Ctrl][F] / [R] right after the concerned calls (GetKeyState, GetAsyncKeyState unusable).
Comment out the FPU Pre-Parser. Development delayed.
V4.12e
Stupid error in upper fix for DLLs with Resource. Fix fixed.
V4.12f
Solve a reg eax conflict between 'Security' and MRU.
Fix a wrong test order in the Structures Dialog Routine for computing the Equates form.
Improve the precision of Caret Pos on Mouse left-Click: In 'SetBlock', replace 'call SimpleMouseTextPos' by 'call MouseTextPos' and add a small delay after Left-Click to let 'SetBlock' a breath.
V4.12g
Finish the implementation for enabling/disabling the various Menus Items. (Resources ones mainly).
V4.13a
Keep Selected Blocks alive when moving the Mouse on Non-Client Area.
Add a 'SoundsWanted' On/Off Flag in [Configuration]/[Text Editor].
Save and restore the Structures Dialog Flags on a session base.
Clip Dialog: Implementations of the Clips File Manager features.
Fix a Typo in User Menu construction (that was limiting the Items number to 5).
Add a 'AppendToCurrentDirectory' Routine, for completing the 'Equates.equ' Path in case the user did not do it, and let this file aside RosAsm.
Tree View:
- With [Rebuild after each Compilation] Flag set on, keep the Tree window minimized, when back to Edition.
- Add a 'ClearTreeLevels' Routine (Tree View) for re-initializing between each Tree building.
- In 'BuildLabelTreeList', suppress a wrong length test for Exported Labels.
Modification of the TITLEs Tab behavior:
- Do no more close on user choice, but on mouse in Client Area.
- On actual Tab selection, the Edition jumps at Top of the Title part.
Implement a 'ReMapSourceMemoryIfNeeded' Routine, that is run for [Ctrl][V] and [Include], in order to allow insertions of Chunks bigger than expected.
Assembler:
- Bad Encoding of setnz fixed.
- Fix a Wrong Error Case Test in SourceClearner Job for '?' Data Declarations.
- Implement an error case for Text Delimiters with no separators before or after the Text.
- Add an error case, in Macros Parsing for '#x' with a number of Parameters bigger than 9, plus one more 'Infinite Loop' test, directly inside the Main Parser (that should be of no use...), plus two other 'Infinite Loop' tests in Equates Replacements and in MacrosAndEquates replacements.
Dialog Editor:
Move the 'Busy' Flag release at the end of MouseHookProc because I have seen an edited Dialog vanishing while Editing... May have been because of reentrant accesses, I suppose.
Disassembler: Implement the division of Sources into TITLEs.
V4.13b
Add several error cases after Short and Long symbols (<, >, <<, >>) for local jumps.
[Configuration]/[User Menu]: Fix a bug re initializing the User Menu Items with the Names from [Other Files] when Clicking [OK] with this Tab open.
Fix a Bad Pointer to the Disassembly End of Memory, that was producing hang when [Include]ing on fresh disassemblies.
Double the number of possible TITLEs Tabs (100 now) and the minimum size of a TITLE Part (1_000_000 Bytes now), in order to fit with the requirements of huge Files Disassemblies.
Add an error case for Equates names ended by a Colon.
Tree View: Save and restore the Pos and State of the Window when [Auto-Rebuild] is On, and preserve the state when [Auto-Hide] is Off.
V4.13c
Review of the Tree View Window Managements.
Clip Manager: Suppress disabling the [add Template] Button is case of no Source selected, and replace this by a MessageBox saying that no Selection was found.
TITLEs: I comment out the test for too big Sources Parts, because, when Disassembling, one single Data Chunk may be bigger than whatever expected size. (This test was more a pain in the ass than helpful anyway, and the users will just see if the part is too big, when having the Editor slow down).
Fixed a series of bugs in the Tables Managements when Disassembling with [Symbolic Analyse] On.
Conflict fixed, in the Source Editor, between the Floating Menu and the TrackBar.
Review the [Ctrl][Left]/[Right] feature in the Source Editor.
V4.13d
Assembler: Add missing Strings tests, in the Routine 'StoreToExportListA'.
Source Editor:
- Auto-Indent (on CRLF) now takes care of Local Labels
- Reverse Smart Home Key behavior (First shot >>> First Char / Second Shot >>> First Row).
- Add a test in 'ReMapSourceMemoryIfNeeded' for Source Length equal zero. This happens when pasting after a [File]/[New].
Disassembler:
- TITLEs: Re-adjust on actual Pos for output when the Data Chunks are bigger than the expected limit for a new TITLE output.
- Double the speed of HLL Analyses based on Api calls.
V4.13e
Output formatting details in the Disassembler.
First reorganization of the Assembler Source Parsers and creation of a new [Parsers] TITLE.
V4.14a
TreeView:
- Local Symbols pointed out in two passes (upper MainLabel plus downward Local Symbol).
- Test added for Disassemblies huge List of Orphan Labels, because building the Tree in this case may take a very long time.
Disassembler:
- Solve the problem we had with short jumps when replacing DLL indirect Call with Direct calls as this: Always do the replacements // when required, turn, for example, the 'jne G5>' into 'jne G5>>'.
- Recognition of MainWindowProc.
Assembler:
- Error case added for non GpReg usage in Effective Addressing (Example: pop F§MM1).
- Error case added for 'lea edi D$ebx+4*eax' (instead of 'lea edi D$ebx+eax*4').
- Error case added for 'movmskps bl xmm0' (32 bits reg only).
V4.14b
Assembler:
- Error case added for '-reg' in effective addressing second reg.
- When pointing an error at the Top of a TITLE or of the Source, the Block Selection was killed by the attempt for moving the Text a couple of Lines upWard. Fixed.
Dialog Editor MouseHook:
- Add a 'WindowFromPoint' to make sure the Edited Dialog is not hooking a Message while under the Editor Dialog, or under any other window.
- KickDims >>> Focus Back to the Edited Dialog.
Disassembler (Last modifications before the third re-shaping of the whole Disassembly analyses strategy):
- Run with the 'One Section trick' in cases when the Entry Point is not in the Code Section.
- Completion of .Import when the Header Look-Up Records are zeroed.
- Various 'tuning' in the Code Labels detections.
- Add a missing loop, in the Code Recognition of 'UnAccessed Code Chunks' (It was not analysing down to the End of Chunk when encountering a RET or JMP Instruction).
V4.15a.
Revue several problems when closing the Dialog Editor. Fix two problems under Win98, for MouseHook, and for the way of closing the Edited Dialog while editing (the 'ShowDialogResult' problems).
After Compilation, restore the Focus from the Tree, back to the Editor.
Mem Inspector Words and dWords to 2 and 4 Bytes was printing 3 and 5 Bytes. Fixed.
Restore the '#n' with '#-1' keys in the Macros Parser.
Encoder Bug fix: +080 // -080 was not on the proper Bytes size limit since a recent modification for solving a Disassembler Problem.
Complete re-organization and rewrite of the Assembler first Parsers by Rikkert Wiggerin.
Implement the Routine that should allow the PREPARSErs developers to declare 'NoMeanLable's in their outputs.
New Disassembly Sections Interpretations strategy aborted.
V4.15b.
Add an error case for CRLF after Bracket.
V4.15c.
Dialog Editor: Review of the direct Mouse Editing. Fix of several problems under 98. Added, securities for preventing from Auto-reverse of the Controls, when re-sizing, and from negative origins when moving. Several Simplifications of the 'MouseProc'.
V4.15d.
Dialog Editor: Fix a Bug, under 95/98 in the MouseHook procedure. Finalize the Minimal allowed re-sizing by Mouse direct actions, for preventing from losing too small Controls.
V4.15e.
Dialog Fix a conflict between '<<<<<' // '>>>>>' Menu Items and Slide Bar when having a Block Selection inside.
Restore the resize Style of the Tree Dialog.
Add two errors cases in the Macros Parser, for Unfolding of Parameters never used in the Macro Body and for overflow of the output in case of nested Macros multiplying the number of Statements at each Level.
Fix a conflicting reuse of the 'TextGoingOn' Flag by the Source Editor and the Assembler. The Compilation was hanging, since V.4.15b, when compiling with some text Data at the bottom of the screen and downward.
V4.15e.
Bug fix: When deleting a Block up, the Cursor Pos, when the selection had been down-up, was wrongly updated.
Fix a conflict between BlockAutoDeletion (when set on &TRUE) and Simulated Blocks for the [Shift][Arrow Keys] Blocks drawing.
V4.15f.
Bug fix in Cool Parsers, Alternates: mov D [eax], ebx replacement was wrong because 'ImplicitSize' was executed first. Now executed last.
Add an error case for two identical Functions Names called in two different DLLs.
Review of the previous Version modifications for the 'BlockAutoDeletion conflicts': They were also breaking the evoluated Tab Functions for Blocks Indentations.
Fix a conflict between the Search Box and the TITLEs tab, and two bugs in the TITLEs Tab 'SetPartialEditionFromPos' Routines, that was making it hang when deleting the very first TITLE part.
V4.15g.
Force the release the [Ctrl] Key after runing the Find and Search Boxes.
Add a [Shift][Del] Selection Deletion.
Fix a hanging conflict between Block Selection and the TITLE Tab feature (one more time... I had forgotten one case in the previous fix).
Add a [Bad Habits] Tab in [Configuration].
First implementation of a Path Browser for the 'Equates.equ' Path in [Configuration].
Implementation of a 'Load last used File on Start-Up' Flag in [Configuration] [Sources Edior].
Implement a NOPE dummy Intruction for writing macros doing nothing at all.
V4.15h.
Fix a bug in previous 'Load last used File on Start-Up' . Was not initializing the File Name for Compilation.
Add a test in the 'Equates.equ' Path Browser for not shutting down, when user aborts, with a valid target previously known.
V4.15i:
[F2] Key: User defined launcher
V4.15j:
When saving Source only, the TITLE Parts Names, were missing the Path. Fixed
_____________________________________________________________
Switch to RosAsm (July, 24 2003).
_____________________________________________________________
V1.1a
Review First release of RosAsm, with the B_U_Asm companion file.
V1.2a
Review of the Menu Optins.
Simplification of the way the TITLE Tab Control reacts to user choices.
V1.3a
Implementation in [Tools] of a Dialog showing the DLLs and Functions found in the actual Source.
Implement a 'forgotten' (..) BinInclude Pre-Parser.
V1.4a
Macros '#X' extension (to signed Byte).
V1.5a
First implementation of the ParaMacros Parser.
V1.5b
Bug fix in 'ReplaceParaMacrosBrackets'.
V1.5c
In 'UnfoldMacro' (Double-Left-Click Unfold Menu Option), add a security to force the pairing of ParaMacros Delimiters.
Improve the differenciation of Equates vs Data, when storing the Equates, in order to allow, for example:
> [< b]
V1.6a
Implementation of Scarmatil Equal Pre-Parser.
V1.6b
Extension of Scarmatil Equal Pre-Parser to FPU Expressions.
Modify a wBit Test, in order to enable formulatins like 'push Label+4'. (At the end of 'FirstParameterLabel').
V1.7a
Was hanging when loading some DOS EXEs Files. Fixed.
First implement of the IncIncluder.
Rewrite of the Disassembler Sections Recognitions.
The Macros Parser was hanging on the Base3 'Uses' Macro, evocated without any Parameter (hang in ResetForNewBracket). Fixed.
Complete rewrite the Api Calls encoding, in the Assembler, in order to assume all of the fancyfull stuff found in Disassemblies (like 'mov eax 'Kernel32.GetTickCount''), and re-implementation of the DLLs Functions called-by-Numbers encoding (this functionality was wrong, previoulsy).
Simplify the Disassembler functions for loading Resources. No more options for [Without Rsrc] or [Resources on requests]. The Resources registred by Names are now saved by the IDs' Numbers substitutions. The Strings Addresses Displacements are re-used to form the IDs.
Encoding: Limit pinsrw and pextrw third Parameter from 0 to 7. Pmullw was pmulw. Fixed. Set the pshufw immediate limit to 0FF, instead of 3.
Bug fix: With the Configuration Flag for saving the Pos on closure set on, closing the RosAsm Window from the Task Bar (with the Right Button menu), the next upload was hanging because of the Pos Values. Fixed by forcing the Window in the restored state, before closing.
V1.7b
Disassembler:
Several minor fixes in the Main Menu Items outputs.
Implement the output of Unicode strings and fix some minor problems with Strings restitutions.
Force Pointers restitutions (in Data), even if they are not properly aligned.
fstcw / fstenv decoding was wrong. Fixed.
Flow of identical Words and dWords were wrong. Fixed.
V1.7c
Disassembler: Simple update of several minor fixes.
V1.8a
Implement the [Ctrl][K] feature for BackUps.
Implement a 'ExportScanner' in [Tool] Menu.
Implement Auto-Initialization, for a first run, after having unziped the whole Package.
Disassembler:
Switch the bad Code Alignments Chunks ('BadDecode' Routine) to Data.
Add a String recognition call (15 Chars) before the call to 'MarkShortJumps'.
V1.8b
PUNPCKLDQ and PUNPCKLWD Disassembly was wrong. Fixed by Ludwig.
PSHUFD imm limit is not 3, but 0FF. Fixed by Ludwig.
Rewrite of the Source Instructions pointing in the Debugger ('SourceDebugPos' Routine).
Fix an awfull bug in the call to IsItProcessMemory, in case of Pointers to Pointers (with a value of the first Pointer pointing to RosAsm Memory itself while calling, and generating all of these strange and randomaly failing operations in the Inspector). Implement a new 'IsItProcessMemoryFromPointer' to cover such cases. This difficult bug was there since the begining of the Memory Inspector, which should, now, work much better.
Disassembler: Split the Strings Recogniton into Ascii Recognition and Unicode Recognition. Review the Unicode output in 'WriteData'.
V1.8c
Debugger: Reworked version of 'SourceDebugPos' Routine.
Assembler: Improve the 'ShortDis' Jumps error Message: I now says how many Bytes out of range.
Disassembler:
FNSTCW disassembly was wrong. fixed.
Solve a String Pointers problem in Data.
Split the multiple trailing zeros from end of Strings to Multiple Data Sets, with a forced Label.
V1.8d
Implement the Dialog for the Menu option [Tool]/[Source Informations]/[Exports].
V1.9a
Disassembler: Fix a Problem with the restitutions of Code and Data Pointers, in Data (they were sometimes proposed as commented out options -when a chunk was splitted by some Label-). Several adjustements in the various Recognitions. General re-organisation of the various Recognition order, and clean up.
Implement the Blinking Caret.
Implement the Code Completions for User defined Symbols and for Api calls.
Add the LBS_NOSEL Style for List Boxes, in the Dialog Editor.
V1.9b
Fix a TITLE Tab blinking problem with the Blincking Cursor.
Code Completion:
It was underlining when finding the same (length) Symbol. Fixed.
Speed up the Code Completion effective replacezment when applying on Source with TITLEs?
Some symbols were not replaced because of a bad parsing of Comments vs Multi-Lines-Comments, in the Replacement Routine.
V1.9c
Encoder: FISUBR: The 066 Word Prefix was arased on Dword sizes. Fixed.
V1.10a
New release of Scarmatil Equal Preparser:
- Added functions: cos(), sin(), abs(), tan() and sqrt().
- Sizes convertions.
- No more need of overall enclosing Parenthesis.
- More reliable.
- Less operands Types limitations.
Disassembler rewrite the Routine for pointing the PE Tag (to enable disassembling the GoAsm produced PEs, and to overwrite wrong MZ Header).
Disassembly: Fix a little bug that came out with the previous re-organisation of Routines calls order.
Switch the Source Editor Blank Line writing to 'FillRect', in order to assume wrong hight Fonts with the Code Completion Underlinement feature.
First complete release of Code Completion, with OS Equates, Pos of ListBox plus source input, and so on.
V1.10b
Simple improvements of the Code Completion feature. Mainly, closing the ListBox on user actions out of the Completion scope.
Review of the Source Editor Lines arasing (required for arasing CodeCompletion underlinements with Font not having really the required 16 pixels hight).
V1.10c
The Code Completion ListBox Dialog was not working under the 95 family. Fixed.
V1.10d
The Vertical Arrow Keys and the Return Key now directely select the items in the Code Completion ListBox, when open, while user is inputing the Prefix in the Source.
Bug fix: In the Source Editor, when having a huge Block Selection, the Caret Position computation could have hang, in some cases of Error pointing.
New release of Scarmatil Equal Pre-parser: Fixing of a detail problem for Symbolics with '.' inside. Implementation of the Equal Statement Unfolder, working the same way as the Macros Unfolder, from the Double-Left-Click Float Menu.
V1.10c
Update of Scarmatil Equal Pre-parser for minor Bug Fixes, and first Optization of the outputed Code.
V1.11a
First implementation of the last important Recognition: Code Interpretations breaking valid Codes Labels now switched to Data.
Implementation of a quick Find-Replace Box for replacements inside a Selected Block (By addition of an Item in the Float Menu of Right-Click on Block).
Fix a bug in the [Ctrl][V] Memory extender: It was not preserving the initial CurrentWritingPos for the Paste operation.
First implementation of the Tag feature.
V.1.11b
Implemented the flags for [Wole Word] / [Case sensitive] in the quick Find Replace on Block Dialog.
Review of the Right-Click feature, that was failing to point out some Declarations in case of Macros with Names not followed by a Pipe Separator.
V.1.12a
With upper Right-Click feature modification, i forgot the release of a Flag making the if fail randomaly. Fixed.
Disassembler improvements.
New version of Ludwig Debugger, with new interface and all.
V.1.12b
Implement the Int3 insertion by Double-Left-Click in the Editor left margin.
Restore the Disassembler in its working state, broken with a recent release.
V.1.12c/d
First effective release with static Mouse defined Break-Points ready for Ludwig Dynamic implementation.
Enable the Paramacros Declarations inside Macros Declarations.
Add a security test in the IncIncluder. It was hanging when not finding the required File.
V.1.13a
More improvements on the static versions of the Mouse defined Break-Points. Red Elipse instead of a red Char, in the margin. Assumes now the TITLEs Sources. Float Menu implemented.
New release of Ludwig Debugger.
New RosAsm GPL License.
V.1.13b/c
Simple bug fix in WriteImm32 Routine, when called from the Debugger for decoding the next Instruction.
Partial Download of RosAsm now with Licenses aside.
V.1.14a
Final version of the Disassembler Code vs Data Recognitions.
[New Dialog] Menu Item was disabled in the previous release. Fixed.
V.1.14b
Reduce a little bit the Dialog Editor Main List Box because of overlap problems underWin95-OSR2 (Much probably a Font problem, in fact...).
Bug fix: The selection of ListView Styles was wrong, in the Dialog Editor.
Add a Memory Extension for big IncInclude.
V.1.15a
Bug fix: some duplicated symbols were not pointed out.
Complete review of the Interface:
ToolBar inplemented.
Sizable text implemented in the Source Editor.
Titles Tab moved Down and StatusBar turn always on.
Review of the PrintColorText Routine, with new Mouse Pos Functions.
Each Interface Component is now a separated window (Edit, Status, ToolBar, ScrollBar).
V.1.15b
Code Completion was locked in the Configuration of V.1.15a. Fixed.
Bug Fix: BookMarking Local Symbols labels was missbehaving on Sources including TITLEs.
Plus several minor fixes.
V.1.15c
Close the TITLEs Tab, when the Mouse moves on the ScrollBar.
Re-initialize the DCBPs output between two Compilations.
Fix a bug in the Status Bar Name output.
V.1.16a
New version of the Debugger. Now completed, with Dynamic BreakPoints, and all.
Minor bug fix in the Disassembler.
V.1.16b
Minor bug fixes:
The ScrollBar was not made silent when no File.
The [F4] BreakPoints setting was not working on files having TITLEs.
BookMarks lenghts was wrong
V.1.16c
Add a WM_XBUTTONDOWN case in the MainWindowProc
Debugger minor bugs fixes, plus selection by Double-Clicks, in the Virtual Pages Table.
V.1.17a
Implement the AAM and AAD encodings with immediate specification
Fix a minor bug in the MRU.
Restore the NM_CLICK message, for having the TITLEs Tab producing an Edition jump to the Top of Title, in case of Click on the actual Tab (it had been wrongly modified with the previous general IDE review).
Suppress the limitation for Virtual Data Declarations (by Flag in the [Bad Habits] Configuration Tab).
Replace 'EditClassName' by 'ClassName', in the Edition Window creation, to make Donkey shut up. :))
Minor bug fix in the Debugger.
Rewrite the 'IsItanEqual' Routine.
The DLL Extension was not made upper case when creating a new DLL. Fixed.
Disassembler:
The Align Recognition had been unfortunately commented out. Restored.
Implement a Routine for not breaking Previously identified Data with the priority of Pointers Recognitions.
V.1.18a
Implement the Visual Tuts stuff.
Disassembler:
The negative recognition was not working. Fixed.
Implement the positive recognitions of Data.
The 'PE' Pointer was not saved in case of regular File, causing the resources loading to fail. Fixed.
V.1.18b
I killed a part of the Main Menu with the VisualTuts holding. Fixed.
V.1.18c
Some menu option for resources had been grayed. Restored.
V.1.19a
Disassembler String, uString and Pointers Interpretations improved.
Complete rewrite of the 'PrintColorText' Functionality in the Source Editor, and genreal reorganistion of the Source Editor.
Debugger update for minor bugs.
Implementation of the Binary form saving, loading, replacing, in the Dialog Editor.
V.1.19b
Sources Editor: Complete the Right-Scroll Functionalities, retore and modify the Caret in Overwrite Mode, and Restore the CR/LF and ESC messages holding for the Find DialogBox.
V.1.19c
Suppress the Border Style of the Source Editor surface.
The Main Menu was perverted by the Configuration Tab (adding again the VisualTuts Menu). Fixed.
Points drawing, in the Main Icon Editor, reviewed by Keldon.
V.1.20a
Fix a bug in the F11/F12 feature.
Dialog Editor: Implement the DialogList Sort, in order to view the Dialog in the proper order, before any Compilation. Implement a security, for refusing to store a New Dialog, with an already used ID.
Debugger: ReWrite of the address space handling, plus some Pointers View refreshing, and reducttion of the size of the Debugger Dialog. Minor bug fix in the DCBP deletions.
Assembler: Alien Numbers formats could have been wrongly interpretated, when used, for for Data Sets Aligments. Example: '[<0200h'. Fixed.
Disassembler: Fix a typo in Ascii Interpretations.
V.1.20b
The new security for saving the Dilaog ID, in Resources did not take care of re-editions. Fixed.
Disable the Source Editor Blinking Caret, while choosing and/or Editing a Dialog.
V.1.20c
Sources Editor: Fix a bad Font Heigh problem and restore the instant updates, when choosing Fonts and/or Colors, in the Configuration Tab (they had been killed since the last V.1.15a rewrite of the Editor).
V.1.20d
Insert the 'Show caller' Menu Item, in the Debugger.
Restore the Editor Focus after Dialog Choice.
Implement the Binary Files managements, for the menus (same as previously done for Dialogs in V.1.19a).
V.1.21a
Implement [F4] working On/Off for setting/Removing DCBPs.
Review the DCBP storage on the Editor side.
Implementation of the DCBP saving in the Undo Table.
Fix a bug in the Undo feature, when dealing with Sources having DCBP inside.
Fasten the Source Editor (the full remapping of colors was too slow on old Computers).
V.1.21b
Set the user's BackGround on StartUp (Read the Registry before window creation).
The V.1.20a implementation of a security in Dialog IDs numbering was not allowing to save back a Resources loaded Dialog. Fixed.
Remove the WS_VISIBLE style of the Tree Dialog, in Resources, to save from a flickering effect.
Fix a TreeView Dims problem.
V.1.22a
Assembler: Implement the wishable Routine for testing the accuracy of a LOCK Prefix (Checking for valid Instruction and for valid Destination Parameter).
TrewView positioned on the Edit Surface. User TreeView Width saved in the Registry.
Re-enable the 'Nested Data Loop' error case, for Declarations like [Data1: 0 #100 1, 2, 3 #10]
Re-organisation of the Main Menu.
New Dialog for Resources Menus choice.
First implementation of the Write-Time Syntax Checker.
Implement the [Save RC Data] Option.
Update of the Debugger and of the Debugger Main Dialog Menu.
Fix a Bug in the Registry Size-Marker Color saving.
V.1.22b
The DCBP Double-Click was leaving with the Caret at Row zero. Fixed.
Update of the Debugger and of the Debugger Dialogs.
The 'NotReady to Run' Flag was not set after usage of the new Resources Binary Saving implementations. Fixed.
The Selected Blocks, when showing faultive Instructions with Commas and Strings inside, were including the next downward Line. Fixed.
Minor Bug fix in the Equal Pre-Parser (odd Instruction delimiters).
TreeView: Isolate the Pos Definition from the building Routine and preserve the WindowPlacement Fags.
The User Menu Deletion had been left over at the Pos it was before the last Menu re-organisation. Fixed.
V.1.23a
Review the organisation of the [Ctrl] key Message Holding for enabling [Ctrl][C] while Debugging.
Emit the 'Close Debugger' Message for cases of [Del]
Disassembler: EVOCATED was killed inside interpertations of Flows of Pointers, so that the intermediate labels were not given. Fixed.
Some never accessed Data nested in between Code were never restituted because of the missing EVOCATED Flag. Fixed.
V.1.24a
Debugger:
* Show declaration option for data labels
* Goto user-defined address
* Fixed FPU tagword interpretation
Speed-up the Assembler. Now between 1 and 1.5 Megas Megas/Second at 1.3 Ghz
Lock the [Del] Key, in Debug Session, and enable [Ctrl][C].
Minor review of the Editor's Keys holding cases.
Disassembler: Some improvements on the Data Interpretations.
V.1.24b
Forgot to update the Unfolding Function accordingly to the new Assembler Speed-Up modifications. Fixed.
V.1.24c
The function for ReMaping the Source Memory in case of huge pasting was not considering Files with TITLEs inside. Fixed.
Implement two Routines for checking, at once, if the Control Key is up or down after all the [Ctrl][x] actions. Works as well under 95 and 2000.
New Dialog for Statistics after [Compile].
Merge a couple of the 'CoolParsers' and 'HotParsers' Routines. Now 1.6 Mega/Second at 1.3 Ghz for RosAsm Auto-Compilation.
After the V.1.24a review of the Editor's Keys holding, fast alternated inputs of some keys combinations, like [Key Down]/[Key Left] could have overlapped, forcing the user to clearly release one key before depressing the other one. Fixed by considering the real KEYDOWN Message, instead of the Key Table, for these 'mono-key' cases.
V.1.24d
Problem in the Sources Editor Keys Holding. Found nothing but a bad location for turning the KeyDown one to zero. Many doubts that could be the problem, but i can't make it missbehave again.
V.1.24e
Temporary disable the [Write time errors detection] because of unwished side effects, in the Sources Editor (conflicts with the 'Bad Habit' [Blocks AutoDeletions]).
Improve the CheckSum64 by adding the parsed word length to ebx.
Freeze all non-assumed [Ctrl][char] (was previoulsy taken as [char] and produced a problem for [Ctrl][Return].
V.1.25a
New Debugger Version.
Internal Searches, and Right-Click Symbols, Searches now consider the Dash Lines (find the Declaration with or without Dash Lines inside either the Source and/or the Destination). Mostly for the Debugger to find out the Declarations with Dash Lines, in the Sources.
Hook for the Double-Click Float Menu, to un-select the activated Block, in cases when the user hits [Escape].
Finalization of the Assembler CheckSums Table managements.
Restore the TITLE Name printing, in the Status Bar, and insert a security for TITLE detection.
Preserve the Focus on the Find-Replace Dialog when needed.
Set a [Ctrl][A] Option in the Configuration [Bad Habits] Tab.
Implement a Flag, in eax for 'SourceHasChanged', depending on [Ctrl][Char] cases.
Restore some of the KEYUP forcings, to see if this solve some reported problems, that i do not understand, about the Caret Position.
V.1.25b
New Debugger / Common / FPU TITLEs Versions.
V.1.25c
Restore and review the Multiple Structures Files holding in the new Main Menu.
Bad Flag in V.1.25a [Ctrl][Char] cases thingie (MOV instead of OR...).
Suppress a blinking effect, on some screens, when having the Blinking Caret et On.
V.1.25d
Sources Editor:
Review of the [Ctrl][PgDn]/[PgUp] managements.
Implement a Flag for making the difference between a [Shift] Selected Block and the other forms of selected Blocks.
Add a test for cases of redraw with a '@' as first Char on Screen (when having the colored Sizes Markers enable).
Implement the [Ctrl][Shift][Left-Right-PgDn-PgUp-Up-Down] extended Block-Selections.
Implement a Routine in charge of outputing the char under the Cursor. Usefull when having partial redraw called by the Blinking Cursor (when set On), particulary, in overwrite mode.
V.1.25e/f
Problems in Block Selection introduced by the split between Shift-Blocks and normal-Blocks. Fixed.
Insert the desirable call to 'ClearQwordCheckSum' in the Encode/Decode Box.
Encode Box, ErorLevel 7 was not appropriated to hold the 'Too many Parameters' error case. Fixed.
V.1.25g
Set the verbose closure of the Debugger in all wished cases.
The title of RosAsm Main Window now keeps the Version number visible after have loaded a File.
Fix a Bug in the last CoolParsers Modifications coming with V.1.24c.
V.1.26a
Two Flags were missing for the ComboBoxes Styles Management. Fixed.
Debugger:
Dump 'OutputDebugString' values to file (debug.log)
Extended CPU Information (works now for P4)
Show EIP on the debug register tab
Tab navigation in debug dialog
Minor bug-fixes
V.1.26b
When marking a DCBP close to the TITLE Tab area, by [F4], the Tab was rising up because of a bad forced pos of the Mouse. Fixed.
Implement a Sort for the Menu Items of the Visual Tutorials.
Sources Editor: The last Line Selections and Coloured Size Markers were not viewed. Fixed.
Implement an error case for LEA, Byte form.
Fix the TITLE-Tab Ctrl-Z Bug.
V.1.27a
Split between the Official and the Developements Releases Versions.
Extend the capacity of the Visual Tutorials Buffer, to hold the new Beginners ones.
Reverse the order of the MRU Menu Files. (Most recent now at Top).
V.1.27b
Error in the previous MRU modification. Fixed.
Remove the WS_THICKFRAME style of the Statistics Box.
V.1.27bc
The last Menu Items, for the Visual Tutorials, could not have been accessed. Fixed.
V.1.28a
Review of the Help Menu, Help Files Items. Added SDL, DevIL and Sqlite. Plus Help Button for where to get them.
Add the DevIL Equates into the Equates.equ File.
Disassembler improvements: Now takes care of 'No-Return-Calls'.
Implement a functionality for saving all TITLEs into as many asm Files in the [Ctrl][S] feature.
ParaMacrosParser: The CoolParser checking ParaMacros was only testing Pipe and not CRLF, and was breaking the compatibility with some older Macros (Half Documentation.exe 'EndP' Macro). Fixed.
Change the 'ReuseSourceAForCodeList' alignement from 010000 to 01000 (Problem suspected, under ReactOS, with this).
V.2.001a
Encoder: Re-organisation of the SIB with two Regs only and implement an error Message for esp+esp.
Extend the Code DB encodage to hold Ascii Strings.
Add an error Message for compilation of Sources without any Statement (in 'CountStatement' Routine).
The StatusBar routine, for extracting the File Name was hanging on Files.ext including multiple Points. Fixed.
Implement an error message for FADDP not having ST0 as second Reg.
Implement the SALC Opcode.
The order of XCHG and of TEST reg reg Parameters was reversed. Fixed (No effect on anything, but matching accuracy with the Disassembler(s) output(s)).
Various improvements on the Disassembler.
First implementation of the junction mecanisms between RosAsm and the first Wizard. Done by Scarmatil.
First implementation of the Wizard Menu Item, with Automatic detection.
V.2.002a
Some Multi-Lines Text inside single quotes were not properly detected. Fixed.
The Redraw, in 'StringSearch' had been commented out. Restored.
Switch RosAsm Dialogs Styles from DS_SYSMODAL to DS_SETFOREGROUND.
Implement the [File] / [New] Dialog, with filling Resources and Routines for various Files Types and Macros Styles.
V.2.003a
The previous Dialogs Sytles modifications did not work. Removed.
Separated Dialogs for [Control] / [S] and for [Replace Source Only].
New release of the Form Wizard.
V.2.003b
The Len KeyWord, for Leading Sizes of the OS Structures can now be computed as dWord and as Word. The normal Len remains, of course, dWord only.
The ClipBoard length included 4 trailing zeros, instead of one. Fixed.
The ParaMacros parser, for on line Macros, was broken since V.1.24a. Restored.
V.2.003c
Fix two minor bugs in the Sources Editor.
The previous review of the Len Keyword, for Word Size was not effective. Fixed.
New release of the Tag TITLE, for the Form Wizard.
V.2.004a
Fix a Source Lenght problem when starting a [New] Standard exe with no startup with only Standard macros.
Implement a complete computation to fully detect the pairing of Equates, for the Right-Click feature.
Bug fixed in the Menus Editor (was loosing track of the Flags, in some cases).
Extend the Macros &Variables to 100 Records of 128 Bytes each, and review of the concerned Routines
Modify the Local Symbols completion so that it does not touch the Macros Declarations, and call for it a second time, after the Macros Job, to fullfill the Local Symbols unfolded by the Macros job
Disassembler: Modifiy the 'WriteExportedFunctionLabel' Function to hold some disorganized Export Sections.
V.2.004b
Forgot an INT3, in the Right-Click Equates Search pairing control.
Toolbar hanging on [Structures] Item without MenuID. Forced to simulate the default 'Structure.str'
V.2.004c
Rewrite of the 'CoolParsers' Routine in charge of upairing error detections of '()(, '[]', and '{}', with direct pointing into the user Source. Mixed cases assumed.
Preverse a copy of the default Icon, for retoring it, in the case of [New] File.
Remove the Resources size limitation. and fix a bug in reading the Resources number (by IDs + by Names).
V.2.004d
Forgot to the call to 'ReplaceWin32Equates', in the Double-Left-Click [Unfold] (Macro), menu Option functionality. Fixed.
[New] File Dialog:
* The Do_Loop Macro was wrongly used in the Hexprint Default. Fixed.
* The DLL choice was not reflected in the File Name. Fixed.
V.2.005a
Make a copy of the default Main Icon, so that it could be recovered when doing a [New] File after the edition of another File, with another Icon.
The Routine checking the presence of 'Main:', in the Source, was not updated (using obsolete Routines), and was not detecting a modification of 'Main' in between to Compilation. Updated and fixed.
Fix a bug in the recent &Variables extensions to 100*128 Bytes (was no more compiling a Macro with trailing Evocation).
Debugger: Release of Version 1.4, with:
* Show module name for outside-stepping/exception
* Continueable exceptions
* Some bug fixes
V.2.006a
Implement an error Message to forbid the usage of Number as Symbolic Names.
First test-implementation of the Internationlization of The Errors Messages.
New Dialog for the Error Messages, with review of the Error Routines, to match with the National Languages
Fix a conflict between the [Bad Habits] / Auto-Deletion and the Code Completion.
Remove the 'Auto-Writing' effect in the Code Completion.
The Macros unfolder was hanging, when parsing a Statement terminated by a bad comma. Fixed.
Change the Automatic labels Names from 'AAAAAAAA', increasing, to 'ZZZZZZZZ', decreasing, in order to have them at the bottom of the Debugger Data View.
Debugger [Version 1.5b]
* Bypass the PSAPI and the toolhelp functions
* Experimental implementation of the call-stack
* Many bug-fixes
V.2.007a
The V.2.004a Routine, for the Equates pairing, was not assuming the Declaration of Macros, without any Space, between [MacroName|Bla...]. Restored.
Disassembler: Found a way to support the Api Table wild Jumps, in Code: If not MOV, CALL, the Jumps Table is now targeted under the form of its direct Code label. At this Location (the Jumps Table), there is no more the interpretated Label (Api Name form), as it is already shown by the JMP: Instead, at the caller position, the 'call CodeXXXXX is now followed by a comment saying what api name it is, in the Jumps Table.
Example:
> jne Code0404528 ; 'USER32.DefWindowProcA'
> ...
> Code0404528: A8:
> jmp 'USER32.DefWindowProcA'
The Instructions Prefixes were not shown, in the Disassemblies 'Commented Hexa Code'. Done.
Encoder: The errors in the form of 'mov D$edi+ax 1' were coming with an inappropriated error Message. Fixed.
Review of the Dialog Editor Function for Loading a Dialog Template from ClipBoard.
First release of Diego Fraga review of the Resources Manager, with Named IDs assumed, for the Disassembler.
V.2.007b
Bug fix, in the management of Missing Symbols error (modsifed in previous version).
V.2.007c/d
Bug fix: The Dialog Editor was leaving an empty Record, before the last one, in case of mixed deletions / creations.
V.2.007e
Bug fix: In the HotParsers, 'StripUneededEOI' was not assuming the case of EOI followed by a CloseBraket, producing a hang, in case of CRLF between a trailing '#1', for example and the ']'.
V.2.007f
Generalise the 'SourceHasChanged' Flag for all cases of Exit after Resources Editions.
Bug Fix: Error case 3 was using a obsolete ecx for scan.
V.2.007g
Source Editor: Add a Flag, in the [Configuration] for a screen (screen only) substitution of red '$' by '§'.
Direct branching of the Number-Bases Dialog from Right-Click on Numbers (same as with Double-Click / Float Menu / [Number Bases]).
The Macros Parameters bigger than 9 were not assumed in cases of Nested Data Macro Declarations. Implemented.
Bug fix: The Error Manager, for error Case 3, entered in a infinite loop when searching for a non-existing String, in the user Source (String created by Macro unfolding).
V.2.007h
The Macro Unfolder was not properly parsing the Win32 Equates. Fixed.
The bottom limit, for the label symbols List was set at the Source physical limit, instead of the available Memory Limit, causing a failure of the search of the last Symbols, in cases of too long names expanded by Macros, bigger than the original Source. Fixed.
V.2.007i
The error case 3 Dialog, in the Assembler, was not showing the proper searched Name, in case of search failure. Fixed.
The GetCLOFilename was enclosing the File Name in double quotes (>>> failure of the creation of the Command Line File). Fixed.
New proposition for the Small Chunks Memory Manager.
New version of the LibScanner.
V.2.007j
Restore the bad GetCLOFilename Routine, because, when it work, it produces downward errors.
V.2.007k
It was not possible to have, both at a time, Parenthesis Expressions and ParaMacros. Fixed.
V.2.008a
Implementations of the SSE3 Instructions in the Assembler and in the Disassembler.
Major release version of the Debugger, with reorganisation, bug fixes, and implementation of the Functionalities for debugging the DLLs.
Implementation of the 'Un-used Symbols' Dialog, from the Statistics given after a Compilation.
V.2.008b
Implement the 'SkipDashLines' Flag, in the Search Functionality, so that the 'Unused Symbols Box could point to the proper Declaration in all cases, plus, add an 'InternalRightClick' Search after the Text Search to make sure we are pointing to the Declaration, and not, for example, to a Comment.
V.2.008c
Fix of a Typo killing the encodage of LEAVE (done when imlplementing the SSE3 Extension).
V.2.008d
Disassembler: Values of 'LastCodeRef' not matching with anything were omitted. Fixed.
Assembler: The Unused Symbols List was not assuming Labels evocations in Data: Fixed.
Source Editor: Minor modification of the colored Size Markers output.
Debugger: Full Command Line assumed.
V.2.009a
Assembler: Implement a rescue attempt of loading a Module, for the OS versions, that would not assume the Current Directory, in the expected way: TryModuleFromAppDirectory.
Debugger New feature:
When debugging, if you move the mouse over a data label, a hint with the content is shown. The current implementation takes care of the size markers (R$Label) but ignores offsets (e.g. D$Label+4).
Segment registers are shown with corresponding base & limit values.
Memory inspector address edit is now autoscroll-able and supports selector overrides e.g. 'FS:010' jumps to the TEB with offset 010.
Better string recognition in data viewer
Dataviewer shows address aside label names (address removed in value list)
V.2.009b
Sources Editor:
* Preserve the '§' Chars in the ClipBord Copy.
* Add a Checking for bad pairing of CR/LFs corrections.
V.2.009c
The Relocation of Api calls was wrong, in DLLs .reloc, since the modifications assuming things like MOV EDI 'Module.Function', as found in some HLL PEs Disassemblies. Fixed.
V.2.009d
Skip-over mechanism for TITLEs smaller than the screen height.
Bug fix in the Right-Click fix on Dash-Lines.
Horizontal Scroll Style added, in the Output Dialog Edit Control for long Command Lines.
Extend the Buffer, for the Structures Dialog ClipBoard from 2000 to 4000 Bytes.
V.2.010a
Implement a Flag, to prevent from rebuilding the full Source, for redrawing the DCBPs, in the Editor, in case a WM-REDRAW Message would be sent by a Dialog, under some OSes, while the full Source, is already rebuilt.
Add an error Message for cases of Macro removing a Text Delimiter, with the ''#X!'' keyword.
V.2.011a
New release of Scarmatil Equal Pre-Parser.
Sources Editor: Add a CRLF to TITLEs terminating without any, and so forth, having the last Char right before the 'T' of the next 'TITLE'. (It was possible to do this, previously, because, if a real Source says
''Blabla, CRLF, TITLE Blabla''
... setting the Edition Cursor at the very last Pos, is equvalent to set the Cursor at Pos 1/1, of the next TITLE, for inserting a Char, before the ''T'' of ''TITLE''.
The [Replace] Functionality was broken since some Block Pos modification. Restored.
V.2.011b
Modified Style for the Menu Dialog's Edit Control.
V.2.011c
Having a ''@Label:'' viewed at Pos 1/1, in the Editor, was producing a Blink effect. Fixed.
The Resources ID Choice-Bar was hanging for some Resources Types when Clicking upon [First]. Fixed by sending the Table origin as a Dialog 'Initialization Value'.
V.2.012a
Add a security, that shuts down the Unused Symbols List, before re-Compiling.
Exit case implemented, for Right-Click on Dash-Line lines.
Re-Enable the Unfold functionality for the Equal Pre-Parser Statements.
First release of the Conditional Macros parser.
V.2.012b/c
Add the Conditional Macros case of '#N<>' (forgotten previoulsy).
Insert the Case of '#N=' (above the '#=' one) in the normal Macros System, to unifie the writing convention with the Conditional Macros ones.
V.2.012d
Developements of the Conditional Macros Errors Messages.
Bug fix: The last speed-up of the [Replace All] Functionality was conflicting with the Undo Feature. Reversed.
V.2.013a
First release with the completed Conditional macros.
Implementation of the &&1,... &&99 Internal Counters, in the normal Macros System, with the Error 'Pos', for the Conditional macros.
New release of the IncInc PreParser.
.
V.2.013b
The Import List Dialog ([Lists] Menu) did not assume the various Cases, for 'call'. Fixed.
In cases of DLLs making use of Statements like MOV EAX 'abcd', without any .Import, the Encoder was hanging when scaning the empty .Import Table. Fixed.
The extension of the ''Trash'' Table Size was making the [Wizard] Menu also showing the VisualTuts Items (Second Table no more zeored. Fixed).
V.2.013c
Review the Source Colouring pattern.
Implement a mechanism for re-launching the [Unsused Symbols] Box, in cases of re-compliation.
Fix a bug in the Data Relocations, for big DLLs.
Extend the macros Internal Counters Attributions to hexa, Decimal, Binary and Text.
V.2.013d
Minor bug fix for the Internal Counter writing, plus added error cases, to limit the outputs to '1' to '9' and 'A' to 'Z'.
V.2.014a
Preview of the new Debugger, with Right-Click Menu on Data Names.
V.2.015a
Merge of the previous two versions, with minor bug fix in the 'EnumComboChilds' CallBack, for the 95 regs.
V.2.015b
Minor Bug fixes in the Debugger and in the Source Editor (Bad braching in 'DebugDialog_GetCPUInfo' and Bad Mouse Pos at the end of Files smaller than a Screen, in 'LeftButton').
V.2.015c
The 'MouseOverDataHint' Routine of the Debugger was corrupting the Caret Pos. Fixed.
Implementation of a PREPARSE EntryPoint Statement, for 'Main' substitution.
V.2.016a
Re-Implementation of the Win32 Equates Management, based on the new CheckSum64 Engine. Suppression of the 'Equates.nam' and 'Equates.num' Files. Assembler Speed-Up between 1.5 and 5%, depending on the Processor.
Implementation of a couple of no use Mnemonics: PUSHFD, PUSHFW, POPFD, POPFW, PUSHAW, POPAW, for matching with Disassembly Sources.
Implement a ''On D§LineNumber <s 1, ret'', in 'TryToMove''.
Re-initialize the Undo Table in cases of creation / deletion of TITLEs.
V.2.017a
New version of the Equal Pre-Parser.
Review the Equal [Unfold] Selection.
Fix a minor bug in the Editor (badly commented out redraw, in the &WM_KEY holding).
V.2.018a
Finalize the Internationalization of the Error Messages. Choose Font implemented in the Configuration, for these Messages.
General re-organisation of the AsmMain with review of the very old 'A to B' rule, that was not fully respected.
Older Routines had been left in, for resolving the Win32Equates by the Structures Dialog, so that this Dialog was hanging when translating into the Equates Form. Fixed.
The new Right-Click Functionality for &EQUATE was keeping silent in cases of &EQUATE] . Fixed.
Add a [Zero or Question Mark] Radio Button, in the Structures Dialog.
Insert a temporary fix in 'IsReturnAddressInSource', for cases of conflicting exceptionhandlers, in the debugged Application.
V.2.018b
Structures Dialog: Remove the Square Brackets from the Structures under Data Form. (No more any use).
Internationalized Strings were not shown for the error Messages with ErrorLevel 9. Fixed.
Forgot to load the international Strings Font, after reading the Registry. Done.
V.2.018c
The cases of bad Win32 Equates Error Searches like, for example, '&TRU' where pointing to the first encounted '&TRUE'. Fixed.
Add an Horizontal ScrollBar, in the Api Function Dialog (Right-Click Feature).
Structures Dialog in Equates Form: The Win32 Equates and the Multiple Names for one record, were not considered. Done.
While storing the User Defined Equates, the cases of '[<Data:...]', where sometimes perverting the StatementsTable Records (used for Error Pointing). Fixed.
V.2.018d
Same as V.2.018c, but removed a wrong modification i did whil tracking down the '[<Data:...]' Bug.
V.2.019a
New release of the Debugger:
* [Feature] Event log (thread creation/destruction, module load/unload, debug strings)
Call 'Kernel32.OutputDebugString' to log messages
* [Feature] Debugger configuration is saved now (show advanced regs, stepping mode, font)
* [Feature] Change notification for register values
* [Feature] Support for 80 bit (T$) floating point values (data view/mouse hints)
* [Feature] Double click in Data view takes to memory inspector
* [Bugfix] CPU feature recognition in CPU info was not working correctly
* [Bugfix] Variable column width for data viewer & memory inspector
V.2.019b
The T§ Data were not assumed by the Structures Dialog. Added.
The previous Debugger Update had been made with old Files. It Should have been:
Changes since previous release:
* [Change] Virtual Page table replaced by Address Space tree
* [Feature] Event log (thread creation/destruction, module load/unload, debug strings)
Call 'Kernel32.OutputDebugString' to log messages
* [Feature] Debugger configuration is saved now (show advanced regs, stepping mode, font)
* [Feature] Change notification for register values
* [Feature] Support for 80 bit (T$) floating point values (data view/mouse hints)
* [Feature] Double click in Data view takes to memory inspector
* [Bugfix] CPU feature recognition in CPU info was not working correctly
* [Bugfix] Variable column width for data viewer & memory inspector
* [Bugfix] Pause sometimes crashed when using external threads
V.2.019c
The [German] Button was missing. Added.
The ending zero was set after the CRLF, for the National Strings, showing two small squares at the end. Fixed.
V.2.020a
The encoding of SIB with esp inside had been corrupted by a Typo. Fixed.
Debugger:
* [Feature] Mouse hints now support address arithmetic (e.g. D$Data+ecx*2+EQUATE)
* [Bugfix] Crash fixed when clicking the value list while no label is selected
* [Bugfix] Infrequent callstack crash fixed
* [Change] Exception auto-forward to external handler reenabled
General review of the Undo Feature, and implementation of the Redo Feature.
Speed-up of the DCBP Drawing.
V.2.020b
The cases of Block-Indent was arasing the Block, when having the Block Auto-Deletion set on, in the Bad Habits Tab of the Configuration. Fixed.
The re-alignment of the Block-Start was bad, if the initial position was not aligned on the Tab Size. Fixed.
The DCBP were not shown with the full Source restored. Fixed.
V.2.020c
Review of the Names in the Edit Menu.
Minor improvements in the Block Indentations Selections.
First implementation of the 'Tag Unicode Label' Dialog.
V.2.021a
Assembler: The Data Alignment default to 4 Bytes is now only in cases when no Size Specifier is given after the first label. If a Size Specifier is found there, the default Alignement depends on this leading definition (1 Byte for B$, 2 Bytes, for W$,... 8 Bytes for R$,...).
'Tag Unicode Label' Dialog: Font choice saved, and NumberOfChars computed.
V.2.021b
ParaMacros Parser: Insert an infinite loop test.
Unicode Tag Editor: The Font Handle was not zeroed after the Font release. Fixed.
V.2.021c
Review of the user's Source state (Partial vs Full-Source) in Debug sessions.
V.2.021d
Debugger:
* [Change] Debug dialog position & size is saved now
* [Bugfix] Mouse Hints did not work correctly when toolbar was activated
* [Bugfix] Title management reviewed
* [Bugfix] Async Terminate now sends WM_CLOSE to debuggees main windows
V.2.022a
I forgot to set the 'FileReadyToRun' Flag to FALSE after the Main Icon Edition and after all of the Tag Functionalities (causing [F6] to not re-compile before Runing). Fixed.
The [Lang] Tab of the [Configuration] Dialog was not made Child. Fixed.
When [With Security] was set [On] in the Configuration, it was hanging, when opening a File after having run the Encode-Decode Box. Fixed.
New release of the Equal Pre-Parser, with, mainly, implementations of exp(), log2(), log10(), ln(), atan(), and table as Destinations, plus a 'String maker' Functionality.
Restore the [Unfold] Functionality, for the Equal Pre-Paser, that was pointing to the wrong Buffer, since a recent re-organization of the Assembler Buffers.
New release of the Disassembler. First implementation of the Map File, with User switch of Data and Code Labels. Implementation of the Short Jumps Analyses.
In 'NewBrackets', there were cases when some macros Declarations of multiple nested {Data:...} that could pervert by one Record scaling, the error Pointing for the upward Statements. Fixed.
New release of the Debugger:
* [Bugfix] Reactivation of 'Hold On Breakpoints' crash fixed (Win98 mainly)
* [Bugfix] Select address space tab before module init (firewall block) crash fixed
* [Bugfix] Watchpoints feature reviewed (was crashing the debuggee when used in synchronous mode)
Asynchronous mode (set watchpoints while running) deactivated for the time being
* [Bugfix] Buffer overrun protection in call stack reconstruction
* [Bugfix] Better handling of failed call stack reconstruction
* [Bugfix] Fixed possible infinite loop case when stepping module code
V.2.022b
Update of the Api Functions, for 'sqlite3', by Marcello.
Disable the previous implementation for Disassembly Map File (does not work).
V.2.023a
Second implementation of the Disassembly Map Files.
New release of the Equal Pre-Parser, with review of the Parenthesis management.
V.2.023b/c
The Relocations of DLLs with Resources inside was failing. Fixed.
V.2.023d
Bugs fixed in the Conditional Macros Parser:
- The 'Imm' Condition was failing on Parameters, in case the 'High Bit' was set on, by the Equates Parser.
- The Conditions depending on the Internal Counters where inversed for '<' and '>'.
- For some combinations of #If and Statements an additional Separator was left over at the end, by 'ExpandMacroOnParametersLoop'
Assembler:
- the 'No Api calls' Cases of EXEs are now allowed (Error case replaced by a 'Yes/No' Box)
Disassembler:
- Same as for the Assembler: Now accepting PEs without .Import Section.
- Add a security, in 'FixMzParagraphsNumber' Method one, for case of wrong Displacements, bigger than the Disassembled File.
V.2.023e
Add a security test, in the Disassembler Routine scanning the .Import.
The Error Manager was hanging, in cases of missing Entry-Point on empty Sources. Fixed.
Re-organization of the Macros Parser, and review of the '#N' Key: It now assumes the Number of Parameters, in all cases (remove the very old, and never used, '#n' for backward parsings).
V.2.023f
Add the ''!!'' Marker, in the Macros Engine vocabulary, for removing the 2 first Chars of a Parameter.
Add the Conditional Comparison cases of '<=' and '>=', for the '#N' and '&&Counters' conditional Macros.
For some Macros created by Macros, additional Spaces in the '{..}' nested Declaration could have foolished the Macros Parser. Missing case implemented in 'StripUnneededSpaces'.
V.2.023g
Add a missing security (possible hang) in the 'KillTrailingSpaces' Routine.
V.2.024a
Implement the Jumps Size Optimizations.
V.2.024b
Bug Fix in the Macros Engine: The new 'MultiParametersUnfolding' Routine was not taking care of Text forms when scanning '}'.
V.2.025a
The above bug fix was incomplete. Reviewed.
The Unfold Box was not closing automatically after an Unfold Error, showing first, the error Box, then the empty Unfold Box. Done.
Implement the possibility of having several Clip Files.
Bugs Fixes release of the Equal Pre-Parser.
Macros Parser: When expanding some {... #2>L} nested Macro Declaration, for Macros/Equates creation by Macro, the trailing '}' was emitted as part of the Parameter. Fixed.
Restart the LibScanner from scratch, first working on a complete Asm listing Interpretation of all of the Lib contents.
Implement the Tag Menu ID, with automatic replacement of the Source Menu IDs Tables.
Implement another RosAsm Developements Test, for Serial Compilations.
Turn the Ascii Chart AutoScroll, to assume case when the Font would not be available on the user's configuration (Could mess-up the view, in case when the replacement Font would be a little bigger than expected).
New version of the Debugger:
* [Feature] Local symbol support for mouse hints and call stack
* [Feature] New filter capabilities in call stack (context menu)
* [Feature] Sort data labels by Address or Name (select in context menu)
* [Feature] Toolbar
* [Change] Flags moved into toolbar (can be hidden)
* [Change] General code cleanup
* [Bugfix] Rare 'Invalid path' problem fixed
New version of the Form Wizard:
* Made compatible with the new management of the Win32 Equates File.
* Treeview display for styles
* New management for styles (sorted which can be easily added and raw styles which are fix)
* Form position window
* Grid
V.2.025b
Form Wizard:
* listview and form position window display problems fixed
* fonts (accidentally removed in the previous release)
V.2.025c
Add an error Case, when storing Equates Names including Special Chars.
Forgot a developement test in the Jumps Size Optimizations. Fixed.
Start of the Obj(s) Parsing, in the LibScanner.
Sources Editor Bug Fix: The Redo feature was miss-behaving in case of CRLFs and/or Tabs.
V.2.025d
Right-Click was keeping silent on cases of ''&EQUATE)''. Fixed.
In 'HotParsers', invert the order of of the 'TranslateAsciiToMyAscii' and 'StripUnderscore'.
LibScanner: First version with parsing of the Object Sections.
V.2.025e
In store 'StoreMacroVariable' (Macros Engine), removing the no-use '|', for the output, was deleting the ':', in case of Evocations directly following a Label Declaration, when the Macro-Variable Statement was the first one, in the Macro Declaration. Fixed.
Minor Update of the Debugger, with new Documentation for B_U_Asm.
Disassembler: Some Strings Interpretations were missing the leading Char. Fixed.
V.2.025f
Implement the PUSHW imm Encodage.
Apply the V.2.025e Disassembly Strings Interpretation modification, to the cases of Unicode Strings.
Dialog Editor: Implement the WS_GROUP Flag for the CroupBoxes Controls.
Update of the Win32 Equates Right-Click Dialog.
New version of the IncIncluder.
LibScanner: Implementations of the COFF Sections with Reloc records, and first implementation of the Auxiliary Formats, for the COFF Reloc Records.
Disassembler: Remove the execution of the 'IsItNoReturnCall' Routine, in cases of Api CALLs.
V.2.025g/h
Add two errors Messages, in the Assembler: Security for '{}' abuses, and Source usage of Symbols in form of Automatic Labels.
V.2.025e introduced a bug in the Macros Parser. Fixed.
V.2.026a
New release of the Disassembler.
V.2.027a
Remove the errors Messages, in 'ComputeExpression', to enable the computation of Expressions including Equates declared by macros, in a second general Pass. Errors cases assumed by the downward Computations.
Debugger:
* [Bugfix] Menu did not work on Win95
* [Bugfix] MMX register contents did not show properly on Win9x
* [Bugfix] Occasional crash when mouse hints showed up behind other windows on Win98
New DisAssembler Version.
* Recognition of alternated Pointers.
* Review of the Data Pointer, with matching Code
* First direct implementation of the Api Parameters Recognitions (Code vs Data).
* Reorganization of the Ascii and Unicode Strings Recognitions.
* Recognition of repetitive Data Bytes.
* Better Code Recognition
V.2.028a
Disassembler:
* Rewrite of all the Data output stuff, in the Disassembler.
* Implement the Recognition of isolated Pointers, in Data.
* Implement the missing cases of PUSHW imm, in the Disassembler Engine.
* Fix a typo in MOVDQA (op7F form).
* Review of the Interactive Functionalities.
* The analyses of RosAsm produced PEs without Sources were failing. Fixed.
Review of the 'KillDebugger' cases, in the MainWindowProc.
Modify the ergonomy of the Dynamic Break-Points. (Two char margin // One Click and one [F4] for BPs On/Off // [Ctrl] for Floating Menu // [Shift] for all BPs Off).
Editor: Default Font set to Courier New 10.
Fix of several minor bugs.
V.2.028b
Disassembler:
- Fix a Typo in the 'MOVQ' Interpretation of Effective Address.
- Fix a minor bug in 'FlagsCoherency' for the FP10 Cases.
- Switch the Strings Recognition to Strings Identifications (Positive Recognitions to Try&See recognitions).
- Degressive tuning of the Strings Recognitions, in between the Negative Recognitions.
- Extend the Api Names Buffer to 128 Chars by Function.
PMOVMSKB: The Intel Doc i used in 2001 was wrong (reversed order of Parameters in the Reg/rm Byte). Fixed in the Assembler and in the Disassembler.
V.2.028c
Aborted
V.2.029a
Disassembler:
- Implement the 'Minus Indice' in Effective Addresses. Example: jmp D$eax*4+Data0438E28-4
- Negative Recognitions: Implement all LOCK cases (matching Instructions and E.A.)
- Fix a Typo in CVTPD2PS.
Assembler:
- Error Pointing, in Source, now located before the ErrorBox Messages.
- The Size of the two main 'Switch Buffers' (CodeSourceA / CodeSourceB) were not identical. Fixed.
Debugger:
- Restore the normal state of the 'WeAreInTheCodeBox' Flag, in 'InstructionDecode'. (Was causing occasional hangs of the Assembler).
IDE:
- Titles Tab made independant.
- 'call LoadBookMarks' added in cases of MRU. (Had been forgotten).
- DCBPs: Specific window for the Margin, with different Mouse Shapes for Edit and DCBPs.
- General review of this Functionality, with minor bug fix.
Completions:
- Review of the Completion Buffer sizes. Computation of the real size instead of estimation.
- Win32 Equates Completion: Fix a minor Bug causing the failure of the detection of Names with Numerics inside.
V.2.029b
Consider the ToolBar Height, when ToolBar is [On], for the 'dead-point' computation of the TITLEs' Tab Control.
V.2.029c
Implement the cases of D$FPU_8_Data+4, in the Disassembler outputs. (Used for pushing FPU_8 on the Stack. Second Label not outputed by the Disassembler, in Data, to keep with the FPU Data rendering).
V.2.029d
Bug Fix: Could have hang, because of a Pointer not yet zeroed, while loading a File needing a MessageBox, and therefore sending a WM_PAINT. Typically loading twice a Disassembly with no Icon found.
Disassembler: In the previous '+4', in E.A. adjustment, i forgot taking care of ajusting the Tables Limits, for the tests. Fixed.
V.2.030a
Extend the security limit for Api Functions Names to 200 Bytes.
In [Lists] Export and Import, the Source states (Full vs Partial - TITLEs inside -) had not been updated to the actual management (Always Partial in between two Edit Actions), causing the search Functionalities to fail, when raising the TITLEs Bar, in between two Searches. Fixed.
List Export Box: Uses the LBS_SORT Flag
List Import Box: Assumes the Api calls by Jumps Table (for the Disassembled Sources).
Disassembler:
* First Implementation of the Symbolics' Strings Table (Applied to 'Main', MainWindowProc', 'DialogProcs', 'ThreadProcs', 'EnumChildWindowProcs', HookProcs).
* Simplification of the Disassembler Options: Remove the [Group Data at Top] and [With HLL Ananlyses] Flags.
V.2.030b
Disassembler: Multiple WindowClasses: Select only the one closest to 'Main:' as 'MainWindowProc', in the Strings Table, and the others as 'WindowProc'.
V.2.031a
New version of the Debugger, with the Debugger's Strings internationalisation.
V.2.031b
Inclusion of the Norvegian Language.
I forgot to update the [Lists]//[Imports]/[Exports] to conform with the new convention of the TITLEs Managements. Fixed.
V.2.032a
Preview of the GUIDs Dialog.
V.2.033a
Disassembler: Extend the Recognitions of repetitive Data to 9 occurencies, for cases of Dummy multiple 'push/pop eax', in 'MarkRepetitiveDataBytes'.
Debugger: The FPU FLags, in the ToolBar, were inactivated. Fixed.
Form Wizard: Fix of a minor IDE bug.
V.2.033b
Move the release of the 'EquateSubstitutes' Table into the 'InitIndex1' stuff.
V.2.033c
Minor Bug fix release for the Debugger
V.2.033d
Clip File Templates coming with '@' Flag: The Length was wrong. Fixed
Sources Editor: The CRLFs Applied at the beginning of a Line begining with a Local Label were wrongly applied the Local Labels Indentation. Fixed.
Menu Item [Output] Grayed when required.
Dynamic Break-Points: Floating Menu fired either by Double-Left-Click or by Right-Click. Option in the Configuration Tab.
Disassembler: Restore, at least, one Strings Recognition, before the negative Recognitions.
V.2.033e
Bug Fix, in the Disassembler in the Recognition of Api Calls Parameters locations.
V.2.034a
Editor: The Char storage was missing in the Undo Feature, for the Lines drawing. Fixed.
The Help branching, from the Clip Dialog was obsolete. Updated.
Fix a minor bug in the Clip Viewer (searching for ':', even when none inside).
When locating at the very first Line of a Source, in the Source Editor, the Ctrl-X / D Functions were not assuming the missing CRLF, locating the Caret 2 Chars further. Fixed.
New version of the LibScanner.
New version of the Unused Symbols Dialog
Review of the [Run], [Compile] and [Optimize] commands logic.
V.2.034b
Review of the [Local] TITLE by Scarmatil.
Add of a couple of securities in the UnfoldMacros Routines.
The new 'Compile' Routine of V.2.023a was buggy. Fixed.
V.2.035a
Review the branching to the 'CreateFile' Routine. Remove the Return to caller of caller Tip, for maintainance ease.
Add some missing error cases for LOOPxx with plain labels.
New version of the IncIncluder (Half).
Add a case for assuming the strings in 'UnfoldOneOfMultiPara'.
Enable the GUIDs Menu Item. Fix a minor bug in the vTables Text.
Disassembler: In 'WriteDisAscii', isolated cases of 13, or 10, could have been confused with CRLF. Fixed.
Review some details in the TITLE Tab Window Positioning, colour on Mouse over, and fix a minor bug in case of MRU load, which was not setting the TITLE Tab on the actual TITLE.
New version of the [RosAsm Mems] tool ([RosAsm Devs Tests]), by Guga.
V.2.035b
Bug fix: The Help did not work since the unification of its calls.
V.2.035c
Bug fix: EBX was not preserved in the Disassembler Engine 'Dis_rm16_Sreg' and 'Dis_rm32_Sreg' Routines, causing some MM, XMM and Seg Regs, to not be outputed the correct way.
Minor Bug fix in the Disassembler Menus.
V.2.035d
Disassembler: Implementation of a Routine for flaging the SEE Data Types.
~~~~~~~
Minor Bug fix in the Disassembler Menus.
V.2.035d
Disassembler: Implementation of a Routine for flaging the SEE Data Types.
~~~~~~~
Thanks ..
Thanks to all the people at various forums who helped me a lot, in my Win32 beginner's problems: T, Beaster, Iczelion.
Special thanks to Miracle who offered me personal help and spent time at it, to Jeremy Gordon, Test Department, for helping with various difficult problems. Thanks to Ron Thomas for his help in providing the math routines of TestFPU.exe, and so much other examples of interest.
A Thousand thanks to Wayne J. Radburn who, at each new important implementation, pointed out to me many problems and provided me with solutions with the more difficult internals of Win32.
Thanks to Kenny for providing and animating the SpAsm Board, for his continuous efforts and support, for having built OpHelp.exe, implemented the new Keys input management in RosAsm Sources Editor, and so on...
Thanks to Eric Asbell for maintaining the new RosAsm Board.
Thanks to EvilBro (Rikkert Vifferin) for the complete rewrite and re-organization of the RosAsm Assembler Parsers.
Ron Thomas: http://www.rbthomas.freeserve.co.uk/
Test Department: http://www.crahkob.com/td
Wayne J. Radburn: http://www.magma.ca/~wjr/
Jeremy Gordon: http://www.godevtool.com/index.html
Docs and Tutorials Contributors
Iczelion, Test Department, Brian Burns, Shawn Bullock, Bill Tiller, Larry Hammick, Paul Carter, Michael Kunstelj , Lorenzo Micheletto, DeVilMan, Zadkiel, Mike Schmit.
Many thanks to James F. Marinic, who did most of the B_U_Asm Proof-Reading.
Encoding collaborations with
The NASM developers group, Jeremy Gordon.
And, of course, thanks to all users, for bugs reports, wish lists and patience, at testing an ''under development'' Assembler throughout the past 5 years.
~~~~~~~
Authors list
Main Maintainer: Betov (René Tournois), France. email: < betov@free.fr >
Status Bar implementation: Pit (Peter Tuente), Germany
Keys Table Managements in the Sources Editor: Kenny (Ken Bentley), California.
OpHelp.exe Manager: Kenny (Ken Bentley), California.
Mouse Wheel implementation: Scalp (nico nico), France.
FPU HLL Pre-Parser: Zama (Marcelo Zamateo), Argentina.
Win32 Doc Project Maintainer (Equates, Api, Structures): Guga (Gustavo), Brazil.
Rewrite of the Assembler Parsers: EvilBro (Rikkert Vifferin), NederLand.
Rewrite of the Resources building, with Named IDs assumed: Diego Fraga
Equal Pre-Parser: Scarmatil, France.
Debugger Command Line: wkx (Ludwig Hähne), Germany.
Debugger Maintainer: wkx (Ludwig Hähne), Germany.
Form Wizard: Scarmatil, France.
Un-Used Symbols Box: Half a Wannabe (Are Jon), Norway.
Reporting ...
You have to understand that, as each RosAsm user has his own way of doing things, really fully testing such a big Application like RosAsm, is not in reality really possible. Each time I add a new function or improve an old one; I cannot test all of the functionalities and all possible ways for doing each thing. So, even if, with time, RosAsm is turning less and less buggy, you should not be surprised when pointing out some malfunctioning implementation or even some hanging bug.
I cannot fix bugs I have never seen and never heard about, but, when a user reports a bug, it takes to me very rarely more than 2 minutes to fix it.
Reporting is contributing.
How to report malfunctions is simple enough.
If RosAsm hangs after a given succession of user actions that I can easily reproduce, just email me the list of actions.
If the hang is more complex (more randomly coming up), simply make a 'CopyOfRosAsm.exe', run RosAsm, Load 'CopyOfRosAsm.exe' (or reverse), click on [Run], and, then, when RosAsm Child version hangs, the mother version tells you exactly where and what. This way of reporting, with the hanging instruction pointed out, makes fixing it very easy.
Additional points:
See what is hanging (a DLL, the OS, or really RosAsm itself).
Verify, of course, that the hang is not entirely your fault (example, after loading a 1 mb Wave file in Resources, after calling a DLL function with a wrong number of parameters, and so on...).
When reporting, tell me what OS your are running (mainly: Win95/98/ME vs Win NT/2000/XP families).
If you report with the instruction pointed out, do not give me the line number (continuously changing). Paste the chunk of code with a mark upon the instruction.
~~~~~~~
RosAsm Bugs ...
I never release RosAsm with known bugs. This, by no means, implies that I would be able to write a 3 Megabyte Source without any kind of bugs at all. Please report them if you think you have found something..
I list here problems that one might encounter.
RosAsm Source Editor outputs are based upon the available System Fixed Pitch Fonts. It appears that these Fonts may be modified and be no more in the expected 16/8 size, required here for all text operations. If you see some bad screen output of your sources, please try [Configuration] / [Text Editor] and choose another Font. If none fits with the 16/8 requirement, reload the default Fonts from your Win CD.
Under some OS versions, the Windows Registry (where RosAsm saves your user choices), may be turn out corrupted along the various updates you may have produced when reloading new releases. In such cases, some of your [Configuration] choices may not be properly saved. If so, run: C:\Windows\Regedit.exe, delete the HKEY_CURRENT_USER / Software / RosAsm / and re-run the [Configuration] to restore your choices.
~~~~~~~
Your Bugs ..
Even if pointing out bugs is not a great problem in Assembly, you may have to face some difficult cases. RosAsm's syntax and editing features help a lot at preventing errors before the actual Run time. In most cases, faulty statements will be properly pointed out either by the Compiler or, if not, by the integrated Debugger. Other than that, when you encounter no cue hanging Bugs, think first of these:
Unpaired push / pop that leave a wrong return Address on the Stack. The Debugger is unable to point out this error, because the exception is raised out only after the Return. Then, you see the Debugger pointing usually to the last line of your Source because the pointed Code to be executed is then out of your real Code space, or, if hazard achieves in some Address really inside your Code, the pointed Instruction may be at any location in your Source.
Confusion between Variables and Addresses. RosAsm (and NASM) simplified notation help a lot at preventing such errors, but you may be confused when, for example, managing Variables that hold pointers to tables of Pointers. Then, there are many chances you will see the Debugger pointing you to a read or write Instruction with an Access-Violation Message.
Bad Parameter in an API call. There is no medicine against this. Just test your new calls and carefully read the API Documentation. This documentation is sometimes bad, because it has been written by documentalists, instead of programmers, but my own experience has proven to me that I was, at least, as bad a reader than the documentalists were bad writers... Explaining such complicated stuff is not very easy.
Bad Parameters Number in an API call. This results in the same error as the aforementioned Unpaired push / pop error, with the same (un)expected effect.
Bad indices when scanning a flow of Data. Asm programmers have regularly to face the '+1/-1' dilemma. The Human brain (mine, at least) is poorly designed to deal with this problem: We have a Table beginning at 0A0000 Address. 5 Bytes of Data are stored in this Table. At what Address is the last Value? What is the next free Address? What is the length of the Data Set?... despite the fact that I began programming more than 30 years ago, I must say that I still solve these problems just like a baby would: Paper / Pencil / Mark-Points / Count.
Generally speaking the best Debugger I ever wrote is the Hexprint Routine I provide in all BaseX.exe Files. For bug hunting , Debuggers are usually a waste of time. In most cases Hexprint will point out quickly, at least what is hanging (if not why, which may be a more complicated problem... but no Debugger will ever tell you why, as you may know...). The cases when you will have to spend more than two Minutes for fixing a bug, with Hexprint, will be very exceptional cases and very rare indeed.
~~~~~~~
Win32 Bugs ..
I list here the known bugs in Win32, which may cause you endless search, as the cause will neither be in your source, nor be the fault of RosAsm (Do not forget to report these last case bugs: I cannot fix bugs I never encountered nor heard about):
LoadIconA will fail if your resources size grows over 0FFFF. Do not store huge data in Resources.
Dialog problems (not really a Win32 bug, but rather a different behaviour that is difficult to point out on the two main OS families 95/98/ME vs NT/2000/XP).
There are two kinds of Dialogs the ''Modeless'' ones, that are created by CreateDialogParam / CreateDialogindirectParam and the ''Modal'' ones, that are created by DialogBoxParam / DialogBoxindirectParam
The ''Modeless'' ones Returns immediately after running the Dialog (they give hand to the next coming code).
The ''Modal'' ones return only after closing the Dialog.
There is a serious problem with the different ways for closing these Dialogs. The WIn32 Documentation (the one I have) says that, for closing Modeless Dialog you should:
call 'USER32.DestroyWindow' D$DialogHandle
And that you should close Modal Dialogs with:
call 'USER32.EndDialog' D$DialogHandle, 0
This is not exactly the way it works. The fact is that, you will have to close Modal Dialogs from inside the Dialog Procedures, as long as they keep the execution flow for themselves. As opposed, for Modeless Dialogs, you will most often have to close them from outside the Dialog Proc, as long as other Code is running, at that time.
The problem is that applying the rule, as given in the documentation, will not work, under 95, if you have to close a Modal Dialog from inside its own Procedure, which is perfectly possible, if, from the outside, you send it a Message for telling it to close. In such a case, under the 95 family, you have to close the Modeless Dialog the same way you close Modal ones (with 'EndDialog' instead of 'DestroyWindow'). This way works perfect on both OSes Families.
Trying to reformulate all of this in more clear way, we can say that:
You close all Dialogs by 'EndDialog', unless it is to be closed from ''outside'' the Dialog Procedure. Notice that, here, 'outside' / 'inside' is to be considered in the process logical. I mean, if, from inside the Dialog Procedure of a Modeless Dialog, you call for a Routine that includes a closure Statement, this one is also to be considered ''inside'' the Dialog Procedure.
~~~~~~~