0

I tried many 98SE boot disks online, they all boot successfully on my mobile workstation from USB (C:\>), but all can't run the Windows 98SE Installer because of XMS Memory, giving an error like: enter image description here This of course happens inside of himem.sys.

It's about how to get programs like the setup to run, not about the installation itself.

I don't know what's a healthy config.sys, is there anything that makes this computer's ram work with DOS like any computer, because Hyper-V doesn't fail himem.sys under 20+ GB of ram and I've read old computers having this issue with way lower amounts.

It's clearly about the bios not supporting big ram sizes, which already was a problem in 2003/2004 pc's, but no-one seems to have experience with this.

Edit: Nothing has worked yet as of 13 February, 2021.

Specs: Vendor=Clevo, Model=P775DM3, GPU=GTX1070, Display=4K@60hz, RAM=2xDDR4-SODIMM [email protected], [email protected], EBD=USB C:\>, Bios=Aptio/AMI 1.06.09 .W10

13
  • 8
    Related: Windows 98 with 2GB of RAM.
    – wizzwizz4
    Jan 2, 2020 at 15:50
  • 1
    Let us continue this discussion in chat.
    – wizzwizz4
    Jan 2, 2020 at 17:15
  • 4
    I'm no use as to the actual question or the current discussion in chat, so I'll just observe that "don't plan to use most of that" may steal the 2020 crown for understatement. I can't think of a DOS game that uses more than 16mb of RAM so you shouldn't plan to use more than 0.05% of that.
    – Tommy
    Jan 2, 2020 at 19:38
  • 1
    There are lots of reasons this could be happening, but I don't know enough about the specifics of each scenario to make an actual answer. Here's one idea that I know happens for disk size, and it could happen for memory, too. The programs of the time weren't written to expect more than a few megs of memory. They'd store the memory size in a 16- or 32-bit number. 32GB is so remarkably huge that it wraps around and the computer thinks it's zero or negative. Negative whatever bytes of RAM is always less than what the program needs, therefore error. Don't put in that much RAM in the first place.
    – Dranon
    Jan 3, 2020 at 2:47
  • 1
    try Run Turbo C++ in Freedos using all that memory above limit for File buffers always helped me but never used that much RAM in that time ... probably you should write a bat file that run the smartdrive in a loop filling up the memory ....
    – Spektre
    Jan 3, 2020 at 8:48

2 Answers 2

10

The XMS api doesn't support as much memory as you have installed - it uses 16 bit registers to specify memory sizes in units of KiB, so the maximum amount of memory it can report to a program that queries the available memory is just under 64MiB. Windows 98 generally expects applications to use DPMI to request memory rather than XMS, which was only included for legacy support, which probably resulted in the XMS implementation not being updated to handle the larger memory sizes supported by the OS.

I would suggest taking steps to limit your apparent memory size to under 64MiB -- perhaps you have a BIOS setting that will allow you to override the installed memory size? If not, then it may be possible to install a driver before himem loads that returns a faked ram size, which could solve your issues. Unfortunately, I don't know of such a driver - however it is a simple enough job that I'm sure one must exist somewhere.

5
  • 6
    Ultimately, the problem is that the low-order bits of any sufficiently large memory size are all zero. In hexadecimal, 32GB of RAM appears as 0x8'0000'0000 bytes, but even a 32-bit API will miss the 0x8 digit at the start, and see only the zeroes. Both EMS and XMS drivers will then see zero bytes of RAM reported by the BIOS. Unfortunately, it is now rare for a BIOS to include RAM size compatibility options for ancient Windows and DOS versions.
    – Chromatix
    Jan 3, 2020 at 8:21
  • 2
    It may be possible to substitute the HIMEM.SYS from FreeDOS, which is modern enough to handle current computers and their huge RAM sizes.
    – Chromatix
    Jan 3, 2020 at 8:38
  • Chromatix, what you're saying is that running the same setup with 4000 MiB RAM (0x1'0000'0000) under Hyper-V would produce the same result, no and it díd run the setup (I tried 20GB RAM in Hyper-V and the setup runs normally).
    – Ciel Ruby
    Jan 4, 2020 at 23:12
  • 1
    "it uses 16 bit registers to specify memory sizes in units of KiB" -- Actually there is the XMS version 3 API which uses 32-bit registers to specify the memory sizes.
    – ecm
    Mar 22, 2020 at 12:28
  • 1
    @ecm - maybe true (I've never used XMS directly under more recent systems), but the issue isn't XMS itself but rather the DPMI layer that both the applications and at least some parts of the OS use for memory operations instead of talking directly to the XMS driver.
    – occipita
    Apr 24, 2020 at 7:02
3

There's a himemx.exe somewhere to address this issue. I would suggest also to load EMM386.exe /NOEMS to get the installer working.

The line in config.sys should look like this:

device=HIMEMX.EXE /MAX=1048576

Cheers.

1
  • That or XMGR (another modern HIMEM replacement), which are both linked from the Useful DOS Utilities page on the VOGONS wiki.
    – ssokolow
    Jul 11, 2022 at 6:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .