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]
pub extern fn rust_handle_keyboard(x: u8) {
checkerboard(vga_buffer::Color::Green);
vga_buffer::print_u32(x as u32, 0);
use vga_buffer::{checkerboard, print_u32, Color};
checkerboard(Color::Green);
print_u32(x as u32, 0);
}
#[no_mangle]
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;
@@ -133,11 +135,12 @@ mod x86_asm {
}
fn timer_callback(count: u64) {
use vga_buffer::{Color, checkerboard};
if count % 1000 == 0 {
checkerboard(vga_buffer::Color::White);
checkerboard(Color::White);
}
if count % 1000 == 500 {
checkerboard(vga_buffer::Color::LightCyan);
checkerboard(Color::LightCyan);
}
vga_buffer::print_u32(count as u32, 0);
@@ -145,40 +148,16 @@ fn timer_callback(count: u64) {
#[no_mangle]
pub extern fn rust_main() {
use vga_buffer::{clear, checkerboard, Color};
clear();
checkerboard(vga_buffer::Color::Red);
checkerboard(Color::Red);
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
@@ -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)]
struct ScreenChar {
ascii_char: u8,