mirror of
https://github.com/holub/mame
synced 2025-10-08 09:30:17 +03:00
i86: Add 0x6x instruction shadows, used by DEC Rainbow MS-DOS 2.01. [R. Belmont, based on a patch by Bavarese]
This commit is contained in:
parent
45189af3c8
commit
dcf31bcf36
@ -1137,68 +1137,86 @@ bool i8086_common_cpu_device::common_op(UINT8 op)
|
|||||||
CLK(POP_R16);
|
CLK(POP_R16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// 8086 'invalid opcodes', as documented at http://www.os2museum.com/wp/?p=2147
|
||||||
|
// 0x60 - 0x6f are an alias to 0x70 - 0x7f.
|
||||||
|
// These instructions are used in the boot sector for some versions of
|
||||||
|
// MS-DOS 2.01 (e.g. the DEC Rainbow version).
|
||||||
|
case 0x60:
|
||||||
case 0x70: // i_jo
|
case 0x70: // i_jo
|
||||||
JMP( OF);
|
JMP( OF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x61:
|
||||||
case 0x71: // i_jno
|
case 0x71: // i_jno
|
||||||
JMP(!OF);
|
JMP(!OF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x62:
|
||||||
case 0x72: // i_jc
|
case 0x72: // i_jc
|
||||||
JMP( CF);
|
JMP( CF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x63:
|
||||||
case 0x73: // i_jnc
|
case 0x73: // i_jnc
|
||||||
JMP(!CF);
|
JMP(!CF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x64:
|
||||||
case 0x74: // i_jz
|
case 0x74: // i_jz
|
||||||
JMP( ZF);
|
JMP( ZF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x65:
|
||||||
case 0x75: // i_jnz
|
case 0x75: // i_jnz
|
||||||
JMP(!ZF);
|
JMP(!ZF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x66:
|
||||||
case 0x76: // i_jce
|
case 0x76: // i_jce
|
||||||
JMP(CF || ZF);
|
JMP(CF || ZF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x67:
|
||||||
case 0x77: // i_jnce
|
case 0x77: // i_jnce
|
||||||
JMP(!(CF || ZF));
|
JMP(!(CF || ZF));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x68:
|
||||||
case 0x78: // i_js
|
case 0x78: // i_js
|
||||||
JMP( SF);
|
JMP( SF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x69:
|
||||||
case 0x79: // i_jns
|
case 0x79: // i_jns
|
||||||
JMP(!SF);
|
JMP(!SF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x6a:
|
||||||
case 0x7a: // i_jp
|
case 0x7a: // i_jp
|
||||||
JMP( PF);
|
JMP( PF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x6b:
|
||||||
case 0x7b: // i_jnp
|
case 0x7b: // i_jnp
|
||||||
JMP(!PF);
|
JMP(!PF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x6c:
|
||||||
case 0x7c: // i_jl
|
case 0x7c: // i_jl
|
||||||
JMP((SF!=OF)&&(!ZF));
|
JMP((SF!=OF)&&(!ZF));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x6d:
|
||||||
case 0x7d: // i_jnl
|
case 0x7d: // i_jnl
|
||||||
JMP((ZF)||(SF==OF));
|
JMP((ZF)||(SF==OF));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x6e:
|
||||||
case 0x7e: // i_jle
|
case 0x7e: // i_jle
|
||||||
JMP((ZF)||(SF!=OF));
|
JMP((ZF)||(SF!=OF));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x6f:
|
||||||
case 0x7f: // i_jnle
|
case 0x7f: // i_jnle
|
||||||
JMP((SF==OF)&&(!ZF));
|
JMP((SF==OF)&&(!ZF));
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user