Memory Problems: Difference between revisions
No edit summary |
|||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<div align="center" style="font-size: 22pt">Memory Problems: EMS memory and XP<br /></div> | <div align="center" style="font-size: 22pt">Memory Problems: EMS memory and XP<br /></div> | ||
<div align="center"><br />Adapted from threads on VOGONS</div> | <div align="center"><br />'''Adapted from threads on VOGONS'''</div> | ||
==<br /> Description == | ==<br /> Description == | ||
Line 21: | Line 21: | ||
<blockquote> | <blockquote> | ||
<span class="CodeStyle">MEM /C >VDMSMEM.TXT</span> | |||
</blockquote> | </blockquote> | ||
and name it MEM.BAT. The [http://www.computerhope.com/memhlp.htm | and name it MEM.BAT. The [http://www.computerhope.com/memhlp.htm MEM command] reports info about memory. In this case it redirects that report to text file. | ||
''Run it with [[VDMSound]]'' (right-click and choose Run with VDMS.) You have at least 64 KB of upper memory, but they are used as UMBs instead of an EMS frame. This is the default setting for a NTVDM under Windows 2000/XP, unless you change config.nt. The default setting for a VDMS shortcut is to enable EMS. | ''Run it with [[VDMSound]]'' (right-click and choose Run with VDMS.) You have at least 64 KB of upper memory, but they are used as UMBs instead of an EMS frame. This is the default setting for a NTVDM under Windows 2000/XP, unless you change config.nt. The default setting for a VDMS shortcut is to enable EMS. | ||
Line 33: | Line 33: | ||
<div class="CodeStyle">Conventional Memory : | <div class="CodeStyle">Conventional Memory : | ||
<div class="CodeStyle"> Name Size in Decimal Size in Hex <br /> | <div class="CodeStyle"> Name Size in Decimal Size in Hex <br /> | ||
------------- --------------------- ------------- <br /> | ------------- --------------------- ------------- <br /> | ||
MSDOS 13184 ( 12.9K) 3380 <br /> | MSDOS 13184 ( 12.9K) 3380 <br /> | ||
KBD 3296 ( 3.2K) CE0 <br /> | KBD 3296 ( 3.2K) CE0 <br /> | ||
Line 44: | Line 44: | ||
<div class="CodeStyle"> Upper Memory : | <div class="CodeStyle"> Upper Memory : | ||
<div class="CodeStyle"> Name Size in Decimal Size in Hex <br /> | <div class="CodeStyle"> Name Size in Decimal Size in Hex <br /> | ||
------------- --------------------- ------------- <br /> | ------------- --------------------- ------------- <br /> | ||
SYSTEM 180208 (176.0K) 2BFF0 <br /> | SYSTEM 180208 (176.0K) 2BFF0 <br /> | ||
MOUSE 12528 ( 12.2K) 30F0 <br /> | MOUSE 12528 ( 12.2K) 30F0 <br /> | ||
Line 62: | Line 62: | ||
</blockquote> | </blockquote> | ||
With DOS in certain situations it IS possible to reassign '''EMS''' to another memory range with limited results, but not for the NT family (Windows 2000/XP.) For 2K/XP, the ONLY solution may be to disable the offending hardware on the motherboard. You can turn off motherboard's features in your computer's ''' | With DOS in certain situations it IS possible to reassign '''EMS''' to another memory range with limited results, but not for the NT family (Windows 2000/XP.) For 2K/XP, the ONLY solution may be to disable the offending hardware on the motherboard. You can turn off motherboard's features in your computer's '''BIOS''', ('''<span class="Alert">''WARNING: Do not enter the BIOS of your computer unless you know what you are doing. By changing some settings may end up with an un-bootable computer''</span>''') such as onboard RAID controllers, SCSI cards, or "USB legacy support" for USB keyboards and mice, that could release the appropriate memory blocks to free up more "Upper Memory". This works for some boards but not all. If it doesn't, then there may be no other solution than full hardware emulation ([[DOSBox]]) or virtualization ([[Virtualizers#VPC|VirtualPC]] | ||
and [[Virtualizers | and [[Virtualizers#VMWare|VMWare]]). | ||
==<br /> References == | ==<br /> References == | ||
Line 81: | Line 81: | ||
[[Category:Technical Info]] | [[Category:Technical Info]] | ||
[[Category:Game Help]] | [[Category:Game Help]] | ||
[[Category:Utilities]] | [[Category:Utilities]] | ||
[[Category:Patches and Updates]] | [[Category:Patches and Updates]] | ||
[[Category:New Pages to be Edited]] | [[Category:New Pages to be Edited]] |
Latest revision as of 19:57, 5 December 2024
Adapted from threads on VOGONS
Description
Anymore, memory problems are rarely an issue. With modern OSs, memory management is completely handled by the OS itself. Gone are the days that users have worry about freeing up enough base memory to run some application or game. See here for old style memory management.
Given PC architecture, memory is divided up into different ranges of addresses. The lowest, Base (first 640KB), Upper (the next 640-1024 KB), High (1024-1084 KB), Extended (everything above 1 MB).
However when running old DOS games, you might occasionally encounter some problems. Some users might find that they don't have enough extended memory using the XP DOS emulator. This is an issue with modern mother boards.
There were parameters for EMM386.EXE in CONFIG.SYS (DOS, Win9x) NOEMS and RAM to set EMS. In Windows XP, you can set EMS in the properties of the program (right click, chose "Properties" and page "Memory"). Unfortunately there are some PC configurations where it is not possible to get EMS in Win XP.
On many new PCs, XP doesn't seem to allocate any EMS memory. When trying to start a program that requires EMS memory, it will say that there is not enough EMS memory. Windows can't even allocate any EMS memory using a config.nt that contains the line "EMM=RAM" and modifying the .PIF settings.
In order to provide EMS memory to DOS programs, Windows needs to find a free 64KB memory area in the upper memory region, between 640 KB and 1MB. This is how the original EMS memory cards worked in the original PC-XTs and this is still the only way to simulate it under Windows.
Many modern motherboards do not present any free memory in this region, making it impossible for Windows to emulate EMS memory when you run DOS programs. On these motherboards, certain hardware (ethernet controllers, integrated USB, etc.) uses the memory ranges needed by DOS/NT4/2K/XP to enable EMS .
To find out if your computer has any EMS memory, create a file in Notepad with the line:
MEM /C >VDMSMEM.TXT
and name it MEM.BAT. The MEM command reports info about memory. In this case it redirects that report to text file.
Run it with VDMSound (right-click and choose Run with VDMS.) You have at least 64 KB of upper memory, but they are used as UMBs instead of an EMS frame. This is the default setting for a NTVDM under Windows 2000/XP, unless you change config.nt. The default setting for a VDMS shortcut is to enable EMS.
It should create a text file called VDMSMEM.TXT and report something like the following:
Conventional Memory :Name Size in Decimal Size in Hex
------------- --------------------- -------------
MSDOS 13184 ( 12.9K) 3380
KBD 3296 ( 3.2K) CE0
EMM 176 ( 0.2K) B0
HIMEM 1248 ( 1.2K) 4E0
COMMAND 3152 ( 3.1K) C50
FREE 112 ( 0.1K) 70
FREE 633984 (619.1K) 9AC80Total FREE : 634096 (619.2K)Upper Memory :Name Size in Decimal Size in Hex
------------- --------------------- -------------
SYSTEM 180208 (176.0K) 2BFF0
MOUSE 12528 ( 12.2K) 30F0
DOSX 34720 ( 33.9K) 87A0
FREE 256 ( 0.3K) 100
FREE 34336 ( 33.5K) 8620Total FREE : 34592 ( 33.8K)Total bytes available to programs (Conventional+Upper) : 668688 (653.0K)
Largest executable program size : 633712 (618.9K)
Largest available upper memory block : 34336 ( 33.5K)4194304 bytes total EMS memory
4194304 bytes free EMS memory
20971520 bytes total contiguous extended memory
0 bytes available contiguous extended memory
16628736 bytes available XMS memory
MS-DOS resident in High Memory Area
With DOS in certain situations it IS possible to reassign EMS to another memory range with limited results, but not for the NT family (Windows 2000/XP.) For 2K/XP, the ONLY solution may be to disable the offending hardware on the motherboard. You can turn off motherboard's features in your computer's BIOS, (WARNING: Do not enter the BIOS of your computer unless you know what you are doing. By changing some settings may end up with an un-bootable computer) such as onboard RAID controllers, SCSI cards, or "USB legacy support" for USB keyboards and mice, that could release the appropriate memory blocks to free up more "Upper Memory". This works for some boards but not all. If it doesn't, then there may be no other solution than full hardware emulation (DOSBox) or virtualization (VirtualPC and VMWare).
References
See Also
- Main Windows 3x Page
- Main DOSBox Page
- General Game Help
- Emulators
- Utilities
- Main Utilities Page
- Main Update Page