Introduction
This page describes my design work to develop my own implementation of a 16 bit AT PC system in ATX form factor. The design goal is to create a PC system fully compatible with the industry standard 16 bit AT technology developed by IBM, however to also offer various improvements which will make using such a PC much more easy and in such more enjoyable in my opinion, from a perspective of comfortable and user friendly functionality. This design, which will ultimately be published on my GitHub pages, is intended to be used solely and exclusively for retro PC hobby purposes, for retro computing enthousiasts like myself. The design will implement a version of logic circuits which is most appealing to me based on my experience with creating mainboard systems while at the same time attempting to keep the system fully compatible with the industry standard 16 bit PC. I will also be making various changes to the design in order to modify the system somewhat. This is not done for simplification persé but rather to reduce total board space and increase system stability and expandability in a more modern fashion. I will make attempts to do the whole design without using programmable logic altogether, if conventional logic ICs can possibly prove to be sufficient in the timing constraints necessary for the new design to function properly.
After finishing my XT PC mainboard design project with revision 3, and publishing the designs on GitHub, I started studying the IBM 5170 AT PC circuits, to see if it would be possible to design a 16 bit AT compatible PC in such a way which could be attractive to me. The "secret sauce"-alike AT circuits created by IBM in the 5170 proved to be quite intrigueing indeed, the more I studied them. Especially the fact that the AT design is backwards-compatible with XT expansion cards and how IBM implemented this by using the 8 to 16 bit databus translation method. This principle is also supported in the 80286 CPU itself by Intel. IBM implemented this design in their 16 bit industry PC standard mainboards which started a very big number of clone designs from various PC manufacturers. The most interesting variations of AT PC designs to me are the early "discrete chipset" versions, meaning that there actually is no chipset used in the design and that it is fully done in TTL logic and a few PALs and PROM chips. This design method used in the IBM 5170 PC and derived designs by others are particularly interesting because these still can show the interfacing mechanisms in actual logic chips rather than a few integrated logic design parts in the form of one or more PC chipset ICs, which would not at all be interesting for someone like me who is trying to understand how the 16 bit industry PC actually functions.
Designing my own version of the IBM AT PC could serve to open up various future developments which I will research and explore later on to see what else could be possible to further develop a 16 bit PC system. I plan to include these features early on in the prototype designs. I will publish my AT designs on GitHub once I have developed a version which is stable enough and worthy to publish them.
The most important part of this project will of course be the mainboard PCB. In addition I will develop a SRAM memory module and CPU module to accompany this mainboard. This method provides several advantages:
- saving PCB space which can be used for including more features in the mainboard design
- offering the possibility to upgrade the CPU and memory, including the option to emulate a 16 bit CPU with modern technology which could possibly result in an even faster system, my dream is to create a mainboard which would be compatible with a 16 bit version of a 80486 or later CPU and thus being capable of running faster DOS games such as Doom and being able to run Windows 95 with reasonable speeds.
I will integrate various necessary PC interfaces and the realtime clock with non volatile CMOS configuration RAM on the mainboard. I will include as many of the typically necessary expansion interfaces onboard as space can permit on the mainboard PCB. For the final completion of a 16 bit PC system, I will implement 7 fully functional 16 bit ISA slots on each mainboard revision of this project.
Path of development
I will develop this project in a blog fashion, thus the whole design path and revisions of the project will follow chronologically in this single web page.
Phase 1: study of existing designs and finding physical reference hardware examples
I have bought several old example mainboards from the 1980s and found myself initially rather unlucky to come across several unreliable mainboards. The reasons for being unreliable were probably PCB tracks which had become compromised due to the age and previous handling of the mainboards, damage in transport, as well as discovering some poor manufacturing quality such as one particularly badly warped NCR branded PCB, soldered to the ISA slots in pretty warped condition. Straightening such a 4 layer PCB after being mishandled by terrible wave soldering techniques will probably not be an option, especially after the PCB has already proven unreliable.
Anyway, after doing some testing, troubleshooting and repair work on the last mainboards I was lucky enough to come across, I finally now have two reference hardware example mainboards which appear to now be functioning reliably:
IBM 5170 mainboard "type 3"
The 5170 PC mainboard by IBM which I have studied and repaired is showing particularly beautiful and excellent design and manufacturing quality which I am really delighted with. I found a new appreciation for IBM in those years with respect to design and manufacturing quality after being able to compare between different brands. Though the design I studied contained a small flaw corrected with a few wires, besides this it's really remarkably well made.
The 5170 mainboard was made in two revisions, type 1 which uses smaller capacity DRAMs and a larger form factor square shaped PCB, and type2/3 which implements the same PCB design using a smaller rectangular PCB size as well as larger DRAMs, though unfortunately still only containing 512KB of RAM onboard. Initially I got a lot of RAM parity errors in random areas and the occasional error 107 System Board Error, the so-called "HOT NMI TEST". After desoldering and replacing a few logic ICs which proved to function only marginally, these errors are fully gone from the system.
ARC X286 Model 12 mainboard
The final reference hardware example I bought which proved to be worthy and useful for my project is a X286 Model 12 mainboard by ARC. This mainboard is also of a very reasonable manufacturing quality, however I found it necessary to desolder a whole quadrant of the PCB due to corrosion damage by RTC clock battery chemicals. It was necessary to extensively remove degraded solder from the PCB and from the legs of ICs in the area, and resolder all the components and repair a few traces, replacing all the dangerous tantalum capacitors and some transistors in the battery circuits. After all the work I have done on it, the ARC looks reasonable enough and functions in a stable fashion.
Creating KiCad design schematics of the reference hardware example mainboards
After having two functional mainboards which can serve as reference hardware examples for testing and design evaluation purposes, I proceeded to first draft the whole IBM 5170 type 2 mainboard in a single sheet KiCad schematic. Doing this work, it also serves to get more familiar with the various system circuit areas and how they function as a whole. Having a single sheet schematic allows for easier location of circuit areas by doing searches and pans throughout the schematic. Additionally it offers the advantage of creating the full netlist which I will be verifying by beeping out all the net connections on the IBM mainboard.
After completing the IBM 5170 schematic, I am creating the schematic for the ARC based on that. First I renamed all the components to their ARC counterpart designations, and next I verified the gate connections. In doing this I discovered a design problem in the ARC mainboard, an open input on a '08 AND logic gate in the directional control logic for a databus transceiver. I will do some testing to see if and how this impacts the stability of the ARC mainboard. On rare occasion I was seeing some small power on hardware detection problems when using a MR BIOS, which go away after a single reset of the PCB and subsequent saving of the configuration.
At the moment I am working on this project by drafting various schematics in KiCad and creating my comprehensive project notes, digital and on paper, for adapting and designing all the new logic involved in the new AT system. I am also working on the new memory layout as it will be implemented in this project. I will update here with more info.