VOGONS


First post, by Blackthorn00

User metadata
Rank Newbie
Rank
Newbie

This is probably a trivial question, but I have read contradicting posts regarding an answer.

Some posts suggests that since EMS emulation is based on XMS, which is basically a memcopy interface, then when swapping those 16k pages in the EMS window, the system is actually performing a copy under the hood.

Other posts suggest that since EMM386 puts the processor in v86 mode, then it enables paging. As a result, swapping those 16k pages is just a use of virtual memory (mapping logical pages to phisical ones) which doesn't require a copy and thus is very fast.

So which one is the truth? (I speculate it's the first on 286 and the second on 386).

Since some games required EMS into the early 90s, I'd expect the EMS access was faster than XMS, suggesting it didn't involve a copy.

Btw, I'm learning to use both EMS and XMS interfaces, so I guess I could just benchmark it. There is also the fact that when emm386 is loaded, the system can become up to 10% slower, according to Microsoft, so I wonder of this slowdown eats all the allegedly overspeed of EMS usage over XMS.

Reply 1 of 6, by Grzyb

User metadata
Rank l33t
Rank
l33t
Blackthorn00 wrote on 2025-12-23, 10:11:

I speculate it's the first on 286 and the second on 386

EMM386 doesn't work on a 286.

If you want software EMS on a 286, you need some third-party utility, eg. EMM286 - which of course does the memory copying.

I don't know how exactly EMM386 works - I think the only way to learn is by looking at the leaked source of MS-DOS 6.0.

In 2003, I voted in favour of joining the European Union. However, due to recent developments - especially the restrictions on cash usage - I'm hereby withdrawing my support. DOWN WITH THE EU!

Reply 3 of 6, by Mov AX, 0xDEAD

User metadata
Rank Newbie
Rank
Newbie
Blackthorn00 wrote on 2025-12-23, 10:11:

So which one is the truth? (I speculate it's the first on 286 and the second on 386).

2)

Other posts suggest that since EMM386 puts the processor in v86 mode, then it enables paging. As a result, swapping those 16k pages is just a use of virtual memory (mapping logical pages to phisical ones) which doesn't require a copy and thus is very fast.

Reply 4 of 6, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie

EMM386 switches your 386+ processor into protected mode and enables the paging unit.
It installs a kind of hypervisor and lets DOS run in a virtual 86 machine.
Memory switching as required by moving EMS windows will be fast using the paging unit.

As EMS memory is allocated, available XMS memory will be decreased.

However, enabling protected mode and paging will cost a bit of performance. And not every DOS program likes to be run under a hypervisor.
A 386sx will suffer most from an active EMM386.

Reply 5 of 6, by Jo22

User metadata
Rank l33t++
Rank
l33t++

There also were Compaq's CEMM and the EMS providing VM monitor as part of Windows/386.
Both are predecessors to EMM386 in some ways.
(Btw, the MemMaker utility used for EMM386 was based on the Customize utility of Helix NETROOM 3. Video: https://www.youtube.com/watch?v=NF83dbkuunA)

Then there was IBM's EMS counterpart called XMA.
It initially had compatibility issues with regular EMS hardware, if I understand correctly.
The number of handles or something along these lines was different, so users of the time thought IBM's software was buggy.

Speaking of EMM286, there are some other LIMulators that are more compatible.
So far, EMM286 only worked with AutoSketch 3.0 (DOS) for me.

By contrast, commercial LIMulators such as Above DISC or Turbo EMS also especially supported Windows 2.x.

Videos:
https://www.youtube.com/watch?v=539tnsX-Zso
https://www.youtube.com/watch?v=DSTzAeWWDYo&t=660s

EMS Magic also used to be commercial, but was mainly meant for VDMs on Windows NT or OS/2.
Still, it's also usable on real DOS and a good alternative to EMM286.

A very rare solution for EMS are external MMUs, such as the ALL CHARGECARD.
They existed as processor interposer cards (for 80286 systems), for example.
Video: https://www.youtube.com/watch?v=xgMIbo6QoM4
PC-MOS/386 supported some of them, if memory serves.

Edited.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 6 of 6, by Matth79

User metadata
Rank Oldbie
Rank
Oldbie

EMS cards used mapping hardware
EMM386 and alternatives like Jemm386 use the 386 V86 mode for memory mapping, same way it can map UMB blocks
Inbetween, there were disk based emulators, absolutely copy based, well load and save based and also XMS copy based that could work on a 286.
And then there was chipset based EMS on some 286 systems, which used hardware mapping