Classic Systems Emulated: Windows NT 3.1

 

Windows NT Has Arrived!

Microsoft and IBM entered into an agreement on 1985 to write the next generation operating system that would replace DOS. This OS would incorporate such features as preemptive multitasking and multi-threading, have a graphical environment, and remain compatible with DOS applications. This was the agreement that created OS/2. Microsoft would gain the experience of writing advance operating system code while IBM would get a better understanding the needs of PC users.

Up til this point, the only other advance OS that Microsoft had a hand in was Xenix, which was a licensed version of the Unix operating system. Even then, the main thing Microsoft did was adapt Unix to run on PC hardware. The vast majority of the code was written by AT&T. and while Microsoft licensed the code, they didn't own it. As a result, Microsoft didn't have control over the direction of Unix. They were at the mercy of AT&T. This was another reason why the partnership with IBM was essential. While they didn't wouldn't have complete control, they would have far more compared to Unix. Steve Ballmer championed the agreement as it would give the Microsoft programmers that much badly needed experience to write advance code.

Even after the clash of corporate cultures, Ballmer still felt the agreement was essential. It was bearing fruit. OS/2 v1.0 was released on 1987. By OS/2 v1.2, the vast majority of the design goals for OS/2 have been met with that release, especially with the install-able file-systems. Work started on what would eventually become OS/2 v2.x, the next generation 32-bit OS for consumers.

However, other events were playing out. At DEC, Dave Cutler and his team of programmers were disgruntled about the direction that the company was heading towards. Culter and his team spent the last two decades writing powerful operating systems for DEC's hardware.

Starting with the PDP-11 minicomputer in the late 60's/early 70's to the VAX in the late 70's/early 80's, this team of prolific programmers wrote code that powered these powerful workstations. This was the team that wrote the VMS OS. VMS was a preemptive multitasking, multi-threading, multi-user OS that was very portable in nature. They wanted to continue with there research and even designed there own RISC-based processor, PRISM. However, by the late 80's, DEC wasn't that interested, so they left looking for an interested party to continue there work. Microsoft immediately hired them.

The Microsoft team immediately put Cutler and his team of rebel programmers to work on OS/2 v3.0. Several parts of what would become OS/2 2.0 had already been developed. However, Microsoft was put in charge of the direction of OS/2 v3.0. When Cutler's team were given the code that has been completed up to that point, they trashed it. Cutler never had a positive opinion of OS/2. He constantly referred to it as "DOS Plus". Cutler was still going to give Microsoft the next generation OS. They were going to do it by themselves without IBM's input. This was the independence that Microsoft so badly sought for, and Cutler was going to deliver it.

Starting from scratch, the project was referred to as NT-OS/2. NT stood for New Technology, and this New Technology was intended to be the basis for future versions of OS/2. This OS was going to be portable across various CPU architectures. Whatever was out there, NT-OS/2 would run on it. It was also going to be fully compatible with OS/2 and DOS, while being flexible enough to incorporate other subsystems, or personalities as Cutler called them, seamlessly when needed. Inspired by VMS, this OS was going to be preemptive multitasking, multi-threading, and multi-user. NT-OS/2 was going to be the OS that would provide the backbone for computer networks around the world. This OS would be as simple, yet powerful.

By the time they were brought on, the agreement between Microsoft and IBM began to fall apart. Microsoft hated the direction that IBM took OS/2. Microsoft wanted an OS that would redefine computing, while IBM simply wanted an OS so they could sell more hardware. Because the NT-OS/2 project started from scratch without IBM's code or input, Big Blue had no claim to the project. As such, Cutler's team could continue operating independently. Almost immediately, project goals changed. Instead of being the future version of OS/2, the future of Windows would be built around NT instead. It made sense. Windows 3.0 and 3.1 became massive successes in the marketplace. Windows has that viable future now. As such, the Microsoft executives wanted Windows to drive worldwide computing. Cutler was already ahead of the game.

While Intel's processor dominated desktop computing, for awhile, it seemed that this wasn't always going to be the case. Intel's processors were CISC-based in nature. CISC, or Complex Instruction set computer, was basically the concept where where an single instruction can execute several operations. However, RISC-based CPU's were becoming the rage. RISC, or reduced instruction set computer, was the concept where a single instruction set was small and optimized. RISC-based processors were defined by a high degree of optimizations via instruction pipelines and large number of registers, producing highly optimized code. This was the CPU concept that Cutler was building NT around. The source code for NT itself was platform-independent, while the OS itself would be compiled for whatever platform was in demand.

Because Windows NT was going to be running across different CPU architectures, the source code written for the OS and the applications running on it had to be as platform agnostic to make it as portable as possible. Compiling for a completely different architecture would be as simple as changing a flag in the compilation options.

Many companies were building around RISC-based processors. DEC was working on the Alpha, while Apple, Motorola, and IBM entered into an agreement to make the PowerPC processor. MIPS Technologies was making there own RISC-based CPU as well. For some time, Intel themselves were getting in the RISC game with the i860 and i960 CPU's. When it comes to all of these completely different architectures, the only thing needed to produce code on these processor is an compiler. These compilers would be available for Microsoft developers to port there OS to these different CPU's. Despite it being CISC-based in nature, the Intel x86 port of NT was given priority due to the domination of Intel's processors in the marketplace.

Windows NT operated on the idea of the hybrid OS kernel. The OS kernel, or the core OS component, is what powers the OS . While the NT kernel would be mostly be an micro-kernel, it would incorporate some ideas from monolithic kernels. A micro-kernel is an OS core where most of the frameworks are handled by the subsystem. The kernel itself doesn't do much. The idea is that by keep the subsystems and personalities separate, it allows for various components to be added or removed without modification to the kernel. Things like multitasking, multi-threading, multi-user, and device driver operated as independent subsystems. New features could be accommodated with ease. The NTVDM and WOW subsystems could be added or removed seamlessly. This is the opposite of a monolithic kernel where the kernel handles everything. Changing one of the subsystems meant doing a major rewrite on the kernel in order to support new features.

NTFS (New Technology File System) became one of the defining features of Windows NT. The FAT file system had massive flaws, and NTFS was meant to correct those flaws and add a lot of new features. As a result, NTFS was a vast improvement over FAT. Because Windows NT was intended for the server room, a robust filesystem was a must. OS/2 had HPFS while SunOS has the ZFS file-system. FAT was not really useable within the server room.

NTFS supported larger volumes than FAT. It also supported long filename support at a time when DOS, using FAT, was still stuck to the 8.3 naming convention. NTFS is a journaling filesystem. What that means is that the filesystem writes metadata of the drive's contents throughout, so that the data can still be accessed and migrated even after a drive crash. FAT had no such abilities. This feature is essential for the server room where data protection is essential. The NTFS filesystem is a redundant filesystem, which has multiple levels of backup and file preservation features intended on protecting the data on the drive. On one hand, NTFS was heavily influenced by HPFS which is used on OS/2. Yet, the additions of journaling and redundancy features made OS/2 a significant improvement over HPFS as well. 

On July 1993, Windows NT 3.1 was released. In the server space, NT went onto immediate success. NT drove many servers around the world. NT included the TCP/IP protocol be default, along with support for various Ethernet adapters. Windows NT was released as the WWW was coming of age. As such, NT was already prepared to be used as a web server. 

The Windows NT 3.1 Desktop.

As a desktop though, NT found much less success. It required a (for its time) very powerful computer. A 386 wasn't going to cut it. A 486 DX2 running at 66MHz wa sufficient enough, even though a faster processor, like one of those DX4 CPU's running at 100MHz would be much preferred. NT needed a lot of memory. 16MB's wasn't going to cut it either. 24MB's or more was sufficient enough. In comparison, OS/2 version 2.0 and 2.1 needed 8MB's, while Windows 3.1 could get by with 4MB's. When OS/2 Warp 3 was released, it could also get by with only 4MB's of RAM. NT was a bloated monster compared to its other alternatives. Why was this the case.

For those who value performance, highly portable code is often seen as a curse, and not a blessing. Portable code written in an higher-level language like C isn't machine-optimized. Also, this code tends to take up more disk space and memory when compiled. 

MS Foxpro and QuickBASIC running under the NTVDM.
The similarities between Windows 3.1 (Win16) and Win32 programs are only skin-deep. Under the hood, who they are fundamentally different, thus needed different personalities. Win16 programs uses memory different than Win32 programs. WOW, or Windows on Windows, became the Win16 subsystem. Because Win16 programs operated on Windows 3.1, which ran on top of DOS, the DOS subsystem was needed to support WOW.

The  NTVDM (New Technology Virtual Device Manager)  provided DOS compatibility. On Intel processor, this was done via the Virtual 8086 mode that had been on Intel processors since the 386. On the other architectures, this support was provided via emulation. Because processors like the PowerPC, Dec Alpha, and MIPS RISC couldn't natively process Intel code, emulation performed an line-by-line translation of the code. As one could probably imagine, there was a performance hit when doing complete emulation. Since Intel processors didn't need to resort to emulation, the code was passed straight to the CPU without translation, resulting in much greater performance for DOS and Win16 programs.

Emulation
I'm running Windows NT on PCEM v16. We don't have to make those performance sacrifices nowadays. If NT wants that DX4 running at 100MHz, then where going to give NT that DX4 running at 100MHz. My configuration has 32MB's of RAM, and is running from a 384MB hard-disk image. The emulated computer is using an S3 Virge with using the UniVBE video drivers for NT. Windows NT is running at the screen resolution of 800 by 600, 16-bit color depth. There is also a SoundBlaster 16 audio adapter installed.

The setup runs very well. DOS comparability was tested by running Microsoft FoxPro database application and QuickBASIC. Flight Simulator 4 was also tested within the NTVDM. Microsoft Access 2.0 ran under WOW. Netscape Navigator 3 for Windows 3.1 also worked fine under WOW. Lotus Improv for Windows 3.1 crashed though. 

Multimedia in Windows NT was very basic, like in Windows 3.1. NT came with a Sound Recorder and Windows Media Player. The early versions of Windows supported the VFW (Video For Windows) codec. However, I was was unable to play video that incorporated any audio stream, included uncompressed PCM audio. The videos were converted using VirtualDub. The only video I got playing was encoded in VFW without an audio stream. Video constantly stuttered on the 486 DX4 running at 100MHz (not too surprised). However, WAV files played without issue.

Microsoft Access running under the WOW (Windows-on-Windows) subsystem.

Conclusion
NT's future would be very bright and fulfilling. The NT kernel would drive hundreds of millions of computers around the world as the NT design became the basis for Windows XP, Vista, 7, 8, and Windows 10. It has a legacy which is still ongoing today. The reason why Microsoft was able to port Windows 10 quickly to the ARM processor was because of design choices made almost 30 years ago. To say that NT's legacy is alive and well is an understatement.

Flight Simulator for running under the NTVDM

Articles Of Interest
PCEM : https://pcem-emulator.co.uk/
Wikipedia - Dave Cutler : https://en.wikipedia.org/wiki/Dave_Cutler
Wikipedia - Windows NT : https://en.wikipedia.org/wiki/Windows_NT
Wikipedia - Kernel (Operating System) https://en.wikipedia.org/wiki/Kernel_(operating_system)
Wikipedia - MIPS architecture : https://en.wikipedia.org/wiki/MIPS_architecture
Wikipedia - i860 : https://en.wikipedia.org/wiki/Intel_i860
Wikipedia - i960 : https://en.wikipedia.org/wiki/Intel_i960
Wikipedia - Complex instruction set computer : https://en.wikipedia.org/wiki/Complex_instruction_set_computer
Wikipedia - Reduced instruction set computer : https://en.wikipedia.org/wiki/Reduced_instruction_set_computer
Wikipedia - Xenix : https://en.wikipedia.org/wiki/Xenix
Wikipedia - OS/2 : https://en.wikipedia.org/wiki/OS/2

Show Stopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft Hardcover – June 1, 1994
by G. Pascal Zachary 

Comments

Popular posts from this blog

WeatherStar 4000 Simulator For Windows (Part 1)

Classic Systems Emulated: Windows 95 (Part 1)

Classic Systems Emulated: Windows 3.1 OEMS

Old Hardware Emulated :Psion Model 3a Emulated On DOSBox Windows

Classic Systems Emulated: OS/2 Version 2.0 On PCEM

Old Hardware Emulated - Windows Mobile 5.0

Old Hardware Emulated : Pocket PC 2000/2002

Old Hardware Emulated :Einstein emulating the Apple Newton (Part 3)

Classic Games Emulated: Revisiting NFS High Stakes Modding

OS/2 Warp 4