An emulator, assembler, and disassembler for the Sega Game Gear
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

z80.h 832 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /* Copyright (C) 2014-2015 Ben Kurtovic <ben.kurtovic@gmail.com>
  2. Released under the terms of the MIT License. See LICENSE for details. */
  3. #pragma once
  4. #include <stdbool.h>
  5. #include <stdint.h>
  6. #include "mmu.h"
  7. #define Z80_EXC_NOT_POWERED 0
  8. #define Z80_EXC_UNIMPLEMENTED_OPCODE 1
  9. /* Structs */
  10. typedef struct {
  11. uint8_t a, f, b, c, d, e, h, l;
  12. uint8_t a_, f_, b_, c_, d_, e_, h_, l_;
  13. uint16_t ix, iy, sp, pc;
  14. uint8_t i, r;
  15. bool im_a, im_b;
  16. bool iff1, iff2;
  17. } Z80RegFile;
  18. typedef struct {
  19. Z80RegFile regfile;
  20. MMU *mmu;
  21. bool except;
  22. uint8_t exc_code, exc_data;
  23. double pending_cycles;
  24. } Z80;
  25. /* Functions */
  26. void z80_init(Z80*, MMU*);
  27. void z80_power(Z80*);
  28. bool z80_do_cycles(Z80*, double);
  29. #ifdef DEBUG_MODE
  30. void z80_dump_registers(const Z80*);
  31. #endif