diff options
Diffstat (limited to 'src/mess/drivers/pc8801.c')
-rw-r--r-- | src/mess/drivers/pc8801.c | 77 |
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 }, |