From c36a3d19d2a6d7d9e64979069b57d1fed839aca0 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 27 Oct 2015 20:47:58 +0100 Subject: [PATCH 1/2] Add and use a clear_screen function --- src/lib.rs | 1 + src/vga_buffer.rs | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 686f2d24..5d469e52 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,6 +25,7 @@ mod vga_buffer; #[no_mangle] pub extern fn rust_main() { // ATTENTION: we have a very small stack and no guard page + vga_buffer::clear_screen(); println!("Hello World{}", "!"); loop{} diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index 6ae73ece..dee419cf 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -23,6 +23,12 @@ macro_rules! print { }); } +pub fn clear_screen() { + for _ in 0..BUFFER_HEIGHT { + println!(""); + } +} + #[allow(dead_code)] #[repr(u8)] pub enum Color { From e439e9eb5de5b2453f950fa5d03f43551fd9ec37 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 27 Oct 2015 20:48:14 +0100 Subject: [PATCH 2/2] Use a byte char instead of casting --- src/vga_buffer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index dee419cf..a07d05ed 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -91,7 +91,7 @@ impl Writer { fn clear_row(&mut self, row: usize) { let blank = ScreenChar { - ascii_character: ' ' as u8, + ascii_character: b' ', color_code: self.color_code, }; self.buffer().chars[row] = [blank; BUFFER_WIDTH];