Plex86 Runs DOS
Adam Bertil was one of a number of people who've written about the recent announcement from
www.plex86.org that Plex86 will now run DOS applications. Kevin Lawton apparently did the work and a screenshot is on Plex86 [?] .org.
← Back to Stories (view on slashdot.org)
I'm sure there are enough people around here that have differing opinions about open source, but to head off discussion in that direction, it's merely an impression I have and I'm possibly wrong. I've never contributed a line of code - something I hope to change.
I think the whole concept of emulation/VM is something to be embraced and which could _really_ revolutionize the computing model. So as opposed to encapsulating already native code to sneakily let it think it's running as a base system, go ahead and really change it, emulate it - don't just "bracket" it.
Why? Currently, we're essentially writing compilers for a non-existing platform. The x86 platform as originally seen has long been "dead", what we're seeing now is chips that convert this "universal" language into their own microops and then execute them. The internal structure of a P3 / Athlon has a large section dedicated to this very task. But what if we could throw all that away, and make a chip that simply crunches numbers as good as current technology allows? We have the making of a darn fast chip. If I had to make a completely uninformed guess, we could well stuff two "Athlons" (if we can still call them that) on the same die if the whole x86 ISA is dropped.
In comes the virtual machine... we simply convert the bytecode into native code and run. Sort of like java does it - but better, as we have a chip that can run faster and possibly more efficiently.
Guess what? Sun is already doing just that with MAJC. The point is, Plex86 should not try to run code natively at all. It simply happens to have a bytecode that's identical to the native code. This gives us an architechture that is far longer-lived than something that can run legacy x86 systems on x86 systems. This might be portable to newer things as well.
Proof that this sort of thing is possible is incarnate in the Transmeta Crusoe chip. Of course, they chose to have a chip that is really power efficient, but imagine a a chip that is to speed what Crusoe is to power - Yummy.
I've heard objections that speed gains in the architecture might be outweighed by speed losses in the transformation. This is not true. The optimizations that a run-time VM can do are quite astounding - it can not only decide to unroll loops when necessary, but to expand a frequent multiplication by a memory adress into constant bitshifts, it could dynamically choose what to place into registers far more wisely that a traditional compiler can, look ahead and do IO access before the program needs to... I am no expert, but there's obvious potential here.
And here again, there are some innovative people at work, just look at HP's Dynamo - which takes native code and does real time optimizations (actually it does more than this, and is an interesting read. Transmeta wasn't the first. One of the interesting things is that actual optimized native code can still run faster under dynamo than simply natively. Obviously, this isn't the case for all programs, but its certainly not the case that Emulation/VM-ing is by definition slower than native execution. And realize, we're talking about an architecture (originally PA-RISC but porting activities are ongoing I believe) that wasn't even designed for this sort of activity. A CPU with this in mind could well do even better.
So my conclusion is that we shouldn't emulate VMware, we should, well emulate. Weird as it may sound, emulation is the future.
--EMN
Some people actually use their computers to get work done. As one small example: you'd be amazed how many control systems for industrial machinery are still run on DOS PC's. I run into them all the time.
Often their software was written by a long-since defunct company. Windows port? Hah! This stuff hasn't been rev'ed in atleast a decade. The company died, and the program sources went with it to it's grave. This is among the greatest arguments for open source software. If we had source to these control programs, then we could rewrite it for a Linux machine, or a Be machine or whatever-the-heck we wanted. We could update it to use more modern or more reliable computers. Instead, we're stuck hoping that that old 286 keeps chugging along.
Fortunately, for the most part, those 286 systems *do* keep chugging along. There are plenty of workhorse PC AT's sitting in cabinets, unceremoniously controlling production equipment -- pushing the GNP along. Eventually, they will die, and a replacement will have to be found. But as long as the old, dusty system still runs, why throw money at a replacement?
DOS was so universal for so long, and so much application software was written for it that it will be around for a very, very long time. Infact, DOS may even outlive the x86.
--Lenny
I have been following the Plex86/FreeMWare since it's inception. While I doubt it does much more than booting dos, it is impressive progress.
For those that invariably complain that you already have a dos emulator, the goal of the project is not to give you another dos emulator. It is to provide a free clone of VMWare. That is, to allow you to freely run any OS under (i386) linux. I don't doubt that it will be portable and will be ported, though. Booting DOS is the logical first step for its simplicity.
The point... When a project arrives at a milestone, don't complain because you think that it is not complete or because you don't understand what it's attempting. One of the problems(advantages!) with open source software is that people get to see the software in all of its stages of development. For those that are used to commercial software, you just get to see the final product, (usually) polished, and ready for the general public.
Plex86 is by no means finished. However, it has attained a significant milestone. And for that, they should be praised. I can tell you, the kind of work they are attempting is not easy!
This technology is something the OS community should really keep an eye on. Simply being able to run winzzzz at the same time as linux/BSD/Be/whatever is interesting enough. But that's just the start of the possibilities here.
With Open Source Plex86, it will be really easy to build a custom reverse engineering tool. Want a parallel port scanner? Don't have the protocol? Log all the output to the printer port. Easier said than done under winzzzz - unless its running under Plex86, which is already intercepting the I/O. Simply re-write the I/O traps in Plex86 (OK, not so simply, but certainly do-able) and log the traffic for later analysis. Same goes for WinModems. Possibly even for graphics cards with PCI/AGP I/O.
This is really exiting, and these are just the start. Support this project, folks, it's worth it!