12 breaking releases

0.17.0 Feb 10, 2024
0.16.0 Aug 6, 2023
0.15.0 Oct 15, 2022
0.14.0 Dec 30, 2021
0.12.0 Nov 6, 2021

#64 in Emulators

Download history 23/week @ 2023-11-01 7/week @ 2023-11-08 7/week @ 2023-11-15 30/week @ 2023-11-22 41/week @ 2023-11-29 3/week @ 2023-12-06 18/week @ 2023-12-13 16/week @ 2023-12-20 15/week @ 2023-12-27 15/week @ 2024-01-03 6/week @ 2024-01-10 7/week @ 2024-01-17 21/week @ 2024-01-24 26/week @ 2024-01-31 38/week @ 2024-02-07 153/week @ 2024-02-14

242 downloads per month
Used in teletype

MIT license

145KB
3.5K SLoC

intel8080

Current Crates.io Version Current docs Version Downloads badge

Yet another Intel 8080 Emulator. It passes the TST8080, 8080PRE, CPUTEST and 8080EXM tests.

Example for a small loop:

use intel8080::CPU;
let mut c = CPU::new();
c.pc = 0x0100;                      // sets pc to $100
// Here we create a small machine code program for demo purpose.
// Usually you will rather load an assembled code in memory (see below).
c.bus.write_byte(0x0100, 0x3e);     // MVI A,$0F
c.bus.write_byte(0x0101, 0x0F);
c.bus.write_byte(0x0102, 0x3d);     // DCR A
c.bus.write_byte(0x0103, 0xc2);     // JNZ $0102
c.bus.write_word(0x0104, 0x0102);
c.bus.write_byte(0x0106, 0xc9);     // RET
loop {
    c.execute();
    if c.pc == 0x0000 { break }
}

Debug mode outputs CPU state and disassembled code to an internal string after each execute():

3E 0f     MVI A,$0f
PC : 0x0003	SP : 0xff00	S : 0	Z : 0	A : 0	P : 0	C : 0
B : 0x00	C : 0x00	D : 0x00	E : 0x00	H : 0x00	L : 0x00 ...

Includes a "cpmloader" which loads and executes basic CP/M programs:

cargo run --release --example cpmloader -- bin/helloworld.bin

You can also check my Altair 8800 / 88-SIO / teletype emulator.

The provided source code examples can be assembled with Retro Assembler.

License: MIT

No runtime deps