diff --git a/src/devices/cpu/m68000/m68k_in.c b/src/devices/cpu/m68000/m68k_in.c index 74b136a0012..754402fd749 100644 --- a/src/devices/cpu/m68000/m68k_in.c +++ b/src/devices/cpu/m68000/m68k_in.c @@ -91,7 +91,6 @@ M68KMAKE_PROTOTYPE_HEADER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX M68KMAKE_PROTOTYPE_FOOTER - /* Build the opcode handler table */ void m68ki_build_opcode_table(void); @@ -2490,7 +2489,7 @@ M68KMAKE_OP(bfchg, 32, ., .) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte); @@ -2581,7 +2580,7 @@ M68KMAKE_OP(bfclr, 32, ., .) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte); @@ -2959,7 +2958,7 @@ M68KMAKE_OP(bfins, 32, ., .) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); insert_byte = MASK_OUT_ABOVE_8(insert_base); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); @@ -3022,7 +3021,6 @@ M68KMAKE_OP(bfset, 32, ., .) UINT32 mask_byte = 0; UINT32 ea = M68KMAKE_GET_EA_AY_8; - if(BIT_B(word2)) offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]); if(BIT_5(word2)) @@ -3038,7 +3036,6 @@ M68KMAKE_OP(bfset, 32, ., .) } width = ((width-1) & 31) + 1; - mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width)); mask_long = mask_base >> offset; @@ -3052,7 +3049,7 @@ M68KMAKE_OP(bfset, 32, ., .) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte); @@ -3139,7 +3136,7 @@ M68KMAKE_OP(bftst, 32, ., .) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } diff --git a/src/devices/cpu/m68000/m68kops.c b/src/devices/cpu/m68000/m68kops.c index f0962a93ef8..585d26d42c2 100644 --- a/src/devices/cpu/m68000/m68kops.c +++ b/src/devices/cpu/m68000/m68kops.c @@ -1,5 +1,3 @@ -// license:BSD-3-Clause -// copyright-holders:Karl Stenerud #include "emu.h" #include "m68kcpu.h" extern void m68040_fpu_op0(m68000_base_device *m68k); @@ -5346,7 +5344,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_ai(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte); @@ -5400,7 +5398,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_di(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte); @@ -5454,7 +5452,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_ix(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte); @@ -5508,7 +5506,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_aw(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte); @@ -5562,7 +5560,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_al(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte); @@ -5653,7 +5651,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_ai(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte); @@ -5707,7 +5705,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_di(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte); @@ -5761,7 +5759,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_ix(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte); @@ -5815,7 +5813,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_aw(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte); @@ -5869,7 +5867,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_al(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte); @@ -7177,7 +7175,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); insert_byte = MASK_OUT_ABOVE_8(insert_base); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); @@ -7253,7 +7251,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_di(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); insert_byte = MASK_OUT_ABOVE_8(insert_base); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); @@ -7329,7 +7327,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); insert_byte = MASK_OUT_ABOVE_8(insert_base); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); @@ -7405,7 +7403,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); insert_byte = MASK_OUT_ABOVE_8(insert_base); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); @@ -7481,7 +7479,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_al(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); insert_byte = MASK_OUT_ABOVE_8(insert_base); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); @@ -7544,7 +7542,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu) UINT32 mask_byte = 0; UINT32 ea = EA_AY_AI_8(mc68kcpu); - if(BIT_B(word2)) offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]); if(BIT_5(word2)) @@ -7560,7 +7557,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu) } width = ((width-1) & 31) + 1; - mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width)); mask_long = mask_base >> offset; @@ -7574,7 +7570,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte); @@ -7599,7 +7595,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu) UINT32 mask_byte = 0; UINT32 ea = EA_AY_DI_8(mc68kcpu); - if(BIT_B(word2)) offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]); if(BIT_5(word2)) @@ -7615,7 +7610,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu) } width = ((width-1) & 31) + 1; - mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width)); mask_long = mask_base >> offset; @@ -7629,7 +7623,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte); @@ -7654,7 +7648,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu) UINT32 mask_byte = 0; UINT32 ea = EA_AY_IX_8(mc68kcpu); - if(BIT_B(word2)) offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]); if(BIT_5(word2)) @@ -7670,7 +7663,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu) } width = ((width-1) & 31) + 1; - mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width)); mask_long = mask_base >> offset; @@ -7684,7 +7676,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte); @@ -7709,7 +7701,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu) UINT32 mask_byte = 0; UINT32 ea = EA_AW_8(mc68kcpu); - if(BIT_B(word2)) offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]); if(BIT_5(word2)) @@ -7725,7 +7716,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu) } width = ((width-1) & 31) + 1; - mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width)); mask_long = mask_base >> offset; @@ -7739,7 +7729,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte); @@ -7764,7 +7754,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu) UINT32 mask_byte = 0; UINT32 ea = EA_AL_8(mc68kcpu); - if(BIT_B(word2)) offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]); if(BIT_5(word2)) @@ -7780,7 +7769,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu) } width = ((width-1) & 31) + 1; - mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width)); mask_long = mask_base >> offset; @@ -7794,7 +7782,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte); @@ -7881,7 +7869,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_ai(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -7932,7 +7920,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_di(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -7983,7 +7971,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_ix(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -8034,7 +8022,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_aw(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -8085,7 +8073,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_al(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -8136,7 +8124,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_pcdi(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -8187,7 +8175,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_pcix(m68000_base_device* mc68kcpu) if((width + offset) > 32) { - mask_byte = MASK_OUT_ABOVE_8(mask_base); + mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); data_byte = m68ki_read_8((mc68kcpu), ea+4); (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); } @@ -34884,3 +34872,5 @@ void m68ki_build_opcode_table(void) /* ======================================================================== */ /* ============================== END OF FILE ============================= */ /* ======================================================================== */ + +