latest posts

Digital Personal Workstation 433a - Internet Explorer 2

After installing Windows NT 4 on my Digital Personal Workstation 433a and realizing I was going to be browsing the web on it with Internet Explorer 2.0, I started the arduous process of updating my installation to more recent versions of software.

First thing I did was install Service Pack 6 for Windows NT 4. Remembering back in the day on my Pentium how unstable NT 4 was pre-service pack 3, I figured this would be the best first step.

Having couldn't find Service Pack 6 for Windows NT 4 on Microsoft's website, I figured I would make the file available locally here.

After downloading SP6, click the Accept checkbox and then Install:

Digital Personal Workstation 433a - Windows NT 4 SP6

Digital Personal Workstation 433a - Windows NT 4 SP6 Installing

Digital Personal Workstation 433a - Windows NT 4 SP6 Finshed

Roughly five minutes later, click the Restart button and upon rebooting, the startup screen reflects the update:

Digital Personal Workstation 433a - Windows NT 4 SP6

Next up, I wanted to update Internet Explorer to the latest available which happens to be version 5. Like Service Pack 6, it was an effort in a half to find Internet Explorer 5 for NT4 Alpha. To make it easier for folks, you can download it here.

Digital Personal Workstation 433a - Windows NT 4 Internet Explorer 5 installed

Digital Personal Workstation 433a - Windows NT 4 Internet Explorer 5 installed

After extraction and installation, I was pleasantly surprised at how fast the browser was. After attempting to browse the internet with Firefox 3 on my "faster" Quad 700mhz Silicon Graphics Tezro, it was refreshing and a confirmation that web browsing on IRIX definitely needs to be readdressed at some point as I briefly discussed in my Cloud Based Web Rendering? post back in January 2012.

What's next? Getting Visual Studio 6 installed and diving into FX!32.
Continuing from my post on Wednesday night where I detailed the insides of my Digital Personal Workstation 433a, in this post I'll detail Windows NT 4 being installed on it.

For those unaware, you can use a regular Windows NT 4 Workstation or Server CD. On the CD there is also PPC and MIPS versions of the OS, though I do not know the exact models that are supported on those platforms.

A prerequisite to installing Windows NT 4 on the Personal Workstation is to download and extract the HAL (Hardware Abstraction Layer) for the PWS to a floppy disk. Like many more than likely, I did not have a floppy disk drive handy. Fortunately USB floppy drives are only about $10 as of the time of this writing on Amazon, I picked up this External USB Floppy Drive for $11.25 shipped. In addition you'll need at least 1 3.5" floppy disk. Sometime in 1999 or 2000, I cleaned out my stock pile of floppy disks, but thankfully Amazon also had a 10 pack of Verbatim 3.5" floppy disks.

Once you have a floppy disk in hand, I've locally hosted the HAL you'll need in case Compaq/HP stops hosting it. You can download it here. Simply extract it to the floppy disk after download.

Diverging a bit, I was able to pull an ELSA GLoria Synergy from my DS20E AlphaServer. This card is a 3DLabs Permedia 2 8mb PCI Video Card that can do up to 1920x1200 @ 16BPP. A huge upgrade over the Diamond Stealth 64 2001 (1mb) PCI Video Card that came in my PWS. On an interesting side note, when the PWS 433a debuted in 1996, I was also running a Diamond Stealth 64 2001 in my 75mhz Pentium and 3 summers later in 1999 I was running a Diamond FireGL 1000 Pro (3DLabs Permedia 2) along with a Diamond Monster 3D II (12mb version). I find it funny my little desktop, several factors cheaper at the same time frame had the same graphics card. You would have thought Digital would have put a higher end graphics card in their "workstation" than a S3 Trio 64 based card.

With the Windows NT 4 CD and HAL floppy disk in hand, simply insert the CD and in the AlphaBIOS select Install Windows NT.

Digital Personal Workstation 433a - Windows NT 4 Initial Setup Screen

After a few moments you'll be presented with a computer type selection:

Digital Personal Workstation 433a - Windows NT 4 Computer Type Selection

Select Other and insert the HAL Floppy disk you made earlier and upon loading select Digital Personal Workstation 433a, 500a, 600:
Digital Personal Workstation 433a - Windows NT 4 HAL Selection

After that the setup continued and upon reboot, booted into the GUI portion of the setup:
Digital Personal Workstation 433a - Windows NT 4 Setup 1

Digital Personal Workstation 433a - Windows NT 4 Setup 2

Digital Personal Workstation 433a - Windows NT 4 Setup 3

I chose to hold off configuring the Ethernet Adapter during the initial setup because I wasn't sure what model was actually built into my PWS 433a. For those curious, my 433a had a DEC PCI Ethernet DC21142. I don't have the MiataGL revised motherboard so this may not be the correct model for you (if you had USB ports you have the MiataGL variant.

Digital Personal Workstation 433a - Windows NT 4 Setup 4

I proceeded through the rest of the setup essentially just clicking next.

Digital Personal Workstation 433a - Windows NT 4 Setup 5

Digital Personal Workstation 433a - Windows NT 4 Setup 6

Digital Personal Workstation 433a - Windows NT 4 Setup 7

Digital Personal Workstation 433a - Windows NT 4 Setup 8

Digital Personal Workstation 433a - Windows NT 4 Setup 9

Digital Personal Workstation 433a - Windows NT 4 Setup 10

Digital Personal Workstation 433a - Windows NT 4 SP1 First Boot

After the reboot, Windows NT 4 converted the boot partition to NTFS and afterwards I was presented with the expected login screen:

Digital Personal Workstation 433a - Windows NT 4 NTFS Boot

Digital Personal Workstation 433a - Windows NT 4 Logon

After logging in you are presented with the usual "Welcome" screen, but for those unfamiliar with Windows NT 4:
Digital Personal Workstation 433a - Windows NT 4 Welcome Screen

Remembering from the installation that the graphics driver for my ELSA GLoria Synergy was not bundled with NT4 for Alpha, I did some searching on the Internet and fortunately was able to find the driver. I've locally hosted the file, here to make it easier to get going. After a reboot I was presented with a 640x480x16bpp resolution instead of the 640x480x8bpp without the driver:
Digital Personal Workstation 433a - Windows NT 4 with the ELSA GLoria driver installed

What's next? Getting Service Pack 6, Internet Explorer 5, Visual Studio 6 and FX!32 installed so I can begin porting jcBENCH with native Alpha/NT binaries.
A while back I received a Digital Equipment Corporation (DEC) Personal Workstation 433a and finally had some time to get it up and running. For those that are unaware, the 433a has a 433mhz Alpha 21164A (EV56) that is capable of running Windows NT 4 and with the right bios can run OpenVMS. The 433au model has the OpenVMS capable bios out of the box. I am not familiar with the process, but from what I gather it isn't terribly difficult.

Digital Personal Workstation 433a - Front View

Digital Personal Workstation 433a - Rear View

Digital Personal Workstation 433a - Inside View

Digital Personal Workstation 433a - Mainboard

Digital Personal Workstation 433a - Mainboard (Back)

Digital Personal Workstation 433a - Mainboard Inside

Digital Personal Workstation 433a - RAM Slots

Digital Personal Workstation 433a -Diamond Stealth 64 (S3 Trio64) Video Card

Digital Personal Workstation 433a - 32mb PC100 ECC SDRAM Stick

Being enamored by the prospect of running Windows NT 4 on a non-x86 system and being my favorite operating system, I jumped at the chance of getting it on the 433a.

Microsoft Windows NT 4 Workstation

Unfortunately, the 433a came without a hard drive and being from 1996, there is no SATA support only EIDE and with the right card Ultra Wide 2 SCSI. Not having any spare Ultra 320 SCSI drives, I used a SATA -> PATA adapter on a 500gb Hitachi SATA II laptop drive I had laying around. Knowing this would technically limit it to 16mb/sec outside of Disk <-> Buffer operations, I was intrigued about the performance versus putting a "slower" Ultra 320 SCSI drive like a Maxtor Atlas 15k II drive and attaching it to a Ultra Wide 2 SCSI adapter that has a 80mb/sec bandwidth. One day I will pop a U320 drive and compare the disk results.

Digital Personal Workstation 433a - SATA -> PATA Adapter

During shipment the mainboard came loose from the PCI looking connector that it connects to, if you receive a PWS that fails to power on - ensure it is fully connected.

After reseating the mainboard I was greeted with the startup logo:

Digital Personal Workstation 433a - BIOS Image

I entered the "BIOS" and was presented with a very "PC" like screen that I wasn't expecting:

Digital Personal Workstation 433a - System Information

Knowing that the Windows 8 NTFS partitions would be unrecognizable most likely by the Alpha, I proceeded to the Disk Setup and reconfigured the drive with the express setup:

Digital Personal Workstation 433a - Express Setup

Digital Personal Workstation 433a - Hard Drive Partitions

Fortunately, the "express" setup was very easy, it configured the drive for use with Windows NT in mind with no manual configuration needed outside of creating a second partition to fill out the remaining space on the hard drive.

After exiting the "bios": Digital Personal Workstation 433a - Bios Boot

In the next post, I'll detail the Windows NT 4 Workstation and subsequent updates required.
This morning I will be presenting at the Maryland Code Camp with the topic of Developing Once and Deploying to Many, specifically talking to practices and patterns I've found to help create rich mobile applications efficiently over the last 3 years I've been actively developing for the mobile space. WCF, WPF, PCL, MonoDroid, Azure Mobile Services and Windows Phone 8 are to be discussed.

For the Powerpoint 2013 presentation, all of the code going to be mentioned during the session, the SQL, PSD files and external libraries used, click here to download the zip file.

In addition during the session I will be making reference to an app I wrote earlier this year, jcLOG-IT, specifically the Mobile Azure Service and Windows Live Integration elements.

The code block mentioned for Authentication:
public async Task AttemptLogin(MobileServiceAuthenticationProvider authType) {
     try {
     if (authType == MobileServiceAuthenticationProvider.MicrosoftAccount) {
     if (!String.IsNullOrEmpty(Settings.GetSetting(Settings.SETTINGS_OPTIONS.LiveConnectToken))) {
     App.CurrentUser = await App.MobileService.LoginAsync(Settings.GetSetting(Settings.SETTINGS_OPTIONS.LiveConnectToken)); }
else {
     var liveIdClient = new LiveAuthClient(Common.Constants.APP_AUTHKEY_LIVECONNECT); while (_session == null) {
     var result = await liveIdClient.LoginAsync(new[] {
); if (result.Status != LiveConnectSessionStatus.Connected) {
     continue; }
_session = result.Session; App.CurrentUser = await App.MobileService.LoginAsync(result.Session.AuthenticationToken); Settings.AddSetting(Settings.SETTINGS_OPTIONS.LiveConnectToken, result.Session.AuthenticationToken); }
Settings.AddSetting(Settings.SETTINGS_OPTIONS.AuthType, authType.ToString()); Settings.AddSetting(Settings.SETTINGS_OPTIONS.IsFirstRun, false.ToString()); return true; }
catch (Exception ex) {
     Settings.AddSetting(Settings.SETTINGS_OPTIONS.LiveConnectToken, String.Empty); return false; }
The Settings class:
public class Settings {
     public enum SETTINGS_OPTIONS {
     IsFirstRun, LiveConnectToken, AuthType, LocalPassword, EnableLocation }
public static void CheckSettings() {
     var settings = IsolatedStorageSettings.ApplicationSettings; if (!settings.Contains(SETTINGS_OPTIONS.IsFirstRun.ToString())) {
     WriteDefaults(); }
public static void AddSetting(SETTINGS_OPTIONS optionName, object value) {
     AddSetting(optionName.ToString(), value); }
public static void AddSetting(string name, object value) {
     var settings = IsolatedStorageSettings.ApplicationSettings; if (!settings.Contains(name)) {
     settings.Add(name, value); }
else {
     settings[name] = value; }
settings.Save(); }
public static T GetSetting(SETTINGS_OPTIONS optionName) {
     return GetSetting(optionName.ToString()); }
public static T GetSetting(string name) {
     if (IsolatedStorageSettings.ApplicationSettings.Contains(name)) {
     if (typeof(T) == typeof(MobileServiceAuthenticationProvider)) {
     return (T) Enum.Parse(typeof (MobileServiceAuthenticationProvider), IsolatedStorageSettings.ApplicationSettings[name].ToString()); }
return (T) Convert.ChangeType(IsolatedStorageSettings.ApplicationSettings[name], typeof (T)); }
return default(T); }
public static void WriteDefaults() {
     AddSetting(SETTINGS_OPTIONS.IsFirstRun, false); AddSetting(SETTINGS_OPTIONS.EnableLocation, false); AddSetting(SETTINGS_OPTIONS.LocalPassword, String.Empty); AddSetting(SETTINGS_OPTIONS.LiveConnectToken, String.Empty); AddSetting(SETTINGS_OPTIONS.AuthType, MobileServiceAuthenticationProvider.MicrosoftAccount); }