Difference between revisions of "Windows 1.0 Development Release 5"

From BetaWiki
Jump to navigation Jump to search
Line 123: Line 123:
=== Crash message ===
=== Crash message ===
[[File:Windows1DR5SimulatedCrashMessage.png|thumb|250px|The crash message]]
This build contains a warning dialog saying "Windows is about to crash". It's very hard to trigger it though, as the system will usually either hang or crash completely before the message can be displayed.

Revision as of 17:13, 17 July 2019

Development Release #5
Build of Windows 1.0
Development Release #5
OS family
Architecturex86 (16-bit)
Works inPCem
TCB.png TCBGallery.png BA.png

Windows 1.0 Development Release #5 is a pre-release build of Windows 1.0. This build is the fifth in the Development Release series, intended to help application developers design and develop their applications to work with Windows. According to INSTALL.BAT, it was compiled on 1984-11-01. It is the earliest leaked build of Windows so far.

By default, this build is installed to C:\windows\test, with development resources in C:\windows\bin. Also included are several mockup applications, namely Chart, Graph, PPDemo, Sample and Template, along with their source code. The overall UI design philosophy was not finalized yet, which can be clearly seen in dialogs - some, like the standard Windows dialogs, use a menu bar rather than OK and Cancel buttons, while custom dialogs tend to look completely different.

System Requirements

According to INSTALL.BAT, the following is required:

The following equipment is required:
  • IBM XT or AT
  • 512 K memory.
  • Floppy disk configured as DRIVE A:.
  • Hard disk configured as DRIVE C:.
  • Color graphics card.
  • External console connected to COM1: ( debugging ).
  • Microsoft mouse ( bus or serial ).
  • Timer.

The following software is required:

  • 2.x or 3.0 MS-DOS


The installation is done with a simple batch script named INSTALL.BAT. Using PCem or 86Box is recommended since this build depends on an IBM XT or AT and a Bus/Serial mouse.

Please note: the instructions below are somewhat outdated by now and may therefore no longer guide you accurately through the setup procedure.


1. Download PCem v0.5 (it may work with newer versions, however for example 0.7 has broken disk support)
2. Download Generic clone XT BIOS ROM
3. Extract PCem to a folder of your choice, extract pcxt.rom from genxt.zip to roms\genxt
4. Run PCem
5. Create a HDD (Disc -> Configure Hard Discs...) If you have no idea what to put in, you can use 32 sectors, 16 heads and 30 cylinders for ~8MB HDD.
6. Parition and format the HDD

6.1 Insert the first floppy of DOS of your choice (tested with DOS 2.11): Disc -> Change drive A:
6.2 Reboot if needed
6.3 Run fdisk, choose 1, Y, press Esc twice and let it reboot
6.4 Run format C: (Y, Enter)

7. Install DOS on the HDD (you can skip this step if you wish to use DOS bootdisk everytime)

7.1 Run sys C:
7.2 Run copy *.* C:\*.*
7.3 Eject the floppy (Disc -> Eject drive A:) and reboot

8. Install Microsoft Windows 1.0 Development Release #5

8.1 Insert the first floppy of your DR5 setup
8.2 Run copy A:\install.bat C:\
8.3 Run C:\install.bat
8.4 Confirm the 4 prompts, answer Yes to any question
8.5 After another confirmation, it should start copying from Disk 1 If you have the mouse captured, make sure to press CTRL+END while it's copying! Otherwise, the keypress would count as a command to continue!
8.6 After it asks you, insert Disk 2, press enter (again, don't forget to uncapture your mouse)
8.7 After it asks you, insert Disk 3, press enter
8.8 Confirm the last prompt
8.9 Eject drive A:
8.10 Reboot

Now every time you want to run Windows, type path C:\windows\bin, cd C:\windows\test and mswin (or add these lines to your AUTOEXEC.BAT file to automatically start Windows on system boot).

Issues, fixes and enhancements

Development Release 5 is still a rather early build and thus has some notable performance and stability issues. Prolonged or memory intensive use (e.g. running many applications at the same time) can cause the build to hang or crash without warning, sometimes to the point where only a hard reboot will restore functionality to the system.

Notepad crash

Starting Notepad may cause the system to hang or crash if the configuration file USER.PRO is present in the \windows\test directory. You can work around this issue by either deleting, renaming or moving the file, but the better solution is to add these two lines to your CONFIG.SYS file:


Notepad and Control Panel problem

Notepad and Control Panel will only start once per session. Trying to start them for the second time will only result in a brief cursor change from normal to hourglass and then back to normal. The reason for this is because unlike other applications, they attempt to register their class again on every start, which fails and consequently causes the initialization procedure to fail as well. Removing the call to RegisterClass allows the modded executable to run every time once the original one was started once.

PPDEMO problem

The PPDEMO.EXE application may cause the system to hang after it's closed.

Clipboard problem

The Clipboard application can't be closed for the rest of the session once it's started. It's unclear whether this is the intended behaviour or a bug.

Accessing empty floppy drives

If you try to access an empty floppy drive in MS-DOS Executive, the system will display a DOS disk error message over Windows and hang or crash. This was fixed in the Alpha release, so that Windows instead displays an error message.

Switching display drivers

File:CGA Hercules DR5.png
DR5 on CGA and Hercules

This build supports both CGA (640x200) and Hercules (720x348) display modes, both in monochrome only. However, only CGA drivers are installed by default. Switching between them can be done with the included DRIVERS.BAT batch file, just follow these simple steps:

path C:\windows\bin
cd C:\windows\test
drivers DesiredDriver

Replace DesiredDriver with IBMCOLOR for CGA or with HERCULES for Hercules. Please note that you must of course also change the emulated display adapter when performing the switch.

Registering file extensions

In the USER.PRO file (in \windows\test), you can find an [extensions] section. This is where you can register file extensions with applications. The format is as follows:

txt = notepad.exe ^.txt
ico = iconedit.exe ^.ico

Be aware that the application has to support recieving a filename as a parameter, which Notepad doesn't at this point.

Running applications on startup

Also in USER.PRO is a Run value in the [windows] section. Any Windows executable you include in this space-separated list gets executed before the MS-DOS Executive starts. Applications started this way go directly into an iconic mode at the bottom of the screen (in other words, they'll be minimized).

Interesting findings

The NE format

This build uses an earlier version of the NE executable format, which is quite different from the final one and incompatible with it. The key difference is that application resources, such as menus, icons, etc., are stored externally in .RES files, usually with the same name as the EXE. The resource files appear to be loaded during the initialization procedure of the application. Double-clicking on resource files in MS-DOS Executive will start the associated application the same way that double-clicking on an EXE would.

Another difference is that this version of the format does not require the MS-DOS MZ stub at the start of the file. This results in there being two kinds of DR5 executables - those with and those without the MZ stub. The former can be started under MS-DOS, where they will display the usual "This program requires Microsoft Windows." message and quit. The latter will cause undefined behaviour.

Use of the SHIFT key

You can start applications in iconic mode by holding down the SHIFT key while double-clicking on them in the MS-DOS Executive. To both restore and maximize a minimized application in a single move, hold down the SHIFT key while double-clicking on the application's icon.

To quickly start a new instance of an already running application, hold down the SHIFT key, then click and drag the application window to where you want the new window created. You can also click once on its window title, which will create a new window above the existing one. The new window will then be vertically tiled with the previous one. This also works for minimized applications, dragging and dropping an icon into the icon area will create a new minimized instance.

Crash message

The crash message


MS-DOS Executive drag-and-drop support

MS-DOS Executive in this build actually support simple drag and drop operations for moving files between directories. This feature was later completely removed between the Alpha and Beta releases, when MS-DOS Executive received a minor redesign.

Clock instances limit

The number of concurrently running timers in DR5 is limited to 16. As the Clock application uses a timer for each instance, at max 16 instances can run simultaneously. If you try to start the 17th Clock instance, the call to SETTIMER will fail and an error message will be displayed.

References to past releases

The file REMOVE.BAT in the WINDOWS folder contains an older date, 1984-05-29. It is possible that this file was re-used from a previous build, probably from Development Release 1, which was released in 1984-05 according to the 1984-05-07 issue of InfoWorld.[1]

The installation procedure in INSTALL.BAT empties some folders first, but completely removes \windows\lib. It's possible that previous releases used this folder, whereas DR5 uses just \lib instead. The batch file for uninstalling Windows, REMOVE.BAT, doesn't care about \windows\lib, but mentions \lib, so it was either modified, or the release from which it came already used \lib.

The only reference to any previous releases in the provided documentation, in QANDA.DOC (found in \windows\doc), where it says: "The RC.EXE program had a small file buffer. It simply couldn't handle your large menu. The bug has been repaired". The included digital documentation contains only one timestamp, and that is 16/10/1984 16:37 in GRAPH.DOC (also in \windows\doc). The files haven't been changed to have the same date, so you can clearly see when was each file created and modified.

References to future releases

In QANDA.DOC, an upcoming January release is mentioned several times: "By our January release, our goal is to..." and "In our January release, there will be...". Because the Alpha was released in 1985-01, this probably means no additional releases were made between DR5 and Alpha.

Easter eggs and funny things

RC.EXE (in \windows\bin) contains a "MarkTaylor" string at offset 730C. It is a default value for the DEF file if you don't specify another using the /D switch.

The source code also contains some funny comments.



"Some people, they like to go our dancing, and other people
[like main], they do all the work . . ."


Our mad chicken-with-it's-head-cut-off error abort routine.


/* figure out how many "characters" can fit on a line and down the screen */
/* NOTE: this routine is very stupid. These two lines get executed only */
/* once, and if the size of the window changes, it does not adjust. */


Windows 1.0 introduced the icon and cursor format (.ICO and .CUR files), though it was significantly changed in Windows 3.0 to how it still is today. The two formats are not compatible, but files can be converted from one to the other without much work.[2]

SAMPLE.EXE's icon is the Superman logo. SAMPLE.PNG

In WINDOWS.RES, there is an unused icon named TRASH, indicating older builds likely had a trash can feature of some kind. This is supported by photos and articles describing older builds, where this icon can be seen and is described as a place where files are discarded.[3] Clearly, the feature was already removed before DR5 with only the trash can icon remaining.


Error messages

Warning in Windows 1.0 DR5
Minor error in Windows 1.0 DR5

The Windows 1.0 DR5's API has a PostError function that can display 3 error levels: WARNING, MINOR_ERROR and FATAL_ERROR. Dialogs created with PostError always have Abort, Retry and Ignore buttons.

In case the application wants other button combinations, the PostMessage function must be used. For PostMessage, there's no concept of error levels - the note icon is always used.

The famous note icon shows up when using PostError with error level WARNING, and whenever using PostMessage. The icon: NOTE.PNG

The bomb icon will show up when using PostError with error level MINOR_ERROR. MINOR_ERROR was not used by any of the included applications, so this icon never appears in normal use. The icon: BOMB.PNG

No user interface will show up for FATAL_ERROR. Windows will exit within 0.05 second on a 8Mhz machine after manually triggering it. Right after Windows exits, the error message is displayed in MS-DOS and stays there for ~1 second before the screen gets filled with seemingly random contents of memory.

All errors in DR5's sample apps use either PostError with error level WARNING or PostMessage which shows only the note icon and caused many people to believe the bomb was a remnant from previous Development Releases. The error icon was later changed to a hand performing the "stop" gesture, but the original choice of a bomb indicates early Windows development was influenced by Apple's Macintosh, which also used a bomb as an error icon.


This is one of the class procedures defined in the WndClass struct in WINDOWS.H. Class procedures were the predecessor of the message queue, and were called by Windows when an event related to the focused application happened, such as the user scrolling down. Before registering its class, every application has to set pointers in its class instance to the procedures it implements for handling desired events.

This particular procedure is not used by any of the sample applications, and its name suggests it could be a leftover from earlier builds that used it for providing help to the user via the system Help button in the status bar at the top of the screen. No other references to a help system can be found.