Keyboard handling working

This commit is contained in:
Fergal Moran
2020-06-08 20:09:49 +01:00
parent ea7e6ea4ee
commit 917efbf48b
12 changed files with 698 additions and 64 deletions

35
src/stdio.cpp Normal file
View File

@@ -0,0 +1,35 @@
#include "../include/stdio.h"
#include "../include/types.h"
void printf(const char* str) {
static uint16_t* VideoMemory = (uint16_t*)0xb8000;
static uint8_t x = 0, y = 0;
for (int i = 0; str[i] != '\0'; ++i) {
switch (str[i]) {
case '\n':
y++;
x = 0;
break;
default:
VideoMemory[80 * y + x] = (VideoMemory[80 * y + x] & 0xFF00) | str[i];
x++;
break;
}
//line feed after 80 chars (terminal width)
if (x >= 80) {
y++;
x = 0;
}
//we've reached max screen rows
if (y > 25) {
for (y = 0; y < 25; y++) {
for (x - 0; x < 80; x++) {
VideoMemory[80 * y + x] = (VideoMemory[80 * y + x] & 0xFF00) | ' ';
}
}
}
}
}