Skip to content

Latest commit

 

History

History
executable file
·
46 lines (29 loc) · 1.92 KB

readme.md

File metadata and controls

executable file
·
46 lines (29 loc) · 1.92 KB

Time Travel Debugger and Emulator for the Intel 8080

Or ttdbg8080 for short.

An image of the intel 8080A (Image courtesy of wikipedia)

Features

  • Emulation of the 8080 architecture (excluding Auxiliary carry CPU flag)
  • Supports break points
  • Supports watch points
  • Builtin disassembler
  • Supports printing internal memory
  • Step forwards in program execution
  • Step backwards in program execution
  • Dump the emulator memory to a file
  • Facilitates user modification of memory and register values
  • User modification of memory and registers persists across time travel replays

Using ttdbg8080

Printing the help page

ttdbg8080 -h

Loading a rom file

ttdbg8080 -l rom.bin

How it works

The Disassembler

The disassembler is a typical linear sweep disassembler, as such it doesn't follow the programs control flow. This may result in incorrectly disassembled bytes so make sure to keep an eye out for that if you are using ttdbg8080.

The Emulator

The emulator works by combing through instructions one by one and executing their related function found in handlestate.c. These functions manipulate a global state as defined by the cpuState structure found in handlestate.h.

Time Travel Debugging

The emulator/debugger facilitates the ability to step backwards in program execution. To accomplish this, the emulator simply reruns the program back to the desired point in execution. Breakpoints are kept and still checked for while the emulator reruns the program. At this point any modifications to the program by the user are not preserved when this action occurs.

Disclaimer

This is just a toy project that I occasionally work on. Feedback on this project's code is highly encouraged and appreciated. You can find my contact information here https://cole.pizza/contact/.