VOGONS

Common searches


First post, by cyberluke

User metadata
Rank Member
Rank
Member

Hi, I read a lot of threads there about this subject. I have situation: Dual Pentium 3 with 1GB Ram. DOS 7.1 under Windows 98 SE.

Some games have problems with XMS memory. For example Death Rally CD will not install. It will fail that you need AT LEAST 8MB of RAM. While MEM prints 1 000 000 MB circa.

I have tried:
1) Windows98's Himem.sys /NUMHANDLES=80
2) HimemX.exe 32767 or 65535 parameters
3) JemmEx with similar parameters as HimemX
4) XMSDSK /t - this is mostly recommended here, but it is useless

All the methods are useless. Why? Because they will adjust only FREE XMS memory. It will show 32MB or 64MB of FREE XMS memory. The real problem is TOTAL XMS MEMORY is STILL 1GB! I cannot find solution. Nobody solved it yet.

The reason is game or some app will test TOTAL XMS MEMORY. The number is so big that it will overflow in old computer program and it will return error because the number will be with negative sign like -123456. And programmer's condition IF TOTAL MEMORY IS LESS THAN 8MB will become true.

Therefore I ask: Is there any solution how to change total xms memory in DOS?

I've tried almost all software solution. Also tried setting MEMORY HOLE in BIOS. Nothing helps. It will change only FREE XMS memory. It will help a little percent of games and apps, but not all.

The only current solution I could think of is remove one 256 MB RAM module and get 768 MB, which has less digits and theoretically should not overflow anymore. But that defeats the purpose of this machine, which is supposed to do a multi-boot and could run some Linux or Windows XP.

Reply 1 of 27, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

One solution I remember is making the not needed RAM into a ramdrive (or several as the max ramdrive size is too small?).

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 3 of 27, by Joseph_Joestar

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-24, 22:38:

Some games have problems with XMS memory. For example Death Rally CD will not install.

There's an updated installer for Death Rally on the developer's website which addresses this:
http://legacy.3drealms.com/rally/index.html

4) XMSDSK /t - this is mostly recommended here, but it is useless

While I haven't run into many games which fail due to "too much RAM" issues, Aladdin is one of them. It simply refuses to start when you have more than 32 MB RAM installed. In that particular case, XMSDSK always worked for me. Here's how I use it to limit my 512 MB system to just 32 MB RAM under DOS 7.1 (as in the DOS mode of Win98SE):

XMSDSK.EXE 491520 F: /t /y

I don't remember if that worked for Death Rally or if I used the updated installer. All I know is that it works fine for Aladdin.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / OPTi 82C930 / AWE64
PC#2: Celeron 466 / Abit ZM6 / Voodoo3 / AWE64 Gold / YMF744 / SC-155
PC#3: AthlonXP 1700+ / Abit KT7A / GeForce4 / SBLive / ALS100
PC#4: Athlon64 3700+ / DFI LanParty / 9600GT / X-Fi Titanium

Reply 4 of 27, by LSS10999

User metadata
Rank Member
Rank
Member

I think it depends on how a program tests system RAM. HIMEMX and XMSDSK only controls the amount of memory available. If the program only tests about available RAM then the trick works.

However, it appears there's at least one way to attain "total physically installed RAM" regardless of actual RAM usable. If a program can acquire that information for check, then all known RAM limiting tricks would become useless as there's no way to change that value unless you physically remove the excess ones.

Should note that Windows Vista and onwards can also acquire that information. System Information (both 32-bit and 64-bit) will display the total amount of RAM physically installed and the amount of memory usable by the system. Additionally, in modern systems/BIOSes, memory sticks that failed checks will also count to "total physically installed RAM", just that they are masked in similar manners (that they appear as "Hardware Reserved" in Resource Monitor).

EDIT: According to here, the way to get physically installed RAM is called GetPhysicallyInstalledSystemMemory. The API could apparently get all the memory physically installed, including the ones masked by BIOS for being faulty. At one time I had a laptop with two 8GB memory sticks installed, one of which developed some issues and became unusable, the system still reported 16GB installed even though only one (8GB) was actually usable (the other 8GB appeared simply as "Hardware Reserved" like I previously mentioned).

EDIT 2: So actually Windows gets the total installed RAM by checking SMBIOS tables. I don't know whether there are already programs in that era capable of reading SMBIOS tables for such information...

Last edited by LSS10999 on 2021-08-25, 06:30. Edited 2 times in total.

Reply 5 of 27, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-24, 22:38:

2) HimemX.exe 32767 or 65535 parameters
3) JemmEx with similar parameters as HimemX

You should use HimemX with the /MAX parameter. That is:
DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M
This limits the available extended memory, not the free.
On my Core2 PC with 4GB RAM installed:
1. Win98 SE default Himem:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 57,344 592,896
Upper 65,552 59,616 5,936
Reserved 0 0 0
Extended (XMS) 3,487,956,9 1,052,656 3,486,904,3
---------------- ----------- ----------- -----------
Total memory 3,488,672,7 1,169,616 3,487,503,1

Total under 1 MB 715,792 116,960 598,832

Largest executable program size 592,880 (579K)
Largest free upper memory block 5,456 (5K)
MS-DOS is resident in the high memory area.

2. HimemX with /MAX=64M parameter:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 51,872 598,368
Upper 65,552 63,200 2,352
Reserved 0 0 0
Extended (XMS) 67,042,288 1,051,632 65,990,656
---------------- ----------- ----------- -----------
Total memory 67,758,080 1,166,704 66,591,376

Total under 1 MB 715,792 115,072 600,720

Largest executable program size 598,352 (584K)
Largest free upper memory block 1,872 (2K)
MS-DOS is resident in the high memory area.

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 6 of 27, by cyberluke

User metadata
Rank Member
Rank
Member
Falcosoft wrote on 2021-08-25, 06:10:
You should use HimemX with the /MAX parameter. That is: DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M This limits the available ex […]
Show full quote
cyberluke wrote on 2021-08-24, 22:38:

2) HimemX.exe 32767 or 65535 parameters
3) JemmEx with similar parameters as HimemX

You should use HimemX with the /MAX parameter. That is:
DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M
This limits the available extended memory, not the free.
On my Core2 PC with 4GB RAM installed:
1. Win98 SE default Himem:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 57,344 592,896
Upper 65,552 59,616 5,936
Reserved 0 0 0
Extended (XMS) 3,487,956,9 1,052,656 3,486,904,3
---------------- ----------- ----------- -----------
Total memory 3,488,672,7 1,169,616 3,487,503,1

Total under 1 MB 715,792 116,960 598,832

Largest executable program size 592,880 (579K)
Largest free upper memory block 5,456 (5K)
MS-DOS is resident in the high memory area.

2. HimemX with /MAX=64M parameter:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 51,872 598,368
Upper 65,552 63,200 2,352
Reserved 0 0 0
Extended (XMS) 67,042,288 1,051,632 65,990,656
---------------- ----------- ----------- -----------
Total memory 67,758,080 1,166,704 66,591,376

Total under 1 MB 715,792 115,072 600,720

Largest executable program size 598,352 (584K)
Largest free upper memory block 1,872 (2K)
MS-DOS is resident in the high memory area.

I wrote the post from my head at midnight. Yes I use himemx with max parameter: /MAX=65535 to be exact and it limits only FREE XMS, not TOTAL XMS. My first column is still 1GB. Third column is 64MB.

Reply 7 of 27, by Gmlb256

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-25, 08:16:
Falcosoft wrote on 2021-08-25, 06:10:
You should use HimemX with the /MAX parameter. That is: DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M This limits the available ex […]
Show full quote
cyberluke wrote on 2021-08-24, 22:38:

2) HimemX.exe 32767 or 65535 parameters
3) JemmEx with similar parameters as HimemX

You should use HimemX with the /MAX parameter. That is:
DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M
This limits the available extended memory, not the free.
On my Core2 PC with 4GB RAM installed:
1. Win98 SE default Himem:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 57,344 592,896
Upper 65,552 59,616 5,936
Reserved 0 0 0
Extended (XMS) 3,487,956,9 1,052,656 3,486,904,3
---------------- ----------- ----------- -----------
Total memory 3,488,672,7 1,169,616 3,487,503,1

Total under 1 MB 715,792 116,960 598,832

Largest executable program size 592,880 (579K)
Largest free upper memory block 5,456 (5K)
MS-DOS is resident in the high memory area.

2. HimemX with /MAX=64M parameter:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 51,872 598,368
Upper 65,552 63,200 2,352
Reserved 0 0 0
Extended (XMS) 67,042,288 1,051,632 65,990,656
---------------- ----------- ----------- -----------
Total memory 67,758,080 1,166,704 66,591,376

Total under 1 MB 715,792 115,072 600,720

Largest executable program size 598,352 (584K)
Largest free upper memory block 1,872 (2K)
MS-DOS is resident in the high memory area.

I wrote the post from my head at midnight. Yes I use himemx with max parameter: /MAX=65535 to be exact and it limits only FREE XMS, not TOTAL XMS. My first column is still 1GB. Third column is 64MB.

Don't worry about that. The rest of the XMS memory is not really used at all and DOS programs will only recognize up to 64MB of XMS with the /MAX parameter, including programs that uses DOS extenders. I have done this by limiting the memory to 16MB and coming with a similar result like yours but it worked in situations where XMSDSK doesn't.

XMSDSK allocates from the XMS memory unlike HIMEMX with /MAX parameter. That's very different as the rest of the XMS memory still gets seen by DOS programs.

Reply 8 of 27, by cyberluke

User metadata
Rank Member
Rank
Member
Falcosoft wrote on 2021-08-25, 06:10:
You should use HimemX with the /MAX parameter. That is: DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M This limits the available ex […]
Show full quote
cyberluke wrote on 2021-08-24, 22:38:

2) HimemX.exe 32767 or 65535 parameters
3) JemmEx with similar parameters as HimemX

You should use HimemX with the /MAX parameter. That is:
DEVICE=C:\win98\command\HIMEMX.EXE /MAX=64M
This limits the available extended memory, not the free.
On my Core2 PC with 4GB RAM installed:
1. Win98 SE default Himem:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 57,344 592,896
Upper 65,552 59,616 5,936
Reserved 0 0 0
Extended (XMS) 3,487,956,9 1,052,656 3,486,904,3
---------------- ----------- ----------- -----------
Total memory 3,488,672,7 1,169,616 3,487,503,1

Total under 1 MB 715,792 116,960 598,832

Largest executable program size 592,880 (579K)
Largest free upper memory block 5,456 (5K)
MS-DOS is resident in the high memory area.

2. HimemX with /MAX=64M parameter:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 650,240 51,872 598,368
Upper 65,552 63,200 2,352
Reserved 0 0 0
Extended (XMS) 67,042,288 1,051,632 65,990,656
---------------- ----------- ----------- -----------
Total memory 67,758,080 1,166,704 66,591,376

Total under 1 MB 715,792 115,072 600,720

Largest executable program size 598,352 (584K)
Largest free upper memory block 1,872 (2K)
MS-DOS is resident in the high memory area.

Hi, I use same technique, but your first column Total XMS shows 64m, while mine still shows 1gb in total and 64m only in third column Free XMS. I have downloaded the latest HimemX from author website. Attaching screenshots. I had to adjust command.com environment parameter as well because it gave out of environmental space error with this amount of ram.

Attachments

Reply 10 of 27, by cyberluke

User metadata
Rank Member
Rank
Member

Here you can see HimemX and JemmEx settings.

As well as Shell Command.com parameters to solve Out of Environmental Space error.

Attachments

  • shell.jpg
    Filename
    shell.jpg
    File size
    111.41 KiB
    Views
    608 views
    File license
    Public domain
  • himem.jpg
    Filename
    himem.jpg
    File size
    114.55 KiB
    Views
    608 views
    File license
    Public domain

Reply 11 of 27, by cyberluke

User metadata
Rank Member
Rank
Member

Around 50% of DOS apps will not run due to this. Either they complain they need AT LEAST 8MB of memory or they will completely hang during the start. For example Death Rally and Project X. They run on another machine with 128M of RAM.

Reply 12 of 27, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-26, 08:25:

Hi, I use same technique, but your first column Total XMS shows 64m, while mine still shows 1gb in total and 64m only in third column Free XMS. I have downloaded the latest HimemX from author website. Attaching screenshots. I had to adjust command.com environment parameter as well because it gave out of environmental space error with this amount of ram.

It's interesting. I have also tested 2 more PC's with more than 1GB RAM.
1. Phenom 2 8GB RAM: It behaves the same way as Core 2 with 4GB RAM. That is 1st column (total XMS) is also 64MB when /MAX=64M is used.
2. Athlon 64 X2 with 4 GB RAM. in this case HimemX produces this strange result:

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655,360 48,128 607,232
Upper 0 0 0
Reserved 393,216 393,216 0
Extended (XMS) 15,728,640 ? 67,039,232
---------------- ----------- ----------- -----------
Total memory 16,777,216 ? 67,646,464

Press any key to continue . . .
Total under 1 MB 655,360 48,128 607,232

Largest executable program size 607,216 (593K)
Largest free upper memory block 0 (0K)
MS-DOS is resident in the high memory area.

That is total XMS is only 16MB, used is unknown and free is always what is asked (in this case 64MB). And I could not reproduce your result on any configurations no matter what command line parameter was used.
So it seems the total XMS reporting after loading HimemX does not work perfectly the same way on every configuration. So far it always successfully provided the required amount of free XMS but the reported total XMS varies at least 3 different ways.
Just for the record: I always used Win98 SE pure DOS mode (so 'ver' command reports Windows 98 version 4.10.2222) and I always used HimemX version 3.34 - Sep. 05. 2015.

BTW Himem.sys from MS works the same way on all configurations. That is it always reports Total XMS in the 3GB-4GB range.

Last edited by Falcosoft on 2021-08-26, 11:50. Edited 1 time in total.

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 13 of 27, by cyberluke

User metadata
Rank Member
Rank
Member

For me Himem.sys will freeze unless I put /NUMHANDLES=80 parameter. I have also pure dos7.1 boot from win98se.

That 16mb happen only if I enable memory hole in BIOS.

I need to investigate some other himemx versions.

Jemmex is very incompatible with dos games even I replace dos4gw with dos32a.

Reply 14 of 27, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-26, 11:48:
For me Himem.sys will freeze unless I put /NUMHANDLES=80 parameter. I have also pure dos7.1 boot from win98se. […]
Show full quote

For me Himem.sys will freeze unless I put /NUMHANDLES=80 parameter. I have also pure dos7.1 boot from win98se.

That 16mb happen only if I enable memory hole in BIOS.

I need to investigate some other himemx versions.

Jemmex is very incompatible with dos games even I replace dos4gw with dos32a.

The Athlon 64 X2 is actually a laptop (HP NX6325) where you have no explicit settings in BIOS for memory hole. But I have an Athlon XP PC with 768 MB RAM where you have an explicit setting for memory hole in 15-16MB range.
Results:
1. Himem.sys from Win98 SE seems to ignore 15-16MB memory hole setting. It always reports the full 768MB total/free XMS.
2. When 15-16MB memory hole is set then HimemX.exe reports 16MB total XMS and the required amount free XMS (or the full 768MB free XMS without the /MAX parameter). So yes, in case of the Athlon 64 X2 most likely the memory whole is fixed in 15-16MB range.
3. When 15-16MB memory hole is NOT set HimemX.exe still reports only 64MB total XMS but the full available 768MB free XMS ( or the required amount of free XMS with the /MAX parameter):

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655 360 51 440 603 920
Upper 0 0 0
Reserved 0 0 0
Extended (XMS) 67 043 328 ? 804 122 624
---------------- ----------- ----------- -----------
Total memory 67 698 688 ? 804 726 544

Total under 1 MB 655 360 51 440 603 920
Press any key to continue . . .

Largest executable program size 603 904 (590K)
Largest free upper memory block 0 (0K)
MS-DOS is resident in the high memory area.

So it still seems that HimemX produces 3 different types of total XMS reporting regardless of 15-16MB memory hole setting.

BTW: Could not you use the 15-16MB memory whole settings of your BIOS together with HimeX to report only 16MB full XMS and still have 64MB free XMS? It seems this could solve your problem.
Also try your configuration without using Jemmex/Jemm386/emm386 or any other memory managers that switch your PC to protected/v86 mode.
If you need UMBs to free conventional memory you can try UMBPCI instead.

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 16 of 27, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-26, 12:47:

Carmagedon 3dfx DOS needs at least 24m of XMS. The only solution here seems to try some older himemx versions and trial and error.

You can have any amount (up to your available RAM) of free XMS. It seems 15-16MB memory hole settings only influences the reported 'total' amount of XMS not the available free XMS. Are you sure that Carmagedon checks the reported 'total' amount of XMS and not the amount of free availabe XMS?

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 17 of 27, by cyberluke

User metadata
Rank Member
Rank
Member

It does not matter really. Problem is that 50% of DOS apps will not run due to Total RAM and/or XMS, which I try to solve. Some apps check total ram, some apps check free ram. Pentium III should be a good DOS machine, but due to this XMS manager problem or RAM issue, it cannot be used. Today after working hours, I will try to pinpoint the issue and try different versions. Maybe also try some other solution, but I feel I'm out of the shots here.

Reply 18 of 27, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

As I wrote before, set up RAM disks. This worked for me way back with Crusader: No Remorse

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 19 of 27, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyberluke wrote on 2021-08-26, 13:46:

It does not matter really. Problem is that 50% of DOS apps will not run due to Total RAM and/or XMS, which I try to solve. Some apps check total ram, some apps check free ram. Pentium III should be a good DOS machine, but due to this XMS manager problem or RAM issue, it cannot be used. Today after working hours, I will try to pinpoint the issue and try different versions. Maybe also try some other solution, but I feel I'm out of the shots here.

Too much reported total RAM problem can be resolved by setting 15-16MB memory hole and using HimemX. Then only 16MB total will be reported. (I do not think there are many DOS apps that need more than 16MB anyway.) But You said Carmagedon is an app that need 24MB but it is still not confirmed that it needs 24MB 'total' reported RAM or it only needs 24MB free RAM.
So let's summarize your situation:
1. Free RAM/XMS is not a problem at all you can have as much as you set with /MAX parameter and this is already working on your side too.
2. Too much reported total RAM/XMS can be cured by setting a 15-16MB memory hole. You should try this on your side.
3. The only question is if you have any programs/games that really need more than 16MB reported total RAM/XMS.

As I wrote before, set up RAM disks. This worked for me way back with Crusader: No Remorse

RamDisk can not cure reported total RAM/XMS problems. It can only work if there is too much reported free RAM/XMS problem.

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic