# TODO list
## Basics
Setup Cross-Compiler \
Multiboot to kernel \
Printing string to the screen \
Printing values/numbers to the screen \
Basic Terminal \
Extend Multiboot implementation \
Output to serial port \
Move to protected mode \
Enabel CMOS clock \
Time measurement (PIC &| PIT) \
Detect CPU speed \
Interrupt / exception system (API) \
PCI support \
ATA PIO Mode support \
FAT Filesystem \
Virtual filesystem \
Keyboard support ( P/S2 Keyboard) \
Physical memory management \
Paging \
Virtual memory management \
The heap: allocating memory at runtime (malloc and free) is almost impossible to go without. \
Enable SIMD Extensions (SSE)
## Other features I am thinking of:
PCI support \
ATA PIO Mode support \
USTAR Filesystem ( For its simplicity this is very likely the first filesystem the OS is going to support) \
ACPI support ( Or some other basic way to support shutdown, reboot and possibly hibernation ) \
ATAPI support \
Keyboard support ( P/S2 Keyboard) \
Memory Management (MMU)
Hardware Management system
Preemptive multi tasking \
Processes \
Threads
Scheduling (SRV2 Unix OR Priority Based Round Robin) \
System V ABI compliance (partially) \
POSIX compliance (partially) \
RPC - for interprocess communication \
Sync primitives - Semaphores, Mutexes, spinlocks et al. \
ACPI support \
ATAPI support \
## Optional
Basic Window server/client \
EXT2 Filesystem
USTAR Filesystem \