You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
#![no_std]
|
|
#![no_main]
|
|
|
|
use core::{fmt::Write, panic::PanicInfo, ptr::{read_volatile, write_volatile}};
|
|
use lwcpu::{NumberDisplay, Screen, ScreenMode, TextDisplay, SCREEN_POINTER};
|
|
use riscv_rt::entry;
|
|
|
|
#[panic_handler]
|
|
fn panic_handler(_info: &PanicInfo) -> ! {
|
|
NumberDisplay::display_number(0xDEADC0DE);
|
|
let mut text = TextDisplay{};
|
|
let _ = write!(text, "Panic: {} {}", _info.message(), 1234);
|
|
loop {}
|
|
}
|
|
|
|
const HELLO_WORLD: &str = " Hello world!";
|
|
|
|
#[entry]
|
|
fn main() -> ! {
|
|
NumberDisplay::display_number(0);
|
|
Screen::init(ScreenMode::Buffered);
|
|
let mut text = TextDisplay{};
|
|
text.init();
|
|
for i in 0..32 {
|
|
Screen::set_line(i, 1 << i);
|
|
}
|
|
Screen::display();
|
|
Screen::clear();
|
|
Screen::display();
|
|
Screen::change_mode(ScreenMode::AlwaysDisplay);
|
|
unsafe {
|
|
write_volatile(SCREEN_POINTER, 0x001166ff);
|
|
write_volatile(SCREEN_POINTER.offset(1), 0xAAAAAAAA);
|
|
let ptr = SCREEN_POINTER as *mut u8;
|
|
let b = read_volatile(ptr.offset(1));
|
|
write_volatile(ptr.offset(5), b);
|
|
}
|
|
loop {
|
|
let _ = text.write_str(HELLO_WORLD);
|
|
panic!("Lmao")
|
|
}
|
|
}
|