From 7ce2898b6ec2222f16991292a0e968fe0e60d2e7 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Thu, 29 Mar 2018 09:49:38 -0700 Subject: [PATCH] Test for incoming data pointer in kernel_main --- src/modules/main/debug.s | 5 ++- src/modules/main/main.c | 12 ++----- src/modules/main/vga.c | 67 ---------------------------------------- src/modules/main/vga.h | 42 ------------------------- 4 files changed, 4 insertions(+), 122 deletions(-) delete mode 100644 src/modules/main/vga.c delete mode 100644 src/modules/main/vga.h diff --git a/src/modules/main/debug.s b/src/modules/main/debug.s index 14c43d4..187f6b7 100644 --- a/src/modules/main/debug.s +++ b/src/modules/main/debug.s @@ -3,9 +3,8 @@ section .text global do_the_set_registers do_the_set_registers: mov rax, 0xdeadbeef0badc0de - mov rbx, 0xdeadbeef0badc0de - mov rcx, 0xdeadbeef0badc0de - mov rdx, 0xdeadbeef0badc0de + mov r8, rcx + mov r9, rdi global _halt _halt: diff --git a/src/modules/main/main.c b/src/modules/main/main.c index cca5512..33c7182 100644 --- a/src/modules/main/main.c +++ b/src/modules/main/main.c @@ -1,15 +1,7 @@ -#include "vga.h" - void do_the_set_registers(); void -kernel_main() +kernel_main(void *header) { - volatile register int foo = 0x1a1b1c10; - volatile register int bar = 0; - - terminal_initialize(5); - terminal_writestring("YES HELLO THIS IS KERNEL"); - - do_the_set_registers(); + do_the_set_registers(header); } diff --git a/src/modules/main/vga.c b/src/modules/main/vga.c deleted file mode 100644 index 3ebad31..0000000 --- a/src/modules/main/vga.c +++ /dev/null @@ -1,67 +0,0 @@ -#include "vga.h" - -static const size_t VGA_WIDTH = 80; -static const size_t VGA_HEIGHT = 25; - -static size_t terminal_row; -static size_t terminal_column; -static uint8_t terminal_color; - -/* Note the use of the volatile keyword to prevent the compiler from eliminating dead stores. */ -static volatile uint16_t *terminal_buffer; - -uint8_t vga_entry_color(enum vga_color fg, enum vga_color bg); -uint16_t vga_entry(unsigned char uc, uint8_t color); - -static size_t -strlen(const char *str) -{ - size_t len = 0; - while (str[len++]) - ; - return len; -} - -void -terminal_initialize(size_t startrow) -{ - terminal_row = startrow; - terminal_column = 0; - terminal_color = vga_entry_color(VGA_COLOR_LIGHT_GREY, VGA_COLOR_BLACK); - terminal_buffer = (uint16_t *)0xB8000; -} - -void -terminal_setcolor(uint8_t color) -{ - terminal_color = color; -} - -void -terminal_putentryat(char c, uint8_t color, size_t x, size_t y) -{ - const size_t index = y * VGA_WIDTH + x; - terminal_buffer[index] = vga_entry(c, color); -} - -void -terminal_putchar(char c) -{ - terminal_putentryat(c, terminal_color, terminal_column, terminal_row); - if (++terminal_column == VGA_WIDTH) { - terminal_column = 0; - if (++terminal_row == VGA_HEIGHT) terminal_row = 0; - } -} - -void -terminal_write(const char *data, size_t size) -{ - for (size_t i = 0; i < size; i++) terminal_putchar(data[i]); -} - -void -terminal_writestring(const char *data) -{ - terminal_write(data, strlen(data)); -} diff --git a/src/modules/main/vga.h b/src/modules/main/vga.h deleted file mode 100644 index 07584bd..0000000 --- a/src/modules/main/vga.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -#include -#include - -/* Hardware text mode color constants. */ -enum vga_color { - VGA_COLOR_BLACK = 0, - VGA_COLOR_BLUE = 1, - VGA_COLOR_GREEN = 2, - VGA_COLOR_CYAN = 3, - VGA_COLOR_RED = 4, - VGA_COLOR_MAGENTA = 5, - VGA_COLOR_BROWN = 6, - VGA_COLOR_LIGHT_GREY = 7, - VGA_COLOR_DARK_GREY = 8, - VGA_COLOR_LIGHT_BLUE = 9, - VGA_COLOR_LIGHT_GREEN = 10, - VGA_COLOR_LIGHT_CYAN = 11, - VGA_COLOR_LIGHT_RED = 12, - VGA_COLOR_LIGHT_MAGENTA = 13, - VGA_COLOR_LIGHT_BROWN = 14, - VGA_COLOR_WHITE = 15, -}; - -inline uint8_t -vga_entry_color(enum vga_color fg, enum vga_color bg) -{ - return fg | bg << 4; -} - -inline uint16_t -vga_entry(unsigned char uc, uint8_t color) -{ - return (uint16_t)uc | (uint16_t)color << 8; -} - -void terminal_initialize(size_t rowstart); -void terminal_setcolor(uint8_t color); -void terminal_putentryat(char c, uint8_t color, size_t x, size_t y); -void terminal_putchar(char c); -void terminal_write(const char *data, size_t size); -void terminal_writestring(const char *data);