Add cursor to VGA driver
This commit is contained in:
parent
cb16df6240
commit
f1334567e1
@ -15,6 +15,22 @@ void vga_set_char(int x,int y,char c) {
|
||||
screen[xy_to_indx(x,y)+1]=(bg_color<<4)|fg_color;
|
||||
}
|
||||
|
||||
void vga_clear() {
|
||||
for (int y=0;y<height;y++) {
|
||||
for (int x=0;x<width;x++) {
|
||||
vga_set_char(x,y,' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void set_cursor(int x,int y) {
|
||||
int pos=(x+(y*width));
|
||||
port_byte_out(0x3D4,0xF);
|
||||
port_byte_out(0x3D5,pos&0xFF);
|
||||
port_byte_out(0x3D4,0xE);
|
||||
port_byte_out(0x3D5,(pos&0xFF00)>>8);
|
||||
}
|
||||
|
||||
void vga_init(text_fb_info framebuffer_info) {
|
||||
x=0;
|
||||
y=0;
|
||||
@ -23,17 +39,14 @@ void vga_init(text_fb_info framebuffer_info) {
|
||||
screen=framebuffer_info.address;
|
||||
width=framebuffer_info.width;
|
||||
height=framebuffer_info.height;
|
||||
port_byte_out(0x3D4,0xA);
|
||||
port_byte_out(0x3D5,(port_byte_in(0x3D5)&0xC0)|14);
|
||||
port_byte_out(0x3D4,0xB);
|
||||
port_byte_out(0x3D5,(port_byte_in(0x3D5)&0xE0)|15);
|
||||
set_cursor(0,0);
|
||||
vga_clear();
|
||||
}
|
||||
|
||||
void vga_clear() {
|
||||
for (int y=0;y<height;y++) {
|
||||
for (int x=0;x<width;x++) {
|
||||
vga_set_char(x,y,' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void vga_write_string(const char* string) {
|
||||
for (int i=0;i<strlen(string);i++) {
|
||||
char c=string[i];
|
||||
@ -57,4 +70,5 @@ void vga_write_string(const char* string) {
|
||||
memcpy(&screen,pg1,xy_to_indx(0,25));
|
||||
}
|
||||
}
|
||||
set_cursor(x,y);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user