Subject: Re: Beginner Install Problems - kernel won't boot
To: Ian Wellock <Ian.Wellock@isltd.insignia.com>
From: John Vrolijk <dsnjvro@etmsun.etm.ericsson.se>
List: amiga
Date: 03/29/1995 13:47:28
Hello Ian
your problem looks similar to mine. When the screen gets
garbled, how does it look ? On my Retina, the output looks like
all characters are copied over to the left by 1 position.
Example:

ados/    bin/     dev/     home/    mnt/

becomes:

ddss    bbnn      ee//    hhmm//    nn//

Could you compare this with yor output ? Maybe your problem is the same as mine.
This behaviour occurs also in vi.
I also have a Retina Z2, kickstart 3.1, 8 MB 16-bit RAM and 16 MB
32-bit ram on my GVP '040 board. There is also an extra serial/parallel port on that
card.
It started after I changed my GVP combo 030 for a GVP 040 at 33 Mhz.
Since I already got a running system, it was not such a problem.

I've posted this problem to the list, and someone said it may be caused by
the scrolling functions screen_up/screen_down in ite_rt.c
It uses a trick from the videochip to scroll up/down, but I don't know how. 

A piece of the code that does this, looks like this:
I have no idea how it works, and nobody has replied on my problem so far.
Just that I should maybe implement CPU based scrolling.

/John

------- piece of code from ite_rt.c ----------------

/* 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--);