This commit is contained in:
Sven Riwoldt
2025-03-15 16:13:21 +01:00
commit 5b8a0e36e4
36 changed files with 37139 additions and 0 deletions

46
README.md Executable file
View File

@@ -0,0 +1,46 @@
## 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](http://searle.hostei.com/grant/z80/SimpleZ80.html)
### 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](http://searle.hostei.com/grant/z80/SimpleZ80.html)
[FUSE - Free Unix Spectrum Emulator](http://fuse-emulator.sourceforge.net/) for the instruction set tests
### License
Public domain; do what you like.