Diary: Technologies: AROS: Update February 2, 2010 (or: How come Santa has pointed ears and say "meow"?)
Sometimes I would like to be a kid again and believe in Santa (or Baby Jesus, like my generation did) and write a letter with a wish list like " Dear Baby Jesus, give me this year a new job :P" That is what I want for now , since AROS seems to really grow on its own now about software; rarely i seen so much software being ported or developed in that short amount of time. A good tihng is that some of the software ported comes from the other Amiga systems, confirming my idea about the joint market share: an Amiga OS flavor alone does not counts, but targeting all of them makes more economically viable do some port or new software, taking the new commercial game BOH and the new Cinnamon Writer port as an example of this trend.
And even the new release of Icaros Desktop is out; the version 1.2 packs some of the latest improvements and software together, adding some of its own, starting with some brand new ad-hoc themes made by Damir, also author of the original Ice theme and following with a game-related improvement of Amibridge that now wil load directly the .adf files in E-UAE (considered that janus-uae at the moment is still missing sound).
Here is, straight out from the Icaros Web site, the feature list:
new official Icaros Desktop themes
many other libraries
- Grub2 hack to use
netbook resolutions on Intel GMA900 GPUs
now available as
Improved 68K apps integration in AmiBridge
no double pointer anymore
using workbench applications
more uaegfx resolutions
in full integration mode
. Added Amiga games/demos
ADF support with sound
to manage zip, lha, rar, tgz and other archives
with newer include files
to latest beta
- added support for audio CDs (PlayCDDA)
- added desktop wallpapers from artist
- added desktop wallpapers from
- added many new
to latest revision
demo from Simone Bevilacqua
to latest version
- added first
to release 0.9.9
- system files updated to
December 2nd, 2009
So, if at the moment the core system development might have slowed down a bit after the big year improvements, especially Poseidon USB, the support of BIOS settings for screens from GRUB, the release as dynamic library of MESA and the actually in progress work of Gallium3d, is nice to see that the actual state of AROS and Icaros brought developers to use the new tools and libraries and to port more programs, for now mostly games but i can see some interesting tool out there.
Despite my efforts, i am sorry to announce that my talk proposal this year was not accepted from the SCALE organizing committee; who follows the Aros-
ec portal might already know it, since i talked about that in the SCALE thread, but for all others am going to publish the mail received here:
The SCALE committee has reviewed your proposal(s). Unfortunately, your proposal(s), while excellent, was(were) not accepted. SCALE again had many high quality submissions, so we could only accept a small fraction of those submitted (47 out of 195 submissions).
We thank you for your interest in SCALE and we appreciate your submittal(s)! We hope you'll participate in future SCALE events. The latest updates for the conference are available at http://www.socallinuxexpo.org
And so this year I went to SCALE as a visitor and not a speaker. When you are not a speaker things are different; first of all i found out you pay to enter: either 10 dollars for the expo only, 30 dollars for the talks or the full package for 70[!]dollars (but the talk followers also have occasion to eat lunch in a buffet).
The Haiku stand at SCaLE 2010
Since was lacking money i decided to get the simple expo ticket and, once I registered in the automatic booth was able to visit the expo; the expo section was in a big lounge at the ground floor, and was quite packed with expositors and visitors; i was able to see again the former holder of the Kickstart 1 replacement Bounty, Greg Casamento, that was promoting OpenStep, and also, a couple of stands below, the Haiku stand, that drew a good amount of attention. I really am sorry that was unable to organise something for AROS due to my lack of money (and being at the time without a job did not helped either) and contacts, because there is interest towards it; just that people does not know its existence; i talked with some members of loca LUGS and this people sounded interested (i even gave a copy of icaros CD to aguy from the San Fernando local LUG), so in short is my impression that if AROS can show more that it does now, our user base and (hopefully) developers base will increase dramatically: have some plan to try to make AROS attractive for hobbyists and tinkerers, will explain more in the future.
After some time of inactivity Pavel "Sonic" Fedin is back to AROS development, and, beside the update and progress of the Winfdows hosted version, he started some more interesting gigs that are going to improve both AROS usability and its "Amiga" feeling: screen beeping, implementing changing pointers and screen dragging.
The first feature was something I used to kick and scream for a while on the early times of my advocacy: Pavel worked on updating some of the intuition compolnents and implementing a sprite machine in AROS graphics.library, and that also brought to review the pointer code. A first glance of the modification was announced on january 15 on the developer mailing list, but a more detailed announcement was made on january 18:
I've completed and committed implementation of correct mouse pointer handling. First thing: now applications may change the pointer. Second thing: now we may get pointer preferences. A new pointer code is verified to work with SDL driver. Also it is highly expected to work with VESA mode (since it uses the same generic software implementation in fakegfx.hidd). Also it is expected to work with ATI and NVidia drivers. It will not work with VGA driver, it still will display hardcoded red arrow. An overhaul of the driver is needed, i'm going to do it. The default pointer image hardcoded in Intuition really looks like almost white triangle with a shadow, it's not a bug. Now some technical details... The whole thing works using graphics.library ExtSprite engine. Its behavior is modified according to the following:
1. There is a support for only one sprite in our display HIDD API. The same applies to graphics.library. GetExtSprite() always returns -1. This means that we have only sprite #0 and it's always allocated by the system. Intuition.library never calls GetExtSprite() or FreeSprite(). MoveSprite() on sprite #0 changes mouse pointer position. ChangeExtSprite() on sprite #0 changes its look. Any other sprite number is ignored. Old private pointer handling functions are removed.
2. Colors of the sprite are 17-19 colors of the screen's palette, the same as on original Amiga. For truecolor screens these colors are grabbed in ChangeExtSpriteA() and attached to the internal sprite bitmap. This means that setting palette has no effect on actual pointer colors until next ChangeExtSpriteA() (in intuition this happens at least on every window activation). For LUT screens everything will work. If the screen has less than 24 colors, it's impossible to use 17-19 colors. In this case pointer palette entries are shifted down to be 3 colors before last 4 colors of the screen. For example these will be colors 9-11 on 16-color VGA screen. Yes, the pointer may look not as expected if the application specifies a custom palette for the whole screen, but there's no way to work around this.
3. In theory the same system can support truecolor sprites. Note that AllocSpriteDataA() constructs sprite data from the bitmap. This means that we could pass any bitmap to it, not only planar 2-plane bitmap. Even truecolor bitmap with alpha channel. Currently this is not supported because of two restrictions: a) AllocSpriteData() always creates internal sprite bitmap in LUT8 format. In order to support another formats AllocSpriteData() just has to be a little smarter and determine if source bitmap is a truecolor HIDD bitmap. b) Display drivers always expect pointer shape in LUT8 format. This is also simple to overcome, but there's one little problem - it's problematic to dislay a truecolor sprite on a LUT screen. Let's remember that the user may run in VESA or even VGA mode, and the user should see at least *SOME* pointer image.
The topic generated intersting discussions and ideas: so far the actual pointer is no more the os-3 arrow but a translucent red triangle; Matthias "mazze" Rustler is working in developing the pointer preference panel that should work like the old Amiga pointer preferences, plus the possibility to import os 3 pointer files and .png cursors; I tried the feature in a new build and seems to work fine.
The scout port is one of those programs that already have a working reactive pointer, and is a good feeling:)
The screen dragging is still under work by Sonic, that also took advantage of the occasion to try to give a clean-up and remodernation to the graphics.library code and add new functions; this work might also bring even more improvements on AROS graphic internals; in this thread on Aros-
ec[link] i asked Pavel to explain better what is going on, since the discussion in the mailing list is pretty technical and fragmented: here is the transcription of its explaination:
First of all, i've changed a way how graphics.library works with displayable bitmap objects. I made a use of ViewPortExtra structure. Now AROS behaves the same as original AmigaOS:
1. You prepare a viewport using MakeVPort(). During this call a bitmap is validated and internal pointer to a bitmap object is set up in ViewPortExtra->DriverData.
2. When you're done with ViewPorts, you call MrgCop(). Yes, we do not have copperlists, but we have something other to prepare. MrgCop() traverses through the list of ViewPorts in the view, and for all ViewPorts with unset VP_HIDE bit it links together DriverDatas in their ViewPortExtras. So, at the end we get a 'displaylist' attached to a first visible ViewPort.
3. When we call LoadView(), i just take this display list and feed it to the driver via new HIDD_Gfx_ShowViewPorts() call. The rest is done by the driver. It keeps track of currently displayed bitmaps internally, so at this point it adds new bitmaps and removes old ones.
This system is future proof in two points:
1. This is compatible with future classic Amiga port. Since OBTAIN_HIDD_BM() is used inside MakeVPort() in order to get a bitmap object, this can perfectly handle classic's planar bitmaps. A temporary object of planarbm class will be allocated by graphics.library.
2. The same scheme would work in multi-monitor environment. Just MrgCop() will need some more intelligence and build several displaylists for several monitors.
Currently i'm busy with intuition's inputhandler. In general it is already capable of handling multiple screens, but still have some problems with it. This is the most difficult part of the task because inputhandler code is a huge piece of mess, almost with no comments. There are lots of quirks in it.
Also i don't know how it would work with relative mouse drivers. Mouse input on hosted AROS works in a different way - we just get absolute coordinates for every event, like with a tablet or touchscreen. So more problems can pop up when i go native.
When i'm done with the inputhandler, probably i will continue with improving graphics. My current ideas:
1. Rootless mode for hosted. This means - one host window per screen, all screens are simultaneously visible. This would require further reworking of input because different host windows would send events to different screens. Perhaps this task has many things in common with handling multiple monitors.
2. AROS bounty N22 (graphics enhancement). I will be able to rework display drivers handling in order to be able to add them at runtime. Also perhaps i can implement a support for multiple monitors. This will require serious rework of related graphics.library internals. However at the end it will look the same as in other systems: DEVS:Monitors directory with one or more drivers inside. I already have some ideas about future implementation. Some of them were/are already discussed on the ML.
My best wishes for the work of Pavel, considered also that lately he achieved good progress in what he is doing.
Last January a
discussion in Aros-
brought the first draft of a more complete Wireless stack for AROS: the wireless technology is already supported with the prism2 chipset but, as stated in the discussion, its implementation is kinda obsolete, not supporting security protocols as WEP and being tied to the single chipset; the main goal of the bounty is to provide a reliable stack not tied to any chipset in particular, so that separate device drivers can be written to interface with it and its future extensions and improvements; by the way the requirements include at least one driver to be written, and the focus of the submitter (Colani1200) fallen on the netbook's widely supported Atheron chipset.
bounty is gone online on power2people on January 18
and is, also thanks to the initiaitve of the aros-
ec user Terminills that decided to match every other donation until the bounty reached the $2000 quote, actually the highest active, despite being still far from the $4170 record quote achieved from the Poseidon bounty last year.
The wireless bounty also match efforts in developing drivers for netbooks and other Atom boards as the commercial iMica and Ares one, since most of the hardware is usually similar; it is not a surprise then that
new AHI sound drivers
were actually developed from a Davy Wentzler, programmer of the
audio recording software on the Amiga platform and now on Windows and OS-X (hoping for support on AROS one day), paid from an initiative of Steve Jones. The provided sound drivers were mainly prepared for the iMica boards,that use the Atom support chips but, according to Steve jones words,most of the HD Audio boards should work; from the news in AROS-
ec, those are the supported sound cards:
Terratec Aureon Sky
Terratec Aureon Space
Terratec Phase 22
Terratec Phase 28
M-Audio Revolution 5.1
M-Audio Revolution 7.1
Davy accepts paypal donations at the mail link provided oin the aros-
ec news article.
Yannick "Yannickescu" Erb is another guy that, like Fishy_fis, started do porting of programs and games for AROS; we talked about its efforts int he past when he released the WHDMenu tool; he did not stop, though. Let's a couple of its remarkable works:
The first utility is ZuneArc: it is a graphical front-end for archivers such as zip, lha, tar and others and was a long-awaited in AROS world, since so far the almost only way to handle archives (beside some lucky guy that was able to go around dopus limitations) was to use the shell command line.
The ZuneARC user interface
The program is written in C and its GUI reminds me a bit the first versions of winzip as user interface. The use is pretty easy: clicking "open" a requester will appear: just select your archive to unpack and confirm: the content of the archive is displayed in the list below the buttons. At this point is possible to add/remove files from the archive or to extract either the selected files/directories in the list or the full archive content. Thanks to a text config file, ZuneARC can be extended and customised to handle more archive formats (having, of course, packer and unpacker programs ported on AROS).
Another program ported by Yannickescu on AROS is a VNC Client that will allow to pilot a remote computer from AROS. Yannickescu worked also on porting the server part but for now he is stuck with some unsupported functions.
ArosVNC showing my old laptop windows screen on the other room
The port of Yannickescu has a starting GUI written in amilua/zulu and the performance are quite good, considered that I tested form my qemu machine, therefore in native might be even better, even though i haven't tried yet.
Yannickescu is also working on a Windows Remote Server client that is actually under beta testing by several AROS developers including Paolo Besser.
The home page of Yannick "Yannickescu" Erb, form where is possible download all those software and much more, is
A new text editor comes to AROS and bring a much wanted feature with him: syntax highlighting.
Annotate is a lightweight text editor, previously released by the original author, Doug Bakewell, under GPL, has been ported to Amiga OS4 and lately to AROS by Daniel Westerberg.
Annotate is distributed in an unique lha file containing the
ecutables for all Amiga systems; unique requirement is to copy the AnnotateSyntax.xml file in ENVARC: in order to make the changes persistent.
Annotate has also a macro system and a full AREXX port so that whoever (not me, pity) has the skills can program it for macros and to test files.
By the way, having finally a syntax highlighing editor on AROS (beside Vim, that i have been unable to run in the last version), inspired me to enhance the experience.
So I gave a look at the file AnnotateSyntax.xml and found that every new language has its own XML base tag plus a group of subtags that can make the language syntax react appropriately; starting form this I made a first draft for a LUA syntax highlighting taking as reference the Notepad++ LUA syntax file.
Annotate showing a LUA file using my syntax rules
It reacts quite nicely to the base LUA syntax but haven't found a proper way to make it react to the zulu syntax yet; i based my implementation of the zulu syntax from an HTML guide for MUI
Interesting news even on the Kickstart replacement Bounty phase 1: the bounty changed hands and now the new holder is Gary "Gaz" Pearman, a programmer and web developer with a background on linux and Amiga programming in C and E; he set up
where is possible to track down (once again) the development; the fact that the blog has already some articles, not only one, is a good sign that Gary is involved in the project. So what did he do so far?
At first he tried to follow the same route of Greg "bheron" Casamento, trying to get Aranym to work (Aranym is an Atari ST-oriented 68k virtual machine that can be used as a generic 68k machine) in a 68k port of Debian but, after several misadventures including an incorrect disk image, he seen that aranym on 68k was pretty slow and without network support so he decided to work on real hardware and try to compile the kernel first; since seems there are no supported GCC symbols on the compiler he is using, but seems he found a solution taking some needed assembly implementated functions from the mac port of GCC. This bounty has been around for a long time so it is obvious that people is eager to see results; so far things are proceeding in the right way...
Roman Berle made come out the third part of its promotional video on AROS, called AROS alive. It took several time for Roman to come out with this one but we can see, from the way he used tripod for camera placements, the attention to detail put in the captures and the sound mixing, that he improved its skills and the end product looks really well done and professional. I personally would have liked to bring AROS alive last year as community promotion example at SCaLE, but my set up at the time was uinable to show it with sound.
AROS Alive Video
In case the above video embed does not work, the AROS Alive video can be seen in youtube at
Pubblicato il 3/4/2010 alle 0.30 nella rubrica diario.