}
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);
}
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);
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