В данный момент имеются несколько реализаций Win32 API под MS-DOS/Windows 3.x. Это Win32s, HX-DOS Extender, WDOSX и ещё несколько (незначительных) реализаций. Мне вдруг вздумалось расширить функционал хотя бы чего-нибудь. Win32s по причине отсутствия исходных кодов, невозможности загрузить даже FAR 1.00 beta и отсутствия аналога библиотеки w32scomb.dll отпал. WDOSX эмулирует слишком мало функций Win32 API. Поэтому я начал модифицировать HX-DOS Extender. Благо, он развивается (последняя версия 2.17 датируется 2011 годом), его исходный код открыт и я смог запустить с его помощью DOSBox и FAR 1.00 beta.
Вся модификация сводится к дописыванию недостающих функций. Их я могу узнать по файлам hxstderr.log, которые имеют такой формат:
dpmild32: import not found: DlgDirListA
dpmild32: import not found: SetScrollPos
dpmild32: import not found: SetScrollRange
dpmild32: file USER32.DLL
dpmild32: c:\hx\vesa32.dll: cannot resolve imports
Так я могу найти необходимые функции. Если надо, мне укажут, какого файла не хватает. А эти функции можно взять из дизассемблированных DLL, либо дописать их самостоятельно по образцу Wine/ReactOS/дизассемблированных DLL. Однако при попытке компиляции DKRNL32.DLL с некоторыми дописанными функциями я встретился с неразрешимой проблемой.
Имеется такой BAT файл:
@echo off
rem alternative way to create DKRNL32.DLL
rem uses JWasm, MS lib and MS link
del RELEASE\*.obj
copy ..\NTLFNHLP\RELEASE\int21lfn.obj RELEASE\
jwasm.exe -zze -coff -nologo -Sg -D_KERNEL32_=1 -I..\..\Include -D?FLAT=1 -Fl=RELEASE\ -Fo=RELEASE\ *.asm
cd RELEASE
lib /NOLOGO *.obj /OUTKRNL32S.LIB
lib /NOLOGO DKRNL32S.LIB /REMOVE:DKRNL32.OBJ /OUT:DKRNL32S.LIB
link /NOLOGO DKRNL32.obj DKRNL32S.LIB /DLL /OUT:DKRNL32.DLL /DEF:..\DKRNL32.DEF /MAP /MERGE:.BASE=.data /OPT:NOWIN98
cd ..
jwasm.exe -coff -nologo -Sg -D_KERNEL32_=1 -I..\..\Include -D?FLAT=1 -Fl=SBEMU\ -Fo=SBEMU\ -D?DIRECTDISP=1 thread.asm thread3.asm
cd SBEMU
copy ..\RELEASE\DKRNL32S.LIB .
lib /NOLOGO DKRNL32S.LIB THREAD.OBJ THREAD3.OBJ /OUT:DKRNL32S.LIB
link /NOLOGO ..\RELEASE\DKRNL32.obj DKRNL32S.LIB /DLL /OUTKRNL32.DLL /DEF:..\DKRNL32.DEF /MAP /MERGE:.BASE=.data /OPT:NOWIN98
cd ..
Как видите, здесь нужны JWasm, MS lib и MS link. Первая штука у меня имеется, а вот насчёт второй и третьей я даже не представляю, что это такое и где их искать. Дайте ссылку на необходимые файлы, пожалуйста. Заранее спасибо