summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/arabian.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/arabian.cpp')
-rw-r--r--src/mame/drivers/arabian.cpp85
1 files changed, 56 insertions, 29 deletions
diff --git a/src/mame/drivers/arabian.cpp b/src/mame/drivers/arabian.cpp
index bff3c351427..0a19fb1413f 100644
--- a/src/mame/drivers/arabian.cpp
+++ b/src/mame/drivers/arabian.cpp
@@ -102,30 +102,62 @@ WRITE8_MEMBER(arabian_state::ay8910_portb_w)
*
*************************************/
-READ8_MEMBER(arabian_state::mcu_port_r_r)
+READ8_MEMBER(arabian_state::mcu_port_r0_r)
{
- uint8_t val = m_mcu_port_r[offset];
+ uint8_t val = m_mcu_port_r[0];
/* RAM mode is enabled */
- if (offset == 0)
- val |= 4;
+ val |= 4;
return val;
}
-WRITE8_MEMBER(arabian_state::mcu_port_r_w)
+READ8_MEMBER(arabian_state::mcu_port_r1_r)
{
- if (offset == 0)
- {
- uint32_t ram_addr = ((m_mcu_port_p & 7) << 8) | m_mcu_port_o;
+ uint8_t val = m_mcu_port_r[1];
- if (~data & 2)
- m_custom_cpu_ram[ram_addr] = 0xf0 | m_mcu_port_r[3];
+ return val;
+}
- m_flip_screen = data & 8;
- }
+READ8_MEMBER(arabian_state::mcu_port_r2_r)
+{
+ uint8_t val = m_mcu_port_r[2];
+
+ return val;
+}
+
+READ8_MEMBER(arabian_state::mcu_port_r3_r)
+{
+ uint8_t val = m_mcu_port_r[3];
+
+ return val;
+}
+
+WRITE8_MEMBER(arabian_state::mcu_port_r0_w)
+{
+ uint32_t ram_addr = ((m_mcu_port_p & 7) << 8) | m_mcu_port_o;
+
+ if (~data & 2)
+ m_custom_cpu_ram[ram_addr] = 0xf0 | m_mcu_port_r[3];
+
+ m_flip_screen = data & 8;
- m_mcu_port_r[offset] = data & 0x0f;
+ m_mcu_port_r[0] = data & 0x0f;
+}
+
+WRITE8_MEMBER(arabian_state::mcu_port_r1_w)
+{
+ m_mcu_port_r[1] = data & 0x0f;
+}
+
+WRITE8_MEMBER(arabian_state::mcu_port_r2_w)
+{
+ m_mcu_port_r[2] = data & 0x0f;
+}
+
+WRITE8_MEMBER(arabian_state::mcu_port_r3_w)
+{
+ m_mcu_port_r[3] = data & 0x0f;
}
READ8_MEMBER(arabian_state::mcu_portk_r)
@@ -205,21 +237,6 @@ ADDRESS_MAP_END
/*************************************
*
- * MCU port handlers
- *
- *************************************/
-
-static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, arabian_state )
- AM_RANGE(MB88_PORTK, MB88_PORTK ) AM_READ(mcu_portk_r)
- AM_RANGE(MB88_PORTO, MB88_PORTO ) AM_WRITE(mcu_port_o_w)
- AM_RANGE(MB88_PORTP, MB88_PORTP ) AM_WRITE(mcu_port_p_w)
- AM_RANGE(MB88_PORTR0, MB88_PORTR3) AM_READWRITE(mcu_port_r_r, mcu_port_r_w)
-ADDRESS_MAP_END
-
-
-
-/*************************************
- *
* Port definitions
*
*************************************/
@@ -345,7 +362,17 @@ static MACHINE_CONFIG_START( arabian )
MCFG_CPU_VBLANK_INT_DRIVER("screen", arabian_state, irq0_line_hold)
MCFG_CPU_ADD("mcu", MB8841, MAIN_OSC/3/2)
- MCFG_CPU_IO_MAP(mcu_io_map)
+ MCFG_MB88XX_READ_K_CB(READ8(arabian_state, mcu_portk_r))
+ MCFG_MB88XX_WRITE_O_CB(WRITE8(arabian_state, mcu_port_o_w))
+ MCFG_MB88XX_WRITE_P_CB(WRITE8(arabian_state, mcu_port_p_w))
+ MCFG_MB88XX_READ_R0_CB(READ8(arabian_state, mcu_port_r0_r))
+ MCFG_MB88XX_WRITE_R0_CB(WRITE8(arabian_state, mcu_port_r0_w))
+ MCFG_MB88XX_READ_R1_CB(READ8(arabian_state, mcu_port_r1_r))
+ MCFG_MB88XX_WRITE_R1_CB(WRITE8(arabian_state, mcu_port_r1_w))
+ MCFG_MB88XX_READ_R2_CB(READ8(arabian_state, mcu_port_r2_r))
+ MCFG_MB88XX_WRITE_R2_CB(WRITE8(arabian_state, mcu_port_r2_w))
+ MCFG_MB88XX_READ_R3_CB(READ8(arabian_state, mcu_port_r3_r))
+ MCFG_MB88XX_WRITE_R3_CB(WRITE8(arabian_state, mcu_port_r3_w))
MCFG_QUANTUM_TIME(attotime::from_hz(6000))