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 16GB@2.4ghz, CPU=I7-7700K@4.2ghz, EBD=USB C:\>, Bios=Aptio/AMI 1.06.09 .W10

Ciel Ruby
  • 555
  • 4
  • 13
  • 8
  • 1
  • 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 02 '20 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 03 '20 at 02: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 03 '20 at 08:48
  • 1
    I can't reproduce this problem. Windows 98 Setup starts without error for me on a VirtualBox VM with 32G of RAM. Whatever your problem is, it appears to be in details you're not providing. –  Jan 03 '20 at 19:34
  • 1
    Note that you probably can't install Windows 98SE directly from a USB drive, and you won't be able to install Windows 98SE to a USB drive. You'll need a 128GB or smaller IDE/SATA hard drive to install Windows to. –  Jan 03 '20 at 20:55
  • 1
    I assumed you're were running the Windows 98SE Setup program for a reason. –  Jan 03 '20 at 22:16
  • I don't think you're listening because you think it's running, while i heavily implied it's not and you closed the thread, before it was even really solved. Is asking how do I run DOS on a P775DM3 really unfocused? – Ciel Ruby Jan 04 '20 at 12:13
  • 1
    Consider moving in under hyper-v (if DOS is able to) and then limit the RAM available to the VM. – Thorbjørn Ravn Andersen Jan 04 '20 at 14:27
  • I did it again, installed it in Hyper-V on a physical disk so my PC can boot, it hangs on loading, in safe mode pressing escape on loading screen, it displays HIMEM is testing extended memory.... In Hyper-V it doesn't load because of Windows protection error. You need to restart your computer. I already put maxfilecache and maxphyspage on 524288 and 40000. – Ciel Ruby Jan 04 '20 at 15:17
  • I was able to boot into the Windows 98 DOS prompt and tried to boot the setup again from there and it still has the himem extended/XMS memory error from in the post. I tell you, It's either DDR4, SO-DIMM, or at least something else than GB RAM. – Ciel Ruby Jan 04 '20 at 22:43
  • Also, for the setup in Hyper-V, don't click on the screen and just use your keyboard, if you click, mouse and keyboard will stop working. Only click the title bar, or you'll think it froze, but it didn't. – Ciel Ruby Jan 05 '20 at 10:51

2 Answers2

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.

Glorfindel
  • 407
  • 1
  • 3
  • 16
occipita
  • 2,347
  • 1
  • 9
  • 20
  • 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 03 '20 at 08: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 03 '20 at 08: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 04 '20 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 '20 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 '20 at 07: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.

Jeepika
  • 31
  • 1