X-Authentication-Warning: delorie.com: mailnull set sender to opendos-bounces using -f Message-ID: <000001c19e43$6c5b3a40$c03dfea9@atlantis> From: "Matthias Paul" To: Subject: More than 32 Mb of EMS memory Date: Wed, 16 Jan 2002 04:13:03 +0100 Organization: University of Technology, RWTH Aachen, Germany MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id g0G47PP14694 Reply-To: opendos AT delorie DOT com Does EMS max out at 32MB? Offically yes. According to the LIM EMS 4.0 specification, the maximum amount of available EMS memory is in fact 32 Mb. This is also what the MS-DOS/PC DOS EMM386.EXE memory manager provides. You can allocate up to 32 Mb total in chunk(s) up to 32 Mb each. This still applies to the EMM386.EXE shipping with MS-DOS 7.10 (Windows 98 SE) and IBM PC DOS 2000, and probably is the same for MS-DOS 8.0 (Windows ME), but I haven´t checked it there. A cursory look at the EMS 4.0 spec, however, leads to the assumption that the specification could be easily expanded up to something as impressive as 1 Gb of EMS memory. I just ran some tests under the DR-DOS 7.03 EMM386.EXE 3.27, which is available for download from ftp://ftp.lineo.com (and free for personal use), and in fact it does support much more: If you only run EMM386.EXE (without HIMEM.SYS as it is normal with the DR-DOS EMM386.EXE), it will detect "only" up to 64 Mb of system memory. This is only a limitation in the detection method (a different BIOS function is used to query more than 64 Mb of memory, and the DR-DOS EMM386.EXE does not currently query this new function). Therefore it will allow "only" up to 64 Mb of total EMS memory, which, however, can be allocated in chunk(s) up to 64 Mb (not only 32 Mb). For compatibility with the standard it still reports that it would only support up to 32 Mb max. However, if you load a 3rd party XMS-provider which detects more than 64 Mb of memory, the DR-DOS EMM386.EXE will also be able to handle more memory and provide this as EMS from a shared pool with XMS memory. For example, if you load the MS-DOS 7.10 HIMEM.SYS before the DR-DOS 7.03 EMM386.EXE, HIMEM.SYS will detect more than 64 Mb of memory (256 Mb on my system) and provide this as XMS memory. DR-DOS EMM386.EXE will then happily take over this memory and provide means to allocate up to this much memory as VCPI or EMS memory in chunks with up to 64 Mb each. Using the QEMM EMS.COM utility I just tried this up to ca. 250 Mb EMS memory on my system, but I guess even more would be possible on a system equipped with more physical memory. Under the DR-DOS multitasker (EMM386.EXE /MULTI + TASKMGR), you are limited to the amount of memory specified in TASKMGR.INI [Memory] Limit=value. If you set this value to something like 65534 (some strange effects occured with 65535), you can allocate up this much memory (even in one chunk if you like) as XMS or EMS per each running task. If you run Windows 9x or PC DOS 2000, you can replace Microsoft´s/ IBM´s EMM386.EXE with the (not only in this discipline) much more powerful DR-DOS equivalent. This should work without problems, except for the sometimes different command line switches. I know of at least one DOS program (SemWare´s editor TSE 2.5 for DOS), which can allocate up to 64 Mb of EMS memory, so it appears as if more DOS memory managers support this extension. If you fire up a DOS box under Windows 9x (98 SE in my case) you can configure it to provide at least up to 64 Mb total EMS memory which can be allocated in chunks up to 16 Mb each. To achieve this, right click on the DOS box window and check Properties->Memory->EMS to be set to "Auto". I think, Windows 3.1 has a similar option, but I haven´t tested it there. (BTW. You do not need the DR-DOS EMM386 to be loaded to achieve this, as the DOS memory manager loaded before Windows has passed control over to the Windows memory manager, anyway.) If someone knows of other memory managers which support more EMS memory I would be interested in this. Hope it helps, Matthias -- ; http://www.uni-bonn.de/~uzs180/mpdokeng.html; http://mpaul.drdos.org