zeerust 0.2.1

A Z80 CPU Emulator
Documentation
extern crate zeerust;

use zeerust::examples::{COUNTDOWN_BIN, FIZZBUZZ_BIN, HELLO_WORLD_BIN, HELLO_ZEERUST_BIN};
use zeerust::z80;

fn run(program: &[u8]) -> Vec<u8> {
    let mut z80 = z80::Z80::default();
    let buf = z80::io::BufOutput::default();
    z80.install_output(0x00, Box::new(buf.clone()));

    z80.load(program);
    z80.run();
    buf.result()
}

#[test]
fn hello_zeerust() {
    assert_eq!(b"ZEERUST".to_vec(), run(HELLO_ZEERUST_BIN));
}

#[test]
fn hello_world() {
    assert_eq!(b"Hello World\n".to_vec(), run(HELLO_WORLD_BIN))
}

#[test]
fn countdown() {
    assert_eq!(b"9\n8\n7\n6\n5\n4\n3\n2\n1\n".to_vec(), run(COUNTDOWN_BIN))
}

#[test]
fn fizzbuzz() {
    let expected: Vec<u8> = [
        "01", "02", "Fizz", "04", "Buzz", "Fizz", "07", "08", "Fizz", "Buzz", "11", "Fizz", "13",
        "14", "FizzBuzz", "16", "17", "Fizz", "19", "Buzz\n",
    ]
    .join("\n")
    .as_bytes()
    .to_vec();
    assert_eq!(expected, run(FIZZBUZZ_BIN));
}