Here is a kernel (Aksel) which I saved at diffferent stages of the development so that it can be easily used as a learning tool. It can be used with GRUB or on its own for stages where its size is less the 64K as I did not work around to solve the fact that you cannot access more than 1MB+64kB from memory in Real Mode. I used GRUB instead.

Aksel uses code from many sources hence have many different programming styles. The commands implemented so far are: cls, mem, date, time, esp (shows stack pointer), and test (used to test malloc). Of course previous stages do not have all the commands implemented. It only handles lower case and numbers, no key+shiftkey has been implemented yet.

Aksel is compiled with DJGCC and uses MTOOLS to build the image for BOCHS. This is all done within the Makefile.

The first step is the boot loader + small kernel which source and image can be found here.

The later stages are the newlib integration stages. The newlib is only partly ported, ie I ported only the functions which belong the the C Standard Library. You can find the various stages of the integration here:

before newlib

string integrated

malloc working

stdlib integrated

stdio integrated

time integrated

math integrated (newlib porting completed)

Then I have added prints messages to UART COM1 every time you print a message it will send that message to COM1 too. Source here.

command interface improved (for size)

There still a lot of work to do like keyboard handling of all the keys, more interrupts, and of course a file system. At the moment the system calls are empty functions which do nothing.