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]
|
#[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,
|
||||||
|
|||||||
Reference in New Issue
Block a user