[bug 718] Executing dos DPMI programs

Jukka Heinonen jhei at iki.fi
Sun Nov 24 10:18:55 CST 2002


> Does someone has success when executing DPMI programs ?
> Every program I try to execute at this time fails,
> going to the debugger, saying :
>
> Unhandled exception: privileged instruction in 32-bit code
> (0x00000000).
> In 32-bit mode.
> 0x00000000: int $0x31

DPMI16 programs should work as should simple DPMI32 programs.
However, most DPMI32 programs are not even supposed to work
because there is no real implementation of 32-bit interrupt
handling. It is on my TODO list but I'm currently working on
moving interrupt handlers to winedos dll and I shall return
to DPMI32 support after this.

The problem is that Wine has no support for calling Wine 
functions from application context whose stack and code pointers 
use 32-bit segmented model. Wine interrupt emulation
currently uses a simple scheme which works with any code pointer 
but which fails miserably if stack pointer is over 0xffff. 
The simplest fix would probably be to swap to 16-bit stack on 
entry to Wine interrupt handler. This would mean that only
winedos dll needs to deal with 32-bit segmented stuff.
I have a rather good idea on how this can be implemented.

Anyway, your error message looks quite interesting because 
current Wine version emulates *all* interrupt opcodes in real 
mode, 16-bit protected mode and 32-bit protected mode and thus it
should be impossible to get this error message. Are you sure
you tried executing using the latest CVS version or at least 
the latest release?

-- 
Jukka Heinonen <http://www.iki.fi/jhei/>



More information about the wine-devel mailing list