On 20/07/2025 07:23, Michael Brutman wrote:
How can an 8086 PC have a few megabytes of XMS memory? By definition an 8086 PC only has 20 address lines, which gets you to 1MB. There is no addressing of memory above 1MB available given that number of address lines.
XMS (v2) is just a copying API. Applications that utilize it are agnostic to the actual origin of the memory, i.e. it doesn't matter to them where the memory is sourced from. While it is commonly associated with RAM located above the 1MB boundary on 386+ CPUs (often referred to as "extended memory"), that's a historical convention at best, not a technical requirement.
You can expose a wide range of memory sources via the XMS interface: RAM from your SoundBlaster card, surplus VGA VRAM, even memory streamed from a server or simply backed from a floppy disk. As such, there's no technical barrier preventing an 8086 from accessing and utilizing up to 64 MB of memory presented through the XMS v2.0 API.
EXMS86 is a TSR program that provides XMS 2.0 memory using EMS 4.0 as its storage backend. This effectively enables XMS-compatible applications to run on IBM PCs equipped with EMS expansion cards. I developed EXMS86 with DOSMid in mind, but since it provides standard XMS, it opens compatibility with any other software. The most notable beneficiary within the FreeDOS ecosystem is undoubtedly FreeCOM, assuming its code is 8086-clean nowadays.
http://mateusz.fr/exms86 Mateusz _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user