Intent86 -- a curious little OS I can't quite find time for
Posted: Tue Feb 27, 2024 6:01 am
Look at the design of the 8086 with its enforced segmentation, lacking a single address space. Was it designed for single-tasking one large program at a time, or multitasking many tiny programs? Obviously the latter! Yet, so many OS developers target the 8086 with single-tasking OSs. I'm slightly disappointed.
I had ideas of developing such an OS with a microkernel, a userspace of small programs perhaps similar to Unix, perhaps not, and even a GUI with a modular design of small, communicating programs. QNX has such a GUI which it describes as similar to a microkernel, as seen in a screenshot. (QNX however is a 32-bit OS.)
What about graphics? I thought I'd first code for VGA monochrome mode, 1bpp, which is typical of mid-80s computers. VGA color is designed to work with code designed for 1bpp monochrome with little adaptation. And VGA has a barrel shifter to improve the performance of drawing characters and other bitmaps at non-byte-aligned positions.
So why aren't I developing this; why have I chosen to develop a 32-bit OS instead? Well, several reasons. I know some techniques for working with limited memory, but they're not always easy. They take time and energy away from other design considerations. I don't want to spend any more time and effort than I have to, especially as I have to develop my whole userspace too. I've lost literal decades to brain damage and a lack of recovery support; I want to get on! For the same reason, I found a language I can get on with much better than others, and I don't want to re-target the compiler before I can even start. Besides this, VGA color is curiously fascinating and challenging, but it's a technological dead end. I want more colors! And finally, I want my OS to be portable to architectures which don't have segmentation. (Retargetting the compiler is something I'm open to later.) For all these reasons, I've had to put Intent86 on the shelf.
I had ideas of developing such an OS with a microkernel, a userspace of small programs perhaps similar to Unix, perhaps not, and even a GUI with a modular design of small, communicating programs. QNX has such a GUI which it describes as similar to a microkernel, as seen in a screenshot. (QNX however is a 32-bit OS.)
What about graphics? I thought I'd first code for VGA monochrome mode, 1bpp, which is typical of mid-80s computers. VGA color is designed to work with code designed for 1bpp monochrome with little adaptation. And VGA has a barrel shifter to improve the performance of drawing characters and other bitmaps at non-byte-aligned positions.
So why aren't I developing this; why have I chosen to develop a 32-bit OS instead? Well, several reasons. I know some techniques for working with limited memory, but they're not always easy. They take time and energy away from other design considerations. I don't want to spend any more time and effort than I have to, especially as I have to develop my whole userspace too. I've lost literal decades to brain damage and a lack of recovery support; I want to get on! For the same reason, I found a language I can get on with much better than others, and I don't want to re-target the compiler before I can even start. Besides this, VGA color is curiously fascinating and challenging, but it's a technological dead end. I want more colors! And finally, I want my OS to be portable to architectures which don't have segmentation. (Retargetting the compiler is something I'm open to later.) For all these reasons, I've had to put Intent86 on the shelf.