diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-05-31 00:53:18 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-05-31 00:53:18 -0400 |
commit | e4145adddd716f1a7d38a389902106cb3c313d37 (patch) | |
tree | c28bff6ac9a7fcc5817c7b7f4f4ed3257e1a99a1 /vgasrc | |
parent | 217f2bc7d52267dd548655891651f87ed7942889 (diff) | |
download | seabios-e4145adddd716f1a7d38a389902106cb3c313d37.tar.gz |
VGA: Define clear_screen in terms of memmodel.
Use vmode_g->memmodel instead of memmodel and svgamode.
Diffstat (limited to 'vgasrc')
-rw-r--r-- | vgasrc/vgafb.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/vgasrc/vgafb.c b/vgasrc/vgafb.c index 6790570d..f39c8263 100644 --- a/vgasrc/vgafb.c +++ b/vgasrc/vgafb.c @@ -284,19 +284,21 @@ vgafb_scroll(int nblines, int attr, struct cursorpos ul, struct cursorpos lr) void clear_screen(struct vgamode_s *vmode_g) { - if (GET_GLOBAL(vmode_g->memmodel) & TEXT) { + switch (GET_GLOBAL(vmode_g->memmodel)) { + case CTEXT: + case MTEXT: memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0720, 32*1024); - return; - } - if (GET_GLOBAL(vmode_g->svgamode) < 0x0d) { + break; + case CGA: memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 32*1024); - return; + break; + default: { + outb(0x02, VGAREG_SEQU_ADDRESS); + u8 mmask = inb(VGAREG_SEQU_DATA); + outb(0x0f, VGAREG_SEQU_DATA); // all planes + memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 64*1024); + outb(mmask, VGAREG_SEQU_DATA); } - outb(0x02, VGAREG_SEQU_ADDRESS); - u8 mmask = inb(VGAREG_SEQU_DATA); - outb(0x0f, VGAREG_SEQU_DATA); // all planes - memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 64*1024); - outb(mmask, VGAREG_SEQU_DATA); } |