Re: A89: LCD memory manipulation (in asm)


[Prev][Next][Index][Thread]

Re: A89: LCD memory manipulation (in asm)




I know I can quite easily test this, but since I am at school right now, all
I can do right now is ask.

----- Original Message -----
From: "Johan Eilert" <johei804@student.liu.se>
To: <assembly-89@lists.ticalc.org>
Sent: Tuesday, January 23, 2001 3:55 PM
Subject: Re: A89: LCD memory manipulation (in asm)

> On Tue, Jan 23, 2001, reukidodo wrote:
> >
> > Thank you for the information!  Was this in a documentation that I
missed
> > somewhere?
>
> You're welcome.  The information can be found in various hardware docs at
> http://alh.dhs.org/ti89/ .  I believe the documents (esp. mine) can be
quite
> hard to understand though.

I have been there, and have it bookmarked.  You are right when you say that
it is a bit hard to understand through the first few readings...  I'll go
back over it some more...  Again, thank you very much! =)

> > I had originally planned to use the extra memory around the visible LCD
as a
> > buffer, in order to make easy smooth scrolling, but now I can't figure
out
> > how to scroll left/right using lsl and lsr...  are there other commands
that
> > let the end bit be carried over into the next byte?
>
> Use the ROXL and ROXR instructions, they rotate through the X flag.
>
> Eg.: The following loop "scrolls" an arbitrary amount of data one pixel to
> the right.  The leftmost pixel is set to 0.
>
> move #0,ccr ; X=0

I'm not sure what ccr is... is it similar to SR = d7 in that ccr = aX?

> \loop
> roxr.w (a0)+ ; X -> (a0) -> new X
> dbra d0,\loop

Does roxr have a .l extension also? ie:
roxr.l (a0)+

I'm pretty sure that I'd have to put this in a loop within a loop to shift
the whole screen to the right by 16bits smoothly. ie:
move 15,d0 ;16bit to shift 15 down to 0
\outloop
 ;restore bg sprite (erase character so he doesn't scroll with the bg)
 lea LCD_MEM,a0
 move #1583,d1 ;(24words/line = 12longwords/line) * (100 + 2*16 lines) =
1584
 \inloop
  roxr.l (a0)+ ;shift screen by a bit
 dbra d1,\inloop
 ;store bg sprite, replace w/ character
dbra d0,\outloop

My question is, wouldn't this code make the character (who doesn't shift
with the screen) appear to blink while scrolling?

> --
> Johan Eilert

-Miles Raymond      EML: m_rayman@bigfoot.com
AIM: kilier2        ICQ: 13217756       IRC: Killer2
WWW: http://www.bigfoot.com/~m_rayman




References: