diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-05-25 23:37:13 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-05-25 23:37:13 -0400 |
commit | e4f220fa2e46dbf81ef2a6e5536f914dc5902767 (patch) | |
tree | 08874056584a175c1a9b8cb685b22e7cdfb38e2b /vgasrc | |
parent | 0926241e6489eff781f8a646fcd90f454882a81d (diff) | |
download | seabios-e4f220fa2e46dbf81ef2a6e5536f914dc5902767.tar.gz |
VGA: Remove vmode_g->class - store info in vmode_g->memmodel.
Diffstat (limited to 'vgasrc')
-rw-r--r-- | vgasrc/vga.c | 8 | ||||
-rw-r--r-- | vgasrc/vgafb.c | 13 | ||||
-rw-r--r-- | vgasrc/vgatables.c | 34 | ||||
-rw-r--r-- | vgasrc/vgatables.h | 12 |
4 files changed, 30 insertions, 37 deletions
diff --git a/vgasrc/vga.c b/vgasrc/vga.c index 70c6b93b..9d7ca30b 100644 --- a/vgasrc/vga.c +++ b/vgasrc/vga.c @@ -149,7 +149,7 @@ biosfn_set_active_page(u8 page) struct cursorpos cp = get_cursor_pos(page); u16 address; - if (GET_GLOBAL(vmode_g->class) == TEXT) { + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { // Get the dimensions u16 nbcols = GET_BDA(video_cols); u16 nbrows = GET_BDA(video_rows) + 1; @@ -229,7 +229,7 @@ biosfn_write_teletype(u8 page, struct carattr ca) } // Do we need to scroll ? if (cp.y == nbrows) { - if (GET_GLOBAL(vmode_g->class) == TEXT) + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) biosfn_scroll(0x01, 0x07, 0, 0, nbrows - 1, nbcols - 1, page, SCROLL_UP); else @@ -427,7 +427,7 @@ handle_1000(struct bregs *regs) SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but... // Set cursor shape - if (GET_GLOBAL(vmode_g->class) == TEXT) + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) biosfn_set_cursor_shape(0x06, 0x07); // Set cursor pos for page 0..7 int i; @@ -440,7 +440,7 @@ handle_1000(struct bregs *regs) biosfn_set_active_page(0x00); // Write the fonts in memory - if (GET_GLOBAL(vmode_g->class) == TEXT) { + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { call16_vgaint(0x1104, 0); call16_vgaint(0x1103, 0); } diff --git a/vgasrc/vgafb.c b/vgasrc/vgafb.c index fbc18079..231ba1ed 100644 --- a/vgasrc/vgafb.c +++ b/vgasrc/vgafb.c @@ -13,7 +13,6 @@ // * extract hw code from framebuffer code // * use clear_screen() in scroll code // * read/write_char should take a position; should not take count -// * remove vmode_g->class (integrate into vmode_g->memmodel) // * normalize params (don't use AX/BX/CX/etc.) // XXX @@ -88,7 +87,7 @@ vgamem_fill_cga(u8 xstart, u8 ystart, u8 cols, u8 nbcols, u8 cheight, void clear_screen(struct vgamode_s *vmode_g) { - if (GET_GLOBAL(vmode_g->class) == TEXT) { + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0720, 32*1024); return; } @@ -134,7 +133,7 @@ biosfn_scroll(u8 nblines, u8 attr, u8 rul, u8 cul, u8 rlr, u8 clr, u8 page, nblines = 0; u8 cols = clr - cul + 1; - if (GET_GLOBAL(vmode_g->class) == TEXT) { + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { // Compute the address void *address_far = (void*)(SCREEN_MEM_START(nbcols, nbrows, page)); dprintf(3, "Scroll, address %p (%d %d %02x)\n" @@ -390,7 +389,7 @@ vgafb_write_char(u8 page, struct carattr ca, u16 count) u16 nbrows = GET_BDA(video_rows) + 1; u16 nbcols = GET_BDA(video_cols); - if (GET_GLOBAL(vmode_g->class) == TEXT) { + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { // Compute the address void *address_far = (void*)(SCREEN_MEM_START(nbcols, nbrows, cp.page) + (cp.x + cp.y * nbcols) * 2); @@ -445,7 +444,7 @@ vgafb_read_char(u8 page) u16 nbrows = GET_BDA(video_rows) + 1; u16 nbcols = GET_BDA(video_cols); - if (GET_GLOBAL(vmode_g->class) == TEXT) { + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { // Compute the address u16 *address_far = (void*)(SCREEN_MEM_START(nbcols, nbrows, cp.page) + (cp.x + cp.y * nbcols) * 2); @@ -473,7 +472,7 @@ biosfn_write_pixel(u8 BH, u8 AL, u16 CX, u16 DX) struct vgamode_s *vmode_g = find_vga_entry(GET_BDA(video_mode)); if (!vmode_g) return; - if (GET_GLOBAL(vmode_g->class) == TEXT) + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) return; u8 *addr_far, mask, attr, data; @@ -529,7 +528,7 @@ biosfn_read_pixel(u8 BH, u16 CX, u16 DX, u16 *AX) struct vgamode_s *vmode_g = find_vga_entry(GET_BDA(video_mode)); if (!vmode_g) return; - if (GET_GLOBAL(vmode_g->class) == TEXT) + if (GET_GLOBAL(vmode_g->memmodel) & TEXT) return; u8 *addr_far, mask, attr=0, data, i; diff --git a/vgasrc/vgatables.c b/vgasrc/vgatables.c index 129f9dcf..0587e651 100644 --- a/vgasrc/vgatables.c +++ b/vgasrc/vgatables.c @@ -383,23 +383,23 @@ static u8 palette3[] VAR16 = { #define VPARAM(x) &video_param_table[x] static struct vgamode_s vga_modes[] VAR16 = { - //mode vparam class model bits sstart pelm dac - {0x00, VPARAM(0x17), TEXT, CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, - {0x01, VPARAM(0x17), TEXT, CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, - {0x02, VPARAM(0x18), TEXT, CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, - {0x03, VPARAM(0x18), TEXT, CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, - {0x04, VPARAM(0x04), GRAPH, CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)}, - {0x05, VPARAM(0x05), GRAPH, CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)}, - {0x06, VPARAM(0x06), GRAPH, CGA, 1, SEG_CTEXT, 0xFF, PAL(palette1)}, - {0x07, VPARAM(0x07), TEXT, MTEXT, 4, SEG_MTEXT, 0xFF, PAL(palette0)}, - {0x0D, VPARAM(0x0d), GRAPH, PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)}, - {0x0E, VPARAM(0x0e), GRAPH, PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)}, - {0x0F, VPARAM(0x11), GRAPH, PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette0)}, - {0x10, VPARAM(0x12), GRAPH, PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, - {0x11, VPARAM(0x1a), GRAPH, PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette2)}, - {0x12, VPARAM(0x1b), GRAPH, PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, - {0x13, VPARAM(0x1c), GRAPH, LINEAR8, 8, SEG_GRAPH, 0xFF, PAL(palette3)}, - {0x6A, VPARAM(0x1d), GRAPH, PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, + //mode vparam model bits sstart pelm dac + {0x00, VPARAM(0x17), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, + {0x01, VPARAM(0x17), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, + {0x02, VPARAM(0x18), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, + {0x03, VPARAM(0x18), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, + {0x04, VPARAM(0x04), CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)}, + {0x05, VPARAM(0x05), CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)}, + {0x06, VPARAM(0x06), CGA, 1, SEG_CTEXT, 0xFF, PAL(palette1)}, + {0x07, VPARAM(0x07), MTEXT, 4, SEG_MTEXT, 0xFF, PAL(palette0)}, + {0x0D, VPARAM(0x0d), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)}, + {0x0E, VPARAM(0x0e), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)}, + {0x0F, VPARAM(0x11), PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette0)}, + {0x10, VPARAM(0x12), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, + {0x11, VPARAM(0x1a), PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette2)}, + {0x12, VPARAM(0x1b), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, + {0x13, VPARAM(0x1c), LINEAR8, 8, SEG_GRAPH, 0xFF, PAL(palette3)}, + {0x6A, VPARAM(0x1d), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, }; struct vgamode_s * diff --git a/vgasrc/vgatables.h b/vgasrc/vgatables.h index 8b35f0e7..81e9c3aa 100644 --- a/vgasrc/vgatables.h +++ b/vgasrc/vgatables.h @@ -49,15 +49,12 @@ #define SEG_MTEXT 0xB000 /* - * * Tables of default values for each mode - * */ -#define TEXT 0x00 -#define GRAPH 0x01 +#define TEXT 0x80 -#define CTEXT 0x00 -#define MTEXT 0x01 +#define CTEXT (0x00 | TEXT) +#define MTEXT (0x01 | TEXT) #define CGA 0x02 #define PLANAR1 0x03 #define PLANAR4 0x04 @@ -71,8 +68,6 @@ #define SCROLL_DOWN 0 #define SCROLL_UP 1 -#define NO_ATTR 2 -#define WITH_ATTR 3 #define SCREEN_SIZE(x,y) (((x*y*2)|0x00ff)+1) #define SCREEN_MEM_START(x,y,p) ((((x*y*2)|0x00ff)+1)*p) @@ -94,7 +89,6 @@ struct VideoParam_s { struct vgamode_s { u8 svgamode; struct VideoParam_s *vparam; - u8 class; /* TEXT, GRAPH */ u8 memmodel; /* CTEXT,MTEXT,CGA,PL1,PL2,PL4,P8,P15,P16,P24,P32 */ u8 pixbits; u16 sstart; |