summaryrefslogtreecommitdiff
path: root/src/kernel/kernel.c
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-06-14 20:48:16 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-06-14 20:48:16 +0200
commit8fb9efc08388d3a866cfdf911b07e372de24b556 (patch)
tree3afaf07e27fb37bd5a88b187d505137abdaa817b /src/kernel/kernel.c
parent7a3b38c6462587657f20d684a833f0264de230b5 (diff)
downloadabaos-8fb9efc08388d3a866cfdf911b07e372de24b556.tar.gz
abaos-8fb9efc08388d3a866cfdf911b07e372de24b556.tar.bz2
got switch to graphical VGA mode working
Diffstat (limited to 'src/kernel/kernel.c')
-rw-r--r--src/kernel/kernel.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c
index 3c520d6..41c2b4a 100644
--- a/src/kernel/kernel.c
+++ b/src/kernel/kernel.c
@@ -17,6 +17,9 @@
#include "kernel.h"
+// TODO: move away from main!
+#include "drivers/video/vga.h"
+
static jmp_buf panic_jmp_buf;
static void handle_keyboard_event( keyboard_event_t *event, void *context );
@@ -93,14 +96,27 @@ void kernel_main( void )
pci_controller_init( &pci_controller );
pci_controller_scan_and_register( &pci_controller, &driver_manager, &interrupt );
+ // TODO: move away in pci.c or in a dynamic loader module later
+ vga_t vga;
+ vga_init( &vga, NULL );
+ driver_manager_add_driver( &driver_manager, (driver_t *)&vga );
+
puts( "Activating drivers" );
driver_manager_activate_all( &driver_manager );
+ if( vga_set_mode( &vga, vga_make_mode( 320, 200, 8 ) ) ) {
+// vga_set_pixel( &vga, 1, 1, vga_make_RGB( 0x00, 0x00, 0xA8 ) );
+ vga_draw_rectangle( &vga, 0, 0, 319, 199, vga_make_RGB( 0x00, 0x00, 0xA8 ) );
+ }
+
+ // TODO: later, disable VGA text console in stdio and add the
+ // graphical one..
+
puts( "Enabling interrupt handing now.." );
interrupts_enable( );
puts( "Running.." );
-
+
// endless loop doing nothing, later we have to get events
// here from queues and for instance print characters received
// from the keyboard to stdout