A Floppy Driver is born

So when I discussed checking out Bran's Kernel Development Tutorial apparently I wasn't kidding.  I have now compiled my own kernel in C (and it actually works).  As kernels go I suspect that it is unique, because I implemented a floppy disk driver before a keyboard driver :-)  But hey, this is my OS so I can do whatever I like...  Here it is in action:

My OS kernel with floppy driver

So far, all it does is boot up, then find the first floppy disk and do a hex dump of the disk contents to the screen.  But there is a *lot* of coding needed to make that work!  At kernel level you have responsibility for stuff like turning the disk motor on and off and moving the drive heads to the right track.  Plus the command set for accessing a floppy drive is pretty *nasty*.  Also, I have had to remind myself all about tracks, heads and sectors.

The information and examples shown on the OSDEV tutorials have been essential reading.  Without all their examples I would not have gotten this to work.  I have tried not to just copy & paste somebody else's code, I have tried to write this in my own style - but credit has to go to all those people involved in the OSDEV tutorials.

My code is only designed to work with 3.5" drives (although it has not been near a real disk yet) I have only used it in VirtualBox.  It does not seem to work in Bochs for some reason (I don't know why yet).

So anyway... this has been a challenge, and I'm very pleased that I've gotten something that actually works.  I guess the next step is to begin writing FAT12 support, so I can get some proper file access.