[Coco] GIME Scrolling Questions

Chris Spry bugster at cedarcomm.com
Tue Jan 27 21:24:59 EST 2004


Thanks for the suggestions and extra pointers on these registers.  The
documentation I have found on them is very brief which made me really have
to figure out really how they worked for myself, and with the help of others
on here.  I must give FF9C a try. I thought it was just limited to the
hi-res text modes, but if it also involves the graphic modes then I'll play
with it and combine it with the other registers to see what kind of results
I get.

Thanks,
Chris.

----- Original Message ----- 
From: "Robert Gault" <robert.gault at worldnet.att.net>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Tuesday, January 27, 2004 6:25 AM
Subject: Re: [Coco] GIME Scrolling Questions


> Chris Spry wrote:
> > Nevermind I think. Something hit me in the afternoon to give a try with
the
> > two GIME registers, so I reprogrammed my test program and low and behold
the
> > idea worked.  Now I got scrolling.  Now I just need to figure out a way
to
> > program it from shifting up a line with the scroll (the 2 registers do
reset
> > after a full screen has scrolled by, but at the reset the screen goes
back
> > to the normal area and then jumps up a line again....maybe if I start
the
> > FF9D really high and lower it along with FF9E bit by bit when needed
it'll
> > adjust and won't happen.....something to try).  I would love to get less
> > than 4 pixels per scroll movement if possible, but this does work for
now
> > and if I can't it won't kill me. :)
> >
> > -Chris
>  ><snip>
>
> Chris,
>
> You are starting with a wrong premise and that is going to prevent you
> from reaching the desired conclusion.
>
> 1) The "registers" from $FF9C-$FF9F are, in my opinion, mislabeled in
> the Tandy service manual.
> 2) $FF9D & $FF9E are a 16-bit register which should not be thought of as
> a vertical offset but rather as a pointer to the start of the high
> resolution screens. The value stored in this byte pair is the screen
> start divided by 8. Standard Coco3 high res graphics at $60000 is set
> with $60000/8=$C000.
>
> Conversely the high res screen, text or graphics, starts at 8 times the
> register value. Store $3000 and the screen starts at $3000*8=$18000.
>
> 3) $FF9C is labeled a vertical scroll register but it really extends the
> $FF9D-$FF9E pair to a 20-bit register. The maximum value for this byte
> is 8 which is the missing resolution of the $FF9D-$FF9E pair.
>
> When you combine these three bytes in the order $FF9D, $FF9E, $FF9C you
> can point the high res screen to any byte in memory.
>
> 4) Now we come to $FF9F. Since we have byte resolution in 3) what more
> can $FF9F do. Unfortunately it is not a pixel offset but is a different
> type of byte offset. Increase $FF9F and the high res screen start
increases.
>
> Set the highest bit and the video screen is fixed in text mode to a
> multiple of 64 characters or 128 bytes. You get 64 characters at WIDTH40
> and 128 characters at WIDTH80. Remember that high res text takes two
> bytes per character.
>
> In HSCREEN graphics mode high byte set, the screen width is 256 bytes
> with the number of pixels set by the graphics mode. The offset is by
> byte pairs as for the text screen and this may be a bug in the GIME.
> The minimum pixel offset will be in 16 color mode and at 2 pixels per
> byte, a two byte offset will be 4 pixels.
>
> If the highest byte of $FF9F is not set, the screen width is derived
> from HSCREEN or WIDTH but the screen will offset as above.
>
>
> -- 
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco




More information about the Coco mailing list