Some more text drawing logic
This commit is contained in:
@@ -37,7 +37,8 @@ pub extern fn rust_handle_timer() {
|
|||||||
global_timer_count += 1;
|
global_timer_count += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
timer_callback(gtc);
|
//timer_callback(gtc);
|
||||||
|
timer_callback2(gtc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[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) {
|
fn timer_callback(count: u64) {
|
||||||
use vga_buffer::{Color, print_u32, checkerboard, clear, move_cursor};
|
use vga_buffer::{Color, print_u32, checkerboard, clear, move_cursor};
|
||||||
|
|
||||||
@@ -164,7 +178,7 @@ fn timer_callback(count: u64) {
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern fn rust_main() {
|
pub extern fn rust_main() {
|
||||||
use vga_buffer::{clear, checkerboard, Color};
|
use vga_buffer::{clear, checkerboard, Color};
|
||||||
//clear();
|
clear();
|
||||||
//checkerboard(Color::Red);
|
//checkerboard(Color::Red);
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
@@ -254,15 +268,21 @@ mod vga_buffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn checkerboard(color: Color) {
|
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 active = ColorCode::new(color, color);
|
||||||
let blank = ColorCode::new(Color::White, Color::Black);
|
let blank = ColorCode::new(Color::White, Color::Black);
|
||||||
for i in 0..BUFFER_WIDTH {
|
for i in 0..BUFFER_WIDTH {
|
||||||
for j in 0..BUFFER_HEIGHT {
|
for j in 0..BUFFER_HEIGHT {
|
||||||
if (i + j) % 2 == 0 {
|
if (i + j) % 2 == 0 {
|
||||||
write_to_coord(i, j, b' ', active);
|
write_to_coord(i, j, b' ', if alternate { active } else { blank } );
|
||||||
} else {
|
} 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