# TODO list
## Start planning
Setup Cross-Compiler \
Multiboot to kernel \
Printing string to the screen \
Printing values/numbers to the screen (a.k.k itoa) \
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) \
Plan your memory map (virtual, and physical) : decide where you want the data to be. \
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)\
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. \
Basic Terminal \
Extend hardware recognition ( CPU codename, memory, ATA harddisk, RAW diskSpace, CPU speed through SMBIOS et al. ) \
Basic Window server/client \
## Support for more filesystems if I like the challenge in writing these ...
FAT Filesystem \
EXT2 Filesystem \