But ASIC is usually updating the "paper" area most of the time...
So I'd like to know how does it perform in "paper" area.

Also, I made the following change to my program: I removed the FRAME
interrupt handler and replaced it with LINE 191 interrupt handling. This way
I put the top and bottom border areas. I think it runs a bit faster, if I
put the LDI code at the start of the interrupt handler, because it runs in
the border area. :-)

A.


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Edwin Blink
Sent: Tuesday, February 01, 2005 1:48 PM
To: sam-users@nvg.ntnu.no
Subject: Re: Fastest memory transfer (on Sam)


>I already tried many LDI's and PUSH/POP system on my own, but 
>unfortunately the process of changing SP makes PUSH/POP slower than 
>sequence of LDI's.

The fastest scrollleft code I could think of is the folowing code snippet
which should be repeated 9*height times and It's best to write a routine to
generate it runtime and fill in the proper SP values.

;2 pixel scroll left code element 224Ts or 16T/byte

;AF' and index registers are note used as they slowdown the avarage speed.

 LD SP,&8001 ;12 HardCode address for each element
 POP AF    ;4
 POP BC
 POP DE
 POP HL
 exx             ;4
 POP BC
 POP DE
 POP HL
 dec sp        ;8
 push hl       ;16
 push de
 push bc
 exx
 push hl
 push de
 push bc
 push af

It's 20% faster and takes 29% less space then LDI's.

BTW These timings (and earlier mentioned) are RAM timings when the ASIC is
NOT updating the display.

Edwin




Reply via email to