As Tom says, what you are really asking about it how to manipulate - and, possibly, how to design - a file system. This in turn breaks down to three parts: the low-level disk drivers, the logical file system interface, and last, the actual file system structure.
On the low level, you need to have a solid floppy disk driver written before you can seriously consider the file system itself. Assuming you're starting with a floppy disk, the basic functions needed are
- engage drive x
- seek to sector n on drive x
- verify sector n on drive x as good
- format sector n on drive x
- read sector n on drive x
- write sector n on drive x, and
- reset the disk controller
This by itself is a major undertaking, but not an overwhelming one. Floppy disks and hard disks each have their own peculiarities; for example, in ever system I've seen, legacy DMA channel 2 is used the floppy controller to transfer sector data to memory (it is supposed to be possible to write PIO floppy drivers, but I've never seen one that worked), while hard disks require you to keep track of partitions as well as physical disks.
My suggestion is to start by writing some simple, self-booting programs (load them the same way as you do your existing kernel - or simply add them to the kernel itself, as a hack while developing the system) which act as minimal disk drivers, and test it out on scratch disks. Practice at reading and writing sectors, and perhaps write a simple sector dump/editor utility. When you are sure your code works correctly and safely,
throw it away and write it over, as a driver for your kernel. Work on floppies first, and only when you have those down move on to hard disks, as the HDs are more complicated to work with.
For documentation on writing the drivers,
IPHB has excellent coverage on programming the disk controllers, and various tutorials are available at
OSRC and similar locations.
Once you have the disk drivers written (and when you are confident that, when it becomes necessary - and it will - you can rewrite them to fit your overall driver system), you need to use them to write the FS. However, you should first give some consideration to how your system is going to interface with it - and in particular how to make the disks look alike even when the use different physical file systems. This is what is under Linux is called the Virtual File System (I cannot recall the term used by Win2K offhand), and it is important in that it means that you aren't tied to a particular implementation. The usual abstraction under Unix and Windows is of a stream of bytes, though both also support 'block I/O' (basically, an abstraction of the sectors/clusters) as well. How this will work wil be up to you, but you should at least consider the issue before actually implement a working FS, or you could paint yourself into a corner.