Still playing with locale settings on Amiga systems. FreePascal offer a possibility to care about international settings like decimalseparator, date formats and currency symbol. So I looked a little bit into and the system is comparable, still much work, so I’m not sure if really put to every start of a program, or maybe it would be better to put it to a separate unit and you have to include and invoke it by hand. We will discuss that.
Testprogram with Germany, USA and UK Locale Setting
Starting the same test program 3 times and changed the Locale Country setting in between. (For me rather funny that the currency format for positive and negative Values are so different not so nice if you have them in a table) But so far it works very nicely.
LCL has powerful packages for example the Chart component (or the Edit component with Highlighter). MUI already have some, but not so powerful and not available for all platforms (especially ARM-AROS and AROS64). I try to keep on the included basic classes to keep it compatible.
I used the very powerful TAChart component in Mapparium to show the Height/Speed trace of a track. Of course for MUIMapparium I also want to have that, so I started to implement a plot class for MUI. Not so powerful but already very nice with two Y-Axes, Zoom and Autoscale.
MUI Plot component start
It already works rather nicely, as first approach can be used like this.
I designed it already in a very abstract way in principle a TPaintBox for MUI and based on that the Plot class, that means I can use them in other programs as well.
Activated the localization for MUIMapparium currently only for english and german (of course ;-)) implemented also the local library unit for AmigaOS4 so localization is available on all platforms.
I also activated the AREXX interface currently only two commands are implemented: goto lat lon [zoom] to jump to a position and addwaypoint lat lon “Name” to create a waypoint. The Portname is the same as for Mapparium an example script can be found in rexx folder. The AREXX port does not work for AROS, Zune has no AREXX support currently.
I tried to compile it on AROS64 sadly the program did not work, it just freeze. Little bit strange sometimes it start but crash directly. I tried some other programs on AROS64 and they work rather nicely so why MUIMapparium not. The difference was easy it uses threads, finally I found the solution, the Critical Sections in FreePascal are mapped to SignalSemaphores of Amiga. In contrast to other OS the SignalSemaphores are not just simple pointers but a complicated structure. The given size there was ok for 32 bit Systems but for 64 bit the structure is much bigger. I included it for that release maybe someone want to try it 😉
Working on a very old bug. I’m not sure if someone noticed it, at least nobody reported it. The coordinate to pixel conversation was not very precise because it used a average resolution for every tile. This works well for higher zoom levels where the resolution does not change much inside a tile. But for lower zoom levels, especially the whole world picture this is certainly not right any easily visible when using way points. See for example Mapparium 0.6 on the right side of the image, all way points are (and tracks) are shifted to north. The solution was not very difficult but needed some thinking, basically a rounding error and precision problem.
MUIMapparium (Left) and Mapparium (right) Waypoint position comparison and german locale
I also start to play with localization. I never did that before, especially not in FreePascal but it’s not very complicated, just diligent work to replace all strings. So next version will also be available in german (and maybe later some more languages, at least I got an offer for french localization). There is one small problem with that, there is no locale library unit in FreePascal for AmigaOS4 so either I make some defines to turn it off for OS4 or implement the library unit.
Some days vacation, used the evenings in hotel to re implement Mapparium in native MUI and with fpimage for loading the PNG files and Drawing. The Drawing is faster than LCL (the LCL wrapper is huge, already slow) but still rather slow. At last I wrote a own Drawing routine which made it fast enough to start it on a native Amiga with Vampire A600. And it’s nicely usable even without FPU but of course on a RTG Screen.
Tried some (Integer) Speedtest, some people asked me about. Of course I’m also interested if my feeling (double 060/50 speed). I used some code from Benchmarks Game. Especially the tests: fannkuch 10 and BinaryTree 15. (68060/50Mhz= A1200 with Blizzard 1260, MorphOS = MacMini 1.4Ghz, UAE/AROS/Linux = Athlon FX 8120 3.16 Ghz)
Speed rel. to 060
Speed rel. to 060
MorphOS 68k emul
So my feeling was more or less right, it’s around double speed to 060, so it’s a nice step but far far away from UAE. More interesting for me would be FPU processing but at this point the comparison would be very dramatic and a little bit unfair because Vampire still have no FPU support (even it’s everywhere announced, but seems even next version will not have FPU).
I bought a neat eat toy for me. An A600 already equipped with an Vampire processor card. A Vampire is an FPGA based CPU card for Amiga 500 and Amiga 600. A while ago I thought already about to buy a Vampire card. The delivery times for it are very uncertain and seems in the order of 6 Month. I even would need to buy an A600 first, I was really to lazy to do such step with uncertain future. But I found an ready to use one one ebay. Maybe a little bit more expensive but thats fine by me, still much cheaper than a 68060 or PPC card. 😉 The capacitors are exchanged but the audio sounds strange, but not a big problem for me. Mainly I’m not interested in the speed but but in the GFX Card which comes with the FPGA on Vampire. Its the only way to get a 24bit GFX card into a keyboard Amiga (except the very seldom BVision for A1200). Of course my for me very interesting if freepascal and it’s programs work with it and good news on this side, it’s working nicely. The only problem (like on my A1200) is the slow harddisk which makes it much slower then UAE but as I read the next firmware should improve that a lot. Of course a screenshot (done with a screenshot program I wrote in FP-IDE directly on my A1200 some weeks before)
At Amigacoding.de FreePascal got a own Subforum inside the Language Section. Currently the Freepascal@Amigasystems fans are scattered over different Forums (mostly the Platform forums, like morph.zone, aros-exec, amiga.org, lazarus forum). But there are not much so it would be nice to centralize them to one Forum. Amigacoding.de is a nice idea to have a developer forum for ALL Amiga Platforms, sadly it’s not much in use or known. I wish this would change (even a little doubt). So if you are reading this, step by at the forum a leave a little message, what do you want for FPC, ideas, projects, help.. whatever or just hello world 😉
I started to make a tutorial for FreePascal on Amiga System, it should not be a Pascal tutorial but an Amiga with Pascal experiment. First one only cares about how to use FP-IDE, write and compile an Hello World. Next one would be about Intuition Window and drawing. Later maybe some MUI. There are some such Tutorials for C but mostly they only show how to do, my plan is more to really create a program. I plan to make the Tutorial in german and english.
Found a bug that the FP-IDE does not save it’s settings, like the last used size, recent files or Clipboard. All this Data are saved into the fp.dsk file in the same folder where the fp executable resists. I checked it and the file was just zero. I remember that I fixed that problem already once, but It could be that this was before FPC entered the official FreePascal repository and this change did not make it.
I checked on the old branch and really found it. The problem is that a seek behind the end of the file does not work on Amiga systems. The FreePascal Seek documentation does not define what should happen if you seek behind the end of the file. But it seems FP-IDE assumes it fills the File with zeros from the end of file to the new position. I included a fix for it and it nicely work on Amiga m68k. But on AROS it stays 0 bytes after some more debugging I noticed it writes the file successfully, but then at the end it gets reseted to 0 bytes. The call doing that is truncate, which resolves to SetFileSize() on the AROS size. It seems this function does not work as expected or I misunderstand it. Wrote a little test program and really if you write 4096 bytes to a file and try to SetFileSize to a 1024 bytes you get a 0 byte file. a Retest on Amiga results into a 1024 bytes files, as expected. Strange that such a basic function should be non functional in AROS and nobody noticed. The bug seems to be present for ABIv0 and ABIv1 as well. So nothing to do for me here.
This days I used the FP-IDE a lot on a native AGA-Amiga1200 and it is really usable, but I noticed the FPC archive for m68k-amiga is very big for a real Amiga. The download and unpacking needs ages so I got an idea to make a small Release for Amiga which only contains the most important RTL and Amiga units. Today I found some time to create such an archive. It is 6 MB download and around 20 MB after unpacking (the complete archive is around 52MB and 305MB after unpacking). Both archives are available on the nightly page.
The MUI LCL widgetset also got accepted for the official Lazarus repository.
That means the next official Lazarus release will also contain the support for all Amiga Systems and the MUI Widgetset. Sadly the only one usable with the released 3.0.0 FreePascal is i386-AROS. m68k-Amiga has a serious bug, for MorphOS the resource support is missing. Both problems will be fixed for next FPC release 3.0.2. All Other platforms (OS4, ARM-AROS, x86_64-AROS) have to wait until 3.2 because their support was added after 3.0 split. Of course one can use the 3.1.1 compiler for all platforms already, as I usually do and release to public.
But it would be very nice to just install Lazarus via your default package system (deb, rpm, whatever) install your Amiga cross-compilers and binutils(with vasm and vlink it’s really easy) and one is able to use the lazarus as IDE for your Amiga LCL programming.
Today I also got write access to the Lazarus repository, that means I can continue to work on the implementation directly on the official repository.
Already tested and fixed some tiny problems. I will continue to test it on week end, seems there are some new problems inside, at least some of my test codes does not work.