process messages outside of step loop

This commit is contained in:
Alex Janka 2023-03-03 11:20:47 +11:00
parent bb6ab69d66
commit cbc5a634e2

View file

@ -101,6 +101,7 @@ pub fn init(
verbose_println!("\n\n Begin execution...\n");
match options.step_by {
Some(step_size) => loop {
process_messages(&receiver, &mut cpu);
for _ in 0..step_size {
cycle_num += 1;
if options.cycle_count {
@ -113,6 +114,17 @@ pub fn init(
pause();
},
None => loop {
process_messages(&receiver, &mut cpu);
cycle_num += 1;
if options.cycle_count {
print_cycles(&cycle_num);
}
run_cycle(&mut cpu);
},
}
}
fn process_messages(receiver: &Receiver<EmulatorMessage>, cpu: &mut Cpu) {
while let Ok(msg) = receiver.try_recv() {
match msg {
EmulatorMessage::Stop => {
@ -121,13 +133,6 @@ pub fn init(
}
}
}
cycle_num += 1;
if options.cycle_count {
print_cycles(&cycle_num);
}
run_cycle(&mut cpu);
},
}
}
fn run_cycle(cpu: &mut Cpu) {