#模拟器 #intel-8080

bin+lib intel-8080-emu

用于模拟 Intel 8080 的一个小型库

3 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年11月10日
0.1.1 2018年10月24日
0.1.0 2018年9月8日

#168 in 模拟器

MPL-2.0 许可证

89KB
2.5K SLoC

Intel 8080 模拟器

Crates.io

一个 Intel 8080 模拟器库(另一个)。最初是为了构建太空侵略者模拟器(另一个另一个)而实现的。

此库提供了解析 8080 二进制文件和模拟 8080 微处理器 的工具。所有操作码都已实现,没有外部依赖。

快速入门

主要的结构是 intel_8080_emu::proc_state::Proc8080。它基本上需要两个东西才能工作

  • 内存,一个简单的 Box<[u8]>,包含 rom 和 ram。
  • 一个实现了 intel_8080_emu::proc_state::DataBus 结构,用于处理 INOUT 调用。
use intel_8080_emu::proc_state::Proc8080;
use foo::bar::MyCustomDataBus;
use std;

// load your rom as an array
let rom: [u8] = load_rom();

// copy the rom into the 8008 memory
let mut memory = Box::new([0x00; 0xffff]); 
memory[0..rom.len()].copy_from_slice(&rom);

let i8080 = Proc8080::new(memory, data_bus);

// we're ready ! 
// Here is naive way to slow down the simulation so that it matches the original speed of the 8080
let mut states = i8080.states();
loop {
    // emulates runs one "step" of the simulation by running the next opcode, mutating the 
    // processor state accordingly and increasing the states count
    i8080.emulate();
    // you can manage time with Proc8080:states()
    // A cycle for the 8080 took approximately 500 nanoseconds
    std::thread::sleep(std::time::Duration::from_nanos(500) * (i8080.states() - states)
}   

可能的改进

  • 可能更好的内存处理。目前它是一个简单的 Box<[u8]>,并且不区分 rom 和 ram。

没有运行时依赖