[Coco] MPI writing to $c000

Robert Gault robert.gault at att.net
Sun Jan 24 09:44:50 EST 2016


RETRO Innovations wrote:
> I am stuck on a project writing to RAM at $c000 on the expansion port and need
> help.  I think it's my lack of understanding of the 6809 and the Coco bus that's
> holding me up.
>
> I have some RAM at $c000 on the expansion port:
>
> RAM_OE = CTS
> RAM_WE = !(Q & !R_W & A15 & A14 & !A13)  ; go low if Q is high and write is low
> and A15 is high and A14 is high and A13 is low
>
> If I install the cart in the expansion port, all works fine.  I can write to RAM
> correctly (I can flip between the internal and external with $ffde,0 and such to
> verify)
>
> But, if I put it in an MPI, it does not work.
>
> I have redefined RAM_WE the following ways:
>
> RAM_WE = !(!Q & !R_W & A15 & A14 & !A13)  ; go low if Q is low and write is low
> and A15 is high and A14 is high and A13 is low
> RAM_WE = !(E & !R_W & A15 & A14 & !A13)  ; go low if E is high and write is low
> and A15 is high and A14 is high and A13 is low
> RAM_WE = !(!E & !R_W & A15 & A14 & !A13)  ; go low if E is low and write is low
> and A15 is high and A14 is high and A13 is low
> RAM_WE = !(Q & E & !R_W & A15 & A14 & !A13)  ; go low if Q is high and E is high
> and write is low and A15 is high and A14 is high and A13 is low
> RAM_WE = !(Q & !E & !R_W & A15 & A14 & !A13)  ; go low if Q is high and E is low
> and  write is low and A15 is high and A14 is high and A13 is low
> RAM_WE = !(!Q & E & !R_W & A15 & A14 & !A13)  ; go low if Q is low and E is high
> and write is low and A15 is high and A14 is high and A13 is low
> RAM_WE = !(!Q & !E & !R_W & A15 & A14 & !A13)  ; go low if Q is low and E is low
> and write is low and A15 is high and A14 is high and A13 is low
>
> None of them work.  What am I missing?  I know the rest of the circuit works
> because the unit works fine when the MPI is not in the equation.
>
> Jim
>

I doubt I can help with your PAK but the obvious issue that comes to mind is 
whether you have set the MPI data at $FF7F correctly so that your external 
ROM/RAM has access. After all, your device works when directly connected to a 
Coco. :)

The high nibble at $FF7F selects the MPI slot for RAM/ROM. The low nibble 
selects the slot I/O at $FF40-$FF5F.

Perhaps you meant that even with the MPI set to the correct slot for your cart 
the RAM is not working. If that is the case, are you having failures with any 
other cart that contains a ROM when plugged into the MPI?
If your device is unique in having MPI problems, then look for wiring issues 
using a Coco schematic showing the expansion connections.

Robert



More information about the Coco mailing list