# IndigoOS IndigoOS (name likely to change) will be a unix-like operating system for x86-64 computers. I'm hoping to impliment many things a modern operating system would have, including a desktop enviornment, pre-emptive multithreading, ASLR, and memory protection. I'd also like to port games such as DOOM. This project is in it's infancy. However, I'm making quick progress. I'll only commit major changes to keep the commit history clean. ## Cleaning list - [ ] clean RSDP v1 vs v2+ ugly unison code - [ ] clean static paging code - [ ] fallback to best compatable video mode if not found - [ ] find out when and why checksum of binary vs debug binary stripped is occationally diffrent (maybe linker script?) ## debugging - [x] get debugging into into a seperate elf for GDB - [ ] md5sum of striped binary is the same as one built without debugging info _Almost_ always, there was one time when it wasn't. Can't seem to reproduce. Check linker sizes and included sections. ## bootloader - [x] make USB bootable as floppy - [ ] make USB bootable as harddisk - [x] detect native resolution - [x] set VESA video to native resolution - [ ] fallback to best compatable video mode if not found - [x] record video mode info for kernel - [x] setup temporary page tabels - [x] get memory map - [x] load sectors into 0x100000 - [x] boot into kernel long mode ## Kernel ### Memory - [x] static page mapping - [ ] dynamic page allocation - 3/24/21, almost done, will likely finish soon. - [ ] remap paging to higher/more available physical address - [ ] remap kernel to higher virtual address - [ ] create a written map of virtual shared/kernel addresses for documentation ### ACPI - [x] find, check, and parse RSDP - [x] find, check, and parse RSDT or XSDT ### multicpu - [ ] boot cpus - [ ] parse MDST