Clean up lib.rs code
Moved functions around, etc.
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user