aboutsummaryrefslogtreecommitdiffstats
path: root/vgasrc
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2009-05-31 00:53:18 -0400
committerKevin O'Connor <kevin@koconnor.net>2009-05-31 00:53:18 -0400
commite4145adddd716f1a7d38a389902106cb3c313d37 (patch)
treec28bff6ac9a7fcc5817c7b7f4f4ed3257e1a99a1 /vgasrc
parent217f2bc7d52267dd548655891651f87ed7942889 (diff)
downloadseabios-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.c22
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);
}