Subject: ite_rt.c: screen_up/screen_down problems
To: None <amiga@NetBSD.ORG>
From: John Vrolijk <dsnjvro@etmsun.etm.ericsson.se>
List: amiga
Date: 03/21/1995 09:00:14
Hi
sometime ago I posted my problems with scrolling on my Retina Z2.
Someone said, that the problem possibly could be in ite_rt.c
the screen_up/screen_down use a feature from the NCR chip to
scroll the screen up/down.


I have a Retina Z2 with 4MB ram and the GVP GForce '040 (33MHz) with 16MB ram.
I've read about the 'buggy' '040 interface on the GVP boards, could that 
be causing my problems ? Is the CPU too fast for the NCR trick ? 
Would CPU based scrolling solve it then ?

Could someone explain to me how the following piece of code works ?
Maybe if I know how it works, I can solve my problem.
My problem is, that when the text comes to the last line of the screen,
all text becomes unreadable, for example:



ados/    bin/     dev/     home/    mnt/

Turns into this:

ddss    bbnn      ee//    hhmm//    nn//

below is a piece of code from screen_up in /usr/src/sys/arch/amiga/dev/ite_rt.c
NOTE: I'm running 1.0, not -current.
Any help welcome

/John


---------------- please explain this ---------------

/* transfer all characters but LINES lines, unroll by 16 */
                short x = (1 + bottom - (top + lines)) * (md->TX / 16) - 1;
                do {
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                        asm volatile("addqb #1,%0@+" : "=a" (p) : "0" (p)); 
                } while (x--);