A few comments about this patch by Eric Pouech.half of what you (rightfully) suggest to fix had been broken for very long in msdos/int21.c (so don't blame me too much... at least not for that half)
Structure DosHeap must not be moved to winedos.
There already exists per drive media ID byte which
should be used and biosdate, while it may be needed by some programs, won't do any good in a separate 16-bit
segment. Also, INT21_CreateHeap is unnecessary.
IOCTL 0x0860 and CreateBPB should include FIXME comments because it does not check real drive types nor real drive geometry. The same is true with other IOCTLs that return fake values.
INT21_NetworkFunc should return NETBIOS name. There is a separate Win32 API for returning proper names, don't use gethostname.
INT21_GetDriveAllocInfo should pass drive as a parameter, rewriting registers makes code less readable.
As far as I know, TRUENAME implementation is broken. Add big FIXME notes to that subfunction.
Use INT21_MapDrive instead of manual conversion from zero=default into zero='A' convention, that is why it is there.
Use wide characters and manual wide character conversions. DOS routines use OEM code page and not ANSI code page and Wine uses wide characters as default character set, anyway. Also, adding drive number to 'A' may work incorrectly with illegal drives and 8-bit character set but it works fine with wide character set.
I hope anyway I didn't step on your toes with this patch... Do you have some work going on in this area ?
A+
-- Eric Pouech