Installing Microsoft Windows 3.x in DOSBox-X

Overview

This guide will give a general description of installing Windows 3.x in DOSBox-X, in addition to addressing some common issues.

Editions this applies to

  • Windows 3.0

    • Supports up to 16MB RAM.

    • Improved UI.

    • Improved memory management (286+ only).

  • Windows 3.0a

    • Allows programs to call into real-mode when started in standard mode.

    • Bug fixes for the installer to alleviate crashes.

  • Windows 3.0a with Multimedia Extensions

    • Adds Multimedia Extensions 1.0.

    • Multimedia extensions do not support real mode (8086/8088 CPUs).

    • Adds support for recording and playing digital audio files.

    • Adds support for MIDI devices.

    • Adds support for screensavers.

    • Adds support for analogue joysticks.

    • Adds support for audio CD-ROMs.

  • Windows 3.1

    • Supports up to 256MB RAM.

    • Dropped support for real mode (8086/8088 CPUs).

    • Includes updated Multimedia Extensions.

    • Adds TrueType font support.

    • Adds optional 32-bit disk access (386 Enhanced Mode only).

    • Adds the Windows Registry.

  • Windows 3.11

    • Bug fix release.

  • Windows for Workgroups 3.1

    • Adds SMB file sharing (NBF or IPX protocols only).

    • Adds VSHARE.386.

  • Windows for Workgroups 3.11

    • Adds 32-bit file redirectors.

    • Drops support for standard mode (286 CPUs).

  • Windows for Workgroups 3.11a

  • Windows 3.2

    • Chinese language release of Windows 3.1.

Edition Min CPU Min RAM Max RAM Min HDD space Min DOS

3.0

8086

1MB

16MB

8MB

3.1

3.0a

8086

1MB

16MB

8MB

3.1

3.0a MM

286

2MB

16MB

30MB

3.1

3.1

286

2MB

256MB

8MB

3.1

3.11

286

2MB

256MB

8MB

3.1

3.1 WfW

386

3MB

256MB

14MB

3.3

3.11 WfW

386

3MB

256MB

14MB

3.3

Windows 3.x was available for both Retail and via OEM, with exception of Windows 3.0a with Multimedia Extensions which was available only through OEMs.

OEM versions may include and default to different drivers in SETUP for things like video and sound.

README.1ST

There are already some guides to installing Windows 3.x in DOSBox, and those guides will also work with DOSBox-X. Some examples:

This guide does not look to replicate those guides. Instead, this guide will have some install guidance and hints and tips not covered on those pages, or that are specific to DOSBox-X. It is not intended to be a comprehensive guide.

General Notes

  • Some parts of the installation can take a considerable amount of time. You may be able to speed this up considerably (depending on host CPU speed) by using the DOSBox-X Turbo mode, which can be enabled from the drop-down menu bar by selecting "CPU" followed by "Turbo (Fast Forward)". This turbo mode is not like the old Turbo button on retro PCs, but functions more like a fast-forward, and therefore should not be used when interacting with the guest OS. Starting with DOSBox-X 0.83.21 the turbo mode is automatically disabled the moment a key is pressed, to prevent spurious keypresses to be registered causing undesirable effects.

Windows 3.0 specific notes

  • Unless noted otherwise, Windows 3.1 drivers are not backward compatible with Windows 3.0.

Windows 3.0a with Multimedia Extensions specific notes

  • This edition was available only to OEMs (Original Equipment Manufacturers), as such Windows will be customized to the systems it was shipped with. Examples of such customization, are an OEM specific launcher, OEM specific applications, but also that the installer may default to custom audio and video options.

  • For versions distributed on CD, the installation can be started by going into the MWIN directory on the CD and running SETUP.EXE.

  • Unlike regular Windows which installs by default to C:\WINDOWS this edition installs by default to C:\MWINDOWS.

DOSBox-X config file

It is recommended that you create a custom DOSBox-X config file for running Windows 3.x

[sdl]
autolock=true

[dosbox]
title=Windows 3.x
memsize=16
# uncomment the next line if you want to use Windows 3.0
#machine=svga_et4000

[dos]
hard drive data rate limit=0
floppy drive data rate limit=0

[cpu]
cputype=pentium
core=normal

[pci]
voodoo=false

[ide, primary]
int13fakeio=true
int13fakev86io=false

[render]
scaler=none

[autoexec]

Copy the above config and save it as win3x.conf

Notes

  • The above config uses 16MB RAM as that is the maximum supported by Windows 3.0, but for Windows 3.1 and 3.11 you can go up to 256MB, as such for these Windows versions memsize=256 is the largest safe value.

  • There are Windows 3.0 and 3.1 drivers for the Tseng Labs ET3000 and ET4000 (machine=svga_et3000 and machine=svga_et4000 respectively), but for the default machine=svga_s3 (S3 Trio64) there are apparently only Windows 3.1 drivers.

  • The default S3 video option will offer the broadest range of resolutions and colour depths but do require you to install the correct drivers.

Preparing for installation

Practically all Windows 3.x versions were shipped on floppies, requiring anywhere between 5 and 15 disks, depending on media-type and windows version. And while it is possible to install Windows 3.x from floppy images in DOSBox-X, the disk-swap process for this is rather tedious for substantial number of disks. As such it is highly recommended to make a directory such as "INSTALL" and copy the contents of ALL the diskettes into this directory. This way there is no need to swap disks during the installation process.

Example of extracting files from disk images

There are several ways to extract the contents of disk images, such as 7zip on Windows or "Disk Image Mounter" on Linux. In this example, DOSBox-X itself is used to mount a disk image, copy its contents into a folder, unmount the disk image and do the next.

MOUNT C /home/myuser/winroot
C:
MD INSTALL
IMGMOUNT A DISK01.IMG -U
COPY A:\*.* C:\INSTALL
IMGMOUNT A DISK02.IMG -U
COPY A:\*.* C:\INSTALL
IMGMOUNT A DISK03.IMG -U
COPY A:\*.* C:\INSTALL
IMGMOUNT A DISK04.IMG -U
COPY A:\*.* C:\INSTALL
IMGMOUNT A DISK05.IMG -U
COPY A:\*.* C:\INSTALL
IMGMOUNT A -U

Your new INSTALL directory now holds the contents of all 5 disks in this example.

Mounting an installation CD-ROM

If you have a "Windows 3.0a Multimedia Edition" CD-ROM image, you can simply mount it in DOSBox-X, and run the SETUP program.

e.g.

IMGMOUNT D win30me.iso
D:
CD MWIN
SETUP.EXE

The installer is normally found on the CD as \MWIN\SETUP.EXE.

Installing in a mounted folder

Notes

  • This method is the easiest, but has a few limitations:

    • Will not allow for 32-bit disk IO with Windows 3.1x.

Create a directory on your system that you’re going to use (mount) as your Windows 3.x C: drive. Valid examples:

  • For Windows hosts

    • C:\winroot

    • C:\users\myuser\win31

  • For Linux hosts

    • /home/myuser/winroot

    • /home/myuser/windows/win311

Note
For users running Windows natively on their computer, do NOT mount the root of your C: drive as the DOSBox C: drive! (e.g., MOUNT C C:\ should NOT be done), as it will cause confusion and potential conflicts between the host system C:\WINDOWS directory and that of Windows 3.x.

Now create a directory underneath that, which will hold your Windows 3.x installation files. e.g., C:\users\myuser\win31\INSTALL or /home/myuser/winroot/INSTALL and copy the installation files into it.

You are now ready to start DOSBox-X from the command-line, using the newly created win3x.conf. This assumes that the dosbox-x program is in your path and win3x.conf is in your current directory.

dosbox-x -conf win3x.conf

You now need to mount your new folder as the C: drive in DOSBox-X and start the installation.

MOUNT C /home/myuser/winroot
C:
CD INSTALL
SETUP

Adjust the path for mounting the C: drive as needed.

Note
If your path has spaces in it, you need to enclose it in quotes. e.g., MOUNT C "C:\Users\John Doe\winroot"

The Windows installation will now take place.

Once the installation process has finished, you will be asked if you want to start windows or exit to DOS. Exit to DOS and type EXIT to close DOSBox-X.

Now edit your win3x.conf config file and add the following lines into the [autoexec] section at the end of the file.

@ECHO OFF
MOUNT C /home/myuser/winroot
C:
IF EXIST C:\WINDOWS\IFSHLP.SYS GOTO WFW
IF EXIST C:\MWINDOWS\WIN.COM GOTO MWINDOWS
IF EXIST C:\WINDOWS\WIN.COM GOTO WINDOWS
GOTO END

:WFW
echo Starting Windows for Workgroups 3.1x
SET PATH=%PATH%;C:\WINDOWS;
SET TEMP=C:\WINDOWS\TEMP
DEVICE C:\WINDOWS\IFSHLP.SYS
C:\WINDOWS\NET.EXE START
C:\WINDOWS\WIN.COM
GOTO END

:MWINDOWS
echo Starting Windows 3.0a with Multimedia Extensions
SET PATH=%PATH%;C:\MWINDOWS;
SET TEMP=C:\MWINDOWS\TEMP
C:\MWINDOWS\WIN.COM
GOTO END

:WINDOWS
echo Starting Windows for 3.x
SET PATH=%PATH%;C:\WINDOWS;
SET TEMP=C:\WINDOWS\TEMP
C:\WINDOWS\WIN.COM
GOTO END

:END
EXIT

Adjust the MOUNT path above for mounting the C: drive as needed.

Install Windows 3.x into a DOS HDD image

This method brings with it a bit of added inconvenience. For instance, you will need to do your own DOS memory management and load DOS drivers for CD-ROM access. You can also not mount a host directory in DOSBox-X when you boot a disk image. Even host directories that you mounted prior to booting the disk image will become unavailable. Everything needs to be done using IMAGE files.

The first step is to create a DOS HDD image, for which you can follow the PC DOS and MS-DOS Installation Guide. You need at least DOS 3.1 for Windows 3.0 and 3.1x, and DOS 3.3 for Windows for Workgroups. However, it is recommended to use a newer version such as DOS 6.x

Once you have a DOS HDD image, temporarily mount it in DOSBox-X to transfer your INSTALL folder into your DOS HDD image, together with any drivers and add-ons you might need (preferably already unzipped, such that you don’t need to do that in DOS or Windows 3.x, as they lack support for that by default).

Something like:

IMGMOUNT C hdd.img
MOUNT D .
XCOPY D:\INSTALL C:\INSTALL /I /S
XCOPY D:\DRIVERS C:\DRIVERS /I /S
XCOPY D:\ADDONS C:\ADDONS /I /S
EXIT

Adjust paths in the above example as needed.

Now edit your win3x.conf config file and in the [autoexec] section at the end, add the following lines:

IMGMOUNT C hdd.img -reservecyl 1
BOOT C:

Now start DOSBox-X with your win3x.conf config file from the command-line:

dosbox-x -conf win3x.conf

It should boot to the C: prompt, and you can start the installation process.

CD INSTALL
SETUP

After the installation is finished, you can install your drivers and add-ons.

Starting Windows 3.x after installation

After the installation is finished, you can start Windows 3.x from the command-prompt with the following command:

dosbox-x -conf win3x.conf

You can optionally create a shortcut on your desktop to start Windows 3.x directly.

Steps to take after installation

Once Windows 3.x is installed, here is some additional software you may want to install or update:

  • Updated Video and Audio drivers

  • Win32s 1.30c

  • Video for Windows 1.1e

  • WinG API 1.0

  • QuickTime 2.1.2

  • Adobe Acrobat Reader

  • Adobe Type Manager 3.02

Enabling 32-bit File and Disk access

  • Introduced with Windows 3.1, 32-Bit Disk Access allows Windows to bypass the 16-Bit BIOS.

  • Introduced with Windows 3.11, 32-Bit File Access allows Windows to bypass the 16-Bit DOS FAT code.

Enabling these features means that Windows must leave 32-bit protected mode less often, and should therefore, at least in theory, be faster. However, based on benchmarks, there is no advantage at this time to enabling these features in DOSBox-X, and it may reduce performance!

32-Bit Disk Access (also called FastDisk) uses the WDCTRL driver built into WIN386.EXE that is included with Windows 3.1x, which should work in DOSBox-X if the following conditions are met:

  • You must use a real DOS in DOSBox-X.

  • Your HDD image must have 1023 cylinders or less (max 504MB).

    • When creating you harddisk image in DOSBox-X you may want to use IMGMAKE hdd.img -t hd_520, which will give you exactly a 504MB HDD.

  • You can only have one HDD.

  • You cannot have a CD-ROM as a slave on the same IDE controller as the HDD.

  • You must have set int13fakeio=true and int13fakev86io=false in your DOSBox-X config file.

  • You must mount your HDD image file with -reservecyl 1.

  • You must mount your HDD image file with device number 2, and not the drive letter (this is likely a bug in DOSBox-X).

  • You must edit C:\WINDOWS\SYSTEM.INI and in the [386enh] section add the following 2 lines (preferably between the *pageswap and *biosxlat drivers):

    • device=*int13

    • device=*wdctrl

  • In the same file, at the bottom of the [386enh] section add the line:

    • 32BitDiskAccess=ON

See How to please WDCTRL for more background information.

32-Bit File Access has no such requirements and can be enabled seemingly on any system.

To enable these features, open the "Main" folder, followed by "Control Panel". Now double-click on the "386" chip icon titled "Enhanced". Then click on the "Virtual Memory…​" button. Under Disk Status you can see what access methods Windows is currently using. Now click on the "Change>>" button. At the bottom there are options for "Use 32-Bit Disk Access" and "Use 32-Bit File Access". If the 32-Bit Disk Access option is greyed out, it probably means your configuration is not compatible with the option.

There are 3rd party 32-Bit Disk Access drivers which may allow it to function on larger disks, but have not been tested in combination with DOSBox-X. Most 3rd party drivers only work in combination with specific hardware. The Ontrack ontrackw.386 driver does work in DOSBox-X but seems to have similar restrictions.

Enabling networking

To enable networking, you first need to enable NE2000 network adapter emulation in your win3x.conf config file and select an appropriate back-end for the NE2000 emulation.

Enabling NE2000 in your DOSBox-X config file

Starting with DOSBox-X 0.83.12 there are two different back-ends to the NE2000 adapter emulation. The default back-end is backend=pcap.

backend=pcap

The PCAP back-end uses something called "Promiscuous mode". This has the advantage that DOSBox-X can support various legacy network protocols, such as IPX and NetBIOS Frames (aka NetBEUI) in addition to TCP/IP. This mode not only allows communication between DOSBox-X instances on the same network, but also with legacy PCs on the same network.

However, for this to work DOSBox-X needs to have very low-level access to your real network adapter. In some cases, this is not possible, such as:

  • Network Adapter or Driver not supporting Promiscuous mode (most WIFI, WAN and BT adapters fall into this category).

  • Your Ethernet switch not allowing multiple MAC addresses on a single port or doing any kind of MAC address whitelisting.

  • Sandboxed versions of DOSBox-X (e.g., Flatpak) not allowing the required low-level access.

To enable NE2000 emulation with the pcap back-end, add the following to your win3x.conf config file:

[ne2000]
ne2000=true
nicirq=10
backend=pcap

[ethernet, pcap]
realnic=list

The list value for realnic= will need to be replaced by a value representing your actual network adapter. See Guide: Setting up networking in DOSBox-X for more information.

backend=slirp

Unlike the PCAP back-end, the SLIRP back-end does not require Promiscuous mode. As such it will work with WIFI, WAN and BT adapters, and it will work in most sandboxed environments.

But obviously, it has its own limitations.

  • It is not supported in all platforms, such as Windows Visual Studio builds.

  • It only supports the TCP/IP protocol (other protocols must be TCP/IP encapsulated).

  • It is effectively behind a NAT (Network Address Translation) gateway, meaning that you can communicate outbound, but no systems on the LAN can instantiate a new connection to it. Which means that two DOSBox-X instances on the same LAN using backend=slirp cannot communicate with each other.

To enable NE2000 emulation with the slirp back-end, add the following to your win3x.conf config file:

[ne2000]
ne2000=true
nicirq=10
backend=slirp

Setting up NE2000 networking

This only applies to Windows for Workgroups (WfW).

If you install WfW inside DOSBox-X with networking support, you need to run DEVICE C:\WINDOWS\IFSHLP.SYS and C:\WINDOWS\NET START before starting Windows if run from DOSBox-X’s internal DOS.

Windows for Workgroups by default only supports SMB networking over NBF (NetBIOS Frames aka NetBEUI) or IPX. There is no support by default for the TCP/IP protocol.

There were 3rd party WinSock solutions, but those were meant for dial-up internet access and are not specific to WfW.

You can however install Microsoft TCP/IP-32, which was sold separately, to add TCP/IP support to WfW.

Enabling sound

DOSBox-X by default emulates a Creative Labs SoundBlaster 16. Download and install the SB16 driver package. This needs to be run from DOS.

Pay close attention during installation to the IRQ. The emulated SB16 in DOSBox-X defaults to IRQ7, while the SB16 driver package assumes IRQ5. So, unless you changed the SB IRQ in your DOSBox-X config file, change the IRQ during installation to IRQ7.

Enabling external MIDI in Windows 3.1x

By default, the SB16 Windows 3.1x drivers will emulate MIDI playback using the OPL chip. However, DOSBox-X has built-in support for General MIDI emulation (which is enabled by default), and which sounds much better.

To set it up, first ensure the SB16 drivers are installed. Then in Windows 3.1x go to "Control Panel" and open "MIDI Mapper".

In Windows 3.1x go to "Control Panel", and open "MIDI Mapper. If there is no "MIDI Mapper" icon in "Control Panel", the Sound Blaster drivers were not installed. Select the "SB16 All MIDI" option from the drop-down menu and press the "Close" button.

Windows 3.1x MIDI

You should now be able to open the Windows 3.1x Media Player and playback C:\WINDOWS\CANYON.MID.

Enabling external MIDI in Windows 3.0a with MM Extensions

The same can be carried out with Windows 3.0a with Multimedia Extensions, but the "SB16 All MIDI" option will not be listed.

Instead in the "MIDI Mapper" dialogue box click on the "New…​" button. You will be asked for a name and description. You can name it anything you like, for instance "SB16 Ext MIDI", and click the "OK" button. You do not have to enter anything for the Description.

Windows 3.0a MIDI

You will then get a "MIDI Setup" window. The only thing you want to change here is the "Port Name" to "SB MIDI Out" for all 16 lines. You may also notice that for each line the active checkbox gets checked, this is correct. Once finished click the "OK" button and confirm the save.

Windows 3.0a MIDI

You should now be able to open the Windows 3.0a Media Player and playback C:\MWINDOWS\MMDATA\CANYON.MID.

Enabling printing

Print to PostScript

For the best print quality, you will want to print to a PostScript printer in Windows 3.x.

First, setup your DOSBox-X config to print to a file as such:

[dosbox]
captures=capture

[parallel]
parallel1=file timeout=2000

Next in Windows 3.x, select any PostScript printer such as the "QMS ColorScript 100", during printer setup connected to LPT1.

When you print, a .prt file in your captures= directory will be created, which despite the extension, is actually a PostScript file.

On Linux and macOS, PostScript files are natively supported and can be viewed and printed. On a Windows host, it is necessary to install a separate PostScript viewer such as GSview.

Epson emulation

As an alternative, you can use the integrated Epson printer emulation, but the output quality will be significantly less compared to PostScript.

First, setup your DOSBox-X config to emulate an Epson printer as such:

[parallel]
parallel1=printer

[printer]
printer=true
printoutput=ps
multipage=true
timeout=2000

Next in Windows 3.x, select any Epson dot-matrix printer during printer setup, such as:

  • For Windows 3.0, the "Epson LQ-850/950/1050" option, connected to LPT1

  • For Windows 3.1, the "Epson LQ-850" (or "LQ-1050" for wide formats), connected to LPT1

  • For Windows 3.11, the "Epson LQ-860" (or "LQ-1050" for wide formats), connected to LPT1

Warning
Make sure that you do not configure the Epson printer driver for a graphics resolution other than 180x180, or the output will be corrupted.
Windows 3.0 Epson setup

When you print, a PostScript file with the .ps extension will be created in your current working directory. The emulated Epson printer settings can be adjusted as documented on the above linked wiki printing guide.

Installing Win32s

Win32s is a 32-bit application runtime environment for Windows 3.1x. Some games and applications require it. Win32s version 1.30c is the latest version.

It installs and runs without problems in DOSBox-X. But be aware, that unless your running Windows 3.1x under real DOS, then DOSBox-X’s integrated SHARE feature will be enabled by default which emulates most of the DOS SHARE.EXE functions. Win32s requires that SHARE.EXE is loaded, so your options are either to use the SHARE functions as implemented by DOSBox-X or install Windows 3.1x in real DOS in DOSBox-X.

Warning
While DOSBox-X’s integrated SHARE feature was improved compared to that of vanilla DOSBox, it may not fully implement all of DOS SHARE.EXE functions, and as such may not be 100% safe for some applications.

Starting a Windows game from DOS

If you want to silently start a Windows game, without seeing the Windows 3.x splash screen or program manager, and when you exit the game that it exits Windows, here are the steps to take:

First install the game normally in Windows.

You can then start the game from DOS simply by appending the Windows game executable behind the WIN.COM executable as such:

WIN \path\to\game.exe

This will prevent the Windows splash screen being shown and will directly start the game without first going to the Program Manager (progman).

The second step you may want to take, is that when you exit the game, you also exit Windows 3.x. For this you need a 3rd party utility called "RUNEXIT.EXE", and place it in your PATH. Now simply start the game as follows:

WIN RUNEXIT \path\to\game.exe

Like before it will start the game without the Windows splash screen, but now when you Exit the game it will also Exit Windows. This way you can launch Windows games from a DOS batch file, or from a DOSBox launcher such as DBGL.

Outstanding issues

  • Using 32Bit Disk and File lowers performance.

  • 32Bit Disk and File, requires mounting the HDD image using drive number.