Mercurial > repos > blastem
comparison z80_to_x86.c @ 388:228e4c696317
Fix LDD and LDDR
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 06 Jun 2013 08:19:25 -0700 |
parents | 582a68a90708 |
children | 3815ad1e684e |
comparison
equal
deleted
inserted
replaced
387:582a68a90708 | 388:228e4c696317 |
---|---|
538 case Z80_LDD: { | 538 case Z80_LDD: { |
539 dst = zcycles(dst, 8); | 539 dst = zcycles(dst, 8); |
540 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); | 540 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); |
541 dst = call(dst, (uint8_t *)z80_read_byte); | 541 dst = call(dst, (uint8_t *)z80_read_byte); |
542 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); | 542 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); |
543 dst = call(dst, (uint8_t *)z80_read_byte); | 543 dst = call(dst, (uint8_t *)z80_write_byte); |
544 dst = zcycles(dst, 2); | 544 dst = zcycles(dst, 2); |
545 dst = sub_ir(dst, 1, opts->regs[Z80_DE], SZ_W); | 545 dst = sub_ir(dst, 1, opts->regs[Z80_DE], SZ_W); |
546 dst = sub_ir(dst, 1, opts->regs[Z80_HL], SZ_W); | 546 dst = sub_ir(dst, 1, opts->regs[Z80_HL], SZ_W); |
547 dst = sub_ir(dst, 1, opts->regs[Z80_BC], SZ_W); | 547 dst = sub_ir(dst, 1, opts->regs[Z80_BC], SZ_W); |
548 //TODO: Implement half-carry | 548 //TODO: Implement half-carry |
553 case Z80_LDDR: { | 553 case Z80_LDDR: { |
554 dst = zcycles(dst, 8); | 554 dst = zcycles(dst, 8); |
555 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); | 555 dst = mov_rr(dst, opts->regs[Z80_HL], SCRATCH1, SZ_W); |
556 dst = call(dst, (uint8_t *)z80_read_byte); | 556 dst = call(dst, (uint8_t *)z80_read_byte); |
557 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); | 557 dst = mov_rr(dst, opts->regs[Z80_DE], SCRATCH2, SZ_W); |
558 dst = call(dst, (uint8_t *)z80_read_byte); | 558 dst = call(dst, (uint8_t *)z80_write_byte); |
559 dst = sub_ir(dst, 1, opts->regs[Z80_DE], SZ_W); | 559 dst = sub_ir(dst, 1, opts->regs[Z80_DE], SZ_W); |
560 dst = sub_ir(dst, 1, opts->regs[Z80_HL], SZ_W); | 560 dst = sub_ir(dst, 1, opts->regs[Z80_HL], SZ_W); |
561 | 561 |
562 dst = sub_ir(dst, 1, opts->regs[Z80_BC], SZ_W); | 562 dst = sub_ir(dst, 1, opts->regs[Z80_BC], SZ_W); |
563 uint8_t * cont = dst+1; | 563 uint8_t * cont = dst+1; |