diff --git a/source/boot.asm b/source/boot.asm index 9487b6e..77b96a9 100644 --- a/source/boot.asm +++ b/source/boot.asm @@ -1,4 +1,4 @@ -bits 32 ;; 32-bit +bits 32 ;; Specify 32 bit mode to NASM section .text align 4 dd 0x1BADB002 ;magic value @@ -9,11 +9,11 @@ global start extern kmain start: - cli ; disable interrupts - mov esp, stack_space ; set stack pointer - call kmain - hlt ; disable CPU after kernel exit + cli ; disable interrupts + mov esp, stack_space ; set stack pointer + call kmain ; call main kernel function + hlt ; disable CPU after kernel exit section .bss -resb 8192 ; 8KB of stack space +resb 8192 ; reserve 8KB for stack space stack_space: \ No newline at end of file diff --git a/source/screen.c b/source/screen.c index f28c6ab..e047004 100644 --- a/source/screen.c +++ b/source/screen.c @@ -2,25 +2,26 @@ #include "include/charcolors.h" char *vidmemptr = (char *)0xb8000; // pointer to video memory -unsigned int current_loc = 0; // current char location +unsigned int current_loc = 0; // current char location /* Writes chars to video memory */ void kprint(const char *str) { - unsigned int i = 0; - while (str[i] != '\0') - { - if (str[i] == '\n'){ - unsigned int line_size = CHAR_BYTE_SIZE * COLUMNS_IN_LINE; - current_loc = current_loc + (line_size - current_loc % (line_size)); - i++; - continue; - } - vidmemptr[current_loc++] = str[i++]; // print char - vidmemptr[current_loc++] = CHAR_FG_LIGHTGRAY; // light gray font - } + unsigned int i = 0; + while (str[i] != '\0') + { + if (str[i] == '\n') + { + unsigned int line_size = CHAR_BYTE_SIZE * COLUMNS_IN_LINE; + current_loc = current_loc + (line_size - current_loc % (line_size)); + i++; + continue; + } + vidmemptr[current_loc++] = str[i++]; // print char + vidmemptr[current_loc++] = CHAR_FG_LIGHTGRAY; // light gray font + } } /* @@ -28,18 +29,19 @@ kprint() variant with colored text */ void kprintcolored(const char *str, unsigned int color) { - unsigned int i = 0; - while (str[i] != '\0') - { - if (str[i] == '\n'){ // check for \n symbol - unsigned int line_size = CHAR_BYTE_SIZE * COLUMNS_IN_LINE; - current_loc = current_loc + (line_size - current_loc % (line_size)); - i++; - continue; - } - vidmemptr[current_loc++] = str[i++]; // print char - vidmemptr[current_loc++] = color; // set attrib-byte to user-defined color - } + unsigned int i = 0; + while (str[i] != '\0') + { + if (str[i] == '\n') + { // check for \n symbol + unsigned int line_size = CHAR_BYTE_SIZE * COLUMNS_IN_LINE; + current_loc = current_loc + (line_size - current_loc % (line_size)); + i++; + continue; + } + vidmemptr[current_loc++] = str[i++]; // print char + vidmemptr[current_loc++] = color; // set attrib-byte to user-defined color + } } /* @@ -47,10 +49,10 @@ Loop over the entire screen, filling video memory with empty chars */ void clear_screen(void) { - unsigned int i = 0; - while (i < SCREENSIZE) - { - vidmemptr[i++] = ' '; - vidmemptr[i++] = 0x07; - } + unsigned int i = 0; + while (i < SCREENSIZE) + { + vidmemptr[i++] = ' '; + vidmemptr[i++] = 0x07; + } } \ No newline at end of file