diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6897f3 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# 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/).