Archives for MorphOS

There is a Hill

Posted by ALB42 on 25. Mai 2016No Comments

Working on the Mapparium, implementing an view for the height and speed curve of a track. The new TAChart component became much more powerful the last years. Now one also can add multiple Y-Axis so different scaling for two curves.
When you click on a track (single mouse click) it shows the curves for this track with the time as x-axis and height and speed as y-axes. I’m not sure if the distance would be a better x axis as default.
I saw already on MorphOS that the arrows for spin edit are rather big if they are one over the other. The idea was to make them side by side.

Mapparium with height curve and speed curve

Mapparium with height curve and speed curve

Uh, there is the way

Posted by ALB42 on 22. Mai 2016One Comment

Implemented GPX reading and writing, really very easy. Tested with some of my cycle routes (I cuted the start away for the screenshot). It also saves the waypoints and tracks into a default.gpx to load at next start, its the easiest way to start. At the moment I draw a little rectangle at every track point and connect them with a line. Sadly it seems to be not possible to draw a thick line with the standard methods, the PenWidth and PenHeight in RastPort are ignored. so I guess this point approach works best for recorded tracks. For planed routes with little points its hard to see. Maybe I write an own line drawing routine, with Bresenham it should be possible to make.

OpenStreetMap with Waypoints and Tracks

OpenStreetMap with Waypoints and Tracks


Besides I increased the speed dramatically on drawing, on Amiga 68k its much faster now, even usable and resizing on MorphOS with less problems and much faster, it does not recalculate the complete image on every resize step, but only draws the image.

Virtual Lazarus v2

Posted by ALB42 on 16. Mai 2016No Comments

New Version for the Virtual Lazarus crosscompiler, some crashes with mouse events (OnClick, OnMove, OnEnter, OnLeave), Redrawing and resizing problems and of course the biggest change adding support AmigaOS4 (PowerPC). I removed some not needed files and installations, so the download is much smaller this time.
Changes in short:

  • FIX: Redraw problems on AmigaOS3
  • FIX: Size problems
  • FIX: Mouse event crashes
  • ADD: Support for AmigaOS4
  • CHG: Striped image from unneeded things, reduced download size


Download the new Virtual Lazarus crosscompile setup (1.2 Gb)


I am thinking how to make an online updater, in principle not so difficult with a script, svn update from repository, recompile/install all compilers/crosscompilers, update lazarus repository, recompile and install lazarus, done.

You can almost see me

Posted by ALB42 on 7. Mai 2016No Comments

As promised, I cared about drawing with alpha channel on m68k Amiga. Little bit background. When I make a StretchDraw() the raw data is scaled directly in pascal (to keep the alpha channel) via a nearest neighbor routine. And exactly there I need to touch every pixel to scale it, of course a good position to also care about the alpha channel. For speed optimization the special cases 0 and 255 alpha channel are handled separately. And its not so slow as I thought, so I let it inside.

Amiga m68k with alpha channel drawing (left) and as comparison on AmigaOS4 (right)

Amiga m68k with alpha channel drawing (left) and as comparison on AmigaOS4 (right)

Besides this I worked more on size calculations especially on MorphOS, still not completely sure how it should be. An additional problem appeared in the OS4 LCL. The size calculation as done before crashes, because it reads the Width/Height from the the MUI object which seems to be forbidden inside the Layout. If think about it’s not very surprising because the layout is called before the window is opened and to get the right size the Layout must be done. So I had to rewrite the section with AROS in mind of course. Seems it works now (again? I hope). With this changes the EdiSyn now also work on OS4.
EdiSyn on AmigaOS4

EdiSyn on AmigaOS4

Amiga family photo

Posted by ALB42 on 6. Mai 2016No Comments

Working on the image drawing in LCL, not only for OS4 but for all, the problem is that it needs (semi-)transparent drawing. I started with Picasso96 for OS4 but it seems it still has no Alpha channel support. But luckily it also supports the cybergraphics compatible layer with the alpha channel support. So I changed everything in LCL back to cybergraphics, which is even much better, because now it’s the same for all platforms.
On this occasion the problem on MorphOS came to light. I always had the problem that at MorphOS the images are not shown. I thought it is a problem with resources but now it became clear, it’s the drawing the globalalpha value was too small.
Sadly the cybergraphics on classic AmigaOS does not support this Alphachannel, thats the reason the image has the black border in the screenshot. Maybe one could try to make a simple Alpha (0/1) by hand, which will be very slow I guess.
Besides I found a big Event problem. Got this as bug report already, it was just a not initialized variable. A little bit more testing and I will make a release and also create a Virtual Lazarus again with all 4 platforms :-).

Image LCL drawing on MorphOS (upper left), AmigaOS3.9 (upper right), AROS (lower left), AmigaOS4 (lower right)

Image LCL drawing on MorphOS (upper left), AmigaOS3.9 (upper right), AROS (lower left), AmigaOS4 (lower right)

Virtual Lazarus FAQ

Posted by ALB42 on 21. April 2016No Comments

Some questions to this virtual machine arrived so I started to write a FAQ for the Virtual Lazarus bundle I created. Also made a separate page for this product. There is not much of a response until now… lets hope for later.

Questions and Answers

Q: How to change the default keymap?

A: Open xterm and type “setxkbmap us”, replace the us (= american layout) by your favourite keyboard layout (de, us, fr, ….). To make it permanent for every boot, edit /home/test/.profile and add the setxkbmap call to end of the file.


Q: How did you transfer the compiled programs to the target computer?

A: I used the VMware shared folder on the host computer and used samba to access from MorphOS the program. Amiga/UAE and AROS can directly access the files on the harddisk but with dedicated computers of course samba would also work.


Q: The AROS compilation seems to be different from the previous AROS release?

A: Yes, the LCL diverted fro AROS on the one side and Amiga/MorphOS on the other side. this is the first try to join them, but its not on par currently. (For example Groupboxes does not work in this version also speedbuttons look weird and so on) So if you experience problems just compile your program at AROS again, or wait for bugfixes 😉


Q: How to compile for Amiga/AROS/MorphOS?

A: You can set by hand in Project Options. But I suggest you use my prepared config file as shown in the video. Open “Menu – Project -Project Options” press import (button on the lower edge) choose the “/home/test/AllAmigaPlatforms.xml”. Now you have build settings for all four platforms.


Q: Synedit (or other package) is missing in the component icon list?

A: Make sure this package is already supported for Amiga style systems (SynEdit is 😉 ) and go to Package – Install/Uninstall Packages and choose to install. Lazarus have to compile again after installing/uninstalling an package.


Q: Are there examples/How to know which components are availabel for our systems?

A: Examples are available at GitHub. If you want to download directly to this virtual machine just open a xterm and type “git clone”. you will find a directory named fpc-tests in your home directory with a sub directory LCL, where you can find many test code examples to use, and test which elements are working, or not.


Q: I added a TMemo to my program now it does crash on MorphOS an/or Amiga. Whats wrong?

A: TMemo uses the Texteditor.mcc class as MUI implementation. Sorry I didn’t added a error handling for such case currently, because at AROS it’s installed by default.

Create programs for all Amiga platforms with Lazarus

Posted by ALB42 on 20. April 20162 Comments

I created a virtual machine with my compiled Lazarus source and cross compilers for Amiga, AROS and MorphOS. The virtual machine is for VMWare Player. Lazarus and a short description is placed on the Desktop. Should be really easy to use. I used the shared folder feature of VMWare to place the data where the other OS can reach them.


At the start I wanted to use DSL (Damn Small Linux) but sadly I didn’t get it to run (mouse does not move), so I changed to an other one. But the DSL stayed as name. Therefore the package is rather big (1.6 GB packed, 9 GB unpacked).
I hope someone is brave enough to try it and give some feedback.


Virtual machine with Lazarus Amiga, AROS, MorphOS:
VM Lazarus (1544 MB)
MD5: cf3e14797f9ba9882ee66247ee1fbc9f
Check also the FAQ.

I also create a little Introduction Video for this virtual machine use to show how easy it is.

Morphing layer

Posted by ALB42 on 16. März 2016No Comments

When starting EdiSyn on MorphOS many debug outputs appear in the LogTool which tell something about an odd BltTemplate call. Luckily Jaca from IRC and ond morph.Zone was able to help me and identify this problem as a text output to a bitmap over the edges without a clipping layer. And thats right, I use a buffer bitmap and rastport which does not have a layer. He kindly explained me how to install a trivial layer to it and it work. Much faster now (4 messages per second or so, on every redraw). So I made a little Video about the basic EdiSyn function.

It looks very slow, and sometimes the mouse seems not to react properly but this is only because its recorded via VNC, I didn’t find a screen recording tool for MorphOS.


Besides this I solved the sizing problem for MorphOS. The Window object in MUI returns the outersize of the window, Zune the inner size. The ClientRectangle is taken from this Value in LCL, the problem is that when the ClientRectangle is requested the Window is not open and later it’s cached somewhere so never asked again.
So on GetClientRectangle I check if the window is open and reduce the MUI returned size by the Border of the Window structure. Additionally when the window is open (set visible to True) I invalidate the client rectangle cache, there is a special call for it.

This results in a reasonable size calculation, at least the result looks comparable to AROS/Zune:

Color It on MorphOS

A little bit more EdiSyn

Posted by ALB42 on 11. März 2016No Comments

I tried EdiSyn on MorphOS before looked kind of ok but the text was not visible. Today I got an idea for the reason, the minimum/maximum size constraints hit me again :-O. My Drawing areas are Groups and as long there is nothing inside the maximum size is rather small. So the solution is rather easy connect to all my own Classes a Layout Hook. EdiSyn works now better, still looks a little bit strange, and also does not really work, still needs some work, but hey I’m happy already.

EdiSyn on MorphOS

EdiSyn on MorphOS