=== Todo ===

Legend:
- [ ] Not done
- [x] Done
- [_] Was done at some point, but isn't now
- [!] Important todo
- [?] Optional

- [ ] Refactoring
    - [ ] Use UEFI
    - [ ] Use an existing bootloader
    - [x] libc - User space
    - [x] libk - Kernel libc
    - [x] Kernel rewrite
    - [ ] Better filesystem
    - [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)

- [x] LIBK
    - [x] drivers - everything that works with hardware
    - [x] error - error handling (bigerr is not enough :( )
    - [x] fs - filesystem 
    - [x] interrupt - handling and registering interupts
    - [x] memory - memory managing (physical and virtual)
    - [x] screen - everything that displays on the screen
    - [x] syscall - system calls

- [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] Math
    - [x] Trigonometry
        - [x] Sine
        - [x] Cosine
        - [x] Tangent
        - [x] Cotangent
        - [x] Arc (inverse) versions
        - [x] Hyperbolic versions
    - [x] Absolute value
    - [?] isOdd() 🗿
    - [x] Exponential fn (e^x)
    - [x] Logarithm
    - [x] Power
    - [x] Square Root
    - [x] Floor
    - [x] Round
    - [x] Ceiling
    - [x] Sign
    - [x] INFINITY
    - [x] NAN
    - [x] E (eulers number)
    - [x] PI

- [ ] Filesystem
    - [x] Utility for filesystem building (not just an assembly file)
    - [x] 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()
    - [x] Read() 
    - [x] Open()
    - [x] Close()
    - [x] Malloc()
    - [x] Free()
    - [x] 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

- [ ] User (or system) programs
    - [x] Loading them
    - [_] Running them
    - [x] Exit back to kernel/shell
    - [x] Let them use libs
    - [x] Proper include files (LibC?)
    - [x] argc, argv[]

- [ ] Userspace programs
    - [ ] Shell
    - [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)

