#![no_std] #![no_main] use core::arch::asm; use fpga_lib::{ interface::{Buttons, Leds}, panic_handler, register::X31, vga::{BLACK, BLUE, FONT_WIDTH, GREEN, RED, VGA, WHITE}, }; panic_handler! {} #[unsafe(no_mangle)] pub extern "C" fn main() -> ! { loop { unsafe { VGA::draw_string(10, 10, "Running RUST !", GREEN); VGA::draw_string(10, 23, "LedIp state :", RED); let clint_time: *mut u64 = 0x0200bff8 as *mut u64; let clocks = *clint_time; let seconds = clocks / (125_000_000 / 2); VGA::draw_string(100, 10, "CLint:", BLUE); VGA::draw_u64(150, 10, clocks, BLUE, BLACK); VGA::draw_string(100, 23, "(s)", BLUE); VGA::draw_u64(150, 23, seconds, BLUE, BLACK); for i in 0..4 { VGA::draw_char(10 + i * 16, 46, 'B', RED); VGA::draw_char(16 + i * 16, 46, (b'0' + i as u8) as char, RED); if Buttons::get_button(i as u8) { Leds::set_led(i as u8, true); VGA::draw_char_bg(10 + i * 16, 59, '1', GREEN, BLACK); } else { Leds::set_led(i as u8, false); VGA::draw_char_bg(10 + i * 16, 59, '0', RED, BLACK); } } } } }