First post, by Wilczek_h
Dear Vogons,
You might remember that if I think about retro machines nothing raises my excitement level more than a Pentium 1 build. (You can read about one of my lovely P1 build here on Vogons) This time, however, I decided to build a dual CPU machine powered by two slot 1 Pentium III CPUs. At first, I was like: "let's put it together and see what happens". However, this build just grew on me and I must say that it is an absolutely fascinating and quite a useful machine.
OK, let's see the specs first:
The hardware:
- Motherboard: Supermicro P6DGS (Intel 440GX chipset)
- CPU: 2x 550MHz slot 1 Pentium III CPUs (Katmai, SL3FJ, 100MHz FSB, 512KB L2 cache)
- RAM: 1GB PC133 CL3 SDRAM (4x256MB Hynix) @ 100MHz
- HDDs: 40GB IDE Seagate Barracuda and a 10GB IDE Samsung Spinpoint
- GPU: GeForce2 GTS @ 2xAGP, 32MB (ASUS V7700 Pro)
- Optical drive: a Pioneer DVD-RW (DVR-107) (replacing an LG DVD-RW)
- Sound card: AWE64 ISA (CT4520) (the SB Live! 5.1 turned out to be dead)
- NIC: Realtek 8139D PCI
- PSU: Chieftec Core 600W (80+ gold), a massive overkill, but why not? 😀
The operating systems (that are worth mentioning):
- Windows NT 4.0 Server with SP6a+SRP
- Windows 2000 Server Standard with SP4+SRP
- Windows Server 2003 Standard x86 with SP2
- Q4OS (Debian Bullseye x86)
As you can see, this monster build plays the role of a (retro) development box, web and terminal server that covers decades of technology. I can revisit my very old ASP and ASPX projects as well as my old Win32 and Windows Mobile 5.x/6.1 C++ projects. The two CPUs really make this dev box run super slick! While this machine was not built for gaming (anyway, most of the games of this era would not benefit from multiple CPUs), I was very much interested in one game on this build, namely Quake 3 and its SMP support. With the stock ASUS driver Quake 3 v1.11 on NT 4.0 and Win2000 limited the framerate to 25FPS when SMP was enabled (r_smp 1). However, upgrading the driver to 71.89 fixed the issue and the differences were noticeable. Running a timedemo showed a consistent 5-6 FPS gain over the non-SMP timedemos on all systems. This was also the case with Q3 version 1.32 too.
But enough of games, let's see the more interesting stuff. (Click on the pictures to see the larger versions of them.)
1. The parts before the assembly. The S3 card served as the test video card as I knew it worked, however, I was not sure about the V7700. There are 4 CPUs here to choose from for the test, two P3-450MHz and two P3-550MHz CPUs. I wanted to test the board just with one CPU, so I also prepared a CPU terminator card just in case, but it was not needed. The LG DVD-RW drive was later replaced with a Pioneer one as the LG one stopped working reliably. The 80GB Samsung HDD was in the end replaced with a Seagate 40GB Barracuda. I prepared 2 sound cards and that was a good decision, as the SB Live! 5.1 card turned out to be dead. Therefore, I used an AWE64 instead which is almost as "AWEsome" (haha) as the Live! card. The board came with some memory modules installed, so I assumed the board worked with those. The initial tests were done using the already installed modules, but I later replaced them with the Hynix modules bumping the amount of installed memory to 1GB.
Some remarks on the storage media: why did I use spinning rust (HDDs) instead of memory cards? Well, I did not want to, however, where I live the "SD card to 44-pin IDE adapter" is no longer available on the market. This is the one I am talking about:
Once it becomes available again, I will just start all over and use an SD card. I would not be concerned that the build would lose its authenticity due to a switch to an SD card, as I just want to use this machine without worrying about the HDDs that are on borrowed time anyway. Even if the SD card fails, I can easily get a new one. Getting reliable IDE HDD drives nowadays that would last many more years? Not really possible. Another note: I also considered an IDE SSD that is still available on the market, but its price is so much higher than the SD card option. By the way, what is your opinion on SD to SATA adapters attached to SATA to IDE adapters?
2. The initial test using the S3 card and one of the 450MHz Pentium III CPUs. One thing became immediately obvious: that board needed a BIOS update as not all the memory was seen and the Pentium III CPU was only recognized as a Pentium II.
3. BIOS update: interestingly enough, Supermicro still hosts the latest BIOS for this board which is version R3.1. However, I just did not like the filename of the BIOS ROM which was DGSB21.ROM. I had the feeling that it was a beta BIOS. Fortunately, Supermicro left the directory browsing on on its web server (accidentally or intentionally? I will leave it up to you to decide) and the directory in which the latest BIOS resides is called: /wdl/Bios/betabios/440gx_440bx/. Talk about intuition 😀.
I did not want to upgrade to a beta BIOS, so I used the wayback machine to find the latest non-beta BIOS which is R3.0. Here is the link to the BIOS I used if you are interested: P6DGS R3.0 ROM.
Another funny thing: which "20+"-year old floppy would you trust to hold the ROM file and the flash utility? I picked a disk, did a surface scan, copied the files over, then copied the files from the floppy back to the hard drive to see if it worked. I also did a binary compare of the files on the floppy with the original ones on the HDD; all seemed fine. I started the flash utility which asked me if I wanted to save the current BIOS ROM. Sure I did. After dumping the R1.3A BIOS and before flashing the new one, I removed the disk to check if the dump was indeed successful. (The utility reported success.) Well, it turned out that the dump was an empty file and upon restarting the utility the disk became unreadable. Since the disk worked fine in a drive in another computer, I decided to replace the floppy drive with another Sony 3.5" one. After that the BIOS update went butter smooth.
4. After resetting the CMOS settings and restarting the computer, the screen showed the new BIOS version (R3.0) and finally all the installed memory was seen. The CPU was also detected as a Pentium III CPU.
5. Now that the BIOS could handle Pentium III CPUs and more RAM, it was time to install the 550MHz CPUs and 1GB of RAM.
6. The V7700 needed a little bit of servicing, but otherwise it was totally fine.
7. Oh man, I hate dealing with this... 😁
8. The board and the PSU take their place.
9. It still works 😀. The case cables are attached; the DVD drive and the V7700 also take their place.
10. The floppy drive, the HDD, the NIC and the sound card also got installed.
11. Server time 😀. (I have to admit that I just put the 2003 Server box and the CD there, but actually I installed the VL build downloaded from my MSDN account (I am a volume licensing customer). This way I did not have to go online and activate it (is it still possible?). The NT 4.0 Server and 2000 Server were installed from the media shown in the picture.)
12. Installing the NT 4.0 Server:
IIS 2.0 installation options. Now this installation screen made me sit back for a while and just smile.
Well, I think the last time I used Gopher was in late 96. And you know what? It was not that bad, I liked it that I was always presented with a TOC. In case of HTML, a developer always had to create a site map to achieve something similar.
Finally, the basic NT 4.0 Server system is installed.
Ahh, the good old days when rendered web pages showed information in a compact way, had some links and pictures only and the browser did not eat tons of RAM. No scripts, no cookies, maybe some flashing gifs.
Installing the desktop update pack and SP4...
Finally, we got a usable system...
... so let's create users (for the nitpickers, I unchecked that checkbox 😀):
IIS was a must as well as terminal services. By the way, in case of terminal services I did not go for the application server mode as it would have been an overkill. I might play with Windows Media services later, though...
Some group policy adjustments. Am I the only one who thinks that auto play was the worst feature added to Windows?
Some more updates: Windows Installer 3.1 + DirectX 9.0c runtime:
By default Windows Server 2003 does not have drivers for the AWE64 card. However, Windows 2000 Server does. Since both systems use WDM drivers and they are not too far away from each other from the architectural point of view (5.0 vs. 5.2), I figured that I could just use the AWE64 drivers built for Windows 2000. What I did was that I booted Windows 2000 and I checked what driver files were installed. I copied them into a folder and then I looked for the proper INF file. I also copied the INF file into the folder where I collected the driver files. Then, I booted Windows Server 2003 and told it to use that INF file to install the driver for the AWE64 card. It was not that happy about it, but in the end the driver worked flawlessly. 😀
Installing some patches and updates: SP2, IE8, .NET Framework 4.0, DirectX 9.0c and some post SP2 updates:
The system, the drivers and the most important patches are installed:
15. The legacy Windows servers are installed:
16. The HDD partitions after the installation of the Windows systems:
17. Adding a second HDD, a 10GB Samsung Spinpoint IDE drive:
18. Installing Q4OS (a 32-bit Debian distro) on the 10GB drive:
Well, I appreciate the fact that a modern Linux can run on this ancient hardware, but a distro aiming to run on old hardware should have better "legacy" hardware support. In 1024x768 the image was offset by a lot of pixels horizontally:
I could only get a proper image when I cranked down the resolution to 640x480. Not ideal...
However, after installing nouveau I could use the 1024x768 resolution without any issues. Still, the Geforce2 GTS card cannot utilize its full potential under Q4OS.
There is no driver for the AWE64 either, so under Linux I have no sound. Not that it matters, though. I am still very happy with the features Q4OS provides on this machine.
It is so amazing that I can still use this build to run a modern OS and connect to the Internet:
Installing the update manager and the package manager: remember, this is still a Pentium III machine!
Updating grub after a little bit of tweaking its configuration:
19. OK, so let's copy some files over utilizing the FTP service of the Windows 2000 Server:
20. Some basic tests: it is amazing how little CPU power is needed to play back MPEG-2 files and DVD-rips, most probably due to the Geforce2 GTS helping the CPUs out when decoding certain video files. The Casino Royal rip's resolution is 580x234@23.98FPS and it is encoded using DivX MPEG-4. (Note: I own the original Casino Royale DVD.) DVD playback is also fine on this machine.
Taking the test to the extremes: I tried to play a video on this machine whose resolution was 1280x720@24FPS and the video was encoded using H.264. Well, at best I got a frame every 2 seconds, clearly this was just too much for this build.
This computer is also great to play the role of a Cossacks server.
21. A failed hardware upgrade: this motherboard, let's put it this way, is pretty choosy. I tried to install 512MB modules in the DIMM sockets. The board saw the RAM, it reported the RAM properly to the operating systems. However, none of the systems could boot, all of them crashed immediately. The board could see all the RAM if I installed 3x512MB + 256MB, but it failed to see the entire amount if I used only the 512MB modules in any combinations. The manual talks about this issue and says that I should enable the "autosizing feature", but it did not help. Furthermore, a single module would freeze up the computer during POST. So, I put back the 4 Hynix modules, but guess what! The board either froze or could not see the total amount of RAM installed. The modules are all the same! Good that I documented the build process and I had a picture of how these Hynix modules were installed. From the CPU to the IDE connectors: the first RAM must be the one with the extra sticker, the second one must be the one whose last chip's labels got faded, the 3rd one must be the one that looks brand new and the last one must be the dusty one. 😀 Just why?
So, I was back to 1GB of RAM, which is not a problem under old Windows systems, but Q4OS can be really demanding. With Firefox the RAM usage usually hits 1.2-1.3GB and then swapping comes in, which slows down even more the anyway not too fast browsing experience...
22. At this point I had a wonderful and powerful machine at hand, it just missed a good display. I wished I could use it with my 34" ultra wide display so that it could really shine. I have a very cheap and cr*py VGA-HDMI adapter which cannot handle text mode and anything below 640x480. However, this machine was not built to play DOS games or see text mode, so I figured that for the time being it would do. But more on this later.
The only drawback is that I cannot see the post screen when I use this adapter, so I need to know when and which button to press to start the proper OS. After dozens of boots, I learned at which second I should press the arrow and enter keys to select the desired OS to boot. Once the OS switches to a supported resolution, the adapter provides an image. In Windows systems the Geforce2 GTS can really shine; it would support a whopping 1920x1200 resolution, however, the adapter cannot properly handle it without compression. Therefore, the best option is to use 1920x1080. This resolution would have been mind blowing in the year 2000 at home. Seeing this resolution now, gives the feeling as if I had the Sony GDM-W9000 monitor back then. 😀
Server 2003 in 1920x1080 via the adapter:
NT 4.0 Server in 1920x1080 via the adapter:
By the way, since the purpose of this build is revisiting old projects and using modern Linux, I do not feel that the cr*py adapter I use is a real drawback. However, it would be nice to be able to hook up my older P1 builds, for example, on this 34" monitor which only supports digital input. Do you know any suitable scaler or adapter that could handle text mode and VGA resolutions below 640x480 and could convert it to digital?
OK, back to the build. Since the operating systems, their updates and the drivers were installed it was time to install some programs. On NT 4.0 I installed Visual Studio 6.0, SP5 and the processor pack. This is good to revisit projects that needed the processor pack, which was - unfortunately - not compatible with VS60 SP6.
What I like in this monitor is that I can display images from 2 inputs at the same time. On the left hand side you can see Windows 10, on the right hand side the Dual P-III machine and NT 4.0 via the adapter:
Office time on NT 4.0:
Copying over the service packs via FTP and then executing the installer:
24. Some retro builds lining up, so sweet 😀. Additional info: this was the first time I turned the computer case to its standing position. I was afraid to do that as I had no retention caps that were compatible with the CPUs and the universal slot 1 brackets. It is possible to wobble the CPUs a bit by hand, and I was afraid that without the caps the heavy CPUs would stress the slots, but it seems the lack of caps is not a problem. The system has been absolutely stable for a couple of weeks since standing it up.
(By the way, I left the original sticker on one of the 5.25" covers, because it is just hilarious. Can you spot it? 😀)
25. Some more programs: oh, how awesome it would have been to see ModPlug Tracker in this resolution in '99. (In the tracker a superb module composed by Nightbeat is loaded. You can grab it from modarchive.org, if interested. By the way, this module really takes P1 CPUs to the edge, but not this dual CPU monster 😀.)
26. Installing programs under Windows 2000 Server: I installed Visual Studio 6.0 and its Service Pack 6. On Windows 2000 the newer platform SDKs can also be installed for VS60.
Note: at first IO operations were slow on Windows 2000 Server, especially when copying files from a CD to the hard drive. The CPU usage was also very high. That was an obvious indication of running the IDE channels in PIO mode. My assumption was right: after changing PIO mode to "Use UDMA if available" IO operations became quite fast and the system became much more responsive. By the way, IO wise NT 4.0 is the slowest, about 60% of the speed what can be achieved under Windows 2000. Windows Server 2003 is around 10-20% faster IO-wise than Windows 2000 Server.
Office time: Office 2003 + SP3 + Office 2007 Compatibility pack + SP3:
Installing Visual Studio 2005 Professional:
Copying over its service pack via FTP and then installing it:
Since I have lovely PDAs like this...
... then why not just revisit old projects or maybe even develop new ones for them? This dual CPU workstation handles WM 6.1 emulators easily:
Final set of programs and components under Windows 2000 Server:
Since this build has 2 CPUs and tons of RAM, the host still has resources left for other things even when I run a virtual machine under Virtual PC 2004:
Installing guest additions:
Well, Windows 95 just flies in Virtual PC on this machine, amazing.
For fun, I tried if DOS games were playable in a virtual machine on this build. Surprisingly, Commander Keen 4 is quite playable. It is like running it on a 10-15MHz 286 computer. I know, DOSBox would do a better job, but I was just curious...
27. Installing programs under Windows Server 2003:
Visual Studio 2008 + SP1:
And of course Visual Studio 2010 + SP1:
The computer is not connected to the Internet when running Windows, therefore, quite a lot of newer fixes are missing, but even in this state the installed systems can serve their purpose.
It is also fascinating that this build can run software whose EOL has happened only recently, for example, Visual Studio 2010 (EOL: 07/14/2020). This happened ~20 years later than the release of the CPUs powering this machine.
28. In point #22 I mentioned that I would return to the "how to attach the video output to a modern monitor" issue. The Geforce2 GTS supports resolutions up to 1920x1200, but the adapter cannot handle it well, so the highest usable resolution is 1920x1080. The native resolution of the monitor is 3440x1440 and displaying 1920x1080 on it is blurry due to scaling (even if I tell the monitor to use the proper aspect ratio). However, it is not a big deal as using terminal services I can enjoy pixel perfect resolutions, even the ones that are not supported by the video card.
Here is an example: via the terminal services client I can see my desktop in my monitor's native 3440x1440 resolution.
One of the drawbacks is that in case of NT 4.0 and 2000 I can only get 256 colors, but most of the times 256 colors are enough for writing text or installing programs. Another thing is that via terminal services I cannot get butter smooth animations or high refresh rates in application windows, but again, this is not a big deal.
If I need a crystal clear text, but also colors and even 3D acceleration, then thanks to the Server SKUs, I can login remotely and locally with the same user at the same time and call it a day. Here is an example: after activating the monitor's PBP (picture by picture) function I can login remotely to the computer and see the remote desktop on the left side, while on the right side I can see the image coming directly from the computer via the adapter. You can see that the remote desktop image is crystal clear, while the image on the right side is a little bit blurry.
Same example: on the left side I am writing a code and building it remotely, while on the right side I can execute the compiled program using all the colors supported by the graphics card and 3D acceleration works as well.
29. Dual CPU time: this was the most intriguing test for me, namely, how the machine would do when building a solution containing several projects in parallel. For the test I used the source code of id Software's Quake 3 Arena as it would be a period correct project to build.
Quake 3 Arena source loaded in VS2005 Pro SP1. (Nice crisp text thanks to terminal services 😀). VS is being set up for parallel building of projects.
Before I was able to build Q3A I needed a DX SDK to be installed, but SDK I had at hand (DX SDK 2007) was not supported on Windows 2000. No big deal, I only needed the headers and libs - which the installer was happy to unpack - and then I just set the include and lib paths for the project to point to those folders.
I went for the Win32 configuration and for a DEBUG build. The code of Quake 3 Arena was compiled quickly with these settings as well as linking was fast, however, PDB generation was slower than expected. Anyway, all in all I was impressed.
Q3A was successfully built:
Next I chose a code base that was not too period correct for this machine. I chose an early version of my later 3D engine to be built. The machine would not be able to run the program as it would require a much beefier system and a graphics card that supports OpenGL 2.0. However, the machine can build it 😀. So technically I could set up this machine as a TFS and build server, but who would trust a more than a decade old HDD to safely track source code 😀, as well as who would use an old computer as a build server to build projects? The compilation and building of this project took forever on this machine, at least 12-13 minutes. Well, that was a little bit of a letdown. I thought it would be slow, but I did not think it would be that slooooow.
All in all this machine is incredible and still useful today. I am very happy that I have built it and I hope it will serve me well for several decades more 😀.
30. Last, but not least: anything that code can be written for is welcome on my desk 😀.
This build log became a little bit long, but I hope you enjoyed it nonetheless.
Links to resources:
- P6DGS R1.3A ROM
- P6DGS R3.0 ROM
- P6DGS R3.1 ROM (beta)
- Manuals: rev 1.0, rev 2.1, rev 2.2 (latest)
Special thanks go to the following Vogon forum members: "Hellistor", "Doornkaat" and "H3nrik V!".
Thanks to my colleagues who donated the V7700 video card, the Seagate Barracuda HDD and the Pioneer DVD drive.
Thanks to my brother who donated the 10GB Samsung Spinpoint HDD.
Take care and best regards,
Zoltan