Interesting? Maybe. October 1991 NT SDK uses the OS/2 toolchain

The linker is from an older MS SDK, the compiler from October 1991 preview of NT

So back in the day I wrote something vague about the October 1991 preview version of Windows NT, and after messing with the tools and building f2c & dungeon (among some other stuff) one that that stuck out to me is that the object files had to be converted for NT.

cvtomf!

The interesting thing is of course that it doesn’t support the cl386 direct compile and link (hence CL). Instead you have to compile, convert and then link. A fun thing about the October 1991 version is that there is a cl386 cross compiler for OS/2. So while looking around for OMF linkers (and assemblers that either understand GAS but output OMF, or some translator) I ran across this, and well yeah, it turns out that the OS/2 tool chain is the toolchain. I guess it makes sense in that the NT team was using OS/2 to build NT, but objects and exe’s were not solidified.

I think 6.00.080 was the last version of Microsoft C 386 for OS/2. I need to start collecting more of the SDK/DDK’s of the mixed era, I think the LX/OMF stuff was a bit more widespread hiding in plain sight.

Anyways, interesting?! sure. useful? Maybe 30 years ago. Although I’d probably say just use Watcom C/C++ instead of Microsoft C 6.00

MSDN from October 1994

I picked this 20 disc set recently and ugh the cringe is just… insane.  And yes, that is Bill Nye

 

STUDS from Microsoft .
(Video in MPEG-1/Audio MPEG-2 care of JSMpeg).

I had this ages ago, although I couldn't remember if the NT 3.5 SDK/DDK had shown up at this point, but it's only the Japanese version in this set.  Since I'm having such a PITA in tracking down a 3.5 set, and I'm not sitting on this, I may as well archive it.

Yes, I had to rip 20 of these!

So you too can find the early Video for Windows, and all kinds of other things from the mid '90's on archive.org.

Or Wallpapers like this 'puppy' from the Japanese version of Windows 3.1

https://archive.org/details/MSDNOctober1994

Re-enabling WinHelp on Windows 10

There was a shift years ago from the old help system that has it’s roots going back to Windows 3.0, and was certainly one of the killer features of Windows 3.0, the hyperlinked and searchable help files.  They were a form of compiled RTF files, and could also embed image resources, and later audio & video with the evolution of Windows.  This allowed for a platform for early multimedia encylopedias and other refrence books of sorts.

Starting with Windows Vista, however the WinHelp engine was being retired out for a CHM or compiled HTML help engine.  And for a whlie there optional updates and later downloads to re-enable WinHelp.  However starting with Windows 10 the downloads no longer work.

All is not lost however, if you copy any of the 32bit WinHelp programs from NT 3.1 onward it will still function on Windows 10.  And thanks to this great post on TenForums, you can re-enable the hook so that Windows 10 will integrate again with WinHelp.

@echo off
set crtpth=%CD%
takeown /f "%windir%\winhlp32.exe" >nul
icacls "%windir%\winhlp32.exe" /grant *S-1-5-32-544:F >nul
copy /y "%crtpth%\winhlp32.exe" %windir%
icacls "%windir%\winhlp32.exe" /setowner "NT Service\TrustedInstaller" >nul
echo.
echo Done.
echo.
echo Press any key to Exit
pause >nul

WinHelp from Windows NT 3.1 refresh on Windows 10

And there we go, now I can load obsolete refrence docs from great old programs like Visual C++ 1.10 for Windows NT!

Naturally Microsoft removed all this stuff as it was a security risk, in that they apparently never revamped or updated it, so yeah it may be another infection vector.

Microsoft Fortran PowerStation for NT 1.00

So I came across this recently, and unlike the previous version I had for Windows 3.1, This version is for Windows NT.  And unlike the Windows 3.1 version this version does actually run on the shipping version of Windows NT 3.1, and thus will work all the though including Windows 10 on x64.  The setup program unfortunately doesn’t complete leaving it ‘unlicensed’ however it’ll still run.

The diskettes for the Windows 3.1 version I have are dated 11-23-93, but once installed the compiler is actually from February of 1993, with the Windows NT version being dated October of 1993.

So the nice thing with the Windows NT version is that you don’t have to mess with the compiler, and linker, it’ll just run.  And just like Visual C++ 1.0 / 1.10 for NT the linker doing a release build will always result in an exe being at least 2 megabytes in size.

I know that this is pretty much useless for 99.9999% of people.  Yes it’s ancient Fortran.  Yes Fortran PowerStation 4.0 is far more comprehensive.  Yes after it was sold to Compaq as part of some deal over the collapse of Dec & Windows NT, then sold out to Intel.  And GFortran is free.

But here we go.

32bit Fortran from 1993 in 2018!

Microsoft Editor

(This is a guest post by Antoni Sawicki aka Tenox)

In a recent blog post Wanted: Console Text Editor for Windows I lamented about lack of a good console/cmd/PowerShell text editor for Windows. During the process I made rather interesting discovery. There in a fact there is a “native” Windows, 32bit, console based text editor and it has been available since earliest days of NT or even before. But let’s start from…

…in the beginning there was Z editor. Developed by Steve Wood for TOPS-20 operating system in 1981. Some time after that, Steve sold the source code to Microsoft, which was then ported to MS-DOS by Mark Zbikowski (aka the MZ guy) to become the M editor.

M editor

The DOS-based M editor was included and sold as part of Microsoft C 5.1 (March 1988), together with the OS/2 variant, the MEP editor (perhaps M Editor Protected-mode). The official name of M/MEP was simply Microsoft Editor. The same editor was also available earlier (mid-1987) as part of the MS OS/2 SDK under a different name: SDKED. Note that normally SDKED insists in operating in full screen mode. Michal Necasek generously spent his time and patched it up so that it can be run in windowed mode for your viewing pleasure.

SDKED on OS/2

However my primary interest lies with Windows NT. The NT Design Workbook mentions that in the early days a self-hosting developer workstation included compiler, some command line tools and a text editor – MEP. Leaked Windows NT builds sometimes include IDW, Internal Development Workstation, which also seem to contain a variant of the same editor. In fact some these tools including MEP.EXE can be found on Windows NT pre-release CD-ROMs (late 1991) under MSTOOLS. It was available for both MIPS and 386 as a Win32 native console based application.

MEP on Windows NT Pre-Release

MEP.EXE was later also available for Alpha, i386, MIPS, and PowerPC processors on various official Windows NT SDKs from 3.1 to 4.0. It survived up to July 2000 to be last included in Windows 2000 Platform SDK. From time perspective it was rather unfortunate that it was buried in the SDK rather than being included on Windows NT release media.

MEP from NT SDK on Windows NT 4.0

The Win32 version of MEP also comes with an icon and a file description which calls it Microsoft Extensible Editor.

But that’s not the end of the story. The editor of many names survives to this day, at least unofficially. If you dig hard enough you can find it on OpenNT 4.5 build. For convenience, this and other builds including DOS M, OS/2 MEP and SDKED, NT SDK MEP can be downloaded here.

Digging in through the archive I found not one but two copies of the editor code, lurking in the source tree. One under the name MEP inside \private\utils\mep\ folder and a second copy under name Z (which was the original editor for TOPS) in \private\sdktools\z folder. MEP was included in Platform SDK, while Z was only available as part of IDW.

Z editor Icon

Doing a few diffs I was able to get some insight on the differences. Looks like MEP was initially ported from OS/2 to NT and bears some signs of being an OS/2 app. The Z editor on the other hands is a few years newer and has many improvements and bug fixes over MEP. It also uses some specific NT only features.

Sadly the internal Z editor was never released anywhere outside of Redmond. All the versions outlined so far had copyrights only up to 1990, while Z clearly has copyright from 1995. Being a few years newer and more native to NT I wanted to see if a build could be made. With some effort I was able to separate it from the original source tree and compile stand alone. Being a pretty clean source code I was able to compile it for all NT hardware platforms, including x64, which runs comfortably on Windows 10. You can download Z editor for Windows here.

Z editor on flashy Windows 7 x64

But how do you even use this thing?

Platform SDK contains pretty solid documentation in tools.chm.

Here is a handy cheat sheet:

Last but not least there is a modern open source re-implementation of Z editor named K editor. It’s written from scratch in C++ and LUA and has nothing to do with the original MEP source code. K is built only for x64 using Mingw. There are no ready to run binaries so I made a fork and build.

K editor on Windows 10 x64

The author Kevin Goodwin has kindly included copies of original documentation if you actually want to learn how to use this editor.

Installing Windows NT 3.1 on a physical computer

I have this P4 I got for super cheap in Hong Kong, that came with Windows 98 of all things. Naturally I want to load something more useful like Windows NT 3.1 onto it, so I did have to do some tweaking first.

Storage

The first thing is the hard disk. I was lucky in that this machine came with a 40GB disk, the Hitachi Desktar IC35L060AVV207-0.

HGST Deskstar 180GXP IC35L060AVV207-0

HGST Deskstar 180GXP IC35L060AVV207-0

Now what makes this disk great, is that it can be jumpered down to act like an 8GB disk, so that things like MS-DOS and older OS’s like Windows NT can recognize the disk.  Even nicer that the jumper settings are on the disk!

Disk jumpers

Disk jumpers

My board supports booting from IDE, which is nice as I could paritition and format the disk from MS-DOS 5.00, and make sure things were working fine.

However it really doesn’t matter as over on Beta Archive, The has made an ATAPI driver available for not only Windows NT 3.1, but also various beta versions as well!  You can find the post, and the links to download here! (mirror here).  Now you can install from the boot diskette & a driver diskette and load the rest of the OS from CD-ROM.

Processor

You will have patch the INITIAL.IN_ and SETUP.IN_ files to allow installation on any new processor.

Change

STF_PROCESSOR = “” ? $(!LIBHANDLE) GetProcessor

to

STF_PROCESSOR = $(ProcessorID_I586)

You can leave the files expanded, but this is needed if your CPU is newer than a Pentium (Yes a Pentium 60/66 type processor, so that is Pentium Pro, Pentium II, Pentium III, Pentium 4 and beyond…).  But yes, this is great!  No need to try to dig up old SCSI cards, SCSI disks, and SCSI CD-ROM drives.

Network

And much like Qemu and VMware, the AMD PCnet is a great go to PCI card, and I was able to find this IBM 11H8130 Type 8-Z 10BaseT PCI Network Card which works!

IBM 11H8130

IBM 11H8130

The card works great with 11265315.exe set of drivers, OR disk image pcnet.7z .  But for sure the key is the in the chipset!

AMD

AMD AM79C970AKC PCnet(tm)-PCI II

As this chipset, the AMD AM79C970AKC is the one that is explicitly listed as compatible.  This IBM card provides an AUI port, along with a 10baseT port.

Post install, service packs

Of course when installing Windows NT 3.1, you’ll want service pack 3, the last update to the OS.

Also don’t forget to replace NTLDR & NTDETECT.COM from a later version of Windows NT to allow access to more than 64MB of RAM.

Thoughts…

Windows NT 3.1 will allow you to install on FAT, HPFS, and NTFS v1 partitions and disks.  The TCP/IP is a 3rd party, from Spider that does not support DHCP.  Outside of doing it just because, it really is better to go with NT 3.5 or 3.51 as they have better SMP support, are much faster, and have a much more robust network stack.

 

Apache 1.3.4 on Windows NT 3.1

Yes, I know it’s crazy old, totally useless, but it did mostly compile.

Apache 1.3.4 running on Windows NT 3.1 Advanced Server

Apache 1.3.4 running on Windows NT 3.1 Advanced Server

Assuming it’s hasn’t been crashed or hacked it should be online here:

http://winnt31.superglobalmegacorp.com/

Unlike Serweb 0.3, Apache is HTTP 1.1 compliant, which means that I can put it behind haproxy, and enjoy the fact it doesn’t need a dedicated IP address.

Although I can’t imagine anyone wanting it, here is the binary/source and my htdoc dump.  Download it here: apache-NT-31.zip & unzip.exe

Apache console mode

Apache console mode

I had to pull out some stuff, like some of the service features, so it really only runs as a console app.

I’ve compiled it with /Zi meaning full debug and no optimization.  If you want to re-compile you’ll probably want either the Win32 SDK, or Visual C++ 1.0 32bit, and replace the headers and libraries from the Windows NT 3.5 SDK.  Much like trying to build GCC 2.6.3 on Windows NT.

Also in a silly way, thanks to Qemu, I’m now running both OS/2 & Windows NT on the same server, running Linux.

Windows NT 3.1 & KVM

No go.

No go.

I don’t know what I was expecting, but I thought I’d try to install Windows NT 3.1 Advanced Server in a KVM virtual machine.  No doubt the processor is just too new.  The -cpu 486 / -cpu pentium flags didn’t help things out at all.  However using Qemu has it running just fine.

I also had this crazy idea that haproxy could front HTTP 1.1 requests into serweb so I could go back to having a Windows NT 3.1 web server.  Naturally that didn’t work.

502 Bad Gateway

The server returned an invalid or incomplete response.

Oh well.

The useless update, is that I managed to get Apache 1.3.4 to compile and run on Windows NT 3.1!

https://virtuallyfun.com/2016/10/12/apache-1-3-4-on-windows-nt-3-1/

PC Retro Networking at its finest

When most people think of old PC networking, they think ethernet, and of course most people I know think of the NE2000.  This card from Novel was cloned, and quite popular as time went on.  Its amazing how many variations of this card there was, and there is even a PCI version of this card, the RTL8029AS!

But that is not what this is about, as most OS stuff from the early 1990’s relies on another card, the 3com Etherlink II.

Notably products like IBM TCP/IP 2.0 for OS/2, Lan Manager for OS/2, Windows NT Pre-releases, Xenix, do not ship with NE2000 drivers, but they all support the Etherlink II card.

Now before you start jumping on fleabay, or scrounging around the Etherlink III card is *NOT* the same as the II, nor is it compatible!

My eight bit Etherlink II

Looking at the card, you can see it has *SOME* jumpers, that configure the IO Base, and where to locate its shared memory (or disable it).  But notice there are no jumpers to select the IRQ, the DMA channel!  I went in circles for a while looking for a softset utility for this card, and spent HOURS basically showing up with nothing.  So I figured at this point I’d just download some drives, and see how long it’d take to magically get it working.

On my first attempt, I used the packet driver, so I could load up some QuakeWorld for MS-DOS.  But something amazing happened, it worked on the default settings!  Experimenting more, as I changed IRQ it always worked unless there was a conflict ..  I then tried a Novel Netware client, but it didn’t work.  Also I loaded the lanman client for OS/2 on OS/2 1.21 and it didn’t work ether.  I was perplexed.  Then I found out two important things from an ancient usenet posting:

  • There is no softset program, because the device driver configures the card, and can change any/all of its hardware characteristics
  • Some drivers don’t detect if they should be using the internal transceiver, or an external one, and have to be told.

So I looked at the protocol.ini for lanman OS/2 and sure enough there was this entry, commented out:

TRANSCEIVER = EXTERNAL

And the Netware client just needed the following statement added:

CONNECTOR DIX

And now I can happily mount NetBEUI shares, mount my NetWare server, and of course use WatTCP programs from DOS without issue!

Donor time!

I was going to load an early Windows NT Preview onto my Aptiva, but then all it would do was crash with a kernel panic of 0x00000032. Then it hit me, the hard disk I have is 2GB and this early version can only handle disks up to 512MB.  So I was looking around where to get a small enough disk, and then I thought what the heck, and took apart a ‘new’ machine I scored last week, an IBM PS/1!

The IBM PS/1 was kind of a disappointment as it cannot run OS/2!  Can you believe it, IBM made a machine that can’t run their flagship Operating System??  As far as I can tell the heart of the matter is that the IDE controller doesn’t live at the default port/irq that any other PC uses, so OS/2 or any other protected mode OS can’t detect it.  I only have 2MB of ram, so loading OS/2 2.0 is out of the question.  So for the sake of the experiment, I took the disk out of this poor IBM PS/1 2121 and put it ‘on’ the Aptiva.

Pentium 150Mhz, 32MB of ram, and an 80MB disk!

First I really wondered if the 80MB disk would be big enough, but surprisingly after a format, and installation of IBM DOS 4.00 (its what the PS/1 runs in ROM and really really likes!) and using the network to bootstrap the files, it happily fit with the SDK in 40MB! (it adds another 20MB for swap…).

Its amazing just how large OSs have gotten over the years, but yeah at the same time, this version of NT is not ready for prime time that is for sure!

So I load it up, and notice two things… One its insanely slow, and secondarily I can’t figure out how to configure the network card. So for some reason I just tried to start up the server/workstation, and do a net view and…

Early Windows NT preview with networking

It worked!

The best part was loading up the October 1991 Windows NT Preview, and it just magically worked, after starting the server/client services!