diff options
Diffstat (limited to 'src/mess/drivers/pk8000.c')
-rw-r--r-- | src/mess/drivers/pk8000.c | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/src/mess/drivers/pk8000.c b/src/mess/drivers/pk8000.c index d0ff985aacc..6122e21e1a2 100644 --- a/src/mess/drivers/pk8000.c +++ b/src/mess/drivers/pk8000.c @@ -31,6 +31,12 @@ public: virtual void video_start(); UINT32 screen_update_pk8000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(pk8000_interrupt); + DECLARE_WRITE8_MEMBER(pk8000_80_porta_w); + DECLARE_READ8_MEMBER(pk8000_80_portb_r); + DECLARE_WRITE8_MEMBER(pk8000_80_portc_w); + DECLARE_READ8_MEMBER(pk8000_84_porta_r); + DECLARE_WRITE8_MEMBER(pk8000_84_porta_w); + DECLARE_WRITE8_MEMBER(pk8000_84_portc_w); }; @@ -100,66 +106,64 @@ static void pk8000_set_bank(running_machine &machine,UINT8 data) break; } } -static WRITE8_DEVICE_HANDLER(pk8000_80_porta_w) +WRITE8_MEMBER(pk8000_state::pk8000_80_porta_w) { - pk8000_set_bank(space.machine(),data); + pk8000_set_bank(machine(),data); } -static READ8_DEVICE_HANDLER(pk8000_80_portb_r) +READ8_MEMBER(pk8000_state::pk8000_80_portb_r) { - pk8000_state *state = space.machine().driver_data<pk8000_state>(); static const char *const keynames[] = { "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9" }; - if(state->m_keyboard_line>9) { + if(m_keyboard_line>9) { return 0xff; } - return space.machine().root_device().ioport(keynames[state->m_keyboard_line])->read(); + return machine().root_device().ioport(keynames[m_keyboard_line])->read(); } -static WRITE8_DEVICE_HANDLER(pk8000_80_portc_w) +WRITE8_MEMBER(pk8000_state::pk8000_80_portc_w) { - pk8000_state *state = space.machine().driver_data<pk8000_state>(); - state->m_keyboard_line = data & 0x0f; + m_keyboard_line = data & 0x0f; - speaker_level_w(space.machine().device(SPEAKER_TAG), BIT(data,7)); + speaker_level_w(machine().device(SPEAKER_TAG), BIT(data,7)); - cassette_device_image(space.machine())->change_state( + cassette_device_image(machine())->change_state( (BIT(data,4)) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); - cassette_device_image(space.machine())->output((BIT(data,6)) ? +1.0 : 0.0); + cassette_device_image(machine())->output((BIT(data,6)) ? +1.0 : 0.0); } static I8255_INTERFACE( pk8000_ppi8255_interface_1 ) { DEVCB_NULL, - DEVCB_HANDLER(pk8000_80_porta_w), - DEVCB_HANDLER(pk8000_80_portb_r), + DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_porta_w), + DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_portb_r), DEVCB_NULL, DEVCB_NULL, - DEVCB_HANDLER(pk8000_80_portc_w) + DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_portc_w) }; -static READ8_DEVICE_HANDLER(pk8000_84_porta_r) +READ8_MEMBER(pk8000_state::pk8000_84_porta_r) { return pk8000_video_mode; } -static WRITE8_DEVICE_HANDLER(pk8000_84_porta_w) +WRITE8_MEMBER(pk8000_state::pk8000_84_porta_w) { pk8000_video_mode = data; } -static WRITE8_DEVICE_HANDLER(pk8000_84_portc_w) +WRITE8_MEMBER(pk8000_state::pk8000_84_portc_w) { pk8000_video_enable = BIT(data,4); } static I8255_INTERFACE( pk8000_ppi8255_interface_2 ) { - DEVCB_HANDLER(pk8000_84_porta_r), - DEVCB_HANDLER(pk8000_84_porta_w), + DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_84_porta_r), + DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_84_porta_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_HANDLER(pk8000_84_portc_w) + DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_84_portc_w) }; READ8_MEMBER(pk8000_state::pk8000_joy_1_r) |