Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to index page
Thread view  Board view
DOSGuy

Homepage

25.09.2011, 20:17
 

HX DOS Extender (Emulation)

Hi everyone.

I have yet to get any Windows program running with HX DOS Extender under DOSBox, and I'm wondering if anyone else has had success with this. Any program I try, including those that list as working (ScummVM, Quake 2, etc.) fail with import errors -- usually SB16.dll -- despite all of the tests in the test folder passing.

For ScummVM, with or without DOSLFN, hxrt216 is able to bring up black-and-white GUI, but the mouse pointer can't leave the center of the screen by more than a few pixels, and then the emulation freezes. hxrt217 RC brings up nothing more than a black screen and frozen mouse pointer, so there may be a regression.

Anyway, I just want to check everyone else's experiences and see if I'm missing something stupid. I'm installing HXRT and the corresponding HXGUI, but every program fails saying that msvcrt.dll can't be found, so I found a copy online (so maybe that's the problem). Once I have msvcrt.dll, some programs will go into graphics mode and report errors, and others never leave the command prompt.

---
"Today entirely the maniac there is no excuse with the article." Get free DOS, OS/2 and Windows games at http://www.classicdosgames.com.

Doug

E-mail

26.09.2011, 00:11

@ DOSGuy
 

HX DOS Extender

I've had pretty-good results running many Win32 programs under
real DOS + HX/HXGUI. (But i can't be sure that the ones that
don't aren't failing because of something i'm doing... or not
doing.) Keep in mind that it's just not realistic for HX/HXGUI
to run everyting! I've had much better success with Win32
console programs than GUI programs -- iirc, Win32 GUI programs
are limited under HX to those that have only one window.

Anyway, what i've done on my system is to copy a bunch of the
more-frequently-needed Win9x files right to my HX/HXGUI binaries
directory. Here's the one's i've copied: 8514OEM.FON,
8514FIX.FON, 8514SYS.FON, SSERIF.FON, OPENGL32.DLL, GLU32.DLL,
CRTDLL.DLL, MSVCRT.DLL, MSVCRT10.DLL, MSVCRT20.DLL, MSVCRT40.DLL,
MSVCR71.DLL, MSVCR80.DLL, MSVCR90.DLL, WNASPI32.DLL, APIX.VXD,
SDL.DLL. This is to speed things up, since real DOS accesses
FAT32 partitions more slowly than FAT16 partitions (and my
Win98SE is FAT32 and my DOS is FAT16). Also 'cause
\Windows\System usually contains *lots* o' files, and it takes
time to look thru a big directory.

Then i put the HX binaries path in my PATH variable, followed by
the C:\Windows\System path. It's important that DOS find (and
use) the comparable HX DLLs before the Win9x ones.

Using this setup, i'm able to successfully run Win32 versions of
(just a sampling): MPlayer, MEncoder, KPic, Globe, SoX, WavPack,
WvUnpack, LAME, Dissolve 3D (only the early v1.4), TrID, CJPEG,
DJPEG, JPEGTran.

Oh, yeh, one more thing: Some Win32 binaries use long file names
and/or paths, either for themselves or their dependencies. In
that case, you'll need to run DOSLFN first. Or (as i'm want to
do), hack the internal DLL names and rename the files to 8.3
versions. (I know, i know, a lotta work....)

Hope that helps....

- Doug B.

DOSGuy

Homepage

26.09.2011, 03:03

@ Doug
 

HX DOS Extender

I'm glad you've had some success using real DOS. DOSBox can boot a real copy of DOS, but I was hoping I wouldn't have to. I picked my programs carefully, picking programs with low system requirements that don't use DirectX, and ideally use only one window. As I mentioned, some of the programs that aren't working for me are listed as working at http://www.unet.univie.ac.at/~a0503736/php/drdoswiki/index.php?n=Main.HX-DOS-lists

Just in case it helps, here are the error messages from a small sample of the programs that I've tried:

ScummVM v1.3.1

Used to boot into a monochrome GUI, the mouse pointer would be jump back to the center as I moved it around, and it would freeze after a few seconds.

Now I'm getting "WARNING: Could not find theme 'scummmodern' falling back to builtin!"

A text-based mouse cursor is available, but the program is otherwise frozen.


The Adventures of MicroMan

dpmild32: import not found: GetScrollInfo
dpmild32: import not found: SetScrollInfo
dpmild32: file USER32.dll
dpmild32: c:\hxrt216\bin\SB16.DLL: cannot resolve imports


Grand Chess

dpmild32: import not found: PlaySoundA
dpmild32: file WINMM.dll
dpmild32: c:\hxrt216\bin\SB16.DLL: cannot resolve imports


Mah Jongg '97

dpmild32: import not found: ReuseDDElParam
dpmild32: import not found: GetDCEx
dpmild32: import not found: DeferWindowPos
dpmild32: import not found: EndDeferWindowPos
dpmild32: import not found: ScrollWindow
dpmild32: import not found: SetScrollInfo
dpmild32: import not found: SetScrollRange
dpmild32: import not found: GetScrollPos
dpmild32: import not found: SetScrollPos
dpmild32: import not found: CreateDialogIndirectParamA
dpmild32: import not found: BeginDeferWindowPos
dpmild32: import not found: ShowScrollBar
dpmild32: import not found: HideCaret
dpmild32: import not found: ShowCaret
dpmild32: import not found: ExcludeUpdateRgn
dpmild32: import not found: DefDlgProcA
dpmild32: file USER32.dll
dpmild32: c:\hxrt216\bin\SB16.DLL: cannot resolve imports

---
"Today entirely the maniac there is no excuse with the article." Get free DOS, OS/2 and Windows games at http://www.classicdosgames.com.

DOS386

04.11.2011, 09:30

@ Doug
 

HX DOS Extender VXD

> Anyway, what i've done on my system is to copy a bunch of the
> more-frequently-needed Win9x files right to my HX/HXGUI binaries
> directory. Here's the one's i've copied:
...
> APIX.VXD

COOL :-)

---
This is a LOGITECH mouse driver, but some software expect here
the following string:*** This is Copyright 1983 Microsoft ***

Japheth

Homepage

Germany (South),
26.09.2011, 07:30

@ DOSGuy
 

HX DOS Extender

> I have yet to get any Windows program running with HX DOS Extender under
> DOSBox, ...and I'm wondering if anyone else has had success with this. Any
> program I try, including those that list as working (ScummVM, Quake 2,
> etc.) ...

There are 2 misconceptions: First, DOSBox is not a target for HX. Some programs might work by chance, but I usually don't test things under DOSBox - because it's a rather limited DOS emulation only. Second, ScummVM is not "list as working".

---
MS-DOS forever!

DOSGuy

Homepage

26.09.2011, 16:18

@ Japheth
 

HX DOS Extender

> There are 2 misconceptions: First, DOSBox is not a target for HX. Some
> programs might work by chance, but I usually don't test things under DOSBox
> - because it's a rather limited DOS emulation only. Second, ScummVM is not
> "list as working".

I wasn't under the impression that DOSBox was a target for HX, but I hoped that you or other forum users might have had some success using HX DOS Extender in DOSBox. If it can't or won't work in DOSBox's limited DOS environment, I can always boot FreeDOS in DOSBox.

ScummVM is listed as working in HX DOS Extender at this apparently unofficial page, but it doesn't say which version of ScummVM they got working. Stryfe from the ScummVM forums got ScummVM running in HXRT216 in May 2011, so it was probably with a recent version.

---
"Today entirely the maniac there is no excuse with the article." Get free DOS, OS/2 and Windows games at http://www.classicdosgames.com.

bocke

28.09.2011, 02:39

@ DOSGuy
 

HX DOS Extender

> but it doesn't say which version of ScummVM they got working. Stryfe from the
> ScummVM forums
> got ScummVM running in HXRT216 in May 2011, so it was probably with a
> recent version.

The best bet would be to ask them directly (in that topic). ;)

DOSGuy

Homepage

28.09.2011, 10:26

@ bocke
 

HX DOS Extender

> > but it doesn't say which version of ScummVM they got working. Stryfe from
> the
> > ScummVM
> forums
> > got ScummVM running in HXRT216 in May 2011, so it was probably with a
> > recent version.
>
> The best bet would be to ask them directly (in that topic). ;)

ScummVM v1.3.1 was only going to a black-and-green GUI in HXRT216 and freezes shortly afterwards, whereas HXRT217 RC only gives a black screen. I tried ScummVM v1.2.1 in HXRT216 and it's often possible to start a game from the GUI before it freezes. Since the GUI seemed to be the problem, I decided to skip the GUI and try to run the game directly from the command line (i.e. dpmild32 -g scummvm -f -pc:\curse comi"), which launched me directly into The Curse of Monkey Island!

COMI is very, very slow under HXRT216 in DOSBox. I then tried the game in ScummVM v1.3.1, and it's much faster, but I lost the subtitles, and calling for them from the command line with -n seemed to crash the game. If I use yhkwong's build with Roland MT-32 emulation and instruct ScummVM to use --native-MT32, I get sound effects before the game freezes!

So, HX DOS Extender definitely doesn't handle ScummVM's GUI very well, with v1.2.1 working much better than v1.3.1. Games are playable in both versions of ScummVM using HXRT216, but I get nothing but a black screen using any method with HXRT217 RC. There definitely seems to be a regression that's preventing ScummVM from working in HXRT217.

---
"Today entirely the maniac there is no excuse with the article." Get free DOS, OS/2 and Windows games at http://www.classicdosgames.com.

bocke

28.09.2011, 02:42

@ DOSGuy
 

HX DOS Extender

> Anyway, I just want to check everyone else's experiences and see if I'm
> missing something stupid. I'm installing HXRT and the corresponding HXGUI,
> but every program fails saying that msvcrt.dll can't be found, so I found a
> copy online (so maybe that's the problem). Once I have msvcrt.dll, some
> programs will go into graphics mode and report errors, and others never
> leave the command prompt.

You might want to try an older version of msvcrt.dll.

DOSGuy

Homepage

28.09.2011, 10:29

@ bocke
 

HX DOS Extender

> > Anyway, I just want to check everyone else's experiences and see if I'm
> > missing something stupid. I'm installing HXRT and the corresponding
> HXGUI,
> > but every program fails saying that msvcrt.dll can't be found, so I found
> a
> > copy online (so maybe that's the problem). Once I have msvcrt.dll, some
> > programs will go into graphics mode and report errors, and others never
> > leave the command prompt.
>
> You might want to try an older version of msvcrt.dll.

I grabbed a copy from Windows 95. It didn't cause any program to start working or eliminate any errors, but things also didn't get any worse.

---
"Today entirely the maniac there is no excuse with the article." Get free DOS, OS/2 and Windows games at http://www.classicdosgames.com.

bocke

15.10.2011, 12:16

@ DOSGuy
 

HX DOS Extender

Haven't messed with Hx for some time. When I get time I'll try. But I think it worked for some app I tried.

bocke

15.10.2011, 12:22

@ bocke
 

HX DOS Extender

Btw, there shouldn't be that big differences between different versions of mfc42... But Win95... I know there are newer revision for 98 or Me. XP version is probably just bug-fixed and recompiled. Might work, but I'm not sure how much of win32 Hx emulates. However, mfc42 should be only necessary for compatibility with older apps. But, I might be wrong.

DOSGuy

Homepage

14.11.2011, 16:20

@ bocke
 

HX DOS Extender

> Haven't messed with Hx for some time. When I get time I'll try. But I think
> it worked for some app I tried.

Did you get a chance to look for the app?

---
"Today entirely the maniac there is no excuse with the article." Get free DOS, OS/2 and Windows games at http://www.classicdosgames.com.

bocke

01.03.2012, 00:26

@ DOSGuy
 

HX DOS Extender

As I promissed I tried but without the success with 1.4.1 because of missing export in shell32.dll.

What I did:
1. Downloaded 7zip from FreeDOS software repository:
http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/file/7zip/
2. Downloaded "Unofficial Windows 95/OSR1/OSR2/98/98 SP1/98 SE/NT4/ME TZ Environment Variable Errors MSVCRT.DLL 6.1.9848.0 Fix" from MDGx:
http://www.mdgx.com/wnt4.htm
3. Extracted the archive with 7zip:
7za x Q932590.EXE
4. Renamed mv6.dll to msvcrt.dll
5. Copied msvcrt.dll to scummvm directory.

This fails with "import not found: SHAddToRecentDocs" error:
dpmild32: import not found: SHAddToRecentDocs
dpmild32: file SHELL32.DLL
dpmild32: C:\hx\shell32.dll: cannot resolve imports

bocke

01.03.2012, 00:42

@ bocke
 

HX DOS Extender

I tried 0.13.1 too. After restarting dosemu with sound support it at least started. But it stucked not showing anything. You might have better luck on a native DOS installation. Or with other msvcrt.dll.

bocke

01.03.2012, 18:19

@ bocke
 

HX DOS Extender

> I tried 0.13.1 too. After restarting dosemu with sound support it at least
> started. But it stucked not showing anything. You might have better luck on
> a native DOS installation. Or with other msvcrt.dll.

You could also try playing with different versions (other than included one) of SDL.DLL. Earlier 1.2.x versions seem to "work". But sdl crashes under dosemu with error about not being able to set 640x480. I was going to make a small bootable CD to try it natively, but got sided away while doing it.

Btw, you might want to use univbe or some other VESA extension. FreeVBE didn't work under DosBox and DosEmu. Univbe seemed to work, but (as stated above) SDL coudln't get any VESA modes to start with. I tried playing with hxguihlp.ini VESA mode settings but without luck.

Anyway, I spent even too much time playing with this. As this was more of the "interesting thing to try" than anything usefull, I'm giving up. But I gave enough pointers if you're still interested in making it work.

Good luck! :)

Rugxulo

Homepage

Usono,
09.03.2012, 19:17

@ bocke
 

HX DOS Extender

It seems you're trying to play ScummVM under DOS? Aren't most of those games already DOS-friendly? Or does the new engine offer better features? (And yes, I see DOSGuy was trying other games too.) Yes, DOSBox is for games but not much else (i.e. not for hardcore tricks like HX).

In other words, I think the one time I tried DOSLFN under DOSBox, it didn't work. Also, DOSBox doesn't truncate filenames correctly, i.e., when in real DOS, if you try to read / write, it will just ignore anything past 8.3, but DOSBox seemed to not like that and crashed.

Also, yes, HXGUI works, but it may require VESA 2.0, 800x600, etc. I know DOSBox emulates that somewhat, but VESA support is often quirky due to bugs, so who knows what's going on there.

I forget exactly, but I believe there is a HDPMI setting for ignoring imports that aren't found but are also unused. So you can disable that warning -- if and only if your app doesn't use them (else it will not work).

I did successfully run Wolf4SDL (older version with SDL 1.2 or such) about two or three years ago, but I haven't tried lately. IIRC, you may have to disable sound output (via env. var.) if it's not found. You can also change the output video driver (see the docs).

MSVCRT.DLL is a pain. First of all, I'm fairly? certain you can't redistribute it legally without being a commercial licensee of MSVC. Secondly, the whole advantage is gone since there are billions of minor revisions / variations / versions. I don't know why more people don't just statically link (at least for this bothersome .DLL). Also, it's very hard to find one that works with HX. Well, at least for me. I think I recently just copied over one found in the 32-bit Java folder (but only tested with one or two apps so far). BTW, your main problem actually stems from MinGW being lazy and using it by default, which is a bad move, IMHO. But they were proud of themselves for saving a few kb (even if only one import is used!!)). OpenWatcom Win32 output doesn't need it, so it's much easier to support. In theory, you could recompile most things with SDL with OpenWatcom, but it's probably not easy (as always!), so I never bothered.

I don't wish to discourage you, but I'm just saying, it gets a bit difficult to get some things to run.

bocke

10.03.2012, 08:49

@ Rugxulo
 

HX DOS Extender

> It seems you're trying to play ScummVM under DOS?

Not really. Just tried to answer dosguy's question. And I did for the most part. :)

roytam

10.03.2012, 09:57

@ Rugxulo
 

HX DOS Extender

> MSVCRT.DLL is a pain. First of all, I'm fairly? certain you can't
> redistribute it legally without being a commercial licensee of MSVC.

We have wine's implementation of msvcrt.dll.

Rugxulo

Homepage

Usono,
10.03.2012, 18:43

@ roytam
 

HX DOS Extender

> > MSVCRT.DLL is a pain. First of all, I'm fairly? certain you can't
> > redistribute it legally without being a commercial licensee of MSVC.
>
> We have wine's implementation of msvcrt.dll.

IIRC, Japheth said it doesn't work with HX.

roytam

11.03.2012, 08:06

@ Rugxulo
 

HX DOS Extender

> > > MSVCRT.DLL is a pain. First of all, I'm fairly? certain you can't
> > > redistribute it legally without being a commercial licensee of MSVC.
> >
> > We have wine's implementation of msvcrt.dll.
>
> IIRC, Japheth said it doesn't work with HX.

Then fix it! It is open sourced! You can even fork it as HX-comfortable version!

DOS386

11.03.2012, 11:01

@ roytam
 

HX DOS Extender | Drunk Wine | MSVCRT.DLL.HELL

> We have wine's implementation of msvcrt.dll

Where? I can't find anything :-(

OK, found something ... after intruding into 1'000'000'000 archive levels (big thanks to Igor :-) ) found 2 files:

msvcrt.dll - 2 KiB :clap: - it does not even have dummy exports

msvcrt.dll.so - several 100 KiB - it's an ELF :-(

so where is your drunk Wine MSVCRT.DLL ???

BTW, ReactorOS 0.3.14 released 2012-02-07 ... it has a MSVCRT.DLL ... oops, forgot to test. Anyone else dares ???

HX BUG's | HX DLL's (MSVCRT.DLL is not among them)

---
This is a LOGITECH mouse driver, but some software expect here
the following string:*** This is Copyright 1983 Microsoft ***

0ffer

Homepage

24.05.2013, 08:09

@ DOS386
 

HX DOS Extender | Drunk Wine | MSVCRT.DLL.HELL

> > We have wine's implementation of msvcrt.dll
>
> Where? I can't find anything :-(
>
> OK, found something ... after intruding into 1'000'000'000 archive levels
> (big thanks to Igor :-) ) found 2 files:
>
> msvcrt.dll - 2 KiB :clap: - it does not even have dummy exports
>
> msvcrt.dll.so - several 100 KiB - it's an ELF :-(
>
> so where is your drunk Wine MSVCRT.DLL ???
>
> BTW, ReactorOS 0.3.14 released 2012-02-07 ... it has a MSVCRT.DLL ... oops,
> forgot to test. Anyone else dares ???
>
> HX BUG's | HX DLL's (MSVCRT.DLL is not
> among them)

They are not linked with the standard C or C++ libraries that comes with this compiler, instead they are linked with a dynamic library I call minwcrt (Minimal Windows C Run-Time Library) linking them to crtdll.dll instead of msvcrt.dll. This makes them run in all versions of Win32 without additional dll files. This is also the reason why the exe files are very small. Source for this library is available as part of the source archive mentioned in the top of this document

Rugxulo

Homepage

Usono,
25.05.2013, 01:57

@ 0ffer
 

HX DOS Extender | Drunk Wine | MSVCRT.DLL.HELL

> > > We have wine's implementation of msvcrt.dll
> >
> > Where? I can't find anything :-(
> >
> > OK, found something ... after intruding into 1'000'000'000 archive
> levels
> > (big thanks to Igor :-) ) found 2 files:
> >
> > msvcrt.dll - 2 KiB :clap: - it does not even have dummy exports
> >
> > msvcrt.dll.so - several 100 KiB - it's an ELF :-(
> >
> > so where is your drunk Wine MSVCRT.DLL ???
> >
> > BTW, ReactorOS 0.3.14 released 2012-02-07 ... it has a MSVCRT.DLL ...
> oops,
> > forgot to test. Anyone else dares ???
> >
> > HX BUG's | HX DLL's (MSVCRT.DLL is not
> > among them)
>
> They are not linked with the
> standard C or C++ libraries that comes with this compiler, instead they are
> linked with a dynamic library I call minwcrt (Minimal Windows C Run-Time
> Library) linking them to crtdll.dll instead of msvcrt.dll. This makes them
> run in all versions of Win32 without additional dll files. This is also the
> reason why the exe files are very small. Source for this library is
> available as part of the source archive mentioned in the top of this
> document


I don't understand. Are you suggest we use these utilities or the libs when linking? I doubt any of it is a drop-in runtime replacement. (In fact, having to re-link at all kinda defeats the point.)

In any case, you can indeed use ReactOS' MSVCRT.DLL in DOS with HX, but it only sometimes works (e.g. set HDPMI=32 && set DPMILDR=136). For me, it seems to mostly work okay with TinyC (TCC), Oxford Oberon (OBC), and Atomiks (Viste's SDL port). I have not heavily tested much else.

0ffer

Homepage

25.05.2013, 10:03

@ Rugxulo
 

HX DOS Extender | Drunk Wine | MSVCRT.DLL.HELL

> Are you suggest we use these utilities or the libs when
> linking? I doubt any of it is a drop-in runtime replacement.

I'm not a programmer, but I think that open source minwcrt (Minimal Windows C Run-Time ibrary) can be used to recreate MSVCRT.DLL.
Maybe someone will do it.

Rugxulo

Homepage

Usono,
01.06.2013, 06:52

@ Rugxulo
 

HX DOS Extender | Drunk Wine | MSVCRT.DLL.HELL

> In any case, you can indeed use ReactOS' MSVCRT.DLL in DOS with HX, but it
> only sometimes works (e.g. set HDPMI=32 && set DPMILDR=136).

ReactOS 0.3.15 was just released. Unfortunately, despite a bigger .DLL, this newer one doesn't work at all for any of my (admittedly, limited number of) test programs, only causes an abnormal exit dump from HX. Just FYI.

(N.B. I didn't honestly expect it to perfectly work or even at all. Any compatibility with HX was probably entirely by accident. Their project has different goals. I know Japheth thinks we can all debug these kinds of things, but it's not that obvious nor easy.)

Back to index page
Thread view  Board view
22049 Postings in 2034 Threads, 396 registered users, 35 users online (0 registered, 35 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum