VOGONS


First post, by donluca4

User metadata
Rank Newbie
Rank
Newbie

I'm extremely confused by memory managers as I don't fully understand whether they're strictly for DOS usage and Windows 98 has its own or if stuff like himem.sys and emm386.exe are used by Windows.

Looking at the web pages of HimemX and UMBPCI they both recommend not using them if you have your machine working correctly, but I know for a fact that Windows98 memory manager is a pile of crap with memory leaks everywhere.
Days ago I was copying a big file from a CF card to the hard disk and memory utilization shot through the roof, to the point where it started swapping on the hard disk.
And the worst part, of course, is that when the file was finally copied the RAM utilization didn't go down, I had to reboot. 😒

I've found contrasting opinions on whether HimemX and UMBPCI have any effect on Windows and if there are any benefits from using them, so I hope someone can shed some light on this!

Reply 1 of 16, by VintagePC'sWizard

User metadata
Rank Newbie
Rank
Newbie

It says you don't have enough ram?

Reply 2 of 16, by Jo22

User metadata
Rank l33t++
Rank
l33t++

In a nutshell: Windows 3.1x and Windows 9x have their own EMM386 equivalent built-in, they don't need EMM386.
If EMM386 is loaded in DOS first, though, then the Windows equivalent will take over once Windows is running (except in Real/Standard-Mode).

Himem.sys is always required to run Windows or EMM386.
It provides an access to Extended Memory, EMM386 works on top of it.
On MS-DOS, at least. Other DOSes and third-party memory managers (QEMM etc) may combine himem.sys/EMM386.

On MS-DOS 7.x, by default, himem.sys is always being loaded secretly.
A separate entry in config.sys isn't needed.

However, MS-DOS 7.x can be forced to not auto-load himem.sys and behave more like MS-DOS 6.2x.
Then, himem.sys must be loaded in config.sys like in the good old days.

MS-DOS 8 has himem.sys built-in into system files, I think.

BootGUI=0 and other settings:
http://users.erols.com/stevieo4/win95tip.html

Edit: The FreeDOS memory managers don't support GEMMIS interface.
Windows in 386 Enhanced-Mode don't run with them (includes 9x).
https://en.wikipedia.org/wiki/EMM386#Overview

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 3 of 16, by donluca4

User metadata
Rank Newbie
Rank
Newbie

Thank you for the exhaustive reply!

So, just to make 100% sure:

- himem.sys is always loaded because it is required to run Windows

- Windows has its own EMM386.exe which "stealth-loads" somehow, because I don't see it being loaded anywhere.
Does this mean the UMBPCI.sys is useless because it gets "overridden" by Windows 98's own EMM386?

Also I think that last part is wrong because himemx.sys which, as far as I understood, is the FreeDOS version of himem.sys, can definitely work with Windows 98.
I have this set up in a virtual machine:
yJszt8v.png
(I replaced himem.sys with himemx.exe by renaming it to himem.sys and overwriting the original one)

How can I check if Windows98 is running in 386 Enhanced mode?

nSmbWPe.png

Reply 4 of 16, by Harry Potter

User metadata
Rank Oldbie
Rank
Oldbie

AFAIK, Win98 will only run in 386-enhanced mode. I have UMBPCI running on my Win98SE tower at my mother's house, as nothing else worked on it in Windows mode, and it worked. Before that, when editing a .pif file, I noticed that EMS was not available. I think you need an EMS provider.

Joseph Rose, a.k.a. Harry Potter
Working magic in the computer community

Reply 5 of 16, by Jo22

User metadata
Rank l33t++
Rank
l33t++
donluca4 wrote on 2025-05-19, 12:05:

Thank you for the exhaustive reply!

You're welcome! ^^

donluca4 wrote on 2025-05-19, 12:05:

- himem.sys is always loaded because it is required to run Windows

Hi, yes. Or something very similar to original himem.sys.

donluca4 wrote on 2025-05-19, 12:05:

- Windows has its own EMM386.exe which "stealth-loads" somehow, because I don't see it being loaded anywhere.

Yes. It's a Windows driver. The system file is vmm.vxd (inside vmm32.vxd, a compressed archive).
That's the Virtual Machine Monitor (or Manager), the very heart of Windows 9x.

donluca4 wrote on 2025-05-19, 12:05:

Does this mean the UMBPCI.sys is useless because it gets "overridden" by Windows 98's own EMM386?

It might be fine, but I'm not entirely sure.
UMBPCI doesn't use Protected-Mode or V86, so it shouldn't get "in the way".
It rather makes physical UMB memory available to DOS (no V86 or MMU/memory-managment unit involved).

donluca4 wrote on 2025-05-19, 12:05:

Also I think that last part is wrong because himemx.sys which, as far as I understood, is the FreeDOS version of himem.sys, can definitely work with Windows 98.

Ah, I see, didn't know that.

donluca4 wrote on 2025-05-19, 12:05:

How can I check if Windows98 is running in 386 Enhanced mode?

Hi, it always is. Real and Standard-Mode exist in Windows 3.x only.
Windows 95/98 is being based on 386 Enhanced mode, just like WfW 3.11.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 6 of 16, by donluca4

User metadata
Rank Newbie
Rank
Newbie

Thanks, that's been very helpful.

This wiki article has really helped me understanding the Windows boot process better: https://en.wikipedia.org/wiki/Architecture_of … x#Boot_sequence

It's just strange to me that two memory managers (EMM386 and UMBPCI) can coexist without interfering with each other.

Reply 7 of 16, by Jo22

User metadata
Rank l33t++
Rank
l33t++
donluca4 wrote on 2025-05-19, 12:53:

It's just strange to me that two memory managers (EMM386 and UMBPCI) can coexist without interfering with each other.

Hi, UMBPCI makes memory available that was meant to be reserved for PCI bus.
Using UMPCI is like sticking an RAM card into ISA bus. Like for example, the 1MB Lo-Tech card.

So it's independent from the processor, it's done via chipset.
Ideally, EMM386 doesn't even realize UMBPCI is there.

The only extra step that UMPCI does is telling DOS that there's read/writeable RAM in the UMA (free UMBs).
It's similar to what USE!UMBS.SYS driver does on an PC/XT when said Lo-Tech card is used.

More information here:
https://www.uwe-sieber.de/umbpci_e.html

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 8 of 16, by donluca4

User metadata
Rank Newbie
Rank
Newbie

I see, that makes perfect sense.

To reply my main question of the thread, now I don't see much benefit in using UMBPCI and/or HimemX for Windows 98 with 512MB of RAM (or less).

If I had more than 512MB of RAM then I'd definitely use HimemX.

And if I were to setup a DOS gaming rig with constrained resources I'd most definitely use UMBPCI.

Hopefully I arrived to the right conclusions and it's that, in my case, I won't bother with either.

Reply 9 of 16, by Harry Potter

User metadata
Rank Oldbie
Rank
Oldbie

Well...UMBPCI worked on my Win98SE tower. In fact, it was the only EMS provider that worked on that system. However, its docs say it will work on certain systems and recommends that it be used only as a last resort. If you're working on DOS mode, QEMM provides the most DOS memory at a course of compatibility. You can also go to https://dosprograms.info.tt/indexall.htm#utils for more efficient DOS drivers for things such the mouse and the cd drive. You can also buy 32k more UMBs by including "I=B000-B7FF" on EMM386 or QEMM's command line at the cost of the mono graphics buffer which is almost never used.

Joseph Rose, a.k.a. Harry Potter
Working magic in the computer community

Reply 10 of 16, by donluca4

User metadata
Rank Newbie
Rank
Newbie
Harry Potter wrote on 2025-05-19, 23:43:

Well...UMBPCI worked on my Win98SE tower. In fact, it was the only EMS provider that worked on that system. However, its docs say it will work on certain systems and recommends that it be used only as a last resort.

Yeah, that was part of my conclusion as well: if everything works, leave it alone, at least under Windows98.

Under DOS it's a different story of course, but I was only interested in Windows, hence the title of the thread.
I've found plenty of threads and information about himemx and umbpci on DOS, but almost nothing for Windows98, so I wanted some confirmation that unless there's something wrong with your setup or you're using more than 512MB of RAM, you won't get any benefit from using other memory managers.

Reply 11 of 16, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Helix Multimedia Cloaking is another alternative, it's Windows 95 compatible.
Re: Can I skip Smartdrive?

More information:
https://en.wikipedia.org/wiki/DOS_Protected_M … imedia_Cloaking
https://en.wikipedia.org/wiki/Helix_Netroom

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 12 of 16, by Harry Potter

User metadata
Rank Oldbie
Rank
Oldbie

You can benefit from other memory managers, but if your system's running well, you might not need them. 😀

Joseph Rose, a.k.a. Harry Potter
Working magic in the computer community

Reply 13 of 16, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

UMBPCI is not an EMS provider. It's an UMB enabler.

EMS provides paging services through an IO port handler, and ideally, through a page frame window. Where or how, or what memory gets paged can be just about anything. It can physically live inside a card. It can be extended memory tjat the handler allocates then pages from. etc.

UMBPCI does mapping using the chipset, but does not provide paging services. It sets up the mapping, then presents a small handler to the DOS kernel to enable the mapped memory for use as UMB, before passing all control to the XMM. (Himem.sys, etc.)

Reply 14 of 16, by Jo22

User metadata
Rank l33t++
Rank
l33t++

It can physically live inside a card. It can be extended memory that the handler allocates then pages from. etc.

In principle, the RAM storage could be attached on an IDE port, even, I think.
Or in a dedicated box, attached via serial and parallel connection.
(Some serial/parallel ports can do DMA, even. Though DMA might not be absolutely required.)

In this case, merely the 64KB EMS "page frame" must be in main memory, I think.
Say in an UMB block or in "conventional" memory.
Were real RAM is available, which acts as a 64KB buffer, rather just a window that maps (points) to the 64KB page frame memory on an EMS card.

In essence that's how LIMulators like EMM286 and Above Disc work.
They use ordinary system memory that plays the role of the 64KB page frame (4 pages, each 16KB in size).

The main problem is the use of i/o ports, I assume.
So the EMS manager must do buffering and accessing data in a "serial" way.
Though SingleWord DMA/MultiWord DMA were possible via ISA IDE "controllers"?
PCI controllers support DMA mode, also. Not sure if it's a big help.
It just came to mind, because we discussed this here a while ago: Expanded Memory (EMS) board for IDE/ATA ?

Edit: Never mind. You can ignore this post. I was just thinking out loud! 😅
In practice, EMS can be simulated by EMM286, Above Disc or EMS Magic..

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 15 of 16, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

If you want "unconventional but slow as sin" places where EMS memory could live, try the LPT port. 😜 A very large 8bit serial SRAM could live there, and its data could be copied in and out of a RAM backed pageframe in conventional memory, or a sufficiently large hardware UMB that serves as the backing device.

EG, you get 64k of UMB using a chipset driver on that 286 luggable/laptop, and are happy to get it-- then, you plug the 4mb or so SRAM into the LPT port and load the driver. It does slow as sin copies in and out of the designated memory location, and sets up the EMS services vector handler.

Reply 16 of 16, by Harry Potter

User metadata
Rank Oldbie
Rank
Oldbie

wierd_w: IIRC, UMBPCI did provide me EMS. Anyway, I'm pretty sure it did. 😀

Joseph Rose, a.k.a. Harry Potter
Working magic in the computer community