static DWORD WINAPI MZ_DOSVM( LPVOID lpExtra ) { CONTEXT context; INT ret; dosvm_pid = getpid(); memset( &context, 0, sizeof(context) ); context.SegCs = init_cs; context.Eip = init_ip; context.SegSs = init_ss; context.Esp = init_sp; context.SegDs = DOSVM_psp; context.SegEs = DOSVM_psp; context.EFlags = V86_FLAG | VIF_MASK; DOSVM_SetTimer(0x10000); ret = DOSVM_Enter( &context ); if (ret == -1) { /* fetch the app name from the environment */ PDB16 *psp = PTR_REAL_TO_LIN( DOSVM_psp, 0 ); char *env = PTR_REAL_TO_LIN( psp->environment, 0 ); while (*env) env += strlen(env) + 1; env += 1 + sizeof(WORD); if (GetLastError() == ERROR_NOT_SUPPORTED) MESSAGE( "wine: Cannot start DOS application %s\n" " because vm86 mode is not supported on this platform.\n", debugstr_a(env) ); else FIXME( "vm86 mode failed error %u\n", GetLastError() ); } dosvm_pid = 0; return ret != 0; }
static DWORD WINAPI MZ_DOSVM( LPVOID lpExtra ) { CONTEXT context; DWORD ret; dosvm_pid = getpid(); memset( &context, 0, sizeof(context) ); context.SegCs = init_cs; context.Eip = init_ip; context.SegSs = init_ss; context.Esp = init_sp; context.SegDs = DOSVM_psp; context.SegEs = DOSVM_psp; context.EFlags = V86_FLAG | VIF_MASK; DOSVM_SetTimer(0x10000); ret = DOSVM_Enter( &context ); dosvm_pid = 0; return ret; }