Mercurial > repos > blastem
changeset 243:2f069a0b487e
Implement EI, DI and IM in the Z80 core
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 28 Apr 2013 14:32:45 -0700 |
parents | d3b84b2a4397 |
children | df8a36bf5e1d |
files | z80_to_x86.c z80_to_x86.h |
diffstat | 2 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/z80_to_x86.c Sun Apr 28 14:05:02 2013 -0700 +++ b/z80_to_x86.c Sun Apr 28 14:32:45 2013 -0700 @@ -221,13 +221,13 @@ void z80_print_regs_exit(z80_context * context) { - printf("A: %X\nB: %X\nC: %X\nD: %X\nE: %X\nHL: %X\nIX: %X\nIY: %X\nSP: %X\n", + printf("A: %X\nB: %X\nC: %X\nD: %X\nE: %X\nHL: %X\nIX: %X\nIY: %X\nSP: %X\n\nIM: %d, IFF1: %d, IFF2: %d\n", context->regs[Z80_A], context->regs[Z80_B], context->regs[Z80_C], context->regs[Z80_D], context->regs[Z80_E], (context->regs[Z80_H] << 8) | context->regs[Z80_L], (context->regs[Z80_IXH] << 8) | context->regs[Z80_IXL], (context->regs[Z80_IYH] << 8) | context->regs[Z80_IYL], - context->sp); + context->sp, context->im, context->iff1, context->iff2); puts("--Alternate Regs--"); printf("A: %X\nB: %X\nC: %X\nD: %X\nE: %X\nHL: %X\nIX: %X\nIY: %X\n", context->alt_regs[Z80_A], context->alt_regs[Z80_B], context->alt_regs[Z80_C], @@ -643,11 +643,23 @@ dst = zcycles(dst, 4 * inst->immed); } break; - /*case Z80_HALT: + //case Z80_HALT: case Z80_DI: + dst = zcycles(dst, 4); + dst = mov_irdisp8(dst, 0, CONTEXT, offsetof(z80_context, iff1), SZ_B); + dst = mov_irdisp8(dst, 0, CONTEXT, offsetof(z80_context, iff2), SZ_B); + break; case Z80_EI: + //TODO: Implement interrupt enable latency of 1 instruction afer EI + dst = zcycles(dst, 4); + dst = mov_irdisp8(dst, 1, CONTEXT, offsetof(z80_context, iff1), SZ_B); + dst = mov_irdisp8(dst, 1, CONTEXT, offsetof(z80_context, iff2), SZ_B); + break; case Z80_IM: - case Z80_RLC: + dst = zcycles(dst, 4); + dst = mov_irdisp8(dst, inst->immed, CONTEXT, offsetof(z80_context, im), SZ_B); + break; + /*case Z80_RLC: case Z80_RL: case Z80_RRC: case Z80_RR:
--- a/z80_to_x86.h Sun Apr 28 14:05:02 2013 -0700 +++ b/z80_to_x86.h Sun Apr 28 14:32:45 2013 -0700 @@ -35,6 +35,8 @@ uint32_t current_cycle; uint8_t alt_flags[ZF_NUM]; uint8_t * mem_pointers[ZNUM_MEM_AREAS]; + uint8_t iff1; + uint8_t iff2; native_map_slot * static_code_map; native_map_slot * banked_code_map; void * options;