diff options
author | Scott Stone <tafoid@users.noreply.github.com> | 2014-06-09 00:42:53 +0000 |
---|---|---|
committer | Scott Stone <tafoid@users.noreply.github.com> | 2014-06-09 00:42:53 +0000 |
commit | f4d741ca06a7082400927d576ded593f442b33e0 (patch) | |
tree | cde8cbd4e450829246f573ef016ec5f0b755a3e1 /src/emu/cpu/i86/i86.c | |
parent | 0f0c004ce810e83e603f1fab992dbe726f67f12f (diff) |
rainbow.c: New floppy code - uses more reliable 'wd_fdc'. [Bavarese]
i86.c: Four new 8086 opcode aliases: 0xc0 is 0xc2; 0xc1 = 0xc3; 0xc8 = 0xca; 0xc9 = 0xcb as documented at OS 2 Museum. [Bavarese]
rx50_dsk.h/c: Rainbow specific; The RX50 _disk drive_ was used in different architectures. Floppy format used by Rainbow-100 and -190. Track layout (post-amble, some positions) yet unverified. Currently only raw 400 K disk dumps are supported (*.img). [Bavarese]
Diffstat (limited to 'src/emu/cpu/i86/i86.c')
-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(); |