[Coco] How SLENB works ?

Matthew Stock stock at bexkat.com
Sun Jul 20 10:25:53 EDT 2014

A couple of thoughts.  If you want to build a simple peripheral on the bus
(and not try to access the onboard devices from the outside), I'd advise
leaving the address lines as inputs for the arduino, and think about how
you want to handle the bidirectional data bus.  There's little risk of the
arduino trying to pull low and the Coco trying to pull high as long as you
use the DATAEN line appropriately (my board or any other tristate).  If you
are not using an external tristate buffer, you'll need to ensure that the
only time your data lines are in output mode is when the Coco is reading
and you know there is nothing else on the bus that will respond.  You can't
just use r/w for that - you also need to address decode.

That said, I think the non-ARM Arduinos are too slow to emulate raw
memory.  What I mean by this is that there are tight timing requirements
between when the Coco pulls a chip select line down (CTS, SCS), and when it
expects to be able to read the result from the bus.

If you want to research this yourself, you can get the bus timing info from
the 6809 datasheet, and the AVR datasheet will tell you how many cycles it
will take to get into your interrupt handler, how fast the I/O lines can
change, and memory fetch will take, etc.  Lots of cycle counting.  The
Arduino clock is only 16MHz, so you only get about 17 AVR clock ticks to
work with in each clock cycle.  Just entering the interrupt handler eats
8-10 of those.

On Sun, Jul 20, 2014 at 8:56 AM, Retro Canada <retrocanada76 at gmail.com>

> as i see the design i believe the r/w line should be as well conected to
> an arduino's interrupt to change the address pins from input/output and
> vice versa in order to prevent an over voltage like arduino setting it as
> output 5v and the coco trying to write 5v again. but will it be fast
> enough? or should i keep separate lines and multplex them?

More information about the Coco mailing list