diff --git a/rust_experiments/src/lib.rs b/rust_experiments/src/lib.rs index e5d6d6a..ae489f0 100644 --- a/rust_experiments/src/lib.rs +++ b/rust_experiments/src/lib.rs @@ -7,24 +7,41 @@ extern crate rlibc; #[no_mangle] pub extern fn rust_main() { clear(); + checkerboard(vga_buffer::Color::Red); loop {} } fn clear() { + use vga_buffer::*; - let blank_color = vga_buffer::ColorCode::new( - vga_buffer::Color::White, - vga_buffer::Color::Black); - for i in 0..vga_buffer::BUFFER_WIDTH { - for j in 0..vga_buffer::BUFFER_HEIGHT { - vga_buffer::write_to_coord(i, j, b' ', blank_color); + let blank_color = ColorCode::new( Color::White, Color::Black); + for i in 0..BUFFER_WIDTH { + for j in 0..BUFFER_HEIGHT { + write_to_coord(i, j, b' ', blank_color); + } + } +} + +fn checkerboard(color: vga_buffer::Color) { + use vga_buffer::*; + + 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); + } else { + write_to_coord(i, j, b' ', blank); + } } } } mod vga_buffer { #[repr(u8)] + #[derive(Clone, Copy)] pub enum Color { Black = 0, Blue = 1,