17 November 2003 (Revised 2 December 2003) Read this first I expect that somebody who's just discovered my website will have a few questions.
• What is Karig? What is Karig? Karig will eventually be a simple operating system for Pentium computers (or at least my Pentium computer). Right now, it's simply my hobby project. Where did you get the name "Karig"? The word "karig" is a Dutch word meaning "small" or "scanty," which seems to define the OS I want to build — the OS will be able to do only a small number of things, so its feature set will be "scanty." I'm not Dutch, and I don't speak Dutch, but I couldn't figure out what I should call my OS, so I decided to search through a few language dictionaries on the Net for a word meaning "small." (Update: On this thread at Mega-Tokyo.com, Candy informs me that the word "karig" is used for, say, insufficient supplies, not small objects. In Dutch, you'd say "kleine tafel" for "small table", but you'd say "karige maaltijd" for "meager meal." This still goes along with my attitude about Karig — it won't be enough for many would-be users, but this is by design.) How far along are you? I don't have any versions of Karig to download yet. I'm in the play-with-the-hardware stage; I've been teaching myself how things work. I write little experimental programs that get loaded and run by a boot sector. Each "experiment" does something in particular (such as reading from the keyboard or setting a graphic display mode) and proves that it was done by printing something on the screen. Eventually I will combine the code from these experiments into a first version of Karig. So I'm starting out by writing low-level routines to deal with the keyboard, the disks, and the screen first. I find that I'm getting much further along by approaching things this way than by trying to start with an overarching vision and working my way down to particulars. What programming languages are you using? I'm using only x86 assembly language right now. Eventually I'll want to build a colorForth compiler within Karig, so that I can add to Karig from within Karig itself, instead of from within Windows. What will distinguish Karig from other OSes? Karig will be simple. I am not planning on making Karig general enough to run on everybody's PC or to be suitable for all uses. I want to keep Karig simple enough that I can understand all of it from top to bottom. That means that if I have a problem and a choice between using the commonplace solution and using a simpler solution, I'll pick the simpler solution. Specifically, Karig will lack some of the features that other OSes have. Karig will not offer memory protection, pre-emptive multitasking, filesystem support, or support for more than a few hardware devices; each of these complicates the OS, and it is possible to have a working system without any of these. Karig will be a toy — something to play around with, not something for serious work. The world already has Windows, Linux, and FreeBSD for serious work. Why are you doing this? I'm working on code for Karig because it's an enjoyable way to spend my free time. I'm not working on creating something for others to use. Others might find Karig useful, but I'm writing it for myself. Why publish this on the Web? I don't really care if I'm the only person who actually uses Karig, so why would I publish this information on the Web? Why go to all this trouble, setting up the website, paying a monthly fee to keep it up, and adding new pages to it regularly? Because there are many people on the Web who are also interested in creating a home-brewed operating system. I'm publishing my essays and my source code to help other OS hobbyists to solve a programming problem or to give them ideas for their own operating systems. For whom is this website intended? I set up this website to share information with other OS hobbyists — with people who either want to write their own small operating systems in their spare time, or like to read about how operating systems work. Because of this, I won't always define a term that an OS hobbyist might be expected to know, or the definition that I do provide will be more of a reminder than a real explanation. Most of my code is written in Intel assembly language, so you'll need to know that language if you want to follow my code examples in the text. Who designed this site? I did. I created the graphics myself in MS Paint, and I used Ulead SmartSaver to make the files as small as possible. I created the cascading style sheet in plain old NoteTab Pro. I did get inspiration for the design from other websites, such as Little Green Footballs. |