Nano OSAn object oriented OS written in C++ and assembly.
How toI recommend trying out the floppy disk image(very recent) first. Please download the disk image. use qemu or bochs to boot the image.
After you satisfied your self please join the project and checkout the source. Play around and understand what is happening where. then discuss here and try to implement small chunks and small functionality.
I will suggest try out modifying the shell code to add few more commands.
Next modify IStream subsystem to handle int, pointer, HEX etc...
Present FeaturesMulti boot compliant (tested with GRUB) Hope it will work with syslinux too C++ minimal run time is present written as object oriented kernel 32-bit protected mode Memory manager for physical memory only CPU detection, Memory detection and IDE hard disk detection IDE hard disk read is possible Partion table parsing is in-built to IDE code FAT16 Partitions are recognised now
To DoMemory manager will be re-written using paging(first priority) Chris Gheezee's Malloc implementation based on heap implemented. Multi tasking (second priority) application loading atleast elf and coff binary.(third priority) I am planning to create a driver template so that it will be easy to write drivers floppy driver IDE driver ( See changelog bellow) network stack (might be mu-tcp/ip) ether net driver for rtl series and NE2k NFS client side (too ambitious ) Modify IStream and OStream for better functionality. specially implemet getstring() in cin Filesystem atleast FAT-16 will be nice. (any help on this with reference to the present code will be highly appreciated) Somany more Note Help me to grow this embryo
remember this is not going to compete with any other OS
This is purely for Experimentation and Learning, Covered under GNU GPL-V2
if you find this interesting and want to contribute, I will be happy to accept your code
change log9th december 2008: Kmalloc kfre krealloc implementation based on Chris gheeze's Heap based first fit allocator
18th december 2008: rudimentary dma and fdc code ported.
5th January 2009 : IDE hard disk driver is implmented. ( Only Reading) This works under BOCHS but not Under Qemu, I don't know Why???
7th January 2009 : IDE driver in read_sector a minor bug is fixed, Partition Scanning is implemented.
13th January 2009 : IDE driver now works fine under BOCHS and qemu. cpuinfo now displays properly.
9th February 209 : A rudimentary FAT16 is implmented, It now only be used to check if the Kernel recognizes FAT16 partition or not. The Image Works with qemu. For details how to PLease Check the Wiki.
11th March 2010 : Few modification to malloc family in kheap.cpp Initial PCI code but not working, initial tasking code not tested, Use of class template for singleton class. multiboot class is derived from singleton template.
20th March 2010 : Multitasking of 4 task for done. This is just to test the context switch is working correctly. :) enjoy.