[Coco] A Technical Question

John Kent jekent at optusnet.com.au
Sat May 19 00:08:01 EDT 2012



On 19/05/2012 5:20 AM, jdaggett at gate.net wrote:
> On 18 May 2012 at 16:03, Mark McDougall wrote:
>
>> 2. HALT CPU access to video memory during active video. Obviously
>> detrimental to CPU performance.
> Definitely a poor way to go if you have constant and/or frequent IRQs. If the HALT period is
> long enough to overlap two or more IRQs then the first is latched and subsequent IRQs will
> more than likely be lost.
>
> HALT is a nice way for a peripheral processor to use the commonmemory for short burst say
> about 32 bytes or less. The 6809 version, not 6809E, with its internal DMA module only
> allows up to 32 cycles before another cpu cycle is ran. With two cycles per byte would mean
> 16 bytes per DMA cycle max.
>
>
> james

When the CoCo accesses RAM on alternative clock phases, you are 
effectively only using half the memory bandwidth. If you are using 640 x 
480 pixel VGA format with 8 bit color then you need a byte access you 
need a byte access every 40nsec. Since the CoCo doesn't support that 
sort of graphics resolution access to memory can be significantly 
reduced. If you are using 600nsec access memory multiplexed between the 
CPU & video and you are using 16KHz line scan rate  and 256 x 192 x 2 
colours then you probably are accessing memory at 1.2 usec / byte which 
is pretty much half the memory bandwidth. With an FPGA Coco though 
running VGA  clock rates (32KHz line rate) you have to access memory 
every 600nsec but with 40nsec memory you only need to access a byte 
every 15 or 16 CPU cycles, which is not a big overhead on the CPU 
inserting wait states. If the video does not require the full memory 
bandwidth then it probably is more efficient to steal cycles from the 
CPU assuming the CPU is taking advantage of the full memory bandwidth.

I was looking at the spec sheet for the 6844 DMA controller and that 
seemed to release the bus for 1 cycle in 14, if it has continuous bus 
access, hence preventing the CPU from being completely blocked during 
large DMA transfers. The registers in NMOS are dynamic, but I'm not sure 
if Halt necessarily prevents the dynamic registers from being refreshed. 
It might. I'm not sure.

John.

-- 
http://www.johnkent.com.au
http://members.optusnet.com.au/jekent




More information about the Coco mailing list