Some more text drawing logic
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user