VOGONS

Common searches


First post, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

In this thread [ANN]: DOS/32A v9.1.2 has been released narech makes this comment:

Disable ems and xms. Edit DOSBox configuration file "dosbox.conf" changing ems & xms entries such that they read: [dos] xms=fals […]
Show full quote

Disable ems and xms. Edit DOSBox configuration file "dosbox.conf" changing ems & xms entries such that they read:
[dos]
xms=false
ems=false

The DOS Extender is then bound to use the so called Clean (a.k.a. INT 15h) System which is by far the fastest. Using ems=true is not recommended, it forces DOS/32A into running under VCPI which is slow and completely unnecessary.

Is this true for all extenders? Should we recommend disabling XMS/EMS for those games?

How To Ask Questions The Smart Way
Make your games work offline

Reply 1 of 3, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

It depends on how smart the extender is.
It should check for a certain cpu bit instead of only vcpi. I thought DOS/32a did this allright.

WD would know more about this though.

Water flows down the stream
How to ask questions the smart way!

Reply 2 of 3, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Most dos extenders use their own, fast mode switches when
the processor runs in real mode (like dosbox). Some don't,
that is PMODE/W, a few older DOS4GW versions, and DOS32A.
I don't think it has a noticeable impact on speed (volunteers 😉
Narech was so kind to include a mode detection in his new
dos32a (see the beta forum), so it does no longer use VCPI
unless necessary.

wd

Reply 3 of 3, by narech

User metadata
Rank Newbie
Rank
Newbie

Is this true for all extenders?

The DPMI specification mandates the detection order to be: DPMI, VCPI, XMS, INT 15h (Raw), that is VCPI *before* XMS which is what DOS/32A does. There are however ways to cheat, for example if a VCPI host is present but is inactive, you could theoretically just ignore it, and use XMS/Raw which are faster. There are some implications though, first a VCPI host might reserve memory for EMS, so the DOS Extender will not be able to use all the memory in the system. Then there is compatibility issues, there are lots of different VCPI implementations out there, the only way to prove the detection code to be correct is lots of empirical tests which requires lots of time.

Most of the performace hit when running DOS/32A under VCPI comes from mode switching. Since the DOS Extender creates its own memory heap at startup (that's the reason for a short pause) the actual memory allocation at run-time is about just as fast as under XMS/Raw.

The current DOS/32A beta 9.0.2 includes some code to enable [XMS, VCPI] detection order, however it is commented out right now. If you feel like rebuilding the DOS Extender you can uncoment lines 109..121 in kernel/detect.asm and see how it works. The current solution is flawed, if VCPI grabs all the memory the DOS Extender is left with no memory at all (this is unusual but can happen). I'll need to rework some of the detection/initialization code before the solution is complete.