m68k: fix 020+ PACK/UNPK nibble ordering [Till Harbaum, R. Belmont]

This commit is contained in:
arbee 2015-09-26 18:52:48 -04:00
parent 41bfa05ded
commit 2d49f1c18d
2 changed files with 24 additions and 24 deletions

View File

@ -8171,7 +8171,7 @@ M68KMAKE_OP(pack, 16, mm, ax7)
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -8188,7 +8188,7 @@ M68KMAKE_OP(pack, 16, mm, ay7)
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -8204,7 +8204,7 @@ M68KMAKE_OP(pack, 16, mm, axy7)
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -8221,7 +8221,7 @@ M68KMAKE_OP(pack, 16, mm, .)
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -10443,9 +10443,9 @@ M68KMAKE_OP(unpk, 16, mm, ax7)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -10462,9 +10462,9 @@ M68KMAKE_OP(unpk, 16, mm, ay7)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -10480,9 +10480,9 @@ M68KMAKE_OP(unpk, 16, mm, axy7)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -10499,9 +10499,9 @@ M68KMAKE_OP(unpk, 16, mm, .)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);

View File

@ -26391,7 +26391,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm_ax7(m68000_base_device* mc68kcpu
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -26408,7 +26408,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm_ay7(m68000_base_device* mc68kcpu
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -26424,7 +26424,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm_axy7(m68000_base_device* mc68kcp
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -26441,7 +26441,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm(m68000_base_device* mc68kcpu)
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -32656,9 +32656,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm_ax7(m68000_base_device* mc68kcpu
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -32675,9 +32675,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm_ay7(m68000_base_device* mc68kcpu
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -32693,9 +32693,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm_axy7(m68000_base_device* mc68kcp
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@ -32712,9 +32712,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm(m68000_base_device* mc68kcpu)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);