summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-12-09 01:47:36 +0100
committerMichal Idziorek <m.i@gmx.at>2014-12-09 01:47:36 +0100
commit7e965f276c47d29969f5470533d40df03536d190 (patch)
tree36f159e7a8ae31274a51e721d00ce6d9a40d63ba
parent40aef7cf75fe26aa34207bc2afa2bfaa211e354f (diff)
experimenting with VESA modes
-rw-r--r--kernel/config.h4
-rw-r--r--kernel/console.c4
-rw-r--r--kernel/console.h3
-rw-r--r--kernel/kernel.c12
4 files changed, 14 insertions, 9 deletions
diff --git a/kernel/config.h b/kernel/config.h
index 2e2a169..26d056d 100644
--- a/kernel/config.h
+++ b/kernel/config.h
@@ -8,8 +8,8 @@
#define FOOLOS_CONFIG_H
#define FOOLOS_CONSOLE_AUTOBREAK // add newline automatically at end of line
-#define FOOLOS_LOG_OFF // do not log anything
-#define FOOLOS_CONSOLE // otherwise VESA will be used!
+//#define FOOLOS_LOG_OFF // do not log anything
+//#define FOOLOS_CONSOLE // otherwise VESA will be used!
#define FOOLSOS_SHOW_VESAMODES
#define MEM_PRINT_MEMORYMAP
#define LOG_BUF_SIZE 4069
diff --git a/kernel/console.c b/kernel/console.c
index e0e70a3..f363d9e 100644
--- a/kernel/console.c
+++ b/kernel/console.c
@@ -13,11 +13,12 @@
#include "video/console.h"
-void console_init(){
+uint32_t console_init(){
scr_clear();
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init console");
int inode_nr=ext2_filename_to_inode(EXT2_RAM_ADDRESS,"/binfont.bin");
if(inode_nr!=-1)ext2_inode_content(EXT2_RAM_ADDRESS,inode_nr,0x8000000,0xffff); // load font;
+ return 0;
}
void console_del_char(){scr_backspace();}
void console_put_char_gray(char c){scr_put_char(c,SCR_GRAY2);}
@@ -38,6 +39,7 @@ void console_init(){
int inode_nr=ext2_filename_to_inode(EXT2_RAM_ADDRESS,"/binfont.bin");
if(inode_nr!=-1)ext2_inode_content(EXT2_RAM_ADDRESS,inode_nr,0x1300000,0xffff); // load font;
uint32_t vesa_physbase=vesa_init(0xb000,0xc000,0x1300000);
+ return vesa_physbase;
}
void console_del_char(char c){PutConsoleChar('*',0xffffff);}
diff --git a/kernel/console.h b/kernel/console.h
index 8d19f77..e68a3b7 100644
--- a/kernel/console.h
+++ b/kernel/console.h
@@ -1,8 +1,9 @@
#ifndef CONSOLE_H
#define CONSOLE_H
+#include <stdint.h>
-void console_init();
+uint32_t console_init();
void console_put_char_white(char);
void console_put_char_red(char);
void console_put_char_green(char);
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 3bf238e..19c9611 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -43,18 +43,20 @@ void kernel_main(uint32_t initial_stack, int mp)
mem_init((physical_address)0xa001,(int)(*((uint16_t *)(0xa000))));
//
- // Activate Virtual Memory (paging)
- pdirectory *dir=vmem_init();
-
- //
// init output to screen
//
- console_init();
+ uint32_t physbase=console_init();
+
+ //
+ // Activate Virtual Memory (paging)
+ pdirectory *dir=vmem_init();
// log buffered messages to console
log_log();
+ while(1);
+
//
// Setup Interrupts (code segment: 0x08)
//