summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/pc8801.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/pc8801.c')
-rw-r--r--src/mess/drivers/pc8801.c77
1 files changed, 41 insertions, 36 deletions
diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c
index 5f093b59bad..ae7eb484756 100644
--- a/src/mess/drivers/pc8801.c
+++ b/src/mess/drivers/pc8801.c
@@ -454,6 +454,14 @@ public:
INTERRUPT_GEN_MEMBER(pc8801_vrtc_irq);
TIMER_CALLBACK_MEMBER(pc8801fd_upd765_tc_to_zero);
TIMER_DEVICE_CALLBACK_MEMBER(pc8801_rtc_irq);
+ DECLARE_READ8_MEMBER(cpu_8255_c_r);
+ DECLARE_WRITE8_MEMBER(cpu_8255_c_w);
+ DECLARE_READ8_MEMBER(fdc_8255_c_r);
+ DECLARE_WRITE8_MEMBER(fdc_8255_c_w);
+ DECLARE_WRITE_LINE_MEMBER(pic_int_w);
+ DECLARE_WRITE_LINE_MEMBER(pic_enlg_w);
+ DECLARE_READ8_MEMBER(opn_porta_r);
+ DECLARE_READ8_MEMBER(opn_portb_r);
};
@@ -1820,20 +1828,18 @@ static ADDRESS_MAP_START( pc8801_io, AS_IO, 8, pc8801_state )
AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_master", i8255_device, read, write)
ADDRESS_MAP_END
-static READ8_DEVICE_HANDLER( cpu_8255_c_r )
+READ8_MEMBER(pc8801_state::cpu_8255_c_r)
{
- pc8801_state *state = space.machine().driver_data<pc8801_state>();
-// space.machine().scheduler().synchronize(); // force resync
+// machine().scheduler().synchronize(); // force resync
- return state->m_i8255_1_pc >> 4;
+ return m_i8255_1_pc >> 4;
}
-static WRITE8_DEVICE_HANDLER( cpu_8255_c_w )
+WRITE8_MEMBER(pc8801_state::cpu_8255_c_w)
{
- pc8801_state *state = space.machine().driver_data<pc8801_state>();
-// space.machine().scheduler().synchronize(); // force resync
+// machine().scheduler().synchronize(); // force resync
- state->m_i8255_0_pc = data;
+ m_i8255_0_pc = data;
}
@@ -1843,24 +1849,22 @@ static I8255A_INTERFACE( master_fdd_intf )
DEVCB_NULL, // Port A write
DEVCB_DEVICE_MEMBER("d8255_slave", i8255_device, pa_r), // Port B read
DEVCB_NULL, // Port B write
- DEVCB_HANDLER(cpu_8255_c_r), // Port C read
- DEVCB_HANDLER(cpu_8255_c_w) // Port C write
+ DEVCB_DRIVER_MEMBER(pc8801_state,cpu_8255_c_r), // Port C read
+ DEVCB_DRIVER_MEMBER(pc8801_state,cpu_8255_c_w) // Port C write
};
-static READ8_DEVICE_HANDLER( fdc_8255_c_r )
+READ8_MEMBER(pc8801_state::fdc_8255_c_r)
{
- pc8801_state *state = space.machine().driver_data<pc8801_state>();
-// space.machine().scheduler().synchronize(); // force resync
+// machine().scheduler().synchronize(); // force resync
- return state->m_i8255_0_pc >> 4;
+ return m_i8255_0_pc >> 4;
}
-static WRITE8_DEVICE_HANDLER( fdc_8255_c_w )
+WRITE8_MEMBER(pc8801_state::fdc_8255_c_w)
{
- pc8801_state *state = space.machine().driver_data<pc8801_state>();
-// space.machine().scheduler().synchronize(); // force resync
+// machine().scheduler().synchronize(); // force resync
- state->m_i8255_1_pc = data;
+ m_i8255_1_pc = data;
}
static I8255A_INTERFACE( slave_fdd_intf )
@@ -1869,8 +1873,8 @@ static I8255A_INTERFACE( slave_fdd_intf )
DEVCB_NULL, // Port A write
DEVCB_DEVICE_MEMBER("d8255_master", i8255_device, pa_r), // Port B read
DEVCB_NULL, // Port B write
- DEVCB_HANDLER(fdc_8255_c_r), // Port C read
- DEVCB_HANDLER(fdc_8255_c_w) // Port C write
+ DEVCB_DRIVER_MEMBER(pc8801_state,fdc_8255_c_r), // Port C read
+ DEVCB_DRIVER_MEMBER(pc8801_state,fdc_8255_c_w) // Port C write
};
@@ -2301,15 +2305,17 @@ void pc8801_raise_irq(running_machine &machine,UINT8 irq,UINT8 state)
}
}
-static WRITE_LINE_DEVICE_HANDLER( pic_int_w )
+WRITE_LINE_MEMBER(pc8801_state::pic_int_w)
{
+ device_t *device = machine().device("maincpu");
// if (state == ASSERT_LINE)
// {
// }
}
-static WRITE_LINE_DEVICE_HANDLER( pic_enlg_w )
+WRITE_LINE_MEMBER(pc8801_state::pic_enlg_w)
{
+ device_t *device = machine().device("maincpu");
//if (state == CLEAR_LINE)
//{
//}
@@ -2317,8 +2323,8 @@ static WRITE_LINE_DEVICE_HANDLER( pic_enlg_w )
static I8214_INTERFACE( pic_intf )
{
- DEVCB_DEVICE_LINE("maincpu", pic_int_w),
- DEVCB_DEVICE_LINE("maincpu", pic_enlg_w)
+ DEVCB_DRIVER_LINE_MEMBER(pc8801_state,pic_int_w),
+ DEVCB_DRIVER_LINE_MEMBER(pc8801_state,pic_enlg_w)
};
static IRQ_CALLBACK( pc8801_irq_callback )
@@ -2568,33 +2574,32 @@ static const struct upd765_interface pc8801_upd765_interface =
/* YM2203 Interface */
-static READ8_DEVICE_HANDLER( opn_porta_r )
+READ8_MEMBER(pc8801_state::opn_porta_r)
{
- pc8801_state *state = space.machine().driver_data<pc8801_state>();
- if(space.machine().root_device().ioport("BOARD_CONFIG")->read() & 2)
+ if(machine().root_device().ioport("BOARD_CONFIG")->read() & 2)
{
UINT8 shift,res;
- shift = (state->m_mouse.phase & 1) ? 0 : 4;
- res = (state->m_mouse.phase & 2) ? state->m_mouse.y : state->m_mouse.x;
+ shift = (m_mouse.phase & 1) ? 0 : 4;
+ res = (m_mouse.phase & 2) ? m_mouse.y : m_mouse.x;
-// printf("%d\n",state->m_mouse.phase);
+// printf("%d\n",m_mouse.phase);
return ((res >> shift) & 0x0f) | 0xf0;
}
- return space.machine().root_device().ioport("OPN_PA")->read();
+ return machine().root_device().ioport("OPN_PA")->read();
}
-static READ8_DEVICE_HANDLER( opn_portb_r ) { return device->machine().root_device().ioport("OPN_PB")->read(); }
+READ8_MEMBER(pc8801_state::opn_portb_r){ return machine().root_device().ioport("OPN_PB")->read(); }
static const ym2203_interface pc88_ym2203_intf =
{
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
- DEVCB_HANDLER(opn_porta_r),
- DEVCB_HANDLER(opn_portb_r),
+ DEVCB_DRIVER_MEMBER(pc8801_state,opn_porta_r),
+ DEVCB_DRIVER_MEMBER(pc8801_state,opn_portb_r),
DEVCB_NULL,
DEVCB_NULL
},
@@ -2606,8 +2611,8 @@ static const ym2608_interface pc88_ym2608_intf =
{
AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT,
AY8910_DEFAULT_LOADS,
- DEVCB_HANDLER(opn_porta_r),
- DEVCB_HANDLER(opn_portb_r),
+ DEVCB_DRIVER_MEMBER(pc8801_state,opn_porta_r),
+ DEVCB_DRIVER_MEMBER(pc8801_state,opn_portb_r),
DEVCB_NULL,
DEVCB_NULL
},