[Coco] How does the cartridge port work, anyway?

Harry Hurst hhos at st-tel.net
Sat Feb 16 10:31:03 EST 2013


> Allen,
>     I'm surprised at you. It is really simple. The Cart connector has a
> pin that
> is connected to the NMI (Non Maskable Interrupt) of the 6809 CPU. This
> interrupt
> is tripped by the Cart's when the COCO is powered up. The software routine
> associated withe the NMI then calls Address C0000 and executes the
> instructions
> starting at that address. Thus the Cart program then runs.
>
> John Donaldson
>
It's not so surprising that Allen doesn't know when you consider the fact
that this explanation is not necessarily correct, and according to the
Color Computer Technical Reference Manual it is wrong. :) Phil
Harvey-Smith is much closer with:

> The FIRQ line, is shorted to one of the clock signals, which causes an
interrupt, once it's enabled.

Inside the cartridge the CART* is shorted to the Q clock. The CART* is
connected to pin 18 of the PIA at address $FF20-3, which is the CB1 input.
This gives us two ways to mask this interrupt. One is inside the CPU,
which would be kind of restrictive, since it would disallow a FIRQ from
other sources. The other is in the $FF20 PIA's control register for the B
channel($FF23).

> The Disk ROM detection is done by the extended basic ROM during its
> initialization just before it transfers control to the basic main loop.
> There is no interrupt involved in this detection at all. This is the DK
> detection business.

Lost, there must be something wrong with this. If this is correct then the
trick with the tape on the CART* (or Q clock) contact, for capturing the
ROM image, would not work. I think I did this successfully back in the
early 80s on a CoCo1, so I believe it does work. Does the initialization
routine check bit 7 of $FF23 before making a decision between BASIC or
cartridge?

HH






More information about the Coco mailing list