Windows 2000 64-bit for Alpha AXP / AXP64 / ALPHA64 (build 2210)

(this is a guest post by Antoni Sawicki aka tenox)

Hinted by friends on Discord, Neozeed recently “re-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. Trying the compiler, just for fun, I built Alpha64 version of Aclock – with zero hopes of ever being able to run it.

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:

DEC Alpha with AXP64 Windows at Microsoft Archives.
DEC Alpha with AXP64 Windows codename “Sundown”, at Microsoft Archives, 2014

The machine in picture above was featured in a blog post by Raymond Chen, which is a must read on this topic. It will give you background info on the whole Alpha 64bit situation.

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 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 at hand, I was able to slap the image on an SD card and boot it up:

Windows 2000 Alpha64 Splash Screen

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 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! We were able to continue the boot!

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 a 64bit version of rlogin daemon and hacked it in to the registry. Then we remotely executed 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!

Aclock running on 64bit Windows on Alpha AXP

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’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…

64-bit gaming on Alpha AXP

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!

BetaArchive Wiki Link

48 thoughts on “Windows 2000 64-bit for Alpha AXP / AXP64 / ALPHA64 (build 2210)

  1. By the way, there probably is an identifying mark somewhere: the registry.

    Check HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion!BuildLabEx πŸ™‚

  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

  3. 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

      • 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 πŸ˜€

        • “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!

  4. 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.

  5. 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

    • 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.

      • This is incorrect. Wow64 was the 32bit on 64bit runtime that Microsoft created during development of IA64 and ALPHA64 NT versions.

        Microsoft used the 32-bit x86 emulator and translation engine that DEC built for NT Alpha versions prior to 4.0.

        We (DEC) built our own equivalent runtime at the time as part of FX!32 which was released for NT3.5+. We never licensed anything from Microsoft and we gave the x86 emulator and binary translator to Microsoft in an attempt to level the application playing field for Alpha – DEC was desperate to make Alpha a viable x86 alternative. You can see that the FX!32 Manager is included as a 3rd party tool on Win2k Alpha installation discs. (which is what brought me here – came across my Win32 Alpha Server RC2 disc).

        Microsft basically used FX!32 components to prove out Wow64 on Alpha before IA64 hardware was available.

        • There is also that one that MS made that’s available for MIPS/PPC/ALPHA.. I’m under the impression that fx32 was only in the “32bit” alpha 2000 builds…. Alpha64 is so different.

          I need to finish an update on this as now we have TWO emulators capable of running it!

          • NT on MIPS/PPC were dead after NT4 was released.

            The ntvdm (16 but windows application support) was provided by Insiignia/SoftPC. There may have been a version of that with 32 bit application support but at the time they wanted a minor fortune to build it for alpha and the performance was not going to be great so DEC did it themselves.

            Also 32 bit vs 64 bit alpha a non-thing for the most part. The ISA is identical – β€œ32-bit” AlphaNT was a misnomer. It’s user mode virtual address space was limited to the same as x86 at the time but used the exact same instruction set. All alpha instructions are 32bits and all registers were 64bit. The calling convention was register based and the alpha stack was always 64 bit aligned.

            There was likely a PAL to enable 64bit needs (tls, page at me walks, etc.) but iirc even the page tables were still the 64bit format which just mapped VAs above 4GB to fault.

            There were big memory APIs in NT 3.51 and 4.0 so memory access above physical 4GB was possible (though that might have been a side effect of supporting whatever they called the hack 48 physical addressing support for x86 – can’t recall) mode. you could have an alpha ng system with more 4GB of physical RAM and just limit user processes to 2GB (3GB later and then the full 4GB) of virtual address space. Could do the same on x86 systems too.
            A big issues for a 64bit Alpha NT would have been extending the PE image format to provide 64bit relocations and similar extensions to 64bit. The Win32 API and datastructures are a different story but ABI compatibility should would not have been that hard since they had Wx86 which could have easily been the basis for Wow64.

            I’d imagine that running β€œ32bit” alpha executables would be pretty easy. The real 64bit NT (as said elsewhere) was to be post Win2k. (yes win2k on ia64 was demoed and maybe used but that hardware was quite rare (if it existed at all – merced was any day now vapor for so long it was a joke) and that cersik. was built after win2k was released iirc. I left compaq after the Windows Alpha cancellation and tried to forget that the better product lost the popularity contest.

          • This one kind of leaked out into the world a few years back. Although you can run it under emulation now.

            So, it’s the only exposure to ALPHA64 the majority of us ever had, well outside until one day I had discovered that the ALPHA64 SDK on the Windows 2000 Platform SDK pre-releases included the full toolchain.

            At least being able to run Alpha under emulation now, it’s not as painful having to have an Alpha to cross compile ALPHA64 stuff now. It was a pain constantly rebooting to test before.. well, before my Alpha died anyways. It’s a fun bit of dead-end evolutionary tech though. That weird twilight.

            I’d imagine DEC wrote the PAL code? I know the compiler is GEM based, but then again, all the RISC compilers were vendor supplied not Microsoft, which is a shame as we couldn’t blindly cross compile on i386.

            Also check out this exciting branch of es40! ES1370 & MPU401 support works on the ’32bit’ alpha stuff, even the alpha version WinAmp runs! Sadly there are no audio drivers on ALPHA64..

  6. 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?

  7. 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.

    • 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!

  8. 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

  9. 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.

Leave a Reply