<?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>DEC Alpha &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/dec-alpha/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>Flashing the ES40 Dec Alpha</title>
		<link>https://virtuallyfun.com/2026/05/20/flashing-the-es40-dec-alpha/</link>
					<comments>https://virtuallyfun.com/2026/05/20/flashing-the-es40-dec-alpha/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 20 May 2026 09:05:46 +0000</pubDate>
				<category><![CDATA[DEC Alpha]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15750</guid>

					<description><![CDATA[Since this will no doubt come up, let&#8217;s make this a separate post. I&#8217;ve put the files up on archive.org (arc programmed/bare programmed) but here are the steps to program your own flash, just like you&#8217;ve gotten a fresh machine! &#8230; <a href="https://virtuallyfun.com/2026/05/20/flashing-the-es40-dec-alpha/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Since this will no doubt come up, let&#8217;s make this a separate post.  I&#8217;ve put the files up on <a href="https://archive.org/details/es40-flasher">archive.org</a> (<a href="https://archive.org/download/es40-flasher/flash-programmed-auto-arc.zip">arc programmed</a>/<a href="https://archive.org/download/es40-flasher/flash-programmed.zip">bare </a>programmed) but here are the steps to program your own flash, just like you&#8217;ve gotten a fresh machine!</p>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/es40-flasher"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image.png" alt="" class="wp-image-15751" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></a></figure>



<p class="wp-block-paragraph">First up, you need the &#8216;v73.iso&#8217; and not much else.  VGA is fun to make it all graphical.  First look for your CD-ROM drive, the RRD42 in this case, I&#8217;ve put mine on SCSI id 6, so it&#8217;s the DKA600</p>



<p class="wp-block-paragraph">So, it&#8217;s a simple &#8216;boot dka600&#8217; to get the process started</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-1.png" alt="" class="wp-image-15752" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-1.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-1-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-1-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-1-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">It&#8217;ll take a few seconds to boot up to the menu</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-2.png" alt="" class="wp-image-15753" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-2.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-2-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-2-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-2-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">hit control+c and you&#8217;ll get the menu</p>



<p class="wp-block-paragraph">It&#8217;ll detect our machine, so you can hit enter to boot the default option</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-3.png" alt="" class="wp-image-15754" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-3.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-3-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-3-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-3-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">This will take a hot minute as the SRM likes to re-load itself between things</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-4.png" alt="" class="wp-image-15755" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-4.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-4-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-4-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-4-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">Now I know you think we would just go ahead and hit update, but oddly enough it won&#8217;t program the TIG, so we exit from here:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-5.png" alt="" class="wp-image-15756" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-5.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-5-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-5-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-5-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">and choose the manual update process</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-6.png" alt="" class="wp-image-15757" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-6.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-6-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-6-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-6-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">And now we can run the update.</p>



<p class="wp-block-paragraph">Basically we update them all!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-7.png" alt="" class="wp-image-15758" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-7.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-7-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-7-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-7-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">And keep going.  For all us Windows NT on Alpha fans, the ABIOS has to be programmed in.  It&#8217;s a compressed image, so the machine will still boot SRM then we have to load ARC.  It&#8217;s just the way the ES40 is.</p>



<p class="wp-block-paragraph">This will take a few minutes, just hang in there.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-8.png" alt="" class="wp-image-15759" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-8.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-8-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-8-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-8-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">rmc always fails for me but it&#8217;s fine.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-9.png" alt="" class="wp-image-15760" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-9.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-9-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-9-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-9-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">at this point we can exit, and we&#8217;ve programmed our flash.</p>



<p class="wp-block-paragraph">The emulator will reboot, and we will be sent back to the SRM prompt.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-10.png" alt="" class="wp-image-15761" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-10.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-10-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-10-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-10-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">For those of us who want to run Windows NT we can now edit the NVRAM so it always auto-starts ARC, so it doesn&#8217;t require manual intervention.</p>



<p class="wp-block-paragraph">simply type in:</p>



<pre class="wp-block-code"><code>edit nvram
10 show dev
20 arc</code></pre>



<p class="wp-block-paragraph">Then you can exit this mode with a Control+Z (some machines/emulators require Alt+Z)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-11.png" alt="" class="wp-image-15762" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-11.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-11-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-11-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-11-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">now it&#8217;ll show the devices and auto-start arc.</p>



<p class="wp-block-paragraph">You can test-drive ARC now by simply typing in &#8216;arc&#8217;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="539" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-12.png" alt="" class="wp-image-15763" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-12.png 902w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-12-300x179.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-12-768x459.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-12-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">And this will load up ARC.</p>



<p class="wp-block-paragraph">You&#8217;ll see the VGA bios re-initialized, and then the boot logo</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-13.png" alt="" class="wp-image-15764" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-13.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-13-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-13-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-13-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">as of yet, the memory test wipes out the video ram so it&#8217;ll blank the screen. this is normal.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-14.png" alt="" class="wp-image-15765" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-14.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-14-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-14-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-14-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Hit the space bar to exit the memory test</p>



<p class="wp-block-paragraph">Then press F2 to enter setup.  This will take a minute or so.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-15.png" alt="" class="wp-image-15766" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-15.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-15-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-15-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-15-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">it really does take a few minutes the first time.</p>



<p class="wp-block-paragraph">Because the nvram is fresh it&#8217;ll reboot. so hit space again to skip the memory test and f2 to enter setup</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-16.png" alt="" class="wp-image-15767" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-16.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-16-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-16-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-16-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">arrow key down to the CMOS setup</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-17.png" alt="" class="wp-image-15768" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-17.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-17-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-17-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-17-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">and F6 to enter advanced setup</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-18.png" alt="" class="wp-image-15769" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-18.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-18-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-18-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-18-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">In the advanced menu, hit tab to advance to a selection and arrow keys to change them</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-19.png" alt="" class="wp-image-15770" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-19.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-19-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-19-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-19-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">And then Press F10 to save the changes.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="639" src="https://virtuallyfun.com/wp-content/uploads/2026/05/image-20.png" alt="" class="wp-image-15771" srcset="https://virtuallyfun.com/wp-content/uploads/2026/05/image-20.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-20-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-20-768x612.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/05/image-20-377x300.png 377w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Now we&#8217;ve fully programmed the flash and set ARC to autoboot!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2026/05/20/flashing-the-es40-dec-alpha/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</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>Announcing EmuWoW Beta 1 (AXP Preview1)</title>
		<link>https://virtuallyfun.com/2024/02/17/announcing-emuwow-beta-1-axp-preview1/</link>
					<comments>https://virtuallyfun.com/2024/02/17/announcing-emuwow-beta-1-axp-preview1/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sat, 17 Feb 2024 08:57:28 +0000</pubDate>
				<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[MIPS]]></category>
		<category><![CDATA[syscall emulation]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Windows NT 3.1]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13972</guid>

					<description><![CDATA[This is a guest post by CaptainWillStarblazer Hello, everyone. This is a continuation of my previous blogpost on EmuWoW (formerly win32emu) found here, but to summarize, I’m the 18-year-old developer behind a project that allows running applications compiled for the MIPS/Alpha &#8230; <a href="https://virtuallyfun.com/2024/02/17/announcing-emuwow-beta-1-axp-preview1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/02/20240217-194140.gif" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="1016" height="748" src="/wp-content/uploads/2024/02/20240217-194140.gif" alt="" class="wp-image-13986"/></a><figcaption class="wp-element-caption">Freecell &amp; Winver</figcaption></figure>



<p class="wp-block-paragraph">This is a guest post by <a href="https://github.com/BHTY">CaptainWillStarblazer</a></p>



<p class="wp-block-paragraph">Hello, everyone. This is a continuation of my previous blogpost on <a href="https://github.com/BHTY/EmuWoW" target="_blank" rel="noreferrer noopener">EmuWoW</a> (formerly win32emu) <a href="/2024/01/04/win323mu-diy-wow/" target="_blank" rel="noreferrer noopener">found here</a>, but to summarize, I’m the <a href="https://github.com/BHTY" target="_blank" rel="noreferrer noopener">18-year-old developer</a> behind a project that allows running applications compiled for the MIPS/Alpha version of Windows NT on standard x86 PCs through emulation, but without requiring a full system emulator. Since that last post, the project has made some substantial strides.</p>



<p class="wp-block-paragraph">Since then, I’ve adapted the MIPS emulator from MAME, which is both more accurate and faster than my own (writing my own was a fun exercise but to the end of running applications, borrowing an emulator was a better decision). This alone enabled WinMine to function, which can be seen below.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/02/EmuWoW-running-MIPS-Winmine.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="753" height="403" src="/wp-content/uploads/2024/02/EmuWoW-running-MIPS-Winmine.png" alt="" class="wp-image-13973" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/EmuWoW-running-MIPS-Winmine.png 753w, https://virtuallyfun.com/wp-content/uploads/2024/02/EmuWoW-running-MIPS-Winmine-300x161.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/EmuWoW-running-MIPS-Winmine-500x268.png 500w" sizes="auto, (max-width: 753px) 100vw, 753px" /></a><figcaption class="wp-element-caption">Winmine for MIPS!</figcaption></figure>



<p class="wp-block-paragraph">Around the same time, another <a href="/2020/05/20/discord-channel-added-by-popular-request/" target="_blank" rel="noreferrer noopener">VirtuallyFun </a>member named <a href="https://www.x86matthew.com/" target="_blank" rel="noreferrer noopener">x86matthew</a> entered the scene. His prior credits include a similar project, for Win16.  He was inspired by the initial win32emu blog post, created his own similar project called <a href="https://github.com/x86matthew/WoWMIPS" target="_blank" rel="noreferrer noopener">WoWMIPS</a>, which quickly started running a few simple apps, such as WinMine, Solitaire, and Notepad.  Be sure to check out <a href="https://www.x86matthew.com/view_post?id=mips_1" target="_blank" rel="noreferrer noopener">WoWMIPS &#8211; MIPS Emulator for Windows, Part 1: Introduction</a>, and parts <a href="https://www.x86matthew.com/view_post?id=mips_2" target="_blank" rel="noreferrer noopener">2</a>,<a href="https://www.x86matthew.com/view_post?id=mips_3" target="_blank" rel="noreferrer noopener">3</a>,<a href="https://www.x86matthew.com/view_post?id=mips_4" target="_blank" rel="noreferrer noopener">4</a>,<a href="https://www.x86matthew.com/view_post?id=mips_5" target="_blank" rel="noreferrer noopener">5</a>,<a href="https://www.x86matthew.com/view_post?id=mips_6" target="_blank" rel="noreferrer noopener">6</a>!</p>



<p class="wp-block-paragraph">This had actually been what I was hoping for from the beginning; I always saw win32emu as a proof of concept for a smarter person (either myself in the future or someone else altogether) to come back later and do it better, and this is a massive undertaking for a single individual. What makes x86matthew&#8217;s WoWMIPS so incredible is its clean design. For one, there’s no thunk DLLs required. When an application tries to import a DLL, the host x86 DLL is first loaded, and then any attempts to get the address of an exported procedure from it are then redirected to an auto-generated stub of MIPS code which invokes the emulator to call the function. In other words, the thunk DLLs are generated at load time. Additionally, there’s no window procedure thunks required either. Instead, MIPS code pages are marked as non-executable, causing an access violation when Windows attempts to call them. Using an exception handler implemented via Windows XP’s <a href="https://learn.microsoft.com/en-us/windows/win32/debug/vectored-exception-handling" target="_blank" rel="noreferrer noopener">Vectored Exception Handling</a> feature, one can detect this and then invoke the emulator to execute the callback. Storing the CPU state in thread-local-storage allowed proper support for multithreading. I duplicated these design choices into EmuWoW, and the results largely speak for themselves. Unlike WoWMIPS (at time of writing), EmuWoW is still capable of loading MIPS DLLs (and will prefer to do so if possible), however.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="652" src="/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running-1024x652.png" alt="" class="wp-image-13977" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running-1024x652.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running-300x191.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running-768x489.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running-471x300.png 471w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-MIPS-apps-running.png 1165w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Various MIPS Windows NT applications running</figcaption></figure>



<p class="wp-block-paragraph">To aid the process of fixing faults in the emulator, I hacked up a quick, minimal debugger into EmuWoW. First of all, there’s a “crash screen” which will indicate the type of error and dump registers and the current instruction if there’s a fault, and a running disassembly can be printed as you go, but most crucially, there’s a limited degree of interactive debugging functionality.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="979" height="512" src="/wp-content/uploads/2024/02/emuwow-debugger.png" alt="" class="wp-image-13975" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/emuwow-debugger.png 979w, https://virtuallyfun.com/wp-content/uploads/2024/02/emuwow-debugger-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/emuwow-debugger-768x402.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/02/emuwow-debugger-500x261.png 500w" sizes="auto, (max-width: 979px) 100vw, 979px" /><figcaption class="wp-element-caption">The built in debugger to EmuWow</figcaption></figure>



<p class="wp-block-paragraph">The main capabilities contained herein are dumping registers and memory to the screen, disassembling regions of memory, listing loaded modules, getting import entry points, setting breakpoints, and single-stepping, along with printing functions. It’s no gdb (especially for the lack of PDB symbol support), but it’s something.</p>



<p class="wp-block-paragraph">MIPS is all well and good, however, but we can already emulate Windows NT for MIPS. MIPS is a fairly clean, simple architecture, often used for teaching, and short of weirdness like delay slots, is dead simple to emulate. And it fits the bill for what I’m trying to do here &#8211; a RISC architecture Microsoft abandoned, fixed-length 32-bit instructions, the works. However, adding support for the DEC Alpha AXP will finally get this project to where it was intended to be from the beginning, and I hope for it to eventually be able to run the Visual C++ compiler toolchain under EmuWoW. Being able to compile (and even test!) Alpha apps on readily available modern PCs will be a game-changer, and I intentionally wrote EmuWoW to be CPU-agnostic, so adding rudimentary support for the Alpha wasn&#8217;t difficult. Like with MIPS, I lifted the emulator from MAME. This admittedly did pose some challenges, due to MAME’s use of C++ features such as</p>



<ul class="wp-block-list">
<li>Classes (which I had to substitute for passing pointers to structs)</li>



<li>Templates (which I had to substitute for macros)</li>



<li>Function-style casts (which I had to change into C-style casts)</li>
</ul>



<p class="wp-block-paragraph">There was a lot of weirdness in how Alpha function calls, but it was my misunderstanding of the calling convention, and when to consider values to be 32-bit vs 64-bit posed a modest issue, but I got it to the point where some very simple DEC Alpha programs started to run, though many of them have various issues.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running.png"><img loading="lazy" decoding="async" width="1024" height="537" src="/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running-1024x537.png" alt="" class="wp-image-13974" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running-1024x537.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running-768x403.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running-500x262.png 500w, https://virtuallyfun.com/wp-content/uploads/2024/02/Windows-NT-Dec-Alpha-apps-running.png 1469w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Various Dec Alpha Windows NT applications running</figcaption></figure>



<p class="wp-block-paragraph">This is the first time this has ever been possible; emulation of AXP NT programs on standard PCs has just become possible now. I’m hoping to see EmuWoW continue to evolve, and I welcome contributions, whether that be improving support for the CPUs I already have, adding support for another (such as PowerPC) or anything else. To take a look at the code, go to <a href="https://github.com/BHTY/EmuWoW" target="_blank" rel="noreferrer noopener">github.com/bhty/emuwow</a> and to download EmuWoW and try it out for yourself, <a href="https://github.com/BHTY/EmuWoW/releases/tag/beta" target="_blank" rel="noreferrer noopener">click here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/02/17/announcing-emuwow-beta-1-axp-preview1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SoftWindows on OpenVMS</title>
		<link>https://virtuallyfun.com/2023/11/06/softwindows-on-openvms/</link>
					<comments>https://virtuallyfun.com/2023/11/06/softwindows-on-openvms/#comments</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Mon, 06 Nov 2023 00:41:43 +0000</pubDate>
				<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[SoftPC]]></category>
		<category><![CDATA[VMS]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13433</guid>

					<description><![CDATA[(This is a guest post by Antoni Sawicki aka Tenox) I like exploring vintage hypervisors and emulators. In the past I did a whole series on Merge, VP/IX and others. This time I wanted to take look at something a &#8230; <a href="https://virtuallyfun.com/2023/11/06/softwindows-on-openvms/">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">I like exploring vintage hypervisors and emulators. In the past I did a whole series on <a href="https://virtuallyfun.com/2020/11/03/fun-with-openserver-and-merge/" data-type="post" data-id="10578">Merge</a>, <a href="https://virtuallyfun.com/2020/11/29/fun-with-vp-ix-under-interactive-unix-system-v-386-3-0-and-86box/" data-type="post" data-id="10739">VP/IX</a> and others. This time I wanted to take look at something a little more exotic &#8211; <a href="https://en.wikipedia.org/wiki/SoftPC">SoftWindows</a> on Alpha <a href="https://en.wikipedia.org/wiki/OpenVMS">OpenVMS</a>. I have in fact installed it a while back but I could never get it properly licensed. I looked everywhere, asked everyone and of course no one had a license pack for this. Fortunately there are two license generators for OpenVMS, <code>pakgen</code> and <code>lmfgen</code>. But how do you find out what is the exact product code and vendor? VMS provides a license debug facility:</p>



<pre class="wp-block-code"><code>$ reply/enable=license
$ define/sys/exec lmf$display_opcom_message true</code></pre>



<p class="wp-block-paragraph">Then, when starting an app, you will get an opcom log message with all the required product name, vendor, etc. The rest is easy. For the lazy, here is a complete license pack for SoftWindows:</p>



<pre class="wp-block-code"><code>$ LICENSE REGISTER SOFTPC -
        /ISSUER=DEC -
        /PRODUCER=DEC -
        /UNITS=0 -
        /OPTIONS=(MOD_UNITS,ALPHA) -
        /CHECKSUM=2-GNHM-DAFO-CPGG-AICI
$ LICENSE LOAD SOFTPC</code></pre>



<p class="wp-block-paragraph">Here is a screenshot for your viewing pleasure!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="820" src="https://virtuallyfun.com/wp-content/uploads/2023/11/openvms_softwin-1024x820.png" alt="" class="wp-image-13434" srcset="https://virtuallyfun.com/wp-content/uploads/2023/11/openvms_softwin-1024x820.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/11/openvms_softwin-300x240.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/11/openvms_softwin-768x615.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/11/openvms_softwin-375x300.png 375w, https://virtuallyfun.com/wp-content/uploads/2023/11/openvms_softwin.png 1279w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">SoftWindows on OpenVMS Alpha</figcaption></figure>



<p class="wp-block-paragraph">The install comes with it&#8217;s own version of Windows 3.1 plus some additional tools and apps, typical for Insignia products. You can map drives to folders, ports COM and LPT, etc. There are a variety of video modes &#8211; Hercules, CGA, EGA and VGA, even 256 colors. The performance is quite decent, however the CPU is pegged at 100%, as you can see in the system monitor. There is a CPU idle detection tool, however it doesn&#8217;t seem to work very well. I suspect that perhaps this may be to do with much never OpenVMS version, than the software has been designed for. The SoftWindows has been released in 1994 and not been updated since.</p>



<p class="wp-block-paragraph">How do you install and run this thing? There is a full <a href="http://osarchive.org/os/vms/Apps/softwin/installation_guide.txt">installation guide</a>, however since this is just a PCSI file, you can simply use product install:</p>



<pre class="wp-block-code"><code>$ unzip softwin-v0100.zip
$ product install *</code></pre>



<p class="wp-block-paragraph">To start it you cast these magic spells:</p>



<pre class="wp-block-code"><code>$ @sys$sysroot:&#91;sysmgr]softwin$startup.com
$ softwin</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="988" height="706" src="https://virtuallyfun.com/wp-content/uploads/2023/11/softpc.gif" alt="" class="wp-image-13435"/></figure>



<p class="wp-block-paragraph">Since SoftWindows is essentially SoftPC you can run pure DOS mode. I will do a follow up on this and explore some DOS games.</p>



<p class="wp-block-paragraph">You can find all the files on <a href="http://osarchive.org/os/vms/Apps/softwin">osarchive.org</a>.</p>



<p class="wp-block-paragraph">From a hindsight, it&#8217;s ironic how roles have reversed in 30 years. Back then MS-DOS / Windows was a toy OS, running on a toy &#8220;personal&#8221; computer, emulated in a little window on a &#8220;real&#8221; computer like DEC Alpha. In modern times you run <a href="https://virtuallyfun.com/2023/04/10/openvms-x86-finally-here/" data-type="post" data-id="12337">OpenVMS as a guest VM</a> on a Windows PC.</p>



<p class="wp-block-paragraph">Have fun with virtualization!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/11/06/softwindows-on-openvms/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Windows NT 3.1 on DEC Alpha AXP</title>
		<link>https://virtuallyfun.com/2023/10/02/windows-nt-3-1-on-dec-alpha-axp/</link>
					<comments>https://virtuallyfun.com/2023/10/02/windows-nt-3-1-on-dec-alpha-axp/#comments</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Mon, 02 Oct 2023 10:29:05 +0000</pubDate>
				<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[Windows NT 3.1]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=13129</guid>

					<description><![CDATA[(this is a guest post by Antoni Sawicki aka Tenox) As I was preparing the Windows NT RISC exhibit for VCF west, I realized that I&#8217;m missing a rather important piece of the history. While I was showing the potentially &#8230; <a href="https://virtuallyfun.com/2023/10/02/windows-nt-3-1-on-dec-alpha-axp/">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">As I was preparing the <a href="https://virtuallyfun.com/2023/08/05/come-meet-tenox-check-out-the-nt-risc-collection-over-at-vcf/" data-type="post" data-id="13090">Windows NT RISC exhibit for VCF west</a>, I realized that I&#8217;m missing a rather important piece of the history. While I was showing the potentially last DEC Alpha Windows build ever &#8211; <a href="https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/" data-type="post" data-id="12532">AXP64 2210</a>, I don&#8217;t have anything earlier than NT 3.51. It would be nice to showcase the very first RTM version &#8211; NT 3.1 on a RISC platform.</p>



<p class="wp-block-paragraph">From time perspective, NT didn&#8217;t get popular until 3.5 and later. Windows NT 3.1 would be considered rare even on a 386, let alone on a RISC machine! So what hardware does Windows NT 3.1 run on?</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="752" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-752x1024.jpg" alt="" class="wp-image-13266" style="width:287px;height:391px" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-752x1024.jpg 752w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-220x300.jpg 220w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-768x1045.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-1128x1536.jpg 1128w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-1505x2048.jpg 1505w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0179-1-scaled.jpg 1881w" sizes="auto, (max-width: 752px) 100vw, 752px" /><figcaption class="wp-element-caption">NT 3.1 RISC HCL</figcaption></figure>



<p class="wp-block-paragraph">Quite a limited list! The <a href="https://gunkies.org/wiki/Windows_NT_3.1_HCL">HCL published on gunkies</a> has a few more systems, but nothing that I would have. The early MIPS based systems are all but unobtanium as of today. This is probably a good time to mention a little known <a href="https://virtuallyfun.com/2023/06/15/windows-nt-demo-on-the-dec-mips-5000/" data-type="post" data-id="12830">port of Windows NT 3.1 to the DECstation 5000</a>. However these builds have not surfaced anywhere, so no help.</p>



<p class="wp-block-paragraph">The Alphas were looking a little more reachable. The DEC 2000 Model 300 and <a href="https://en.wikipedia.org/wiki/DECpc_AXP_150" data-type="link" data-id="https://en.wikipedia.org/wiki/DECpc_AXP_150">DECpc AXP 150</a> are one and the same machine, packaged in a server and workstation cases. Code-named <strong>Jensen</strong>, DEC designed and marketed these specifically around Windows NT. Unlike prior Alphas, this model used a lot of &#8220;PC&#8221; components for increased compatibility and lower cost. Eventually paved way for the more well known <a href="https://en.wikipedia.org/wiki/DEC_Multia">DEC Multia</a>. The Jensen has been seen floating here and there and many people have these. </p>



<p class="wp-block-paragraph">I was able to get a loaner from Chris Satterfield aka <a href="https://twitter.com/compgeke">Compgeke</a> and I was set for the <a href="https://virtuallyfun.com/2023/08/05/come-meet-tenox-check-out-the-nt-risc-collection-over-at-vcf/" data-type="post" data-id="13090">VCF</a>. However, having a working specimen at hand, I started looking at part numbers of various components. In an amazing streak of luck, in practically zero time I was able to find, buy and assemble a complete DECpc AXP 150 from spare parts on eBay! Without a case, but nevertheless. Also big thanks to <a href="https://christopherrivett.co.uk/2023/07/30/vms-and-nt-upgrades-on-the-jensen/#more-355" data-type="link" data-id="https://christopherrivett.co.uk/2023/07/30/vms-and-nt-upgrades-on-the-jensen/#more-355">Christopher Rivett </a>for help with some fine details!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="726" src="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-1024x726.jpg" alt="" class="wp-image-13268" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-1024x726.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-300x213.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-768x545.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-1536x1089.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-2048x1452.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0752-423x300.jpg 423w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Franken Jensen built from spare parts off eBay.</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/10/IMG_0897-1024x768.jpg" alt="" class="wp-image-13281" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0897-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0897-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0897-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0897-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0897-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0897-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Jensen running at VCF West 2023, with fans installed</figcaption></figure>



<p class="wp-block-paragraph"><strong>BOM</strong></p>



<ul class="wp-block-list">
<li>Motherboard + CPU &#8211; DEC <strong>70-29685-01</strong></li>



<li>GPU &#8211; DEC/Compaq Qvision 1024/E (1024&#215;768) &#8211; <strong>126654-001</strong></li>



<li>GPU &#8211; (Optional) Number 9 High Res (1280&#215;1024) &#8211; <strong>30-41800-01</strong></li>



<li>HBA &#8211; Adaptec AHA-1742A EISA &#8211; <strong>467806-00</strong></li>



<li>NIC &#8211; DEC DE422-S EISA &#8211; <strong>5021102-01</strong></li>



<li>RAM &#8211; 4x 16MB, FPM, 60ns, 72-Pin, 12-Chip, True Parity SIMM</li>



<li>PSU &#8211; DEC/HP <strong>30-37197-02</strong>, however a standard AT PSU may be OK</li>
</ul>



<p class="wp-block-paragraph">If you going to build one yourself, beware of overheating. Jensen runs rather hot and needs good cooling. Not only for the CPU. There is a section of the motherboard just under the EISA cards that runs incredibly hot. See the picture, where I have installed a large Noctua fan.</p>



<p class="wp-block-paragraph"><strong>OS Install</strong></p>



<p class="wp-block-paragraph">There are many Windows NT 3.1 CDROMs floating around. I purchased a DEC branded, shrink-wrapped CD on eBay to use as a prop along with the machine. You can download the iso image <a href="http://osarchive.org/os/winnt_xp/Installmedia/nt3x/nt31dec.rar">here</a>.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="13308" src="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0175-768x1024.jpg" alt="" class="wp-image-13308" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0175-768x1024.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0175-225x300.jpg 225w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0175-1152x1536.jpg 1152w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0175-1536x2048.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0175-scaled.jpg 1920w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="13309" src="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0176-768x1024.jpg" alt="" class="wp-image-13309" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0176-768x1024.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0176-225x300.jpg 225w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0176-1152x1536.jpg 1152w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0176-1536x2048.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_0176-scaled.jpg 1920w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>
</figure>



<p class="wp-block-paragraph">Installation of Windows NT 3.1 on DECpc AXP 150 is pretty straightforward and not that much different from the later versions. However as a prerequisite you will need the <a href="http://osarchive.org/hw/dec/alpha_axp/jensen" data-type="link" data-id="http://osarchive.org/hw/dec/alpha_axp/jensen">ECU floppy disk</a> to configure the EISA slot assignments, card and jumper settings. After that you will have to go through various setup screens in ARC BIOS to configure system settings. Then you run <code>arcinst</code> to create a system partition and <code>setupldr</code> to install the OS. The rest of it is pretty uneventful. This is somewhat expected, as this was pretty much the only one and supported hardware combination, so must have been well tested. The only curious part is that the NT OS Kernel does not display any messages in text mode. Later versions of NT will display the build number and MP or UP kernel variant and dots indicating subsystem load progress. This is rather odd because I expected more char mode stuff from earlier NT version, but who knows.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="440" height="200" src="https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.11.02_PM-1.png" alt="" class="wp-image-13272" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.11.02_PM-1.png 440w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.11.02_PM-1-300x136.png 300w" sizes="auto, (max-width: 440px) 100vw, 440px" /><figcaption class="wp-element-caption">Jensen NT 3.1 Boot Menu</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="819" src="https://virtuallyfun.com/wp-content/uploads/2023/10/winnt31-1024x819.png" alt="" class="wp-image-13295" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/winnt31-1024x819.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/winnt31-300x240.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/winnt31-768x614.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/winnt31-375x300.png 375w, https://virtuallyfun.com/wp-content/uploads/2023/10/winnt31.png 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Windows NT 3.1 on DEC Alpha AXP, DECpc 150 aka Jensen</figcaption></figure>



<p class="wp-block-paragraph"><strong>Service Pack Saga</strong></p>



<p class="wp-block-paragraph">If you are even vaguely familiar with installing Windows NT at all, you will know that the very first thing you have to perform after installation, is to apply a service pack. NT 3.1 did have service packs, up to SP3. The problem was that, as you may expect, RISC editions were nowhere to be found in 2023. The only thing I could come up with was <a href="http://www.win31.de/ent31.htm">http://www.win31.de/ent31.htm</a>, which at the time had a <strong>German</strong> AXP and MIPS SP3, but no English! <em>[It since has been updated&#8230;]</em>. I had to do some real detective work to track down an US-English AXP SP3 version. I spent a few days going through various random CDs and ftp site mirrors of that era, with little luck. Eventually I stumbled on this README file, stating:</p>



<pre class="wp-block-code"><code>Due to space constraints on the Windows NT Service Packs for
International Versions CD, the USA Service Pack version 3 is located on
the <em>Additional Windows NT Service Packs, Windows 3.11 versions, SDKs,
and DDKs CD</em> in the NTSRVPC3\USA directory.
</code></pre>



<p class="wp-block-paragraph">Bingo! After a few hits and missed I spotted this particular CDROM here: <a href="https://archive.org/details/microsoft-developer-network-january-1995-disc-4-of-15">https://archive.org/details/microsoft-developer-network-january-1995-disc-4-of-15</a> &#8211; Now the OS is finally &#8220;servicepacked&#8221; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"><strong>Applications!</strong></p>



<p class="wp-block-paragraph">OS by itself without apps is not much. While overall Alpha NT application outlook is pretty scanty I was able to find a several very interesting gems!</p>



<p class="wp-block-paragraph">Most importantly, thanks to <a href="https://christopherrivett.co.uk/2023/07/30/vms-and-nt-upgrades-on-the-jensen/#more-355" data-type="link" data-id="https://christopherrivett.co.uk/2023/07/30/vms-and-nt-upgrades-on-the-jensen/#more-355">Chris</a>, a <a href="https://9track.net/bits/dec/pc/AG-Q2CNA-RK.zip">DEC Windows NT Developers CD-ROM</a>! </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1016" src="https://virtuallyfun.com/wp-content/uploads/2023/10/disc-1024x1016.jpg" alt="" class="wp-image-13278" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/disc-1024x1016.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/disc-300x298.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/disc-150x150.jpg 150w, https://virtuallyfun.com/wp-content/uploads/2023/10/disc-768x762.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/disc-302x300.jpg 302w, https://virtuallyfun.com/wp-content/uploads/2023/10/disc.jpg 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The disk has an incredible amount of demo, freeware, public domain and shareware applications as well as DEC marketing material. </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1023" height="769" src="https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.30.09_PM.png" alt="" class="wp-image-13276" style="width:614px;height:455px" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.30.09_PM.png 1023w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.30.09_PM-300x226.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.30.09_PM-768x577.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.30.09_PM-399x300.png 399w" sizes="auto, (max-width: 1023px) 100vw, 1023px" /><figcaption class="wp-element-caption">Windows NT Developers CD for DEC Alpha NT 3.1</figcaption></figure>



<p class="wp-block-paragraph">You can get a lot of DEC proprietary software like C++, Fortran, PATHWORKS, DECtalk, as well as X servers, etc.</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/10/Screenshot_2023-07-29_at_1.45.21_PM-1024x768.png" alt="" class="wp-image-13277" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.45.21_PM-1024x768.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.45.21_PM-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.45.21_PM-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.45.21_PM-400x300.png 400w, https://virtuallyfun.com/wp-content/uploads/2023/10/Screenshot_2023-07-29_at_1.45.21_PM.png 1026w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">However I was particularly interested in some 3rd party commercial apps. </p>



<p class="wp-block-paragraph">For example there is an early version of <a href="https://virtuallyfun.com/2017/12/25/calamus-for-windows-nt-risc/" data-type="link" data-id="https://virtuallyfun.com/2017/12/25/calamus-for-windows-nt-risc/">DMC Calamus Desktop Publishing</a>. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="850" src="https://virtuallyfun.com/wp-content/uploads/2023/10/calamus-1024x850.png" alt="" class="wp-image-13289" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/calamus-1024x850.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/calamus-300x249.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/calamus-768x637.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/calamus-362x300.png 362w, https://virtuallyfun.com/wp-content/uploads/2023/10/calamus.png 1134w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">DMC Calamus desktop publishing on Windows NT 3.1 DEC Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">Also a demo version of a vintage, text-mode SlickEdit, way before it was replaced by the <a href="https://www.slickedit.com/" data-type="link" data-id="https://www.slickedit.com/">Visual SlickEdit </a>known today.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="652" height="331" src="https://virtuallyfun.com/wp-content/uploads/2023/10/slickedit.png" alt="" class="wp-image-13290" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/slickedit.png 652w, https://virtuallyfun.com/wp-content/uploads/2023/10/slickedit-300x152.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/slickedit-500x254.png 500w" sizes="auto, (max-width: 652px) 100vw, 652px" /><figcaption class="wp-element-caption">SlickEdit 2.3 on Windows NT 3.1 DEC Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">There also is WinDev editior, which is quite superior to Notepad and has some code editing goodies and shortcuts to SDK tools, making it something of a simple IDE.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="778" height="459" src="https://virtuallyfun.com/wp-content/uploads/2023/10/windev.png" alt="" class="wp-image-13292" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/windev.png 778w, https://virtuallyfun.com/wp-content/uploads/2023/10/windev-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/windev-768x453.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/windev-500x295.png 500w" sizes="auto, (max-width: 778px) 100vw, 778px" /><figcaption class="wp-element-caption">WinDev 1.56 on Windows NT 3.1 DEC Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">Another big source is <a href="https://archive.org/details/microsoft-32-bit-applications-sampler-for-windows-nt">Windows NT Application Sampler CDROM</a>, (<a href="https://www.si.edu/object/microsoft-32-bit-applications-sampler-windows-nt%3Anmah_1304593">also from Smithsonian)</a>.</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/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-1024x768.jpg" alt="" class="wp-image-13302" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/10/img-Microsoft-32-Bit-Applications-Sampler-for-Windows-NT-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">One of the coolest thing found there is a GUI text editor called WinEdit. It has a ton of features including syntax highlighting! It has since became my default to go editor / IDE on this system!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="726" height="485" src="https://virtuallyfun.com/wp-content/uploads/2023/10/winedit.png" alt="" class="wp-image-13291" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/winedit.png 726w, https://virtuallyfun.com/wp-content/uploads/2023/10/winedit-300x200.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/winedit-449x300.png 449w" sizes="auto, (max-width: 726px) 100vw, 726px" /><figcaption class="wp-element-caption">WinEdit 3.0E on Windows NT 3.1 DEC Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">There of course is a Windows NT SDK with the <a href="https://virtuallyfun.com/2018/03/11/microsoft-editor/" data-type="post" data-id="8226">M (MEP) editor</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="847" src="https://virtuallyfun.com/wp-content/uploads/2023/10/sdk.png" alt="" class="wp-image-13296" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/sdk.png 975w, https://virtuallyfun.com/wp-content/uploads/2023/10/sdk-300x261.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/sdk-768x667.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/sdk-345x300.png 345w" sizes="auto, (max-width: 975px) 100vw, 975px" /><figcaption class="wp-element-caption">Windows NT 3.1 SDK with M / MEP Editor on DEC Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">There also are quite few public domain apps and games, ports of GNU software, Micro Emacs, Kermit, etc.</p>



<p class="wp-block-paragraph"><strong>Update:</strong> CICA NT Shareware Collection has some interesting apps under the <a href="http://cd.textfiles.com/cica/cica9710/ALPHA/">/alpha</a> directory.</p>



<p class="wp-block-paragraph"><strong>High Resolution GPU</strong></p>



<p class="wp-block-paragraph">One of things that was troubling me for some time was rather low resolution of the default QVision graphics card. The maximum being only 1024&#215;768 is just not acceptable. Talking to several Jensen&#8217;s owners, no one even heard about anything better. However looking at the Windows setup options, I curiously noticed that the system does support one 1280&#215;1024 video card &#8211; <a href="https://en.wikipedia.org/wiki/Number_Nine_Visual_Technology#Number_Nine_Video_Cards_using_S3_Graphics_processors">Number 9 GXE</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="447" height="172" src="https://virtuallyfun.com/wp-content/uploads/2023/10/gfx.png" alt="" class="wp-image-13297" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/gfx.png 447w, https://virtuallyfun.com/wp-content/uploads/2023/10/gfx-300x115.png 300w" sizes="auto, (max-width: 447px) 100vw, 447px" /></figure>



<p class="wp-block-paragraph">I assumed that such card would simply be unobtanium in 2023. However, digging through some old catalogs and spare part listings, I managed to find a DEC part number, which is <strong>30-41800-01</strong>. Armed with this, I was able to find it via DEC spare part reseller that I often use. They had it in stock listed as &#8220;HIGH RES EISA 1280 x 1024 GRAPHICS&#8221;. The price wasn&#8217;t too bad either. A few days later I received this:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="13299" src="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-1024x768.jpg" alt="" class="wp-image-13299" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1019-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



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



<p class="wp-block-paragraph">After installation of the S3 driver (must be the Service Pack 3 version!) I was finally able to get 1280&#215;1024 from the poor thing!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="706" src="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1046-1024x706.jpg" alt="" class="wp-image-13301" srcset="https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1046-1024x706.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1046-300x207.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1046-768x530.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1046-435x300.jpg 435w, https://virtuallyfun.com/wp-content/uploads/2023/10/IMG_1046.jpg 1177w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">With this I should have a more cozy environment to compile and port even more apps <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">In future I want to try the Advanced Server edition as well as some early Betas with Alpha support. To be continued&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/10/02/windows-nt-3-1-on-dec-alpha-axp/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
		<item>
		<title>Joining NT 4 to a SAMBA Domain Controller</title>
		<link>https://virtuallyfun.com/2023/07/24/joining-nt-4-to-a-samba-domain-controller/</link>
					<comments>https://virtuallyfun.com/2023/07/24/joining-nt-4-to-a-samba-domain-controller/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 24 Jul 2023 23:46:54 +0000</pubDate>
				<category><![CDATA[64bit computing]]></category>
		<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Win64]]></category>
		<category><![CDATA[Windows NT 4.0]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=13029</guid>

					<description><![CDATA[or the Unbridled rage of living on the trailing edge. I hosted a Porting Party last where where I setup my Dec Alpha as a terminal server allowing people from all over the world to connect in and cross compile &#8230; <a href="https://virtuallyfun.com/2023/07/24/joining-nt-4-to-a-samba-domain-controller/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">or the Unbridled rage of living on the trailing edge.</p>



<p class="wp-block-paragraph">I hosted a Porting Party last where where I setup my Dec Alpha as a terminal server allowing people from all over the world to connect in and cross compile software for the <a href="https://virtuallyfun.com/2023/06/26/axp64-2210-installation-media-reconstruction/" target="_blank" rel="noreferrer noopener">64bit version of Windows for the Dec Alpha</a>.  While many problems were overcome, and many more remain, I have to say the most annoying thing was joining a domain hosted by a SAMBA server.</p>



<p class="wp-block-paragraph">In my mind, I though the easiest way to get files in &amp; out of the Alpha was not to use something like IIS/FTP where it would probably lead to end-less issues with text/binary/active/passive modes, but rather I should rent a VPS, install the OS default SAMBA and just map drives.  The benefit of the VPS is that it has a public address, so no NAT is required.  The VPS had an option for either CentOS (no) or Debian 10.  I went with the Debian, and did an in place upgrade to 11, then 12. Nothing special.</p>



<p class="wp-block-paragraph">I&#8217;d never actually used SAMBA as a domain controller before, but I thought this would be a fun experiment.  So the idea is then that the VPS running SAMBA is the Domain Controller, and my Alpha joins it as a member server.  Everyone else can use Windows or any SAMBA client and map drives, and then copy files to the VPS, and then copy back and forth from the Alpha to the VPS.  This part worked fine.</p>



<p class="wp-block-paragraph">What didn&#8217;t work was SAMBA version 4.</p>



<p class="wp-block-paragraph">I had come up with this config, based on the fragments of the default config, and and hints from <a rel="noreferrer noopener" href="https://wiki.samba.org/index.php/Setting_up_Samba_as_an_NT4_PDC_(Quick_Start)" target="_blank">samba.org</a>. </p>



<pre class="wp-block-code"><code>&#91;global]
    netbios name = PDC
    passdb backend = tdbsam
    server max protocol = NT1
    username map = /usr/local/samba/etc/username.map
    workgroup = ALPHAPARTY
    server string = Samba Server
    security = user
    hosts allow = 127.0.0.1, &lt;&lt;&lt;peoples networks...>>>
    load printers = yes
    log file = /usr/local/samba/var/log.%m
    max log size = 50
    passdb backend = tdbsam
    local master = yes
    os level = 33
    domain master = yes
    preferred master = yes
    domain logons = yes
    wins support = yes
    dns proxy = no
    add user script = /usr/sbin/useradd %u
    add group script = /usr/sbin/groupadd %g
    add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
    delete user script = /usr/sbin/userdel %u
    delete user from group script = /usr/sbin/deluser %u %g
    delete group script = /usr/sbin/groupdel %g
&#91;homes]
    comment = Home Directories
    browseable = no
    writable = yes
&#91;printers]
    comment = All Printers
    path = /usr/spool/samba
    browseable = no
    guest ok = no
    writable = no
    printable = yes
&#91;public]
    comment = share for everyone
    path = /public
    public = yes
    writable = yes
    printable = no
    creaet mask = 0777</code></pre>



<p class="wp-block-paragraph">I had endless issues with the machine account not being either created correctly or not being authenticated. I tried <a rel="noreferrer noopener" href="https://www.dekart.com/howto/howto_logon/howto_logon_samba/trust_acc" target="_blank">manually creating it</a>, to no avail. No matter what I tried it didn&#8217;t work.</p>



<p class="wp-block-paragraph">Working with NT 4.0 must be depreciated or something but no matter what I tried IT JUST DIDN&#8217;T WORK.</p>



<p class="wp-block-paragraph">Feeling outraged, I purged the old Samba, downloaded the source code to 3.6.25, built that, and using the same configuration I had tried to put together, it just worked.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-joining-the-domain.png"><img loading="lazy" decoding="async" width="830" height="330" src="https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-joining-the-domain.png" alt="" class="wp-image-13026" srcset="https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-joining-the-domain.png 830w, https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-joining-the-domain-300x119.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-joining-the-domain-768x305.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-joining-the-domain-500x199.png 500w" sizes="auto, (max-width: 830px) 100vw, 830px" /></a><figcaption class="wp-element-caption">Dec Alpha joining the SMB Domain</figcaption></figure>



<p class="wp-block-paragraph">Adding users was somewhat straight forward:</p>



<pre class="wp-block-code"><code>
useradd -M -s /bin/bash neozeed
passwd neozeed
/usr/local/samba/bin/smbpasswd -a neozeed
/usr/local/samba/bin/smbpasswd -e neozeed
mkdir /home/neozeed
chown neozeed /home/neozeed/</code></pre>



<p class="wp-block-paragraph">Creating both a Linux user &amp; directory, and the SAMBA credentials.  On the terminal server, all that remains was assigning a local home directory &amp; profile directories, as you really don&#8217;t want those over the WAN.</p>



<p class="wp-block-paragraph">I have no idea if this is a warning to others, or whatever the larger issue is.</p>



<h2 class="wp-block-heading">Porting Party II</h2>



<p class="wp-block-paragraph">At any rate I&#8217;ll be running another porting party this coming weekend.  I can host cross compiling fine, but we need people with the 64bit Whistler beta installed to test.  The best way to get details is over on <a rel="noreferrer noopener" href="https://discord.gg/HMwevcN" target="_blank">discord</a>.  Lately the IRC bridge is down more than it&#8217;s up, and I can&#8217;t effectively send out passwords &amp; get your network block to allow access to the RDP, since I&#8217;m not going to open up worldwide access to a Windows NT 4.0 SP5 machine.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://discord.gg/eCmXBUwx?event=1133184155547615273"><img loading="lazy" decoding="async" width="800" height="600" src="https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-64-porting-party-2.jpg" alt="" class="wp-image-13032" srcset="https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-64-porting-party-2.jpg 800w, https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-64-porting-party-2-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-64-porting-party-2-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/07/alpha-64-porting-party-2-400x300.jpg 400w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">Porting Party II</figcaption></figure>
</div>


<p class="wp-block-paragraph">So for anyone interested in porting their C/C++ to either the 32bit Alpha Windows, or 64bit Alpha Windows come join us on discord!</p>



<p class="wp-block-paragraph">I&#8217;ll fire up the Alpha on Friday afternoon GMT and expect the event to run all weekend!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/07/24/joining-nt-4-to-a-samba-domain-controller/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>AXP64 2210 Installation Media Reconstruction</title>
		<link>https://virtuallyfun.com/2023/06/26/axp64-2210-installation-media-reconstruction/</link>
					<comments>https://virtuallyfun.com/2023/06/26/axp64-2210-installation-media-reconstruction/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 26 Jun 2023 06:30:14 +0000</pubDate>
				<category><![CDATA[64bit computing]]></category>
		<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[Win64]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=12854</guid>

					<description><![CDATA[Introduction Unfortunately, during this amazing period, the Dec Alpha I had acquired specifically for this research had died. However, I was able to find an amazing group of people to not only go through with this research but take it &#8230; <a href="https://virtuallyfun.com/2023/06/26/axp64-2210-installation-media-reconstruction/">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/06/axp64-2000.png"><img loading="lazy" decoding="async" width="800" height="600" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-2000.png" alt="" class="wp-image-12884" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-2000.png 800w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-2000-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-2000-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-2000-400x300.png 400w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">Yes, Neko is ALPHA64 Powered!</figcaption></figure>



<p class="wp-block-paragraph"><strong>Introduction</strong></p>



<p class="wp-block-paragraph">Unfortunately, during this amazing period, the Dec Alpha I had acquired specifically for this research had died.  However, I was able to find an amazing group of people to not only go through with this research but take it upon themselves to provide an amazing working ISO image release!  Needless to say, this is beyond my knowledge, and this is obviously a guest post</p>



<h2 class="wp-block-heading">Background</h2>



<p class="wp-block-paragraph">In ~1997, Microsoft started work on a project dedicated to porting Windows NT to use 64-bit addressing on 64-bit machines. Before this, Windows NT used the 32-bit mode or ABI of 64-bit machines. This effort was internally referred to as &#8220;Sundown&#8221;, otherwise referred to as &#8220;Win64&#8221;. The ports consisted of not only to the Itanium/IA-64 architecture (which later shipped as Windows XP 64-Bit Edition) but also to the 64-bit DEC Alpha architecture.</p>



<p class="wp-block-paragraph">Compaq dropped support for Windows on Alpha in mid-1999, and Microsoft stopped the development of 32-bit Windows NT for Alpha soon afterwards, with Windows 2000 build 2128 (RC2) being the last build. Due to a lack of physical IA-64 hardware and the slowness of the simulator, Microsoft continued to work on the AXP64 port of Windows till mid-2000, to help fix general issues related to 64-bit addressing. You can read more about this project <a href="https://learn.microsoft.com/en-us/previous-versions/technet-magazine/cc718978(v=msdn.10)" target="_blank" rel="noreferrer noopener">here</a>.</p>



<p class="wp-block-paragraph">In May 2023, a disk image containing an installation of an AXP64 build of Windows XP (Whistler) build 2210 <a href="https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/" target="_blank" rel="noreferrer noopener">was discovered by a guest reader of this site</a>, and a team (amarioguy, neozeed, pivotman319, starfrost and Tenox) was later assembled to help make this release possible.</p>



<h2 class="wp-block-heading">Why Repack To ISO</h2>



<p class="wp-block-paragraph">When I saw <a href="https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/" target="_blank" rel="noreferrer noopener">the news about this build</a>, I asked my friends why didn’t neozeed or Tenox share the full disk image, they told me that the disk image contained PII (Personally Identifiable Data) and neeozeed would like to have them removed first. I have some experience with cleaning up Windows builds, so I joined their Discord server and offered to help, then I got sent a full sector dump of that disk. I scanned the build 2210 partition with a file recovery tool that I stole from a data recovery shop when I worked there, and to my amazement, quite a few files in the deleted \$WIN_NT.~LS directory (a place for holding temporary setup files) survived (more importantly, setupdd.sys, txtsetup.sif, setupldr and the hiv*.inf files). Since all the files required for a clean install from ISO/CD are there, this build can be repacked into an ISO which is guaranteed to contain no personal information!</p>



<h2 class="wp-block-heading">Recovery</h2>



<p class="wp-block-paragraph">The first thing I did was I recovered all of the files in the deleted \$WIN_NT.~LS directory, but since the integrity of files recovered from NTFS and FAT partitions cannot be guaranteed, I checked every single one of them. Most of those files were Microsoft Cabinet (CAB) archives, so I wrote a tool called CabChk to verify that 1) they are valid CAB archives, 2) there is only one file per archive, 3) the name of the compressed file is the same as the name of the archive and 4) the compressed file extracts fine. This helped me to verify most of those 4600 files, but I had to verify the remaining 300 or so files by hand because they’re not CAB archives and that task alone took days to complete. After verifying all the recovered files, it turned out that 85% of them survived while the remaining 15% didn’t.</p>



<h2 class="wp-block-heading">Repacking</h2>



<p class="wp-block-paragraph">A lot of those overwritten files are actually in the Windows directory (NT64) of that 2210 install, so I copied them out and recompressed the appropriate ones. I set my computer to the time zone Microsoft used and compressed them with the Cabinet Tool (CABARC) parameters Microsoft used. Microsoft used UTC-8 and the following CABARC parameters:</p>



<pre class="wp-block-code"><code>CABARC -m LZX:21 N &#91;output_cab] &#91;input_file]</code></pre>



<p class="wp-block-paragraph">After repacking and copying over the files, the number of missing files went from about 650 all the way down to roughly 30 :).</p>



<h2 class="wp-block-heading">Missing User Mode Setup Stub</h2>



<p class="wp-block-paragraph">Unfortunately, usetup.exe was one of those 30 or so files. It doesn’t do much as it’s a stub, but nonetheless without it, text mode setup won’t start. My original idea was to decompile I386 build 2211’s usetup.exe (as it has only about 20 functions) and recompile it for AXP64 with the toolchain discovered earlier on, but I had to wait for someone to cross compile it on an Alpha for me. While I was waiting, I searched that partition for substrings in the I386 usetup.exe and I got a match!</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1.png"><img loading="lazy" decoding="async" width="1024" height="574" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1-1024x574.png" alt="" class="wp-image-12855" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1-1024x574.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1-300x168.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1-768x430.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1-500x280.png 500w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover1.png 1373w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">It’s compressed, but since LZNT1 is a simple and weak-ish compression algorithm, you can sort of recognise the original data. I cobbled together an LZNT1 decompressor and decompressed that 32 KiB chunk, and indeed it’s the AXP64 usetup.exe!</p>



<pre class="wp-block-preformatted">E:\Projects\LZNTTool&gt;LZNTTool -d "E:\Whistler 2210 AXP64 Recovery\usetup_compressed_0.bin" "E:\Whistler 2210 AXP64 Recovery\usetup_0.bin"
Decompression successful.

E:\Projects\LZNTTool&gt;wsl hexdump -C -v -s 0x600 -n 0x200 "../../Whistler 2210 AXP64 Recovery/usetup_0.bin"</pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover-hexlist.png"><img loading="lazy" decoding="async" width="528" height="472" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover-hexlist.png" alt="" class="wp-image-12873" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover-hexlist.png 528w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover-hexlist-300x268.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover-hexlist-336x300.png 336w" sizes="auto, (max-width: 528px) 100vw, 528px" /></a></figure>
</div>


<p class="wp-block-paragraph">I then searched for strings expected to be in the second 32 KiB chunk and then the third chunk and so on, until I got all of them recovered. After decompressing all of the 5 chunks, I concatenated them together into one single executable and yay, we now have the original AXP64 usetup.exe!</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2.png"><img loading="lazy" decoding="async" width="1024" height="677" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2-1024x677.png" alt="" class="wp-image-12856" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2-1024x677.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2-300x198.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2-768x508.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2-454x300.png 454w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover2.png 1229w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<pre class="wp-block-code"><code>E:\Projects\PEChkSum&gt;PEChkSum "E:\Whistler 2210 AXP64 Recovery\usetup.exe"
Expected checksum is: 0x00035E4E
Actual checksum is: 0x00035E4E

"E:\Whistler 2210 AXP64 Recovery\usetup.exe" is valid.
</code></pre>



<h2 class="wp-block-heading">Broken Driver Cabinet</h2>



<p class="wp-block-paragraph">pivotman319 pointed out to me that some files in driver.cab were dead, and indeed, Setup did not work with that broken cabinet:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover3.jpg"><img loading="lazy" decoding="async" width="944" height="728" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover3.jpg" alt="" class="wp-image-12857" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover3.jpg 944w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover3-300x231.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover3-768x592.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover3-389x300.jpg 389w" sizes="auto, (max-width: 944px) 100vw, 944px" /></a><figcaption class="wp-element-caption">Crash to the NT firmware Monitor</figcaption></figure>



<p class="wp-block-paragraph">There were 2 copies of driver.cab on that disk, sadly the deleted one in $WIN_NT.~LS got overwritten and the one in \NT64\Driver Cache\axp64… well, 68 errors <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" />:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="671" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover4-1024x671.png" alt="" class="wp-image-12858" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover4-1024x671.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover4-300x197.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover4-768x503.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover4-458x300.png 458w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover4.png 1186w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Looking at the broken files, I noticed a pattern – all of them came from 3 blocks – 5, 36 and 37. What on Earth are &#8220;blocks&#8221;? Well, let’s talk about how CAB archives work first.</p>



<p class="wp-block-paragraph">Files in CAB archives are stored in blocks, where each block stores 1 or more files. When files are added to a CAB archive, they are all concatenated together into one big file. The concatenated big file is then split into multiple sub-blocks (with default size of 0x8000 bytes) and each of them gets compressed and then concatenated together to form the compressed block. So, for small corruptions (bit-rots and etc.), theoretically only 0x8000 bytes are lost and the rest should still be recoverable, but tools like 7-Zip will refuse to extract anything beyond the point of corruption.</p>



<p class="wp-block-paragraph">Now looking at the corruption in driver.cab, 2 of the 3 blocks can be fully recovered because we have all of those files in uncompressed form. Block 5 contains mostly printer-related files that are arch- and build-independent, so they can all be borrowed from build 2211 i386. Block 37 has only 1 broken file (win32k.sys) which exists on the hard drive (in system32). To fix these blocks, I simply took the uncompressed files, compressed them and replaced the broken blocks with the newly created ones.</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5.png"><img loading="lazy" decoding="async" width="1024" height="573" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5-1024x573.png" alt="" class="wp-image-12859" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5-1024x573.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5-300x168.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5-768x430.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5-500x280.png 500w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover5.png 1185w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">And after fixing block 37:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6.png"><img loading="lazy" decoding="async" width="1024" height="573" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6-1024x573.png" alt="" class="wp-image-12860" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6-1024x573.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6-300x168.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6-768x430.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6-500x280.png 500w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover6.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">I then ran my CabScan tool on the fixed CAB and as expected, there is only one bad sub-block left:</p>



<pre class="wp-block-code"><code>E:\Projects\CabScan&gt;CabScan "E:\Whistler 2210 AXP64 Recovery\driver (fix).cab"
Offset 0x0253FD75:
    Expected checksum is 0x568C0AC3
    Checksum is 0x1CEBB9DE
    Original size is 0x00008000
    Compressed size is 0x00003862

Detected 1 bad sub-block(s) in 1 bad block(s).
</code></pre>



<p class="wp-block-paragraph">So, what can we say about the corruption?</p>



<ol class="wp-block-list">
<li>Size: 4 bytes</li>



<li>Location: Last 4 bytes of a 0x2000 section</li>



<li>Pattern: Starts with 00 F0 (possibly the result of a buggy NTFS driver)</li>
</ol>



<p class="wp-block-paragraph">Knowing these, I immediately located the 4 corrupted bytes in block 36:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7.png"><img loading="lazy" decoding="async" width="1024" height="573" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7-1024x573.png" alt="" class="wp-image-12861" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7-1024x573.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7-300x168.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7-768x430.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7-500x280.png 500w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover7.png 1142w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">So how did I recover those 4 bytes, did I brute force them? Nope, I used the checksum to calculate them! Here is the checksum algorithm Microsoft used for CAB archives:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8.jpg"><img loading="lazy" decoding="async" width="1024" height="706" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8-1024x706.jpg" alt="" class="wp-image-12862" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8-1024x706.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8-300x207.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8-768x530.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8-435x300.jpg 435w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover8.jpg 1070w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">CAB checksum algorithm</figcaption></figure>



<p class="wp-block-paragraph">And as you can see, it’s very simple, so it took me almost no time to work out the 4 missing bytes (4A ED 16 71) from the checksum 0x568C0AC3! With block 36 fixed, as expected, all files are now good!</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9.png"><img loading="lazy" decoding="async" width="1024" height="672" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9-1024x672.png" alt="" class="wp-image-12863" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9-1024x672.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9-300x197.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9-768x504.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9-457x300.png 457w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover9.png 1128w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Buggy Setup Loader</h2>



<p class="wp-block-paragraph">I thought I got everything necessary recovered and fixed, so I packaged up the files and sent them to G-Nug85 to test… and it didn’t work:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="932" height="659" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover10.jpg" alt="" class="wp-image-12864" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover10.jpg 932w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover10-300x212.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover10-768x543.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover10-424x300.jpg 424w" sizes="auto, (max-width: 932px) 100vw, 932px" /></figure>



<p class="wp-block-paragraph">It failed to find A321064.PAL in the [SourceDisksFiles] section of txtsetup.sif. Well, this is an AXP64 build and A321064.PAL is a 32-bit PALcode image… why would it be there? Needless to say, copying that file to the disc image didn’t help. I have literally spent days on this stupid issue and who would have expected this:</p>



<pre class="wp-block-code"><code>E:\Whistler 2210 AXP64 Recovery&gt;wsl strings -t x SETUPLDR | wsl grep -i '.pal'
  91f68 A321064.PAL
</code></pre>



<p class="wp-block-paragraph">The culprit of the problem was they hard coded the name &#8220;A321064.PAL&#8221;… in the setup loader executable… how stupid!</p>



<p class="wp-block-paragraph">We can tell from this that Microsoft has never made ISOs or discs for AXP64 builds, otherwise they would’ve found and fixed this bug. Well, maybe they did eventually try installing AXP64 builds from disc, because it’s fixed by the time of Windows XP SP1, but that’s long after this build:</p>



<pre class="wp-block-code"><code>#if defined(_AXP64_)
        SlGetDisk("a121165.p64");
#else
        SlGetDisk("A321064.PAL");
#endif
</code></pre>



<p class="wp-block-paragraph">Oh well, I replaced the hard coded &#8220;A321064.PAL&#8221; with &#8220;a121165.p64&#8221; and what do you know, it’s working!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover11.jpg"><img loading="lazy" decoding="async" width="878" height="545" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover11.jpg" alt="" class="wp-image-12865" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover11.jpg 878w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover11-300x186.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover11-768x477.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover11-483x300.jpg 483w" sizes="auto, (max-width: 878px) 100vw, 878px" /></a></figure>



<h2 class="wp-block-heading">Finishing Touches</h2>



<p class="wp-block-paragraph">That install went smoothly, but one error did pop up during second stage setup:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover12.jpg"><img loading="lazy" decoding="async" width="932" height="671" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover12.jpg" alt="" class="wp-image-12866" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover12.jpg 932w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover12-300x216.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover12-768x553.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover12-417x300.jpg 417w" sizes="auto, (max-width: 932px) 100vw, 932px" /></a></figure>



<p class="wp-block-paragraph">A missing driver – big deal, hey? We actually have the build 2209 AXP64 version of this driver, so I injected it to the ISO and Setup happily accepted it.</p>



<p class="wp-block-paragraph">I’ve also copied the Arc Installation Program (ARCINST) from Windows 2000 build 2128 AXP32 to the AXP64 directory of the ISO, because it is required for disk partitioning if you don’t have AlphaBIOS (and yes, it works because it’s not a Windows executable).</p>



<h2 class="wp-block-heading">Supported Machines</h2>



<p class="wp-block-paragraph">Microsoft compiled several HALs for this build, but not all of them are listed in txtsetup.sif, the following machines are supported by default:</p>



<ul class="wp-block-list">
<li>Digital Personal Workstation A-Series</li>



<li>Digital AlphaServer 4&#215;00 5/xxx Family</li>



<li>Digital AlphaServer/AlphaStation 1200 5/xxx Family</li>



<li>Digital Alpha 21264/Tsunami Uniprocessor</li>



<li>Digital Alpha 21264/Tsunami Multiprocessor</li>
</ul>



<p class="wp-block-paragraph">The following machines may be supported if you replace textsetup.sif with a modified version:</p>



<ul class="wp-block-list">
<li>Digital Alpha EB164</li>



<li>Digital Alpha PC164SX</li>



<li>Digital Alpha XL 300/366 Family</li>



<li>Digital AlphaPC 164LX</li>



<li>Digital AlphaServer 1000 5/xxx Family</li>



<li>Digital AlphaServer 1000a 5/xxx Family</li>



<li>AlphaServer 800 5/xxx (Corelle)</li>



<li>AlphaStation 600A 5/500 (Alcor Primo)</li>
</ul>



<p class="wp-block-paragraph">We have only tested this build on the Digital Personal Workstation A-Series, AlphaServer DS10 and the AlphaServer 800, so there is no guarantee that the other HALs work (though they should).</p>



<p class="wp-block-paragraph">Also, since this is a checked build, it does run slower than a retail build, and by default it will expect you to have a kernel debugger attached.  Be sure to add the /NODEBUG flag to the bootloader to improve performance.  I had noticed the SDL spite test demo going from 60fps to 70fps on my Alpha Personal Workstation 500a before it had died.</p>



<h2 class="wp-block-heading">For Preservation</h2>



<p class="wp-block-paragraph">As I have said earlier on, Microsoft has never made ISOs/discs for AXP64 builds, so please don’t preserve the ISO file (eg: don’t upload it to BetaArchive). I know BA prefer ISOs over folder dumps, so let me tell you this mrpijey, the ISO is a franken-build with a patched Setup Loader and files from 2128, 2209 and 2211. We have a folder dump of the original files from the \NTDev network share with original high-precision timestamps just for preservation, so please for the sake of preservation, use this. Also don’t even think about creating an ISO out of the folder dump, you’ll end up with a non-existent thing that doesn’t work.</p>



<h2 class="wp-block-heading">Download</h2>



<p class="wp-block-paragraph">ISO for Installation: <a href="https://mega.nz/file/q5AhhDJR#MsLYxxvmAdYDQ101fUHoGyzJ5Pk0EFsc2xdYH1p9qxQ" target="_blank" rel="noreferrer noopener">https://mega.nz/file/q5AhhDJR#MsLYxxvmAdYDQ101fUHoGyzJ5Pk0EFsc2xdYH1p9qxQ</a><br><a href="https://archive.org/details/axp64-2210-installable" target="_blank" rel="noreferrer noopener">Whistler 2210 axp64 installable</a></p>



<p class="wp-block-paragraph">Folder Dump for Preservation: <a href="https://mega.nz/file/r5gE3RxQ#4VfviMdQo44wJZT0df0cw8o4kE30lvSQKBZklma0mtg" target="_blank" rel="noreferrer noopener">https://mega.nz/file/r5gE3RxQ#4VfviMdQo44wJZT0df0cw8o4kE30lvSQKBZklma0mtg</a></p>



<p class="wp-block-paragraph">Modified TXTSETUP.SIF For Other Machines: <a href="https://mega.nz/file/zsBVAJDD#5oQVM6U2AwseTJ54lOmN1E7BHTDFuwOuWdZOykmXP8E" target="_blank" rel="noreferrer noopener">https://mega.nz/file/zsBVAJDD#5oQVM6U2AwseTJ54lOmN1E7BHTDFuwOuWdZOykmXP8E</a></p>



<h2 class="wp-block-heading">Special Thanks</h2>



<ul class="wp-block-list">
<li>to the person who sent us the disk image</li>



<li>to Microsoft for not wiping that disk before throwing it away</li>



<li>to pivotman319 for verifying recovered files and finding missing files</li>



<li>to Tenox for testing</li>



<li>to G-Nug85 for testing and providing photos used in this post</li>



<li>to Furball for testing</li>



<li>to lbdm for testing</li>



<li>to myself… I guess?</li>
</ul>



<h2 class="wp-block-heading">Special Offer &#8211; Windows 2000 RC2 AXP32 Full ISO</h2>



<p class="wp-block-paragraph">The ISO on BetaArchive is the same as the ISO on WinWorld, which was originally named usa_2128_axpfre_win2000.pro_beta3_cairo.iso… hmm, that doesn’t sound very &#8216;Microsoft&#8217;!</p>



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



<p class="wp-block-paragraph">Yep, definitely not original. Even worse, SETUP.EXE is broken/truncated:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14.png"><img loading="lazy" decoding="async" width="1024" height="671" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14-1024x671.png" alt="" class="wp-image-12868" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14-1024x671.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14-300x197.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14-768x503.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14-458x300.png 458w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover14.png 1056w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">The fact that the AXP32 2128 ISO we’ve had for over a decade is both unoriginal and incomplete is truly shocking! Well, I have something to offer &#8211; an at least complete Windows 2000 build 2128 AXP32 ISO from my private collection:</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15.png"><img loading="lazy" decoding="async" width="1024" height="671" src="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15-1024x671.png" alt="" class="wp-image-12869" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15-1024x671.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15-300x197.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15-768x503.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15-458x300.png 458w, https://virtuallyfun.com/wp-content/uploads/2023/06/axp64-recover15.png 1056w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">The SETUP.EXE in this ISO is good and complete! The CDIMAGE parameters used to build this image matches what was used to build ISOs of AXP32 builds from the same era and the disc label (W2PAS_EN) is much more sensible than &#8220;Cairo_2128&#8221;. The only thing that doesn’t make sense is the timestamp – 1999-09-23 12:00:00. Microsoft used 1999-09-10 as the timestamp for all other copies of build 2128, so I’m not sure why this one is different. It’s worth noting that all files from the incomplete ISO also have the strange 1999-09-23 timestamp, so I guess it’s not a coincidence ¯\_(ツ)_/¯.</p>



<p class="wp-block-paragraph">Download: <a rel="noreferrer noopener" href="https://mega.nz/file/qoYyUbLB#oKArX_Qqh_kjnESnT6dQD8NGTg05_CMhKMxW4FKuhjE" target="_blank">https://mega.nz/file/qoYyUbLB#oKArX_Qqh_kjnESnT6dQD8NGTg05_CMhKMxW4FKuhjE</a><a href="https://archive.org/details/w-2-pas-en">Windows 2000 build 2128 DEC Alpha</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/06/26/axp64-2210-installation-media-reconstruction/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
		<item>
		<title>Windows 2000 64-bit for Alpha AXP / AXP64 / ALPHA64 (build 2210)</title>
		<link>https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/</link>
					<comments>https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/#comments</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Mon, 15 May 2023 12:42:21 +0000</pubDate>
				<category><![CDATA[64bit computing]]></category>
		<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[Win64]]></category>
		<category><![CDATA[2210]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[axp]]></category>
		<category><![CDATA[axp64]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=12532</guid>

					<description><![CDATA[(this is a guest post by Antoni Sawicki aka tenox) Hinted by friends on Discord, Neozeed recently &#8220;re-discovered&#8221; a Win64 compiler for AXP64 / ALPHA64. It came as part of Windows Platform SDK from 1999. Microsoft wanted developers to test-compile &#8230; <a href="https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/">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">Hinted by friends on <a href="https://discord.gg/HMwevcN" target="_blank" rel="noreferrer noopener">Discord</a>, Neozeed recently <a href="https://virtuallyfun.com/2023/05/05/hiding-in-plain-sight-the-64bit-dec-alpha-c-compiler/" data-type="URL" data-id="https://virtuallyfun.com/2023/05/05/hiding-in-plain-sight-the-64bit-dec-alpha-c-compiler/">&#8220;re-discovered&#8221; a Win64 compiler </a>for AXP64 / ALPHA64. It came as part of Windows Platform SDK from 1999. Microsoft wanted developers to test-compile their code to see if it&#8217;s &#8220;64bit ready&#8221;, well ahead of the 64bit hardware even being available. However, this was just a cross-compiler and there was no way of running any of the binaries. Trying the compiler, just for fun, I built Alpha64 version of <a href="https://github.com/tenox7/aclock" data-type="URL" data-id="https://github.com/tenox7/aclock">Aclock</a> &#8211; with zero hopes of ever being able to run it. </p>



<p class="wp-block-paragraph">Sadly, 64-bit Alpha AXP Windows was never released outside of Redmond. There are some known surviving machines with AXP64 stored at Microsoft Archives. In fact I saw one with my own eyes, last time I visited there some 10 years ago:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/05/AXP64.jpg"><img loading="lazy" decoding="async" width="1024" height="684" src="https://virtuallyfun.com/wp-content/uploads/2023/05/AXP64.jpg" alt="DEC Alpha with AXP64 Windows at Microsoft Archives." class="wp-image-12533" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/AXP64.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/05/AXP64-300x200.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/AXP64-768x513.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/05/AXP64-449x300.jpg 449w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">DEC Alpha with AXP64 Windows codename &#8220;Sundown&#8221;, at Microsoft Archives, 2014</figcaption></figure>



<p class="wp-block-paragraph">The machine in picture above was featured in <a href="https://learn.microsoft.com/en-us/previous-versions/technet-magazine/cc718978(v=msdn.10)" data-type="URL" data-id="https://learn.microsoft.com/en-us/previous-versions/technet-magazine/cc718978(v=msdn.10)">a blog post by Raymond Chen</a>, which is a must read on this topic. It will give you background info on the whole Alpha 64bit situation. </p>



<p class="wp-block-paragraph">And that would be the end of the story&#8230; if not for one generous reader, who contacted Neozeed after his previous <a href="https://virtuallyfun.com/2023/05/05/hiding-in-plain-sight-the-64bit-dec-alpha-c-compiler/" data-type="URL" data-id="https://virtuallyfun.com/2023/05/05/hiding-in-plain-sight-the-64bit-dec-alpha-c-compiler/">post</a>, and shared a disk image&#8230; containing non other but a 64bit build of Windows 2000 for Alpha AXP! The reader got it from a lot of random hard disks, bought from an e-waste and completely forgot about it until they saw the blog post!</p>



<p class="wp-block-paragraph">The image was previously installed on <a href="https://en.wikipedia.org/wiki/Digital_Personal_Workstation" data-type="URL" data-id="https://en.wikipedia.org/wiki/Digital_Personal_Workstation">Digital Personal Workstation</a>. Having a PWS500 with ZuluSCSI at hand, I was able to slap the image on an SD card and boot it up:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/05/splash.png"><img loading="lazy" decoding="async" width="637" height="475" src="https://virtuallyfun.com/wp-content/uploads/2023/05/splash.png" alt="" class="wp-image-12534" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/splash.png 637w, https://virtuallyfun.com/wp-content/uploads/2023/05/splash-300x224.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/splash-402x300.png 402w" sizes="auto, (max-width: 637px) 100vw, 637px" /></a><figcaption class="wp-element-caption">Windows 2000 Alpha64 Splash Screen</figcaption></figure>



<p class="wp-block-paragraph">The system BSOD shortly after. Turns out, this is a checked (debug) build and requires a permanently attached kernel debugger to even boot up (yes tried /nodebug flag). Initially <code>WinDbg</code> and <code>kd.exe</code> refused to work, as the target CPU did not match the host (the exact error code is: <code>KD Version has unknown processor architecture</code>). After some deliberation and help from friends, I learned that <code>alphakd.exe</code> can be run on x86 machine to cross debug an Alpha target. Most importantly it works with AXP64! We were able to continue the boot!</p>



<p class="wp-block-paragraph">Another problem was that the system came up with &#8220;Found New Hardware&#8221; wizard and there was no functioning keyboard and mouse to click through it. Yes, I tried safe mode, VGA mode, etc., but nothing worked. The system was completely stuck on this dialog:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://virtuallyfun.com/wp-content/uploads/2023/05/newhw.png"><img loading="lazy" decoding="async" width="439" height="318" src="https://virtuallyfun.com/wp-content/uploads/2023/05/newhw.png" alt="" class="wp-image-12558" style="width:373px;height:271px" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/newhw.png 439w, https://virtuallyfun.com/wp-content/uploads/2023/05/newhw-300x217.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/newhw-414x300.png 414w" sizes="auto, (max-width: 439px) 100vw, 439px" /></a></figure>
</div>


<p class="wp-block-paragraph">Fortunately, the network card worked. Neozeed and I built a 64bit version of <a href="https://github.com/neozeed/rlogin-NT" target="_blank" rel="noreferrer noopener">rlogin daemon</a> and hacked it in to the registry. Then we remotely executed a <code>VBScript</code> that clicked through 20+ &#8220;found new hardware&#8221; and &#8220;install unsigned driver&#8221; dialogs. Eventually, a <strong>PCI to ISA bridge</strong> was found and keyboard and mouse came up!</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64.png"><img loading="lazy" decoding="async" width="1024" height="818" src="https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64-1024x818.png" alt="" class="wp-image-12535" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64-1024x818.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64-300x240.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64-768x614.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64-375x300.png 375w, https://virtuallyfun.com/wp-content/uploads/2023/05/aclock-axp64.png 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Aclock running on 64bit Windows on Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">Unfortunately there are no identifying marks that would easily prove that this is a 64bit Alpha AXP build. The only way to tell is because there is no WOW, even for AXP32. You can&#8217;t run 32bit Alpha binaries. It will only run executables produced with the ALPHA64 compiler. This also means in practice there is no self hosted, native compiler. You have to cross compile on 32bit NT4 or 2KRC.</p>



<p class="wp-block-paragraph">For sake of search engines the build number is <strong>2210</strong>, the full string: <code>2210.main.000302-1934</code>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="767" height="548" src="https://virtuallyfun.com/wp-content/uploads/2023/05/buildlabel-1.png" alt="" class="wp-image-12608" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/buildlabel-1.png 767w, https://virtuallyfun.com/wp-content/uploads/2023/05/buildlabel-1-300x214.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/buildlabel-1-420x300.png 420w" sizes="auto, (max-width: 767px) 100vw, 767px" /></figure>



<p class="wp-block-paragraph"><strong>Update</strong> I have copied and ran a x86 `winmsd.exe` from Windows NT 4.0 and this came out:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="445" height="457" src="https://virtuallyfun.com/wp-content/uploads/2023/06/msd.png" alt="" class="wp-image-12755" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/msd.png 445w, https://virtuallyfun.com/wp-content/uploads/2023/06/msd-292x300.png 292w" sizes="auto, (max-width: 445px) 100vw, 445px" /></figure>



<p class="wp-block-paragraph">How is it possible to run x86 binary? Because of <strong>Fx!32</strong>.</p>



<p class="wp-block-paragraph"><strong>Update:</strong> So what else is in the image?</p>



<p class="wp-block-paragraph">First of all, everyone is asking about <strong>Pinball</strong>&#8230; Yes, it&#8217;s there, but it won&#8217;t start:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="819" src="https://virtuallyfun.com/wp-content/uploads/2023/05/axp64pinball-1024x819.png" alt="" class="wp-image-12614" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/axp64pinball-1024x819.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/05/axp64pinball-300x240.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/axp64pinball-768x615.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/05/axp64pinball-375x300.png 375w, https://virtuallyfun.com/wp-content/uploads/2023/05/axp64pinball.png 1281w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In addition, I can&#8217;t open the event details. Maybe one day we can debug it with NTSD.</p>



<p class="wp-block-paragraph">Other than that, it has some basic stuff, the every other Windows would have. Internet Explorer 5.5, agent: <code>Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)</code>. Sadly <code>msinfo32</code> doesn&#8217;t work, unable to connect to a service. </p>



<p class="wp-block-paragraph">The image, similar to other private builds, comes with <a href="https://devblogs.microsoft.com/oldnewthing/20181224-00/?p=100545" data-type="URL" data-id="https://devblogs.microsoft.com/oldnewthing/20181224-00/?p=100545">Internal Developer Workstation (IDW)</a>. It&#8217;s a set of developer tools, that most of (but not all) were released in Platform SDK and/or Windows Resource Kit.</p>



<p class="wp-block-paragraph">There are a bunch of unix like utilities, <code>cp</code>, <code>mv</code>, <code>ls</code>, <code>kill</code>, etc.:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="677" height="338" src="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.29.25-PM.png" alt="" class="wp-image-12625" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.29.25-PM.png 677w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.29.25-PM-300x150.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.29.25-PM-500x250.png 500w" sizes="auto, (max-width: 677px) 100vw, 677px" /></figure>



<p class="wp-block-paragraph"><code>build.exe</code> version 4.03.2209</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="676" height="338" src="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.33.03-PM.png" alt="" class="wp-image-12626" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.33.03-PM.png 676w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.33.03-PM-300x150.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.33.03-PM-500x250.png 500w" sizes="auto, (max-width: 676px) 100vw, 676px" /></figure>



<p class="wp-block-paragraph">It can build for AXP32 and IA64:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="675" height="338" src="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.34.07-PM.png" alt="" class="wp-image-12627" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.34.07-PM.png 675w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.34.07-PM-300x150.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.34.07-PM-500x250.png 500w" sizes="auto, (max-width: 675px) 100vw, 675px" /></figure>



<p class="wp-block-paragraph">There also are two famous text editors, <a href="https://virtuallyfun.com/2018/03/11/microsoft-editor/" data-type="post" data-id="8226">Microsoft Editor aka MEP / Z</a> and Stevie, VI clone:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="659" height="339" src="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.35.10-PM.png" alt="" class="wp-image-12628" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.35.10-PM.png 659w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.35.10-PM-300x154.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/Screenshot-2023-05-19-at-10.35.10-PM-500x257.png 500w" sizes="auto, (max-width: 659px) 100vw, 659px" /></figure>



<p class="wp-block-paragraph">Lastly, lets explore 64bit Alpha AXP gaming scene! While Pinball doesn&#8217;t work, IDW comes with an impressive amount of games. Microsoft engineers must have been busy playing these while waiting for builds to complete&#8230;</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="820" src="https://virtuallyfun.com/wp-content/uploads/2023/05/64bit-gaming-1024x820.png" alt="" class="wp-image-12617" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/64bit-gaming-1024x820.png 1024w, https://virtuallyfun.com/wp-content/uploads/2023/05/64bit-gaming-300x240.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/64bit-gaming-768x615.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/05/64bit-gaming-375x300.png 375w, https://virtuallyfun.com/wp-content/uploads/2023/05/64bit-gaming.png 1278w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">64-bit gaming on Alpha AXP</figcaption></figure>



<p class="wp-block-paragraph">We have 4 different card games, FreeCell, Solitaire, Gold and Cruel. Also Taipei game, TicTactics, Reversi, Minesweeper and Snake.</p>



<p class="wp-block-paragraph">AXP64 NT also has fully working OpenGL Screensavers:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="410" height="456" src="https://virtuallyfun.com/wp-content/uploads/2023/05/64bisaverz.png" alt="" class="wp-image-12623" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/64bisaverz.png 410w, https://virtuallyfun.com/wp-content/uploads/2023/05/64bisaverz-270x300.png 270w" sizes="auto, (max-width: 410px) 100vw, 410px" /></figure>



<p class="wp-block-paragraph">If you want to see this live in action. We going to be exhibiting on <a href="https://vcfed.org/events/vintage-computer-festival-west/vcf-west-exhibits/" data-type="URL" data-id="https://vcfed.org/events/vintage-computer-festival-west/vcf-west-exhibits/">VCF West 2023 in August</a>, alongside other NT RISC machines. Come and see us!</p>



<p class="wp-block-paragraph"><a href="https://betawiki.net/wiki/Windows_XP_build_2210" data-type="link" data-id="https://betawiki.net/wiki/Windows_XP_build_2210">BetaArchive Wiki Link</a></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-alpha-axp/feed/</wfw:commentRss>
			<slash:comments>48</slash:comments>
		
		
			</item>
		<item>
		<title>OpenBSD 7.3 on the es40 Dec Alpha emulator!</title>
		<link>https://virtuallyfun.com/2023/05/10/openbsd-7-3-on-the-es40-dec-alpha-emulator/</link>
					<comments>https://virtuallyfun.com/2023/05/10/openbsd-7-3-on-the-es40-dec-alpha-emulator/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 10 May 2023 11:01:34 +0000</pubDate>
				<category><![CDATA[64bit computing]]></category>
		<category><![CDATA[DEC]]></category>
		<category><![CDATA[DEC Alpha]]></category>
		<category><![CDATA[Digitial]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[x86_64]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=12515</guid>

					<description><![CDATA[Yes OpenBSD 7.3 Alpha boots, and installs! And it&#8217;s incredibly slow. But it&#8217;s running! For those impatient just download it here: OpenBSD73_Alpha_es40.7z The root password is: password I had es40 built this from gdwnldsKSC but I amputated the pcap based &#8230; <a href="https://virtuallyfun.com/2023/05/10/openbsd-7-3-on-the-es40-dec-alpha-emulator/">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/05/OpenBSD-7.3-Alpha-on-es40-emulator.jpg"><img loading="lazy" decoding="async" width="1024" height="676" src="https://virtuallyfun.com/wp-content/uploads/2023/05/OpenBSD-7.3-Alpha-on-es40-emulator-1024x676.jpg" alt="" class="wp-image-12516" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/OpenBSD-7.3-Alpha-on-es40-emulator-1024x676.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/05/OpenBSD-7.3-Alpha-on-es40-emulator-300x198.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/OpenBSD-7.3-Alpha-on-es40-emulator-768x507.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/05/OpenBSD-7.3-Alpha-on-es40-emulator-455x300.jpg 455w, https://virtuallyfun.com/wp-content/uploads/2023/05/OpenBSD-7.3-Alpha-on-es40-emulator.jpg 1073w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">Yes <a href="https://www.openbsd.org/" target="_blank" rel="noreferrer noopener">OpenBSD 7.3 Alpha</a> boots, and installs! And it&#8217;s incredibly slow.  But it&#8217;s running!</p>



<p class="wp-block-paragraph">For those impatient just download it here: <a href="https://sourceforge.net/projects/bsd42/files/4BSD%20under%20Windows/v0.4/OpenBSD73_Alpha_es40.7z/download" target="_blank" rel="noreferrer noopener">OpenBSD73_Alpha_es40.7z</a></p>



<p class="wp-block-paragraph">The root password is: password</p>



<p class="wp-block-paragraph">I had <a rel="noreferrer noopener" href="https://github.com/gdwnldsKSC/es40" target="_blank">es40</a> built this from <a rel="noreferrer noopener" href="https://github.com/gdwnldsKSC" target="_blank">gdwnldsKSC</a> but I amputated the pcap based networking code. I just wanted a smooth compile.  The install took over an hour, as there is ssh keys to generate, and re-ordering and re-linking involved.  All of which I disabled in the above image.  The root password is password.</p>



<p class="wp-block-paragraph">Since people never read this, the password for root is password.</p>



<p class="wp-block-paragraph">One weird thing is that OpenBSD will crash on an assert if you are using the VGA console, so a serial console is a must.  After it boots, as you can see the VGA console works fine.</p>



<p class="wp-block-paragraph">The games work just fine as well.  I didn&#8217;t bother installing the compilers as it took forever to decompress the base file, and I figured if you wanted it, you could install it.  Also since I amputated the networking, there is no X11.</p>



<p class="wp-block-paragraph">For those of you who want to play with virtual Dec Alpha stuff this one is pretty simple enough.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-rom-prompt.png"><img loading="lazy" decoding="async" width="661" height="418" src="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-rom-prompt.png" alt="" class="wp-image-12520" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-rom-prompt.png 661w, https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-rom-prompt-300x190.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-rom-prompt-474x300.png 474w" sizes="auto, (max-width: 661px) 100vw, 661px" /></a></figure>



<p class="wp-block-paragraph">At the P00>>> prompt type in</p>



<pre class="wp-block-code"><code>boot dka0</code></pre>



<p class="wp-block-paragraph">And in no time it&#8217;ll boot up (takes about 2-3 minutes)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="661" height="418" src="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-booted.png" alt="" class="wp-image-12521" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-booted.png 661w, https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-booted-300x190.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-booted-474x300.png 474w" sizes="auto, (max-width: 661px) 100vw, 661px" /></figure>



<p class="wp-block-paragraph">And for those of you who are into these things:</p>



<pre class="wp-block-code"><code>OpenVMS PALcode V1.98-104, Tru64 UNIX PALcode V1.92-105

starting console on CPU 0
initialized idle PCB
initializing semaphores
initializing heap
initial heap 240c0
memory low limit = 1b0000 heap = 240c0, 17fc0
initializing driver structures
initializing idle process PID
initializing file system
initializing hardware
initializing timer data structures
lowering IPL
CPU 0 speed is 1000 MHz
create dead_eater
create poll
create timer
create powerup
access NVRAM
Memory size 512 MB
testing memory
...
probe I/O subsystem
probing hose 1, PCI
probing hose 0, PCI
probing PCI-to-ISA bridge, bus 1
bus 0, slot 1 -- pka -- NCR 53C810
bus 0, slot 2 -- vga -- Cirrus CL-GD5434
bus 0, slot 4 -- ewa -- DE500-BA Network Controller
starting drivers
entering idle loop
initializing keyboard
*** system serial number not set. use set sys_serial_num command.
Partition 0, Memory base: 000000000, size: 020000000
initializing GCT/FRU at 1c8000
Initializing pka ewa
Memory Testing and Configuration Status
  Array       Size       Base Address    Intlv Mode
---------  ----------  ----------------  ----------
    0        512Mb     0000000000000000    4-Way

     512 MB of System Memory
Testing the System
Testing the Disks (read only)
Testing the Network
AlphaServer ES40 Console V7.2-1, built on Jun  9 2006 at 15:36:48
P00>>>boot dka0
(boot dka0.0.0.1.0 -flags 0)
block 0 of dka0.0.0.1.0 is a valid boot block
reading 15 blocks from dka0.0.0.1.0
bootstrap code read in
base = 200000, image_start = 0, image_bytes = 1e00(7680)
initializing HWRPB at 2000
initializing page table at 1ff56000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code

OpenBSD/Alpha Primary Boot
VMS PAL rev: 0x4006800010162
OSF PAL rev: 0x400690002015c
Switch to OSF PAL code succeeded.
>> OpenBSD/alpha BOOT 2.0
boot>
booting disk:/bsd: 8562592+683208 &#91;326169+106+499752+320686]=0x9e9790
Unrecognized boot flag '0'.
&#91; using 1147688 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2023 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.3-current (GENERIC) #133: Wed May  3 12:45:27 MDT 2023
    deraadt@alpha.openbsd.org:/usr/src/sys/arch/alpha/compile/GENERIC
AlphaServer ES40, 1000MHz
8192 byte page size, 1 processor.
real mem = 536870912 (512MB)
rsvd mem = 2801664 (2MB)
avail mem = 514916352 (491MB)
random: good seed from bootblocks
mainbus0 at root
cpu0 at mainbus0: ID 0 (primary), 21264C-6 (pass 4.0)
cpu0: architecture extensions: 305&lt;PAT,MVI,CIX,BWX>
tsc0 at mainbus0: 21272 Chipset, Cchip rev 0
tsc0: 8 Dchips, 2 memory buses of 16 bytes
tsc0: arrays present: 512MB, 0MB, 0MB, 0MB, Dchip 0 rev 1
tsp0 at tsc0 hose 0
pci0 at tsp0 bus 0
siop0 at pci0 dev 1 function 0 "Symbios Logic 53c810" rev 0x01: dec 6600 irq 8
scsibus0 at siop0: 8 targets, initiator 7
sd0 at scsibus0 targ 0 lun 0: &lt;DEC, RZ58 (C) DEC, 2000> serial.DEC_RZ58_(C)_DECSRL0000
sd0: 2048MB, 512 bytes/sector, 4194304 sectors
vga0 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5434-8" rev 0x02
wsdisplay0 at vga0 mux 1
wsdisplay0: screen 0-5 added (80x25, vt100 emulation)
dc0 at pci0 dev 4 function 0 "DEC 21142/3" rev 0x30: dec 6600 irq 20, address 08:00:2b:e5:40:00
ukphy0 at dc0 phy 0: Generic IEEE 802.3u media interface, rev. 0: OUI 0x000000, model 0x0000
sio0 at pci0 dev 7 function 0 "Acer Labs M1533 ISA" rev 0xc3
isa0 at sio0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16450, no fifo
com0: console
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0 mux 1
wskbd0: connecting to wsdisplay0
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
lpt0 at isa0 port 0x3bc/4 irq 7
mcclock0 at isa0 port 0x70/2: mc146818 or compatible
tsp1 at tsc0 hose 1
pci1 at tsp1 bus 0
tsciic0 at tsc0
iic0 at tsciic0
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
siop0: target 0 now using 8 bit async xfers
root on sd0a (d4f7f3ff7ccee1b1.a) swap on sd0b dump on sd0b
WARNING: / was not properly unmounted
Automatic boot in progress: starting file system checks.
/dev/sd0a (d4f7f3ff7ccee1b1.a): 11877 files, 188223 used, 792736 free (232 frags, 99063 blocks, 0.0% fragmentation)
/dev/sd0a (d4f7f3ff7ccee1b1.a): MARKING FILE SYSTEM CLEAN
pf enabled
starting network
/etc/rc&#91;498]: read: -p: no coprocess

starting early daemons: syslogd pflogd ntpd.
starting RPC daemons:.
savecore: no core dump
checking quotas: done.
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: smtpd sndiod.
starting local daemons: cron.
Wed May 10 04:54:32 MDT 2023
reorder_kernel: failed -- see /usr/share/relink/kernel/GENERIC/relink.log

OpenBSD/alpha (es40.my.domain) (tty00)

login:
</code></pre>



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



<pre class="wp-block-code"><code>OpenBSD/alpha (es40.my.domain) (tty00)

login: root
Password:
Last login: Tue May  9 12:00:11 on tty00
OpenBSD 7.3-current (GENERIC) #133: Wed May  3 12:45:27 MDT 2023

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

You have new mail.
es40#
</code></pre>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-The-faster-we-go-the-rounder-we-get.png"><img loading="lazy" decoding="async" width="722" height="432" src="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-The-faster-we-go-the-rounder-we-get.png" alt="" class="wp-image-12522" srcset="https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-The-faster-we-go-the-rounder-we-get.png 722w, https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-The-faster-we-go-the-rounder-we-get-300x180.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/05/ES40-OpenBSD-The-faster-we-go-the-rounder-we-get-500x300.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a></figure>



<p class="wp-block-paragraph">Did I mention that the root password is <span style="text-decoration: underline;">password</span>?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/05/10/openbsd-7-3-on-the-es40-dec-alpha-emulator/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
