You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
#ifndef __brados_video_vga_h__ |
|
#define __brados_video_vga_h__ |
|
|
|
#include <stddef.h> |
|
#include <stdint.h> |
|
|
|
#define VGA_BUF 0xB8000 |
|
|
|
#define VGA_WIDTH 80 |
|
#define VGA_HEIGHT 24 |
|
|
|
// VGA State |
|
struct vgastate { |
|
size_t term_row, term_col; |
|
uint8_t term_color; |
|
uint16_t *term_buf; |
|
}; |
|
|
|
// Color constants |
|
enum vga_color |
|
{ |
|
VGA_COLOR_BLACK = 0, |
|
VGA_COLOR_BLUE = 1, |
|
VGA_COLOR_GREEN = 2, |
|
VGA_COLOR_CYAN = 3, |
|
VGA_COLOR_RED = 4, |
|
VGA_COLOR_MAGENTA = 5, |
|
VGA_COLOR_BROWN = 6, |
|
VGA_COLOR_LIGHT_GREY = 7, |
|
VGA_COLOR_DARK_GREY = 8, |
|
VGA_COLOR_LIGHT_BLUE = 9, |
|
VGA_COLOR_LIGHT_GREEN = 10, |
|
VGA_COLOR_LIGHT_CYAN = 11, |
|
VGA_COLOR_LIGHT_RED = 12, |
|
VGA_COLOR_LIGHT_MAGENTA = 13, |
|
VGA_COLOR_LIGHT_BROWN = 14, |
|
VGA_COLOR_WHITE = 15 |
|
}; |
|
|
|
uint8_t make_color(enum vga_color fg, enum vga_color bg); |
|
uint16_t make_vgaEntry(char c, uint8_t color); |
|
void term_init(struct vgastate *state); |
|
void term_putChar(struct vgastate *state, char c); |
|
void term_putEntryAt(struct vgastate *state, char c, uint8_t color, size_t x, size_t y); |
|
void term_scroll(struct vgastate *state); |
|
void term_setColor(struct vgastate *state, uint8_t color); |
|
void term_test(struct vgastate *term); |
|
void term_writeStr(struct vgastate *state, const char *data); |
|
|
|
#endif
|
|
|