9

I’d like to run Windows 3.11 on a relatively modern laptop. One problem I have is that the only display driver that works with my hardware is the basic VGA driver, which only supports the rather unimpressive resolution of 640×480×4bpp, whereas my screen is able handle 32-bpp graphics nearly five times the pixel count.

I have no expectations that a native driver would be available for my video hardware; however, I know that my video BIOS supports VESA BIOS Extensions version 3.0, which (after patching) allows my boot manager to switch to the native screen resolution.

Perhaps if I had a VBE video driver for Windows, I would be able to use the same resolution (or at least one higher than 640×480) in Windows as well. Is there such a driver available?

3
  • Looks like there was one; please take a look at the "VESA" section here: ftp.sleepgate.ru/drivers/video/ancient/Diamond/html/driver/… SDD53A.EXE is might be exactly what you are looking for.
    – DmytroL
    Sep 3, 2020 at 8:28
  • Last I checked, SciTech Display Doctor was a driver for a number for specific video cards that provided a VBE interface, not used it. Just because some call it a VBE driver doesn’t mean it is what I am looking for. Sep 3, 2020 at 10:24
  • Apologies! I falsely assumed that the stock Windows 3.1 SVGA driver could use the VBE interface but apparently it talked directly to the video chip hardware (hence the need for Japheth's SVGAPatch)
    – DmytroL
    Sep 7, 2020 at 10:49

2 Answers 2

12

It seems unlikely that a fully-functional VBE driver for Windows 3.x exists. Microsoft started bundling a VBE driver with the operating system only as late as with Windows XP, by which time the Windows 3.x (and 9x) driver architecture was long obsolete. According to a post on OS/2 Museum, the display driver architecture of Windows 3.x was pretty baroque: the drivers were required to implement not only mode switching and transferring pixel buffers to the screen but also many drawing operations as well. This in turn means that one should not expect it to be easy to create such a driver from scratch; it certainly wouldn’t be a weekend project.

In Windows 95, the driver architecture was simplified: drivers could re-use generic drawing routines from the DIB engine, which is (presumably) what enabled the development of a VBE driver for Windows 9x from the VBEMP project. The same project also developed a VBE driver for earlier versions of Windows NT.

The above notwithstanding, there is a hacky partial solution: Japheth’s SVGAPatch. In order to use it, follow these steps:

  1. Download the archive and extract SVGAPTCH.EXE into some known location.
  2. Open Windows Setup and change the display driver to 256-colour SuperVGA with your chosen resolution. Point the installer to installation archives/floppies as necessary.
  3. Exit Windows without restarting.
  4. Enter the SYSTEM directory and run svgaptch -p.
  5. Restart Windows.

The patched driver doesn’t expose the full VBE capabilities; it can only switch to one of three hardcoded modes supported by the original driver (640×480, 800×600 and 1024×768). The patch accomplishes its task by replacing the hardware-specific mode-switching routines (and some data structures) in SVGA256.DRV with routines using VBE calls. (If you feel adventurous, you may even try further patching the driver to enable other resolutions.) For basic usage the patched driver seems sufficient, but I noticed that starting a DOS box, switching between full-screen and windowed modes thereof or even triggering a blue screen usually causes visual glitches (which may require Windows to be restarted) or outright crashes Windows immediately. For that functionality to work correctly, the VDDSVGA.386 virtual device driver would probably need be patched as well (and maybe the ‘386 grabber’ driver too). User beware.

11
  • 3
    On Windows 9x, SciTech Display Doctor 7 was also available in beta; I think it’s a fairly generic VBE driver (more so than version 6). Aug 27, 2020 at 21:38
  • 3
    Yah, Windows 3.x video drivers had to essentially implement entire GDI interface themselves. This was normally done by starting with Microsoft's reference driver that implemented all the functionality, but this isn't an option for anyone writing a driver today.
    – user722
    Aug 27, 2020 at 21:41
  • 3
    The same is also true of Windows 2.x and 1.x drivers, with even less in the way of reference code and documentation.
    – john_e
    Aug 28, 2020 at 10:36
  • 2
    Still, some sites list SciTech's Display Doctor 5.3 for Windows 3.1/95/NT as a download, and SciTech Display Doctor is a generic VBE driver formely known as UniVBE. I vaguely recall installing this software back in mid-nineties and it did "just what the doctor ordered"
    – DmytroL
    Sep 3, 2020 at 8:33
  • 2
    @DmytroL unfortunately I doubt it will include support for the graphics chipset used in the OP’s “relatively modern laptop” :-(. Sep 8, 2020 at 15:38
4

I want to expand a little bit on SciTech Display Doctor (SDD).

  • Versions 5.3a and 6.53 support Windows 3.1x through Windows 95 (version 6.53 can be installed in Windows 98, but VESA driver is unusable).
  • Version 7.0a supports Windows 95 and Windows 98.

Despite SDD claims to support Windows 3.1x, the only Windows-specific thing it installs is some wconfig.exe utility intended to tweak various VESA support aspects, provided that

  1. you already have a Windows-specific video driver (such as that for S3 Trio), and
  2. you've replaced your video card VESA BIOS by loading univbe.exe, either manually or from your autoexec.bat. This second step seems completely useless, since all video cards manufactured in the late 90-s, incl. S3 Trio and Virge, already have decent VESA support, and univbe.exe occupies 21 kB of the precious conventional memory.

I've installed SDD in DOSBox (from a Windows 3.11 session), to no improvement. There're no Windows-3.1x specific drivers. Just to give you an idea what good is wconfig.exe, here's the screenshot:

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .