POC Computer Version One Revisited
Posted: Mon Apr 06, 2020 9:45 am
Well, this project got stalled a bit, thanks to a defective part.
Also, I've been under the gun to convert a lawyer client's Linux server to support the Samba 4-series, since he is converting all his Windows 7 workstations to Windows 10 to support new practice management software (poor guy—he'll soon find out why a lot of businesses have resisted "upgrading" to Windows 10). As this conversion means moving him onto the Linux 4 kernel, it can't be done live. So I've got my "mule" server set up to do the work in my shop, after which I can swap out his root disk with the new one. It's keeping me up at nights because of some significant changes (stupid ones, I think) in how a Linux system comes up following initial boot. Whomever thought systemd was a good idea needs a lecture about creeping featurism, followed by a swift kick to the rectal region.
Anyhow, back to the defective part...
After getting POC V1.2 up and running, I decided it was time to explore wait-stating. We've had discussion elsewhere about the problems associated with use of the 65C816's RDY input for wait-stating, which I won't recapitulate here. Suffice to say, using RDY can be a challenge and is something I concluded was best avoided in an '816 machine.
Instead of RDY, V1.2 will wait-state by stretching Ø2 when a slow access is needed. With WDC MPUs, Ø2 can be stopped in either phase without causing trouble. In this particular case, Ø2 will be halted in the high phase for one or two clock cycles when a wait-state is required. Doing so is not difficult to implement and in fact requires only one active part—a 74AC163 synchronous counter, which replaces the 74AC74 Ø2 flip-flop that is already in the circuit. As a bonus, this trickery will work with any CMOS 6502, since any of them may be stopped in the same fashion without issue.
My clock-stretching circuit is a close adaptation of the one that Jeff (Dr. Jeffyl) presented here. To implement it, a module has been built that will plug into the Ø2 flop's socket. Unfortunately, the module is presently non-functional because the 'AC163 I got from the distributor turned out to be defective and in fact, created a strange fault in the system that took a bit of troubleshooting to identify. This is the first time in decades that I've gotten a defective, new chip, all the more surprising given that it was a TI part.
Fortunately, V1.2 survived the fault.
So I'm waiting for a replacement 'AC163 to arrive and once in hand, I'll be ready to test. I will publish the details, including illustrations of the unit's logic states when a wait-state occurs, as soon as testing is done and she goes or blows. If this circuit works as expected, it can become a reference design others can use in their systems to accommodate slow hardware.
Anyhow, back to the defective part...
After getting POC V1.2 up and running, I decided it was time to explore wait-stating. We've had discussion elsewhere about the problems associated with use of the 65C816's RDY input for wait-stating, which I won't recapitulate here. Suffice to say, using RDY can be a challenge and is something I concluded was best avoided in an '816 machine.
Instead of RDY, V1.2 will wait-state by stretching Ø2 when a slow access is needed. With WDC MPUs, Ø2 can be stopped in either phase without causing trouble. In this particular case, Ø2 will be halted in the high phase for one or two clock cycles when a wait-state is required. Doing so is not difficult to implement and in fact requires only one active part—a 74AC163 synchronous counter, which replaces the 74AC74 Ø2 flip-flop that is already in the circuit. As a bonus, this trickery will work with any CMOS 6502, since any of them may be stopped in the same fashion without issue.
My clock-stretching circuit is a close adaptation of the one that Jeff (Dr. Jeffyl) presented here. To implement it, a module has been built that will plug into the Ø2 flop's socket. Unfortunately, the module is presently non-functional because the 'AC163 I got from the distributor turned out to be defective and in fact, created a strange fault in the system that took a bit of troubleshooting to identify. This is the first time in decades that I've gotten a defective, new chip, all the more surprising given that it was a TI part.
Fortunately, V1.2 survived the fault.