[Coco] CoCo 3 display offset question.
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? :)
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