I have been thinking about what a more modern DOS would look like. Some ideas ...
- A "task" would look a lot like a single instance of DOS running today. The address space of a task would look the same, so it would have the interrupt table, BIOS area, video display buffer, expansion ROMs, system ROM, and extended memory that you find on a DOS system today. (Kind of like a running instance of DOSBox, but with better device and hardware emulation.) - MS DOS has its own concept of "process", which is an instance of a running executable. That concept remains unchanged. Multiple processes live within a "task" (as defined above) just as they do today. - The DOS kernel supports most (if not all) of the standard DOS functions. As there is an interrupt table and system ROM, BIOS functions are available as well. - Multiple tasks could be started and running. But they are logically part of one machine and one OS, not just separate instances of an emulator. The underlying kernel is a bit more sophisticated: - There is a shared filesystem for the machine. If that filesystem is not FAT then it is made to look like FAT by the time the DOS function calls run. - Memory mapping is used so that the tasks exist in different address spaces, and thus are protected against each other. Memory mapping is also used to give the illusion that each copy has its own video buffer so that direct screen writes and other normal practices are not problems. - The DOS portion of the operating system that is visible to the user applications is a thin wrapper that calls into the real OS. That keeps the memory footprint of the DOS kernel in each task minimal. - There is a real networking stack that can be used, and is shared across the entire machine. Additional DOS function calls are defined to use it, or a packet driver used a "shim" is used to support existing applications. - The kernel provides some other services that we are missing, like cut n paste support between the different tasks and inter-process communication. Another way to look at this is that you have a real operating system like Linux with a new (or better) DOS emulator. The DOS emulator takes some pain to try to emulate a real machine; keyboard interrupts, timer tick interrupts, 8250 and 16550 device emulation, etc. The difference is that unlike running multiple instances of DOSBox in separate Linux processes, the emulator allows some sharing of common state and data between the different emulated DOS tasks. I can't see adding all of this (or even 1/10th of it) to FreeDOS. But I can see starting with a fairly stripped down Linux base and doing some hardcore development work with KVM to build this. Riding on top of Linux takes care of our hardware compatibility problems and the emulator should preserve most of our existing software base. Mike ------------------------------------------------------------------------------ BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA Learn about the latest advances in developing for the BlackBerry® mobile platform with sessions, labs & more. See new tools and technologies. Register for BlackBerry® DevCon today! http://p.sf.net/sfu/rim-devcon-copy1 _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel