
EMM386 and VDS: Not Quite Working - eaguyhn
http://www.os2museum.com/wp/emm386-and-vds-not-quite-working/
======
userbinator
I've always found DOS esoterica --- and how it behaves with Windows (from
Windows/386 up through the 9x line) very interesting in that it's one of the
examples of how virtualisation can be a powerful tool. Windows could multitask
DOS applications by effectively virtualising the hardware, and the whole VXD
driver model was based around the notion that DOS applications --- and even
Windows ones via userspace driver libraries --- could continue to be written
as though they accessed the hardware directly, but the virtual device driver
(VXD) that runs in ring0 would catch the accesses and manage sharing the
physical device between different "virtual machines".

Of course it wasn't perfect in practice, but I thought it was a rather elegant
solution to the problem of both backwards compatibilty and performance (since
virtual devices often only needed to handle multiplexing the physical device,
which could be as simple as saving and restoring state when switching between
VMs, there is no additional API layer and applications could still act like
they access hardware directly.)

~~~
orionblastar
OS/2 was supposed to be a better DOS than DOS but suffered these glitches in
the article.

Windows 95 ran WWIV BBS better than OS/2 at the time. You had to write in OS/2
routines to make use of it which is what WWIV did later.

DOSbox is what I use now for DOS programs.

------
chkaloon
Seeing terms like EMM386 and DesqView conjured up some strange flashbacks from
the late 80s for me. Thanks for that!

~~~
pilif
Then check out the rest of the site this article was posted on.

Welcome to the rabbit hole.

This is practically explaining what was pure magic to me in my childhood. I
can't stop reading this blog

------
anonsivalley652
Virtual memory manipulation maybe making it look like magic. I would verify in
a good emulator with complex, conditional breakpoints that the page tables
weren't being modified and TSS wasn't being switched within one of these API
calls.

