summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-05-06 22:06:51 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-05-06 22:06:51 +0200
commit356f485c9cb5f5aa94e39ad25e9e0345682db722 (patch)
treee9e64e3d7b7e1580bf376b627667c8f1bda00f26 /src
parent57d99324697ce98059fbfbea6d424aa0ef67fad0 (diff)
downloadabaos-356f485c9cb5f5aa94e39ad25e9e0345682db722.tar.gz
abaos-356f485c9cb5f5aa94e39ad25e9e0345682db722.tar.bz2
started to output propert kernel output in proper place
Diffstat (limited to 'src')
-rw-r--r--src/kernel.c52
-rw-r--r--src/vga.c16
-rw-r--r--src/vga.h3
3 files changed, 44 insertions, 27 deletions
diff --git a/src/kernel.c b/src/kernel.c
index ce6bb1a..a18e2d2 100644
--- a/src/kernel.c
+++ b/src/kernel.c
@@ -9,43 +9,43 @@ void entry( void )
vga_set_color( &vga, VGA_COLOR_LIGHT_GREY );
vga_set_background_color( &vga, VGA_COLOR_BLACK );
- // again volatile? const results in garbage on clang
- volatile char msg[] = "ABAOS";
- vga_put_string_at( &vga, 0, 0, (const char *)msg );
- // doesn't work
- //~ vga_put_string_at( &vga, 0, 1, "ABAOS2" );
+
+ volatile char msg[] = "ABAOS 0.0.1 STARTING";
+ vga_put_string( &vga, (const char *)msg );
// clang 4.0.0 needs volatile otherwise it takes a random value
// from the register in the second vga_put_char_at below??!
volatile char bar[] = "\\|/-";
- int pos = 5;
+ int y_pos = vga_get_cursor_y( &vga );
+ int x_pos = vga_get_cursor_x( &vga );
int i = 0;
for( i = 0; i < 10000; i++ ) {
if( i % 1000 == 0 ) {
- vga_put_char_at( &vga, pos, 0, '.' );
- pos++;
+ vga_put_char_at( &vga, x_pos, y_pos, '.' );
+ x_pos++;
}
- vga_put_char_at( &vga, pos, 0, bar[i%4] );
+ vga_put_char_at( &vga, x_pos, y_pos, bar[i%4] );
for( int j = 0; j < 1500; j++ ) {
}
}
- vga_put_char_at( &vga, pos, 0, '.' );
+ vga_put_char_at( &vga, x_pos, y_pos, '.' );
+ vga_put_newline( &vga );
- vga_set_color( &vga, VGA_COLOR_WHITE );
- vga_set_background_color( &vga, VGA_COLOR_RED );
- vga_clear_screen( &vga );
+ //~ vga_set_color( &vga, VGA_COLOR_WHITE );
+ //~ vga_set_background_color( &vga, VGA_COLOR_RED );
+ //~ vga_clear_screen( &vga );
- for( int i = 0; i < 50; i++ ) {
- for( int j = 0; j < i; j++ ) {
- vga_put_char( &vga, '-' );
- }
- vga_put_char( &vga, '>' );
- vga_put_string( &vga, (const char *)msg );
- vga_put_newline( &vga );
- }
- for( int j = 0; j < 50; j++ ) {
- vga_put_char( &vga, '-' );
- }
- vga_put_char( &vga, '>' );
- vga_put_string( &vga, (const char *)msg );
+ //~ for( int i = 0; i < 50; i++ ) {
+ //~ for( int j = 0; j < i; j++ ) {
+ //~ vga_put_char( &vga, '-' );
+ //~ }
+ //~ vga_put_char( &vga, '>' );
+ //~ vga_put_string( &vga, (const char *)msg );
+ //~ vga_put_newline( &vga );
+ //~ }
+ //~ for( int j = 0; j < 50; j++ ) {
+ //~ vga_put_char( &vga, '-' );
+ //~ }
+ //~ vga_put_char( &vga, '>' );
+ //~ vga_put_string( &vga, (const char *)msg );
}
diff --git a/src/vga.c b/src/vga.c
index a1230e4..92114d3 100644
--- a/src/vga.c
+++ b/src/vga.c
@@ -19,7 +19,7 @@ void vga_init( vga_t *vga )
vga->background_color = VGA_COLOR_BLACK;
// TODO: get current position from VGA hardware
- //~ vga_set_cursor( vga, 0, 0 );
+ vga_set_cursor_from_hardware( vga );
};
void vga_clear_screen( vga_t *vga )
@@ -43,6 +43,20 @@ void vga_set_cursor( vga_t *vga, const int x, const int y )
vga->cursor_y = y;
}
+void vga_set_cursor_from_hardware( vga_t *vga )
+{
+}
+
+int vga_get_cursor_x( vga_t *vga )
+{
+ return vga->cursor_x;
+}
+
+int vga_get_cursor_y( vga_t *vga )
+{
+ return vga->cursor_y;
+}
+
void vga_set_color( vga_t *vga, const vga_color_t color )
{
vga->color = color;
diff --git a/src/vga.h b/src/vga.h
index 5ecd88e..70f9d53 100644
--- a/src/vga.h
+++ b/src/vga.h
@@ -37,6 +37,9 @@ typedef struct vga_t {
void vga_init( vga_t *vga );
void vga_clear_screen( vga_t *vga );
void vga_set_cursor( vga_t *vga, const int x, const int y );
+void vga_set_cursor_from_hardware( vga_t *vga );
+int vga_get_cursor_x( vga_t *vga );
+int vga_get_cursor_y( vga_t *vga );
void vga_set_color( vga_t *vga, const vga_color_t color );
void vga_set_background_color( vga_t *vga, const vga_color_t color );
void vga_put_char_at( vga_t *vga, const int x, const int y, const char c );