Very rough outline of things that need to be done, somewhat based on the guide from the osdev wiki.
In addition to these things, I also need to document more code as well as the general system documentations, as well as setting up unit testing for any data structures as well as hopefully even the main OS code itself.
short list:
- fix page fault when pressing keys on ReleaseFast
- add page_allocator to kernel.os.heap
- uACPI (AML) bindings
- ttf renderer and font
- arch-specific docs
- cleanup panic.zig
- rename ringbuffer.zig
- PCI driver
- [X] Terminal
- [ ] stack smash protection
- [X] Global Descriptor Table
- [X] Memory Mangement
- [X] Physical Memory Manager
- [X] Paging
- [X] kalloc or something like that
- [-] Interrupts
- [X] IDT
- [ ] IOAPIC and timers
- [ ] Keyboard (requires IOAPIC)
- [ ] Pure Doom statically linked use a pseudo filesystem just to make sure things work
- [ ] Multithread / SMP
- [ ] multiprocess
- [ ] efficient message passing
- [ ] SMP
- [ ] bcachefs filesystem
- [ ] non privileged code
- [ ] syscalls
- [ ] ELF loader (for ‘driver’ code - priveleged but not quite kernel)
- [ ] the great micro-kernelling - switch to micro-kernel
- [ ] WASM runtime for games
- [ ] userspace fork/execute
- [ ] time
- [ ] disk access
- [ ] USB
- [ ] sound
- [ ] graphics driver(s)
- [ ] priveleged menu for launching games
- [ ] networking eventually