summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index bbf89b6..a3571c7 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,14 +5,11 @@ pub mod state;
use crate::core::*;
use crate::mem::Memory;
use crate::state::CpuState;
-use std::collections::HashSet;
-use std::io;
-use std::io::Write;
-use std::process::exit;
const MEMORY_SIZE: usize = 64 * 1024 * 1024;
const REGISTER_NAME_WIDTH: u32 = 0b11111;
const RO_TARGET: u32 = 0x80000000;
+const UART_ADDR: u32 = 0x10000000;
fn main() {
let path = std::path::PathBuf::from("wkern.bin");
@@ -22,9 +19,20 @@ fn main() {
let mut state = CpuState::new(memory);
+ state.memory.write_multiple_bytes(RO_TARGET as usize, f_dat.as_slice(), 99).unwrap();
+ state.memory.write(UART_ADDR as usize, 99, 0).unwrap();
+ state.pc = RO_TARGET;
+
loop {
{
handle_instruction(&mut state);
+
+ // simple polling uart
+ let uart_byte = state.memory.read(UART_ADDR as usize, 99).unwrap();
+ if uart_byte != 0 {
+ print!("{}", uart_byte as char);
+ }
+ state.memory.write(UART_ADDR as usize, 99, 0).unwrap();
}
}
}