Activate curmudgeon mode!
I feel I must correct this oft-repeated mistake:
BigDumbDinosaur wrote:
The procedure to get the 65C02 to relinquish control is to first assert RDY (low true) to halt further processing. When Ø2 goes high, the MPU will stop on the current instruction. At that time you would assert BE to "disconnect" the MPU from the buses. You would then enable the Arduino. After the Arduino has completed its work you would get it off the buses and then de-assert the MPU's BE input. Once BE has been deasserted you would de-assert RDY, causing the 65C02 to resume processing.
In fact no! RDY means READY and is usually high, which means it is asserted. To stop the CPU, you say that you are "not READY" which means you take the signal low, which means you have de-asserted it.
The problem here, for those who have a problem, is that we're used to active-low control signals, and we're used to taking them low to make them active, and so we're used to speaking of a low signal as an asserted signal. And that's all fine and correct for signals which are active low. It's all topsy-turvy for those rare signals are active high, such as RDY.
Edit: There's another thing about RDY: we tend to leave it high because we want the CPU to run free. So we tend to think of it as a control for stopping the CPU. If it were called notSTOP it would have the same electrical effect - pull it down to STOP the CPU - and we would then be right to use all the language appropriate for an active-low signal. But it isn't notSTOP, it's RDY. So it's active-high.
It's a mistake, and it's the opposite of precision and pedantry, to use the term 'asserted' to mean 'taken low' in all circumstances!
Admittedly we don't help ourselves by often missing out the indication that a signal is active low, whether we use \IRQ, nIRQ, IRQ*, IRQ-with-an-overbar, or whatever. I'm as guilty of this as anyone. By doing this we make it easy to miss that RDY has no such indicator.
Cheers
Ed