diff --git a/stage23/entry.s2.c b/stage23/entry.s2.c index e41dbaa3..4385042a 100644 --- a/stage23/entry.s2.c +++ b/stage23/entry.s2.c @@ -20,6 +20,7 @@ #include #include #include +#include struct volume *boot_volume; @@ -80,6 +81,19 @@ void entry(uint8_t boot_drive, int boot_from) { term_notready(); +#if bios == 1 + { + struct rm_regs r = {0}; + r.eax = 0x0003; + rm_int(0x10, &r, &r); + + current_video_mode = -1; + + outb(0x3d4, 0x0a); + outb(0x3d5, 0x20); + } +#endif + init_e820(); init_memmap(); diff --git a/stage23/entry.s3.c b/stage23/entry.s3.c index ef07aff8..2ff6a8d1 100644 --- a/stage23/entry.s3.c +++ b/stage23/entry.s3.c @@ -141,6 +141,10 @@ void stage3_common(void) { char *quiet_str = config_get_value(NULL, 0, "QUIET"); quiet = quiet_str != NULL && strcmp(quiet_str, "yes") == 0; +#if bios == 1 + term_textmode(); +#endif + char *verbose_str = config_get_value(NULL, 0, "VERBOSE"); verbose = verbose_str != NULL && strcmp(verbose_str, "yes") == 0; diff --git a/stage23/lib/term.s2.c b/stage23/lib/term.s2.c index 2b0129d0..c81dae38 100644 --- a/stage23/lib/term.s2.c +++ b/stage23/lib/term.s2.c @@ -7,7 +7,6 @@ #include #include #include -#include // Tries to implement this standard for terminfo // https://man7.org/linux/man-pages/man4/console_codes.4.html @@ -75,26 +74,6 @@ void term_notready(void) { term_rows = 100; term_cols = 100; - -#if bios == 1 - { - if (current_video_mode != -1) { - struct rm_regs r = {0}; - r.eax = 0x0003; - rm_int(0x10, &r, &r); - - current_video_mode = -1; - } - - volatile uint16_t *vmem = (volatile uint16_t *)0xb8000; - for (size_t i = 0; i < 80*25; i++) { - vmem[i] = 0x0720; - } - - outb(0x3d4, 0x0a); - outb(0x3d5, 0x20); - } -#endif } void (*raw_putchar)(uint8_t c);