diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-05-01 18:28:00 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-05-01 18:28:00 +0200 |
commit | d1cefde0065be153be3b66c5729eac3b6869155b (patch) | |
tree | 340b42531cbeb74f1bcf2f581ed913b888b96584 /src/kernel.c | |
parent | a581da207d04c11b588bbad05ba70a8cfe2d3d93 (diff) | |
download | abaos-d1cefde0065be153be3b66c5729eac3b6869155b.tar.gz abaos-d1cefde0065be153be3b66c5729eac3b6869155b.tar.bz2 |
added some primitive VGA functions and rewrote kernel.c greeting
Diffstat (limited to 'src/kernel.c')
-rw-r--r-- | src/kernel.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/src/kernel.c b/src/kernel.c index a73ead6..bdca5e7 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -4,33 +4,33 @@ void entry( void ) { - volatile uint8_t *VIDEO_MEMORY = (uint8_t *)0xb8000; - - *VIDEO_MEMORY = 'H'; - *(VIDEO_MEMORY+2) = 'E'; - *(VIDEO_MEMORY+4) = 'L'; - *(VIDEO_MEMORY+6) = 'L'; - *(VIDEO_MEMORY+8) = 'O'; - *(VIDEO_MEMORY+10) = '_'; + vga_t vga; + vga_init( &vga ); - // clang 4.0.0 eliminates the 'bar' part of the loop, unless - // we declate 'bar' volatile? + vga_set_color( &vga, VGA_COLOR_LIGHT_GREY ); + vga_set_background_color( &vga, VGA_COLOR_BLACK ); + + vga_put_char( &vga, 0, 0, 'A' ); + vga_put_char( &vga, 1, 0, 'B' ); + vga_put_char( &vga, 2, 0, 'A' ); + vga_put_char( &vga, 3, 0, 'O' ); + vga_put_char( &vga, 4, 0, 'S' ); + volatile uint8_t bar[] = "\\|/-"; - int pos = 10; + int pos = 5; int i = 0; for( i = 0; i < 10000; i++ ) { if( i % 1000 == 0 ) { - *(VIDEO_MEMORY+pos) = '.'; - *(VIDEO_MEMORY+pos+1) = 0x07; - pos += 2; + vga_put_char( &vga, pos, 0, '.' ); + pos++; } - *(VIDEO_MEMORY+pos) = bar[i%4]; - *(VIDEO_MEMORY+pos+1) = 0x07; - for( int j = 0; j < 1000; j++ ) { + vga_put_char( &vga, pos, 0, bar[i%4] ); + for( int j = 0; j < 10000; j++ ) { } } + vga_put_char( &vga, pos, 0, '.' ); - vga_t vga; - vga_init( &vga ); + vga_set_color( &vga, VGA_COLOR_WHITE ); + vga_set_background_color( &vga, VGA_COLOR_RED ); vga_clear_screen( &vga ); } |