| Crates.io | i8051-debug-tui |
| lib.rs | i8051-debug-tui |
| version | 0.13.0 |
| created_at | 2025-10-29 15:41:57.64225+00 |
| updated_at | 2025-12-27 20:13:30.546057+00 |
| description | A TUI for debugging the i8051 microcontroller emulator. |
| homepage | |
| repository | https://github.com/mmastrac/i8051 |
| max_upload_size | |
| id | 1906845 |
| size | 80,243 |
A terminal UI debugger for the i8051 emulator crate, built using ratatui and crossterm.
An example integration is shown below.
use i8051_debug_tui::{crossterm, Debugger, DebuggerState};
let mut debugger = Debugger::new(Default::default())?;
debugger.enter()?;
let mut instruction_count = 0_usize;
loop {
match debugger.debugger_state() {
DebuggerState::Quit => {
debugger.exit()?;
break;
}
DebuggerState::Paused => {
debugger.render(&cpu, &mut context)?;
let event = crossterm::event::poll(Duration::from_millis(100))?;
if event {
let event = crossterm::event::read()?;
if debugger.handle_event(event, &mut cpu, &mut context) {
cpu.step(&mut context);
debugger.render(&cpu, &mut context)?;
}
}
}
DebuggerState::Running => {
instruction_count += 1;
if instruction_count % 0x10000 == 0 {
debugger.render(&cpu, &mut context)?;
let event = crossterm::event::poll(Duration::from_millis(0))?;
if event {
let event = crossterm::event::read()?;
if debugger.handle_event(event, &mut cpu, &mut context) {
cpu.step(&mut context);
debugger.render(&cpu, &mut context)?;
}
}
}
cpu.step(&mut context);
if debugger.breakpoints().contains(&cpu.pc_ext(&context)) {
debugger.pause();
}
breakpoints.run(true, &mut cpu, &mut context);
}
}
}
debugger.exit()?;