2022-11-21 17:04:07 -06:00
|
|
|
# Fork of github.com/stevecheckoway/libzel
|
|
|
|
|
2017-08-12 15:32:26 -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](https://www.zilog.com/docs/z80/um0080.pdf) 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_](https://www.cs.uic.edu/~s/papers/evt2009/).
|