Go to file
2023-12-02 09:20:57 +01:00
fuse_tests Ported to Python3 2022-05-25 23:26:49 +02:00
roms initial commit. 2014-08-29 22:48:33 +01:00
src WIP implementing Pat80 IO device 2022-05-25 23:41:10 +02:00
.gitignore ignored pycache 2023-12-02 09:20:57 +01:00
README.md Update README.md 2014-08-29 22:53:45 +01:00

Z80 CPU Emulator

This is a Zilog Z80 CPU emulator, written in Python. It runs a 1978 Microsoft Basic 4.7 ROM taken from Grant Searle's Z80 SBC project

Why?

Just for fun. I like the Z80 CPU - it was in many devices I played with as a kid.

Is it useful?

No. It runs really slowly, and is a completely non-optimal software design for an emulator, but (in my opinion) the code is readable. If you want a CPU emulator, probably don't use Python. That said, an optimised python coded emulator could run a lot faster than this :-)

Running

BASIC:

cd src
python z80sbc.py

Unit tests:

cd src
PYTHONPATH=`pwd`:$PYTHONPATH python ../tests/test_z80.py
PYTHONPATH=`pwd`:$PYTHONPATH python ../tests/test_registers.py

Fuse tests:

cd src
PYTHONPATH=`pwd`:$PYTHONPATH python ../fuse_tests/tests.py

Missing and todo

  • Most undocumented opcodes
  • Undocumented flags for CPI and CPIR.

Credits

Grant Searle's Z80 SBC project

FUSE - Free Unix Spectrum Emulator for the instruction set tests

License

Public domain; do what you like.