[Coco] CoCo 3 display offset question.

William Astle lost at l-w.ca
Thu Sep 14 23:14:35 EDT 2006


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 Astle
finger lost at l-w.ca for further information

Geek Code V3.12: GCS/M/S d- s+:+ !a C++ UL++++$ P++ L+++ !E W++ !N w---
!D !M PS PE V-- Y+ PGP t+@ 5++ X !R tv+@ b+++@ !DI D? G e++ h+ y?



More information about the Coco mailing list