(this is a guest post by Antoni Sawicki aka tenox)
Hinted by friends on Discord, Neozeed recently “discovered” a Win64 compiler 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’s “64bit ready”, 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. That is until Itanium eventually came out, after infamously long delays. The Win64 project for AXP64 and IA64 was code name “Sundown”.
Trying the compiler, just for fun, I built Alpha64 version of Aclock – with zero hopes of ever being able to run it. 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:
The machine in picture above was featured in a blog post by Raymond Chen, which is a must read. It will give you background info on the whole Alpha 64bit situation. Sadly, 64-bit Alpha AXP Windows was never released outside of Redmond.
And that would be the end of the story… if not for one generous reader, who contacted Neozeed after his previous post, and shared a disk image… 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, years ago and completely forgot about it until they saw the blog post!
The image was previously installed on Digital Personal Workstation. Having a PWS500 with ZuluSCSI handy, I was able to slap the image on an SD card and boot it up:
The system BSOD shortly after. Turns out, this is a checked (debug) build and requires a permanently attached kernel debugger to even boot up. Initially WinDbg
and kd.exe
refused to work, as the target CPU did not match the host (the exact error code is: KD Version has unknown processor architecture
). After some deliberation and help from friends, I learned that alphakd.exe
can be run on x86 machine to cross debug an Alpha target. Most importantly it works with AXP64!
Another problem was that the system came up with “Found New Hardware” 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:
Fortunately, the network card worked. Neozeed and I built and hacked in to the registry an rlogin daemon. Finally solved the PNP fuckup by remotely executing a VBScript
that clicked through 20+ “found new hardware” and “install unsigned driver” dialogs. Eventually, a PCI to ISA bridge was found and keyboard and mouse came up!
Unfortunately there are no identifying marks that would definitely 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’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.
For sake of search engines the build number is 2210, the full string: 2210.main.000302-1934
.
Update I have copied and ran a x86 `winmsd.exe` from Windows NT 4.0 and this came out:
How is it possible to run x86 binary? Because of Fx!32.
Update: So what else is in the image?
First of all, everyone is asking about Pinball… Yes, it’s there, but it won’t start:
In addition, I can’t open the event details. Maybe one day we can debug it with NTSD.
Other than that, it has some basic stuff, the every other Windows would have. Internet Explorer 5.5, agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
. Sadly msinfo32
doesn’t work, unable to connect to a service.
The image, similar to other private builds, comes with Internal Developer Workstation (IDW). It’s a set of developer tools, that most of (but not all) were released in Platform SDK and/or Windows Resource Kit.
There are a bunch of unix like utilities, cp
, mv
, ls
, kill
, etc.:
build.exe
version 4.03.2209
It can build for AXP32 and IA64:
There also are two famous text editors, Microsoft Editor aka MEP / Z and Stevie, VI clone:
Lastly, lets explore 64bit Alpha AXP gaming scene! While Pinball doesn’t work, IDW comes with an impressive amount of games. Microsoft engineers must have been busy playing these while waiting for builds to complete…
We have 4 different card games, FreeCell, Solitaire, Gold and Cruel. Also Taipei game, TicTactics, Reversi, Minesweeper and Snake.
AXP64 NT also has fully working OpenGL Screensavers:
If you want to see this live in action. We going to be exhibiting on VCF West 2023 in August, alongside other NT RISC machines. Come and see us!
First Julie Larson-Green’s tablet, now this?
if you don’t know what I’m talking about: https://betawiki.net/wiki/Windows_8_build_9200.16456_(win8_gdr_soc_intel)
By the way, there probably is an identifying mark somewhere: the registry.
Check HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion!BuildLabEx 🙂
I added a screenshot. All it says is axp64chk. But it’s something, thanks!
It might be worth checking cmd’s “set” command if the PROCESSOR_* environment variables have any interesting information.
I should append it, but yes its:
PROCESSOR_ARCHITECTURE=ALPHA64
PROCESSOR_IDENTIFIER=DEC-221164
PROCESSOR_LEVEL=21164
PROCESSOR_REVISION=2
In the early to mid 1990s I was the system manager for the group in UC Berkeley’s Computer Science Dept. that created Postgres. I worked directly for Mike Stonebraker. As a side project I decided to try to port Postgres to Windows NT (at the time version 3.5.1). Since this wasn’t an official project I had to “liberate” a 16MB 66Mhz Pentium PC to do the porting. It was dismally slow but somehow I was able to get Postgres to the point where I had something to show Mike. He was quite impressed. I told him how slow the PC was and how I badly needed something faster. He said he’d take care of it.
So, one day a big box arrived. It was from NeTpower and contained a PC with a Mips processor and 64MB(!) of RAM. It ran Windows NT! With that box I was able to make significant progress to the point where I could run the Wisconsin Benchmark. At the time, this was considered a require prerequisite for any RDBMS.
To the point of this article, I don’t remember if that Mips system was 32-bits or 64-bits. Does anybody know if a 64-bit version of Windows NT for Mips existed back then?
NT4 MIPS was only ever made in 32bit flavor. Even the legendary “SGI Indy” version (don’t confuse with the MIPS/SGI Jazz/Magnum which is already emulated in QEMU).
What actually was available were some SMP MIPS machines. But generally, NT MIPS was killed just too soon.
Was this a Dual CPU box by any chance? I’ve actually got a Dual CPU NeTpower that showed up in the bay. Very uncommon machine (I know of maybe 3 others, all single CPU) and what a world it’d be if they’re the same one.
It is a 32-bit machine, even though the 150 MHz R4400 is 64-bit
I just read the article by Raymond Chen mentioned in this page. I should have done so before posting my story. I see that the version of Windows I ran on Mips must have been 32-bits.
Sorry for the noise.
Jon Forrest
nah, it’s all okay!
It’s been tremendously exciting time!
> and shared a disk image
And where can the interested public get a copy?
This is his claim to fame. He’s got the only running copy of it out in the wild. He’s not going to share it.
Meh it’s not like that at all. I share most of stuff I have, look at osarchive.org… Also I’m definitely not the only one, I got a copy of a copy of a copy. The problem with this image is that it has PII and some internal development stuff on it that we want to sanitize first.
I thought about exactly that reason, as it’s the usual thing when it comes to old recovered HDD images. We’ll be waiting for it when it’s ready to see the world 🙂
But honestly some internal development stuff of that time might be interesting as well 😀
pretty much. I mean I can’t imagine anyone actually running this as well.
since I’m waiting for my Alpha in the mail I did up strict binaries
nt64-just-the-binz.7z
The boot stuff is there so if you do have an alpha you can see if it’ll boot.
Yeah. Also considering this is almost 25 years old no one should care at this point.
… I care..
“internal development stuff” is even more interesting.
also: does “PII” count considering it’s corporate data, 20+ years old, and if it’s just a name there’s probably already documentation somewhere showing this person worked for MS at this time…
If this becomes a larger thing about ‘people throwing stuff in the garbage’ bla bla security thing, I woldn’t want my name attached to it.
And for all I know OURHERO didn’t actually toss it, so it wouldn’t be fair to throw them under that kind of bus anyways.
It’s not Steve blamer, otherwise I’d release the reversi & skifree scores. And hope there was some turbo chair throwing champion edition stuff on there. but sadly there isn’t.
Hey Tenox and Neozeed,
Firstly, what a fantastic find! I would never have believed that this piece of digital archaeology would see the light of day 🙂
I’m trying to bring this up to boot in a DS10, using the binaries uploaded on archive. However, the system registry is missing from the binaries’ archive and it does not like a ‘transplant’ registry from W2KRC2. Are you guys able to share the system32/config files? Thanks!
It’s coming!
We’re trying to make it something reproducable for people with different machines. It’s been a challenge, but make no mistake, it’ll happen!
Fake news.
To clarify, this is actually a (very) early build of Windows XP, not Windows 2000. The first build of XP was 2197. You can see this with the “Whistler Windows 2001 Professional” branding, with Whistler being the codename of Windows XP. Builds 2202 and 2211 are available online.
Judging from what I know about 2211, the design of Explorer should be slightly different, and if it’s available (I doubt it, it ooften wasn’t in early ports of Windows to new architectures), IE should call itself version 5.6.
Additionally (as 2210 is a bit earlier than 2211), you can look for these things:
* The copyright date in Winver is 2000, it’s 1999 in Win2k (2195)
* ASR may already be in setup. It was in 2211…
* Ability to convert disks to GPT in Disk Management
* “Hotpluggable Devices” shortcut in Control Panel
* Arial font in Setup instead of Tahoma
There’s other stuff but this should be a general gist of what changed on the user side.
Only if IE exists:
* HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\LogonType DWORD, set it to 1. The login screen should be similar to Windows Neptune
No WoW? Have they cut NTVDM out of non-x86 versions already at that point? My understanding was that early non-x86 NT releases had a full-blown x86 emulator (see e.g. http://bytepointer.com/resources/old_new_thing/20060525_178_using_yoda_on_an_x86_may_be_hazardous_to_your_systems_health.htm), which puts the lie to NTVDM being left out of x64 Windows later.
It’s the WOW that let’s 32bit binaries run on 64bit platforms, WoW64? It’s confusing as instead of moving system32 to system32, they kept the 64bit binaries in system32, and moved the 32bit system to SysWOW64.
To further confuse things, there is a Sys32x86, but it’s empty. Even the printers don’t keep the same naming as in the spool\drivers it is:
* axp64
* ia64
* w32alpha
* w32mips
* w32ppc
* w32x86
* win40
Anyways yes there is no NTVDM, no DOS. BUT there is a posix.dll & os2/os2srv/os2ss as well.
He isn’t talking about NTVDM/WoW16 duo, but WoW64… Better know internally at MS as Wx86. That’s a very different beast which latter got licensed by DEC to make their Fx32! emulator (which also isn’t present), and is the foundation of the modern WoW64 in x86-64 builds and the ARM x86 emulation layer found in Win10/11 ARM builds.
Aye, can you share the disk image? Would like to try and get things working on my own workstation.
Someone knows if the 64bit version of “Windows 2000 Datacenter Server”, whose screenshots were published in some japanese sites, was actually an AXP64 build? Or it was Itanium already?
if the spraypaint was on the side of the logo it appears to be itanium, if its over the logo it’s axp. I think. I’am no way authoritative to say anything.
nope, whoever did it just drew it over the top for pro and on the side for server
For a while I was wondering what would happen if AXP64 took over instead of AMD64 today.
As a tip. I believe you can set driver signing policy to ignore in the registry on NT5.
So I just downloaded the nt64.7z file from archive.org and found out that this build already had the WoW64 emulator(nt64\system32\wow64.dll). It’s just that it’s not for 32bit Alpha binaries to run on this build, but rather this seemed to be a 32-bit x86 emulator, due to that binaries in nt64\syswow64 are x86 binaries (since I can run those on my x86-64 PC). I kinda wondered if the x86-32 emulation on this build is functional or not, I wouldn’t be able to test it myself since I don’t own any Alpha64 machines.
Im trying to get one running for me, we have another system running but it’s not available 24×7 so I have to wait to get either compile time or experiment time.
I just got my alpha to boot into it. The process was NOT smooth. But I did copy over sql server 4.21 for i386, the gui tools all fail but the command line query and server run!
for a proof that this is really a 64 bit version :
1. take 32 bit calc.exe from 32 bit Alpha W2K RC2, run it this system and provide us a screenshot of the result / error
2. take from this system calc.exe (presumably 64 bit), run it in 32 bit Alpha W2K RC2 and provide us a screenshot of the result / error
What Alpha system was this targeting? I’m sure the hardware support was very specific, and I can well imagine an arbitrary machine from the period not being fully supported. I don’t recognize Raymond Chen’s machine offhand but I have a 1200 system that I could make available if that would be of use to you.
The archive uploaded by neozeed has the HAL from DEC Miata aka Personal Workstation a-series.
I somehow missed the updates in my RSS reader. This is big news. Is there a 164LX HAL? Because these (and the Multia) are the only Alphas I own.
YES?! It’s like big news! let me … uh email you?!
Probably Pinball needs a floating-point patch just like in the other video?
BTW, the only program I know that has an official AXP64 version: https://dependencywalker.com/
I know it’s crazy that we were sleeping on the compiler the entire time. We now have many programs!