Графическое выделение важного текста
This commit is contained in:
parent
ef5e8cc0ab
commit
076c87badf
16
include/fb.h
16
include/fb.h
|
@ -10,19 +10,35 @@
|
|||
#ifndef FB_H
|
||||
#define FB_H
|
||||
|
||||
#include <arch.h>
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <tool.h>
|
||||
|
||||
enum colors {
|
||||
WHITE = 0xFFFFFF,
|
||||
BLACK = 0x000000,
|
||||
RED = 0xFF0000,
|
||||
GREEN = 0x00D000,
|
||||
PRIMA_GREEN = 0x00FF00,
|
||||
BLUE = 0x0000FF,
|
||||
DARK_GREEN = 0x013220,
|
||||
};
|
||||
|
||||
#define GET_TICK_BIG arch_get_tick_b( )
|
||||
#define GET_TICK_lOW arch_get_tick_l( )
|
||||
|
||||
#define SCREEN_WIDTH width
|
||||
#define SCREEN_HEIGHT height
|
||||
#define SCREEN_BUFFER fb_addr
|
||||
|
||||
#define LOG(...) \
|
||||
fb_printf("[%u]%s() (%s:%d) ", GET_TICK_BIG, __func__, __FILE__, \
|
||||
__LINE__); \
|
||||
fb_printf(__VA_ARGS__)
|
||||
|
||||
void fb_set_text_color(uint32_t color);
|
||||
void fb_init( );
|
||||
void fb_print_buf(size_t x, size_t y, size_t h, size_t w, uint32_t *buf);
|
||||
void fb_printf(char *str, ...);
|
||||
|
|
18
kernel/fb.c
18
kernel/fb.c
|
@ -15,15 +15,6 @@
|
|||
#include <stdint.h>
|
||||
#include <tool.h>
|
||||
|
||||
enum colors {
|
||||
WHITE = 0xFFFFFF,
|
||||
BLACK = 0x000000,
|
||||
RED = 0xFF0000,
|
||||
GREEN = 0x00FF00,
|
||||
BLUE = 0x0000FF,
|
||||
DARK_GREEN = 0x013220,
|
||||
};
|
||||
|
||||
static volatile struct limine_framebuffer_request framebuffer_request = {
|
||||
.id = LIMINE_FRAMEBUFFER_REQUEST,
|
||||
.revision = 0,
|
||||
|
@ -44,9 +35,9 @@ uint16_t bpp;
|
|||
uint64_t pos_x = 4;
|
||||
uint64_t pos_y = 4;
|
||||
|
||||
#define SCREEN_WIDTH width
|
||||
#define SCREEN_HEIGHT height
|
||||
#define SCREEN_BUFFER fb_addr
|
||||
void fb_set_text_color(uint32_t color) {
|
||||
text_color = color;
|
||||
}
|
||||
|
||||
// Настройка прослойки графики ядра
|
||||
void fb_init( ) {
|
||||
|
@ -64,7 +55,9 @@ void fb_init( ) {
|
|||
for (uint64_t i = 0; i < width * height; i++) { fb_addr[i] = background; }
|
||||
|
||||
LOG("0x%x %ux%u\n", fb_addr, width, height);
|
||||
|
||||
if (framebuffer_response->framebuffer_count == 1) { return; }
|
||||
|
||||
LOG("Инициализация дополнительных: %u мониторов\n",
|
||||
framebuffer_response->framebuffer_count);
|
||||
|
||||
|
@ -130,6 +123,7 @@ void scroll_fb( ) {
|
|||
|
||||
// Вывод одного символа
|
||||
static void fb_putchar(char c) {
|
||||
pause( );
|
||||
if (c == '\t') {
|
||||
pos_x += FONT_6X8_SLIM_CHAR_WIDTH * 4;
|
||||
} else if (c == '\n') {
|
||||
|
|
|
@ -23,14 +23,23 @@ void _start( ) {
|
|||
arch_init( );
|
||||
mem_init( );
|
||||
|
||||
fb_set_text_color(0x00FF00);
|
||||
LOG("\t\t\t\t *** Базовая Модульная Платформа Операционных Систем "
|
||||
"версии %u.%u.%u ***\n",
|
||||
VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD);
|
||||
|
||||
LOG("\t\t\t\t *** Дата сборки: %s %s ***\n", __DATE__, __TIME__);
|
||||
fb_set_text_color(0x00D000);
|
||||
|
||||
mod_init( );
|
||||
pit_init( );
|
||||
LOG("Готово! Для выхода из симуляции: ESCAPE\n");
|
||||
// pit_init( );
|
||||
|
||||
mod_list_show( );
|
||||
|
||||
fb_set_text_color(0x00FF00);
|
||||
LOG("Готово! Для выхода из симуляции удерживайте: ESCAPE\n");
|
||||
fb_set_text_color(0x00D000);
|
||||
|
||||
while (1) {
|
||||
uint64_t byte = inb(0x60);
|
||||
if (byte == 0x1) {
|
||||
|
|
Loading…
Reference in New Issue