#![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") } }