[Coco] Color Computer cart addresses / CoCo PSG

RETRO Innovations go4retro at go4retro.com
Fri Dec 23 01:19:40 EST 2016


On 12/22/2016 9:56 PM, S Klammer wrote:
> Would it be a thought to implement a sharing mechanism?
>
> A fixed set of bytes dedicated to new devices?  A byte or two to define the
> cart and another to trigger it to act upon the following bytes?
The mechanism I defined requires just 1 fixed byte, $ff80, and is 
write-only, so won't bother Coco3 units.
To set a config option, you write $55/$aa/<devid>/<cmd>/<data> to $ff80.

To set a base address, for example, on the CocoFLASH main registers, to 
$ff60:
$55
$aa
$21
$01 (set base address)
$60 ($ff60)

To set the base address, for example, on the CocoFLASH implementation of 
the ORCH90 to $ff70:
$55
$aa
$11 (1= TANDY, 1= ORCH90)
$01 (set base address)
$70 ($ff70)

You can define more than 1 command if desired, and the devid can be used 
to represent up to 255 different devices.  You an even handle more than 
1 of a unit in an MPI:

$55
$aa
<devid>
$01 (set base address)
$40 ($ff40, in SCS space, then you can individually reference up to 4 
units, all at the same address)

CocoNIC is devid $22, while the ROM in it follows the CocoFLASH layout 
and responds to devid=$21

It's a bit much for discrete logic, but just a few macrocells in a CPLD 
to implement (uses a state machine and a single register to hold the 
base address of the unit).  Confirmed working on an MPI, and seems 
pretty extensible.

Jim



More information about the Coco mailing list