From 67dc4a5d427f16f9a1df395207cce41e0af01cf8 Mon Sep 17 00:00:00 2001 From: greg Date: Tue, 10 Nov 2015 00:52:26 -0800 Subject: [PATCH] Added checkerboard --- rust_experiments/src/lib.rs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) 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,