Windows 1.0

Windows 1.0 is the first major release of Microsoft Windows, which was released to manufacturing on 20 November 1985 in the United States, and later internationally in May 1986. It is a graphical shell that runs on top of MS-DOS and provides a cooperative multitasking environment that can run applications specifically targeting Windows itself as well as a subset of compatible MS-DOS applications. Aside from being available as a full user environment, it also exists in a runtime variant that developers could ship with their applications. Despite lukewarm contemporary reviews, it enjoyed moderate success and was eventually succeeded by Windows 2.0 in 1987.
The environment consists of three major components: the Kernel (KERNEL.EXE), which provides base services such as the New Executable loader and process management, memory management, and cooperative multitasking; the Graphical Device Interface (GDI.EXE), which provides a device-independent interface to draw graphics onto the screen; and User (USER.EXE), which implements the actual user interface on top of GDI. This base structure was kept intact by later versions of Windows and eventually also carried over to Win32.
Unlike any later releases, Windows 1.0 primarily manages windows by tiling them rather by stacking. This was a design choice promoted by former Xerox PARC employees, which was backed by their research done during PARC's Cedar project, rather than a legal or implementation limitation. In fact, Windows 1.0 supports and internally uses overlapping windows, although this ability is limited to popup windows and certain controls such as menus and dropdowns - by default, windows are tiled on top of an overlapping window manager.
== History ==
In 1981, the Apps division of Microsoft (Microsoft had two primary divisions during this time—"Systems" and "Apps", for systems software and application development respectively) began to develop a common interface library for all of the productivity applications being developed within the division at the time (mostly Word and the Multiplan spreadsheet). This went by several names, notably MUSH (Microsoft User Shell) and Interface Manager, and is an entirely text-mode UI framework signified by the "session control" strip with context-specific commands at the bottom of the screen. There were also brief plans for a "visual shell" using this UI to be shipped using DOS 2.0, but these were scrapped before the final release. Variants of the MUSH/Interface Manager interface would ship in DOS Word 1.0 and Multiplan in 1982 and 1983, after the development of the Windows product had already begun.
At the same time that Interface Manager was being developed, a European standards committee was developing a standard for computer graphics, known as GKS (Graphical Kernel System). Microsoft wished to create a software product that would implement this standard on top of MS-DOS in a device-independent manner; Microsoft hired a developer to start this endeavour at the beginning of 1982, with another being transferred from Compiled Basic to assist with shrinking the code down later (mostly by converting it from C to assembly to meet the memory limitations of early IBM PCs) later that year. This project was dubbed GDI (Graphics Device Independence), later renamed to Graphics Device Interface, initially focusing on vector graphics.
It was eventually decided in the middle of 1982 to merge the Interface Manager and GDI teams into one team to develop a GUI-based package with device-independent graphics drawing, which gradually evolved into a (mostly) fully-fledged operating system with its own API and executable format. Initially this was called "Microsoft Window Manager"; a series of mockups and demo applications designed to resemble the final product (Demonstration Version 0.01) was shown off to BYTE magazine in September 1983 under this name, featuring overlapping windows and showcasing both "cooperative" and "uncooperative" DOS applications that directly modified video memory. The product had been renamed to "Windows" by the time it was announced on 10 November 1983, with an early build demoed at COMDEX '83 two weeks later. By this time, the design of the standard window had changed to a design closer to the final version, with tiled windows (these were not done for copyright reasons and were instead done because of usability studies from Xerox PARC, where some of the original developers of Windows were hired from) and a messagebar at the top of the screen that would eventually be removed later in the product's development cycle (the UI changes being significant enough for BYTE to mention in their article). The original announced release date was April 1984; this slipped several times (the original April 1984 date had already slipped internally, from the end of 1983) and was most likely never realistic in the first place, with a pre-alpha release strictly for developers not even shipping until the end of May. 
These development releases were very unstable and represented a rapidly changing system that was in no way even close to being ready for release—despite Microsoft's repeated promises of imminent release—with critical elements required for a functioning operating system such as a functioning memory management system not present until the fifth development release at the end of October 1984 (which was almost immediately replaced by code essentially copy-pasted from Multitasking MS-DOS 4 and "wrapped" for Windows' use by early 1985) and the executable format and basic API tenets (such as individual registering of window procedures being changed to window classes) completely changing several times as late as January 1985. The development releases were followed with an Alpha Release (with a very different and completely incompatible API to the previous development release) in January 1985, followed up by a beta release in May 1985. By this time, Windows was scheduled to release on June 28, 1985, but when that date was reached developers were simply sent yet another beta release (which is presently lost); approximately a month after that Microsoft sent out the "Premiere Edition", a glorified beta release, to the press (likely to prove the product existed, as it was often dubbed 'vaporware') and OEMs, and at least one OEM shipped a pre-release version of the product (version 1.xx, in September 1985), possibly out of contractual obligations or mere frustration with Microsoft's apparent inability to complete Windows.
After a sustained period of crunch (including at least one developer regularly sleeping in the office) throughout the summer and autumn of 1985 and a series of semi-regular beta and "Retail Beta" releases through the next few months, the operating system was finally completed on 14 November 1985, and sent into mass production the next day. While it was a high-quality product with few bugs by all accounts, the operating system was faulted for high hardware requirements, especially requiring expensive, optional hardware for the time (such as a mouse); despite this, it was successful enough for Microsoft to begin working on international versions (released as version 1.02) and ship several bugfixed revisions (1.03 and 1.04), and at the same time developing "Windows 1.1", later renamed to "Windows 1.5", which would count among its features overlapping windows (which are internally supported in Windows 1.0's window manager, with tiling done on top) and, in the more expensive "Windows/386" SKU, the VMM (Virtual Machine Monitor) driver, which provided the ability to utilize the features of the Intel 80386 processor to pre-emptively multitask MS-DOS apps. After around two years of work and four external alpha and beta releases, it would be renamed to Windows 2.0, first with version 2.01 released in September 1987 for OEMs, and 2.03 released three months later for retail consumers. 2.02 was primarily used as the runtime version for Microsoft Excel version 2.0 (the first used on Windows), but based on sales listings in computer magazines in late 1987 and early 1988, may have been briefly sold at retail (in the Windows/386 variant only).
On 31 December 2001, Microsoft declared Windows 1.0 obsolete, and stopped providing support for the operating system.
== GDI ==
When GDI was first being designed, there were several bitmap graphics adapters available, with CGA and Hercules being the dominant standards in 1982, but since they were all programmed differently with different I/O ports, memory addresses, and video memory layout, any DOS program that wanted to display graphics had to either choose one and not function on others, or include separate code paths for multiple video cards. What became Windows was to provide a device-driver layer that would allow writing graphical applications for any supported card in a platform-agnostic way, though this did pose certain limitations.
For one thing, support in Windows for color bitmaps was bolted on. Bitmaps were stored in a device-dependent way, "compatible" with the device context they were selected into, meaning that the actual bits (which were allocated by the display driver and may not even be mapped into the address space of the CPU, depending on the banking schemes employed by the video card) have no intrinsic meaning to applications. There was no way to load and save color bitmaps to disk, and they could be stored in many different formats; chunky, planar, various bit depths, with no interchange between them and no color table for palettes. Only monochrome bitmaps could be considered a common standard.
== System requirements ==
According to Microsoft, the following are the recommended system requirements for Windows 1.0 and its beta releases.Windows Version History, Microsoft Support. 19 July 2005. Archived from the original on 7 November 2006. This table takes account retail versions; OEM versions will vary depending on the hardware that it was intended to be installed on.
 Recommended system requirements
Name 	CPU 	RAM 	Storage 	Video adapter 	MS-DOS version 	Mouse
Windows 1.0 Development Release #5	8088 processor	512 KB	One hard disk	Hercules or CGA 	MS-DOS 2.00 to MS-DOS 3.00	Microsoft Serial Mouse
Windows 1.0 Alpha Release 	8088 processor	512 KB	One hard disk	Hercules, CGA, or EGA 	MS-DOS 2.00 to MS-DOS 3.00	Microsoft Serial Mouse
Windows 1.0 Beta Release 	8088 processor	256 KB	One hard disk	Hercules, CGA, or EGA 	MS-DOS 2.00 to MS-DOS 3.00	Microsoft Serial Mouse
Windows 1.01 and 1.02 	8088 processor	256 KB	One hard disk	Hercules, CGA, or EGA 	MS-DOS 2.00 to MS-DOS 3.10	Microsoft Serial Mouse
Windows 1.03 	8088 processor	320 KB	One hard disk	Hercules, CGA, or EGA 	MS-DOS 2.00 to MS-DOS 3.20	Microsoft Serial Mouse
Windows 1.04 	8088 processor	320 KB	One hard disk	Hercules, CGA, EGA, or VGA	MS-DOS 2.00 to MS-DOS 3.20	Microsoft Serial Mouse
=== Compatibility ===
Windows 1.0 does not officially support MS-DOS versions above MS-DOS 3.x due to the logo code does not accept MS-DOS versions outside of 2.x and 3.x - this is done in order to prevent Windows being run on Multitasking MS-DOS 4, due to kernel-level incompatibilities with the very large kernel changes (such as an incompatible file table format) introduced with Multitasking DOS; the check is duplicated in slowboot configurations. Due to a bug in the logo code separate to this check (caused by a debug-build only message being removed in release builds, but not the code to actually print it), all versions of Windows 1.0 will crash on startup on MS-DOS 4.00 and above, unless SETVER is run on WIN100.BIN to report a MS-DOS major version that is 2 or 3. 
The November 1986 OEM build of Multitasking MS-DOS 4 fixes this by the kernel patches Windows during boot in order to force it to run correctly and (in some versions) by externally reporting its version number as 3.99. 
=== Technical implementation === 
Windows 1.03's WIN.CNF (the launcher part of WIN.COM) checks for precisely 0x3500 x86 paragraphs, or 217,088 (0x35000) bytes, contiguously available for use using DOS memory allocation functions (it attempts to allocate the whole address space, returns what DOS actually gives it and then compares it against 0x3500)
== Slow boot ==
By default, the Windows Setup combines core system libraries, drivers and font into two data blobs named WIN100.BIN and WIN100.OVL (internally called FASTBOOT), which are used to decrease the boot time.
Windows can be forced to load each library and driver individually with a configuration known as "slow boot". This can be achieved by carrying out the following steps:
# Copy all files from the Setup and Build disks to a directory.
# Replace KERNEL.EXE with the debug kernel that is distributed with the SDK. (The retail kernel does not support slow boot, unlike Windows 2.x.)
# Select the keyboard, mouse and display drivers and rename them to KEYBOARD.DRV, MOUSE.DRV and DISPLAY.DRV, respectively.
# Rename LOFONTS.FON (for low resolution display adapters, such as the CGA) or HIFONTS.FON (for higher resolution display adapters, such as EGA or Hercules) to FONTS.FON.
# Rename the grabber file (.GRB) and logo file (.LGO) that matches the selected display driver to DISPLAY.GRB and DISPLAY.LGO, respectively.
# Create a dummy WIN100.OVL file.
After following the above steps, Windows can be launched by executing KERNEL.EXE directly instead of WIN.COM.
== Easter egg ==
Windows 1.xx and newer versions include an Easter egg, which shows a scrolling list of people that were involved with the development of Windows alongside a "Congrats!" button. Double-clicking the list box also changes the background of the Easter egg window to tiled smiley faces.Lucas Brooks on Twitter Windows 2.0 also contains a similar version of this Easter egg. The sequence for triggering the feature depends on the version:
* 1.xx: Press .Joey Beattie on Twitter
* 1.01 and later: Hold and then , release and then , press twice and then press .Lucas Brooks on Twitter
The credits are stored as encrypted data appended to the end of bitmap 1 in USER.EXE, which contains the smiley face used in the Easter egg. The contents of the credits changed on multiple occasions throughout the version's lifetime – the original variant in Windows 1.xx included 20 names in the so-called "The Secret List". The list was later renamed to "The Windows Team" in Windows 1.01 and expanded to 36 names. Windows 1.04 then almost doubled the list's length, bringing it to 66 names total.
== List of known builds ==
=== Multiplan-like demos ===
=== Later demos ===
=== Development releases ===
=== Pre-release ===
=== Early OEM release ===
=== Retail release ===
==== Windows 1.01 ====
==== Windows 1.02 ====
==== Windows 1.03 ====
==== Windows 1.04 ====
== Notes ==
==References==
1