I cannot understand why you want this, or why I’m even going to do it. At this point in GCC history the winnt-3.5 target had been dumped in favour of going all in with Cygwin. So yeah, this does not either clearly configure, or compile. But a little bit of mashing files, and I have it at least compiling some assembly that can be translated into an object file that a later version of MinGW can actually compile.
All I’ve built is the gcc driver, the cpp pre-processor, and the cc1 aka C backend.
D:\proj\gcc-3.0.4\gcc>xgcc -c -v hi.c
Using builtin specs.
Thread model: single
gcc version 3.0.4
cc1 -lang-c -v -iprefix ../lib/gcc-lib/i386-winnt35/3.0.4/ -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -Dunix -DWIN32 -D_WIN32 -DWINNT -D_M_IX86=300 -D_X86_=1 -D__STDC__=0 -DALMOST_STDC -D_MSC_VER=800 -D__stdcall=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D_cdecl=__attribute__((__cdecl__)) -D__unix__ -D__WIN32__ -D_WIN32 -D__WINNT__ -D_M_IX86=300 -D_X86_=1 -D__STDC__=0 -D__ALMOST_STDC__ -D_MSC_VER=800 -D__stdcall=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D__cdecl__=__attribute__((__cdecl__)) -D__unix -D__WIN32 -D__WINNT -D__ALMOST_STDC -D__cdecl=__attribute__((__cdecl__)) -Asystem=unix -Asystem=winnt -D__NO_INLINE__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ hi.c -quiet -dumpbase hi.c -version -o C:\Users\jason\AppData\Local\Temp\ccpflisr.s
GNU CPP version 3.0.4 (cpplib) (80386, BSD syntax)
GNU C version 3.0.4 (i386-winnt35)
compiled by GNU C version 5.1.0.
ignoring nonexistent directory "../lib/gcc-lib/i386-winnt35/3.0.4/include"
ignoring nonexistent directory "../lib/gcc-lib/i386-winnt35/3.0.4/../../../../i386-winnt35/include"
ignoring nonexistent directory "D:/pcem/building/MinGW/msys/1.0/local/include"
ignoring nonexistent directory "NONE/include"
ignoring nonexistent directory "D:/pcem/building/MinGW/msys/1.0/local/lib/gcc-lib/i386-winnt35/3.0.4/include"
ignoring nonexistent directory "D:/pcem/building/MinGW/msys/1.0/local/lib/gcc-lib/i386-winnt35/3.0.4/../../../../i386-winnt35/include"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
End of search list.
<command line>: warning: "__STDC__" redefined
<builtin>: warning: this is the location of the previous definition
<command line>: warning: "__STDC__" redefined
<command line>: warning: this is the location of the previous definition
hi.c: In function `main':
hi.c:3: warning: return type of `main' is not `int'
as --traditional-format -o hi.o C:\Users\jason\AppData\Local\Temp\ccpflisr.s
D:\proj\gcc-3.0.4\gcc>gcc hi.o -o hi
Hello from GCC 3.0.4
So there you go, mysterious internet user! Download my source dump with binaries in the tree because I’m lazy.
Windows NT 3.51 was significant in adding support for the PowerPC processor from IBM. Because this release was delayed for the PowerPC port, it was very stable when it came out as over a thousand bugs had been addressed in between 3.5 & 3.51 .
3.51 was released in May of 1995 right before the launch of Windows 95. This made NT 3.51 feel somewhat dated as it still retained the program manager/file manager feel to them, while in August Windows 95 would feature the new explorer shell.
However after the launch of Windows 95, there was work to port the new UI to Windows NT in the form of newshell.
Newshell only made it to Beta 2, and was never updated beyond that.
One cool feature of NT 3.51 is that it was supported by Office 95 & 97. Combined with the newshell beta it gave NT 3.51 the feeling of being more modern than the dated program manager feeling NT 3.1-3.51 …
Of my test programs, they all continue to run flawlessly. Even SQL Server 4.21 happily runs as a service on NT 3.51.
I figured it was worth doing a quick video of what the new shell experience was like on NT.
By this time NT was starting to look and feel like a dated system because of the reliance on Program manager. Of course we all knew it would be addressed in the next version of NT, Windows NT 4.0
So I’ve been spending the last day fighting some Active directory, and Exchange 2010 fun. I suppose if I wanted to be all new and exciting I’d document that journey. Maybe I will. But after all that fun, it had me remembering the way things used to be done, and really wondering how much further we’ve either come, or maybe…. not come.
So for the sake of it, I’m going to build out a postoffice, and connect the bastardchild of IBM & Microsoft, OS/2 to it!
So first I need to establish a server to run my postoffice on. The cool thing about MS Mail is that it could run on all kinds of things, from Novell Netware, Lan Manager, or any other file sharing network out there that MS-DOS’s lock could work with. Originally the product was for Macintoshes, before Microsoft bought it! The bad part, buried in there is that there isn’t a dedicated IPC like server, it really is a flat, shared, database. A bunch of files.
Just like MS-Access.
As luck would have it, there is a copy of MS Mail 3.5 on one of my Exchange CD’s so looking at the date, Windows NT was out at the time. So I figured for the sake of the experiment, I’d use Windows NT 3.51 . While I’ve used Windows NT 3.1 a bunch, I figured I’d try 3.51 . 3.51 came to us at a time of mass transition, when everything was going forward to Chicago (Windows 95), and the old program manager/presentation manager world was going to finally slip away.
Looking back it’s so archaic, it’s hard to believe that anyone thought progman/fileman were good ideas.
I also wanted to use Microsoft OS/2 1.3 however installing the network client causes it to trap. It does work on real hardware but that wouldn’t be quite as virtual as I wanted. Another wrench is that I’m on my Sprint access card waiting for something, and if I try to do some fun networking it disconnects me.
However I do have a workaround for Sprint’s lameness. You see “SmartView” isn’t all that smart, and thankfully it doesn’t care about interfaces *without* TCP/IP. So we take a loopback network adapter, and *ONLY* bind the Virtual PC protocol to it, by unclicking everything else..
And now we can connect our VM’s to this loopback interface. Then we could, say install an OpenBSD firewall VM that has 2 NIC’s one configured for usermode NAT, and the other on that LoopBack interface. We can now VPN to our hearts content, and even have a virtual LAN. Hell I bet you could even connect a physical Ethernet, connect Virtual PC to that as well, and plug that into a WAP. I hate it when stupid software tries to limit us, but you know… There is always a way around.
So getting back to the experiment at hand, I setup Virtual PC 2007 sp1 (making sure to tag it to a single core, imagecfg doesn’t work for some reason) and I disabled the hardware virtualization. I know OS/2 does some weird stuff with it’s LDT that most things cannot dodge, and it seems that NT 3.51 doesn’t play nice either. But no problem, luckily we can disable it.
I installed Windows NT 3.51 by first generating the 3 needed boot floppies to kick off the install. While IDE CD-ROM’s are supported by NT 3.5 & 3.51, they El-torrio boot method is not, so you need to make the 3 diskettes under MS-DOS if you’ve lost them (WINNT /OX) then you can boot off of those, and install. I setup a 2GB IDE disk, and partitioned it 512 (NTFS for NT) for C, 256 for E (FAT to swap) and finally a 1.2GB F drive to install the post office to.
Yes, the installer really is MS-DOS based. So you could run this thing on anything modern today… I would imagine even the ‘share’ hack for DOSBox could work.
Naturally we’ll create a new post office.
As I had mentioned above, I’m going to store mine on the F: drive. Don’t forget that you end up sharing out the data directory, and everyone maps it to the M: drive… If you install to the M: drive bad things happen as it expects the mail directories to be in the root… Although I guess you could just slam it in the root, but it seems… wrong.
I’ll call my post office, POSTOFFICE for the theme.
And the corporation may as well be any given MEGACORP. This was semi popular in small corporations. But it being based on fileshares meant it didn’t scale all that well. You could use special MTA’s (Mail Transfer Agents) to transmit mail from one post office to another.. We’ll get into that later.
I’m going to install with MS sharing hooks… But look a MS product that supports NetWare! Embrace, Extend & Extinguish!
I’m going to install the admin tools & agents. I don’t plan on using a modem, so scratch that!
Let’s keep the admin tools away from the users!
And let’s support MS-DOS, Windows 3.0 & OS/2. That’s right the OS/2 / Windows option is the same, that is because of WLO. This makes this one of the handful of things that shipped with WLO, (Windows Libraries for OS/2. It is a ‘port’ of the Windows 3.0 API to OS/2 as an underpinning. This was the foundation of porting Windows to NT, into Win32. Or at least that is what showstopper mentions.)
And deploy the clients to the drive that I’ll share for mail.
Everything looks good, so let’s go!
Files are copying….
And we are done!
And for the heck of it, I’m going to install the big exciting thing for Windows NT at this point, the Microsoft Mail Multitasking MTA. And it was a big deal at the time, because, naturally almost *NONE* of the other agents were multitasking (ie supported OS/2 in OS/2 mode). In fact it wasn’t un common for people to try running this stuff on Windows/386 or Windows 3.0 / 3.1 in enhanced mode with multiple MS-DOS VM’s. It was not a thing of beauty and stability. And don’t forget prior to OS/2 2.0, OS/2 could only run a single MS-DOS session, and only when it was in the foreground.
Kicking off the install.
Point it towards the mail directory.
By default the admin account it ‘admin’ and the password is ‘password’. We haven’t had a chance to change it, but those are the defaults.
I’m going to put the agent in the mailexe directory. It creates sub directories so it’s no big deal.
This isn’t a preconfigured store, so overwrite it, I don’t care.
Pick a group…
And we are done!
So now I’ve gone over how Sprint’s modem access is limited, and presented a way using VM’s to get around it. It’s really needed if you want to use a VPN (Virtual private network) so it is relevant to other people. Then I’ve installed Windows NT 3.51, and MS Mail 3.5 along with the MMTA. This is getting long, but in part two, I’ll setup OS/2 2.0 on Virtual PC. In part three I’ll get the network working along with some information on running MS Mail 3.5 on OS/2.