VOGONS


First post, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Hello everyone,

I'm wondering if any compatibility issues are known in conjuction with Win32s 1.30c on WfW 3.11.

I'm wondering, because some Win32s applications, mainly emulators, are abborting if run in DOSBox,
but not if run on real hardware (MediaGX CPU, Pentium MMX level)..

I'm currently using DOSBox 0.74-2 on a Raspberry Pi 4 (4GB) with Raspbian Buster.

Thanks in advance!

Best regards,
Jo22

"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 1 of 5, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The infamous "DOS error 21" can often be prevented with the cputype=pentium_slow setting.

Otherwise, a build of current source may work better.

Reply 2 of 5, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Sometimes different Win32s releases can play a factor (the last win32s release regressed some apps IIRC)

apsosig.png
long live PCem

Reply 3 of 5, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie

It's mostly just the way the stack is allocated on-demand for 32-bit apps; the bottom page is mapped with no access permitted, so as the stack grows and attempts to access it a page fault is triggered which lets the OS know more stack space needs to be allocated. Then the next page below becomes the new bottom, mapped for no access...
The issue with DOSBox is cputypes below 486 (which includes "auto") don't do a proper protection check, they only trigger a fault if both the directory and page table entries (for the faulting address) are protected instead of at least one of them.
I think this is a "cheat" optimization rather than how the actual CPUs of that era worked, it can make a big speed difference in some protected mode games (Descent is probably the most notable one affected).

There's also some other issues with page fault handling like side-effects from instructions not being rolled back, but these are mostly harmless (not always though). The normal core is actually more likely to trigger these than the dynamic core, not sure why it's recommended as being more stable.

Reply 4 of 5, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Thank you very much ripsaw, for spending your time for my question and the quick response! ^^
- tried pentium_slow and it made things slightly better. I also tried core=full, as I did with v0.63 a few years ago, but it was rejected.
Also thanks leileilol for the tip with the different releases of Win32s! I'll set up another Windows installation with a different Win32s for testing.
Jmarsh, thank you sincerely for the detailed explanation. I have noticed that Win32s is very -err..- sophisticated.
Lots of thunking and trickery with undocumented instructions must be going on behind the courtain, I assume.
I remember, I had to use AMD-V/Intel-VT in Virtual PC 2007 to make Win32s work. Which in turn Win9x didn't like.

Edit : Small edit, sorry. I'm not good at English sayings.. 😅

"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//