[Coco] GIME DRAM address mappings
Dave Philipsen
dave at davebiz.com
Fri Sep 29 00:19:54 EDT 2017
Ok, so now I think I understand why you are concerned about how the GIME
accesses the SRAM. I guess the fact that the GIME is specifically made
for DRAM and not SRAM kind of muddies things up for you...
Dave
On 9/28/2017 10:10 PM, RETRO Innovations wrote:
> On 9/28/2017 10:29 AM, Dave Philipsen wrote:
>> So, Jim, if I understand correctly you are creating a 2MB memory
>> expansion that will use the upper 2 unused bits in the MMU registers
>> to access the entire 2MB, right? Will your board use SRAM or DRAM?
> Right now, the board has 4 MB, mainly so I can work on how to add more
> than 2MB support. 2MB uses all 8 bits of the task registers, ala Disto
> and others, but adding more than 2MB requires a new strategy, which I
> planned to use the board to design (I have ideas on how to do this).
> If I am successful (which is a big IF, since I have but an entry level
> understanding of GIME memory accesses and, as such, have this memory
> issue I am debugging), the idea I am considering would allow 16 bits
> for the task register, support an optional, more granular banking
> scheme (4kB pages), support a "Read Only" bit to force an IRQ if a
> page is marked as such and a write is attempted, and allow at least
> 16MB of 4kB paged RAM with write protection.
>
> The board currently uses SRAM, to avoid having to deal with refresh
> cycles and such, but DRAM is not ruled out (fast paged DRAM or DDR
> type DRAM could be used, and would also be power use friendly).
>
> I promise to bring the board to Tandy Assembly, but I can't guarantee
> it will be completely working (even as a rudimentary 512kB
> expansion). Right now, the main goal is to better understand GIME
> memory accesses. I might have to backtrack and build a triad-like
> board to figure out DRAM-to-SRAM conversion, and then go back to this
> board.
>
> But, on the plus side, I have another project I will bring that is
> working (at least it passes all the tests I threw at it) dealing with
> memory and the Coco.
>
> I shuold just give up on this design for TA, and focus on getting
> other stuff ready, but I can't seem to focus on other things until I
> can at least figure out where I am going wrong on this design. I have
> replicated the entire 16-to-8 multiplexing scheme that's on the Coco3
> memory bus on my PCB, but somehow, any write to memory is showing up
> as a write to a suitable spot on the screen. For example, if you poke
> a value to location 512, it will show up at 1024 (first spot on
> screen) as well. Poking a value to 2048 will also darken that spot on
> the screen. I have been poring over logic analyzer trace output for
> the past few night, learning so much about the GIME memory cycles, but
> not making much progress towards finding my issue.
>
> In the pic on Facebook, for example, DECB writing to location 148
> translates to a $70094, which looks like this on the wires:
>
> CAS RAS
> B5 B3 B2 B1 B0 12 11 10 9 B4 8
> 7 6 5 4 3 2 1 0
> 8 7 6 5 4 3 2 1 0 8 7 6
> 5 4 3 2 1 0 W
> 1 1 0 0 0 0 0 0 0 1 0 1
> 0 0 1 0 1 0 0
>
>
> To put in a more human-friendly order:
>
> B5 B4 B3 B2 B1 B0 12 11 10 9 8
> 7 6 5 4 3 2 1 0
>
>
>
>
>
>
>
>
>
>
>
> 1 1 1 0 0 0 0 0 0 0 0 1
> 0 0 1 0 1 0 0
> 7 0 0 9 4
>
>
> But, the screen also sees the write at $70494:
>
> CAS RAS
> B5 B3 B2 B1 B0 12 11 10 9 B4 8
> 7 6 5 4 3 2 1 0
> 1 1 0 0 0 0 0 1 0 1 0 1
> 0 0 1 0 1 0 0
>
>
> Again, more human readable version:
>
>
>
>
>
>
>
> B5 B4 B3 B2 B1 B0 12 11 10 9 8
> 7 6 5 4 3 2 1 0
>
>
>
>
>
> 1 1 1 0 0 0 0 0 1 0 0 1
> 0 0 1 0 1 0 0
> 7 0 4 9 4
>
>
> The quick answer is that bit 10 is stuck high or something, but I
> don't see that on the logic analyzer. And, no matter what multiple of
> 512 I write to, the screen gets a copy within the 512 byte range of
> the screen. So, for example, if I wrote to 2048+148, a phantom write
> goes to $494 (1024+148) I have verified that if I write a 99 to
> location 1504+512, I see the same 99 at location 1504 (low left of
> screen memory)
>
> At first I thought the RAM was just limited to 512 bytes, but if I
> write 99 to 1504+1024, 1504 has 99, but 1504+512 does not.
>
> And so, I continue to debug... :-(
>
>
> Jim
>
>
>
More information about the Coco
mailing list