So, the original question was "How to test OpenFile16"? Here's a more complete answer. First, install OpenWatcom as previously described. Then create a text file blah.c containing something like
#include <win/win16.h>
int PASCAL WinMain( HINSTANCE this_inst, HINSTANCE prev_inst, LPSTR cmdline, int cmdshow ) { HFILE h; OFSTRUCT of; h = OpenFile("foobar.dat", &of, OF_CREATE); if (h == HFILE_ERROR) MessageBox(NULL, "Failed", "foobar", 0); else MessageBox(NULL, "OK", "foobar", 0); }
Then compile it with OpenWatcom like this:
$ wine wcl -Zw blah.c
This seems to produce a simple 16 bit testcase that works.
To verify OpenFile16 is being called, get a +file log:
WINEDEBUG=+file wine blah.exe 2>&1 | grep OpenFile trace:file:OpenFile16 "Z:\home\dank\blah.exe" OF_READ OF_SHARE_DENY_WRITE trace:file:OpenFile16 found "Z:\home\dank\blah.exe" trace:file:OpenFile16 (Z:\home\dank\blah.exe): OK, return = 0x58 trace:file:OpenFile16 "foobar.dat" OF_READ OF_SHARE_COMPAT OF_CREATE trace:file:OpenFile foobar.dat OF_READ OF_SHARE_COMPAT OF_CREATE trace:file:OpenFile foobar.dat 1000 trace:file:OpenFile (foobar.dat): OK, return = 0x78 trace:file:OpenFile16 (foobar.dat): OK, return = 0x78
The next step would probably be to figure out how to get Wine's test harness, or something like it, to work in 16 bits.