Mercurial > repos > blastem
comparison z80_to_x86.c @ 272:9b04b57434b5
Implement LDI
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 02 May 2013 22:26:47 -0700 |
parents | 3c054d977175 |
children | 719b9fea2fe9 |
comparison
equal
deleted
inserted
replaced
271:969ee17471c5 | 272:9b04b57434b5 |
---|---|
505 dst = mov_rrdisp8(dst, SCRATCH2, CONTEXT, zar_off(Z80_L), SZ_W); | 505 dst = mov_rrdisp8(dst, SCRATCH2, CONTEXT, zar_off(Z80_L), SZ_W); |
506 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH1, SZ_W); | 506 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH1, SZ_W); |
507 dst = mov_rdisp8r(dst, CONTEXT, zar_off(Z80_E), opts->regs[Z80_DE], SZ_W); | 507 dst = mov_rdisp8r(dst, CONTEXT, zar_off(Z80_E), opts->regs[Z80_DE], SZ_W); |
508 dst = mov_rrdisp8(dst, SCRATCH1, CONTEXT, zar_off(Z80_E), SZ_W); | 508 dst = mov_rrdisp8(dst, SCRATCH1, CONTEXT, zar_off(Z80_E), SZ_W); |
509 break; | 509 break; |
510 //case Z80_LDI: | 510 case Z80_LDI: { |
511 dst = zcycles(dst, 8); | |
512 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); | |
513 dst = call(dst, (uint8_t *)z80_read_byte); | |
514 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); | |
515 dst = call(dst, (uint8_t *)z80_read_byte); | |
516 dst = zcycles(dst, 2); | |
517 dst = add_ir(dst, 1, opts->regs[Z80_DE], SZ_W); | |
518 dst = add_ir(dst, 1, opts->regs[Z80_HL], SZ_W); | |
519 dst = sub_ir(dst, 1, opts->regs[Z80_BC], SZ_W); | |
520 //TODO: Implement half-carry | |
521 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); | |
522 dst = setcc_rdisp8(dst, CC_NZ, CONTEXT, zf_off(ZF_PV)); | |
523 break; | |
524 } | |
511 case Z80_LDIR: { | 525 case Z80_LDIR: { |
512 dst = zcycles(dst, 8); | 526 dst = zcycles(dst, 8); |
513 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); | 527 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); |
514 dst = call(dst, (uint8_t *)z80_read_byte); | 528 dst = call(dst, (uint8_t *)z80_read_byte); |
515 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); | 529 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); |