Hey Microsoft! Do Better.

The title might seem a little over the top, but let me explain. This afternoon, I had one thing I wanted to do. I wanted to sit in my racing sim and practice. A seemingly simple thing, right? The thing is, I hadn’t sat down at my sim in about a month. (life has been a bit busy lately) As I expected, I had some AV updates that needed to be applied… no problem. The batteries on my wireless mouse were giving out… annoying, but again, no problem. The system seemed super sluggish after doing the AV updates, so took a look at oh, yep… a bunch of updates from Microsoft. No problem, I’ll let these install and then I’ll play I thought. Oh, how naive of me.

I should have known something was up earlier, but I let my trust in the update process get the better of me. You see, earlier I’d loaded up a piece of software that controls the haptic feedback on my seat and it had a problem because it couldn’t find the output device. The output device is a small usb audio interface that sends analog signals to an amplifier that drives a transducer, which in turn makes the seat vibrate. This sudden change was a result of driver updates, something that I’d specifically disabled. (for reasons that will soon become apparent) That seemed weird, but the device was still there and I just had to re-select it.

The second thing that should’ve tipped me off was an NVidia driver update coming through Windows Update. Strange I thought… I’m sure I disabled that. (I had previously) Still, I thought… what’s the harm. It probably needs it anyway. What I didn’t see was one of the other update packages contained a driver update for the onboard audio. This had already completed, but the worst part was that in the process of updating, it removed the user interface that allows you to configure things like surround sound. I checked the properties for Sonic Studio 3 and found that the application was missing, but there was a handy menu to install it. Awesome! (it wasn’t awesome)

Clicking this menu brought me immediately to the listing for this application on the Microsoft store, but when I clicked it the download immediately failed and told me to log in. I tried to do that and was met with a progress wheel that timed out and failed. This happens when you use a local account with Windows and don’t log in to Microsoft’s services. Ok, annoying, but I’ll just go to the Asus ROG driver page and download them I thought. What I got from the manufacturer support site was a driver-only download. Cue a bunch of searching through forums until I find a link to a slightly older version of the same driver package with the entire suite. (also hosted on the manufacturer site)

What happened became apparent at this point. Asus has moved current & future versions of this application/driver package onto the Microsoft store and removed it from their own support page. This has the effect of tying continuing support of their products to Microsoft’s services. It also revealed that Microsoft is continuing to reset certain settings on your computer to their factory defaults without notice or warning in what are supposed to be security & quality updates. Microsoft, if you’re listening… this is how you erode user trust.

While I’d managed to turn off driver & application updates via Windows Update (again) and had fixed the sound issues… I was done. This whole debacle cost me over an hour of my time, by which point I was so disgusted I didn’t even want to do the one thing I’d sat down to do in the first place.

Building custom boards for retro PCs

In my last post I went through the process of bringing an old 286/12 back to life. At the end of that post, I left off with the machine unable to boot from it’s own hard disk. This meant I would need to find another way to allow an old machine like this to boot from more modern media. Thankfully I found a solution in an open source hardware kit called the XT-IDE. The XT-IDE kit is a very simple 8-bit ISA hard disk controller for IDE drives that coupled with some firmware allows XT/AT & clone computers to boot from larger drives. Since this board is only a hard disk controller, I would also need a floppy controller. (more on that later) I ordered up a kit and when it arrived, I immediately tore into the package and built it up.

This being the 4th revision of the board, it was an incredibly well polished design. I did actually have to add some pin headers for the jumpers which were not included with the kit, so just keep that in mind if you build one of these. I read over the instructions for assembly just to be sure, but the board has such a nice silkscreen it almost isn’t necessary. Assembly went relatively quickly with the board completed in about 1.5hrs.

With the board assembly complete, I put it under a crafting lamp with a magnifying glass and inspected all of the solder joints to look for any bridges and touched up anything that didn’t look quite good enough. After that, it was time for the moment of truth. I plugged it into the 286, connected up the hard disk and it actually booted into DOS from the hard drive! For this test, I had actually kept the multi-i/o board installed, but with the IDE section disabled. (just in case I needed the floppy)

Speaking of floppy disks… I didn’t want to keep the multi-i/o controller in the 286 as I planned to return it to the 486SLC where it belongs. (and it’s my only surviving multi-i/o board of this type) Having had so much success with the XT-IDE and given the prices of original floppy controllers from this era, I decided to see if there was another open source controller option for floppy disks. Sure enough, I found that someone named Sergey Kiselev had designed just such a board. I ordered a complete kit from eBay and built it up with the same enthusiasm as the XT-IDE.

This kit was based primarily on a pair of PLCC chips and was a more compact design than the XT-IDE. This made assembly a bit more difficult as there were more connections closer together. I initially tacked the parts in place by soldering just 2 connections each and then went back later to fill in all of the rest. The sockets that came with this kit were the cheaper single-wipe type. I don’t mind these for the smaller DIP chips, but I replaced the one for the ROM with a nicer round hole socket that I had on hand. I also made a small mistake you can see above in that I forgot to socket the larger crystal oscillator, so it’s permanently on the board.

Overall, I’m pretty happy with how the Floppy/Serial controller turned out. I did end up having to change the configuration to make this card play nice with the XT-IDE, but thankfully this is well documented online. All of the chips fit in their sockets really well and the board aligns decently with the ISA slots on the motherboard.

I added a Teac 1.2mb floppy drive (also from eBay) to this system for additional authenticity. (and also because my existing Matsushita drive is finicky when it comes to reading 360k floppies) The open source controller works great so far and it performs just as you’d expect any other floppy controller to function. I’m not currently using the built-in serial features as the DTK 286/12 motherboard actually includes onboard serial and parallel ports. It was really nice to be able to read some of my older floppies that were previously unreadable. At some point I’ll have to see if I can source some DS/HD floppy disks to format at 1.2mb as I never really tried them as a kid. I pretty much jumped straight from 360k floppies to 1.44m 3.5in disks.

These were both fun little projects that made my DTK 286 restoration project complete. If you’re in the process of bringing an old XT or AT machine back from the dead and have similar needs, I highly recommend these kits as they’re inexpensive, fun to make and work really well.

DTK 286/12 board repair and restoration

I’ve been on a bit of a retro restoration kick lately and decided to take a look at a couple of motherboards I’d saved from my childhood. The boards were from my first 2 PCs, an XT clone and an AT clone. At some point towards the end of college, I was running out of space to keep the older computers I had collected to that point. Rather than give up my first machines entirely, I decided to strip them down and save the core parts and interesting bits that still worked and trash the rest. (something I now regret as these parts have become quite rare and expensive)

Fast forward a few decades… these parts have been sitting, stored in the attic and the room over my garage. Interested to see if they still worked, I pulled the motherboards out of their anti-static bags only to discover a horror common to many retro computer enthusiasts. A CMOS battery had leaked and corroded a small, but important section of the board. Back in the old days of IBM-compatible PCs, manufacturers used to include a rechargeable 3.6v battery, (typically Ni-Cd) soldered to the board. These were great and often lasted well beyond the design life of the system, however they became a liability later in storage.

Sadly, I didn’t think to take pictures of the damage when I discovered it, but moved to quickly get rid of the old leaky battery and proceeded to clean up the board with isopropyl alcohol. The acid crystals and much of the corrosion came off of the board, but what became obvious was that a lot of damage had been done. During the time that acid was sitting on these components, it was eating through the metal contacts and traces of the board and its components. This included several sets of jumper pins, a large 40-pin socketed DIP chip, a 1″ PLCC socketed chip and other associated logic chips.

The 40-pin DIP socket was closest to the battery and took the most damage with several of it’s pins and sockets completely disintegrating when I tried to clean them up. Most of the jumper pins cleaned up with a fiberglass brush and I was able to leave them in the board. (though I did have to replace all of the jumpers as they were too far gone) The next big worry was the PLCC chip and its socket as well as a few of the logic chips under it. One of the logic chips was pretty badly corroded, but stayed intact when I cleaned it. I cleaned up the contacts as much as possible with the fiberglass pen and attempted to flow some new leaded solder into the vias in the hopes it would help. Thankfully continuity tests revealed it was making contact, but I really didn’t know how much material was left inside or if it would be enough for the chip to function. This is a common source of problems for systems based on TTL logic where corroded traces can cause too much resistance and won’t allow a line to be driven high. Adrian Black recently detailed a similar issue while working on a much older TRS-80 Model III. (see his reaction at 40:15 when he realizes it was just a corroded ribbon cable)

The PLCC socket turned out to be less of an issue that I’d thought. While it did have some corrosion, it seemed to be mostly be on the surface. A good wash down with IPA, scrubbing and some contact cleaner got the socket looking much better. The fiberglass pen cleaned up the contacts on the chip and it slotted back into the socket perfectly. After replacing the bad DIP socket and a few more clean-ups and re-soldering of components and I was ready to try powering it up. Unsurprisingly it didn’t work the first time. I cleaned out some additional surface corrosion I found in some of the ISA slots, reseated a few chips and tried again. At first, it didn’t seem like anything was happening. I tried reseating the VGA card and tried again and amazingly the 286 POSTed!

Testing the mainboard
First POST

I ended up evicting my old 486SLC-33 from the case seen above and installed the DTK motherboard into it. I also initially borrowed a more modern multi-io controller from the same system, but quickly realized this wasn’t ideal. The BIOS for this machine, while quite advanced for the time, had a hard-coded list of supported hard disk types with specific sector/track layouts. (this was actually common on motherboards up through the 386 era and even early 486 systems.) While I could pick a similar track/sector layout and read from an IDE hard drive, I wouldn’t be able to boot from one. (and it would be risky to attempt to write to it) Sadly the original 20MiB MFM hard disk and controller that was originally attached to the 286 had long been discarded. The smallest functioning hard disk I had was a 500MiB Connor drive from the 486 era. (also donated from the 486SLC) I would continue to solve these problems and others, but that’s a story for another time. The board worked and was able to boot from a floppy disk and read a DOS-formatted hard disk. The resurrection of the 286 was a success!