-1

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 18 March, 2020.

Specs: Vendor=Clevo, Model=P775DM3, GPU=GTX1070, Display=4K@60hz, RAM=2xDDR4-SODIMM 16GB@2.4ghz, CPU=I7-7700K@4.2ghz, EBD=USB C:\>, Bios=Aptio/AMI 1.06.09 .W10

  • 6
    Related: Windows 98 with 2GB of RAM. – wizzwizz4 Jan 2 at 15:50
  • 1
    Let us continue this discussion in chat. – wizzwizz4 Jan 2 at 17:15
  • 2
    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 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 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 at 8:48
7

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 dont know of such a driver - however it is a simple enough job that im sure one must exist somewhere.

| improve this answer | |
  • 4
    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 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 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). – Kevin Crans Jan 4 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 at 12:28
  • @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 at 7:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.