VOGONS


First post, by uniQ

User metadata
Rank Newbie
Rank
Newbie

I recently encountered crashes on some DOS games under Windows 95C, though when restarting into MS-DOS mode, they're working fine.
This is an error message I get when running ZoneRaiders:

Screenshot 2022-07-04 141955.png
Filename
Screenshot 2022-07-04 141955.png
File size
52.81 KiB
Views
1005 views
File license
Public domain

Does anyone have an idea how to fix this?

System:
Pentium MMX 166MHz
32MB RAM
S3 Virge + Voodoo 1
SB16

Autoexec.bat:

Screenshot 2022-07-04 142822.png
Filename
Screenshot 2022-07-04 142822.png
File size
23.17 KiB
Views
1005 views
File license
Public domain

Config.sys:

Screenshot 2022-07-04 142909.png
Filename
Screenshot 2022-07-04 142909.png
File size
26.3 KiB
Views
1005 views
File license
Public domain

Reply 1 of 10, by zapbuzz

User metadata
Rank Oldbie
Rank
Oldbie

i've run an old version of dosbox on windows millennium before but i don't know about windows 95. Sometimes its not enough ram or gpu vram.
in these modern times if i were adventurous i'd find a compatable dosbox to try especially if i had lots of ram. Like an upgrade to command shell that there may be a compatibility wrapper missing?. Perhaps you could try a custom shortcut that specifies full screen mode and dos mode if exist.
But windows could then run without config.sys and autoexec.bat optimisations too and windows seems to run better like that.
There are system.ini tweaks to search for to optimise memory for your memory size as well.
Many games used to misbehave with windows 95 typically they were set to reboot the pc into dos mode and then reboot back to windows when done.

Last edited by zapbuzz on 2022-07-04, 15:09. Edited 1 time in total.

Reply 2 of 10, by superfury

User metadata
Rank l33t++
Rank
l33t++

It looks like it's trying to run in protected mode (32-bit) while Windows is running. Normally, Windows doesn't allow the second memory manager to access Windows' protected register(CR0), which would break Windows if it did.
The only option is to run in barebones MS-DOS in such a case.

It's trying to replace Windows with itself to run itself, which obviously can't be allowed. Doing so would corrupt Windows after all.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 3 of 10, by zapbuzz

User metadata
Rank Oldbie
Rank
Oldbie
superfury wrote on 2022-07-04, 13:15:

It looks like it's trying to run in protected mode (32-bit) while Windows is running. Normally, Windows doesn't allow the second memory manager to access Windows' protected register(CR0), which would break Windows if it did.
The only option is to run in barebones MS-DOS in such a case.

It's trying to replace Windows with itself to run itself, which obviously can't be allowed. Doing so would corrupt Windows after all.

I think this is a better response than mine 😀

Reply 4 of 10, by Oetker

User metadata
Rank Oldbie
Rank
Oldbie

Also I would remove all drivers from autoexec.bat/config.sys on a Windows system. Or at least move the autoexec lines into dosstart.bat.
Maybe someone else can chime in if loading ctmouse/mscdex actually affects Windows (i.e. will cdrom access go through the dos driver?), or if Windows just unloads them?

Reply 5 of 10, by uniQ

User metadata
Rank Newbie
Rank
Newbie
superfury wrote on 2022-07-04, 13:15:

It looks like it's trying to run in protected mode (32-bit) while Windows is running. Normally, Windows doesn't allow the second memory manager to access Windows' protected register(CR0), which would break Windows if it did.
The only option is to run in barebones MS-DOS in such a case.

It's trying to replace Windows with itself to run itself, which obviously can't be allowed. Doing so would corrupt Windows after all.

Thank you all for your replies!
Is there any way to avoid this?

Reply 7 of 10, by zapbuzz

User metadata
Rank Oldbie
Rank
Oldbie
uniQ wrote on 2022-07-04, 13:47:
superfury wrote on 2022-07-04, 13:15:

It looks like it's trying to run in protected mode (32-bit) while Windows is running. Normally, Windows doesn't allow the second memory manager to access Windows' protected register(CR0), which would break Windows if it did.
The only option is to run in barebones MS-DOS in such a case.

It's trying to replace Windows with itself to run itself, which obviously can't be allowed. Doing so would corrupt Windows after all.

Thank you all for your replies!
Is there any way to avoid this?

i think you can make a windows shortcut to reboot into dos to play and return to windows when game exits

Reply 8 of 10, by uniQ

User metadata
Rank Newbie
Rank
Newbie
zapbuzz wrote on 2022-07-04, 15:05:
uniQ wrote on 2022-07-04, 13:47:
superfury wrote on 2022-07-04, 13:15:

It looks like it's trying to run in protected mode (32-bit) while Windows is running. Normally, Windows doesn't allow the second memory manager to access Windows' protected register(CR0), which would break Windows if it did.
The only option is to run in barebones MS-DOS in such a case.

It's trying to replace Windows with itself to run itself, which obviously can't be allowed. Doing so would corrupt Windows after all.

Thank you all for your replies!
Is there any way to avoid this?

i think you can make a windows shortcut to reboot into dos to play and return to windows when game exits

Yup, works like a charm. Thanks. 😀

Reply 9 of 10, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Some games segfaulting when run under Windows 9X is normal behavior that happened then. 😀
It's why most games ~92-95 shipped PIFs for a DOS boot or managing memory settings, and why Win95/98 tries to suggest MS-DOS mode before it starts as it conveniently checks its internal database of known crashy apps to spew a pif out (with the "pathetic..."-angled MS-DOS icon)

Win95 is much better behaved with DOS games than Win3x ("dos is dead" was a major marketing point as OS/2 was flaunting its virtualization of DOS), but as it's DOS you're still dealing with, it'll never be perfect.

apsosig.png
long live PCem

Reply 10 of 10, by superfury

User metadata
Rank l33t++
Rank
l33t++

Well, if you look up a diagram of the Windows 9x architecture, you'll see why the MS-DOS game crashes under Windows.
It's trying to do kernel mode (ring 0 only is allowed to do that) privilleged stuff while running as a MS-DOS app in ring 3(user mode). The processor forbids that use case, thus causing a fault which the OS in ring 0 handles and terminates the app.

Otoh, when running an app outside of Windows (from MS-DOS for example), it actually is running in ring 0(as is MS-DOS, until the app changes things with it's own memory manager etc.). In that case, it can do whatever it wants to all memory and instructions, as it was built to do.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io