Added checkerboard

This commit is contained in:
greg
2015-11-10 00:52:26 -08:00
parent 638056117f
commit 67dc4a5d42

View File

@@ -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,