Expand description
§mc6809-core
A Motorola 6809 CPU emulator core.
Provides a Cpu that executes 6809 instructions against any memory system
implementing the Memory trait. Peripheral timing and interrupt signals are
handled separately via the Clocked trait, which is called by the host loop
independently of the CPU.
§Example
use mc6809_core::{Cpu, Memory};
struct FlatRam([u8; 65536]);
impl Memory for FlatRam {
fn read(&mut self, addr: u16) -> u8 { self.0[addr as usize] }
fn write(&mut self, addr: u16, val: u8) { self.0[addr as usize] = val; }
}
let mut mem = FlatRam([0; 65536]);
// Place a reset vector pointing to 0x0400
mem.0[0xFFFE] = 0x04;
mem.0[0xFFFF] = 0x00;
// Place a NOP at 0x0400
mem.0[0x0400] = 0x12;
let mut cpu = Cpu::new();
cpu.reset(&mut mem);
assert_eq!(cpu.registers().pc, 0x0400);
cpu.step(&mut mem);
assert_eq!(cpu.registers().pc, 0x0401);Re-exports§
pub use memory::Memory;pub use peripheral::BusSignals;pub use peripheral::Clocked;pub use registers::ConditionCodes;pub use registers::Registers;
Modules§
Structs§
- Cpu
- Motorola 6809 CPU emulator.
- Registers
Mut - RAII guard returned by
Cpu::registers_mut.
Functions§
- instruction_
cycles - Returns the base cycle count for a 6809 instruction.