My First Major Kernel: LowEST Kernel, Level 1 OS
Download here: LowEST_Kern_2012-07-03.zip
This is the first kernel I have managed to turn into a minimally useful program.And it is 100% Public Domain.
I consider it as the Level 1
of an operating system, and the simplest yet useable you will easily find around.
What is different about it from a regular tutorial is that it consolidates several features that would not be connected together or useable in such a single-topic-centered tutorial.Although I still need to write documentation for every single algorithm and trick used, but I have such documentation partially written already, and I just need to make a list of tutorials to explain how this kernel works.
- Can boot from floppy (FAT12) or from a CD-ROM emulating a floppy with El Torito; you could add your own booting method if you know how
- It is compiled as 32-bit protected mode.
- Does not use paging.
- Can read the root directory of a floppy (only used by the application loader code by now).
- Can read and load raw binaries with a custom header at run time, which allows to make many small tests dynamically without rebooting.
- Binaries can "import" kernel functions.
- Has a keyboard driver.
- Has a command line that accepts commands such as programs that use command line parameters (at a lower level than C's main).
- The keyboard input for the command line can change LED state, and can use Shift to switch between uppercase/lowercase and symbols or numbers.
- First attempts to introduce all kinds of standards, such as calling conventions to make code more readily compatible for using standard compilers and languages such as GCC interchangeably with pure assembly.
As ýou can see, it makes for sort of a pre-alpha DOS-like operating system with modern capabilities and resources at its reach. It is ideal for a first learning aid for dynamic loading of programs (with static memory), a basic methodology of making use of kernel library functions, interpreting a command line.
And more importantly, it is a DOS-like system that is tiny, minimally useable, easy to understand, without features that aren't strictly required for it to work, and because of it, can allow a developer to also create simple test applications, and eventually escalate this kernel/system with more complete features, leaving footsteps of development with extremely well-defined complexity levels, up to a full-featured system, that is much more explained than virtually any other (non-educationally yet real-world, oriented) operating system in existence.
Obviously there is a lot to do yet, so much more. But this should be a good start, and in many senses, more beneficial than just using other low-level test system such as MS-DOS or FreeDOS, because it is easier to understand, and from here we can improve a lot if we are smart.