vgabios: Minor - pass display address to stdvga_set_cursor_pos().
authorKevin O'Connor <kevin@koconnor.net>
Sat, 28 Jan 2012 03:59:46 +0000 (22:59 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Thu, 2 Feb 2012 01:39:21 +0000 (20:39 -0500)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
vgasrc/stdvga.c
vgasrc/stdvga.h
vgasrc/vgabios.c

index 13334ed47513ef5d3db23b7b6831d1df2ba16c32..ed4dcd298a8ab15b6a3f64bc4296bff89b9c112e 100644 (file)
@@ -254,9 +254,10 @@ stdvga_set_cursor_shape(u8 start, u8 end)
 }
 
 void
-stdvga_set_cursor_pos(u16 address)
+stdvga_set_cursor_pos(int address)
 {
     u16 crtc_addr = stdvga_get_crtc();
+    address /= 2;  // Assume we're in text mode.
     stdvga_crtc_write(crtc_addr, 0x0e, address >> 8);
     stdvga_crtc_write(crtc_addr, 0x0f, address);
 }
index f6fda00019ace5b7c3c00ae62949123acced4ef4..94b22ff4566e755ffe2c1e530fa3d5727fff1fdc 100644 (file)
@@ -131,7 +131,7 @@ void stdvga_load_font(u16 seg, void *src_far, u16 count
 u16 stdvga_get_crtc(void);
 int stdvga_bpp_factor(struct vgamode_s *vmode_g);
 void stdvga_set_cursor_shape(u8 start, u8 end);
-void stdvga_set_cursor_pos(u16 address);
+void stdvga_set_cursor_pos(int address);
 void stdvga_set_scan_lines(u8 lines);
 u16 stdvga_get_vde(void);
 int stdvga_get_window(struct vgamode_s *vmode_g, int window);
index 25d97294dd0cfe43d0116b6bebdb8c99b98ce9d1..2f24e7828c91a99e16a8ac0f414754c2dc034473 100644 (file)
@@ -138,11 +138,9 @@ set_cursor_pos(struct cursorpos cp)
         return;
 
     // Calculate the memory address
-    u16 nbcols = GET_BDA(video_cols);
-    u16 address = (GET_BDA(video_pagesize) * cp.page
-                   + (cp.x + cp.y * nbcols) * 2);
-
-    stdvga_set_cursor_pos(address / 2);
+    int address = (GET_BDA(video_pagesize) * cp.page
+                   + (cp.x + cp.y * GET_BDA(video_cols)) * 2);
+    stdvga_set_cursor_pos(address);
 }
 
 static struct cursorpos