3 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018年11月10日 |
---|---|
0.1.1 | 2018年10月24日 |
0.1.0 | 2018年9月8日 |
#168 in 模拟器
89KB
2.5K SLoC
Intel 8080 模拟器
一个 Intel 8080 模拟器库(另一个)。最初是为了构建太空侵略者模拟器(另一个另一个)而实现的。
此库提供了解析 8080 二进制文件和模拟 8080 微处理器 的工具。所有操作码都已实现,没有外部依赖。
快速入门
主要的结构是 intel_8080_emu::proc_state::Proc8080
。它基本上需要两个东西才能工作
- 内存,一个简单的
Box<[u8]>
,包含 rom 和 ram。 - 一个实现了
intel_8080_emu::proc_state::DataBus
结构,用于处理IN
和OUT
调用。
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。