Hello all. I haven't made a blog post in quite a while since I've been very busy recently, but luckily things are back to normal and hopefully progress can resume at its original pace.
I've drafted a roadmap of all the drivers that I think a functional operating system needs, and marked which ones are already usable.
PCI - Usable
USB - Usable
Human interface devices
PS2 - Usable
USB mouse/keyboard - Usable
ATA - Usable
ATAPI (CD/DVD drives) - Read only; does not yet support ejecting discs
SATA - Usable
NVMe - Usable
USB mass storage devices - Usable
EsFS - Essence's custom filesystem
ISO9660 - Usable
FAT12 - Read only
FAT32 - Read only
NTFS - Read only
ext2 - Read only
Intel HD Audio - Output to speakers only
Graphics (these are too complex to write from scratch, will need to be ported)
VGA w/ software rendering - Usable
BIOS mode setting w/ software rendering - Usable
UEFI mode setting w/ software rendering - Usable
Nvidia - Started port of kernel platform layer
Network cards - i8254x working
Protocol stack - Started basic implementation
AMD64 - The currently only available platform; SMP working
x86 - Maybe??
ACPI - Finished port of ACPICA but no power management features
Raspberry Pi, Arduino, etc.
Currently I think the highest priority are SATA, ATAPI, USB mouse/keyboard and USB mass storage devices. These shouldn't be too
difficult to implement.
We also need to work out a solution for graphics and network cards. I know relatively little about these topics, but I presume that these drivers will have to be ported from Linux. If you have experience working with the Linux graphics or networking stacks, your help will be much appreciated!
It'd also be nice to have audio drivers, a few more filesystems, and support for other platforms like ARM, but these are low priority.
I'm now working on a rewrite of all the userland code (I have gained a lot of experience since writing the original code), so I don't have much time to work on drivers. This means I really need contributions from other people to help develop Essence. All the drivers I've separated from the main kernel unity build are in this folder https://bitbucket.org/nakst/essence/src/master/drivers/
. These should serve a good introduction into working with the kernel and writing drivers for it.
I highly recommend you join the #essence discord channel on the handmade network guild
if you are interested in contributing to the project.