Tube Time Profile picture
Jul 21, 2021 45 tweets 9 min read Read on X
poking around inside an IBM PS/2 Model 80 from 1987, i noticed something odd going on with the expansion card connector. there are 8 extra pins in this connector, but why? the reason is really strange, and totally nuts!🧵 Image
but first--this bus connector is NOT a PCI connector, it is Micro Channel! in the picture, PCI is on the top and Micro Channel is on the bottom. Image
coming off of the success of the ISA bus used in the IBM PC, XT, and AT, engineers at IBM decided to "do it right" this time around.
the ISA bus, at first, ran at the CPU clock: 4.77MHz, and later 6MHz, 8MHz, 8.33MHz (the maximum!) and just about everything in between.
in addition, it had very poor signal integrity and the electrical design of ISA couldn't handle anything faster. (technical reasons? only 4 ground pins, no impedance control, and slow bus buffers)
so the IBM engineers went with a fancy connector (half the pin pitch!) and used 27 (!) ground pins, ground planes, better buffers, and so forth. signal integrity on Micro Channel (aka MCA) is pretty good.
confident in the new electrical design, the engineers set the clock speed of the bus at Ten Megahertz™. this was the official clock speed and it Could Not Be Changed.
the design was used in systems like the 10Mhz 286-based PS/2 model 50, in which the CPU matched the bus speed perfectly.
slow peripheral? no problem, there was a way to add wait states (extra clock cycles inserted in the bus cycle to slow it down temporarily while accessing that peripheral) Image
everything was really cool so far, but then Intel threw a wrench into the works. maybe you notice the issue already from just looking at this picture of a 386 chip. Image
the problem? the clock speed was...most decidedly inconvenient!
see, the basic bus cycle needed 200ns. that was the lower limit--set in stone--impossible to change. and you can't get 200ns with a clock of 16MHz! Image
IBM engineers faced an ugly choice:
1⃣ slow the fancy new 16MHz CPU down to 15MHz
2⃣ slow the bus down to a 250ns cycle
1⃣ was not going to work. the industry would *laugh* at IBM trying to sell a 15MHz 386 computer. sure, it's about 6% slower which isn't too bad, but it just looks stupid!
2⃣ was not going to work either. the PS/2 model 50Z had zero-wait state memory at a 200ns cycle, and it was just a 286! a 250ns cycle meant that RAM accesses would be 20% slower. and that was just embarrassing.
but what if the bus cycle was set so that it was 3 CPU cycles, or 187.5ns? it's only 6.6% faster; why not just use it?
hear that? that's the sound of desperate engineers smacking into the inviolable brick wall called Ten Megahertz™: The Official Clock Speed That Shalt Not Be Changed.
i can imagine some poor IBM engineer stuck in a dingy conference room with a dozen colleagues, sweating through his white dress shirt and tugging nervously at his tie-constricted collar.
"guys, i have an idea, but you're not gonna like it"
what he proposed (and he was almost certainly male--this was IBM back in the 80s, after all) was a Really Ugly Hack
and it was such a Really Ugly Hack that everyone frowned in disgust, but realized that he was right, and that they had no other choice but to implement it.
here's the Really Ugly Hack. they added 8 pins to the back of the bus connector, containing 2 ground pins (because why not) and three new signals implementing something called the Matched Memory Extension. Image
since the Ten Megahertz™ limit applied only to the existing bus control line CMD, they...
made...
a duplicate bus control line.

a duplicate that could run 6.6% faster. Image
the other two lines were handshaking lines: the CPU controller asserted MMC to say "hey folks, i support matched memory cycles!" and a peripheral, like a RAM card, if it supported The Really Ugly Hack, would assert MMCR in response: "yes! i support it!"
then the CPU controller would start using MMC_CMD instead of regular CMD, and would run it *slightly faster* which beat the only alternative which was to run it *lots slower*
peripherals that didn't support MMC could just ignore the whole set of transfers because they only keyed off the CMD control line.
OK, the Really Ugly Hack is awful, but i haven't gotten to the worst part yet.
the PS/2 Model 80, which came out with the 16MHz 386, had two other variations: one at 20MHz and one at 25MHz. both those frequencies work perfectly with MCA. Image
and so these newer versions of the Model 80 had no need for the Really Ugly Hack. and with a slightly less ugly hack: the planar (IBM-speak for *motherboard*) asserts MMC during memory cycles, ignores MMCR, and drives the MMC_CMD line identically to the CMD line.
basically, it doesn't do anything.
oh yeah, let me tell you about the worst part!
the worst part is that the matched memory cycle, aka the Really Ugly Hack, was only ever implemented on the Type 1, 16Mhz planar of the PS/2 model 80.

and every MCA-based machine they built afterward had those connector pins.
now for the behind-the-scenes part! 😁
to get the logic analyzer plots, i used an old prototype Snark Barker MCA board. since i have connectors on it for logic analyzer probes, it made it really simple and easy! Image
the Snark Barker MCA doesn't need or use the matched memory extension, so i had to solder some wires (very carefully!) onto the memory card. Image
and then very carefully stuff it all back into the computer. Image
that reminds me. there's a funny thing i noticed as i was messing around with this project just now.
despite being a Type 1 planar/motherboard with a CPU clock of 16MHz, the CPU and math coprocessor are rated to...yeah. 20MHz. 🤦‍♂️ Image
"sir, we ran out of 16MHz Intel CPUs, but we still have this huge pile of 16MHz motherboards! what do we do?"

"ship it with 20MHz CPUs! we got plenty of those!"
oh yeah, and regular peripherals plugged into a 16MHz Model 80 met with this uber-slow 250ns bus cycle. that same peripheral, plugged into the 10MHz 286 Model 50 would run 25% faster 😂 Image
oh yeah i need some credits. the first photo stars my Plaid Bib MCA-compatible Ad Lib card, with capacitors Snap and Crackle making a guest appearance.

(those familiar with the failure modes of tantalum capacitors AND 1980s breakfast cereal commercials will get the joke) Image
the Plaid Bib MCA is open source, full design files available here: github.com/schlae/plaid-b…
i've also got an MCA version of my Snark Barker sound card clone. actually it's a bit unfair to call the MCA version a clone--i had to design the bus interface from scratch.
github.com/schlae/snark-b… Image
the nice timing diagram is from my Micro Channel bus tutorial, github.com/schlae/mca-tut…. it's for the discerning reader who wants to learn more about this fascinating bus before wondering why their head hurts, closes the browser tab, and exclaims, "it feels so good when i stop!"
and the diagrams themselves were created using the fabulous wavedrom.com

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Tube Time

Tube Time Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @TubeTimeUS

Jun 13, 2023
here's a weird object! it's some kind of foot pedal with an IBM logo. is it for a sewing machine? electronic synthesizer? what do you think? 🧵 Image
it's got a cursed connector! what IS that? Image
amazingly enough, I found something with the mating connector on it! but what is it? Image
Read 24 tweets
Jan 11, 2023
hey so remember the world's cutest oscilloscope i picked up last year? i think it's time to fix the probe socket issue.
i printed a new panel insert that has two BNC sockets on it (the original probes would have had captive cables)
the tricky part is that this oscilloscope has a 333K ohm input impedance instead of 1M like umm every other scope on the planet. fortunately someone designed a little conversion circuit...
Read 11 tweets
Jan 5, 2023
in honor of Sim Wong Hoo, here's a quick historical review of the Sound Blaster! 🧵
but first we have to go back to their first sound card, the Creative Music System from 1987. (image credit: Bratgoul on Wikipedia)
this card has some special "CMS-301" chips. if you peel back the sticker, they have had their top marks removed. they're actually SAA1099 synthesizer chips made by Philips. Creative wrote music composition software for musicians on the PC.
Read 23 tweets
Dec 31, 2022
Tube Time: a 2022 retrospective 🧵
(and stuff you might have missed!) Image
starting things off in january, i found a tube of super old 555 timer chips! i also decapped one of them.
i also started fixing up an old HP 150 computer. it's not PC compatible but it runs MS-DOS--how odd!
Read 65 tweets
Dec 29, 2022
today's mini project: fixing this Radius Thunder IV GX daughtercard. it looks fine, but... 🧵 Image
one of the chips has some broken pins! Image
looks like two of the pins got mashed and broke right at the plastic package. Image
Read 11 tweets
Dec 8, 2022
on the bench of healing tonight: my coffee grinder which decided to bite the dust. Image
symptoms: i push the start button and the motor just bumps a little bit and stops.
how to take it apart? hmm, i bet there are screws under the rubber feet. Image
Read 23 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(