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;