XaiJu
cathoderaydude
cathoderaydude

patreon


Preliminary findings: Compupro 8/16

Got an item; don't know if I'll get it working soon or not so I figure I should share it.

(Note: I'm dipping my toes into this particular field for the very first time so I may get things wrong; will edit with any corrections. Also: this was provided to me by a patron who didn't want a shoutout, but you know who you are, so thank you!)

The machine is made by Compupro, sometimes known as Godbout Electronics - apparently the founder's name, and also a really intriguing company that seems to have a lot of personality. The machine itself however is a Compupro 8/16, an S-100 bus system produced somewhere around 1983 (though the manual contains a lot of references to 1981), which is described by several random "vintage computer database" sites as one of the Last Great S-100s.

If you don't know, S-100 refers to the systems derived from the 1975 MITS Altair 8800, the machine credited with kicking off the home computer / microcomputer revolution. Like the PC, it was cloned without permission, and S-100 was a colloquial name for the defacto standard based on it - in fact, the whole thing went very much like the PC, spawning a whole ecosystem of clones and intercompatible hardware and software; the phrase "Altair or 100% Compatible" would aptly describe the situation.

It would be less apt to call it "the PC that came before the PC," because it never had anywhere near the penetration into the world of "normal people" that IBM's product eventually would, but within the field of computer-touchers, S-100 machines dominated from 75-77, continued to play a significant role even after the Apple II and competitors came out, and in fact were still relevant in some niches well into the 80s, actually competing with the IBM PC to some extent. Despite that, "great S100 machine" doesn't necessarily mean what you'd expect. Let me explain.

S-100 In A Nutshell

Okay, so: this is a weird looking machine, right? Particularly that power supply - I have a whole section about that further down, it's a hoot, but hold your horses. The important thing is to get your bearings and sense of scale, because that transformer is much larger than you think. This case is about 17 inches (43 cm) square, so this is roughly the size of a 4U rack server. Compared to a conventional PC, it's enormous, heavy, and has a tremendous number of slots, but here's the really wild thing:

If we pull all the cards - there's nothing left. It's just 20 slots with traces running between them, what's often called a backplane. This is a funny coincidence because I was actually just in the middle of writing a script about industrial backplane-based PCs, for which this will serve as an excellent point of comparison (also if anyone has a PICMG chassis they want to get rid of please get in touch) but I digress: The motherboard contains no active circuitry whatsoever, other than some voltage regulation components that simply serve to terminate the bus.

Every S100 machine looked like this inside: A completely passive backplane, a power supply, and nothing else. You have to add a bunch of cards before the machine is useful, which doesn't seem that different from the original IBM PC (which was literally useless without any addons) except that in that case the motherboard itself housed a surprising amount of equipment that we take for granted, like the CPU, base RAM, DMA controller, and interrupt controller. Really, the PC motherboard had almost everything except input and output, whereas this - like the computers of yore that preceded it - has absolutely nothing built in.

This is the "CPU card" - and that's all it is. Microprocessors don't constitute a complete computer system - even before you get to things like RAM and peripherals, you usually need several fairly high-level components to flesh out the machine's ability to boot and manage itself, but this has none of that, just a handful of glue-logic ICs, and the CPU - or more accurately, CPUs.

While most S100 machines were based around 8-bit Intel 8080 or Z80 CPUs, the Compupro 8/16 is a hybrid, and this is the specific (and only) part that makes it that way. This board contains an 8085 (a slightly updated, simplified version of the Intel 8080) and an 8088 (the same CPU the PC used.) Compupro simply put them on the same card, gave them access to the same peripheral bus, and provided some switching logic to allow the system to swap between the two on the fly, so you could run a standard S100 OS and software, then switch to the 8088 to run 16-bit-enhanced software.

How much of that existed? Good question, but Compupro did at least deliver some they'd customized, including 16-bit-enabled versions of a couple popular applications, and several OSes.

The standard OS on S100 was CP/M, known by most people solely for it's connection to MS-DOS, which was more or less, to some extent, sort of based on it. We won't get into this atm, but: the similarities fall apart pretty quickly as you start using it. Anyway, Compupro made a custom version of that to support their hybrid 8/16 system, as well as additional versions to support their other bizarre and wacky CPU options, including an 8086/8087 card, an 80286, and a motorola 68000. That's a full 32-bit CPU, by the way; the loadout included a 1.5meg RAMdisk as standard equipment and cost around $20k by the time you were done. Or, if you were nasty, they had a plain old Z80 option - the lineup absolutely ran the gamut.

These advanced CPUs, however, are almost the only thing that made this machine unusual; since the S100 bus was rigidly defined almost a decade earlier and Compupro could not extend it, it's limited to tasks that all other S100 machines could do in a way that wasn't even true of PC clones; ultimately, everything in the machine is constrained by the capabilities of a bus from 1975, and this could be a problem, since one of the things that was on that bus was...

...the RAM. This is a 64K card, and my machine included two, totaling 128K, not a shocking amount for 1983 but a reasonable starting point. The CPU has to reach this over the same bus it shares with all the peripherals however, which is part of why there are so many slots. If you wanted 512K of RAM you might need to install 8 boards, so those 20 slots could get eaten up real quick.

Unfortunately, since the S100 bus is 8 bits wide, any CPU that wanted larger data words (like the Motorola 68000 or even 8086) might have needed to spend several cycles getting them... unless you had one of the later S100 systems (like, presumably, this one) created after 16-bit CPUs started getting popular. Those redefined one of the pins as a "SIXTN" signal, allowing cards to redefine the bus temporarily as sixteen-bit and allowing full width transactions. Neat!

Since we're looking at the card inventory, let's continue the tour.

The next most important board is the System Support card, which is kind of the S100 equivalent of an AST SixPak. I love it. First it includes a couple components that you'd expect to find on the CPU board, such as the interrupt controller and interval timer - and I want to call those "essential" parts, but I'm not that much of an expert on low level computer architecture, so maybe these were perceived as Nice Options at the time.

On the other hand, the card's serial port feature is certainly not optional, because it's a Very Special Serial Port. S100 machines frequently had multiple RS232s, for reasons we'll get to, but this one is port 0 - the local system console.

That's a big thing about S100 systems: They almost NEVER had video cards, even in the sense of IBM's text-only MDA still being a "video" card because you plugged a monitor into it. While graphics hardware DID eventually exist, it was extremely rare and specialized as I understand it; the majority of S100 machines had no keyboard or monitor ports, you just had to bring your own dumb terminal from Zenith or Televideo or whoever and talk to the machine over RS232. This port is the one that the machine will use by default, so you really need it.

This card can also include a math coprocessor, but amusingly it's not the 8087 that was specifically designed to work with the Intel 8086/8088. The standard math chip for S100 was AMD's AM9511 or 9512, so that's what goes on this board, though it was optional, and is not populated here. I assume you could use this from the 8086 - I think it had special instructions for interfacing with the '87, whereas here you'd have to interface with the 951x as a peripheral, but I don't know that it makes that much difference, and the manual doesn't say one way or another, so I figure it would work.

This board also includes an RTC, which is very funny to me given that the PC did not get one as standard equipment until 1984. This, if you're curious, is why there's a battery holder on the back panel; it looks like it's for a AA, but it's really for a PX21, a 4.5V camera battery common at the time, and while those were available in zinc-air, nicad, and mercury, Compupro strenuously recommends you only use alkaline, because the others may act weird, and also might leak all over your machine. And then they put the holder on the outside anyway! So that won't happen! And so you can replace it, because it's a consumable! They were thinking about this in 1983!!!!!

Another thing the battery does is support the RAM, if desired. The board comes with two 6116 SRAMs, which provides 4K of memory that can be used for whatever you like, and - if you want - can be battery-backed while the machine is off. This is exactly how the "CMOS settings" in a PC are stored, except there the SRAM is part of the RTC chip, and the BIOS has routines to save settings to it. Here, you'd have to do it yourself... as far as I can tell.

I'm still trying to work this part out, but I don't think this machine - or any S-100 system - has firmware per se. Like all computers, the CPU card is hardwired to jump the 8085 to a given memory location on startup, and on a PC, that would be the BIOS, stored in a couple EEPROM chips - but I haven't found a ROM on any of the core system cards.

If you want, you can replace the two SRAM chips on the System Support card with a pair of ROMs and probably put your firmware/boot code in those - the manual notes that you should probably disconnect the battery jumper if you do that, so you aren't 'battery backing' a ROM - but I don't think this was the done thing.

Instead, I think the system BIOS is loaded into RAM from disk, and in order to get it there, you have to install a drive controller card with a "boot ROM", which the CPU will jump into as soon as it's turned on, so that it can find a disk drive and load the BIOS. So, about that:

Here's the disk controller card, DISK 1. Great name. You might be wondering, is there a Disk 2? Well, I don't know, but there is a Disk 3 - that's the hard drive controller. Yes, they shipped these with hard drives. I really, really want an S100 machine with a hard drive, except for the part where I really, really don't. Clunk-clunk-clunk-bzzzzz.

This machine included a pair of 8" floppy drives in a chassis even bigger than the system itself. I did not want those; I do not have the room, nor the media, nor do I want to deal with those media failures, and as I understand it, it's very easy to substitute other formats. The interface is an ordinary Shugart, like you'd see on a 5.25" or 3.5" floppy drive (in fact, the interface card supports 5.25" disks.) Curiously however, it apparently uses a 50-pin connector - with most of the pins not connected. That's why you can adapt it to a normal interface, but I don't know why they did it like that.

In any case, this does have a boot ROM (dead center, with the sticker), and also, one of the most curious things I've ever seen: a serial port, which the manual says functions as a local terminal! So this is like the serial port on the System Support card, but much crappier because you're only supposed to use it for one purpose: rebuilding the BIOS.

Based on what I read in the manual, it sounds like the S-100 architecture doesn't solve for disk interfacing quite the way the PC did, so in order to make your OS understand how to talk to your floppy or hard disk, you have to basically compile a new CBIOS (where C stands for Customized, i think?) with the disk controller code integrated. The end user has to do that, since they're the one building the system, but since these are the days before low-voltage EEPROMs let alone flash memory, I think the resulting "firmware" can't get written to a chip, and instead has to be loaded from disk every single time you start the machine.

In order to even get to that point however you need the machine to function with the new disk card installed, so I guess you boot the system using this special serial port, make your customizations, write them out to disk, then reboot and switch to the normal terminal port - which you'll want to do immediately, because this one is bit-banged in software.

Since this port is only meant to be used once, it wasn't worth it to install a then-expensive UART chip, so it's driven entirely from the CPU. That means it's very unperformant, and awkward because CPUs can be different speeds. So to initialize the terminal during the BIOS build process, you have to press the letter U on your terminal, so it has a known pattern to look for and speed-train the virtual UART. Absolutely fascinating, never seen anything like it.

Now, when it comes to serial cards:

This is the INTERFACER 4, a delightful name, and it does indeed do an awful lot of interfacing. It offers a Centronics-type parallel port (e.g. standard PC printer), a more generic parallel port (I assume you bit-bang this), and then three serial interfaces, all delivered through a single cable. i love how they did this:

it's a single 50-pin plug on one end, which they stripped into 16-pin segments, then crimped into the left end of each connector. I'm surprised the pinout of the standard DB25 IDC plug worked out this conveniently, and even more surprised that I've never seen this trick used before. Have I mentioned that I love this company?

Now, why do we need so many serial ports? Well, lots of reasons, but one of the stronger ones was for multiuser systems. Like a lot of 70s/80s computers, the 8/16 was sold as a single machine that multiple employees would do work on at once, and to that end, Compupro also sold a modified version of MP/M, a popular multiuser-enhanced variant of CP/M. I don't know what the upper limit on user count was, but I'm sure you could use at least these three ports, plus the local terminal, to host four people off this one system.

So that's the card inventory. It's not the spiciest system in the world, or even the spiciest that this company made - maybe it's even mundane as S-100 machines go! But it's plenty cool enough for me. I have other systems based on the S100 architecture, like my Sony SMC-70, and I have other things that'll run CP/M, but this is the first machine I've ever owned that's a genuine descendant of the Altair, one of the most historically significant computers ever made, so I'll take it.

Before I wrap up however, I'd like to talk about the power supply system.

The Power Supply

By the early 80s, we had switched-mode power supplies - the IBM PC used one, for instance, and while I've said before that I think it seems bigger than it needed to be, and certainly shockingly big by modern standards given it's pitiful 53-watt output, it's still much lighter, much more compact, and much more efficient than a conventional linear supply would have been. Unfortunately for the Compupro, I think SMPS' could not yet deliver oomph as economically as they needed.

This supply is larger than you think. It is easily 2/3rds of the (considerable) weight of the machine; that transformer is bigger than both my fists together, I think. And this all seems obnoxiously oversized and barbarian until you realize that it delivers 197 watts of power. Again, nothing by modern standards, but almost four times what the original IBM PC was specced for! I was so shocked by that that I spent quite a while studying and reading about it, but the result may be too technical to be interesting to most so feel free to skip it.

First, the capacitors: They are enormous, by the standards of any era. The big ones are 110,000mfd / 10V electrolytics, wired with 10-gauge cable. That is, like, twice as thick as what's powering your whole PC. In front of those are a pair of 12,000mfd / 28VDC caps, which are a bit more reasonable, but still not tiny. Then, behind all of those, is a 4mfd, 660VAC cap - the sort used for starting AC motors. Buh?

Okay, so let's take this one step at a time. The first two sets of caps do the obvious thing you expect from a very basic linear supply, providing first-stage filtering on the DC rails. S-100 systems provide three standard rails at 8V, 16V, and -16V volts nominal, and these numbers were surprising to me until I read a wiki page and was reminded that the early Intel CPUs needed +/- 12V for some reason. I periodically run across this fact, and the wiki page on the 8080 says it's due to the use of "non-saturated enhancement mode transistors" but my understanding of semiconductors doesn't extend to understanding why that is, so i keep forgetting. Anyway.

Why such odd voltages? Well, power supplies often have strange voltages internally, which get regulated into the well-known and comfortable numbers we all know - 3.3, 5, 12, and so on. S-100 however sends the power rails to the boards unfinished; the nominal voltages are very nominal, and can range up and down by something like 6 volts. It's up to the cards themselves to turn them into clean power, and to do that, they all use the venerable 7805, 7812 and 7912 linear voltage regulators.

The 78xx series are convenient and effective, but have two problems: One is that they "waste" any excess voltage as heat, so if you feed 12 volts into a 7805, it'll get much warmer than if you give it just 9. And second, they have a substantial "dropout" voltage: their input has to be at least 1.6-2.0 volts above their desired output voltage at all times.

So, in order to get properly clean power out of a 7805, you need to put 7 volts into it to start - and then to keep it clean, you need more voltage, so that if the input dips a little, that doesn't reflect in the output. 8 volts nominal is therefore a good middle ground, because if there's some sag on the input due to suddenly heavy load, it gets smoothed out instead of dipping below the dropout threshold.

Now, why do it like this instead of delivering pre-cleaned voltage like a modern computer? Well, one good reason is that the total rating on the 8V rail is 25 AMPS; that's why those caps use 10-gauge wire, because that is a genuinely fat amount of current. And while we have good ways of handling that much juice today (ATX power supplies regularly put out over 100 amps) it was pretty spicy back then. The 78xx regulator series for instance handles an amp, maybe an amp and a half; there weren't (AFAIK) any other good pre-rolled solutions at higher current; and building a single monolithic 25A VRM with conventional linear tech would have been big, hot and wasteful, so it made more sense to leave it to the individual cards.

With that said: per one site, apparently the 8800 initially did have some kind of VRM on the backplane which kept the 8V rail at 8V (instead of floating at probably 12+ under light loads) to reduce the heat dissipation requirements of the per-card regulators - but as people loaded down their machines with cards, users had to remove that VRM so the rail wouldn't sink below the dropout voltage. Hilarious! Also, I'm really curious what that looked like; it had to have used a lot of silicon.

The +/- 16V rail is much less spicy. It's job is to be converted into 12V and -12V, which are used primarily for two things: bias inputs to CPUs like the 8080, and driving RS232 transceivers. That's a much less demanding task - most cards don't even use those rails, and if they do, they use a lot less power, as you can see if you look at the INTERFACER card and compare the enormous heatsinks on the (ganged!) 7805s versus the diminutive ones on the 7812/7912.

Indeed, the combined rating on both rails, systemwide, is 6A, which is less than 25A to be sure, but you still can't regulate it with a single 78xx - and again, since S-100 is so flexible, you don't even know if a user will have any cards that need it. So it makes sense to just provide the raw voltage, and if someone wants, they can regulate it themselves.

So, these figures make sense, and also fit with the capacitor banks: the 28VDC ones are small because they handle the 16V and -16V (one cap per rail!) while the 10VDC ones are placed in parallel to handle the far chunkier 8V rail. Likewise, the way they're fed is straightforward: The transformer has multiple secondary windings, one producing 10VAC, which goes through a bridge rectifier, losing a volt and change in the process to become ripply 8VDC. The big capacitors smooth that out. Meanwhile, the second winding produces a center-tapped 36VDC which goes through another bridge rectifier to become a pair of ripply +/- 17VDCs (when referenced to the center-tap as ground,) and the small caps smooth those out.

All of that is extremely normal. What is weird is the second primary winding on the transformer.

The top left winding represents the primary that the wall current enters, but the one below that steps up the voltage to 600VAC and sends it into the "motor starting cap" we noticed earlier. Why? I have no idea; my best guess is that it's some kind of feedback winding to help with ripple, or - as another patron just suggested - a power factor correction mechanism, but honestly these are guesses, I'm stumped. I've never seen this before. Help?

So in conclusion, it's a very big, dumb and heavy power supply system, but I suspect the only option available at the time. Big question: Can it be replaced when it blows up? I think so. I don't know how easy it is to get nominal 8/16/-16 supplies at these current ratings (quick googling suggests: no) but the 8V rail can tolerate 12V, and you can definitely get enormous 12V meanwells for cheap. The other rails are harder; I don't know if anyone makes readily available +/-16 supplies, but I know 14.8VDC supplies are available in enormous sizes for amateur radio among other things, and that's well above the dropout of the regs, so that should work. I'm curious what solutions other people have come to however, having not looked into this yet.

Conclusion

This is a really cool machine, and again, I am very grateful to have it, but I'm not exactly sure what it's future looks like, because S-100 appears to be a timesink. It looks like it's extremely difficult to avoid knowing a lot about the innards of the machine, understanding the memory map, compiling your own BIOS, typing in chunks of assembler and doing lengthy, arcane diagnostics, and this will eat up a lot of my time which is already divided up among a million things, unless I just get lucky and it all just works immediately, which might happen. Also, before I can do anything I have to fabricate or obtain a Gotek adapter, and before I can even turn it on I have to do substantial rework and testing.

This machine is in ridiculously good condition and these are not the easiest to get a hold of, so for once I should be properly responsible - bring the transformer alone up on a variac, test the ESR on the caps, bring those up slowly and see if they need reconditioning, and then try introducing the boards, and then only after replacing the tantalums. I almost missed these, because I forgot that tantalum caps are sometimes blue; there are just a few of them on these boards, and even if they're fine now, I don't want to take any risks, so I'm probably gonna replace those out of sheer paranoia. And only then can I start figuring out how the thing is actually used, but with any luck it'll all work out. Will there be a video from this? I have no idea, I never do, but I hope you enjoyed this peek behind the curtain.

Here's a visitor I met while taking the case off the thing for the first time in the back of my van:

Comments

I would love to see a video about this forgotten architecture! Also, the "SIXTN" pin reminds me of the "A20 gate" from the IBM AT, though it's not quite the same thing; and also it wasn't associated with the keyboard controller, or used to reboot the machine. Do the same peripherals from 8080/Z80 S-100 bus machines still work? Or is the 8088/86 too different to permit that?

Neil Moore

Don't forget that Adrian's Digital Basement is right down here in Portland if things get too spicy for you.

Mat Fordon


More Creators