diff options
-rw-r--r-- | Common.mk | 2 | ||||
-rw-r--r-- | src/cpu/irq.c | 6 | ||||
-rw-r--r-- | src/graphics/lfb.c | 3 | ||||
-rw-r--r-- | src/graphics/lfb.h | 4 | ||||
-rw-r--r-- | src/sys/core.c | 27 | ||||
-rw-r--r-- | src/sys/timer.c | 4 |
6 files changed, 33 insertions, 13 deletions
@@ -60,12 +60,10 @@ obj/%.ao: src/%.S run: build/kernel.elf @echo Starting QEMU - @sleep 2 @${QEMU} -kernel $< ${QFLAGS} run-debug: build/kernel-g.elf @echo Starting QEMU in Debug Mode - @sleep 2 @${QEMU} -kernel $< -s -S ${QFLAGS} debug: build/kernel-g.elf build/kernel.list diff --git a/src/cpu/irq.c b/src/cpu/irq.c index a6ed5e4..1329534 100644 --- a/src/cpu/irq.c +++ b/src/cpu/irq.c @@ -44,8 +44,9 @@ void c_irq_handler(void) { if (off < 2048) { // Newline Case if (data == 0x0D) { + for(int i = off; i>=0;i--) + cmd[i] = 0x0; off = 0; - cmd[0] = 0x0; // Backspace Case } else if (data == 0x08 || data == 0x7F) { if (off > 0) { @@ -69,8 +70,9 @@ void c_irq_handler(void) { } } else if (off == 2048) { if (data == 0x0D) { + for(int i = off; i>=0;i--) + cmd[i] = 0x0; off = 0; - cmd[0] = 0x0; } else if (data == 0x08 || data == 0x7F) { if (off > 0) { off -= 1; diff --git a/src/graphics/lfb.c b/src/graphics/lfb.c index 5e307f4..5494dde 100644 --- a/src/graphics/lfb.c +++ b/src/graphics/lfb.c @@ -4,6 +4,7 @@ #include "../graphics/homer.h" #include "../graphics/glyphs.h" +#define GRAPHICS_LFB_C unsigned int width, height, pitch, isrgb; /* dimensions and channel order */ unsigned char *lfb; /* raw frame buffer address */ @@ -79,7 +80,7 @@ void lfb_showpicture() unsigned char *ptr=lfb; char *data=homer_data, pixel[4]; - ptr += (height-homer_height)/2*pitch + (width-homer_width)*2; + ptr = lfb + (height-homer_height)*pitch + (width-homer_width)*4; for(y=0;y<homer_height;y++) { for(x=0;x<homer_width;x++) { HEADER_PIXEL(data, pixel); diff --git a/src/graphics/lfb.h b/src/graphics/lfb.h index ac2e284..2361ec4 100644 --- a/src/graphics/lfb.h +++ b/src/graphics/lfb.h @@ -4,6 +4,10 @@ #define GG_MAX_X 128 #define GG_MAX_Y 96 +#ifndef GRAPHICS_LFB_C +extern unsigned int width, height, pitch, isrgb; /* dimensions and channel order */ +#endif + void lfb_init(); void lfb_showpicture(); diff --git a/src/sys/core.c b/src/sys/core.c index f5d7ca1..929c7a5 100644 --- a/src/sys/core.c +++ b/src/sys/core.c @@ -10,8 +10,6 @@ #include "../sys/timer.h" #include "../sys/power.h" -//extern void init_graphics(void); - #ifndef VERSION char* os_info_v = "?"; #else @@ -85,6 +83,7 @@ void output_irq_status(void) { } else { write_cstring(&g_Drawer, "Disabled", 0xFF0000); } + // Check TIMER IRQ write_string(&g_Drawer, "\nTIMER: "); if (ib_val & (1<<0)) { @@ -104,8 +103,8 @@ void output_irq_status(void) { void postinit() { // OS Info write_cstring(&g_Drawer, "DendritOS", 0xFF0000); - write_cstring(&g_Drawer, " v", 0x00FF00); - write_cstring(&g_Drawer, os_info_v, 0x00FF00); + write_cstring(&g_Drawer, " v", 0x00FFFF); + write_cstring(&g_Drawer, os_info_v, 0x00FFFF); write_string(&g_Drawer, " #"); if (lock_mutex(&exe_cnt_m, SYS_PID) == 0) { write_10(&g_Drawer, *(exe_cnt_m.addr)); @@ -114,10 +113,26 @@ void postinit() { // Commands write_string(&g_Drawer, "\nMonitor Ctrl-A m Exit: Ctrl-A x"); write_string(&g_Drawer, "\nTimer: Ctrl-T"); - // Timer Status - //uart_string("Timer: \033[92mEnabled\033[0m"); + // GPU IRQ Statuses write_string(&g_Drawer, "\n"); output_irq_status(); write_string(&g_Drawer, "\n> "); + + unsigned int x = g_Drawer.x; + unsigned int y = g_Drawer.y; + g_Drawer.x = 0; + g_Drawer.y = 12; + write_string(&g_Drawer, "VIDEO: "); + write_cstring(&g_Drawer, "Enabled ", 0x00FF00); + write_10(&g_Drawer, width); + write_string(&g_Drawer, "x"); + write_10(&g_Drawer, height); + if(isrgb) { + write_string(&g_Drawer, " RGB"); + } else { + write_string(&g_Drawer, " BGR"); + } + g_Drawer.x = x; + g_Drawer.y = y; } diff --git a/src/sys/timer.c b/src/sys/timer.c index 8e333c4..b82ac2c 100644 --- a/src/sys/timer.c +++ b/src/sys/timer.c @@ -24,8 +24,8 @@ void c_timer() { if (lock_mutex(&exe_cnt_m, SCHED_PID) == 0) { *(exe_cnt_m.addr) += 1; write_cstring(&g_Drawer, "DendritOS", 0xFF0000); - write_cstring(&g_Drawer, " v", 0x00FF00); - write_cstring(&g_Drawer, os_info_v, 0x00FF00); + write_cstring(&g_Drawer, " v", 0x00FFFF); + write_cstring(&g_Drawer, os_info_v, 0x00FFFF); write_string(&g_Drawer, " #"); write_10(&g_Drawer, *(exe_cnt_m.addr)); release_mutex(&exe_cnt_m, SCHED_PID); |