[Coco] CoCo 3 display offset question.

jdaggett at gate.net jdaggett at gate.net
Fri Sep 15 08:20:56 EDT 2006


On 14 Sep 2006 at 21:14, William Astle wrote:

> jdaggett at gate.net wrote:
> > The registers (Vertical offset) at $FF9D and $FF9E are affected by the COCO bit. 
> > Bits#7,6, and 5 of $FF9D should be set to "one" when the Coco bit is set. There is 
> > the no hard requirements that they need to be. Not doing so is the at progammers 
> > own risk. The rest of the bits in the register at $FF0D and the upper two bits of 
> > $FF9E are mapped to $FFC6 to $FFD3. Setting the lower 6 bits of $FF9E other 
> > than "zero" is at the programmer's risk. 
> > 
> > 
> > Yes if you take the 19 bit address and divide by 8 you get a 16 bit or two byte 
> > code that is programmed into the registers at $FF9D and $FF9E. Division by 8 is 
> > simply a shift right three times and ignore any carry. Register $FF9C is the 
> > vertical scroll register.  
> 
> I would think the "risk" to the programmer is confusion more than 
> anything since it would make sense that the GIME actually uses the same 
> circuitry to identify the starting address of the screen regardless of 
> the COCO bit. After all, it would hardly be "COCO Compatible" if the 
> screen didn't map into the CPU's 64K memory map as expected or if it 
> were offset by some number of bytes. So it would seem to me that if the 
> programmer were doing so intentionally and understood the expected 
> result, there would be no problem with doing so. (Of course, it would be 
> fundamentally incompatible with the BASIC ROM then.)
> 
> Quite frankly, though, I don't see the need to do that. After all, if 
> you're futzing at that level, you might as well drop the COCO bit and 
> use the GIME fully. About the only thing where I could see this being 
> vaguely useful is if one were trying to run multiple versions of a COCO2 
> style BASIC ROM, each having it's memory in a 64K "segment". Then 
> adjusting the high order bits of the vertical offset register might make 
> sense. But, really, why would we need to do that? :)
> 
***********************
William 

By "risk" I mean that while a function on teh GIME chip may work, it may  not be supported 
by the chip maker officially. Kind of like a feature that was not intended but due to the way 
the chip was designed it does work. 


james






More information about the Coco mailing list