I thought this may be something cool, if not kind of pointless. Anyways the MPU401 UART can be run like a traditional serial port with an IRQ, in intelligent mode, or just as a ‘dumb’ device you can just bit bang to talk to MIDI devices. So while playing with DOSBox I thought it’d be fun to take it’s emulation and plug it into Qemu.
And this is the end result.
It’s far from perfect, when it works it does tend to work well, although it fails to work with things like Return to Zork, but it does work with DMX’s sound code in DooM and the MPU401 driver for Windows 3.1
While doing this I was originally struggling with mapping the IO ports. Qemu has some functions to map in the memory model to assign a function that will trap read/write space. In this case base is 0x330 the base of the MPU401 device.
I was thinking that the port 0x331 needed to be mapped in the same way, but it turns out after looking through more of the source, it’s actually a word aligned access. So in that case you can use a switch to see which port is actually being accessed.
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.
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
It’s incredible how much it’s improved since I last touched on WineVDM, the port of Wine to run on Windows using the MS-DOS Player (and Mame 80386 emulation) at it’s heart.
The latest source build WineVDM_2018_07_30b.7z is now capable of loading and running Sim City for Windows 1.0.
I found it best to install Windows 3.0 into DOSBox, and then your application. After the install I copy the application so the physical drive of the hosts matches where it was installed, and then unpack the 7z build archive into that directory. There is a ‘WINDOWS’ directory and I xcopy the installed Windows directory into there so it has all the INI files, fonts and all that jazz. To make sure it doesn’t conflict I delete the following from Windows 3.0:
Since these files are most certainly going to be emulated by WineVDM. After that it’s time to run stuff!
I should also add that I’ve been able to use QuickC for Windows, and build a ‘non trivial’ program, the Fortran f2c compiler weighing in at 104,245 lines , and use that to compile 16,182 lines of Fortran 77 into C, and then compile the resulting C + the Fortran runtime library a staggering 130,405 lines of code, and the resulting binary works, just like it did on Windows 3.0!
I’ve also been able to print a text file using Microsoft Word 2.0 much to my amazement, although anything involving fonts just locks or crashes. I can’t say I’m all that surprised.
As it started as an experiment on Windows 2, it became a product on it’s own, and launched an entire industry, along with being copied by every major OS vendor. In the 90’s having a screen saver was key, just as having simple games like solitaire, especially a broken shuffle one where the user wins most of the time led to Windows being heavily favored in the work space.
So for the heck of it, I figured I’d check it out, and as always thanks to Jason Scott, there is a copy of 1.02 on cd.textfiles.com And as reported it’s basically the ‘mystify your mind’ screen saver.
The runaway hit Magic Screensaver became After Dark, which then had several licensed addons like the Simpsons, Star Wars etc. Back then themes for Windows were popular along with sound effects. A lot of the functionality is still in Windows, although most people prefer that their machines are silent, only making audible alerts if there really is something wrong. But back in the day a ‘multimedia desktop’ was a $5,000 noise maker, and not many offices were impressed. Which of course gave rise to the ‘office sound card’
Naturally under Windows there were virtual device drivers to emulate a sound blaster, as people still wanted to game with this cheaper ‘business audio’ card, although with the rise of Windows 95/Direct X gaming under Windows finally became a thing making Sound Blaster compatibility a thing of the past.
But going back to After Dark, they made a fatal error of teaming up with Berkeley Systems, who eventually started to make their own releases pushing the original team out of their own product.
The toasters became focal in a few lawsuits, namely the Jefferson Airplane album, although it was dismissed as the artwork for the album had not been trademarked! And they were able to force the Opus ‘n Bill screen saver where Opus shoots the toasters. Late they changed the toasters to have propellers to avoid being too similar.
Oddly stuff like screen savers too have largely fallen out of fashion with the rise of power saving monitors that just turn themselves off either from a lack of new images, or a signal from the OS.
One of those weird legacy things that in today’s world really doesn’t have that much meaning, but a scant 20 years ago was a major industry.
So I was hammering out something with SheepShaver (more on that later!) and I thought a quick test of just how fast SheepShaver is vs a real PowerMAC would be interesting. So I was playing with my old copy of SoftPC, which is 68000 based, but There were PowerPC versions, years ago when I bought a G4 to run OS X to only find out that it wasn’t supported (the dark days of OS X Server 1.0, before the 10.0 public beta) I used to run Windows NT 4.0 on SoftPC on MacOS 8.6. Ugh, dark times indeed!
So with some luck, I got SoftPC 3.0 up and running on MacOS 7.5.3 using SheepShaver for Windows. Then I noticed that unlike SoftPC for the 68000, SoftPC for the PowerPC emulates a 486! So how does DooM run? A little slow, it’s kind of dream like.
It really is an in depth look, and a great job for a magazine! I’ve always like the UK based stuff, nice glossy photos, etc..
But even at the end it was the same old same old, installation issues, and speed..
I remember OS/2 2.0 on a 386sx 16 with 4MB of ram was unusable, while OS/2 1.3 was great… But like everything else that was involved at the time, keep in mind they had not reviewed NT yet… Although the pre-releases were floating around.. Naturally they have both Windows 3.1 & Windows 95 launches..
I still remember when Windows 3.1 was announced, and there was all the excitement in our programming class as Windows 3.1 was going to change everything. One kid had already gotten it on launch and was all excited as it supported more resources, had better fonts for printing, and included multimedia support! The teacher was all excited about it too, as at the time everyone loved Windows 3.0 but only if it could do more in terms of being able to run more reliably, and support more things at once.
Later, I found out later that this lucky kid had a 386 with 8MB of ram, a full MIDI setup and VGA graphics, which of course blew away my glorious 80286-16 with 1MB of ram, a 20MB hard disk (with stacker!), and CGA. Needless to say wing commander was actually playable on his computer.
There was no denying it, Windows 3.0 had started the shift from an exclusively MS-DOS world, in which everyone was hoping and searching for a graphical way out of, to the world of Windows we know today. Windows 3.0 established the beached, and Windows 3.1 basically won the war.
Visually Windows 3.0 and 3.1 look very similar, but Windows 3.1 builds on Windows 3.0’s success and adds in some very important technologies, not limited to:
The only ‘down’ side that I was aware of is that Windows 3.1 dropped support for IBM PC/XT’s. You needed an 80286 processor as Windows 3.1 ran in protected mode, which at the time it only shut out one person that I knew of. However he was just a new motherboard away from being able to run Windows 3.1 . Which is another point against OS/2 as Windows 3.1 used the PC BIOS for almost all hardware access, even a 286 with mostly XT guts would work, but sadly even XT’s with Intel inboard 386’s were not supported, however AT’s with inboard 386’s were. Even Microsoft MACH 20 card owners were restricted to Windows 3.0 standard mode (after some extensive updates). Also was there ever a special version of OS/2, like how the box claims?
While many of these things seem obvious now, back then this was a big thing to include so many technologies into Windows, and the more compelling the technology people were starting to replace their MS-DOS applications with windows ones, and the ‘dream’ of spending more and more time in Windows was starting to happen. Although for many of us this ‘dream’ was a freaking nightmare as more applications would install and overwrite system libraries, and end up with massive system instabilities. Not to mention the DLL hell that many of us still face, as even side-by-side and .net only save us from some things, even though nothing is ever perfect.
Windows 3.1 also saw the PC world transition from 16bit to 32bit with the shift of users from 80286 based computers to 80386 and 80486 based machines. With the split from IBM with OS/2 2.0, Microsoft was pressed to keep Windows 3.1 relevant to the 32bit crowd, and there was plenty of addons for Windows 3.1 to keep things going. Namely:
Video for Windows
I don’t think Winmem32 ever took off, as it really was just a way to allocate larger memory segments, I’m almost positive that Watcom’s Windows Extender was more popular. Naturally these predate the ever popular Win32s, which I’ve covered before. WING was the fast video for games that I’ve covered once more again, with WinDoom. But I’ll just state it again, that Win32s was very important for bringing the whole ‘internet’ experience to mere users as almost everything that was TCP/IP based was 32bit for the ‘rest of the world’ and Win32s brought a taste of real 32bit computing to the masses, esp for people using Mosiac and Netscape.
Winvideo was Microsoft’s answer to the ever popular Quicktime. Not to mention this add on was to solidify Windows 3.1 as a multimedia powerhouse. Microsoft still to this day has the test avi’s available for download here, And thanks to the University of British Columbia, you can download the Video for Windows Runtime here.
Needless to say the open standard of how the Winsock DLL should work helped standardize internet applications early, esp while there were multiple competing stacks for both MS-DOS and Windows. Ultimatley when Microsoft wrote their own it pretty much took over everything, but seeing a chance to sell another version of Windows “Windows 3.11 for workgroups” was later released, which could be extended with MS’s TCP/IP. At the end there even was a version of IE 5 for Windows 3.1, that I remember being as somewhat poor, and even NT 3.51 users were pushed into that direction. Not to mention it had a tendency to not want to install on machines with more than 16MB of ram. I suppose the good thing is that IE 5 (probably 3 & 4 as well) came with PPP dialers, which was good enough for the majority of users. Microsoft even made its improved Media player 5 (beta 2), and Net Show players available for 3.1, although I’ve never used them. “Good” IE releases didn’t come until 95/NT 4.0 anyways, the retrofitted ones were just unstable and lacking.
ODBC was a major selling feature in the world of databases, as now you could write uniform code to access data from all kinds of data sources. Imagine if you had old dbase files, and a SQL database, it would be a major pain to tie them together. However programs like Access which used ODBC could quickly and easily talk to multiple data sources, and create data reporting and entry systems. This is how the business world got hooked on Access & Visual Basic. ODBC typically came with either database programs, or with database driver disks, like the one for SQL Server.
While Windows was becoming more and more useful, users were going insane, clamoring for a full 32bit version, which led us down the ‘short’ road to Chicago, which was originally expected some time in 1993, but instead didn’t ship until August of 1995. Windows NT 3.1 was another contender, but again it didn’t ship until March of 1993, and it was far too resource hungry for anything serious. This left a gap for OS/2 to fill, and around the shipping time of Windows 3.1 was OS/2 2.0 which only included a runtime version of Windows 3.0 . Lots of people feel that the additional features to 3.0 could have been delivered via a patch, but the 3.1 release was to purposely make OS/2 2.0 obsolete right after it had been released. Even OS/2 2.1 didn’t ship until May of 1993, although it was always locked into a race with Microsoft as various add-ons would either break OS/2 for Windows requiring updates to OS/2 or even sometimes entire new releases (Warp 3.0 for Win32s for example..)
What also made Windows 3.1 popular was the so called “Microsoft Tax” where Microsoft would sell to OEM’s copies of MS-DOS and Windows 3.1 at an incredibly low price with the condition that they resell them with *EVERY* PC that they sold. This of course was annoying to UNIX users, even NT users as they all had copies of MS-DOS & Windows 3.1 that they never needed, nor wanted. But this strategy was pretty successful at locking out not only OS/2 from being preloaded & configured on systems, but pretty much any hope of competition. Many people attempted to sue, and only Digital Research managed to get anything out of it, as there excellent DR-DOS product was effectively barred from the market (very few end users ever change operating systems, they typically buy new PC’s its always been that way, upgrade sales lag way behind new sales), but by the time the courts had done what they were going to do the damage had been done.
Another typical bundle was Microsoft Office. Microsoft took advantage of Lotus’s failure in the market place to deliver a graphical application (The OS/2 switch doesn’t matter, Lotus still released a text mode app in the OS/2 heyday), combined with 1-2-3’s heft price tag, Microsoft made Word, Excel, PowerPoint and their Mail product available for less than the price of 1-2-3 with a new PC.
In the end it all comes down to developers. Something that some companies still struggle with, esp those that positioned themselves in an OS/2 type fix. If your native tools are too expensive, too restricted, nobody will write for you, esp if you can run other peoples applications better than the native platform. And this was not only the cause of the ‘why bother’ with OS/2 native applications, but even today you can see it with RIM and their QNX based products that run Android applications. Combine this with other low cost compilers from Borland and it really is no wonder why everyone was programming for Windows, esp the cost of Windows was typically cheaper than licensing a single seat for any DOS Extender that required royalties. How much of this was due to Microsoft brilliance, or the competition being bent on short term greed, it is hard to say, but IBM wasn’t taking out full page ads trying to court developers with cheap access, but rather you had to phone them up, go through some IVR’s and be ready to charge a few thousand dollars for the honor of developing for OS/2. I still remember Watcom C/C++ 10.0 being the cheapest way to build for everything, its a shame in a way that their SQL product was so good, as Sybase snapped up Watcom, and pretty much killed the languages, but thankfully not before open sourcing them.
With high resolution, and color depth displays, audio cards, multimedia games like “Monty Python’s quest for the holy grail” started to appear for Windows, as programmers could now concentrate on content, as Windows provided the layer for audio/video abstraction. While some games worked great others did not as there was a performance gap from raw MS-DOS to Windows, but tech like WinG was closing the gap. Not to mention the device driver patch hell was being shifted from the game devs to the hardware vendors, although that race still goes on, as even today Steam still combats older drivers and tries to hand hold users into updating them.
Even the horrible shell saw some competition for improvement, there was the Workplace shell for Windows 3.1, and of course BOB. And boy were people so happy with BOB. Not to mention thinking that this was just some great tech, it made its way into Office, to be forever remembered as Clippy in Office 97, who was tuned down in 2000 and killed in Office 2003. Its funny how future looking movies always go on about these animated seemingly helpful digital assistants, and yet in the real world they usually are the first thing turned off. I even remember the whole “Chrysler New Yorker’ debacle back in the day. Even in the show room it just went endlessly on about the door being a jar. Maybe its just HAL-9000 backlash.
So what can be said of Windows 3.1? It still lingers in 32bit versions of Windows 7 (Wow! or Windows on windows), and it basically tipped the world into the Win-centric place we are today, along with the office everywhere mentality. I can’t even imagine giving someone a 1-2-3 wks file, let alone a Word Perfect document, as I’m pretty sure there are no translators anymore. Oddly enough Win64 based OS’s can’t directly run Win16 based programs, there is always emulation.
Well I’ve managed to track down quite a few versions of Win32s from my various compiler CD’s So I figured it’d be somewhat interesting to run down a ‘tour’ of some of the significant versions starting with the first.
Now Microsoft Knowledge base article, KB121091 tells you which version of the win32s subsystem is installed by checking the win32s.ini or the version stamp of the WIN32S16.DLL file. Which for the most part is pretty simple. However the first version of Win32s that I could find doesn’t include either.
Win32s from October 1992.
I got this from the Windows NT October 1992 Win32 SDK. Keeping in mind that Windows 3.1 shipped in April of 1992 it’s kind of note worthy that already in October there is already a working win32s upgrade for Windows. I’d describe this release a a ‘core’ only version as all the win32s programs I have failed to run on this version. Mostly because this version lacks WINMM.DLL (the Multimedia library from NT), although the October 1992 Windows NT beta does include this dll, along with soundblaster/AdLib support!
I was able to get a few of theapplets from Windows NT October 1992 running on this version of Win32s by simply expanding and copying them over.. The font selection for the digital clock was messed up, but the analog version worked fine. As you can see I got clock, freecell, notepad, solitaire and winver running. Needless to say the build 34326 is totally incorrect.
For anyone that wants to play with it, the 1992 version of Win32s is available here.
The next, and final beta from March of 1993. This one does identify itself as being build 61, which is not on the list.
It’s compatibility is about par with the 1992 version, but the winver reports Windows NT version 63.10 … I’ve made it available here.
From the same InfoWorld article, 1.1 shipped the same time as Windows NT 3.1, and 1.0 was another ‘pre-release’. But I do have to say that 1.1 includes quite a number of great utilities, and tools, unlike the other development versions.
That’s right, this version includes the CLI Visual C++ compiler (Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 8.00), along with a profiler, and codeview debugger! Also included is a demo version of the Pharlap TNT Dos Extender, which is restricted to no user DLL’s and 2MB of RAM. Although if anyone really wants a kick ass Dos Extender, use the excellent, and FREE HX Dos Extender
Once WinG is installed, Lemmings will run on 1.1, while WinDoom fails because the procedure CreateDIBSection does not exist in this version of Win32s. Which really isn’t that surprising as version 1.1 is at parity with Windows NT 3.1, and that call didn’t get implemented until Windows NT 3.5 . Another fun thing is that because of the segmentation in Windows 3.1 it seems that a lot of stack ‘issues’ and other memory collisions are found much easier under Win32s then under Windows NT (and it’s siblings). At any rate, you can find this version of Win32s here.
Next is version 1.20 which includes support for OLE 2.0 . This brings Win32s up to the level of Windows NT 3.5 . And it allows more NT applications to run on Windows 3.1, including Word 6.0 for Windows NT. The development copy of Win32s 1.20 can be found here.
Win32s 1.30 included a Windows 95 compatible help engine. I would imagine it included some level of compatibility for Windows 95 applications too.
Of all the versions, I’ve found that 1.25a is the most well behaved, but at the same time, I’m lacking the debug build of it… I should also point out gabby.de has a great info page on various applications that’ll run on Win32s.
So since I was looking at the Doom stuff, I thought I’d try to track down the WinG version of Doom, and luckily someone pack ratted away two versions! Needless to say the older one didn’t work for me, but the last one, the April 13th, 1995 build, worked just great!
Even on Windows 7 x86_64, sp1!
So how much of a chore was this to run back in 1995, before Windows 95?
Well to start WinDoom requires a display capable of at least 256 colors. I thought I’d use Qemu for this, but this proved to be… exceptionally difficult to locate a satisfactory display driver. I know lots of people point to the SVGA.EXE update from Microsoft, that uses VESA extensions to drive the video. Oh sure it sounds great but this is what I got:
Ok, so you say, there is this great patch to enable better VESA support right?
Yeah. I also hunted down various cirrus drivers for the specifically emulated chip (I checked the source) and they were all consistently defective. So I tried using a lower chip driver from HP and amazingly the 640x480x16MM colors works! (well, works ‘enough’).
It’s the GD5430 v1.25f, 640x480x16.8M
The next thing is that Doom in both MS-DOS and Windows are full 32bit executables. On the MS-DOS side, it relies on the DOS4G/W extender. For Windows, it relies on the then new Win32 standard, and Windoom was written to conform to the Win32s standard, meaning with an addon it can run on Windows 3.1, Windows 95, And Windows NT. I just fished around the internet, and scored a copy of Win32s 1.25b . I just remember this being a somewhat stable version.
Win32s installs pretty smooth, (as long as you remember the share.exe). Now we just need the WinG runtime to be installed. WinG was Microsoft’s first real attempt at high speed gaming video under Windows. From what I understand it kind of went down because it was ‘too difficult’, and buying DirectX seemed to be a better fit.
Another thing I’ve found is that if you change the midi mapper from the default “Ad Lib” to “Ad Lib general”, you can at least get the midi working in Doom.
Once WinG is installed, then it’ll want to do some blit tests…
And after that, we can even bump it up to glorious 640×400, something the initial MS-DOS version couldn’t do easily as VESA wasn’t a big standard with INSTALLED cards at the time, and it’d require lots of work from the iD team, where the move to Windows pushed all the peripheral development to the Vendors to work around Microsoft. Even to this day, it’s still a big deal with video and audio.
One thing that is cool about Qemu is that at compile time, you can put in adlib & soundblaster cards to give the ‘full’ Windows 3.1 multimedia experience. There is also GUS (Gravis Ultra Sound) support
in Qemu, but I’ve never played with it..
With all of that out of the way, WinDoom will launch.
Then it’ll throw an error, because Windows 3.1 doesn’t have the same video backend as Windows NT 3.5 (and higher), hit ok and then …
Sadly on Windows 3.1 the sound effects do not seem to work, but overall it’s a GREAT little port, mostly because as it comes up on 16 years old, it still works, and with sound. I wish other OS’s could give this kind of support for legacy applications, even ones that had such a brief window of support.
Anyone crazy enough to even think of playing along can download the blob of software I used to get this going here.
I should also add if you want sound effects to work on WinDOOM you really should install the Video for Windows Runtime, and it’ll work… poorly on Qemu/SoundBlaster 16, but it does work!