So yeah, it has been a while since the last update. I don't feel like writing a lengthy post like last time, so I'm just going to list the progress since the last post (on January 27th!).
- I switched from C to C++. While writing my device driver code I noticed I was thinking object-oriented, but I could not actually code object-oriented. The source has not been fully migrated yet, as there are (of course) some problems with this. I also discovered I do not know much about the internals of C++, so it's a nice learning experience.
- Dropped floppy support. Damn those things and damn FDCs.
- Added hard disk support by PIO ATA. Maybe I will switch to DMA mode some day, but for now PIO is good enough.
- Dropped FAT12 support and switched to FAT16. Since I dropped floppy support and switching to hard disks, I did not see the point of such small partitions, and FAT12 and FAT16 are quite similar.
- Added a VFS (Virtual File System). It's now possible to open files, print directory listings, etc. All independent of the underlying file system of course 😊.
- Preliminary kernel API using soft interrupts (0x80). Had a fight with interrupt handling while in a kernel API call, only had to enable interrupts using STI... 😊
- PCI enumeration code. Although it seems like it does not really enumerate everything, it misses the NE2000 ethernet card in Bochs. The enumeration doesn't do anything other than print it on screen yet.
- Various bugfixes & improvements like extending the heap stats structure.
I'm trying to implement a LinkedList<T> class. It's not exactly going according to plan...