Windows 1.0 Alpha Release

Work In Progress*We are currently working on this article, please come back later.*

## Windows 1.0 Alpha Release

### Compiled

1985-01-31

Windows 1.0 Alpha Release is a pre-release build of Windows 1.0 compiled on the 31st of January 1985. It is the first leaked build to support cooperative MS-DOS applications. Although visually similar to Development Release builds, internally it is closer to the final Windows 1.0. It is the last leaked build (not the last known build) to include SDK components such as source code samples, libraries and development utilities.

## Changes

Alpha Release is more like a new operating environment compared to DR5, as almost all Windows components were rewritten prior to this build.

This build is the first to support fast boot,PIF files and the redesigned Windows API. Installation is done via a batch file named WININST.BAT, similar to DR5. The only difference is INSTALL.EXE is launched after the installation to create the main WIN100.EXE executable containing all core Windows components and device drivers. Along with fast boot, a new Windows launcher - WIN.EXE was introduced to replace the old MSWIN.BAT. Likely due to the early implementation of fast boot, the Windows Kernel does not accept filenames as arguments, meaning it is not possible to start applications automatically by passing arguments to WIN.EXE or KERNEL.EXE. It is, however, possible to specify a shell other than MSDOS.EXE by running KERNEL -, assuming slow boot is used.

The Windows API changed to the extent that all applications written for Development Release builds of Windows must be rewritten in order to function properly, or even to compile. Most GDI functions are in alphabetical order when shorted by ordinals, indicating a lot of them were rewritten from scratch, maybe in 8086 assembly for speed improvements.

Visually, this build is almost identical to DR5, except some system bitmaps received minor updates. The up-arrow cursor seen in the Fall COMDEX 1983 build is also returned for reasons unknown.

Below is a list of discovered changes:

* NE format received a major update
* MS-DOS stub updated
* Resources integrated into the executable
* Window classes and Input Translation Tables are no longer used.
* Message queue introduced
* OEM configuration data and system bitmaps are now stored in the display driver.
* Display and Cursor routines combined to become the display driver
* Bitmap, cursor and icon formats received a minor update <-- double check
* Windows Old Application Support Module (WINOLDAP.MOD) introduced
* PIF Editor introduced
* Error handling improved
* Microsoft Windows module renamed to Windows User Interface
* Printer support added
* Font format updated
* Fast boot support implemented
* Monochrome EGA support added
* DOS mouse driver support added
* The debug symbol format changed to SYM.
* Microsoft Symbolic Debugger included
* Segmented Executable Linker (Link4x) introduced
* Minimal keyboard shortcut support added

## Development

### Development Goals

The earliest information regarding the development of this prototype currently available is Ray Ozzie's meeting notes with Microsoft. Included with the meeting notes is a copy of the Microsoft Windows Development Goals, from roughly the 13th of January:

```
                          Microsoft Windows
                          Development Goals

HARDWARE GOALS

Run on a vanilla computer.

(1)   Architecture:  Intel 8086, 8088, 80186, or 80286 (compatibility
      mode).
(2)   msDOS:  version 2.* or 3.*; 4.*
(3)   Memory:  256KB of RAM.
(4)   Display:  bitmapped, at least 640X200.
(5)   Pointing: equivalent to a one-button mouse; keyboard (see
      attached).
(6)   Disk:  at least one 5.25" floppy, and either a second floppy or
      rigid.
(7)   Keyboard:  up transitions.

FUNCTIONALITY GOALS

MAC + TopView + device independence = WIN

(1)   Metafiles:  sufficient for winWORD, winCHART, and winFILE.
(2)   Journal:  floppy-based self-running device-dependent
      demonstrations; 32KB/min maximum; special tool application.
(3)   Memory Management:  dynamic loading, moving, and discarding; no
      swapping; loading from floppy is an atomic operation.
(4)   Input Translation:  STDCHAR, OEMCHAR, STDKEYS; batch mouse and
      characters.
(5)   Child Window:  overlapped, inside parent; no user interface.
(6)   Popup Window:  overlapped, anywhere; caption (title only),
      scroll, menu.
(7)   Data Exchange:  metafiles; delayed binding; direct possible; no
      link; general message passing facility.
(8)   Menu:  text/bitmap; pull-down; separator, check, inactive, tab,
      break.
(9)   User Profile:  non-resident.
(10)  Task Scheduling:  nonpreemptive, priorities; replaced by msDOS
      4.0.
(11)  Marker:  none.  [dot, plus, minus, star, triangle, and box].
(12)  Aspect Ratio:  isometric mode.
(13)  Color:  RGB; no conversion between color maps.
(14)  Fonts:  Scalable.
(15)  Register:  patterns, fonts, no cursor, no bitmaps.
(16)  Simulation:  line, polyline, arc, rectangle, polygon, pie,
      ellipse, no chord, no wide polygon; no plotter fill.
(17)  Block Transfer:  bit, string, stretch, pattern, no rotate.
(18)  Pens:  color, wide style, no wide styled, no patterned.
(19)  DC:  permanent check-out.
(20)  Bit Maps:  separate set operator; no pel array.
(21)  Cursor:  SetCursor is very fast.
(22)  DDA:  line; no spline, no ellipse.
(23)  Repeat Key:  automatically coalesced with count.
(24)  Control Manager:  scroll bar object; shares code.
(25)  Dialog Boxes:  line editor; radio buttons, push buttons, check
      boxes.
(26)  Finder:  like MAC; used by the MS-DOS Executive.
(27)  Installation:  to be determined.

USER INTERFACE GOALS

Good Macintosh fidelity capable inside top-level windows.

(1)   Tiling:  top-level windows only; children and popups overlapped.
(2)   Close Box:  works like MAC; optional in title bar.
(3)   Active:  only blinking caret in top-level; white title bars in
      children.
(4)   Icons:  represent running applications, not files; long-string
      labels.
(5)   Default Scroll Bars:  no splitter bars, no room for page number.
(6)   Menu Bar:  at the top of the window; automatic folding.
(7)   Pull-Down Menus:  two dimensional; clipped at screen bottom.
(8)   Help:  none.
(9)   Bundled Applications:  see attached.
(10)  OEM Customize:  all bitmaps and patterns, pointer size, icon
      size.
(11)  ISV Customize Class:  icon, scroll bar, menu, background,
      cursor.
(12)  ISV Customize Child:  border, scroll bars.
(13)  ISV Customize Popup:  caption, scroll bars, menu.
(14)  Volume Name:  prompt user for name; no check for duplicate
      names.
(15)  Clipboard:  cut; copy; paste; set format; no format conversion,
(16)  Notepad:  unify with Type; fixed pitch font; simple edits.
(17)  Control Panel:  date, time, blink rate, double-click time.
(18)  Clock:  no alarm.
(19)  PIF Editor:
(20)  Current Directory:  terminal emulator changes; none for WIN
      apps.

PORTABILITY GOALS

Virtualize the display, keyboard, pointing device, timer, sound, and
printers.

(1)   Compiler for letter-quality printer drivers.
(2)   Sound:  subset of interface from msBASIC.
(3)   Mouse:  installable; serial, parallel; relative, absolute.
(5)   Display:  installable; IBM color, IBM EGA, IBM PCjr, Hercules,
      Compaq.
(6)   Plotter:  installable; HP 7470A, HP 7475A, JI DMP-29.
(7)   Printer:  installable; Epson FX80 and MX80 and IBM 80, Okidata
      Microlire 92, Canon pjl080 color ink-jet, IBM Prism color, HP
      ThinkJet, Diablo 620, Diablo 630A, Diablo 630, and Diablo C150,
      NEC 3550, NEC 7710, NEC 8023, Aux 2 (same as IBM Wheel), IBM
      QuietWriter, Daisy Daisywritter, Xerox 1770.
(8)   Communications:  subset of interface from msBASIC.
(9)   msDOS 3.0:  can dynamically load over the network.

BACKWARD COMPATIBILITY GOALS

Run behaved applications in a window, give the whole screen to
misbehaved applications.  Compact memory to try to make room; if not
enough, user must close other applications and try again; if only MS-
DOS Executive left, then blow away msWIN and restart later.

(1)   PIF:  memory min/max/sys, interrupts high/low, video RAM, screen
      type, keyboard buffer, math processor, no other fileds.
(2)   Misbehaved:   1-2-3, Symphony, PFS:Graph, dBASEIII, Multimate,
      WordStar, msWORD, msCHART, pcPlan, gwBASIC.
(3)   Behaved:  IBM Assistant, msPLAN (BIOS version), PFS:notGraph.
(4)   Screen Grabber:  OEM-supplied T&SR program to copy screen to
      Clipboard.
(5)   Screen Switching:  none; only run one misbehaved app at a time.
(6)   PIF Filters:
(7)   Interruptability of old apps.

PERFORMANCE GOALS

Run at least one half Macintosh speed, on an IBM PC.

(1)   Booting:  not more than twenty-four seconds from floppy disk on
      PC.
(2)   Text:  not more than l millisecond per character.
(3)   Vertical Scrolling:  not more than 100 milliseconds per line.
(4)   Horizontal Scrolling:  not more than 300 milliseconds per pixel.
(5)   Popup and Children Windows:  fast as parent windows.
(6)   Flood Fill:  faster than msBASIC.
(7)   winPAINT:  > 90% as fast as Mouse Systems Paint.
(8)   Caching:  DCs, clip regions, etc.
(9)   StringBlt:  compile onto the stack.
(10)  Clip Region:  assembly code; accelerated null user; dont-clip
      flag.
SIZE GOALS

Fit on a bootable 362KB floppy disk, and run like a 128KB Macintosh in
256KB.

COMMITTED SIZES

Not including small machine version.

                                                DISK   RESIDENT
(1)   Data:  not including fonts               [          24KB]
(2)   Drivers:  IBM PC with msMOUSE            [ 8KB       8KB]
(3)   GDI:  nonresident flood fill             [ 28KB     16KB]
(4)   Kernel:                                  [ 28KB     16KB]
(5)   User Interface: incl. control manager    [ 80KB     36KB]
(6)   MS-DOS Executive:                        [ 36KB]
(7)   Control Panel:                           [  8KB]
(8)   Clipboard:                               [  4KB]
(9)   Notepad:                                 [  8KB]
(10)  Clock:                                   [  2KB]
(11)  Calculator:                              [  8KB]
(12)  PIF Editor:                              [ 12KB]
(13)  ANSI Terminal Emulator:                  [  8KB]
(14)  Fonts:                                   [ 55KB      4KB]

                         msWIN                 [285KB]   128KB
                         msDOS (most commands)   76KB     28KB

                         TOTAL                  361KB    156KB

INTERNATIONAL GOALS

Foreign versions, especially Kanji, are easy to create, but
multilingual not required.

(1)   Message Files:  for all text; resource file for strings.
(2)   International Versions:  recompilation required; language stamp.
(3)   Kana to Kanji:  code from msJAPAN; popup over icons, reserved
      for zoom.
(4)   Foreign Fonts:  not provided.
(5)   Xerox Character Encoding:  default to be determined; CS254 for
      old apps.
(6)   Printer Drivers:  device dependent if they use fonts in ROM.
(7)   Date, Time, Money, Decimal:  use msDOS call.
(8)   Sort Order:  none.
(9)   Dead Keys:  STDCHAR for to app with bit; OEMCHAR combines them.

```

*Microsoft Windows Development Goals*

### Fast Boot

According to directory entries found in the slack space of various Windows 1.0 disks, MSWIN.BAT was last (known to be) modified on the 18th of January. MSWIN.BAT was the Windows loader prior to the implementation of fast boot and WIN.COM. This means fast boot support was added after the 18th of January. The appearance of INSTALL.MAP/INSTALL.SYM gives an indication that the work on the fast boot started before the 23rd of January.

```
???????  EXE     31238 04-04-85   9:21:00a     3233
?ELETED      <DIR>     04-27-85   6:05:00a     5137    // deleted
?OMMAND  COM     22042 08-14-84   8:00:00a      510    // deleted
UPDSMALL BAT       345 01-29-85   1:05:08p     2202
?INPLAY  EXE      2053 01-23-85   6:00:38p     8750    // deleted
?INPLAY  MAP      3018 01-23-85   6:00:38p     8752    // deleted
?INPLAY  SYM       456 01-23-85   6:00:38p     8755    // deleted
?NSTALL  MAP     11285 01-23-85   7:23:58p     8762    // deleted
?AIT     CUR       270 01-15-85  10:02:32a     5187    // deleted
?NSTALL  SYM      2540 01-28-85   7:46:00p     6402    // deleted
?EST             21616 01-16-85   4:53:16p     5197    // deleted
?ROSS    CUR       270 01-15-85  10:03:18a     5208    // deleted
?LRBTN   BMP       206 01-14-85   3:07:14a     6216    // deleted
COPYPROT BAT        45 01-17-85  10:21:08a      810
?HAPES   EXE      4288 01-30-85   5:06:24a     3381    // deleted
?CONEDIT MAP     12867 01-24-85   4:37:04a     8842    // deleted

?RINTER  PRO       264 01-24-85   9:09:54p     9806    // deleted
?OMM     EXE      6053 03-19-85   5:13:20p     1562    // deleted
?OMM     SYM       821 01-25-85  10:11:08a     6400    // deleted
?OMM     MAP      4812 01-24-85  11:05:44a     9818    // deleted
?UNTITLE             0 01-24-85  11:05:44a        0    // deleted
?OUND    MAP      3016 01-24-85  11:16:54a     9821    // deleted
?OUND    SYM       454 01-25-85  10:15:24a     6401    // deleted
?UMP     EXE      4800 01-24-85  12:41:52p     9834    // deleted
?RACK    EXE      4816 01-30-85   5:03:20a     3395    // deleted
?E       EXE     30358 01-05-85  11:18:38p     3989    // deleted
?OUSER   BAK        33 01-26-85   6:30:10a      849    // deleted
?C       EXE     32563 11-12-84   6:25:22p     4732    // deleted
?EW      SAV     21616 01-24-85   4:33:42p     6322    // deleted
?OKPRO   BAT        40 01-26-85   6:30:40a      850    // deleted
?SWIN    BAK        17 01-18-85   1:29:20p     4405    // deleted

```

*Directory entries*

### Copy Protection

`COPYPROT.BAT` listed above may have something to do with copy protection, and it shows that copy protection for Windows was once considered, in early 1985.

### Executable Format

`?E.EXE` appears to be the NE (NEWEXE) program used to generate old Windows executables. This hints that the major NE format update happened after the 5th of January, as executables using the newer NE format must be generated by the Windows/Multitasking MS-DOS 4 Object Linker (`LINK4X.EXE`), not the NE program. Combined with the NE format changelog below, it is safe to assume that the "substantial .EXE format revision" was not used by the Windows team until the 5th of January, and most likely after the "resource definitions" addition by Windows Lead Architect, Steve Wood.

```
/*
 *  Title
 *      newexe.h
 *      Pete Stewart
 *      (C) Copyright Microsoft Corp 1984
 *      17 August 1984
 *  Description
 *      Data structure definitions for the DOS 4.0/Windows 1.0
 *      executable file format.
 *  Modification History
 *      84/08/17        Pete Stewart    Initial version
 *      84/10/17        Pete Stewart    Changed some constants to match OMF
 *      84/10/23        Pete Stewart    Updates to match .EXE format revision
 *      84/11/20        Pete Stewart    Substantial .EXE format revision
 *      85/01/09        Pete Stewart    Added constants ENEWEXE and ENEWHDR
 *      85/01/10        Steve Wood      Added resource definitions
 *      85/03/04        Vic Heller      Reconciled Windows and DOS 4.0 versions
 *      85/03/07        Pete Stewart    Added movable entry count
 *      85/04/01        Pete Stewart    Segment alignment field, error bit
 */

```

*NE format changelog*

## Issues

* The screen fails to clear automatically after quitting Windows when the EGA driver is used. Most likely caused by the buggy EGA driver. It can be fixed by running the CLS command after quitting Windows or starting Windows using Beta Release's WIN.COM.
* Sometimes, cooperative MS-DOS applications cannot run in terminal emulation (windowed) mode. This is due to missing PIF files. It can be fixed by adding the WINDOWS\TEST directory to the path.
* Cursor boundaries do not move with dialog windows. This is most likely a bug and if the dialog window is moved outside of the cursor boundary, dialog buttons will be out of reach. Most dialogue boxes can be closed by pressing the Enter key. The tab key can be used if the dialog contains more than 1 button.
* Sometimes, the MS-DOS Executive does not start after booting into Windows, leaving the user with a blank desktop. This is due to a wrong DOS version, hardware or incompatible drivers. Running KERNEL.EXE -MSDOS.EXE (slow boot only) may force MS-DOS Executive to load.

## Interesting Features & Finds

* Shift key
	+ To start an application in iconic mode, double-click it in MS-DOS Executive while holding down the `Shift` key. Double-clicking a text file while holding down the `Shift` key will cause a preview of the text file to be displayed on top of the Notepad icon.Text preview
	+ To restore and maximize a minimized application at once, double-click the application's icon while holding down the `Shift` key.
	+ To start a new instance of a running application, click and drag the application's window or icon to the desired place on the screen while holding down the `Shift` key. Clicking the application's window title bar while holding down the `Shift` key will create a new instance of the application vertically tiled with the previous one. Some applications cannot be started this way.
	+ To view a minimized application's window title, hover over the application's icon while holding down the `Shift` key.
	+ To select 2 or more files at once in MS-DOS Executive, click the names of the files while holding down the `Shift` key.
* Drag and drop
	+ To move a file from one directory to another, simply drag and drop to another folder using MS-DOS Executive.
	+ It is not possible to drop the file anywhere outside of the MS-DOS Executive window. This means files can only be moved into subdirectories, so it is not possible to undo the move using drag and drop.
* Windows Paint
	+ `USER.PRO` associates `.MSP` files with `PAINT.EXE`.
	+ A deleted version of `PAINT.EXE` on disk 2 was discovered by Lucas Brooks.
	+ A photo of Alpha Release or a similar build from the 1985-08 issue of Personal Computer World magazine proves that `PAINT.EXE` was deleted by Microsoft, as 151KB of free space indicates no `PAINT.EXE` on disk 2.

Photo from Personal Computer World magazineRe-creation using Alpha Release
* Undocumented KERNEL.EXE argument

* As mentioned earlier, running KERNEL -<filename> allows the user to use a different shell.
* Alpha Release is the only leaked build with this feature.
* MS-DOS Executive (MSDOS.EXE) is the only Windows application that can be run as a shell.

* Windows reinstall/driver change

* Alpha Release's driver installer, INSTALL.EXE, allows the user to change Windows drivers without having to perform a full reinstall.
* Run INSTALL C:\WINDOWS\TEST in the C:\WINDOWS\INSTALL directory to change the display driver.
* INSTALL.DAT contains a list of drivers/system files to copy to the WINDOWS\TEST directory.

* Cursor inconsistencies

* The Hercules Graphics Card "normal" cursor is different from the CGA/EGA "normal" cursor.
* The Enhanced Graphics Adapter "icon" cursor is different from the CGA/HGC "icon" cursor.

## Gallery

CalculatorClipboardClockControl PanelCubeFont TesterHello WindowsIcon EditorMapMode ApplicationPaintSample Font Application