[Coco] Arduino as a Mouse/Keyboard interface?
6809er at srbsoftware.com
Tue Jul 3 09:21:43 EDT 2012
After looking over the timing docs, it on the rise of the Q clock and
earlier in the timing. What makes it worst, it is read on the second to
the last cycle and before the data is stored on the PIA.
So, the idea of using the Halt will not work.
I've been also think of a way of using a single port ram as dual port.
Keep the address control connected to the CoCo's PIA and only switch the
control over to the microcontroller when it need to update the data.
This would be a problem if there was an update hitting the RAM at the
same time as the PIA needed the ram for the Keyboard data. A flag could
tell the microcontroller the update was unsuccessful because the Ram was
in use. Then it would be up to the microcontroller to take care of this
timing problem by writing the data again.
I found a RAM chip with two port control (not a true dual port) that
would make the logic easy. The CY7C130 would take the control and data
lines from the CoCo's PIA to control one "port" and the microcontroller
on the other. The chip create a "busy" flag when both sides are
accessing the same RAM location as the same time. (This is your
unsuccessful write flag.)
On 7/2/2012 7:29 PM, Darren A wrote:
> On Mon, Jul 2, 2012 at 6:35 PM, Steve Bjork wrote:
>> Another way is to halt the 6809 when the column output lines changes. Just
>> use compare logic to halt the 6809 and tell the microcontroler to update the
>> data on the 8 bits of the row lines feeding into the other PIA.
> That would likely create problems when executing an instruction
> sequence such as:
> STB PIA_COL
> LDA PIA_ROW
> The HALT signal would not be asserted until after E goes high in the
> last cycle of the STB instruction. I'm pretty sure that means the CPU
> would not actually halt until after execution of the LDA instruction
> (doesn't meet the required setup time).
> Coco mailing list
> Coco at maltedmedia.com
More information about the Coco