Primis' Domain

My Modern IBM PC Clone Machine

2022-11-08

Introducing the IBM PC

On August 12th 1981, IBM released the IBM Personal Computer. Designed far away from their corporate headquarters and it's bureaucratic nightmares, it was designed in strict secrecy. The architecture was designed with completely off the shelf parts.

The motherboard was designed in only 40 days, and a working prototype was in hand only four months after the project started. Because the design wasn't technically just an assemblage of existing technology, no patents were filed for the PC architecture either.

IBM also published the entirety of the schematic design and bios printouts in their technical manuals to encourage compatible software and hardware to be produced. Did it ever work.

PC Clones

In November of 1982, Compaq released the Compaq Portable. The first IBM PC compatible. It began a barrage of PC compatibles which still continue throught to this day. This was possible due to the open architecture of the PC. While IBM itself didn't profit from the success of the PC clones, it massively consolidated the home computing market, which benefitted the everyday consumer with lower prices between compatible competition machines.

The only piece of the puzzle not completely open was the BIOS. While published in the IBM technical manual, it was copyrighted. The solution?

Clean Room Reverse Engineering

The idea itself is pretty simple. Have one person/team read the source code from the IBM BIOS, and describe it, function by function in plain-ish english. Then hire someone who has never seen a single line of said BIOS, have them sign an affidavit to that end, and have them write a new BIOS from the description provided by the first group. In this way, the code itself isn't being copied, simply it's functionality! This has been legally upheld in the US as fair use, and not copyright infringement. This precedent is also the reason Wine can exist.

Modern Clones

Today, there are suprisingly still PC compatible clones in existence. The base architecture and all the support chips can still be readily sourced which has lead to hobbyists to make what are essentially the same computer designed by IBM and copied by Compaq and so many others 40 years ago. One such example that I have personally is the Xi8088. This is a mostly PC-XT compatible, with some added features from the AT class such as Real time clock, more IRQ lines, support for the max 640k of RAM, and support for dual channel PS/2 for keyboard and mouse, which is a nice "modern" feature. Oh also it's on an ISA card.

An Xi 8088 PCB, Fully assembled with all chips populated.

ISA SBC's

ISA is a parallel bus, with no active circuitry between individual slots. This means that passive ISA backplanes can exist, and ISA Single Board Computers can be plugged into them. To devices in other slots, they're blissfull unaware that the bus master isn't on the same PCB the slots are on. The Xi 8088 is one of these SBC's but there have been many others more powerful over the years. Including commercial offerings for the industrial market.

My XT Class Computer

I decided last year to begin looking into making an XT Class clone from homebrew parts as much as possible, this is what I've currently got in my setup.

My Xi8088 Experience

I actually own two Xi 8088's. The first I bought as a PCB only, sourcing the components myself from mouser, digikey, and some components I had laying around. This one refused to boot properly. It was unstable and buggy, and I could never get it to fully POST.

My second attempt was buying a DIY kit from ebay from NOAMi. This had all the components needed to make the board, all I had to do was solder it together. Neat!

Well, there were some issues. Turbo clock still isn't working, and somehow I managed to destroy an interrupt pin and had to bodge wire it. But despite all this, I managed to get it booting and working (semi) reliably!

Sergey's ISA Backplane

The ISA Backplane, with it's 8 ISA Slots

Sergey Kiselev designed an ATX compatible ISA Backplane which works pretty well. It's sold on ebay available as a kit, or bare PCB by various resellers, I bought mine from NOAMi's ebay store. Unfortunately, this seller seems to have no listings currently. which is sad. It has only a few flaws in my opinion, but works well enough for me.

Slot Alignment

The biggest flaw, by far, is the layout. While it will fit into an modern ATX case, only the bottom 4 ISA slots are actually lined up with the expansion slot covers. There are a total of 8 on the board, the other 4 are in a very awkward spot of overlapping where the I/O Sheild traditionally goes.

Blue Standby LED

I bought the backplane as a kit from NOAMi. The kit came with a high intensity blue LED for the +5vsb rail. It is way too bright to leave on, and I ended up desoldering it due to it just being useless to me. In my opinion standby lights should only ever be red and dim, if they need to exist at all (which this one doesnt).

Useless Expansion Area

There's a tiny prototyping area underneath a single serial port. However as no ISA logic pins are exposed here (just a VCC and ground rail), you would need to jumper pins from the ISA slots themselves, which, I've tried, is unweildy. In a slightly bigger board design, this could be twice as wide, with pre-wired slots for bus decoding logic (There's already one for the POST Code display!) that would simply not be populated by default.

There could also be more options for I/O on the back plane for actually wiring up anything from the prototype area. Maybe a parallel port? This is a very minor nitpick though, accounting for what you'd want in expansion is hard as it stands.

Sergey's ISA Floppy Disk and Serial Controller

The ISA FDC and Serial Board

Another product created by Sergey Kiselev, This supports a 9-pin RS-232 UART, a standard IBM floppy drive header, and an 8KB ROM to enable the floppy as a bios extension. It has no real flaws to comment about other than the annoyance that the IDC header is upside-down from what you'd want causing a cable curl-over. I bought this fully assembled from NOAMi's ebay page, and it worked perfectly when I tested it with both my 3.5" 1.4MB drive and my 5.25" 1.2MB drive. It did however have weird issues with my 360KB ALPS drive from my PCjr, in which it only worked if I had the drive set in my bios config as a 3.5" 1.44MB drive. I'm not sure what the root cause of this was, but that drive isn't currently in use anyway.

XT-IDE

The Lo-Tech XTIDE rev 3.0 Card in Red

The XT-IDE is pretty awesome. Basically it's an open source IDE interface for 8-Bit ISA slots using basic, off the shelf components. Literally a handful of TTL logic chips and an option ROM. The reason for this is because IDE is basically just ISA without a full address bus.

Because it's open source, and super useful for old computers, there are lots of different versions of the XT-IDE. I got the Lo-tech CF variant.

This version is nice for two reasons to me:

It also has a pin header to plug in a hard drive LED, which is cool, and an optional connector to solder a power connector onto, which is nice if your computer doesn't have an extra power cord (like if it's an actual IBM PC).

The disadvantage of this card versus Lo-tech's 8-bit IDE adapter is support for actual IDE devices (CD drives, IDE hard drives, IDE to Sata...) aren't supported on the CF variant, just Compact flash cards (in theory) due to 8 bit vs 16 bit data transfer.

8 Bit VGA

The Trident TVGA9000B

Wanting to not get a separate monitor for CGA graphics, I decided to get a VGA card, since my monitors still have VGA inputs on them. There's a list of 8-Bit friendly ISA cards which work on an 8 bit machine (like the xi8088 is). Searching online I found a Trident TVGA9000B on ebay for $25 plus reasonable shipping. It has 512K of VRAM, and worked just by setting jumpers on J9 to bridged. You can still pick these up for pretty cheap on ebay too, even if all the listings say "rare" on them.

Trident made several variants of the TVGA9000 chipset, and Sergey Kiselev even made an open source board called the ISA SuperVGA based around the "i" variant. However the chip itself is usually more expensive to buy than a used VGA card.

The card works well, DOS is happy with it, and even CGA modes work well on it. My main complaint is for some reason it uses the ISA clock for CGA modes causing some fun color artifacting from bus noise, but uses the built in clock for text modes and VGA specific modes. Weird!

What's missing?

There's a few things that I could add to the system that would be neat.

For starters there's an Adlib or other 8-bit sound card. I've been looking into this but haven't really settled on anything yet. Sergey has an OPL2 card design, but it's lacking a gameport, which is definately something I'd want with my limited number of external slots.

I'd also like to look into some sort of ethernet card. I know DOS TCP/IP programs exist and it'd be fun to try them out, even if I'd need to source a thinnet to twisted pair adapter.

Lastly I'm currently working on getting EMS set up with a LIM 3.2 compatible 4MB card, which I want to describe in a later post once I get it fully working. For now though it's causing headaches and corrupt memory.

Parting Notes

The IBM PC was never a fast machine, at 4.77MHz and requiring 4 clock cycles per bus cycle (plus wait states!) make it feel slower than an apple II running at 1Mhz. I have an NEC v20 in my machine, which helps a bit, and only 1 wait state enabled, but it's still slowwww. I'm talking like a good 3 minutes to boot to DOS properly. And the CF card I have in my XT-IDE has a read speed that isn't too hot either. The whole thing feels like something is wrong with it due to how slow it is. It's a shame that for some reason I can't get the 10MHz clock circuit working, it would probably help that.

In terms of software, I haven't tested a ton yet as I'm still debugging an EMS board (More on that at a later time.) But I've successfully gotten Alley Cat to play, and QBASIC launches (with mouse support!).

Unfortunately I can't play the 8088MPH demo because of the VGA card and the V20. I've tried, the graphics glitch (expected) and the demo crashes (unexpected) and never reaches the PWM audio section.

All in all, it's been a fun thing to explore around. Most software I've tested from the era works properly, which is awesome. I can't wait to try some more fun stuff on it once it's all finshed up.

🏷 retrocomputing
🏷 hardware
🏷 IBM-PC