This OS is for me, but I'd love for others to help and use it as well. I want Twilight to be approchable and understandable to anyone looking at it for the first time. With that in mind, I'm making a conscious effort to make things readable and not do anything super fancy. Even though it probably affects performance, I'm valuing maintainability as a higher priority. I'd also prefer to be the one to add any major features, since this is primarily a learining excersise for me. If you have a large feature that would like to add, please talk to me about it first. I'm only interested in having functionality that I would personally use. If you have made a contribution, you are more then welcome to put your name down at the bottom to make yourself known!
For now, Twilight is built using the cross compiler described in the OSDev.org Cross Compiler section, and NASM. I'm using Visual Studio Code as the main editor and doing the compiling with the Windows Subsystem for Linux, but standalone linux works fine too. I've only done testing on Qemu and VirtualBox. You'll have to change the path in the make run
recipe to perform testing in the manner that you want.
Check out the make file to see all the options, but these are the most useful
make clean
will clean all built filesmake build
will build all filesmake run
will start the OS with Qemumake files
will show you every file that is located for use in building process
This isn't a strict order, but makes sense as a logical progression. Look in the wiki for more detail about what is already in.
- Be able to boot ✔️
- Display text to the screen ✔️
- GDT ✔️
- IDT ✔️
- Exceptions ✔️
- System clock ✔️
- Keep time ✔️
- Delay/Sleep functions ❌
- Keyboard Support ✔️
- Dynamic Memory ✔️
- malloc() ✔️
- heap ✔️
- free() ✔️
- File System ❌
- ext2 ❌
- VFS ❌
- Graphics ❌
- GUI library ❌
- vga_controler.c needs rework. The indexing on the screen is all messed up.
- Organize file structure better
- Separate CPU based things
- Look at POSIX libC
- Decide on Makefile process
- Can't decide what is better. Single make file, or individual Makefiles per folder of source
- Zane Youmans