53 lines
1.0 KiB
C
53 lines
1.0 KiB
C
#include "../includes/io.h"
|
|
#include "../includes/kernel.h"
|
|
|
|
//char* msg = "Hello, World!";
|
|
|
|
void kmain()
|
|
{
|
|
draw_s("Hello, World!", 2, 9);/*
|
|
write_screen(0, "k", 2, 9);
|
|
write_screen(2, 'e', 2, 9);
|
|
write_screen(4, 'r', 2, 9);
|
|
write_screen(6, 'n', 2, 9);
|
|
write_screen(8, 'e', 2, 9);
|
|
write_screen(10, 'l', 2, 9);
|
|
write_screen(12, ' ', 2, 9);
|
|
write_screen(14, '3', 2, 9);
|
|
//asm("hlt");*/
|
|
}
|
|
|
|
void write_screen(unsigned int i, char c, unsigned char fg, unsigned char bg)
|
|
{
|
|
char *fb = (char *) 0x000B8000;
|
|
fb[i] = c;
|
|
fb[i + 1] = ((fg & 0x0F) << 4) | (bg & 0x0F);
|
|
}
|
|
|
|
void move(unsigned short pos)
|
|
{
|
|
outb(0x3D4, 14);
|
|
outb(0x3D5, ((pos >> 8 ) & 0x00FF));
|
|
outb(0x3D4, 15);
|
|
outb(0x3D5, pos & 0x00FF);
|
|
}
|
|
|
|
void draw_s(char* string, unsigned char fg, unsigned char bg)
|
|
{
|
|
char *video_buffer = 0x000B8000;
|
|
for(int i = 0; i < strlen(string); i++)
|
|
{
|
|
video_buffer[i] = string[i];
|
|
video_buffer[i+1] = ((fg & 0x0f) << 4) | (bg & 0x0F);
|
|
}
|
|
}
|
|
|
|
int strlen(char* string)
|
|
{
|
|
int len = 0;
|
|
|
|
for(int i = 0; string[i] != '\0'; i++) len++;
|
|
|
|
return len;
|
|
}
|