Win16-os hibakeresés

Valamit elronthattam, debuggolni kellene. Ahogy látszik a dolog, Assembly szinten kellene nézelődni (A function-prolog lehet rossz. Talán.)... Sajnos a jó öreg BorlandC4.5-höz tartozó TDW nem indul el. Google barátom az OpenWatcom-ot ajánlotta, annak van 16-bites fordítója és debuggere is. Kipróbáltam, tényleg van.
Sajnos megpusztul azon a ponton, amikor 'huge' pointerrel kellene matekoznia.
Ez a forrásprogram, a memory model large, a szerkesztésnél a lib286\clibl -t használom [szerk: itt korábban tévesen 'clibc' állt -- akkor legalább meglenne a hiba], ennek ellenére a __PIA úgy fut(na) le, hogy a DS-t nem állítja be, vagyis mintha nem tudná, hogy 'large' modellben vagyunk...

wcl opciói:

wcl -d2 -c -bw -ml -2 fontlist.c

wlinker paramétere:

NAME fontlist.exe 
FORMAT WINDOWS 
OPTION NODEFAULTLIBS 
OPTION NOCASEEXACT 
OPTION STACK=16384 
OPTION MAP 
OPTION VERBOSE 
DEBUG WATCOM ALL 
FILE fontlist.obj 
LIBPATH C:\WATCOM\LIB286 
LIBPATH C:\WATCOM\LIB286\WIN 
LIBRARY clibl.lib 
LIBRARY commdlg.lib 
LIBRARY windows.lib 

20140120.1140: A callback paraméterezése volt rossz, a 'fontType' paraméter Win16 esetén 'int', Win32/64 esetén 'DWORD'. (Mondjuk az első két paraméter típusa is 'ingadozó', LOGFONT/ENUMLOGFONT/ENUMLOGFONTEXDV, TEXTMETRIC/NEWTEXTMETRIC...)

Hozzászólások

A TDW mire panaszkodik?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Alapvetően a Windows NT-re. Lenne még a TD32, de az nem viszi a 16-bites alkalmazást. Az egész kezdete az volt, hogy a dtelnet-ben eltoltam valamit, de csak a 16-bites verzióban van hibajelenség. A gond az EnumFontFamilies callback-jével van, aminek a paraméterezése verziók között különböző. Ha szerencsém van, akkor az olyasféle #define-ok, mint STRICT meg WIN32_LEAN_AND_MEAN segítenek
megtalálni a hibát. Ettől függetlenül jó lenne, ha rájönnék, mit rontottam el az OpenWatcom-mal (és ez még csak nem is az igazi program, csak C. Petzold egyik demoprogramja!) No meg az is érdekelne, hogy miért nem panaszolt az a kevés felhasználó, aki letöltötte? Mert mind csak tévedésből töltötte le a 32/64-bites helyett?
--
zsebHUP-ot használok!

WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE DESCRIBE IT HERE!

Epic.

Mondjuk annyit érdemes megemlíteni, hogy ha az időutazás még nem ért véget, és még mindig WIN16-ra (is) akarunk fordítani, akkor legalább ennyit tegyünk magunkért:

#if !defined (_WIN32)
    #ifndef WINVER
	#define WINVER 0x030a
    #endif
#endif

ugyanis egyes header-ek televannak #if-ekkel és a WINVER-től függően más-más módon prototype-olják például az EnumFont[Families] callback-függvényét... (TEXTMETRIC vs NEWTEXTMETRIC, LOGFONT helyett ENUMLOGFONT...) mintha nem lenne elég a 16/32-bit közötti inkompatibilitás