Subject: Retina console scroll problem fixed.
To: None <amiga@NetBSD.ORG>
From: John Vrolijk <dsnjvro@etmsun.etm.ericsson.se>
List: amiga
Date: 03/30/1995 15:19:17
Some while ago, I reported a scrolling problem with my RetinaZ2 on NetBSD 1.0
I thought I was the only one with this problem, but it looks like I'm not the only
one. Together with Ian.Wellock@isltd.insignia.com, who had similar
problems, I managed to fix it, at least for my setup.
setup: Retina Z2 with 4 MB VRAM
GVP combo 040 at 33 Mhz with 16 MB 32-bit RAM
8 MB 16-bit RAM
NetBSD 1.0
Kickstart 3.1
2 MB ChipRAM
I changed the code in ite_rt.c as follows: note that the code was already there,
it was just commented out......
Why is the original code not working ??????
/John
function retina_scroll:
-------------- start ----------
void retina_scroll(struct ite_softc *ip, int sy, int sx, int count, int dir)
{
volatile u_char * ba = ip->grf->g_regkva;
u_long * fb = (u_long *) ip->grf->g_fbkva;
register int height, dy, i;
retina_cursor(ip, ERASE_CURSOR);
if (dir == SCROLL_UP)
{
/* fixed by John Vrolijk. 1995-03-29. Following code messes up Retina console output when scrolling. Used the bcopy/retina_clear code instead. */
/* screen_up (ip, sy - count, ip->bottom_margin, count); */
bcopy (fb + sy * ip->cols, fb + (sy - count) * ip->cols, 4 * (ip->bottom_margin - sy + 1) * ip->cols);
retina_clear (ip, ip->bottom_margin + 1 - count, 0, count, ip->cols);
}
else if (dir == SCROLL_DOWN)
{
/* fixed by John Vrolijk. 1995-03-29. Following code messes up Retina console output when scrolling. Used the bcopy/retina_clear code instead. */
/* screen_down (ip, sy, ip->bottom_margin, count); */
bcopy (fb + sy * ip->cols, fb + (sy + count) * ip->cols, 4 * (ip->bottom_margin - sy - count + 1) * ip->cols);
retina_clear (ip, sy, 0, count, ip->cols);
}
else if (dir == SCROLL_RIGHT)
{
bcopy (fb + sx + sy * ip->cols, fb + sx + sy * ip->cols + count, 4 * (ip->cols - (sx + count)));
retina_clear (ip, sy, sx, 1, count);
}
else
{
bcopy (fb + sx + sy * ip->cols, fb + sx - count + sy * ip->cols, 4 * (ip->cols - sx));
retina_clear (ip, sy, ip->cols - count, 1, count);
}
/* added by John Vrolijk. 1995-03-29 */
retina_cursor(ip, !ERASE_CURSOR);
}
#endif /* NGRFRT */
---------------- end ---------------------------