## What do I need to do? - Unit testing (https://wiki.osdev.org/Unit_Testing) (https://wiki.osdev.org/Troubleshooting#Showing_the_stack_content) lets implmeent some better testing functions aswell - Paging & virtual memory - Get GRUB to show memory map - DONE - Write a page allocator - DONE - Setup paging - Setup virtual memory - Setup higher half kernel - Heap allocator (malloc) - after this, implment some data structures? cleanup queue? After the above is done, i want to clean up the code and restructure some stuff clean up the headers so that we're not exposing kernel functions to the entire c library and also only make required functions be exposed to the header Drivers: PIC - Done PIT - Done - Need sleep and timers implemented, ACPI can help with this - Lets also maybe set up a hardware abstraction for timing interfaces? ACPI (use ACPICA?) PCI, PCIE (i think qemue and bochs dont have legacy PCI, so lets try for PCIE) PS/2 controller Proper KEYB driver From here, determine whats needed next for pushing into userspace. Ideally I would like a shell, and then create some essential userspace posix tools (gnutils?) POSIX compliant? ### Features I want - A kernel bus - some kind of driver where I can send messages that can eventually be accessed globally by other drives / applications - modularity in terms of drivers: - I want drivers to be optional and to not limit functionality - perhaps this means providing every thing as a hardware abstraction layer, so that when its absent we can have some sort of virtual replacement