Печать сообщения на экран с помощью VGA - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь написать функцию, которая будет выводить сообщение на экран, используя буфер текстового режима VGA. Это функция, которая печатает один символ:

void putc(uint8_t c, enum Color term_color)
{
    uint8_t *vidptr = (uint8_t*)0xB8000;

    *vidptr = c;
    vidptr++;
    *vidptr = (uint8_t*)term_color;
    vidptr++;
}

Вот функция, которую я хочу напечатать строку:

void puts(const uint8_t* str, enum Color term_color)
{
    for(size_t i = 0; i != '\0'; i++) {
        putc(str[i], term_color);
    }
}

Но это ничего не печатает. Там просто черный экран с мигающим курсором.

РЕДАКТИРОВАТЬ: первая функция, которая печатает один символ работает.

1 Ответ

0 голосов
/ 04 мая 2018

Функция

putc (uint8_t c, enum Color term_color)

всегда помещайте символ в одну и ту же позицию (0xB8000).
Вам нужно объявить

uint8_t * vidptr

вне функции для правильного увеличения ее при каждом вызове.

...