[Coco] 256K SuperROMPak (32 Banks)

Tormod Volden lists.tormod at gmail.com
Wed Feb 11 18:04:48 EST 2015


On Wed, Feb 11, 2015 at 11:39 PM, RETRO Innovations wrote:
> On 2/11/2015 2:58 AM, Tormod Volden wrote:
>>
>> On Wed, Feb 11, 2015 at 6:50 AM, RETRO Innovations wrote:
>>>
>>> So, what are the options to map RAM into the address space from the cart
>>> port?  That is the key, right?
>>>
>>> I admit my signal understanding is weak, but I would assume SLENB would
>>> do
>>> it, so you could do:
>>>
>>> map a latch into IO space on the cart.
>>> Have one of the bits of the latch drag SLENB active (via some logic that
>>> only makes SLENB go active on writes on some address range (0000-7fff?)
>>> Then, any writes to some address range would trigger SLENB, which would
>>> map
>>> the FLASH into the address space.  Hitting the latch again would move the
>>> FLASH out of the write space.
>>>
>>> Someone is going to shoot me design down, but surely something like that
>>> would work.
>>
>> I assume you are talking about the need to write to special EEPROM
>> addresses for programming ($5555 etc).
>>
>> (On the other hand, for writing to the cartridge address space, the
>> only issue is that CTS is not asserted on writes, so you have to do
>> your own address decoding in the cartridge instead.)
>
> True, I was thinking that as well.
>
>
>>
>> The only catch here is that SLENB does not deactivate writes to
>> internal RAM. The SAM (talking CoCo1/2/Dragon here) always latches the
>> data bus into the internal RAM according to its memory map. SLENB only
>> deactivates the ROMs ands PIAs. This might not be a blocker though
>> because only a few addresses are needed for programming the EEPROM so
>> you can live with the shadow RAM writes by taking a few software
>> precautions.
>
> Yeah, I was thinking that you'd have the FLASH at c000->feff, like a cart
> Add a bank register for which 16kB spot you want.

OK, adding a bank register makes for another game.

> trigger SLENB (this would remap cart FLASH into c000->feff, but also allow
> bank reg to stay mapped into map at $ffxx
> Use bank reg and address to send commands to FLASH
> write data to c000-feff
> rinse lather repeat.
> turn off SLENB
>
> Yes, ram at c000-feff internal would be hosed, but plan on that by ensuring
> that main code is not in that space.

If you are only going to access the FLASH at c000-feff, which is
reserved for the cartridge anyway, I don't see why you would need
SLENB. Only if you would map your FLASH on top of internal ROM at
8000-bfff. I am talking SAM map type 0 here, I don't see any reason to
use map type 1 for this.

Also, you'd need to fill in the "holes" at ff00-ffff. Maybe instead
access the FLASH per 8KB, c000-dfff (or again, at 8000-bfff per 16KB).

Tormod


More information about the Coco mailing list