use std::{fs, io}; use minifb::{Window, WindowOptions}; use implementation::*; fn main() { let mut filename = String::new(); print!("Enter filename of the program to load into memory"); io::stdin().read_line(&mut filename).unwrap(); let program = fs::read_to_string(filename).unwrap(); let mut i = 0; let mut memory = [0u16;0xFFFFF]; for line in program.lines() { let mut byte = 0u16; let mut count = 0; for digit in line.chars() { count += 1; match digit { '0' => { byte = byte << 1; count += 1; } '1' => { byte = (byte << 1) | 1; count += 1; } _ => () } if count > 10 {panic!("10 bits only :)")}; } memory[i] = byte; i += 1; } let mut processor = Processor { stack_a: Vec::new(), stack_b: Vec::new(), memory, carry: false, pc: 0 }; let mut window = Window::new("STT Display", 128, 128, WindowOptions::default()).unwrap(); while window.is_open() && processor.run() { if processor.memory[(2<<20)-(2<<14)-1] != 0 { processor.memory[(2<<20)-(2<<14)-1] = 0; window.update_with_buffer(&mem_to_buf(&processor.memory), 128, 128).unwrap(); } } }