Some more text drawing logic

This commit is contained in:
greg
2015-11-25 21:56:39 -08:00
parent db8995b15f
commit 6c127273b3

View File

@@ -37,7 +37,8 @@ pub extern fn rust_handle_timer() {
global_timer_count += 1;
}
timer_callback(gtc);
//timer_callback(gtc);
timer_callback2(gtc);
}
#[no_mangle]
@@ -135,6 +136,19 @@ mod x86_asm {
}
}
fn timer_callback2(count: u64) {
use vga_buffer::*;
let color = Color::LightCyan;
if count % 500 == 0 {
checkerboard(color);
} else if count % 500 == 250 {
alt_checkerboard(color);
}
}
fn timer_callback(count: u64) {
use vga_buffer::{Color, print_u32, checkerboard, clear, move_cursor};
@@ -164,7 +178,7 @@ fn timer_callback(count: u64) {
#[no_mangle]
pub extern fn rust_main() {
use vga_buffer::{clear, checkerboard, Color};
//clear();
clear();
//checkerboard(Color::Red);
loop {
@@ -254,15 +268,21 @@ mod vga_buffer {
}
pub fn checkerboard(color: Color) {
checkerboard_logic(color, false);
}
pub fn alt_checkerboard(color: Color) {
checkerboard_logic(color, true);
}
fn checkerboard_logic(color: Color, alternate: bool) {
let active = ColorCode::new(color, color);
let blank = ColorCode::new(Color::White, Color::Black);
for i in 0..BUFFER_WIDTH {
for j in 0..BUFFER_HEIGHT {
if (i + j) % 2 == 0 {
write_to_coord(i, j, b' ', active);
write_to_coord(i, j, b' ', if alternate { active } else { blank } );
} else {
write_to_coord(i, j, b' ', blank);
write_to_coord(i, j, b' ', if alternate { blank } else { active });
}
}
}