mod cpu_trait; pub use cpu_trait::{CpuTrait, DebugMode, RunMode}; #[wasm_bindgen] impl WasmCpu { #[wasm_bindgen(constructor)] pub fn new() -> Self { WasmCpu { memory: [0; 64 * 1024], registers: [0; 8], ip: 0, sp: 0xFFFF, flags: 0, verbose: false, } } pub fn set_verbose(&mut self, verbose: bool) { self.verbose = verbose; } pub fn load_memory(&mut self, memory: &[u8]) { self.memory[..memory.len()].copy_from_slice(memory); } pub fn execute(&mut self, run_mode: RunMode) { match run_mode { RunMode::Run => self.run(), RunMode::Debug(debug_mode) => self.debug(debug_mode), RunMode::StepOver => self.step_over(), RunMode::StepInto => self.step_into(), RunMode::StepOut => self.step_out(), RunMode::RunFor(cycles) => self.run_for(cycles), } } fn run(&mut self) { while self.ip < self.memory.len() as u16 { self.step(); } } fn debug(&mut self, _debug_mode: DebugMode) { // Implement debug functionality } fn run_for(&mut self, cycles: usize) { for _ in 0..cycles { self.step(); } } fn step_over(&mut self) { self.step(); // Placeholder for step-over functionality } fn step_into(&mut self) { self.step(); // Placeholder for step-into functionality } fn step_out(&mut self) { self.step(); // Placeholder for step-out functionality } fn step(&mut self) { // Fetch and execute instructions } }