More moving things around and deleting obsolete code
This commit is contained in:
@@ -8,16 +8,36 @@ extern crate std;
|
|||||||
|
|
||||||
extern crate rlibc;
|
extern crate rlibc;
|
||||||
|
|
||||||
extern {
|
/* externs */
|
||||||
fn asm_printchar() -> u32;
|
|
||||||
fn call_interrupt();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern fn rust_setup_PIC() {
|
pub extern fn rust_setup_PIC() {
|
||||||
PIC::setup_PIC();
|
PIC::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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern fn rust_interrupt_handler() {
|
||||||
|
checkerboard(vga_buffer::Color::White);
|
||||||
|
}
|
||||||
|
|
||||||
|
static mut global_timer_count: u64 = 0;
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern fn rust_handle_timer() {
|
||||||
|
let gtc = unsafe { global_timer_count };
|
||||||
|
unsafe {
|
||||||
|
global_timer_count += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
timer_callback(gtc);
|
||||||
|
}
|
||||||
|
|
||||||
mod PIC {
|
mod PIC {
|
||||||
use x86_asm::{outb, inb, iowait};
|
use x86_asm::{outb, inb, iowait};
|
||||||
|
|
||||||
@@ -84,29 +104,6 @@ mod x86_asm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
|
||||||
pub extern fn rust_interrupt_handler() {
|
|
||||||
checkerboard(vga_buffer::Color::White);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[no_mangle]
|
|
||||||
pub extern fn rust_handle_keyboard(x: u8) {
|
|
||||||
checkerboard(vga_buffer::Color::Green);
|
|
||||||
vga_buffer::print_u32(x as u32, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static mut global_timer_count: u64 = 0;
|
|
||||||
|
|
||||||
#[no_mangle]
|
|
||||||
pub extern fn rust_handle_timer() {
|
|
||||||
let gtc = unsafe { global_timer_count };
|
|
||||||
unsafe {
|
|
||||||
global_timer_count += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
timer_callback(gtc);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn timer_callback(count: u64) {
|
fn timer_callback(count: u64) {
|
||||||
if count % 1000 == 0 {
|
if count % 1000 == 0 {
|
||||||
checkerboard(vga_buffer::Color::White);
|
checkerboard(vga_buffer::Color::White);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
global long_mode_start
|
global long_mode_start
|
||||||
global asm_printchar
|
global asm_printchar
|
||||||
global call_interrupt
|
|
||||||
extern rust_interrupt_handler
|
extern rust_interrupt_handler
|
||||||
extern rust_handle_keyboard
|
extern rust_handle_keyboard
|
||||||
extern rust_handle_timer
|
extern rust_handle_timer
|
||||||
@@ -63,12 +62,6 @@ setup_SSE:
|
|||||||
mov al, "a"
|
mov al, "a"
|
||||||
jmp error
|
jmp error
|
||||||
|
|
||||||
asm_printchar:
|
|
||||||
mov rax, 0xf056
|
|
||||||
mov [0xb8000], ax
|
|
||||||
mov rax, 0x1
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
; ----------- IDT section ---------------------
|
; ----------- IDT section ---------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user