Windows NT 3.1 build 196

Windows NT 3.1 build 1.196 is the earliest publicly released build of Windows NT 3.1, which was compiled and sent out to a limited number of developers in September 1991 as a prelude to the Fall COMDEX 1991 build. A picture of a disc containing this build was first provided by BetaArchive member ReflectiaX in 2018. On 18 December 2020, he obtained the disc and proceeded to share its contents.

Branding
This build identifies itself with several different names in several different places; this build identifies as NT 1.0 in, "NT 32-bit Windows" on the desktop watermark, "NT-386" (with "NT-MIPS" likely being the MIPS equivalent) while booting, and "Windows NT Version 3.2" in Command Prompt.

Setup
This build does not include any setup utility, but instead relies on a batch file to copy system files to the hard disk and write the boot loader. The process requires a pre-installed copy of MS-DOS (version 3.1 or later) or OS/2 1.21 or 1.3. The boot partition on which DOS or OS/2 is installed must be a FAT partition on an ATA/IDE hard disk, while any additional partitions can also be HPFS and on SCSI disks. For both DOS and OS/2,  should be in a directory that's listed in the   variable. For DOS,  must also be accessible through , as it is used to install the boot loader.

The disc contains  file designed for installing next to MS-DOS 3.1 or later, and   designed for installing next to OS/2 1.2 and 1.3. The installation is initiated by changing to the CD drive and typing  in a command prompt. Adding  to the command will also install the developer tools. Under OS/2, the setup also accepts the  parameter to install a new OS/2 based debugger and the corresponding kernel, however, it has no effect in this build.

Upon installing this build, the setup also runs  to check if the boot files have been stored in contiguous blocks. If they are not, it is required to defragment the boot drive in order to boot to NT.

Super VGA support
On compatible video cards it is possible to achieve 800x600 resolution with 16 colors by replacing the default  driver in   with   found in the same directory and rebooting. Based on references from newer builds, the 800x600 driver is primarily intended to work with Video 7 video cards, however, it has been found to work with other cards from the same era as well.

Sound
This build includes a Sound Blaster driver, together with sample wave files to play. It expects a Sound Blaster 1.0 or 1.5 (with DSP version equal to 2.0) on I/O port 0x260 (hardcoded in kernel) and IRQ 7 (hardcoded in driver). Card parameters would not be configurable until build 297.1.

Network
The kernel attempts to load a variety of network card drivers, although only one is actually included:  for the 3Com EtherLink II.

Applications
Compared to the October 1991 build, this build lacks many of the standard utilities and accessories typically included with classic Windows.

The developer tools of this build include several demo applications, many of which have been taken from the Win32 SDK. Unlike later builds, they are no binaries provided, and therefore it is required to build them first by launching the Win32Dev shortcut, changing to  and running. After the build process, a compiled executable should be present in each of the subdirectories.

Noteworthy applications include:
 * Print Manager, which has been rebuilt from scratch for NT. This version calls itself "NT Print Manager" in the title bar and uses a Windows 3.0 printer icon unlike all other applications, which already use the refreshed 3.1 icons.
 * WINBez, which demonstrates the graphic abilities of NT. Compared to the version found in the October build, it is more primitive and calls itself "Kent's Window Test Application" in the about box.
 * Performance Meter. Lacks the keystrokes of the October build, although strangely enough, the version in this build reports itself as 1.1, whereas the one found in the October build reports as 0.5.
 * PlaySnd, which tests the sound capabilities of the operating system. This application is similar to PlayIt found in the October 1991 build.
 * Mltithrd shows off the ability to execute multiple threads within the same process at the same time. This is more or less the same as the version found in the October 1991 build.
 * Simple, which merely prints out "Win32, it's happenin'!" to the console when executed.

Architectural differences
This build has several interesting architectural differences from most later builds of Windows NT.

OS2LDR
The bootloader is a very early version of NTLDR, calling itself  - this is a reference to the NT OS/2 project, which later became Windows NT after the IBM-Microsoft split. It identifies as "NT-386" - probably signifying an i386 build of NT rather than the MIPS version, with the bootloader itself identifying as "PDK Bootloader v1.9" with a 1990 copyright date. Per the README, it is one of the earliest versions of NTLDR to support a (albeit rudimentary) dualboot configuration, with both DOS (3.3+)/NT and OS/2 (1.21/1.3)/NT configurations being supported.

PE Format
This build uses an even earlier version of the Portable Executable format than the October 1991 build, resulting in executables built for this build of Windows NT completely failing to start on newer builds of the OS; this also results in disassembly tools such as IDA Pro failing to disassemble the file without a custom loader, making analysis significantly more difficult.

Kernel and drivers are pure COFF executables similar to the October 1991 build.

Registry
The registry does not appear to exist yet at this point. The system is configured using the,   and   configuration files stored in  , and   in. A directory tree reminiscent of the registry structure is also created in  upon first launch, however, no files are stored in there, therefore its purpose is currently unclear. It seems this may be used to store security-related data when a domain is set up.

Static linking
Many components that would later be individual kernel-mode (or even user-mode) components are statically linked into  in this build. This includes the HAL, several boot-critical drivers, including the ATA/IDE hard disk driver  and the FAT16 filesystem support code, and a rudimentary version of NTVDM that only supports real-mode DOS apps.

The Service Control Manager is statically linked into each service executable rather than being a standalone executable file as it is in most later builds.

Kernel
This build lacks the blue screen of death;  is nonexistant in this build while   has a simplistic implementation that prints a string to an attached kernel debugger and then, in an infinite loop, causes a breakpoint. Without a debugger attached, this would be perceived as a hang, and nothing is shown on-screen to indicate that anything happened. is an exported function rather than a macro.

Security
The README implies that this was one of the earliest builds to have any semblance of user security implemented, and this is evident by the extremely rudimentary nature of the user account system. While privileged and nonprivileged users are implemented, they only affect usage of a few commands, and you can simply check a checkbox in order to get administrative privileges. The readme also advises you to log in as the SYSTEM account - which has no password. Indeed, there are only four security-related exports in the kernel, compared to NT 3.1's eighteen.

User accounts and groups are stored in. An "Admin" account is predefined there, and logging in as "Workstation Manager" (hardcoded in ) also works.

Subsystems
The only functional subsystem is the Windows subsystem, which as of this build is split between  for graphical applications and   for console applications. This distinction is kept in the PE subsystem field up to this day, although the subsystems have already been merged into one by the December 1991 build. The graphical subsystem is launched by default to initiate the session, while it is currently unknown when the character mode subsystem gets spawned.

A fully text-mode subsystem exists in, which includes a text-mode login prompt and task manager; there also exists a corresponding  , however it is exactly the same as   (only change is TimeDateStamp in the EarlyPE header). It is assumed that this could be used by editing  and.

The build also includes the OS/2 subsystem seemingly based on an early version of OS/2 2.0, however, it is incomplete and trying to launch any OS/2 applications using the   launcher breaks into the debugger, resulting in a system hang. also includes a subsystem entry for the POSIX subsystem, although its executables are not included.

If the Session Manager fails to load any subsystems automatically, it will drop to a rudimentary command-line interface accessible via a debugger, which supports process management, debugging user mode NT processes, managing environment variables, and probing system parameters. Without an attached debugger, this appears as a system hang as the only thing displayed is a blank gray screen with a blinking text mode cursor and a row of equal sign characters at the bottom. From this point it is possible to continue system startup manually by initializing a subsystem server via a debugger.

Bugs and quirks
This build is generally unstable and can easily hang on certain tasks. It can be as simple as launching an application, pressing certain keys on the keyboard such as function keys, or even leaving the system alone for a couple of seconds. The triggers for these hangs can vary significantly from one installation to the next, and at least some of them may be hardware-related. Using the debugger reveals a lot of the hangs are related to GDI and USER problems.

Mouse and keyboard input are unreliable in this build, with reports of serial mice not working with some configurations and keyboard input having the tendency to randomly stop working until a reboot. It is recommended to use a PS/2 or bus mouse to prevent any issues.

CD-ROM drives do not appear in File Manager, however, they can be accessed from a command prompt. Additionally, there is a bug where directories may incorrectly show up as empty or incomplete. In Notepad, the Select All keyboard shortcut ( Ctrl + A ) does not work and creating a new file may result in garbage being placed inside the new text file.

Documentation
A  document is included inside the installation contents, which contains information about certain things, such as how to install this build and new features compared to the previous build. The README's contents: