[Coco] CoCo 3 display offset question.

jdaggett at gate.net jdaggett at gate.net
Thu Sep 14 21:15:06 EDT 2006


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

> jdaggett at gate.net wrote:
> > Phil the GIME chip sees the complete 512K memory map. In the Coco compatible mode, 
> > bit#7 of the INIT0 register($FF90) is set then the GIME chip will respond to data plugged 
> > into the registers at $FFC6 to $FFD3. Then the GIME chip will only see the upper 64K of the 
> > 512K memory map from what I understand. 
> 
> Not quite true. In "Coco compatible mode", the vertical offset registers
> are interpreted differently. The BASIC ROM sets them so that the "base
> offset" for the old SAM registers is the top 64K. However, with
> sufficient twiddling, you can still set the display on any 8 byte
> boundary. There's a formula for how it works in the "Super Extended
> Basic Unravelled" book.
> 
*****************

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.  

james





More information about the Coco mailing list