VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

I notice that Windows 3.0 crashes when starting (after the loading screen, it crashes back to the MS-DOS prompt).

I notice that the following instruction raises a Divide by 0 error 3 times before crashing back to the MS-DOS prompt (MS-DOS 5.0):
2999:419F IDIVW BX
DX=0
AX=0
BX=0

The log from after the first divide error:

Filename
debugger.log
File size
87.18 KiB
Downloads
40 downloads
File comment
Debugger log from the first IDIV error to the next when loading Windows 3.0.
File license
Fair use/fair dealing exception

Anyone knows why this happens? Earlier builds didn't have this problem (build 31/12/2015 and earlier). I've tried reversing the 8086 CPU back to older versions before 31/12/2015, but it will still crash.

When trying to run Windows 3.0 with the 80186/80188 CPU it will run without problems (only difference should be the addition of more instructions and MOV CS exception, as well as a Invalid opcode exception (interrupt 6h)).

Edit: When enabling the 80186+ invalid opcode exception instead of the 8086 NOP version, I notice that it's trying to execute the 80186+ opcode C1 (80186+ opcode)? This is one of the shift/rotate instructions, ignored on my 8086/8088 emulation. Is this the cause that crashes Windows 3.0?

Edit: When disabling all device drivers (latest mouse.sys and Expanded memory manager), it seems Windows keeps repeating calling interrupt 3Fh with AX>0xFFF7(I believe it was 0xFFF8, loading DLL library?)

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