diff options
Diffstat (limited to 'src/emu/cpu/i86')
-rw-r--r-- | src/emu/cpu/i86/i86.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/emu/cpu/i86/i86.c b/src/emu/cpu/i86/i86.c index f091ba8fc08..5790e0d7382 100644 --- a/src/emu/cpu/i86/i86.c +++ b/src/emu/cpu/i86/i86.c @@ -1138,10 +1138,12 @@ bool i8086_common_cpu_device::common_op(UINT8 op) 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: +// - 0x60 - 0x6f are an alias to 0x70 - 0x7f. +// - 0xc0, 0xc1, 0xc8, 0xc9 are also aliases where the CPU ignores BIT 1 (*). +// +// Instructions are used in the boot sector for some versions of +// MS-DOS (e.g. the DEC Rainbow-100 version of DOS 2.x) +// case 0x60: case 0x70: // i_jo JMP( OF); break; @@ -1670,7 +1672,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op) CLK(MOV_RI16); break; - + case 0xc0: // 0xc0 is 0xc2 - see (*) case 0xc2: // i_ret_d16 { UINT32 count = fetch_word(); @@ -1680,6 +1682,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op) } break; + case 0xc1: // 0xc1 is 0xc3 - see (*) case 0xc3: // i_ret m_ip = POP(); CLK(RET_NEAR); @@ -1711,7 +1714,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op) CLKM(MOV_RI16,MOV_MI16); break; - + case 0xc8: // 0xc8 = 0xca - see (*) case 0xca: // i_retf_d16 { UINT32 count = fetch_word(); @@ -1722,6 +1725,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op) } break; + case 0xc9: // 0xc9 = 0xcb - see (*) case 0xcb: // i_retf m_ip = POP(); m_sregs[CS] = POP(); |