=== Todo === Legend: - [ ] Not done - [x] Done - [_] Was done at some point, but isn't now - [!] Important todo - [?] Optional - [!] The Big Refactor - [?] Use GRUB - [ ] Multiboot - [ ] boot.s - [ ] project structure - [ ] system root - [ ] arch/ - [ ] lib/ - [ ] include/ - [ ] cross compiler setup - [ ] libc - User space - [ ] libk - Kernel libc - [ ] kernel - [ ] use libk - [ ] makefile - [ ] probably a full rewrite - [ ] userspace - [ ] shell - [ ] calc - [ ] editor - [ ] filesystem - [ ] proper file organization - [_] Makefile refactorin' - [x] Multistage Bootloader - [x] Bootloader reads filesystem to find files - [x] The almighty 'printf()' - [x] Write down where stuff is in memory (in notes.txt) - [ ] "Text" mode (not actually) - [x] Scrolling - [ ] Scroll-back - [x] Color codes (and just multicolor text in general) - [x] Controll sequences! - [x] VESA BIOS Extensions - [x] Better resolution - [x] Graphics mode - [x] Custom font - [_] Larger text size - [ ] Variable text size :) - [x] Make output overflow go to next line - [x] More fonts - [x] Generic screen.h stuff (don't assume 1920x1080 32bpp) - [x] Multi vbe mode support - [x] Setup on boot - [ ] Different font size support - [x] Graphics - [?] Enter/exit a "graphics" mode (idk if we need this) - [x] Pixel drawing - [x] Line drawing (Raycaster Alert??) - [x] Triangles (3D?!!???) - [x] Rectange :) - [x] Circle! - [x] Filled verisons - [x] Interrupts - [x] IDT Setup (idt.h) - [x] Exception handling - [x] Hardware/software interrupts - [x] Syscalls! (int 0x80) - [x] IRQ 0 - PIT - [x] IRQ 1 - Keyboard - [x] IRQ 8 - CMOS Real time clock - [?] Other IRQs (idk which ones) - [ ] Sound - [x] Pc Speaker - [x] Notes (in hertz) - [ ] Sound Blaster 16 - [x] MEGALOVANIA - [ ] Math - [ ] Trigonometry - [ ] Sine - [ ] Cosine - [ ] Tangent - [ ] Cotangent - [ ] Arc (inverse) versions - [ ] Hyperbolic versions - [x] Absolute value - [ ] isOdd() 🗿 - [ ] Exponential fn (e^x) - [ ] Logarithm - [ ] Power - [ ] Square Root - [ ] Nth Root - [x] Floor - [x] Round - [x] Ceiling - [x] Sign - [ ] INFINITY - [ ] NAN - [x] E (eulers number) - [x] PI - [ ] Floating point macros/functions - [ ] Filesystem - [x] Utility for filesystem building (not just an assembly file) - [_] Better header for file i/o (disk/filesys.h) - [x] Filetable - [x] A better filesystem using INodes etc. - [x] Files - [x] Larger than one sector (512B) - [x] Any file size (Not multiples of 512B) - [x] Filetypes - [ ] Directories - [x] File tree - [x] Dir Entries - [ ] cd command - [ ] Links?? - [ ] Symbolic - [ ] Hard - [ ] System Calls - [x] Sleep() - [x] Write() - [ ] Read() (temporarly gets()) - [ ] Open() - [ ] Close() - [x] Malloc() - [x] Free() - [ ] Seek() - [ ] Tell() - [ ] Exit() - [ ] Shell - [ ] Separate file/program - [ ] ';' separated commands - [ ] I/O Redirection with '<' '>' - [x] Display directory in prompt - [ ] Custom prompts - [ ] Variables - [ ] Enviromental/Global - [ ] Normal - [ ] Commands - [x] echo - [x] clear - [x] help - [x] ls - [x] exit - [ ] touch (make file) - [ ] rm - [ ] mkdir (add dirs first) - [x] reboot - [ ] cd - [ ] Standard I/O stuff - [ ] stdin - [x] stdout - [ ] stderr - [x] Memory manager - [x] Memory map - [x] Print mem map - [x] Physical - [x] Virtual - [x] Paging - [ ] User (or system) programs - [x] Loading them - [x] Running them - [x] Exit back to kernel/shell - [x] Let them use libs - [ ] Proper include files (LibC?) - [x] argc, argv[] - [ ] Standalone shell program - [ ] Userspace programs - [x] Calculator - [ ] Calendar - [ ] Code Editor - [ ] Text editor - [ ] Syntax highlighting - [ ] Saving/Loading - [ ] Hex editor - [ ] Assembler/Compiler - [ ] Assembler - [ ] Compiler (probably C) - [ ] Standard libs - [ ] Finish all todos - [ ] Refactoring!!! - [ ] Can it run DOOM? - [ ] Games - [ ] Minesweeper - [ ] Solitaire - [ ] Tetris