Sunday, December 2, 2007
Prima: Moving Past DOS-C
When I first wrote the operating system that was to become FreeDOS, I really didn’t know what to call it. The commercial software that spawned it was known as DOS/NT, but I wanted to call this version something different. I couldn’t decide what I wanted to call it, so it went unnamed for a very long time. I did promote it as the shareware version of DOS/NT, so in that respect it is part of the old DOS/NT family, but it had no official name.
Along comes James Hall. I’m reading usenet and I see his PD DOS posting. At first, I shrugged it off, but I later changed my mind. I wanted this piece of code to have some purpose. I then contacted Jim, and offered him that operating system. The remainder of this story is well known and is documented on Wikipedia and other sites.
What About Now
Well, I recently became restless. I had not done any operating system work for a few years, either personally or professionally, and while VoIP is interesting, it’s not the same as a kernel. I thought of ways to advance FreeDOS by extending the kernel to 32- and 64-bit. In what I had in mind, the kernel is a new one in which the user would not know the difference. The user would run all his/her applications as always, but new applications would take advantage of newer features. The user would also gain the ability to run new devices through new device drivers.
So I went back and tried to gauge interest on the FreeDOS mailing list. I published a little poll, and what I got back didn’t really match up with what I wanted to do. I wanted to move the DOS paradigm forward. Most of the responders questioned the need to do this. They’re satisfied with running FreeDOS under some sort of virtualization, not as their primary operating system.
What they’d like:
- Better device driver support
- Better connectivity via TCP/IP
- Better support for modern platforms, such as ACPI and other power management functionality available on modern motherboards
- Some support for new file systems.
Another FreeDOS developer list question asked whether or not FreeDOS could run on ARM. The responses, of course, indicated that you couldn’t. While this is true of the current distribution, the original source code was portable and the new kernel would certainly allow such a port. Even the last release of DOS-C is relatively portable, although some small changes are necessary. Surprisingly, this was the only embedded reference I got back.
Announcing Prima
Prima is the new operating system I am putting together. It is an extension of my original DOS-C, so in some respects it is a branch of the current FreeDOS project. Funny thing is, I have not totally defined the project. I may or may not want to support 16-bit applications. If current DOS users are content with what they have and use other operating systems for their day to day activities, this certainly won’t be something they want to do. I may or may not want to support a POSIX API. There are many very good POSIX based operating systems around, free such as *BSD and Linux, and commercial such as MacOSX and Solaris. I may or may not want to support win32. This would be a huge undertaking.
What this is a proof of concept release. I am taking the original DOS-C code and putting it into a stand alone application that allows me to boot it up and test it. It is a test of the compatibility of the old code with modern compilers. It is also a launching point for the new project.
If you examine the code, you’ll notice some code that was never before released. I am placing a messaging system into this project. I am contemplating a design somewhere between microkernel and virtualization. I like the concept of a microkernel and want to take advantage of the design principals in this project. You’ll also notice a minor shift from the current DOS device driver design. Since there are very few new DOS device drivers these days, I don’t see any advantage in trying to access real mode drivers. I may want to reconsider this at a future date if there is a need to run old device drivers.
For now, here is the proof of concept. Next, I’ll implement a set of coding guidelines, followed by new portability guidelines. By that time, I’ll have decided on a direction and defined the first project for Prima. In the mean time, you can get the source code from ftp://opensourcedepot.com/Prima/Prima-POC-071202.zip.
Enjoy.
Subscribe to Posts [Atom]
Copyright Pasquale J. Villani