This is a project that is intended to become my every day use OS. I want to learn how to make the tools that I use everyday. It's still in the very first stages, but there are promising resultes so far. I'm not going for a Unix clone, but I will include Unix design choices that I think are good ones, and there will be just enough POSIX compliance to port some software. The future plan is to use it as a base to develope standalone applications for it, like a code IDE and web browser. Perhaps even a complier or language interpreter.
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 cleanwill clean all built filesmake buildwill build all filesmake runwill start the OS with Qemumake fileswill 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
- Sometimes key presses are not detected. Should investigate.
- 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