comparison m68k_to_x86.c @ 67:534eb4976423

Fix BTST
author Mike Pavone <pavone@retrodev.com>
date Thu, 20 Dec 2012 00:56:33 -0800
parents 7a22a0e6c004
children cebd0b5ac7f0
comparison
equal deleted inserted replaced
66:7a22a0e6c004 67:534eb4976423
1007 case M68K_BCLR: 1007 case M68K_BCLR:
1008 case M68K_BSET: 1008 case M68K_BSET:
1009 break; 1009 break;
1010 case M68K_BTST: 1010 case M68K_BTST:
1011 dst = cycles(dst, inst->extra.size == OPSIZE_BYTE ? 4 : 6); 1011 dst = cycles(dst, inst->extra.size == OPSIZE_BYTE ? 4 : 6);
1012 if (src_op.mode == MODE_IMMEDIATE) { 1012 if (src_op.mode == MODE_IMMED) {
1013 if (inst->extra.size == OPSIZE_BYTE) { 1013 if (inst->extra.size == OPSIZE_BYTE) {
1014 src_op.disp &= 0x7; 1014 src_op.disp &= 0x7;
1015 } 1015 }
1016 if (dst_op.mode == MODE_REG_DIRECT) { 1016 if (dst_op.mode == MODE_REG_DIRECT) {
1017 dst = bt_ir(dst, src_op.disp, dst_op.base, SZ_D); 1017 dst = bt_ir(dst, src_op.disp, dst_op.base, SZ_D);
1042 //68K sets the zero flag to the complement of the bit tested 1042 //68K sets the zero flag to the complement of the bit tested
1043 dst = setcc_r(dst, CC_NC, FLAG_Z); 1043 dst = setcc_r(dst, CC_NC, FLAG_Z);
1044 if (src_op.base == SCRATCH2) { 1044 if (src_op.base == SCRATCH2) {
1045 dst = pop_r(dst, SCRATCH2); 1045 dst = pop_r(dst, SCRATCH2);
1046 } 1046 }
1047 dst = m68k_save_result(inst, dst, opts);
1048 break; 1047 break;
1049 case M68K_CHK: 1048 case M68K_CHK:
1050 break; 1049 break;
1051 case M68K_CMP: 1050 case M68K_CMP:
1052 dst = cycles(dst, BUS); 1051 dst = cycles(dst, BUS);