diff --git a/src/mess/drivers/rmnimbus.c b/src/mess/drivers/rmnimbus.c index 850d575af50..9971fde990a 100644 --- a/src/mess/drivers/rmnimbus.c +++ b/src/mess/drivers/rmnimbus.c @@ -75,7 +75,7 @@ static const ay8910_interface nimbus_ay8910_interface = static const msm5205_interface msm5205_config = { - DEVCB_LINE(nimbus_msm5205_vck), /* VCK function */ + DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state, nimbus_msm5205_vck), /* VCK function */ MSM5205_S48_4B /* 8 kHz */ }; diff --git a/src/mess/includes/rmnimbus.h b/src/mess/includes/rmnimbus.h index 850ab4a260d..5c04bba99d4 100644 --- a/src/mess/includes/rmnimbus.h +++ b/src/mess/includes/rmnimbus.h @@ -344,8 +344,6 @@ extern const wd17xx_interface nimbus_wd17xx_interface; #define MSM5205_TAG "msm5205" -void nimbus_msm5205_vck(device_t *device,int st); - /* Mouse / Joystick */ #define JOYSTICK0_TAG "joystick0" @@ -483,6 +481,8 @@ public: DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_io_w); DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_msg_w); DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_req_w); + DECLARE_WRITE_LINE_MEMBER(nimbus_msm5205_vck); + void nimbus_scsi_linechange( UINT8 mask, UINT8 state ); IRQ_CALLBACK_MEMBER(int_callback); UINT8 get_pixel(UINT16 x, UINT16 y); diff --git a/src/mess/machine/beta.c b/src/mess/machine/beta.c index bc7488ab2be..c3e9baf0c6b 100644 --- a/src/mess/machine/beta.c +++ b/src/mess/machine/beta.c @@ -72,31 +72,27 @@ void beta_disk_device::clear_status() m_betadisk_status = 0; } -static WRITE_LINE_DEVICE_HANDLER(wd179x_intrq_w) +WRITE_LINE_MEMBER(beta_disk_device::wd179x_intrq_w) { - beta_disk_device *beta = dynamic_cast(device->owner()); - if (state) - beta->m_betadisk_status |= (1<<7); + m_betadisk_status |= (1<<7); else - beta->m_betadisk_status &=~(1<<7); + m_betadisk_status &=~(1<<7); } -static WRITE_LINE_DEVICE_HANDLER(wd179x_drq_w) +WRITE_LINE_MEMBER(beta_disk_device::wd179x_drq_w) { - beta_disk_device *beta = dynamic_cast(device->owner()); - if (state) - beta->m_betadisk_status |= (1<<6); + m_betadisk_status |= (1<<6); else - beta->m_betadisk_status &=~(1<<6); + m_betadisk_status &=~(1<<6); } static const wd17xx_interface beta_wd17xx_interface = { DEVCB_NULL, - DEVCB_LINE(wd179x_intrq_w), - DEVCB_LINE(wd179x_drq_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, beta_disk_device, wd179x_intrq_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, beta_disk_device, wd179x_drq_w), {FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3} }; diff --git a/src/mess/machine/beta.h b/src/mess/machine/beta.h index 2acc2c708ef..b96e3ab2ac1 100644 --- a/src/mess/machine/beta.h +++ b/src/mess/machine/beta.h @@ -31,6 +31,9 @@ public: DECLARE_WRITE8_MEMBER(sector_w); DECLARE_WRITE8_MEMBER(data_w); + DECLARE_WRITE_LINE_MEMBER(wd179x_intrq_w); + DECLARE_WRITE_LINE_MEMBER(wd179x_drq_w); + int is_active(); void enable(); void disable(); diff --git a/src/mess/machine/bml3mp1802.c b/src/mess/machine/bml3mp1802.c index 9f571254888..3d20f77f122 100644 --- a/src/mess/machine/bml3mp1802.c +++ b/src/mess/machine/bml3mp1802.c @@ -33,18 +33,17 @@ static const floppy_interface bml3_mp1802_floppy_interface = NULL }; -static WRITE_LINE_DEVICE_HANDLER( bml3_wd17xx_intrq_w ) +WRITE_LINE_MEMBER( bml3bus_mp1802_device::bml3_wd17xx_intrq_w ) { - bml3bus_mp1802_device *fdc = dynamic_cast(device->owner()); if (state) { - fdc->m_bml3bus->set_nmi_line(PULSE_LINE); + m_bml3bus->set_nmi_line(PULSE_LINE); } } const wd17xx_interface bml3_wd17xx_interface = { DEVCB_NULL, - DEVCB_LINE(bml3_wd17xx_intrq_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, bml3bus_mp1802_device, bml3_wd17xx_intrq_w), DEVCB_NULL, {FLOPPY_0, FLOPPY_1} }; diff --git a/src/mess/machine/bml3mp1802.h b/src/mess/machine/bml3mp1802.h index 0fbfb67af91..ae6b829fb21 100644 --- a/src/mess/machine/bml3mp1802.h +++ b/src/mess/machine/bml3mp1802.h @@ -33,7 +33,7 @@ public: DECLARE_READ8_MEMBER(bml3_mp1802_r); DECLARE_WRITE8_MEMBER(bml3_mp1802_w); - + DECLARE_WRITE_LINE_MEMBER(bml3_wd17xx_intrq_w); protected: virtual void device_start(); virtual void device_reset(); diff --git a/src/mess/machine/coco_fdc.c b/src/mess/machine/coco_fdc.c index 65730fc5f3f..d8e559c371a 100644 --- a/src/mess/machine/coco_fdc.c +++ b/src/mess/machine/coco_fdc.c @@ -130,11 +130,10 @@ coco_rtc_type_t coco_fdc_device::real_time_clock() fdc_intrq_w - callback from the FDC -------------------------------------------------*/ -static WRITE_LINE_DEVICE_HANDLER( fdc_intrq_w ) +WRITE_LINE_MEMBER( coco_fdc_device::fdc_intrq_w ) { - coco_fdc_device *fdc = dynamic_cast(device->owner()); - fdc->set_intrq(state); - fdc->update_lines(); + set_intrq(state); + update_lines(); } @@ -142,11 +141,10 @@ static WRITE_LINE_DEVICE_HANDLER( fdc_intrq_w ) fdc_drq_w - callback from the FDC -------------------------------------------------*/ -static WRITE_LINE_DEVICE_HANDLER( fdc_drq_w ) +WRITE_LINE_MEMBER( coco_fdc_device::fdc_drq_w ) { - coco_fdc_device *fdc = dynamic_cast(device->owner()); - fdc->set_drq(state); - fdc->update_lines(); + set_drq(state); + update_lines(); } @@ -157,8 +155,8 @@ static WRITE_LINE_DEVICE_HANDLER( fdc_drq_w ) static const wd17xx_interface coco_wd17xx_interface = { DEVCB_NULL, - DEVCB_LINE(fdc_intrq_w), - DEVCB_LINE(fdc_drq_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, coco_fdc_device, fdc_intrq_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, coco_fdc_device, fdc_drq_w), {FLOPPY_0,FLOPPY_1,FLOPPY_2,FLOPPY_3} }; diff --git a/src/mess/machine/coco_fdc.h b/src/mess/machine/coco_fdc.h index 9b980ba7cd4..028bf4e39e5 100644 --- a/src/mess/machine/coco_fdc.h +++ b/src/mess/machine/coco_fdc.h @@ -44,6 +44,9 @@ public: void set_intrq(UINT8 val) { m_intrq = val; } void set_drq(UINT8 val) { m_drq = val; } + + DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w); + DECLARE_WRITE_LINE_MEMBER(fdc_drq_w); protected: // device-level overrides virtual void device_start(); diff --git a/src/mess/machine/coco_multi.c b/src/mess/machine/coco_multi.c index 212735c21d9..0f71766b516 100644 --- a/src/mess/machine/coco_multi.c +++ b/src/mess/machine/coco_multi.c @@ -82,29 +82,29 @@ static SLOT_INTERFACE_START(coco_cart_slot4) SLOT_INTERFACE("pak", COCO_PAK) SLOT_INTERFACE_END -WRITE_LINE_DEVICE_HANDLER(multi_cart_w) +WRITE_LINE_MEMBER(coco_multipak_device::multi_cart_w) { - cococart_slot_device *cart = dynamic_cast(device->owner()->owner()); - cart->m_cart_callback.writeline(device,state); + cococart_slot_device *cart = dynamic_cast(owner()); + cart->m_cart_callback.writeline(this,state); } -WRITE_LINE_DEVICE_HANDLER(multi_nmi_w) +WRITE_LINE_MEMBER(coco_multipak_device::multi_nmi_w) { - cococart_slot_device *cart = dynamic_cast(device->owner()->owner()); - cart->m_nmi_callback.writeline(device,state); + cococart_slot_device *cart = dynamic_cast(owner()); + cart->m_nmi_callback.writeline(this,state); } -WRITE_LINE_DEVICE_HANDLER(multi_halt_w) +WRITE_LINE_MEMBER(coco_multipak_device::multi_halt_w) { - cococart_slot_device *cart = dynamic_cast(device->owner()->owner()); - cart->m_halt_callback.writeline(device,state); + cococart_slot_device *cart = dynamic_cast(owner()); + cart->m_halt_callback.writeline(this,state); } static const cococart_interface multi_cococart_interface = { - DEVCB_LINE(multi_cart_w), - DEVCB_LINE(multi_nmi_w), - DEVCB_LINE(multi_halt_w) + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w), + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w) }; static MACHINE_CONFIG_FRAGMENT(coco_multi) diff --git a/src/mess/machine/coco_multi.h b/src/mess/machine/coco_multi.h index a7907f15b64..a6aaf9beff0 100644 --- a/src/mess/machine/coco_multi.h +++ b/src/mess/machine/coco_multi.h @@ -35,6 +35,9 @@ public: virtual UINT8* get_cart_base(); + DECLARE_WRITE_LINE_MEMBER(multi_cart_w); + DECLARE_WRITE_LINE_MEMBER(multi_nmi_w); + DECLARE_WRITE_LINE_MEMBER(multi_halt_w); protected: // device-level overrides virtual void device_start(); diff --git a/src/mess/machine/rmnimbus.c b/src/mess/machine/rmnimbus.c index a4153c8e316..80f65e5da3e 100644 --- a/src/mess/machine/rmnimbus.c +++ b/src/mess/machine/rmnimbus.c @@ -2765,11 +2765,10 @@ WRITE8_MEMBER(rmnimbus_state::nimbus_sound_ay8910_portb_w) } } -void nimbus_msm5205_vck(device_t *device, int st) +WRITE_LINE_MEMBER(rmnimbus_state::nimbus_msm5205_vck) { - rmnimbus_state *state = device->machine().driver_data(); - if(state->m_iou_reg092 & MSM5205_INT_ENABLE) - state->external_int(0,EXTERNAL_INT_MSM5205); + if(m_iou_reg092 & MSM5205_INT_ENABLE) + external_int(0,EXTERNAL_INT_MSM5205); } static const int MOUSE_XYA[3][4] = { { 0, 0, 0, 0 }, { 1, 1, 0, 0 }, { 0, 1, 1, 0 } };