From 8a68cf3b301e9d6f40213535524dc15c4d23c65c Mon Sep 17 00:00:00 2001 From: xamidev <121681048+xamidev@users.noreply.github.com> Date: Fri, 27 Sep 2024 20:03:24 +0200 Subject: [PATCH] Add: calloc --- include/fonts/UniCyrExt_8x16.psf | Bin 0 -> 9491 bytes include/fonts/UniCyr_8x16.psf | Bin 4931 -> 0 bytes makefile | 4 ++-- src/drivers/framebuffer.c | 6 +++--- src/drivers/framebuffer.h | 2 +- src/kernel/kheap.c | 17 +++++++++++++++++ src/kernel/kheap.h | 1 + src/kernel/kmain.c | 4 ++++ 8 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 include/fonts/UniCyrExt_8x16.psf delete mode 100644 include/fonts/UniCyr_8x16.psf diff --git a/include/fonts/UniCyrExt_8x16.psf b/include/fonts/UniCyrExt_8x16.psf new file mode 100644 index 0000000000000000000000000000000000000000..fef3e29a3db2f4edd7af6a2de60cbaa11bdf67ae GIT binary patch literal 9491 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 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