mirror of
https://github.com/vivier/EMILE.git
synced 2025-01-10 14:30:09 +00:00
Add vga_cursor_save(), vga_cursor_save() and correct backspace
This commit is contained in:
parent
5e7b54d562
commit
83f79b299b
29
second/vga.c
29
second/vga.c
@ -60,8 +60,10 @@ static unsigned char bits_depth8[2] = {
|
|||||||
|
|
||||||
static vga_handler_t vga;
|
static vga_handler_t vga;
|
||||||
|
|
||||||
#define CURSOR_POS 14
|
static unsigned long cursor_save_x, cursor_save_y;
|
||||||
#define CURSOR_HIGH 2
|
|
||||||
|
#define CURSOR_POS 0
|
||||||
|
#define CURSOR_HIGH 16
|
||||||
|
|
||||||
static int cursor_on = 0;
|
static int cursor_on = 0;
|
||||||
static int cursor_state = 0;
|
static int cursor_state = 0;
|
||||||
@ -122,6 +124,20 @@ void vga_cursor_off(void)
|
|||||||
vga_cursor(0);
|
vga_cursor(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vga_cursor_save(void)
|
||||||
|
{
|
||||||
|
cursor_save_x = vga.pos_x;
|
||||||
|
cursor_save_y = vga.pos_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void vga_cursor_restore(void)
|
||||||
|
{
|
||||||
|
vga_cursor(0);
|
||||||
|
vga.pos_x = cursor_save_x;
|
||||||
|
vga.pos_y = cursor_save_y;
|
||||||
|
vga_cursor(1);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
draw_byte_1(unsigned char *glyph, unsigned char *base)
|
draw_byte_1(unsigned char *glyph, unsigned char *base)
|
||||||
{
|
{
|
||||||
@ -380,7 +396,6 @@ vga_init()
|
|||||||
vga.siz_h = vga.height / 16;
|
vga.siz_h = vga.height / 16;
|
||||||
|
|
||||||
vga_clear();
|
vga_clear();
|
||||||
vga_cursor_on();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -397,7 +412,13 @@ vga_put(char c)
|
|||||||
vga.pos_y++;
|
vga.pos_y++;
|
||||||
break;
|
break;
|
||||||
case '\b':
|
case '\b':
|
||||||
vga.pos_x--;
|
if (vga.pos_x > 0)
|
||||||
|
vga.pos_x--;
|
||||||
|
else if (vga.pos_y > 0)
|
||||||
|
{
|
||||||
|
vga.pos_y--;
|
||||||
|
vga.pos_x = vga.siz_w - 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
draw_byte((unsigned char)c, vga.pos_x++, vga.pos_y);
|
draw_byte((unsigned char)c, vga.pos_x++, vga.pos_y);
|
||||||
|
@ -14,6 +14,8 @@ extern void vga_print(char *s);
|
|||||||
extern void vga_cursor_refresh(void);
|
extern void vga_cursor_refresh(void);
|
||||||
extern void vga_cursor_on(void);
|
extern void vga_cursor_on(void);
|
||||||
extern void vga_cursor_off(void);
|
extern void vga_cursor_off(void);
|
||||||
|
extern void vga_cursor_save(void);
|
||||||
|
extern void vga_cursor_restore(void);
|
||||||
|
|
||||||
extern unsigned long vga_get_videobase();
|
extern unsigned long vga_get_videobase();
|
||||||
extern unsigned long vga_get_row_bytes();
|
extern unsigned long vga_get_row_bytes();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user