Archives for Amiga

MUIMapparium on Vampire

Posted by ALB42 on 21. April 20172 Comments

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.

Vampire Speedtests

Posted by ALB42 on 3. April 2017One Comment

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)

machine BinaryTree fannkuch
Time [s] Speed rel. to 060 Time [s] Speed rel. to 060
68060/50Mhz 42.9 1.0 59.6 1.0

VampireA600 23.4 1.8 28.3 2.1

MorphOS 68k emul 3.0 14.3 33.0 1.3

WinUAE OS3.9 1.4 30.6 2.0 29.8

MorphOS PPC 1.3 33 2.3 25.9

AROS i386 0.6 71.5 0.7 85.1

Linux x86_64 0.3 143 0.2 298

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).

A new hope … ehm i mean toy

Posted by ALB42 on 22. Mรคrz 20173 Comments

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)

FPC on a Vampire A600

Forum and Tutorial

Posted by ALB42 on 8. Februar 20172 Comments

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.

SetFileSize and more size Optimization

Posted by ALB42 on 5. Februar 2017No Comments

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.

Amiga LCL goes official 2

Posted by ALB42 on 18. Januar 20172 Comments

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.

Small, Smaller, Smallest

Posted by ALB42 on 10. Januar 2017One Comment

We (ChainQ and me) activated the section linking for the other Amiga Platforms as well. Freepascal for MorphOS for example will now also use vasm and vlink with section linking. The mentioned MUI demo for example has a size of 82k on MorphOS, so a little bit bigger as on Amiga 68k. Sadly vasm and vlink does not exist for AROS currently (except 68k of course) so there we are bind to the GNU tools. But the AROS ld is much more recent so it supports section linking already. The sizes of the MUI demo for the AROS Platforms: i386: 83k, ARM: 86k, x86_64: 144k. Sadly on AmigaOS4 it still not work, it still needs some fixing in the linker and startup code. Of course it’s nice to have this small sizes on NG Amigas, but more important on the 68k Platform, maybe you remember the compilation attempt on a real Amiga (so not UAE) which needed around 3 minutes and 160 MB RAM. I retried that with vasm and vlink today. It is smaller (1.6 MB instead of 6.5 MB) and also need less RAM for compiling and linking (around 100 MB instead of 160 MB), really nice. The speed does not really change, because it is limited by the Harddisk speed, which is around 1.2 MB/s only for my A1200. I’m thinking to use the SCSI of Blizzard 1260 but I need a fast SCSI to SATA Adpater or so, the one I found in Internet seems not so good, no synchronous transfer, questionable compatibility with the SCSI interface of Blizzard.

Small is beautiful

Posted by ALB42 on 7. Januar 2017No Comments

Something really awesome is going on in the Amiga Freepascal world. ChainQ is working together with Frank Wille (the Author of vbcc) to optimize the size of executables created by freepascal compiler. Some things had to be included to freepascal and vasm (the Assembler) and vlink (the Linker) had to be adjusted to freepascal, hence you need the latest nightly to test this. The result is truly remarkable.
Just as an example, I compiled the MUI-Demo from the muihelper session.
With LD it has 321k with the new section linking it has around 50k and of course it still work.

The original binary MUI Demo is around 25k, the difference should be the RTL which needs a little bit space, but also delivers more convenience and securtiy features for the coder (like string handling, memory management and helper functions)

We use the vlink a while already on Amiga m68k because it’s much faster and do not depend on ixemul.library. Now it also creates much smaller files. So no reason to keep the old GNU ld and with the vasm we also do not need the GNU as anymore, so in principle both ixemul.library dependencies are gone. I will test that a while expecially also with LCL applications, they are huge now, I’m curious how somall they can become.

If you would like to test download a current nightly for m68k-amiga. I included the vasm and vlink already and also activated it as default.

The same thing should be also working for MorphOS, this I will try soon, so stay connected.

Amiga LCL goes official

Posted by ALB42 on 3. Januar 20174 Comments

As explained in the 2016 summary I started to try to introduce the MUI LCL Interface to the official Lazarus subversion repository. I started with the basic compilation nogui LCL, which is a rather small patch (when compared to the complete new MUI widgetset). Today I got answer (after posting that as Bug in the lazarus bug tracker) and the patch got accepted to the official repository. That was my introduction, so now I would like to also include the MUI LCL which will be my next target. It would make the development so much easier. Especially because they change a lot in Lazarus over the time. My branch at github is again so outdated that it means again a new implementation to bring it to latest status (for the 4th time). If it is in the official repository I will directly notice if something change which need my attention. And the people will see the HASAMIGA defines everywhere and maybe care about to not break it ๐Ÿ˜‰

About this year โ€ฆ 2016

Posted by ALB42 on 31. Dezember 20162 Comments

Again a year passed so I will try to give a short summary about things going on in the Freepascal world for Amiga-style systems.

 

In Januar 2016 a big change in Freepascal was done to fix the Varargs version of the amiga library version. All “array of const” are replaced with the better “array of PtrUInt” which is much better to emulate the open end parameter list

 

The MorphOS LCL implementation took a big step in the begin of the year until got the usual suspects to work. All resulted in the first MorphOS FPC release including LCL units in March 2016.

 

A little funny new experience started also in March. I created the first 64Bit ABIv1 AROS distribution. Mainly, of course because I need a test field for the FreePascal AROS x64. For me x64 would be the perfect successor of the i386-aros ABIv1. My suggestion for AROS developer would be to leave i386 ABIv0 as it is, backport changes to there. And change then to x64 ABIv1 (and do not use/promote i386 ABIv1). But the x64 AROS still need much work, many things still crash, much code still cast Pointers to integer so not 64bit ready. This is also the main reason the 64bit distribution did not get much new version, not much changed with the problems there, I retest the usual problems from time to time. Also the FPC 64bit had big problems, which I found out end of 2016 are mainly alignment problems, where AROS made it’s own life much harder than it should be. (reminder “stacked int”s)

 

EdiSyn got a new Version with some bugfixes and basic printing support. End of year it got also a ARM version of EdiSyn to public with some more advanced features.
I also tried EdiSyn on MorphOS and Amiga. But both have some problems because of the different behavior of MUI and Zune. And I did not took much work on it because on MorphOS there is already a very good Editor with syntax highlighting and on Amiga m68k it’s just too slow. But in principle it works just LCL need some more work.

 

LCL on a native Amiga got some improvements to work also if no Graphic card is present, like my A1200 and also ported the usual suspects to m68k Amiga.

 

I used already a Lazarus on Linux to cross compile to AROS i386, in April I created a Lazarus which can cross compile for all supported Platforms (AmigaOS 3, AROS, MorphOS). Because it worked to nicely I planed to release a Lazarus for Linux including the binutils and cross compilers for all Amiga systems. But I noticed it is very difficult, even to write a Manual how to install such a systems. Therefore I decided to create a virtual machine which includes Lazarus, cross compilers and binutils for all Amiga Systems. After Amiga OS 4 was added to Freepascal and LCL I released a 2nd Version including the Amiga OS 4 binutils and cross compiler.

 

ChainQ implemented FreePascal for OS4 long time before already but because of changes in FreePascal and without a maintainer it did not compile anymore. In April ChainQ resurrected it and fixed some basic things, make it self compiling again. Then I took the lead and implemented some OS4units bring FP-IDE to work and finally the LCL with the usual suspects for OS4. Which resulted to a Amiga OS 4 FPC release including LCL. I will continue to maintain the OS4 fpc but will not improve it much more, maybe someone will appear to continue it especially with the unusual interfaces can be found on AmigaOS4.

 

I continued to work on applications using my LCL. This time I got the idea to create a Map application showing routes of my bike GPS. I played around with google maps API and openstreet API. Openstreetmap is much better because google maps you are forced to use the google libs which is difficult at AROS. It get some releases for all available platforms. I also experimented with GPS support, first via a extra program later also directly inside Mapparium, which is still not released.

 

Long Time before I got the direct linking of C static objects to freepascal programs at AROS to work, which was really nice, but no real program resulted from it. On magoriums work on mikmod, I got an idea for a Delitracker like program for AROS, to Play my old modules. I results into my first native Zune program (so without LCL wrapper) ZuPaPlayer. And because Delitracker is working directly on MorphOS and Amiga I concentrated on AROS.

There I also noticed its rather difficult to write MUI applications in Freepascal. In C there are many many macros to make it easier, but they are not directly possible to convert to pascal. There is a muihelper unit in MorphOS with some starts to make it easier. I moved it to ami-extra to make it available to all platforms and extended it a lot. To test and prove the usability of it I started to port the example codes of the official MUI 3.8 release. On Amiga it works very nice on AROS it shows very good the differences of MUI and Zune.

 

Because ChainQ included support for 68000 processor which need some more alignment care. Because of this I created a little RTL for Workbench 1.3 which is really difficult because much things are not available.

 

This year also the port of FPC to ARM AROS including LCL and the usual suspects was done.

 

I try to bring the MUI-LCL to the official repository, started with the basic LCL implementation. Announced at mailing list. We will see how it goes.