joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project
GNU General Public License v2.0
2.67k stars 380 forks source link

DOSbox running under Win9x, WinNT, Win3x #3577

Open Torinde opened 2 years ago

Torinde commented 2 years ago

Question

Per the DOSBox-X website it requires as a minimum for 32-bit WinXP and for 64-bit Vista. Here is what happened when I tried 0.84.0 on earlier OS versions (hosted in VirtualBox, all systems have normal sound in Windows; DLLs are listed in the order of appearing and the last one shown is the one I couldn't solve):

I'm just sharing that info for the curious out there. Don't know if some of the blocks can be resolved "quickly" / is it worth it (actually WinXP x64 seems OK already).

A related question - has anyone tried to run the ARM32 release on Windows 10 Mobile? Or does it run only on WinRT?

Have you checked that no similar question(s) exist?

Code of Conduct & Contributing Guidelines

rderooy commented 2 years ago

I suspect for WinXP x64, that the issue is rather that it is rather rare. And while it works today, does not mean some change could not break it tomorrow. And if you add it to the supported list, you should also be able to test if it works.

As to supporting older Windows (or OS/2) versions for running dosbox-x, again, there is a maintenance cost. It also means that you are stuck having to support old compilers to target those platforms. TBH, I personally don't think it is worthwhile, and think the focus should be on more modern systems. Even supporting WinXP x32 or Vista to me is not worth the effort, if it means not being able to use newer compilers and/or newer C++ versions.

driver1998 commented 2 years ago

The ARM32 version is still a desktop application, which only runs on Windows RT or later version of Windows on ARM.

Also dynarec is disabled on Windows RT 8.x. DOSBox-X currently does not have a ARMv7 Thumb-2 JIT, instead it cheats a little bit and generates ARM code instead, which is not allowed in RT 8.x, but works on Win10+.

Torinde commented 2 years ago

At #582 is written that HX DOS version runs under Win98. I tried 0.84.0 under Win98 First Edition - complains about SHELL32.DLL. Under WinME - it works (in kind of full screen mode).

But I couldn't mount anything. From the menu - I click, no dialog box appears. From the DOSbox prompt - mount says drive is mounted, I got to C: and dir gives empty disk.

crazii commented 10 months ago

By default SDL (win32) will check audio drivers in such order: dsound, waveout. if under Windows 2000 has no sound, maybe you can try "set SDL_AUDIODRIVER=waveout" before running it, or add it to system env vars. I found this solution with my win98 fork on my p3 laptop with a crappy vxd sound driver.

crazii commented 10 months ago

At #582 is written that HX DOS version runs under Win98. I tried 0.84.0 under Win98 First Edition - complains about SHELL32.DLL. Under WinME - it works (in kind of full screen mode).

But I couldn't mount anything. From the menu - I click, no dialog box appears. From the DOSbox prompt - mount says drive is mounted, I got to C: and dir gives empty disk.

I checked HX DOS version few days ago on my P3 PC, it just quit quietly.

The common dialog uses Unicode function (e.g. GetOpenFileNameW) which is not originally supported on Win9x, it just fails silently with no error code. The empty C disk is the same, it internally calls wstat/FindFirstFileW. That's why the opencow lib is used: to translate Unicode functions to ANSI, I'll update more details in my PR.

Torinde commented 10 months ago

tests for 2023.10.06 - MinGW-lowend, XP, 9x, HX - in VirtualBox

ReactOS 32-bit 0.4.14

Windows 2000

Win NT4 SP6a

Win ME

Win 98 First edition

Win 95 RTM + Winsock2 + OpenGL95 + IE4SP2 + DirectX

HX DOS 2023.10.06 when booting to DOS (from Win95/98) in VirtualBox

# Under all above Windowses (but not ReactOS) - all 2023.10.06 dosbox-x.exe icons have black background when file is not selected (which looks wrong - 0.84 doesn't have it and looks correct) - and appear correct only when selected. image

Ctrl+C in DIGGER.EXE

Torinde commented 10 months ago

Win 95 OSR2.5 + IE4SP2

Torinde commented 9 months ago

tests with the second 9x beta:

Win NT4:

Win 95 RTM + Winsock2 + OpenGL95 + IE4SP2 + DirectX:

ReactOS 64-bit 0.4.15 2023-11-30

Win NT 3.51

Ctrl+C problem I mentioned in a previous comment - when selecting "Send Ctrl+Break" from the menu - it works.

Torinde commented 9 months ago

WfW 3.11 + Win32s 1.30c + VfW 1.1e + WinG

HX build when booting to DOS 6.22: "DPMILD32: C:\HX\DOSBOX-X.EXE: out of memory" - I'm running it with 64MB HIMEM.SYS and 604K free conventional. Per DPMILD32.TXT - "out of memory": allocating memory for PE binary failed. Please note that DPMILD32 cannot commit stack memory dynamically by setting a GUARD page, it has to be fully allocated at load time." Should I use JEMM or EMM386 instead?

Also, what are HX DOSbox-X requirements for CPU and memory?

joncampbell123 commented 9 months ago

DOSBox-X has a lot to unpack for it's emulation that most systems only page in on demand. In an environment where there is no paging whatsoever you'll need about 256MB or more to run DOSBox-X in HX-DOS.

Maybe if HDPMI offered the swap file paging that CWSDPMI does it would only need half that on average.

Torinde commented 9 months ago

HX DOS build tests:

crazii commented 9 months ago

It is possible that a minimal win32 version is built and use PESTUB to make it running under HX?

EDIT: I ran a fast test and the PESTUB succeeded on lowend9x, but get errors when running dosbox-x in VirutalBox: DPMILD32: import not found: RegLoadKeyA DPMILD32: import not found: RegReplaceKeyA DPMILD32: import not found: RegUnloadKeyA DPMILD32: file ADVAPI32.dll DPMILD32: dkrnl32.dll: cannot resolve imports

Torinde commented 3 months ago

at DOSBox Compilation Guides there are instructions from DosFreak for building NT3.50 and NT3.51 DOSbox SVN (and the resulting binaries as well) and for building for Pentium (e.g. without CMOV, MMX, SSE):

Official DOSBox (0.74-2 and current SVN) supports 95 and NT4 with Active Desktop. My builds support NT 3.50, NT 3.51, 95 and NT without Active Desktop.

Compiled DOSBox SVN for <Pentium Pro for Windows 95/NT4 w/Active Desktop

Lowest SDL 1.2.13 supports is 95 (original) (unknown about betas) and NT 3.50 (Have to disable fullscreen support and use 3.51 joystick dll.)

In addition here is mentioned that DOSbox SVN can run on 486 with 64MB (for dynamic core).

The official version of DOSBox can run on a 486 but for dynamic core you'll need bare minimum of 64mb, but really 128mb

My testing: NT3.51 build on NT3.51 - crashes the VM NT3.50 build on NT3.51 - crashes the VM

As for going further to the last two remaining: NT3.1 and Windows 3.1 with Win32s - I can't find information which version (if any) of SDL supports those (SDL 2004 website FAQ What Platforms are Supported is not archived) - does anybody know?

Torinde commented 3 months ago

Can DOSbox-X be compiled for 486DX (no CMPXCHG8B), 486SX (no FPU), 386 (no CMPXCHG/BSWAP/XADD/etc.)?

If using core=normal or simple, will less than 64MB RAM be sufficient?

Lowest memory usage I can get with DOSbox-X current build: 92MB dynamic_nodhfpu 91MB dynamic 80MB full 79MB normal 79MB simple

64MB DOSbox SVN dynamic - per here 52MB DOSbox SVN normal - substracting current X normal/dynamic difference from the above

Expanded memory maximum seems to be 32MB? Thus even the enhanced 186 models with 24-bit addresses max out at 16MB+32MB. The only way to get such RAM with something less than 386 seems to be C&T 186 supporting 26-bit addresses/64MB? But DOSbox is a protected mode executable and can't be made to run there?