50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
#include "../headers/stdlib.h"
|
|
#include "../headers/graphics.h"
|
|
|
|
uint32_t strlen32(char* str) {
|
|
uint32_t i = 0;
|
|
while (*str++ != 0) {i++;}
|
|
return i;
|
|
}
|
|
void strrev32(char* str) {
|
|
int c, i, j;
|
|
for (i = 0, j = strlen32(str)-1; i < j; i++, j--) {
|
|
c = str[i];
|
|
str[i] = str[j];
|
|
str[j] = c;
|
|
}
|
|
}
|
|
uint8_t uitoa32(uint32_t x, char* str) {
|
|
uint8_t i=0;
|
|
while (x > 0) {
|
|
str[i++] = x%10+'0';
|
|
x /= 10;
|
|
}
|
|
str[i] = 0;
|
|
strrev32(str);
|
|
return i;
|
|
}
|
|
void memcopy(void* dest, void* src, size_t size) {
|
|
for (size_t i=0;i<size;i++) {
|
|
((uint8_t*)dest)[i] = ((uint8_t*)src)[i];
|
|
}
|
|
}
|
|
void kpanic(char* msg) {
|
|
for (uint16_t x=0;x<320;x++) {
|
|
for (uint16_t y=0;y<200;y++) {
|
|
VGA_setpix(x,y,(VGA_pixel){0x00,0xFF,0x00});
|
|
}
|
|
}
|
|
size_t x=0;
|
|
size_t y=0;
|
|
while (*msg != 0) {
|
|
if (*msg == '\n') {
|
|
y ++;
|
|
x = 0;
|
|
msg ++;
|
|
continue;
|
|
}
|
|
_VGA_renchar(x++,y,*msg++,(uint8_t[]){0xFF,0xFF,0xFF},(uint8_t[]){0x00,0xFF,0x00});
|
|
}
|
|
while (1) {}
|
|
} |