Im proud to announce to everyone that there is another version release of BiteRiders's origional OOP package, ObjAsm32. I've been working with him over the last couple of months to expand on his framework and make it both robust and easy to work with. Its not just another 'example' framework either! Extra time was devoted into preparing documentation for both classes and macro libraries that come with the package, as well as examples written to work with KeltIO's ever popular RadASM.

This package has for your developmental disposal:

    [*]10 Macro library includes which range from String, Memory, and FPU operations to Structured error handling and Debugging.
    [*]Debugging macro library is an extension of VKim's popular library, yet integrated into the OOP framework for class error reporting.
    [*]Currently has 58 Class files defined to handle alot of the core windows operations.
    [*]Fourteen example demo's, all RadASM ready to use with full source.
    [*]Detailed documentation on the inner framework of the OOP model and how it operates.
    [*]Two walk through like tutorials, based of two of the fourteen example demo projects.
    [*]Documentation on every class.
    [*]A graphical Inheritance tree for quick reference of how one object class relates to the next though inheritance. All 'leaves' on this tree is linked to the class documentation for easy look-up.
    [*]All documentation is in one CHM help file with full index.
    [*]A bonus resource library with ICOs., BMPs, GIFs, Dialogs, and Cursors is a structured organization. This allows for you to develop template dialog resource scripts and resuse them on other projects (such as a custom About dialog for you all projects).

    Thats about it, for now. There is still alot more in the works, with plans for COM server support. However we felt that this would be a good point to reintroduce BiteRider's OOP model.

    Lastly, I would like to make it clear that while I provided some assistance with documentation and programming, it was BiteRider who did at least 95% of the hard work in developing the many classes, macros, and libraries that comes with this package. The OOP model is his design and essentially it is his project. Im proud to work with him on it, and i think its a very practical development tool for building fast and resuable software at the MASM level. I hope you will think so too ;) .

    The download package is currently on BiteRider's website and is approximately 1.9MB in size. Or alternatley, if your too excited to check his page out, you can get it directly from here.

    As always, we are very welcome to feedback! This project is a big once, and as such there is more than likely a good suggestion out there that has yet to be integrated into it. As well this project is also open for additional software support, if you wish to either add your own classes to the project library or simply want to help expand the number of classes available in the next release please let one of use know.

    Happy programming :alright:
Posted on 2004-03-17 20:31:52 by NaN
vote 5 * . Where the vote button ?
Posted on 2004-03-18 23:58:03 by dreamweaver
Wow, great.

Has the license been changed ?
I see we can make commercial programs now with it.
Posted on 2004-03-20 06:50:50 by Jurgen
Yes, that's right!
You can write any commercial program with ObjAsm32!

Enjoy programming :grin:


Posted on 2004-03-20 08:40:53 by Biterider
Yes, we discussed this a great deal. There is alot of BiteRider's personal work involved in this project. As such the copyright is basically designed to ensure your not allowed to distribute or sell the sources to the model, however any binaries created with these resources are yours to what ever you see fit with.

I would be surprised if someone has a problem with this level of copyright protection.

Posted on 2004-03-20 09:02:44 by NaN
Works very well..
hmm OOP_Base has included ...
Just a small note :
MASM 8 SP1 has a SWITCH Emulation in MACROS.asm so if anyone use HLL construct from macros.asm please disable the Switch emulation in ;)
Posted on 2004-03-24 08:42:41 by dreamweaver
An extended string support has been added to ObjAsm32. ;)
Now it is possible to handle UNICODE and BSTR strings as easy as ANSI strings. The entire code functionality was added to the ObjMem32 library and 2 macros files (? and ? were created to support each type of strings.

The help file was also updated to provide a full support of this new functionality.
The library, macros and the new help file can be downloaded from the ObjAsm32 homepage. Once installed, the library should be compiled with the included ?MakeLib? batch file.

I hope you enjoy it! :)

Posted on 2004-03-30 09:17:28 by Biterider
Just a small question :
When I have OOP_Init PRIMER_ONLY DEBUG then masm told that " conflicting parameter definition in HexDump" in .
But if I change name of HexDump to OHexDump then evrything ok. Have HexDump been called automatically in debug state ? If I changed HexDump macro name , whether it make effect to program ?
I'm using MASM SP1
Posted on 2004-04-01 23:43:13 by dreamweaver
Hello dreamweaver

Are you sure you are not using the standard Vkim?s somewhere in your code? HexDump or any other Debug procedure are not called automatically...
I can not see were the definition problem is. Can you send me your project (zipped) so I can reproduce the compiler output? :)


PS: Vkim?s debug procedures don?t preserve the Eflags, only registers! ObjAsm32 1.2RevA has corrected this bug.
Posted on 2004-04-02 00:05:42 by Biterider
Byterider , I tried Demo01 in ObjAsm Example .
Posted on 2004-04-02 06:46:29 by dreamweaver
Hello dreamweaver!
I think that you have somewhere in the included files that are not part of ObjAsm32 and comes before the file inclusion a proto definition, like ?HexDump proto ...?, that in not compatible with the procedure exposed in the Debug. inc file. ObjAsm32 doesn?t define such a prototype!
I suggest to search for this definition or, like you have done, to rename the HexDump procedure. :)


Posted on 2004-04-02 08:31:05 by Biterider
Hello Biterider & NaN

I had a brief look at your ObjAsm32 package.

First I should admit that I had (and still have) pretty strong (pre)judices concerning OOP extensions for ASM realized as MASM macros (because a) MASM macros power is a bit too limited and b) using too many macros makes debugging a lot harder)

Having said that I want to say it is a pretty impressive work you two have done. Congratulations.

But - there is always a but as you know: After having read the docs and looked some examples it seems to me that it is currently impossible to make a ObjAsm32 project containing more than 1 source module (a source module in this regard is something MASM can compile independantly.

Why did I come to this conclusion:

1. because some of ObjAsm's include files generate code just by the fact they are inserted in the source somewhere.
2. The "object template" list seems to be a (linked?) list generated by the assembler. So I doubt a static object defined in a second source module can be initialized. C++ usually let the linker generate an array of pointers in special named segments (CRT$XI, CRT$XC, ...), which is more powerful and flexible for this task.

Being limited to one source module is - in my eyes - a rather severe limitation, at least if a project get's medium or large-sized. So you may consider to improve this part of you model.


Posted on 2004-04-04 05:18:48 by japheth

Being limited to one source module is - in my eyes - a rather severe limitation, at least if a project get's medium or large-sized. So you may consider to improve this part of you model.

I'm not 100% at what your getting at, but i think your refering to a directory of assembly files all set up to compile independantly, and linked together via external references to each other?? (i.e. each file starts with .586 etc. etc. ) . If this is what your calling a module then I believe you can.

BiteRider does alot of his work in this fashion, and it was origionally designed that way. The OOP_INIT macro is for the alternate which is ment to simplify things for learners. There is nothing stoping you to spell out in each assembly file the includes you need, and what will be an external reference.

Your correct that the object hierarch is built on a linked list system at compile time, however, if properly exteranal references are made, and proper including is done, i see no reason why you coulding have multiple sources linked together.

Perhaps BiteRider can expand more on this, since its a propgramming style i dont use. I prefer a master global file, with the model information defined once, and then list off all the includes accordingly, in a tree like file structure.

Im sure if need be, we could throw together an example for you. However, im quite busy these days.

Posted on 2004-04-04 10:49:52 by NaN
Hello japheth!
NaN and I had discussed this point some months ago and I decided to implement a way to put objects in a precompiled file (library). This way, you can save a lot of compilation time when a project is growing and the compiler need more than a few seconds to make his job.

The strategy looks as follows: I split the code from the object template when the library is build and in the main module the template was placed with the special ?CreateTemplates? macro and initialized as usual with the library precompiled methods.

To view the implementation of this approach in action, check Demo09. There you can see how different ?shape objects? are precompiled and put in a library called ?shapes.lib?

I hope this helps?
Posted on 2004-04-04 11:02:44 by Biterider
Questions for BiteRider/NaN:
1) Does this oop implementation support "friend" association among classes/interfaces of classes? If so, does it implement the security aspects correctly in terms of inheritance antitrust? (Jebus, only microsoft could coin a phrase like that :tongue: )
2) Similarly, does it support public/private membership?
3) Finally, has any work been done to support STL stuff?
I know, I could read the documentation, but just humour me :)
Thanks in advance,
Posted on 2004-04-13 07:17:07 by Homer
Hello Homer
Unfortunately I couldn?t answer earlier? Sorry!

1) The ?friend? class linkage is not intended to be supported (at the moment).
2) The support of private and public methods are in the pipeline of the next version. Basically, using the SetObject and ReleaseObject macros, a sort of scope can be established to check if a call to a method is allowed or not. Of course, this is a limitation and is only intended to work under masm to help the programmer to unintentionally call a private method.
3) The STL stuff was taken into account at the first implementations of ObjAsm32, but finally, I decided to write completely new classes for iterators, lists, etc. with similar functionality but with all the code published, so all the potential users can look into it, understand what is going on and if necessary, make their own changes in the hope they will share their experience to make better code.

Currently there are in the development pipeline the following points:

- Object based 3D engine.
- Some degree of interface to HLLs and COM to facilitate the integration of the assembler stuff. This has some undesired side effects that could restrict the current power of the model, so a careful design is required.
- Expand the model to provide support for Kernel mode programming.

As usual, any suggestion, code or example are always welcome! :)

Posted on 2004-04-17 13:24:50 by Biterider
Thanks for your reply, I decided to take another look at your oop framework, but alas, Tripod have dropped your page.
Where can I get it now?
Posted on 2004-05-12 10:57:33 by Homer
Man I hate companies like this. They sell on a promise of free space if you follow their rules. We follow their rules, they axe the page anyways and let your complaints ride in red-tape until it gets heard :rolleyes:

BiteRider alowed me to upload directly to the web space to transfer a PDF I created. I compressed it into volumes and sent it to him. There wasnt ever links to this zip from any web page on his site! I suspect this is why it is now *gone*. Oh well, looks like we are in the market for a *trustworthy* and free web service provider, again... (This is the same reason why I stopped maintaining a web page. Too much B.S. to live with).

If anyone knows of one that have been relatively painless we would be glad to hear from you :alright:

Posted on 2004-05-12 16:51:16 by NaN
I'm hosted my Ultrano, who pays for his hosting.. I have no complaints, and the band I use doesn't even touch the sides.. thanks be to Ultrano for providing me with something for nothing, I guess we all get bitten by the freehosts once or twice before we learn our lesson.

btw your new host restricts file downloads to <256kb per file :(
Posted on 2004-05-13 10:25:52 by Homer
actually I'm not the one who pays for the hosting ^^" . Hiro is helping me a lot with the site (thanks again, mate!)
Posted on 2004-05-13 14:48:25 by Ultrano