Go to file
Stephen Checkoway e392e05c87 Add the generated files to the repo
There's no real reason not to include the generated files.

Closes: #1
2021-05-25 13:31:01 -04:00
include/zel Add the generated files to the repo 2021-05-25 13:31:01 -04:00
tables Add the generated files to the repo 2021-05-25 13:31:01 -04:00
tests Make z80_types.h an internal header. 2017-08-12 14:54:40 -05:00
.gitignore Add the generated files to the repo 2021-05-25 13:31:01 -04:00
Doxyfile Initial commit. 2017-08-12 13:12:35 -05:00
LICENSE Update the license and generate a header file. 2017-08-12 14:33:28 -05:00
Makefile Make z80_types.h an internal header. 2017-08-12 14:54:40 -05:00
README.md Add README 2017-08-12 15:32:26 -05:00
z80_instructions.c Make z80_types.h an internal header. 2017-08-12 14:54:40 -05:00
z80_types.h Make z80_types.h an internal header. 2017-08-12 14:54:40 -05:00
z80.c Make z80_types.h an internal header. 2017-08-12 14:54:40 -05:00

z80 Emulation Library

I wrote this z80 emulator library in 2008 after being dissatisfied with other emulators for one reason or another. It aims to be cycle-accurate by modeling the number of T-cycles per instruction. See the Z80 CPU User Manual for details about T-cycles.

Operation

Libzel is very low level. It operates one instruction at a time, calling callbacks to read memory, perform I/O, and handle interrupts. No assumptions are made about memory layout or peripheral organization.

None of the standard Zilog peripherals are implemented and they must be handled by the callbacks.

Paper

Libzel was used to emulate the Sequoia AVC Advantage voting machine as described in Checkoway et al.'s Can DREs Provide Long-Lasting Security? The Case of Return-Oriented Programming and the AVC Advantage.