boot: Set VGA text mode font to Deja Vu

This commit is contained in:
K. Lange 2023-01-04 15:21:27 +09:00
parent 778bfd6ed5
commit 4ab4c16813
3 changed files with 84 additions and 66 deletions

View File

@ -6600,7 +6600,7 @@ uint8_t large_font[][17] = {
},
/* 177 9618 */
{
/* */
/* ## # # */
/* # # ## */
/* ## # # */
/* ## # # */
@ -6617,7 +6617,7 @@ uint8_t large_font[][17] = {
/* # # ## */
/* ## # # */
/* */
0x00,
0x69,
0x96,
0x69,
0x69,
@ -6637,7 +6637,7 @@ uint8_t large_font[][17] = {
},
/* 178 9619 */
{
/* */
/* ######## */
/* ### ### */
/* ######## */
/* ## ### # */
@ -6654,7 +6654,7 @@ uint8_t large_font[][17] = {
/* ######## */
/* ## ### # */
/* */
0x00,
0xff,
0x77,
0xff,
0xdd,
@ -6674,7 +6674,7 @@ uint8_t large_font[][17] = {
},
/* 179 9474 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -6691,7 +6691,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -6711,7 +6711,7 @@ uint8_t large_font[][17] = {
},
/* 180 9508 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -6728,7 +6728,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -6748,7 +6748,7 @@ uint8_t large_font[][17] = {
},
/* 181 9569 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -6765,7 +6765,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -6785,7 +6785,7 @@ uint8_t large_font[][17] = {
},
/* 182 9570 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -6802,7 +6802,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -6896,7 +6896,7 @@ uint8_t large_font[][17] = {
},
/* 185 9571 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -6913,7 +6913,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -6933,7 +6933,7 @@ uint8_t large_font[][17] = {
},
/* 186 9553 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -6950,7 +6950,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7007,7 +7007,7 @@ uint8_t large_font[][17] = {
},
/* 188 9565 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7024,7 +7024,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7044,7 +7044,7 @@ uint8_t large_font[][17] = {
},
/* 189 9564 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7061,7 +7061,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7081,7 +7081,7 @@ uint8_t large_font[][17] = {
},
/* 190 9563 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7098,7 +7098,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7155,7 +7155,7 @@ uint8_t large_font[][17] = {
},
/* 192 9492 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7172,7 +7172,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7192,7 +7192,7 @@ uint8_t large_font[][17] = {
},
/* 193 9524 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7209,7 +7209,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7266,7 +7266,7 @@ uint8_t large_font[][17] = {
},
/* 195 9500 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7283,7 +7283,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7340,7 +7340,7 @@ uint8_t large_font[][17] = {
},
/* 197 9532 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7357,7 +7357,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7377,7 +7377,7 @@ uint8_t large_font[][17] = {
},
/* 198 9566 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7394,7 +7394,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7414,7 +7414,7 @@ uint8_t large_font[][17] = {
},
/* 199 9567 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7431,7 +7431,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7451,7 +7451,7 @@ uint8_t large_font[][17] = {
},
/* 200 9562 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7468,7 +7468,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7525,7 +7525,7 @@ uint8_t large_font[][17] = {
},
/* 202 9577 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7542,7 +7542,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7599,7 +7599,7 @@ uint8_t large_font[][17] = {
},
/* 204 9568 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7616,7 +7616,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7673,7 +7673,7 @@ uint8_t large_font[][17] = {
},
/* 206 9580 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7690,7 +7690,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7710,7 +7710,7 @@ uint8_t large_font[][17] = {
},
/* 207 9575 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7727,7 +7727,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -7747,7 +7747,7 @@ uint8_t large_font[][17] = {
},
/* 208 9576 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7764,7 +7764,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7858,7 +7858,7 @@ uint8_t large_font[][17] = {
},
/* 211 9561 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -7875,7 +7875,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -7895,7 +7895,7 @@ uint8_t large_font[][17] = {
},
/* 212 9560 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -7912,7 +7912,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -8006,7 +8006,7 @@ uint8_t large_font[][17] = {
},
/* 215 9579 */
{
/* */
/* # # */
/* # # */
/* # # */
/* # # */
@ -8023,7 +8023,7 @@ uint8_t large_font[][17] = {
/* # # */
/* # # */
/* */
0x00,
0x28,
0x28,
0x28,
0x28,
@ -8043,7 +8043,7 @@ uint8_t large_font[][17] = {
},
/* 216 9578 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -8060,7 +8060,7 @@ uint8_t large_font[][17] = {
/* # */
/* # */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -8080,7 +8080,7 @@ uint8_t large_font[][17] = {
},
/* 217 9496 */
{
/* */
/* # */
/* # */
/* # */
/* # */
@ -8097,7 +8097,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0x10,
0x10,
0x10,
0x10,
@ -8154,7 +8154,7 @@ uint8_t large_font[][17] = {
},
/* 219 9608 */
{
/* */
/* ######## */
/* ######## */
/* ######## */
/* ######## */
@ -8171,7 +8171,7 @@ uint8_t large_font[][17] = {
/* ######## */
/* ######## */
/* */
0x00,
0xff,
0xff,
0xff,
0xff,
@ -8228,7 +8228,7 @@ uint8_t large_font[][17] = {
},
/* 221 9612 */
{
/* */
/* #### */
/* #### */
/* #### */
/* #### */
@ -8245,7 +8245,7 @@ uint8_t large_font[][17] = {
/* #### */
/* #### */
/* */
0x00,
0xf0,
0xf0,
0xf0,
0xf0,
@ -8265,7 +8265,7 @@ uint8_t large_font[][17] = {
},
/* 222 9616 */
{
/* */
/* #### */
/* #### */
/* #### */
/* #### */
@ -8282,7 +8282,7 @@ uint8_t large_font[][17] = {
/* #### */
/* #### */
/* */
0x00,
0x0f,
0x0f,
0x0f,
0x0f,
@ -8302,7 +8302,7 @@ uint8_t large_font[][17] = {
},
/* 223 9600 */
{
/* */
/* ######## */
/* ######## */
/* ######## */
/* ######## */
@ -8319,7 +8319,7 @@ uint8_t large_font[][17] = {
/* */
/* */
/* */
0x00,
0xff,
0xff,
0xff,
0xff,
@ -9116,7 +9116,7 @@ uint8_t large_font[][17] = {
},
/* 245 8993 */
{
/* */
/* ## */
/* ## */
/* ## */
/* ## */
@ -9133,7 +9133,7 @@ uint8_t large_font[][17] = {
/* # # */
/* ## */
/* */
0x00,
0x18,
0x18,
0x18,
0x18,

View File

@ -256,6 +256,10 @@ do_bios_call.1:
cmp %bx, %ax
je do_bios_call.test_key
mov $0x05, %ax
cmp %bx, %ax
je do_bios_call.set_font
/* Else: Bad call, jump to loop. */
jmp do_bios_call.done
@ -289,6 +293,16 @@ do_bios_call.test_key:
movl %eax, 20(%esp)
jmp do_bios_call.done
do_bios_call.set_font:
movl 36(%esp), %ebp /* address of font data into ebp */
mov $0x1100, %ax /* mode = load user-defined font */
mov $17, %bh /* 17 bytes (rows) per character */
mov $0, %bl /* font block 0 */
mov $0, %dx /* starting from char 0 */
mov $0x100, %cx /* write 256 glyphs */
int $0x10
jmp do_bios_call.done
do_bios_call.done:
/* Disable interrupts again */
cli

View File

@ -84,6 +84,10 @@ void text_reset(void) {
extern int in_graphics_mode;
int bios_text_mode(void) {
do_bios_call(3, 3);
extern char large_font[];
do_bios_call(5, (uintptr_t)large_font);
vbe_info_width = 0;
in_graphics_mode = 0;
text_reset();