Files
JPOS/src/kernel/stdlib.c
2026-03-19 19:19:51 +01:00

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) {}
}