summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ricardo Barreira <rbarreira@gmail.com>2019-09-22 13:36:16 +0100
committer Vas Crabb <cuavas@users.noreply.github.com>2019-09-22 22:36:16 +1000
commit74b647597be246d4e94e23ac7dc428ed1caf3ccb (patch)
tree570787c15bca1fcc4eef41e84d556d4db8686f23
parent4cfb7ac9ec59ebb10b3991c7514b4a731f7b2e3e (diff)
cfx9850 fixes (graph mode zoom menu and memory size) (#5674)
* hcd62121: Added xor instruction with indirect addressing (needed for zoom menu in graph mode to work). * cfx9850.cpp: Reduce RAM size to 32 KB (0000-7FFF) and add overlapping region 8000-FFFF. The code that detects memory size assumes that FFFF aliases 7FFF.
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.cpp17
-rw-r--r--src/mame/drivers/cfx9850.cpp2
2 files changed, 18 insertions, 1 deletions
diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp
index 53e9a1ed5da..4a99178dde5 100644
--- a/src/devices/cpu/hcd62121/hcd62121.cpp
+++ b/src/devices/cpu/hcd62121/hcd62121.cpp
@@ -1175,6 +1175,23 @@ void hcd62121_cpu_device::execute_run()
}
break;
+ case 0x50: /* xorb ir1,r2 */
+ case 0x51: /* xorw ir1,r2 */
+ case 0x52: /* xorq ir1,r2 */
+ case 0x53: /* xort ir1,r2 */
+ {
+ int size = datasize(op);
+ u8 reg1 = read_op();
+ u8 reg2 = read_op();
+
+ read_iregreg(size, reg1, reg2, true);
+
+ op_xor(size);
+
+ write_iregreg(size, reg1, reg2);
+ }
+ break;
+
case 0x54: /* cmpb ir1,r2 */
case 0x55: /* cmpw ir1,r2 */
case 0x56: /* cmpq ir1,r2 */
diff --git a/src/mame/drivers/cfx9850.cpp b/src/mame/drivers/cfx9850.cpp
index fa965bbdae8..f26d3485f92 100644
--- a/src/mame/drivers/cfx9850.cpp
+++ b/src/mame/drivers/cfx9850.cpp
@@ -75,7 +75,7 @@ void cfx9850_state::cfx9850_mem(address_map &map)
// AM_RANGE( 0x100000, 0x10ffff ) // some memory mapped i/o???
// AM_RANGE( 0x110000, 0x11ffff ) // some memory mapped i/o???
map(0x200000, 0x27ffff).rom().region("bios", 0);
- map(0x400000, 0x40ffff).ram();
+ map(0x400000, 0x407fff).mirror(0x008000).ram();
map(0x600000, 0x6007ff).mirror(0xf800).ram().share("display_ram");
// AM_RANGE( 0xe10000, 0xe1ffff ) // some memory mapped i/o???
}