понедельник, 26 августа 2013 г.

Sort the year !

I didn't update that blog in last year, but not because of nothing to write, just because blogs as they are is kind of time wasting: because to write normal posts you loose time which you can spend on all other necessary stuff. Still, just today have some motivation to do so, and want to sort what happens in this year from my side in terms of amiga related stuff.

The most important part i think is that we got dopus5 sources and place them on SF. In the last 5 or 8 years, ppls from all the camps trying to get sources of dopus5 from GP-Soft,but sums always was big enough to do so (20k$, then 15$ or something). Add on top of that, that GuruMeditation some years ago (i do not remember now when, but 5-7 years or more for sure) got a "rights" to make a port of dopus5 to os4, and they all the time and everywhere claim that "port is done on 99%" (while it can't be true, i will explain why later) and was (imho) pure usual marketing. Year by year it was dropped, time for rights gone, and ppls by some reasons start to think (hey Toaks), that if guru-meditation's programmer can't do something, then no one can do it (holy-company-fan).

So, 16 monts ago Olaf Schoenweiss somehow was in more luck and have a good contact with Greg from GP-Soft, and he agree to open a sources just for 5k$. Olaf initiate a bounty on, and after we annoy everyone and everywhere we collect necessary  sum for about a half of year (well, its not 100% true, as we collect just 4200$, but Greg seeing how hard we trying , just give the sources for us for such a 4200$, minus paypal fees, so in end just 3800-3900$).  And right at end of 2012 and beginning of 2013 we put them on sourceforge. So, 8 months ago we start to working on make a proper port to all amiga and amiga like oses (os3, os4, mos and aros).

For first, and of course, when we only got sources i start to think how to make dopus5 even in 68k form works on os4. There was a hardcore bug which prevent dopus5 to works on os4 (listers freezes and don't works at all). Ppls from another camps all the time point by fingers that its because os4 do something very bad, and dopus5 can't works on it, but in end, it was just a really minor thing called "dopus5 use some hardcore value for PF_ASYNC, while should't". If you in interest in technical details, then there is relevant discussion from our dev forum. Having say that, its not me who found the bug, i only found places where crashes start to happens, and it was Georg Steger (low-level aros developer) who help me to fix that.

Now, after we have working 68k version, and os4 users can use it the same as os3 and morphos users, we still was in "a lot to do to make a port", and then we go route "port firstly library to 68k-gcc, then program to 68k-gcc, and then modules if that necessary, and then step by step to native". 

First steps do Xenic, and he rewrite whole library from SASC to GCC, fix SDI issues, rewrite assembler parts (there wasn't few, only small chunks) and all the other weird things. But it was only objects which don't links, and of course didn't works , as shared library on sasc handles automatically, while on gcc you need to do everything manually. But it was really beginning and motivation to continue. Then i just realise that Jens and Thore use already cross-platform gcc-librarys in their projects such as CodeSets , YAM and co. So, i just grab the necessary code from, adapt a bit, then bugs and problems there and there, and we have it links , but of course, heavy crashes.  After a while, it was everything and everywhere, and Xenic with Itix fix hardcore bugs step by step. 

There was a lot of problems with library itself. I just can't remember them all right now, but it was and problems with usage of internal and external functions of library in the library itself, and patching (holy patching ! i loose about week to make it works on os4, thanks to Itix it was done in end), and different bases, and necessary for os4 changes to obtain interfaces where is need it , and making some bases global instead of local, and rewriting some functions because they was just buggy initially, and was done in meaning to be sasc only based, and gcc specific moments, and everything was here. Those obsolete and ancient attributes like __alignment, __chip, some direct usage of 68k a5/a6 registers, nigthmares with fd2pragma/fdtrans/idtools generation of all includes/inlines, fixing of varargs68k functions and get ridding of them at all, replacing all the crap on more cross-platform, testing, testing, testing and testing, cleanup, bug fixing and again testing. Necessary hooks replacement, getting to be ppc abi complain, again cleanup and again testing. Emulation gates to make 68k and ppc library/binary mix working.  And that all of course not all, there was more.

After a while (2 months i think) we got working library for os3, os4 and morphos.. Then, it come to some surprise that main binary itself was more or less easy to port. I do so for few hours, but of course, only objects compiles , but nothing links. We loose some time on it as well. Then it compiles, but of course crashes. Everything as with library going on here (but much, much less. in compare library was in 2-3 times harder than main binary). Then of course bugs. Bugs bugs and bugs in all the versions and different. For example, os3-gcc build crashes in some clock functions, while os4/mos ones are not. Xenic found the roots and fix it , as it was because of ancient gcc2.x which we use to build 68k-gcc version and the way how gcc handle some part of code (there was a _non_ harmless warning for). Thousand of warnings also was fixed (and some still to be fixed even in our current version). Problems with 68k-gcc inlines when a5/a6 registers used as arguments, and gcc-inlines can't deal with it normally, so in end of all we (we mean Xenic) even make some assembler code wrapper for).  

In end of all, somewhere in end of summer, we have working main binary for os3/os4/mos and libary for the same os3/os4/mos. The weird things through was that some of 68k modules just didn't not works on native versions, and didn't works differently on os4/mos (like on one os crashes, on another just didn't works). Then, it was time to port all modules to native.

Those ones i port for about a week (through not all of them, but almost). But then about a month take fixing of them. For example diskinfo.module with those obsolete mmath/mmathtrans related functions which was replaced with help of Thomas and Salas00 on necessary ones. Filetype.module was initially done in weird way, and we catch there few original bugs, which was fixed by Xenic in end. ftp.module (the harder module from all of them), i only make compiles and "half-works" on os4, but all the necessary changed , cleanup and adaptation was done by BSZili, who joint to our project about few weeks ago to make an AROS-i386 port, but in end he jump as all we on everything, and start to help fixing all bugs on all platforms as well. 

Basically, BSZili was some fresh air , because 2 month there wasn't any activity on the project , because Itix was busy with real job, Xenic was kind of burn out and i spend my time on another tasty things. But once he join, we start to take a close looks at everything again. ftp.module almost done now, whole program and library get some good clean up, aros-i386 version also almost on pair with all the others, and we now really on the finish line, there just very-few bugs to fix before first opensource release. It also will have few improvements: like native icons support, no more ugly gadget in main listers and native-mouse-wheel support for os4, new art-work from Mason (icons,toolbars and stuff), all documentation in PDF, user-friendly archive (no need to boring with anything, just unpack and run) and so on. Of course plan to make release as fast as possible, but few remain bugs still to be fixed.

Of course, anyone who _very_ want to have latest version, always can grab it from SF's svn and build it for yourself. Everything clean and always builds, not as usual mess where nothing understandable and never builds.

Well, enough of dopus5. What else i done for the last year ? I write few os4-coding-related article, and put them on os4wiki and One just about how to make a normal serial-cable and how to do all the debugging (some very deep describe of everything, so even dumbs can do it now), and another ones is more programming related about ppc-glue stubs for 68k libraries. Nothing very hardcore too, but can be intersting for some. There they are:

There is also was some usual ports from me, such as:

Hugi's SE3 and SE4:

Some improvements in Zaphod (native mouse wheel support for os4):

Port of Gigalomania game:

And some other stuff which wasn't on os4depot. But in general, all the year is taken up by Dopus5. We want to make it as good as possible, so no one will say "they grab the sources, and make it worse, not better!". At least i for myself dislike all those half-finished, unlogical and buggy apps which come up from time to time on all our oses.

Also as i am os4-betatester now, i do bunch of tests everyday, so i have a lot to do.

What i hope to do in next year ? Well, we for sure will release dopus5, as well as i want to finish port of VPDF from morphos to aos4 , and report recent version of muiowb. At least, those apps are important enough for everyday's use. I also still working on some "big-fat" article for "hacking way" book, so hope it will be also published pretty soon. If time will permit , of course, bunch of fresh ports from os3, mos, aros, unix and win words , so some of you will cry "wtf, again ports ! where native apps?" :)

1 комментарий: