The Unofficial XaAES Page
|Odd Skancke - current maintainer of XaAES|
The Norwegian programmer Odd Skancke is perhaps better known as "Ozk" to the majority of Atari users. After having a history of releasing quality products coded in assembler, he is nowadays just as comfortable with GCC and is the main force behind the XaAES development.
Since Odd plays such a central role in our platform, it seemed like a good idea to ask him a few questions about his Atari history and himself. And, of course, also about his thoughts on the future for Atari and FreeMiNT!
I'll start with what I consider to be an obvious question:
-How were you first introduced to Atari computers?
I was introduced to Atari by a friend of mine, Vidar Olavesen. Back in around 1983, when I was a C64 user, he introduced me to the 8-bit. He's actually still keeping up with atari 8-bit news in c.s.a.8bit.
I take it that games was what sparked the interest at first?
Yes. We later did some assembler programming for the 8bit. Vidar released some demos under the name "Pokey Soft". I also wrote a crossassembler for the ST which I called XEST, used a cable between the parallell port of the ST to the joystick ports of the XE. On XEST you could write code and assemble, then transfer and run directly on the 8bit :-) The transfer was lightning fast too.
It sure seems you got busy with coding rather quickly! Where did all that start?
It did start with the 8bit. Back in 1985 I got one of the first 1040ST's that arrived in Norway.
I then started messing around with GFA and actually wrote a good text-adventure engine using it. I also wrote a game I called AGC (Another Galaga Clone), which was quite good. It had lots of sprites and nice collision detection.
Considering that nowadays you're more famous for the ASM coding that might be a bit unexpected!
I started learning ASM shortly after this, today all my GFA skills are long forgotten.
One would think it offers a rather steep learning curve, so why ASM?
I had this problem that I needed to understand everything to a 100% degree. This was something that I felt GFA could not provide.
So you were quite a control freak, in a way?
Is that in any way related to taking the MiNT route, when chosing the OS to use?
Yes, but MiNT came into my life later on. I didnt use MiNT until I bought my first TT, around 1995 I would think. Another friend of mine, Erling Henanger, decided he wanted to sell his TT. When I bought it MiNT was installed, ready to use with a dialup internet connection :)
Did you get along well with MiNT right from the start or did that take a while?
I loved it instantly! It gave me complete control, and I think this was the "start of the end" of my ASM-only obsession :) It took me a while to learn everything around MiNT, mostly because the system worked so stable and perfect for a long, long time. So there was no need to mess with it :)
Did MiNT and it's AES at that time offer any big visual changes and improvements compared to TOS?
Well, AES4.10 was quite an improvement over the TT's TOS, but I already knew what the Falcon's AES looked like.
I had bought myself one of those a couple of years prior to getting the TT.
One could perhaps say that it was a massively configurable new OS that had a familiar look?
Yes. Erling also said, when I complained about the slowness, that "It's not MiNT that is slow, its the AES!".
Ok, the introduction as a user came with the TT, but how come you also started working as a MiNT developer?
It did take a while before I started developing for MiNT. The first thing I did for MiNT itself was a SCC serial driver, because the existing one was very unstable on the TT. Instead I had been forced to use the HSMODEM stuff, which was something I didn't like. I had to learn a lot for the SCC project, which involved using ASM-only and reading C source/headers to find info about structures, etc. This is how I was truly introduced to the power of C. I further developed the SCC driver when I found out that the Hades also had big problems with it.
Why did you consider HSMODEM to be a bad idea?
I didn't like the way MiNT had to do tricks to call the HSMODEM functions. Although, for a SingleTOS system, HSMODEM does things as clean as it could. But MiNT had to call the underlying TOS and this dependency is something I never liked.
Those who don't know you're responsible for the recent years progress within the XaAES project might recall you mostly as the guy who made the drivers for the RTL8139. How did that project start?
Sometime after I got the Hades (which was obtained back in 1998 or there about), ADSL became more and more available in my area. I later on found out that ethernet cards were available at Biltema for less than 200,- NOK (about 25€). I bought one, read the description on the chip and found info about it on the net. This was the RTL8139, which was the first enetcard driver I wrote :) Now the experience I had with writing the serial drivers really came into play.
Apparantly this experience paid out well, judging from the numbers of people that have been using the driver to get online. After this you have been involved with work on the actual kernel too, right?
Oh, actual kernel development I have not been doing so much. That is actually only in recent times. I've been fixing minor things, but only after making sure I've done the right things by asking Frank Naumann.
It seems safe however to say that it's the low level stuff that interest you the most?
Yes, absolutely. Driver development was the perfect way to combine my need for low-level programming with clean implementations. And this was the one of the most important aspects about MiNT that I love.
The ability to get an OS with clean implementations from the ground up?
Yes, and at the same time nurture my interest in low-level programming, i.e, talking to hardware.
But with all your care for the bottom layers of the code, how does XaAES fit into all this?
XaAES is a way of low-level programming too, but not at the hardware level. What I do think is very nice with XaAES (and other OS layers, like oVDI and the kernel itself) is that one can prepare for easy driver development. This way, when things are up running on our existing platform, new hardware should be much easier to support later on.
And one of the benefits would be that one can avoid 3rd party hacks and use well defined APIs instead?
Absolutely, that is one of the main goals, to try and clean things up. To get away from, or at least minimize the dangers, of bad API implementations in current AES's. One good example of this is WDIALOG. Very good idea with a very bad implementation. This is one reason that the AES needs to be a kernel module, so that we can implement such things in a clean and secure way instead of having to ditch them. Not supporting WDIALOG would make quite some software not run. So, I always try to implement things when possible. But not at any cost.
So in this example it seems it was possible to both have the cake and eat it?
Yes, that became possible when XaAES went kernel module.
Indeed, and you were the big force behind that move. If I recall correctly, this effort was initiated after Frank Naumann had adapted the original XaAES sources to compile under GCC?
Yes, Frank did all of the kernel side API that XaAES as a kernel module needed, and I did most of the XaAES side of things. Frank did some of the hard tasks such as calling out user-functions as signal handlers, which is what allows me to cleanly implement things like WDIALOG.
So what made you interested enough to start developing XaAES further?
I saw the potential in the AES when it became part of the OS in a real way :)
That boosted my interest in working on it, if nothing else just to test ideas I had regarding speed, stability and safety.
Before XaAES became a kernel module, it was discussed that the AES speed might increase significantly by taking that step. Some mentioned a potential speed increase of around 120%, but how did things turn out?
Oh, when comparing XaAES before/after kernel modulification I would say that it got at least 200-400% speedboost, visually. It also multitasks much, much better since it gives up CPU-time much more strategically correct compared to other AES's. All in all, the overall feel is that XaAES is by far the fastest and most responsive AES today.
Being an XaAES user myself I indeed thought that the overall response time seemed to be one of the things that got improved the most. Can we thank kernel integration for all of the speed increase, or were there any additional clean-ups made along the way?
Most of the speedup comes from the kernel integration, yes. But of course, most of the AES has been rewritten since it became integrated with the kernel.
Most of it? That does sound like quite an extensive project!
Yes, but a little at a time. Henk left me with a fully working system on which I could replace one bit at a time ;-)
I can't begin to express how fantastically fun it is to continue a project that was working at such a level XaAES was when Henk left it. Basically, Henk's work made my work very easy! I would like to thank him for that :) When you can implement new things in small pieces, which was possible with XaAES, it is much easier to find bugs and do things correctly the first time. You only work on small parts at a time.
Now we covered a bit of your MiNT history. I heard there are some plans for the future too, which for example involves making the kernel free from hardware depending code. Could you explain a bit what the idea with that is?
First of all, one goal of mine is to get rid of all TOS dependancy within FreeMiNT, so that it truly becomes "MiNT Is Now TOS" :) This would result in two things, of which the first is already mentioned, TOS independancy. Secondly, once all the hardware/platform related things are out of the main source tree, it becomes much less of an issue to port FreeMiNT to other platforms, such as a PPC based one. As soon as the kernel runs on our platform after the changes mentioned above, we can attempt a port of some kind. But that is still only an idea of mine, and it's far into the future ;-)
The goal for now is to get rid of HW/TOS dependancies, and instead put hardware dependent things into separate CPU/machine directories for easy maintainance. This work is going on today.
The OS seems to have a bright future, but it is harder to detect activity when it comes to software development these days. At least as far as applications are concerned, things are rather quiet. Do you think it will get more common with applications from other platforms being ported to MiNT in the future?
Yes, I think so. The problem we have now is that most active programmers on Atari seem to be doing some sort of development for the OS or parts of the OS. There are unfortunately not a lot of application programmers left :/
As for the remaining Atari users, why should they switch to XaAES? (If they haven't already!)
Well, in my opinion, because it's a mean, lean and last but not least, a *clean* AES. It's also faster and more stable than its competitors, while it still offers support for most things. In addition to that, it offers software developers a good coding environment - developing under XaAES with Memory Protection enabled will help you create better software. If those aren't reasons enough, you should use it just to support the remaining OS developers, such as myself ;-)
Speaking of yourself, I asked a couple of people what they would have chosen if they were to ask you one question. It seems the winner is:
-What makes you so dedicated to Atari, spending all this time on developing the system further?
I have no sane answer to that one, really. I think the biggest reason is that there is so much still undone on Atari in contrast to Linux or Windows. On other systems most of what I find interesting is already done, and that what I can do on these systems (or not) makes no difference. Weird, but thats how it goes :)
In a way, one could say that you want to do things, because they need to be done?
Yes, in a way. And another big part is that I have gained a lot of knowledge about our systems over the years.
I think we've now managed to achieve a rough understanding of how you got involved as a user and a developer. What gear do you still keep today?
I have the old STE that I was sent to be able to fix 68000-compatibility. I also still keep the good old ST that I bought... nostalgia. Then I have a Hades060, a Milan040 and the same Falcon I bought back in around 1993. That Falcon now supports a nice CT63 :)
That is quite a long list. Did you keep all the Atari computers you've had through the years?
Yes, I never sold anything. Well, I actually sold the Falcon once, but regretted it so much I had to get it back! :)
Finally I have to ask something that many might be curious about:
-What do you do when you're not coding on XaAES and low level drivers?
Right now most of my time goes into music. I play the drums in a band. This is something I've not done much since 1993, where the band we had started to sound very good. Due to lack of a place to rehearse, the band just grinded to a halt back then. Now we're back at it, have a good place and I'm just drawn to the drumset like moths to a flame :) Also, after not playing for 14 years I have a lot of catching up to do :)
Add to that family and loads of work, you can imagine that time is something I dont have.
Considering that, thanks for your time, and good luck with both your FreeMiNT coding as well as your drumming!
Joakim Högberg © 2007