Clean up lib.rs code

Moved functions around, etc.
This commit is contained in:
greg
2015-11-24 01:11:05 -08:00
parent 7cb8affb2d
commit ed76893b65

View File

@@ -16,14 +16,16 @@ pub extern fn rust_setup_PIC() {
#[no_mangle] #[no_mangle]
pub extern fn rust_handle_keyboard(x: u8) { pub extern fn rust_handle_keyboard(x: u8) {
checkerboard(vga_buffer::Color::Green); use vga_buffer::{checkerboard, print_u32, Color};
vga_buffer::print_u32(x as u32, 0); checkerboard(Color::Green);
print_u32(x as u32, 0);
} }
#[no_mangle] #[no_mangle]
pub extern fn rust_interrupt_handler() { pub extern fn rust_interrupt_handler() {
checkerboard(vga_buffer::Color::White); use vga_buffer::{checkerboard, Color};
checkerboard(Color::White);
} }
static mut global_timer_count: u64 = 0; static mut global_timer_count: u64 = 0;
@@ -133,11 +135,12 @@ mod x86_asm {
} }
fn timer_callback(count: u64) { fn timer_callback(count: u64) {
use vga_buffer::{Color, checkerboard};
if count % 1000 == 0 { if count % 1000 == 0 {
checkerboard(vga_buffer::Color::White); checkerboard(Color::White);
} }
if count % 1000 == 500 { if count % 1000 == 500 {
checkerboard(vga_buffer::Color::LightCyan); checkerboard(Color::LightCyan);
} }
vga_buffer::print_u32(count as u32, 0); vga_buffer::print_u32(count as u32, 0);
@@ -145,40 +148,16 @@ 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};
clear(); clear();
checkerboard(vga_buffer::Color::Red); checkerboard(Color::Red);
loop { loop {
} }
} }
fn clear() {
use vga_buffer::*;
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);
}
}
}
}
// 123 |3,2,1 // 123 |3,2,1
@@ -248,6 +227,30 @@ mod vga_buffer {
} }
} }
pub fn clear() {
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);
}
}
}
pub fn checkerboard(color: Color) {
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);
}
}
}
}
#[repr(C)] #[repr(C)]
struct ScreenChar { struct ScreenChar {
ascii_char: u8, ascii_char: u8,