Video scrolling (was: SMALL bug)

Alan Modra (alan@spri.levels.unisa.edu.au)
Sat, 26 Oct 1996 11:44:21 +0930 (CST)


> Not even really a bug, just a curriocity...
> Console in text mode...
> for some reason, about one in every 100 times the console scrolls, it wont
> scroll cleanly, ie, text will flash (almost subliminally) where text
> shouldnt be...

No real problem. The kernel just happened to be updating some of the
16bit VGA registers right when that part of the screen was being
refreshed. For compatibility with old hardware, the register update
is done with 8 bit IOs, (with pauses too). You can do 16bit IO on
nearly all hardware, which greatly reduces occurence of the 'flashing'

Here's a patch I made quite a while ago.

--- linux-1.99.10/drivers/char/vga.c Tue May 7 14:20:53 1996
+++ ./drivers/char/vga.c Mon May 20 12:25:12 1996
@@ -89,15 +89,17 @@
__set_origin(unsigned short offset)
{
unsigned long flags;
+ unsigned short high, low;

clear_selection();

+ high = 12 + (offset & 0xff00);
+ low = 13 + (offset << 8);
+
save_flags(flags); cli();
__origin = offset;
- outb_p(12, video_port_reg);
- outb_p(offset >> 8, video_port_val);
- outb_p(13, video_port_reg);
- outb_p(offset, video_port_val);
+ outw(high, video_port_reg);
+ outw(low, video_port_reg);
restore_flags(flags);
}