diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2012-01-02 11:13:14 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2012-01-14 17:19:04 -0500 |
commit | 80da87da8db00f7e5a88aeae7f17dbbb074518b8 (patch) | |
tree | 536e748b97479d4c1711478f28cfb35950e0c807 /vgasrc/vgafb.c | |
parent | 2c8ba89aab21dcd400a923887843696dc00a9645 (diff) | |
download | seabios-hppa-80da87da8db00f7e5a88aeae7f17dbbb074518b8.zip seabios-hppa-80da87da8db00f7e5a88aeae7f17dbbb074518b8.tar.gz seabios-hppa-80da87da8db00f7e5a88aeae7f17dbbb074518b8.tar.bz2 |
vgabios: Make struct vgamode_s more similar to bochs/cirrus mode tables.
For graphics modes, store pixel width/height instead of text
width/height. Add explicit char width field. Where needed, calculate
text width/height from pixel width/height by dividing pixel count by
character size.
Rename some fields and change field sizes to match cirrus/bochs
definitions.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'vgasrc/vgafb.c')
-rw-r--r-- | vgasrc/vgafb.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/vgasrc/vgafb.c b/vgasrc/vgafb.c index 0f33720..eb4ced8 100644 --- a/vgasrc/vgafb.c +++ b/vgasrc/vgafb.c @@ -75,7 +75,7 @@ scroll_cga(struct vgamode_s *vmode_g, int nblines, int attr , struct cursorpos ul, struct cursorpos lr) { int cheight = GET_GLOBAL(vmode_g->cheight) / 2; - int cwidth = GET_GLOBAL(vmode_g->pixbits); + int cwidth = GET_GLOBAL(vmode_g->depth); int stride = GET_BDA(video_cols) * cwidth; void *src_far, *dest_far; if (nblines >= 0) { @@ -253,7 +253,7 @@ write_gfx_char_cga(struct vgamode_s *vmode_g return; u8 *fdata_g = vgafont8; - u8 bpp = GET_GLOBAL(vmode_g->pixbits); + u8 bpp = GET_GLOBAL(vmode_g->depth); u16 addr = (cp.x * bpp) + cp.y * 320; u16 src = ca.car * 8; u8 i; @@ -431,14 +431,14 @@ vgafb_write_pixel(u8 color, u16 x, u16 y) stdvga_grdc_write(0x03, 0x00); break; case MM_CGA: - if (GET_GLOBAL(vmode_g->pixbits) == 2) + if (GET_GLOBAL(vmode_g->depth) == 2) addr_far = (void*)((x >> 2) + (y >> 1) * 80); else addr_far = (void*)((x >> 3) + (y >> 1) * 80); if (y & 1) addr_far += 0x2000; data = GET_FARVAR(SEG_CTEXT, *addr_far); - if (GET_GLOBAL(vmode_g->pixbits) == 2) { + if (GET_GLOBAL(vmode_g->depth) == 2) { attr = (color & 0x03) << ((3 - (x & 0x03)) * 2); mask = 0x03 << ((3 - (x & 0x03)) * 2); } else { @@ -489,7 +489,7 @@ vgafb_read_pixel(u16 x, u16 y) if (y & 1) addr_far += 0x2000; data = GET_FARVAR(SEG_CTEXT, *addr_far); - if (GET_GLOBAL(vmode_g->pixbits) == 2) + if (GET_GLOBAL(vmode_g->depth) == 2) attr = (data >> ((3 - (x & 0x03)) * 2)) & 0x03; else attr = (data >> (7 - (x & 0x07))) & 0x01; |