Posted on July 31, 2023
Something interesting about Windows on the Alpha is that it was always a 32bit OS in the public releases, despite the Alpha being a fully fledged 64bit chip. On the 23rd of August 1999, Compaq announced they were discontinuing their participation in the development of Windows NT for the DEC Alpha (AXP) platform. Microsoft announced shortly afterwards that they would also discontinue support for the platform and the nearly complete Alpha port of 32bit Windows 2000 never materialised. A final release candidate build did make it out into the wild, but until recently, no 64bit Alpha build had been discovered outside of Microsoft.
Despite the public announcements about Windows on Alpha being discontinued, development of a 64bit build of Windows for Alpha continued within Microsoft as a proof of concept platform since Intel’s Itanium IA64 architecture did not yet exist in physical form and AMD64/x86-64 wasn’t even a thing yet. There is a blog from Raymond Chen that gives a bit more background about this version of Windows – Raymond Chen discusses running Windows Server 64-bit on Alpha AXP | Microsoft Learn
Back in May, I saw the post on Virtually Fun were neozeed had discovered an AXP64 compiler that was publicly available – Hiding in plain sight: The 64bit Dec Alpha C compiler | Virtually Fun
Shortly after this, an actual running AXP64 build was discovered! Eventually an installation cd image was produced from the recovered disk image, which was a very impressive feat by those involved. There is a very interesting blog on the details – AXP64 2210 Installation Media Reconstruction | Virtually Fun
I had often wondered if an AXP64 build would ever leak in a form where it would be possible to run and play around with it, but didn’t expect it to happen given the amount of time since these builds were in use. I’m glad I was proven wrong, and was very excited to get it up and running on one of my machines.
There is a modified TXTSETUP.SIF that enables support for other machines which should get it going on my AlphaServer 1000a and AlphaPC 164SX, but I decided to use my PWS 433au for now since it is supported by the reconstructed install media as standard. After an install that took what felt like an eternity, I was finally up and running!
The build is a checked build, so unfortunately runs much slower than a normal build. I set the OS Options in the AlphaBIOS OS selection menu settings to /NODEBUG which sped things up a bit, but it was still slow compared to how a standard build would have been. It doesn’t look too different from Windows 2000, but notice the watermark in the bottom right of the desktop. Although it is still mostly Windows 2000 branded, it is actually a build of Whistler, which was the codename for Windows XP.
Initially I installed to an NTFS formatted partition, but the next morning after I’d had everything up and running, it kept blue screening. Usually these would mention KMODE_EXCEPTION_NOT_HANDLED or INACCESSIBLE BOOT DEVICE. I tried a few things to revive it, but didn’t have any luck. Eventually I resorted to just reinstalling it and reformatting the partition to FAT32 this time. Since then, I’ve had no such issues and it’s been as reliable as you’d expect an extremely early OS build to be.
Now that I had it working, what was I going to do with it? There isn’t exactly much in the way of native software, with AXP32 binaries unsupported and Dependency Walker being the only official release for it, despite no public builds for anyone to actually use the provided AXP64 exe. Turns out there was a solution.
Neozeed ran a “Porting Party” on the Virtually Fun discord server on Sunday the 23rd of July. This involved him running his Alpha (a frankensteined together PWS with 500MHz CPU and over 1GB of RAM) which was running NT 4 Terminal Server edition for Alpha with the AXP64 compiler setup and remote access enabled. The AXP64 build cannot compile executables for itself, so another Alpha is required to actually run the compiled binaries without resorting to rebooting into another partition. He setup a remote Linux box with SAMBA shares mountable from the Alpha systems so we could exchange copies of the binaries. I ended up doing some of the testing on the Sunday evening, and although most things we tried didn’t work, there was one major success.
CaptainWillStarblazer on the discord had supplied a binary of Starblazer II, which after he sent a copy of the rest of the files that went with it, worked first try on my machine. We didn’t expect speed given the checked build of the OS, but it was indeed playable! We likely made history with the first indie game running on AXP64 😀
That’s about all I’ve done with the AXP64 build so far, but I look forward to seeing whatever else the community can get running on it in the future!