10 breaking releases

0.16.0 May 25, 2024
0.15.0 Nov 4, 2023
0.14.0 Aug 30, 2023
0.11.0 Jan 13, 2023
0.10.0 Nov 16, 2022

#29 in Emulators

Download history 16/week @ 2024-03-29 3/week @ 2024-04-05 56/week @ 2024-04-26 5/week @ 2024-05-03 159/week @ 2024-05-24 8/week @ 2024-05-31 5/week @ 2024-06-07

681 downloads per month
Used in trust-80

MIT license

345KB
9K SLoC

zilog_z80

Current Crates.io Version Current docs Version Downloads badge

This is a Z80 emulator.

Example for a small loop:

use zilog_z80::cpu::CPU;
let mut c = CPU::new(0xFFFF);
c.reg.pc = 0x0100;                  // sets pc to 0x0100
// Here we create a small machine code program for demo purpose.
// Usually you will rather load an assembled code in memory with the load_bin function.
c.bus.write_byte(0x0100, 0x3e);     // LD A,0x0F
c.bus.write_byte(0x0101, 0x0F);
c.bus.write_byte(0x0102, 0x3d);     // DEC A
c.bus.write_byte(0x0103, 0xc2);     // JP NZ,0x0102
c.bus.write_word(0x0104, 0x0102);
c.bus.write_byte(0x0106, 0xc9);     // RET
loop {
    c.execute();
    if c.reg.pc == 0x0000 { break }
}

For IO and MMIO examples see my demonstration TRS-80 emulator.

License: MIT

No runtime deps