As promised I worked on the Amiga OS 4 problem in Lazarus Cross Amiga Docker. I tried to used vlink and vasm for it, but it seems vlink has some problems with the resources. But when switching back to the GNU tools (as and ld) it again works.
I also added a little Updater Script to the archive, so if you want to use the new Amiga OS 4 download again the archive. Start the script ./CheckForUpdate.sh if there is a newer version of the docker it will automatically download.
I’m playing with docker and how to put Free Pascal for Amiga Systems and even Lazarus inside a docker container. Works quiet nicely with the latest FPC (3.2.0) and Lazarus (2.0.10), sadly there are some bugs in the published MUI interface for Lazarus, or better left overs of old Free Pascal inconsistencies between the Amiga flavors. I fixed them in FPC but did forget to remove the workarounds in the LCL. So I had to patch the official LCL. Must also check them in the official repository. Sadly the OS4 the LCL compile does not work at all, something wrong with the resource stuff, so I removed it for now. I will look into it later. So still some stuff to work on.
To actually use the Lazarus IDE I also installed a VNC server and hence also a small as possible window manager, I played around with some simple one, most old simple window managers are very annoying (e.g. twm) but icewm seems to be nice (looks like Java though).
And why docker? It’s much easier to keep the software up to date and there are automatically running scripts to create, modify and start them. But there are some drawbacks. The first compilation of a LCL program for any Amiga-style system will need a long time (as seen in the video), because it will compile the whole LCL. This will happen for every start of the docker container. This is good to have a clean compilation of LCL (especially when developing on the actual LCL) but a bit annoying when only compile simple programs. There should be some ways around it. But for now for me that’s good enough.
Worked a little bit more on the SSL implementation for Amiga in FPC using the AmiSSL.library. First I tried to just use the OpenSSL implementation in FPC. It was much work but sadly it just crashes on SSL connect and I have no idea why, rechecked everything. But before it was working using the BIO_* functions, so I rewrote the FreePascal implementation for AmiSSL using the BIO_* functions and finally it works. That means one could now get a webpage from a HTTPS page with a single line of code (and two uses), which is really nice.
In principle this should also work on MorphOS, for AmigaOS4 it would need to rewrite the import unit for AmiSSL. Sadly AmiSSL still does not exists for AROS only a c-link lib which does not work at the moment in FreePascal-AROS.
I updated the AROS64 source I had to the new stabilized ABIv1 AROS64 introduced by deadw00d (see source on github). At the start I had some tiny problems, e.g. collect-aros was crashing here as well. But in contrast to the main SMP AROS64/Icaros64 after my bug report, it was fixed very fast. Therefore I was able to compile at 64 bit AROS again using FreePascal, very nice. I also tried some of my old programs and all work rather nicely, some tiny problems of course but overall not bad. I will try to investigate what of these programs are from my code or fpc code and what comes from AROS64 itself. I’m not sure if more bug reports are wanted (because I guess deadw00d aims more to the AxRT) but maybe I will try it.
Because that worked so flawless, I decided to create a new version of my AROS64 distribution “The 100% useless AROS distribution” this time already much more stable and much more useful than before.
I added some more programs, (not only my own) the FP-IDE does work, but sadly the compilation still crash, so you have to use the shell to compile. I even got the network to work and MUIMapparium shows the map nicely and search also works, so maybe the name is somewhat wrong now, it’s only 99% useless, after all? Nevertheless have fun with it.
Charlie took some time to review the FreePascal 3.2.0 packages, I created. I changed them according to the suggestions. Some of the hints are not possible at the moment, needs some changes in the code, others are easy to change. He also found a bug in vlink, which got solved and we include now also the latest version of vlink.
The biggest change for the users is, that it now installs into a folder called “FPC” (instead of FreePascal) also the assign created is named “FPC:” (instead of “FreePascal”). If you did install the old package and install the new one you can afterwards (after the reboot) delete the old “FreePascal” drawer.
Yesterday I did exchange all links to the new version already, when updating the arm-AROS version. But here are the links again
With it the archives are now also uploaded to the official FPC server and can be downloaded there as well, that means we finally have an official Amiga, MorphOS, AROS release of FPC. Congratulations and thanks to all people involved.
Finally Version 3.2.0 of FreePascal is released. This is the first final release contains the Amiga style systems fully usable. A while before I did some extra work to also create an Amiga-sytle installer, which will be also released with this. Today I will also release the 3.2.0 FreePascal packages for Amiga 68k, Amiga OS4, AROS for ARM, AROS for i386 and MorphOS. So basically all versions except AROS for x86_64 because that’s still too unstable to use (mainly the AROS 64 bit is still a moving target and I was not able to fix that, because AROS is simply not working after the last changes and my last questions about it got just ignored)
You notice, these files are still hosted on my server and not on the official FreePascal Server, as the last release 3.0 as well. I was told because my previous packages did not meet the standards for official FreePascal packages. Which was true, I did not care about and packed a lot additional stuff into, like fpgui or LCL and I did not know there are readme texts to add which are not in the official repository but in an external one.
For that release 3.2 I did a lot of work on finding out what would be a good Amiga style package and which docs/texts should be added. Therefore I created that installer package I release today. I also asked for a review and put on to the official FreePascal server, as an official Amiga FreePascal package or give me feedback on what I should further changed.
Sadly that did not happen, I did not get any feedback and the release archives are still nowhere to be found on the official servers, therefore missed for that release.
That whole story took away my motivation as well over the last month as well, it seems rather futile to continue to work on it, when nobody even really use it, which is still true, unfortunately, I have to admit.
UPDATE: since revision 45802 Free Pascal is not also compatible with X5000 processor, thanks to work by ChainQ. Support for X5000 start with Free Pascal 3.2.2.
Because I got this question already some times, and I do not want to write it again and again, I just make this blog post that I can simple point to at any time 😉
Why my Programs does not work on AmigaOS4 X5000?
The problem is, that FreePascal itself does not know the X5000 CPU, and it seems to be not a normal PowerPC, but needs some special care. I heard something about special alignment problems. I don’t have a X5000, Charlie doesn’t have a X5000 and we do not know whats special about it to fix that issue. Besides, we both are not really using OS4, we both use Classic and MorphOS and I use additionally a big Part AROS (mainly i386 a bit ARM).
As some might notice, long time there was no working AmigaOS4 FreePascal, because I did not have any OS4 capable computer. I used mainly AROS, Charlie used mainly MorphOS and both we used some kind of Amiga68k and that was exactly the work shares we did in FreePascal. Charlie asked and explained some times that there could be an AmigaOS4 port (an older Version was still inside) if someone would step up as Maintainer for it. We didn’t want to do, we had AROS and Amiga68k and MorphOS already. Which is already much to work on. Besides OS4 is a completely different kind of fish (because of the Interfaces).
Then one day this thread came along and if you follow the thread you can see, Charlie decided to make the initial OS4 implementation and someone said, he will step up as maintainer, but sadly this didn’t happen. I’m too much of a FreePascal Amiga guy to let that port in such sorry state and started to implement the rest nevertheless, making me the maintainer for OS4, even I had no interest to be. Of course I’m a big fan, that all four platforms are now supported by FreePascal and due our continuing work on it, they are 99% compatible. (e.g we hid the OS4 Interfaces away, so you do not need to care about that when writing your software)
Recently I bought a AmigaOS4 computer (thanks again to the one sold me that, its working nicely), because in UAE it’s not really usable. But I only use it to test FreePascal, my programs the installer and so on. But for that a some thousands Euro machine would be overkill (and also waste of space). I try to keep the FreePascal AmigaOS4 at least somehow working but not more. In the end the message stays:
If you are interested in Pascal and Amiga(OS4) and want to help with the compiler doing a better job on X5000 (or any other computer as well) you can just do it, it’s open source, send us a patch. If you want to step up as maintainer for AmigaOS4, even better, contact ChainQ/Charlie or me, of course we will happily help. Do not fear, you will not be left alone.
Charlie implemented a Amiga 1.x compatible version of the FreePascal compiler. It’s a little bit harder to write program for 1.x so many features are missing in Workbench 1.x. These machines are usually 7 Mhz and only very little RAM, so cross compiling is highly advised. Of course the Online compiler would be a good starting point for basic tests.
Updated Online Amiga FPC Compiler again with the latest CRT unit and also tried a bunch of console based games using CRT units, all work more or less (some need some adjustments in the code) some of them are even single file pascal source files, so can be used in the online compiler.