On the way back from a day trip with my muse I came across this interesting thing on all the sign boards in Waverly. Not sure if it’s a firmware update that went rogue, or if someone is messing with them, but for the most part all the signs would alternate between the two. I guess if I was running the rails I too would have them set on a serial MUX and keep that crap off a network to make the bar higher for the haxor kids.
But all the same, if someone goofed up, and zapped all the boards, they better set their serial lines correctly to get ahold of them. And maybe update from V14.5, I mean 2017 is so old!
Expect more DEC Alpha madness coming in. And as always, I want to thank my Patreon‘s for making all of this crazyness possible!
#include <names.h>
Brian Ledbetter
Joakim L. Gilje
Bamdad
Andy Wallis
Endir
Tink
I had es40 built this from gdwnldsKSC 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.
Since people never read this, the password for root is password.
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.
The games work just fine as well. I didn’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.
For those of you who want to play with virtual Dec Alpha stuff this one is pretty simple enough.
At the P00>>> prompt type in
boot dka0
And in no time it’ll boot up (takes about 2-3 minutes)
And for those of you who are into these things:
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 [326169+106+499752+320686]=0x9e9790
Unrecognized boot flag '0'.
[ 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
[email protected]:/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<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: <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[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:
And there we go!
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#
Of all the Microsoft Windows NT versions, the few of the rare ones include:
The i860 version, the original N-Ten that put the NT in NT.
The DEC 5000/MIPS version
The Clipper version
The SPARC/LE version
The HP9000/HPPA version
The AXP64/ALPHA64 port, the first 64bit version of 2000
Sadly, I don’t have any leads on any of the above. But while I was looking for the first public Win64 compiler that I could remember, it was just the frontend to the Itanium compiler, not letting you actually compile anything. Anyways I was able to find these two downloads:
And both of them have the same Win64 SDK, which includes this quick note in the readme:
Platform SDK support for Win64(tm)
This release of the Platform SDK will allow you to test-compile your code for Win64. It supports the new 64-bit data types and pre-beta releases of an IA64 compiler and an ALPHA64 compiler and linker.
1999 Platform SDK
It’s the same thing on both discs from what I remember.
Installing the SDK is certainly a product of it’s time, with a seemingly incredible amount of products to support.
I haven’t tested yet, but I have to wonder how integrated all the tools are into Visual C++. Stay tuned?!
Also there was still POSIX support. Windows 2000 was the last to support all the subsystems.
And of course, the star of the attraction, the 64 bit Test Compiler. There is an incredible amount of products and options to select, It must have been absolute chaos at Microsoft in the late 90s!
If you are on an intel based system, the 64bit compiler will be the top half of the Itanium compiler. It lacks the C2.DLL so it will not emit any assembly or object files. There is no linker libraries either, so for all intents and purposes it’s useless.
However, if you were to install this super preliminary SDK on a Dec Alpha you would instead discover a version 13 build of Microsoft C/C++
Microsoft (R) & Digital (TM) Alpha C/C++ Optimizing Compiler Version 13.00.8499
Copyright (C) Microsoft Corp 1984-1999.
Copyright (C) Digital Equipment Corporation 1992-1999.
Copyright (C) Compaq Computer Corporation 1998-1999.
All rights reserved.
The Visual C++ 6.0 on the Dec Alpha however is a version 12 compiler. So this is a big surprise for AlphaNT users!
And added to version 13 are these flags:
/Ap32 enable P32 model
/Ap64 enable P64 model (default)
That’s right! It turns out that the AXP64 compiler set has been hiding in plain sight for DECADES. I know that it’s so unlikely that we’d ever see any public release of a 64bit version of Windows for the Alpha, but oddly enough the compiler, headers and libraries are all there. YES You can make full EXE’s for AXP64/Alpha64. Of course with no OS, so it’s not like you can run them.
The compilers have been tested on NT 4.0 Terminal Server & 2000 RC2.
For anyone wondering here is how I ran it to compile then link a 64bit exe:
C:\proj>cl /c /Ap64 mt.c /Fomt64.obj
Microsoft (R) & Digital (TM) Alpha C/C++ Optimizing Compiler Version 13.00.8499
Copyright (C) Microsoft Corp 1984-1999.
Copyright (C) Digital Equipment Corporation 1992-1999.
Copyright (C) Compaq Computer Corporation 1998-1999.
All rights reserved.
mt.c
C:\proj>link mt64.obj /MACHINE:ALPHA64
Microsoft (R) Incremental Linker Version 6.20.8528
Copyright (C) Microsoft Corp 1992-1999. All rights reserved
There is no point sharing the EXE as I mentioned above, there is nothing to run it on. But for the heck of it, here is uuencode compiled into assembly in both 32bit & 64bit mode.
Sadly as of today, there is no way to test. There is one surviving machine with Windows 2003 AXP64, outlined in an article by Raymond Chen. Its a great read about how Alpha64 NT port came to be. The machine is still sitting in Microsoft Archives. Hopefully one day someone can dig it out.
That said there is also version 13 compilers for both Itanium & AMD64. Although we can do stuff with the AMD64 port which I will try to write into something a bit more.. sane.
I found this a few weeks ago, and thanks to @tenox for giving me Alpha access to play a little with this hidden gem. It’s still crazy we’ve all had Alpha64 tool access the entire time.
So this is probably nothing that exciting for most people, but for me, I wanted to have a Terminal Server onto a DECnet network. Sure I could have probably just done one nice with tun/tap, dumped all the protocols on there, and called it even. But for some reason I wanted 2 NICs to keep the IP on one side, and DECnet on the other.
One thing I wanted was an internal bridge for DECnet only traffic, and since I just need MSRDP access, SLiRP can handle a single TCP port redirect.
The flags are as always pretty simple once you work them out:
And the two network scripts starting with nt4tse-up:
#!/bin/bash
echo starting $1
ip tuntap add mode tap tap1
ifconfig tap1 up
ifconfig tap1
brctl addif decnet0 tap1
brctl show decnet0
echo done with tuntap
And the nt4tse-down:
#!/bin/bash
echo shutting down $1
ifconfig tap1 down
brctl delif decnet0 tap1
brctl show decnet0
ip tuntap del mode tap tap1
echo done shutting down $1
for completeness here is the bridge config in /etc/netplan/50-cloud-init.yaml
This way I have an IP bound bridge for things that talk IP, and a raw bridge, decnet0 that has my non IP decnet stuff on there. Naturally it’ll have my SIMH VAX on there:
# brctl show decnet0
bridge name bridge id STP enabled interfaces
decnet0 8000.aede9f227e7b no tap0
tap1
Also the ability to mount directories as fake fat drives had it’s syntax change as well
It does feel a lot like Windows XP for the Itanium, that strange half world of existence. It’s also from September 2003, the release image being named: 5.2.3790.1069.srv03_spbeta.030905-1850_amd64fre_client-professional_retail_en-us-AB1PXFRE_EN.iso
I’m sure if you google around you can easily find it.
To install you apparently need an early AMD 64 processor, otherwise it’ll trap on the installer. Back in 2004, I got a newly refurbished AMD Athlon 64 3200+ processor, from Tiger Direct. The machine was only a few months old, and I was able to get an early XP build for it. Oddly enough it’s simple enough to install on Qemu. I was able to use 0.90 & 7.20, jumping at extremes, although the PCI NIC IRQ’s do jump around on 0.90 preventing the networking from working.
I had a LOT of trouble getting a bootable hard disk image out of this for some reason. So I’ve found keeping C around 2,000 Megabytes, and installing MS-DOS 5/6 got me a bootable system. Also preserving the FAT disk. Not sure why but doing formats of FAT or NTFS always seemed to result in a non bootable disk
Special thanks to RoyTam for the suggestion of the USB tablet & turning TCG multithreaded for v7+ of Qemu
Setting up is pretty normal.
You do get 360 days to use the beta. More than enough for simple testing. I’ve seen that the timebomb doesn’t work correctly so it may work forever. But it’s so rough around the edges, I can’t see anyone trying to run this native in 2023.
And in no time you are up and running. I find the mouse really weird on Qemu, so I always enable the remote desktop function and find it much easier to deal with.
One of the advantages of RDP is that audio redirection does work, so you can play pinball!
One annoying thing (to me) is that the SysFader process will hang all the time locking explorer.exe . Along with that it’ll leave phantom UI elements haning around like the Run… above. Yes, its annoying!
The solution is of course System Properties, and Performance, and either disable the Fade elements, or just turn off all the ‘eye candy’ which basically doesn’t really exist for this release anyways.
While there is some DirectX support, it is most likely just simple GDI passthrough, and of course no acceleration as the OpenGL screensavers run incredibly slow.
As mentioned, hardware support is VERY limited. The single audio driver is a MPU401 port. This obviously was meant for an exceptionally limited audience.
The one thing I cannot find, is any version of a Platform SDK that targets AMD64 so early. The earliest I can find is version 14 from 2005.
The 2005 compiler does have this note:
The Microsoft® C/C++ AMD64 Processor Family-targeting compiler is a cross-compiler targeting the AMD64 processor family. The compiler runs on an x86 or AMD64 computer running Microsoft Windows® XP or Microsoft Windows® Server 2003. It is the compiler used for Microsoft® internal development and is used for building Microsoft Windows NT®, Microsoft SQL Server®, and other major applications. For debugging we suggest the use of WinDbg for AMD64. Visual Studio Whidbey will support the use of the Visual Studio debugger for debugging AMD64 applications.
2005-06 – 2944.0 – Platform SDK for Windows Server 2003 SP1 (April 2005 Edition)
With the compiler being:
Microsoft (R) C/C++ Optimizing Compiler Version 14.00.40310.41 for AMD64
Copyright (C) Microsoft Corporation. All rights reserved.
If anyone knows of anything earlier, I’d love to know! If only for the sake of messing around with it.
Since I was a kid growing up in Canada, everything was NTSC. And my first computer the Commodore 64 was of course NTSC based. My parents refused to get me a monitor, so I had to use the RF modulator to get it to work on a TV. In north America we had these RF modulators on the back of the TV’s to connect our systems up (Atari, Commodore, Nintendo, SEGA etc..)
And the picture looked terrible, it was an antenna so it was suspectable to all kinds of RF emission interference, grounding issues and all kind of all around problems. It’s no wonder I had 20/20 vision as a kid, but it was absolutely destroyed because I was even forbidden to buy a proper monitor.
So thanks to patreon and ebay, I found this amazing bundle for 49GBP, a Commodore 64, plus tape drive. The catch being it didn’t include any proper cables, so I went to Tesco and bought an RF lead. I have this weird LG TV, a LG 50PC1D 50in Plasma TV. The original list price was an eye watering £1800! I got it used a while back for a more reasonable £130.
Lots of Inputs!
While I was at Tesco, I didn’t see any kinds of RF boxes. I was hoping I could just plug the cable directly from the TV into the Commodore C64, and it turns out that is exactly how it works.
With the cable plugged in, I was able to eventually get an image. I found out that the LG is more than capable of locking the RF image from the Commodore 64, and it looks awesome!
One man and his Droid over the RF on the LG 50PC1D
It’s a lot better than I was expecting. Clearly RF on a ‘modern’ TV works great.
Of course getting this to work wasn’t all that intuitive, and again probably because I’ve only delt with NTSC TV’s where the channel would be locked to either 3 or 4. Not so in Europe.
Channel 4
So setting the TV to channel for, and the band to ‘cable’ you can see the distinct border of the basic screen. The image of course is useless but you can see it trying. And that is because after letting the TV scan and find the picture on it’s own it’s actually channel 36.
Messing with the image options I found that there is 3 systems to choose from:
System L
You can see the image trying to form under System L, but it’s obviously no good
System BG
While the image looks better, the speakers erupt with absolute static. And the image is a bit faint, but immediately recognizable. It does look better in person however.
System I
And finally we have System I, over V/UHF on Channel 36.
I don’t know if this will help anyone trying to get anything working. Maybe it’s only relevant for people new to PAL territories like me.
I found out about the board from some YouTubevideos. An i9 laptop chip on a PC motherboard?! And for cheap! Intrigued, I looked around on AliExpress and sent away for one. The board retailed for £123, of course you need to add a tariff and shipping, bringing it to around £150.
After two weeks it arrived!. Despite the garbage bag packing, it was wrapped in some strong bubble wrap, and the box was fully intact, no issues.
Since I don’t have much in the way of PC detritus on hand, I got the machine memory & CPU cooler for the system. Anyways yes the big outstanding feature is the big copper slug that sits between the processor and the height of a normal CP cooler. It’s a laptop processor so it doesn’t run that hot so I’m not all that worried. As expected, assembly is a snap, but because of the absolute paranoia of shipping lithium ion batteries, be sure to bring your own CR2032. Just don’t ask how it made it’s way to you.
The board is very basic, 2 DDR4 slots, a single PCI-E x16 slot, a hand full of USB 2/3 built in audio, and a single LAN jack. This is not a very expandable system, but we didn’t come here for that, it’s all about the performance per $
I have to admit, one nice surprise feature of the NVMe is that it does have an activity light on the unit. Nice!
So what has been the downside? The integrated video only works on ONE level of the driver. So if you are going to use the integrated iGPU, you want to make sure you get one of those patched drivers that’ll block windows updates.
Ive read a few things about raising the thermal envelope of the system beyond the stock 45 watts for additional performance, but to be honest the stock config seems fine enough to me.
The other catch being no Hyper-V, so that also means no WSLv2 either. VMware player however works fine, as does nesting VM’s so I was able to move my VMware ESX 5.5 install and run it on the Erying no problem.
I have to say that overall I’ve been happy, especially at the price point, as a normal user it’s a fine machine, but I think the next time I’ll avoid engineering samples as I do like WSLv2/Hyper-v.
I came across this fun thing debugging a QuakeWorld client on a RISC machine. I think something is failing as I’m using terminal server. For some reason width is being passed as 0. Not sure why I didn’t debug it enough to care, so I setup a quick block to only evaluate the Fov if the calculated x was greater than 1.0
And Microsoft C did not disappoint.
I think it may have been some incremental linking issue? I’m not sure I purged the build directory and re-ran make and didn’t experience the crash again. I had to get the screenshot or even I wouldn’t believe it.
In the end I got it running:
Of course among the eagle eyed you may notice this is version 13.00.8499 of the compiler. But the last compiler for the Dec Alpha / Windows NT was version 12…
(This is a guest post by Antoni Sawicki aka Tenox)
After years of waiting, VMS Software finally released OpenVMS x86 for hobbyist use. Luckily I was able to download the install media and a hobbyist license pack from the Service Platform portal. So lets have some fun with virtualization!
OpenVMS x86 has pretty strict hardware requirements. It only works as a VM (no physical hardware support). It wants a recent CPU. The VM must have EFI BIOS and E1000 NIC. As for storage controller – both HDD and CDROM must be on the same SATA controller.
The ISO image boots to a fancy new loader screen:
However as cute as it looks, don’t have your hopes up for a real GUI. That’s as far as it goes:
Once the OS boots up, it switches to a serial console for the rest of installation and operation. Being a VM and having no access to physical serial port, I hooked it up via named pipe to another VM’s serial port.
The installation is pretty straightforward. I picked all the defaults and off you go.
The system installs under couple of minutes. A boot takes just couple of seconds and it’s extremely fast end responsive. This is somewhat expected as the VMS dates back to 1977 and hasn’t grown in bloat much like more “modern” OSes.
One of first things to do after installation, is to register the license packs and configure TCP/IP.
For license pack I added the “BOE” pak by hand and transferred the rest as a `.com` file after TCP/IP was setup.
To configure IP you simply run @sys$manager:tcpip$config and go through the steps. Networking doesn’t start by default, so you need to edit sys$startup:systartup_vms.com file and uncomment line saying @sys$startup:tcpip$startup.com. After that you should be able to telnet to the VM at every boot. Also note that OpenVMS comes with some unix commands for the tcpip subsystem, you can find them in help under TCPIP_Services -> UNIX_Commands
You can setup auto boot in the graphical console by typing “auto boot”, this way you never have to open the graphical console to type boot.
Browsing through software packages on the VMS service portal you can find a C compiler, Fortran, as well as some typical OSS packages like OpenSSH, SSL, Samba, Git and many more.