Haven't bought, but got an old mainboard and decided to fix it.
This probably will be a long post, full of things which are not interesting for an average Internet user, but this masochism is my hobby and I like poking such hardware. I will probably take some photos, scan my notes and put a blog post about it.
I got a PC XT mainboard. The history of it is known: previous owner got it from someone else, who told that it is damaged and cannot be easily repaired, so it became an interesting exhibit in a bookshelf. It was for bout 20 years in a bookshelf.
The mainboard is a really old one - it has an ISA male edge connector on the side, all TTL chips from around 1983, socketed, but it was not an IBM. The logo, visible on a silkscreen under the processor, resembles a stylish written "S" letter with its center line shaped in an American resistor symbol.
It was a clone, but a clone made with some uncertainty. Not that there are circuit errors, it electrically still is a 5160, but the design itself is... like someone took schematics from the technical manual, looked at original PCB and said "OK, let's try to design it again", and this was the first try, made quickly to verify is everything OK. The mainboard has a piece of breadboard in one of its corners produced by design. Tracks are not led with straight angles, like in IBM, but they are curved. All chips are socketed, and there are their models written on the silkscreen, but they have lots of typos, like "74L5S05" instead of "74LS05" (generally silkscreen designer put digit 5 too many times in a chip types), there are also typos in descriptions like "ROM SEPAARTION" or "16K RANS". The mainboard had a Nec 8088 processor, most components are from Nec and TI.
The first thing before powering on was removing each chip and checking it in TTL tester. This way, 2 blown 74LS244 and 74LS74 with partially damaged output have been replaced. CPU has been tested in another XT and it didn't started. So I replaced it too.
I dumped the PROM and compared with 5160's dump. It was OK. Dumped EPROM - a surprise, it was a BIOS from 08/16/1982, this ROM was never officially released, and comparing code I find that it is (in at least 4 places) different than another copy which is in the Internet.
I decided to try it in my XT Turbo to see what the result will be - XT BIOSes are quite interchangeable if no custom chipsets are used, and I already tried a 1986 5160 BIOS in it. So, comparing to the 1986 one, this unofficial BIOS is slow as hell, it chews through 640kB of RAM in about a minute, has no support for 720kB drives and is too greedy about some card's ROMs. I will probably save the chip as it was originally, but I'll prepare a chip with 1986 BIOS, or maybe even a Phoenix (although I don't like Phoenix - it boots up very quickly, but may not see some board ROMs).
Let's proceed further. Before powering it on I did a quick configuration review: DIP switches all in "ON", this should not be like that, especially when most of circuitry is like 5160 and DIP switches are described on silkscreen like a 5160, I configured it as in the original. Next, the jumpers.
First thing I found was that one jumper block is really similar to the one in XT, responsible for 64-256K or 256-640K board mode. And it really could have this function, but someone soldered it in the solder side to 256-640 option. Some jumper pins are present in the black plastic bases, but are not soldered into PCB. And there are much more jumpers than in 5160. Especially near ROM sockets, there are 5 sockets in this mainboard and their system is different than in 5160. The first difference is a presence of 74LS30 on the way to /CE of ROM, and /OE ends in some unknown jumper block. I decided to try to power it on quickly, but before connecting power supply I tested it with ohmmeter. SHORT.
Tantalum capacitors? Another bad chip? Short in clock generator? Nope. Someone jumpered Vcc with GND. After this discovery I decided not to trust existing jumper configuration, and after removing "risky" jumpers the machine of course shown no signs of life, but at least nothing blown PSU's fuses.
In the meantime I burned a diagnostic ROM from MinusZegoDegrees site.
OK, because this mainboard is not known at all, even in TH99, I had to do a comparison - with 5160 schematics.
The first thing I found was the ROM in socket "ROM0", while it is not possible by LS138 to mount the ROM0 socket in F0000 in this board. The LS138 has all of its IBM's "unused" lines used in ROM sockets, and leftover lines are formed in a strange loop with an originally-unused inverter on the other corner of the board. A whole circus ends with a jumper: This thing or GND can be used to control one of active-low gates of LS138. How beautiful, what the hell is this thing?
After drawing this circuit on paper I found that the only function of this thing is injecting delays to make the board run with slower EPROMs. And by slower I think about 350-400ns. These times 250 was a standard, 300 was obsolete, but usually acceptable. Nevertheless, this goes to ground, my EPROMs are all 150-200.
Now let's go to 18 pins sticking from the board. First, I found all Vccs and GNDs. Next, I identified all EPROM sockets pinouts - all from ROM0..3, no use for me, it's 4 and 5 for system ROM. Let's go to the next, 10-pin header, identifying the same things.
So I understand that there are address lines you can connect to ROMs pins. There may be even a /CE, which comes from LS138, while /OE can be tied to ground or to /MEMR, which is a reasonable choice because there is no /MEMR in any other place near ROMs. There is an option to connect A14 to pin 1 of socket to fit these fancy 32kB mask ROMs which have it, but I totally do not understand the possibility to connect /MEMWR to pin 27. Do they expected to turn this board into ROM development platform, in which it's possible to install some SRAM, blow the contents inside from the system itself, reboot and try how it boots?
Another enigma is option to short IRQ2 to one of EPROM's address lines.
I finally made some nice alignment assuming that other address lines are OK. Installed an original ROM, power on. Mainboard dead.
Changed to diagnostic ROM and flipped a jumper for 2732, as the original was 2764. Mainboard dead. TTL probe: No access to ROM.
OK, so let's try to finally go through the circuit to generate this /CE signal. The thing should start with address lines 15, 16 and 17, and end with /CE. During its progress, there should A18 and A19 come, as well as /MEMR, which in this board is already solved with /OE. What's near LS138? 74LS30 and more jumpers!
So these jumpers allowed to connect A,B and C inputs of 74LS138 multiplexer to address lines, 12-17 to be exact. And of course they located ROM around the network adapter's hypothetical space, so it was obvious that the board did not started. Some inputs of LS30, a multi-input NAND gate, were going to pads for a jumper for disabling ROM entirely (but what for?). Small corrections, original ROM and boot.
The board started POST, slowly processing its 512kB of RAM I put in two first banks of chips. Good, but I found a very interesting problem:
- The mainboard runs BIOS without problems.
- The mainboard can even boot ROM BASIC if I put it in.
- Before boot, BIOS beeps me that it cannot detect video board, while displaying the memory test using the video board.
- Diagnostic ROM test hangs when testing MDA memory, with a different Hercules (sorry, no MDA) displaying a "soup" on screen, CGA behaves erratically.
Well, this was not a video board's fault. I decided to observe the jumpers more carefully through a magnifying glass to see how they were connected. I noticed something odd: Some jumpers were cut from double-in-line block and soldered separately. Why? And why these two pins are bent a little distant from their base, and the other two so close to their base? Maybe the jumper doesn't go horizontally or vertically, but... diagonally?
The line A18 completed a set of signals for 74LS30, which could then drive gate of LS138 multiplexer, so the BIOS has finally disappeared from video memory space.
System passed the diagnostic tests. With Phoenix BIOS it even booted off a 720K floppy.
Then I decided to give an old CPU a try - it started. It looks like the problem was only in frequency rating, as the XT I was testing components in was a Turbo XT (although not in turbo mode).