PX00307, also known when Windows NT was born.

I just found out about, PX00307.pdf, basically its when Microsoft was thinking about breaking away from OS/2 and making the future all Windows based….

Its funny how they say that OS/2 PM has a better API, and at the same time were talking about having NT continue using an INT 21 interface for Windows.. No doubt this is all high level talk, Cutler would have killed anyone for even mentioning INT 21… lol

The first appearance of Windows NT

As mentioned in the great book Showstopper!, the first public demonstration of Windows NT was at the 1991 Fall Comdex.

And apparently it must have been quite a show.. In retrospect, but for stuff written down at the time there isn’t a heck of a lot to go on. I do find snip its like this after the fact:

“At the COMDEX show, Microsoft gives the first public demonstration of Windows NT. [909.232]”

But how about a good review? How about someone to kick the tires? I guess it was just too far fetched? Anyways I did find this ONE writeup in Infoworld:

Windows NT looks real at Comdex.

 

And it is just gushing about SMP support. But if you think about it, SMP support around 1991 was almost non existent. It either fell into people who took UNIX and tried to make it more SMP friendly (ie giant spinlocks) or people who offloaded specific tasks to different CPU’s (Novell Netware). NT was like Mach in that it was going to be something totally different written for SMP hardware in mind, and presenting a personality much like an old trusty OS, be it POSIX, Win32 or the NTVDM running other stuff. The other thing the article mentions is that 300 of these developer discs were made.

So with some luck, someone actually sent me an installed copy of this historic version of Windows, so let’s take a look shall we?

The only thing I really can compare this to is the later December 1991 release, but here goes.

 

So first here we are booting up. Not surprisingly, like all version of Windows NT we start with a blue screen. And here we know it’s the official “32-Bit Development Kit October 1991.” version. I wonder if they even sold/gave these out at Comdex to some selected people… But I’d imagine they didn’t.

And here we are at the login screen. Just like the December 1991 version there is no passwords, and you can even login as SYSTEM. The background & color scheme was set in the image, I bet changing them is trivial.

Here we are at the desktop. It feels more like Windows 3.0 then 3.1, it may very well be mixed in with the beta Windows 3.1 program manager for all I know.

Here is the command prompt. It looks very OS/2 like with the square brackets around the prompt. Just like December.

So I figured, let’s search through ntoskrnl.exe for any trace of OS/2…

And here it is!

Buried in the binary is the true name of Windows NT, NT OS/2. Not that it matters. Also notice all the NT api calls. It looks like these early kernels weren’t to scared to share their interface names..

Now this is a big deal, look at all the multitasking! In 1991 getting this kind of tasking out of Windows 3.0 was an impossibility! I’ve got 6 copies of WinBez open, along with Winshap bounding around minimized. I’ve got a command prompt open, and I compile some code, and it keeps on going.

But really pictures don’t speak words for it, here is it in action!
 

 

I know it’s small, it’s blogspot’s formatting, but you can always view the direct video on youtube here. And you too can watch me compile & kill a troll. Very exciting!

I’ll have to write up later how I did this….

Zork on Windows NT 3.1 Pre-Release

So I’ve had a few pre-releases, and I’ve not ported anything to it as yet so it’s been kind of silly. So at any rate I figured I’d clean up dungeon to run. So I managed to get the source onto the drive under qemu (-hdb fat:\temp\zork), and from there I got it to compile, and it crashed out.

Hard.

Well that was painful!

So I took a que from the sample directory, and saw how it built a simple hello world, and took notice of the ‘cvtomf’ process… No doubt this early pre-release stuff is not anywhere near as stable as what NT was when it was around late 1992 or when it shipped in 1993. So spending some 30 minutes with the makefiles I got an exe that didn’t bluescreen the OS…

But still crashed. If only I had a debugger… Oh wait, what is this? Some kind of built in debugger?

I’ve never used NTSD, or the “NT Symbolic Debugger” before. It’s like debug from MS-DOS days, just with far more bells and whistles… Although the pre-release versions are lacking a lot of these features, I did manage to find the #1 thing I end up using, and that is the callstack, it’s bt in gdb speak, but it’s nice to see who called who before it exploded.

Here you can see how the program flowed from the mainCRTStartup which then catapults into main, then we see it calling sigcatch & signal, then it dies. Well I’m pretty sure that Zork doesn’t need signals, and that Windows NT around 1991 was far from feature complete and I bet emulating Unix signals wasn’t exactly high on the priority list.. If anything they were going nuts about meeting some kind of Comdex show deadline, and trying to bring the MIPS port up to parity with the i386. So I did the logical thing, which was to remove the signal portions from f2c & libf2c, and recompile.

So here we go, All the hallmarks of 1991 and Windows, we’ve got solitare, reversi and Zork (Dungeon) translated from fortran into C, and actually running!

So here is October of 1991, and December of 1991. Both needed long filenames to compile, I just used a HPFS slave disk. I just used Windows NT 3.51 to transfer stuff in & out as it’s got TCP/IP to make it easy, as it’ll also read HPFS. I guess you could use the MS-DOS pkunzip and fix the filenames yourself but I’ll leave that to the reader. The source trees ought to be identical, I left the object files & executables in there.. Naturally the December pre-reelase won’t run the October executable… Or link correctly with it’s object files.

I’d also imagine it’ll work on any version of NT that ships with a cl386 SDK… and probably any modern one by fixing the reference to cl386 in the makefile.

Windows NT July 1992 Preview

So I got my hands on another early Windows NT preview. This one is so rough around the edges, it’s more of an alpha then a beta. It’s even reflected in the bootup screen.

Bootup Bluescreen

Well, what has changed from the 1991 releases? Plenty, the registry is coming along quite a bit, but there is no integrated setup program at this point. I almost wonder if this build was meant to be internal only, as it does drop stuff about your Microsoft badge ID. No, really!

Freaky, isn’t it?

Winver showing Build 297

In this build 297, and it includes the OS/2 & MS-DOS/WOW subsystems. The POSIX subsystem is absent, further cementing the idea that it was included much later to target Windows NT at government contracts with a POSIX check-box. I’ve only done some simple testing with the MS-DOS compatibility and it was ‘ok’ but nothing too solid. I didn’t have any luck with the OS/2 stuff, maybe I’m just doing it wrong. One thing is for sure, if it’s this rickety in 1992, they were nowhere near ready in 1991!

I guess if you paid for it, you can put your name all over it!

Another fun touch is who it’s registered to. I guess since Bill is footing the bill for NT, it’s all his anyways.

Broken boot.

With that being said, the installation which involves a batch script dos2nt.bat is very touchy, it does require few files to manually edit. I’ve found it works best with a d drive to swap to, but for the most part NT cann’t find itself properly and you wind up with a blank desktop, stemming from the “An error has occurred in the registry. The Program Manager’s settings and groups can not be accessed.” error. Since NT at this point is far more closer to Windows 3.1, then 1991’s builds being closer to Windows 3.0, the famed game reversi is missing…

However the administrative tools is in NT now, the logon/logoff and locking works. NT at this point is transitioning from an OS running a 32bit version of Windows 3.0 into a fleshed out operating system.

Shutting down.

Windows NT December 1991 Preview

So I re-read that great book, showstopper! which recounts the race to bring Windows NT to market.

showstopper cover

So after a lot of digging around I managed to find an old CD, the second public showing of Windows NT, the December 1991 pre-release.

Windows NT December 1991 scan

This is the first version that contained both MIPS and i386 binaries. At the time there were lots of issues with the MIPS processors, and the MIPS port of NT was slipping behind the i386 in major ways. So between the first public display of Windows NT at the 1991 COMDEX in October, there was a major push to bring the MIPS release up to some level of parity.

On the way to making Windows NT the team started by cross compiling from OS/2 1.3 machines. And in this release they left the cross compilers in there, which is kind of cool. So I just compiled a simple console application, like this:

OS2 cross compile for NT dec 1991

And then running it under the pre-release..

Windows NT dec 1991 running cross compiled exe

Which is pretty neat when you consider it.. And of course in the book there is the coming break with IBM as they pushed not only for the dominant Win32 personality, but also to make NT self hosting. According to the book, NT was self hosting some time in March of 1991, with NT being text only. The first graphics started to show up around May, and Networking as late as August.

Installing the beta is a little interesting as there is no ‘setup’ program at this point. The easiest way to install it is from within MS-DOS. There is a batch file that will xcopy in the needed parts, and then uses debug to write in a new bootsector. After a lot of trial and error I found that the disk works best when it’s under 500MB.

NT 3.1 dec 1991 bootsector fun

And away we go!

windows nt 3.1 december 1991 logon

What is interesting about these 1991 releases is that they didn’t include any of the subsystems other then the Win32 subsystem. And the user login screen here actually doesn’t even take the password it’s just a dummy screen. Windows NT is configured from a plain text file nt.cfg . The registry has only begun it’s work at this stage, but it’s just not there.

reversi!

reversi!

From a user standpoint it looks and feels more like Windows 3.0 or an early Windows 3.1 beta. Which should be expected from the timeline. Even the games, it’s solitare, winmine, and reversi! All in 32bit glory! Even the help about screen for program manger lists that it’s running in “NT MODE”, as opposed to REAL, STANDARD or 386 Enhanced modes, which were available at the time for Windows 3.0 .

Another thing, is that the ‘administrative’ tools didn’t exist yet. I do know the net command had the start/stop so services are there, if only hidden. NT really didn’t start to feel more like NT until late 1992 when it was getting really close to being feature complete, as they shook the bugs out.

Now the install media has this ‘special’ boot floppy to do a GUI install, which Qemu won’t support because of the lack of the ancient scsi controllers of the time. But with a little pathing I managed to get it to run under NT. I’ll spare you the middle bits, but if you can you can get them here.

windows nt 3.1 december 1991 setup

magic happens…

windows nt 3.1 december 1991 setup 14

And there we go!

Another interesting thing I stumbled across from this time was this: InfoWorld article, which is an interview with Steve Balmer just after the October COMDEX show.

It’s really neat to see something as prolific like Windows NT, which has installed seats in the hundreds of millions what it was like when it was so young and vulnerable.. It certainly was ‘forward thinking’ in that it didn’t run all that well on 386’s with 8MB of ram, a ‘power house’ of a computer back then. But it scales up to machines like my laptop with 8 cores and 6GB of ram just fine. By forcing the portability NT like any other *NIX just ports over and keeps on going.

As a silly story when NT 4.0 was in it’s heyday (sp2!) I ran a Compaq Desqpro 386 with 16MB of ram with NT 3.1 Advanced Server as a MSMail hub. And It’s kind of funny in retrospect but I had all the SQL servers using it for alerts and whatnot, and when it came to uptime NT 3.1 had all the 4.0 stuff beat. Then again NT 3.1 was the ‘pure’ architecture version, before they started the crazed speed hacks of the video/printer stuff moving to kernel space… Oh well that’s my $0.02.

Qemu 0.14.0 rc2 released!

Qemu 0.14.0 rc2 and Windows NT December 1991

Qemu 0.14.0 rc2 and Windows NT December 1991

Well this one compiles clean under MinGW so that’s a nice touch. the ISAPC machine type is still broken. 😐

I’ve built the usual set with soundblaster & adlib enabled, and the NE2000 set to 0x300 irq 3 so old crusty things ought to have some hope of working. I’ve also included the PS/2 mode 3 keyboard patch for some really old stuff.

So here we go the x86 / x86_x64 builds that 99% of you want/need.

And here for the rest of the stuff for the 1% that need/want sparc/arm/powerpc/mips etc…

Serweb 0.3

So a while back when I installed a copy of Windows NT 3.1, and put it on the internet, I looked high and low for a web server. Somehow I found this small web server, Serweb by Gus Estrella, which seemed to fit the bill. However one thing that I did notice after a while is that it had a tendency to crash, and it’d require manual intervention to hit an ‘ok’ dialog box. The other stumbling block, was that it was a Win16 application, and Windows NT 3.1 only supports a single WOW instance…. So running Serweb and Netscape always led to issues…

Then the other day, I actually found the source code to serweb! So the first thing I did was to remove the message box function that was preventing me from letting this thing ‘just run’. Well that was cool, but I wondered if this thing was from 1993, meaning it’s MFC dependencies shouldn’t be that involved it may even port to a Win32 application.

So with a few tweaks, mostly in the resource scripts, I was able to rebuild serweb as a win32 application! For the 2-3 people who care about this kind of thing, you can download it here.

I would suspect it’d run on the Dec Alpha or the MIPS, but I haven’t even tried to build it there, as I run NT 4.0 on both of those platforms, and I end up using the IIS that is available.

Serweb 0.3 on WindowsNT 3.1

Serweb 0.3 on WindowsNT 3.1

I do have to admit, I’m kinda surprised that Visual C++ 1.0 for Win32 could handle this… I’ve had pretty mixed results with it, but oddly enough converting a MFC Win16 to a Win32 MFC app seemed somewhat straight forward. It’s probably more so to Gus Estrella’s work then anything I did…!

SHOWSTOPPER!

show-stopper-coverI was browsing around at a book store, and I came across the book “SHOWSTOPPER” the breakneck race to create Windows NT and the next generation at Microsoft.

If you have ever lived through the Windows NT 3.x days you’ll find this a very interesting read. It goes into the big personalities, and of course covers the working habits of Dave Cutler… Although it does paint him in some really odd colors, mostly as an antisocial kind of dictator pushing people to produce the largest program Microsoft had ever produced at the time.

But there is no doubt, Cutler could not have written Windows NT at Digital, as DEC was too fond of hardware lockins (look at VMS & Ultrix/True64). And it does cover the major animosity of Cutler towards DEC with the cancellation of the Prisim/Mica projects, and then the later “I told you so” moment when DEC licensed Windows NT from Microsoft (although other reports claim that DEC threatened MS with a lawsuit, and MS gave them access to NT, along with some money…). Apparently the mantra was “Dec could have had NT for free”..

There is also coverage of the culture clash of what happened when Microsoft had absorbed the Prisim & Mica engineering teams from DEC, and how they did not get along with Microsoft staff, and even did their best to poke holes in the current offerings of MS-DOS & OS/2 as either a toy, or a joke.

One thing I found interesting, is that the book mentions the WLO project, as the foundation for what would be the ‘Win32’ system. WLO if you remember was a port of the Windows Libraries to OS/2. It was very interesting in that Windows, OS/2 and even MS-DOS & Win16 via WOW were all not part of the main Windows NT group, but rather ‘tacked on’.

However it is quite interesting that the design decisions made for a very portable and modular operating system, that survived it’s original CPU & platform being changed 1/4th the way through development, and then the removal of the primary API.

Another thing that was interesting was some of the ‘fixes’ for the too slow, too big that would plague the early versions of NT, was the idea of demand paging portions of the kernel.. I for one would go insane with the blue screens about paging non page-able areas or some other VM error… But the truth was NT was written by people who came from a minicomputer world, and as the book made evident from time to time, they did NOT use PC’s.

Needless to say, the book was somewhat spot on, in that it’d take 10+ years for computers to catch up to what Windows NT was written for. I for one can remember trying to run this on a 386sx-16 and it was horrible… But if you install it on a Pentium II the 3.x series simply FLIES… And in emulation on modern machines it has incredible performance.

While Windows NT 3.1 was no doubt a 1.0 release, 3.5 was a 2.0. The x86 optimizations really payed off, and kicking out the Spider TCP/IP stack, and bringing in the new MS stack helped a LOT. There is no doubt back in 1994 as SLIP & PPP accounts were becoming more common place, Windows NT 3.5’s networking was the easiest to configure and use. Linux back then really was in it’s infancy, and the dialup scripts for pap/chap/pppd were… a nightmare.

“Dogfooding” was another interesting, and necessary thing as once NT was able to start running programs it was important to make people start using it as quickly as possible to shake out bugs in the system. Its also interesting to note the reluctance of the kernel team to deal with the graphical part of NT, and how the first versions were text only. Another weird part was how the security in Windows NT was an after effect, of the internal networking group cooking up what eventually became the domain & trust model. Not to mention how NTFS almost didn’t make it because the filesystem people (all two of them!) were so busy making sure HPFS worked correctly.

There is no doubt that such a ‘ground up’ OS of this magnitude hasn’t been attempted since 1988. It took Microsoft 5 years to get Windows NT out the door, but there is no doubt looking around in the year 2010, Windows NT has a long life ahead of it.

For those interested, you can find it on amazon.

Quake 1 fun

Well I started playing some more with the Quake source, looking to get a dedicated server at least running on Windows NT 3.1 . The problem is that every time someone connected I got this error:

SV_ReadClientMessage: NET_GetMessage failed

And they were disconnected. Some digging thru the source code revelaed that they were being dropped because they had ‘timed out’. But they did not timeout, the real cause is that the null_sys driver is TOO FAST!!! So this gave me a good excuse to re-use my failed SDL build for NT 3.1 (it has no video) but the timer works great! So with a little fun with the linker & Visual C++ 1.0 I managed to get it running!

I’ve put the source and build script for building the dedicated quake server here

The SDL.lib will probably link with every version of Visual C++, but I’m no promising. Also it wont work video wise on NT 3.1 so don’t get all excited.

Anyways no I havent put one on the internet… I dont know if there are enough people even slightly excited about quake… but it’s FYI….

Qemu test…

*Edit, this is completely out of date, and replaced by the much more improved Apache 1.3 for Windows NT 3.1.  Not that it’s visible to a visitor, but it’s live @ http://winnt31.superglobalmegacorp.com/

Well I figured I’d try Qemu on the PowerPC 64 platform… (AKA Playstation 3), and I loaded up NT 3.1 & Serweb… Not exactly a ‘high performance’ solution but I wanted to see it work..

And you can too!

http://216.75.197.51

I just put some minor things on NT 3.1 on there, although I’ll have to get something… better on there.

In the meantime, enjoy some old cat stuff.