Windows 1.0 Alpha Release

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 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, similar to DR5. The only difference is  is launched after the installation to create the main   executable containing all core Windows components and device drivers. Along with fast boot, a new Windows launcher -  was introduced to replace the old. 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  or. It is, however, possible to specify a shell other than  by running , assuming slow boot is used.

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 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 no longer used
 * Message queue introduced
 * OEM configuration data and system bitmaps 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 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
 * Debug symbol format changed to .SYM
 * Microsoft Symbolic Debugger included
 * Segmented Executable Linker (Link4x) introduced
 * Minimal keyboard shortcut support added

Development Goals
The earliest information regarding the development of this build 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. (11) Line: (12) Loading Applications: 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,  was last (known to be) modified on the 18th of January. was the Windows loader prior to the implementation of fast boot and. This means fast boot support was added after the 18th of January. The appearance of /  gives an indication that the work on fast boot started before the 23rd of January.

??????? EXE     31238 04-04-85   9:21:00a     3233 ?ELETED          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
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
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, 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

 * Screen fails to clear automatically after quitting Windows when the EGA driver is used. Most likely caused by the buggy EGA driver. Can be fixed by running the  command after quitting Windows or starting Windows using Beta Release's.
 * Sometimes cooperative MS-DOS applications cannot run in terminal emulation (windowed) mode. This is due to missing  files. Can be fixed by adding the   directory to path.
 * Cursor boundaries does 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 dialogs can be closed by pressing the Enter key. Tab key can be used if the dialog contains more than 1 button.
 * Sometimes MS-DOS Executive does not start after booting into Windows, leaving the user with a blank desktop. This is due to wrong DOS version, hardware or incompatible drivers. Running  (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  key. Double-clicking a text file while holding down the   key will cause a preview of the text file to be displayed on top of the Notepad icon.
 * Undocumented  argument
 * As mentioned earlier, running  allows the user to use a different shell.
 * Alpha Release is the only leaked build with this feature.
 * MS-DOS Executive is the only Windows application that can be run as shell.
 * Windows reinstall/driver change
 * Alpha Release's driver installer,  allows the user to change Windows drivers without having to perform a full reinstall.
 * Run  in the   directory to change the display driver.
 * contains a list of drivers/system files to copy to the  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.