Norwegian ex-Amiga coder Kurt Skauen started designing & writing AtheOS in 1996. Until late 1999, AtheOS (a name derived from the Greek Goddess Athena) used to be called AltOS. AtheOS has even seen complete rewrites along the years, and today is on version 0.3.7. Come with me and see what AtheOS has to offer today to you. All your questions answered and we also include five new screenshots.
The AtheOS 0.3.7 download is pretty slim for a self-hosted, full Posix/GUI magnitude OS, as it is only 22 MB for the base installation, plus about 20 more MB for the (unavoidable) C/C++ developer’s tools (gcc, NASM, binutils etc). Installation is not really difficult, but it surely is not for the faint of heart or for those who have never installed anything else than Windows before in their lives. The installation process involves 3 floppy disks, a fat partition (used only to hold the base installation tarball), initializing the partition of your choice as AtheOS-fs (a small, 500 MB, partition should be enough), untaring the base installation package to the new partition and then configuring GRUB to boot load the AtheOS kernel or even install GRUB on the MBR (maybe the configuration of GRUB can be the most tricky part for most users in the whole installation process).
After you do your necessary configs on GRUB, you are up and ready to select AtheOS in your next boot. AtheOS loads in full GUI in less than 8 seconds in a modern PC (around 16 seconds in my old and slow laptop). You will soon be presented with the login screen window (AtheOS is fully multiuser, following the Unix model) and here you go in the AtheOS main desktop.
The shortcut icons on the left of the desktop are hard-coded, but they are good enough to load for you the main applications bundled with the base AtheOS installation. A (very) basic file manager, a CPU and memory monitor, Emacs, and of course, your best friend in the AtheOS world, the AtheOS Terminal, called ATerm. ATerm is basically an xterm-type terminal and it is vital to know how to use unix commands and Bash, as most operations under AtheOS will involve the command line (however, by being a modern OS, AtheOS is GUI-only, it does not offer a fullscreen text mode). Make sure you use a fixed font that includes the full character set instead of the one supplied with AtheOS because you will get screens like this, instead of like this. Copying the LucidaConsole ttf font from my Windows partition for example, and use it instead of the default fixed font, saved my day. AtheOS uses the FreeType library, so it supports True Type fonts, in a gorgeous anti-aliased mode.
In the AtheOS desktop you will also find the ‘Preferences’ application, which it will help you modify some of the AtheOS default settings. You will be able to change keymaps, set font defaults, change screen resolution and select a different window manager theme or modify color themes for the GUI widgets.
By pressing ALT+F1..F12 you can utilize the workspaces (virtual screens) available in AtheOS. Each workspacce can have its own resolution and color depth, but a common background image/color.
Two additional, must-have, third party applications that any AtheOS user should download is Launcher, which considerably eases the process of launching applications, and Locator, a file find utility. AtheMgr is also a must-have, as it manages the killing of bad-behaving processes, which can be very handy at times.
The GUI is pretty basic, but it is fully functional. Its app_server is written in C++ and the AtheOS GUI API is also 100% C++ and object oriented. Being a web designer myself, I am always nit picking a bit about the visual stuff, so I could say here that the GUI could do with the help of a GUI designer. Font and Widget spacing, general aesthetics are far from ideal, but as I said, works fine. That’s just more than enough for a one-man project, as AtheOS is. A lot of GUI-related classes have not been implemented yet, so several people who are porting or developing their GUI applications to AtheOS, are often bumping on limitations. Word has it that Kurt is planning to completely re-write the whole GUI part at some point.
AtheOS is an open source (GPL) and modern, multitasking, 32-bit OS, with a 64-bit journal attributed file system (similar to BeOS’ BFS in many ways), written in C and C++, and supports Symmetric Multiprocessing (SMP) which scales pretty well on my dual Celeron 533 Mhz. AtheOS is also POSIX compliant to a large degree (support for mmap() is missing though, but AtheOS is still far more Posix compliant that BeOS is for example). Posix applications written for Linux or other Unices, should easily compile under AtheOS too, with none or minor changes. The file system hieriarchy has a sense of duality I could say. While you will find a /usr/bin, /root and /var and other unix-alike directories just to satisfy the Posix demands for compliancy, most of these entries are symlinks to the ‘real’ AtheOS filesystem hieriarchy, which is a bit more compact (for example, /root symlinks to /home/root and /system to /atheos/sys/ while the ‘real’ / (not viewable by the user) only includes /atheos (with all the directories the user sees inside it) and /boot (which only holds GRUB and its configuration files)). Still with me?
Installing ported Posix applications is an easy process, you simply untar them to your /usr/ and then run the pkmanager -a /usr/* command to update the enviroment settings that these apps may require. Currently, there are around 210 applications available for AtheOS, but only about 35 of them are GUI-based. Of course, the flagship GUI application for AtheOS is ABrowse (included in the base installation), a very capable web browser, based on the KDE Konqueror’s KHTML KPart. It is funny to see ABrowse loading in 1 second on my K6 300 Mhz laptop’s extremely slow hard drive, while Konqueror takes 5-6 seconds to start-up on my dual Celeron 533 with 256 MB of RAM and the speedy IBM 30 GB IDE hard drive (yes, my whole KDE install is object-prelinked).
AtheOS, like with BeOS, loads all its drivers when it boots and then selects which one is supported and which one is not. There is no IDE driver so far, which is why AtheOS does not support reading from a CD-ROM or ‘talk’ to the hard drive directly. It uses the BIOS for reading and writting the hard drive and the floppy drive. I noticed on my AMD K6-2 300 Mhz laptop that each time AtheOS touches the floppy, the mouse cursor does jerky movements and becomes a bit unresponsive. While it behaves better than the Win9x/ME codebase on the specific floppy/mouse issue, it is still away from delivering a comfortable experience. Maybe the fact that you have to go through the BIOS has to do with this though (BIOS is 16-bit while AtheOS is 32-bit and it has to momentarily switch to 16-bit mode in order to ‘talk’ to the BIOS).
Not much hardware is supported on AtheOS, but it is enough to allow most of the PC configurations today to work flawlessly (you will need a FAT16/32 partition though to complete the installation – except if you are cool to mess up with 12+ floppy disks). There is an SBPro sound driver, 4 graphics drivers including nVidia chipsets (unsupported gfx chipsets will have to use a painfully super-slow VESA), all IDE hard drives and the SCSI ones that expose themselves to the BIOS are working, and 3 network card chipsets. PPP and modems are not supported and probably they never will, according to Kurt. 32 MB of RAM is more than enough for the OS itself, however if you are planning to do any kind of development, you will need at least 128 MB, as AtheOS VM and kernel scheduler can choke easily (eating up all your system’s resources with only resort to reset the PC) on anything less than 128 MB RAM in some ‘heavy’ GCC compilations. AtheOS’ swap support is disabled for now (there is one, but it does not work after it got broke after an AtheOS release 2 years ago).
Kurt does not accept code submissions for the crucial parts of AtheOS. AtheOS is solely his project, and the fact that it is licensed under the GPL does not make it immediately a ‘community’ project. Kurt accepts however source code for drivers or for some important bug fixes. You can always discuss the internals of the OS with Kurt or exchange opinions in design issues by using the develoepr’s mailing list, but that does not mean that your code will be accepted if you re-write something as critical as, let’s say, the VM.
Many do not understand this behavior, they cannot conceive the idea that an open source project can only be developed by a single man and lock the rest out. I personally understand Kurt, because I lived among people who are OS writters for a long time (and I even married one ;-), specifically, since 1995.
Writting a hobby operating system is all about a journey on gathering knowledge and having lots of fun in the process.
(late nights coding, lots of pizza, beer etc)
There is nothing more and nothing less into it. Hobby OS coders do not seek to overthrown Microsoft. They do not want to be the new Linus. They simply code to learn more and better themselves (which is proved by the fact that AtheOS has been re-writen in the past). If someone offers the code to you (‘ready-made spinach pie’ as we say in Greece), you learn nothing. If you just put together what different people have done at different times, it will result in confusion and bloatware, with no personal gain that fullfils the above ‘dogma’.
A lot of people are asking “why not use XFree?” and “why not port OpenTracker?”. The answer is because AtheOS features its own GUI (written from scratch with blood and tears), it does not need, in any way, XFree or anything similar. AtheOS GUI is C++ based, fully multithreaded and fully integrated to the rest of the system, things that XFree can not offer. Having XFree running in a rootless/server mode, side by side to the native GUI (the way it runs under MacOSX and QNX), is not a bad idea at all though. As for OpenTracker, we should not forget that OpenTracker is in some sense a ‘client’ of the BeOS filesystem, not just the Be Desktop. Kurt tried in the past looking into a port (after a hoard of AtheOS/BeOS users pressing the matter), but Tracker is so tied to the BeOS API & design, that the port has proved difficult. However, Kurt has already promised to update the kernel in order to introduce a full port of PostgreSQL 7.1 for AtheOS 0.3.8.
Personally, what I would like to see on AtheOS, is not applications. AtheOS is an interesting OS experiement in my book, so trying to port Mozilla or the Evolution email client does not really fulfill the goal of AtheOS, at least not at this point in time. Personally, I would like to see a jump to GCC 3.x which generates better code. Aterm fixes to support ncurses properly with full coloring. A better VM and kernel scheduler. Enable write-combine (MTRR support in other words) and double/back buffer everything, which can help increase considerably the speed of any 2D driver (including VESA) and offer a flicker free GUI. Support for NTFS or CD-ROM devices, as WindowsXP users already cannot install AtheOS without the use of a dozen of floppies. Also, another imperative feature request is the addition of a native debuger, as the only way to debug your applications on AtheOS today is… printf().
Another thing that I should mention and I find pretty funny, but also shows that lots of curious people love being ‘geeks’ and mess around with alternative OSes (which is a good thing for the OSNews business ;), is the fact that Kurt never advertised his OS beyond his personal web site. He never announced a new AtheOS version to the media or to newsgroups. The geeks found AtheOS, AtheOS never seek them. However, Kurt appreciates feedback and this is why he has put up the developer’s mailing list, plus, if you are a driver writter or you want to be one, here is your chance. AtheOS is a virgin land awaiting to be filled with new projects. Also, AtheOS definetely needs more GUI applications, so if you want to be the very first that will write/port an email client or a newsgroup client for AtheOS, here is your chance too.
So, for whom AtheOS is for? Despite its almost non-existant GUI application base, AtheOS is made in such a way that it is truly easy to use. However, there are not many applications so far to justify a full switch from a mainstream OS to AtheOS. I would highly recommend AtheOS to C/C++ developers (who could help grow the OS), but not to simple users yet. If you are geek enough though (like myself), and you have a small partition available, give it a go, try AtheOS today!
Additional Resources:
Kurt’s Interview on OSNews
Kurt’s Interview on Slashdot
Unoficial AtheOS Docs & FAQ
so if you want to be the very first that will write/port an email client or a newsgroup client for AtheOS, here is your chance too.
http://www.shagged.org/~vanders/mercury.shtml
Just thought I’d mention it Nice review Euginia, and some nice screen shots too!
Yes, I know about Mercury, but hey… 😉
And it is funny that when you posted this comment, I was thinking of you. I was thinking “I told Vanders that the review will be up at 6 PM, his time… Let’s see, what’s the time right now? Was I on time?”
So, Vanders, when will we see a beta of Mercury?
why not port OpenTracker?
!
There was a section in there as to the reasons why OpenTracker hasn’t been ported.
I was punctual, I wouldn’t miss a review of AtheOS now!
Mercury should reach Version 0.1 by Christmas, as I do have some other comitments (I won’t repeat them here, those “in the know” know what they are), and the code is coming along nicely
wow, what a review, I am really impressed, yes, it is easy to install, but it would be something like FreeBSD installer.
I’d really like to know why AtheOS’s on-screen text looks SO MUCH BETTER than the text on my Linux system (Mandrake 8.1, running KDE, with anti-aliasing on). Especially monospaced fonts… Konsole doesn’t seem to agree with my theory that Andale Mono is a monospaced font. Stupid X11…
– chrish
/me waits for an X11 fan to tell me _I’m_ stupid for not “simply” hax0ring some magic config file hidden somewhere on my system
“You’re stupid for not simply hax0ring some magic config file hidden somewhere on your system, Chris.”
Damned if I know. Whenever I run a window manager that enables anti-aliased fonts horrible things happen to my fonts–all the settings that I had for KDE or XFce seem to change, or they say they’re one font but are displaying another. Some of the fonts stop working. And when I do seem to get things working, I either can’t honestly tell a difference or the text gets crappy, depending on the application. This was particularly bad in KDE.
Good Review Eugenia. Captured the beauty of AtheOS . Hopefully this will bring more programmers to AtheOS. And any non c++ programmers out there, if you want to get your feet wet with c++ programming AtheOS is the place to do it.
“I’d really like to know why AtheOS’s on-screen text looks SO MUCH BETTER than the text on my Linux system”
Simply because X11 was never meant to do modern font management and a number of hacks need to be applied for things to work propery. In a perfect world, the hacks work, but the world of Linux and the things that run under it is no perfect world.
Since KDE2 was released, many of the KDE folk have been striving to make text work better. Fortunately they’ve made improvements … but X11 is still there and will continue to make life difficult.
I just pray for the BlueOS developers … they’re planning on using X11, am I correct?
There are some acknowledge font problems with KDE and anti-aliased fonts. This should be fixed in KDE 3.0 (specificially, the problem is with Qt and Qt 3.0 fixes it). Until then, there’s tons of workarounds. Just search on google for ‘Konsole AA fonts’. One thing that has worked for me is this:
1) Assuming you have your truetype fonts (I suggest Microsoft’s webfonts) in /usr/X11R6/lib/X11/fonts/ttf, cd to that directory.
2) Open the file called fonts.alias (if it isn’t there create it.)
3) Insert an alias between the standard X fixed font (9×15) and you’re choice of fonts. If you don’t know the X name of you’re particular font, open up the fonts.dir file in the folder containing the font (for example /usr/X11R6/lib/X11/fonts/ttf/fonts.dir). Now do a search for the name of the font. There should be several lines that begin with a foundry name (such as monotype or adobe) a dash, and then the font name (“Courier New”). Search for the particular line that contains the face you want (medium-r-normal for regular, medium-i-normal for italic, bold-i-normal for bold, etc). This line (minus the name of the font file at the beginning) is the X font name.
For example, I use the monotype Courier New font (from MS webfonts) so I have a line in fonts.alias that reads:
9×15 -monotype-“Courier New”-medium-r-normal–0-0-0-0-m-iso8859-1. `
Then open Konsole and set the standard font to “Normal”. Reload Konqueror and everything should be fixed. If you get weird spacing on the font, the font file you’re using is stupid and doesn’t properly identify itself as monospaced. In that case, read the faq at:
http://www.google.com/search?q=cache:ebhO3FQ5Y_4:www.dexterslabs.co…
BlueOS will only use XF temporary until they’ve written their own GUI
Perhaps not really for me (yet), as I am only semi-geek. Might give installing it a try some time, though. Looks like, in time, this might turn into a nice replacement for my BeOS partition, which, by that time, will probably have become obsolete (apart from some sentimental value, of course 🙂
I think you can count on BeOS to live on…
Look in the interviews archive here osn, and read the “BlueOS” and “OpenBeOS” interview
I’m surprised that Kurt hasn’t done at least an IDE driver.
Kurt,
A PIO driver is very easy to write. The core of my IDE driver in petros is very simple – the IDE controller is programmed in the context of the thread that’s executing and then all the ISR does is set a semaphore to let the thread know to continue at strategic points. The whole lot is wrapped in a kernel mutex to stop the pio calls getting out of sequence. Granted it doesn’t do fancy stuff like queuing requests or sorting by track number, but these type of things can be done by a higher layer in the kernel. If you’re simply doing bios calls it really wouldn’t take much more work to get native IDE into the kernel. The only other hassle you might have is dealing with sector translation and othe bios extension stuff. We have a headache with partition table issues when dos extenders or sector translation is active.
An ATAPI driver is a minor abstraction of the IDE driver – not much more work there except to write the CDROM file system drivers – but I presume you already have that bit or are already working on it.
For FDC, it’s a bit trickier – you have to manage DMA (watch out for 16 meg limitations on legacy hardware) and I have found that programming the controller is much more finicky (need to refer to data sheets when writing). However, I did manage to get it working quite well without blocking the entire system. You can read the floppy to your heart’s content without locking up other parts of the system.
Just a few handy hints
P
P.S. with the collection of talent that shows up at OSnews, it would be cool for us all to pool our knowledge regarding devices, controllers, OS techniques etc and put a lot of the stuff together in one place. I spend days digging up stuff like datasheets and specs like IDE etc.
>with the collection of talent that shows up at OSnews…and put a lot of the stuff together in one place
A lot of people have emailed us and asked for an article that gives ‘advices’ on how to write an OS in general. I have asked a few people to participate in such an article (including Jbq), but they all claim to be extremely busy these days…
I’ll see what I can do though.
P_developer, I think I will take a look at your driver then. I have been trying to get the current (old driver) updated to run under 0.3.6 without major DMA errors. I have been slowly backing off going for a complete driver and just getting PIO working.
<plug>http://www.0reality.com>Zer0 is a little AtheOS News and Forum site I have put up and am slowly getting time to put into. (Do i work on the site or the driver… ahh yes free time goes so quick)
Joe
PS Thanks for the tips!
I (and others) are hoping Zer0 Reality is used as a place off the mailing to discuss user related topics amoung other things. The Mailing List was getting about 100 msgs every few days or so, a tad too many imho. If anyone reading goes to install AtheOS and runs into a problem feel free to ask questions, we got answers!
Joe
Ah after looking at your site I see its a closed source OS.
Great review.
I agree with you that AtheOS does not look that great GUI wise so here’s an idea:
Let people submit their own made up GUI screenshots, make something cool and maybe Kurt will like it?
Kinda like Linux themes but a new GUI for AtheOS, or at least some new ideas?
Thanks!
email me & I’ll send you some pseudo code.
P
Windows can already be changed using plugin Window Decorators; the screenshots show four of the available decorators (Drow, YNOP, MacDady & BeIsh) Kurt will probably extend this interface to allow the plugin to draw all of the GUI widgets, including buttons & scrollbars. It promises to be faster than a skins engine, and would offer a fairly flexible GUI.
Eugenia wrote: “A lot of people have emailed us and asked for an article that gives ‘advices’ on how to write an OS in general.”
Try : http://tunes.org/Review/OSes.html
for a few pointers to some usable FAQS.
Then there are the books like Tanenbaum’s, Villani’s, Brinch Hansen’s, etc.
Eugenia wrote: “A lot of people have emailed us and asked for an article that gives ‘advices’ on how to write an OS in general.”
hmm in a few weeks, a new version of the OS-FAQ will be up! so look out for it in a few weeks..
http://www.mega-tokyo.com/os
-stu
About the install issue is it possible to get Atheos as an imagefile
write it to zipdisk (dd) and boot from that ?
Hmm, and win2000 takes 4 boot disks to install.
>[/i]Hmm, and win2000 takes 4 boot disks to install.[/i]
You have misanderstood. To install AtheOS, you need 3 bootable floppies, *PLUS* a 20 MB tarball which has to reside in a FAT partition. If you don’t have a FAT partition, you have to put that tarball spawned across 12-13 floppy disks. So, if you don’t have a FAT partition around, you will need almost 16 floppy disks to install AtheOS.
A lot of people have been asking about learning to write an OS. I found myself with exactly the same problem a few months ago, and I’ve found some helpful stuff in addition to the links already mentioned. I suggest you go in this order, because you kinda get led nicely from one to the other.
1) Modern Operating Systems, by Andrew Tannebaum.
2) http://ojos.sourceforge.net/tutorial1.html
3) http://www.execpc.com/~geezer/os/
4) http://www.acm.uiuc.edu/sigops/roll_your_own/
6) http://www.nondot.org/sabre/os
7) Understanding the Linux Kernel: From I/O Ports to Interrupts, Orielly.
8) http://citeseer.nj.nec.com/cranor99uvm.html
9) /usr/src/linux
After that, look around at various articles and research papers on the internet. In particular, look for stuff about Solaris, since they tend to document their additions to UNIX really well. Unlike most people, I don’t reccomend just going out there and reading code. You’ll quickly get lost and intimidated. Instead, read some of the papers and books first so you have a high level overview of how everything works, then read the code once you’re comfortable with the concepts.
I have to say that the GUI looks so ugly. There are so many ways to make them look decent and nice even with simply drawings. I just don’t get it. Look at http://www.stardock.com, http://www.themes.org, http://www.kde-look.org for some ideas.
The gui is barely started yet.
look at http://www.intercircle.net/beos for a nice looking screenidea.
But seriously, I think opentracker should be ported. It *does* need it.
Open Tracker should not be ported. Neither should KDE or GNOME… plus, OT would be very hard to port from what i’ve heard…
> You have misanderstood. To install AtheOS, you need 3 bootable floppies, *PLUS* a > 20 MB tarball which has to reside in a FAT partition.
I understand, just a cheap shot at windows. (It really isn’t much harder to install, as long as you have that fat partition.)
By the way, I already have 0.36 which I have used slightly. My question is what are the improvement in 0.37 over 0.36.?
>My question is what are the improvement in 0.37 over 0.36.?
There is a detailed Changelog for that on the atheos web site. Mostly bug fixes though.
Matt K wrote:
>By the way, I already have 0.36 which I have used slightly. My question is >what are the improvement in 0.37 over 0.36.?
Taken from changes.txt. Sorry it is so long.
Since 0.3.6:
*MISC*
o When the “Popup selected windows” option is turned on or the <CTRL>
qualifier is held while selecting a window the window will now be
moved to front no mather where in the window you click. In previous
windows only the window boarders would bring it to front. When
“Popup selected windows” is not selected you will still have to
double-click the window boarders or click the “toggle depth”
boarder-button to bring a window to front. This is to make it
possible to double-click controls inside a window without moving
it to front.
o More (and more human readable) memory usage info from the “sysinfo”
utility. Also added a -l option that will make it enter a loop that
repeadatly clear the terminal and refresh the system information much
like the “top” utility.
o Changed the window size limits to mean right/bottom border rather than
with/height in pixels to make it more consistent with the rest of the API.
o Major optimizations in all image translator plugin. Greatly improves the
speed and responsiveness of ABrowse during page loading.
o Optimized the image loader in ABrowse further speeding up page loading.
o Windows now get selected no mather what mouse button was used (previous
versions only selected when clicking with the left button). This solves
a few problems for aplications using right-click popup menues.
o Various optimizations in the TCP/IP stack. Both to reduce the CPU usage
but most importantly there has been a lot of tuning of the timer code
who dramatically increase the performance on high-latency connections.
o Changed/fixed the locking cheeme in the ELF executable/DLL loader to
improve the concurrency of the loader.
o New system for handling installation of UNIX/POSIX command line
applications and library packages ported to AtheOS.
In UNIX most binaries are installed into /usr/bin/* or /usr/local/bin/*
so the shell have an easy job finding them. Similarily all libraries
are installed into /usr/lib/* or /usr/local/lib/* and the same goes
for header-files, man-pages, info-files, etc etc. The problem with
this approach is that it becomes very hard to remove one “package”
since it has been blended in with several dozen’s other packages.
In AtheOS each package are installed into a separate directory
containing it’s own bin, lib, man, etc etc directories. This makes
it easy to maintain a package (unpack it and it’s installed, delete
the directory and it’s uninstalled) but it makes it hard for the
shell to find all the executables since they are spread over a
lot of directories. In earlier versions this was handled by a
script that updated the various search path environment variables
to include all the application directories. This was not an optimal
solution since the environment was growing rather large and searching
the long search-paths had a bit higher overhead than just looking in
a couple of directories. It also required all shells to be restarted
in order to update their internal environment.
The new system works by having a separate directory (/atheos/autolnk)
with bin, lib, man, etc etc subdirectories inside that the “package
manager” (pkgmanager) will fill with symlinks pointing into the
corresponding directory inside all the package directories. So
/atheos/autolnk/bin/ will contain symlinks that point into
/usr/gcc/bin/*, /usr/make/bin/* and so on. Thus the only entry that
need to be in the $PATH environment variable is /atheos/autolnk/bin/.
pkgmanager can also search through /atheos/autolnk/* and remove all
symlinks pointing to a given package to clean up before uninstalling it.
If the “package” need to do some additional configuration it can
include a “pkgsetup.sh” script or executable at the top-level of the
package directory and pkgmanager will execute this script after
building the symlink mirros. Similarily it can include a “pkgcleanup.sh”
script or executable that will be executed after the symlinks have
been removed again during uninstall.
o The buffers used by the kernel debugger and for kernel debugging output
has been redesigned to much better utilize the buffer-space. This means
that normally all the kernel-output generated during bootup will make
it to the /var/log/kernel.log file and that it is less likely that
log-data will be lost during extream load or when large amounts of
output is generated.
o More API documentation.
*NEW FEATURES*
o Added a GetTabCount() member to os::TabView.
o Support for mouse-wheel. Catalin Climov <[email protected]> submitted
a patch to the PS2 driver adding IntelliMouse wheel support.
o Generic support for mouse-wheel in the GUI toolkit and specific support
in various GUI controls like os::Scrollbar, os::Spinner, os::TextView,
and os::ListView.
o Support for mouse-wheel in ABrowse and ATerm.
o Support for non-square views and windows by allowing applications to
specify an optional clipping region that will be used to define the shape
of the view or window. Still to low performance to be usefull for things
like large round windows but can be used to make iregulary shaped views.
o New os::MenuItem derved class that render a separator line.
o New members in os::TextView for deleting ranges of text and inserting
text at a specific position without “manually” moving the cursor and
selecting ranges.
o Support for adding restrictive clipping regions to views. The application
can now pass a clipping region to a view to restrict what areas that
will be affected by the various rendering commands. This can be used to
reduce flickering and in some cases to speed up complex rendering operations.
It can also be useful to clip text rendering to a predefined area since
it is hard to predict how much space a string will cover on-screen.
o New API for getting a file-descriptor to any of the ELF images loaded
by a process aswell as to the directory where the executable was loaded
from. This makes it very easy to get to the image files to load resources
from them and it also makes it easy to make an application “position
indepentent” since it is possible to open data files with paths that
are relative to the directory where the executable is located. Now
applications that need extra data files can store the executable and
all the data files in a directory or directory-tree and the application
can find it’s data files no matter where the user move the directory
since it will always open the data files relative to where the executable
are.
o A new function named get_image_id() that returns the image-ID of the
DLL or executable containing the calling function. This is ueseful
in conjunction with the API for getting a file-descriptor for a
image file. This makes it possible for a DLL to easily find it’s
own DLL ID in order to load resources embedded in the DLL. The
function will use the address of the caller to determine which
image it lives in.
o New constructors and SetTo() members in the various highlevel
filesystem classes that accept open file descriptors.
o The various highlevel filesystem classes will now automatically
expand paths starting with “~/” with the current users home
directory and will open paths starting with “^/” relative the
the directory where the applications executable is located
independent of the applications current-working-directory.
o New classes for reading and creating resources within executable
and DLL images aswell as a command line tool for adding, listing,
and extracting resources embedded in executables and DLL’s.
o New class for parsing command line options. The class greatly
simplify parsing command line options in CLI programs. It can
also help the application printing a “–help” screen by automatically
generating a help-screen for the command-line option by intelligently
formatting the page to be easily readable with the current terminal
width.
o New regular expression searching class. The class help you to
do regexp searches and matches on strings and support extracting
sub-expression results in the form of sub-strings or by using
the resulting substrings to expand a template string.
o Support for TCP keepalive packages in the TCP/IP stack. Earlier
versions didn’t send or replied to keepalive packages so idle
connections used to be cut by the peer after a couple of hours.
o Support for disabling kernel debug output to a serial port. It
is now possible to disable the serial output entirely by setting
the baud rate to 0. It is also possible to change the baud rate
and serial-port used at run-time with kernel-debugger commands
from a local debug terminal. Note that the default baudrate has
now been changed from 115200 to 0 so the serial output is disabled
by default. To enable it again you can add “debug_baudrate=115200”
to the kernel-line in “/boot/boot/grub/menu.lst” (or to temporarily
enable it you can run the kernel-debugger localy with “dbterm -l”
and set the baudrate with the “dbspeed” command).
*BUG FIXES*
o Fixed a render bug in the CPU monitor.
o Fixed a bug in os::Font causing the size to be wrong when set to 10.0.
o Fixed a bug in os::TextView causing glyphs to be rendered to high
so the top of some glyphs was cut in some fonts.
o Fixed a bug in os::TabView::DeleteTab(). When deleting the currently
selected “tab” the view associated with the new selection sometimes
got hidden.
o Removed a memory leak from the os::TextView class.
o Fixed a bug in the handling of double precision floating point values
in the os::Variant class. Older versions rounded all double values to
it’s integer value before returning it.
o Fixed a bug in the PS2 mouse driver that often caused a total lockup
of the GUI.
o Removed some memory leaks in the GIF and JPEG image translator aswell
as the image loader in ABrowse.
o Fixed a crash-bug in the ABrowse image scaling.
o Fixed a bug in the history-system in ABrowse. The history was not properly
updated when following links to anchor points within the same page.
o Fixed some bugs in the ABrowse HTTP loader that caused premature aborting
of a page-loading to leak memory and mix the content of the aborted page
and the next loaded page.
Thanks a lot. There appear to be some important fixes in 0.3.7, I’ll be sure to update soon.
Atheos seems like it has a lot of potential, it’s great to hear more about it. I agree with idea Kurt’s to do all the developement work and decision making of the core OS and GUI himself. Perhaps that and determination are the only way to finally make a good and consistent OS.
About writing your own OS – it is easy to do a “pseudocode write” as it were, of an operating system, without having much idea of what the actual machine (CPU, memory, bus, disks, and other peripherals) behaves. I’ve done it myself. I have a book called “The Design of Operating Systems for Small Computer Systems” by Stephen H. Kaisler, which does precisely that.
To understand what the machine is actually doing, you have to read books like “Computer Architecture: A Quantitive Approach” by Hennesy and Patterson, “The Intel Microprocessors” by Brey, etc. It’s a lot of hard work, but that’s part of the fun. And all worth it in the end.
Hi!
Pretty interesting intervies: I might try installing AtheOS sometine: for now, being linux newbie, lemme try learning a few things:)