<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Win32s &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/win32s/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Sat, 05 Apr 2025 10:53:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Fun with Windows ePDK NT 3.1 build 196 &#038; Some Xenix fun!</title>
		<link>https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/</link>
					<comments>https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 01 Jun 2023 10:24:11 +0000</pubDate>
				<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows NT 3.1]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=12733</guid>

					<description><![CDATA[I&#8217;m not sure if I covered the Windows NT 3.1 build 196 before. First the most obvious is that as of this moment it&#8217;s the earliest version of Windows NT available. So let&#8217;s do some obligatory scratch of the surface. &#8230; <a href="https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;m not sure if I covered the Windows <a rel="noreferrer noopener" href="https://archive.org/details/windows-nt-3.1-build-196" data-type="URL" data-id="https://archive.org/details/windows-nt-3.1-build-196" target="_blank">NT 3.1 build 196 before</a>. First the most obvious is that as of this moment it&#8217;s the earliest version of Windows NT available.</p>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/windows-nt-3.1-build-196"><img fetchpriority="high" decoding="async" width="1000" height="1000" src="https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc.jpg" alt="" class="wp-image-12734" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc.jpg 1000w, https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc-300x300.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc-150x150.jpg 150w, https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc-768x768.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></a></figure>



<p class="wp-block-paragraph">So let&#8217;s do some obligatory scratch of the surface. Like all the other 1991 pre-releases there really is just a text mode setup install script. Choosing the lesser amount of pain, I went with a MS-DOS hosted install.  However, using MS-DOS 6.22 resulted in a broken dual boot system.  But we live in the era of virtual machines, so it really doesn&#8217;t matter.  I&#8217;m using <a rel="noreferrer noopener" href="https://archive.org/details/qemu-14.0-rc2-i386" target="_blank">Qemu 0.14-rc2</a>, something that is &#8216;era correct&#8217; for when the first avalanche broke on early Windows NT pre-releases.  I&#8217;ve had issues with more modern versions of Qemu, and I felt that if we&#8217;re using vintage software may as well go in all the way.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner.png"><img decoding="async" width="722" height="457" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner.png" alt="" class="wp-image-12736" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner.png 722w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner-300x190.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner-474x300.png 474w" sizes="(max-width: 722px) 100vw, 722px" /></a></figure>



<p class="wp-block-paragraph">The boot loader identifies itself as being 1990 vintage.  Pretty sure it doesn&#8217;t mean anything, but we haven&#8217;t been blessed with the &#8220;blue screen&#8221; of ARC yet.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen.png"><img decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen.png" alt="" class="wp-image-12738" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen-376x300.png 376w" sizes="(max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">The login screen and desktop have a very strong Windows 3.1 beta feel to them.  And that would land this where it was, Windows was such a big seller that Maritz had been trying to convince Gates &amp; Balmer to &#8216;switch to the Windows horse&#8217; in the spring/summer of 1990, culminating in Gate&#8217;s July decision to walk away from NT/OS2 and rebrand the new OS as Windows NT.  Oddly enough it was Balmer who was in favour of OS/2 &amp; IBM. (<em>Showstopper 89-90</em>)</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop.png"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop.png" alt="" class="wp-image-12739" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">At first glance the opening window isn&#8217;t all that interesting.  It&#8217;s just very. Windows.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi.png"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi.png" alt="" class="wp-image-12744" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">Rest assured <a rel="noreferrer noopener" href="https://youtu.be/DgJS2tQPGKQ?t=35" target="_blank">Reversi</a>, of course made the this Win32 cut.  And it&#8217;s full of weird easter eggs, oddly enough in the OS/2 surviving bits.</p>



<pre class="wp-block-code"><code>type OS2LDR.DOS
OS2LDR 01.00.01
by KeithMo 01/08/91</code></pre>



<p class="wp-block-paragraph">On the <a rel="noreferrer noopener" href="https://discord.gg/HMwevcN" target="_blank">Discord</a> there had been a big discussion about early NT executable formats, and the whole COFF vs ECOFF vs PE/PEI. I had tried to hunt down the specific version of GCC I used ages to to build a so called <a rel="noreferrer noopener" href="https://virtuallyfun.com/2016/12/09/gcc-windows-nt-dec-alpha/" target="_blank">Dec Alpha GCC cross compiler</a>, but the short version is that it didn&#8217;t work as we don&#8217;t have any assembler/linker for anything GNU targets.  There had been a <a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">cygwin port </a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">a</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">n</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">d</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank"> </a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">a</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">n</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank"> </a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">OpenNT on Alpha</a>, but all that is lost to the winds, minus what few scraps I had saved.  I did try building some cross tools to elf hoping to just objcopy out the data and get linkable objects, but that didn&#8217;t work either.</p>



<p class="wp-block-paragraph">So I though this was a perfect opportunity to take a look at this early pre-release version of NT, and although I do know that you have to convert your objects into something the &#8216;COFF&#8217; linker will accept:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196.png"><img loading="lazy" decoding="async" width="642" height="106" src="https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196.png" alt="" class="wp-image-12745" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196-300x50.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196-500x83.png 500w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">And I never really paid that much attention to the object files.  I do know that you can link them with <a rel="noreferrer noopener" href="https://virtuallyfun.com/2021/05/11/continuing-with-ancient-microsoft-c-linkers/" target="_blank">Link386 for OS/2</a>, but the NT object files themselves report:</p>



<pre class="wp-block-code"><code>wsl file SIMPLE.OBJ
SIMPLE.OBJ: Intel 80386 COFF object file, not stripped, 4 sections, symbol offset=0x102, 20 symbols, created Thu Jun  1 14:13:50 2023, 1st section name ".text"</code></pre>



<p class="wp-block-paragraph">Well, now that is interesting.  And of course the COFF thing reminded me of Xenix!  And sure enough ages ago I had found the source to a modified version of <a rel="noreferrer noopener" href="https://github.com/neozeed/gas-1.38-xenix-" target="_blank">GNU GAS that outputs COFF</a>.  Once more again this is an indication that all 386 roads in Microsoft really did originate with Xenix.  It&#8217;s too bad there never was a Windows/386 on Xenix/386.  What an incredible OS that would have been!  There must be some incredible stories from the tool teams that worked on Microsoft C/386 along with other projects.  Oddly enough they never get anywhere near as much exposure as Office or OS.</p>



<p class="wp-block-paragraph">Now this is fun, but nothing takes in these ancient COFF objects, do they?  I tried to run LINK 1.0 from <a href="https://virtuallyfun.com/2011/04/04/win32s-version-tour/" target="_blank" rel="noreferrer noopener">Win32s SDK</a> and surprisingly it didn&#8217;t complain about the object, rather, it auto converted it in memory:</p>



<pre class="wp-block-code"><code>Microsoft (R) 32-Bit Executable Linker Version 1.00
Copyright (C) Microsoft Corp 1992-93. All rights reserved.

SIMPLE.OBJ : warning LNK4016: unresolved external symbol "__chkstk"
LINK : warning LNK4016: unresolved external symbol "_mainCRTStartup"
SIMPLE.OBJ : warning LNK4016: unresolved external symbol "_printf"
SIMPLE.exe : error LNK1120: 3 unresolved externals</code></pre>



<p class="wp-block-paragraph">Does this mean that if I give it some libraries it will actually link?</p>



<pre class="wp-block-code"><code>LINK.EXE SIMPLE.OBJ /SUBSYSTEM:CONSOLE /MACHINE:i386 -entry:mainCRTStartup -out:simple.exe libc.lib kernel32.lib
Microsoft (R) 32-Bit Executable Linker Version 1.00
Copyright (C) Microsoft Corp 1992-93. All rights reserved.


C:\temp\nt196\x\dec\x&gt;simple
Win32, it's happenin'!</code></pre>



<p class="wp-block-paragraph">This was. VERY unexpected.</p>



<p class="wp-block-paragraph">So I had this crazy idea, what if the Xenix assembler could in fact build objects that are also compaible in this manner?  I used the <a rel="noreferrer noopener" href="https://sourceforge.net/projects/linux011/" target="_blank">a.out GCC / Linux porting tools</a> I had built so I could compile Linux on Windows NT using the vintage tools as a starting point.  I guess I should also add that when people always say &#8216;use newer version of THING&#8217; this is how you miss out on old stuff like this.  If I had been obsessed with using modern tools and modern operating systems, I&#8217;d have missed out on this Xenix filled window.</p>



<p class="wp-block-paragraph">I took the gcc driver &amp; the cc1 compiler from 1.40 and the c pre-processor from 2.5.8 as it can understand C++ comments.  First I manually compiled the &#8216;simple&#8217; example to assembly:</p>



<pre class="wp-block-code"><code>gcc -v -nostdinc -I/xenixnt/h -S SIMPLE.c -O simple.S
gcc version 1.40
 cpp -nostdinc -v -I/xenixnt/h -undef -D__GNUC__ -Dunix -Di386 -D__unix__ -D__i386__ -D__OPTIMIZE__ SIMPLE.c C:/Users/jsteve/AppData/Local/Temp/cca2_048.cpp
GNU CPP version 2.5.8 (80386, BSD syntax)
#include "..." search starts here:
#include &lt;...&gt; search starts here:
 /xenixnt/h
End of search list.
 cc1 C:/Users/jsteve/AppData/Local/Temp/cca2_048.cpp -quiet -dumpbase SIMPLE.c -O -version -o SIMPLE.s
GNU C version 1.40 (80386, BSD syntax) compiled by GNU C version 5.1.0.
default target switches: -m80387
 cpp -nostdinc -v -I/xenixnt/h -undef -D__GNUC__ -$ -Dunix -Di386 -D__unix__ -D__i386__ -D__OPTIMIZE__ simple.S C:/Users/jsteve/AppData/Local/Temp/cca2_048.s
GNU CPP version 2.5.8 (80386, BSD syntax)
#include "..." search starts here:
#include &lt;...&gt; search starts here:
 /xenixnt/h
End of search list.</code></pre>



<p class="wp-block-paragraph">Which gave me the following assembly:</p>



<pre class="wp-block-code"><code>        .file   "SIMPLE.c"
gcc_compiled.:
.text
LC0:
        .ascii "Win32, it's happenin'!\0"
        .align 2
.globl _main
_main:
        pushl %ebp
        movl %esp,%ebp
        pushl $LC0
        call _printf
        leave
        ret
</code></pre>



<p class="wp-block-paragraph">Now to assemble with the GAS Xenix assembler</p>



<pre class="wp-block-code"><code>C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;ax386 SIMPLE.s -o SIMPLE.obj

C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;wsl file SIMPLE.obj
SIMPLE.obj: 8086 relocatable (Microsoft), "SIMPLE.c", 1st record data length 10, 2nd record type 0x88, 2nd record data length 11</code></pre>



<p class="wp-block-paragraph">Not quite the same.  But it does closer resemble the output from the OS/2 bound versions of the Pre-Rease compilers:</p>



<pre class="wp-block-code"><code>file EMPTY.OBJ
EMPTY.OBJ: 8086 relocatable (Microsoft), "empty.c", 1st record data length 9, 2nd record type 0x88, 2nd record data length 7</code></pre>



<p class="wp-block-paragraph">So will it link?!</p>



<pre class="wp-block-code"><code>C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;LINK.EXE SIMPLE.OBJ /SUBSYSTEM:CONSOLE /MACHINE:i386 -entry:mainCRTStartup -out:simple.exe libc.lib kernel32.lib
Microsoft (R) 32-Bit Incremental Linker Version 2.50
Copyright (C) Microsoft Corp 1992-94. All rights reserved.

SIMPLE.OBJ : warning LNK4033: converting object format from OMF to COFF

C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;simple
Win32, it's happenin'!</code></pre>



<p class="wp-block-paragraph">Well now this is interesting!  LONG before MinGW, or the <a rel="noreferrer noopener" href="https://virtuallyfun.com/2014/09/26/did-you-know-that-gcc-used-to-support-windows-nt/" target="_blank">GCC port to Windows NT</a>, it turns out that in fact GCC could target Windows NT the entire time!</p>



<p class="wp-block-paragraph">So the next thing to do is something not as trivial, like <a rel="noreferrer noopener" href="https://www.acme.com/software/phoon/" target="_blank">phoon</a>.</p>



<p class="wp-block-paragraph">I setup some quick script to pre-process, compile, assemble and then try to link, but as this one uses floating point, disaster struck:</p>



<pre class="wp-block-code"><code>phoon.obj : error LNK2001: unresolved external symbol "___fixdfsi"
astro.obj : error LNK2001: unresolved external symbol "___fixdfsi"
phoon.exe : error LNK1120: 1 unresolved externals</code></pre>



<p class="wp-block-paragraph">Now ages ago while messgin with old GCC &amp; DooM I also had weird math calls not working.  In the end I ended up extracting them from libgcc builds, so I thought I&#8217;d try the libgcc built during the GCC 2.6.3 on NT adventure.</p>



<pre class="wp-block-code"><code>link /NODEFAULTLIB:libc.lib /NODEFAULTLIB:OLDNAMES.LIB -out:phoon.exe astro.obj date_p.obj phoon.obj -entry:mainCRTStartup libgcc1.lib LIBC.LIB KERNEL32.LIB
Microsoft (R) 32-Bit Incremental Linker Version 2.50
Copyright (C) Microsoft Corp 1992-94. All rights reserved.</code></pre>



<p class="wp-block-paragraph">And of course:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="979" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt.png" alt="" class="wp-image-12748" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt.png 979w, https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt-768x402.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt-500x261.png 500w" sizes="auto, (max-width: 979px) 100vw, 979px" /></figure>
</div>


<p class="wp-block-paragraph">To try to make the steps make a little more sense, and to allow for some higher level of automation I made a Makefile:</p>



<pre class="wp-block-code"><code>CC=gcc
CC1=cc1
AS=ax386
CPP=cpp


CFLAGS= -O
CPPFLAGS= -lang-c-c++-comments -nostdinc -I/xenixnt/h

OBJ =   astro.obj \
date_p.obj \
phoon.obj

LIBS = libgcc1.lib LIBC.LIB KERNEL32.LIB

phoon.exe: $(OBJ)
        link -out:phoon.exe $(OBJ) -entry:mainCRTStartup $(LIBS)

%.obj: %.c
        $(CPP) $(CPPFLAGS) $&lt; $*.i
        $(CC1) $*.i -quiet $(CFLAGS) -version -o $*.S
        $(AS) $*.S -o $*.obj


clean:
        del $(OBJ) *.i *.S phoon.exe</code></pre>



<p class="wp-block-paragraph">I&#8217;m sure there is better ways to do this, but it breaks the compile up to it&#8217;s individual parts:</p>



<p class="wp-block-paragraph">Run the pre-processor to allow // in the comments, C++ hadn&#8217;t been the default thing back when GCC 1.40 was a thing.  Also path it to the headers, in this case I&#8217;m using the ones from NT 196.  Trying to link with the 196 libraries gave me this:</p>



<pre class="wp-block-code"><code>C:\xenixnt\demos\phoon&gt;link /NODEFAULTLIB:LIBC.LIB /NODEFAULTLIB:OLDNAMES.LIB -out:phoon.exe astro.obj date_p.obj phoon.obj -entry:mainCRTStartup base.lib wincrt.lib ntdll.lib \xenixnt\lib\libgcc1.lib
Microsoft (R) 32-Bit Incremental Linker Version 2.50
Copyright (C) Microsoft Corp 1992-94. All rights reserved.

wincrt.lib(maincrt0.obj) : warning LNK4078: multiple ".data" sections found with different attributes (40000040)
astro.obj : error LNK2001: unresolved external symbol "_asin"
astro.obj : error LNK2001: unresolved external symbol "_atan"
astro.obj : error LNK2001: unresolved external symbol "_atan2"
phoon.obj : error LNK2001: unresolved external symbol "_cos"
astro.obj : error LNK2001: unresolved external symbol "_cos"
astro.obj : error LNK2001: unresolved external symbol "_floor"
astro.obj : error LNK2001: unresolved external symbol "_sin"
phoon.obj : error LNK2001: unresolved external symbol "_sqrt"
astro.obj : error LNK2001: unresolved external symbol "_sqrt"
astro.obj : error LNK2001: unresolved external symbol "_tan"
phoon.exe : error LNK1120: 8 unresolved externals</code></pre>



<p class="wp-block-paragraph">Which is not surprising as there is no FPU/Floating point math support in 196. I tried the December 1991 Pre-Release, but it failed for other reasons:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle.png"><img loading="lazy" decoding="async" width="968" height="364" src="https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle.png" alt="" class="wp-image-12750" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle.png 968w, https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle-300x113.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle-768x289.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle-500x188.png 500w" sizes="auto, (max-width: 968px) 100vw, 968px" /></a></figure>



<p class="wp-block-paragraph">I did copy over BASE.DLL BASERTL.DLL CSR.DLL DBGDLL.DLL as it wanted, but despite the symbol being in the DLL it didn&#8217;t load.</p>



<p class="wp-block-paragraph">So that&#8217;s why I&#8217;m using the libraries from the <a href="https://virtuallyfun.com/2011/04/04/win32s-version-tour/" target="_blank" rel="noreferrer noopener">Win32s SDK</a>.</p>



<p class="wp-block-paragraph">Okay, so far now we have GCC 1.40 compiling to an old Xenix GAS assembler, and linking with Microsoft link from Visual C++ 1.0/2.0 era.  The next step is to see if we can just link the objects under 196, and get a running EXE!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib.png" alt="" class="wp-image-12742" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">I have this tiny fibonacci example program, so with it compiled &amp; assembled by GCC &amp; GAS, I did the final link under 196, and YES it runs!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom.png"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom.png" alt="" class="wp-image-12751" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">I then built the <a rel="noreferrer noopener" href="https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/" target="_blank">&#8217;87 InfoTaskForce</a>, <a rel="noreferrer noopener" href="https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/" target="_blank">Infocom interpreter</a>, and it was just a simple link, and it&#8217;s running!</p>



<p class="wp-block-paragraph">Possible things to do?  GCC should be able to build itself, so it should be possible to build GCC and link that on 196 or December 1991, and get a native version of GCC on NT.  The other possibility is to get newer versions of GCC (cc1 drop in replacements) to build for Xenix and / or OS/2.  Obviously this Xenix linker is the gateway to older 386 Microsoft based products!</p>



<p class="wp-block-paragraph">For those interested in such things, I&#8217;ve uploaded all of this to <a href="https://archive.org/details/windows-nt-196-linking-and-running-gcc" target="_blank" rel="noreferrer noopener">archive.org here: windows-nt-196-linking-and-running-gcc</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Anglofying &#038; running Japanese Lemmings for Windows</title>
		<link>https://virtuallyfun.com/2020/03/19/anglofying-running-japanese-lemmings-for-windows/</link>
					<comments>https://virtuallyfun.com/2020/03/19/anglofying-running-japanese-lemmings-for-windows/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 19 Mar 2020 00:22:23 +0000</pubDate>
				<category><![CDATA[games]]></category>
		<category><![CDATA[Japanese software]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows 10]]></category>
		<category><![CDATA[Windows XP]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=10170</guid>

					<description><![CDATA[On one of my later trips I picked up this fun title, Lemmings! And looking at the back of the box, what fun it contains! One interesting thing about 1995, is that with the rise of Windows 95, this marked &#8230; <a href="https://virtuallyfun.com/2020/03/19/anglofying-running-japanese-lemmings-for-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"> On one of my later trips I picked up this fun title, Lemmings! </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="665" height="900" src="https://virtuallyfun.com/wp-content/uploads/2020/03/P_20200316_194631.jpg" alt="" class="wp-image-10171" srcset="https://virtuallyfun.com/wp-content/uploads/2020/03/P_20200316_194631.jpg 665w, https://virtuallyfun.com/wp-content/uploads/2020/03/P_20200316_194631-222x300.jpg 222w" sizes="auto, (max-width: 665px) 100vw, 665px" /></figure></div>



<p class="wp-block-paragraph">And looking at the back of the box, what fun it contains!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="617" height="865" src="https://virtuallyfun.com/wp-content/uploads/2020/03/P_20200316_194637.jpg" alt="" class="wp-image-10174" srcset="https://virtuallyfun.com/wp-content/uploads/2020/03/P_20200316_194637.jpg 617w, https://virtuallyfun.com/wp-content/uploads/2020/03/P_20200316_194637-214x300.jpg 214w" sizes="auto, (max-width: 617px) 100vw, 617px" /><figcaption>Support PC-98, Epsons, IBM&#8217;s, IBM PC/AT.. Probably FM Towns as well</figcaption></figure>



<p class="wp-block-paragraph">One interesting thing about 1995, is that with the rise of Windows 95, this marked the end of the specialized PC market in Japan.  Just as WING/Direct X basically killed off the DIY driver/extender environment on MS-DOS, by being able to abstract the hardware it removed any meaningful difference between an EPSON PC vs a PC-98, FM Towns, or even the lowly IBM AT/386.</p>



<p class="wp-block-paragraph">This being a Win32 includes both WING &amp; Win32s.  A perfect snapshot of an early Win32 commercial game circa 1995, as you needed to cater to that massive Windows 3.1 install base, although so many were rushing to Windows 95.  Naturally this also means that the setup program is a Win16 app, once more again to preserve that bridge of the Windows 3.1 &amp; Windows 95 world.</p>



<p class="wp-block-paragraph">Well the obvious thing to do is just install it on a legacy 32bit OS, and what better than Windows XP?</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="770" src="https://virtuallyfun.com/wp-content/uploads/2020/03/Lemmings-on-XP-1024x770.jpg" alt="" class="wp-image-10172" srcset="https://virtuallyfun.com/wp-content/uploads/2020/03/Lemmings-on-XP-1024x770.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2020/03/Lemmings-on-XP-300x226.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2020/03/Lemmings-on-XP-768x577.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2020/03/Lemmings-on-XP-399x300.jpg 399w, https://virtuallyfun.com/wp-content/uploads/2020/03/Lemmings-on-XP.jpg 1027w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Lemmings happily running under Windows XP via VMWare.</figcaption></figure></div>



<p class="wp-block-paragraph">Now to run it on something like Windows 10, it&#8217;s just a matter of copying the WINLEMM.INI into %sysroot%, along with placing a copy of WING32.DLL into the %sysroot%\SysWOW64 directory and you are good to go!</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="339" height="363" src="https://virtuallyfun.com/wp-content/uploads/2020/03/lemmings-about.png" alt="" class="wp-image-10173" srcset="https://virtuallyfun.com/wp-content/uploads/2020/03/lemmings-about.png 339w, https://virtuallyfun.com/wp-content/uploads/2020/03/lemmings-about-280x300.png 280w" sizes="auto, (max-width: 339px) 100vw, 339px" /><figcaption>Japanese Lemmings on English Windows 10</figcaption></figure></div>



<p class="wp-block-paragraph">Sadly the character encoding in Windows is still really lacking and doesn&#8217;t render all that great.  However that had me thinking as almost a decade ago I did find <a href="/wordpress/2011/04/03/lemmings-demo-for-win32s/">a demo of Lemmings</a> for <a href="https://archive.org/details/WLEMMM">Windows</a>.  Could it be possible to just overlay the executables &amp; DLL&#8217;s to produce an English commercial version?</p>



<p class="wp-block-paragraph">Surprisingly the answer is yes.  I wasn&#8217;t sure what to expect, but it&#8217;s as simple as that!</p>



<p class="wp-block-paragraph">The game is mostly playable, some parts are just coded to run as fast as possible, as no doubt nobody was imagining 1+ Ghz machines.  So the intro, warp &amp; suicide are almost instant.</p>



<p class="wp-block-paragraph">It&#8217;s something to keep the kids entertained for a day in recent events.  It&#8217;s been a <em>LONG </em>CNY.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2020/03/19/anglofying-running-japanese-lemmings-for-windows/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Early MSDN CD&#8217;s on archive.org</title>
		<link>https://virtuallyfun.com/2019/03/27/early-msdn-cds-on-archive-org/</link>
					<comments>https://virtuallyfun.com/2019/03/27/early-msdn-cds-on-archive-org/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 27 Mar 2019 23:58:54 +0000</pubDate>
				<category><![CDATA[cdroms]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[OS/2]]></category>
		<category><![CDATA[Win16]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Win32s]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9301</guid>

					<description><![CDATA[I ran across this, and thought it was cool. These CD&#8217;s are getting harder and harder to find, and unless you want the old physical disks, getting ISO images is, of course the next best thing. Pre-Release Disk 1 &#8211; &#8230; <a href="https://virtuallyfun.com/2019/03/27/early-msdn-cds-on-archive-org/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<ul class="wp-block-gallery aligncenter columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="946" height="343" src="https://virtuallyfun.com/wp-content/uploads/2019/03/archive.org-early-MSDN-CD-collection.png" alt="" data-id="9304" data-link="https://virtuallyfun.com/wordpress/?attachment_id=9304" class="wp-image-9304" srcset="https://virtuallyfun.com/wp-content/uploads/2019/03/archive.org-early-MSDN-CD-collection.png 946w, https://virtuallyfun.com/wp-content/uploads/2019/03/archive.org-early-MSDN-CD-collection-300x109.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/03/archive.org-early-MSDN-CD-collection-768x278.png 768w" sizes="auto, (max-width: 946px) 100vw, 946px" /></figure></li></ul>



<p class="wp-block-paragraph">I ran across this, and thought it was cool.  These CD&#8217;s are getting harder and harder to find, and unless you want the old physical disks, getting ISO images is, of course the next best thing.</p>



<ul class="wp-block-list"><li><a href="https://archive.org/details/Microsoft_Developer_Network_Pre-Release_Disk_1_September_92">Pre-Release Disk 1 &#8211; September 1992</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Pre-Release_Disk_2-_January_93">Pre-Release Disk 2 &#8211; January 1993</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_3_April_93">Disk 3 &#8211; April 1993</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_4_Summer_93">Disk 4 &#8211; Summer 1993</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_5_Fall_93">Disk 5 &#8211; Fall 1993</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_6_Winter_94">Disk 6 &#8211; Winter 1994</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_7_April_94">Disk 7 &#8211; April 1994</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_8_July_94">Disk 8 &#8211; July 1994</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_9_October_94">Disk 9 &#8211; October 1994</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_Disk_10_January_95">Disk 10 &#8211; January 1995</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_11_April_1995">Disk 11 &#8211; April 1995</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_12_August_1995">Disk 12 &#8211; August 1995</a></li><li><a href="https://archive.org/details/Microsoft_Developer_Network_13_October_1995">Disk 13 &#8211; October 1995</a></li></ul>



<ul class="wp-block-list"><li><a href="https://archive.org/details/Microsoft_Programmers_Library_CD-ROM_Database_125-099-008_Version_1.1a_CDRM_1621">Microsoft Programmers Library 1.1a</a></li><li> <a href="https://archive.org/details/MicrosoftProgramersLibraryV1.3">Microsoft Programmers Library 1.3</a></li></ul>



<p class="wp-block-paragraph">Granted these disks replaced the much older Microsoft Programmer&#8217;s Library.  The new CD&#8217;s use a Windows based search &amp; interface program removing the clunky old MS-DOS program that made it feel like trying to view the world through a straw.  (Although the up side of the MS-DOS version is that you could easily dump the video RAM and save the contents to plain text).</p>



<p class="wp-block-paragraph">And in this brave new post Windows 3.0 centric world of Microsoft just about everything regarding OS/2 was dumped, and the seeding of Win32 via Windows NT had started.</p>



<p class="wp-block-paragraph">Naturally after winning this war, Microsoft withdrew many low end products and just couldn&#8217;t compete with the tidalwave that was GNU/Linux.</p>



<p class="wp-block-paragraph">At any rate for the curious kids down the road that want to see what all the fuss was with Win16, and how Windows 3.0 had changed the landscape removing the force of IBM it&#8217;s worth a look.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/03/27/early-msdn-cds-on-archive-org/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Adding DOSBox&#8217;s MPU401 to Qemu 0.90</title>
		<link>https://virtuallyfun.com/2019/03/14/adding-dosboxs-mpu401-to-qemu-0-90/</link>
					<comments>https://virtuallyfun.com/2019/03/14/adding-dosboxs-mpu401-to-qemu-0-90/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 14 Mar 2019 02:10:15 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[DOSBox]]></category>
		<category><![CDATA[MIDI]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9275</guid>

					<description><![CDATA[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 &#8216;dumb&#8217; device you can just bit &#8230; <a href="https://virtuallyfun.com/2019/03/14/adding-dosboxs-mpu401-to-qemu-0-90/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">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 &#8216;dumb&#8217; device you can just bit bang to talk to MIDI devices.  So while playing with DOSBox I thought it&#8217;d be fun to take it&#8217;s emulation and plug it into Qemu.</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/Vy2g_x2ALks" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>



<p class="wp-block-paragraph">And this is the end result.</p>



<p class="wp-block-paragraph">It&#8217;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&#8217;s sound code in DooM and the MPU401 driver for Windows 3.1</p>



<p class="wp-block-paragraph">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.  </p>



<code>register_ioport_write(base, 8, 1, mpu401_ioport_write, s);     register_ioport_read(base, 8, 1, mpu401_ioport_read, s);</code>



<p class="wp-block-paragraph"> 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&#8217;s actually a word aligned access.  So in that case you can use a switch to see which port is actually being accessed.</p>



<code>static uint32_t mpu401_ioport_read(void *opaque, uint32_t addr) {
     switch(addr&amp;0xf)
     {
     case 0:
      return(MPU401_ReadData(addr,0)); break;
     case 1:
      return(MPU401_ReadStatus(addr,0)); break;
     default:
      return(0xff); break;
     }
  return(0xff);
}
</code>



<p class="wp-block-paragraph">Pretty simple, right?</p>



<p class="wp-block-paragraph">And from there it&#8217;s a matter of mapping the DOSBox MPU code, along with the Windows interface code.  Since I&#8217;m not using intelligent or IRQ mode, I just amputated the code where applicable.</p>



<p class="wp-block-paragraph">If anyone wants to look at what I did to merge into anything else (and probably do a better job!) it&#8217;s on sourceforge as <a href="https://sourceforge.net/p/qemu090b/code/ci/master/tree/hw/mpu401.c">mpu401.c</a>.</p>



<p class="wp-block-paragraph">Otherwise the binary is available on sourceforge:</p>



<a href="https://sourceforge.net/projects/qemu090b/files/latest/download"><img loading="lazy" decoding="async" alt="Download Qemu090b" src="https://a.fsdn.com/con/app/sf-download-button" width="276" height="48" srcset="https://a.fsdn.com/con/app/sf-download-button?button_size=2x 2x"></a>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/03/14/adding-dosboxs-mpu401-to-qemu-0-90/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows 3.1 turns 20.</title>
		<link>https://virtuallyfun.com/2012/04/09/windows-3-1-turns-20/</link>
					<comments>https://virtuallyfun.com/2012/04/09/windows-3-1-turns-20/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 09 Apr 2012 21:44:16 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[80386]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Win16]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=2000</guid>

					<description><![CDATA[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 &#8230; <a href="https://virtuallyfun.com/2012/04/09/windows-3-1-turns-20/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><div id="attachment_2007" style="width: 650px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2012/04/microsoft-windows-3.1-ad.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2007" class="size-large wp-image-2007" title="microsoft windows 3.1 ad" src="https://virtuallyfun.com/wp-content/uploads/2012/04/microsoft-windows-3.1-ad-1024x707.jpg" alt="" width="640" height="441" /></a><p id="caption-attachment-2007" class="wp-caption-text">Windows 3.1 turns 20!</p></div></p>
<p>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.</p>
<p>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 <a href="https://virtuallyfun.com/?p=1155">stacker</a>!), and CGA. Â Needless to say wing commander was actually playable on his computer.</p>
<p>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.</p>
<p>Visually Windows 3.0 and 3.1 look very similar, but Windows 3.1 builds on Windows 3.0&#8217;sÂ successÂ and adds in some very important technologies, not limited to:</p>
<ul>
<li>OLE</li>
<li>True Type Fonts</li>
<li>Better DPMI support</li>
<li>Better MS-DOS multitasking (386 Enhanced mode only)</li>
<li>better support for SVGA adapters</li>
<li>Multimedia support</li>
<li>no more UAE box</li>
<li>commonÂ dialog boxes!</li>
<li>primitiveÂ drag &amp; drop support</li>
<li>32-bit disk access</li>
<li>Improved WinHelp</li>
</ul>
<p>The only &#8216;down&#8217; side that I was aware of is that Windows 3.1 dropped support for IBM PC/XT&#8217;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&#8217;s with Intel inboard 386&#8217;s were not supported, however AT&#8217;s with inboard 386&#8217;s were. Â Even Microsoft MACH 20 card owners were restricted to Windows 3.0 standard mode (<a href="http://www.conradshome.com/win31/archive/softlib/ww0340.exe">after some extensive updates</a>). Also was there ever a special version of OS/2, like how the box claims?</p>
<p>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 &#8216;dream&#8217; of spending more and more time in Windows was starting to happen. Â Although for many of us this &#8216;dream&#8217; 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.</p>
<p>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:</p>
<ul>
<li>Winmem32</li>
<li>Win32s</li>
<li>ODBC</li>
<li>WING</li>
<li>Video for Windows</li>
<li>Winsock</li>
</ul>
<p>I don&#8217;t think Winmem32 ever took off, as it really was just a way to allocate larger memory segments, I&#8217;m almost positive that Watcom&#8217;s Windows Extender was more popular. Â Naturally these predate the ever popular <a href="https://virtuallyfun.com/?p=409">Win32s</a>, which I&#8217;ve covered before. Â WING was the fast video for games that I&#8217;ve covered once more again, with <a href="https://virtuallyfun.com/?p=402">WinDoom</a>. But I&#8217;ll just state it again, that Win32s was very important for bringing the whole &#8216;internet&#8217;Â experienceÂ to mere users as almost everything that was TCP/IP based was 32bit for the &#8216;rest of the world&#8217; and Win32s brought a taste of real 32bit computing to the <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/tcp32b.exe">masses</a>, esp for people using Mosiac and Netscape.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2012/04/winvideo.jpg"><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-2002" title="winvideo" src="https://virtuallyfun.com/wp-content/uploads/2012/04/winvideo-300x237.jpg" alt="" width="300" height="237" /></a></p>
<p>Winvideo was Microsoft&#8217;s answer to the ever popular <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/qtw11.zip">Quicktime</a>. Â 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&#8217;s available for download <a href="http://support.microsoft.com/kb/119383">here</a>, And thanks to the University ofÂ BritishÂ Columbia, you can download the Video for Windows Runtime <a href="http://www2.chem.ubc.ca/courseware/labs/">here</a>.</p>
<p>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 &#8220;Windows 3.11 for workgroups&#8221; was later released, which could be extended with MS&#8217;s TCP/IP. Â At the end there even was a version of <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/ie5win31.exe">IE 5 for Windows 3.1</a>, 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 <a href="http://support.microsoft.com/kb/239550">more than 16MB of ram</a>. I suppose the good thing is that IE 5 (probably 3 &amp; 4 as well) came with PPP dialers, which was good enough for the majority of users. Â  Microsoft even made its improved <a href="http://www.gaby.de/ftp/pub/win3x/mp52beta.exe">Media player 5</a> (beta 2), and <a href="http://gaby.de/ftp/pub/win3x/nsplay16.exe">Net Show</a> players available for 3.1, although I&#8217;ve never used them. &#8220;Good&#8221; IE releases didn&#8217;t come until 95/NT 4.0 anyways, the retrofitted ones were just unstable and lacking.</p>
<p>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 &amp; Visual Basic. ODBC typically came with either database programs, or with database driver disks, like the one for <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/SQL-421-ODBC.vfd.7z">SQL Server</a>.</p>
<p>While Windows was becoming more and more useful, users were going insane,Â clamoringÂ for a full 32bit version, which led us down the &#8216;short&#8217; road to Chicago, which was originally expected some time in 1993, but instead didn&#8217;t ship until August of 1995. Â Windows NT 3.1 was another contender, but again it didn&#8217;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&#8217;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..)</p>
<p>What also made Windows 3.1 popular was the so called &#8220;Microsoft Tax&#8221; whereÂ MicrosoftÂ would sell to OEM&#8217;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 &amp; 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 &amp; 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&#8217;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.</p>
<p><div id="attachment_2009" style="width: 691px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2012/04/prices.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2009" class="size-full wp-image-2009" title="prices" src="https://virtuallyfun.com/wp-content/uploads/2012/04/prices.jpg" alt="" width="681" height="499" /></a><p id="caption-attachment-2009" class="wp-caption-text">1-2-3 for $495 or Office for $459 &#8230;</p></div></p>
<p>Another typical bundle was Microsoft Office. Â Microsoft took advantage of Lotus&#8217;s failure in the market place to deliver a graphical application (The OS/2 switch doesn&#8217;t matter, Lotus still released a text mode app in the OS/2 heyday), combined with 1-2-3&#8217;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.</p>
<p><div id="attachment_2005" style="width: 650px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2012/04/microsoft-C-7.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2005" class="size-large wp-image-2005" title="microsoft C 7" src="https://virtuallyfun.com/wp-content/uploads/2012/04/microsoft-C-7-1024x650.jpg" alt="" width="640" height="406" /></a><p id="caption-attachment-2005" class="wp-caption-text">Microsoft C/C++ 7.0 + Windows 3.1 SDK $139.00</p></div></p>
<p>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 &#8216;why bother&#8217; 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&#8217;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&#8217;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.</p>
<p><div id="attachment_2011" style="width: 662px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2012/04/quest-for-the-holy-grail.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2011" class="size-full wp-image-2011" title="quest for the holy grail" src="https://virtuallyfun.com/wp-content/uploads/2012/04/quest-for-the-holy-grail.jpg" alt="" width="652" height="517" /></a><p id="caption-attachment-2011" class="wp-caption-text">The quest for the holy grail</p></div></p>
<p>With high resolution, and color depth displays, audio cards, multimedia games like &#8220;Monty Python&#8217;s quest for the holy grail&#8221; 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.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2012/04/microsoft-bob.png"><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-2014" title="microsoft bob" src="https://virtuallyfun.com/wp-content/uploads/2012/04/microsoft-bob-300x237.png" alt="" width="300" height="237" /></a>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 &#8220;Chrysler New Yorker&#8217; 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.</p>
<p>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&#8217;t even imagine giving someone a 1-2-3 wks file, let alone aÂ Word PerfectÂ document, as I&#8217;m pretty sure there are no translators anymore. Oddly enough Win64 based OS&#8217;s can&#8217;t directly run Win16 based programs, there is always emulation.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2012/04/09/windows-3-1-turns-20/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Upgrading through OS/2; Version 3.0 aka Warp pt II</title>
		<link>https://virtuallyfun.com/2011/05/25/upgrading-through-os2-version-3-0-aka-warp-pt-ii/</link>
					<comments>https://virtuallyfun.com/2011/05/25/upgrading-through-os2-version-3-0-aka-warp-pt-ii/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 25 May 2011 20:37:04 +0000</pubDate>
				<category><![CDATA[OS/2]]></category>
		<category><![CDATA[Virtual PC]]></category>
		<category><![CDATA[Win32s]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=739</guid>

					<description><![CDATA[Continuing from my previous post, I scored a lot of OS/2 Warp 3.0 media on ebay, and a kind person sent me some disk images of Warp 3.0 blue spine! Now the downside is that while Virtual PC 2007 supports &#8230; <a href="https://virtuallyfun.com/2011/05/25/upgrading-through-os2-version-3-0-aka-warp-pt-ii/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Continuing from my <a href="https://virtuallyfun.com/?p=718">previous post</a>, I scored a lot of OS/2 Warp 3.0 media on ebay, and a kind person sent me some disk images of Warp 3.0 blue spine!</p>
<p>Now the downside is that while Virtual PC 2007 supports XDF to some extent, it doesn&#8217;t like the XDF driver that comes with Warp 3.0&#8230; Which I guess isn&#8217;t a surprise, anyone wouldÂ after allÂ be loading the latest version, I mean who would load up and upgrade every version of OS/2 for the heck of it?</p>
<p>So as it is pointed out <a href="http://www.computing.net/answers/os2/os2-warp-3-floppy-on-vpc-2004/2149.html">here</a>, simply replace the ibm1flpy.add &amp; xdfloppy.flt from OS/2 4.0 and it&#8217;ll work!</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-6.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-740" title="os2 3 install 6" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-6.png" alt="" width="640" height="404" /></a>Now we get the usual, do we want to format my disk&#8230; As always the answer is NO&#8230; But it&#8217;s so delightfully colorful now!</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-7.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-741" title="os2 3 install 7" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-7.png" alt="" width="641" height="399" /></a>Then it&#8217;s a simple matter of feeding it disks, and waiting for it to chew through the 6 disks&#8230; Â I remember on a physical machine, these XDF&#8217;s weren&#8217;t exactly speedy.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-8.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-742" title="os2 3 install 8" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-8.png" alt="" width="638" height="400" /></a>And then with that out of the way, it&#8217;ll be time to reboot, into the GUI, and to see how much hardware (if any) has been preserved.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-9.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-743" title="os2 3 install 9" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-9.png" alt="" width="643" height="480" /></a>I had to change the Video to regular VGA, for some reason it this this is a Chips video&#8230;? And it had no idea about the CD-ROM. Â It did pick up the sound blaster, and it kept my printer!</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-10.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-744" title="os2 3 install 10" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-10.png" alt="" width="644" height="483" /></a>Wow fully loaded out, and 29.33MB. Â I can&#8217;t remember the last time getting so much out of so little. Â Anyways, time to swap more disks&#8230;</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-11.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-745" title="os2 3 install 11" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-11.png" alt="" width="635" height="479" /></a>And as part of the update, it&#8217;ll let you compare your config.sys with a before and after&#8230; And honestly&#8230; WTF? Â Since the lines are so long, why did someone thing this was actuallyÂ legible?</p>
<p>I know it&#8217;s part of the legacy of config.sys, but really.. WTF!</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-12.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-746" title="os2 3 install 12" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-install-12.png" alt="" width="640" height="478" /></a>Well we&#8217;ll just trust it&#8217;s upgrade process, and let it ride!</p>
<p>So we reboot, another splash logo and&#8230;.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-747" title="os2 3 desktop 1" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-1.png" alt="" width="644" height="484" /></a>We not only get the desktop, the tutoral, Introducing OS/2. Â Which is really nice looking. Â It&#8217;s like they hired someone that&#8217;s not old school IBM to do this. Â It&#8217;s at least a big enough of a change since the days of OS/2 1.2&#8217;s tutorial.</p>
<p>Closing that, I get the desktop. Â I&#8217;m no fan of the launchpad, so I just shred that thing from the get go. Â I know I know.. it&#8217;s like windows 95&#8217;ish but from 1994.</p>
<p>And how did my legacy applications hold up?</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-2.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-748" title="os2 3 desktop 2" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-2.png" alt="" width="640" height="481" /></a>Bricks from OS/2 1.1 is still there, and still works great. Â Word &amp; Excel also working, just as they did when I installed them in OS/2 1.2.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-3.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-749" title="os2 3 desktop 3" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-3.png" alt="" width="641" height="464" /></a></p>
<p>Even SimCityLite is working, along with DOOM. Â I&#8217;d have to give Warp an A+ on it&#8217;s migration from OS/2 2.1. Â It did look a little scary with the config.sys thing from hell, but really you can tell a *LOT* of work went into this release of OS/2.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-4.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-757" title="os2 3 desktop 4" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-desktop-4.png" alt="" width="642" height="481" /></a>Speaking of games, Warp gave us.. Mahjongg Solitaire. Â I don&#8217;t know why it&#8217;s not spelled Mahjong, maybe it&#8217;s someÂ BritishÂ English vs US English thing? Â Anyways I&#8217;ve always associated the game with old ladies, and gambling rings. Â Honestly IBM would have been better off paying out some developer for a &#8216;top selling game&#8217; and doing an OS/2 version. Â Even in OS/2 2.0 it is possible to write 32bit programs that&#8217;ll run in VGA 320x200x256 mode, which was still popular with plenty of the MS-DOS games of the time. Â But I guess even a full screen port of DOOM wouldn&#8217;t be all that IBM GREY/PC/DULL enough. Â Oh well even Tetris would have been a popular game.</p>
<p>One thing that bugged the hell out of me was the sounds. Â It still was annoying to use OS/2 in an office with it constantly making noise&#8230; But in all fairness it was kind of the rage of the time, even Windows to this day has all the hooks in for it&#8217;s themes of custom mouse pointers, and GUI actions. Thankfully we&#8217;ve all moved beyond that.</p>
<p>This was going to be the the effort to really wow people before Windows 95 shipped. Â In some regards it really was too little too late. Â The world was shifting away from the idea of an isolate powerful &#8216;workstation&#8217; to the connected computer. Â As it does say on the box, this was the &#8216;on ramp to the information super highway. Â In my opinion this is where OS/2 weakspots really started to show through. Â First TCP/IP was an addon, not part of the OS. Â I don&#8217;t know how they thought slapping other diskettes in the box is &#8216;ok&#8217; but it&#8217;s not part of the default install, and easily missed by novice users. Â The next, and foreverÂ lamentedÂ part is that it only included support for dialup.</p>
<p>That&#8217;s right, although dialup was pretty much the norm for 1994, the world was rapidly changing, and the first cable modems were starting to be slowly rolled out. Â It also meant in the corporate world as LANS had taken over everything, and companies were just starting to think about TCP/IP and internet strategies, OS/2 was setup to be left out. Â Instead, someone at IBM decided that LAN based network should be a premium and people should pay twice the price for OS/2 Warp connect. Â This provedÂ disastrous.</p>
<p>Right about this time, Microsoft had released Windows for Workgroups, which was all about LAN / NetBEUI access, but they even did throw out a free TCP/IP protocol upgrade. Â Windows NT 3.1 had finally shipped, and it too included LAN TCP/IP support. Â Then it was cemented in the more responsive Windows NT 3.5 which had a smaller memory footprint, and of course included support for PPP/SLIP along with LAN networking, and support for IP forwarding! Â That&#8217;s right you could use Windows NT 3.5 as a router!.. (Yes, even the workstation version).</p>
<p>However IBM did at least have theÂ foresight to include popular internet programs in their internet pack (which sadly I don&#8217;t have. Â I&#8217;ll have to review it later), I recall it had a gopher client, NNTP client (Probably News/2 from the TCP/IP for OS/2 2.0 days) and a cut down version of LAMAIL&#8230;</p>
<p>The other massive shift online was the coming rise of the web browser. Â Specifically Mosaic. Â And Mosaic ran on all kinds of UNIX platforms. Â It even ran on Windows NT. Â They even made it &#8216;safe&#8217; enough to run on Win32s. Â But there was no port to OS/2. Â Thankfully someone recognized the importance of Win32s, and provided a driver to interface Windows 3.1&#8217;s 386 enhanced mode, to a workalike driver for Win32s.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-win32s-1.1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-750" title="os2 3 win32s 1.1" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-win32s-1.1.png" alt="" width="641" height="482" /></a>I chose the &#8216;runtime&#8217; version of Win32s 1.1 .. I just wanted to see if it&#8217;d work.</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-win32s-1.1-freecell.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-751" title="os2 3 win32s 1.1 freecell" src="https://virtuallyfun.com/wp-content/uploads/2011/05/os2-3-win32s-1.1-freecell.png" alt="" width="642" height="482" /></a>And the good news is that not only did it work, but it runs in seamless mode, with OS/2 1.1&#8217;s color scheme. Â Pretty snazzy.</p>
<p>There was a short windows, but it was there, while people were on dialup, and before Windows 95 had shipped and had some extended driver support under it&#8217;s belt, OS/2 was the best way to run Win32s stuff outside of Windows NT. Â But even people who had devices like this thing I had at the time:</p>
<p><a href="https://virtuallyfun.com/wp-content/uploads/2011/05/10154852_WebRamp_410i_Ethernet_to_ISDN_Router.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-752" title="10154852_WebRamp_410i_Ethernet_to_ISDN_Router" src="https://virtuallyfun.com/wp-content/uploads/2011/05/10154852_WebRamp_410i_Ethernet_to_ISDN_Router.jpg" alt="" width="416" height="239" /></a>The web ramp was really cool, it had 3 serial ports, which let you connect 3 modems. Â It would then round robin your outbound requests so that people could share all 3 lines (if you had them) and it did NAT in hardware. Â This mean in the age of dialup this little guy would let you build a small LAN (it had a 4 port ethernet hub in the back) and suddenly all the computers at home with ethernet were online. Â It&#8217;s stuff like this that really left people asking why did OS/2 warp have such a substandard networking stack.</p>
<p>The year was 1994, the internet was starting to gainÂ momentum. Â Windows 95 was a year and a half away. Â The answer to Windows 95 would no doubt be OS/2 4.0. Â Would IBM do anything about theseÂ shortcomings?</p>
<p>We&#8217;ll find out as we upgrade to <a href=" https://virtuallyfun.com/?p=760">&#8216;project Merlin&#8217; AKA OS/2 4.0</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2011/05/25/upgrading-through-os2-version-3-0-aka-warp-pt-ii/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Win32s version tour&#8230;</title>
		<link>https://virtuallyfun.com/2011/04/04/win32s-version-tour/</link>
					<comments>https://virtuallyfun.com/2011/04/04/win32s-version-tour/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 04 Apr 2011 16:16:00 +0000</pubDate>
				<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=409</guid>

					<description><![CDATA[Well I&#8217;ve managed to track down quite a few versions of Win32s from my various compiler CD&#8217;s So I figured it&#8217;d be somewhat interesting to run down a &#8216;tour&#8217; of some of the significant versions starting with the first. Now &#8230; <a href="https://virtuallyfun.com/2011/04/04/win32s-version-tour/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Well I&#8217;ve managed to track down quite a few versions of Win32s from my various compiler CD&#8217;s So I figured it&#8217;d be somewhat interesting to run down a &#8216;tour&#8217; of some of the significant versions starting with the first.</p>
<p>Now Microsoft Knowledge base article, <a href="https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/121091">KB121091</a> 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&#8217;t include either.</p>
<p>Win32s from October 1992.</p>
<p>I got this from the Windows NT October 1992 Win32 SDK. Keeping in mind that Windows 3.1 shipped in April of 1992 it&#8217;s kind of note worthy that already in October there is already a working win32s upgrade for Windows. I&#8217;d describe this release as a &#8216;core&#8217; 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!</p>
<p><div id="attachment_5264" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-1992-running-nt-october-1992-appletts.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5264" class="size-full wp-image-5264" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-1992-running-nt-october-1992-appletts.png" alt="Windows 3.1 - win32s 1992 running nt october 1992 appletts" width="656" height="518" /></a><p id="caption-attachment-5264" class="wp-caption-text">Windows 3.1 &#8211; win32s 1992 running NT October 1992 applets</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>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.</p>
<p>For anyone that wants to play with it, the 1992 version of Win32s is available <a href="https://archive.org/download/win32s/win32s-october-1992-beta.7z">here</a>.</p>
<p>The next, and final beta from March of 1993. This one does identify itself as being build 61, which is not on the list.</p>
<p><div id="attachment_5265" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-March-1993-running-nt-october-1992-appletts.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5265" class="size-full wp-image-5265" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-March-1993-running-nt-october-1992-appletts.png" alt="Windows-3.1-win32s-March-1993-running-nt-october-1992-appletts" width="656" height="518" /></a><p id="caption-attachment-5265" class="wp-caption-text">Windows 3.1 win32s from March 1993 running NT October 1992 applets</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Its compatibility is about par with the 1992 version, but the winver reports Windows NT version 63.10 &#8230; I&#8217;ve made it available <a href="https://archive.org/download/win32s/win32s-march-1993-beta-build-61.7z">here</a>.</p>
<p>I was unable to find any 1.0 versions of Win32s. Googling around, it would appear that <a href="http://books.google.com/books?id=JzwEAAAAMBAJ&amp;pg=PA8&amp;lpg=PA8&amp;dq=mathcad+4.0+win32s&amp;source=bl&amp;ots=4E2GH7t_Us&amp;sig=MQ9sra4qMlNd6KbkOfm-l3u3dSk&amp;hl=en&amp;ei=KxWfTaibGsTagQft0p3YDw&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=1&amp;ved=0CBkQ6AEwAA#v=onepage&amp;q=mathcad%204.0%20win32s&amp;f=false">MathCad 4.0 shipped with the 1.0 runtime</a>. If anyone has Mathcad 4.0 I&#8217;d love a copy of it&#8217;s Win32s 1.0!</p>
<p>From the same InfoWorld article, 1.1 shipped the same time as Windows NT 3.1, and 1.0 was another &#8216;pre-release&#8217;. But I do have to say that 1.1 includes quite a number of great utilities, and tools, unlike the other development versions.</p>
<p><div id="attachment_5262" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-1.1-setup.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5262" class="size-full wp-image-5262" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-1.1-setup.png" alt="Win32s 1.1" width="656" height="518" /></a><p id="caption-attachment-5262" class="wp-caption-text">Win32s 1.1</p></div></p>
<p><div id="attachment_5263" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-1.1-setup2.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5263" class="size-full wp-image-5263" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0.14.0-windows-3.1-win32s-1.1-setup2.png" alt="Win32s 1.1 dev features" width="656" height="518" /></a><p id="caption-attachment-5263" class="wp-caption-text">Win32s 1.1 dev features.</p></div></p>
<p>That&#8217;s right, <a href="https://archive.org/download/win32s/win32s-1.1-build-88-msvc32sdev.7z">this developer version</a> 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&#8217;s and 2MB of RAM. Although if anyone really wants a kick ass Dos Extender, use the excellent, and <a href="http://www.japheth.de/HX.html">FREE HX Dos Extender</a></p>
<p>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&#8217;t that surprising as version 1.1 is at parity with Windows NT 3.1, and that call didn&#8217;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 &#8216;issues&#8217; and other memory collisions are found much easier under Win32s then under Windows NT (and it&#8217;s siblings). At any rate, you can find this version of Win32s <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/win32s/win32s-1.1-build-88-msvc32sdev.7z">here</a>.</p>
<p>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 <a href="https://archive.org/download/win32s/win32s-1.20-build-123-dev.7z">here</a>, along with the retail version <a href="https://archive.org/download/win32s/win32s-1.20-build-123-retail-ole2.7z">here</a>.</p>
<p><a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/win32s/win32s-1.25-build-142-dev.7z">The developers version of 1.25</a> is on the Visual C++ 2.2 disc, but it lacks dev tools and debuggers from 1.10! Â <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/win32s/win32s-1.25-build-141-retail-ole2.7z">The retail copy of 1.25 with OLE2 support</a>. There apparently was some <a href="http://web.mit.edu/cascon/microsoft/q130139.htm">major bugs</a> with 1.25, and there is also the all important 1.25a update, which I&#8217;ve been able to track down both the <a href="https://archive.org/download/win32s/win32s-1.25a-build-142-retail.7z">retail</a> and the <a href="https://archive.org/download/win32s/win32s-1.25a-build-142-retail-ole2.7z">retail + OLE2 version</a>s. I don&#8217;t have any development versions of 1.25/1.25a so no debug symbols.</p>
<p>And finally I was able to track down Win32s 1.30a both <a href="https://archive.org/download/win32s/win32s-1.30a-build-166-retail-ole2.7z">retail OLE 2</a> &amp; the <a href="https://archive.org/download/win32s/win32s-1.30a-build-166-dev.7z">development version</a>, along with the final version of Win32s 1.30c, <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/win32s/win32s-1.30c-build-172-dev.7z">development</a> and <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/win32s/win32s-1.30c-build-172-retail-ole2.7z">retail OLE 2.0</a>.</p>
<p>Win32s 1.30 included a Windows 95 compatible help engine. I would imagine it included some level of compatibility for Windows 95 applications too.</p>
<p>Of all the versions, I&#8217;ve found that 1.25a is the most well behaved, but at the same time, I&#8217;m lacking the debug build of it&#8230; I should also point out gabby.de has a great <a href="http://stephan.win31.de/w32slist.htm">info page</a> on various applications that&#8217;ll run on Win32s.</p>
<p><strong>** </strong>As a note from the future it turns out that <a href="https://archive.org/download/win32s/win32s-1.30c-build-172-retail-ole2.7z">1.30c build 172</a> can play nicely under Qemu, it turns out to need a fix, from Roy as mentioned down below.  &#8220;<em>I can patch all 1.30.xxx versions by replacing &#8220;66 83 EF 04 E3 3B&#8221; with &#8220;66 83 EF 04 EB 3B&#8221; in win32s16.dll</em>&#8220;.  Super thanks for that!  I mirrored <a href="https://archive.org/download/win32s/win32s-1.30c-build-172-fix.7z">the fix here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2011/04/04/win32s-version-tour/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Office 4.2 for Windows NT</title>
		<link>https://virtuallyfun.com/2011/04/03/office-4-2-for-windows-nt/</link>
					<comments>https://virtuallyfun.com/2011/04/03/office-4-2-for-windows-nt/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 03 Apr 2011 20:15:00 +0000</pubDate>
				<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[Win32s]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=408</guid>

					<description><![CDATA[At some time during the whole Windows NT vs OS/2 thing in the workplace, one of the funny things is that we all had to use Win16 versions of office, which I think we all agreed kind of sucked. Even &#8230; <a href="https://virtuallyfun.com/2011/04/03/office-4-2-for-windows-nt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<div class="separator" style="text-align: left; clear: both;"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Office-4_2-for-NT-i386-Alpha-front.jpg"><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-1823" title="Office 4_2 for NT i386 - Alpha front" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Office-4_2-for-NT-i386-Alpha-front-245x300.jpg" alt="" width="245" height="300" /></a></div>
<p>At some time during the whole Windows NT vs OS/2 thing in the workplace, one of the funny things is that we all had to use Win16 versions of office, which I think we all agreed kind of sucked. Even at the time I thought it was rather sad that here is Microsoft pushing this new and exciting operating system, and the only applications that are available is a program to talk to mainframes (SNA Server), and a database (SQL Server). Oh sure there was MSMail, but there was no Word &amp; Excel that the world was rapidly moving to, away from WordPerfect &amp; 123.</p>
<p>So was I ever surprised to find out that there was a version of Microsoft Office for NT, and it at least ran on both i386 &amp; Dec Alpha. The box claims that the PowerPC and MIPS versions will be along, but I don&#8217;t know if they ever shipped. But at the same time, it&#8217;d be hard to be touting these &#8216;advanced&#8217; RISC CPU&#8217;s and all their glory, but when it comes to day to day work, they are running Word/Excel in emulation. I have the box with the coupon to redeem but I suspect MS would just laugh if I called them up asking for Word/Excel for the MIPS so I can run it on Qemu&#8230;. But I digress.</p>
<p>Naturally because of the day &amp; age, the requirements are kind of laughable, but it was targeted towards Windows NT 3.5, with:</p>
<ul>
<li>Microsoft Windows NT(tm) operating system 3.5 or later</li>
<li>486 or higher</li>
<li>16MB of memory</li>
<li>59MB of disk space (minimum) 84MB maximum</li>
</ul>
<p>So playing around with Win32s, I figured if i were to install say word into a VM, then xcopy it out, and try to run it, would it work? Win32s 1.10 wouldn&#8217;t run as this version didn&#8217;t include the new OLE 2.0 stuff&#8230; Which is why I suspect it won&#8217;t run on NT 3.1. Win32s 1.30c crashed and burnt in the worst way possible. Even Lemmings died on this version. damn.</p>
<p>But <a href="http://papa.indstate.edu:8888/ftp/main!Misc_Utils!Win32+TCPIP.html">Win32s 1.25</a> actually ran it, along with Lemmings &amp; Doom!</p>
<p><div id="attachment_1821" style="width: 666px" class="wp-caption alignright"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0_14_0-Windows-3_1-win32s-1_25-Word-for-WindowsNT-6_0.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1821" class="size-full wp-image-1821" title="Qemu 0_14_0 Windows 3_1 - win32s 1_25 Word for WindowsNT 6_0" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Qemu-0_14_0-Windows-3_1-win32s-1_25-Word-for-WindowsNT-6_0.png" alt="" width="656" height="518" /></a><p id="caption-attachment-1821" class="wp-caption-text">Word for NT on Windows 3.1</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>I can&#8217;t say it&#8217;s terribly useful, but considering how flakey Word 6.0 was on Windows 3.1, hell back in the day it&#8217;d been really nice to have a Win32 version.</p>
<p>Now I guess I ought to dig thru my stuff and see how many versions of both retail &amp; debug Win32s I can find.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2011/04/03/office-4-2-for-windows-nt/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Lemmings demo for Win32s</title>
		<link>https://virtuallyfun.com/2011/04/03/lemmings-demo-for-win32s/</link>
					<comments>https://virtuallyfun.com/2011/04/03/lemmings-demo-for-win32s/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 03 Apr 2011 19:27:00 +0000</pubDate>
				<category><![CDATA[games]]></category>
		<category><![CDATA[random updates]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=407</guid>

					<description><![CDATA[While digging around I came across this demo of Lemmings for WinG/Win32s. And what&#8217;s great is that it runs on Windows 7 x86_64! Pretty snazzy! The game play is still there, but the &#8216;speed up&#8217; stuff is instant in the &#8230; <a href="https://virtuallyfun.com/2011/04/03/lemmings-demo-for-win32s/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;"></div>
<p><div id="attachment_3541" style="width: 994px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/04/Lemmings-on-Windows-Vista.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3541" class="size-full wp-image-3541" alt="Lemmings on Windows Vista" src="https://virtuallyfun.com/wp-content/uploads/2011/04/Lemmings-on-Windows-Vista.jpg" width="984" height="426" /></a><p id="caption-attachment-3541" class="wp-caption-text">Lemmings on Windows Vista</p></div></p>
<p>While digging around I came across this demo of Lemmings for WinG/Win32s. And what&#8217;s great is that it runs on Windows 7 x86_64! Pretty snazzy!</p>
<p>The game play is still there, but the &#8216;speed up&#8217; stuff is instant in the world of Ghz CPUs.</p>
<p>Oh well, it&#8217;s worth having some fun with. Here is the <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/demos/Lemmings.7z">download</a>.</p>
<p>I just remember this game when it was an Amiga thing&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2011/04/03/lemmings-demo-for-win32s/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WinDoom, WinG, Win32s on Windows 3.1 (on Qemu)</title>
		<link>https://virtuallyfun.com/2011/03/29/windoom-wing-win32s-on-windows-3-1-on-qemu/</link>
					<comments>https://virtuallyfun.com/2011/03/29/windoom-wing-win32s-on-windows-3-1-on-qemu/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 29 Mar 2011 20:39:00 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=402</guid>

					<description><![CDATA[So since I was looking at the Doom stuff, I thought I&#8217;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&#8217;t work for me, but &#8230; <a href="https://virtuallyfun.com/2011/03/29/windoom-wing-win32s-on-windows-3-1-on-qemu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>So since I was looking at the Doom stuff, I thought I&#8217;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&#8217;t work for me, but the last one, the <a href="http://www.doomworld.com/idgames/?id=14158">April 13th, 1995 build</a>, worked just great!</p>
<p><div id="attachment_2437" style="width: 346px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/windoom-on-windows-7.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2437" class="size-full wp-image-2437" title="windoom on windows 7" src="https://virtuallyfun.com/wp-content/uploads/2011/03/windoom-on-windows-7.png" alt="" width="336" height="258" /></a><p id="caption-attachment-2437" class="wp-caption-text">WinDoom on Windows 7 x64</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Even on Windows 7 x86_64, sp1!</p>
<p>So how much of a chore was this to run back in 1995, before Windows 95?</p>
<p>Well to start WinDoom requires a display capable of at least 256 colors. I thought I&#8217;d use Qemu for this, but this proved to be&#8230; 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:</p>
<p><div id="attachment_2438" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-MS-SVGA-256-Driver.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2438" class="size-full wp-image-2438" title="qemu 0.14.0 Windows 3.1 - MS SVGA 256 Driver" src="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-MS-SVGA-256-Driver.png" alt="" width="656" height="518" /></a><p id="caption-attachment-2438" class="wp-caption-text">And.. corruption.</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Ok, so you say, there is this great patch to enable better VESA support right?</p>
<p><div id="attachment_2439" style="width: 650px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-MS-SVGA-256-Driver-patched.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2439" class="size-large wp-image-2439" title="qemu 0.14.0 Windows 3.1 - MS SVGA 256 Driver patched" src="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-MS-SVGA-256-Driver-patched-1024x787.png" alt="" width="640" height="491" /></a><p id="caption-attachment-2439" class="wp-caption-text">Wrong.</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>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 <del><a href="http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&amp;cc=emea_middle_east&amp;prodTypeId=12454&amp;prodSeriesId=96433&amp;prodNameId=100619&amp;swEnvOID=26&amp;swLang=8&amp;mode=2&amp;taskId=135&amp;swItem=1093">HP</a></del> and amazingly the 640x480x16MM colors works! (well, works &#8216;enough&#8217;).</p>
<p><div id="attachment_2440" style="width: 746px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/Qemu-0.14.0-Windows-3.1-working-video-driver.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2440" class="size-full wp-image-2440" title="Qemu 0.14.0 Windows 3.1 - working video driver" src="https://virtuallyfun.com/wp-content/uploads/2011/03/Qemu-0.14.0-Windows-3.1-working-video-driver.png" alt="" width="736" height="438" /></a><p id="caption-attachment-2440" class="wp-caption-text">Installing the right driver.</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>It&#8217;s the GD5430 v1.25f, 640x480x16.8M</p>
<p>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 <a href="http://www.tenberry.com/dos4g/watcom/index.html">DOS4G/W extender</a>. For Windows, it relies on the then new Win32 standard, and Windoom was written to conform to the <a href="http://en.wikipedia.org/wiki/Win32s">Win32s</a> 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.25. I just remember this being a somewhat stable version.</p>
<p><div id="attachment_2441" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/Qemu-0.14.0-Windows-3.1-load-win32s.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2441" class="size-full wp-image-2441" title="Qemu 0.14.0 Windows 3.1 - load win32s" src="https://virtuallyfun.com/wp-content/uploads/2011/03/Qemu-0.14.0-Windows-3.1-load-win32s.jpg" alt="" width="656" height="518" /></a><p id="caption-attachment-2441" class="wp-caption-text">Installing Win32s</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Win32s installs pretty smooth, (as long as you remember the share.exe). Now we just need the WinG runtime to be installed. <a href="http://en.wikipedia.org/wiki/WinG">WinG</a> was Microsoft&#8217;s first real attempt at high speed gaming video under Windows. From what I understand it kind of went down because it was &#8216;too difficult&#8217;, and buying DirectX seemed to be a better fit.</p>
<p><div id="attachment_2442" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/Qemu-0.14.0-windows-3.1-midi-mapper.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2442" class="size-full wp-image-2442" title="Qemu 0.14.0 windows 3.1 - midi mapper" src="https://virtuallyfun.com/wp-content/uploads/2011/03/Qemu-0.14.0-windows-3.1-midi-mapper.png" alt="" width="656" height="518" /></a><p id="caption-attachment-2442" class="wp-caption-text">Setting the midi mapper.</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Another thing I&#8217;ve found is that if you change the midi mapper from the default &#8220;Ad Lib&#8221; to &#8220;Ad Lib general&#8221;, you can at least get the midi working in Doom.</p>
<p>Once WinG is installed, then it&#8217;ll want to do some blit tests&#8230;</p>
<p><div id="attachment_2444" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-WING-calibrate.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2444" class="size-full wp-image-2444" title="qemu 0.14.0 Windows 3.1 - WING calibrate" src="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-WING-calibrate.png" alt="" width="656" height="518" /></a><p id="caption-attachment-2444" class="wp-caption-text">WinG calibrating.</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>And after that, we can even bump it up to glorious 640&#215;400, something the initial MS-DOS version couldn&#8217;t do easily as VESA wasn&#8217;t a big standard with INSTALLED cards at the time, and it&#8217;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&#8217;s still a big deal with video and audio.</p>
<p>One thing that is cool about Qemu is that at compile time, you can put in adlib &amp; soundblaster cards to give the &#8216;full&#8217; Windows 3.1 multimedia experience. There is also GUS (Gravis Ultra Sound) support<br />
in Qemu, but I&#8217;ve never played with it..</p>
<p>With all of that out of the way, WinDoom will launch.</p>
<p><div id="attachment_2445" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-WING-dispdib.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2445" class="size-full wp-image-2445" title="qemu 0.14.0 Windows 3.1 - WING dispdib" src="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-WING-dispdib.png" alt="" width="656" height="518" /></a><p id="caption-attachment-2445" class="wp-caption-text">WING dispdib.dll missing error that turned out to be Video for Windows.</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Then it&#8217;ll throw an error, because Windows 3.1 doesn&#8217;t have the same video backend as Windows NT 3.5 (and higher), hit ok and then &#8230;</p>
<p><div id="attachment_2447" style="width: 666px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-WING-doom-640x480.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2447" class="size-full wp-image-2447" title="qemu 0.14.0 Windows 3.1 - WING doom 640x480" src="https://virtuallyfun.com/wp-content/uploads/2011/03/qemu-0.14.0-Windows-3.1-WING-doom-640x480.png" alt="" width="656" height="518" /></a><p id="caption-attachment-2447" class="wp-caption-text">And it works! WinGDoom running on Windows 3.1 on Qemu!</p></div></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>Sadly on Windows 3.1 the sound effects do not seem to work, but overall it&#8217;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&#8217;s could give this kind of support for legacy applications, even ones that had such a brief window of support.</p>
<p>Anyone crazy enough to even think of playing along can download the blob of software I used to get this going <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/windoom.7z">here</a> (<a href="https://archive.org/details/Windows-3.1-WING-doom">Updated on archive.org here: Windows-3.1-WING-doom</a>)</p>
<p>I should also add if you want sound effects to work on WinDOOM you really should install the <a href="http://vpsland.superglobalmegacorp.com/install/Windows3.1/vfw116.zip">Video for Windows Runtime</a>, and it&#8217;ll work&#8230; poorly on Qemu/SoundBlaster 16, but it does work!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2011/03/29/windoom-wing-win32s-on-windows-3-1-on-qemu/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
	</channel>
</rss>
