Kintsugi OS 0.2.0
x86 Monolithic OS
Loading...
Searching...
No Matches
screen.h
Go to the documentation of this file.
1/*------------------------------------------------------------------------------
2 * Kintsugi OS Drivers source code
3 * File: drivers/screen.h
4 * Title: Заголовочный файл screen.c
5 * Last Change Date: 30 October 2023, 12:28 (UTC)
6 * Author: alexeev-prog
7 * License: GNU GPL v3
8 * ------------------------------------------------------------------------------
9 * Description: null
10 * ----------------------------------------------------------------------------*/
11
12// #include "../common.h"
13//
14// #define VIDEO_ADDRESS 0xb8000 // Адрес начала VGA для печати символов
15// #define MAX_ROWS 25 // макс. строк
16// #define MAX_COLS 80 // макс. столбцов
17//
18// #define WHITE_ON_BLACK 0x0f // 0x0 == white fg, 0xf == black bg
19// #define WHITE_ON_BLUE 0x1f
20//
21// // Адреса I/O портов для взаимодействия с экраном.
22// #define REG_SCREEN_CTRL 0x3d4 // этот порт для описания данных
23// #define REG_SCREEN_DATA 0x3d5 // а этот порт для самих данных
24//
25// void kprint(u8 *str);
26// void putchar(u8 character, u8 attribute_byte);
27// void clear_screen();
28// void write(u8 character, u8 attribute_byte, u16 offset);
29// void scroll_line();
30// u16 get_cursor();
31// void set_cursor(u16 pos);
32// ^^^ Старый код
33
34#ifndef SCREEN_H
35#define SCREEN_H
36
37// Подключаем типы из CPU
38#include "../kklibc/ctypes.h"
39
40#define VIDEO_ADDRESS 0xb8000 // Видео-адрес
41#define MAX_ROWS 25 // Максимальное кол-во линий
42#define MAX_COLS 80 // Максимальное кол-во колонок
43#define WHITE_ON_BLACK 0x0f // HEX-код белого на черном
44#define WHITE_ON_BLUE 0x1f
45#define WHITE_ON_RED 0x4f
46#define BLUE_ON_WHITE 0x1f
47#define WHITE_ON_DGREY 0x8
48
49// HEX-коды разных цветов на черном
50#define BLUE_ON_BLACK 0x01
51#define GREEN_ON_BLACK 0x02
52#define CYAN_ON_BLACK 0x03
53#define RED_ON_BLACK 0x04
54#define MAGENTA_ON_BLACK 0x05
55#define BROWN_ON_BLACK 0x06
56#define LGREY_ON_BLACK 0x07
57#define DGREY_ON_BLACK 0x08
58#define LBLUE_ON_BLACK 0x09
59#define LGREEN_ON_BLACK 0x0A
60#define LCYAN_ON_BLACK 0x0B
61#define LRED_ON_BLACK 0x0C
62#define LMAGENTA_ON_BLACK 0x0D
63#define YELLOW_ON_BLACK 0x0E
64#define RED_ON_WHITE 0xf4
65
66/* Порты ввода/вывода экрана */
67#define REG_SCREEN_CTRL 0x3d4
68#define REG_SCREEN_DATA 0x3d5
69
70/* Публичное API ядра */
71
78
83void clear_screen();
84
90
99void kprint_at(char* message, int col, int row, int color);
100
106void kprint(char* message);
107
113void kprintln(char* message);
114
121void kprintln_colored(char* message, int color);
122
129void kprint_colored(char* message, int color);
130
135void kprint_backspace();
136
143void panic_red_screen(char* title, char* description);
144
145#endif
void kprint(char *message)
Вывод текста
Definition screen.c:54
void kprint_colored(char *message, int color)
Цветной вывод
Definition screen.c:71
void clear_screen()
Стандартная очистка экрана
Definition screen.c:205
void kprintln_colored(char *message, int color)
Цветной вывод с новой строкой
Definition screen.c:65
void kprint_backspace()
Вывод символа backspace.
Definition screen.c:76
void halted_cpu_screen_clear()
Очистка и заполнение экраном halted cpu.
Definition screen.c:88
int get_cursor_offset()
Получение оффсета курсора
Definition screen.c:185
void panic_red_screen(char *title, char *description)
Красный экран для паники ядра
Definition screen.c:100
void kprint_at(char *message, int col, int row, int color)
Вывод текста в определенном месте
Definition screen.c:33
void kprintln(char *message)
Вывод текста с новой строкой
Definition screen.c:59