|
|
View Message | Back to Messages |
Plasma Mon May 30 2005 at 12:01 am nothing that complex
It's done completely in software, using XMS. When pages are mapped in, the current data is copied back to XMS and the new data is copied in from XMS. (The page frame is in conventional memory or a UMB.)
I can tell you're already cringing. :) Yes, there are four main problems with this method:
1. It's slow
2. Data aliasing doesn't work
3. It eats up [usually] conventional memory
4. It eats up XMS
Here are my arguments for each:
1. The intended target is people with newer motherboards who can't get a pageframe in the UMA, not people who are too lazy to set up EMM386 or the EMM in NTVDM. This means 1+ GHz CPUs running software typically designed for 286s-586s. I am trying my very best to make EMS Magic as fast as possible, but two XMS copies are obviously slower than a mapping register change. The increase in CPU speed should more than make up for this, though.
2. Page 9 of the EMM 4.0 spec acknowledges that software-only EMMs cannot support data aliasing and that applications should check for support before using it. I know that there are several programs that don't do this, including UGL, but I don't know of any way around it. If you know of any methods that work in both 9x and NT I would be very interested.
3. If there's no space in the UMA for a pageframe, conventional memory is the only other place to put it. This should typically be the case with people using EMS Magic, so there's no real loss here. Disabling DOSX (DPMI support) frees up about 35K in XP, leaving just over 550K free conventional memory with EMS Magic loaded and a pageframe in conventional memory. This should be enough to run most programs that require EMS.
4. 9x and DOS can supply tons of XMS, no problem here. NT, 2000, and 2003 only provide 16MB XMS, but there shouldn't be many programs that need more than 16MB of EMS. (If there is, it's probably some crazy QB game, though...) XP actually supports 32MB XMS, but it likes to report otherwise.
So, that's basically it. Any thoughts?
- Hey man - Blitz (Sat May 28 2005 at 5:39 am)
|
|