i8051-debug-tui

Crates.ioi8051-debug-tui
lib.rsi8051-debug-tui
version0.13.0
created_at2025-10-29 15:41:57.64225+00
updated_at2025-12-27 20:13:30.546057+00
descriptionA TUI for debugging the i8051 microcontroller emulator.
homepage
repositoryhttps://github.com/mmastrac/i8051
max_upload_size
id1906845
size80,243
Matt Mastracci (mmastrac)

documentation

README

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()?;
Commit count: 12

cargo fmt