k580-core 2.0.0

KR580VM80 / Intel 8080 CPU core for KR580.
Documentation
use k580_core::Cpu8080State;

#[test]
fn memory_block_writes_consecutive_bytes() {
    let mut cpu = Cpu8080State::default();

    cpu.set_memory_block(0x0100, &[0x3E, 0x41, 0xD3, 0x03, 0x76])
        .unwrap();

    assert_eq!(
        &cpu.memory.as_slice()[0x0100..0x0105],
        &[0x3E, 0x41, 0xD3, 0x03, 0x76]
    );
}

#[test]
fn overflowing_memory_block_is_rejected_atomically() {
    let mut cpu = Cpu8080State::default();
    cpu.memory.write(0xFFFE, 0xAA);
    cpu.memory.write(0xFFFF, 0xBB);

    assert!(cpu.set_memory_block(0xFFFE, &[0x3E, 0x41, 0x76]).is_err());
    assert_eq!(&cpu.memory.as_slice()[0xFFFE..], &[0xAA, 0xBB]);
}