#include "stlio.h" static u8 COLOR_FG = Green; static u8 COLOR_BG = White; #define write_char(c) write_cell_fb(c, COLOR_FG, COLOR_BG) // We are assuming null-terminated strings here u32 strlen(char* buffer) { char* c; for(c = buffer; *c != '\0'; c++); // LULW return (u32)(c - buffer); } u32 write(const char* buffer, const u32 size) { u32 i; for(i = 0; i < size; i++) { // cheesy but whatever if(buffer[i] == '\n') { frame_buffer_newline(); } else { write_char(buffer[i]); } } return i; } u32 read(const u32 n) { // read n bytes from keyboard return n; } char* tohex(u32* data, u32 size) { static char ret[19] = {'\0'}; // 8 bytes + \0 ret[0] = '0'; ret[1] = 'x'; const char* map = "0123456789abcdef"; // muh 'tism switch(size) { // (unsigned)char/u8/s8 case (1): { u8 idx; u8 val = (u8)*data; for(u32 i = 0; i<2; i++ ) { idx = val & 0x0f; ret[19-i] = map[idx]; vall >>= 4; } break; } // s16/u16 case (2): { for(u32 i = 0; i<4; i++) { } break; } // s32/u64 case (4): { break; } // s64/u64 case (8): { break; } default: return "Bad-Size"; } return "sadf"; } void printf(char* fmt) { u32 i; u32 size = strlen(fmt); for(i = 0; i < size;i++) { char c = fmt[i]; switch(c) { case '\n': { frame_buffer_newline(); break; } case '%': { /* only do something if the situation calls for it * NOTE: this call might not do anything interesting */ if((i+1) < size) { write_char(c); i += 2; } break; } default: { write_char(c); } } } }