Hi Rugxulo,

[3] Windows 3.0 started to catch on. That meant HIMEM.SYS and XMS as
standard; LIM-spec EMS started to fade. Apps like 1-2-3 r3 used DOS
extenders routinely. Memory management really got important but
everyone was buying 386SXs so you could sell them QEMM even if they
didn't want Windows.

VCPI was a superset of EMS, right? That was co-designed by QuarterDeck
(DesqView company), right? It was meant to make multitasking more
stable, but DPMI (later invented for Windows 3.0 but also implemented
elsewhere) was much better designed and more popular.

VCPI was a small interface added to things like EMM386 which gave other
apps access to things they would normally no longer reach after DOS gets
locked up in a VM86 task by EMM386. While it is nice that it is small,
it is not so nice that it basically lets you kick out other protected
mode things to use them yourself. DPMI is significantly larger, but it
lets you use protected mode in s far more cooperative way. Which is why
protected mode hosts like DOSEMU and Windows would typically only offer
DPMI, not VCPI, because VCPI is too raw metal, too little cooperative.

Note that DOSEMU2 has moved on to simulate the whole CPU anyway, which
lets DOS apps use all protected mode stuff they want, and which lets
DOSEMU2 run on CPU architectures which would not run DOS in hardware.

Since the XMS standard and support was so "late", several compilers
(e.g. Turbo C) only enabled "use EMS" by default.

I doubt that. With EMS, you could virtually swap 16 kB pieces of RAM
from above 1 MB into the low 1 MB, later also more fine-grained 4 kB
pages. With XMS, you can only copy around memory. So if your compiler
only knows how to generate code which runs in the first 1 MB, only
EMS can help you to run large code. If your compiler uses protected
mode, then it only needs some way to gain access. It could use raw
real mode as starting point and allocate RAM listed by the BIOS. It
could allocate XMS and make sure the XMS memory copy routing and your
code would not get a conflict about protected mode. Or it could use
VCPI to take over from EMM386 or similar. As this is sort of messy,
there are also compilers which use DPMI based DOS extenders, such
as DJGPP with CWSDPMI: The latter can either work with DPMI offered
by some other software, such as Windows, or bootstrap from one of
the listed other starting points into providing DPMI for your app
itself, so your app only has to deal with ONE interface: DPMI :-)

Note that you can also have EMS with mainboard hardware assistance
on pre-386 CPU and even on some early 386 mainboards. If you use
that, it will have nothing to do with protected mode, though.

In fact, quite a few
apps and games were "EMS only", even 386+ programs. (It was only DJGPP
v2 in 1996 where they went "DPMI only".)

Are you sure you mean apps? Maybe specific DOS extenders? Which?

Regards, Eric

PS: I do think DOSSHELL with task swapping was nice. We had threads
on FreeDOS lists wondering whether TriDOS would be okay for that, but
that "Tripple DOS" is a pure swapper. No file manager included and
it wants to be loaded instead of HIMEM. It is not EMM386-compatible
and there were plans to make it DPMI-compatible or let it offer DPMI
itself, but for now, it only offers XMS. It can do swapping even of
graphical apps, but only for classic VGA modes. By Vadim Drubetsky.




_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to