Open arichr opened 1 year ago
@arichr Glad that you find the book useful. A few years back, I had a plan to continue the book, which was roughly like this:
After writing your own simple bootloader, we start incorporating syslinux to load our bare-metal application (our "OS" in this case) directly in 32-bit mode. syslinux can also be used to call BIOS interrupts, so you can use it to access the 16-bit interrupt facility (similar to how DOS used the interrupts).
Then, you learn to build 32-bit code that call 16-bit interrupts by switching back to 16-bit mode, call the interrupts and switch back to 32-bit mode again. However, to do this, code layout is switched between 32-bit to 16-bit code as well, but GCC cannot compile C to 16-bit mode, but OpenWatcom compiler can: https://www.openwatcom.org/. Then, instead of writing assembly for 16-bit code, you write C.
Why bother doing all this 16/32-bit mode-switching gymnastics? Because to lessen the burden of implementing firmware to communicate with hardware devices. An OS needs drivers to communicate and manage hardware, but at this learning stage, learning how to write code that manages CPU and memory at bare-metal level is difficult enough.
Then, you start implementing OS-related algorithms.
That was the plan. Hopefully, I can make it real in the next few years. For now, I am busy with my daily job and my family.
Thank you for your response. It is great just to know that you are doing well. Please take your time.
@tuhdo Bumping this after roughly a year. I have only barely gotten into the book, but am loving it so far. I would love to help write, if only I was actually somewhat familiar with system internals, which is what i'm reading the book to help with :sweat_smile:.
Adding on to say how awesome this book is. Thank you for the hard work!
In continuation of #169, #157, #126, #116, #107.
I'm aware that creating duplicates of the same issue is against the GitHub Community Guidelines. Nevertheless, I would really like to see this book continued in the future.
@tuhdo , your project is a great introduction to OS development and still relevant ✨