VOGONS


First post, by Rav

User metadata
Rank Member
Rank
Member

Hi, I have an issue since a while and after some testing I noticed that it happen when EMS is enabled.

Here the problem, you launch a game that require DOS4GW/DOS32A enablers, It load the enabler then it pause for about 15 to 20 seconds... Then the game start to actually load. Game work normally and speed is correct.

When I quit game, I get the same "Pause" before getting the DOS prompt back.

It does not append when I load only with himem.sys but it append when I load 386MAX with EMS instead of himem.

I know that 386MAX can have some compatibility issue there and there but considering the fact that ALL games that use a protected mode enabled have the same "pause" bug.

Anyone got the same and could fix it (without having to reboot to the himem only preset)?

Reply 1 of 6, by Horun

User metadata
Rank l33t++
Rank
l33t++

Ok curious why running 386Max instead of standard Himem.sys + EMM386 ?
What motherboard, what other cards installed ?
IMHO DOS4gw does not like how you have your memory setup but not bad enough to error, so it takes time for it to load and find the usable memory that is not being mapped elsewhere to finally launch the game.
Same when you stop a game and it unloads, it has to reset everything back. More info needed as to why and how you are using 386MAX....

Hate posting a reply and then have to edit it because it made no sense 😁 First computer was an IBM 3270 workstation with CGA monitor. Stuff: https://archive.org/details/@horun

Reply 2 of 6, by Rav

User metadata
Rank Member
Rank
Member
Horun wrote on 2023-05-18, 02:22:

Ok curious why running 386Max instead of standard Himem.sys + EMM386 ?

With 386MAx I can have 629KB of conventional memory, with EMM386, I can manage 599KB (with the same TSRs)

The attachment ram.jpeg is no longer available
Horun wrote on 2023-05-18, 02:22:

What motherboard, what other cards installed ?

Acer AG1X/2 - M1429G chipset
Onboard VLB Cirrus Logic GD-5430
MediaVision Pro Audio Spectrum 16
3COM 3C509-B

Horun wrote on 2023-05-18, 02:22:

IMHO DOS4gw does not like how you have your memory setup but not bad enough to error, so it takes time for it to load and find the usable memory that is not being mapped elsewhere to finally launch the game.
Same when you stop a game and it unloads, it has to reset everything back. More info needed as to why and how you are using 386MAX....

I did some test, you are right. Somehow on my system, DOS4GW/DOS32A don't really like 386max.

I did try with emm386 with same extra inclusion (I=B000-B7FF), and it work fine.

So now I have to decide, small delay when I load protected mode games but 629KB of conventional memory, or no delay for loading but only 599KB.
I can do more test with different configurations in 386max.pro, more search&reading required.

Reply 3 of 6, by Rav

User metadata
Rank Member
Rank
Member

Switched to QEMM, problem solved
And I have 634KB on conventional memory now.

Note : I did also find way to improve it by switching the extender stub in games.

For example, WDOSX and PMODEW and some old version of DOS4GW did not have the "delay" issue under 386max.

Reply 4 of 6, by Horun

User metadata
Rank l33t++
Rank
l33t++

Great ! Interesting and good info.

Hate posting a reply and then have to edit it because it made no sense 😁 First computer was an IBM 3270 workstation with CGA monitor. Stuff: https://archive.org/details/@horun

Reply 5 of 6, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Hi there, I assume the issue is because these Protected Mode extenders (DOS4GW etc) do use an API (or ABI) to communicate with v86 memory managers.
Since both use Protected Mode/V86, they need to do that. Himem.sys, ny contrast, is a 286 friendly memory manager and doesn't use V86 as such.

And perhaps that's were problem is rooted.
EMM386 and QEMM were very popular, so DOS4GW and other DOS Extender had specific support built-in and/or were tested with both of them.

386Max wasn't bad, but perhaps the revisions of the Extenders used had no complete support for it yet.

"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 6, by Rav

User metadata
Rank Member
Rank
Member
Jo22 wrote on 2023-05-19, 05:05:
Hi there, I assume the issue is because these Protected Mode extenders (DOS4GW etc) do use an API (or ABI) to communicate with […]
Show full quote

Hi there, I assume the issue is because these Protected Mode extenders (DOS4GW etc) do use an API (or ABI) to communicate with v86 memory managers.
Since both use Protected Mode/V86, they need to do that. Himem.sys, ny contrast, is a 286 friendly memory manager and doesn't use V86 as such.

And perhaps that's were problem is rooted.
EMM386 and QEMM were very popular, so DOS4GW and other DOS Extender had specific support built-in and/or were tested with both of them.

386Max wasn't bad, but perhaps the revisions of the Extenders used had no complete support for it yet.

Yes, There is DPMI and/or VCPI.
The memory manager (emm386, 386max, qemm etc etc) include DPMI, VCPI or both.
VCPI was first but did not get traction because Microsoft released the DPMI specs and it's what caught on because it's what Windows use.

When you start a game that need a dos extender, the dos extender will first look for a DPMI host (the memory manager) and if found, will send request to it for the memory management stuff and protected mode switch.

If there is no DPMI/VCPI host on the system (let say you just boot with himem), then the DOS expander will launch it's very own DPMI host and use that one for the memory management.

At the end, the memory manager do most the work but if there is no memory manager, the extender do all the work. Because you can't have two competing memory manager doing there things in the same time.