Intent86 -- a curious little OS I can't quite find time for

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
User avatar
eekee
Member
Member
Posts: 872
Joined: Mon May 22, 2017 5:56 am
Location: Kerbin
Discord: eekee
Contact:

Intent86 -- a curious little OS I can't quite find time for

Post by eekee »

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.
Kaph — a modular OS intended to be easy and fun to administer and code for.
"May wisdom, fun, and the greater good shine forth in all your work." — Leo Brodie
rdos
Member
Member
Posts: 3268
Joined: Wed Oct 01, 2008 1:55 pm

Re: Intent86 -- a curious little OS I can't quite find time

Post by rdos »

eekee wrote: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.
Our company used the V25 processor, which is a 8086 compatible clone. I wrote a multitasking "kernel" for it, and it is still running on many terminal installations. In fact, it was a back port from the multitasking implementation in my 386 OS (RDOS). We used a LCD screen, and I wrote a driver for it. It was not compatible with PC graphics.
User avatar
eekee
Member
Member
Posts: 872
Joined: Mon May 22, 2017 5:56 am
Location: Kerbin
Discord: eekee
Contact:

Re: Intent86 -- a curious little OS I can't quite find time

Post by eekee »

rdos wrote:Our company used the V25 processor, which is a 8086 compatible clone. I wrote a multitasking "kernel" for it, and it is still running on many terminal installations. In fact, it was a back port from the multitasking implementation in my 386 OS (RDOS). We used a LCD screen, and I wrote a driver for it. It was not compatible with PC graphics.
Interesting! Did the use of segmentation in RDOS map to the 8086 at all?
Kaph — a modular OS intended to be easy and fun to administer and code for.
"May wisdom, fun, and the greater good shine forth in all your work." — Leo Brodie
rdos
Member
Member
Posts: 3268
Joined: Wed Oct 01, 2008 1:55 pm

Re: Intent86 -- a curious little OS I can't quite find time

Post by rdos »

eekee wrote:
rdos wrote:Our company used the V25 processor, which is a 8086 compatible clone. I wrote a multitasking "kernel" for it, and it is still running on many terminal installations. In fact, it was a back port from the multitasking implementation in my 386 OS (RDOS). We used a LCD screen, and I wrote a driver for it. It was not compatible with PC graphics.
Interesting! Did the use of segmentation in RDOS map to the 8086 at all?
Certainly, since 8086 is a segmented design too (real mode). The main difference was that 8086 only support 16-bit instructions, while RDOS is a 32-bit design, which meant the scheduler would save different registers, and the thread control block was different. I debugged the design in RDOS x86 emulator before trying it on real hardware.
Post Reply