7 releases (breaking)
Uses new Rust 2024
| new 0.12.0 | Nov 12, 2025 |
|---|---|
| 0.11.0 | Nov 12, 2025 |
| 0.10.0 | Nov 11, 2025 |
| 0.9.0 | Nov 5, 2025 |
| 0.6.0 | Oct 29, 2025 |
#315 in Hardware support
133 downloads per month
130KB
3K
SLoC
i8051-debug-tui
A terminal UI debugger for the i8051 emulator crate, built using ratatui and crossterm.
Usage
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()?;
Dependencies
~12MB
~200K SLoC