<?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>microsoft windows &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/microsoft-windows/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Tue, 02 Jun 2026 09:05:48 +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>Pinball on 64-bit Alpha AXP Windows NT</title>
		<link>https://virtuallyfun.com/2026/06/02/pinball-on-64-bit-alpha-axp-windows-nt/</link>
					<comments>https://virtuallyfun.com/2026/06/02/pinball-on-64-bit-alpha-axp-windows-nt/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 06:54:42 +0000</pubDate>
				<category><![CDATA[assembly]]></category>
		<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Windows XP]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15787</guid>

					<description><![CDATA[This is a guest post from Yufeng Gao One of the most popular OS built-in games is no doubt&#160;Pinball, known by its full name&#160;3D Pinball for Windows – Space Cadet. It started out as&#160;Full Tilt! Pinball, developed by&#160;Cinematronics&#160;and published by&#160;Maxis. &#8230; <a href="https://virtuallyfun.com/2026/06/02/pinball-on-64-bit-alpha-axp-windows-nt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This is a guest post from <a href="https://thebrokenpipe.com/blog/author/brokenpipe/">Yufeng Gao</a></em></p>



<p class="wp-block-paragraph">One of the most popular OS built-in games is no doubt&nbsp;<a href="https://en.wikipedia.org/wiki/Full_Tilt!_Pinball#3D_Pinball_for_Windows_%E2%80%93_Space_Cadet">Pinball</a>, known by its full name&nbsp;<em>3D Pinball for Windows – Space Cadet</em>. It started out as&nbsp;<em>Full Tilt! Pinball</em>, developed by&nbsp;<a href="https://en.wikipedia.org/wiki/Cinematronics,_LLC">Cinematronics</a>&nbsp;and published by&nbsp;<a href="https://en.wikipedia.org/wiki/Maxis">Maxis</a>. It offered 3 tables, and one of them, Space Cadet, was licensed to Microsoft to be included in Microsoft Plus! 95 and, later, built into the Windows operating system.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/pinball_gameplay.gif"><img fetchpriority="high" decoding="async" width="642" height="492" src="https://virtuallyfun.com/wp-content/uploads/2026/06/pinball_gameplay.gif" alt="" class="wp-image-15800"/></a></figure>



<p class="wp-block-paragraph">Windows XP was the last version of Windows to include Pinball, and Raymond Chen&nbsp;<a href="https://devblogs.microsoft.com/oldnewthing/20121218-00/?p=5803">explained why it didn’t make it to Windows Vista</a>&nbsp;on his blog. The reason was it had a collision detector bug when it was compiled for 64-bit Windows, which caused the ball to pass through various objects – falling off the screen through the plunger instead of being launched, for instance. The bug rendered the game unplayable, and Raymond and his colleague were unable to find a fix in a reasonable amount of time, so he removed it. At least that’s the story we were told, for about a decade.</p>



<p class="wp-block-paragraph">In 2021,&nbsp;<a href="https://www.youtube.com/c/NCommander">NCommander</a>&nbsp;launched&nbsp;<a href="https://www.youtube.com/watch?v=3EPTfOTC4Jw">a series of investigations</a>&nbsp;to challenge that, testing Pinball on various 64-bit (IA-64 and AMD64) builds of Windows XP and pre-release Vista. He found that the 64-bit versions of Pinball were all highly playable, with only very minor glitches, and speculated that the reason for its removal was that the UI did not fit into the Windows Vista design.</p>



<p class="wp-block-paragraph">Not long after NCommander published his video, Raymond followed up with a&nbsp;<a href="https://devblogs.microsoft.com/oldnewthing/20220106-00/?p=106122">post that filled in some gaps</a>&nbsp;in the story and shed more light on the bug. He said it was the 64-bit Alpha AXP version of Pinball that had the extremely bad collision detection bug. This claim had been unverifiable for the past 5 years, for the following reasons:</p>



<ul class="wp-block-list">
<li>No 64-bit Windows was ever released for the Alpha AXP – Compaq killed Windows NT support before NT was ported to 64-bit</li>



<li>One 64-bit Alpha AXP NT build was leaked in 2023, but the included Pinball does not work, as it segfaults immediately upon running</li>
</ul>



<p class="wp-block-paragraph">I’ve had an interest in the DEC Alpha for quite some time now, mainly out of my love for DEC architectures and my love for UNIX. VAX is the direct successor of PDP-11, and Alpha is the direct successor of VAX. Earlier, some Alpha emulation breakthroughs dropped, and I was pinged by a few friends that NT 4.0 could now run on a&nbsp;<a href="https://github.com/ES40-Emu/es40/">fork of the ES40 emulator</a>, as well as on&nbsp;<a href="https://github.com/TheBrokenPipe/qemu/tree/alphafix">QEMU</a>. I never thought Alpha NT would ever run under emulation, because unlike the familiar Tru64, Linux and the BSDs, NT uses its own custom PALcode and depends on ARC (Advanced RISC Computing) instead of SRM. Of course, people noted that the emulators couldn’t run the holy grail of Alpha NT – Windows (XP?) build 2210, because its kernel would panic with a memory management error in QEMU, or wouldn’t detect the keyboard and bug out in ES40. A few trips to hell in the symbol-less NT kernel and a few MMU emulation fixes later, I was able to patch up both QEMU and ES40 to boot that only surviving 64-bit build of Alpha NT.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-1.png"><img decoding="async" width="923" height="728" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-1.png" alt="" class="wp-image-15789" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-1.png 923w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-1-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-1-768x606.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-1-380x300.png 380w" sizes="(max-width: 923px) 100vw, 923px" /></a></figure>



<p class="wp-block-paragraph">After torturing my brain debugging a symbol-less NT kernel without a kernel debugger, I thought I’d give fixing Pinball a go, to make things worthwhile. One of the benefits of debugging a userland process is that, while there’s still no debugger, there is&nbsp;<a href="https://en.wikipedia.org/wiki/Dr._Watson_(debugger)">Dr. Watson</a>, which takes core dumps and performs simple post-mortems. Something is better than nothing, as people would say.</p>



<p class="wp-block-paragraph">Running Pinball gives the classic crash symptom immediately, with no graphics drawn:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-2.png"><img decoding="async" width="427" height="172" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-2.png" alt="" class="wp-image-15790" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-2.png 427w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-2-300x121.png 300w" sizes="(max-width: 427px) 100vw, 427px" /></a></figure>
</div>


<p class="wp-block-paragraph">Dr. Watson concludes that it died of a segfault:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-3.png"><img loading="lazy" decoding="async" width="358" height="481" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-3.png" alt="" class="wp-image-15791" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-3.png 358w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-3-223x300.png 223w" sizes="auto, (max-width: 358px) 100vw, 358px" /></a></figure>
</div>


<p class="wp-block-paragraph">It gave a nice dump of registers at the time of the fault:</p>



<pre class="wp-block-code"><code>State Dump for Thread Id 0x124

  v0=01002930 00000000   t0=00000000 00360000   t1=00000000 00000001
  t2=00000000 00360000   t3=00000000 00000000   t4=00000000 00000000
  t5=00000000 0000011c   t6=000003ff fff8f868   t7=00000000 00303030
  s0=000003ff fff8fac0   s1=01002930 00000000   s2=000003ff fff8fad8
  s3=00000000 00000000   s4=00000000 0106f2a8   s5=00000000 01000000
  fp=00000000 00000010   a0=01002930 00000000   a1=00000000 00000000
  a2=000003ff fff8fad8   a3=00000000 30010000   a4=00000000 69e17610
  a5=00000000 69e0a360   t8=000003ff fff8f868   t9=00000000 00000000
 t10=00000000 00300000  t11=00000000 00000002   ra=00000000 69e9d5c0
 t12=00000000 6a264710   at=ffffffff fffffe10   gp=00000000 00000000
  sp=000003ff fff8fa50 zero=00000000 00000000 fpcr=08000000 00000000
SoftFpcr=00000000 00000000  fir=6a264710
 psr=00000003
mode=1 ie=1 irql=0 </code></pre>



<p class="wp-block-paragraph">Some disassembly around the faulting instruction:</p>



<pre class="wp-block-code"><code>function: Otsstrlen
FAULT -&gt;00000000'6a264710: 2f700000 ldq_u t12,0(a0)
        00000000'6a264714: 239fffff lda at,-1(zero)
        00000000'6a264718: 4b90065c mskql at,a0,at
        00000000'6a26471c: 4600f000 and a0,#7,v0
        00000000'6a264720: 477c041b bis t12,at,t12
        00000000'6a264724: 43fb01fb cmpbge zero,t12,t12
        00000000'6a264728: 43e00520 subq zero,v0,v0
        00000000'6a26472c: f7600005 bne t12,00000000'6a264744 Otsstrlen+00000034
        00000000'6a264730: 2f700008 ldq_u t12,8(a0)
        00000000'6a264734: 42011410 addq a0,#8,a0
        00000000'6a264738: 40011400 addq v0,#8,v0
        00000000'6a26473c: 43fb01fb cmpbge zero,t12,t12</code></pre>



<p class="wp-block-paragraph">And a very useful stack backtrace:</p>



<pre class="wp-block-code"><code>*----&gt; Stack Back Trace &lt;----*

FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
000003FFFFF8FA50 0000000069E9D5BC 0100293000000000 0000000000000000 000003FFFFF8FAD8 0000000030010000 !Otsstrlen 
000003FFFFF8FA50 0000000069E9DB64 0100293000000000 0000000000000000 000003FFFFF8FAD8 0000000030010000 !PostThreadMessageA 
000003FFFFF8FA90 0000000069E9C000 0100293000000000 0000000000000000 000003FFFFF8FAD8 0000000030010000 !SetClassLongA 
000003FFFFF8FB80 000000000100F914 000003FFFFF8FC58 0000000000000000 000003FFFFF8FAD8 0000000030010000 !RegisterClassA 
000003FFFFF8FBF0 0000000001012A1C 0000000001000000 0000000001002DC8 000003FFFFF8FAD8 0000000030010000 !&lt;nosymbols&gt; 
000003FFFFF8FCA0 0000000001064B0C 0000000001000000 0000000001002DC8 000003FFFFF8FAD8 0000000030010000 !&lt;nosymbols&gt; 
000003FFFFF8FED0 0000000068948C50 0000000001000000 0000000001002DC8 000003FFFFF8FAD8 0000000030010000 !&lt;nosymbols&gt; 
000003FFFFF8FFC0 0000000000000000 0000000001064800 0000000001002DC8 000003FFFFF8FAD8 0000000030010000 !BaseProcessStart </code></pre>



<p class="wp-block-paragraph">Ok, so it died inside&nbsp;<code>RegisterClassA</code>, a critical Win32 API function. That API function couldn’t have been the culprit, because if it were bugged, no GUI Win32 program would run at all. This means the only possible source of the error is its sole argument – a pointer to a&nbsp;<code>WNDCLASSA</code>&nbsp;struct. Needless to say, the pointer itself was valid, otherwise the API would’ve detected the invalid argument, or the segfault would’ve happened a lot sooner.</p>



<p class="wp-block-paragraph">From the stack trace, the return address of&nbsp;<code>RegisterClassA</code>&nbsp;was&nbsp;<code>0x100F914</code>, inside the function&nbsp;<code>splash_screen</code>. A quick disassembly of the instructions preceding that address shows a&nbsp;<code>WNDCLASSA</code>&nbsp;structure being built with the following layout:</p>



<pre class="wp-block-code"><code>00000000 u32 style         = 0
00000004 u64 lpfnWndProc   = splash_message_handler (0x100FE40)
0000000C u32 cbClsExtra    = 0
00000010 u32 cbWndExtra    = 8
00000014 u64 hInstance     = *0x106AE30
0000001C u64 hIcon         = NULL
00000024 u64 hCursor       = LoadCursorA(NULL, IDC_ARROW)
0000002C u64 hbrBackground = NULL
00000034 u64 lpszMenuName  = "" (0x1002710)
0000003C u64 lpszClassName = "3DPB_SPLASH_CLASS" (0x1002930)</code></pre>



<p class="wp-block-paragraph">Right off the bat, I noticed something wrong – the field alignment. It is a general requirement that fields be aligned to their size, as in 8-bit fields should be byte-aligned, 16-bit fields should be 16-bit (2-byte) aligned, 32-bit fields should be 32-bit (4-byte) aligned, and 64-bit fields should be 64-bit (8-byte) aligned. If you look at the offsets of the fields above, the 32-bit ones are indeed 4-byte aligned, but the 64-bit ones are not. At the start, we have a 32-bit&nbsp;<code>style</code>&nbsp;field followed by a 64-bit&nbsp;<code>lpfnWndProc</code>, and to satisfy the alignment requirements, a 4-byte padding should be inserted between&nbsp;<code>style</code>&nbsp;and&nbsp;<code>lpfnWndProc</code>&nbsp;to ensure that&nbsp;<code>lpfnWndProc</code>&nbsp;starts on an 8-byte boundary.&nbsp;<code>RegisterClassA</code>&nbsp;was expecting this padding, but Pinball lacked it, so it read data from the wrong offset and crashed.</p>



<p class="wp-block-paragraph">To fix this, I simply bumped the offset of each field after&nbsp;<code>style</code>&nbsp;up by 4 bytes.</p>



<pre class="wp-block-code"><code> 00000000 u32 style         = 0
-00000004 u64 lpfnWndProc   = splash_message_handler (0x100FE40)
+00000008 u64 lpfnWndProc   = splash_message_handler (0x100FE40)
-0000000C u32 cbClsExtra    = 0
+00000010 u32 cbClsExtra    = 0
-00000010 u32 cbWndExtra    = 8
+00000014 u32 cbWndExtra    = 8
-00000014 u64 hInstance     = *0x106AE30
+00000018 u64 hInstance     = *0x106AE30
-0000001C u64 hIcon         = NULL
+00000020 u64 hIcon         = NULL
-00000024 u64 hCursor       = LoadCursorA(NULL, IDC_ARROW)
+00000028 u64 hCursor       = LoadCursorA(NULL, IDC_ARROW)
-0000002C u64 hbrBackground = NULL
+00000030 u64 hbrBackground = NULL
-00000034 u64 lpszMenuName  = "" (0x1002710)
+00000038 u64 lpszMenuName  = "" (0x1002710)
-0000003C u64 lpszClassName = "3DPB_SPLASH_CLASS" (0x1002930)
+00000040 u64 lpszClassName = "3DPB_SPLASH_CLASS" (0x1002930)</code></pre>



<p class="wp-block-paragraph">But that was not sufficient – Pinball calls&nbsp;<code>RegisterClassA</code>&nbsp;in 4 different places –&nbsp;<code>Sound_Init</code>,&nbsp;<code>splash_screen</code>,&nbsp;<code>WinMain</code>&nbsp;and&nbsp;<code>WaveMixStartup</code>. I’d already patched the one in&nbsp;<code>splash_screen</code>, so I started going through the rest one by one.</p>



<p class="wp-block-paragraph">The ones in&nbsp;<code>Sound_Init</code>&nbsp;and&nbsp;<code>WinMain</code>&nbsp;were identical to the one in&nbsp;<code>splash_screen</code>, but for some strange reason the one in&nbsp;<code>WaveMixStartup</code>&nbsp;already had the correct alignment:</p>



<pre class="wp-block-code"><code>00000000 u32 style         = 0
00000004 u32 &lt;unused&gt;      = &lt;undefined&gt;
00000008 u64 lpfnWndProc   = WndProc (0x105CFA0)
00000010 u32 cbClsExtra    = 0
00000014 u32 cbWndExtra    = 0
00000018 u64 hInstance     = *0x106B818
00000020 u64 hIcon         = NULL
00000028 u64 hCursor       = LoadCursorA(NULL, IDC_ARROW)
00000030 u64 hbrBackground = GetStockObject(LTGRAY_BRUSH)
00000038 u64 lpszMenuName  = NULL
00000040 u64 lpszClassName = "WavMix32" (0x10050B0)</code></pre>



<p class="wp-block-paragraph">I can’t think of why the same struct would be aligned differently within the same binary, unless they came from different objects compiled with different flags or something.</p>



<p class="wp-block-paragraph">Anyway, with the&nbsp;<code>WNDCLASSA</code>&nbsp;struct alignment fixed in 3 of the 4 places, I ran Pinball again. This time it created the fullscreen window and attempted to draw the splash screen before dying of another segfault:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-4.png"><img loading="lazy" decoding="async" width="1024" height="740" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-4.png" alt="" class="wp-image-15792" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-4.png 1024w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-4-300x217.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-4-768x555.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-4-415x300.png 415w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p class="wp-block-paragraph">Crash log shows that the segfault happened deep in the Win32 audio system, while calling&nbsp;<code>auxSetVolume</code>:</p>



<pre class="wp-block-code"><code>*----&gt; Stack Back Trace &lt;----*

FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
000003FFFFF8E9C0 0000000050306E84 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8E9E0 00000000503034B8 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8EA10 0000000050304B60 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8EA90 0000000050305B8C 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8EB20 000000000001AF78 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8EB60 0000000000025AFC 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !auxSetVolume 
000003FFFFF8EBD0 0000000000025F98 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !mixerSetControlDetails 
000003FFFFF8EC80 0000000000027214 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !mixerSetControlDetails 
000003FFFFF8ED30 0000000000030644 00000000FFE5D420 0000000000000000 000003FFFFE5D420 0000000000000000 !mciSendCommandW 
&#91;...]
000003FFFFF8FC60 0000000001012AB4 0000000000000000 000003FFFFE5DE00 000003FFFFE5D420 0000000000000000 !CreateWindowExA 
000003FFFFF8FCA0 0000000001064B0C 0000000000000000 000003FFFFE5DE00 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8FED0 0000000068948C50 0000000000000000 000003FFFFE5DE00 000003FFFFE5D420 0000000000000000 !&lt;nosymbols&gt; 
000003FFFFF8FFC0 0000000000000000 0000000001064800 000003FFFFE5DE00 000003FFFFE5D420 0000000000000000 !BaseProcessStart</code></pre>



<p class="wp-block-paragraph">The fault happened while trying to dereference a pointer in the register&nbsp;<code>a0</code>&nbsp;(<code>r16</code>):</p>



<pre class="wp-block-code"><code>function: &lt;nosymbols&gt;
        00000000'50305658: 00000000 halt
        00000000'5030565c: 00000000 halt
        00000000'50305660: 23deffe0 lda sp,-20(sp)
        00000000'50305664: b53e0000 stq s0,0(sp)
        00000000'50305668: b55e0008 stq s1,8(sp)
        00000000'5030566c: b57e0010 stq s2,10(sp)
        00000000'50305670: b75e0018 stq ra,18(sp)
        00000000'50305674: 47f00409 bis zero,a0,s0
        00000000'50305678: 47f1040a bis zero,a1,s1
        00000000'5030567c: 47ff040b bis zero,zero,s2
<strong>FAULT -&gt;00000000'50305680: a2100128 ldl a0,128(a0)</strong>
        00000000'50305684: 20500001 lda t1,1(a0)
        00000000'50305688: e440001b beq t1,00000000'503056f8 00000000'503056f8
        00000000'5030568c: d35ff6f8 bsr ra,00000000'50303270 00000000'50303270
        00000000'50305690: e4000019 beq v0,00000000'503056f8 00000000'503056f8
        00000000'50305694: 47e00411 bis zero,v0,a1
        00000000'50305698: 454b0801 xor s1,s2,t0
        00000000'5030569c: e4200005 beq t0,00000000'503056b4 00000000'503056b4
        00000000'503056a0: a2090128 ldl a0,128(s0)
        00000000'503056a4: d35ff722 bsr ra,00000000'50303330 00000000'50303330
        00000000'503056a8: 4160300b addl s2,#1,s2
        00000000'503056ac: 47e00411 bis zero,v0,a1</code></pre>



<p class="wp-block-paragraph">The register dump shows the value of&nbsp;<code>a0</code>&nbsp;at the time of the crash:</p>



<pre class="wp-block-code"><code>State Dump for Thread Id 0x150

  v0=000003ff ffe5de00   t0=00000000 00000000   t1=00000000 00000058
  t2=00000000 50306150   t3=00000000 0000015e   t4=00000000 00000001
  t5=00000000 00000001   t6=00000000 50300000   t7=00000000 00ed39fb
  s0=00000000 ffe5d420   s1=00000000 00000000   s2=00000000 00000000
  s3=00000000 00000000   s4=00000000 00000001   s5=00000000 50305a10
  fp=00000000 000123b8   <strong>a0=00000000 ffe5d420</strong>   a1=00000000 00000000
  a2=000003ff ffe5d420   a3=00000000 00000000   a4=00000000 00000000
  a5=00000000 cc5a4dbc   t8=00000001 00000000   t9=00000000 00000612
 t10=d1b71758 e219652c  t11=00000000 00000612   ra=00000000 50306e88
 t12=00000000 00000000   at=00000000 00010000   gp=00000000 00000000
  sp=000003ff fff8e9c0 zero=00000000 00000000 fpcr=89000000 00000000
SoftFpcr=00000000 00000000  fir=50305680
 psr=00000003
mode=1 ie=1 irql=0 </code></pre>



<p class="wp-block-paragraph">Indeed, it was an invalid pointer! As you can see, it’s identical to the pointer in&nbsp;<code>a2</code>, but with the entire top 32 bits zeroed. It must’ve been truncated by a bug somewhere, either in the audio subsystem or in Pinball itself.</p>



<p class="wp-block-paragraph">I spent some time and pinned down the DLL responsible for the fault –&nbsp;<code>mciseq.dll</code>, and did some tracing. The truncation of&nbsp;<code>a0</code>&nbsp;happened when&nbsp;<code>a2</code>&nbsp;was moved into&nbsp;<code>a0</code>:</p>



<pre class="wp-block-code"><code>50306150    ZAPNOT  a2,#15,a0</code></pre>



<p class="wp-block-paragraph"><code>ZAPNOT</code>&nbsp;is an interesting instruction – it takes a source register, a bitmask and a destination register, and it “zaps” (zeros) the bytes whose corresponding bit in the bitmask is 0. In this case, the bitmask is&nbsp;<code>15</code>, which is&nbsp;<code>00001111</code>&nbsp;in binary. From this we can work out that the&nbsp;<code>ZAPNOT</code>&nbsp;instruction at&nbsp;<code>0x50306150</code>&nbsp;zeros the upper 4 bytes of&nbsp;<code>a2</code>, when it is copied into&nbsp;<code>a0</code>. This perfectly explains why, at the time of the fault,&nbsp;<code>a0</code>&nbsp;contained a truncated version of the pointer in&nbsp;<code>a2</code>.</p>



<p class="wp-block-paragraph">Of course,&nbsp;<code>0x50306150</code>&nbsp;was not the only place where it truncated 64-bit pointers, I found 6 truncations of the exact same type in&nbsp;<code>mciseq.dll</code>. I have not the slightest clue why it decided to truncate pointers. If I had to guess, maybe they had pointer → integer → pointer casts for whatever reason, and that integer type was 32-bit. With all 6 truncations patched out, we have some Pinball for ourselves:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-5.png"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-5.png" alt="" class="wp-image-15793" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-5.png 1024w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-5-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-5-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-5-400x300.png 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p class="wp-block-paragraph">Here’s proof that Pinball is indeed running on a 64-bit build of Alpha NT:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-6.png"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-6.png" alt="" class="wp-image-15794" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-6.png 1024w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-6-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-6-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-6-400x300.png 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p class="wp-block-paragraph">To make Pinball work on your NT build 2210 install, replace&nbsp;<code>%ProgramFiles%\Windows NT\Pinball\pinball.exe</code>&nbsp;and&nbsp;<code>%windir%\system32\mciseq.dll</code>&nbsp;with the following:</p>



<ul class="wp-block-list">
<li>Patched&nbsp;<code><a href="https://thebrokenpipe.com/uploads/pinball_fix/pinball.exe">pinball.exe</a></code></li>



<li>Patched&nbsp;<code><a href="https://thebrokenpipe.com/uploads/pinball_fix/mciseq.dll">mciseq.dll</a></code></li>
</ul>



<p class="wp-block-paragraph">You could also patch the installation files and burn them to a new CD if you want Pinball to work out of the box on fresh installs – simply copy these files to the&nbsp;<code>AXP64</code>&nbsp;directory of the install disc:</p>



<ul class="wp-block-list">
<li>Patched&nbsp;<code><a href="https://thebrokenpipe.com/uploads/pinball_fix/PINBALL.EX_">PINBALL.EX_</a></code></li>



<li>Patched&nbsp;<code><a href="https://thebrokenpipe.com/uploads/pinball_fix/MCISEQ.DL_">MCISEQ.DL_</a></code></li>
</ul>



<h2 class="wp-block-heading">The Bug</h2>



<p class="wp-block-paragraph">Now I’m going to disappoint you with the fact that I did not find the collision detector bug Raymond talked about. With the struct alignment and pointer truncation issues patched, the game now works flawlessly. Ok, I’m not sure if it’s actually flawless, but I never saw any glitches in the few games I played. At the very least, the ball does not fall through the plunger, can be launched and bounces around the table just fine.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/06/image-7.png"><img loading="lazy" decoding="async" width="648" height="490" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-7.png" alt="" class="wp-image-15795" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-7.png 648w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-7-300x227.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-7-397x300.png 397w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></figure>
</div>


<p class="wp-block-paragraph">Below are the 2 reasons I could think of for not seeing the collision detector bug:</p>



<ul class="wp-block-list">
<li>The bug was introduced after build 2210. Build 2210 has Pinball installed by default and predates Windows XP by almost a year and a half, so it almost certainly predates Raymond removing it. In this build, Pinball doesn’t even run by default, so there’s no way they could’ve tested it and seen the bug. They probably only started testing Pinball later, after they fixed the struct alignment and pointer truncation issues.</li>



<li>The bug only manifests in free/release builds, not in checked/debug builds. Maybe it only shows up when the code is compiled with the more aggressive optimisation used by release builds – something that happens quite often when code has undefined behaviour or the compiler has bugs. This is less plausible, however, as I’m sure Raymond would’ve used debug builds when he attempted to debug it, and discovered any differences between debug and retail builds.</li>
</ul>



<p class="wp-block-paragraph">Of course, only Raymond himself could shed more light on this topic. It was fun (<em>read</em>: painful) debugging Pinball, as well as the NT kernel to fix the emulators – too much fun (<em>read</em>: pain) that I will never do it again.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Some trivia about me and pinball:</p>



<p class="wp-block-paragraph">I spent a fair chunk of my kindergarten and pre-school days playing the various games my dad installed on our Windows XP home computer, however, there was one game that I never quite figured out how to play – Pinball. It came bundled with the OS, and the splash screen scared me every time I tried to open it up.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="424" height="282" src="https://virtuallyfun.com/wp-content/uploads/2026/06/image-8.png" alt="" class="wp-image-15796" srcset="https://virtuallyfun.com/wp-content/uploads/2026/06/image-8.png 424w, https://virtuallyfun.com/wp-content/uploads/2026/06/image-8-300x200.png 300w" sizes="auto, (max-width: 424px) 100vw, 424px" /></figure>
</div>


<p class="wp-block-paragraph">The flipper looked like a pistol to my 3-year-old self, and the overall darkness of the splash screen just injected fear into me. I would open the game, close my eyes, count to 20, then open my eyes again, to skip past the splash screen.</p>



<p class="wp-block-paragraph">The first time I actually played a full game of pinball was on the first day of this year, when a friend of mine took me to an arcade. After playing pinball in real life, the Pinball game finally started to make sense.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2026/06/02/pinball-on-64-bit-alpha-axp-windows-nt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A quick lookback at Virtual PC for Windows</title>
		<link>https://virtuallyfun.com/2025/08/23/a-quick-lookback-at-virtual-pc-for-windows/</link>
					<comments>https://virtuallyfun.com/2025/08/23/a-quick-lookback-at-virtual-pc-for-windows/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sat, 23 Aug 2025 22:31:24 +0000</pubDate>
				<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Virtual PC]]></category>
		<category><![CDATA[virtual server]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15340</guid>

					<description><![CDATA[AKA Yes, of course you can run DooM! While it&#8217;s been &#8230; quite some time, I used to use an early beta of VMware 1.0 back in the day early 00&#8217;s I believe for Linux, where I could run Lotus &#8230; <a href="https://virtuallyfun.com/2025/08/23/a-quick-lookback-at-virtual-pc-for-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">AKA Yes, of course you can run DooM!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="498" height="342" src="https://virtuallyfun.com/wp-content/uploads/2025/08/vpc4-499x342-1.gif" alt="" class="wp-image-15341"/><figcaption class="wp-element-caption">DooM v1.1 at 16 colours</figcaption></figure>



<p class="wp-block-paragraph">While it&#8217;s been &#8230; quite some time, I used to use an early beta of VMware 1.0 back in the day early 00&#8217;s I believe for Linux, where I could run Lotus notes and some other apps that just of course were not available for Linux.  And it was neat but a bit pricey.  And as I&#8217;d tout the benefits of having desktop virtual computers, getting rid of the need of having a stack of random junk PCs from your desk.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="791" height="971" src="https://virtuallyfun.com/wp-content/uploads/2025/08/Virtual-PC-for-Windows-front.jpg" alt="" class="wp-image-15351" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/Virtual-PC-for-Windows-front.jpg 791w, https://virtuallyfun.com/wp-content/uploads/2025/08/Virtual-PC-for-Windows-front-244x300.jpg 244w, https://virtuallyfun.com/wp-content/uploads/2025/08/Virtual-PC-for-Windows-front-768x943.jpg 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /><figcaption class="wp-element-caption">The retail box of Virtual PC for Windows</figcaption></figure>



<p class="wp-block-paragraph">Connectix was trying new things, and yeah, the Mac was a dying platform, and bringing their tech to the PC was a winning move that would have lasting ramifications for the industry for decades.  Well that and getting bought out by Microsoft.</p>



<p class="wp-block-paragraph">Virtual PC for the PC, was another great, but short-lived solution for those few of us that got the &#8216;pc virtualization&#8217; bug early on, before the tidal wave of bare metal hypervisors, and the serious business it&#8217;d create.</p>



<p class="wp-block-paragraph">For me, it was the ability to use server class hardware with multiple PSU&#8217;s lots of RAM, redundant disks as firewalls that I could easily setup with multiple network cards, and instances allowing full isolation, and hide the mess of wires with something that looked pretty elegant.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="997" height="747" src="https://virtuallyfun.com/wp-content/uploads/2025/08/image.png" alt="" class="wp-image-15342" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/image.png 997w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-768x575.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-400x300.png 400w" sizes="auto, (max-width: 997px) 100vw, 997px" /><figcaption class="wp-element-caption">Booting PC-DOS 7.01</figcaption></figure>



<p class="wp-block-paragraph">I&#8217;d recently come across a copy of <a href="https://archive.org/details/connectix-virtual-pc-4.0-for-windows" target="_blank" rel="noreferrer noopener">Virtual PC 4.0 for Windows</a>, the system requirements are pretty log, Windows ME (98 is reported to work), NT 4.0 &amp; Windows 2000.  As a bonus it includes PC DOS 7.01.  Just like the Mac minimal versions.</p>



<p class="wp-block-paragraph">Running VPC on NT under Qemu is dooable, even under OS X, although you&#8217;ll want sound, of course which is a bit tricky now.</p>



<pre class="wp-block-code"><code>
qemu-system-i386 -m 256 -cpu pentium -hda nt4wks.vmdk -net nic,model=pcnet -net user -cdrom nt4allinone.iso -device sb16,audiodev=snd,iobase=0x220,irq=7,dma=1 -device adlib,audiodev=snd -audiodev coreaudio,id=snd -parallel none -serial none -drive file=fat:rw:/tmp/vbemp</code></pre>



<p class="wp-block-paragraph">Although this is a bit involved, I have issues with the later QEMU&#8217;s sound blaster emulation and found it best to specify IRQ 7, which means removing the parallel port (who prints anyways?!).  I also used the <a href="https://bearwindows.zcm.com.au/vbempj.zip" target="_blank" rel="noreferrer noopener">vbempj</a> driver for that full colour experence.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="805" height="630" src="https://virtuallyfun.com/wp-content/uploads/2025/08/Screenshot-2025-08-24-at-2.45.47-PM.png" alt="" class="wp-image-15359" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/Screenshot-2025-08-24-at-2.45.47-PM.png 805w, https://virtuallyfun.com/wp-content/uploads/2025/08/Screenshot-2025-08-24-at-2.45.47-PM-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/Screenshot-2025-08-24-at-2.45.47-PM-768x601.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/08/Screenshot-2025-08-24-at-2.45.47-PM-383x300.png 383w" sizes="auto, (max-width: 805px) 100vw, 805px" /><figcaption class="wp-element-caption">Return to Zork</figcaption></figure>



<p class="wp-block-paragraph">Although games like Links386, Return to Zork, DooM should have had retail Windows versions IMHO, but I know that getting 32bit games up and running on Windows 3.1 had so many dependancies and hardware requirements that made it quite the ordeal (<a href="https://virtuallyfun.com/2011/03/29/windoom-wing-win32s-on-windows-3-1-on-qemu/" target="_blank" rel="noreferrer noopener">as mentioned when running DooM on Windows 3.1</a>)</p>



<p class="wp-block-paragraph">For a long while your options for playing &#8216;old&#8217; circa mid 90&#8217;s MS-DOS games was going all in on NT4/2000/XP with a fast machine and VirtualPC (there was a time when DOSBox wasn&#8217;t a thing) or the NTVDM emulated sound blaster driver.  At least XP 32bit had one built in (and hidden sadly).  But as machines pulled away from ISA and got faster, dual booting to MS-DOS for games with sound became a thing of the past, very quickly.</p>



<p class="wp-block-paragraph">As shown above, of course I had to run DooM. even on the glorious 16 colour display, but yeah. And yeah it&#8217;s great!</p>



<p class="wp-block-paragraph">I should add, that also for a long while this was my preferred way to play DOS games like DooM, or a multitude of things, also like running OS/2, this was my go-to way to get things done.  You can check in the history that I was also a super big fan of Virtual PC 2004 on XP.  It&#8217;s kind of crazy that Virtual PC for Windows is some 24 years ago now!</p>



<p class="wp-block-paragraph">I had to limit the CPU to pentium level for the installation, then Virtual PC requires a Pentium II or higher.  But luckily that&#8217;s a simple switch for Qemu.</p>



<p class="wp-block-paragraph">So, while on this path, I thought it&#8217;d be fun to try the next evolution, Virtual Server 2005 on Windows Server 2003.  Because I love old stuff, I ran Qemu 0.15.1 because yeah it&#8217;s so ancient. bonus!</p>



<pre class="wp-block-code"><code>qemu.exe -L pc-bios -m 512 -cpu pentium3 -net nic,model=pcnet -net user -hda 2003.vmdk -redir tcp:1024::1024</code></pre>



<p class="wp-block-paragraph">The good news is that Windows Server installed okay, and so did Virtual Server.  However running was a different story:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="752" height="187" src="https://virtuallyfun.com/wp-content/uploads/2025/08/image-1.png" alt="" class="wp-image-15343" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/image-1.png 752w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-1-300x75.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-1-500x124.png 500w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>



<p class="wp-block-paragraph">Changing the CPU flag to any combination got the same result that a Pentium II or greater is required.  Bummer.</p>



<p class="wp-block-paragraph">I have a copy of VMWare Workstation handy, and thought I could just mount the VMDK, and good to go. No. Nooooo.  Or at least I failed.  Use the install template for 2003, and just deal with it. I know. dissapoint.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="485" src="https://virtuallyfun.com/wp-content/uploads/2025/08/image-2-1024x485.png" alt="" class="wp-image-15344" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/image-2-1024x485.png 1024w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-2-300x142.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-2-768x364.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-2-1536x728.png 1536w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-2-500x237.png 500w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-2.png 1700w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">However, the best part is that it runs fine on VMware.  Although it is SLOW. so slow.  I updated the VM to 4 core, single processor, 512Mb of ram, and installed Service Pack 1 for the 2003 server.  It helped a bit too!</p>



<p class="wp-block-paragraph">The big fun of Virtual Server is of course being able to manage it remotely, although the remote console is an ActiveX control, so you need to enable IE mode on Edge.  It&#8217;s under settings and &#8216;compatibility&#8217; , turn on the 11 mode, and add the admin site and blamo good to go!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="505" src="https://virtuallyfun.com/wp-content/uploads/2025/08/image-3-1024x505.png" alt="" class="wp-image-15345" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/image-3-1024x505.png 1024w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-3-300x148.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-3-768x379.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-3-500x247.png 500w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-3.png 1107w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">And yeah!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="997" height="782" src="https://virtuallyfun.com/wp-content/uploads/2025/08/image-4.png" alt="" class="wp-image-15346" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/image-4.png 997w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-4-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-4-768x602.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/08/image-4-382x300.png 382w" sizes="auto, (max-width: 997px) 100vw, 997px" /></figure>



<p class="wp-block-paragraph">You can kinda use the server remotely from a modern machine.  Many menu options don&#8217;t render correctly, and I had to copy/paste some of the URL&#8217;s directly.  I think I had this issue with FireFox 20 years ago, although I don&#8217;t feel like digging that far deep.  It may have been chrome too, but does it matter?  I need that ActiveX hook.</p>



<p class="wp-block-paragraph">With the control loaded, and DooM set to low resolution and drop the render window and..</p>



<figure class="wp-block-video"><video height="488" style="aspect-ratio: 674 / 488;" width="674" controls src="https://virtuallyfun.com/wp-content/uploads/2025/08/remote-console.mp4"></video></figure>



<p class="wp-block-paragraph">Well yeah, it&#8217;s almost okay.</p>



<p class="wp-block-paragraph">I&#8217;ll have to dig out a P4 and try it native, as emulation in emulation is of course a finicky thing.  But I&#8217;m all too happy to run this on my laptop without getting my hands dirty dealing with old hardware.</p>



<p class="wp-block-paragraph">Kind of what got me into this in the first place, running it all, virtually.</p>



<p class="wp-block-paragraph">&#8216;Till next time!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2025/08/23/a-quick-lookback-at-virtual-pc-for-windows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://virtuallyfun.com/wp-content/uploads/2025/08/remote-console.mp4" length="4991268" type="video/mp4" />

			</item>
		<item>
		<title>Microsoft Word 6.0 for PowerPC NT</title>
		<link>https://virtuallyfun.com/2025/08/15/microsoft-word-6-0-for-powerpc-nt/</link>
					<comments>https://virtuallyfun.com/2025/08/15/microsoft-word-6-0-for-powerpc-nt/#comments</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Fri, 15 Aug 2025 07:24:31 +0000</pubDate>
				<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[i386]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[microsoft word]]></category>
		<category><![CDATA[MIPS]]></category>
		<category><![CDATA[powerpc]]></category>
		<category><![CDATA[Windows NT 3.51]]></category>
		<category><![CDATA[Windows NT 4.0]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15331</guid>

					<description><![CDATA[(This is a guest post by Antoni Sawicki aka Tenox) It appears that up until just now we did not have archived copy of MS Word 6.0 for PPC. There were copies floating for Alpha and MIPS, for example https://archive.org/details/ms-word60-nt. &#8230; <a href="https://virtuallyfun.com/2025/08/15/microsoft-word-6-0-for-powerpc-nt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>(This is a guest post by Antoni Sawicki aka Tenox)</em></p>



<p class="wp-block-paragraph">It appears that up until just now we did not have archived copy of MS Word 6.0 for PPC. There were copies floating for Alpha and MIPS, for example <a href="https://archive.org/details/ms-word60-nt">https://archive.org/details/ms-word60-nt</a>. However PPC version was nowhere to be found&#8230;</p>



<p class="wp-block-paragraph">Until Term24 pointed me to this eBay auction:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="987" height="1017" src="https://virtuallyfun.com/wp-content/uploads/2025/08/office.png" alt="" class="wp-image-15332" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/office.png 987w, https://virtuallyfun.com/wp-content/uploads/2025/08/office-291x300.png 291w, https://virtuallyfun.com/wp-content/uploads/2025/08/office-768x791.png 768w" sizes="auto, (max-width: 987px) 100vw, 987px" /></figure>



<p class="wp-block-paragraph"> Since it clearly said PowerPC on the box I got it&#8230; and here it is:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="819" src="https://virtuallyfun.com/wp-content/uploads/2025/08/ntword1-1024x819.png" alt="" class="wp-image-15333" srcset="https://virtuallyfun.com/wp-content/uploads/2025/08/ntword1-1024x819.png 1024w, https://virtuallyfun.com/wp-content/uploads/2025/08/ntword1-300x240.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/08/ntword1-768x614.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/08/ntword1-375x300.png 375w, https://virtuallyfun.com/wp-content/uploads/2025/08/ntword1.png 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">MS Word 6.0 on Windows NT 4.0 PowerPC / PPC</figcaption></figure>



<p class="wp-block-paragraph">Now thanks to Rairii you can enjoy it on a <a href="https://github.com/Wack0/maciNTosh">PowerMac</a> or <a href="https://github.com/Wack0/entii-for-workcubes">WII</a>!</p>



<p class="wp-block-paragraph">Download <a href="http://tenox.pdp-11.ru/os/winnt/Apps/multicpu/ntword60.iso.lz">ISO</a> or <a href="http://tenox.pdp-11.ru/os/winnt/Apps/multicpu/ntword60.rar">RAR</a></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2025/08/15/microsoft-word-6-0-for-powerpc-nt/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Expanding Windows drives</title>
		<link>https://virtuallyfun.com/2025/01/29/expanding-windows-drives/</link>
					<comments>https://virtuallyfun.com/2025/01/29/expanding-windows-drives/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 29 Jan 2025 22:16:35 +0000</pubDate>
				<category><![CDATA[disk images]]></category>
		<category><![CDATA[hard disks]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14901</guid>

					<description><![CDATA[Granted this isn&#8217;t fun. But it&#8217;s virtual. We live in an era of exciting expandable disks! first off start with a full disk. That&#8217;s great. In this case the host was proxmox. It doesn&#8217;t matter. You apparently have to shut &#8230; <a href="https://virtuallyfun.com/2025/01/29/expanding-windows-drives/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Granted this isn&#8217;t fun.  But it&#8217;s virtual.  We live in an era of exciting expandable disks!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="160" src="https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475.jpg" alt="" class="wp-image-14900" srcset="https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475.jpg 800w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475-300x60.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475-768x154.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475-500x100.jpg 500w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">first off start with a full disk.  That&#8217;s great.  In this case the host was proxmox.  It doesn&#8217;t matter.  You apparently have to shut down the VM to expand the disk.  Other virtualizers don&#8217;t need that.  But whatever.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="127" src="https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595381606.jpg" alt="" class="wp-image-14899" srcset="https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595381606.jpg 800w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595381606-300x48.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595381606-768x122.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595381606-500x79.jpg 500w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">now for the predictable fun.  That recovery partition is in the way.  Not sure why NTFS needs to be contiguous but here we are.</p>



<p class="wp-block-paragraph">So now we are stuck.  You Google how to expand NTFS drive, how to move recovery partition, how to make disk bigger!!  All in vain as everyone is pushing these nifty partition mover programs that don&#8217;t run on server.  Do you just nuke the partition and hope for the best?</p>



<p class="wp-block-paragraph">No, we can back it up, delete it, expand our disk and recreate it!</p>



<p class="wp-block-paragraph">Capture the partition</p>



<pre class="wp-block-code"><code>Dism /Capture-Image /ImageFile:C:\my-system-partition.wim /CaptureDir:S:\ /Name:"My system partition"</code></pre>



<pre class="wp-block-code"><code>Microsoft DiskPart version 10.0.19041.3636

Copyright (C) Microsoft Corporation.
On computer: KOMPUTER

DISKPART&gt; list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          250 GB   200 GB

DISKPART&gt; select disk 0

Disk 0 is now the selected disk.

DISKPART&gt; list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary             50 MB  1024 KB
  Partition 2    Primary             49 GB    51 MB
  Partition 3    Recovery           522 MB    49 GB

DISKPART&gt; select partition 3

Partition 3 is now the selected partition.

DISKPART&gt; delete partition OVERRIDE

DiskPart successfully deleted the selected partition.</code></pre>



<p class="wp-block-paragraph">restore the partition</p>



<pre class="wp-block-code"><code>dism /Apply-Image /ImageFile:c:\my-system-partition.wim /Index:1 /ApplyDir:w:\</code></pre>



<p class="wp-block-paragraph">Then tag the partition back to being a Recovery partition.</p>



<pre class="wp-block-code"><code>DISKPART&gt; list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary             50 MB  1024 KB
  Partition 2    Primary            249 GB    51 MB
  Partition 3    Primary            600 MB   249 GB

DISKPART&gt; select partition 3

Partition 3 is now the selected partition.

DISKPART&gt; set id=27

DiskPart successfully set the partition ID.

DISKPART&gt; list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary             50 MB  1024 KB
  Partition 2    Primary            249 GB    51 MB
* Partition 3    Recovery           600 MB   249 GB

DISKPART&gt;</code></pre>



<p class="wp-block-paragraph">depending on the version the command may fail setting type 27, so try:</p>



<pre class="wp-block-code"><code>set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" </code></pre>



<p class="wp-block-paragraph">and there we go!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="160" src="https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475.jpg" alt="" class="wp-image-14900" srcset="https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475.jpg 800w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475-300x60.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475-768x154.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/09/tmp_1726595287475-500x100.jpg 500w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">One big happy drive! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2025/01/29/expanding-windows-drives/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Merry Christmas 2024!</title>
		<link>https://virtuallyfun.com/2024/12/26/merry-christmas-2024/</link>
					<comments>https://virtuallyfun.com/2024/12/26/merry-christmas-2024/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 26 Dec 2024 00:42:56 +0000</pubDate>
				<category><![CDATA[Christmas]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[random updates]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Windows 2019]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15072</guid>

					<description><![CDATA[While doom scrolling on eBay I always seem to stop and look at the upgrade version of Windows 3.1. It has to be the most clearly marked &#8220;why bother upgrading&#8221; version of Windows, and at the same time the ugliest. &#8230; <a href="https://virtuallyfun.com/2024/12/26/merry-christmas-2024/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">While doom scrolling on eBay I always seem to stop and look at the upgrade version of Windows 3.1. It has to be the most clearly marked &#8220;why bother upgrading&#8221; version of Windows, and at the same time the ugliest. Fitting for the season&#8217;s ugly sweater theme!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/12/Windows-3.1-upgrade.webp"><img loading="lazy" decoding="async" width="720" height="960" src="https://virtuallyfun.com/wp-content/uploads/2024/12/Windows-3.1-upgrade.webp" alt="" class="wp-image-15070" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/Windows-3.1-upgrade.webp 720w, https://virtuallyfun.com/wp-content/uploads/2024/12/Windows-3.1-upgrade-225x300.webp 225w" sizes="auto, (max-width: 720px) 100vw, 720px" /></a><figcaption class="wp-element-caption">The ugliest Windows ever</figcaption></figure>



<p class="wp-block-paragraph">It&#8217;s amazing how terrible this thing has always looked to me.  As far as &#8216;proof&#8217; I remember being able to fake it out by doing a &#8216;copy con win.com ^Z&#8217; type thing to create a fake windows directory with win.com &amp; kernel286.exe &#8230; I think.  But back when this was a <strong>NEW!</strong> product, I had to install Windows 3.0 anyways to get the CGA driver.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="496" src="https://virtuallyfun.com/wp-content/uploads/2024/12/windows-3.1-in-CGA.png" alt="" class="wp-image-15077" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/windows-3.1-in-CGA.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/12/windows-3.1-in-CGA-300x186.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/12/windows-3.1-in-CGA-768x475.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/12/windows-3.1-in-CGA-485x300.png 485w" sizes="auto, (max-width: 802px) 100vw, 802px" /><figcaption class="wp-element-caption">Windows 3.1 in CGA</figcaption></figure>



<p class="wp-block-paragraph">I don&#8217;t know how I used Windows with CGA either.</p>



<p class="wp-block-paragraph">Speaking of impossible, back in the dark ages of Windows/286 2.1 this thing snuck out:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/12/Italian-Windows-286.png"><img loading="lazy" decoding="async" width="820" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2024/12/Italian-Windows-286.png" alt="" class="wp-image-15069" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/Italian-Windows-286.png 820w, https://virtuallyfun.com/wp-content/uploads/2024/12/Italian-Windows-286-240x300.png 240w, https://virtuallyfun.com/wp-content/uploads/2024/12/Italian-Windows-286-768x959.png 768w" sizes="auto, (max-width: 820px) 100vw, 820px" /></a><figcaption class="wp-element-caption">Microsoft Windows/286 &#8211; Italian</figcaption></figure>



<p class="wp-block-paragraph">One day I&#8217;d love to get this Italian Windows 2.1 and frame it?  I don&#8217;t know who snuck in the <em>Buone Fest</em> onto the box art, but I&#8217;d like to think it was subversive, as I hadn&#8217;t seen anything like that on any of the other retail Operating System packaging?</p>



<p class="wp-block-paragraph">It&#8217;s been a real struggle this year from the relocation, losing just about everything that I&#8217;d tried to do, then losing my job, that brief absolute terror of being unemployed with zero callbacks trying to job hunt to now spending nearly every waking hour at work.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="236" src="https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-1024x236.jpg" alt="" class="wp-image-15073" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-1024x236.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-300x69.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-768x177.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-1536x353.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-2048x471.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241217_165548-500x115.jpg 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Alcatel &#8211; Lucent saves the day</figcaption></figure>



<p class="wp-block-paragraph">Speaking of stress, I haven&#8217;t had to build a physical network in ages, and this was news to me that all the SFP connectors are now vendor locked.  Thinking I could just buy some cheap SFP DAC cables and plug away and I was greeted with the fact that neither the Dell, nor Cisco switches would recognize them.  Oddly enough, Linux/Windows didn&#8217;t care at all.  I had ordered some RJ45 10 gig SFPs to run across the data centre, and found out as well that I&#8217;d ordered Cisco keyed generic ones, and yes of course they don&#8217;t work in the Fortigate firewalls, nor the Dell switches.  Those needed their own special ones.  Luckily for me I had been pulling out all the old SFPs from decommissioned equipment as I had figured that the single mode fiber optics may be useful if I ever need anything, and there was a couple of these Alcatel-Lucent SFP-GIG-T (1gig) modules that at least saved the day in that I could connect stuff, while waiting for the trial and error of needing 2 weeks to get the appropriate 10 gig interfaces.</p>



<p class="wp-block-paragraph">Also with mentioning is that Dell switches configure in cluster groups and the 25 gig clusters have to be configured down to 10gig mode to recognize and work with 10/1gig modules.</p>



<pre class="wp-block-code"><code>port-group 1/1/5
 mode Eth 25g-4x
!
port-group 1/1/6
 mode Eth 10g-4x</code></pre>



<p class="wp-block-paragraph">For example.</p>



<p class="wp-block-paragraph">Speaking of, setting up a LACP bundle on the Dell switch was a snap! Just remember your port-groups!</p>



<pre class="wp-block-code"><code>
interface ethernet1/1/1
 description "WIN-HVN-100 port 0"
 no shutdown
 channel-group 1 mode active
 no switchport
 flowcontrol receive off</code></pre>



<p class="wp-block-paragraph">There isn&#8217;t all that much to do in the individual ethernet ports, but you get the idea.  Since I&#8217;m short on cables, I&#8217;ve only got the first two ports populated, but I&#8217;m aiming for 4&#215;25 per server!</p>



<pre class="wp-block-code"><code>interface port-channel1
 description WIN-HVN-100
 no shutdown
 switchport mode trunk
 switchport trunk allowed vlan 50,75-78,150,875,901-902</code></pre>



<p class="wp-block-paragraph">I did find that by explicitly allowing the VLANs onto the port helped a lot.  And by default, the switches do LACP so there isn&#8217;t all that much to do.</p>



<p class="wp-block-paragraph">And checking the LACP status is a snap as well:</p>



<pre class="wp-block-code"><code>hyperv-lan-core-01# show interface port-channel 1 summary
LAG     Mode      Status    Uptime              Ports
1       L2-HYBRID up        1 day 21:45:26      Eth 1/1/1 (Up)
                                                Eth 1/1/2 (Up)
                                                Eth 1/1/3 (Down)
                                                Eth 1/1/4 (Down)</code></pre>



<p class="wp-block-paragraph">Needless to say, I was happy as &#8216;it just worked&#8217;!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="503" src="https://virtuallyfun.com/wp-content/uploads/2024/12/epyc-9454-1024x503.png" alt="" class="wp-image-15074" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/epyc-9454-1024x503.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/12/epyc-9454-300x147.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/12/epyc-9454-768x377.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/12/epyc-9454-500x246.png 500w, https://virtuallyfun.com/wp-content/uploads/2024/12/epyc-9454.png 1343w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">AMD Epyc 9454 48-Core Processor</figcaption></figure>



<p class="wp-block-paragraph">Speaking of which, I deployed Hyper-V 2019 Server.  Shame VMware had to go get Broadcomm&#8217;ed as there won&#8217;t be any more free Hyper-V servers, but for now it&#8217;s fine.</p>



<p class="wp-block-paragraph">I had meant to write more on setting up Hyper-V as doing it through PowerShell is a bit daunting at first.</p>



<p class="wp-block-paragraph">First setup your load balancing network team.  In this case I&#8217;m using a 4 port 25gig card:</p>



<pre class="wp-block-preformatted">New-NetlbfoTeam -Name "Converged Network Team" -TeamMembers "Integrated NIC 1 Port 1-1","Integrated NIC 1 Port 2-1","Integrated NIC 1 Port 3-1","Integrated NIC 1 Port 4-1" -TeamingMode lacp<br></pre>



<p class="wp-block-paragraph">The port names are 100% system dependent, but you can get the idea.  And setting the LACP was surprisingly easy.</p>



<p class="wp-block-paragraph">The next step is to create a virtual switch</p>



<pre class="wp-block-preformatted">New-VMSwitch -Name "Converged Network Switch" -NetAdapterName "Converged Network Team"</pre>



<p class="wp-block-paragraph">I just load everything onto the same switch as I&#8217;m old, and trust my VLANs.  And the servers are 1u so they don&#8217;t exactly have a lot of NIC&#8217;s for splitting stuff out but as always do what works for you.</p>



<p class="wp-block-paragraph">The next step is to add the virtual network card onto my management VLAN in this case it&#8217;s 75</p>



<pre class="wp-block-preformatted">add-vmnetworkadapter -switchname "Converged Network Switch" -name Management -managementos<br>set-vmnetworkadaptervlan -managementos -vmnetworkadaptername "Management" -vlanid 75 -access</pre>



<p class="wp-block-paragraph">From there you can now use the &#8216;sconfig&#8217; and setup your management IP address, load up Windows patches, load more drivers, and manage the server using the remote RSAT tools.  Be sure to enable the remote desktop, unless you really love to type.</p>



<p class="wp-block-paragraph">I went ahead and installed these services to get my servers onto an existing Hyper-V cluster.  I&#8217;m sure some can be removed, but YMMV as always:</p>



<pre class="wp-block-preformatted">Install-WindowsFeature -Name FileAndStorage-Services<br>Install-WindowsFeature -Name File-Services<br>Install-WindowsFeature -Name FS-FileServer<br>Install-WindowsFeature -Name Storage-Services<br>Install-WindowsFeature -Name Hyper-V<br>Install-WindowsFeature -Name NET-Framework-45-Core<br>Install-WindowsFeature -Name NET-Framework-45-Features<br>Install-WindowsFeature -Name NET-WCF-Services45<br>Install-WindowsFeature -Name NET-WCF-TCP-PortSharing45<br>Install-WindowsFeature -Name Failover-Clustering<br>Install-WindowsFeature -Name Multipath-IO<br>Install-WindowsFeature -Name RSAT<br>Install-WindowsFeature -Name RSAT-Feature-Tools<br>Install-WindowsFeature -Name RSAT-Clustering<br>Install-WindowsFeature -Name RSAT-Clustering-PowerShell<br>Install-WindowsFeature -Name SNMP-Service<br>Install-WindowsFeature -Name Windows-Defender<br>Install-WindowsFeature -Name PowerShellRoot<br>Install-WindowsFeature -Name PowerShell<br>Install-WindowsFeature -Name WoW64-Support</pre>



<p class="wp-block-paragraph">Interestingly enough, on 2019 the option is there for the Linux Subsystem.  I didn&#8217;t install it, but that&#8217;d be an interesting thing to share out.</p>



<p class="wp-block-paragraph">I did have some weird issue with remoting and explicitly enabled it with a </p>



<pre class="wp-block-preformatted">Enable-PSRemoting -Force</pre>



<p class="wp-block-paragraph">It&#8217;s probably me, but it worked for me.</p>



<p class="wp-block-paragraph">Then it&#8217;s a matter of adding all the other virtual networks Hyper-V seems to love:</p>



<pre class="wp-block-preformatted">add-vmnetworkadapter -switchname "Converged Network Switch" -name Backup -managementos<br>add-vmnetworkadapter -switchname "Converged Network Switch" -name "Live Migration" -managementos<br>add-vmnetworkadapter -switchname "Converged Network Switch" -name Cluster -managementos<br>set-vmnetworkadaptervlan -managementos -vmnetworkadaptername "Backup" -vlanid 76 -access<br>set-vmnetworkadaptervlan -managementos -vmnetworkadaptername "Live Migration" -vlanid 77 -access<br>set-vmnetworkadaptervlan -managementos -vmnetworkadaptername "Cluster" -vlanid 78 -access</pre>



<p class="wp-block-paragraph">And of course, don&#8217;t forget your shared storage, in this case my servers have that 4x25gig card, and a smaller custom 2&#215;25 gig card that I used to storage A/B.  Fun times!</p>



<p class="wp-block-paragraph">From there I could use sconfig to join my machines to the domain, and then finally add them into the cluster, and start moving my workload over to the new servers, which is what I&#8217;ll be doing throughout the Christmas break.</p>



<p class="wp-block-paragraph">Speaking of work:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-scaled.jpg"><img loading="lazy" decoding="async" width="655" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-655x1024.jpg" alt="" class="wp-image-15075" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-655x1024.jpg 655w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-192x300.jpg 192w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-768x1201.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-982x1536.jpg 982w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-1310x2048.jpg 1310w, https://virtuallyfun.com/wp-content/uploads/2024/12/IMG_20241203_111241-scaled.jpg 1637w" sizes="auto, (max-width: 655px) 100vw, 655px" /></a><figcaption class="wp-element-caption">A very Christmas Vacation like tree</figcaption></figure>



<p class="wp-block-paragraph">They ordered this very Clark Griswald like Christmas tree.  They had to cut it down to get the base to fit the lobby area with it reaching into the 2nd floor.  It&#8217;d been so long since I&#8217;d seen something like this at work.  But thats me working remotely for nearly 20 years.</p>



<p class="wp-block-paragraph">Something awe inspiring about it.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/12/real-snoopy.jpg"><img loading="lazy" decoding="async" width="431" height="365" src="https://virtuallyfun.com/wp-content/uploads/2024/12/real-snoopy.jpg" alt="" class="wp-image-15076" srcset="https://virtuallyfun.com/wp-content/uploads/2024/12/real-snoopy.jpg 431w, https://virtuallyfun.com/wp-content/uploads/2024/12/real-snoopy-300x254.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/12/real-snoopy-354x300.jpg 354w" sizes="auto, (max-width: 431px) 100vw, 431px" /></a><figcaption class="wp-element-caption">real life Snoopy</figcaption></figure>
</div>


<p class="wp-block-paragraph">Which reminds me of this Snoopy I saw on twitter.  As terrible as life feels from time to time, there is a bit of hope, and fun here and there as my muse is always quick to point out when I&#8217;m feeling down.</p>



<p class="wp-block-paragraph">And sometimes it&#8217;s better to just get it out, as who knows, maybe this could be useful in the future somehow.</p>



<p class="wp-block-paragraph">Thanks for everyone&#8217;s ongoing support over on Patron and here.  It really means the world to me.</p>



<h2 class="wp-block-heading">Merry Christmas to all!</h2>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/12/26/merry-christmas-2024/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installing NetManage Chameleon on Windows 3.0!</title>
		<link>https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/</link>
					<comments>https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 03 Mar 2024 22:58:36 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[telnet]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Windows 3.0]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14076</guid>

					<description><![CDATA[After seeing the spotlight on twitter from WinWorld, on NetManage Chameleon, an old TCP/IP stack that supported Windows 3.0! With more details over on the forum. I was inspired to set it up myself. I did go a bit overboard &#8230; <a href="https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After seeing the spotlight on <a href="https://twitter.com/winworldpc/status/1762276492396892366">twitter from WinWorld</a>, on NetManage Chameleon, an old TCP/IP stack that supported Windows 3.0!  With more details <a href="https://forum.winworldpc.com/discussion/15081/software-spotlight-getting-windows-3-0-on-the-internet-netmanage-chameleon">over on the forum</a>. I was inspired to set it up myself.<a href="https://www.youtube.com/@neozeed8139"></a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Installing NetManage Chameleon on Windows 3.0!" width="584" height="438" src="https://www.youtube.com/embed/aIqdQAb4jP8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">I did go a bit overboard showing how to install MS-DOS &amp; Windows 3.0 on Qemu.  Maybe it&#8217;ll help someone who wants to try to use Qemu, but is too scared?  Maybe I moved too quickly.</p>



<p class="wp-block-paragraph">One thing I did do differently in this run, is launching the monitor and a serial port as tcp servers so I could telnet into the VM, effectively having a way to share text like a clipboard back and forth.  I&#8217;m kind of surprised I hadn&#8217;t really started using Qemu in this manner much earlier.</p>



<pre class="wp-block-code"><code>qemu.exe -L pc-bios ^
-m 16 ^
-hda apricot.vmdk ^
-net nic,model=pcnet -net user ^
-monitor telnet:127.0.0.1:4000,server,nowait ^
-serial telnet:127.0.0.1:4001,server,nowait ^
-fda yourdisk_here.vfd</code></pre>



<p class="wp-block-paragraph">Surprisingly it went surprisingly well, other than my goof of having the OS/2 driver instead of the MS-DOS driver for the nic.</p>



<p class="wp-block-paragraph">Sadly, the tn3270 program bundled with Chameleon doesn&#8217;t work properly with Hercules.</p>



<p class="wp-block-paragraph">As always I&#8217;ve uploaded it to <a href="https://archive.org/details/apricot-dos4-win3-chameleon3" target="_blank" rel="noreferrer noopener">archive.org: apricot-dos4-win3-chameleon3.7z</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>BSD on Windows: Things I wish I knew existed</title>
		<link>https://virtuallyfun.com/2023/12/08/bsd-on-windows-things-i-wish-i-knew-existed/</link>
					<comments>https://virtuallyfun.com/2023/12/08/bsd-on-windows-things-i-wish-i-knew-existed/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 08 Dec 2023 23:49:52 +0000</pubDate>
				<category><![CDATA[80386]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[i386]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Win16]]></category>
		<category><![CDATA[Windows 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13531</guid>

					<description><![CDATA[It&#8217;s 1995 and I&#8217;ve been nearly two years in the professional workspace. OS/2 is the dominant workstation product, Netware servers rule the world, and the year of the Linux desktop is going to happen any moment now. If you weren&#8217;t &#8230; <a href="https://virtuallyfun.com/2023/12/08/bsd-on-windows-things-i-wish-i-knew-existed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing.png"><img loading="lazy" decoding="async" width="1024" height="540" src="https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing-1024x540.png" alt="" class="wp-image-13522" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing-1024x540.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing-300x158.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing-768x405.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing-1536x809.png 1536w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing-500x264.png 500w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-landing.png 1685w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Yahoo Auctions Japan</figcaption></figure>



<p class="wp-block-paragraph">It&#8217;s 1995 and I&#8217;ve been nearly two years in the professional workspace.  OS/2 is the dominant workstation product, Netware servers rule the world, and the year of the Linux desktop is going to happen any moment now.  If you weren&#8217;t running OS/2, you were probably running Windows 3.1, only very few people were using that Linux thing.  What would have been the prefect OS at the time would have been NT with a competent POSIX subsystem, but since we were denied that, enter Hiroshi Oota with BSD on Windows.</p>



<p class="wp-block-paragraph">It was a late night browsing yahoo auctions Japan as one does, laughing at the absurd Famicom/Super Famicom games, and I went ahead and looked for BSD CD-ROMS, where I first came across BSD on Windows.  And then I&#8217;d forgotten about it and went to work on some Darwin projects.</p>



<p class="wp-block-paragraph">Fast forward 3 weeks, and <a href="https://archive.org/details/@vic485">vic485</a> had bought it, had it shipped, and uploaded on <a href="https://archive.org/details/bsd-on-windows">archive.org</a>.  So a big super thanks to vic485 for making this all possible!</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/12/winmem32-required-for-bow.png"><img loading="lazy" decoding="async" width="449" height="163" src="https://virtuallyfun.com/wp-content/uploads/2023/12/winmem32-required-for-bow.png" alt="" class="wp-image-13538" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/winmem32-required-for-bow.png 449w, https://virtuallyfun.com/wp-content/uploads/2023/12/winmem32-required-for-bow-300x109.png 300w" sizes="auto, (max-width: 449px) 100vw, 449px" /></a></figure>
</div>


<p class="wp-block-paragraph">So what is it?  It&#8217;s not quite BSD, its a bunch of 16bit DLL&#8217;s that broke the kernel down into subsystems, that each rely on winmem32.dll to give access to flat/32bit address space.  BSD on Windows (BOW) being a hybrid 16/32bit app is originally for Windows 3.1, with the later 1.5 update for Windows 95, which includes support for long filenames. I&#8217;m not sure if it&#8217;ll run on Windows NT or OS/2, as I don&#8217;t think </p>



<p class="wp-block-paragraph">So what do you get?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-1-1024x1024.jpg" alt="" class="wp-image-13528" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-1-1024x1024.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-1-300x300.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-1-150x150.jpg 150w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-1-768x768.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/bsd-on-windows-auction-1.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The key media contents are the install floppy and the CD-ROM.  Yes the setup program IS only on the floppy.  Hope you get that disk image.  I&#8217;m unsure what the manual is like, other than of course it is in Japanese.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack.png"><img loading="lazy" decoding="async" width="1024" height="624" src="https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack-1024x624.png" alt="" class="wp-image-13537" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack-1024x624.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack-300x183.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack-768x468.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack-493x300.png 493w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-compiling-hack.png 1202w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">compiling</figcaption></figure>



<p class="wp-block-paragraph">It&#8217;s very much a single user mode BSD like environment complete with vi/gcc/csh/perl just to name a few.  I&#8217;ve been able to test job control, and building some simple programs like <a href="https://archive.org/details/hack-103-for-bow">Hack 1.03</a>.  I found a few issues however.</p>



<p class="wp-block-paragraph">I haven&#8217;t tested enough with FreeBSD 1/2 but I can verify that from my &#8216;<a href="https://sourceforge.net/projects/linux011/">Ancient Linux on Windows</a>&#8216; packages, the object format is the same, which is that early era when everything was a.out, although all different the reliance on GNU GAS &amp; LD did make the object format the same.  And it was nice to compile a hello world from my Linux cross compiler, link it on BOW, and get a running executable.</p>



<p class="wp-block-paragraph">The memory is weird, in that you can add hundreds of megabytes to Windows and BOW will always run exhausted.  In the bow.ini file you can set the heap for each program, and I found out from some silly trial and error that the maximum heap you can effectively give is 13 megabytes.  It seems that winmem32 has a single chunk of memory where all processes run out of, hence the sub 16mb ram zone.  Maybe there is a way to allocate it, but I&#8217;m unsure, maybe it&#8217;s in the book.  CC1 was frequently having issues, so setting it&#8217;s heap to 13M sure helped, the linker &#8216;ld&#8217; of course was running out of memory as well so setting it to 8M got me linking.</p>



<p class="wp-block-paragraph">Filenames, especially on Windows 3.1 are a huge problem.  All the LFN TSR&#8217;s I tried to load just resulted in a full crash.  I had to point the linker to the CD-ROM live filesystem, which maybe would be tedious on a real machine, but under emulation it&#8217;s fine.</p>



<p class="wp-block-paragraph">BOW does NOT like Qemu. At all.  It won&#8217;t under otvdm either.  I suspect NT is a no go but I haven&#8217;t tried.  Oddly enough it&#8217;s not a timing issue, as it does run under VMware.  There is an advantage to running it under Windows 95, is that it supports long filenames.  86Box works as well, I even was using the Pentium II Xeon at 400Mhz and that ran fine.</p>



<p class="wp-block-paragraph">Probably the most annoying and silly thing is that the GCC C compiler doesn&#8217;t have C++ style comments turned on.  Not being able to use &#8216;//&#8217; is quite annoying.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="2560" src="https://virtuallyfun.com/wp-content/uploads/2023/12/IMG_9741-scaled.jpg" alt="" class="wp-image-13549" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/IMG_9741-scaled.jpg 1920w, https://virtuallyfun.com/wp-content/uploads/2023/12/IMG_9741-225x300.jpg 225w, https://virtuallyfun.com/wp-content/uploads/2023/12/IMG_9741-768x1024.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/IMG_9741-1152x1536.jpg 1152w, https://virtuallyfun.com/wp-content/uploads/2023/12/IMG_9741-1536x2048.jpg 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Hack 1.03 running on my PS/2 model 80</figcaption></figure>



<p class="wp-block-paragraph"><a href="https://github.com/neozeed/hack-1.03">Hack</a> ran fine on my 386, which was a pleasant surprise!. It was really cool to have Word+Excel and Hack running at the same time.  </p>



<p class="wp-block-paragraph">Had I known about this, it would have been an incredible bridge product.  Not to mention cross compiling to even Win32, or Linux.  Not to mention at the time being able to run BSD with no real pain, just install and go</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="745" src="https://virtuallyfun.com/wp-content/uploads/2023/12/bow-irc-connection-1024x745.png" alt="" class="wp-image-13543" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/bow-irc-connection-1024x745.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-irc-connection-300x218.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-irc-connection-768x559.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-irc-connection-412x300.png 412w, https://virtuallyfun.com/wp-content/uploads/2023/12/bow-irc-connection.png 1208w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">simple IRC test</figcaption></figure>



<p class="wp-block-paragraph">There is generic TCP/IP Winsock support in BOW 1.5 as it simply calls winsock.  This also includes the ability to run daemons, however limitations in BOW are quickly exposed, such as missing setuid/setgid sno there is no ability to impersonate lower privileged users.  MMAP stuff also doesn&#8217;t seem to work, although I was able to build a super simple port of Apache 1.3.1 to BSD on Windows (BOW).&nbsp;</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="745" src="https://virtuallyfun.com/wp-content/uploads/2023/12/Apache-on-BOW-1024x745.png" alt="" class="wp-image-13545" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/Apache-on-BOW-1024x745.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/12/Apache-on-BOW-300x218.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/Apache-on-BOW-768x559.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/Apache-on-BOW-412x300.png 412w, https://virtuallyfun.com/wp-content/uploads/2023/12/Apache-on-BOW.png 1208w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">While BOW may appear to be very BSD like, there is a lack of a the mmap Apache needs, along with user mapping &amp; impersonation.&nbsp; I ended up using the EMX &#8211; OS/2 system code, since it&#8217;s very POSIX like without relying on the Unix like OS actually working.</p>



<p class="wp-block-paragraph">I&#8217;ve been able to serve pages to myself, however BOW crashing out many emulators and hypervisors kind of stops me from putting it on the internet.  BOW enthusiasts can <a href="https://archive.org/details/apache131_for_BOW">download it from archive.org</a></p>



<p class="wp-block-paragraph">Today, there is really no point to BOW, it&#8217;s an interesting oddity, but back in the day, for a jr network administrator being able to run the Unix version of the snmp tools, even if it&#8217;s only client side would have been great.  If tftpd could be built to run this would have been beyond amazing, as you not only get BSD, but full Windows apps at the same time, much like MachTen.</p>



<p class="wp-block-paragraph">It&#8217;s a shame I never knew this was a thing, I certainly would have been evangelizing BOW!  Who knows what other treasures are in the parallel societies of Japan/Asia/Europe?</p>



<p class="wp-block-paragraph">**UPDATE</p>



<p class="wp-block-paragraph">Ive been able to <a href="https://virtuallyfun.com/2023/12/12/cross-compiling-to-bsd-on-windows-bow-from-win32/">cross compile from Windows to BOW using an old 386BSD 0.1 cross tool chain. You can read about it here: Cross compiling to BSD on Windows (BOW) from Win32</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/12/08/bsd-on-windows-things-i-wish-i-knew-existed/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Building OS/2 apps from QuickC for Windows</title>
		<link>https://virtuallyfun.com/2023/10/23/building-os-2-apps-from-quickc-for-windows/</link>
					<comments>https://virtuallyfun.com/2023/10/23/building-os-2-apps-from-quickc-for-windows/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 23 Oct 2023 15:06:04 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[OS/2]]></category>
		<category><![CDATA[OS/2 1.2]]></category>
		<category><![CDATA[Win16]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13382</guid>

					<description><![CDATA[Back in the olden days of when Microsoft had pivoted out of OS/2 in a hurry, I&#8217;ve always felt that the common &#8216;OMF&#8217; objects ought to link for OS/2. But for some reason I never tried. But for some reason &#8230; <a href="https://virtuallyfun.com/2023/10/23/building-os-2-apps-from-quickc-for-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/10/cross-compiled-from-qcwin.png"><img loading="lazy" decoding="async" width="802" height="558" src="https://virtuallyfun.com/wp-content/uploads/2023/10/cross-compiled-from-qcwin.png" alt="" class="wp-image-13383" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/cross-compiled-from-qcwin.png 802w, https://virtuallyfun.com/wp-content/uploads/2023/10/cross-compiled-from-qcwin-300x209.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/cross-compiled-from-qcwin-768x534.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/cross-compiled-from-qcwin-431x300.png 431w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a><figcaption class="wp-element-caption">Hello from QuickC for Windows</figcaption></figure>



<p class="wp-block-paragraph">Back in the olden days of when Microsoft had pivoted out of OS/2 in a hurry, I&#8217;ve always felt that the common &#8216;OMF&#8217; objects ought to link for OS/2.  But for some reason I never tried.  But for some reason I thought I&#8217;d try it today.</p>



<p class="wp-block-paragraph">I first installed Microsoft C 6.0, and set it up for a native OS/2 to OS/2 1.2 setup.  This way I get a pure OS/2 include/library directory set.  In retrospect, I don&#8217;t know why I didn&#8217;t just use 2 include / library directory sets to far easier target stuff, without dealing with changing the default names, and making linking an all around living hell.</p>



<p class="wp-block-paragraph">So the first thing to do is to tell QuickC for Windows to default to the OS/2 include directory (turns out it wont link anyways).  Compiling is nothing special.  When setting up the project you&#8217;ll need a DEF file, I use this simple one:</p>



<pre class="wp-block-code"><code>NAME        QCO2 WINDOWAPI
PROTMODE
CODE        PRELOAD</code></pre>



<p class="wp-block-paragraph">Nothing to it!</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2.png"><img loading="lazy" decoding="async" width="1024" height="344" src="https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2-1024x344.png" alt="" class="wp-image-13384" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2-1024x344.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2-300x101.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2-768x258.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2-500x168.png 500w, https://virtuallyfun.com/wp-content/uploads/2023/10/quickc-doesnt-want-to-do-os2.png 1315w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p class="wp-block-paragraph">I tried to fight the Windows linker, but it figures out what you are doing and won&#8217;t do it.  But can you manually link?  Well QuickC for Windows does include a DOS linker, and it&#8217;s oddly enough newer than the one for Microsoft C 6.0!</p>



<pre class="wp-block-code"><code>C:\proj\o2>msdos \WIN16APP\QCWIN\bin\link hi.obj

Microsoft (R) Segmented-Executable Linker  Version 5.15
Copyright (C) Microsoft Corp 1984-1991.  All rights reserved.

Run File &#91;hi.exe]:
List File &#91;NUL.MAP]:
Libraries &#91;.LIB]: doscalls SLIBCE
Definitions File &#91;NUL.DEF]: qco2.def

C:\proj\o2>msdos hi.exe
This program cannot be run in DOS mode.</code></pre>



<p class="wp-block-paragraph">Manually invoking the linker wasn&#8217;t all too hard, just answer the 30 questions.  I did set the LIB environment variable so it picked up the libraries just fine.  And yes, it created my OS/2 binary no problem!</p>



<p class="wp-block-paragraph">And as you saw from above, yes it does run!</p>



<p class="wp-block-paragraph">I do suppose the graphical editors would have been nice some 30 years ago, but in today&#8217;s era, sadly it doesn&#8217;t matter.  QuickC for Windows won&#8217;t run under WLO, so this prevents it being a backdoor GUI/Protected mode compiler for OS/2.  It&#8217;s a shame too as at least running under Windows 3.0, QuickC for Windows is WAY faster than using Microsoft C 6.00 in either read mode, protected mode with smartdrive..  I&#8217;m not sure what the deal is.  Even with the advanced caching SCSI controller.</p>



<p class="wp-block-paragraph">Not sure if anyone cares, but I think it&#8217;s cool.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/10/23/building-os-2-apps-from-quickc-for-windows/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Inside Windows 2000</title>
		<link>https://virtuallyfun.com/2023/10/16/inside-windows-2000/</link>
					<comments>https://virtuallyfun.com/2023/10/16/inside-windows-2000/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 16 Oct 2023 11:02:18 +0000</pubDate>
				<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[Windows 2000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13334</guid>

					<description><![CDATA[A talk from Dave Probert on the design of the NTOS kernel. Shame Microsoft didn&#8217;t put this anywhere people could have found this 20+ years ago, just as a shame they never opened up NTOS like they did that even &#8230; <a href="https://virtuallyfun.com/2023/10/16/inside-windows-2000/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Windows, Part I - Dave Probert" width="584" height="438" src="https://www.youtube.com/embed/8BaRJRvv6cE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">part 1</figcaption></figure>



<p class="wp-block-paragraph">A talk from Dave Probert on the design of the NTOS kernel.  Shame Microsoft didn&#8217;t put this anywhere people could have found this 20+ years ago, just as a shame they never opened up NTOS like they did that even <a href="https://github.com/zhuhuibeishadiao/ntoskrnl">tepid Windows Research Kernel</a>.  It goes without saying this is the &#8216;Linux is a cancer&#8217; generation, with the crazed idea that looking at Linux would contaminate Windows.</p>



<p class="wp-block-paragraph">PART 2: <a href="https://www.youtube.com/watch?v=OrohgqgzhgM">https://www.youtube.com/watch?v=OrohgqgzhgM</a> </p>



<p class="wp-block-paragraph">PART 3: <a href="https://www.youtube.com/watch?v=SUK_OfEMQos">https://www.youtube.com/watch?v=SUK_OfEMQos</a> </p>



<p class="wp-block-paragraph">PART 4: <a href="https://www.youtube.com/watch?v=JqnvmedwkYc">https://www.youtube.com/watch?v=JqnvmedwkYc</a></p>



<p class="wp-block-paragraph">Too little, too late I guess.  It would have been an interesting foundation a long time ago.</p>



<p class="wp-block-paragraph">And of course the ongoing work behind the scenes making Windows fully 64bit compatible on the Alpha at the time.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/10/16/inside-windows-2000/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>More PS/2 upgrades!  More RAM, More advanced SCSI!</title>
		<link>https://virtuallyfun.com/2023/09/29/more-ps-2-upgrades-more-ram-more-advanced-scsi/</link>
					<comments>https://virtuallyfun.com/2023/09/29/more-ps-2-upgrades-more-ram-more-advanced-scsi/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 29 Sep 2023 18:45:34 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[hard disks]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[PS/2]]></category>
		<category><![CDATA[retro hardware]]></category>
		<category><![CDATA[videos]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13243</guid>

					<description><![CDATA[So I had gotten this Boca Ram/2 card with 2MB of RAM, with space for an additional 6MB. Unfortunately trying to find matching memory has been a lost cause. Since the existing memory is 9 chip modules, I take that &#8230; <a href="https://virtuallyfun.com/2023/09/29/more-ps-2-upgrades-more-ram-more-advanced-scsi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">So I had gotten this Boca Ram/2 card with 2MB of RAM, with space for an additional 6MB.  Unfortunately trying to find matching memory has been a lost cause.  Since the existing memory is 9 chip modules, I take that to mean it&#8217;s parity RAM, so I went shopping for much more available 3 chip modules.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="521" src="https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-1024x521.jpg" alt="" class="wp-image-13244" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-1024x521.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-300x153.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-768x391.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-1536x782.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-2048x1042.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-memory-for-PS2-model-60-500x254.jpg 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">2MB!</figcaption></figure>



<p class="wp-block-paragraph"> I picked up 2x 1MB modules for £10.</p>



<p class="wp-block-paragraph">Slotting them carefully into the ram card, taking great care as the clips are plastic!</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="599" src="https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-1024x599.jpg" alt="" class="wp-image-13245" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-1024x599.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-300x175.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-768x449.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-1536x898.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-2048x1198.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/BocaRAM-2-card-500x292.jpg 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">4MB of ram slotted, made in the USA!</figcaption></figure>



<p class="wp-block-paragraph">Now from what I can remember being told is to never ever ever mix memory types like this.  But logically I have to think that 9&#215;1 = 4+4+1, right? RIGHT?!</p>



<p class="wp-block-paragraph">I copied the @7A7A.ADF onto the reference disk image, slotted the card and booted up to the config, and toggled the card to 4M</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-1024x768.jpg" alt="" class="wp-image-13246" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/PS2-model-60-with-4MB-on-Boaca-RAM2-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">4M (4 SIMM modules)</figcaption></figure>



<p class="wp-block-paragraph">I didn&#8217;t trust the auto-config, plus I just wanted to see what was there.  Also I&#8217;ve always wondered if the PS/2 model 60 (or 30? 50z?) can slot higher density than the 256kb SIMM&#8217;s that IBM had used.  I guess one day I&#8217;ll give it a shot.</p>



<p class="wp-block-paragraph">Anyways thinking that this is about done, I save the config and reboot and now It&#8217;s Bocaram/2 issues.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="610" src="https://virtuallyfun.com/wp-content/uploads/2023/09/error-164-1024x610.jpg" alt="" class="wp-image-13247" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/error-164-1024x610.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/error-164-300x179.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/error-164-768x457.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/error-164-1536x914.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/error-164-500x298.jpg 500w, https://virtuallyfun.com/wp-content/uploads/2023/09/error-164.jpg 1584w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Immediately, on reboot I get error 164.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">164 POST detected a base memory or extended memory size mismatch error.</p>



<p class="wp-block-paragraph">1. Run F1 Setup. Check System Summary menu for memory size change.<br>2. Run the Extended Memory Diagnostic tests.</p>
<cite><a href="https://www.ibm.com/support/pages/troubleshooting-post-numeric-error-codes">IBM</a></cite></blockquote>



<p class="wp-block-paragraph">Great.</p>



<p class="wp-block-paragraph">Booting from the reference disk just crashes the PC.</p>



<p class="wp-block-paragraph">Fantastic.</p>



<p class="wp-block-paragraph">Pressing F1 however does let you boot, ignoring the issue.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-1024x768.jpg" alt="" class="wp-image-13248" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/boca-utils-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">After a bunch of digging I found this zip file with some utils.  And just guessing br2pmems &#8216;fixes&#8217; the CMOS settings allowing the machine to boot normally. </p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM.jpg"><img loading="lazy" decoding="async" width="1024" height="614" src="https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM-1024x614.jpg" alt="" class="wp-image-13249" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM-1024x614.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM-300x180.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM-768x461.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM-500x300.jpg 500w, https://virtuallyfun.com/wp-content/uploads/2023/09/5MB-of-RAM.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">So now it&#8217;ll recognize the 5MB of RAM, and just boot normally. GREAT.  But booting the reference disk still hangs the machine.</p>



<p class="wp-block-paragraph">Which then brings me to the next upgrade:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="358" src="https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-1024x358.jpg" alt="" class="wp-image-13250" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-1024x358.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-300x105.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-768x268.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-1536x536.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-2048x715.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/caching-scsi-controller-500x175.jpg 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">The IBM SCSI with Cache</figcaption></figure>



<p class="wp-block-paragraph">The <a href="https://ardent-tool.com/IBM_SCSI/SCSI-C.html">IBM SCSI with Cache aka the SPOCK</a>.  Since I ruined the one SCSI card, and ended up picking up a second card, but this time with the appropriate cable I&#8217;ve caused a massive market panic on Microchannel SCSI cards.  Seriously check eBay, and you will see that the pricing has collapsed with many now selling in the £20-30 range.  You&#8217;re welcome!</p>



<p class="wp-block-paragraph">Not really wanting a 3rd SCSI card, but my eye saw this one with the cache RAM, and I figured if I wanted the ultimate PS/2 of course I&#8217;d want a caching controller.  This looks to be the first rev of the PCB, but with the &#8216;hot fixes&#8217; in place from the second rev.  While the ROMs are stepping back to 1990, I don&#8217;t care much about the 1GB disk limit, as the BlueSCSI can emulate all the available devices in the chain, so I&#8217;m not losing anything in the way of capacity.  This is a 286 after all.</p>



<p class="wp-block-paragraph">Since the RAM card screws up the setup program, I have to remove it, and the old SCSI controller, re-configure the system with all the RAM and disks removed first.  Then put in the new controller, and re-run setup.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-1024x768.jpg" alt="" class="wp-image-13251" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">I just accept the defaults, and reboot to check what happened.  So far it looks good, slot 8 being near the middle of the PCB, and closer to the disk cage where the blue SCSI rests.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-1024x768.jpg" alt="" class="wp-image-13252" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/scsi-card-frm-ref-disk-showing-drives-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">placehold all the drives!</figcaption></figure>



<p class="wp-block-paragraph">Remembering that the IBM controllers inventory the disks backwards, the 380MB disk image on SCSI ID 6, is the primary boot disk.  I didn&#8217;t set it to the full 1GB as I want to later see how older versions of DOS/OS2 work with this, and I know they have issues with disks bigger than 512MB, but I figured matching a disk that did exist in 1988 would be more realistic.</p>



<p class="wp-block-paragraph">With the SCSI setup, I could put the troublesome Boca board back with the RAM, and get my system booting up with the new &#8220;<em>faster</em>&#8221; SCSI controller, and all that new RAM.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-1024x768.jpg" alt="" class="wp-image-13253" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/IMG_7903-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Old SCSI controller</figcaption></figure>



<p class="wp-block-paragraph">Of course I did a few benchmarks on the old SCSI controller so I would know how much more awesome the new one is.</p>



<p class="wp-block-paragraph">As you can see this is booted with my normal config.sys with a himem.sys and smartdrv from Windows 3.1 on a MS-DOS 5.1 install.</p>



<pre class="wp-block-code"><code>2,345.8 KB/sec With himem.sys &amp; smartdrv
2,347.5 KB/sec with no himem.sys
2,316.6 KB/sec with runtime xmsmmgr &amp; smartdrv
2,334.0 KB/sec with Windows 3.1 himem.sys no smartdrv</code></pre>



<p class="wp-block-paragraph">So, with these scores in hand, you can see that the penalty for various XMS memory access being turned on is there, but it&#8217;s nowhere near as massive as I&#8217;d have thought for performance.  Even with it just being there, although again it&#8217;s so minimal.</p>



<p class="wp-block-paragraph">Now for the real shocker:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-1024x768.jpg" alt="" class="wp-image-13254" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/new-scsi-controller-much-slower-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">2,079.2 KB/Sec</figcaption></figure>



<p class="wp-block-paragraph">That&#8217;s right, the advanced card is slower.  A good 11% slower.  Well, that was disappointing.  I&#8217;m still keeping it in the machine, as having a hardware caching controller was all the rage, just like Mach microkernels.  Maybe it&#8217;d make more of a difference in a 32bit system, but it&#8217;s performance is very underwhelming. For anyone wondering, the <a href="https://www.stason.org/TULARC/pc/hard-drives-hdd/western-digital/AC-2340-341MB-3-5-SL-IDE-AT.html">WDC AC2340</a>, is an EIDE 340MB hard disk, with a 64kb cache.  Im sure it was considered very fancy, and fast for the era, and it&#8217;s nice to know that no matter the SCSI controller, the BlueSCSI blows it out of the water.  Also keeping in mind that MFM data transfers are usually sub 400KB/sec, so this is much more faster.</p>



<p class="wp-block-paragraph">Okay you have all this XMS what are you going to do with it?</p>



<p class="wp-block-paragraph">Well, after I did manage to get this original copy of Word for Windows 1.0, I thought that it would be a good test.  One fun thing is that it includes the &#8216;runtime&#8217; version of Windows 2.11, which can also upgrade an existing install of Windows 2 if detected.  Running Windows 2 on MS-DOS 5, does involve loading the setver command in the config.sys, and rebooting.  Windows 2 cannot use XMS (more on that) but instead uses the older LIM EMS standard that allows a 64kb page to be viewed from a far larger card. Since the 8086/80286 still use 64kb segments it&#8217;s not all that crazy to use.</p>



<p class="wp-block-paragraph">And that brings me to this great program EMM286!</p>



<p class="wp-block-paragraph">It allocates a 64kb page in low ROM, and backfills it from XMS.  So I give it 3MB, and now I have 1.3MB of XMS left, and 3MB of LIM EMS ready for Windows!</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-1024x768.jpg" alt="" class="wp-image-13255" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">So now I have EMS &amp; XMS!  And didn&#8217;t have to get some pesky EMS board either.  I am pretty sure you need device drivers to use EMS, so how do you use LIM EMS under OS/2 1.x?  I have no idea.  Probably not I guess?</p>



<p class="wp-block-paragraph">Anyways I run word, everything is great, it sees extra ram.  I exit windows, and unload EMM286, and ..</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-1024x768.jpg" alt="" class="wp-image-13256" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/emm286-boot-with-3mb-ems-after-windows-2-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">3.4MB of XMS available?  Somehow I lost a megabyte of RAM from Windows 2?!  I&#8217;m not sure what is going on, or why or how Windows even touched it.  Needless to say if you want it back, you need to reboot.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-1024x768.jpg" alt="" class="wp-image-13257" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/ram-under-os2-121-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">DOS 10.21</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-1024x768.jpg" alt="" class="wp-image-13258" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/base-ram-under-os2-121-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">494KB free!</figcaption></figure>



<p class="wp-block-paragraph">That&#8217;s right 494KB free!  I thought MS-DOS under OS/2 just used some stubs in real mode, and called back to protected mode.  No doubt this is totally wrong, there has to be some weird version of DOS+OS2 that actually runs in real mode going on here.  I know that &#8216;bimodal drivers&#8217; were a thing, but it sure seems like there really is a &#8216;real mode OS/2&#8217; kernel with MS-DOS tacked onto the side.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-1024x768.jpg" alt="" class="wp-image-13259" srcset="https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/09/Windows-3.0-standard-mode-on-5mb-system-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Windows 3.0 standard mode, 286 + 5MB of RAM</figcaption></figure>



<p class="wp-block-paragraph">It&#8217;s annoying OS/2 can&#8217;t tell you how much ram it sees and what is in use, but at least Windows 3.0 can.  It&#8217;s <a href="/2017/12/02/simcity-under-windows-3-0/">more than enough to run Sim City</a>, clearly making this one of the more expensive machines to run the game as intended.  With the added RAM it doesn&#8217;t thrash as hard, but having emulated disks probably doesn&#8217;t matter as much as access time is always zero, and it&#8217;ll stream data as fast as it can.  You can feel the difference moving between tasks, but things like the OS/2 file manager that loads a view into every directory is still incredibly slow.  What were they thinking?!</p>



<p class="wp-block-paragraph">Thouhts?</p>



<p class="wp-block-paragraph">Back in the day this would have been an incredibly expensive upgrade.  And is it worth it?  The machine is still locked at 10Mhz.  The FPU is also locked at 10Mhz, and you can feel it.  The lightening fast disk access, despite it being some 11% slower is really hard to tell.  Does the caching help at all?  Applications don&#8217;t have to page in/out like crazy before as there is enough RAM to actually run them, but that is where the 10Mhz processor just isn&#8217;t there.</p>



<p class="wp-block-paragraph">Just like the caching SCSI controller, I&#8217;m sure we&#8217;ve all heard how having that magical EMS memory would help out games like Wing Commander.</p>



<figure class="wp-block-video"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls src="https://virtuallyfun.com/wp-content/uploads/2023/09/wing-commander-286-overlapp_ffmpeg.mp4"></video><figcaption class="wp-element-caption">XMS/DOS High + EMM286 on the left, and just XMS + DOS High on the right</figcaption></figure>



<p class="wp-block-paragraph">Well, I had to put them side by side, as I couldn&#8217;t believe it, but adding EMS made it noticeably slower.  I was *NOT* expecting that.  I should add that I used Vegas &amp; <a href="https://www.youtube.com/watch?v=hNgeuB-32e4">this quick tutorial</a>, on how to pan &amp; resize one video to get them side by side.  No doubt it&#8217;s not perfect but it&#8217;s enough to see that once the ship explodes, the performance on the EMS configuration is greatly throttled.  It&#8217;s moments like this that makes me wonder is this something the caching SCSI card would do better implicitly?  Or is it snake oil as well?</p>



<p class="wp-block-paragraph">3MB is enough to load OS/2, and one application, just as Word v1 or Excel v2/v3 load just fine, but swapping between them is basically unloading one from memory, and loading the other back out to disk.  It&#8217;s a shame RAM cost so much 1987-1992 as people really could have benefited from it.  It&#8217;s just utterly bizarre that on such an outrageously expensive system that you even need RAM upgrade cards, it really should have been baked into the main logic board.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/09/29/more-ps-2-upgrades-more-ram-more-advanced-scsi/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		<enclosure url="http://virtuallyfun.com/wp-content/uploads/2023/09/wing-commander-286-overlapp_ffmpeg.mp4" length="0" type="video/mp4" />

			</item>
	</channel>
</rss>
