Category Archives: Developer Info

FUSE and NTFS for AmigaOS

280px-FUSE_structure.svgFUSE is short for Filesystem in Userspace. FUSE was created to enable non-privileged users to run file systems outside of the kernel which is a big deal for Unix-like operating systems. In AmigaOS, everything runs in userspace so FUSE is not nearly as important for Amiga users. What makes FUSE valuable is all the file system implementations which use FUSE such as NTFS, ext2, ZFS, etc.

The Amiga Operating System implementation of FUSE has been realized via a project called Filesysbox by Leif Salomonsson. A special thanks goes out to Leif for allowing his hard work to be utilized.

Amiga programmer extraordinaire Fredrik Wikström was then commissioned to port Filesysbox over to AmigaOS. Fredrik took the original code and updated it to AmigaOS 4.1 standards. This work included utilizing advanced DOS features such as object notification and the new file system API which seeks to completely avoid the esoteric DOS packet interface. Colin Wenzel is the main man behind the advanced DOS features.

Master_500pxIn order to test whether Filesysbox was working properly we needed a file system to go with it. NTFS-3G by Tuxera was chosen for this purpose. Fredrik also ported a full suite of tools to go along with NTFS itself.

Both Filesysbox and NTFS-3G are contributions being offered to registered AmigaOS users via AmiUpdate. The software licenses require that the source code be made available so registered users can download the matching source code from Hyperion’s web site in the downloads section.

blog_devIt is hoped that 3rd party developers will become interested in porting more file systems in the near future whether they are via the FUSE API or the new DOS file system API. The upcoming SDK will include everything you need. In the mean time, please feel free to utilize the provided source code and the AmigaOS support forum for assistance.

Finally, a big thanks needs to go out to the AmigaOS beta testing team for risking their hard drive partitions while testing NTFS-3G and Filesysbox. It is demanding and potentially destructive work that should not be taken for granted.

AmiWest 2013 AmigaOS Team

AmiWest2013-AmigaOS-Team1200AmiWest 2013 is now over and it was a heck of a lot of fun. We managed to grab a team photo this time.

From left to right in the front row sitting down we have Ken Wilde and Lyle Hazelwood. Next row back we have Bill Borsari, Flip LaFramboise, Trevor Dickinson and Tony Wyatt. In the back row we have Matthew Leaman, Val Marti, Paul Sadlik, Steven Solie and Alex Carmona.

A special thanks to Mike Brantley for taking the photo. Mike also took a lot more photos at the AmiWest 2013 show.

I think the big smiles on those faces says it all really.

I also took some time to update the AmiWest 2013 crowd on the current status of the Amiga Operating System which I will now summarize here:

  1. The netbook project initially announced at AmiWest 2011 has been cancelled. Below is an excerpt from an email to me from Ben Hermans dated October 10, 2013 on this matter.

    Despite best efforts by Hyperion and A-EON we were unable to get acceptable and stable conditions and terms from the Chinese supplier (price point, paying terms, required upfront, etc.)…

    The project was therefore cancelled in favour of a more future proof solution.

  2. A-EON Technology announces the Cyrus Plus Beta Test Programme. Follow the link for all the details and how to apply.
  3. Gallium3D Update
    • Software rendering completed
    • Working on the WinSys part of the implementation
    • Challenges encountered along the way:
      • Must be re-entrant, thread safe and multicore capable
      • Must run on a bare minimum system
      • Efficient
      • Possible to load non-Mesa and non-Gallium drivers
  4. X-Kernel Update
    • Task scheduler rewritten in C
    • Removed reliance on data structures (e.g. ExecBase task lists and ThisTask pointer)
    • Moving scheduler to run on auxiliary cores
    • All cores schedule tasks independently
    • Load balancing between cores
  5. AmigaOS 4.2
    • Depends on Gallium3D release
    • May or may not depend on multicore support
  6. AmigaOS 4.1 Update 7
    • Will be needed for Cyrus Plus product release
    • Consolidates all previous updates
  7. AmigaOS 4.1 Update 6
  8. FUSE and NTFS-3G
  9. New development team members since AmiWest 2012

We also had a chance to have a team meeting on Friday night in one of the hotel rooms while at the show. We had the usual Airing of Grievances and a lengthy discussion on where we are going and how to get there. At one point we were interrupted by an outsider who likened the gathering to a secret Masons meeting.

If you would like to come to AmiWest 2014 and join in the fun then keep October 24, 25 and 26 open. There is also a programming seminar planned for October 23 and 24. See you there!

An SDK Update (finally)

blog_devIt has been a long time coming but we finally got around to releasing an updated Software Development Kit (SDK) for the Amiga Operating System. You can download it from Hyperion’s server.

This SDK includes all the usual includes and autodocs you need to use all the latest released AmigaOS features. The AmigaOS Documentation Wiki contains all the higher level information you need and will continue to be updated to help explain everything. The wiki also has a new Frequently Asked Questions section where we will post the most common problems and solutions.

This SDK is also a tad incomplete because I ran out of time to prepare it before AmiWest 2013. Therefore, there will be another SDK update or two sometime after the AmiWest show which will include even more.

We will also try harder to provide an updated SDK much more regularly from now on. Thanks to AmiUpdate we now have a way to deliver all sorts of SDK updates as needed with minimal effort.

Support for the SDK is available from the official AmigaOS support forum. You may also want to give OS4Coding a try if you get stuck on something.

Have fun!

New AmigaOS Core Developers

blog_devWe are pleased to announce that we have joined the AmigaOS development team. We hope that we are able to contribute some good things to AmigaOS using our skills in coding (Frank) and graphics (Thomas).

The follow is a short description of us and our products.

EntwicklerX:
We are currently working full time, self-employed, developing our games on multiple platforms (AmigaOS, Android, iOS, Windows Phone, Xbox Indies) as EntwicklerX. For about 10 years we have worked together on various software projects in our spare time. The focus in the last 5-6 years was to earn some money with the small bonus that it has allowed both of us to live from it (not enough for a Ferrari but enough to have fun at work). A strict separation between design and programming logic helped us build our products in an effective way with our limited time. While Frank takes care of programming, Thomas builds the graphics. Our subsystem is so sophisticated that Thomas can create and test Layouts without the help of Frank and Frank can use this directly in his code. This saves a lot of time and nerves. Before this, Frank had to compile every time if Thomas wanted to move a graphic a few pixels. ;)

AmiBoing Games

Our Amiga platform AmiBoing is used to bring an online connection to our games for high scores and achievements and it is also used for distributing our games. With more than 200 Users we can say this is the leading online gaming community on the Amiga platform. ;)

avatarImago_small

Thomas:
I care about what the user sees, how users interact with a game, paint graphics, create the levels and take care of our website. I have invested a lot of time into understanding how to create themes for AmigaOS and am still learning. The seamless design of an operating system is very important to me and I hope to play a part in this within AmigaOS.

avatarGoos_small

Frank:
I try to bring Thomas’ graphics to life and love to get the maximum out of AmigaOS using any available techniques to optimize (e.g. compositing). In our projects, I take care of all the programming. Together with Thomas, I am working on the game play and new game ideas. I can do my part in helping the Amiga in all areas of coding and to help current developers.

We are a Team:
Even with the split of responsibilities we will usually work as a team because ideas and their implementation always occur together. We look forward to working with the existing developers and also contributing to any interesting discussions. We will do our best but please note that we are only human and have a finite amount of time to work on everything. Give us time to understand how things work within the developer team. ;)

Best regards and let us say thank you for adding us to the list of AmigaOS core developers,
Thomas “imagodespira” Claus and Frank “Goos McGuile” Menzel.

Some Links:
EntwicklerX: www.entwickler-x.de
AmiBoing: www.amiboing.de
Themes: www.amiboing.de/themes.php

M.A.C.E

ThemeScreenshot

Yet Another AmigaOS Core Developer

Please welcome Fredrik Wikström as our newest AmigaOS core developer.

Fredrik has been busy on the Amiga scene for many years and has produced a lot of very useful software. More information about Fredrik’s work can be found on his web site.

Given Fredrik’s exemplary track record, I think we can all expect some very good things from him.

If you have used Fredrik’s software in the past, please also consider a donation to show your appreciation. If bounties are more your thing, he has been working on a few at Open Amiga.

Steven Solie
AmigaOS Development Team Lead

New AmigaOS Core Developers

Please welcome our newest AmigaOS core developers: Alex Carmona and Lyle Hazelwood.

Alex has been a dedicated beta tester and programmer for many years. He has decided to take the leap to OS development. Now he can fix all those bugs he has been filing…

Lyle took the plunge and purchased an AmigaOne X-1000 system. He has been a very active developer ever since. More information about Lyle can be found at his web site.

Their names have already been added to the credits page on the AmigaOS web site. You can also find both of them actively helping people on the AmigaOS support forum.

Memory Page Locking Confusion

With the introduction of the AmigaOS Documentation Wiki and the uploading of the latest Amiga ROM Kernel Reference Manuals we have been given the opportunity to bring the Amiga Operating System’s documentation up to date. Although not complete, several dedicated volunteers have been slowly improving on that documentation.

One of the most confusing changes to the API has proven to be Exec’s new LockMem() and UnlockMem() function calls. These functions are use to lock and unlock memory pages. Normally, a programmer should not have to worry about memory pages nor worry about what the swapper is doing. Such details should be left to the operating system. However, in special circumstances (e.g. device drivers) it may be necessary to use LockMem() and UnlockMem().

What really confused programmers is the fact that we advocated the use of UnlockMem() even when the programmer did not explicitly call LockMem(). The issue was primarily centered on MEMF_SHARED memory which, by default, is automatically locked. That in itself isn’t really a problem. Add in the fact MEMF_ANY memory is translated to MEMF_SHARED memory and you have the potential for a lot of locked memory pages and thus ineffective use of system memory.

AmigaOS programmers are always trying to be helpful. Pretty much everyone jumped on the bandwagon and declared this API change as a travesty of enormous consequence. Why didn’t the FreeVec() function unlock the memory for them? Why must UnlockMem() be provided the size of the memory to unlock? They were very close to rioting.

After much discussion and fact gathering, the AmigaOS development team have officially changed our minds. The new advice is to never call UnlockMem() unless you explicitly called LockMem() in the first place. The wiki has already been updated to reflect this.

AmigaOS programmers are also rather attentive. “What happens to those implicitly locked memory pages when I don’t call UnlockMem()?” The truth of the matter is that some pages will actually be leaked. That is, some of those memory pages will not be moveable and thus not swappable. This does not mean the memory is not available to the system. This means the underlying memory pages cannot be swapped.

Now before resuming the riots, please take a moment and think about this. The system has been running fine for years now without programmers calling UnlockMem() on implicitly locked memory. We only recently explained this on the new documentation wiki. Something deeper is indeed going on here.

Without going into all the internal details, the system will automatically unlock memory that has been freed even if you forgot to call UnlockMem() on that memory. This is not true for every memory allocation but it is true for the majority of the memory in the system. This is why everything has been running fine for years now.

So what is going to happen to those lonely locked pages that can’t be automatically unlocked? The plan is to modify Exec’s discrimination between MEMF_SHARED and MEMF_PRIVATE memory. They will be moving to their own page caches. This effectively eliminates the problem entirely without a single line of code changed in your applications.

We are very sorry for the confusion. In the end, we figured it all out and I think this new advice (only call UnlockMem() if you called LockMem()) is very easy for programmers to follow.

Steven Solie
AmigaOS Development Team Lead

Xena – Signs of Life

The first tools for programming Xena (no, not the Warrior Princess) are now ready for distribution.

The XMOS XS1-L2 chip built into each AmigaOne X1000 with a unique local bus connected directly to the PA6T.

These tools provide the ability to load programs directly into the the Xena chip as well as monitor most of the internal registers as the code is executed.

Unlike other XTAG devices, no adapter board, USB port, or JTAG cables are needed. We can access all of this directly from the AmigaOS command line.

In addition to the new tools, a new AmigaOS resource named xena.resource is included to arbitrate access to the new hardware features.

I have also included a simple .xe file that will flash two LEDs on the AmigaOne X1000 board, as a “proof of programming” demonstration.

These tools were ported from code provided by Segher Boessenkool. Please be sure to thank him if you see him around the XCore Exhange Forums.

The tools are available now and can be downloaded directly from Hyperion’s web site by all registered X1000 users. The new tools and documentation will be added to a future release of the AmigaOS SDK as well.

Information on XMOS chips, compilers and other tools are available at their web site.
Excellent community resources may be found at the XCore Exchange.

I hope these tools provide a beginning into the exploration of these Xciting new features.

For more information about me please visit my web site.

LyleHaze

Introducing the AmigaOS Documentation Wiki

The AmigaOS Documentation Wiki is now available.

This new wiki is meant to fill a gap which we have been struggling with since the launch of the AmigaOS 4.0 project: proper user and developer documentation.

This wiki is using the most up to date, original AmigaOS documentation we could obtain permission to use as a baseline. It is true some of the information is rather dated and/or obsolete. But a majority of the information still applies to AmigaOS 4.0 and beyond. In my opinion, it is better to start with something rather than be staring at a mostly blank wiki.

We are also seeking to reestablish AmigaOS related standards and registries. The official SANA-II standard can now be found here. The IFF FORM and chunk registry is now here. The classic Amiga Manufacturer ID registry is here. Special thanks to Neil Cafferkey for the SANA-II wireless extension and James Jacobs for taking care of the registries all these years.

Editing rights to the wiki are currently limited to registered users only. We are looking for volunteers from the Amiga community to help out. If you would like to contribute in any way, please contact us using the contact form on the AmigaOS web site. Any help would be greatly appreciated!

Steven Solie
AmigaOS Development Team Lead

Where Credit is Due

The Amiga’s Operating System (AmigaOS) has been around a long time and dates back to the release of the Amiga 1000 in 1985.

Many people have contributed to AmigaOS and you can see a (hopefully) complete list of those individuals here.

Special thanks goes out to Olaf Barthel for providing the initial list based on the actual source code commits. Recent contributions have come in from Robert “RJ” Mical and Bryce Nesbitt.

A lot of the source code has been changed and/or replaced over the years but many components and their original designs still live on in AmigaOS 4.1 to this day. Expect this list of credits to keep on growing.