Savings ...
RosAsm Global Savings
RosAsm is based on an 'all in one/stand alone' approach. So is it for savings. A Win32 application is a made up of many pieces (icon, code, data, menus, dialogs...). The best and simplest place to save all this is nothing but the EXE or DLL itself. Does it make much difference? Not for the most part. Having the icon apart in a .ico file, for example, is of no real use for us as far as we already got it inside the PE and as far as RosAsm is able to load it from a saved PE.
This makes some differences for sources. RosAsm stands in the freedom movement; so it provides a simple distribution solution: not only a source, not only an EXE, but both in one package. For end users, nothing to say: its an application that runs like any other one. For programmers, just run RosAsm, just load the PE, >>> got the source and all the other parts in each specific editor.
At development time, to save your work session, just click on [Compile] or [Run].
Your Source code is stored in the PE in a 'non-loadable' section. This is to say that, when Win32 uploads the PE, it doesn't even read this section. All of this doesn't make any difference, neither for disk space (a little less), nor for memory consumption.
RosAsm Partial Savings
Assembly programmers used to Command-Line-Tools, feel often frustrated with the 'Global saving' of RosAsm, and want to have their Applications components saved to Disk. This old fashioned working style is more complicated (a bit more dangerous, and of real no use), but all wished features are (or will be) implemented for authoring components savings:
At any time of Edition [Ctrl][S] will save your 'Application.asm' to Disk. I recommend you do not let 'sources alone' in the same directory where you compile, as this might mislead you when reloading some finished application (with Resources inside). In case of overwriting from 'source only', you would lose all the resources. generally speaking, RosAsm has few securities. You, programmers, are supposed to know what you are doing. So >>> save >> save > save again...
Most Resources do not need Disk savings, as they already come from a existing File (Icons, Cursors, BitMaps, and so on...). Though, those 'no need' Savings will be fully implemented later, in order to allow RosAsm produced PEs users to store these Resources to their own Disks, from a single PE delivered without the external Files (like BitMap Files, for example). For Dialogs, they can be loaded/saved from/to Disk via the Dialog Menu Options.
The only Resources yet in real need of some saving process are Menus and Strings.
There is no option for saving all the Resources at once, but the reverse operation may be done, instead: 1) Load an Application1.exe // 2) Load a Source Only .asm File from Application2.exe, while keeping the Resources of Application1. Using this simple method you can update the Resources to several different versions of a given application. A bit dangerous, too, in case of error, if you do not save your work on a regular basis.
RosAsm BackUps
See the Description of the [Ctrl][K] Functionlaity in Source_Editor.
Stripping Sources
For programmers who do not want to make it Open Source (and so forth, prefer writing for NOP :) ), there is a tool at RosAsm page, 'SourceKiller', that removes the source from a RosAsm PE. To be used carefully... (no way back).
Saving your work on a regular basis
As long as RosAsm development is not over, your work will always be in danger of destruction and annihilation. This occurred, two years ago, with the RCData implementation: A nice bug stored RC in Avi resources and destroyed all of the Resources tree. Because of this, this is a good idea, too, to keep at least one previous version of RosAsm on your disk. So, again, save at each significant step. Anyway, even when RosAsm will be fulfilled and proved bugless, destruction will remain possible in many ways (you, hardware crash or OS jokes,...).
For each project, you should have one folder with all necessary tools inside (RosAsm, B_U_Asm, all other help files, Calc, ..., all Win32 Data Files, ...) plus one folder for saving your work at each step. I do it by number. For example, in my development folder, actual RosAsm name is B234, this is to say that I have 187 versions, in my [Saving] Folder. This is an absolute requirement. We have to keep a huge number of older versions (with actual Disks sizes, who cares?) because some errors consequences may appear a long time after they are done. You will never save too much.
~~~~~~~
Configuring RosAsm ....
See also: Include_Files
RosAsm uses the Win Registry for storing your configuration.
The record, visible with Regedit.exe, is:
HKEY_CURRENT_USER / Software / RosAsm
The [Config] Menu item opens a Tab Control Dialog with tabs, for:
Tree View, Text Editor, Indent and Tabulations, Colors, Help Files locations and for customizing a User PopUp Menu.
I think usage is self evident and doesn't need any detailed description.
But, maybe all this will not be enough for someone. So, to go a bit further, you may wish to modify RosAsm itself. Here are some points that you could modify, and how to do it:
Make a 'Copy of RosAsm.exe'
Run 'Copy of RosAsm.exe'
Load RosAsm
Modify
Compile
Test
Rename / Delete
I have grouped the Custom Data at the top of RosAsm Source (out of Printer default Font).
Examples of easy modifications:
At the beginning of the source, you will find:
[EntryPointLabel: B§ 'MAIN' EntryPointLabelLen: len] ; upper case needed
[CallBackName: B§ 'MAINWINDOWPROC' CallBackNameLen: len]
If you can't live with my namings, change them here.
RosAsm has some rude tables that limit your possibilities: 'DialogList:', 'MenuList:', ... These Lists are to hold the amount of Dialog, Menus, ... that one source can have. Each List is made-up of a flow of three dwords: ID / Pointer_to_data_in_memory / Size. I set them as:
[DialogList: 0 #MAXDIALOG] ; [MAXDIALOG 300] at top of file.
This is to say that, without modification, you can, in one App, have 100 Dialogs, 100 Menus, ... If this is not enough for one project, adjust these values to your needs.
Same for:
[uRsrcList: ; RosAsm infos storage for .rsrc section building (5 dWords per resource)
D§ 0 ; Type
0 ; ID
0409 ; Language
0 ; Data pointer
0 ; Size
#MAXRESOURCE] ; [MAXRESOURCE 200] at top of file.
This rude declaration limits the total amount of resources to 200 objects. I suppose its wide enough for most productions, but if not, just increase this Equate.
If you realize some code modifications or additions (like in tools adding up here), copy your work in the ClipBoard, and save that in any text editor with enough comments in order to restore after each new released download. All this is much easier than you could think.
Don't be afraid of breaking RosAsm as you have saved it in the 'Copy of...'.
~~~~~~~
Bases_Files ....
A set of BaseX.exe (Styles.zip), available at the RosAsm Page, is given as a starting base for your Applications development.
As I claim to offer a 'true' Assembler without any C-like features inside, I have to provide these files to free the beginners from having to first learn too many things at a time, and from having to first choose a writing style (which is quite impossible for a beginner), and to learn how to write a full set of Macros according with the chosen style (impossible too).
This is why I provide Base files with Macros sets for the various writing styles.
Base1 is a true low level start up.
Base2 is a middle level start up.
Base3 is a high Level start up, with Proc and control of parameters numbers.
Base4 is a high Level start up that unicises callings to Procs, Api and routines.
Base5 is same as Base4, with addition of the single Point Macros.
The way I have chosen to go produces a difficulty: In other Assemblers, the community of users tends to have one style only, because of the lack of flexibility.
With RosAsm, Beginners could be a bit lost when having to read different styles of sources. Flexibility is great for advanced programmers but beginners need fixed ways where to start from. So, I have had to make a choice for them, among all possible styles. I recommend the choice of Base3.exe.
This 'Base3' Macros set is at a reasonably High Level Language state and does not have any inconvenience, neither from a usage point of view, nor at a Code efficiency point of view.
This is the fixed style I will regulary use in all future Demos, Templates and Tutorials.
I hope that this choice will be agreeable to most users. In any case, users who wish a Higher or Lower Level are the ones who are advanced enough to make such an independent choice, and who will not be confused by any Macros set, anyway.
~~~~~~~
Includes ....
Before running RosAsm, you should create a Folder, and unzip in this Folder:
Equates.zip (> Equates.equ).
Functions.zip (> Functions.api).
Structures.zip (> Structures.str).
Once done, run RosAsm, open the [Configuration] Tab Control, from main menu, select the [Other Files] Tab, and Click upon the [Equates] Button, in order to indicate to RosAsm where the OS data are located, by pointing to the 'Equates.equ' File.
Take careful note that this Path configuration, for the Equates information, is also to be considered the path for the Structures and Functions.
RosAsm does not really use any 'include File', like other Assemblers do (too slow, overhead typings and configurations). Instead, it reads ready to upload Files, whose formats depend on the Data Types:
For Structures, it reads an ASCII File containing the Structures written in a convention making the [Structure] feature job easier (See [Struct] Option in the main Menu). At least, you need Structures.str to have the OS Structures enabled from the Dialog. But you can add as many .str Files as you want. If several .str are found, RosAsm will modify the [Struct] Menu, by creating a Child Menu offering as many choices as files.
For api Functions, the File is nothing but an information Document. RosAsm does not use it, at all, for compilation. This is simply the Information you see when Right-Clicking upon an Api Call. Though, for High Level Interpretations, when disassembling an executable, this File may be also used, for pointing out the name of the api call Parameters.
For Equates, RosAsm needs at least one File with a '.equ' extension containing the ASCII version of all Win32 Equates. Its name is 'Equates.equ', and is available at the RosAsm page.
At launch time, RosAsm tries to open the '.equ' File(s), and computes them into fast, ready to compile encoded Data. All those Equates are the ones you do not have to take care of declaring inside your Sources: You just have to use them with a leading '&'. Once encoded two Files are saved back to Disk, 'Equates.nam' and 'Equates.num', so that the next launch time will just have to recover them instead of compiling them. To force re-compilation, in case of new Equates versions, or additions of more '*.equ' Files, just delete 'Equates.nam' and Equates.num', or run the [Tools] Menu option for [Rebuild Equates]
Note: The writing convention for '.equ' file is 100% rigid (for speed and simplicity purpose):
No blank line
Each line is: One Name / one space / one Hexa (RosAsm syntax without DashLine) / one CR/LF
The Equates Names must be given upper case.
The File must be ended by one CR/LF.
The Equates should be sorted in alphabetical order (UltraEdit does it in one click). RosAsm Parser does not require this, but it should be sorted for making the maintainers job easier.
Any fault in these rigid rules will result in unpredictable behavior. Flat users do not have to modify the include Files anyway. The RosAsm users group will do its best to provide all wished files for DirectX / OpenGL / ... and such, at the RosAsm Page (all this is completely new with RosAsm V.4.04a).
Since V.4.07a, the *.equ Files rules have been modified as follow:
You can now have the same Equate Name declared in 2 different Files. This is useful, for example, to enable the usage of Equates having different values. Let us take an example: As a general rule, we tend to implement in 'Equates.inc' the very last version of Equates. Let us say that we have some Equate Name with one Value for DX8 available in 'Equates.inc', that the same Equate has a different Value for DX6, and that you want to write an Application for DX6 -and not for DX7-. Just saving, aside 'Equates.inc', your 'DX7.equ' file, will silently substitute the Value you provide, in this 'side-File', to the default one.
This very simple method enables you, in fact, to redefine and/or to implement by yourself, any Equates you want.
The simpler way to modify your local Equates sets settings is to, for example, rename the Files you do not want any more, from 'xxx.equ' into 'xxx.eqv', -or reverse, for enabling them- and to re-run the [Rebuild Equates] Menu Option.
~~~~~~~
Future ...
RosAsm development is open to volunteers and new implementations are generally welcome. The better place to start with, for new proposals or suggestions, is the RosAsm Board. At least some simple rules should be stated:
- Do not start something unless you are sure to see it through to its completion .
- When you leave (there's no shame in leaving), just say that you're leaving.
- Avoid implementing Macros of your own, and try to keep as close as possible to the RosAsm Source style, even if you don't like it (having a unified style is both desirable and important).
-Submit a small outline of how you think your project should be organized in order to define task lists, validity tests, time evaluations and expertise evaluations.
-We should be able to accommodate you in your effort as we are flexible.
In The coming months developments will focus upon the Disassembler, and this will go on, until then Disassembles may be recompiled without (or with very little) hand work, this is to say that it will no more be a Disassembler , but, better said a Decompiler. The perfect state, in which we could guarantee disassembling / Interpreting / Re-Compiling, without any hand work at all, will never be completely achieved, because the interpretation of all the data and what that Data means, inside a PE is not always 100% possible.
Most interpretations are based upon probabilities. Nothing more. But, applied on simple Files, or upon Files produced by the user himself, in another language, the outputted results should be worthy of the actual effort, as this implementation will turn RosAsm into a unique package without any competition, in that area.
Pre-Parsers will possibly be added. Actually, the Equal_Parser is implemented. The OOA Pre-Parser development is delayed, but the overall plans of its organization and syntax are now well defined (as far as possible). I am thinking of using that OOA Plan for a first experiment of structured collective Development, as indicated in the above Introduction. Other Pre-Parsers, for example, HLLs ones, like the Equal one, may be added if some volunteers want to. I have opened a new TITLE, whose name is 'NewParser', given as a start point, for volunteers implementations. It includes comments that, I hope, should help to start working under good conditions.
Wizards (components visual designers) will be implemented, the same way the actual Form Wizard is, either at the end of RosAsm development, if I have to write them by myself, or, at any other time, if volunteers want to move their fingers on their KeyBoards. The Wizards may physically come under the form of a side DLL, or of an independent EXE, grouping all of the various specific Wizards (for ToolBars, for Images Viewers, and so on), probably around the actual Form Wizard.
The Win32 free documentation project is yet up and running. Its purpose is to have a kind of Data Base for all Win32 Data, immediately available from inside RosAsm, either by a Dialog for viewing Api calls, Equates and Structures, or as directly available informations for the Disassembler HLL interpretations. The huge work for Equates has already been achieved, thanks to Guga.
A Code-Ripper is to be implemented. Its purpose will be to select (after Double-Click upon a Code Label, and user selection of an added [Code Ripper] Option), all of the downward tree of the Routines called from this Label Procedure, with all concerned Data. Useful from disassemblies or for Code Reuse.
A Code symbolic Profiler is also to be implemented. Its purpose will be of outputting something a bit like the Tree-View Dialog, but with an added Bar, at each Label, representing the proportional time each Routine will have been consuming in a given Run. Useful for Strategy Optimizations (the only serious one).
A Code Level Profiler may be implemented, as well. The overall idea is to add an Item in the Floating Menu coming with Right-Click on selected Blocks: If the selected Block contains only simple Instructions, add a [Profile Code] Option, which activation should return the Ticks number. The implementation should not be that hard, as an example of how to compile independent Instruction is already available in the [Tools] // [Encoding Box] feature. Problems: ecx loops must be under Control. Memory accesses must be under control. Api calls cannot be included. Jumps and Calls must be under control. Equates must be emulated. Macros must be refused. This feature is not for timing the running Application, but for timing the simple execution of one or several Opcodes, for users interested with Code Level Optimization.
~~~~~~~
Quick start ...
Quick start for experienced programmers who feel too lazy to read the full documentation.
Simple installation: Create a Directory. Unzip RosAsm. Unzip into this new Directory: 'Structures.zip' and 'Equates.zip'. At least 'Equates.zip' must be there. The other External Files (Help Files) may be anywhere and you may later organize them through the [Configuration] Tab. For details about the Win32 Data Directory, see Include_Files
Make a copy of RosAsm. Run RosAsm. Load the copy. Try to get some idea of the size of the beast. Click on [Compile] and see how long it takes to turn RosAsm source into a new PE with all its components...
Play with the IDE features to take a hand. Try to 'Right Click' on various symbols and see what it does. Right click again on a blank area. Try 'Double Click' too.
Load 'Base.exe', write a faulty statement and [compile]. Write a faulty instruction (or some 'Int 3') and [Run]. [Run] includes a Debugger. Stepping possible after 'Int 3'. Do not step inside an Win32 API call.
For writing some source, you can use 'Base3.exe' source for a start.
>>>>> Ascii sources are inside the PE's .exe file . <<<<<
Quick description of syntax:
[ Hexa_Dword_Value: D$ 0FFFFFFFF
Decimal_Word_Value: W$ 123
Binary_Byte_Value: B$ 00101 ]
;this is 3 data values.
[push | push #1 | #+1]
[call | push #L>2 | call #1]
; this is 2 macros to be used that way, for example:
call 'MYDLL.MyFunction' para1, para2
... it becomes:
push para2 | push para1 | call 'MYDLL.MyFunction'
[TRUE 1 FALSE 0] ; these are 2 user defined equates.
mov eax &TRUE ; &TRUE is a Win32 integrated Equates (no declaration).
RosAsm syntax differs from older Assemblers on this point:
mov eax D$Hexa_Dword_Value
; = mov eax, Dword ptr [Hexa_Dword_Value]
mov eax Hexa_Dword_Value
; = mov eax, ADDR Hexa_Dword_Value
(All user defined symbols -out of Equates/Macros- are addresses, never values, just like in NASM).
~~~~~~~
Overview ..
RosAsm is a 32 bit specific assembler with an integrated IDE. As opposed to other Assembly IDEs, which tend to impress the user by a heavy overload of features and multiple windows, the one of RosAsm is as naked and simple as possible. Most advanced features require reading the Manual, like the very powerful Right-Click, that you will miss it you don't read Source_Editor. For the Assembler itself, it has been written with the following goals and characteristics:
Full assembler-written applications production.
Stand alone / all-in-one approach / Tends to include all Asm32 needed tools (Debugger, Linker, Disassembler, Resources Editors, IDE).
Fast output. A 1,000,000 octets application (1Mo is consistent for an Asm written Code), is built in 3.16 seconds on K6/300/win95, from full source analyses to PE writing. No relationship with the usual encodage speed given in other Assemblers documentation. The one of RosAsm is really blazingly fast and counts for few in calculations.
True pure assembly language without any C-like features. (no STRUC, PROC, USES, LOCALS and so on...). These HLL features are easy to simulate with RosAsm Macros. This exclusion goal is to let users define what HLL abstraction they want. RosAsm itself remains as low level as possible for a Win32 Assembler, but the Macros system is a wide open door to high level writing styles. Examples in Beginners' Tut 5. Added to User macros defined HLLs possibilities, RosAsm may also include selectable Pre_Parsers enabling 'Non-Asssembly' syntaxes, just like external 'Front-Ends' would do..
32 bit instructions full set (up to Pentium, FPU, MMX, 3D Now!, XMM SSE/SSE2/SSE3 ).
Specific programming. - One specific version for each application type. This first version is for ReactOs PE files production. As ReactOs is still under development, you can use it for Win32 applications (Win95/98/NT/2000/XP)
Just a few words to tell what I mean with 'specific'. I use this word in both of two meanings simultaneously:
- Specific as specifically designed for only one file type production;
- Specific as a programming style that does things the simplest way, without any portability or reuse claim. Portability is a wrong headed idea. Reuse of routines should be avoided as much as possible because this is the most assured way we will be calling for a truck to carry a single strawberry.
'One step' production of applications
(from source to application by one click on 'Compile')
Ease of use
No red tape (absolutely) everything as simple as possible (reformed syntax)
All needed tools are in a stand alone program. No external Linker, Debugger,... needed.
External File needed for compiling: Win32 Equates
Files also outside: Win32 Structures / Win32 Api Functions / Help Files
Full control for the programmer on what's going on
No internal hidden macros (user macros are easy and powerful).
Full control of jumps sizes.
No replacements features in any case (do it yourself).
Radical suppression of the no-end problem for Labels/Symbolics address/content addressing (reformed syntax, but, as close as possible to NASM's).
Free open source program written in RosAsm assembly language, of course. This is too a relative guarantee that 'it works', at least for the auto-compilation of its own source, more than 3 Megabytes. -not a tiny demo-....
~~~~~~~
The Hutch-- Case ..
Steve Hutchesson's ''glory and claim to fame'' ;) is with having ''legally stolen'' Microsoft's MASM, and then redistributing it under the name of MASM32, by playing the opportunistic loophole game with a legal failure of the MASM Licence (EULA).
Because of this bad joke , he is considered an important individual in the Assembly Rebirth by a lot of ''Assembly Programmers'', MASM users, of course, who are, alas, up to now, the ''Mainstream of Assembly''.
One of his greatest actions was to have contributed, a little bit, to ''kick TASM out'' -his own words-, by helping Iczelion with the collecting of some Win32 Equates for MASM. For the older Programmers who may remember this, TASM was, at that time, a much better Product than MASM, and many of the earlier Pioneers of the Assembly Rebirth were TASM users. As these pioneers had expertise levels way over Hutch's , Hutch now declares publicly, each time he can, that TASM was a Tool for producing... Viruses (!!!...). Well, ...
He is a Power Basic Programmer making occasional use of Assembly Routines for enhancing his PB Applications. It appears he wrote one Assembly ''Application''. You may see it in the MASM32 Package: TheGun.exe. (no Source available, of course... you have to believe his words... though I am sure he was able to write it).
Basically, TheGun is an Edit Control with a Menu, performing (with some minor errors) the basic operations, that you may find in any User Demo for a Text Control, at best. This seems to be the only thing Hutch ever wrote in full Assembly.
As said in The_Randall_Hyde_Case , Hutch and Randall made their 'junction' after the oncoming of HLA, in 2003. I first did not understand how this was possible, and I was a bit surprised when I saw him dancing cheek to cheek with a Hyde. So, I asked him, and his answer indicated to me that, in his opinion, HLA had not any chance of success, and so, was not a danger for Assembly.
I later understood that he made this junction only for having a ''famous'' person beside him, who then rewarded him with the public recognition he sought: The recriprocal recognition of Randall Hyde as an important ''Assembler Author'... and, as you may guess, of Hutch, by Randall Hyde, as the great Pioneer of the Assembly Rebirth. This was really pathetic.
Same conclusion as for The_Randall_Hyde_Case: This is necessary to fix these unpleasant and ridiculous facts, now -July 2003-, and to remember to never more let these individuals play the great masters, teachers, and experts by dancing for free on others works, when the Assembly Rebirth will be achieved.
_______________________________________________
_______________________________________________
Some of Hutch's Posts
_______________________________________________
_______________________________________________
From: hutch@movsd.com (hutch--)
Newsgroups: alt.lang.asm
Subject: Re: Betov, Betov, wherefore art thou Betov.
Randy,
I am much of the same view, what I pay for is mine and I am not beholding to anyone for what and where I use the software. I own both MASM 6.00 from 1990 and the current version of MASM and have both sets of manuals for the privilege. I also own the version of PowerBASIC I regularly use for high level code and between MASM and PB I can do most of what I want in Windows.
My last version of Visual C lies somewhere on its distribution CD as I don't need it and my version of TASM has not been installed for about 5 years but at least I can set them up any old time and I am not beholding to anyone with what I do with them, no tacky GPL licence, any code I write is my own to share, sell, give away or distribute any way I like.
This where an old fool like Betov fails to comprehend what freedom is about, his notion of freedom is bondage to GPL, the Betov level of comprehension of assembler, coding in general and the legal considerations of licencing agreements.
I actually have no beef with GPL until someone tries to inflict it on me by weight of moral imperative as I don't see that anyone has any rights at all to what I write. The other factor is a lot of the code I write I don't want to support and some of it is so obscure and badly written that the world at large deserves to be protected from it.
I fully agree with your view that it is a waste of time trying to use junk tools that don't have the power to do what you want. While I never minded helping out guys who were developing new tools, the idea that I am in some sense bound to the limitations of crappy software is never going to get off the ground.
Regards,
hutch at movsd dot com
_______________________________________________
_______________________________________________
The assembler rebirth will never happen, MASM resurrected assembler on the x86 platform a long time ago with the help of many different people who already had the experience in MASM and together they have restored it to its original place as a high performance tool free of the associations with badly designed and written code of the past.
The idea of 'rebirth' in the form that Betov dreams of it is a fantasy that will never happen because assembler with MASM is just too powerful and too useful to too many people.
_________________
Regards,
_______________________________________________
_______________________________________________
(gerry, asking why MASM32 is released for free). Hutch answer:
It could be for many reasons but one of the leading ones is that Microsoft would prefer that you used one of their tools for Windows than shift to linux because you cannot affort to buy Microsoft tools.
I imagine their core business has very little to do with who is buying assemblers and not even that much to do with development tools but rather the sales of OS versions and applications like Office which have mass appeal and corporate and Government buyers.
At a pragmatic level, if you need to write performance code in Windows, a free assembler like MASM is a good choice and I am sure this is why Microsoft have made it available since about 1996 at no cost for hardware and similar people who need to do this type of work.
Differing from GPL software, you have a Microsoft EULA to use it and write whatever you like with it and sell it without having to give your code away if you don't want to.
_______________________________________________
_______________________________________________
From: hutch@movsd.com (hutch--)
Newsgroups: alt.lang.asm
Subject: Re: when to use proc
The asumption that is common through this thread is the idea that beginners need to start on the lowest level possible to learn assembler. This piece of popular folklore is probably the greatest single reason why so many people did not persevere with learning assembler after being fed bullshit like this.
This much I have learned from thousands of learners on IRC and later in assembler forums is that being able to get something up and going first is a LOT more important than understanding segment arithmetic and being able to use at least some high level constructions greatly simplifies the task. What generally happens is that after the learner can reliably get a program up and going they tend to learn the lower level stuff later at a gradual level.
There has been a lot of HOO HAH in the past about uasing .IF syntax or prebuilt LOOP syntax in the large professional assemblers but everyone and their dog already knows that you only use this stuff for hack code like WndProc procedures where you have a long and large tree sructures for message processing that is not even vaguely speed critical.
I know rationale is lost on an old fool like Betov who has to try and cover up the many inadequacies of his work with a barrage of bullsh*t but for people who actually want to WRITE assembler rather than be in a position of ever learning it need and want high level style consructions to get their code up and running fast.
It is the people who SUCCEED in getting assembler programs up and running that come back later with highly optimised hand written assembler procedures, not the ones struggling to make the minimum sense out of a crap heap like BetovAsm that still does not handle structures properly, cannot build libraries, cannot handle large assembler files without crashing, cannot produce convenient high level constructions, the list goes on and on and Betov will not do the basic work necessary to fix it. He just keeps flogging the same barrage of bullsh*t to try and cover it up.
Programmers who are interested in actually writing assembler are well served by using the large professional ones that can do it all rather than a crippled concept like BetovAsm that is a subset of Betov's very limited knowledge of software engineering and coding capacity. Why should a young person waste their life and time with a pile of crap that does not perform when they can spend it learning a professioal tool and get software up and running far faster than with a disaster like BetovAsm ?
Performance is yet another area that Betov is not willing to try and compete in. In terms of size, power and code speed, MASM is very hard to beat and the proof is in the 1.5k working window in the MASM32 example code. The equivalent under 32 bit TASM was 8k. Can Betov's disaster improve on the 1.5k working window ?
When a younger programmer comes to assembler, they don't need to be fed bullsh*t about the purity of Betov's crackpot political theory and how they should waste their life and time using something that is supposed to prop up this nonsense, they need REAL industrial programming power to get the job done complete with decent documentation and example code.
Regards,
hutch at movsd dot com
www.masm32.com <<< Get a real 32 bit assembler here for FREE :)
_______________________________________________
_______________________________________________
jayte,
Never write yourself off, its not the posturing of an old fool like Betov that matters but the work you do and where you point it. Put things together over time and make it work properly and you will make a useful contribution that people can use and profit from.
All of the successful programmers I have ever known have been good workers and its here where it matters, not in the posturing that you hear from time to time from a few who don't do the work. Usually the more noise you hear, the less talent there is behind it but most people see through it and eventually take no notice.
Just make sure you put your talent and hard work where it will not be wasted.
_______________________________________________
_______________________________________________
From: hutch@movsd.com (hutch--)
Newsgroups: alt.lang.asm
Subject: Re: Betov, Betov, wherefore art thou Betov.
Muhahahaha,
Same old rant again, Betov cannot properly speak or understand English so the legal implications of him stealing someone elses software don't matter ?
Like it or not, MASM and MASM32 users are protected by a Microsoft EULA where BetovAsm users are at risk because the software they get from Betov was illegally produced in stolen software and illegally distributed as well.
We all know the value of the 'Betov Rating System' having seen how experienced Betov is when he cannot write MASM, NASM, C, Basic or any of the other languages he claims to be able to compare his product to. I can only wonder where this knowledge comes from, immaculate conception, A Priori at birth ?
Any programmer who is trying to use BetovAsm would be well advised to try another fully legal freeware assembler, apart from MASM they can get NASM, FASM and GoAsm, all of which are far better assemblers than BetovAsm and you can do what you like with what you write with them.
Now with the personal attacks on people like Randy Hyde, it would be about as obvious as TITZ on a bull that Betov is envious of the reputation and experience that Randy has. From at least 1996 Randy has had substantial work on the internet that a generation of assembler programmers have grown up with and the respect and reputation that he has for doing so much work is well deserved.
Now while Betov may like to try and target me personally over the massive user base that MASM has, what he is in fact doing is attacking the freedom of choice that programmers have made because they did not bow to the great highly self acclaimed assembler guru in Betov. One can only imagine the sheer audacity of that more than a half a million people who have downloaded the MASM32 package without reference to BetovAsm, its author and its half a dozen users.
Come on Betov, when will you come clean, you have been caught with your pants down lying like a pig in sh*t feeding a mountain of bullsh*t to anyone unfortunate enough to read assembler forums and newsgroups.
Now there is the matter of supporting the Windows operating system while claiming to be a GPL guru as well. Everyone knows that LINUX is the GPL operating system but instead of supporting LINUX like so many GPL minded people do, Betov continues to support Microsoft architecture. Now everyone and their dog knows that ReactOS will never get off the ground and if it did, it would be trashed by Microsoft for copyright violations.
Betov may be smug enough to think he can pull off the same cheap and dirty con with this continual barrage of bullsh*t but what he has done is well known and no junky sales pitch will fix it up. Illegal software passed off under a GPL licence while supporting Microsoft architecture in Windows.
Regards,
hutch at movsd dot com
_______________________________________________
_______________________________________________
MASM Forum:
hutch--
Site Admin
Joined: 09 May 2003
Posts: 909
Location: Sydney Australia
Posted: Fri Oct 17, 2003 10:39 am Post subject:
It does not matter how hard Betov tries to wriggle, his own documentation says he used a STOLEN copy of software that he was too lousy to register and built BetovAsm with it. As it is licenced at an evaluation level for personal use only, ANY distribution from it is illegal and any derivation from it is illegal.
It is humerous that Betov would try and use a term like 'decency' when he has bullsh*tted his way to his highly self acclaimed position as a leading assembler guru by repeatedly attacking people who have never done him any harm and who in the past even tried to help him. Attaching BetovAsm like a parasite to the work of other people is by no means 'decent' but another dishonest method that betov uses to try and advance his highly self acclaimed status.
Come on Betov, when are you going to come clean and admit you are a thief who stole commercial software so you could build BetovAsm and pretend you are supporting GPL while your work only supports Windows. When will you delete that pile of crap and build a decent assembler that is later in design than the 1970s garbage you currently produce.
When will BetovAsm support LINUX, the GPL operating system, not the Microsoft architecture it currently supports ?
_________________
Regards,
_______________________________________________
_______________________________________________
From: hutch@movsd.com (hutch--)
Newsgroups: alt.lang.asm
Subject: Re: Evolution
What a highly self acclaimed leading assembler guru like Betov has revealed in this posting is his ignorance of what he is trying to compete against in HLLs and the existing set of skills that many programmers already have.
MASM already can compete with a C compiler as it emulates C very well and this has been shown in the MASM32 user base where a very large number of C programmers have MASM as an option for doing a range of program types that it is better suited to do.
While I agree with Randy that the macro system in MASM is a bit long in the tooth, it is easily powerful enough to do a number of different language emulations as in fact he has already done so in emulating pascal in assembler.
While many may not admit it, most have a background in basic at some stage of their development career and rather than throw away an existing skill, emulating some of the string handling capacity of basic while generating good quality code in pure assembler allows a programmer to leverage an existing skill and save on the learning curve required to get many of these tasks up and running.
This below is pure MASM, I wonder how the highly self acclaimed leading guru of the assembler market emulates this code in BetovAsm ?
mov str1, trim$(lcase$(right$(str1,eax)))
Any basic programmer already knows how this code works and they don't have to recreate the wheel to get it going. If and when they have reason to when using MASM, they can write their own libraries and macros and do even better. This is the difference between a professional level industrial strength assembler like MASM and what Betov is trying to pass off as a 'true' assembler, put simply MASM is powerful enough to emulate other languages where BetovAsm is struggling to emulate an assembler.
PS: Doc,
I just could not resist the temptation in the face of someone like Betov who is such a generous giver of criticism yet such a lousy receiver of criticism from others. It helps to make him 'umble. :)
hutch at movsd dot com
_______________________________________________
_______________________________________________
Its always been fair to compliment someone on what they do well and Betov raises the issue of what a good assembler is and what it is not on such a regular basis that he has contributed to a wider understanding of an assembler as powerful as MASM.
While very few are pursuaded to waste their life and time on the current incarnation of BetovAsm, it is in fact useful to people who are investigating modern assembler to know what the alternatives are and this protects them from concepts as poor as BetovAsm.
In the same spirit of Betov actively supporting Microsoft Operating Systems with what used to be his 'specific' assembler, his support for the flagship Microsoft assembler MASM is repeatedly shown when he repeatedly raises comparison issues that show how powerful MASM is in comparison to his own badly implemented ideas.
The mechanism works in much the same way as his shift to attacking HLA and Randy Hyde in particular. It gives Randy a chance to promote his new ideas and it allows people who are interested in learning assembler a chance to understand a well thought out idea like HLA from one of the well respected assembler authors and programmers of our time.
Now while we will continue to hear the whinging and catscratching from Betov, the opportunity to advance far more powerful tools like MASM and HLA will continue to be done in contrast to a toothless terror like BetovAsm.
Good work there Betov.
_______________________________________________
_______________________________________________
~~~~~~~
The Randall Hyde Case ..
In the Good Old days of DOS, Randall Hyde was a well known author of documentation for Assembly programming. Though his contribution was of poor quality (very scholastic and pedantic), we had very few other choices. His Tutorials were the 'best' available ones, at the time.
Politically, Randall Hyde is a typical American Right-Wing Christian Conservative. This is to say that this man can not perceive anything but in terms of competition, and that his competition cannot have any other final target but his personal glorification. What follows cannot be understood without considering and understanding the above stated facts...
Between the early days of the 32 Bits Assembly Rebirth (1995/6) up to 2002, he was joyfully coasting on his past laurels, and apparently did not care that things were rapidly advancing and changing in this area.
When he made up his mind to reinvolve himself, he found he was utterly surpassed by a new generation of programmers. It was far too late for him to come back to the front of the scene, by doing any serious real work to advance the cause. History had indeed passed him by...
NASM existed for years and had been followed by SpAsm/RosAsm, later, by FASM and by GoAsm. All four proving themselves to be very good Products, each having required several years of free, hard and serious development work by their developers/designers.
Facing this situation, he authored a dirty HLL Pre-Parser, with a terrific Syntax, somewhere between an old fashioned Pascal and Assembler, able to output Source Files for the various Assemblers. In other words, a Text-Converter, reading an HLA Source, and outputting an Assembly Source (Of course he could not do it for SpAsm/RosAsm, because of various technical problems he would have had to face, RosAsm being anything but a simple Command-Line-Tool Assembler). Needless to say, his nasty hack against Assembly was first written in VHLL (Flex, Bison and C), the quick and dirty way.
Then he called this pure horror 'The High Level Assembler' (HLA) and, dancing on his past fame, he made a great noise about this great novelty.
As he was quickly convinced that none of the existing active Assembly Programmers would ever have considered the possibility of using such a thing, ... he ''attacked the Market'' ;) by targeting the bottom end: The Tutorials side (addressing beginners). He said to them: ''Well, I can't have any success with HLA. OK, I will have my success as an expert by discouraging beginners from taking up Assembly by writing and publishing tons of impressive documents''.
During many long months, he was strangely stating that HLA had been written for supporting AoA32. Nowadays, when he is criticized by people who wonder why AoA32 is devoted to HLA, - instead of being devoted to an Assembler -, he answers that it is natural he devotes his AoA32 to HLA, because AoA is his Documentation and HLA is his Assembler... As he did not succeed to convince anybody that HLA was an Assembler, he now says that HLA is a ''Compiler for Assembly Language''... but, of course... he goes on calling it an Assembler, each time you let it go...Well...
Finally, he succeeded to find a Publisher willing to sell his AoA32 Book, dedicated to HLA, and he introduced this, as an opportunity particularly adapted to beginners. Given the fact that this man is not only talented at writing tons of Pdf, but also very talented at selling himself, his attempt will temporarily succeed to dry out and deter the already very small number of newcomers (beginners) available for each of the various serious Assemblers Projects.
This sad event will delay the Assembly Rebirth by several years (I estimate around two years). Another sad event came out, at the same time: The junction between Randall Hyde's interests and Steve Hutchesson's interests. Both of them validating the recognition of the other one, as great Master of Assembly and, - why not...take credit - as great Pioneer of the Assembly Rebirth (without having ever contributed anything useful to this phenomenal new rebirth).
The sadder thing is that these two individuals, working continously against the Assembly Rebirth, have been generally accepted and welcomed on the Asm boat board. I am yet wondering if it was really sad or really funny of having these two poor guys playing the Assembly experts, without any base, and denigrating the serious work made by the real Assemblers' Authors...
Well, should I be writing all of this very unpleasant history? I am afraid that this is necessary, for the future:
When the Assembly Rebirth will be effective and booming, you can rest assured that these couple of black birds will return again and try to claim their so stupid and so ridiculous part of glory, skating on the backs of other peoples hard work.
I just want to make sure, by fixing this time frame -July 2003-, that, at that future time, you will remember that they were the guys who most sternly:
Attacked the GPL,
With vigor and zeal negated the oncoming of ReactOS,
Viciously denigrated my own efforts for having SpAsm/RosAsm Assembler growing up to a level where it could be an serious alternative to HLLs, and
Did their best to mislead and deter as many new beginners as possible, with, always, one single and only self serving goal: Their own glorification, at whatever cost to Assembly's future.
_______________________________________________
_______________________________________________
Some of Hyde's Posts
_______________________________________________
_______________________________________________
>How can I get user input in Win32 assembler without calling a C function
>such as printf or scanf?
>
>I'm using MASM if that's for any help..
Call any of the appropriate routines (stdin/stdout) in the
HLA library for MASM32 users.
http://webster.cs.ucr.edu
Cheers,
Randy Hyde
_______________________________________________
_______________________________________________
> Hello
> I am moving from C++ into assembly and I was trying to compare memory
> allocation. So what would be the ASM equivalent of new memory allocation, or
> the free-store, in C++?
> In segment:offset and flat modes please. :o)
> TIA.
Under MS-DOS, you can use the 'UCR Standard Library' malloc and free functions.
Under Win32, you can use the HLA Standard Library malloc and free functions (along with a whole host of other memory allocation routines).
Cheers,
Randy Hyde
_______________________________________________
_______________________________________________
This is a tale of two carpenters.
One walked the Earth 2,000 years ago,
One mocks others' work today.
The first carpenter was born of a virgin,
People who know the second carpenter wish
his mom had remained a virgin.
The first carpenter said 'I am the truth,
the way, the life.' The second carpenter
calls other people 'swindlers' because
they don't do things his way and he wishes
them a happy death.
The first carpenter assembled huge crowds
to listen to him preach. The second carpenter
uses his assembler to scare away huge crowds.
The first carpenter, by his grace, gives
away eternal life, and doesn't place any
restrictions, like the GPL, on that gift.
The second carpinter gives away his assembler,
subject of course, to the restrictions of
the GPL.
The first carpenter is busy preparing a
place for us in his father's house, which
has many rooms. The second carpenter is
busy preparing an assembler that has many
things you don't normally find in an
assembler (like ASCII charts).
The first carpenter tells us that whosoever
belives in him will not perish. The second
carpenter tells us that we should believe him,
someday he'll get the bugs out of his code.
The first carpenter said that we should trust
in his Father, the most high. The second
carpenter says we should not trust anything
high-level at all.
The first carpenter died on a cross for our sins.
The second carpenter is cross with us for the
sin of using someone else's assembler.
The first carpenter said 'Render under Caesar,
that which is Caesar's...' The second carpenter
says that it's okay to use software without
paying for it because all software should be
free anyway.
The first carpenter said that in order to have
eternal life, we must be reborn as a little child.
The second carpenter said that for his assembler
to have any life, assembly must be reborn.
The first carpenter said 'my words will last
forever'. The second carpenter changed the name
of his assembler because the original incarnation
garnered such bad publicity.
The first carpenter came to Earth to fight satan
and all that is evil. The second carpenter uses
his assembler as a weapon to fight: (1) Microsoft,
(2) HLA, (3) MASM, (4) Bill Gates, (5) Randy Hyde,
(6) Steve Hutchessen, and of course, that
'Evil Satan' the United States of America.
Ocassionally, the second carpenter uses his
assembler to fight various other evil doers, too.
The first carpenter rose from the dead on the
third day. The second carpenter resurrected his
assembler after it should have been left for dead.
The first carpenter was crucified.
The second carpenter likes to crucify other products.
The first carpenter spoke in parables.
The second carpenter speaks in nonsense.
The first carpenter said 'drink this wine in
remembrance of me.' The second carpenter seems
to be drinking wine all the time to forget his
problems.
When the waves were high and his disciples were
peeing their pants, the first carpenter calmed
the waves. The second carpenter just pisses on
everyone.
The first carpenter walked on the water.
The second carpenter just claims that a 'preparser'
will allow him to do that in the near future.
The first carpenter taught his disciples.
The second carpenter doesn't have time for beginners.
The first carpenter, when He was 12 years old,
impressed the elders and priests with his knowledge.
The second carpenter, as an elder, seems to impress
a bunch of 12-year-olds.
The first carpenter was crucified for the things he said.
The second carpenter is constantly getting crucified for
the things he says. The difference is, the first
carpenter, as he prophesized, rose from the dead;
the second carpenter just keeps digging himself a deeper
and deeper grave.
Cheers, :-)
Randy Hyde
_______________________________________________
_______________________________________________
I've really found Hutch's nickname for RosASM, 'BetovASM',
to be quite humorous. However, following Rene's methodology
of defining assemblers by what they must not contain rather
than by what features they possess, I feel that this name
is inaccurate. For example, HLA and MASM are not 'assemblers'
because they contain certain HLL-like control statements built
into the language.
This raises the following questions: Does an assembler have
an ASCII table display built into it? A source code browser?
A cut and paste manager? How about a dialog box wizard? Or
even a text editor?
Now I'm not about to suggest that having these things in an
assembly language development package is a bad idea. However,
if Rene wants to complain about languages like MASM and HLA
because they have some non-machine-instruction extensions,
why isn't it fair to consider RosASM using this same criterion?
By doing so, I can only come to one conclusion:
RosASM is not an assembler!
Therefore, as humorous as 'BetovASM' might be, by Rene's
definition schema, the term is incorrect. After all, it is
*not* an assembler. That's why I've chosen to start calling
it 'BetovTool'. It is *more* than an assembler (meaning it
is not an assembler), so it deserves a special name . (BTW,
for those who don't see where it came from, 'BetovTool' is
loosely based on the term 'BethTool' that was invented over
in alt.lang.asm a year or two ago and is the perpetual name
attached to the 'perfect assembler' that remains vaporware
[sorry, Beth]).
BTW, Rene get's my vote for inclusion in Scot Adam's book on
InDUHviduals:
http://www.dilbert.com/comics/dilbert/dnrc/
Oh well, BetovTool has been getting *far* more attention than
it deserves recently. I need to start another 'Yes, HLA is an
assembler' thread to get HLA back into the headlines
Cheers,
Randy Hyde
_______________________________________________
_______________________________________________
~~~~~~~
My_Case ....
In the previous SpAsm Project, I have maintained from September 1998 to July 2003, I did not feel it necessary to explain who I am, what I am doing exactly, and why I am doing it. I was of the opinion that, releasing SpAsm under the GPL was saying it all by itself and did not need any political, ethical and strategic comments. This silence has proven to be an error.
So here are my views about RosAsm developments, considered inside the programming software, software industry, culture, and more generally speaking inside the world state.
The first reason why I write an Assembler is, of course, because I like doing this. But frankly even if you would love, say, cooking spaghetti, unless you were mentally diseased, I don't think you would do this all day, 12 hours a day, for more than 5 years... So, I have other motivations for working hard and for doing it for free.
I stand in the left extreme anti-globalization group. I am not simply writing innocent Software. I am fighting. If I were living in a country under oppression, I would be fighting with a gun, and, if I would have no gun, I would fight with a knife, a bomb, or anything else. If I would be a poor third world farmer, I would fight with the alternative plant groups, and so on...
Actually, the US plants and corns companies, Montsanto, for example, are developing genetically modified plants. The final purpose of their research and commercial attempts are nothing but taking control over the whole of earth's agriculture, in order to turn agriculture into a Weapon of Mass Destruction . When these criminals succeed with their attempts, all the things, that were free, previously, in the poorer countries, will be under control of the international crime. When a poor third world farmer will want to produce some food by agriculture, he will have to pay... , for what he previously had for free. Needless to say, criminal enterprises, like Montsanto, will do their best for having their genetically modified Plants contaminating all other concurrent plants, in order to deprive people from any alternative. They will also do their best for providing, with one hand, the corns, and with the other hand... the polluting products that will be required for having their corns growing...
The situation is exactly the same in the Software industry. Software is nothing but a Culture Media. Just like Books and other Arts. If Microsoft can not be killed by the free Software, all cultures on earth will be replaced by the MacDonald and Coca-Cola 'Culture'. Quite frankly, in such a world, there will be no room for a man like me, and this is why I fight.
My main concern is not with programming, not with Assembly, and even less with the fun in programming (though I do have some). My main concern is to contribute to fight against the international crime enterprises, generally speaking, and against Microsoft, in this particular case.
I well understand that, many users, being American citizens, this is to say people living in a Nazi and uncultured country, under a very heavy propaganda system, will not understand what I say, and only think I am a bit crazy. This is one of the reasons why I stopped SpAsm development, and restarted with the RosAsm Project. I don't wish to be involved with flat users, who just want a Programming Tool for free... just for fun... and saying to me, when I try to fight against individuals like Hutch or Randall Hyde:
'Hey! this is just Software. There is no ethical, political, social problem with this. Keep cool. Why do you call them names?'.
I want it to be utterly and perfectly clear with this: I am fighting, and RosAsm is my weapon. If you can't understand this, please keep silent or keep out.
~~~~~~~