Windows 1.x
-> -> -> Screen Driver Source

Windows 1: Screen Driver Source

This is an attempt to create source code that builds to the Windows 1.x video drivers — the sort of thing that would have been found in the Windows 1.x DDK, if that ever existed.

The source code here was based on the Windows 2 DDK, adapted to produce something close to the corresponding drivers in the original 1.x.

The intended build environment is cross-development under Linux. You will need a Windows 1 SDK installed (at least MASM.EXE, LINK4.EXE, RC.EXE, RCPP.EXE and MAPSYM.EXE). You will also need the emu2 emulator installed to run these tools. Then setting up a build environment should be a matter of:

For me, the resulting drivers don't come out quite the same as the originals. The main reason is that LINK4 seems to align modules on a word boundary, and whatever tool was used to build the original drivers didn't do that. There are occasional other differences where the versions of MASM and RC I used don't seem to behave quite like whatever was originally used to build the drivers. The RC.EXE I used, for example, marks its output as targeting Windows 2.0 — fortunately, Windows 1.x doesn't seem to care.

Currently I have building source for the following drivers:

FileSizeSupportingResolutionNotes
APRICOT.ZIP 204k Apricot PC/Xi 800×400 mono Based on the driver extracted from WIN100.BIN by Nina Kalinina
ATTDC.ZIP 191k AT&T PC 6300 640×400 mono
ATTDEB.ZIP 176k AT&T PC 6300 (with Display Enhancement Board) 640×400 (8 colours) Appears to have been compiled without mouse pointer exclusion (which ensures the mouse pointer is correctly redrawn if it overlaps with an area of the screen being withdrawn)
CGA.ZIP 190k CGA 640×200 mono
EGA.ZIP 217k EGA (256k) 640×350 (8 colours)
VGA 640×480 (8 colours)
EGAHIBW.ZIP 199k EGA 640×350 mono Intended for use with an EGA monitor
VGA 640×480 mono
EGAMONO.ZIP 194k EGA 640×350 mono Intended for use with an MDA monitor
VGA 640×480 mono
EGALORES.ZIP 209k EGA 640×200 (8 colours)
GENIUS.ZIP 191k MDSI Genius VHR 728×1004 mono
HERCULES.ZIP 191k Hercules 720×348 mono
IM1024.ZIP 208k VMI Image Manager 1024 1024×800 (256 colours)
MULTIMOD.ZIP 192k HP Vectra with MultiMode adapter 640×400 mono
SIEMENS.ZIP 193k Siemens PC-D 640×350 mono This closely follows the EGA 640×350 driver, but with the framebuffer at segment 0xF000 rather than 0xA000. This driver appears to have been built with an earlier version of windefs.inc than all the other drivers on this page, lacking a fix specific to the 286 processor.
SIGMA4.ZIP 201k Sigma Designs Color 400 640×400 (4 colours)
SIGMA8.ZIP 201k Sigma Designs Color 400 640×400 (8 colours)
STBHT.ZIP 192k STB HT Chauffeur 1056×352 mono
STBMR.ZIP 232k STB EGA Multi Res 640 ×400 (8 colours)
640×480 (8 colours)
752×410 (8 colours)
832×350 (8 colours)
T20COLOR.ZIP 191k Tandy 2000 640×400 (8 colours)
T20MONO.ZIP 191k 640×400 mono
TSENG.ZIP 209k Tseng EVA 640×480 (8 colours)
VEGA.ZIP 218k VEGA Deluxe 640×480 (8 colours)
752×410 (8 colours)
VISION.ZIP 193k ConoVision 1440 1440×720 mono
WY700.ZIP 195k Wyse 700 (aka Amdek 1280) 1280×800 mono

Modified driver

RVCGA.ZIP 190k CGA 640×200 mono The stock CGA monochrome driver, modified to output in reverse video (for dark-on-light LCDs like the IBM Convertible). The same tree builds normal and reverse video drivers. The changes could in principle be made to other monochrome drivers.

The drivers fall into four main groups, which I've colour-coded:

I used various ad-hoc tools while constructing these drivers. One that may be marginally useful is derezz, which extracts the resources from a Windows 1.x driver in a form that can be used by RC.EXE:

[C]DEREZZ.C (6k)