The Attached file wine-20021125_diff is the same as the following: diff -Naur wine-20021125.old/loader/module.c wine-20021125.new/loader/module.c --- wine-20021125.old/loader/module.c 2002-11-21 03:45:02.000000000 +0000 +++ wine-20021125.new/loader/module.c 2002-12-11 16:06:34.000000000 +0000 @@ -1047,6 +1047,17 @@ /* 16-bit task - get current NE module name */ NE_MODULE *pModule = NE_GetPtr( GetCurrentTask() ); if (pModule) GetLongPathNameA(NE_MODULE_NAME(pModule), lpFileName, size); + else { + /* This is a work-around for DOS programs. The run gets here + because DOS int21/AH=30h calls GetVersion16(), and + GetVersion16() in misc/version.c calls VERSION_Init() which + calls GetModuleFileNameW(), thus gets to this function. + To run win98 DOS-programs such as command.com and sys.com, + remember to set "Windows" = "win98" in section [Version] in + $HOME/.wine/config */ + extern inline char *get_main_exe_name(void); + lstrcpynA( lpFileName, get_main_exe_name(), size); + } } else { diff -Naur wine-20021125.old/miscemu/main.c wine-20021125.new/miscemu/main.c --- wine-20021125.old/miscemu/main.c 2002-10-01 18:07:37.000000000 +0000 +++ wine-20021125.new/miscemu/main.c 2002-12-11 16:06:14.000000000 +0000 @@ -29,6 +29,8 @@ #include "wine/debug.h" static char main_exe_name[MAX_PATH]; +/* get_main_exe_name() only used by GetModuleFileNameA() in loader/module.c */ +inline char *get_main_exe_name(void){return main_exe_name;} static HANDLE main_exe_file; static BOOL (WINAPI *pGetMessageA)(LPMSG,HWND,UINT,UINT); diff -Naur wine-20021125.old/msdos/int21.c wine-20021125.new/msdos/int21.c --- wine-20021125.old/msdos/int21.c 2002-11-21 00:02:10.000000000 +0000 +++ wine-20021125.new/msdos/int21.c 2002-12-11 16:05:58.000000000 +0000 @@ -1336,12 +1336,26 @@ TRACE("GET DOS VERSION %s requested\n", (AL_reg(context) == 0x00)?"OEM number":"version flag"); SET_AX( context, (HIWORD(GetVersion16()) >> 8) | (HIWORD(GetVersion16()) << 8) ); + /* on return: + AL = major version number (2-5) + AH = minor version number (in hundredths decimal) + BH = FF indicates MS-DOS, only if OEM vendor chooses to identify + BH = 00 indicates PC-DOS + + BL:CX = 24 bit OEM serial number if BH is FF + + * for an example DOS version 2.1 returns AL=2 and AH=10 + * DOS versions prior to DOS 2.0 return zero in AH and AL + * DOS version 4.0 and 4.1 usually return the same value of 4.00 + * the OEM serial number is a rarity, though some older OEM DOS versions implemented this feature + * the OS/2 compatibility box returns 10.10 for OS/2 1.1, 10.20 for OS/2 1.2, etc... + */ #if 0 - SET_AH( context, 0x7 ); - SET_AL( context, 0xA ); + SET_AH( context, 0xA ); + SET_AL( context, 0x7 ); #endif - SET_BX( context, 0x00FF ); /* 0x123456 is Wine's serial # */ + SET_BX( context, 0xFF00 ); /* 0x123456 is Wine's serial # */ SET_CX( context, 0x0000 ); break; __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com