diff --git a/include/fonts/UniCyrExt_8x16.psf b/include/fonts/UniCyrExt_8x16.psf new file mode 100644 index 0000000..fef3e29 Binary files /dev/null and b/include/fonts/UniCyrExt_8x16.psf differ diff --git a/include/fonts/UniCyr_8x16.psf b/include/fonts/UniCyr_8x16.psf deleted file mode 100644 index dcfd01d..0000000 Binary files a/include/fonts/UniCyr_8x16.psf and /dev/null differ diff --git a/makefile b/makefile index a7d9edf..39dbc63 100644 --- a/makefile +++ b/makefile @@ -26,8 +26,8 @@ PROGRAM_OBJECTS = $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(PROGRAM_SOURCES:.c=.o TOOLCHAIN_SRC = https://newos.org/toolchains/i386-elf-7.5.0-Linux-x86_64.tar.xz TOOLCHAIN_FILE = i386-elf-7.5.0-Linux-x86_64.tar.xz -FONT_OBJ = $(OBJ_DIR)/fonts/UniCyr_8x16.o -FONT_SRC = $(FONTS_DIR)/UniCyr_8x16.psf +FONT_OBJ = $(OBJ_DIR)/fonts/UniCyrExt_8x16.o +FONT_SRC = $(FONTS_DIR)/UniCyrExt_8x16.psf all: $(OBJ_DIR) kernel.elf programs diff --git a/src/drivers/framebuffer.c b/src/drivers/framebuffer.c index 0767638..302a723 100644 --- a/src/drivers/framebuffer.c +++ b/src/drivers/framebuffer.c @@ -18,13 +18,13 @@ void putpixel(uint32_t* fb, int pitch, int bpp, int x, int y, uint32_t color) void draw_char(unsigned short int c, int cx, int cy, uint32_t fg, uint32_t bg) { - PSF_font *font = (PSF_font*)&_binary_include_fonts_UniCyr_8x16_psf_start; + PSF_font *font = (PSF_font*)&_binary_include_fonts_UniCyrExt_8x16_psf_start; int bytesperline=(font->width+7)/8; if (unicode != NULL) { c = unicode[c]; } - unsigned char* glyph = (unsigned char*)&_binary_include_fonts_UniCyr_8x16_psf_start + font->headersize + (c>0&&cnumglyph?c:0)*font->bytesperglyph; + unsigned char* glyph = (unsigned char*)&_binary_include_fonts_UniCyrExt_8x16_psf_start + font->headersize + (c>0&&cnumglyph?c:0)*font->bytesperglyph; int offs = (cy * font->height * scanline) + @@ -54,7 +54,7 @@ void scroll() { serial_printf(3, "Scrolling...\r"); uint32_t bg_color = 0x00000000; - PSF_font *font = (PSF_font*)&_binary_include_fonts_UniCyr_8x16_psf_start; + PSF_font *font = (PSF_font*)&_binary_include_fonts_UniCyrExt_8x16_psf_start; int line_size = font->height * scanline; int framebuffer_size = scanline * font->height * (1080/font->height); diff --git a/src/drivers/framebuffer.h b/src/drivers/framebuffer.h index 84ded03..7786c10 100644 --- a/src/drivers/framebuffer.h +++ b/src/drivers/framebuffer.h @@ -9,7 +9,7 @@ #include extern int scanline; -extern char _binary_include_fonts_UniCyr_8x16_psf_start; +extern char _binary_include_fonts_UniCyrExt_8x16_psf_start; uint16_t* unicode; #define PIXEL uint32_t diff --git a/src/kernel/kheap.c b/src/kernel/kheap.c index 888ed1d..e99bdbe 100644 --- a/src/kernel/kheap.c +++ b/src/kernel/kheap.c @@ -56,6 +56,23 @@ void* malloc(size_t size) return NULL; } +void* calloc(size_t num, size_t size) +{ + size_t total_size = num*size; + void* ptr = malloc(total_size); + + if (ptr != NULL) + { + uint8_t* byte_ptr = (uint8_t*)ptr; + for (size_t i=0; i