Intel 8080 emu
An intel 8080 emulator library (another one). Initially implemeted to build a space invaders
emulator (another another one).
This library provides provides utilities to parse 8080 binary and simulate an
[8080 microprocessor](https://en.wikipedia.org/wiki/Intel_8080). All op codes are implemented and
there is no external dependencies.
The main struct is `intel_8080_emu::proc_state::Proc8080`. It needs basically two things to work :
- The memory, a simple `Box<[u8]>` containing the rom and the ram.
- A structure implementing `intel_8080_emu::proc_state::DataBus` which handles the `IN` and `OUT`
// 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]);
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 cycles = i8080.cycles();
// emulates runs one "step" of the simulation by running the next opcode, mutating the
// processor state accordingly and increasing the cycle count
// you can manage time with Proc8080:cycles()
// A cycle for the 8080 took approximately 500 nanoseconds
std::thread::sleep(std::time::Duration::from_nanos(500) * (i8080.cycles() - cycles)
- Maybe better memory handling. It is currently a simple `Box<[u8]>` and does not distinguish
between ROM and RAM.