| @@ -88,6 +88,14 @@ static inline uint8_t get_interrupt_mode(const Z80 *z80) | |||||
| return 2; | return 2; | ||||
| } | } | ||||
| /* | |||||
| Increment the refresh counter register, R. | |||||
| */ | |||||
| static inline void increment_refresh_counter(Z80 *z80) | |||||
| { | |||||
| z80->regfile.r = (z80->regfile.r & 0x80) | ((z80->regfile.r + 1) & 0x7F); | |||||
| } | |||||
| #include "z80_instructions.inc" | #include "z80_instructions.inc" | ||||
| /* | /* | ||||
| @@ -102,6 +110,7 @@ bool z80_do_cycles(Z80 *z80, double cycles) | |||||
| cycles -= z80->pending_cycles; | cycles -= z80->pending_cycles; | ||||
| while (cycles > 0 && !z80->except) { | while (cycles > 0 && !z80->except) { | ||||
| uint8_t opcode = mmu_read_byte(z80->mmu, z80->regfile.pc); | uint8_t opcode = mmu_read_byte(z80->mmu, z80->regfile.pc); | ||||
| increment_refresh_counter(z80); | |||||
| cycles -= (*instruction_lookup_table[opcode])(z80, opcode) - 2; | cycles -= (*instruction_lookup_table[opcode])(z80, opcode) - 2; | ||||
| } | } | ||||