CeDOS - Commit 86d6a6b3

Added graphics init function
Celina Kalus
Thu, 06 Apr 2023 21:57:30 +0200
5 files changed, 23 insertions(+), 3 deletions(-)
M include/cedos/drivers/graphics.hinclude/cedos/drivers/graphics.h

@@ -2,5 +2,6 @@ #ifndef GRAPHICS_H

#define GRAPHICS_H int graphics_set_mode(int mode); +int graphics_init(void); #endif
M src/apps/gmode.csrc/apps/gmode.c

@@ -8,7 +8,7 @@ int mode = 0;

int i = 0; while (args[i] != 0) { - char c = args[i]; + uint8_t c = (uint8_t)(args[i]); if (c >= 'a' && c <= 'f') { c -= 'a'; } else if (c >= 'A' && c <= 'F') {

@@ -24,6 +24,7 @@ mode += (int)(c);

i++; } - printf("Setting graphics mode %x...\n", mode); + printf("Setting graphics mode %i...\n", mode); + graphics_set_mode(mode); }
M src/apps/makefilesrc/apps/makefile

@@ -23,7 +23,7 @@

.PHONY: build build: $(APP_OBJECTS) $(GLOBAL_BUILD)/%.o: $(LOCAL_BUILD)/%.o $(OBJECTS) -> $(LD) -T link.txt -Map=$(LOG_DIR)/apps_mapfile.txt -N $^ -o $@ +> $(LD) -T link.txt -Map=$(LOG_DIR)/$(notdir $@)_mapfile.txt -N $^ -o $@ # > $(OBJCOPY) -I binary -O elf32-i386 $(GLOBAL_BUILD)/apps.o $(GLOBAL_BUILD)/apps_raw.o # > $(LD) -T link.txt -r $^ -o $(GLOBAL_BUILD)/apps.o --oformat elf32-i386
M src/kernel/drivers/graphics.csrc/kernel/drivers/graphics.c

@@ -1,8 +1,20 @@

#include "cedos/drivers/graphics.h" +#include "cedos/mm/paging.h" + +#include "string.h" +#include "linker.h" #include <stdint.h> extern void realmode_int10h(uint32_t eax, uint32_t ebx, uint32_t ecx); + +int graphics_init(void) { + VIRT_ADDR src = (VIRT_ADDR)((uint32_t)(KERNEL_VMA) + (uint32_t)(REALMD_LMA)); + uint32_t size = REALMD_SIZE; + VIRT_ADDR dest = (VIRT_ADDR)(REALMD_VMA); + + memcpy(dest, src, size); +} int graphics_set_mode(int mode) { realmode_int10h((uint32_t)(mode), 0, 0);
M src/kernel/main.csrc/kernel/main.c

@@ -1,5 +1,7 @@

#include "cedos/drivers/console.h" #include "cedos/drivers/keyboard.h" +#include "cedos/drivers/graphics.h" + #include "cedos/sched/sched.h" #include "cedos/sched/process.h"

@@ -65,6 +67,10 @@ printk("done.\n");

printk("Initializing root file system..."); FAT_init(); + printk("done."); + + printk("Initializing graphics..."); + graphics_init(); printk("done.");