diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-05-25 00:44:29 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-05-25 00:44:29 -0400 |
commit | 124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3 (patch) | |
tree | 10a4adbc9a18d2713633b9e25fe395c81cb012ef /vgasrc/vgafb.c | |
parent | a959aa16bede4af541d3f50416950170525e0c53 (diff) | |
download | seabios-hppa-124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3.zip seabios-hppa-124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3.tar.gz seabios-hppa-124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3.tar.bz2 |
VGA: Factor out hardware accesses from biosfn_set_video_mode.
Create vgahw_set_mode() that handles low-level vga setup in vgaio.c.
Move screen clearing to new function in vgafb.c.
Diffstat (limited to 'vgasrc/vgafb.c')
-rw-r--r-- | vgasrc/vgafb.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/vgasrc/vgafb.c b/vgasrc/vgafb.c index a34b6c0..6e10702 100644 --- a/vgasrc/vgafb.c +++ b/vgasrc/vgafb.c @@ -79,6 +79,24 @@ 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) { + memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0720, 32*1024); + return; + } + if (GET_GLOBAL(vmode_g->svgamode) < 0x0d) { + memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 32*1024); + return; + } + 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); +} + +void biosfn_scroll(u8 nblines, u8 attr, u8 rul, u8 cul, u8 rlr, u8 clr, u8 page, u8 dir) { |