diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2011-12-31 04:31:16 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2011-12-31 04:32:58 -0500 |
commit | 2bec7d6162135a4b061aaf577b3b34f70a38a3b9 (patch) | |
tree | 19f49af14307b85aec202cef0ac590689622e9f2 /vgasrc/stdvga.c | |
parent | 88ca74183a521e6868bdee65398f7d51d790490b (diff) | |
download | seabios-2bec7d6162135a4b061aaf577b3b34f70a38a3b9.tar.gz |
vgabios: Move vgafb_load_font to stdvga.c.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'vgasrc/stdvga.c')
-rw-r--r-- | vgasrc/stdvga.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/vgasrc/stdvga.c b/vgasrc/stdvga.c index fd8514ee..9b915591 100644 --- a/vgasrc/stdvga.c +++ b/vgasrc/stdvga.c @@ -10,6 +10,7 @@ #include "farptr.h" // SET_FARVAR #include "biosvar.h" // GET_BDA #include "vgabios.h" // VGAREG_* +#include "util.h" // memcpy_far // TODO // * replace direct in/out calls with wrapper functions @@ -288,7 +289,12 @@ stdvga_set_text_block_specifier(u8 spec) outw((spec << 8) | 0x03, VGAREG_SEQU_ADDRESS); } -void + +/**************************************************************** + * Font loading + ****************************************************************/ + +static void get_font_access(void) { outw(0x0100, VGAREG_SEQU_ADDRESS); @@ -300,7 +306,7 @@ get_font_access(void) outw(0x0406, VGAREG_GRDC_ADDRESS); } -void +static void release_font_access(void) { outw(0x0100, VGAREG_SEQU_ADDRESS); @@ -313,6 +319,20 @@ release_font_access(void) outw(0x1005, VGAREG_GRDC_ADDRESS); } +void +stdvga_load_font(u16 seg, void *src_far, u16 count + , u16 start, u8 destflags, u8 fontsize) +{ + get_font_access(); + u16 blockaddr = ((destflags & 0x03) << 14) + ((destflags & 0x04) << 11); + void *dest_far = (void*)(blockaddr + start*32); + u16 i; + for (i = 0; i < count; i++) + memcpy_far(SEG_GRAPH, dest_far + i*32 + , seg, src_far + i*fontsize, fontsize); + release_font_access(); +} + /**************************************************************** * CRTC registers |