It may have taken a little longer than I would have initially liked, but I’m pleased to announce that, as of this evening, ArcanOS has had its first milestone release — FOOL. As I have mentioned in the ArcanOS wiki on Google Code, I think version numbers are pretty arbitrary, so I have instead opted to make milestone releases and name them after the trump cards in a tarot deck. The goals for FOOL are pretty apt for its name. In a tarot deck, “the fool” is often depicted as a young man blissfully stepping off a cliff. The goals for this release were to basically lay the groundwork for getting to the “real work.” This meant having a coherent build process and test/debugging platform and developing a bootloader, rudimentary kernel, basic debugging tools (like logging), exception handlers, and at least one interrupt handler. Having all these basic pieces in place means that I have something stable I can use for future development.
Currently, ArcanOS is little more than some initialization code and a spinlock. There is a basic handler for the keyboard interrupt, but that’s it. There’s very little to try out, as there’s no user-space and thus no programs written for it. Still, I’m pretty pleased with it. It’s the first personal project I’ve taken on since 2001, and most personal open-source projects don’t even make it to their first milestone release.
The next release will be ArcanOS MAGUS. I’m currently scoping out my goals for it. I know I want to move the memory model to a flat, paged model. This will affect multiple parts of the code base because it’ll mean that I will be able to stop adjusting for the segmentation offset whenever I need a linear or physical address. I suspect this alone will make paging the major effort, but I want to do some other things that will keep moving things forward. After all, having an environment for user processes is the point at which things get really fun.
As I mention in the ArcanOS notes, I owe a debt of gratitude to Dr. Lorenzo Alvisi as well as the xv6 project over at MIT. xv6, in an earlier iteration, was known as JOS, which Dr. Alvisi used to produce a series of operating systems lab exercises for his operating system courses. ArcanOS started out as one of those lab exercises, and though it has changed very significantly already, it still bears much of the original bootloader code.