, 12 tweets, 2 min read
someone on the vintage computer forums asked about the ISA bus IO READY signal and why it is used on the Sound Blaster for the CMS/SAA1099 synth chips. it's kinda neat if you're into old computer buses (thread)
in the old days, IO chips were often quite slow and it took a long time to read or write data to them. the solution was to add "wait states" where the bus would basically idle for a few clock cycles until the IO device caught up.
this is what the IO READY signal does. you assert the pin and the ISA bus will not do anything else until you release the pin. any data that is present on the bus will remain there, giving your IO chip plenty of time to stare at it.
the Sound Blaster (and my Snark Barker clone) use the SAA1099 audio chip which can't directly drive IO READY. instead, it has a Motorola 68K-style signal called DTACK.
DTACK=Data Transfer ACKnowledge. the IO chip asserts it after it finishes every single transaction. you address the IO chip, it sends you DTACK when it is done. ping pong, ping pong.
the Sound Blaster uses a flip-flop (U20B) to convert the DTACK signal to IO READY. A pulse on the ISA WR# (write) signal turns on the flip-flop, holding IO READY. when DTACK pulses, it clears the flip-flop, releasing IO READY!
there's a disadvantage to adding wait states to ISA bus transactions--on older PCs, the ISA bus *IS* also the system bus, so when you assert IO READY, it freezes the whole system! the CPU can't touch main memory, and everything grinds to a halt (temporarily)
if you had a lot of devices that used wait states, then this periodic brain freeze really started to slow the system down. 🧠❄️
386DX and newer CPUs had a cache memory so you could continue executing instructions. unless of course you were waiting for something in main memory...
eventually the ISA bus got decoupled from the main memory bus which solved that problem. but other IO, like graphics and disk, would still suffer.
later on, the ISA bus was decoupled from everything, connected by a bridge chip, so ISA wait states didn't slow anything else down.
modern computers with PCIe slots aren't even really buses in the traditional sense because most of the signals aren't shared at all anymore. each slot gets its own dedicated set of bus wires.
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with 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!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


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

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

Become Premium

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

Donate via Paypal Become our Patreon

Thank you for your support!