[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