=== Todo === Legend: - [ ] Not done - [x] Done - [_] Was done at some point, but isn't now - [!] Important todo - [?] Optional - [!] The Big Refactor - [?] Use UEFI - [ ] 32-bit (probably) - [ ] Partitioned disk - [ ] Use an existing bootloader - [ ] Limine - [ ] Grub :/ - [ ] project structure - [ ] arch/ - [x] lib/ - [x] include/ - [x] libc - User space - [x] libk - Kernel libc - [x] kernel - [x] use libk - [x] makefile - [?] probably a full rewrite - [ ] filesystem - [ ] use Ext1 - [ ] sysroot - [ ] good buildutil - [ ] proper file organization - [X] Makefile refactorin' (finally done!!!) - [ ] LIBC - [ ] assert.h - [ ] complex.h (idk why we would need this) - [x] ctype.h - [x] errno.h - [x] fcntl.h - [x] float.h - [x] limits.h - [x] math.h (maybe a separate libm?) TODO: add errno errors in there - [x] setjmp.h (this plagues my mind) - [ ] signal.h (we would need signals first) - [x] stdarg.h - [x] stdbool.h - [x] stddef.h - [x] stdint.h - [x] stdio.h - [x] stdlib.h - [x] string.h - [x] syscall.h - [x] time.h - [ ] unistd.h (do we do POSIX?) - [ ] wchar.h (we would need text support for wide chars ig?) - [ ] wctype.h (same as above) - [ ] sys/ - [ ] types.h (syscall types) - [ ] gfx.h (basic graphics lib) - [ ] LIBK - [x] disk - disk r/w - [ ] error - error handling (bigerr is not enough :( ) - [ ] fs - filesystem - [x] interrupt - handling and registering interupts - [ ] input - handle ALL input devices (currently implemented as the keyboard dir) - [x] memory - memory managing (physical and virtual) - [x] ports - handles IO ports (eg. serial console) - [x] screen - everything that displays on the screen - [x] sound - handles everything related to sound - [x] syscall - system calls - [x] tty - handles terminal output - [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() 🗿 - [x] Exponential fn (e^x) - [x] Logarithm - [x] Power - [x] Square Root - [ ] Floor - [ ] Round - [ ] Ceiling - [x] Sign - [x] INFINITY - [x] NAN - [x] E (eulers number) - [x] PI - [ ] 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 lib - [ ] Finish all todos - [ ] Refactoring!!! - [ ] Can it run DOOM? - [ ] Games - [ ] Minesweeper - [ ] Solitaire - [ ] Tetris - [ ] Write an OS in kern (The FINAL Todo)