summaryrefslogtreecommitdiff
path: root/src/kernel.c
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-05-01 18:28:00 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-05-01 18:28:00 +0200
commitd1cefde0065be153be3b66c5729eac3b6869155b (patch)
tree340b42531cbeb74f1bcf2f581ed913b888b96584 /src/kernel.c
parenta581da207d04c11b588bbad05ba70a8cfe2d3d93 (diff)
downloadabaos-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.c38
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 );
}